mirror of
https://github.com/bitwarden/browser
synced 2025-12-14 15:23:33 +00:00
* [deps] SM: Update typescript-eslint monorepo to v8 --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Hinton <hinton@users.noreply.github.com> Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
45 lines
1.4 KiB
TypeScript
45 lines
1.4 KiB
TypeScript
import { SdkClientFactory } from "@bitwarden/common/platform/abstractions/sdk/sdk-client-factory";
|
|
import * as sdk from "@bitwarden/sdk-internal";
|
|
|
|
/**
|
|
* SDK client factory with a js fallback for when WASM is not supported.
|
|
*/
|
|
export class WebSdkClientFactory implements SdkClientFactory {
|
|
async createSdkClient(
|
|
...args: ConstructorParameters<typeof sdk.BitwardenClient>
|
|
): Promise<sdk.BitwardenClient> {
|
|
const module = await load();
|
|
|
|
(sdk as any).init(module);
|
|
|
|
return Promise.resolve(new sdk.BitwardenClient(...args));
|
|
}
|
|
}
|
|
|
|
// 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;
|
|
}
|
|
}
|
|
// FIXME: Remove when updating file. Eslint update
|
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
} catch (e) {
|
|
// ignore
|
|
}
|
|
return false;
|
|
})();
|
|
|
|
async function load() {
|
|
if (supported) {
|
|
return await import("@bitwarden/sdk-internal/bitwarden_wasm_internal_bg.wasm");
|
|
} else {
|
|
return await import("@bitwarden/sdk-internal/bitwarden_wasm_internal_bg.wasm.js");
|
|
}
|
|
}
|