@fhevm/sdk 1.1.0-alpha.5 → 1.1.0-alpha.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (145) hide show
  1. package/_cjs/core/_version.js +1 -1
  2. package/_cjs/core/base/bytes.js +2 -1
  3. package/_cjs/core/base/bytes.js.map +1 -1
  4. package/_cjs/core/base/environment.js +122 -0
  5. package/_cjs/core/base/environment.js.map +1 -0
  6. package/_cjs/core/base/errors/Sha256VerificationError.js +15 -0
  7. package/_cjs/core/base/errors/Sha256VerificationError.js.map +1 -0
  8. package/_cjs/core/base/inflate.js +282 -0
  9. package/_cjs/core/base/inflate.js.map +1 -0
  10. package/_cjs/core/base/isomorphicFs.js +24 -0
  11. package/_cjs/core/base/isomorphicFs.js.map +1 -0
  12. package/_cjs/core/base/isomorphicWorker.js +42 -111
  13. package/_cjs/core/base/isomorphicWorker.js.map +1 -1
  14. package/_cjs/core/base/wasm.js +15 -55
  15. package/_cjs/core/base/wasm.js.map +1 -1
  16. package/_cjs/core/kms/TransportKeyPair-p.js +0 -4
  17. package/_cjs/core/kms/TransportKeyPair-p.js.map +1 -1
  18. package/_cjs/core/kms/createKmsUserDecryptEip712.js +5 -1
  19. package/_cjs/core/kms/createKmsUserDecryptEip712.js.map +1 -1
  20. package/_cjs/core/modules/decrypt/module/init-p.js +124 -39
  21. package/_cjs/core/modules/decrypt/module/init-p.js.map +1 -1
  22. package/_cjs/core/modules/encrypt/module/init-p.js +148 -45
  23. package/_cjs/core/modules/encrypt/module/init-p.js.map +1 -1
  24. package/_cjs/core/runtime/HyperWasmSolver-p.js +4 -4
  25. package/_cjs/core/runtime/initFhevmEncryptRuntime-p.js +1 -1
  26. package/_cjs/core/runtime/initFhevmRuntime-p.js +1 -1
  27. package/_cjs/wasm/tfhe/TfheApi.d.ts +12 -12
  28. package/_cjs/wasm/tfhe/loadTfheLib.js +11 -11
  29. package/_cjs/wasm/tfhe/loadTfheLib.js.map +2 -2
  30. package/_cjs/wasm/tfhe/v1.5.3/startWorkers.js +26 -9
  31. package/_cjs/wasm/tfhe/v1.5.3/startWorkers.js.map +2 -2
  32. package/_cjs/wasm/tfhe/v1.5.3/tfhe.d.ts +3 -0
  33. package/_cjs/wasm/tfhe/{v1.6.1 → v1.6.2}/startWorkers.js +28 -11
  34. package/_cjs/wasm/tfhe/v1.6.2/startWorkers.js.map +7 -0
  35. package/{_esm/wasm/tfhe/v1.6.1 → _cjs/wasm/tfhe/v1.6.2}/tfhe-worker.mjs +40 -40
  36. package/{_esm/wasm/tfhe/v1.6.1 → _cjs/wasm/tfhe/v1.6.2}/tfhe.d.ts +88 -85
  37. package/_cjs/wasm/tfhe/{v1.6.1 → v1.6.2}/tfhe.js +245 -442
  38. package/_cjs/wasm/tfhe/v1.6.2/tfhe.js.map +7 -0
  39. package/_cjs/wasm/tfhe/v1.6.2/tfhe_bg.wasm +0 -0
  40. package/_cjs/wasm/tfhe/v1.6.2/tfhe_bg.wasm.base64.js +35 -0
  41. package/_cjs/wasm/tfhe/v1.6.2/tfhe_bg.wasm.base64.js.map +7 -0
  42. package/_cjs/wasm/tkms/loadKmsLib.js.map +1 -1
  43. package/_cjs/wasm/wasmBaseUrl.js +8 -19
  44. package/_cjs/wasm/wasmBaseUrl.js.map +2 -2
  45. package/_esm/core/_version.js +1 -1
  46. package/_esm/core/base/bytes.js +2 -1
  47. package/_esm/core/base/bytes.js.map +1 -1
  48. package/_esm/core/base/environment.js +164 -0
  49. package/_esm/core/base/environment.js.map +1 -0
  50. package/_esm/core/base/errors/Sha256VerificationError.js +11 -0
  51. package/_esm/core/base/errors/Sha256VerificationError.js.map +1 -0
  52. package/_esm/core/base/inflate.js +337 -0
  53. package/_esm/core/base/inflate.js.map +1 -0
  54. package/_esm/core/base/isomorphicFs.js +21 -0
  55. package/_esm/core/base/isomorphicFs.js.map +1 -0
  56. package/_esm/core/base/isomorphicWorker.js +92 -85
  57. package/_esm/core/base/isomorphicWorker.js.map +1 -1
  58. package/_esm/core/base/wasm.js +25 -31
  59. package/_esm/core/base/wasm.js.map +1 -1
  60. package/_esm/core/kms/TransportKeyPair-p.js +0 -4
  61. package/_esm/core/kms/TransportKeyPair-p.js.map +1 -1
  62. package/_esm/core/kms/createKmsUserDecryptEip712.js +5 -1
  63. package/_esm/core/kms/createKmsUserDecryptEip712.js.map +1 -1
  64. package/_esm/core/modules/decrypt/module/init-p.js +109 -54
  65. package/_esm/core/modules/decrypt/module/init-p.js.map +1 -1
  66. package/_esm/core/modules/encrypt/module/init-p.js +300 -53
  67. package/_esm/core/modules/encrypt/module/init-p.js.map +1 -1
  68. package/_esm/core/runtime/HyperWasmSolver-p.js +4 -4
  69. package/_esm/core/runtime/initFhevmEncryptRuntime-p.js +1 -1
  70. package/_esm/core/runtime/initFhevmRuntime-p.js +1 -1
  71. package/_esm/wasm/tfhe/TfheApi.d.ts +12 -12
  72. package/_esm/wasm/tfhe/loadTfheLib.js +11 -11
  73. package/_esm/wasm/tfhe/v1.5.3/startWorkers.js +41 -20
  74. package/_esm/wasm/tfhe/v1.5.3/tfhe.d.ts +3 -0
  75. package/_esm/wasm/tfhe/{v1.6.1 → v1.6.2}/startWorkers.js +46 -25
  76. package/{_cjs/wasm/tfhe/v1.6.1 → _esm/wasm/tfhe/v1.6.2}/tfhe-worker.mjs +40 -40
  77. package/{_types/wasm/tfhe/v1.6.1 → _esm/wasm/tfhe/v1.6.2}/tfhe.d.ts +88 -85
  78. package/_esm/wasm/tfhe/{v1.6.1 → v1.6.2}/tfhe.js +245 -442
  79. package/_esm/wasm/tfhe/v1.6.2/tfhe_bg.wasm +0 -0
  80. package/_esm/wasm/tfhe/v1.6.2/tfhe_bg.wasm.base64.js +7 -0
  81. package/_esm/wasm/wasmBaseUrl.js +17 -54
  82. package/_types/core/base/bytes.d.ts.map +1 -1
  83. package/_types/core/base/environment.d.ts +92 -0
  84. package/_types/core/base/environment.d.ts.map +1 -0
  85. package/_types/core/base/errors/Sha256VerificationError.d.ts +14 -0
  86. package/_types/core/base/errors/Sha256VerificationError.d.ts.map +1 -0
  87. package/_types/core/base/inflate.d.ts +25 -0
  88. package/_types/core/base/inflate.d.ts.map +1 -0
  89. package/_types/core/base/isomorphicFs.d.ts +2 -0
  90. package/_types/core/base/isomorphicFs.d.ts.map +1 -0
  91. package/_types/core/base/isomorphicWorker.d.ts +27 -43
  92. package/_types/core/base/isomorphicWorker.d.ts.map +1 -1
  93. package/_types/core/base/wasm.d.ts +0 -8
  94. package/_types/core/base/wasm.d.ts.map +1 -1
  95. package/_types/core/kms/TransportKeyPair-p.d.ts.map +1 -1
  96. package/_types/core/kms/createKmsUserDecryptEip712.d.ts.map +1 -1
  97. package/_types/core/modules/decrypt/module/init-p.d.ts.map +1 -1
  98. package/_types/core/modules/encrypt/module/init-p.d.ts.map +1 -1
  99. package/_types/core/types/wasmAssets.d.ts.map +1 -1
  100. package/_types/wasm/tfhe/TfheApi.d.ts +12 -12
  101. package/_types/wasm/tfhe/v1.5.3/tfhe.d.ts +3 -0
  102. package/{wasm/tfhe/v1.6.1 → _types/wasm/tfhe/v1.6.2}/tfhe.d.ts +88 -85
  103. package/core/_version.ts +1 -1
  104. package/core/base/bytes.ts +2 -1
  105. package/core/base/environment.ts +210 -0
  106. package/core/base/errors/Sha256VerificationError.ts +22 -0
  107. package/core/base/inflate.ts +373 -0
  108. package/core/base/isomorphicFs.ts +23 -0
  109. package/core/base/isomorphicWorker.ts +96 -123
  110. package/core/base/wasm.ts +28 -35
  111. package/core/kms/TransportKeyPair-p.ts +0 -5
  112. package/core/kms/createKmsUserDecryptEip712.ts +8 -1
  113. package/core/modules/decrypt/module/init-p.ts +148 -59
  114. package/core/modules/encrypt/module/init-p.ts +368 -63
  115. package/core/runtime/HyperWasmSolver-p.ts +4 -4
  116. package/core/runtime/initFhevmEncryptRuntime-p.ts +1 -1
  117. package/core/runtime/initFhevmRuntime-p.ts +1 -1
  118. package/core/types/wasmAssets.ts +58 -0
  119. package/package.json +1 -1
  120. package/wasm/tfhe/TfheApi.d.ts +12 -12
  121. package/wasm/tfhe/loadTfheLib.js +11 -11
  122. package/wasm/tfhe/v1.5.3/startWorkers.js +41 -20
  123. package/wasm/tfhe/v1.5.3/tfhe.d.ts +3 -0
  124. package/wasm/tfhe/v1.6.0-dev/startWorkers.js +41 -20
  125. package/wasm/tfhe/v1.6.0-dev/tfhe.d.ts +3 -0
  126. package/wasm/tfhe/{v1.6.1 → v1.6.2}/startWorkers.js +46 -25
  127. package/wasm/tfhe/{v1.6.1 → v1.6.2}/tfhe-worker.mjs +40 -40
  128. package/{_cjs/wasm/tfhe/v1.6.1 → wasm/tfhe/v1.6.2}/tfhe.d.ts +88 -85
  129. package/wasm/tfhe/{v1.6.1 → v1.6.2}/tfhe.js +245 -442
  130. package/wasm/tfhe/v1.6.2/tfhe_bg.wasm +0 -0
  131. package/wasm/tfhe/v1.6.2/tfhe_bg.wasm.base64.js +7 -0
  132. package/wasm/wasmBaseUrl.js +17 -54
  133. package/_cjs/wasm/tfhe/v1.6.1/startWorkers.js.map +0 -7
  134. package/_cjs/wasm/tfhe/v1.6.1/tfhe.js.map +0 -7
  135. package/_cjs/wasm/tfhe/v1.6.1/tfhe_bg.wasm +0 -0
  136. package/_cjs/wasm/tfhe/v1.6.1/tfhe_bg.wasm.base64.js +0 -35
  137. package/_cjs/wasm/tfhe/v1.6.1/tfhe_bg.wasm.base64.js.map +0 -7
  138. package/_esm/wasm/tfhe/v1.6.1/tfhe_bg.wasm +0 -0
  139. package/_esm/wasm/tfhe/v1.6.1/tfhe_bg.wasm.base64.js +0 -7
  140. package/wasm/tfhe/v1.6.1/tfhe_bg.wasm +0 -0
  141. package/wasm/tfhe/v1.6.1/tfhe_bg.wasm.base64.js +0 -7
  142. /package/_cjs/wasm/tfhe/{v1.6.1 → v1.6.2}/tfhe_bg.wasm.base64.d.ts +0 -0
  143. /package/_esm/wasm/tfhe/{v1.6.1 → v1.6.2}/tfhe_bg.wasm.base64.d.ts +0 -0
  144. /package/_types/wasm/tfhe/{v1.6.1 → v1.6.2}/tfhe_bg.wasm.base64.d.ts +0 -0
  145. /package/wasm/tfhe/{v1.6.1 → v1.6.2}/tfhe_bg.wasm.base64.d.ts +0 -0
@@ -15,32 +15,32 @@ export type {
15
15
  ProvenCompactCiphertextList,
16
16
  TfheCompactPublicKey,
17
17
  ZkComputeLoad,
18
- } from './v1.6.1/tfhe.js';
18
+ } from './v1.6.2/tfhe.js';
19
19
 
20
20
  /** The subset you actually use - the runtime contract callers depend on. */
21
21
  export interface TfheLibApi {
22
- initAsync: typeof import('./v1.6.1/tfhe.js').initAsync;
22
+ initAsync: typeof import('./v1.6.2/tfhe.js').initAsync;
23
23
 
24
24
  // --- Free functions used by encrypt/init-p.ts -----------------------------
25
- init_panic_hook: typeof import('./v1.6.1/tfhe.js').init_panic_hook;
26
- initThreadPool: typeof import('./v1.6.1/tfhe.js').initThreadPool;
27
- setWorkerUrlConfig: typeof import('./v1.6.1/tfhe.js').setWorkerUrlConfig;
28
- getWasmInfo: typeof import('./v1.6.1/tfhe.js').getWasmInfo;
25
+ init_panic_hook: typeof import('./v1.6.2/tfhe.js').init_panic_hook;
26
+ initThreadPool: typeof import('./v1.6.2/tfhe.js').initThreadPool;
27
+ setWorkerUrlConfig: typeof import('./v1.6.2/tfhe.js').setWorkerUrlConfig;
28
+ getWasmInfo: typeof import('./v1.6.2/tfhe.js').getWasmInfo;
29
29
 
30
30
  // --- Class constructors used as values in encrypt/api-p.ts ----------------
31
31
  // These are imported as runtime values: instanceof checks, static methods
32
32
  // (safe_deserialize), factory calls (CompactCiphertextList.builder()).
33
- CompactCiphertextList: typeof import('./v1.6.1/tfhe.js').CompactCiphertextList;
34
- CompactPkeCrs: typeof import('./v1.6.1/tfhe.js').CompactPkeCrs;
35
- ProvenCompactCiphertextList: typeof import('./v1.6.1/tfhe.js').ProvenCompactCiphertextList;
36
- TfheCompactPublicKey: typeof import('./v1.6.1/tfhe.js').TfheCompactPublicKey;
33
+ CompactCiphertextList: typeof import('./v1.6.2/tfhe.js').CompactCiphertextList;
34
+ CompactPkeCrs: typeof import('./v1.6.2/tfhe.js').CompactPkeCrs;
35
+ ProvenCompactCiphertextList: typeof import('./v1.6.2/tfhe.js').ProvenCompactCiphertextList;
36
+ TfheCompactPublicKey: typeof import('./v1.6.2/tfhe.js').TfheCompactPublicKey;
37
37
 
38
38
  // --- Enum used as a value (e.g. ZkComputeLoad.Verify) ---------------------
39
- ZkComputeLoad: typeof import('./v1.6.1/tfhe.js').ZkComputeLoad;
39
+ ZkComputeLoad: typeof import('./v1.6.2/tfhe.js').ZkComputeLoad;
40
40
  }
41
41
 
42
42
  // Default version
43
- export type TfheVersion = '1.5.3' | '1.6.1';
43
+ export type TfheVersion = '1.5.3' | '1.6.2';
44
44
 
45
45
  export type TfheWasmBase64 = {
46
46
  readonly tfheWasmBase64: string;
@@ -8,19 +8,19 @@
8
8
 
9
9
  ////////////////////////////////////////////////////////////////////////////////
10
10
 
11
- export const TFHE_VERSIONS = Object.freeze(['1.5.3', '1.6.1']);
12
- export const DEFAULT_TFHE_VERSION = '1.6.1';
11
+ export const TFHE_VERSIONS = Object.freeze(['1.5.3', '1.6.2']);
12
+ export const DEFAULT_TFHE_VERSION = '1.6.2';
13
13
 
14
14
  const _loaders = {
15
15
  '1.5.3': () => import('./v1.5.3/tfhe.js'),
16
- '1.6.1': () => import('./v1.6.1/tfhe.js'),
16
+ '1.6.2': () => import('./v1.6.2/tfhe.js'),
17
17
  };
18
18
 
19
19
  ////////////////////////////////////////////////////////////////////////////////
20
20
 
21
21
  const _wasmBase64Loaders = {
22
22
  '1.5.3': () => import('./v1.5.3/tfhe_bg.wasm.base64.js'),
23
- '1.6.1': () => import('./v1.6.1/tfhe_bg.wasm.base64.js'),
23
+ '1.6.2': () => import('./v1.6.2/tfhe_bg.wasm.base64.js'),
24
24
  };
25
25
 
26
26
  ////////////////////////////////////////////////////////////////////////////////
@@ -38,16 +38,16 @@ const _assets = Object.freeze({
38
38
  sha256: '3f93fe86a8dfa6e25ae5fcfe28d19833219cba8f45f81c6dd05c2f3cc5323c52',
39
39
  }),
40
40
  }),
41
- '1.6.1': Object.freeze({
41
+ '1.6.2': Object.freeze({
42
42
  wasm: Object.freeze({
43
- filename: 'tfhe_bg.v1.6.1.wasm',
44
- localRelativePath: './v1.6.1/tfhe_bg.wasm',
45
- sha256: 'd470dc00347cdc83135e29700abe54c6a7ee9ba4ad58449bfc2494dfa4423f38',
43
+ filename: 'tfhe_bg.v1.6.2.wasm',
44
+ localRelativePath: './v1.6.2/tfhe_bg.wasm',
45
+ sha256: 'ecd1841ad42226629c1a665ba784e073f2e780137f7986b00088c9227acb9760',
46
46
  }),
47
47
  worker: Object.freeze({
48
- filename: 'tfhe-worker.v1.6.1.mjs',
49
- localRelativePath: './v1.6.1/tfhe-worker.mjs',
50
- sha256: '348fe6c2e77bafe0cbfb9c0a512af99b5f97de1119ceadf07cc34620dbc5690e',
48
+ filename: 'tfhe-worker.v1.6.2.mjs',
49
+ localRelativePath: './v1.6.2/tfhe-worker.mjs',
50
+ sha256: '2c648dd89132bb63d37e8b47c6fe1f53b06abb1389faeb9b3f671eea9a0db5dd',
51
51
  }),
52
52
  }),
53
53
  });
@@ -57,17 +57,13 @@
57
57
  */
58
58
 
59
59
  ////////////////////////////////////////////////////////////////////////////////
60
- // Runtime detection and load modes
60
+ // Load modes
61
61
  ////////////////////////////////////////////////////////////////////////////////
62
62
 
63
- function __isBrowserLike() {
64
- return (
65
- typeof Bun === 'undefined' &&
66
- typeof process === 'undefined' &&
67
- typeof addEventListener === 'function' &&
68
- typeof removeEventListener === 'function'
69
- );
70
- }
63
+ // Environment detection (browser vs Node) is NOT done here: the SDK resolves it
64
+ // once on the main thread (via environment.ts isBrowserLike, robust to bundler
65
+ // `process` shims) and injects it through setWorkerUrlConfig({ isBrowserLike }).
66
+ // See `_isBrowserLike` below.
71
67
 
72
68
  const __wasmAssetLoadModes = ['embedded-base64', 'verified-blob', 'precheck-direct-url', 'trusted-direct-url', 'auto'];
73
69
 
@@ -89,7 +85,7 @@ function __bytesToHex(bytes) {
89
85
  * @returns {Promise<string>} Lowercase hexadecimal SHA-256 digest without a `0x` prefix.
90
86
  */
91
87
  async function __sha256(bytes) {
92
- if (__isBrowserLike()) {
88
+ if (_isBrowserLike) {
93
89
  if (typeof crypto === 'undefined' || !crypto.subtle || typeof crypto.subtle.digest !== 'function') {
94
90
  throw new Error('Web Crypto SHA-256 digest is not available');
95
91
  }
@@ -100,7 +96,9 @@ async function __sha256(bytes) {
100
96
 
101
97
  const nodeModuleName = 'crypto';
102
98
  const nodeModuleId = `node:${nodeModuleName}`;
103
- const { createHash } = await import(/* @vite-ignore */ nodeModuleId);
99
+ const { createHash } = await import(
100
+ /* @vite-ignore */ /* webpackIgnore: true */ /* turbopackIgnore: true */ nodeModuleId
101
+ );
104
102
  return createHash('sha256').update(new Uint8Array(bytes)).digest('hex');
105
103
  }
106
104
 
@@ -152,13 +150,17 @@ async function __fetchAndVerifyWorkerUrlBytes(url, expectedSha256) {
152
150
  * @returns {Promise<ArrayBuffer | Uint8Array>} Raw worker script bytes.
153
151
  */
154
152
  async function __readWorkerUrlBytes(url) {
155
- if (!__isBrowserLike() && url.protocol === 'file:') {
153
+ if (!_isBrowserLike && url.protocol === 'file:') {
156
154
  const fsModuleName = 'fs/promises';
157
155
  const fsModuleId = `node:${fsModuleName}`;
158
156
  const urlModuleName = 'url';
159
157
  const urlModuleId = `node:${urlModuleName}`;
160
- const { readFile } = await import(/* @vite-ignore */ fsModuleId);
161
- const { fileURLToPath } = await import(/* @vite-ignore */ urlModuleId);
158
+ const { readFile } = await import(
159
+ /* @vite-ignore */ /* webpackIgnore: true */ /* turbopackIgnore: true */ fsModuleId
160
+ );
161
+ const { fileURLToPath } = await import(
162
+ /* @vite-ignore */ /* webpackIgnore: true */ /* turbopackIgnore: true */ urlModuleId
163
+ );
162
164
  return await readFile(fileURLToPath(url));
163
165
  }
164
166
 
@@ -203,7 +205,7 @@ async function __newBrowserWorkerFromBlob(blob) {
203
205
  * @returns {Promise<Worker>} Created worker.
204
206
  */
205
207
  async function __newIsomorphicWorkerFromUrl(url) {
206
- if (__isBrowserLike()) {
208
+ if (_isBrowserLike) {
207
209
  return new Worker(url, {
208
210
  type: 'module',
209
211
  name: 'wasm_bindgen_worker',
@@ -212,14 +214,18 @@ async function __newIsomorphicWorkerFromUrl(url) {
212
214
 
213
215
  const nodeModuleName = 'worker_threads';
214
216
  const nodeModuleId = `node:${nodeModuleName}`;
215
- const { Worker: NodeWorker } = await import(/* @vite-ignore */ nodeModuleId);
217
+ const { Worker: NodeWorker } = await import(
218
+ /* @vite-ignore */ /* webpackIgnore: true */ /* turbopackIgnore: true */ nodeModuleId
219
+ );
216
220
  return new NodeWorker(url);
217
221
  }
218
222
 
219
223
  async function __newNodeWorkerFromJsCode(jsCode) {
220
224
  const nodeModuleName = 'worker_threads';
221
225
  const nodeModuleId = `node:${nodeModuleName}`;
222
- const { Worker: NodeWorker } = await import(/* @vite-ignore */ nodeModuleId);
226
+ const { Worker: NodeWorker } = await import(
227
+ /* @vite-ignore */ /* webpackIgnore: true */ /* turbopackIgnore: true */ nodeModuleId
228
+ );
223
229
  return { worker: new NodeWorker(jsCode, { eval: true }), blobUrl: undefined };
224
230
  }
225
231
 
@@ -232,7 +238,7 @@ async function __newNodeWorkerFromJsCode(jsCode) {
232
238
  * @returns {Promise<{ worker: Worker, blobUrl: string | undefined }>} Created worker and optional Blob URL to revoke.
233
239
  */
234
240
  async function __newIsomorphicWorkerFromVerifiedJsCodeBytes(verifiedJsCodeBytes) {
235
- if (__isBrowserLike()) {
241
+ if (_isBrowserLike) {
236
242
  return await __newBrowserWorkerFromBlob(
237
243
  new Blob([verifiedJsCodeBytes], {
238
244
  type: 'application/javascript',
@@ -251,7 +257,7 @@ async function __newIsomorphicWorkerFromVerifiedJsCodeBytes(verifiedJsCodeBytes)
251
257
  * @returns {Promise<{ worker: Worker, blobUrl: string | undefined }>} Created worker and optional Blob URL to revoke.
252
258
  */
253
259
  async function __newWorkerFromJsCodeBase64(jsCodeBase64) {
254
- if (__isBrowserLike()) {
260
+ if (_isBrowserLike) {
255
261
  const blob = new Blob([atob(jsCodeBase64)], {
256
262
  type: 'application/javascript',
257
263
  });
@@ -338,6 +344,9 @@ let _terminating;
338
344
  let _configSet = false;
339
345
  let _workerUrl = undefined;
340
346
  let _wasmAssetLoadMode = 'auto';
347
+ // Injected by the SDK (the main thread) via setWorkerUrlConfig — the single
348
+ // source of truth for browser-vs-Node, replacing local detection.
349
+ let _isBrowserLike = undefined;
341
350
  const _workerUrlSha256 = "3f93fe86a8dfa6e25ae5fcfe28d19833219cba8f45f81c6dd05c2f3cc5323c52";
342
351
  let _verifiedWorkerUrlBytesPromise = undefined;
343
352
  let _logger = undefined;
@@ -381,7 +390,18 @@ function setWorkerUrlConfig(parameters = {}) {
381
390
  throw new TypeError('setWorkerUrlConfig parameters must be an object');
382
391
  }
383
392
 
384
- const { workerUrl = undefined, wasmAssetLoadMode = 'auto', logger = undefined } = parameters;
393
+ const {
394
+ workerUrl = undefined,
395
+ wasmAssetLoadMode = 'auto',
396
+ logger = undefined,
397
+ isBrowserLike = undefined,
398
+ } = parameters;
399
+
400
+ // Check `isBrowserLike` (required: the SDK injects the resolved runtime kind;
401
+ // the worker bootstrap never detects it itself).
402
+ if (typeof isBrowserLike !== 'boolean') {
403
+ throw new TypeError('setWorkerUrlConfig: isBrowserLike (boolean) is required');
404
+ }
385
405
 
386
406
  // Check `wasmAssetLoadMode`
387
407
  if (!__isWasmAssetLoadMode(wasmAssetLoadMode)) {
@@ -409,6 +429,7 @@ function setWorkerUrlConfig(parameters = {}) {
409
429
 
410
430
  _wasmAssetLoadMode = wasmAssetLoadMode;
411
431
  _logger = logger;
432
+ _isBrowserLike = isBrowserLike;
412
433
  _configSet = true;
413
434
  }
414
435
 
@@ -5078,6 +5078,9 @@ export type WasmAssetLoadMode =
5078
5078
  export function setWorkerUrlConfig(parameters?: {
5079
5079
  readonly workerUrl?: URL | undefined;
5080
5080
  readonly wasmAssetLoadMode?: WasmAssetLoadMode | undefined;
5081
+ // Required: the SDK injects the resolved runtime kind (browser vs Node); the
5082
+ // worker bootstrap no longer detects it itself.
5083
+ readonly isBrowserLike: boolean;
5081
5084
  readonly logger?:
5082
5085
  | {
5083
5086
  debug: (message: string) => void;
@@ -57,17 +57,13 @@
57
57
  */
58
58
 
59
59
  ////////////////////////////////////////////////////////////////////////////////
60
- // Runtime detection and load modes
60
+ // Load modes
61
61
  ////////////////////////////////////////////////////////////////////////////////
62
62
 
63
- function __isBrowserLike() {
64
- return (
65
- typeof Bun === 'undefined' &&
66
- typeof process === 'undefined' &&
67
- typeof addEventListener === 'function' &&
68
- typeof removeEventListener === 'function'
69
- );
70
- }
63
+ // Environment detection (browser vs Node) is NOT done here: the SDK resolves it
64
+ // once on the main thread (via environment.ts isBrowserLike, robust to bundler
65
+ // `process` shims) and injects it through setWorkerUrlConfig({ isBrowserLike }).
66
+ // See `_isBrowserLike` below.
71
67
 
72
68
  const __wasmAssetLoadModes = ['embedded-base64', 'verified-blob', 'precheck-direct-url', 'trusted-direct-url', 'auto'];
73
69
 
@@ -89,7 +85,7 @@ function __bytesToHex(bytes) {
89
85
  * @returns {Promise<string>} Lowercase hexadecimal SHA-256 digest without a `0x` prefix.
90
86
  */
91
87
  async function __sha256(bytes) {
92
- if (__isBrowserLike()) {
88
+ if (_isBrowserLike) {
93
89
  if (typeof crypto === 'undefined' || !crypto.subtle || typeof crypto.subtle.digest !== 'function') {
94
90
  throw new Error('Web Crypto SHA-256 digest is not available');
95
91
  }
@@ -100,7 +96,9 @@ async function __sha256(bytes) {
100
96
 
101
97
  const nodeModuleName = 'crypto';
102
98
  const nodeModuleId = `node:${nodeModuleName}`;
103
- const { createHash } = await import(/* @vite-ignore */ nodeModuleId);
99
+ const { createHash } = await import(
100
+ /* @vite-ignore */ /* webpackIgnore: true */ /* turbopackIgnore: true */ nodeModuleId
101
+ );
104
102
  return createHash('sha256').update(new Uint8Array(bytes)).digest('hex');
105
103
  }
106
104
 
@@ -152,13 +150,17 @@ async function __fetchAndVerifyWorkerUrlBytes(url, expectedSha256) {
152
150
  * @returns {Promise<ArrayBuffer | Uint8Array>} Raw worker script bytes.
153
151
  */
154
152
  async function __readWorkerUrlBytes(url) {
155
- if (!__isBrowserLike() && url.protocol === 'file:') {
153
+ if (!_isBrowserLike && url.protocol === 'file:') {
156
154
  const fsModuleName = 'fs/promises';
157
155
  const fsModuleId = `node:${fsModuleName}`;
158
156
  const urlModuleName = 'url';
159
157
  const urlModuleId = `node:${urlModuleName}`;
160
- const { readFile } = await import(/* @vite-ignore */ fsModuleId);
161
- const { fileURLToPath } = await import(/* @vite-ignore */ urlModuleId);
158
+ const { readFile } = await import(
159
+ /* @vite-ignore */ /* webpackIgnore: true */ /* turbopackIgnore: true */ fsModuleId
160
+ );
161
+ const { fileURLToPath } = await import(
162
+ /* @vite-ignore */ /* webpackIgnore: true */ /* turbopackIgnore: true */ urlModuleId
163
+ );
162
164
  return await readFile(fileURLToPath(url));
163
165
  }
164
166
 
@@ -203,7 +205,7 @@ async function __newBrowserWorkerFromBlob(blob) {
203
205
  * @returns {Promise<Worker>} Created worker.
204
206
  */
205
207
  async function __newIsomorphicWorkerFromUrl(url) {
206
- if (__isBrowserLike()) {
208
+ if (_isBrowserLike) {
207
209
  return new Worker(url, {
208
210
  type: 'module',
209
211
  name: 'wasm_bindgen_worker',
@@ -212,14 +214,18 @@ async function __newIsomorphicWorkerFromUrl(url) {
212
214
 
213
215
  const nodeModuleName = 'worker_threads';
214
216
  const nodeModuleId = `node:${nodeModuleName}`;
215
- const { Worker: NodeWorker } = await import(/* @vite-ignore */ nodeModuleId);
217
+ const { Worker: NodeWorker } = await import(
218
+ /* @vite-ignore */ /* webpackIgnore: true */ /* turbopackIgnore: true */ nodeModuleId
219
+ );
216
220
  return new NodeWorker(url);
217
221
  }
218
222
 
219
223
  async function __newNodeWorkerFromJsCode(jsCode) {
220
224
  const nodeModuleName = 'worker_threads';
221
225
  const nodeModuleId = `node:${nodeModuleName}`;
222
- const { Worker: NodeWorker } = await import(/* @vite-ignore */ nodeModuleId);
226
+ const { Worker: NodeWorker } = await import(
227
+ /* @vite-ignore */ /* webpackIgnore: true */ /* turbopackIgnore: true */ nodeModuleId
228
+ );
223
229
  return { worker: new NodeWorker(jsCode, { eval: true }), blobUrl: undefined };
224
230
  }
225
231
 
@@ -232,7 +238,7 @@ async function __newNodeWorkerFromJsCode(jsCode) {
232
238
  * @returns {Promise<{ worker: Worker, blobUrl: string | undefined }>} Created worker and optional Blob URL to revoke.
233
239
  */
234
240
  async function __newIsomorphicWorkerFromVerifiedJsCodeBytes(verifiedJsCodeBytes) {
235
- if (__isBrowserLike()) {
241
+ if (_isBrowserLike) {
236
242
  return await __newBrowserWorkerFromBlob(
237
243
  new Blob([verifiedJsCodeBytes], {
238
244
  type: 'application/javascript',
@@ -251,7 +257,7 @@ async function __newIsomorphicWorkerFromVerifiedJsCodeBytes(verifiedJsCodeBytes)
251
257
  * @returns {Promise<{ worker: Worker, blobUrl: string | undefined }>} Created worker and optional Blob URL to revoke.
252
258
  */
253
259
  async function __newWorkerFromJsCodeBase64(jsCodeBase64) {
254
- if (__isBrowserLike()) {
260
+ if (_isBrowserLike) {
255
261
  const blob = new Blob([atob(jsCodeBase64)], {
256
262
  type: 'application/javascript',
257
263
  });
@@ -338,6 +344,9 @@ let _terminating;
338
344
  let _configSet = false;
339
345
  let _workerUrl = undefined;
340
346
  let _wasmAssetLoadMode = 'auto';
347
+ // Injected by the SDK (the main thread) via setWorkerUrlConfig — the single
348
+ // source of truth for browser-vs-Node, replacing local detection.
349
+ let _isBrowserLike = undefined;
341
350
  const _workerUrlSha256 = "2c2ef02437e5b7a41f4c5c1defa0a24dcfae737037a59a145a972bb4191571b8";
342
351
  let _verifiedWorkerUrlBytesPromise = undefined;
343
352
  let _logger = undefined;
@@ -381,7 +390,18 @@ function setWorkerUrlConfig(parameters = {}) {
381
390
  throw new TypeError('setWorkerUrlConfig parameters must be an object');
382
391
  }
383
392
 
384
- const { workerUrl = undefined, wasmAssetLoadMode = 'auto', logger = undefined } = parameters;
393
+ const {
394
+ workerUrl = undefined,
395
+ wasmAssetLoadMode = 'auto',
396
+ logger = undefined,
397
+ isBrowserLike = undefined,
398
+ } = parameters;
399
+
400
+ // Check `isBrowserLike` (required: the SDK injects the resolved runtime kind;
401
+ // the worker bootstrap never detects it itself).
402
+ if (typeof isBrowserLike !== 'boolean') {
403
+ throw new TypeError('setWorkerUrlConfig: isBrowserLike (boolean) is required');
404
+ }
385
405
 
386
406
  // Check `wasmAssetLoadMode`
387
407
  if (!__isWasmAssetLoadMode(wasmAssetLoadMode)) {
@@ -409,6 +429,7 @@ function setWorkerUrlConfig(parameters = {}) {
409
429
 
410
430
  _wasmAssetLoadMode = wasmAssetLoadMode;
411
431
  _logger = logger;
432
+ _isBrowserLike = isBrowserLike;
412
433
  _configSet = true;
413
434
  }
414
435
 
@@ -355,6 +355,9 @@ export type WasmAssetLoadMode =
355
355
  export function setWorkerUrlConfig(parameters?: {
356
356
  readonly workerUrl?: URL | undefined;
357
357
  readonly wasmAssetLoadMode?: WasmAssetLoadMode | undefined;
358
+ // Required: the SDK injects the resolved runtime kind (browser vs Node); the
359
+ // worker bootstrap no longer detects it itself.
360
+ readonly isBrowserLike: boolean;
358
361
  readonly logger?:
359
362
  | {
360
363
  debug: (message: string) => void;