@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,102 @@
|
|
|
1
|
+
import { JazzInputProofResult } from "../types/input-proof.js";
|
|
2
|
+
import { JazzKeyUrlResult } from "../types/key-url.js";
|
|
3
|
+
import { JazzPublicDecryptResult } from "../types/public-decrypt.js";
|
|
4
|
+
import { JazzUserDecryptResult } from "../types/user-decrypt.js";
|
|
5
|
+
/** Supported Jazz async operation types */
|
|
6
|
+
export type JazzRequestOperation = 'INPUT_PROOF' | 'PUBLIC_DECRYPT' | 'USER_DECRYPT' | 'KEY_URL';
|
|
7
|
+
/** Parameters for creating a Jazz async request */
|
|
8
|
+
export type JazzAsyncRequestParams = {
|
|
9
|
+
/** The operation to perform */
|
|
10
|
+
operation: JazzRequestOperation;
|
|
11
|
+
/** Base URL for the Jazz service */
|
|
12
|
+
baseUrl: string;
|
|
13
|
+
/** API endpoint path */
|
|
14
|
+
path: string;
|
|
15
|
+
/** Request payload */
|
|
16
|
+
payload: Record<string, unknown>;
|
|
17
|
+
/** Additional options for the request */
|
|
18
|
+
options?: any;
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* JazzAsyncRequest - Handles asynchronous Jazz API operations.
|
|
22
|
+
*
|
|
23
|
+
* Features:
|
|
24
|
+
* - Job submission with automatic retry
|
|
25
|
+
* - Polling for job completion
|
|
26
|
+
* - Support for INPUT_PROOF, PUBLIC_DECRYPT, USER_DECRYPT, KEY_URL operations
|
|
27
|
+
* - Retry-After header parsing
|
|
28
|
+
* - Comprehensive error handling and logging
|
|
29
|
+
*/
|
|
30
|
+
export declare class JazzAsyncRequest {
|
|
31
|
+
private readonly baseUrl;
|
|
32
|
+
private readonly path;
|
|
33
|
+
private readonly operation;
|
|
34
|
+
private readonly payload;
|
|
35
|
+
/** Current job ID for polling */
|
|
36
|
+
private _jobId;
|
|
37
|
+
private _startTimestamp;
|
|
38
|
+
private _elapsed;
|
|
39
|
+
private readonly _onProgress?;
|
|
40
|
+
private readonly _retryOptions?;
|
|
41
|
+
/**
|
|
42
|
+
* Creates a new JazzAsyncRequest instance.
|
|
43
|
+
* @param params - Request parameters
|
|
44
|
+
*/
|
|
45
|
+
constructor(params: JazzAsyncRequestParams);
|
|
46
|
+
/**
|
|
47
|
+
* Executes the async request.
|
|
48
|
+
* For KEY_URL, performs a simple GET request.
|
|
49
|
+
* For other operations, submits a job and polls for completion.
|
|
50
|
+
*
|
|
51
|
+
* @returns Promise resolving to the operation result
|
|
52
|
+
* @throws Error if the request fails
|
|
53
|
+
*/
|
|
54
|
+
run(): Promise<JazzInputProofResult | JazzPublicDecryptResult | JazzUserDecryptResult | JazzKeyUrlResult>;
|
|
55
|
+
/**
|
|
56
|
+
* Fetches key URL information (simple GET, no polling).
|
|
57
|
+
*
|
|
58
|
+
* @param client - Authenticated Axios instance
|
|
59
|
+
* @returns Key URL result
|
|
60
|
+
* @throws Error if the request fails or response is invalid
|
|
61
|
+
*/
|
|
62
|
+
private tryGetKeyUrl;
|
|
63
|
+
/**
|
|
64
|
+
* Submits the job via POST request.
|
|
65
|
+
*
|
|
66
|
+
* @param client - Authenticated Axios instance
|
|
67
|
+
* @returns Job ID
|
|
68
|
+
* @throws Error if submission fails
|
|
69
|
+
*/
|
|
70
|
+
private tryPostLoop;
|
|
71
|
+
/**
|
|
72
|
+
* Polls for job completion via GET requests.
|
|
73
|
+
*
|
|
74
|
+
* @param client - Authenticated Axios instance
|
|
75
|
+
* @returns Processed result
|
|
76
|
+
* @throws Error if polling fails or job fails
|
|
77
|
+
*/
|
|
78
|
+
private tryGetLoop;
|
|
79
|
+
/**
|
|
80
|
+
* Processes successful result data based on operation type.
|
|
81
|
+
*
|
|
82
|
+
* @param resultData - Raw result data from the API
|
|
83
|
+
* @returns Typed result object
|
|
84
|
+
* @throws Error if operation is unsupported or result is invalid
|
|
85
|
+
*/
|
|
86
|
+
private processSuccessfulResult;
|
|
87
|
+
/**
|
|
88
|
+
* Extracts retry-after time from header value.
|
|
89
|
+
* Supports both seconds (numeric) and HTTP-date formats.
|
|
90
|
+
*
|
|
91
|
+
* @param retryAfter - Raw Retry-After header value
|
|
92
|
+
* @returns Wait time in milliseconds, or undefined if parsing fails
|
|
93
|
+
*/
|
|
94
|
+
private extractRetryAfter;
|
|
95
|
+
/**
|
|
96
|
+
* Logs errors with context for debugging.
|
|
97
|
+
*
|
|
98
|
+
* @param error - Error object to log
|
|
99
|
+
*/
|
|
100
|
+
private logError;
|
|
101
|
+
private onProgress;
|
|
102
|
+
}
|
|
@@ -0,0 +1,515 @@
|
|
|
1
|
+
import { createAuthenticatedAxios } from "./jazz-p.js";
|
|
2
|
+
import { TimeoutRetryHandler } from "../../core/retryable-handler.js";
|
|
3
|
+
import { logger } from "../../core/logger.js";
|
|
4
|
+
import { formatValue } from "../../core/pretty-print.js";
|
|
5
|
+
import { FheError } from "../../core/errors/fhe-error.js";
|
|
6
|
+
import { FheErrorCode } from "../../core/errors/error-codes.js";
|
|
7
|
+
import { isFheError } from "../../core/errors/error-utils.js";
|
|
8
|
+
/** API response status enum for async jobs */
|
|
9
|
+
var ApiResponseStatus;
|
|
10
|
+
(function (ApiResponseStatus) {
|
|
11
|
+
ApiResponseStatus["Queued"] = "queued";
|
|
12
|
+
ApiResponseStatus["Succeeded"] = "succeeded";
|
|
13
|
+
ApiResponseStatus["Failed"] = "failed";
|
|
14
|
+
})(ApiResponseStatus || (ApiResponseStatus = {}));
|
|
15
|
+
// ============================================================================
|
|
16
|
+
// JazzAsyncRequest Class
|
|
17
|
+
// ============================================================================
|
|
18
|
+
/**
|
|
19
|
+
* JazzAsyncRequest - Handles asynchronous Jazz API operations.
|
|
20
|
+
*
|
|
21
|
+
* Features:
|
|
22
|
+
* - Job submission with automatic retry
|
|
23
|
+
* - Polling for job completion
|
|
24
|
+
* - Support for INPUT_PROOF, PUBLIC_DECRYPT, USER_DECRYPT, KEY_URL operations
|
|
25
|
+
* - Retry-After header parsing
|
|
26
|
+
* - Comprehensive error handling and logging
|
|
27
|
+
*/
|
|
28
|
+
export class JazzAsyncRequest {
|
|
29
|
+
baseUrl;
|
|
30
|
+
path;
|
|
31
|
+
operation;
|
|
32
|
+
payload;
|
|
33
|
+
// private readonly options?: any;
|
|
34
|
+
/** Current job ID for polling */
|
|
35
|
+
_jobId;
|
|
36
|
+
_startTimestamp;
|
|
37
|
+
_elapsed;
|
|
38
|
+
_onProgress;
|
|
39
|
+
_retryOptions;
|
|
40
|
+
/**
|
|
41
|
+
* Creates a new JazzAsyncRequest instance.
|
|
42
|
+
* @param params - Request parameters
|
|
43
|
+
*/
|
|
44
|
+
constructor(params) {
|
|
45
|
+
// Log constructor parameters
|
|
46
|
+
logger.debug(() => ['[JazzAsyncRequest.constructor] Creating instance', formatValue({ params })]);
|
|
47
|
+
this.baseUrl = params.baseUrl;
|
|
48
|
+
this.path = params.path;
|
|
49
|
+
this.operation = params.operation;
|
|
50
|
+
this.payload = params.payload;
|
|
51
|
+
// this.options = params.options;
|
|
52
|
+
this._startTimestamp = Date.now();
|
|
53
|
+
this._elapsed = 0;
|
|
54
|
+
this._onProgress = params.options?.onJazzProgress;
|
|
55
|
+
this._retryOptions = params.options?.jazzRetryOptions;
|
|
56
|
+
logger.debug('[JazzAsyncRequest.constructor] Instance initialized', {
|
|
57
|
+
operation: this.operation,
|
|
58
|
+
baseUrl: this.baseUrl,
|
|
59
|
+
path: this.path,
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Executes the async request.
|
|
64
|
+
* For KEY_URL, performs a simple GET request.
|
|
65
|
+
* For other operations, submits a job and polls for completion.
|
|
66
|
+
*
|
|
67
|
+
* @returns Promise resolving to the operation result
|
|
68
|
+
* @throws Error if the request fails
|
|
69
|
+
*/
|
|
70
|
+
async run() {
|
|
71
|
+
this._startTimestamp = Date.now();
|
|
72
|
+
this._elapsed = 0;
|
|
73
|
+
this.onProgress({
|
|
74
|
+
status: "start"
|
|
75
|
+
});
|
|
76
|
+
// Enter method
|
|
77
|
+
logger.debug('[JazzAsyncRequest.run] Starting request execution', {
|
|
78
|
+
operation: this.operation,
|
|
79
|
+
path: this.path,
|
|
80
|
+
});
|
|
81
|
+
const client = createAuthenticatedAxios(this.baseUrl);
|
|
82
|
+
// KEY_URL is a simple GET request, no async polling needed
|
|
83
|
+
if (this.operation === 'KEY_URL') {
|
|
84
|
+
logger.trace('[JazzAsyncRequest.run] KEY_URL operation - using simple GET');
|
|
85
|
+
return await this.tryGetKeyUrl(client);
|
|
86
|
+
}
|
|
87
|
+
// Step 1: Submit job and get jobId
|
|
88
|
+
logger.trace('[JazzAsyncRequest.run] Submitting job for async operation');
|
|
89
|
+
await this.tryPostLoop(client);
|
|
90
|
+
logger.debug('[JazzAsyncRequest.run] Job submitted successfully', {
|
|
91
|
+
jobId: this._jobId,
|
|
92
|
+
});
|
|
93
|
+
// Step 2: Poll for job result
|
|
94
|
+
logger.trace('[JazzAsyncRequest.run] Polling for job result');
|
|
95
|
+
const result = await this.tryGetLoop(client);
|
|
96
|
+
logger.debug('[JazzAsyncRequest.run] Request completed successfully', {
|
|
97
|
+
operation: this.operation,
|
|
98
|
+
jobId: this._jobId,
|
|
99
|
+
});
|
|
100
|
+
return result;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Fetches key URL information (simple GET, no polling).
|
|
104
|
+
*
|
|
105
|
+
* @param client - Authenticated Axios instance
|
|
106
|
+
* @returns Key URL result
|
|
107
|
+
* @throws Error if the request fails or response is invalid
|
|
108
|
+
*/
|
|
109
|
+
async tryGetKeyUrl(client) {
|
|
110
|
+
logger.debug('[tryGetKeyUrl] Fetching key URL', {
|
|
111
|
+
path: this.path,
|
|
112
|
+
});
|
|
113
|
+
const retryHandler = new TimeoutRetryHandler({ ...this._retryOptions });
|
|
114
|
+
return await retryHandler.withRetry(async () => {
|
|
115
|
+
try {
|
|
116
|
+
logger.trace('[tryGetKeyUrl] Sending GET request', { path: this.path });
|
|
117
|
+
const response = await client.get(`${this.path}`);
|
|
118
|
+
// Validate response status
|
|
119
|
+
if (response.status !== 200) {
|
|
120
|
+
logger.error('[tryGetKeyUrl] Unexpected status code', {
|
|
121
|
+
expected: 200,
|
|
122
|
+
actual: response.status,
|
|
123
|
+
});
|
|
124
|
+
throw new FheError({ code: FheErrorCode.JazzUnexpectedResponse, message: `Unexpected status code: ${response.status}` });
|
|
125
|
+
}
|
|
126
|
+
// Validate response status field
|
|
127
|
+
if (response.data.status !== "succeeded") {
|
|
128
|
+
logger.error('[tryGetKeyUrl] Unexpected data status', {
|
|
129
|
+
status: response.data.status,
|
|
130
|
+
});
|
|
131
|
+
throw new FheError({ code: FheErrorCode.JazzUnexpectedResponse, message: `Unexpected data status: ${response.data.status}` });
|
|
132
|
+
}
|
|
133
|
+
const result = response.data.response;
|
|
134
|
+
// Extract and format key URL result
|
|
135
|
+
const keyUrlResult = {
|
|
136
|
+
publicKeySource: {
|
|
137
|
+
id: result.fheKeyInfo[0].fhePublicKey.dataId,
|
|
138
|
+
url: result.fheKeyInfo[0].fhePublicKey.urls[0],
|
|
139
|
+
},
|
|
140
|
+
crsSource: {
|
|
141
|
+
id: result.crs['2048'].dataId,
|
|
142
|
+
url: result.crs['2048'].urls[0],
|
|
143
|
+
capacity: 2048,
|
|
144
|
+
},
|
|
145
|
+
};
|
|
146
|
+
logger.debug('[tryGetKeyUrl] Key URL retrieved successfully', {
|
|
147
|
+
dataId: keyUrlResult.publicKeySource.id,
|
|
148
|
+
crsId: keyUrlResult.crsSource.id,
|
|
149
|
+
});
|
|
150
|
+
this.onProgress({
|
|
151
|
+
status: "get_200",
|
|
152
|
+
});
|
|
153
|
+
return keyUrlResult;
|
|
154
|
+
}
|
|
155
|
+
catch (error) {
|
|
156
|
+
this.logError(error);
|
|
157
|
+
this.onProgress({
|
|
158
|
+
status: "get_error",
|
|
159
|
+
error: error?.message,
|
|
160
|
+
});
|
|
161
|
+
throw error;
|
|
162
|
+
}
|
|
163
|
+
}, "tryGetKeyUrl", { path: this.path, operation: this.operation }, undefined // No callback needed
|
|
164
|
+
);
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Submits the job via POST request.
|
|
168
|
+
*
|
|
169
|
+
* @param client - Authenticated Axios instance
|
|
170
|
+
* @returns Job ID
|
|
171
|
+
* @throws Error if submission fails
|
|
172
|
+
*/
|
|
173
|
+
async tryPostLoop(client) {
|
|
174
|
+
logger.debug(() => ['[tryPostLoop] Submitting job via POST', {
|
|
175
|
+
path: this.path,
|
|
176
|
+
payload: formatValue(this.payload),
|
|
177
|
+
}]);
|
|
178
|
+
const retryHandler = new TimeoutRetryHandler({ ...this._retryOptions });
|
|
179
|
+
return await retryHandler.withRetry(async () => {
|
|
180
|
+
try {
|
|
181
|
+
logger.trace('[tryPostLoop] Sending POST request', {
|
|
182
|
+
path: this.path,
|
|
183
|
+
payloadKeys: Object.keys(this.payload),
|
|
184
|
+
});
|
|
185
|
+
const response = await client.post(this.path, this.payload);
|
|
186
|
+
// HTTP 202 Accepted - job queued successfully
|
|
187
|
+
if (response.status === 202) {
|
|
188
|
+
this._jobId = response.data.result.jobId;
|
|
189
|
+
logger.debug('[tryPostLoop] Job submitted successfully', {
|
|
190
|
+
operation: this.operation,
|
|
191
|
+
jobId: this._jobId,
|
|
192
|
+
requestId: response.data.requestId,
|
|
193
|
+
});
|
|
194
|
+
this.onProgress({
|
|
195
|
+
status: "post_202"
|
|
196
|
+
});
|
|
197
|
+
return this._jobId;
|
|
198
|
+
}
|
|
199
|
+
// HTTP 200 OK - job completed immediately (edge case)
|
|
200
|
+
if (response.status === 200) {
|
|
201
|
+
logger.warn('[tryPostLoop] Job completed immediately (edge case)', {
|
|
202
|
+
operation: this.operation,
|
|
203
|
+
status: response.data.status,
|
|
204
|
+
requestId: response.data.requestId,
|
|
205
|
+
});
|
|
206
|
+
// Store jobId for GET loop, but we might not need to poll
|
|
207
|
+
this._jobId = response.data.result.jobId;
|
|
208
|
+
this.onProgress({
|
|
209
|
+
status: "post_200"
|
|
210
|
+
});
|
|
211
|
+
return this._jobId;
|
|
212
|
+
}
|
|
213
|
+
// Unexpected status
|
|
214
|
+
logger.error('[tryPostLoop] Unsupported response status', {
|
|
215
|
+
status: response.status,
|
|
216
|
+
expected: ['200', '202'],
|
|
217
|
+
});
|
|
218
|
+
throw new FheError({ code: FheErrorCode.JazzUnexpectedResponse, message: `Unsupported response status: ${response.status}` });
|
|
219
|
+
}
|
|
220
|
+
catch (error) {
|
|
221
|
+
this.logError(error);
|
|
222
|
+
this.onProgress({
|
|
223
|
+
status: "post_error",
|
|
224
|
+
error: error?.message,
|
|
225
|
+
});
|
|
226
|
+
throw error;
|
|
227
|
+
}
|
|
228
|
+
}, "tryPostLoop", { path: this.path, operation: this.operation }, async () => {
|
|
229
|
+
// Optional callback after failure - can be used for logging or cleanup
|
|
230
|
+
logger.warn('[tryPostLoop] POST retry attempt failed', {
|
|
231
|
+
operation: this.operation,
|
|
232
|
+
jobId: this._jobId,
|
|
233
|
+
});
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* Polls for job completion via GET requests.
|
|
238
|
+
*
|
|
239
|
+
* @param client - Authenticated Axios instance
|
|
240
|
+
* @returns Processed result
|
|
241
|
+
* @throws Error if polling fails or job fails
|
|
242
|
+
*/
|
|
243
|
+
async tryGetLoop(client) {
|
|
244
|
+
logger.debug('[tryGetLoop] Starting job polling', {
|
|
245
|
+
jobId: this._jobId,
|
|
246
|
+
operation: this.operation,
|
|
247
|
+
});
|
|
248
|
+
// Configure retry handler with longer timeout and retryable status codes
|
|
249
|
+
const retryHandler = new TimeoutRetryHandler({
|
|
250
|
+
maxRetryTimeMs: 2 * 60 * 1000, // 2 minutes max polling time
|
|
251
|
+
retryableStatusCodes: [202], // Retry on "still processing"
|
|
252
|
+
...this._retryOptions,
|
|
253
|
+
});
|
|
254
|
+
return await retryHandler.withRetry(async () => {
|
|
255
|
+
try {
|
|
256
|
+
const endpoint = `${this.path}/${this._jobId}`;
|
|
257
|
+
logger.trace('[tryGetLoop] Polling job status', {
|
|
258
|
+
endpoint,
|
|
259
|
+
jobId: this._jobId,
|
|
260
|
+
});
|
|
261
|
+
const response = await client.get(endpoint);
|
|
262
|
+
// HTTP 200 OK - job completed successfully
|
|
263
|
+
if (response.status === 200) {
|
|
264
|
+
const resultData = response.data.result;
|
|
265
|
+
logger.debug('[tryGetLoop] Job completed', {
|
|
266
|
+
operation: this.operation,
|
|
267
|
+
jobId: this._jobId,
|
|
268
|
+
status: response.data.status,
|
|
269
|
+
});
|
|
270
|
+
const result = this.processSuccessfulResult(resultData);
|
|
271
|
+
this.onProgress({
|
|
272
|
+
status: "get_200",
|
|
273
|
+
});
|
|
274
|
+
return result;
|
|
275
|
+
}
|
|
276
|
+
// HTTP 202 Accepted - job still processing
|
|
277
|
+
if (response.status === 202) {
|
|
278
|
+
// const waitTimeMs = this.extractRetryAfter(response.headers?.['retry-after']);
|
|
279
|
+
const waitTimeMs = 500;
|
|
280
|
+
logger.debug('[tryGetLoop] Job still processing', {
|
|
281
|
+
jobId: this._jobId,
|
|
282
|
+
operation: this.operation,
|
|
283
|
+
retryAfterMs: waitTimeMs,
|
|
284
|
+
});
|
|
285
|
+
this.onProgress({
|
|
286
|
+
status: "get_202",
|
|
287
|
+
});
|
|
288
|
+
// Throw a retryable FheError carrying the server-provided wait time.
|
|
289
|
+
throw new FheError({
|
|
290
|
+
code: FheErrorCode.Network,
|
|
291
|
+
message: 'Job still processing (202 Accepted)',
|
|
292
|
+
retryable: true,
|
|
293
|
+
retryAfterMs: waitTimeMs,
|
|
294
|
+
context: { jobId: this._jobId, status: 202 },
|
|
295
|
+
});
|
|
296
|
+
}
|
|
297
|
+
// Unexpected status
|
|
298
|
+
logger.error('[tryGetLoop] Unsupported response status', {
|
|
299
|
+
status: response.status,
|
|
300
|
+
expected: ['200', '202'],
|
|
301
|
+
jobId: this._jobId,
|
|
302
|
+
});
|
|
303
|
+
throw new FheError({ code: FheErrorCode.JazzUnexpectedResponse, message: `Unsupported response status: ${response.status}` });
|
|
304
|
+
}
|
|
305
|
+
catch (error) {
|
|
306
|
+
this.logError(error);
|
|
307
|
+
this.onProgress({
|
|
308
|
+
status: "get_error",
|
|
309
|
+
error: error?.message,
|
|
310
|
+
});
|
|
311
|
+
throw error;
|
|
312
|
+
}
|
|
313
|
+
}, "tryGetLoop", { jobId: this._jobId, operation: this.operation }, async () => {
|
|
314
|
+
logger.warn('[tryGetLoop] GET retry attempt failed', {
|
|
315
|
+
jobId: this._jobId,
|
|
316
|
+
operation: this.operation,
|
|
317
|
+
});
|
|
318
|
+
});
|
|
319
|
+
}
|
|
320
|
+
/**
|
|
321
|
+
* Processes successful result data based on operation type.
|
|
322
|
+
*
|
|
323
|
+
* @param resultData - Raw result data from the API
|
|
324
|
+
* @returns Typed result object
|
|
325
|
+
* @throws Error if operation is unsupported or result is invalid
|
|
326
|
+
*/
|
|
327
|
+
processSuccessfulResult(resultData) {
|
|
328
|
+
logger.debug('[processSuccessfulResult] Processing result', {
|
|
329
|
+
operation: this.operation,
|
|
330
|
+
resultType: typeof resultData,
|
|
331
|
+
});
|
|
332
|
+
switch (this.operation) {
|
|
333
|
+
case 'INPUT_PROOF': {
|
|
334
|
+
logger.trace('[processSuccessfulResult] Processing INPUT_PROOF result');
|
|
335
|
+
const inputProofResult = resultData;
|
|
336
|
+
if (!inputProofResult.accepted) {
|
|
337
|
+
logger.error('[processSuccessfulResult] INPUT_PROOF rejected');
|
|
338
|
+
throw new FheError({ code: FheErrorCode.JazzRequestRejected, message: 'INPUT_PROOF request rejected' });
|
|
339
|
+
}
|
|
340
|
+
// Type guard for accepted result
|
|
341
|
+
const accepted = inputProofResult;
|
|
342
|
+
const result = {
|
|
343
|
+
extraData: accepted.extraData,
|
|
344
|
+
signatures: accepted.signatures,
|
|
345
|
+
handles: accepted.handles,
|
|
346
|
+
};
|
|
347
|
+
logger.debug('[processSuccessfulResult] INPUT_PROOF processed successfully', {
|
|
348
|
+
signaturesCount: result.signatures.length,
|
|
349
|
+
handlesCount: result.handles.length,
|
|
350
|
+
});
|
|
351
|
+
return result;
|
|
352
|
+
}
|
|
353
|
+
case 'PUBLIC_DECRYPT': {
|
|
354
|
+
logger.trace('[processSuccessfulResult] Processing PUBLIC_DECRYPT result');
|
|
355
|
+
const result = resultData;
|
|
356
|
+
logger.debug('[processSuccessfulResult] PUBLIC_DECRYPT processed successfully', {
|
|
357
|
+
signaturesCount: result.signatures.length,
|
|
358
|
+
hasDecryptedValue: !!result.decryptedValue,
|
|
359
|
+
});
|
|
360
|
+
return result;
|
|
361
|
+
}
|
|
362
|
+
case 'USER_DECRYPT': {
|
|
363
|
+
logger.trace('[processSuccessfulResult] Processing USER_DECRYPT result');
|
|
364
|
+
const userDecryptResult = resultData;
|
|
365
|
+
const result = userDecryptResult.result;
|
|
366
|
+
logger.debug('[processSuccessfulResult] USER_DECRYPT processed successfully', {
|
|
367
|
+
resultCount: result.length,
|
|
368
|
+
});
|
|
369
|
+
return result;
|
|
370
|
+
}
|
|
371
|
+
default: {
|
|
372
|
+
logger.error('[processSuccessfulResult] Unsupported operation', {
|
|
373
|
+
operation: this.operation,
|
|
374
|
+
});
|
|
375
|
+
throw new FheError({ code: FheErrorCode.Unsupported, message: `Unsupported operation: ${this.operation}` });
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
/**
|
|
380
|
+
* Extracts retry-after time from header value.
|
|
381
|
+
* Supports both seconds (numeric) and HTTP-date formats.
|
|
382
|
+
*
|
|
383
|
+
* @param retryAfter - Raw Retry-After header value
|
|
384
|
+
* @returns Wait time in milliseconds, or undefined if parsing fails
|
|
385
|
+
*/
|
|
386
|
+
extractRetryAfter(retryAfter) {
|
|
387
|
+
if (!retryAfter) {
|
|
388
|
+
logger.trace('[extractRetryAfter] No Retry-After header present');
|
|
389
|
+
return undefined;
|
|
390
|
+
}
|
|
391
|
+
logger.trace('[extractRetryAfter] Parsing Retry-After header', {
|
|
392
|
+
rawValue: retryAfter,
|
|
393
|
+
type: typeof retryAfter,
|
|
394
|
+
});
|
|
395
|
+
// Parse Retry-After: can be seconds (number) or HTTP-date (RFC 7231)
|
|
396
|
+
if (typeof retryAfter === 'string') {
|
|
397
|
+
// Try parsing as seconds
|
|
398
|
+
const parsed = parseInt(retryAfter, 10);
|
|
399
|
+
if (!isNaN(parsed)) {
|
|
400
|
+
// Retry-After is in seconds
|
|
401
|
+
const waitMs = parsed * 1000;
|
|
402
|
+
logger.trace('[extractRetryAfter] Parsed as seconds', {
|
|
403
|
+
seconds: parsed,
|
|
404
|
+
waitMs,
|
|
405
|
+
});
|
|
406
|
+
return waitMs;
|
|
407
|
+
}
|
|
408
|
+
else {
|
|
409
|
+
// Try to parse as HTTP-date
|
|
410
|
+
const date = new Date(retryAfter);
|
|
411
|
+
if (!isNaN(date.getTime())) {
|
|
412
|
+
const now = Date.now();
|
|
413
|
+
const waitMs = Math.max(0, date.getTime() - now);
|
|
414
|
+
logger.trace('[extractRetryAfter] Parsed as HTTP-date', {
|
|
415
|
+
date: retryAfter,
|
|
416
|
+
waitMs,
|
|
417
|
+
});
|
|
418
|
+
return waitMs;
|
|
419
|
+
}
|
|
420
|
+
logger.warn('[extractRetryAfter] Failed to parse Retry-After string', {
|
|
421
|
+
value: retryAfter,
|
|
422
|
+
});
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
else if (typeof retryAfter === 'number') {
|
|
426
|
+
const waitMs = retryAfter * 1000;
|
|
427
|
+
logger.trace('[extractRetryAfter] Parsed as numeric seconds', {
|
|
428
|
+
seconds: retryAfter,
|
|
429
|
+
waitMs,
|
|
430
|
+
});
|
|
431
|
+
return waitMs;
|
|
432
|
+
}
|
|
433
|
+
return undefined;
|
|
434
|
+
}
|
|
435
|
+
/**
|
|
436
|
+
* Logs errors with context for debugging.
|
|
437
|
+
*
|
|
438
|
+
* @param error - Error object to log
|
|
439
|
+
*/
|
|
440
|
+
logError(error) {
|
|
441
|
+
const errorContext = {
|
|
442
|
+
operation: this.operation,
|
|
443
|
+
jobId: this._jobId,
|
|
444
|
+
path: this.path,
|
|
445
|
+
};
|
|
446
|
+
if (error.response) {
|
|
447
|
+
const { status, data } = error.response;
|
|
448
|
+
logger.error('[JazzAsyncRequest] HTTP error', {
|
|
449
|
+
...errorContext,
|
|
450
|
+
status,
|
|
451
|
+
data: data?.error || data?.message || data,
|
|
452
|
+
headers: error.response.headers,
|
|
453
|
+
});
|
|
454
|
+
}
|
|
455
|
+
else if (error.request) {
|
|
456
|
+
logger.error('[JazzAsyncRequest] No response received', {
|
|
457
|
+
...errorContext,
|
|
458
|
+
message: error.message,
|
|
459
|
+
});
|
|
460
|
+
}
|
|
461
|
+
else if (isFheError(error)) {
|
|
462
|
+
if (error.retryable) {
|
|
463
|
+
logger.warn('[JazzAsyncRequest] Retryable FHE error', {
|
|
464
|
+
...errorContext,
|
|
465
|
+
code: error.code,
|
|
466
|
+
message: error.message,
|
|
467
|
+
retryAfterMs: error.retryAfterMs,
|
|
468
|
+
});
|
|
469
|
+
}
|
|
470
|
+
else {
|
|
471
|
+
logger.error('[JazzAsyncRequest] FHE error', {
|
|
472
|
+
...errorContext,
|
|
473
|
+
code: error.code,
|
|
474
|
+
message: error.message,
|
|
475
|
+
});
|
|
476
|
+
}
|
|
477
|
+
}
|
|
478
|
+
else if (error.code === 202) {
|
|
479
|
+
logger.trace('[JazzAsyncRequest] 202 accepted', {
|
|
480
|
+
...errorContext,
|
|
481
|
+
message: error.message,
|
|
482
|
+
});
|
|
483
|
+
}
|
|
484
|
+
else {
|
|
485
|
+
logger.error('[JazzAsyncRequest] Request setup error', {
|
|
486
|
+
...errorContext,
|
|
487
|
+
message: error.message,
|
|
488
|
+
stack: error.stack,
|
|
489
|
+
});
|
|
490
|
+
}
|
|
491
|
+
}
|
|
492
|
+
async onProgress(_args) {
|
|
493
|
+
const args = {
|
|
494
|
+
..._args,
|
|
495
|
+
operation: this.operation,
|
|
496
|
+
jobId: this._jobId,
|
|
497
|
+
elapsed: Date.now() - this._startTimestamp,
|
|
498
|
+
};
|
|
499
|
+
const onProgressFunc = this._onProgress;
|
|
500
|
+
if (onProgressFunc) {
|
|
501
|
+
// Promise.resolve().then(() => {
|
|
502
|
+
// onProgressFunc(args);
|
|
503
|
+
// });
|
|
504
|
+
queueMicrotask(() => {
|
|
505
|
+
try {
|
|
506
|
+
onProgressFunc(args);
|
|
507
|
+
}
|
|
508
|
+
catch (error) {
|
|
509
|
+
logger.warn('[JazzAsyncRequest.onProgress] listener failed', { error });
|
|
510
|
+
}
|
|
511
|
+
});
|
|
512
|
+
}
|
|
513
|
+
}
|
|
514
|
+
}
|
|
515
|
+
//# sourceMappingURL=jazz-async-request.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jazz-async-request.js","sourceRoot":"","sources":["../../../src/jazz/module/jazz-async-request.ts"],"names":[],"mappings":"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"}
|