Skip to content

Commit 40a2d71

Browse files
committed
throw init error in Worker when crypto not supported
1 parent e8dea28 commit 40a2d71

File tree

1 file changed

+26
-0
lines changed

1 file changed

+26
-0
lines changed

packages/idb-cache/src/encryptionWorkerFn.ts

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,32 @@ interface PostMessageCapable {
88
}
99

1010
export function encryptionWorkerFunction() {
11+
if (typeof crypto === "undefined" || !crypto?.subtle) {
12+
const errorMessage =
13+
"Web Crypto API is not supported in a Web Worker environment.";
14+
console.error(`Worker: ${errorMessage}`);
15+
16+
if ("SharedWorkerGlobalScope" in self && "onconnect" in self) {
17+
self.onconnect = (e: MessageEvent<WorkerMessage>) => {
18+
const port = e.ports[0];
19+
port.start();
20+
port.postMessage({
21+
type: "initError",
22+
error: errorMessage,
23+
});
24+
};
25+
} else if ("WorkerGlobalScope" in self && "onmessage" in self) {
26+
self.onmessage = () => {
27+
self.postMessage({
28+
type: "initError",
29+
error: errorMessage,
30+
});
31+
};
32+
}
33+
34+
return;
35+
}
36+
1137
let cacheKey: Uint8Array | null = null;
1238
const derivedKeyCache: Map<string, CryptoKey> = new Map();
1339
let pbkdf2Iterations = 100000;

0 commit comments

Comments
 (0)