1
0
mirror of https://github.com/bitwarden/browser synced 2026-03-02 11:31:44 +00:00
Files
browser/apps/web/src/app/platform/web-sdk-load.service.ts
Andreas Coroiu ce5a5e3649 Improve SDK direct function usage (#13353)
* 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
2025-02-26 09:08:42 +01:00

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);
}
}