@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.
- package/_cjs/core/_version.js +1 -1
- package/_cjs/core/base/bytes.js +2 -1
- package/_cjs/core/base/bytes.js.map +1 -1
- package/_cjs/core/base/environment.js +122 -0
- package/_cjs/core/base/environment.js.map +1 -0
- package/_cjs/core/base/errors/Sha256VerificationError.js +15 -0
- package/_cjs/core/base/errors/Sha256VerificationError.js.map +1 -0
- package/_cjs/core/base/inflate.js +282 -0
- package/_cjs/core/base/inflate.js.map +1 -0
- package/_cjs/core/base/isomorphicFs.js +24 -0
- package/_cjs/core/base/isomorphicFs.js.map +1 -0
- package/_cjs/core/base/isomorphicWorker.js +42 -111
- package/_cjs/core/base/isomorphicWorker.js.map +1 -1
- package/_cjs/core/base/wasm.js +15 -55
- package/_cjs/core/base/wasm.js.map +1 -1
- package/_cjs/core/kms/TransportKeyPair-p.js +0 -4
- package/_cjs/core/kms/TransportKeyPair-p.js.map +1 -1
- package/_cjs/core/kms/createKmsUserDecryptEip712.js +5 -1
- package/_cjs/core/kms/createKmsUserDecryptEip712.js.map +1 -1
- package/_cjs/core/modules/decrypt/module/init-p.js +124 -39
- package/_cjs/core/modules/decrypt/module/init-p.js.map +1 -1
- package/_cjs/core/modules/encrypt/module/init-p.js +148 -45
- package/_cjs/core/modules/encrypt/module/init-p.js.map +1 -1
- package/_cjs/core/runtime/HyperWasmSolver-p.js +4 -4
- package/_cjs/core/runtime/initFhevmEncryptRuntime-p.js +1 -1
- package/_cjs/core/runtime/initFhevmRuntime-p.js +1 -1
- package/_cjs/wasm/tfhe/TfheApi.d.ts +12 -12
- package/_cjs/wasm/tfhe/loadTfheLib.js +11 -11
- package/_cjs/wasm/tfhe/loadTfheLib.js.map +2 -2
- package/_cjs/wasm/tfhe/v1.5.3/startWorkers.js +26 -9
- package/_cjs/wasm/tfhe/v1.5.3/startWorkers.js.map +2 -2
- package/_cjs/wasm/tfhe/v1.5.3/tfhe.d.ts +3 -0
- package/_cjs/wasm/tfhe/{v1.6.1 → v1.6.2}/startWorkers.js +28 -11
- package/_cjs/wasm/tfhe/v1.6.2/startWorkers.js.map +7 -0
- package/{_esm/wasm/tfhe/v1.6.1 → _cjs/wasm/tfhe/v1.6.2}/tfhe-worker.mjs +40 -40
- package/{_esm/wasm/tfhe/v1.6.1 → _cjs/wasm/tfhe/v1.6.2}/tfhe.d.ts +88 -85
- package/_cjs/wasm/tfhe/{v1.6.1 → v1.6.2}/tfhe.js +245 -442
- package/_cjs/wasm/tfhe/v1.6.2/tfhe.js.map +7 -0
- package/_cjs/wasm/tfhe/v1.6.2/tfhe_bg.wasm +0 -0
- package/_cjs/wasm/tfhe/v1.6.2/tfhe_bg.wasm.base64.js +35 -0
- package/_cjs/wasm/tfhe/v1.6.2/tfhe_bg.wasm.base64.js.map +7 -0
- package/_cjs/wasm/tkms/loadKmsLib.js.map +1 -1
- package/_cjs/wasm/wasmBaseUrl.js +8 -19
- package/_cjs/wasm/wasmBaseUrl.js.map +2 -2
- package/_esm/core/_version.js +1 -1
- package/_esm/core/base/bytes.js +2 -1
- package/_esm/core/base/bytes.js.map +1 -1
- package/_esm/core/base/environment.js +164 -0
- package/_esm/core/base/environment.js.map +1 -0
- package/_esm/core/base/errors/Sha256VerificationError.js +11 -0
- package/_esm/core/base/errors/Sha256VerificationError.js.map +1 -0
- package/_esm/core/base/inflate.js +337 -0
- package/_esm/core/base/inflate.js.map +1 -0
- package/_esm/core/base/isomorphicFs.js +21 -0
- package/_esm/core/base/isomorphicFs.js.map +1 -0
- package/_esm/core/base/isomorphicWorker.js +92 -85
- package/_esm/core/base/isomorphicWorker.js.map +1 -1
- package/_esm/core/base/wasm.js +25 -31
- package/_esm/core/base/wasm.js.map +1 -1
- package/_esm/core/kms/TransportKeyPair-p.js +0 -4
- package/_esm/core/kms/TransportKeyPair-p.js.map +1 -1
- package/_esm/core/kms/createKmsUserDecryptEip712.js +5 -1
- package/_esm/core/kms/createKmsUserDecryptEip712.js.map +1 -1
- package/_esm/core/modules/decrypt/module/init-p.js +109 -54
- package/_esm/core/modules/decrypt/module/init-p.js.map +1 -1
- package/_esm/core/modules/encrypt/module/init-p.js +300 -53
- package/_esm/core/modules/encrypt/module/init-p.js.map +1 -1
- package/_esm/core/runtime/HyperWasmSolver-p.js +4 -4
- package/_esm/core/runtime/initFhevmEncryptRuntime-p.js +1 -1
- package/_esm/core/runtime/initFhevmRuntime-p.js +1 -1
- package/_esm/wasm/tfhe/TfheApi.d.ts +12 -12
- package/_esm/wasm/tfhe/loadTfheLib.js +11 -11
- package/_esm/wasm/tfhe/v1.5.3/startWorkers.js +41 -20
- package/_esm/wasm/tfhe/v1.5.3/tfhe.d.ts +3 -0
- package/_esm/wasm/tfhe/{v1.6.1 → v1.6.2}/startWorkers.js +46 -25
- package/{_cjs/wasm/tfhe/v1.6.1 → _esm/wasm/tfhe/v1.6.2}/tfhe-worker.mjs +40 -40
- package/{_types/wasm/tfhe/v1.6.1 → _esm/wasm/tfhe/v1.6.2}/tfhe.d.ts +88 -85
- package/_esm/wasm/tfhe/{v1.6.1 → v1.6.2}/tfhe.js +245 -442
- package/_esm/wasm/tfhe/v1.6.2/tfhe_bg.wasm +0 -0
- package/_esm/wasm/tfhe/v1.6.2/tfhe_bg.wasm.base64.js +7 -0
- package/_esm/wasm/wasmBaseUrl.js +17 -54
- package/_types/core/base/bytes.d.ts.map +1 -1
- package/_types/core/base/environment.d.ts +92 -0
- package/_types/core/base/environment.d.ts.map +1 -0
- package/_types/core/base/errors/Sha256VerificationError.d.ts +14 -0
- package/_types/core/base/errors/Sha256VerificationError.d.ts.map +1 -0
- package/_types/core/base/inflate.d.ts +25 -0
- package/_types/core/base/inflate.d.ts.map +1 -0
- package/_types/core/base/isomorphicFs.d.ts +2 -0
- package/_types/core/base/isomorphicFs.d.ts.map +1 -0
- package/_types/core/base/isomorphicWorker.d.ts +27 -43
- package/_types/core/base/isomorphicWorker.d.ts.map +1 -1
- package/_types/core/base/wasm.d.ts +0 -8
- package/_types/core/base/wasm.d.ts.map +1 -1
- package/_types/core/kms/TransportKeyPair-p.d.ts.map +1 -1
- package/_types/core/kms/createKmsUserDecryptEip712.d.ts.map +1 -1
- package/_types/core/modules/decrypt/module/init-p.d.ts.map +1 -1
- package/_types/core/modules/encrypt/module/init-p.d.ts.map +1 -1
- package/_types/core/types/wasmAssets.d.ts.map +1 -1
- package/_types/wasm/tfhe/TfheApi.d.ts +12 -12
- package/_types/wasm/tfhe/v1.5.3/tfhe.d.ts +3 -0
- package/{wasm/tfhe/v1.6.1 → _types/wasm/tfhe/v1.6.2}/tfhe.d.ts +88 -85
- package/core/_version.ts +1 -1
- package/core/base/bytes.ts +2 -1
- package/core/base/environment.ts +210 -0
- package/core/base/errors/Sha256VerificationError.ts +22 -0
- package/core/base/inflate.ts +373 -0
- package/core/base/isomorphicFs.ts +23 -0
- package/core/base/isomorphicWorker.ts +96 -123
- package/core/base/wasm.ts +28 -35
- package/core/kms/TransportKeyPair-p.ts +0 -5
- package/core/kms/createKmsUserDecryptEip712.ts +8 -1
- package/core/modules/decrypt/module/init-p.ts +148 -59
- package/core/modules/encrypt/module/init-p.ts +368 -63
- package/core/runtime/HyperWasmSolver-p.ts +4 -4
- package/core/runtime/initFhevmEncryptRuntime-p.ts +1 -1
- package/core/runtime/initFhevmRuntime-p.ts +1 -1
- package/core/types/wasmAssets.ts +58 -0
- package/package.json +1 -1
- package/wasm/tfhe/TfheApi.d.ts +12 -12
- package/wasm/tfhe/loadTfheLib.js +11 -11
- package/wasm/tfhe/v1.5.3/startWorkers.js +41 -20
- package/wasm/tfhe/v1.5.3/tfhe.d.ts +3 -0
- package/wasm/tfhe/v1.6.0-dev/startWorkers.js +41 -20
- package/wasm/tfhe/v1.6.0-dev/tfhe.d.ts +3 -0
- package/wasm/tfhe/{v1.6.1 → v1.6.2}/startWorkers.js +46 -25
- package/wasm/tfhe/{v1.6.1 → v1.6.2}/tfhe-worker.mjs +40 -40
- package/{_cjs/wasm/tfhe/v1.6.1 → wasm/tfhe/v1.6.2}/tfhe.d.ts +88 -85
- package/wasm/tfhe/{v1.6.1 → v1.6.2}/tfhe.js +245 -442
- package/wasm/tfhe/v1.6.2/tfhe_bg.wasm +0 -0
- package/wasm/tfhe/v1.6.2/tfhe_bg.wasm.base64.js +7 -0
- package/wasm/wasmBaseUrl.js +17 -54
- package/_cjs/wasm/tfhe/v1.6.1/startWorkers.js.map +0 -7
- package/_cjs/wasm/tfhe/v1.6.1/tfhe.js.map +0 -7
- package/_cjs/wasm/tfhe/v1.6.1/tfhe_bg.wasm +0 -0
- package/_cjs/wasm/tfhe/v1.6.1/tfhe_bg.wasm.base64.js +0 -35
- package/_cjs/wasm/tfhe/v1.6.1/tfhe_bg.wasm.base64.js.map +0 -7
- package/_esm/wasm/tfhe/v1.6.1/tfhe_bg.wasm +0 -0
- package/_esm/wasm/tfhe/v1.6.1/tfhe_bg.wasm.base64.js +0 -7
- package/wasm/tfhe/v1.6.1/tfhe_bg.wasm +0 -0
- package/wasm/tfhe/v1.6.1/tfhe_bg.wasm.base64.js +0 -7
- /package/_cjs/wasm/tfhe/{v1.6.1 → v1.6.2}/tfhe_bg.wasm.base64.d.ts +0 -0
- /package/_esm/wasm/tfhe/{v1.6.1 → v1.6.2}/tfhe_bg.wasm.base64.d.ts +0 -0
- /package/_types/wasm/tfhe/{v1.6.1 → v1.6.2}/tfhe_bg.wasm.base64.d.ts +0 -0
- /package/wasm/tfhe/{v1.6.1 → v1.6.2}/tfhe_bg.wasm.base64.d.ts +0 -0
|
@@ -3405,9 +3405,87 @@ export function wbg_rayon_start_worker(receiver: number): void;
|
|
|
3405
3405
|
export type InitInput = RequestInfo | URL | Response | BufferSource | WebAssembly.Module;
|
|
3406
3406
|
|
|
3407
3407
|
export interface InitOutput {
|
|
3408
|
+
readonly __wbg_boolean_free: (a: number, b: number) => void;
|
|
3409
|
+
readonly __wbg_booleanciphertext_free: (a: number, b: number) => void;
|
|
3410
|
+
readonly __wbg_booleanclientkey_free: (a: number, b: number) => void;
|
|
3411
|
+
readonly __wbg_booleancompressedciphertext_free: (a: number, b: number) => void;
|
|
3412
|
+
readonly __wbg_booleancompressedserverkey_free: (a: number, b: number) => void;
|
|
3413
|
+
readonly __wbg_booleannoisedistribution_free: (a: number, b: number) => void;
|
|
3414
|
+
readonly __wbg_booleanparameters_free: (a: number, b: number) => void;
|
|
3415
|
+
readonly __wbg_booleanpublickey_free: (a: number, b: number) => void;
|
|
3416
|
+
readonly __wbg_tfheclientkey_free: (a: number, b: number) => void;
|
|
3417
|
+
readonly __wbg_tfhecompactpublickey_free: (a: number, b: number) => void;
|
|
3418
|
+
readonly __wbg_tfhecompressedcompactpublickey_free: (a: number, b: number) => void;
|
|
3419
|
+
readonly __wbg_tfhecompressedpublickey_free: (a: number, b: number) => void;
|
|
3420
|
+
readonly __wbg_tfhecompressedserverkey_free: (a: number, b: number) => void;
|
|
3421
|
+
readonly __wbg_tfhepublickey_free: (a: number, b: number) => void;
|
|
3422
|
+
readonly __wbg_tfheserverkey_free: (a: number, b: number) => void;
|
|
3423
|
+
readonly boolean_decompress_ciphertext: (a: number) => number;
|
|
3424
|
+
readonly boolean_decrypt: (a: number, b: number) => number;
|
|
3425
|
+
readonly boolean_deserialize_ciphertext: (a: number, b: number) => [number, number, number];
|
|
3426
|
+
readonly boolean_deserialize_client_key: (a: number, b: number) => [number, number, number];
|
|
3427
|
+
readonly boolean_deserialize_compressed_ciphertext: (a: number, b: number) => [number, number, number];
|
|
3428
|
+
readonly boolean_deserialize_compressed_server_key: (a: number, b: number) => [number, number, number];
|
|
3429
|
+
readonly boolean_deserialize_public_key: (a: number, b: number) => [number, number, number];
|
|
3430
|
+
readonly boolean_encrypt: (a: number, b: number) => number;
|
|
3431
|
+
readonly boolean_encrypt_compressed: (a: number, b: number) => number;
|
|
3432
|
+
readonly boolean_encrypt_with_public_key: (a: number, b: number) => number;
|
|
3433
|
+
readonly boolean_get_parameters: (a: number) => [number, number, number];
|
|
3434
|
+
readonly boolean_new_client_key: (a: number) => number;
|
|
3435
|
+
readonly boolean_new_client_key_from_seed_and_parameters: (a: bigint, b: bigint, c: number) => number;
|
|
3436
|
+
readonly boolean_new_compressed_server_key: (a: number) => number;
|
|
3437
|
+
readonly boolean_new_gaussian_from_std_dev: (a: number) => number;
|
|
3438
|
+
readonly boolean_new_parameters: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number) => number;
|
|
3439
|
+
readonly boolean_new_public_key: (a: number) => number;
|
|
3440
|
+
readonly boolean_serialize_ciphertext: (a: number) => [number, number, number, number];
|
|
3441
|
+
readonly boolean_serialize_client_key: (a: number) => [number, number, number, number];
|
|
3442
|
+
readonly boolean_serialize_compressed_ciphertext: (a: number) => [number, number, number, number];
|
|
3443
|
+
readonly boolean_serialize_compressed_server_key: (a: number) => [number, number, number, number];
|
|
3444
|
+
readonly boolean_serialize_public_key: (a: number) => [number, number, number, number];
|
|
3445
|
+
readonly boolean_trivial_encrypt: (a: number) => number;
|
|
3446
|
+
readonly boolean_try_new_t_uniform: (a: number) => [number, number, number];
|
|
3447
|
+
readonly init_panic_hook: () => void;
|
|
3448
|
+
readonly set_server_key: (a: number) => [number, number];
|
|
3449
|
+
readonly tfheclientkey_deserialize: (a: number, b: number) => [number, number, number];
|
|
3450
|
+
readonly tfheclientkey_generate: (a: number) => [number, number, number];
|
|
3451
|
+
readonly tfheclientkey_generate_with_seed: (a: number, b: any) => [number, number, number];
|
|
3452
|
+
readonly tfheclientkey_safe_deserialize: (a: number, b: number, c: bigint) => [number, number, number];
|
|
3453
|
+
readonly tfheclientkey_safe_serialize: (a: number, b: bigint) => [number, number, number, number];
|
|
3454
|
+
readonly tfheclientkey_serialize: (a: number) => [number, number, number, number];
|
|
3455
|
+
readonly tfhecompactpublickey_deserialize: (a: number, b: number) => [number, number, number];
|
|
3456
|
+
readonly tfhecompactpublickey_new: (a: number) => [number, number, number];
|
|
3457
|
+
readonly tfhecompactpublickey_safe_deserialize: (a: number, b: number, c: bigint) => [number, number, number];
|
|
3458
|
+
readonly tfhecompactpublickey_safe_deserialize_conformant: (a: number, b: number, c: bigint, d: number) => [number, number, number];
|
|
3459
|
+
readonly tfhecompactpublickey_safe_serialize: (a: number, b: bigint) => [number, number, number, number];
|
|
3460
|
+
readonly tfhecompactpublickey_serialize: (a: number) => [number, number, number, number];
|
|
3461
|
+
readonly tfhecompressedcompactpublickey_decompress: (a: number) => [number, number, number];
|
|
3462
|
+
readonly tfhecompressedcompactpublickey_deserialize: (a: number, b: number) => [number, number, number];
|
|
3463
|
+
readonly tfhecompressedcompactpublickey_new: (a: number) => [number, number, number];
|
|
3464
|
+
readonly tfhecompressedcompactpublickey_safe_deserialize: (a: number, b: number, c: bigint) => [number, number, number];
|
|
3465
|
+
readonly tfhecompressedcompactpublickey_safe_deserialize_conformant: (a: number, b: number, c: bigint, d: number) => [number, number, number];
|
|
3466
|
+
readonly tfhecompressedcompactpublickey_safe_serialize: (a: number, b: bigint) => [number, number, number, number];
|
|
3467
|
+
readonly tfhecompressedcompactpublickey_serialize: (a: number) => [number, number, number, number];
|
|
3468
|
+
readonly tfhecompressedpublickey_decompress: (a: number) => [number, number, number];
|
|
3469
|
+
readonly tfhecompressedpublickey_deserialize: (a: number, b: number) => [number, number, number];
|
|
3470
|
+
readonly tfhecompressedpublickey_new: (a: number) => [number, number, number];
|
|
3471
|
+
readonly tfhecompressedpublickey_safe_deserialize: (a: number, b: number, c: bigint) => [number, number, number];
|
|
3472
|
+
readonly tfhecompressedpublickey_safe_serialize: (a: number, b: bigint) => [number, number, number, number];
|
|
3473
|
+
readonly tfhecompressedpublickey_serialize: (a: number) => [number, number, number, number];
|
|
3474
|
+
readonly tfhecompressedserverkey_deserialize: (a: number, b: number) => [number, number, number];
|
|
3475
|
+
readonly tfhecompressedserverkey_new: (a: number) => [number, number, number];
|
|
3476
|
+
readonly tfhecompressedserverkey_safe_deserialize: (a: number, b: number, c: bigint) => [number, number, number];
|
|
3477
|
+
readonly tfhecompressedserverkey_safe_serialize: (a: number, b: bigint) => [number, number, number, number];
|
|
3478
|
+
readonly tfhecompressedserverkey_serialize: (a: number) => [number, number, number, number];
|
|
3479
|
+
readonly tfhepublickey_deserialize: (a: number, b: number) => [number, number, number];
|
|
3480
|
+
readonly tfhepublickey_new: (a: number) => [number, number, number];
|
|
3481
|
+
readonly tfhepublickey_safe_deserialize: (a: number, b: number, c: bigint) => [number, number, number];
|
|
3482
|
+
readonly tfhepublickey_safe_serialize: (a: number, b: bigint) => [number, number, number, number];
|
|
3483
|
+
readonly tfhepublickey_serialize: (a: number) => [number, number, number, number];
|
|
3484
|
+
readonly tfheserverkey_new: (a: number) => [number, number, number];
|
|
3408
3485
|
readonly __wbg_compactciphertextlist_free: (a: number, b: number) => void;
|
|
3409
3486
|
readonly __wbg_compactciphertextlistbuilder_free: (a: number, b: number) => void;
|
|
3410
3487
|
readonly __wbg_compactciphertextlistexpander_free: (a: number, b: number) => void;
|
|
3488
|
+
readonly __wbg_compactpkecrs_free: (a: number, b: number) => void;
|
|
3411
3489
|
readonly __wbg_compressedfhebool_free: (a: number, b: number) => void;
|
|
3412
3490
|
readonly __wbg_compressedfheint1024_free: (a: number, b: number) => void;
|
|
3413
3491
|
readonly __wbg_compressedfheint104_free: (a: number, b: number) => void;
|
|
@@ -3585,15 +3663,8 @@ export interface InitOutput {
|
|
|
3585
3663
|
readonly __wbg_shortintnoisedistribution_free: (a: number, b: number) => void;
|
|
3586
3664
|
readonly __wbg_shortintparameters_free: (a: number, b: number) => void;
|
|
3587
3665
|
readonly __wbg_shortintpublickey_free: (a: number, b: number) => void;
|
|
3588
|
-
readonly __wbg_tfheclientkey_free: (a: number, b: number) => void;
|
|
3589
|
-
readonly __wbg_tfhecompactpublickey_free: (a: number, b: number) => void;
|
|
3590
|
-
readonly __wbg_tfhecompressedcompactpublickey_free: (a: number, b: number) => void;
|
|
3591
|
-
readonly __wbg_tfhecompressedpublickey_free: (a: number, b: number) => void;
|
|
3592
|
-
readonly __wbg_tfhecompressedserverkey_free: (a: number, b: number) => void;
|
|
3593
3666
|
readonly __wbg_tfheconfig_free: (a: number, b: number) => void;
|
|
3594
3667
|
readonly __wbg_tfheconfigbuilder_free: (a: number, b: number) => void;
|
|
3595
|
-
readonly __wbg_tfhepublickey_free: (a: number, b: number) => void;
|
|
3596
|
-
readonly __wbg_tfheserverkey_free: (a: number, b: number) => void;
|
|
3597
3668
|
readonly compactciphertextlist_builder: (a: number) => [number, number, number];
|
|
3598
3669
|
readonly compactciphertextlist_deserialize: (a: number, b: number) => [number, number, number];
|
|
3599
3670
|
readonly compactciphertextlist_eq: (a: number, b: number) => number;
|
|
@@ -3778,6 +3849,13 @@ export interface InitOutput {
|
|
|
3778
3849
|
readonly compactciphertextlistexpander_get_uint96: (a: number, b: number) => [number, number, number];
|
|
3779
3850
|
readonly compactciphertextlistexpander_is_empty: (a: number) => number;
|
|
3780
3851
|
readonly compactciphertextlistexpander_len: (a: number) => number;
|
|
3852
|
+
readonly compactpkecrs_deserialize: (a: number, b: number) => [number, number, number];
|
|
3853
|
+
readonly compactpkecrs_deserialize_from_public_params: (a: number, b: number) => [number, number, number];
|
|
3854
|
+
readonly compactpkecrs_from_config: (a: number, b: number) => [number, number, number];
|
|
3855
|
+
readonly compactpkecrs_safe_deserialize: (a: number, b: number, c: bigint) => [number, number, number];
|
|
3856
|
+
readonly compactpkecrs_safe_deserialize_from_public_params: (a: number, b: number, c: bigint) => [number, number, number];
|
|
3857
|
+
readonly compactpkecrs_safe_serialize: (a: number, b: bigint) => [number, number, number, number];
|
|
3858
|
+
readonly compactpkecrs_serialize: (a: number, b: number) => [number, number, number, number];
|
|
3781
3859
|
readonly compressedfhebool_decompress: (a: number) => [number, number, number];
|
|
3782
3860
|
readonly compressedfhebool_deserialize: (a: number, b: number) => [number, number, number];
|
|
3783
3861
|
readonly compressedfhebool_encrypt_with_client_key: (a: number, b: number) => [number, number, number];
|
|
@@ -4940,7 +5018,6 @@ export interface InitOutput {
|
|
|
4940
5018
|
readonly fheuint96_safe_deserialize: (a: number, b: number, c: bigint) => [number, number, number];
|
|
4941
5019
|
readonly fheuint96_safe_serialize: (a: number, b: bigint) => [number, number, number, number];
|
|
4942
5020
|
readonly fheuint96_serialize: (a: number) => [number, number, number, number];
|
|
4943
|
-
readonly init_panic_hook: () => void;
|
|
4944
5021
|
readonly provencompactciphertextlist_builder: (a: number) => [number, number, number];
|
|
4945
5022
|
readonly provencompactciphertextlist_deserialize: (a: number, b: number) => [number, number, number];
|
|
4946
5023
|
readonly provencompactciphertextlist_eq: (a: number, b: number) => number;
|
|
@@ -4950,7 +5027,6 @@ export interface InitOutput {
|
|
|
4950
5027
|
readonly provencompactciphertextlist_safe_serialize: (a: number, b: bigint) => [number, number, number, number];
|
|
4951
5028
|
readonly provencompactciphertextlist_serialize: (a: number) => [number, number, number, number];
|
|
4952
5029
|
readonly provencompactciphertextlist_verify_and_expand: (a: number, b: number, c: number, d: number, e: number) => [number, number, number];
|
|
4953
|
-
readonly set_server_key: (a: number) => [number, number];
|
|
4954
5030
|
readonly shortint_decompress_ciphertext: (a: number) => number;
|
|
4955
5031
|
readonly shortint_decrypt: (a: number, b: number) => bigint;
|
|
4956
5032
|
readonly shortint_deserialize_ciphertext: (a: number, b: number) => [number, number, number];
|
|
@@ -5005,90 +5081,14 @@ export interface InitOutput {
|
|
|
5005
5081
|
readonly shortintparameters_set_pbs_base_log: (a: number, b: number) => void;
|
|
5006
5082
|
readonly shortintparameters_set_pbs_level: (a: number, b: number) => void;
|
|
5007
5083
|
readonly shortintparameters_set_polynomial_size: (a: number, b: number) => void;
|
|
5008
|
-
readonly tfheclientkey_deserialize: (a: number, b: number) => [number, number, number];
|
|
5009
|
-
readonly tfheclientkey_generate: (a: number) => [number, number, number];
|
|
5010
|
-
readonly tfheclientkey_generate_with_seed: (a: number, b: any) => [number, number, number];
|
|
5011
|
-
readonly tfheclientkey_safe_deserialize: (a: number, b: number, c: bigint) => [number, number, number];
|
|
5012
|
-
readonly tfheclientkey_safe_serialize: (a: number, b: bigint) => [number, number, number, number];
|
|
5013
|
-
readonly tfheclientkey_serialize: (a: number) => [number, number, number, number];
|
|
5014
|
-
readonly tfhecompactpublickey_deserialize: (a: number, b: number) => [number, number, number];
|
|
5015
|
-
readonly tfhecompactpublickey_new: (a: number) => [number, number, number];
|
|
5016
|
-
readonly tfhecompactpublickey_safe_deserialize: (a: number, b: number, c: bigint) => [number, number, number];
|
|
5017
|
-
readonly tfhecompactpublickey_safe_deserialize_conformant: (a: number, b: number, c: bigint, d: number) => [number, number, number];
|
|
5018
|
-
readonly tfhecompactpublickey_safe_serialize: (a: number, b: bigint) => [number, number, number, number];
|
|
5019
|
-
readonly tfhecompactpublickey_serialize: (a: number) => [number, number, number, number];
|
|
5020
|
-
readonly tfhecompressedcompactpublickey_decompress: (a: number) => [number, number, number];
|
|
5021
|
-
readonly tfhecompressedcompactpublickey_deserialize: (a: number, b: number) => [number, number, number];
|
|
5022
|
-
readonly tfhecompressedcompactpublickey_new: (a: number) => [number, number, number];
|
|
5023
|
-
readonly tfhecompressedcompactpublickey_safe_deserialize: (a: number, b: number, c: bigint) => [number, number, number];
|
|
5024
|
-
readonly tfhecompressedcompactpublickey_safe_deserialize_conformant: (a: number, b: number, c: bigint, d: number) => [number, number, number];
|
|
5025
|
-
readonly tfhecompressedcompactpublickey_safe_serialize: (a: number, b: bigint) => [number, number, number, number];
|
|
5026
|
-
readonly tfhecompressedcompactpublickey_serialize: (a: number) => [number, number, number, number];
|
|
5027
|
-
readonly tfhecompressedpublickey_decompress: (a: number) => [number, number, number];
|
|
5028
|
-
readonly tfhecompressedpublickey_deserialize: (a: number, b: number) => [number, number, number];
|
|
5029
|
-
readonly tfhecompressedpublickey_new: (a: number) => [number, number, number];
|
|
5030
|
-
readonly tfhecompressedpublickey_safe_deserialize: (a: number, b: number, c: bigint) => [number, number, number];
|
|
5031
|
-
readonly tfhecompressedpublickey_safe_serialize: (a: number, b: bigint) => [number, number, number, number];
|
|
5032
|
-
readonly tfhecompressedpublickey_serialize: (a: number) => [number, number, number, number];
|
|
5033
|
-
readonly tfhecompressedserverkey_deserialize: (a: number, b: number) => [number, number, number];
|
|
5034
|
-
readonly tfhecompressedserverkey_new: (a: number) => [number, number, number];
|
|
5035
|
-
readonly tfhecompressedserverkey_safe_deserialize: (a: number, b: number, c: bigint) => [number, number, number];
|
|
5036
|
-
readonly tfhecompressedserverkey_safe_serialize: (a: number, b: bigint) => [number, number, number, number];
|
|
5037
|
-
readonly tfhecompressedserverkey_serialize: (a: number) => [number, number, number, number];
|
|
5038
5084
|
readonly tfheconfigbuilder_build: (a: number) => number;
|
|
5039
5085
|
readonly tfheconfigbuilder_default: () => number;
|
|
5040
5086
|
readonly tfheconfigbuilder_use_custom_parameters: (a: number, b: number) => number;
|
|
5041
5087
|
readonly tfheconfigbuilder_use_dedicated_compact_public_key_parameters: (a: number, b: number) => number;
|
|
5042
5088
|
readonly tfheconfigbuilder_with_custom_parameters: (a: number) => number;
|
|
5043
|
-
readonly tfhepublickey_deserialize: (a: number, b: number) => [number, number, number];
|
|
5044
|
-
readonly tfhepublickey_new: (a: number) => [number, number, number];
|
|
5045
|
-
readonly tfhepublickey_safe_deserialize: (a: number, b: number, c: bigint) => [number, number, number];
|
|
5046
|
-
readonly tfhepublickey_safe_serialize: (a: number, b: bigint) => [number, number, number, number];
|
|
5047
|
-
readonly tfhepublickey_serialize: (a: number) => [number, number, number, number];
|
|
5048
|
-
readonly tfheserverkey_new: (a: number) => [number, number, number];
|
|
5049
5089
|
readonly provencompactciphertextlist_len: (a: number) => number;
|
|
5050
5090
|
readonly provencompactciphertextlist_is_empty: (a: number) => number;
|
|
5051
5091
|
readonly shortintparameters_lwe_noise_distribution: (a: number) => number;
|
|
5052
|
-
readonly __wbg_boolean_free: (a: number, b: number) => void;
|
|
5053
|
-
readonly __wbg_booleanciphertext_free: (a: number, b: number) => void;
|
|
5054
|
-
readonly __wbg_booleanclientkey_free: (a: number, b: number) => void;
|
|
5055
|
-
readonly __wbg_booleancompressedciphertext_free: (a: number, b: number) => void;
|
|
5056
|
-
readonly __wbg_booleancompressedserverkey_free: (a: number, b: number) => void;
|
|
5057
|
-
readonly __wbg_booleannoisedistribution_free: (a: number, b: number) => void;
|
|
5058
|
-
readonly __wbg_booleanparameters_free: (a: number, b: number) => void;
|
|
5059
|
-
readonly __wbg_booleanpublickey_free: (a: number, b: number) => void;
|
|
5060
|
-
readonly __wbg_compactpkecrs_free: (a: number, b: number) => void;
|
|
5061
|
-
readonly boolean_decompress_ciphertext: (a: number) => number;
|
|
5062
|
-
readonly boolean_decrypt: (a: number, b: number) => number;
|
|
5063
|
-
readonly boolean_deserialize_ciphertext: (a: number, b: number) => [number, number, number];
|
|
5064
|
-
readonly boolean_deserialize_client_key: (a: number, b: number) => [number, number, number];
|
|
5065
|
-
readonly boolean_deserialize_compressed_ciphertext: (a: number, b: number) => [number, number, number];
|
|
5066
|
-
readonly boolean_deserialize_compressed_server_key: (a: number, b: number) => [number, number, number];
|
|
5067
|
-
readonly boolean_deserialize_public_key: (a: number, b: number) => [number, number, number];
|
|
5068
|
-
readonly boolean_encrypt: (a: number, b: number) => number;
|
|
5069
|
-
readonly boolean_encrypt_compressed: (a: number, b: number) => number;
|
|
5070
|
-
readonly boolean_encrypt_with_public_key: (a: number, b: number) => number;
|
|
5071
|
-
readonly boolean_get_parameters: (a: number) => [number, number, number];
|
|
5072
|
-
readonly boolean_new_client_key: (a: number) => number;
|
|
5073
|
-
readonly boolean_new_client_key_from_seed_and_parameters: (a: bigint, b: bigint, c: number) => number;
|
|
5074
|
-
readonly boolean_new_compressed_server_key: (a: number) => number;
|
|
5075
|
-
readonly boolean_new_gaussian_from_std_dev: (a: number) => number;
|
|
5076
|
-
readonly boolean_new_parameters: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number) => number;
|
|
5077
|
-
readonly boolean_new_public_key: (a: number) => number;
|
|
5078
|
-
readonly boolean_serialize_ciphertext: (a: number) => [number, number, number, number];
|
|
5079
|
-
readonly boolean_serialize_client_key: (a: number) => [number, number, number, number];
|
|
5080
|
-
readonly boolean_serialize_compressed_ciphertext: (a: number) => [number, number, number, number];
|
|
5081
|
-
readonly boolean_serialize_compressed_server_key: (a: number) => [number, number, number, number];
|
|
5082
|
-
readonly boolean_serialize_public_key: (a: number) => [number, number, number, number];
|
|
5083
|
-
readonly boolean_trivial_encrypt: (a: number) => number;
|
|
5084
|
-
readonly boolean_try_new_t_uniform: (a: number) => [number, number, number];
|
|
5085
|
-
readonly compactpkecrs_deserialize: (a: number, b: number) => [number, number, number];
|
|
5086
|
-
readonly compactpkecrs_deserialize_from_public_params: (a: number, b: number) => [number, number, number];
|
|
5087
|
-
readonly compactpkecrs_from_config: (a: number, b: number) => [number, number, number];
|
|
5088
|
-
readonly compactpkecrs_safe_deserialize: (a: number, b: number, c: bigint) => [number, number, number];
|
|
5089
|
-
readonly compactpkecrs_safe_deserialize_from_public_params: (a: number, b: number, c: bigint) => [number, number, number];
|
|
5090
|
-
readonly compactpkecrs_safe_serialize: (a: number, b: bigint) => [number, number, number, number];
|
|
5091
|
-
readonly compactpkecrs_serialize: (a: number, b: number) => [number, number, number, number];
|
|
5092
5092
|
readonly __wbg_tfhe_free: (a: number, b: number) => void;
|
|
5093
5093
|
readonly __wbg_wbg_rayon_poolbuilder_free: (a: number, b: number) => void;
|
|
5094
5094
|
readonly wbg_rayon_poolbuilder_build: (a: number) => void;
|
|
@@ -5159,6 +5159,9 @@ export type WasmAssetLoadMode =
|
|
|
5159
5159
|
export function setWorkerUrlConfig(parameters?: {
|
|
5160
5160
|
readonly workerUrl?: URL | undefined;
|
|
5161
5161
|
readonly wasmAssetLoadMode?: WasmAssetLoadMode | undefined;
|
|
5162
|
+
// Required: the SDK injects the resolved runtime kind (browser vs Node); the
|
|
5163
|
+
// worker bootstrap no longer detects it itself.
|
|
5164
|
+
readonly isBrowserLike: boolean;
|
|
5162
5165
|
readonly logger?:
|
|
5163
5166
|
| {
|
|
5164
5167
|
debug: (message: string) => void;
|
package/core/_version.ts
CHANGED
package/core/base/bytes.ts
CHANGED
|
@@ -37,6 +37,7 @@ import { is0x, isNo0x, remove0x } from './string.js';
|
|
|
37
37
|
import { InvalidPropertyError } from './errors/InvalidPropertyError.js';
|
|
38
38
|
import { InvalidTypeError } from './errors/InvalidTypeError.js';
|
|
39
39
|
import { isUintForByteLength } from './uint.js';
|
|
40
|
+
import { Sha256VerificationError } from './errors/Sha256VerificationError.js';
|
|
40
41
|
|
|
41
42
|
////////////////////////////////////////////////////////////////////////////////
|
|
42
43
|
|
|
@@ -1446,7 +1447,7 @@ export async function verifySha256(
|
|
|
1446
1447
|
|
|
1447
1448
|
if (actual !== expected) {
|
|
1448
1449
|
const subject = options?.subject ?? 'bytes';
|
|
1449
|
-
throw new
|
|
1450
|
+
throw new Sha256VerificationError({ subject, expected, actual }, {});
|
|
1450
1451
|
}
|
|
1451
1452
|
}
|
|
1452
1453
|
|
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* JS-runtime environment detection and capability probes.
|
|
3
|
+
*
|
|
4
|
+
* Everything in this file answers one of two questions about the host
|
|
5
|
+
* environment the SDK happens to be running in:
|
|
6
|
+
*
|
|
7
|
+
* - *Which* runtime is this? — {@link isNodeLike}, {@link isBrowserLike}
|
|
8
|
+
* - *What* does it support? — {@link getNodeBuffer}
|
|
9
|
+
*
|
|
10
|
+
* Detection is intentionally capability-leaning rather than UA-based: edge
|
|
11
|
+
* runtimes (Vercel Edge, Cloudflare Workers, Next.js edge) are neither Node nor
|
|
12
|
+
* browser, so probes return the safe answer (`false` / `undefined`) and callers
|
|
13
|
+
* fall back to web-standard APIs.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
export function isNodeLike(): boolean {
|
|
17
|
+
return (
|
|
18
|
+
// eslint-disable-next-line no-restricted-globals
|
|
19
|
+
typeof process !== 'undefined' &&
|
|
20
|
+
// eslint-disable-next-line no-restricted-globals, @typescript-eslint/no-unnecessary-condition
|
|
21
|
+
typeof process.versions?.node === 'string'
|
|
22
|
+
);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export function isBrowserLike(): boolean {
|
|
26
|
+
return (
|
|
27
|
+
// @ts-expect-error - Bun is a runtime global only under Bun
|
|
28
|
+
typeof Bun === 'undefined' &&
|
|
29
|
+
!isNodeLike() &&
|
|
30
|
+
typeof location !== 'undefined' &&
|
|
31
|
+
typeof location.href === 'string' &&
|
|
32
|
+
typeof addEventListener === 'function' &&
|
|
33
|
+
typeof removeEventListener === 'function'
|
|
34
|
+
);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Imports a Node built-in module by name, returning `undefined` when it isn't
|
|
39
|
+
* importable (browsers, and edge runtimes: Vercel Edge, Cloudflare Workers,
|
|
40
|
+
* Next.js edge). The id is built indirectly so bundlers don't statically
|
|
41
|
+
* resolve/polyfill the module (a polyfill would bloat browser bundles).
|
|
42
|
+
*
|
|
43
|
+
* Every major bundler must be told NOT to analyze this computed dynamic import,
|
|
44
|
+
* each via its own magic comment, or it errors at build/runtime:
|
|
45
|
+
* - `@vite-ignore` — Vite.
|
|
46
|
+
* - `webpackIgnore` — webpack.
|
|
47
|
+
* - `turbopackIgnore` — Turbopack (Next.js). Without it, Turbopack can't analyze
|
|
48
|
+
* the parameter-derived specifier, can't bundle a `node:` builtin as a
|
|
49
|
+
* candidate, and replaces the call with a stub that throws
|
|
50
|
+
* `Cannot find module 'unknown'` — which silently disabled the Node
|
|
51
|
+
* `worker_threads` backend (→ single-threaded TFHE) in Next server components.
|
|
52
|
+
*
|
|
53
|
+
* Each comment instructs its bundler to emit a plain native `import()` that the
|
|
54
|
+
* runtime resolves; in the browser that throws and is caught below (→ undefined).
|
|
55
|
+
* Each capability accessor below wraps this and memoizes its result.
|
|
56
|
+
*/
|
|
57
|
+
async function _importNodeModule<mod>(name: string): Promise<mod | undefined> {
|
|
58
|
+
try {
|
|
59
|
+
const id = `node:${name}`;
|
|
60
|
+
return (await import(/* @vite-ignore */ /* webpackIgnore: true */ /* turbopackIgnore: true */ id)) as mod;
|
|
61
|
+
} catch {
|
|
62
|
+
return undefined;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
type NodeBuffer = { from(str: string, encoding: string): BufferSource };
|
|
67
|
+
|
|
68
|
+
let _nodeBufferPromise: Promise<NodeBuffer | undefined> | undefined;
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Resolves Node's `Buffer` if `node:buffer` is importable, else `undefined`.
|
|
72
|
+
*
|
|
73
|
+
* Memoized — the answer can't change within a process lifetime. Returns the
|
|
74
|
+
* `Buffer` reference (not a boolean) because `Buffer` is not a global: the
|
|
75
|
+
* caller needs the actual constructor, so probing and use share one import.
|
|
76
|
+
*
|
|
77
|
+
* Returns `undefined` in non-Node runtimes that also lack `node:buffer`
|
|
78
|
+
* (browsers, and edge runtimes: Vercel Edge, Cloudflare Workers, Next.js edge).
|
|
79
|
+
*/
|
|
80
|
+
export function getNodeBuffer(): Promise<NodeBuffer | undefined> {
|
|
81
|
+
_nodeBufferPromise ??= (async () => {
|
|
82
|
+
const mod = await _importNodeModule<{ Buffer?: NodeBuffer }>('buffer');
|
|
83
|
+
return typeof mod?.Buffer?.from === 'function' ? mod.Buffer : undefined;
|
|
84
|
+
})();
|
|
85
|
+
return _nodeBufferPromise;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
// Node's `readFile` returns a `Buffer`, which extends `Uint8Array` but whose
|
|
89
|
+
// `.buffer` TS 5.7+ widens to `ArrayBufferLike` (includes `SharedArrayBuffer`),
|
|
90
|
+
// making it incompatible with `BufferSource`. At runtime a `Buffer` is always
|
|
91
|
+
// backed by an `ArrayBuffer`, so typing the result as `BufferSource` here is a
|
|
92
|
+
// safe cast that lets callers pass the bytes to `WebAssembly.compile` directly.
|
|
93
|
+
type NodeFs = {
|
|
94
|
+
readFile(path: string): Promise<BufferSource>;
|
|
95
|
+
access(path: string): Promise<void>;
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
let _nodeFsPromise: Promise<NodeFs | undefined> | undefined;
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Resolves Node's `fs/promises` (`readFile`, `access`) if importable, else
|
|
102
|
+
* `undefined` (browsers and edge runtimes). Memoized. See {@link getNodeBuffer}
|
|
103
|
+
* for why this returns the module reference rather than a boolean.
|
|
104
|
+
*/
|
|
105
|
+
export function getNodeFs(): Promise<NodeFs | undefined> {
|
|
106
|
+
_nodeFsPromise ??= (async () => {
|
|
107
|
+
const mod = await _importNodeModule<NodeFs>('fs/promises');
|
|
108
|
+
return typeof mod?.readFile === 'function' ? mod : undefined;
|
|
109
|
+
})();
|
|
110
|
+
return _nodeFsPromise;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
type NodeUrl = { fileURLToPath(url: URL | string): string };
|
|
114
|
+
|
|
115
|
+
let _nodeUrlPromise: Promise<NodeUrl | undefined> | undefined;
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* Resolves Node's `url` (`fileURLToPath`) if importable, else `undefined`
|
|
119
|
+
* (browsers and edge runtimes). Memoized. See {@link getNodeBuffer} for why
|
|
120
|
+
* this returns the module reference rather than a boolean.
|
|
121
|
+
*/
|
|
122
|
+
export function getNodeUrl(): Promise<NodeUrl | undefined> {
|
|
123
|
+
_nodeUrlPromise ??= (async () => {
|
|
124
|
+
const mod = await _importNodeModule<NodeUrl>('url');
|
|
125
|
+
return typeof mod?.fileURLToPath === 'function' ? mod : undefined;
|
|
126
|
+
})();
|
|
127
|
+
return _nodeUrlPromise;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* Returns whether the Web Worker API is available (browsers, Deno, and other
|
|
132
|
+
* web-standard runtimes). Synchronous — checks for the required globals only.
|
|
133
|
+
*/
|
|
134
|
+
export function supportsWebWorkerApi(): boolean {
|
|
135
|
+
return (
|
|
136
|
+
typeof Worker === 'function' &&
|
|
137
|
+
typeof Blob === 'function' &&
|
|
138
|
+
typeof URL !== 'undefined' &&
|
|
139
|
+
typeof URL.createObjectURL === 'function'
|
|
140
|
+
);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
let _decompressionStreamSupported: boolean | undefined;
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* Returns whether `DecompressionStream` is actually *usable* (plus the `Blob`
|
|
147
|
+
* pipeline it feeds). Needed to inflate compressed embedded WASM.
|
|
148
|
+
*
|
|
149
|
+
* A `typeof` presence check is insufficient: some runtimes — notably the Next.js
|
|
150
|
+
* Edge Runtime — expose `DecompressionStream` as a global **stub that throws on
|
|
151
|
+
* construction**, so presence is a false positive that crashes later inside the
|
|
152
|
+
* compile path. We therefore *construct* one (synchronous, cheap) and memoize the
|
|
153
|
+
* result (support can't change within a process lifetime).
|
|
154
|
+
*
|
|
155
|
+
* Returns `false` on older browsers (Firefox <113, Safari <16.4) and edge runtimes,
|
|
156
|
+
* so callers fall back (uncompressed / URL-based / JS-inflate WASM loading).
|
|
157
|
+
*/
|
|
158
|
+
export function supportsDecompressionStream(): boolean {
|
|
159
|
+
if (_decompressionStreamSupported === undefined) {
|
|
160
|
+
if (typeof DecompressionStream !== 'function' || typeof Blob !== 'function') {
|
|
161
|
+
_decompressionStreamSupported = false;
|
|
162
|
+
} else {
|
|
163
|
+
try {
|
|
164
|
+
// Construction is the probe — the Next.js Edge stub throws here; a real
|
|
165
|
+
// implementation does not. Assigned (not bare `new`) so it reads as a value
|
|
166
|
+
// probe, and discarded.
|
|
167
|
+
const probe = new DecompressionStream('gzip');
|
|
168
|
+
void probe;
|
|
169
|
+
_decompressionStreamSupported = true;
|
|
170
|
+
} catch {
|
|
171
|
+
_decompressionStreamSupported = false;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
return _decompressionStreamSupported;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
/** Message envelope exchanged with a Node `worker_threads` worker. */
|
|
179
|
+
export interface MessageData {
|
|
180
|
+
type: string;
|
|
181
|
+
[key: string]: unknown;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
/** Shape of a Node `worker_threads` worker instance the SDK relies on. */
|
|
185
|
+
export interface NodeMessagePort {
|
|
186
|
+
on(event: 'error', listener: (error: Error) => void): void;
|
|
187
|
+
on(event: 'exit', listener: (code: number) => void): void;
|
|
188
|
+
on(event: string, listener: (data: MessageData) => void): void;
|
|
189
|
+
off(event: string, listener: (data: MessageData) => void): void;
|
|
190
|
+
postMessage(value: unknown): void;
|
|
191
|
+
terminate(): Promise<number>;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
type NodeWorkerConstructor = new (code: string | URL, options?: Record<string, unknown>) => NodeMessagePort;
|
|
195
|
+
|
|
196
|
+
let _nodeWorkerPromise: Promise<NodeWorkerConstructor | undefined> | undefined;
|
|
197
|
+
|
|
198
|
+
/**
|
|
199
|
+
* Resolves Node's `worker_threads` `Worker` constructor if importable, else
|
|
200
|
+
* `undefined` (browser, sandboxed Electron renderer, edge runtimes). Memoized.
|
|
201
|
+
* See {@link getNodeBuffer} for why this returns the constructor rather than a
|
|
202
|
+
* boolean.
|
|
203
|
+
*/
|
|
204
|
+
export function getNodeWorker(): Promise<NodeWorkerConstructor | undefined> {
|
|
205
|
+
_nodeWorkerPromise ??= (async () => {
|
|
206
|
+
const mod = await _importNodeModule<{ Worker?: NodeWorkerConstructor }>('worker_threads');
|
|
207
|
+
return typeof mod?.Worker === 'function' ? mod.Worker : undefined;
|
|
208
|
+
})();
|
|
209
|
+
return _nodeWorkerPromise;
|
|
210
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { ErrorMetadataParams } from './ErrorBase.js';
|
|
2
|
+
import { ErrorBase } from './ErrorBase.js';
|
|
3
|
+
|
|
4
|
+
export type Sha256VerificationErrorType = Sha256VerificationError & {
|
|
5
|
+
name: 'Sha256VerificationError';
|
|
6
|
+
};
|
|
7
|
+
|
|
8
|
+
export type Sha256VerificationErrorParams = Readonly<{
|
|
9
|
+
subject: string;
|
|
10
|
+
expected: string;
|
|
11
|
+
actual: string;
|
|
12
|
+
}>;
|
|
13
|
+
|
|
14
|
+
export class Sha256VerificationError extends ErrorBase {
|
|
15
|
+
constructor(params: Sha256VerificationErrorParams, options: ErrorMetadataParams) {
|
|
16
|
+
super({
|
|
17
|
+
...options,
|
|
18
|
+
message: `SHA-256 mismatch for ${params.subject}: expected ${params.expected}, got ${params.actual}`,
|
|
19
|
+
name: 'Sha256VerificationError',
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
}
|