@primuslabs/fhetransform-sdk 0.4.0
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/README.md +198 -0
- package/dist/abis/acl.abi.d.ts +379 -0
- package/dist/abis/acl.abi.js +495 -0
- package/dist/abis/acl.abi.js.map +1 -0
- package/dist/abis/alphatrion_reward.abi.d.ts +407 -0
- package/dist/abis/alphatrion_reward.abi.js +532 -0
- package/dist/abis/alphatrion_reward.abi.js.map +1 -0
- package/dist/abis/ciphertext_digests.abi.d.ts +336 -0
- package/dist/abis/ciphertext_digests.abi.js +444 -0
- package/dist/abis/ciphertext_digests.abi.js.map +1 -0
- package/dist/abis/ciphertext_verification.abi.d.ts +637 -0
- package/dist/abis/ciphertext_verification.abi.js +830 -0
- package/dist/abis/ciphertext_verification.abi.js.map +1 -0
- package/dist/abis/convert_token.abi.d.ts +922 -0
- package/dist/abis/convert_token.abi.js +1208 -0
- package/dist/abis/convert_token.abi.js.map +1 -0
- package/dist/abis/decryption.abi.d.ts +956 -0
- package/dist/abis/decryption.abi.js +1244 -0
- package/dist/abis/decryption.abi.js.map +1 -0
- package/dist/abis/erc20.abi.d.ts +265 -0
- package/dist/abis/erc20.abi.js +350 -0
- package/dist/abis/erc20.abi.js.map +1 -0
- package/dist/abis/fhe_executor.abi.d.ts +1535 -0
- package/dist/abis/fhe_executor.abi.js +1962 -0
- package/dist/abis/fhe_executor.abi.js.map +1 -0
- package/dist/abis/space_bridge_config.abi.d.ts +792 -0
- package/dist/abis/space_bridge_config.abi.js +1032 -0
- package/dist/abis/space_bridge_config.abi.js.map +1 -0
- package/dist/abis/token.abi.d.ts +630 -0
- package/dist/abis/token.abi.js +828 -0
- package/dist/abis/token.abi.js.map +1 -0
- package/dist/cli/eusdc.d.ts +2 -0
- package/dist/cli/eusdc.js +41 -0
- package/dist/cli/eusdc.js.map +1 -0
- package/dist/contract/callbacks.d.ts +59 -0
- package/dist/contract/callbacks.js +2 -0
- package/dist/contract/callbacks.js.map +1 -0
- package/dist/contract/convert-token.d.ts +107 -0
- package/dist/contract/convert-token.js +249 -0
- package/dist/contract/convert-token.js.map +1 -0
- package/dist/contract/token.d.ts +167 -0
- package/dist/contract/token.js +404 -0
- package/dist/contract/token.js.map +1 -0
- package/dist/contract/transaction.d.ts +29 -0
- package/dist/contract/transaction.js +2 -0
- package/dist/contract/transaction.js.map +1 -0
- package/dist/core/address.d.ts +118 -0
- package/dist/core/address.js +200 -0
- package/dist/core/address.js.map +1 -0
- package/dist/core/auth.d.ts +68 -0
- package/dist/core/auth.js +58 -0
- package/dist/core/auth.js.map +1 -0
- package/dist/core/bytes.d.ts +48 -0
- package/dist/core/bytes.js +117 -0
- package/dist/core/bytes.js.map +1 -0
- package/dist/core/cache-manager.d.ts +138 -0
- package/dist/core/cache-manager.js +440 -0
- package/dist/core/cache-manager.js.map +1 -0
- package/dist/core/chain.d.ts +41 -0
- package/dist/core/chain.js +59 -0
- package/dist/core/chain.js.map +1 -0
- package/dist/core/constants.d.ts +24 -0
- package/dist/core/constants.js +25 -0
- package/dist/core/constants.js.map +1 -0
- package/dist/core/error.d.ts +2 -0
- package/dist/core/error.js +14 -0
- package/dist/core/error.js.map +1 -0
- package/dist/core/errors/error-catalog.d.ts +29 -0
- package/dist/core/errors/error-catalog.js +84 -0
- package/dist/core/errors/error-catalog.js.map +1 -0
- package/dist/core/errors/error-codes.d.ts +52 -0
- package/dist/core/errors/error-codes.js +61 -0
- package/dist/core/errors/error-codes.js.map +1 -0
- package/dist/core/errors/error-utils.d.ts +27 -0
- package/dist/core/errors/error-utils.js +110 -0
- package/dist/core/errors/error-utils.js.map +1 -0
- package/dist/core/errors/fhe-error.d.ts +98 -0
- package/dist/core/errors/fhe-error.js +190 -0
- package/dist/core/errors/fhe-error.js.map +1 -0
- package/dist/core/errors/index.d.ts +4 -0
- package/dist/core/errors/index.js +5 -0
- package/dist/core/errors/index.js.map +1 -0
- package/dist/core/estimate.d.ts +39 -0
- package/dist/core/estimate.js +111 -0
- package/dist/core/estimate.js.map +1 -0
- package/dist/core/event.d.ts +212 -0
- package/dist/core/event.js +42 -0
- package/dist/core/event.js.map +1 -0
- package/dist/core/fhe-type.d.ts +75 -0
- package/dist/core/fhe-type.js +115 -0
- package/dist/core/fhe-type.js.map +1 -0
- package/dist/core/fhe.d.ts +11 -0
- package/dist/core/fhe.js +23 -0
- package/dist/core/fhe.js.map +1 -0
- package/dist/core/handle.d.ts +42 -0
- package/dist/core/handle.js +99 -0
- package/dist/core/handle.js.map +1 -0
- package/dist/core/json-utils.d.ts +18 -0
- package/dist/core/json-utils.js +37 -0
- package/dist/core/json-utils.js.map +1 -0
- package/dist/core/kms.d.ts +42 -0
- package/dist/core/kms.js +70 -0
- package/dist/core/kms.js.map +1 -0
- package/dist/core/logger.d.ts +3 -0
- package/dist/core/logger.js +11 -0
- package/dist/core/logger.js.map +1 -0
- package/dist/core/pretty-print.d.ts +18 -0
- package/dist/core/pretty-print.js +84 -0
- package/dist/core/pretty-print.js.map +1 -0
- package/dist/core/primitives.d.ts +22 -0
- package/dist/core/primitives.js +2 -0
- package/dist/core/primitives.js.map +1 -0
- package/dist/core/retryable-handler.d.ts +74 -0
- package/dist/core/retryable-handler.js +227 -0
- package/dist/core/retryable-handler.js.map +1 -0
- package/dist/core/signer-address-info.d.ts +15 -0
- package/dist/core/signer-address-info.js +33 -0
- package/dist/core/signer-address-info.js.map +1 -0
- package/dist/core/string.d.ts +28 -0
- package/dist/core/string.js +33 -0
- package/dist/core/string.js.map +1 -0
- package/dist/core/swallow.d.ts +23 -0
- package/dist/core/swallow.js +37 -0
- package/dist/core/swallow.js.map +1 -0
- package/dist/core/system-contract-info.d.ts +17 -0
- package/dist/core/system-contract-info.js +41 -0
- package/dist/core/system-contract-info.js.map +1 -0
- package/dist/core/ttl-cache.d.ts +81 -0
- package/dist/core/ttl-cache.js +113 -0
- package/dist/core/ttl-cache.js.map +1 -0
- package/dist/core/tx-error-parser.d.ts +40 -0
- package/dist/core/tx-error-parser.js +83 -0
- package/dist/core/tx-error-parser.js.map +1 -0
- package/dist/core/utils.d.ts +62 -0
- package/dist/core/utils.js +143 -0
- package/dist/core/utils.js.map +1 -0
- package/dist/index.d.ts +40 -0
- package/dist/index.js +48 -0
- package/dist/index.js.map +1 -0
- package/dist/jazz/encrypt-key-p.d.ts +65 -0
- package/dist/jazz/encrypt-key-p.js +283 -0
- package/dist/jazz/encrypt-key-p.js.map +1 -0
- package/dist/jazz/encrypt-p.d.ts +82 -0
- package/dist/jazz/encrypt-p.js +139 -0
- package/dist/jazz/encrypt-p.js.map +1 -0
- package/dist/jazz/encrypt.d.ts +58 -0
- package/dist/jazz/encrypt.js +155 -0
- package/dist/jazz/encrypt.js.map +1 -0
- package/dist/jazz/input-proof-p.d.ts +122 -0
- package/dist/jazz/input-proof-p.js +265 -0
- package/dist/jazz/input-proof-p.js.map +1 -0
- package/dist/jazz/jazz-client-i.d.ts +16 -0
- package/dist/jazz/jazz-client-i.js +2 -0
- package/dist/jazz/jazz-client-i.js.map +1 -0
- package/dist/jazz/jazz-client.d.ts +18 -0
- package/dist/jazz/jazz-client.js +24 -0
- package/dist/jazz/jazz-client.js.map +1 -0
- package/dist/jazz/key-pair.d.ts +50 -0
- package/dist/jazz/key-pair.js +166 -0
- package/dist/jazz/key-pair.js.map +1 -0
- package/dist/jazz/mock/fake.d.ts +3 -0
- package/dist/jazz/mock/fake.js +23 -0
- package/dist/jazz/mock/fake.js.map +1 -0
- package/dist/jazz/mock/fetch-input-proof.d.ts +4 -0
- package/dist/jazz/mock/fetch-input-proof.js +63 -0
- package/dist/jazz/mock/fetch-input-proof.js.map +1 -0
- package/dist/jazz/mock/fetch-key-url.d.ts +3 -0
- package/dist/jazz/mock/fetch-key-url.js +15 -0
- package/dist/jazz/mock/fetch-key-url.js.map +1 -0
- package/dist/jazz/mock/fetch-public-decrypt.d.ts +3 -0
- package/dist/jazz/mock/fetch-public-decrypt.js +81 -0
- package/dist/jazz/mock/fetch-public-decrypt.js.map +1 -0
- package/dist/jazz/mock/fetch-user-decrypt.d.ts +4 -0
- package/dist/jazz/mock/fetch-user-decrypt.js +174 -0
- package/dist/jazz/mock/fetch-user-decrypt.js.map +1 -0
- package/dist/jazz/module/fetch-input-proof.d.ts +19 -0
- package/dist/jazz/module/fetch-input-proof.js +72 -0
- package/dist/jazz/module/fetch-input-proof.js.map +1 -0
- package/dist/jazz/module/fetch-key-url.d.ts +17 -0
- package/dist/jazz/module/fetch-key-url.js +46 -0
- package/dist/jazz/module/fetch-key-url.js.map +1 -0
- package/dist/jazz/module/fetch-public-decrypt.d.ts +19 -0
- package/dist/jazz/module/fetch-public-decrypt.js +65 -0
- package/dist/jazz/module/fetch-public-decrypt.js.map +1 -0
- package/dist/jazz/module/fetch-user-decrypt.d.ts +19 -0
- package/dist/jazz/module/fetch-user-decrypt.js +109 -0
- package/dist/jazz/module/fetch-user-decrypt.js.map +1 -0
- package/dist/jazz/module/jazz-async-request.d.ts +102 -0
- package/dist/jazz/module/jazz-async-request.js +515 -0
- package/dist/jazz/module/jazz-async-request.js.map +1 -0
- package/dist/jazz/module/jazz-p.d.ts +61 -0
- package/dist/jazz/module/jazz-p.js +33 -0
- package/dist/jazz/module/jazz-p.js.map +1 -0
- package/dist/jazz/module/s3-download.d.ts +85 -0
- package/dist/jazz/module/s3-download.js +293 -0
- package/dist/jazz/module/s3-download.js.map +1 -0
- package/dist/jazz/permit.d.ts +200 -0
- package/dist/jazz/permit.js +319 -0
- package/dist/jazz/permit.js.map +1 -0
- package/dist/jazz/public-decrypt-p.d.ts +96 -0
- package/dist/jazz/public-decrypt-p.js +258 -0
- package/dist/jazz/public-decrypt-p.js.map +1 -0
- package/dist/jazz/public-decrypt.d.ts +48 -0
- package/dist/jazz/public-decrypt.js +156 -0
- package/dist/jazz/public-decrypt.js.map +1 -0
- package/dist/jazz/read-contract.d.ts +81 -0
- package/dist/jazz/read-contract.js +125 -0
- package/dist/jazz/read-contract.js.map +1 -0
- package/dist/jazz/types/common.d.ts +17 -0
- package/dist/jazz/types/common.js +2 -0
- package/dist/jazz/types/common.js.map +1 -0
- package/dist/jazz/types/input-proof.d.ts +76 -0
- package/dist/jazz/types/input-proof.js +2 -0
- package/dist/jazz/types/input-proof.js.map +1 -0
- package/dist/jazz/types/key-url.d.ts +68 -0
- package/dist/jazz/types/key-url.js +5 -0
- package/dist/jazz/types/key-url.js.map +1 -0
- package/dist/jazz/types/public-decrypt.d.ts +61 -0
- package/dist/jazz/types/public-decrypt.js +2 -0
- package/dist/jazz/types/public-decrypt.js.map +1 -0
- package/dist/jazz/types/user-decrypt.d.ts +123 -0
- package/dist/jazz/types/user-decrypt.js +2 -0
- package/dist/jazz/types/user-decrypt.js.map +1 -0
- package/dist/jazz/user-decrypt-p.d.ts +111 -0
- package/dist/jazz/user-decrypt-p.js +280 -0
- package/dist/jazz/user-decrypt-p.js.map +1 -0
- package/dist/jazz/user-decrypt.d.ts +74 -0
- package/dist/jazz/user-decrypt.js +143 -0
- package/dist/jazz/user-decrypt.js.map +1 -0
- package/dist/native/fhe-api.js +5959 -0
- package/dist/native/fhe-api.node.cjs +6167 -0
- package/dist/native/fhe-api.node.worker.cjs +210 -0
- package/dist/native/fhe-api.wasm +0 -0
- package/dist/native/fhe-api.worker.js +164 -0
- package/dist/native/kms/node/kms_lib.d.ts +38 -0
- package/dist/native/kms/node/kms_lib.js +356 -0
- package/dist/native/kms/node/kms_lib_bg.wasm +0 -0
- package/dist/native/kms/node/kms_lib_bg.wasm.d.ts +21 -0
- package/dist/native/kms/node/package.json +11 -0
- package/dist/native/kms/web/kms_lib.d.ts +84 -0
- package/dist/native/kms/web/kms_lib.js +443 -0
- package/dist/native/kms/web/kms_lib_bg.wasm +0 -0
- package/dist/native/kms/web/kms_lib_bg.wasm.d.ts +21 -0
- package/dist/native/kms/web/package.json +15 -0
- package/dist/runtime/browser.d.ts +36 -0
- package/dist/runtime/browser.js +115 -0
- package/dist/runtime/browser.js.map +1 -0
- package/dist/runtime/node.d.ts +30 -0
- package/dist/runtime/node.js +95 -0
- package/dist/runtime/node.js.map +1 -0
- package/dist/sdk/fhetransform-sdk-b.d.ts +102 -0
- package/dist/sdk/fhetransform-sdk-b.js +294 -0
- package/dist/sdk/fhetransform-sdk-b.js.map +1 -0
- package/dist/sdk/fhetransform-sdk.d.ts +87 -0
- package/dist/sdk/fhetransform-sdk.js +135 -0
- package/dist/sdk/fhetransform-sdk.js.map +1 -0
- package/dist/sdk/jazz-service.d.ts +13 -0
- package/dist/sdk/jazz-service.js +58 -0
- package/dist/sdk/jazz-service.js.map +1 -0
- package/dist/sdk/permit-service.d.ts +45 -0
- package/dist/sdk/permit-service.js +144 -0
- package/dist/sdk/permit-service.js.map +1 -0
- package/dist/wasm/fhe-wasm-client.d.ts +19 -0
- package/dist/wasm/fhe-wasm-client.js +23 -0
- package/dist/wasm/fhe-wasm-client.js.map +1 -0
- package/dist/wasm/fhe-wasm-module.d.ts +24 -0
- package/dist/wasm/fhe-wasm-module.js +141 -0
- package/dist/wasm/fhe-wasm-module.js.map +1 -0
- package/dist/wasm/fhe-wasm-type.d.ts +59 -0
- package/dist/wasm/fhe-wasm-type.js +244 -0
- package/dist/wasm/fhe-wasm-type.js.map +1 -0
- package/dist/wasm/wasm-loader.browser.d.ts +21 -0
- package/dist/wasm/wasm-loader.browser.js +143 -0
- package/dist/wasm/wasm-loader.browser.js.map +1 -0
- package/dist/wasm/wasm-loader.node.d.ts +24 -0
- package/dist/wasm/wasm-loader.node.js +114 -0
- package/dist/wasm/wasm-loader.node.js.map +1 -0
- package/dist/wasm/worker-client.browser.d.ts +6 -0
- package/dist/wasm/worker-client.browser.js +21 -0
- package/dist/wasm/worker-client.browser.js.map +1 -0
- package/dist/wasm/worker-client.d.ts +34 -0
- package/dist/wasm/worker-client.js +160 -0
- package/dist/wasm/worker-client.js.map +1 -0
- package/dist/wasm/worker-client.node.d.ts +6 -0
- package/dist/wasm/worker-client.node.js +20 -0
- package/dist/wasm/worker-client.node.js.map +1 -0
- package/dist/wasm/worker-message.d.ts +61 -0
- package/dist/wasm/worker-message.js +2 -0
- package/dist/wasm/worker-message.js.map +1 -0
- package/dist/wasm/worker-transport.browser.d.ts +15 -0
- package/dist/wasm/worker-transport.browser.js +35 -0
- package/dist/wasm/worker-transport.browser.js.map +1 -0
- package/dist/wasm/worker-transport.d.ts +6 -0
- package/dist/wasm/worker-transport.js +2 -0
- package/dist/wasm/worker-transport.js.map +1 -0
- package/dist/wasm/worker-transport.node.d.ts +17 -0
- package/dist/wasm/worker-transport.node.js +39 -0
- package/dist/wasm/worker-transport.node.js.map +1 -0
- package/dist/wasm/worker.d.ts +1 -0
- package/dist/wasm/worker.js +69 -0
- package/dist/wasm/worker.js.map +1 -0
- package/package.json +81 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { BrowserWorkerSideTransport, BrowserWorkerTransport } from "./worker-transport.browser.js";
|
|
2
|
+
import { FheWasmClientDirect, FheWasmClientViaWorker } from "./fhe-wasm-client.js";
|
|
3
|
+
import { WasmWorkerClient } from "./worker-client.js";
|
|
4
|
+
export function getWorkerTransport() {
|
|
5
|
+
return new BrowserWorkerSideTransport();
|
|
6
|
+
}
|
|
7
|
+
function getWasmClient() {
|
|
8
|
+
const worker = new Worker(new URL("./worker.js", import.meta.url), {
|
|
9
|
+
type: "module"
|
|
10
|
+
});
|
|
11
|
+
const client = new WasmWorkerClient(new BrowserWorkerTransport(worker));
|
|
12
|
+
return client;
|
|
13
|
+
}
|
|
14
|
+
export function createFheWasmClient(options) {
|
|
15
|
+
const useWorker = options?.useWorker ?? true;
|
|
16
|
+
if (useWorker) {
|
|
17
|
+
return new FheWasmClientViaWorker(getWasmClient());
|
|
18
|
+
}
|
|
19
|
+
return new FheWasmClientDirect();
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=worker-client.browser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker-client.browser.js","sourceRoot":"","sources":["../../src/wasm/worker-client.browser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACnG,OAAO,EAAiB,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAClG,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAItD,MAAM,UAAU,kBAAkB;IAChC,OAAO,IAAI,0BAA0B,EAAE,CAAC;AAC1C,CAAC;AAED,SAAS,aAAa;IACpB,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QACjE,IAAI,EAAE,QAAQ;KACf,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,IAAI,gBAAgB,CAAC,IAAI,sBAAsB,CAAC,MAAM,CAAC,CAAC,CAAC;IACxE,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAiC;IACnE,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,IAAI,CAAC;IAC7C,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,IAAI,sBAAsB,CAAC,aAAa,EAAE,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,IAAI,mBAAmB,EAAE,CAAC;AACnC,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { WorkerTransport } from "./worker-transport.js";
|
|
2
|
+
import { EncryptWithZkProofInputU8 } from "./fhe-wasm-client.js";
|
|
3
|
+
/**
|
|
4
|
+
* Client for managing WASM worker communication
|
|
5
|
+
*/
|
|
6
|
+
export declare class WasmWorkerClient {
|
|
7
|
+
private transport;
|
|
8
|
+
private pendingRequests;
|
|
9
|
+
private ready;
|
|
10
|
+
private readyPromise;
|
|
11
|
+
private resolveReady;
|
|
12
|
+
private readonly timeoutMs;
|
|
13
|
+
constructor(transport: WorkerTransport, timeoutMs?: number);
|
|
14
|
+
/**
|
|
15
|
+
* Handle incoming worker messages
|
|
16
|
+
*/
|
|
17
|
+
private handleMessage;
|
|
18
|
+
/**
|
|
19
|
+
* Handle worker transport errors
|
|
20
|
+
*/
|
|
21
|
+
private handleError;
|
|
22
|
+
/**
|
|
23
|
+
* Encrypt integers with zero-knowledge proof via worker
|
|
24
|
+
*/
|
|
25
|
+
encryptIntegerWithZkProof(args: EncryptWithZkProofInputU8): Promise<Uint8Array>;
|
|
26
|
+
/**
|
|
27
|
+
* Check if worker is ready
|
|
28
|
+
*/
|
|
29
|
+
isReady(): boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Clean up pending requests
|
|
32
|
+
*/
|
|
33
|
+
cleanup(): void;
|
|
34
|
+
}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import { logger } from '../core/logger.js';
|
|
2
|
+
import { FheErrorCode } from '../core/errors/error-codes.js';
|
|
3
|
+
import { FheError } from '../core/errors/fhe-error.js';
|
|
4
|
+
/**
|
|
5
|
+
* Generate unique request ID
|
|
6
|
+
*/
|
|
7
|
+
function getUUID() {
|
|
8
|
+
return `${Date.now()}_${Math.random().toString(36).substring(2, 11)}`;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Client for managing WASM worker communication
|
|
12
|
+
*/
|
|
13
|
+
export class WasmWorkerClient {
|
|
14
|
+
transport;
|
|
15
|
+
pendingRequests = new Map();
|
|
16
|
+
ready = false;
|
|
17
|
+
readyPromise;
|
|
18
|
+
resolveReady;
|
|
19
|
+
timeoutMs;
|
|
20
|
+
constructor(transport, timeoutMs = 30000) {
|
|
21
|
+
this.transport = transport;
|
|
22
|
+
this.timeoutMs = timeoutMs;
|
|
23
|
+
this.transport.onMessage(this.handleMessage.bind(this));
|
|
24
|
+
this.transport.onError(this.handleError.bind(this));
|
|
25
|
+
this.readyPromise = new Promise(resolve => {
|
|
26
|
+
this.resolveReady = resolve;
|
|
27
|
+
});
|
|
28
|
+
logger.debug('WasmWorkerClient created', { timeoutMs: this.timeoutMs });
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Handle incoming worker messages
|
|
32
|
+
*/
|
|
33
|
+
handleMessage(msg) {
|
|
34
|
+
try {
|
|
35
|
+
logger.debug('Worker message received', { cmd: msg.cmd, id: msg.id });
|
|
36
|
+
// Handle ready event
|
|
37
|
+
if (msg.cmd === "ready" && !this.ready) {
|
|
38
|
+
this.ready = true;
|
|
39
|
+
this.resolveReady();
|
|
40
|
+
logger.info('Worker ready');
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
// Handle encrypt response
|
|
44
|
+
if (msg.cmd === "encrypt") {
|
|
45
|
+
const pending = this.pendingRequests.get(msg.id);
|
|
46
|
+
if (!pending) {
|
|
47
|
+
logger.warn('No pending request found for ID', { id: msg.id });
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
this.pendingRequests.delete(msg.id);
|
|
51
|
+
clearTimeout(pending.timeout);
|
|
52
|
+
if (msg.code === "OK") {
|
|
53
|
+
logger.debug('Encrypt request succeeded', { id: msg.id });
|
|
54
|
+
pending.resolve(new Uint8Array(msg.result));
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
logger.warn('Encrypt request failed', { id: msg.id, message: msg.message });
|
|
58
|
+
pending.reject(new FheError({ code: FheErrorCode.EncryptionFailed, message: msg.message ?? 'WASM worker encryption failed' }));
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
catch (error) {
|
|
63
|
+
logger.error('Error handling worker message', { error });
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Handle worker transport errors
|
|
68
|
+
*/
|
|
69
|
+
handleError(error) {
|
|
70
|
+
logger.error('Worker transport error', { error });
|
|
71
|
+
// Reject all pending requests
|
|
72
|
+
for (const [id, pending] of this.pendingRequests) {
|
|
73
|
+
clearTimeout(pending.timeout);
|
|
74
|
+
pending.reject(new FheError({ code: FheErrorCode.Network, message: `Worker transport error: ${error.message}`, cause: error }));
|
|
75
|
+
this.pendingRequests.delete(id);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Encrypt integers with zero-knowledge proof via worker
|
|
80
|
+
*/
|
|
81
|
+
async encryptIntegerWithZkProof(args) {
|
|
82
|
+
try {
|
|
83
|
+
logger.debug('Starting encryption with ZK proof via worker', {
|
|
84
|
+
inputSize: args.input.length,
|
|
85
|
+
pkSize: args.pk.length,
|
|
86
|
+
crsSize: args.crs.length,
|
|
87
|
+
metadataSize: args.metadata.length,
|
|
88
|
+
refresh: args.refresh,
|
|
89
|
+
});
|
|
90
|
+
// Wait for worker to be ready
|
|
91
|
+
await this.readyPromise;
|
|
92
|
+
const id = getUUID();
|
|
93
|
+
return new Promise((resolve, reject) => {
|
|
94
|
+
// Set timeout for request
|
|
95
|
+
const timeout = setTimeout(() => {
|
|
96
|
+
this.pendingRequests.delete(id);
|
|
97
|
+
const errorMsg = `Encrypt request timeout after ${this.timeoutMs}ms (ID: ${id})`;
|
|
98
|
+
logger.error(errorMsg);
|
|
99
|
+
reject(new FheError({ code: FheErrorCode.Timeout, message: errorMsg }));
|
|
100
|
+
}, this.timeoutMs);
|
|
101
|
+
// Store pending request
|
|
102
|
+
this.pendingRequests.set(id, { resolve, reject, timeout });
|
|
103
|
+
// Prepare transferable buffers
|
|
104
|
+
const buffers = [
|
|
105
|
+
args.pk.buffer,
|
|
106
|
+
args.crs.buffer,
|
|
107
|
+
args.input.buffer,
|
|
108
|
+
args.metadata.buffer,
|
|
109
|
+
];
|
|
110
|
+
// Send message to worker
|
|
111
|
+
try {
|
|
112
|
+
this.transport.postMessage({
|
|
113
|
+
cmd: "encrypt",
|
|
114
|
+
id,
|
|
115
|
+
args: {
|
|
116
|
+
pk: args.pk.buffer,
|
|
117
|
+
crs: args.crs.buffer,
|
|
118
|
+
input: args.input.buffer,
|
|
119
|
+
metadata: args.metadata.buffer,
|
|
120
|
+
refresh: args.refresh,
|
|
121
|
+
},
|
|
122
|
+
}, buffers);
|
|
123
|
+
logger.debug('Encrypt request sent to worker', { id });
|
|
124
|
+
}
|
|
125
|
+
catch (error) {
|
|
126
|
+
clearTimeout(timeout);
|
|
127
|
+
this.pendingRequests.delete(id);
|
|
128
|
+
logger.error('Failed to post encrypt message to worker', { id, error });
|
|
129
|
+
reject(new FheError({
|
|
130
|
+
code: FheErrorCode.Network,
|
|
131
|
+
message: `Failed to send encrypt request: ${error instanceof Error ? error.message : String(error)}`,
|
|
132
|
+
cause: error,
|
|
133
|
+
}));
|
|
134
|
+
}
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
catch (error) {
|
|
138
|
+
logger.error('encryptIntegerWithZkProof failed', { error });
|
|
139
|
+
throw error;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Check if worker is ready
|
|
144
|
+
*/
|
|
145
|
+
isReady() {
|
|
146
|
+
return this.ready;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Clean up pending requests
|
|
150
|
+
*/
|
|
151
|
+
cleanup() {
|
|
152
|
+
logger.info('Cleaning up WasmWorkerClient');
|
|
153
|
+
for (const [id, pending] of this.pendingRequests) {
|
|
154
|
+
clearTimeout(pending.timeout);
|
|
155
|
+
pending.reject(new FheError({ code: FheErrorCode.Aborted, message: 'Client cleaned up' }));
|
|
156
|
+
this.pendingRequests.delete(id);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
//# sourceMappingURL=worker-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker-client.js","sourceRoot":"","sources":["../../src/wasm/worker-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { NodeWorkerSideTransport } from "./worker-transport.node.js";
|
|
2
|
+
import { FheWasmClient } from "./fhe-wasm-client.js";
|
|
3
|
+
export declare function getWorkerTransport(): NodeWorkerSideTransport;
|
|
4
|
+
export declare function createFheWasmClient(options?: {
|
|
5
|
+
useWorker?: boolean;
|
|
6
|
+
}): FheWasmClient;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Worker } from "node:worker_threads";
|
|
2
|
+
import { WasmWorkerClient } from "./worker-client.js";
|
|
3
|
+
import { NodeWorkerTransport, NodeWorkerSideTransport } from "./worker-transport.node.js";
|
|
4
|
+
import { FheWasmClientDirect, FheWasmClientViaWorker } from "./fhe-wasm-client.js";
|
|
5
|
+
export function getWorkerTransport() {
|
|
6
|
+
return new NodeWorkerSideTransport();
|
|
7
|
+
}
|
|
8
|
+
function getWasmClient() {
|
|
9
|
+
const worker = new Worker(new URL("./worker.js", import.meta.url));
|
|
10
|
+
const client = new WasmWorkerClient(new NodeWorkerTransport(worker));
|
|
11
|
+
return client;
|
|
12
|
+
}
|
|
13
|
+
export function createFheWasmClient(options) {
|
|
14
|
+
const useWorker = options?.useWorker ?? false;
|
|
15
|
+
if (useWorker) {
|
|
16
|
+
return new FheWasmClientViaWorker(getWasmClient());
|
|
17
|
+
}
|
|
18
|
+
return new FheWasmClientDirect();
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=worker-client.node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker-client.node.js","sourceRoot":"","sources":["../../src/wasm/worker-client.node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAC1F,OAAO,EAAiB,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAElG,MAAM,UAAU,kBAAkB;IAChC,OAAO,IAAI,uBAAuB,EAAE,CAAC;AACvC,CAAC;AAED,SAAS,aAAa;IACpB,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACnE,MAAM,MAAM,GAAG,IAAI,gBAAgB,CAAC,IAAI,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC;IACrE,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAiC;IACnE,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,KAAK,CAAC;IAC9C,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,IAAI,sBAAsB,CAAC,aAAa,EAAE,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,IAAI,mBAAmB,EAAE,CAAC;AACnC,CAAC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { EncryptWithZkProofInput } from "./fhe-wasm-module.js";
|
|
2
|
+
/**
|
|
3
|
+
* Base interface for all worker messages
|
|
4
|
+
*/
|
|
5
|
+
export interface WorkerMessageBase {
|
|
6
|
+
cmd: string;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Base interface for worker requests with request ID
|
|
10
|
+
*/
|
|
11
|
+
export interface WorkerRequestBase extends WorkerMessageBase {
|
|
12
|
+
id: string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Base interface for worker responses with status code
|
|
16
|
+
*/
|
|
17
|
+
export interface WorkerResponseBase extends WorkerMessageBase {
|
|
18
|
+
id: string;
|
|
19
|
+
code: "OK" | "ERROR";
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Worker ready event sent during initialization
|
|
23
|
+
*/
|
|
24
|
+
export interface WorkerReadyEvent extends WorkerMessageBase {
|
|
25
|
+
cmd: "ready";
|
|
26
|
+
wasmReady: boolean;
|
|
27
|
+
}
|
|
28
|
+
export type WorkerEvent = WorkerReadyEvent;
|
|
29
|
+
/**
|
|
30
|
+
* Encryption request with zero-knowledge proof parameters
|
|
31
|
+
*/
|
|
32
|
+
export interface WorkerEncryptRequest extends WorkerRequestBase {
|
|
33
|
+
cmd: "encrypt";
|
|
34
|
+
args: EncryptWithZkProofInput;
|
|
35
|
+
}
|
|
36
|
+
export type WorkerRequestMessage = WorkerEncryptRequest;
|
|
37
|
+
/**
|
|
38
|
+
* Successful encryption response containing result buffer
|
|
39
|
+
*/
|
|
40
|
+
export interface EncryptSuccess extends WorkerResponseBase {
|
|
41
|
+
cmd: "encrypt";
|
|
42
|
+
code: "OK";
|
|
43
|
+
result: ArrayBuffer;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Failed encryption response with error message
|
|
47
|
+
*/
|
|
48
|
+
export interface EncryptError extends WorkerResponseBase {
|
|
49
|
+
cmd: "encrypt";
|
|
50
|
+
code: "ERROR";
|
|
51
|
+
message: string;
|
|
52
|
+
}
|
|
53
|
+
export type WorkerResponse = EncryptSuccess | EncryptError;
|
|
54
|
+
export type WorkerResponseMessage = WorkerResponse | WorkerEvent;
|
|
55
|
+
/**
|
|
56
|
+
* Configuration for WASM worker client
|
|
57
|
+
*/
|
|
58
|
+
export interface WasmWorkerClientConfig {
|
|
59
|
+
workerUrl?: string;
|
|
60
|
+
timeoutMs?: number;
|
|
61
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker-message.js","sourceRoot":"","sources":["../../src/wasm/worker-message.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { WorkerTransport } from "./worker-transport.js";
|
|
2
|
+
export declare class BrowserWorkerTransport implements WorkerTransport {
|
|
3
|
+
private worker;
|
|
4
|
+
constructor(worker: Worker);
|
|
5
|
+
postMessage(message: any, transfer?: Transferable[]): void;
|
|
6
|
+
onMessage(callback: (message: any) => void): void;
|
|
7
|
+
onError(callback: (error: Error) => void): void;
|
|
8
|
+
close(): void;
|
|
9
|
+
}
|
|
10
|
+
export declare class BrowserWorkerSideTransport implements WorkerTransport {
|
|
11
|
+
postMessage(message: any, transfer?: Transferable[]): void;
|
|
12
|
+
onMessage(callback: (message: any) => void): void;
|
|
13
|
+
onError(_callback: (error: Error) => void): void;
|
|
14
|
+
close(): void;
|
|
15
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { FheErrorCode } from "../core/errors/error-codes.js";
|
|
2
|
+
import { FheError } from "../core/errors/fhe-error.js";
|
|
3
|
+
export class BrowserWorkerTransport {
|
|
4
|
+
worker;
|
|
5
|
+
constructor(worker) {
|
|
6
|
+
this.worker = worker;
|
|
7
|
+
}
|
|
8
|
+
postMessage(message, transfer) {
|
|
9
|
+
this.worker.postMessage(message, transfer ?? []);
|
|
10
|
+
}
|
|
11
|
+
onMessage(callback) {
|
|
12
|
+
this.worker.addEventListener("message", e => callback(e.data));
|
|
13
|
+
}
|
|
14
|
+
onError(callback) {
|
|
15
|
+
this.worker.addEventListener("error", (e) => {
|
|
16
|
+
callback(e.error ?? new FheError({ code: FheErrorCode.Network, message: e.message ?? "Worker error" }));
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
close() {
|
|
20
|
+
this.worker.terminate();
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
export class BrowserWorkerSideTransport {
|
|
24
|
+
postMessage(message, transfer) {
|
|
25
|
+
self.postMessage(message, transfer ?? []);
|
|
26
|
+
}
|
|
27
|
+
onMessage(callback) {
|
|
28
|
+
self.addEventListener("message", (e) => callback(e.data));
|
|
29
|
+
}
|
|
30
|
+
onError(_callback) { }
|
|
31
|
+
close() {
|
|
32
|
+
self.close();
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=worker-transport.browser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker-transport.browser.js","sourceRoot":"","sources":["../../src/wasm/worker-transport.browser.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAEvD,MAAM,OAAO,sBAAsB;IACb;IAApB,YAAoB,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;IAAI,CAAC;IAEvC,WAAW,CAAC,OAAY,EAAE,QAAyB;QACjD,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,SAAS,CAAC,QAAgC;QACxC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACjE,CAAC;IAED,OAAO,CAAC,QAAgC;QACtC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE;YAC1C,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,QAAQ,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,cAAc,EAAE,CAAC,CAAC,CAAC;QAC1G,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK;QACH,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;IAC1B,CAAC;CACF;AAED,MAAM,OAAO,0BAA0B;IACrC,WAAW,CAAC,OAAY,EAAE,QAAyB;QACjD,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,SAAS,CAAC,QAAgC;QACxC,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5D,CAAC;IAED,OAAO,CAAC,SAAiC,IAAwB,CAAC;IAElE,KAAK;QACH,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker-transport.js","sourceRoot":"","sources":["../../src/wasm/worker-transport.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type Worker } from "node:worker_threads";
|
|
2
|
+
import type { WorkerTransport } from "./worker-transport.js";
|
|
3
|
+
export declare class NodeWorkerTransport implements WorkerTransport {
|
|
4
|
+
private worker;
|
|
5
|
+
constructor(worker: Worker);
|
|
6
|
+
postMessage(message: any, transfer?: Transferable[]): void;
|
|
7
|
+
onMessage(callback: (message: any) => void): void;
|
|
8
|
+
onError(callback: (error: Error) => void): void;
|
|
9
|
+
close(): void;
|
|
10
|
+
}
|
|
11
|
+
export declare class NodeWorkerSideTransport implements WorkerTransport {
|
|
12
|
+
constructor();
|
|
13
|
+
postMessage(message: any, transfer?: Transferable[]): void;
|
|
14
|
+
onMessage(callback: (message: any) => void): void;
|
|
15
|
+
onError(_callback: (error: Error) => void): void;
|
|
16
|
+
close(): void;
|
|
17
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { parentPort } from "node:worker_threads";
|
|
2
|
+
import { FheErrorCode } from "../core/errors/error-codes.js";
|
|
3
|
+
import { FheError } from "../core/errors/fhe-error.js";
|
|
4
|
+
export class NodeWorkerTransport {
|
|
5
|
+
worker;
|
|
6
|
+
constructor(worker) {
|
|
7
|
+
this.worker = worker;
|
|
8
|
+
}
|
|
9
|
+
postMessage(message, transfer) {
|
|
10
|
+
this.worker.postMessage(message, transfer);
|
|
11
|
+
}
|
|
12
|
+
onMessage(callback) {
|
|
13
|
+
this.worker.on("message", callback);
|
|
14
|
+
}
|
|
15
|
+
onError(callback) {
|
|
16
|
+
this.worker.on("error", callback);
|
|
17
|
+
}
|
|
18
|
+
close() {
|
|
19
|
+
this.worker.terminate();
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
export class NodeWorkerSideTransport {
|
|
23
|
+
constructor() {
|
|
24
|
+
if (!parentPort) {
|
|
25
|
+
throw new FheError({ code: FheErrorCode.Unsupported, message: "parentPort is null" });
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
postMessage(message, transfer) {
|
|
29
|
+
parentPort.postMessage(message, transfer);
|
|
30
|
+
}
|
|
31
|
+
onMessage(callback) {
|
|
32
|
+
parentPort.on("message", callback);
|
|
33
|
+
}
|
|
34
|
+
onError(_callback) { }
|
|
35
|
+
close() {
|
|
36
|
+
parentPort.close();
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=worker-transport.node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker-transport.node.js","sourceRoot":"","sources":["../../src/wasm/worker-transport.node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAe,MAAM,qBAAqB,CAAC;AAE9D,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAEvD,MAAM,OAAO,mBAAmB;IACV;IAApB,YAAoB,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;IAAI,CAAC;IAEvC,WAAW,CAAC,OAAY,EAAE,QAAyB;QACjD,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,QAAe,CAAC,CAAC;IACpD,CAAC;IAED,SAAS,CAAC,QAAgC;QACxC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACtC,CAAC;IAED,OAAO,CAAC,QAAgC;QACtC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACpC,CAAC;IAED,KAAK;QACH,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;IAC1B,CAAC;CACF;AAGD,MAAM,OAAO,uBAAuB;IAClC;QACE,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,QAAQ,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,WAAW,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC,CAAC;QACxF,CAAC;IACH,CAAC;IAED,WAAW,CAAC,OAAY,EAAE,QAAyB;QACjD,UAAW,CAAC,WAAW,CAAC,OAAO,EAAE,QAAe,CAAC,CAAC;IACpD,CAAC;IAED,SAAS,CAAC,QAAgC;QACxC,UAAW,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACtC,CAAC;IAED,OAAO,CAAC,SAAiC,IAAwB,CAAC;IAElE,KAAK;QACH,UAAW,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/// <reference lib="webworker" />
|
|
2
|
+
import { getWorkerTransport } from '#worker-client';
|
|
3
|
+
import { logger } from '../core/logger.js';
|
|
4
|
+
import { encryptIntegerWithZkProof, loadFheWasmModule } from './fhe-wasm-module.js';
|
|
5
|
+
const transport = getWorkerTransport();
|
|
6
|
+
/**
|
|
7
|
+
* Handle encrypt request with zero-knowledge proof
|
|
8
|
+
*/
|
|
9
|
+
async function handleEncryptIntegerWithZkProof(data) {
|
|
10
|
+
const { cmd, id, args } = data;
|
|
11
|
+
try {
|
|
12
|
+
logger.debug('[Worker] Processing encrypt request', { id, refresh: args.refresh });
|
|
13
|
+
// Execute encryption
|
|
14
|
+
const res = await encryptIntegerWithZkProof(args);
|
|
15
|
+
// Send success response with transferable buffer
|
|
16
|
+
transport.postMessage({
|
|
17
|
+
cmd,
|
|
18
|
+
id,
|
|
19
|
+
code: "OK",
|
|
20
|
+
result: res.result.buffer,
|
|
21
|
+
}, [res.result.buffer]);
|
|
22
|
+
logger.debug('[Worker] Encrypt request completed successfully', { id });
|
|
23
|
+
}
|
|
24
|
+
catch (error) {
|
|
25
|
+
// Send error response
|
|
26
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
27
|
+
logger.error('[Worker] Encrypt request failed', { id, error: errorMessage });
|
|
28
|
+
transport.postMessage({
|
|
29
|
+
cmd,
|
|
30
|
+
id,
|
|
31
|
+
code: "ERROR",
|
|
32
|
+
message: errorMessage,
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Set up message handler
|
|
38
|
+
*/
|
|
39
|
+
transport.onMessage(async (message) => {
|
|
40
|
+
try {
|
|
41
|
+
const msg = message;
|
|
42
|
+
logger.debug('[Worker] Received message', { cmd: msg.cmd, id: msg.id });
|
|
43
|
+
switch (msg.cmd) {
|
|
44
|
+
case 'encrypt':
|
|
45
|
+
await handleEncryptIntegerWithZkProof(msg);
|
|
46
|
+
break;
|
|
47
|
+
default:
|
|
48
|
+
logger.warn('[Worker] Unknown command received', { cmd: msg.cmd, id: msg.id });
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
logger.error('[Worker] Failed to handle message', { error });
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
/**
|
|
56
|
+
* Initialize WASM module and signal ready
|
|
57
|
+
*/
|
|
58
|
+
(async () => {
|
|
59
|
+
logger.info('[Worker] Initializing WASM module...');
|
|
60
|
+
await loadFheWasmModule();
|
|
61
|
+
logger.info('[Worker] WASM module loaded');
|
|
62
|
+
// Signal worker is ready
|
|
63
|
+
transport.postMessage({
|
|
64
|
+
cmd: "ready",
|
|
65
|
+
wasmReady: true,
|
|
66
|
+
});
|
|
67
|
+
logger.info('[Worker] Ready signal sent');
|
|
68
|
+
})();
|
|
69
|
+
//# sourceMappingURL=worker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../../src/wasm/worker.ts"],"names":[],"mappings":"AAAA,iCAAiC;AAEjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,yBAAyB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AASpF,MAAM,SAAS,GAAG,kBAAkB,EAAE,CAAC;AAEvC;;GAEG;AACH,KAAK,UAAU,+BAA+B,CAAC,IAA0B;IACvE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IAE/B,IAAI,CAAC;QACH,MAAM,CAAC,KAAK,CAAC,qCAAqC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAEnF,qBAAqB;QACrB,MAAM,GAAG,GAAG,MAAM,yBAAyB,CAAC,IAAI,CAAC,CAAC;QAElD,iDAAiD;QACjD,SAAS,CAAC,WAAW,CACnB;YACE,GAAG;YACH,EAAE;YACF,IAAI,EAAE,IAAI;YACV,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,MAAqB;SAChB,EAC1B,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CACpB,CAAC;QAEF,MAAM,CAAC,KAAK,CAAC,iDAAiD,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC1E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,sBAAsB;QACtB,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5E,MAAM,CAAC,KAAK,CAAC,iCAAiC,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;QAE7E,SAAS,CAAC,WAAW,CAAC;YACpB,GAAG;YACH,EAAE;YACF,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,YAAY;SACC,CAAC,CAAC;IAC5B,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACpC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,OAA+B,CAAC;QAE5C,MAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;QAExE,QAAQ,GAAG,CAAC,GAAG,EAAE,CAAC;YAChB,KAAK,SAAS;gBACZ,MAAM,+BAA+B,CAAC,GAAG,CAAC,CAAC;gBAC3C,MAAM;YACR;gBACE,MAAM,CAAC,IAAI,CAAC,mCAAmC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;QACnF,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,mCAAmC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/D,CAAC;AACH,CAAC,CAAC,CAAC;AAEH;;GAEG;AACH,CAAC,KAAK,IAAI,EAAE;IACV,MAAM,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;IACpD,MAAM,iBAAiB,EAAE,CAAC;IAC1B,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;IAE3C,yBAAyB;IACzB,SAAS,CAAC,WAAW,CAAC;QACpB,GAAG,EAAE,OAAO;QACZ,SAAS,EAAE,IAAI;KACW,CAAC,CAAC;IAE9B,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;AAC5C,CAAC,CAAC,EAAE,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@primuslabs/fhetransform-sdk",
|
|
3
|
+
"version": "0.4.0",
|
|
4
|
+
"description": "SDK for FHETransform.",
|
|
5
|
+
"author": "",
|
|
6
|
+
"keywords": [
|
|
7
|
+
"FHE"
|
|
8
|
+
],
|
|
9
|
+
"license": "MIT",
|
|
10
|
+
"type": "module",
|
|
11
|
+
"main": "./dist/index.js",
|
|
12
|
+
"types": "./dist/index.d.ts",
|
|
13
|
+
"exports": {
|
|
14
|
+
".": {
|
|
15
|
+
"types": "./dist/index.d.ts",
|
|
16
|
+
"import": "./dist/index.js"
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
"imports": {
|
|
20
|
+
"#runtime": {
|
|
21
|
+
"browser": "./dist/runtime/browser.js",
|
|
22
|
+
"node": "./dist/runtime/node.js",
|
|
23
|
+
"default": "./dist/runtime/node.js"
|
|
24
|
+
},
|
|
25
|
+
"#worker-client": {
|
|
26
|
+
"browser": "./dist/wasm/worker-client.browser.js",
|
|
27
|
+
"node": "./dist/wasm/worker-client.node.js",
|
|
28
|
+
"default": "./dist/wasm/worker-client.node.js"
|
|
29
|
+
},
|
|
30
|
+
"#wasm-loader": {
|
|
31
|
+
"browser": "./dist/wasm/wasm-loader.browser.js",
|
|
32
|
+
"node": "./dist/wasm/wasm-loader.node.js",
|
|
33
|
+
"default": "./dist/wasm/wasm-loader.node.js"
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
"bin": {
|
|
37
|
+
"eusdc-cli": "./dist/cli/eusdc.js"
|
|
38
|
+
},
|
|
39
|
+
"scripts": {
|
|
40
|
+
"build": "tsc && chmod +x dist/cli/*.js && npm run copy:native && npm run docs:errors",
|
|
41
|
+
"copy:native": "mkdir -p dist/native && cp -rf src/native/* dist/native/",
|
|
42
|
+
"docs:errors": "node --import tsx scripts/generate-error-docs.ts",
|
|
43
|
+
"test": "npx vitest run --coverage",
|
|
44
|
+
"usage:browser": "npx vite",
|
|
45
|
+
"usage:node": "npx tsx examples/full_usage.ts",
|
|
46
|
+
"lint": "eslint src --ext .ts",
|
|
47
|
+
"format": "prettier --write \"src/**/*.ts\"",
|
|
48
|
+
"clean": "rm -rf dist"
|
|
49
|
+
},
|
|
50
|
+
"dependencies": {
|
|
51
|
+
"axios": "^1.18.1",
|
|
52
|
+
"commander": "^15.0.0",
|
|
53
|
+
"ethers": "^6.15.0",
|
|
54
|
+
"idb-keyval": "^6.2.5",
|
|
55
|
+
"loglevel": "^1.9.2",
|
|
56
|
+
"tslog": "^5.1.0",
|
|
57
|
+
"unstorage": "^1.17.5"
|
|
58
|
+
},
|
|
59
|
+
"devDependencies": {
|
|
60
|
+
"@types/node": "^25.9.1",
|
|
61
|
+
"@typescript-eslint/eslint-plugin": "^8.60.0",
|
|
62
|
+
"@typescript-eslint/parser": "^8.60.0",
|
|
63
|
+
"@vitest/browser": "^4.1.10",
|
|
64
|
+
"@vitest/coverage-v8": "^4.1.10",
|
|
65
|
+
"dotenv": "^17.4.2",
|
|
66
|
+
"eslint": "^10.4.1",
|
|
67
|
+
"playwright": "^1.61.1",
|
|
68
|
+
"prettier": "^3.8.3",
|
|
69
|
+
"tsx": "^4.22.3",
|
|
70
|
+
"typescript": "^5.8.3",
|
|
71
|
+
"vite": "^8.0.14",
|
|
72
|
+
"vitest": "^4.1.10"
|
|
73
|
+
},
|
|
74
|
+
"engines": {
|
|
75
|
+
"node": ">=20",
|
|
76
|
+
"npm": ">=7.0.0"
|
|
77
|
+
},
|
|
78
|
+
"files": [
|
|
79
|
+
"dist"
|
|
80
|
+
]
|
|
81
|
+
}
|