@arcadiasystems/morse-sdk 0.1.2 → 0.1.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/CHANGELOG.md +23 -0
- package/README.md +29 -2
- package/dist/errors.d.ts +31 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +24 -0
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/wallets/wallet-standard-signer.d.ts +20 -2
- package/dist/wallets/wallet-standard-signer.d.ts.map +1 -1
- package/dist/wallets/wallet-standard-signer.js +96 -4
- package/dist/wallets/wallet-standard-signer.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,27 @@
|
|
|
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.3] - 2026-05-21
|
|
6
|
+
|
|
7
|
+
Phantom (Sui) wallet support, plus a structured error class so consumer dapps can render proper UX for unsupported wallets.
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- **`WalletStandardSigner.fromAccountAsync(account, callbacks)`**: async variant of `fromAccount` that recovers the real Ed25519 public key from a probe signature when `account.publicKey` is non-canonical. Compliant wallets (Slush, Suiet) go through the sync path with no extra IO; non-canonical wallets (Phantom) get one extra wallet popup at session start for the recovery. The probe message is domain-separated (`"morse-sdk:wallet-pubkey-recovery:" + address`) so it cannot collide with a real transaction. The recovered key is verified to derive to `account.address` before the signer is constructed; a wallet bug that signs with a different key is caught and rejected.
|
|
12
|
+
- **`UnsupportedWalletSchemeError extends ConfigurationError`** with structured fields `code: UnsupportedWalletSchemeCode`, `publicKeyBytes: Readonly<Uint8Array>`, `address: string`, optional `walletName?: string`. The `code` discriminates the failure mode: `non-canonical-pubkey` (sync decode failed, recovery applicable), `malformed-zklogin` (zkLogin-shaped but not decodable, recovery not applicable), `recovery-sig-length` / `recovery-non-ed25519` / `recovery-address-mismatch` (recovery flow failed). Consumer dapps switch on `code` to render the appropriate CTA without parsing message strings.
|
|
13
|
+
|
|
14
|
+
### Changed
|
|
15
|
+
|
|
16
|
+
- **`fromAccount` now throws `UnsupportedWalletSchemeError`** (still a `ConfigurationError` subclass) instead of plain `ConfigurationError` on unrecognized public-key shapes. Existing consumers narrowing on `ConfigurationError` continue to work without modification; consumers who want structured fields opt in via `instanceof UnsupportedWalletSchemeError`. The error message also updates the suggested remediation from "implement a custom Signer" to "retry with WalletStandardSigner.fromAccountAsync".
|
|
17
|
+
|
|
18
|
+
### Context
|
|
19
|
+
|
|
20
|
+
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 known, undocumented quirk (confirmed in the Sui developer forum; the Sui team's response was "reach out to Phantom"). Earlier versions of `WalletStandardSigner` refused these accounts entirely. The recovery flow added here works because Phantom's `signPersonalMessage` does return Sui's canonical 97-byte `flag || sig || pk` signature blob, so the real public key can be extracted from the last 32 bytes of any signature the wallet produces. We do not trust `account.publicKey` at all on the async path.
|
|
21
|
+
|
|
22
|
+
### Unchanged
|
|
23
|
+
|
|
24
|
+
No behavior changes for compliant wallets (Slush, Suiet, keypair-backed). `fromAccount` is still synchronous; `fromAccountAsync` is purely additive. Other error classes, public types, and the rest of the SDK surface are byte-identical to 0.1.2.
|
|
25
|
+
|
|
5
26
|
## [0.1.2] - 2026-05-21
|
|
6
27
|
|
|
7
28
|
Additive UI-translation helper plus three bug fixes in the reader's error mapping. Pre-1.0 patch-bump per the project's pragmatic versioning policy; semver-strict consumers can treat as a minor (one new export, one new optional field, one corrected throw class).
|
|
@@ -75,5 +96,7 @@ See `README.md` for the full list. Headlines:
|
|
|
75
96
|
- 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.
|
|
76
97
|
- 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.
|
|
77
98
|
|
|
99
|
+
[0.1.3]: https://github.com/arcadiasystems/morse-dcms/releases/tag/v0.1.3
|
|
100
|
+
[0.1.2]: https://github.com/arcadiasystems/morse-dcms/releases/tag/v0.1.2
|
|
78
101
|
[0.1.1]: https://github.com/arcadiasystems/morse-dcms/releases/tag/v0.1.1
|
|
79
102
|
[0.1.0]: https://github.com/arcadiasystems/morse-dcms/releases/tag/v0.1.0
|
package/README.md
CHANGED
|
@@ -231,7 +231,8 @@ The full public surface, grouped by concern. Every export carries a JSDoc on its
|
|
|
231
231
|
| Export | Purpose |
|
|
232
232
|
| --- | --- |
|
|
233
233
|
| `KeypairAdapter` | Server / CLI `WalletAdapter` wrapping a raw `Ed25519Keypair`. |
|
|
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. |
|
|
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
236
|
| `DefaultWalrusWriteAdapter.fromConfig(config, signer)` | Walrus uploads (blob + quilt). Implements `WalrusFlowCapable` (the 2-popup optimization). |
|
|
236
237
|
| `DefaultWalrusReadAdapter.fromConfig(config)` | Walrus reads (`readBlob`, `readBlobByObjectId`, `readQuiltPatch`, `readBlobRef`). |
|
|
237
238
|
| `HttpPublisherWriteAdapter.fromConfig({ publisherUrl, ownerAddress })` | Walrus uploads via a publisher HTTP service (operator pays storage; 1 popup for upload + addEntry). |
|
|
@@ -314,8 +315,33 @@ Always construct readers and seal adapters via `fromMorseConfig` (e.g. `RpcPubli
|
|
|
314
315
|
| Passkey | Supported (decoder) | - | Accepts raw 33-byte key and `0x06 \|\| 33 raw`. WebAuthn signing inside the wallet; `Signer` surface unchanged. |
|
|
315
316
|
| ZkLogin | Decoder ships, E2E unverified | - | Variable-length `[1 iss-len][iss][32 addressSeed]` identifier (auto-detects modern vs legacy address derivation). Walrus and Seal `SessionKey` flows have not been smoke-tested with zkLogin signatures; fall back to a keypair account if you see errors. |
|
|
316
317
|
| MultiSig | Refused | - | Variable-length aggregation of multiple keys; signing semantics differ from `Signer` and have not been wired up. Implement a custom `Signer` subclass if you need it. |
|
|
318
|
+
| Phantom (Sui) | Supported via `fromAccountAsync` | 2026-05-21 | Phantom returns a 59-byte non-canonical blob in `account.publicKey`. `fromAccount` rejects it; `fromAccountAsync` recovers the real Ed25519 key from a probe signature. See subsection below. |
|
|
317
319
|
|
|
318
|
-
Refused schemes throw `ConfigurationError` at construction time.
|
|
320
|
+
Refused schemes throw `UnsupportedWalletSchemeError` (a `ConfigurationError` subclass) at construction time. The error carries the raw `publicKeyBytes`, the reported `address`, and an optional `walletName`, so consumer dapps can render a wallet-specific CTA without parsing message strings.
|
|
321
|
+
|
|
322
|
+
### Wallets with non-canonical `publicKey` (Phantom)
|
|
323
|
+
|
|
324
|
+
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
|
+
For Phantom-class wallets, use `WalletStandardSigner.fromAccountAsync` instead of `fromAccount`:
|
|
327
|
+
|
|
328
|
+
```ts
|
|
329
|
+
import { WalletStandardSigner, UnsupportedWalletSchemeError } from "@arcadiasystems/morse-sdk";
|
|
330
|
+
|
|
331
|
+
try {
|
|
332
|
+
const signer = await WalletStandardSigner.fromAccountAsync(account, callbacks);
|
|
333
|
+
// ...
|
|
334
|
+
} catch (err) {
|
|
335
|
+
if (err instanceof UnsupportedWalletSchemeError) {
|
|
336
|
+
// Render: "Your wallet uses an unsupported scheme. Try Slush or Suiet."
|
|
337
|
+
// err.publicKeyBytes, err.address, err.walletName available.
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
```
|
|
341
|
+
|
|
342
|
+
`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
|
+
|
|
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.
|
|
319
345
|
|
|
320
346
|
## Error taxonomy
|
|
321
347
|
|
|
@@ -330,6 +356,7 @@ All errors extend `MorseError`. Narrow by class:
|
|
|
330
356
|
| `SealError` | `code` (`no-access` / `decrypt-failed` / `session-expired` / `rate-limited`) | Seal authorization or decryption failed. |
|
|
331
357
|
| `TransportError` | `operation?` (e.g. `sui.getObject`, `walrus.publisher.uploadBlob`, `seal.decrypt`) | RPC, network, or response-parsing failure. |
|
|
332
358
|
| `ConfigurationError` | - | SDK config gap (e.g. unsupported network). |
|
|
359
|
+
| `UnsupportedWalletSchemeError` | `code` (`non-canonical-pubkey` / `malformed-zklogin` / `recovery-sig-length` / `recovery-non-ed25519` / `recovery-address-mismatch`), `publicKeyBytes`, `address`, optional `walletName` | `WalletStandardSigner.fromAccount` rejected the account's `publicKey` shape, or the async recovery flow could not extract a key that derives to `account.address`. |
|
|
333
360
|
| `UncertifiedBlobError` | `blobObjectId`, `blobId` | `addEntryFromBytes` upload succeeded but the combined certify+add_entry tx failed; the blob is uploaded but uncertified. |
|
|
334
361
|
|
|
335
362
|
```ts
|
package/dist/errors.d.ts
CHANGED
|
@@ -51,6 +51,37 @@ export declare class TransportError extends MorseError {
|
|
|
51
51
|
/** SDK configuration gap (e.g. asking for a network with no canonical deployment). */
|
|
52
52
|
export declare class ConfigurationError extends MorseError {
|
|
53
53
|
}
|
|
54
|
+
/**
|
|
55
|
+
* Discriminator for `UnsupportedWalletSchemeError`. `non-canonical-pubkey`
|
|
56
|
+
* means `account.publicKey` did not decode at construction time; the rest
|
|
57
|
+
* mean the async recovery flow failed for a specific reason. Consumers
|
|
58
|
+
* branch on `code` rather than message strings, and `fromAccountAsync`
|
|
59
|
+
* only attempts recovery when `code === "non-canonical-pubkey"`.
|
|
60
|
+
*/
|
|
61
|
+
export type UnsupportedWalletSchemeCode = "non-canonical-pubkey" | "malformed-zklogin" | "recovery-sig-length" | "recovery-non-ed25519" | "recovery-address-mismatch";
|
|
62
|
+
/**
|
|
63
|
+
* Raised by `WalletStandardSigner.fromAccount` and `fromAccountAsync` when
|
|
64
|
+
* the account's public key cannot be resolved to a verified Ed25519/Secp/
|
|
65
|
+
* Passkey/ZkLogin key matching `account.address`. Narrow on `code` to
|
|
66
|
+
* distinguish the failure mode; carries the raw bytes and reported address
|
|
67
|
+
* for support telemetry and CTA copy. Phantom's Sui adapter is the known
|
|
68
|
+
* source: it returns a 59-byte opaque blob in `account.publicKey`, which
|
|
69
|
+
* surfaces as `code: "non-canonical-pubkey"`.
|
|
70
|
+
*/
|
|
71
|
+
export declare class UnsupportedWalletSchemeError extends ConfigurationError {
|
|
72
|
+
readonly code: UnsupportedWalletSchemeCode;
|
|
73
|
+
readonly publicKeyBytes: Readonly<Uint8Array>;
|
|
74
|
+
readonly address: string;
|
|
75
|
+
readonly walletName?: string;
|
|
76
|
+
constructor(message: string, fields: {
|
|
77
|
+
code: UnsupportedWalletSchemeCode;
|
|
78
|
+
publicKeyBytes: Uint8Array;
|
|
79
|
+
address: string;
|
|
80
|
+
walletName?: string;
|
|
81
|
+
}, options?: {
|
|
82
|
+
cause?: unknown;
|
|
83
|
+
});
|
|
84
|
+
}
|
|
54
85
|
/**
|
|
55
86
|
* Thrown by `addEntryFromBytes` / `addEncryptedEntryFromBytes` when the
|
|
56
87
|
* register-and-upload step succeeded (the user already paid for storage and
|
package/dist/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,uDAAuD;AACvD,8BAAsB,UAAW,SAAQ,KAAK;gBACjC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;CAI1D;AAID,yEAAyE;AACzE,qBAAa,eAAgB,SAAQ,UAAU;IAC9C,6DAA6D;IAC7D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;gBAEX,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;CAIzE;AAID,MAAM,MAAM,gBAAgB,GACzB,aAAa,GACb,YAAY,GACZ,OAAO,GACP,UAAU,GACV,eAAe,GACf,WAAW,GACX,UAAU,GACV,MAAM,CAAC;AAEV,mCAAmC;AACnC,qBAAa,aAAc,SAAQ,UAAU;IAC5C,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,CAAC;IACpC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;gBAG3B,QAAQ,EAAE,gBAAgB,EAC1B,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;CAM9B;AAID,oFAAoF;AACpF,qBAAa,iBAAkB,SAAQ,UAAU;CAAG;AAIpD;;;;;;;;;;;;;GAaG;AACH,qBAAa,cAAe,SAAQ,UAAU;IAC7C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;gBAG3B,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE;CAOlD;AAID,sFAAsF;AACtF,qBAAa,kBAAmB,SAAQ,UAAU;CAAG;
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|
package/dist/errors.js
CHANGED
|
@@ -61,6 +61,30 @@ export class TransportError extends MorseError {
|
|
|
61
61
|
/** SDK configuration gap (e.g. asking for a network with no canonical deployment). */
|
|
62
62
|
export class ConfigurationError extends MorseError {
|
|
63
63
|
}
|
|
64
|
+
/**
|
|
65
|
+
* Raised by `WalletStandardSigner.fromAccount` and `fromAccountAsync` when
|
|
66
|
+
* the account's public key cannot be resolved to a verified Ed25519/Secp/
|
|
67
|
+
* Passkey/ZkLogin key matching `account.address`. Narrow on `code` to
|
|
68
|
+
* distinguish the failure mode; carries the raw bytes and reported address
|
|
69
|
+
* for support telemetry and CTA copy. Phantom's Sui adapter is the known
|
|
70
|
+
* source: it returns a 59-byte opaque blob in `account.publicKey`, which
|
|
71
|
+
* surfaces as `code: "non-canonical-pubkey"`.
|
|
72
|
+
*/
|
|
73
|
+
export class UnsupportedWalletSchemeError extends ConfigurationError {
|
|
74
|
+
code;
|
|
75
|
+
publicKeyBytes;
|
|
76
|
+
address;
|
|
77
|
+
walletName;
|
|
78
|
+
constructor(message, fields, options) {
|
|
79
|
+
super(message, options);
|
|
80
|
+
this.code = fields.code;
|
|
81
|
+
this.publicKeyBytes = fields.publicKeyBytes;
|
|
82
|
+
this.address = fields.address;
|
|
83
|
+
if (fields.walletName !== undefined) {
|
|
84
|
+
this.walletName = fields.walletName;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
64
88
|
// Uncertified blob
|
|
65
89
|
/**
|
|
66
90
|
* Thrown by `addEntryFromBytes` / `addEncryptedEntryFromBytes` when the
|
package/dist/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO;AAEP,uDAAuD;AACvD,MAAM,OAAgB,UAAW,SAAQ,KAAK;IAC7C,YAAY,OAAe,EAAE,OAA6B;QACzD,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;IAC7B,CAAC;CACD;AAED,aAAa;AAEb,yEAAyE;AACzE,MAAM,OAAO,eAAgB,SAAQ,UAAU;IAC9C,6DAA6D;IACpD,KAAK,CAAS;IAEvB,YAAY,OAAe,EAAE,KAAa,EAAE,OAA6B;QACxE,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACpB,CAAC;CACD;AAcD,mCAAmC;AACnC,MAAM,OAAO,aAAc,SAAQ,UAAU;IACnC,QAAQ,CAAmB;IAC3B,UAAU,CAAS;IAE5B,YACC,QAA0B,EAC1B,UAAkB,EAClB,OAA6B;QAE7B,KAAK,CAAC,GAAG,QAAQ,eAAe,UAAU,EAAE,EAAE,OAAO,CAAC,CAAC;QACvD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC9B,CAAC;CACD;AAED,eAAe;AAEf,oFAAoF;AACpF,MAAM,OAAO,iBAAkB,SAAQ,UAAU;CAAG;AAEpD,YAAY;AAEZ;;;;;;;;;;;;;GAaG;AACH,MAAM,OAAO,cAAe,SAAQ,UAAU;IACpC,SAAS,CAAU;IAE5B,YACC,OAAe,EACf,OAAiD;QAEjD,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxB,IAAI,OAAO,EAAE,SAAS,KAAK,SAAS,EAAE,CAAC;YACtC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACpC,CAAC;IACF,CAAC;CACD;AAED,gBAAgB;AAEhB,sFAAsF;AACtF,MAAM,OAAO,kBAAmB,SAAQ,UAAU;CAAG;
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ export { accessPolicyFromU8, accessPolicyToU8, storageModeFromU8, storageModeToU
|
|
|
6
6
|
export { TESTED_SUBSTRATE } from "./compatibility.js";
|
|
7
7
|
export { DEFAULT_RPC_URLS, type MorseConfigOptions, type MorsePackageConfig, morseConfig, Network, type NetworkConfig, type WalrusEndpoints, } from "./config.js";
|
|
8
8
|
export { type FormattedError, formatUserMessage, } from "./errors.format.js";
|
|
9
|
-
export { ABORT_CODES, type AbortEntry, type AbortModule, ConfigurationError, ContractAbortError, MorseError, NotFoundError, type NotFoundResource, SealError, type SealErrorCode, TransportError, UNKNOWN_ABORT_NAME, UnauthorizedError, UncertifiedBlobError, ValidationError, } from "./errors.js";
|
|
9
|
+
export { ABORT_CODES, type AbortEntry, type AbortModule, ConfigurationError, ContractAbortError, MorseError, NotFoundError, type NotFoundResource, SealError, type SealErrorCode, TransportError, UNKNOWN_ABORT_NAME, UnauthorizedError, UncertifiedBlobError, type UnsupportedWalletSchemeCode, UnsupportedWalletSchemeError, ValidationError, } from "./errors.js";
|
|
10
10
|
export { type AddEncryptedEntryArgs, type AddEncryptedEntryFromBytesArgs, type AddEntryArgs, type AddEntryFromBytesArgs, type AddEntryFromBytesResult, type AddEntryResult, type AppendDraftRevisionArgs, type AppendEncryptedDraftRevisionArgs, addEncryptedEntry, addEncryptedEntryFromBytes, addEntry, addEntryFromBytes, appendDraftRevision, appendEncryptedDraftRevision, type CreateCollectionArgs, type CreateCollectionResult, type CreatePublicationArgs, type CreatePublicationResult, createCollection, createPublication, type DeleteCollectionArgs, type DeleteCollectionResult, type DeleteEntryArgs, type DeleteEntryResult, type DeletePublicationArgs, type DeletePublicationResult, type DestroyPublisherCapArgs, type DestroyPublisherCapResult, deleteCollection, deleteEntry, deletePublication, destroyPublisherCap, type IssuePublisherCapArgs, type IssuePublisherCapResult, issuePublisherCap, type ProgressCallback, type ProgressEvent, type PublicationConfig, type PublishDirectArgs, type PublishFromDraftArgs, publishDirect, publishFromDraft, type RevisionAppendResult, type RevokePublisherCapArgs, type RevokePublisherCapResult, revokePublisherCap, type TransferOwnershipArgs, type TransferOwnershipResult, type TransferPublisherCapArgs, type TransferPublisherCapResult, transferOwnership, transferPublisherCap, } from "./ops/index.js";
|
|
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";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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,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
|
@@ -5,7 +5,7 @@ export { accessPolicyFromU8, accessPolicyToU8, storageModeFromU8, storageModeToU
|
|
|
5
5
|
export { TESTED_SUBSTRATE } from "./compatibility.js";
|
|
6
6
|
export { DEFAULT_RPC_URLS, morseConfig, Network, } from "./config.js";
|
|
7
7
|
export { formatUserMessage, } from "./errors.format.js";
|
|
8
|
-
export { ABORT_CODES, ConfigurationError, ContractAbortError, MorseError, NotFoundError, SealError, TransportError, UNKNOWN_ABORT_NAME, UnauthorizedError, UncertifiedBlobError, ValidationError, } from "./errors.js";
|
|
8
|
+
export { ABORT_CODES, ConfigurationError, ContractAbortError, MorseError, NotFoundError, SealError, TransportError, UNKNOWN_ABORT_NAME, UnauthorizedError, UncertifiedBlobError, UnsupportedWalletSchemeError, ValidationError, } from "./errors.js";
|
|
9
9
|
export { addEncryptedEntry, addEncryptedEntryFromBytes, addEntry, addEntryFromBytes, appendDraftRevision, appendEncryptedDraftRevision, createCollection, createPublication, deleteCollection, deleteEntry, deletePublication, destroyPublisherCap, issuePublisherCap, publishDirect, publishFromDraft, revokePublisherCap, transferOwnership, transferPublisherCap, } from "./ops/index.js";
|
|
10
10
|
export { RpcPublicationReader, } from "./read/index.js";
|
|
11
11
|
export { buildPublisherSealId, DefaultSealAdapter, decodePublisherSealId, } from "./seal/index.js";
|
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,
|
|
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"}
|
|
@@ -90,10 +90,28 @@ export declare class WalletStandardSigner extends Signer {
|
|
|
90
90
|
* Walrus signature errors on zkLogin accounts, fall back to a
|
|
91
91
|
* keypair account.
|
|
92
92
|
*
|
|
93
|
-
* @throws {
|
|
94
|
-
* candidate scheme produces an address matching `account.address`.
|
|
93
|
+
* @throws {UnsupportedWalletSchemeError} If the account uses multisig, or
|
|
94
|
+
* if no candidate scheme produces an address matching `account.address`.
|
|
95
|
+
* The error carries the raw `publicKeyBytes` and `address` so consumers
|
|
96
|
+
* can either fall back to `fromAccountAsync` (which recovers the real
|
|
97
|
+
* pubkey from a probe signature) or render a wallet-specific CTA.
|
|
95
98
|
*/
|
|
96
99
|
static fromAccount(account: WalletStandardAccount, callbacks: WalletStandardSignerCallbacks): WalletStandardSigner;
|
|
100
|
+
/**
|
|
101
|
+
* Async variant of `fromAccount`. On `code === "non-canonical-pubkey"`,
|
|
102
|
+
* recovers the real Ed25519 key from a probe `signPersonalMessage` and
|
|
103
|
+
* verifies it derives to `account.address`. One extra wallet popup for
|
|
104
|
+
* Phantom-class wallets; compliant wallets pay no extra cost.
|
|
105
|
+
*
|
|
106
|
+
* Recovery handles Ed25519 only; other schemes throw
|
|
107
|
+
* `UnsupportedWalletSchemeError` with `code: "recovery-non-ed25519"`.
|
|
108
|
+
*
|
|
109
|
+
* @throws {UnsupportedWalletSchemeError} On recovery failure (sig
|
|
110
|
+
* length, non-Ed25519 flag, address mismatch). Other failure modes
|
|
111
|
+
* from `fromAccount` (zkLogin shape mismatch, etc.) propagate
|
|
112
|
+
* verbatim without firing the probe.
|
|
113
|
+
*/
|
|
114
|
+
static fromAccountAsync(account: WalletStandardAccount, callbacks: WalletStandardSignerCallbacks): Promise<WalletStandardSigner>;
|
|
97
115
|
getKeyScheme(): SignatureScheme;
|
|
98
116
|
getPublicKey(): PublicKey;
|
|
99
117
|
sign(_bytes: Uint8Array): Promise<Uint8Array<ArrayBuffer>>;
|
|
@@ -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
|
|
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"}
|
|
@@ -24,7 +24,7 @@ import { Secp256k1PublicKey } from "@mysten/sui/keypairs/secp256k1";
|
|
|
24
24
|
import { Secp256r1PublicKey } from "@mysten/sui/keypairs/secp256r1";
|
|
25
25
|
import { normalizeSuiAddress } from "@mysten/sui/utils";
|
|
26
26
|
import { ZkLoginPublicIdentifier } from "@mysten/sui/zklogin";
|
|
27
|
-
import { ConfigurationError } from "../errors.js";
|
|
27
|
+
import { ConfigurationError, UnsupportedWalletSchemeError } from "../errors.js";
|
|
28
28
|
/**
|
|
29
29
|
* `Signer` backed by wallet-standard callbacks. Supplies methods Walrus and
|
|
30
30
|
* Seal call; throws on raw-byte signing, which wallets do not expose.
|
|
@@ -64,8 +64,11 @@ export class WalletStandardSigner extends Signer {
|
|
|
64
64
|
* Walrus signature errors on zkLogin accounts, fall back to a
|
|
65
65
|
* keypair account.
|
|
66
66
|
*
|
|
67
|
-
* @throws {
|
|
68
|
-
* candidate scheme produces an address matching `account.address`.
|
|
67
|
+
* @throws {UnsupportedWalletSchemeError} If the account uses multisig, or
|
|
68
|
+
* if no candidate scheme produces an address matching `account.address`.
|
|
69
|
+
* The error carries the raw `publicKeyBytes` and `address` so consumers
|
|
70
|
+
* can either fall back to `fromAccountAsync` (which recovers the real
|
|
71
|
+
* pubkey from a probe signature) or render a wallet-specific CTA.
|
|
69
72
|
*/
|
|
70
73
|
static fromAccount(account, callbacks) {
|
|
71
74
|
const { publicKey, keyScheme } = decodeAccountPublicKey(account);
|
|
@@ -76,6 +79,38 @@ export class WalletStandardSigner extends Signer {
|
|
|
76
79
|
signPersonalMessage: callbacks.signPersonalMessage,
|
|
77
80
|
});
|
|
78
81
|
}
|
|
82
|
+
/**
|
|
83
|
+
* Async variant of `fromAccount`. On `code === "non-canonical-pubkey"`,
|
|
84
|
+
* recovers the real Ed25519 key from a probe `signPersonalMessage` and
|
|
85
|
+
* verifies it derives to `account.address`. One extra wallet popup for
|
|
86
|
+
* Phantom-class wallets; compliant wallets pay no extra cost.
|
|
87
|
+
*
|
|
88
|
+
* Recovery handles Ed25519 only; other schemes throw
|
|
89
|
+
* `UnsupportedWalletSchemeError` with `code: "recovery-non-ed25519"`.
|
|
90
|
+
*
|
|
91
|
+
* @throws {UnsupportedWalletSchemeError} On recovery failure (sig
|
|
92
|
+
* length, non-Ed25519 flag, address mismatch). Other failure modes
|
|
93
|
+
* from `fromAccount` (zkLogin shape mismatch, etc.) propagate
|
|
94
|
+
* verbatim without firing the probe.
|
|
95
|
+
*/
|
|
96
|
+
static async fromAccountAsync(account, callbacks) {
|
|
97
|
+
try {
|
|
98
|
+
return WalletStandardSigner.fromAccount(account, callbacks);
|
|
99
|
+
}
|
|
100
|
+
catch (error) {
|
|
101
|
+
if (!(error instanceof UnsupportedWalletSchemeError) ||
|
|
102
|
+
error.code !== "non-canonical-pubkey") {
|
|
103
|
+
throw error;
|
|
104
|
+
}
|
|
105
|
+
const recovered = await recoverEd25519PublicKeyFromSignature(account, callbacks.signPersonalMessage);
|
|
106
|
+
return new WalletStandardSigner({
|
|
107
|
+
publicKey: recovered,
|
|
108
|
+
keyScheme: "ED25519",
|
|
109
|
+
signTransaction: callbacks.signTransaction,
|
|
110
|
+
signPersonalMessage: callbacks.signPersonalMessage,
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
}
|
|
79
114
|
getKeyScheme() {
|
|
80
115
|
return this.#keyScheme;
|
|
81
116
|
}
|
|
@@ -153,7 +188,64 @@ function decodeAccountPublicKey(account) {
|
|
|
153
188
|
// Fall through.
|
|
154
189
|
}
|
|
155
190
|
}
|
|
156
|
-
|
|
191
|
+
// A 0x05-prefixed buffer longer than 33 bytes is shape-consistent with a
|
|
192
|
+
// zkLogin identifier; we already attempted decode above and it failed.
|
|
193
|
+
// Tag it distinctly so the async recovery flow does not fire a probe
|
|
194
|
+
// (zkLogin signs via ZK proof, not Ed25519 — the probe cannot succeed).
|
|
195
|
+
const looksLikeMalformedZkLogin = bytes.length > 33 && bytes[0] === 0x05;
|
|
196
|
+
throw new UnsupportedWalletSchemeError(looksLikeMalformedZkLogin
|
|
197
|
+
? `WalletStandardSigner: account.publicKey is ${bytes.length} bytes with a zkLogin-shaped prefix but does not decode to a valid zkLogin identifier for address ${account.address}. The wallet may be misreporting its zkLogin identifier; signature-based recovery is not applicable (zkLogin signs via ZK proof, not Ed25519). Implement a custom Signer.`
|
|
198
|
+
: `WalletStandardSigner: account.publicKey is ${bytes.length} bytes and matches neither a raw nor a flag-prefixed (Sui canonical) form of Ed25519, Secp256k1, Secp256r1, or Passkey, nor a zkLogin identifier, for address ${account.address}. The wallet may be using a non-canonical publicKey encoding (e.g. Phantom's Sui adapter); retry with WalletStandardSigner.fromAccountAsync to recover the real key from a probe signature, or implement a custom Signer.`, {
|
|
199
|
+
code: looksLikeMalformedZkLogin
|
|
200
|
+
? "malformed-zklogin"
|
|
201
|
+
: "non-canonical-pubkey",
|
|
202
|
+
publicKeyBytes: bytes,
|
|
203
|
+
address: account.address,
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Length of a canonical Sui Ed25519 signature blob: 1-byte flag (0x00) +
|
|
208
|
+
* 64-byte signature + 32-byte raw pubkey.
|
|
209
|
+
*/
|
|
210
|
+
const ED25519_SIGNATURE_BLOB_LENGTH = 97;
|
|
211
|
+
const ED25519_FLAG = 0x00;
|
|
212
|
+
const PROBE_MESSAGE_PREFIX = "morse-sdk:wallet-pubkey-recovery:";
|
|
213
|
+
/**
|
|
214
|
+
* Recover the Ed25519 public key by extracting it from a probe signature.
|
|
215
|
+
* Sui's signature blob is `flag || sig || pk` (97 bytes for Ed25519); the
|
|
216
|
+
* last 32 bytes are the raw key. The recovered key is verified to derive
|
|
217
|
+
* to `account.address` before being trusted.
|
|
218
|
+
*/
|
|
219
|
+
async function recoverEd25519PublicKeyFromSignature(account, signPersonalMessage) {
|
|
220
|
+
const probe = new TextEncoder().encode(PROBE_MESSAGE_PREFIX + account.address);
|
|
221
|
+
const { signature } = await signPersonalMessage({ message: probe });
|
|
222
|
+
const sigBytes = fromBase64(signature);
|
|
223
|
+
if (sigBytes.length !== ED25519_SIGNATURE_BLOB_LENGTH) {
|
|
224
|
+
throw new UnsupportedWalletSchemeError(`Wallet returned a ${sigBytes.length}-byte signature; expected ${ED25519_SIGNATURE_BLOB_LENGTH} bytes (Ed25519 canonical: flag || sig || pk). Recovery from this signature shape is not supported.`, {
|
|
225
|
+
code: "recovery-sig-length",
|
|
226
|
+
publicKeyBytes: new Uint8Array(Array.from(account.publicKey)),
|
|
227
|
+
address: account.address,
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
if (sigBytes[0] !== ED25519_FLAG) {
|
|
231
|
+
throw new UnsupportedWalletSchemeError(`Wallet signed with non-Ed25519 scheme (signature flag 0x${sigBytes[0]?.toString(16).padStart(2, "0")}); recovery is only implemented for Ed25519.`, {
|
|
232
|
+
code: "recovery-non-ed25519",
|
|
233
|
+
publicKeyBytes: new Uint8Array(Array.from(account.publicKey)),
|
|
234
|
+
address: account.address,
|
|
235
|
+
});
|
|
236
|
+
}
|
|
237
|
+
const recoveredRaw = sigBytes.slice(65, 97);
|
|
238
|
+
const publicKey = new Ed25519PublicKey(recoveredRaw);
|
|
239
|
+
const derived = normalizeSuiAddress(publicKey.toSuiAddress());
|
|
240
|
+
const expected = normalizeSuiAddress(account.address);
|
|
241
|
+
if (derived !== expected) {
|
|
242
|
+
throw new UnsupportedWalletSchemeError(`Pubkey recovered from probe signature derives to ${derived}, which does not match account.address ${expected}. The wallet may have signed with a different key than it advertises.`, {
|
|
243
|
+
code: "recovery-address-mismatch",
|
|
244
|
+
publicKeyBytes: new Uint8Array(Array.from(account.publicKey)),
|
|
245
|
+
address: account.address,
|
|
246
|
+
});
|
|
247
|
+
}
|
|
248
|
+
return publicKey;
|
|
157
249
|
}
|
|
158
250
|
/**
|
|
159
251
|
* Build the list of (scheme, public-key-constructor) pairs to try against
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallet-standard-signer.js","sourceRoot":"","sources":["../../src/wallets/wallet-standard-signer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,EAIN,MAAM,GACN,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAE9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"wallet-standard-signer.js","sourceRoot":"","sources":["../../src/wallets/wallet-standard-signer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,EAIN,MAAM,GACN,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAE9D,OAAO,EAAE,kBAAkB,EAAE,4BAA4B,EAAE,MAAM,cAAc,CAAC;AA4ChF;;;GAGG;AACH,MAAM,OAAO,oBAAqB,SAAQ,MAAM;IACtC,UAAU,CAAY;IACtB,UAAU,CAAkB;IAC5B,gBAAgB,CAAwB;IACxC,oBAAoB,CAA4B;IAEzD,YAAY,OAAoC;QAC/C,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC;QACpC,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC;QACpC,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC;QAChD,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IACzD,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACH,MAAM,CAAC,WAAW,CACjB,OAA8B,EAC9B,SAAwC;QAExC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;QACjE,OAAO,IAAI,oBAAoB,CAAC;YAC/B,SAAS;YACT,SAAS;YACT,eAAe,EAAE,SAAS,CAAC,eAAe;YAC1C,mBAAmB,EAAE,SAAS,CAAC,mBAAmB;SAClD,CAAC,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAC5B,OAA8B,EAC9B,SAAwC;QAExC,IAAI,CAAC;YACJ,OAAO,oBAAoB,CAAC,WAAW,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAC7D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IACC,CAAC,CAAC,KAAK,YAAY,4BAA4B,CAAC;gBAChD,KAAK,CAAC,IAAI,KAAK,sBAAsB,EACpC,CAAC;gBACF,MAAM,KAAK,CAAC;YACb,CAAC;YACD,MAAM,SAAS,GAAG,MAAM,oCAAoC,CAC3D,OAAO,EACP,SAAS,CAAC,mBAAmB,CAC7B,CAAC;YACF,OAAO,IAAI,oBAAoB,CAAC;gBAC/B,SAAS,EAAE,SAAS;gBACpB,SAAS,EAAE,SAAS;gBACpB,eAAe,EAAE,SAAS,CAAC,eAAe;gBAC1C,mBAAmB,EAAE,SAAS,CAAC,mBAAmB;aAClD,CAAC,CAAC;QACJ,CAAC;IACF,CAAC;IAEQ,YAAY;QACpB,OAAO,IAAI,CAAC,UAAU,CAAC;IACxB,CAAC;IAEQ,YAAY;QACpB,OAAO,IAAI,CAAC,UAAU,CAAC;IACxB,CAAC;IAEQ,IAAI,CAAC,MAAkB;QAC/B,MAAM,IAAI,kBAAkB,CAC3B,+HAA+H,CAC/H,CAAC;IACH,CAAC;IAEQ,KAAK,CAAC,mBAAmB,CACjC,OAAmB;QAEnB,OAAO,IAAI,CAAC,oBAAoB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED;;;;;OAKG;IACM,KAAK,CAAC,yBAAyB,CAAC,EACxC,WAAW,EACX,MAAM,GAIN;QAMA,WAAW,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;QACnD,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;QAC1E,OAAO,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC;YACrC,WAAW,EAAE,UAAU,CAAC,KAAK,CAAC;YAC9B,UAAU,EAAE,CAAC,SAAS,CAAC;YACvB,OAAO,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE;SAC7C,CAAC,CAAC;IACJ,CAAC;CACD;AAED,SAAS,UAAU,CAAC,KAAa;IAChC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3B,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3C,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,GAAG,CAAC;AACZ,CAAC;AAOD;;;;;;;;GAQG;AACH,SAAS,sBAAsB,CAC9B,OAA8B;IAE9B,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;IAC5D,MAAM,QAAQ,GAAG,mBAAmB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAEtD,MAAM,UAAU,GAAG,wBAAwB,CAAC,KAAK,CAAC,CAAC;IACnD,KAAK,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,UAAU,EAAE,CAAC;QAC5C,IAAI,SAAoB,CAAC;QACzB,IAAI,CAAC;YACJ,SAAS,GAAG,KAAK,EAAE,CAAC;QACrB,CAAC;QAAC,MAAM,CAAC;YACR,SAAS;QACV,CAAC;QACD,IAAI,mBAAmB,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,KAAK,QAAQ,EAAE,CAAC;YAChE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;QACzC,CAAC;IACF,CAAC;IAED,gFAAgF;IAChF,yEAAyE;IACzE,mEAAmE;IACnE,oEAAoE;IACpE,+CAA+C;IAC/C,IAAI,KAAK,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;QACvB,IAAI,CAAC;YACJ,MAAM,SAAS,GAAG,uBAAuB,CAAC,SAAS,CAAC,KAAK,EAAE;gBAC1D,OAAO,EAAE,OAAO,CAAC,OAAO;aACxB,CAAC,CAAC;YACH,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;QAC5C,CAAC;QAAC,MAAM,CAAC;YACR,gBAAgB;QACjB,CAAC;IACF,CAAC;IAED,yEAAyE;IACzE,uEAAuE;IACvE,qEAAqE;IACrE,wEAAwE;IACxE,MAAM,yBAAyB,GAAG,KAAK,CAAC,MAAM,GAAG,EAAE,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IACzE,MAAM,IAAI,4BAA4B,CACrC,yBAAyB;QACxB,CAAC,CAAC,8CAA8C,KAAK,CAAC,MAAM,qGAAqG,OAAO,CAAC,OAAO,2KAA2K;QAC3V,CAAC,CAAC,8CAA8C,KAAK,CAAC,MAAM,iKAAiK,OAAO,CAAC,OAAO,2NAA2N,EACxc;QACC,IAAI,EAAE,yBAAyB;YAC9B,CAAC,CAAC,mBAAmB;YACrB,CAAC,CAAC,sBAAsB;QACzB,cAAc,EAAE,KAAK;QACrB,OAAO,EAAE,OAAO,CAAC,OAAO;KACxB,CACD,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,6BAA6B,GAAG,EAAE,CAAC;AACzC,MAAM,YAAY,GAAG,IAAI,CAAC;AAC1B,MAAM,oBAAoB,GAAG,mCAAmC,CAAC;AAEjE;;;;;GAKG;AACH,KAAK,UAAU,oCAAoC,CAClD,OAA8B,EAC9B,mBAA8C;IAE9C,MAAM,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CACrC,oBAAoB,GAAG,OAAO,CAAC,OAAO,CACtC,CAAC;IACF,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,mBAAmB,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;IACpE,MAAM,QAAQ,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IAEvC,IAAI,QAAQ,CAAC,MAAM,KAAK,6BAA6B,EAAE,CAAC;QACvD,MAAM,IAAI,4BAA4B,CACrC,qBAAqB,QAAQ,CAAC,MAAM,6BAA6B,6BAA6B,qGAAqG,EACnM;YACC,IAAI,EAAE,qBAAqB;YAC3B,cAAc,EAAE,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAC7D,OAAO,EAAE,OAAO,CAAC,OAAO;SACxB,CACD,CAAC;IACH,CAAC;IACD,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,YAAY,EAAE,CAAC;QAClC,MAAM,IAAI,4BAA4B,CACrC,2DAA2D,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,8CAA8C,EACnJ;YACC,IAAI,EAAE,sBAAsB;YAC5B,cAAc,EAAE,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAC7D,OAAO,EAAE,OAAO,CAAC,OAAO;SACxB,CACD,CAAC;IACH,CAAC;IAED,MAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAG,IAAI,gBAAgB,CAAC,YAAY,CAAC,CAAC;IACrD,MAAM,OAAO,GAAG,mBAAmB,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,CAAC;IAC9D,MAAM,QAAQ,GAAG,mBAAmB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACtD,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC1B,MAAM,IAAI,4BAA4B,CACrC,oDAAoD,OAAO,0CAA0C,QAAQ,uEAAuE,EACpL;YACC,IAAI,EAAE,2BAA2B;YACjC,cAAc,EAAE,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAC7D,OAAO,EAAE,OAAO,CAAC,OAAO;SACxB,CACD,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AAClB,CAAC;AAOD;;;;;GAKG;AACH,SAAS,wBAAwB,CAChC,KAAiB;IAEjB,MAAM,IAAI,GAAsB,EAAE,CAAC;IAEnC,IAAI,KAAK,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC;YACT,MAAM,EAAE,SAAS;YACjB,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,gBAAgB,CAAC,KAAK,CAAC;SACxC,CAAC,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;QACzB,IAAI,CAAC,IAAI,CACR,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,kBAAkB,CAAC,KAAK,CAAC,EAAE,EACnE,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,kBAAkB,CAAC,KAAK,CAAC,EAAE,EACnE,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAC/D,CAAC;QACF,4DAA4D;QAC5D,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACvB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,CAAC,IAAI,CAAC;gBACT,MAAM,EAAE,SAAS;gBACjB,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,gBAAgB,CAAC,KAAK,CAAC;aACxC,CAAC,CAAC;QACJ,CAAC;IACF,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,EAAE,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC7B,mEAAmE;QACnE,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC,IAAI,CAAC;gBACT,MAAM,EAAE,WAAW;gBACnB,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,kBAAkB,CAAC,KAAK,CAAC;aAC1C,CAAC,CAAC;QACJ,CAAC;QACD,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC,IAAI,CAAC;gBACT,MAAM,EAAE,WAAW;gBACnB,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,kBAAkB,CAAC,KAAK,CAAC;aAC1C,CAAC,CAAC;QACJ,CAAC;QACD,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC,IAAI,CAAC;gBACT,MAAM,EAAE,SAAS;gBACjB,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,gBAAgB,CAAC,KAAK,CAAC;aACxC,CAAC,CAAC;QACJ,CAAC;IACF,CAAC;IAED,OAAO,IAAI,CAAC;AACb,CAAC"}
|