@arcadiasystems/morse-sdk 0.1.3 → 0.1.4

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/CHANGELOG.md CHANGED
@@ -2,6 +2,41 @@
2
2
 
3
3
  All notable changes to `morse-sdk` will be documented in this file. Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and the project follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
4
4
 
5
+ ## [0.1.4] - 2026-05-21
6
+
7
+ Pluggable `PubkeyCache` for `fromAccountAsync` so Phantom users do not re-sign a probe message on every page reload.
8
+
9
+ ### Added
10
+
11
+ - **`PubkeyCache` interface** with `get`, `set`, optional `clear`. Methods may be sync or async, so the same interface backs browser `localStorage`, IndexedDB, and server-side KV stores. Pass via the new `options.pubkeyCache` arg on `fromAccountAsync`.
12
+ - **`BrowserStoragePubkeyCache`**: ready-to-use `PubkeyCache` backed by a DOM `Storage`-like interface (defaults to `globalThis.localStorage`). Customizable `prefix` for namespacing. Throws `ConfigurationError` at construction when `localStorage` is unavailable and no `storage` was injected (SSR / Node without polyfill).
13
+ - **`BrowserStorageLike` / `BrowserStoragePubkeyCacheOptions`** exported types for consumers building their own storage adapters or tests.
14
+
15
+ ### Changed
16
+
17
+ - **`fromAccountAsync(account, callbacks, options?)`**: third parameter added. Cache hits are still verified to derive to `account.address` before the signer is trusted; on mismatch the SDK calls `cache.clear?.(address)` and falls through to a fresh probe, then writes the recovered pubkey back via `cache.set`. Stale entries, planted bytes, and wallet rotation all heal automatically. Compliant wallets (sync `fromAccount` path) skip the cache entirely; `get`/`set` are not called.
18
+
19
+ ### Consumer migration
20
+
21
+ Before (probe popup on every mount):
22
+
23
+ ```ts
24
+ const signer = await WalletStandardSigner.fromAccountAsync(account, callbacks);
25
+ ```
26
+
27
+ After (probe popup once per address):
28
+
29
+ ```ts
30
+ import { BrowserStoragePubkeyCache } from "@arcadiasystems/morse-sdk";
31
+ const signer = await WalletStandardSigner.fromAccountAsync(account, callbacks, {
32
+ pubkeyCache: new BrowserStoragePubkeyCache(),
33
+ });
34
+ ```
35
+
36
+ ### Unchanged
37
+
38
+ No behavior change for callers who do not pass `pubkeyCache`. No behavior change for compliant wallets. `fromAccount` (sync) is unchanged; the cache only applies to the async recovery path. Error classes, public types, and the rest of the SDK surface are byte-identical to 0.1.3.
39
+
5
40
  ## [0.1.3] - 2026-05-21
6
41
 
7
42
  Phantom (Sui) wallet support, plus a structured error class so consumer dapps can render proper UX for unsupported wallets.
@@ -96,6 +131,7 @@ See `README.md` for the full list. Headlines:
96
131
  - Wallet schemes other than Ed25519 ship as decoders with E2E unverified; `WalletStandardSigner.fromAccount` will accept them, but `@mysten/walrus` and `@mysten/seal` round-trip is not yet smoke-tested for those configurations.
97
132
  - gRPC client only at v0.1.0; the reader and adapter interfaces are typed against `Pick<SuiGrpcClient, ...>`. JSON-RPC fallback is planned for v0.2.0.
98
133
 
134
+ [0.1.4]: https://github.com/arcadiasystems/morse-dcms/releases/tag/v0.1.4
99
135
  [0.1.3]: https://github.com/arcadiasystems/morse-dcms/releases/tag/v0.1.3
100
136
  [0.1.2]: https://github.com/arcadiasystems/morse-dcms/releases/tag/v0.1.2
101
137
  [0.1.1]: https://github.com/arcadiasystems/morse-dcms/releases/tag/v0.1.1
package/README.md CHANGED
@@ -232,7 +232,8 @@ The full public surface, grouped by concern. Every export carries a JSDoc on its
232
232
  | --- | --- |
233
233
  | `KeypairAdapter` | Server / CLI `WalletAdapter` wrapping a raw `Ed25519Keypair`. |
234
234
  | `WalletStandardSigner.fromAccount(account, callbacks)` | Browser-side `Signer` for `@mysten/walrus` and `@mysten/seal`; wraps wallet-standard wallets without ever holding the user's key. Sync; throws `UnsupportedWalletSchemeError` on non-canonical `account.publicKey` (e.g. Phantom). |
235
- | `WalletStandardSigner.fromAccountAsync(account, callbacks)` | Same as `fromAccount`, with signature-based pubkey recovery for wallets that return a non-canonical `account.publicKey`. One extra wallet popup at session start for non-compliant wallets; no extra IO for compliant ones. |
235
+ | `WalletStandardSigner.fromAccountAsync(account, callbacks, options?)` | Same as `fromAccount`, with signature-based pubkey recovery for wallets that return a non-canonical `account.publicKey` (Phantom). Pass `options.pubkeyCache` to skip the recovery probe across sessions. One extra wallet popup on first session per address; subsequent sessions are zero-popup when a cache is supplied. |
236
+ | `BrowserStoragePubkeyCache({ storage?, prefix? })` | `PubkeyCache` backed by browser `localStorage`. Customizable storage backend (for tests, `sessionStorage`, or polyfills) and key prefix. |
236
237
  | `DefaultWalrusWriteAdapter.fromConfig(config, signer)` | Walrus uploads (blob + quilt). Implements `WalrusFlowCapable` (the 2-popup optimization). |
237
238
  | `DefaultWalrusReadAdapter.fromConfig(config)` | Walrus reads (`readBlob`, `readBlobByObjectId`, `readQuiltPatch`, `readBlobRef`). |
238
239
  | `HttpPublisherWriteAdapter.fromConfig({ publisherUrl, ownerAddress })` | Walrus uploads via a publisher HTTP service (operator pays storage; 1 popup for upload + addEntry). |
@@ -323,25 +324,34 @@ Refused schemes throw `UnsupportedWalletSchemeError` (a `ConfigurationError` sub
323
324
 
324
325
  Phantom's Sui adapter returns a 59-byte opaque blob in `account.publicKey` instead of the canonical 32 / 33-byte form mandated by wallet-standard. This is a documented Phantom quirk (see the Sui developer forum thread from August 2025), not an SDK gap.
325
326
 
326
- For Phantom-class wallets, use `WalletStandardSigner.fromAccountAsync` instead of `fromAccount`:
327
+ For Phantom-class wallets, use `WalletStandardSigner.fromAccountAsync` instead of `fromAccount`, and pass a `PubkeyCache` to avoid re-prompting on every page reload:
327
328
 
328
329
  ```ts
329
- import { WalletStandardSigner, UnsupportedWalletSchemeError } from "@arcadiasystems/morse-sdk";
330
+ import {
331
+ WalletStandardSigner,
332
+ BrowserStoragePubkeyCache,
333
+ UnsupportedWalletSchemeError,
334
+ } from "@arcadiasystems/morse-sdk";
330
335
 
331
336
  try {
332
- const signer = await WalletStandardSigner.fromAccountAsync(account, callbacks);
333
- // ...
337
+ const signer = await WalletStandardSigner.fromAccountAsync(account, callbacks, {
338
+ pubkeyCache: new BrowserStoragePubkeyCache(),
339
+ });
334
340
  } catch (err) {
335
341
  if (err instanceof UnsupportedWalletSchemeError) {
336
342
  // Render: "Your wallet uses an unsupported scheme. Try Slush or Suiet."
337
- // err.publicKeyBytes, err.address, err.walletName available.
343
+ // err.code, err.publicKeyBytes, err.address, err.walletName available.
338
344
  }
339
345
  }
340
346
  ```
341
347
 
342
348
  `fromAccountAsync` tries the sync decoder first (no extra IO for compliant wallets), and on failure recovers the real Ed25519 public key by asking the wallet to sign a domain-separated probe message. Sui's canonical signature is `flag || sig || pk` (97 bytes for Ed25519); the last 32 bytes are the raw key. The recovered key is verified to derive to `account.address` before the signer is constructed.
343
349
 
344
- Cost: one extra wallet popup at session start for Phantom users. The probe message is `"morse-sdk:wallet-pubkey-recovery:" + address`, wrapped by Sui's `signPersonalMessage` `"Sui Message:"` prefix, so it cannot collide with a real transaction. Compliant wallets pay no extra cost; they take the sync `fromAccount` path inside `fromAccountAsync` and skip the probe.
350
+ Without a cache, the probe popup fires every session (every page reload, every component remount). With a `BrowserStoragePubkeyCache`, the popup fires once per address; subsequent sessions read from `localStorage` and skip the probe. The cached pubkey is still verified to derive to `account.address` on every load, so stale entries (wallet switch, planted bytes) heal automatically: the SDK calls `cache.clear?.(address)` and re-probes.
351
+
352
+ For non-browser contexts (SSR, Node, native), implement the `PubkeyCache` interface against IndexedDB, Redis, or any KV store. Methods may be sync or async.
353
+
354
+ The probe message is `"morse-sdk:wallet-pubkey-recovery:" + address`, wrapped by Sui's `signPersonalMessage` `"Sui Message:"` prefix, so it cannot collide with a real transaction. Compliant wallets pay no extra cost; they take the sync `fromAccount` path inside `fromAccountAsync` and skip both the probe and the cache.
345
355
 
346
356
  ## Error taxonomy
347
357
 
package/dist/index.d.ts CHANGED
@@ -11,6 +11,6 @@ export { type AddEncryptedEntryArgs, type AddEncryptedEntryFromBytesArgs, type A
11
11
  export { type EntryListPage, type ListEntriesOptions, type ListPublicationsOptions, type ListPublisherCapsOptions, type OwnedPublication, type PublicationListPage, type PublicationReader, type PublisherCapListPage, RpcPublicationReader, type ScanEntriesOptions, } from "./read/index.js";
12
12
  export { buildPublisherSealId, DefaultSealAdapter, decodePublisherSealId, type SealAdapter, type SealAdapterConfig, type SealDecryptOptions, type SealEncryptOptions, type SealEncryptResult, type SealIdParts, } from "./seal/index.js";
13
13
  export { AccessPolicy, type BlobObjectId, type BlobRef, type Collection, type Entry, type OwnerCap, type OwnerCapId, type PackageId, type Publication, type PublicationId, type PublisherCap, type PublisherCapId, QUILT_PATCH_ID_LENGTH, type QuiltPatchId, type RegistryId, type Revision, type SealId, SealPolicyTag, StorageMode, type SuiAddress, type SuiObjectId, type TxCreatedObject, type TxDeletedObject, type TxReceipt, type WalrusBlobId, } from "./types.js";
14
- export { KeypairAdapter, type SimulationReturnValues, type WalletAdapter, type WalletSignPersonalMessage, type WalletSignTransaction, type WalletStandardAccount, WalletStandardSigner, type WalletStandardSignerCallbacks, type WalletStandardSignerOptions, } from "./wallets/index.js";
14
+ export { type BrowserStorageLike, BrowserStoragePubkeyCache, type BrowserStoragePubkeyCacheOptions, KeypairAdapter, type PubkeyCache, type SimulationReturnValues, type WalletAdapter, type WalletSignPersonalMessage, type WalletSignTransaction, type WalletStandardAccount, WalletStandardSigner, type WalletStandardSignerCallbacks, type WalletStandardSignerOptions, } from "./wallets/index.js";
15
15
  export { DefaultWalrusReadAdapter, DefaultWalrusWriteAdapter, type DefaultWalrusWriteAdapterOptions, decodeQuiltPatchId, encodeQuiltPatchId, HttpAggregatorReadAdapter, type HttpAggregatorReadAdapterOptions, HttpPublisherWriteAdapter, type HttpPublisherWriteAdapterOptions, isWalrusFlowCapable, type ParsePublisherResponse, type QuiltPatchIdParts, type QuiltPatchInput, quiltPatchIdFromString, quiltPatchIdToString, type StartBlobUploadResult, type UploadBlobOptions, type UploadBlobResult, type UploadQuiltOptions, type UploadQuiltPatch, type UploadQuiltResult, type WalrusAdapterConfig, type WalrusBlobIntegrityCheck, type WalrusFlowCapable, type WalrusReadAdapter, type WalrusReadAdapterConfig, type WalrusReadOptions, type WalrusUploadCommonOptions, type WalrusWriteAdapter, } from "./walrus/index.js";
16
16
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,YAAY,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACtE,OAAO,EACN,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,YAAY,EACZ,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,cAAc,GACd,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EACN,gBAAgB,EAChB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,WAAW,EACX,OAAO,EACP,KAAK,aAAa,EAClB,KAAK,eAAe,GACpB,MAAM,aAAa,CAAC;AACrB,OAAO,EACN,KAAK,cAAc,EACnB,iBAAiB,GACjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACN,WAAW,EACX,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,UAAU,EACV,aAAa,EACb,KAAK,gBAAgB,EACrB,SAAS,EACT,KAAK,aAAa,EAClB,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EACpB,KAAK,2BAA2B,EAChC,4BAA4B,EAC5B,eAAe,GACf,MAAM,aAAa,CAAC;AACrB,OAAO,EACN,KAAK,qBAAqB,EAC1B,KAAK,8BAA8B,EACnC,KAAK,YAAY,EACjB,KAAK,qBAAqB,EAC1B,KAAK,uBAAuB,EAC5B,KAAK,cAAc,EACnB,KAAK,uBAAuB,EAC5B,KAAK,gCAAgC,EACrC,iBAAiB,EACjB,0BAA0B,EAC1B,QAAQ,EACR,iBAAiB,EACjB,mBAAmB,EACnB,4BAA4B,EAC5B,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAC1B,KAAK,uBAAuB,EAC5B,gBAAgB,EAChB,iBAAiB,EACjB,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAC5B,KAAK,yBAAyB,EAC9B,gBAAgB,EAChB,WAAW,EACX,iBAAiB,EACjB,mBAAmB,EACnB,KAAK,qBAAqB,EAC1B,KAAK,uBAAuB,EAC5B,iBAAiB,EACjB,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,aAAa,EACb,gBAAgB,EAChB,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,wBAAwB,EAC7B,kBAAkB,EAClB,KAAK,qBAAqB,EAC1B,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAC7B,KAAK,0BAA0B,EAC/B,iBAAiB,EACjB,oBAAoB,GACpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACN,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAC7B,KAAK,gBAAgB,EACrB,KAAK,mBAAmB,EACxB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,oBAAoB,EACpB,KAAK,kBAAkB,GACvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACN,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,EACrB,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,WAAW,GAChB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACN,YAAY,EACZ,KAAK,YAAY,EACjB,KAAK,OAAO,EACZ,KAAK,UAAU,EACf,KAAK,KAAK,EACV,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,qBAAqB,EACrB,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,KAAK,MAAM,EACX,aAAa,EACb,WAAW,EACX,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,SAAS,EACd,KAAK,YAAY,GACjB,MAAM,YAAY,CAAC;AACpB,OAAO,EACN,cAAc,EACd,KAAK,sBAAsB,EAC3B,KAAK,aAAa,EAClB,KAAK,yBAAyB,EAC9B,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC1B,oBAAoB,EACpB,KAAK,6BAA6B,EAClC,KAAK,2BAA2B,GAChC,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACN,wBAAwB,EACxB,yBAAyB,EACzB,KAAK,gCAAgC,EACrC,kBAAkB,EAClB,kBAAkB,EAClB,yBAAyB,EACzB,KAAK,gCAAgC,EACrC,yBAAyB,EACzB,KAAK,gCAAgC,EACrC,mBAAmB,EACnB,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,sBAAsB,EACtB,oBAAoB,EACpB,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,EAC7B,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,iBAAiB,EACtB,KAAK,yBAAyB,EAC9B,KAAK,kBAAkB,GACvB,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -10,6 +10,6 @@ export { addEncryptedEntry, addEncryptedEntryFromBytes, addEntry, addEntryFromBy
10
10
  export { RpcPublicationReader, } from "./read/index.js";
11
11
  export { buildPublisherSealId, DefaultSealAdapter, decodePublisherSealId, } from "./seal/index.js";
12
12
  export { AccessPolicy, QUILT_PATCH_ID_LENGTH, SealPolicyTag, StorageMode, } from "./types.js";
13
- export { KeypairAdapter, WalletStandardSigner, } from "./wallets/index.js";
13
+ export { BrowserStoragePubkeyCache, KeypairAdapter, WalletStandardSigner, } from "./wallets/index.js";
14
14
  export { DefaultWalrusReadAdapter, DefaultWalrusWriteAdapter, decodeQuiltPatchId, encodeQuiltPatchId, HttpAggregatorReadAdapter, HttpPublisherWriteAdapter, isWalrusFlowCapable, quiltPatchIdFromString, quiltPatchIdToString, } from "./walrus/index.js";
15
15
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EACN,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,YAAY,EACZ,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,cAAc,GACd,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EACN,gBAAgB,EAGhB,WAAW,EACX,OAAO,GAGP,MAAM,aAAa,CAAC;AACrB,OAAO,EAEN,iBAAiB,GACjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACN,WAAW,EAGX,kBAAkB,EAClB,kBAAkB,EAClB,UAAU,EACV,aAAa,EAEb,SAAS,EAET,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EAEpB,4BAA4B,EAC5B,eAAe,GACf,MAAM,aAAa,CAAC;AACrB,OAAO,EASN,iBAAiB,EACjB,0BAA0B,EAC1B,QAAQ,EACR,iBAAiB,EACjB,mBAAmB,EACnB,4BAA4B,EAK5B,gBAAgB,EAChB,iBAAiB,EASjB,gBAAgB,EAChB,WAAW,EACX,iBAAiB,EACjB,mBAAmB,EAGnB,iBAAiB,EAMjB,aAAa,EACb,gBAAgB,EAIhB,kBAAkB,EAKlB,iBAAiB,EACjB,oBAAoB,GACpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EASN,oBAAoB,GAEpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACN,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,GAOrB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACN,YAAY,EAYZ,qBAAqB,EAKrB,aAAa,EACb,WAAW,GAOX,MAAM,YAAY,CAAC;AACpB,OAAO,EACN,cAAc,EAMd,oBAAoB,GAGpB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACN,wBAAwB,EACxB,yBAAyB,EAEzB,kBAAkB,EAClB,kBAAkB,EAClB,yBAAyB,EAEzB,yBAAyB,EAEzB,mBAAmB,EAInB,sBAAsB,EACtB,oBAAoB,GAepB,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EACN,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,YAAY,EACZ,WAAW,EACX,eAAe,EACf,gBAAgB,EAChB,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,cAAc,GACd,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EACN,gBAAgB,EAGhB,WAAW,EACX,OAAO,GAGP,MAAM,aAAa,CAAC;AACrB,OAAO,EAEN,iBAAiB,GACjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACN,WAAW,EAGX,kBAAkB,EAClB,kBAAkB,EAClB,UAAU,EACV,aAAa,EAEb,SAAS,EAET,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EAEpB,4BAA4B,EAC5B,eAAe,GACf,MAAM,aAAa,CAAC;AACrB,OAAO,EASN,iBAAiB,EACjB,0BAA0B,EAC1B,QAAQ,EACR,iBAAiB,EACjB,mBAAmB,EACnB,4BAA4B,EAK5B,gBAAgB,EAChB,iBAAiB,EASjB,gBAAgB,EAChB,WAAW,EACX,iBAAiB,EACjB,mBAAmB,EAGnB,iBAAiB,EAMjB,aAAa,EACb,gBAAgB,EAIhB,kBAAkB,EAKlB,iBAAiB,EACjB,oBAAoB,GACpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EASN,oBAAoB,GAEpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACN,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,GAOrB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACN,YAAY,EAYZ,qBAAqB,EAKrB,aAAa,EACb,WAAW,GAOX,MAAM,YAAY,CAAC;AACpB,OAAO,EAEN,yBAAyB,EAEzB,cAAc,EAOd,oBAAoB,GAGpB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACN,wBAAwB,EACxB,yBAAyB,EAEzB,kBAAkB,EAClB,kBAAkB,EAClB,yBAAyB,EAEzB,yBAAyB,EAEzB,mBAAmB,EAInB,sBAAsB,EACtB,oBAAoB,GAepB,MAAM,mBAAmB,CAAC"}
@@ -3,5 +3,5 @@
3
3
  */
4
4
  export type { SimulationReturnValues, WalletAdapter } from "./adapter.js";
5
5
  export { KeypairAdapter } from "./keypair-adapter.js";
6
- export { type WalletSignPersonalMessage, type WalletSignTransaction, type WalletStandardAccount, WalletStandardSigner, type WalletStandardSignerCallbacks, type WalletStandardSignerOptions, } from "./wallet-standard-signer.js";
6
+ export { type BrowserStorageLike, BrowserStoragePubkeyCache, type BrowserStoragePubkeyCacheOptions, type PubkeyCache, type WalletSignPersonalMessage, type WalletSignTransaction, type WalletStandardAccount, WalletStandardSigner, type WalletStandardSignerCallbacks, type WalletStandardSignerOptions, } from "./wallet-standard-signer.js";
7
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/wallets/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,YAAY,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EACN,KAAK,yBAAyB,EAC9B,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC1B,oBAAoB,EACpB,KAAK,6BAA6B,EAClC,KAAK,2BAA2B,GAChC,MAAM,6BAA6B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/wallets/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,YAAY,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EACN,KAAK,kBAAkB,EACvB,yBAAyB,EACzB,KAAK,gCAAgC,EACrC,KAAK,WAAW,EAChB,KAAK,yBAAyB,EAC9B,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC1B,oBAAoB,EACpB,KAAK,6BAA6B,EAClC,KAAK,2BAA2B,GAChC,MAAM,6BAA6B,CAAC"}
@@ -2,5 +2,5 @@
2
2
  * Public barrel for the wallet adapter layer.
3
3
  */
4
4
  export { KeypairAdapter } from "./keypair-adapter.js";
5
- export { WalletStandardSigner, } from "./wallet-standard-signer.js";
5
+ export { BrowserStoragePubkeyCache, WalletStandardSigner, } from "./wallet-standard-signer.js";
6
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/wallets/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAIN,oBAAoB,GAGpB,MAAM,6BAA6B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/wallets/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAEN,yBAAyB,EAMzB,oBAAoB,GAGpB,MAAM,6BAA6B,CAAC"}
@@ -103,6 +103,12 @@ export declare class WalletStandardSigner extends Signer {
103
103
  * verifies it derives to `account.address`. One extra wallet popup for
104
104
  * Phantom-class wallets; compliant wallets pay no extra cost.
105
105
  *
106
+ * Pass `options.pubkeyCache` to skip the probe on subsequent sessions:
107
+ * the SDK reads cached bytes, verifies they derive to `account.address`,
108
+ * and on mismatch calls `clear` (if defined) and re-probes. Successful
109
+ * probes write back via `set`. See `BrowserStoragePubkeyCache` for a
110
+ * `localStorage`-backed default.
111
+ *
106
112
  * Recovery handles Ed25519 only; other schemes throw
107
113
  * `UnsupportedWalletSchemeError` with `code: "recovery-non-ed25519"`.
108
114
  *
@@ -111,7 +117,9 @@ export declare class WalletStandardSigner extends Signer {
111
117
  * from `fromAccount` (zkLogin shape mismatch, etc.) propagate
112
118
  * verbatim without firing the probe.
113
119
  */
114
- static fromAccountAsync(account: WalletStandardAccount, callbacks: WalletStandardSignerCallbacks): Promise<WalletStandardSigner>;
120
+ static fromAccountAsync(account: WalletStandardAccount, callbacks: WalletStandardSignerCallbacks, options?: {
121
+ pubkeyCache?: PubkeyCache;
122
+ }): Promise<WalletStandardSigner>;
115
123
  getKeyScheme(): SignatureScheme;
116
124
  getPublicKey(): PublicKey;
117
125
  sign(_bytes: Uint8Array): Promise<Uint8Array<ArrayBuffer>>;
@@ -133,4 +141,46 @@ export declare class WalletStandardSigner extends Signer {
133
141
  effects: true;
134
142
  }>>;
135
143
  }
144
+ /**
145
+ * Pluggable storage for pubkeys recovered by `fromAccountAsync`. Used to
146
+ * skip the probe `signPersonalMessage` popup on subsequent sessions for
147
+ * wallets that return a non-canonical `account.publicKey` (Phantom).
148
+ * Methods may be sync or async to support browser `localStorage` (sync),
149
+ * `IndexedDB` (async), and server-side KV stores (async).
150
+ *
151
+ * Cache hits are still verified to derive to `account.address` before being
152
+ * trusted; on mismatch the SDK calls `clear` (if defined) and re-probes.
153
+ */
154
+ export interface PubkeyCache {
155
+ get(address: string): Uint8Array | null | Promise<Uint8Array | null>;
156
+ set(address: string, pubkey: Uint8Array): void | Promise<void>;
157
+ clear?(address: string): void | Promise<void>;
158
+ }
159
+ /** Subset of the DOM `Storage` interface that `BrowserStoragePubkeyCache` needs. */
160
+ export interface BrowserStorageLike {
161
+ getItem(key: string): string | null;
162
+ setItem(key: string, value: string): void;
163
+ removeItem(key: string): void;
164
+ }
165
+ export interface BrowserStoragePubkeyCacheOptions {
166
+ /** Defaults to `globalThis.localStorage`. Pass a custom backend for tests or `sessionStorage`. */
167
+ readonly storage?: BrowserStorageLike;
168
+ /** Key prefix to namespace inside the storage. Defaults to `"morse-sdk:wallet-pubkey:"`. */
169
+ readonly prefix?: string;
170
+ }
171
+ /**
172
+ * Sync `PubkeyCache` backed by browser `localStorage` (or any DOM
173
+ * `Storage`-like). Pubkeys are stored as base64 strings under
174
+ * `<prefix><address>`. Throws `ConfigurationError` on construction if
175
+ * `globalThis.localStorage` is unavailable and no `storage` was passed
176
+ * (e.g. SSR/Node without polyfill); inject a storage backend or use a
177
+ * different cache implementation in non-browser contexts.
178
+ */
179
+ export declare class BrowserStoragePubkeyCache implements PubkeyCache {
180
+ #private;
181
+ constructor(options?: BrowserStoragePubkeyCacheOptions);
182
+ get(address: string): Uint8Array | null;
183
+ set(address: string, pubkey: Uint8Array): void;
184
+ clear(address: string): void;
185
+ }
136
186
  //# sourceMappingURL=wallet-standard-signer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"wallet-standard-signer.d.ts","sourceRoot":"","sources":["../../src/wallets/wallet-standard-signer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EACN,KAAK,SAAS,EACd,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,MAAM,EACN,MAAM,0BAA0B,CAAC;AAKlC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAM5D;;;;GAIG;AACH,MAAM,MAAM,qBAAqB,GAAG,CAAC,KAAK,EAAE;IAC3C,WAAW,EAAE,WAAW,CAAC;CACzB,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC;AAElC;;;;GAIG;AACH,MAAM,MAAM,yBAAyB,GAAG,CAAC,KAAK,EAAE;IAC/C,OAAO,EAAE,UAAU,CAAC;CACpB,KAAK,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAEpD,MAAM,WAAW,2BAA2B;IAC3C,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAC;IACpC,QAAQ,CAAC,eAAe,EAAE,qBAAqB,CAAC;IAChD,QAAQ,CAAC,mBAAmB,EAAE,yBAAyB,CAAC;CACxD;AAED;;;;;GAKG;AACH,MAAM,WAAW,qBAAqB;IACrC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;CACtC;AAED,8EAA8E;AAC9E,MAAM,WAAW,6BAA6B;IAC7C,QAAQ,CAAC,eAAe,EAAE,qBAAqB,CAAC;IAChD,QAAQ,CAAC,mBAAmB,EAAE,yBAAyB,CAAC;CACxD;AAED;;;GAGG;AACH,qBAAa,oBAAqB,SAAQ,MAAM;;gBAMnC,OAAO,EAAE,2BAA2B;IAQhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACH,MAAM,CAAC,WAAW,CACjB,OAAO,EAAE,qBAAqB,EAC9B,SAAS,EAAE,6BAA6B,GACtC,oBAAoB;IAUvB;;;;;;;;;;;;;OAaG;WACU,gBAAgB,CAC5B,OAAO,EAAE,qBAAqB,EAC9B,SAAS,EAAE,6BAA6B,GACtC,OAAO,CAAC,oBAAoB,CAAC;IAuBvB,YAAY,IAAI,eAAe;IAI/B,YAAY,IAAI,SAAS;IAIzB,IAAI,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IAMpD,mBAAmB,CACjC,OAAO,EAAE,UAAU,GACjB,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAIhD;;;;;OAKG;IACY,yBAAyB,CAAC,EACxC,WAAW,EACX,MAAM,GACN,EAAE;QACF,WAAW,EAAE,WAAW,CAAC;QACzB,MAAM,EAAE,iBAAiB,CAAC;KAC1B,GAAG,OAAO,CACV,cAAc,CAAC,iBAAiB,CAAC;QAChC,WAAW,EAAE,IAAI,CAAC;QAClB,OAAO,EAAE,IAAI,CAAC;KACd,CAAC,CACF;CASD"}
1
+ {"version":3,"file":"wallet-standard-signer.d.ts","sourceRoot":"","sources":["../../src/wallets/wallet-standard-signer.ts"],"names":[],"mappings":"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"}
@@ -85,6 +85,12 @@ export class WalletStandardSigner extends Signer {
85
85
  * verifies it derives to `account.address`. One extra wallet popup for
86
86
  * Phantom-class wallets; compliant wallets pay no extra cost.
87
87
  *
88
+ * Pass `options.pubkeyCache` to skip the probe on subsequent sessions:
89
+ * the SDK reads cached bytes, verifies they derive to `account.address`,
90
+ * and on mismatch calls `clear` (if defined) and re-probes. Successful
91
+ * probes write back via `set`. See `BrowserStoragePubkeyCache` for a
92
+ * `localStorage`-backed default.
93
+ *
88
94
  * Recovery handles Ed25519 only; other schemes throw
89
95
  * `UnsupportedWalletSchemeError` with `code: "recovery-non-ed25519"`.
90
96
  *
@@ -93,7 +99,7 @@ export class WalletStandardSigner extends Signer {
93
99
  * from `fromAccount` (zkLogin shape mismatch, etc.) propagate
94
100
  * verbatim without firing the probe.
95
101
  */
96
- static async fromAccountAsync(account, callbacks) {
102
+ static async fromAccountAsync(account, callbacks, options) {
97
103
  try {
98
104
  return WalletStandardSigner.fromAccount(account, callbacks);
99
105
  }
@@ -102,7 +108,29 @@ export class WalletStandardSigner extends Signer {
102
108
  error.code !== "non-canonical-pubkey") {
103
109
  throw error;
104
110
  }
111
+ const cache = options?.pubkeyCache;
112
+ if (cache !== undefined) {
113
+ const cached = await cache.get(account.address);
114
+ if (cached !== null) {
115
+ const verified = verifyCachedEd25519PubKey(cached, account.address);
116
+ if (verified !== null) {
117
+ return new WalletStandardSigner({
118
+ publicKey: verified,
119
+ keyScheme: "ED25519",
120
+ signTransaction: callbacks.signTransaction,
121
+ signPersonalMessage: callbacks.signPersonalMessage,
122
+ });
123
+ }
124
+ // Cached bytes did not derive to account.address (stale entry,
125
+ // wallet switch, or planted bytes). Drop it and fall through
126
+ // to a fresh probe.
127
+ await cache.clear?.(account.address);
128
+ }
129
+ }
105
130
  const recovered = await recoverEd25519PublicKeyFromSignature(account, callbacks.signPersonalMessage);
131
+ if (cache !== undefined) {
132
+ await cache.set(account.address, recovered.toRawBytes());
133
+ }
106
134
  return new WalletStandardSigner({
107
135
  publicKey: recovered,
108
136
  keyScheme: "ED25519",
@@ -247,6 +275,25 @@ async function recoverEd25519PublicKeyFromSignature(account, signPersonalMessage
247
275
  }
248
276
  return publicKey;
249
277
  }
278
+ /**
279
+ * Validate cached pubkey bytes: must be exactly 32 bytes and must derive to
280
+ * the expected Sui address. Returns the constructed key on success, null
281
+ * on any failure so the caller can clear and re-probe.
282
+ */
283
+ function verifyCachedEd25519PubKey(bytes, expectedAddress) {
284
+ if (bytes.length !== 32) {
285
+ return null;
286
+ }
287
+ try {
288
+ const publicKey = new Ed25519PublicKey(bytes);
289
+ const derived = normalizeSuiAddress(publicKey.toSuiAddress());
290
+ const expected = normalizeSuiAddress(expectedAddress);
291
+ return derived === expected ? publicKey : null;
292
+ }
293
+ catch {
294
+ return null;
295
+ }
296
+ }
250
297
  /**
251
298
  * Build the list of (scheme, public-key-constructor) pairs to try against
252
299
  * `account.address`. Covers raw bytes (Suiet-style) and flag-prefixed bytes
@@ -296,4 +343,52 @@ function candidateInterpretations(bytes) {
296
343
  }
297
344
  return list;
298
345
  }
346
+ /**
347
+ * Sync `PubkeyCache` backed by browser `localStorage` (or any DOM
348
+ * `Storage`-like). Pubkeys are stored as base64 strings under
349
+ * `<prefix><address>`. Throws `ConfigurationError` on construction if
350
+ * `globalThis.localStorage` is unavailable and no `storage` was passed
351
+ * (e.g. SSR/Node without polyfill); inject a storage backend or use a
352
+ * different cache implementation in non-browser contexts.
353
+ */
354
+ export class BrowserStoragePubkeyCache {
355
+ #storage;
356
+ #prefix;
357
+ constructor(options = {}) {
358
+ const storage = options.storage ?? globalThis.localStorage;
359
+ if (!storage) {
360
+ throw new ConfigurationError("BrowserStoragePubkeyCache: globalThis.localStorage is not available. In SSR / Node contexts, guard construction with `typeof localStorage !== 'undefined'`, defer to a client-only component, or pass an explicit `storage` backend (e.g. a Redis-backed PubkeyCache implementation).");
361
+ }
362
+ this.#storage = storage;
363
+ this.#prefix = options.prefix ?? "morse-sdk:wallet-pubkey:";
364
+ }
365
+ get(address) {
366
+ const value = this.#storage.getItem(this.#prefix + address);
367
+ // Some Storage shims (jsdom variants, RN AsyncStorage wrappers) return
368
+ // "" instead of null on a missing key; treat both as a miss.
369
+ if (!value) {
370
+ return null;
371
+ }
372
+ try {
373
+ return fromBase64(value);
374
+ }
375
+ catch {
376
+ // Corrupt entry; treat as miss. SDK will re-probe and overwrite.
377
+ return null;
378
+ }
379
+ }
380
+ set(address, pubkey) {
381
+ this.#storage.setItem(this.#prefix + address, toBase64(pubkey));
382
+ }
383
+ clear(address) {
384
+ this.#storage.removeItem(this.#prefix + address);
385
+ }
386
+ }
387
+ function toBase64(bytes) {
388
+ let binary = "";
389
+ for (let i = 0; i < bytes.length; i += 1) {
390
+ binary += String.fromCharCode(bytes[i] ?? 0);
391
+ }
392
+ return btoa(binary);
393
+ }
299
394
  //# sourceMappingURL=wallet-standard-signer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"wallet-standard-signer.js","sourceRoot":"","sources":["../../src/wallets/wallet-standard-signer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"wallet-standard-signer.js","sourceRoot":"","sources":["../../src/wallets/wallet-standard-signer.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arcadiasystems/morse-sdk",
3
- "version": "0.1.3",
3
+ "version": "0.1.4",
4
4
  "description": "TypeScript SDK for Morse dCMS on the Sui blockchain.",
5
5
  "license": "MIT",
6
6
  "type": "module",