mirror of
https://github.com/bitwarden/browser
synced 2026-03-02 11:31:44 +00:00
* feat: initalize WASM/SDK directly after load * fix: default sdk service trying to set log level * feat: wait for sdk to load in sdk service * fix: add required disposable polyfills * feat: update sdk version * feat: replace rc-specific workaround with global polyfill * fix: sdk service tests
32 lines
998 B
TypeScript
32 lines
998 B
TypeScript
import { SdkLoadService } from "@bitwarden/common/platform/abstractions/sdk/sdk-load.service";
|
|
import * as sdk from "@bitwarden/sdk-internal";
|
|
|
|
// https://stackoverflow.com/a/47880734
|
|
const supported = (() => {
|
|
try {
|
|
if (typeof WebAssembly === "object" && typeof WebAssembly.instantiate === "function") {
|
|
const module = new WebAssembly.Module(
|
|
Uint8Array.of(0x0, 0x61, 0x73, 0x6d, 0x01, 0x00, 0x00, 0x00),
|
|
);
|
|
if (module instanceof WebAssembly.Module) {
|
|
return new WebAssembly.Instance(module) instanceof WebAssembly.Instance;
|
|
}
|
|
}
|
|
} catch {
|
|
// ignore
|
|
}
|
|
return false;
|
|
})();
|
|
|
|
export class WebSdkLoadService extends SdkLoadService {
|
|
async load(): Promise<void> {
|
|
let module: any;
|
|
if (supported) {
|
|
module = await import("@bitwarden/sdk-internal/bitwarden_wasm_internal_bg.wasm");
|
|
} else {
|
|
module = await import("@bitwarden/sdk-internal/bitwarden_wasm_internal_bg.wasm.js");
|
|
}
|
|
(sdk as any).init(module);
|
|
}
|
|
}
|