@miden-sdk/miden-sdk 0.13.0-next.1 → 0.13.0-next.2

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.
Binary file
@@ -1,5 +1,9 @@
1
1
  /* tslint:disable */
2
2
  /* eslint-disable */
3
+ /**
4
+ * Create an auth component for `RpoFalcon512` multisig.
5
+ */
6
+ export function createAuthRpoFalcon512Multisig(config: AuthRpoFalcon512MultisigConfig): AccountComponent;
3
7
  export enum AccountInterface {
4
8
  BasicWallet = 0,
5
9
  }
@@ -316,6 +320,33 @@ export class AssetVault {
316
320
  getBalance(faucet_id: AccountId): bigint;
317
321
  fungibleAssets(): FungibleAsset[];
318
322
  }
323
+ /**
324
+ * Multisig auth configuration for `RpoFalcon512` signatures.
325
+ */
326
+ export class AuthRpoFalcon512MultisigConfig {
327
+ free(): void;
328
+ [Symbol.dispose](): void;
329
+ /**
330
+ * Build a configuration with a list of approver public key commitments and a default
331
+ * threshold.
332
+ *
333
+ * `default_threshold` must be >= 1 and <= `approvers.length`.
334
+ */
335
+ constructor(approvers: Word[], default_threshold: number);
336
+ /**
337
+ * Attach per-procedure thresholds. Each threshold must be >= 1 and <= `approvers.length`.
338
+ */
339
+ withProcThresholds(proc_thresholds: ProcedureThreshold[]): AuthRpoFalcon512MultisigConfig;
340
+ /**
341
+ * Per-procedure thresholds.
342
+ */
343
+ getProcThresholds(): ProcedureThreshold[];
344
+ readonly defaultThreshold: number;
345
+ /**
346
+ * Approver public key commitments as Words.
347
+ */
348
+ readonly approvers: Word[];
349
+ }
319
350
  export class AuthSecretKey {
320
351
  private constructor();
321
352
  free(): void;
@@ -1204,6 +1235,13 @@ export class PartialNote {
1204
1235
  recipientDigest(): Word;
1205
1236
  assets(): NoteAssets;
1206
1237
  }
1238
+ export class ProcedureThreshold {
1239
+ free(): void;
1240
+ [Symbol.dispose](): void;
1241
+ constructor(proc_root: Word, threshold: number);
1242
+ readonly procRoot: Word;
1243
+ readonly threshold: number;
1244
+ }
1207
1245
  export class Program {
1208
1246
  private constructor();
1209
1247
  free(): void;
@@ -1678,6 +1716,10 @@ export class TransactionSummary {
1678
1716
  inputNotes(): InputNotes;
1679
1717
  outputNotes(): OutputNotes;
1680
1718
  salt(): Word;
1719
+ /**
1720
+ * Computes the commitment to this `TransactionSummary`.
1721
+ */
1722
+ toCommitment(): Word;
1681
1723
  }
1682
1724
  export class WebClient {
1683
1725
  free(): void;
@@ -1738,6 +1780,18 @@ export class WebClient {
1738
1780
  * the chain tip is performed, and the required block header is retrieved.
1739
1781
  */
1740
1782
  executeTransaction(account_id: AccountId, transaction_request: TransactionRequest): Promise<TransactionResult>;
1783
+ /**
1784
+ * Executes a transaction and returns the `TransactionSummary`.
1785
+ *
1786
+ * If the transaction is unauthorized (auth script emits the unauthorized event),
1787
+ * returns the summary from the error. If the transaction succeeds, constructs
1788
+ * a summary from the executed transaction using the `auth_arg` from the transaction
1789
+ * request as the salt (or a zero salt if not provided).
1790
+ *
1791
+ * # Errors
1792
+ * - If there is an internal failure during execution.
1793
+ */
1794
+ executeForSummary(account_id: AccountId, transaction_request: TransactionRequest): Promise<TransactionSummary>;
1741
1795
  /**
1742
1796
  * Generates a transaction proof using either the provided prover or the client's default
1743
1797
  * prover if none is supplied.
package/dist/index.d.ts CHANGED
@@ -17,6 +17,7 @@ export {
17
17
  Address,
18
18
  AddressInterface,
19
19
  AdviceMap,
20
+ AuthRpoFalcon512MultisigConfig,
20
21
  Assembler,
21
22
  AssemblerUtils,
22
23
  AuthSecretKey,
@@ -56,6 +57,7 @@ export {
56
57
  OutputNote,
57
58
  OutputNotesArray,
58
59
  Package,
60
+ ProcedureThreshold,
59
61
  PublicKey,
60
62
  Rpo256,
61
63
  RpcClient,
@@ -85,6 +87,7 @@ export {
85
87
  TransactionScriptInputPairArray,
86
88
  TransactionSummary,
87
89
  Word,
90
+ createAuthRpoFalcon512Multisig,
88
91
  } from "./crates/miden_client_web";
89
92
 
90
93
  // Extend WASM WebClient but override methods that use workers
@@ -103,6 +106,23 @@ export declare class WebClient extends WasmWebClient {
103
106
  seed?: string
104
107
  ): Promise<WebClient & WasmWebClient>;
105
108
 
109
+ static createClientWithExternalKeystore(
110
+ rpcUrl?: string,
111
+ noteTransportUrl?: string,
112
+ seed?: string,
113
+ getKeyCb?: (
114
+ pubKey: Uint8Array
115
+ ) => Promise<Uint8Array | null | undefined> | Uint8Array | null | undefined,
116
+ insertKeyCb?: (
117
+ pubKey: Uint8Array,
118
+ secretKey: Uint8Array
119
+ ) => Promise<void> | void,
120
+ signCb?: (
121
+ pubKey: Uint8Array,
122
+ signingInputs: Uint8Array
123
+ ) => Promise<Uint8Array> | Uint8Array
124
+ ): Promise<WebClient & WasmWebClient>;
125
+
106
126
  /** Returns the default transaction prover configured on the client. */
107
127
  defaultTransactionProver(): TransactionProver;
108
128
 
package/dist/index.js CHANGED
@@ -1,9 +1,16 @@
1
1
  import loadWasm from './wasm.js';
2
- export { Account, AccountArray, AccountBuilder, AccountBuilderResult, AccountCode, AccountComponent, AccountDelta, AccountFile, AccountHeader, AccountId, AccountIdArray, AccountInterface, AccountStorage, AccountStorageDelta, AccountStorageMode, AccountStorageRequirements, AccountType, AccountVaultDelta, Address, AdviceInputs, AdviceMap, AssetVault, AuthSecretKey, BasicFungibleFaucetComponent, BlockHeader, ConsumableNoteRecord, Endpoint, ExecutedTransaction, Felt, FeltArray, FetchedNote, FlattenedU8Vec, ForeignAccount, ForeignAccountArray, FungibleAsset, FungibleAssetDelta, FungibleAssetDeltaItem, GetProceduresResultItem, InputNote, InputNoteRecord, InputNoteState, InputNotes, IntoUnderlyingByteSource, IntoUnderlyingSink, IntoUnderlyingSource, JsAccountUpdate, JsStateSyncUpdate, JsStorageMapEntry, JsStorageSlot, JsVaultAsset, Library, MerklePath, NetworkId, Note, NoteAndArgs, NoteAndArgsArray, NoteAssets, NoteConsumability, NoteDetails, NoteDetailsAndTag, NoteDetailsAndTagArray, NoteExecutionHint, NoteExecutionMode, NoteFile, NoteFilter, NoteFilterTypes, NoteHeader, NoteId, NoteIdAndArgs, NoteIdAndArgsArray, NoteInclusionProof, NoteInputs, NoteLocation, NoteMetadata, NoteRecipient, NoteRecipientArray, NoteScript, NoteTag, NoteType, OutputNote, OutputNoteArray, OutputNotes, OutputNotesArray, Package, PartialNote, Program, ProvenTransaction, PublicKey, RpcClient, Rpo256, ScriptBuilder, SecretKey, SerializedInputNoteData, SerializedOutputNoteData, SerializedTransactionData, Signature, SigningInputs, SigningInputsType, SlotAndKeys, StorageMap, StorageSlot, StorageSlotArray, SyncSummary, TestUtils, TokenSymbol, TransactionArgs, TransactionFilter, TransactionId, TransactionProver, TransactionRecord, TransactionRequest, TransactionRequestBuilder, TransactionResult, TransactionScript, TransactionScriptInputPair, TransactionScriptInputPairArray, TransactionStatus, TransactionStoreUpdate, TransactionSummary, Word, initSync } from './Cargo-15e14c5a.js';
2
+ export { Account, AccountArray, AccountBuilder, AccountBuilderResult, AccountCode, AccountComponent, AccountDelta, AccountFile, AccountHeader, AccountId, AccountIdArray, AccountInterface, AccountStorage, AccountStorageDelta, AccountStorageMode, AccountStorageRequirements, AccountType, AccountVaultDelta, Address, AdviceInputs, AdviceMap, AssetVault, AuthRpoFalcon512MultisigConfig, AuthSecretKey, BasicFungibleFaucetComponent, BlockHeader, ConsumableNoteRecord, Endpoint, ExecutedTransaction, Felt, FeltArray, FetchedNote, FlattenedU8Vec, ForeignAccount, ForeignAccountArray, FungibleAsset, FungibleAssetDelta, FungibleAssetDeltaItem, GetProceduresResultItem, InputNote, InputNoteRecord, InputNoteState, InputNotes, IntoUnderlyingByteSource, IntoUnderlyingSink, IntoUnderlyingSource, JsAccountUpdate, JsStateSyncUpdate, JsStorageMapEntry, JsStorageSlot, JsVaultAsset, Library, MerklePath, NetworkId, Note, NoteAndArgs, NoteAndArgsArray, NoteAssets, NoteConsumability, NoteDetails, NoteDetailsAndTag, NoteDetailsAndTagArray, NoteExecutionHint, NoteExecutionMode, NoteFile, NoteFilter, NoteFilterTypes, NoteHeader, NoteId, NoteIdAndArgs, NoteIdAndArgsArray, NoteInclusionProof, NoteInputs, NoteLocation, NoteMetadata, NoteRecipient, NoteRecipientArray, NoteScript, NoteTag, NoteType, OutputNote, OutputNoteArray, OutputNotes, OutputNotesArray, Package, PartialNote, ProcedureThreshold, Program, ProvenTransaction, PublicKey, RpcClient, Rpo256, ScriptBuilder, SecretKey, SerializedInputNoteData, SerializedOutputNoteData, SerializedTransactionData, Signature, SigningInputs, SigningInputsType, SlotAndKeys, StorageMap, StorageSlot, StorageSlotArray, SyncSummary, TestUtils, TokenSymbol, TransactionArgs, TransactionFilter, TransactionId, TransactionProver, TransactionRecord, TransactionRequest, TransactionRequestBuilder, TransactionResult, TransactionScript, TransactionScriptInputPair, TransactionScriptInputPairArray, TransactionStatus, TransactionStoreUpdate, TransactionSummary, Word, createAuthRpoFalcon512Multisig, initSync } from './Cargo-c25ff7e6.js';
3
3
 
4
4
  const WorkerAction = Object.freeze({
5
5
  INIT: "init",
6
6
  CALL_METHOD: "callMethod",
7
+ EXECUTE_CALLBACK: "executeCallback",
8
+ });
9
+
10
+ const CallbackType = Object.freeze({
11
+ GET_KEY: "getKey",
12
+ INSERT_KEY: "insertKey",
13
+ SIGN: "sign",
7
14
  });
8
15
 
9
16
  const MethodName = Object.freeze({
@@ -120,12 +127,7 @@ class WebClient {
120
127
  this.signCb = signCb;
121
128
 
122
129
  // Check if Web Workers are available.
123
- if (
124
- typeof Worker !== "undefined" &&
125
- !this.getKeyCb &&
126
- !this.insertKeyCb &&
127
- !this.signCb
128
- ) {
130
+ if (typeof Worker !== "undefined") {
129
131
  console.log("WebClient: Web Workers are available.");
130
132
  // Create the worker.
131
133
  this.worker = new Worker(
@@ -147,7 +149,7 @@ class WebClient {
147
149
  });
148
150
 
149
151
  // Listen for messages from the worker.
150
- this.worker.addEventListener("message", (event) => {
152
+ this.worker.addEventListener("message", async (event) => {
151
153
  const data = event.data;
152
154
 
153
155
  // Worker script loaded.
@@ -162,6 +164,36 @@ class WebClient {
162
164
  return;
163
165
  }
164
166
 
167
+ if (data.action === WorkerAction.EXECUTE_CALLBACK) {
168
+ const { callbackType, args, requestId } = data;
169
+ try {
170
+ const callbackMapping = {
171
+ [CallbackType.GET_KEY]: this.getKeyCb,
172
+ [CallbackType.INSERT_KEY]: this.insertKeyCb,
173
+ [CallbackType.SIGN]: this.signCb,
174
+ };
175
+ if (!callbackMapping[callbackType]) {
176
+ throw new Error(`Callback ${callbackType} not available`);
177
+ }
178
+ const callbackFunction = callbackMapping[callbackType];
179
+ let result = callbackFunction.apply(this, args);
180
+ if (result instanceof Promise) {
181
+ result = await result;
182
+ }
183
+
184
+ this.worker.postMessage({
185
+ callbackResult: result,
186
+ callbackRequestId: requestId,
187
+ });
188
+ } catch (error) {
189
+ this.worker.postMessage({
190
+ callbackError: error.message,
191
+ callbackRequestId: requestId,
192
+ });
193
+ }
194
+ return;
195
+ }
196
+
165
197
  // Handle responses for method calls.
166
198
  const { requestId, error, result, methodName } = data;
167
199
  if (requestId && this.pendingRequests.has(requestId)) {
@@ -187,9 +219,9 @@ class WebClient {
187
219
  this.rpcUrl,
188
220
  this.noteTransportUrl,
189
221
  this.seed,
190
- this.getKeyCb,
191
- this.insertKeyCb,
192
- this.signCb,
222
+ !!this.getKeyCb,
223
+ !!this.insertKeyCb,
224
+ !!this.signCb,
193
225
  ],
194
226
  });
195
227
  });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../js/constants.js","../js/index.js"],"sourcesContent":["export const WorkerAction = Object.freeze({\n INIT: \"init\",\n CALL_METHOD: \"callMethod\",\n});\n\nexport const MethodName = Object.freeze({\n CREATE_CLIENT: \"createClient\",\n NEW_WALLET: \"newWallet\",\n NEW_FAUCET: \"newFaucet\",\n EXECUTE_TRANSACTION: \"executeTransaction\",\n PROVE_TRANSACTION: \"proveTransaction\",\n SUBMIT_NEW_TRANSACTION: \"submitNewTransaction\",\n SUBMIT_NEW_TRANSACTION_MOCK: \"submitNewTransactionMock\",\n SYNC_STATE: \"syncState\",\n SYNC_STATE_MOCK: \"syncStateMock\",\n});\n","import loadWasm from \"./wasm.js\";\nimport { MethodName, WorkerAction } from \"./constants.js\";\nexport * from \"../Cargo.toml\";\n\nconst buildTypedArraysExport = (exportObject) => {\n return Object.entries(exportObject).reduce(\n (exports, [exportName, _export]) => {\n if (exportName.endsWith(\"Array\")) {\n exports[exportName] = _export;\n }\n return exports;\n },\n {}\n );\n};\n\nexport const MidenArrays = {};\n\nlet wasmModule = null;\nlet wasmLoadPromise = null;\nlet webClientStaticsCopied = false;\n\nconst ensureWasm = async () => {\n if (wasmModule) {\n return wasmModule;\n }\n if (!wasmLoadPromise) {\n wasmLoadPromise = loadWasm().then((module) => {\n wasmModule = module;\n if (module) {\n Object.assign(MidenArrays, buildTypedArraysExport(module));\n if (!webClientStaticsCopied && module.WebClient) {\n copyWebClientStatics(module.WebClient);\n webClientStaticsCopied = true;\n }\n }\n return module;\n });\n }\n return wasmLoadPromise;\n};\n\nconst getWasmOrThrow = async () => {\n const module = await ensureWasm();\n if (!module) {\n throw new Error(\n \"Miden WASM bindings are unavailable in this environment (SSR is disabled).\"\n );\n }\n return module;\n};\n/**\n * WebClient is a wrapper around the underlying WASM WebClient object.\n *\n * This wrapper serves several purposes:\n *\n * 1. It creates a dedicated web worker to offload computationally heavy tasks\n * (such as creating accounts, executing transactions, submitting transactions, etc.)\n * from the main thread, helping to prevent UI freezes in the browser.\n *\n * 2. It defines methods that mirror the API of the underlying WASM WebClient,\n * with the intention of executing these functions via the web worker. This allows us\n * to maintain the same API and parameters while benefiting from asynchronous, worker-based computation.\n *\n * 3. It employs a Proxy to forward any calls not designated for web worker computation\n * directly to the underlying WASM WebClient instance.\n *\n * Additionally, the wrapper provides a static createClient function. This static method\n * instantiates the WebClient object and ensures that the necessary createClient calls are\n * performed both in the main thread and within the worker thread. This dual initialization\n * correctly passes user parameters (RPC URL and seed) to both the main-thread\n * WASM WebClient and the worker-side instance.\n *\n * Because of this implementation, the only breaking change for end users is in the way the\n * web client is instantiated. Users should now use the WebClient.createClient static call.\n */\nexport class WebClient {\n /**\n * Create a WebClient wrapper.\n *\n * @param {string | undefined} rpcUrl - RPC endpoint URL used by the client.\n * @param {Uint8Array | undefined} seed - Optional seed for account initialization.\n * @param {(pubKey: Uint8Array) => Promise<Uint8Array | null | undefined> | Uint8Array | null | undefined} [getKeyCb]\n * - Callback to retrieve the secret key bytes for a given public key. The `pubKey`\n * parameter is the serialized public key (from `PublicKey.serialize()`). Return the\n * corresponding secret key as a `Uint8Array`, or `null`/`undefined` if not found. The\n * return value may be provided synchronously or via a `Promise`.\n * @param {(pubKey: Uint8Array, secretKey: Uint8Array) => Promise<void> | void} [insertKeyCb]\n * - Callback to persist a secret key. `pubKey` is the serialized public key, and\n * `secretKey` is the serialized secret key (from `SecretKey.serialize()`). May return\n * `void` or a `Promise<void>`.\n * @param {(pubKey: Uint8Array, signingInputs: Uint8Array) => Promise<Array<number | string>> | Array<number | string>} [signCb]\n * - Callback to produce signature elements for the provided inputs. `pubKey` is the\n * serialized public key, and `signingInputs` is a `Uint8Array` produced by\n * `SigningInputs.serialize()`. Must return an array of numeric values (numbers or numeric\n * strings) representing the signature elements, either directly or wrapped in a `Promise`.\n */\n constructor(rpcUrl, noteTransportUrl, seed, getKeyCb, insertKeyCb, signCb) {\n this.rpcUrl = rpcUrl;\n this.noteTransportUrl = noteTransportUrl;\n this.seed = seed;\n this.getKeyCb = getKeyCb;\n this.insertKeyCb = insertKeyCb;\n this.signCb = signCb;\n\n // Check if Web Workers are available.\n if (\n typeof Worker !== \"undefined\" &&\n !this.getKeyCb &&\n !this.insertKeyCb &&\n !this.signCb\n ) {\n console.log(\"WebClient: Web Workers are available.\");\n // Create the worker.\n this.worker = new Worker(\n new URL(\"./workers/web-client-methods-worker.js\", import.meta.url),\n { type: \"module\" }\n );\n\n // Map to track pending worker requests.\n this.pendingRequests = new Map();\n\n // Promises to track when the worker script is loaded and ready.\n this.loaded = new Promise((resolve) => {\n this.loadedResolver = resolve;\n });\n\n // Create a promise that resolves when the worker signals that it is fully initialized.\n this.ready = new Promise((resolve) => {\n this.readyResolver = resolve;\n });\n\n // Listen for messages from the worker.\n this.worker.addEventListener(\"message\", (event) => {\n const data = event.data;\n\n // Worker script loaded.\n if (data.loaded) {\n this.loadedResolver();\n return;\n }\n\n // Worker ready.\n if (data.ready) {\n this.readyResolver();\n return;\n }\n\n // Handle responses for method calls.\n const { requestId, error, result, methodName } = data;\n if (requestId && this.pendingRequests.has(requestId)) {\n const { resolve, reject } = this.pendingRequests.get(requestId);\n this.pendingRequests.delete(requestId);\n if (error) {\n console.error(\n `WebClient: Error from worker in ${methodName}:`,\n error\n );\n reject(new Error(error));\n } else {\n resolve(result);\n }\n }\n });\n\n // Once the worker script has loaded, initialize the worker.\n this.loaded.then(() => {\n this.worker.postMessage({\n action: WorkerAction.INIT,\n args: [\n this.rpcUrl,\n this.noteTransportUrl,\n this.seed,\n this.getKeyCb,\n this.insertKeyCb,\n this.signCb,\n ],\n });\n });\n } else {\n console.log(\"WebClient: Web Workers are not available.\");\n // Worker not available; set up fallback values.\n this.worker = null;\n this.pendingRequests = null;\n this.loaded = Promise.resolve();\n this.ready = Promise.resolve();\n }\n\n // Lazy initialize the underlying WASM WebClient when first requested.\n this.wasmWebClient = null;\n this.wasmWebClientPromise = null;\n }\n\n async getWasmWebClient() {\n if (this.wasmWebClient) {\n return this.wasmWebClient;\n }\n if (!this.wasmWebClientPromise) {\n this.wasmWebClientPromise = (async () => {\n const wasm = await getWasmOrThrow();\n const client = new wasm.WebClient();\n this.wasmWebClient = client;\n return client;\n })();\n }\n return this.wasmWebClientPromise;\n }\n\n /**\n * Factory method to create and initialize a WebClient instance.\n * This method is async so you can await the asynchronous call to createClient().\n *\n * @param {string} rpcUrl - The RPC URL.\n * @param {string} noteTransportUrl - The note transport URL (optional).\n * @param {string} seed - The seed for the account.\n * @returns {Promise<WebClient>} The fully initialized WebClient.\n */\n static async createClient(rpcUrl, noteTransportUrl, seed) {\n // Construct the instance (synchronously).\n const instance = new WebClient(rpcUrl, noteTransportUrl, seed);\n\n // Wait for the underlying wasmWebClient to be initialized.\n const wasmWebClient = await instance.getWasmWebClient();\n await wasmWebClient.createClient(rpcUrl, noteTransportUrl, seed);\n\n // Wait for the worker to be ready\n await instance.ready;\n\n // Return a proxy that forwards missing properties to wasmWebClient.\n return new Proxy(instance, {\n get(target, prop, receiver) {\n // If the property exists on the wrapper, return it.\n if (prop in target) {\n return Reflect.get(target, prop, receiver);\n }\n // Otherwise, if the wasmWebClient has it, return that.\n if (target.wasmWebClient && prop in target.wasmWebClient) {\n const value = target.wasmWebClient[prop];\n if (typeof value === \"function\") {\n return value.bind(target.wasmWebClient);\n }\n return value;\n }\n return undefined;\n },\n });\n }\n\n /**\n * Factory method to create and initialize a WebClient instance with a remote keystore.\n * This method is async so you can await the asynchronous call to createClientWithExternalKeystore().\n *\n * @param {string} rpcUrl - The RPC URL.\n * @param {string | undefined} noteTransportUrl - The note transport URL (optional).\n * @param {string | undefined} seed - The seed for the account.\n * @param {Function | undefined} getKeyCb - The get key callback.\n * @param {Function | undefined} insertKeyCb - The insert key callback.\n * @param {Function | undefined} signCb - The sign callback.\n * @returns {Promise<WebClient>} The fully initialized WebClient.\n */\n static async createClientWithExternalKeystore(\n rpcUrl,\n noteTransportUrl,\n seed,\n getKeyCb,\n insertKeyCb,\n signCb\n ) {\n // Construct the instance (synchronously).\n const instance = new WebClient(\n rpcUrl,\n noteTransportUrl,\n seed,\n getKeyCb,\n insertKeyCb,\n signCb\n );\n const wasmWebClient = await instance.getWasmWebClient();\n await wasmWebClient.createClientWithExternalKeystore(\n rpcUrl,\n noteTransportUrl,\n seed,\n getKeyCb,\n insertKeyCb,\n signCb\n );\n await instance.ready;\n // Return a proxy that forwards missing properties to wasmWebClient.\n return new Proxy(instance, {\n get(target, prop, receiver) {\n // If the property exists on the wrapper, return it.\n if (prop in target) {\n return Reflect.get(target, prop, receiver);\n }\n // Otherwise, if the wasmWebClient has it, return that.\n if (target.wasmWebClient && prop in target.wasmWebClient) {\n const value = target.wasmWebClient[prop];\n if (typeof value === \"function\") {\n return value.bind(target.wasmWebClient);\n }\n return value;\n }\n return undefined;\n },\n });\n }\n\n /**\n * Call a method via the worker.\n * @param {string} methodName - Name of the method to call.\n * @param {...any} args - Arguments for the method.\n * @returns {Promise<any>}\n */\n async callMethodWithWorker(methodName, ...args) {\n await this.ready;\n // Create a unique request ID.\n const requestId = `${methodName}-${Date.now()}-${Math.random()}`;\n return new Promise((resolve, reject) => {\n // Save the resolve and reject callbacks in the pendingRequests map.\n this.pendingRequests.set(requestId, { resolve, reject });\n // Send the method call request to the worker.\n this.worker.postMessage({\n action: WorkerAction.CALL_METHOD,\n methodName,\n args,\n requestId,\n });\n });\n }\n\n // ----- Explicitly Wrapped Methods (Worker-Forwarded) -----\n\n async newWallet(storageMode, mutable, authSchemeId, seed) {\n try {\n if (!this.worker) {\n const wasmWebClient = await this.getWasmWebClient();\n return await wasmWebClient.newWallet(\n storageMode,\n mutable,\n authSchemeId,\n seed\n );\n }\n const wasm = await getWasmOrThrow();\n const serializedStorageMode = storageMode.asStr();\n const serializedAccountBytes = await this.callMethodWithWorker(\n MethodName.NEW_WALLET,\n serializedStorageMode,\n mutable,\n authSchemeId,\n seed\n );\n return wasm.Account.deserialize(new Uint8Array(serializedAccountBytes));\n } catch (error) {\n console.error(\"INDEX.JS: Error in newWallet:\", error.toString());\n throw error;\n }\n }\n\n async newFaucet(\n storageMode,\n nonFungible,\n tokenSymbol,\n decimals,\n maxSupply,\n authSchemeId\n ) {\n try {\n if (!this.worker) {\n const wasmWebClient = await this.getWasmWebClient();\n return await wasmWebClient.newFaucet(\n storageMode,\n nonFungible,\n tokenSymbol,\n decimals,\n maxSupply,\n authSchemeId\n );\n }\n const wasm = await getWasmOrThrow();\n const serializedStorageMode = storageMode.asStr();\n const serializedMaxSupply = maxSupply.toString();\n const serializedAccountBytes = await this.callMethodWithWorker(\n MethodName.NEW_FAUCET,\n serializedStorageMode,\n nonFungible,\n tokenSymbol,\n decimals,\n serializedMaxSupply,\n authSchemeId\n );\n\n return wasm.Account.deserialize(new Uint8Array(serializedAccountBytes));\n } catch (error) {\n console.error(\"INDEX.JS: Error in newFaucet:\", error.toString());\n throw error;\n }\n }\n\n async submitNewTransaction(accountId, transactionRequest) {\n try {\n if (!this.worker) {\n const wasmWebClient = await this.getWasmWebClient();\n return await wasmWebClient.submitNewTransaction(\n accountId,\n transactionRequest\n );\n }\n\n const wasm = await getWasmOrThrow();\n const serializedTransactionRequest = transactionRequest.serialize();\n const result = await this.callMethodWithWorker(\n MethodName.SUBMIT_NEW_TRANSACTION,\n accountId.toString(),\n serializedTransactionRequest\n );\n\n const transactionResult = wasm.TransactionResult.deserialize(\n new Uint8Array(result.serializedTransactionResult)\n );\n\n return transactionResult.id();\n } catch (error) {\n console.error(\n \"INDEX.JS: Error in submitNewTransaction:\",\n error.toString()\n );\n throw error;\n }\n }\n\n async executeTransaction(accountId, transactionRequest) {\n try {\n if (!this.worker) {\n const wasmWebClient = await this.getWasmWebClient();\n return await wasmWebClient.executeTransaction(\n accountId,\n transactionRequest\n );\n }\n\n const wasm = await getWasmOrThrow();\n const serializedTransactionRequest = transactionRequest.serialize();\n const serializedResultBytes = await this.callMethodWithWorker(\n MethodName.EXECUTE_TRANSACTION,\n accountId.toString(),\n serializedTransactionRequest\n );\n\n return wasm.TransactionResult.deserialize(\n new Uint8Array(serializedResultBytes)\n );\n } catch (error) {\n console.error(\"INDEX.JS: Error in executeTransaction:\", error.toString());\n throw error;\n }\n }\n\n async submitTransaction(transactionResult, prover) {\n try {\n if (!this.worker) {\n const wasmWebClient = await this.getWasmWebClient();\n const proven = await wasmWebClient.proveTransaction(\n transactionResult,\n prover\n );\n const submissionHeight = await wasmWebClient.submitProvenTransaction(\n proven,\n transactionResult\n );\n return await wasmWebClient.applyTransaction(\n transactionResult,\n submissionHeight\n );\n }\n\n const wasm = await getWasmOrThrow();\n const serializedTransactionResult = transactionResult.serialize();\n const proverPayload = prover ? prover.serialize() : null;\n\n const { submissionHeight, serializedTransactionUpdate } =\n await this.callMethodWithWorker(\n MethodName.SUBMIT_TRANSACTION,\n serializedTransactionResult,\n proverPayload\n );\n\n if (this instanceof MockWebClient) {\n return wasm.TransactionStoreUpdate.deserialize(\n new Uint8Array(serializedTransactionUpdate)\n );\n }\n\n const wasmWebClient = await this.getWasmWebClient();\n return await wasmWebClient.applyTransaction(\n transactionResult,\n submissionHeight\n );\n } catch (error) {\n console.error(\"INDEX.JS: Error in submitTransaction:\", error.toString());\n throw error;\n }\n }\n\n async proveTransaction(transactionResult, prover) {\n try {\n if (!this.worker) {\n const wasmWebClient = await this.getWasmWebClient();\n return await wasmWebClient.proveTransaction(transactionResult, prover);\n }\n\n const wasm = await getWasmOrThrow();\n const serializedTransactionResult = transactionResult.serialize();\n const proverPayload = prover ? prover.serialize() : null;\n\n const serializedProvenBytes = await this.callMethodWithWorker(\n MethodName.PROVE_TRANSACTION,\n serializedTransactionResult,\n proverPayload\n );\n\n return wasm.ProvenTransaction.deserialize(\n new Uint8Array(serializedProvenBytes)\n );\n } catch (error) {\n console.error(\"INDEX.JS: Error in proveTransaction:\", error.toString());\n throw error;\n }\n }\n\n async syncState() {\n try {\n if (!this.worker) {\n const wasmWebClient = await this.getWasmWebClient();\n return await wasmWebClient.syncState();\n }\n\n const wasm = await getWasmOrThrow();\n const serializedSyncSummaryBytes = await this.callMethodWithWorker(\n MethodName.SYNC_STATE\n );\n\n return wasm.SyncSummary.deserialize(\n new Uint8Array(serializedSyncSummaryBytes)\n );\n } catch (error) {\n console.error(\"INDEX.JS: Error in syncState:\", error.toString());\n throw error;\n }\n }\n\n terminate() {\n if (this.worker) {\n this.worker.terminate();\n }\n }\n}\n\nexport class MockWebClient extends WebClient {\n constructor(seed) {\n super(null, seed);\n }\n\n /**\n * Factory method to create a WebClient with a mock chain for testing purposes.\n *\n * @param serializedMockChain - Serialized mock chain data (optional). Will use an empty chain if not provided.\n * @param serializedMockNoteTransportNode - Serialized mock note transport node data (optional). Will use a new instance if not provided.\n * @param seed - The seed for the account (optional).\n * @returns A promise that resolves to a MockWebClient.\n */\n static async createClient(\n serializedMockChain,\n serializedMockNoteTransportNode,\n seed\n ) {\n // Construct the instance (synchronously).\n const instance = new MockWebClient(seed);\n\n // Wait for the underlying wasmWebClient to be initialized.\n const wasmWebClient = await instance.getWasmWebClient();\n await wasmWebClient.createMockClient(\n seed,\n serializedMockChain,\n serializedMockNoteTransportNode\n );\n\n // Wait for the worker to be ready\n await instance.ready;\n\n // Return a proxy that forwards missing properties to wasmWebClient.\n return new Proxy(instance, {\n get(target, prop, receiver) {\n // If the property exists on the wrapper, return it.\n if (prop in target) {\n return Reflect.get(target, prop, receiver);\n }\n // Otherwise, if the wasmWebClient has it, return that.\n if (target.wasmWebClient && prop in target.wasmWebClient) {\n const value = target.wasmWebClient[prop];\n if (typeof value === \"function\") {\n return value.bind(target.wasmWebClient);\n }\n return value;\n }\n return undefined;\n },\n });\n }\n\n async syncState() {\n try {\n const wasmWebClient = await this.getWasmWebClient();\n if (!this.worker) {\n return await wasmWebClient.syncState();\n }\n\n let serializedMockChain = wasmWebClient.serializeMockChain().buffer;\n let serializedMockNoteTransportNode =\n wasmWebClient.serializeMockNoteTransportNode().buffer;\n\n const wasm = await getWasmOrThrow();\n\n const serializedSyncSummaryBytes = await this.callMethodWithWorker(\n MethodName.SYNC_STATE_MOCK,\n serializedMockChain,\n serializedMockNoteTransportNode\n );\n\n return wasm.SyncSummary.deserialize(\n new Uint8Array(serializedSyncSummaryBytes)\n );\n } catch (error) {\n console.error(\"INDEX.JS: Error in syncState:\", error.toString());\n throw error;\n }\n }\n\n async submitTransaction(transactionResult, prover) {\n try {\n if (!this.worker) {\n return await super.submitTransaction(transactionResult, prover);\n }\n\n const wasmWebClient = await this.getWasmWebClient();\n const wasm = await getWasmOrThrow();\n const serializedTransactionResult = transactionResult.serialize();\n const proverPayload = prover ? prover.serialize() : null;\n const serializedMockChain = wasmWebClient.serializeMockChain().buffer;\n const serializedMockNoteTransportNode =\n wasmWebClient.serializeMockNoteTransportNode().buffer;\n\n const result = await this.callMethodWithWorker(\n MethodName.SUBMIT_TRANSACTION_MOCK,\n serializedTransactionResult,\n proverPayload,\n serializedMockChain,\n serializedMockNoteTransportNode\n );\n const newMockChain = new Uint8Array(result.serializedMockChain);\n const newMockNoteTransportNode = result.serializedMockNoteTransportNode\n ? new Uint8Array(result.serializedMockNoteTransportNode)\n : undefined;\n\n if (!(this instanceof MockWebClient)) {\n return await wasmWebClient.applyTransaction(\n transactionResult,\n result.submissionHeight\n );\n }\n\n this.wasmWebClient = new wasm.WebClient();\n this.wasmWebClientPromise = Promise.resolve(this.wasmWebClient);\n await this.wasmWebClient.createMockClient(\n this.seed,\n newMockChain,\n newMockNoteTransportNode\n );\n\n return wasm.TransactionStoreUpdate.deserialize(\n new Uint8Array(result.serializedTransactionUpdate)\n );\n } catch (error) {\n console.error(\"INDEX.JS: Error in submitTransaction:\", error.toString());\n throw error;\n }\n }\n\n async submitNewTransaction(accountId, transactionRequest) {\n try {\n if (!this.worker) {\n return await super.submitNewTransaction(accountId, transactionRequest);\n }\n\n const wasmWebClient = await this.getWasmWebClient();\n const wasm = await getWasmOrThrow();\n const serializedTransactionRequest = transactionRequest.serialize();\n const serializedMockChain = wasmWebClient.serializeMockChain().buffer;\n const serializedMockNoteTransportNode =\n wasmWebClient.serializeMockNoteTransportNode().buffer;\n\n const result = await this.callMethodWithWorker(\n MethodName.SUBMIT_NEW_TRANSACTION_MOCK,\n accountId.toString(),\n serializedTransactionRequest,\n serializedMockChain,\n serializedMockNoteTransportNode\n );\n\n const newMockChain = new Uint8Array(result.serializedMockChain);\n const newMockNoteTransportNode = result.serializedMockNoteTransportNode\n ? new Uint8Array(result.serializedMockNoteTransportNode)\n : undefined;\n\n const transactionResult = wasm.TransactionResult.deserialize(\n new Uint8Array(result.serializedTransactionResult)\n );\n\n if (!(this instanceof MockWebClient)) {\n return transactionResult.id();\n }\n\n this.wasmWebClient = new wasm.WebClient();\n this.wasmWebClientPromise = Promise.resolve(this.wasmWebClient);\n await this.wasmWebClient.createMockClient(\n this.seed,\n newMockChain,\n newMockNoteTransportNode\n );\n\n return transactionResult.id();\n } catch (error) {\n console.error(\n \"INDEX.JS: Error in submitNewTransaction:\",\n error.toString()\n );\n throw error;\n }\n }\n}\n\nfunction copyWebClientStatics(WasmWebClient) {\n if (!WasmWebClient) {\n return;\n }\n Object.getOwnPropertyNames(WasmWebClient).forEach((prop) => {\n if (\n typeof WasmWebClient[prop] === \"function\" &&\n prop !== \"constructor\" &&\n prop !== \"prototype\"\n ) {\n WebClient[prop] = WasmWebClient[prop];\n }\n });\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../js/constants.js","../js/index.js"],"sourcesContent":["export const WorkerAction = Object.freeze({\n INIT: \"init\",\n CALL_METHOD: \"callMethod\",\n EXECUTE_CALLBACK: \"executeCallback\",\n});\n\nexport const CallbackType = Object.freeze({\n GET_KEY: \"getKey\",\n INSERT_KEY: \"insertKey\",\n SIGN: \"sign\",\n});\n\nexport const MethodName = Object.freeze({\n CREATE_CLIENT: \"createClient\",\n NEW_WALLET: \"newWallet\",\n NEW_FAUCET: \"newFaucet\",\n EXECUTE_TRANSACTION: \"executeTransaction\",\n PROVE_TRANSACTION: \"proveTransaction\",\n SUBMIT_NEW_TRANSACTION: \"submitNewTransaction\",\n SUBMIT_NEW_TRANSACTION_MOCK: \"submitNewTransactionMock\",\n SYNC_STATE: \"syncState\",\n SYNC_STATE_MOCK: \"syncStateMock\",\n});\n","import loadWasm from \"./wasm.js\";\nimport { CallbackType, MethodName, WorkerAction } from \"./constants.js\";\nexport * from \"../Cargo.toml\";\n\nconst buildTypedArraysExport = (exportObject) => {\n return Object.entries(exportObject).reduce(\n (exports, [exportName, _export]) => {\n if (exportName.endsWith(\"Array\")) {\n exports[exportName] = _export;\n }\n return exports;\n },\n {}\n );\n};\n\nexport const MidenArrays = {};\n\nlet wasmModule = null;\nlet wasmLoadPromise = null;\nlet webClientStaticsCopied = false;\n\nconst ensureWasm = async () => {\n if (wasmModule) {\n return wasmModule;\n }\n if (!wasmLoadPromise) {\n wasmLoadPromise = loadWasm().then((module) => {\n wasmModule = module;\n if (module) {\n Object.assign(MidenArrays, buildTypedArraysExport(module));\n if (!webClientStaticsCopied && module.WebClient) {\n copyWebClientStatics(module.WebClient);\n webClientStaticsCopied = true;\n }\n }\n return module;\n });\n }\n return wasmLoadPromise;\n};\n\nconst getWasmOrThrow = async () => {\n const module = await ensureWasm();\n if (!module) {\n throw new Error(\n \"Miden WASM bindings are unavailable in this environment (SSR is disabled).\"\n );\n }\n return module;\n};\n/**\n * WebClient is a wrapper around the underlying WASM WebClient object.\n *\n * This wrapper serves several purposes:\n *\n * 1. It creates a dedicated web worker to offload computationally heavy tasks\n * (such as creating accounts, executing transactions, submitting transactions, etc.)\n * from the main thread, helping to prevent UI freezes in the browser.\n *\n * 2. It defines methods that mirror the API of the underlying WASM WebClient,\n * with the intention of executing these functions via the web worker. This allows us\n * to maintain the same API and parameters while benefiting from asynchronous, worker-based computation.\n *\n * 3. It employs a Proxy to forward any calls not designated for web worker computation\n * directly to the underlying WASM WebClient instance.\n *\n * Additionally, the wrapper provides a static createClient function. This static method\n * instantiates the WebClient object and ensures that the necessary createClient calls are\n * performed both in the main thread and within the worker thread. This dual initialization\n * correctly passes user parameters (RPC URL and seed) to both the main-thread\n * WASM WebClient and the worker-side instance.\n *\n * Because of this implementation, the only breaking change for end users is in the way the\n * web client is instantiated. Users should now use the WebClient.createClient static call.\n */\nexport class WebClient {\n /**\n * Create a WebClient wrapper.\n *\n * @param {string | undefined} rpcUrl - RPC endpoint URL used by the client.\n * @param {Uint8Array | undefined} seed - Optional seed for account initialization.\n * @param {(pubKey: Uint8Array) => Promise<Uint8Array | null | undefined> | Uint8Array | null | undefined} [getKeyCb]\n * - Callback to retrieve the secret key bytes for a given public key. The `pubKey`\n * parameter is the serialized public key (from `PublicKey.serialize()`). Return the\n * corresponding secret key as a `Uint8Array`, or `null`/`undefined` if not found. The\n * return value may be provided synchronously or via a `Promise`.\n * @param {(pubKey: Uint8Array, secretKey: Uint8Array) => Promise<void> | void} [insertKeyCb]\n * - Callback to persist a secret key. `pubKey` is the serialized public key, and\n * `secretKey` is the serialized secret key (from `SecretKey.serialize()`). May return\n * `void` or a `Promise<void>`.\n * @param {(pubKey: Uint8Array, signingInputs: Uint8Array) => Promise<Array<number | string>> | Array<number | string>} [signCb]\n * - Callback to produce signature elements for the provided inputs. `pubKey` is the\n * serialized public key, and `signingInputs` is a `Uint8Array` produced by\n * `SigningInputs.serialize()`. Must return an array of numeric values (numbers or numeric\n * strings) representing the signature elements, either directly or wrapped in a `Promise`.\n */\n constructor(rpcUrl, noteTransportUrl, seed, getKeyCb, insertKeyCb, signCb) {\n this.rpcUrl = rpcUrl;\n this.noteTransportUrl = noteTransportUrl;\n this.seed = seed;\n this.getKeyCb = getKeyCb;\n this.insertKeyCb = insertKeyCb;\n this.signCb = signCb;\n\n // Check if Web Workers are available.\n if (typeof Worker !== \"undefined\") {\n console.log(\"WebClient: Web Workers are available.\");\n // Create the worker.\n this.worker = new Worker(\n new URL(\"./workers/web-client-methods-worker.js\", import.meta.url),\n { type: \"module\" }\n );\n\n // Map to track pending worker requests.\n this.pendingRequests = new Map();\n\n // Promises to track when the worker script is loaded and ready.\n this.loaded = new Promise((resolve) => {\n this.loadedResolver = resolve;\n });\n\n // Create a promise that resolves when the worker signals that it is fully initialized.\n this.ready = new Promise((resolve) => {\n this.readyResolver = resolve;\n });\n\n // Listen for messages from the worker.\n this.worker.addEventListener(\"message\", async (event) => {\n const data = event.data;\n\n // Worker script loaded.\n if (data.loaded) {\n this.loadedResolver();\n return;\n }\n\n // Worker ready.\n if (data.ready) {\n this.readyResolver();\n return;\n }\n\n if (data.action === WorkerAction.EXECUTE_CALLBACK) {\n const { callbackType, args, requestId } = data;\n try {\n const callbackMapping = {\n [CallbackType.GET_KEY]: this.getKeyCb,\n [CallbackType.INSERT_KEY]: this.insertKeyCb,\n [CallbackType.SIGN]: this.signCb,\n };\n if (!callbackMapping[callbackType]) {\n throw new Error(`Callback ${callbackType} not available`);\n }\n const callbackFunction = callbackMapping[callbackType];\n let result = callbackFunction.apply(this, args);\n if (result instanceof Promise) {\n result = await result;\n }\n\n this.worker.postMessage({\n callbackResult: result,\n callbackRequestId: requestId,\n });\n } catch (error) {\n this.worker.postMessage({\n callbackError: error.message,\n callbackRequestId: requestId,\n });\n }\n return;\n }\n\n // Handle responses for method calls.\n const { requestId, error, result, methodName } = data;\n if (requestId && this.pendingRequests.has(requestId)) {\n const { resolve, reject } = this.pendingRequests.get(requestId);\n this.pendingRequests.delete(requestId);\n if (error) {\n console.error(\n `WebClient: Error from worker in ${methodName}:`,\n error\n );\n reject(new Error(error));\n } else {\n resolve(result);\n }\n }\n });\n\n // Once the worker script has loaded, initialize the worker.\n this.loaded.then(() => {\n this.worker.postMessage({\n action: WorkerAction.INIT,\n args: [\n this.rpcUrl,\n this.noteTransportUrl,\n this.seed,\n !!this.getKeyCb,\n !!this.insertKeyCb,\n !!this.signCb,\n ],\n });\n });\n } else {\n console.log(\"WebClient: Web Workers are not available.\");\n // Worker not available; set up fallback values.\n this.worker = null;\n this.pendingRequests = null;\n this.loaded = Promise.resolve();\n this.ready = Promise.resolve();\n }\n\n // Lazy initialize the underlying WASM WebClient when first requested.\n this.wasmWebClient = null;\n this.wasmWebClientPromise = null;\n }\n\n async getWasmWebClient() {\n if (this.wasmWebClient) {\n return this.wasmWebClient;\n }\n if (!this.wasmWebClientPromise) {\n this.wasmWebClientPromise = (async () => {\n const wasm = await getWasmOrThrow();\n const client = new wasm.WebClient();\n this.wasmWebClient = client;\n return client;\n })();\n }\n return this.wasmWebClientPromise;\n }\n\n /**\n * Factory method to create and initialize a WebClient instance.\n * This method is async so you can await the asynchronous call to createClient().\n *\n * @param {string} rpcUrl - The RPC URL.\n * @param {string} noteTransportUrl - The note transport URL (optional).\n * @param {string} seed - The seed for the account.\n * @returns {Promise<WebClient>} The fully initialized WebClient.\n */\n static async createClient(rpcUrl, noteTransportUrl, seed) {\n // Construct the instance (synchronously).\n const instance = new WebClient(rpcUrl, noteTransportUrl, seed);\n\n // Wait for the underlying wasmWebClient to be initialized.\n const wasmWebClient = await instance.getWasmWebClient();\n await wasmWebClient.createClient(rpcUrl, noteTransportUrl, seed);\n\n // Wait for the worker to be ready\n await instance.ready;\n\n // Return a proxy that forwards missing properties to wasmWebClient.\n return new Proxy(instance, {\n get(target, prop, receiver) {\n // If the property exists on the wrapper, return it.\n if (prop in target) {\n return Reflect.get(target, prop, receiver);\n }\n // Otherwise, if the wasmWebClient has it, return that.\n if (target.wasmWebClient && prop in target.wasmWebClient) {\n const value = target.wasmWebClient[prop];\n if (typeof value === \"function\") {\n return value.bind(target.wasmWebClient);\n }\n return value;\n }\n return undefined;\n },\n });\n }\n\n /**\n * Factory method to create and initialize a WebClient instance with a remote keystore.\n * This method is async so you can await the asynchronous call to createClientWithExternalKeystore().\n *\n * @param {string} rpcUrl - The RPC URL.\n * @param {string | undefined} noteTransportUrl - The note transport URL (optional).\n * @param {string | undefined} seed - The seed for the account.\n * @param {Function | undefined} getKeyCb - The get key callback.\n * @param {Function | undefined} insertKeyCb - The insert key callback.\n * @param {Function | undefined} signCb - The sign callback.\n * @returns {Promise<WebClient>} The fully initialized WebClient.\n */\n static async createClientWithExternalKeystore(\n rpcUrl,\n noteTransportUrl,\n seed,\n getKeyCb,\n insertKeyCb,\n signCb\n ) {\n // Construct the instance (synchronously).\n const instance = new WebClient(\n rpcUrl,\n noteTransportUrl,\n seed,\n getKeyCb,\n insertKeyCb,\n signCb\n );\n const wasmWebClient = await instance.getWasmWebClient();\n await wasmWebClient.createClientWithExternalKeystore(\n rpcUrl,\n noteTransportUrl,\n seed,\n getKeyCb,\n insertKeyCb,\n signCb\n );\n await instance.ready;\n // Return a proxy that forwards missing properties to wasmWebClient.\n return new Proxy(instance, {\n get(target, prop, receiver) {\n // If the property exists on the wrapper, return it.\n if (prop in target) {\n return Reflect.get(target, prop, receiver);\n }\n // Otherwise, if the wasmWebClient has it, return that.\n if (target.wasmWebClient && prop in target.wasmWebClient) {\n const value = target.wasmWebClient[prop];\n if (typeof value === \"function\") {\n return value.bind(target.wasmWebClient);\n }\n return value;\n }\n return undefined;\n },\n });\n }\n\n /**\n * Call a method via the worker.\n * @param {string} methodName - Name of the method to call.\n * @param {...any} args - Arguments for the method.\n * @returns {Promise<any>}\n */\n async callMethodWithWorker(methodName, ...args) {\n await this.ready;\n // Create a unique request ID.\n const requestId = `${methodName}-${Date.now()}-${Math.random()}`;\n return new Promise((resolve, reject) => {\n // Save the resolve and reject callbacks in the pendingRequests map.\n this.pendingRequests.set(requestId, { resolve, reject });\n // Send the method call request to the worker.\n this.worker.postMessage({\n action: WorkerAction.CALL_METHOD,\n methodName,\n args,\n requestId,\n });\n });\n }\n\n // ----- Explicitly Wrapped Methods (Worker-Forwarded) -----\n\n async newWallet(storageMode, mutable, authSchemeId, seed) {\n try {\n if (!this.worker) {\n const wasmWebClient = await this.getWasmWebClient();\n return await wasmWebClient.newWallet(\n storageMode,\n mutable,\n authSchemeId,\n seed\n );\n }\n const wasm = await getWasmOrThrow();\n const serializedStorageMode = storageMode.asStr();\n const serializedAccountBytes = await this.callMethodWithWorker(\n MethodName.NEW_WALLET,\n serializedStorageMode,\n mutable,\n authSchemeId,\n seed\n );\n return wasm.Account.deserialize(new Uint8Array(serializedAccountBytes));\n } catch (error) {\n console.error(\"INDEX.JS: Error in newWallet:\", error.toString());\n throw error;\n }\n }\n\n async newFaucet(\n storageMode,\n nonFungible,\n tokenSymbol,\n decimals,\n maxSupply,\n authSchemeId\n ) {\n try {\n if (!this.worker) {\n const wasmWebClient = await this.getWasmWebClient();\n return await wasmWebClient.newFaucet(\n storageMode,\n nonFungible,\n tokenSymbol,\n decimals,\n maxSupply,\n authSchemeId\n );\n }\n const wasm = await getWasmOrThrow();\n const serializedStorageMode = storageMode.asStr();\n const serializedMaxSupply = maxSupply.toString();\n const serializedAccountBytes = await this.callMethodWithWorker(\n MethodName.NEW_FAUCET,\n serializedStorageMode,\n nonFungible,\n tokenSymbol,\n decimals,\n serializedMaxSupply,\n authSchemeId\n );\n\n return wasm.Account.deserialize(new Uint8Array(serializedAccountBytes));\n } catch (error) {\n console.error(\"INDEX.JS: Error in newFaucet:\", error.toString());\n throw error;\n }\n }\n\n async submitNewTransaction(accountId, transactionRequest) {\n try {\n if (!this.worker) {\n const wasmWebClient = await this.getWasmWebClient();\n return await wasmWebClient.submitNewTransaction(\n accountId,\n transactionRequest\n );\n }\n\n const wasm = await getWasmOrThrow();\n const serializedTransactionRequest = transactionRequest.serialize();\n const result = await this.callMethodWithWorker(\n MethodName.SUBMIT_NEW_TRANSACTION,\n accountId.toString(),\n serializedTransactionRequest\n );\n\n const transactionResult = wasm.TransactionResult.deserialize(\n new Uint8Array(result.serializedTransactionResult)\n );\n\n return transactionResult.id();\n } catch (error) {\n console.error(\n \"INDEX.JS: Error in submitNewTransaction:\",\n error.toString()\n );\n throw error;\n }\n }\n\n async executeTransaction(accountId, transactionRequest) {\n try {\n if (!this.worker) {\n const wasmWebClient = await this.getWasmWebClient();\n return await wasmWebClient.executeTransaction(\n accountId,\n transactionRequest\n );\n }\n\n const wasm = await getWasmOrThrow();\n const serializedTransactionRequest = transactionRequest.serialize();\n const serializedResultBytes = await this.callMethodWithWorker(\n MethodName.EXECUTE_TRANSACTION,\n accountId.toString(),\n serializedTransactionRequest\n );\n\n return wasm.TransactionResult.deserialize(\n new Uint8Array(serializedResultBytes)\n );\n } catch (error) {\n console.error(\"INDEX.JS: Error in executeTransaction:\", error.toString());\n throw error;\n }\n }\n\n async submitTransaction(transactionResult, prover) {\n try {\n if (!this.worker) {\n const wasmWebClient = await this.getWasmWebClient();\n const proven = await wasmWebClient.proveTransaction(\n transactionResult,\n prover\n );\n const submissionHeight = await wasmWebClient.submitProvenTransaction(\n proven,\n transactionResult\n );\n return await wasmWebClient.applyTransaction(\n transactionResult,\n submissionHeight\n );\n }\n\n const wasm = await getWasmOrThrow();\n const serializedTransactionResult = transactionResult.serialize();\n const proverPayload = prover ? prover.serialize() : null;\n\n const { submissionHeight, serializedTransactionUpdate } =\n await this.callMethodWithWorker(\n MethodName.SUBMIT_TRANSACTION,\n serializedTransactionResult,\n proverPayload\n );\n\n if (this instanceof MockWebClient) {\n return wasm.TransactionStoreUpdate.deserialize(\n new Uint8Array(serializedTransactionUpdate)\n );\n }\n\n const wasmWebClient = await this.getWasmWebClient();\n return await wasmWebClient.applyTransaction(\n transactionResult,\n submissionHeight\n );\n } catch (error) {\n console.error(\"INDEX.JS: Error in submitTransaction:\", error.toString());\n throw error;\n }\n }\n\n async proveTransaction(transactionResult, prover) {\n try {\n if (!this.worker) {\n const wasmWebClient = await this.getWasmWebClient();\n return await wasmWebClient.proveTransaction(transactionResult, prover);\n }\n\n const wasm = await getWasmOrThrow();\n const serializedTransactionResult = transactionResult.serialize();\n const proverPayload = prover ? prover.serialize() : null;\n\n const serializedProvenBytes = await this.callMethodWithWorker(\n MethodName.PROVE_TRANSACTION,\n serializedTransactionResult,\n proverPayload\n );\n\n return wasm.ProvenTransaction.deserialize(\n new Uint8Array(serializedProvenBytes)\n );\n } catch (error) {\n console.error(\"INDEX.JS: Error in proveTransaction:\", error.toString());\n throw error;\n }\n }\n\n async syncState() {\n try {\n if (!this.worker) {\n const wasmWebClient = await this.getWasmWebClient();\n return await wasmWebClient.syncState();\n }\n\n const wasm = await getWasmOrThrow();\n const serializedSyncSummaryBytes = await this.callMethodWithWorker(\n MethodName.SYNC_STATE\n );\n\n return wasm.SyncSummary.deserialize(\n new Uint8Array(serializedSyncSummaryBytes)\n );\n } catch (error) {\n console.error(\"INDEX.JS: Error in syncState:\", error.toString());\n throw error;\n }\n }\n\n terminate() {\n if (this.worker) {\n this.worker.terminate();\n }\n }\n}\n\nexport class MockWebClient extends WebClient {\n constructor(seed) {\n super(null, seed);\n }\n\n /**\n * Factory method to create a WebClient with a mock chain for testing purposes.\n *\n * @param serializedMockChain - Serialized mock chain data (optional). Will use an empty chain if not provided.\n * @param serializedMockNoteTransportNode - Serialized mock note transport node data (optional). Will use a new instance if not provided.\n * @param seed - The seed for the account (optional).\n * @returns A promise that resolves to a MockWebClient.\n */\n static async createClient(\n serializedMockChain,\n serializedMockNoteTransportNode,\n seed\n ) {\n // Construct the instance (synchronously).\n const instance = new MockWebClient(seed);\n\n // Wait for the underlying wasmWebClient to be initialized.\n const wasmWebClient = await instance.getWasmWebClient();\n await wasmWebClient.createMockClient(\n seed,\n serializedMockChain,\n serializedMockNoteTransportNode\n );\n\n // Wait for the worker to be ready\n await instance.ready;\n\n // Return a proxy that forwards missing properties to wasmWebClient.\n return new Proxy(instance, {\n get(target, prop, receiver) {\n // If the property exists on the wrapper, return it.\n if (prop in target) {\n return Reflect.get(target, prop, receiver);\n }\n // Otherwise, if the wasmWebClient has it, return that.\n if (target.wasmWebClient && prop in target.wasmWebClient) {\n const value = target.wasmWebClient[prop];\n if (typeof value === \"function\") {\n return value.bind(target.wasmWebClient);\n }\n return value;\n }\n return undefined;\n },\n });\n }\n\n async syncState() {\n try {\n const wasmWebClient = await this.getWasmWebClient();\n if (!this.worker) {\n return await wasmWebClient.syncState();\n }\n\n let serializedMockChain = wasmWebClient.serializeMockChain().buffer;\n let serializedMockNoteTransportNode =\n wasmWebClient.serializeMockNoteTransportNode().buffer;\n\n const wasm = await getWasmOrThrow();\n\n const serializedSyncSummaryBytes = await this.callMethodWithWorker(\n MethodName.SYNC_STATE_MOCK,\n serializedMockChain,\n serializedMockNoteTransportNode\n );\n\n return wasm.SyncSummary.deserialize(\n new Uint8Array(serializedSyncSummaryBytes)\n );\n } catch (error) {\n console.error(\"INDEX.JS: Error in syncState:\", error.toString());\n throw error;\n }\n }\n\n async submitTransaction(transactionResult, prover) {\n try {\n if (!this.worker) {\n return await super.submitTransaction(transactionResult, prover);\n }\n\n const wasmWebClient = await this.getWasmWebClient();\n const wasm = await getWasmOrThrow();\n const serializedTransactionResult = transactionResult.serialize();\n const proverPayload = prover ? prover.serialize() : null;\n const serializedMockChain = wasmWebClient.serializeMockChain().buffer;\n const serializedMockNoteTransportNode =\n wasmWebClient.serializeMockNoteTransportNode().buffer;\n\n const result = await this.callMethodWithWorker(\n MethodName.SUBMIT_TRANSACTION_MOCK,\n serializedTransactionResult,\n proverPayload,\n serializedMockChain,\n serializedMockNoteTransportNode\n );\n const newMockChain = new Uint8Array(result.serializedMockChain);\n const newMockNoteTransportNode = result.serializedMockNoteTransportNode\n ? new Uint8Array(result.serializedMockNoteTransportNode)\n : undefined;\n\n if (!(this instanceof MockWebClient)) {\n return await wasmWebClient.applyTransaction(\n transactionResult,\n result.submissionHeight\n );\n }\n\n this.wasmWebClient = new wasm.WebClient();\n this.wasmWebClientPromise = Promise.resolve(this.wasmWebClient);\n await this.wasmWebClient.createMockClient(\n this.seed,\n newMockChain,\n newMockNoteTransportNode\n );\n\n return wasm.TransactionStoreUpdate.deserialize(\n new Uint8Array(result.serializedTransactionUpdate)\n );\n } catch (error) {\n console.error(\"INDEX.JS: Error in submitTransaction:\", error.toString());\n throw error;\n }\n }\n\n async submitNewTransaction(accountId, transactionRequest) {\n try {\n if (!this.worker) {\n return await super.submitNewTransaction(accountId, transactionRequest);\n }\n\n const wasmWebClient = await this.getWasmWebClient();\n const wasm = await getWasmOrThrow();\n const serializedTransactionRequest = transactionRequest.serialize();\n const serializedMockChain = wasmWebClient.serializeMockChain().buffer;\n const serializedMockNoteTransportNode =\n wasmWebClient.serializeMockNoteTransportNode().buffer;\n\n const result = await this.callMethodWithWorker(\n MethodName.SUBMIT_NEW_TRANSACTION_MOCK,\n accountId.toString(),\n serializedTransactionRequest,\n serializedMockChain,\n serializedMockNoteTransportNode\n );\n\n const newMockChain = new Uint8Array(result.serializedMockChain);\n const newMockNoteTransportNode = result.serializedMockNoteTransportNode\n ? new Uint8Array(result.serializedMockNoteTransportNode)\n : undefined;\n\n const transactionResult = wasm.TransactionResult.deserialize(\n new Uint8Array(result.serializedTransactionResult)\n );\n\n if (!(this instanceof MockWebClient)) {\n return transactionResult.id();\n }\n\n this.wasmWebClient = new wasm.WebClient();\n this.wasmWebClientPromise = Promise.resolve(this.wasmWebClient);\n await this.wasmWebClient.createMockClient(\n this.seed,\n newMockChain,\n newMockNoteTransportNode\n );\n\n return transactionResult.id();\n } catch (error) {\n console.error(\n \"INDEX.JS: Error in submitNewTransaction:\",\n error.toString()\n );\n throw error;\n }\n }\n}\n\nfunction copyWebClientStatics(WasmWebClient) {\n if (!WasmWebClient) {\n return;\n }\n Object.getOwnPropertyNames(WasmWebClient).forEach((prop) => {\n if (\n typeof WasmWebClient[prop] === \"function\" &&\n prop !== \"constructor\" &&\n prop !== \"prototype\"\n ) {\n WebClient[prop] = WasmWebClient[prop];\n }\n });\n}\n"],"names":[],"mappings":"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"}
package/dist/wasm.js CHANGED
@@ -4,7 +4,7 @@
4
4
  async function loadWasm() {
5
5
  let wasmModule;
6
6
  if (!import.meta.env || (import.meta.env && !import.meta.env.SSR)) {
7
- wasmModule = await import('./Cargo-15e14c5a.js');
7
+ wasmModule = await import('./Cargo-c25ff7e6.js');
8
8
  }
9
9
  return wasmModule;
10
10
  }