@miden-sdk/miden-wallet-adapter-miden 0.16.0 → 0.16.3

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/AGENTS.md ADDED
@@ -0,0 +1,93 @@
1
+ # @miden-sdk/miden-wallet-adapter-miden - Agent Guide
2
+
3
+ **Audience: AI coding agents** connecting an app to the Bread wallet browser
4
+ extension.
5
+
6
+ This file ships inside the published package, so the copy at
7
+ `node_modules/@miden-sdk/miden-wallet-adapter-miden/AGENTS.md` matches the
8
+ version you have installed. Prefer it over your training data.
9
+
10
+ ## Load the skill
11
+
12
+ `node_modules/@miden-sdk/miden-wallet-adapter-base/skills/wallet-adapter-integration/SKILL.md`
13
+ is the full integration guide: provider wiring, the readiness lifecycle, the
14
+ request surface, transaction shapes, the error taxonomy and the production
15
+ traps. It lives in the base package, which this one depends on, so that path
16
+ resolves with no extra install.
17
+
18
+ ## What this package is
19
+
20
+ One concrete adapter, `MidenWalletAdapter`, plus the `MidenWallet` interface
21
+ it expects the extension to inject and a conformance suite for checking a
22
+ provider against that interface.
23
+
24
+ ```ts
25
+ import { MidenWalletAdapter } from "@miden-sdk/miden-wallet-adapter-miden";
26
+
27
+ // Construct once, at module scope. A new instance per render breaks the
28
+ // React providers.
29
+ export const wallets = [new MidenWalletAdapter({ appName: "My dApp" })];
30
+ ```
31
+
32
+ `MidenWalletName` is the branded name (`"Bread Wallet"`) the React providers
33
+ and the wallet modal select on. `adapter.url` is the extension's Chrome Web
34
+ Store listing, which the providers open on a connect without it installed.
35
+
36
+ ## How detection works
37
+
38
+ The adapter looks for `window.midenWallet`, falling back to `window.miden`.
39
+ Detection runs immediately, once a second, on `DOMContentLoaded` and on
40
+ `load`, and emits `readyStateChange` on the first hit. So a page that loads
41
+ before the extension injects starts at `NotDetected` and flips to `Installed`
42
+ about a second later: render from `readyState`, not from a check at mount.
43
+
44
+ An adapter constructed where `window` or `document` is undefined is
45
+ `Unsupported` **permanently** - the constructor decides once and never starts
46
+ detection. Under SSR, construct adapters in a browser-only module.
47
+
48
+ ## Behavior specific to this adapter
49
+
50
+ **A resolved request with no transaction id is a failure.** The wallet reports
51
+ success as soon as it accepts a transaction into its queue. If it hands back
52
+ no id, nothing was submitted, and the adapter throws `WalletTransactionError`
53
+ rather than returning `undefined`. Poll `waitForTransaction(txId)` for the
54
+ on-chain result.
55
+
56
+ **`waitForTransaction` deserializes notes.** It returns `Note` objects, which
57
+ is why this package imports `@miden-sdk/miden-sdk` at module scope and pulls
58
+ its WASM entry point into any bundle that reaches it. Keep it out of
59
+ server-rendered module graphs.
60
+
61
+ **Reconnecting re-drives the handshake; `disconnect()` never rejects.**
62
+ `connect()` is not suppressed when already connected, so a dApp whose context
63
+ survived a park and restore gets its account back, at the cost of an unlock
64
+ prompt if the wallet locked meanwhile. A failed disconnect arrives as a
65
+ `WalletDisconnectionError` on the `error` event while the promise resolves.
66
+
67
+ ## Checking a provider
68
+
69
+ `createAccount` is on the published `MidenWallet` interface, but no known
70
+ provider implements it and there is no wire message behind it; calling it
71
+ gives `TypeError: wallet.createAccount is not a function`. That is what the
72
+ conformance suite exists for. Run it against a real provider object, never a
73
+ mock:
74
+
75
+ ```ts
76
+ import {
77
+ CONFORMANCE_BUILD,
78
+ getSurfaceCases,
79
+ runConformance,
80
+ } from "@miden-sdk/miden-wallet-adapter-miden";
81
+
82
+ if (!CONFORMANCE_BUILD.real) throw new Error("conformance module is mocked");
83
+ const { failed } = await runConformance(getSurfaceCases(provider));
84
+ ```
85
+
86
+ `getSurfaceCases` only asks whether each method exists, so it is safe against
87
+ an unconnected provider. `getBehaviorCases` needs a live, connected one.
88
+
89
+ ## Going deeper
90
+
91
+ - The type declarations shipped in `dist/` are authoritative for signatures.
92
+ - The contract layer documents itself at
93
+ `node_modules/@miden-sdk/miden-wallet-adapter-base/AGENTS.md`.
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../adapter.ts"],"names":[],"mappings":"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","sourcesContent":["import { Note, type NoteFilterTypes } from \"@miden-sdk/miden-sdk\";\nimport {\n AllowedPrivateData,\n BaseMessageSignerWalletAdapter,\n EventEmitter,\n scopePollingDetectionStrategy,\n SignKind,\n WalletConnectionError,\n WalletDisconnectionError,\n WalletName,\n WalletNotConnectedError,\n WalletNotReadyError,\n WalletReadyState,\n PrivateDataPermission,\n WalletAdapterNetwork,\n MidenSendTransaction,\n MidenTransaction,\n MidenConsumeTransaction,\n TransactionType,\n WalletTransactionError,\n Asset,\n GuardianInfo,\n CreateAccountParams,\n InputNoteDetails,\n TransactionOutput,\n WalletTransactionOutput,\n b64ToU8,\n} from \"@miden-sdk/miden-wallet-adapter-base\";\n\nexport interface MidenWalletEvents {\n connect(...args: unknown[]): unknown;\n disconnect(...args: unknown[]): unknown;\n accountChange(...args: unknown[]): unknown;\n}\n\nexport interface MidenWallet extends EventEmitter<MidenWalletEvents> {\n address?: string;\n publicKey?: Uint8Array;\n requestSend(\n transaction: MidenSendTransaction\n ): Promise<{ transactionId?: string }>;\n requestConsume(\n transaction: MidenConsumeTransaction\n ): Promise<{ transactionId?: string }>;\n requestTransaction(\n transaction: MidenTransaction\n ): Promise<{ transactionId?: string }>;\n requestAssets(): Promise<{ assets: Asset[] }>;\n requestGuardianInfo(): Promise<{ guardianInfo: GuardianInfo }>;\n requestPrivateNotes(\n noteFilterType: NoteFilterTypes,\n noteIds?: string[]\n ): Promise<{\n privateNotes: InputNoteDetails[];\n }>;\n waitForTransaction(\n txId: string,\n timeout?: number\n ): Promise<WalletTransactionOutput>;\n signBytes(\n message: Uint8Array,\n kind: SignKind\n ): Promise<{ signature: Uint8Array }>;\n importPrivateNote(note: Uint8Array): Promise<{ noteId: string }>;\n requestConsumableNotes(): Promise<{ consumableNotes: InputNoteDetails[] }>;\n createAccount(params?: CreateAccountParams): Promise<{ accountId: string }>;\n connect(\n privateDataPermission: PrivateDataPermission,\n network: WalletAdapterNetwork,\n allowedPrivateData?: AllowedPrivateData\n ): Promise<void>;\n disconnect(): Promise<void>;\n}\n\nexport interface MidenWindow extends Window {\n midenWallet?: MidenWallet;\n miden?: MidenWallet;\n}\n\ndeclare const window: MidenWindow;\n\nexport interface MidenWalletAdapterConfig {\n appName?: string;\n}\n\nexport const MidenWalletName = \"Bread Wallet\" as WalletName<\"Bread Wallet\">;\n\nexport class MidenWalletAdapter extends BaseMessageSignerWalletAdapter {\n name = MidenWalletName;\n url =\n \"https://chromewebstore.google.com/detail/Bread/coajhopfooegmaifelglfboehacldcbo\";\n icon =\n \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjExIiBoZWlnaHQ9IjIxNCIgdmlld0JveD0iMCAwIDIxMSAyMTQiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGQ9Ik0xMDcuNDQgMC4xMjE3NjJDMTIxLjk5IC0wLjkwOTY1MiAxMzQuNzMzIDQuNjc0NjMgMTQ1LjE1NyAxNC40NzYxQzE4My41NjQgLTQuNjYzMDMgMjIyLjk2NSAzNS40NDAxIDIwNi4zNTIgNzMuOTk5MUMyMDQuNzcyIDEwMy4wMDcgMjA4LjUwNyAxMzQuMzIyIDIwNi4zOTUgMTYzLjA1NUMyMDUuNjAyIDE3My43OSAyMDAuMTgyIDE4Mi4yODUgMTkxLjkzNyAxODguODRDMTc5LjgyMiAxOTguNDY1IDE1Ny41MSAyMTEuNzUxIDE0Mi4wNTcgMjEyLjc1MkMxMDEuMzk4IDIxNS4zODggNTcuOTI2NCAyMTAuNjk1IDE2Ljk2ODkgMjEyLjc1MkM2LjQxMDYzIDIxMS45NjUgMS41NzA5MyAyMDUuNTE0IDAuODA4MDQ2IDE5NS4zN0MyLjc5NzY0IDE1NS44MzUgLTEuNzYxMzMgMTEzLjg0NiAwLjgwODA0NiA3NC41OTcyQzMuMjA2NTQgMzcuODgxMyA0MC4wNTY3IC0xLjcwMzA1IDc5LjA4NTcgMTIuNjUxM0M4Ni45MDk4IDUuNTcxNzggOTYuNzk2NyAwLjg3MjQzMSAxMDcuNDQ3IDAuMTE1NjUzTDEwNy40NCAwLjEyMTc2MlpNMTE2LjcxNyAxMjguNTk3QzEzNi45NDIgMTIzLjkyMiAxNDQuMDc3IDk5LjQ3OTMgMTM2LjUyMSA4MS42NTIzQzEzMC45MDcgNjguNDAyNiAxMTcuNDc0IDYxLjgxMTMgMTAzLjYyNiA2MC44ODM3Qzc5LjI3NDkgNTkuMjU0MiA1My4xMjk1IDYyLjE0NyAyOC41ODkxIDYwLjkxNDJDMTguNzAyMiA2Mi4zNDIzIDEwLjQ1MDkgNjcuOTY5MyA4Ljc2MDMzIDc4LjI4MzRMOS4xNzUzIDE5Ny4zNzhDMTAuNTA1OCAyMDAuOTQ5IDEzLjcyODIgMjAzLjgwNSAxNy42MDk3IDIwNC4xODlDNDcuNjE4NCAyMDIuNTIzIDgwLjAwMTEgMjA2LjQwNSAxMDkuNzI5IDIwNC4yMTRDMTQ2LjI2OCAyMDEuNTIyIDE1Ny4wMDkgMTUyLjU2NCAxMjcuNDk1IDEzMy4zNjNMMTE2LjcyMyAxMjguNTk3SDExNi43MTdaIiBmaWxsPSIjRTc3NTM3Ii8+CjxwYXRoIGQ9Ik0xMTYuNzE3IDEyOC41OTdDMTM2Ljk0MiAxMjMuOTIyIDE0NC4wNzcgOTkuNDc5MyAxMzYuNTIxIDgxLjY1MjNDMTMwLjkwNyA2OC40MDI2IDExNy40NzQgNjEuODExMyAxMDMuNjI2IDYwLjg4MzdDNzkuMjc0OSA1OS4yNTQyIDUzLjEyOTUgNjIuMTQ3IDI4LjU4OTEgNjAuOTE0MkMxOC43MDIyIDYyLjM0MjMgMTAuNDUwOSA2Ny45NjkzIDguNzYwMzMgNzguMjgzNEw5LjE3NTMgMTk3LjM3OEMxMC41MDU4IDIwMC45NDkgMTMuNzI4MiAyMDMuODA1IDE3LjYwOTcgMjA0LjE4OUM0Ny42MTg0IDIwMi41MjMgODAuMDAxMSAyMDYuNDA1IDEwOS43MjkgMjA0LjIxNEMxNDYuMjY4IDIwMS41MjIgMTU3LjAwOSAxNTIuNTY0IDEyNy40OTUgMTMzLjM2M0wxMTYuNzIzIDEyOC41OTdIMTE2LjcxN1oiIGZpbGw9IiNGRkZGRkYiLz4KPC9zdmc+Cg==\";\n readonly supportedTransactionVersions = null;\n\n private _connecting: boolean;\n private _wallet: MidenWallet | null;\n private _address: string | null;\n private _publicKey: Uint8Array | null;\n private _privateDataPermission: string;\n private _readyState: WalletReadyState =\n typeof window === \"undefined\" || typeof document === \"undefined\"\n ? WalletReadyState.Unsupported\n : WalletReadyState.NotDetected;\n\n constructor({ appName = \"sample\" }: MidenWalletAdapterConfig = {}) {\n super();\n this._connecting = false;\n this._wallet = null;\n this._address = null;\n this._publicKey = null;\n this._privateDataPermission = PrivateDataPermission.UponRequest;\n\n if (this._readyState !== WalletReadyState.Unsupported) {\n scopePollingDetectionStrategy(() => {\n if (window?.midenWallet || window?.miden) {\n this._readyState = WalletReadyState.Installed;\n this.emit(\"readyStateChange\", this._readyState);\n return true;\n }\n return false;\n });\n }\n }\n\n get address() {\n return this._address;\n }\n\n get publicKey() {\n return this._publicKey;\n }\n\n get privateDataPermission() {\n return this._privateDataPermission;\n }\n\n get connecting() {\n return this._connecting;\n }\n\n get readyState() {\n return this._readyState;\n }\n\n set readyState(readyState) {\n this._readyState = readyState;\n }\n\n /**\n * The wallet reports \"success\" as soon as a transaction is ACCEPTED into its\n * queue, not when it lands on chain — so a resolved call with no `transactionId`\n * means the transaction was never submitted. Returning that as `undefined`\n * (the old `result.transactionId!` non-null assertion) made the dApp treat a\n * silent drop as success. Reject instead, so the dApp can surface it and\n * poll `waitForTransaction(txId)` for on-chain confirmation (0xMiden/wallet#314).\n */\n private requireTransactionId(result: { transactionId?: string }): string {\n if (!result?.transactionId) {\n throw new WalletTransactionError(\n \"The wallet returned no transaction id — the transaction was not submitted\"\n );\n }\n return result.transactionId;\n }\n\n async requestSend(transaction: MidenSendTransaction): Promise<string> {\n try {\n const wallet = this._wallet;\n if (!wallet || !this.address) throw new WalletNotConnectedError();\n let result: { transactionId?: string };\n try {\n result = await wallet.requestSend(transaction);\n } catch (error: any) {\n throw new WalletTransactionError(error?.message, error);\n }\n return this.requireTransactionId(result);\n } catch (error: any) {\n this.emit(\"error\", error);\n throw error;\n }\n }\n\n async requestConsume(transaction: MidenConsumeTransaction): Promise<string> {\n try {\n const wallet = this._wallet;\n if (!wallet || !this.address) throw new WalletNotConnectedError();\n let result: { transactionId?: string };\n try {\n result = await wallet.requestConsume(transaction);\n } catch (error: any) {\n throw new WalletTransactionError(error?.message, error);\n }\n return this.requireTransactionId(result);\n } catch (error: any) {\n this.emit(\"error\", error);\n throw error;\n }\n }\n\n async requestTransaction(transaction: MidenTransaction): Promise<string> {\n try {\n const wallet = this._wallet;\n if (!wallet || !this.address) throw new WalletNotConnectedError();\n let result: { transactionId?: string };\n try {\n // The wallet's generalized `requestTransaction` endpoint only accepts\n // a custom-transaction payload, so a `send`/`consume` transaction must\n // be routed to its dedicated endpoint — otherwise the wallet rejects\n // it with \"Invalid CustomTransaction payload\". Dispatching by `type`\n // here is what lets the typed `Transaction` / `TransactionType` API\n // (incl. `Transaction.createConsumeTransaction`) work for every type.\n switch (transaction.type) {\n case TransactionType.Send:\n result = await wallet.requestSend(\n transaction.payload as MidenSendTransaction\n );\n break;\n case TransactionType.Consume:\n result = await wallet.requestConsume(\n transaction.payload as MidenConsumeTransaction\n );\n break;\n default:\n // Custom transactions — and legacy callers that pass a bare\n // `CustomTransaction` payload — go through the generalized endpoint.\n result = await wallet.requestTransaction(transaction);\n break;\n }\n } catch (error: any) {\n throw new WalletTransactionError(error?.message, error);\n }\n return this.requireTransactionId(result);\n } catch (error: any) {\n this.emit(\"error\", error);\n throw error;\n }\n }\n\n async requestAssets(): Promise<Asset[]> {\n try {\n const wallet = this._wallet;\n if (!wallet || !this.address) throw new WalletNotConnectedError();\n try {\n const result = await wallet.requestAssets();\n return result.assets;\n } catch (error: any) {\n throw new WalletTransactionError(error?.message, error);\n }\n } catch (error: any) {\n this.emit(\"error\", error);\n throw error;\n }\n }\n\n async requestGuardianInfo(): Promise<GuardianInfo> {\n try {\n const wallet = this._wallet;\n if (!wallet || !this.address) throw new WalletNotConnectedError();\n try {\n const result = await wallet.requestGuardianInfo();\n return result.guardianInfo;\n } catch (error: any) {\n throw new WalletTransactionError(error?.message, error);\n }\n } catch (error: any) {\n this.emit(\"error\", error);\n throw error;\n }\n }\n\n async requestPrivateNotes(\n noteFilterType: NoteFilterTypes,\n noteIds?: string[]\n ): Promise<InputNoteDetails[]> {\n try {\n const wallet = this._wallet;\n if (!wallet || !this.address) throw new WalletNotConnectedError();\n try {\n const result = await wallet.requestPrivateNotes(\n noteFilterType,\n noteIds\n );\n return result.privateNotes;\n } catch (error: any) {\n throw new WalletTransactionError(error?.message, error);\n }\n } catch (error: any) {\n this.emit(\"error\", error);\n throw error;\n }\n }\n\n async signBytes(message: Uint8Array, kind: SignKind): Promise<Uint8Array> {\n try {\n const wallet = this._wallet;\n if (!wallet || !this.address) throw new WalletNotConnectedError();\n try {\n const result = await wallet.signBytes(message, kind);\n return result.signature;\n } catch (error: any) {\n throw new WalletTransactionError(error?.message, error);\n }\n } catch (error: any) {\n this.emit(\"error\", error);\n throw error;\n }\n }\n\n async importPrivateNote(note: Uint8Array): Promise<string> {\n try {\n const wallet = this._wallet;\n if (!wallet || !this.address) throw new WalletNotConnectedError();\n const result = await wallet.importPrivateNote(note);\n return result.noteId;\n } catch (error: any) {\n this.emit(\"error\", error);\n throw error;\n }\n }\n\n async requestConsumableNotes(): Promise<InputNoteDetails[]> {\n try {\n const wallet = this._wallet;\n if (!wallet || !this.address) throw new WalletNotConnectedError();\n const result = await wallet.requestConsumableNotes();\n return result.consumableNotes;\n } catch (error: any) {\n this.emit(\"error\", error);\n throw error;\n }\n }\n\n async waitForTransaction(\n txId: string,\n timeout?: number\n ): Promise<TransactionOutput> {\n try {\n const wallet = this._wallet;\n if (!wallet || !this.address) throw new WalletNotConnectedError();\n const result = await wallet.waitForTransaction(txId, timeout);\n if (\"errorMessage\" in result) {\n throw new WalletTransactionError(result.errorMessage);\n }\n const notes = result.outputNotes.map((serializedNote) => {\n const u8Arr = b64ToU8(serializedNote);\n return Note.deserialize(u8Arr);\n });\n return {\n txHash: result.txHash,\n outputNotes: notes,\n };\n } catch (error: any) {\n this.emit(\"error\", error);\n throw error;\n }\n }\n\n async createAccount(params?: CreateAccountParams): Promise<string> {\n try {\n const wallet = this._wallet;\n if (!wallet || !this.address) throw new WalletNotConnectedError();\n try {\n const result = await wallet.createAccount(params);\n return result.accountId;\n } catch (error: any) {\n throw new WalletTransactionError(error?.message, error);\n }\n } catch (error: any) {\n this.emit(\"error\", error);\n throw error;\n }\n }\n\n async connect(\n privateDataPermission: PrivateDataPermission,\n network: WalletAdapterNetwork,\n allowedPrivateData?: AllowedPrivateData\n ): Promise<void> {\n try {\n // Guard only against a *concurrent* connect — NOT against being\n // already connected. The in-app wallet browser preserves this\n // adapter's JS context across a park/restore (a dApp is minimized and\n // reopened without a page reload), so a re-opened dApp finds this\n // instance with `connected === true`. An early-return-when-connected\n // made a second connect() a silent no-op, so a re-mounted consumer\n // that re-subscribed to events never received its account back —\n // \"Connect Wallet works only once\" (0xMiden/wallet#470). Re-driving\n // the handshake below is cheap for the common case — the wallet\n // returns the current account for an existing permission without\n // re-prompting — and re-emits `connect`, so repeated connect() calls\n // repopulate the account instead of being suppressed by stale session\n // state. (If the wallet has since locked, the re-drive can surface an\n // unlock prompt where the old code was a silent no-op; that's the\n // intended trade-off — a locked wallet genuinely needs to be unlocked\n // to hand back the account.)\n if (this.connecting) return;\n if (this._readyState !== WalletReadyState.Installed)\n throw new WalletNotReadyError();\n\n this._connecting = true;\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const wallet = window.midenWallet! || window.miden!;\n\n try {\n await wallet.connect(\n privateDataPermission,\n network,\n allowedPrivateData\n );\n if (!wallet.address) {\n throw new WalletConnectionError();\n }\n this._address = wallet.address;\n this._publicKey = wallet.publicKey!;\n } catch (error: any) {\n throw new WalletConnectionError(error?.message, error);\n }\n\n this._wallet = wallet;\n this._privateDataPermission = privateDataPermission;\n\n this.emit(\"connect\", this._address);\n } catch (error: any) {\n this.emit(\"error\", error);\n throw error;\n } finally {\n this._connecting = false;\n }\n }\n\n async disconnect(): Promise<void> {\n const wallet = this._wallet;\n if (wallet) {\n this._wallet = null;\n this._address = null;\n this._publicKey = null;\n\n try {\n await wallet.disconnect();\n } catch (error: any) {\n this.emit(\"error\", new WalletDisconnectionError(error?.message, error));\n }\n }\n\n this.emit(\"disconnect\");\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"conformance.js","sourceRoot":"","sources":["../conformance.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"conformance.js","sourceRoot":"","sources":["../conformance.ts"],"names":[],"mappings":"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","sourcesContent":["// `EventEmitter` comes via the base package rather than `eventemitter3` directly:\n// base re-exports it and is a declared dependency here, eventemitter3 is not.\nimport type { EventEmitter } from \"@miden-sdk/miden-wallet-adapter-base\";\n\nimport type { MidenWallet, MidenWalletEvents } from \"./adapter\";\n\n/**\n * A conformance suite for `MidenWallet` implementations.\n *\n * ## Why this exists\n *\n * `createAccount` has been on the published `MidenWallet` interface since\n * adapter 0.13.2. No wallet provider implements it — not the browser\n * extension, not the mobile injection script, not the Tauri provider — and\n * there is no wire message for it. A dApp calling it gets\n * `TypeError: wallet.createAccount is not a function`.\n *\n * That shipped, and stayed shipped, because both sides of the contract were\n * green: this repo's tests inject a `vi.fn()` bag as `window.midenWallet`, and\n * the wallet's tests mock this package wholesale. Each side asserted against a\n * shape it invented.\n *\n * A suite written *here* cannot fix that. Whatever reference provider this\n * repo authors gets updated in the same commit that adds a method, so it can\n * never detect a missing one. The detection has to happen where the real\n * implementations live. So this module ships the *instrument*, and the wallet\n * runs it against its real providers.\n *\n * ## Two halves, deliberately separate\n *\n * {@link getSurfaceCases} asks only whether each method exists. It needs no\n * connection, no network and no state, so it is safe to run against providers\n * that are plain injected JavaScript — which is what the mobile and Tauri\n * providers are, and where the remaining gaps live.\n *\n * {@link getBehaviorCases} exercises round-trips and needs a live, connected\n * provider. Running it against an un-connected provider proves nothing.\n *\n * @packageDocumentation\n */\n\n/** Members `MidenWallet` inherits from EventEmitter rather than declaring. */\ntype InheritedKeys = keyof EventEmitter<MidenWalletEvents>;\n\n/** Members `MidenWallet` declares itself. */\ntype OwnKeys = Exclude<keyof MidenWallet, InheritedKeys>;\n\n/** The subset of {@link OwnKeys} that are callable — i.e. not `address`/`publicKey`. */\ntype MethodKeys = {\n [K in OwnKeys]-?: NonNullable<MidenWallet[K]> extends (\n ...args: never[]\n ) => unknown\n ? K\n : never;\n}[OwnKeys];\n\n/**\n * Every method a `MidenWallet` must implement.\n *\n * Type-locked in both directions below: a method added to the interface\n * without being added here fails to compile, and a name here that is not on\n * the interface fails to compile too. The list cannot silently drift from the\n * contract it describes.\n */\nexport const MIDEN_WALLET_METHODS = [\n \"connect\",\n \"disconnect\",\n \"signBytes\",\n \"requestSend\",\n \"requestConsume\",\n \"requestTransaction\",\n \"requestAssets\",\n \"requestGuardianInfo\",\n \"requestPrivateNotes\",\n \"requestConsumableNotes\",\n \"importPrivateNote\",\n \"waitForTransaction\",\n \"createAccount\",\n] as const satisfies readonly MethodKeys[];\n\n/** Compile error if the interface gains a method this list does not name. */\ntype Unlisted = Exclude<MethodKeys, (typeof MIDEN_WALLET_METHODS)[number]>;\nconst _exhaustive: [Unlisted] extends [never]\n ? true\n : [\"MIDEN_WALLET_METHODS is missing\", Unlisted] = true;\nvoid _exhaustive;\n\n/**\n * Identifies this module as the real implementation.\n *\n * The wallet mocks this package in a dozen test files. If a conformance run\n * ever lands inside a suite that mocks it — or someone later adds a\n * `moduleNameMapper` — the imported suite would become a no-op that still\n * reports green: the identical failure mode this whole fixture exists to\n * prevent, one layer up. Assert on this before running any case.\n */\nexport const CONFORMANCE_BUILD = {\n real: true,\n methodCount: MIDEN_WALLET_METHODS.length,\n} as const;\n\n/** One assertion, named so a failure says what is wrong without a stack trace. */\nexport interface ConformanceCase {\n readonly name: string;\n /** Throws on failure; returns normally on success. */\n readonly run: () => void | Promise<void>;\n}\n\n/** Anything shaped enough to probe. Deliberately not `MidenWallet`: the point is to test providers that may not satisfy it. */\nexport type ProviderLike = Record<string, unknown>;\n\n/**\n * Shape-only checks: does the provider expose every method?\n *\n * Safe against untyped, runtime-only providers — no connection or state\n * required. This is the half that catches a provider missing a method the\n * interface promises.\n */\nexport function getSurfaceCases(provider: ProviderLike): ConformanceCase[] {\n return MIDEN_WALLET_METHODS.map((method) => ({\n name: `implements ${method}()`,\n run: () => {\n const value = provider[method];\n if (typeof value !== \"function\") {\n throw new Error(\n `MidenWallet.${method} is ${value === undefined ? \"missing\" : `a ${typeof value}`}. ` +\n `Every method on the published MidenWallet interface must exist on the provider; ` +\n `a dApp calling this one gets \"TypeError: wallet.${method} is not a function\".`\n );\n }\n },\n }));\n}\n\n/**\n * Round-trip checks against a live, connected provider.\n *\n * Unlike {@link getSurfaceCases} these need real state, so a provider obtained\n * by evaluating an injection script — with no wallet behind it — will fail\n * them for reasons that say nothing about conformance. Run the surface half\n * against those.\n */\nexport function getBehaviorCases(provider: ProviderLike): ConformanceCase[] {\n const call = async <T>(method: string, ...args: unknown[]): Promise<T> => {\n const fn = provider[method];\n if (typeof fn !== \"function\") {\n throw new Error(`MidenWallet.${method} is not a function`);\n }\n return (await (fn as (...a: unknown[]) => Promise<T>).apply(\n provider,\n args\n )) as T;\n };\n\n return [\n {\n name: \"requestAssets() resolves to { assets: [...] }\",\n run: async () => {\n const result = await call<{ assets: unknown[] }>(\"requestAssets\");\n if (!result || !Array.isArray(result.assets)) {\n throw new Error(\n `requestAssets() must resolve to { assets: Asset[] }, got ${JSON.stringify(result)}`\n );\n }\n },\n },\n {\n name: \"requestConsumableNotes() resolves to { consumableNotes: [...] }\",\n run: async () => {\n const result = await call<{ consumableNotes: unknown[] }>(\n \"requestConsumableNotes\"\n );\n if (!result || !Array.isArray(result.consumableNotes)) {\n throw new Error(\n `requestConsumableNotes() must resolve to { consumableNotes: InputNoteDetails[] }, got ${JSON.stringify(result)}`\n );\n }\n },\n },\n {\n name: \"requestGuardianInfo() resolves to { guardianInfo }\",\n run: async () => {\n const result = await call<{ guardianInfo: unknown }>(\n \"requestGuardianInfo\"\n );\n if (!result || result.guardianInfo === undefined) {\n throw new Error(\n `requestGuardianInfo() must resolve to { guardianInfo: GuardianInfo }, got ${JSON.stringify(result)}`\n );\n }\n },\n },\n ];\n}\n\n/**\n * Runs cases and collects every failure rather than stopping at the first.\n *\n * A provider missing four methods should report four failures, not one — the\n * point is to see the whole gap in a single run.\n */\nexport async function runConformance(\n cases: ConformanceCase[]\n): Promise<{ passed: string[]; failed: { name: string; error: string }[] }> {\n const passed: string[] = [];\n const failed: { name: string; error: string }[] = [];\n for (const testCase of cases) {\n try {\n await testCase.run();\n passed.push(testCase.name);\n } catch (error) {\n failed.push({\n name: testCase.name,\n error: error instanceof Error ? error.message : String(error),\n });\n }\n }\n return { passed, failed };\n}\n"]}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC","sourcesContent":["export * from \"./adapter\";\nexport * from \"./conformance\";\n"]}
package/package.json CHANGED
@@ -1,9 +1,13 @@
1
1
  {
2
2
  "name": "@miden-sdk/miden-wallet-adapter-miden",
3
- "version": "0.16.0",
3
+ "version": "0.16.3",
4
4
  "description": "Miden wallet adapter for the Miden Wallet.",
5
5
  "module": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
+ "files": [
8
+ "dist",
9
+ "AGENTS.md"
10
+ ],
7
11
  "repository": {
8
12
  "type": "git",
9
13
  "url": "git+https://github.com/0xMiden/web-sdk.git",
@@ -12,15 +16,15 @@
12
16
  "author": "Miden Contributors",
13
17
  "license": "MIT",
14
18
  "dependencies": {
15
- "@miden-sdk/miden-wallet-adapter-base": "0.16.0"
19
+ "@miden-sdk/miden-wallet-adapter-base": "0.16.3"
16
20
  },
17
21
  "devDependencies": {
18
22
  "jsdom": "^24.0.0",
19
23
  "vitest": "^1.0.0",
20
- "@miden-sdk/miden-sdk": "0.16.0"
24
+ "@miden-sdk/miden-sdk": "0.16.3"
21
25
  },
22
26
  "peerDependencies": {
23
- "@miden-sdk/miden-sdk": "^0.16.0",
27
+ "@miden-sdk/miden-sdk": "^0.16.3",
24
28
  "typescript": "^5.0.0"
25
29
  },
26
30
  "bugs": {
@@ -29,6 +33,7 @@
29
33
  "homepage": "https://github.com/0xMiden/web-sdk",
30
34
  "scripts": {
31
35
  "build": "tsc",
36
+ "typecheck": "tsc --noEmit -p tsconfig.test.json",
32
37
  "clean": "rimraf dist/ node_modules/",
33
38
  "doc": "typedoc --disableSources --plugin typedoc-plugin-markdown index.ts",
34
39
  "test": "vitest run"