@dynamic-labs-wallet/forward-mpc-client 0.5.0 → 0.5.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.
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import EventEmitter$1, { EventEmitter } from 'eventemitter3';
2
- import { TraceContext, HashAlgorithm, BaseWebSocketMessage, encryptKeyshare, WebSocketError } from '@dynamic-labs-wallet/forward-mpc-shared';
2
+ import { BaseWebSocketMessage, TraceContext, HashAlgorithm, encryptKeyshare, WebSocketError } from '@dynamic-labs-wallet/forward-mpc-shared';
3
3
  export { BaseWebSocketMessage, ErrorResponse, HandshakeV1RequestMessage, HandshakeV1ResponseMessage, SignMessageV1RequestMessage, SignMessageV1ResponseMessage, WebSocketError, WebSocketErrorType } from '@dynamic-labs-wallet/forward-mpc-shared';
4
4
  import { SigningAlgorithm } from '@dynamic-labs-wallet/core';
5
5
  export { SigningAlgorithm } from '@dynamic-labs-wallet/core';
@@ -216,7 +216,7 @@ interface ForwardMPCClientV2Options {
216
216
  }
217
217
  interface ClientV2Events {
218
218
  connected: () => void;
219
- disconnected: () => void;
219
+ disconnected: (closeCode: number) => void;
220
220
  error: (error: Error) => void;
221
221
  }
222
222
  declare class ForwardMPCClientV2 extends EventEmitter$1<ClientV2Events> {
@@ -386,6 +386,12 @@ declare class NitroAttestationVerifier implements AttestationVerifier {
386
386
  * On failure the promise is cleared so the next call may retry.
387
387
  */
388
388
  private ensureWasmInitialized;
389
+ /**
390
+ * Initialises the WASM module with environment-appropriate loading.
391
+ * In Node.js, fetch() does not support file:// URLs, so we read the
392
+ * .wasm binary from disk and use initSync() instead.
393
+ */
394
+ private initWasm;
389
395
  /**
390
396
  * Verify an attestation document using Evervault WASM bindings
391
397
  * Accepts base64-encoded attestation document directly
package/dist/index.js CHANGED
@@ -35,13 +35,30 @@ var NitroAttestationVerifier = class {
35
35
  * On failure the promise is cleared so the next call may retry.
36
36
  */
37
37
  ensureWasmInitialized() {
38
- this.wasmInitPromise ??= init().then(() => void 0).catch((error) => {
38
+ this.wasmInitPromise ??= this.initWasm().then(() => void 0).catch((error) => {
39
39
  this.wasmInitPromise = null;
40
40
  throw new Error(`Failed to initialize WASM module: ${error instanceof Error ? error.message : "Unknown error"}`);
41
41
  });
42
42
  return this.wasmInitPromise;
43
43
  }
44
44
  /**
45
+ * Initialises the WASM module with environment-appropriate loading.
46
+ * In Node.js, fetch() does not support file:// URLs, so we read the
47
+ * .wasm binary from disk and use initSync() instead.
48
+ */
49
+ async initWasm() {
50
+ if (typeof process !== "undefined" && process.versions?.node) {
51
+ const { readFileSync } = await import('fs');
52
+ const { createRequire } = await import('module');
53
+ const require2 = createRequire(import.meta.url);
54
+ const wasmPath = require2.resolve("@evervault/wasm-attestation-bindings/index_bg.wasm");
55
+ const { initSync } = await import('@evervault/wasm-attestation-bindings');
56
+ initSync(readFileSync(wasmPath));
57
+ } else {
58
+ await init();
59
+ }
60
+ }
61
+ /**
45
62
  * Verify an attestation document using Evervault WASM bindings
46
63
  * Accepts base64-encoded attestation document directly
47
64
  *
@@ -803,7 +820,7 @@ var ForwardMPCTransport = class extends EventEmitter2 {
803
820
  this.ws = null;
804
821
  }
805
822
  this._isConnected = false;
806
- this.emit("disconnected");
823
+ this.emit("disconnected", WebSocketCloseCode.NORMAL);
807
824
  }
808
825
  send(data) {
809
826
  if (!this._isConnected || !this.ws) {
@@ -841,7 +858,7 @@ var ForwardMPCTransport = class extends EventEmitter2 {
841
858
  this._isConnected = true;
842
859
  this._hadSuccessfulConnection = true;
843
860
  this._midSessionReconnectCount = 0;
844
- this.logger?.info("WebSocket connected", {
861
+ this.logger?.debug("WebSocket connected", {
845
862
  url: this.url
846
863
  });
847
864
  this.emit("connected");
@@ -868,7 +885,7 @@ var ForwardMPCTransport = class extends EventEmitter2 {
868
885
  closeCode: event.code
869
886
  });
870
887
  if (!this._destroyed) {
871
- this.emit("disconnected");
888
+ this.emit("disconnected", event.code);
872
889
  }
873
890
  this.maybeReconnect(event.code);
874
891
  };
@@ -1179,7 +1196,7 @@ var ForwardMPCClientV2 = class extends EventEmitter2 {
1179
1196
  requestTimeout: options.requestTimeout
1180
1197
  };
1181
1198
  this.transport.on("connected", () => this.onTransportConnected());
1182
- this.transport.on("disconnected", () => this.onTransportDisconnected());
1199
+ this.transport.on("disconnected", (closeCode) => this.onTransportDisconnected(closeCode));
1183
1200
  this.transport.on("error", (error) => this.emit("error", error));
1184
1201
  }
1185
1202
  get connected() {
@@ -1338,7 +1355,7 @@ var ForwardMPCClientV2 = class extends EventEmitter2 {
1338
1355
  }, "doHandshake");
1339
1356
  this._connectPromise = doHandshake();
1340
1357
  }
1341
- onTransportDisconnected() {
1358
+ onTransportDisconnected(closeCode) {
1342
1359
  const intentional = this._disconnectedIntentionally;
1343
1360
  this._disconnectedIntentionally = false;
1344
1361
  this.session?.dispose();
@@ -1346,7 +1363,7 @@ var ForwardMPCClientV2 = class extends EventEmitter2 {
1346
1363
  if (!intentional) {
1347
1364
  this.logger.warn("Unexpected WebSocket disconnect");
1348
1365
  }
1349
- this.emit("disconnected");
1366
+ this.emit("disconnected", closeCode);
1350
1367
  }
1351
1368
  };
1352
1369