@openzeppelin/miden-multisig-client 0.15.2 → 0.16.0
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/README.md +25 -1
- package/dist/account/builder.d.ts +2 -1
- package/dist/account/builder.d.ts.map +1 -1
- package/dist/account/builder.js +1 -0
- package/dist/account/builder.js.map +1 -1
- package/dist/account/builder.test.js +2 -2
- package/dist/account/builder.test.js.map +1 -1
- package/dist/client.d.ts +9 -5
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +5 -5
- package/dist/client.js.map +1 -1
- package/dist/client.test.js +46 -15
- package/dist/client.test.js.map +1 -1
- package/dist/connectivity.d.ts +38 -0
- package/dist/connectivity.d.ts.map +1 -0
- package/dist/connectivity.js +97 -0
- package/dist/connectivity.js.map +1 -0
- package/dist/connectivity.test.d.ts +2 -0
- package/dist/connectivity.test.d.ts.map +1 -0
- package/dist/connectivity.test.js +61 -0
- package/dist/connectivity.test.js.map +1 -0
- package/dist/index.d.ts +9 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -3
- package/dist/index.js.map +1 -1
- package/dist/multisig.d.ts +68 -7
- package/dist/multisig.d.ts.map +1 -1
- package/dist/multisig.js +90 -18
- package/dist/multisig.js.map +1 -1
- package/dist/multisig.test.js +214 -79
- package/dist/multisig.test.js.map +1 -1
- package/dist/proposal/metadata.d.ts.map +1 -1
- package/dist/proposal/metadata.js +12 -0
- package/dist/proposal/metadata.js.map +1 -1
- package/dist/proposal/metadata.test.js +49 -0
- package/dist/proposal/metadata.test.js.map +1 -1
- package/dist/raw-client.d.ts +2 -2
- package/dist/raw-client.d.ts.map +1 -1
- package/dist/raw-client.js +14 -4
- package/dist/raw-client.js.map +1 -1
- package/dist/raw-client.test.js +25 -3
- package/dist/raw-client.test.js.map +1 -1
- package/dist/transaction/consumeNotes.d.ts +6 -2
- package/dist/transaction/consumeNotes.d.ts.map +1 -1
- package/dist/transaction/consumeNotes.js +0 -4
- package/dist/transaction/consumeNotes.js.map +1 -1
- package/dist/transaction/options.d.ts +3 -0
- package/dist/transaction/options.d.ts.map +1 -1
- package/dist/transaction/p2id.d.ts +20 -2
- package/dist/transaction/p2id.d.ts.map +1 -1
- package/dist/transaction/p2id.js +46 -3
- package/dist/transaction/p2id.js.map +1 -1
- package/dist/transaction/p2id.test.js +66 -6
- package/dist/transaction/p2id.test.js.map +1 -1
- package/dist/transaction/summary.d.ts +2 -1
- package/dist/transaction/summary.d.ts.map +1 -1
- package/dist/transaction/summary.js.map +1 -1
- package/dist/transaction/updateGuardian.d.ts +6 -2
- package/dist/transaction/updateGuardian.d.ts.map +1 -1
- package/dist/transaction/updateGuardian.js.map +1 -1
- package/dist/transaction/updateProcedureThreshold.d.ts +7 -2
- package/dist/transaction/updateProcedureThreshold.d.ts.map +1 -1
- package/dist/transaction/updateProcedureThreshold.js.map +1 -1
- package/dist/transaction/updateSigners.d.ts +7 -2
- package/dist/transaction/updateSigners.d.ts.map +1 -1
- package/dist/transaction/updateSigners.js.map +1 -1
- package/dist/transaction.d.ts +1 -1
- package/dist/transaction.d.ts.map +1 -1
- package/dist/transaction.js +1 -1
- package/dist/transaction.js.map +1 -1
- package/dist/types/proposal.d.ts +5 -0
- package/dist/types/proposal.d.ts.map +1 -1
- package/dist/types/proposal.js +3 -0
- package/dist/types/proposal.js.map +1 -1
- package/package.json +3 -3
- package/src/account/builder.test.ts +19 -11
- package/src/account/builder.ts +2 -1
- package/src/client.test.ts +67 -15
- package/src/client.ts +18 -10
- package/src/connectivity.test.ts +67 -0
- package/src/connectivity.ts +111 -0
- package/src/index.ts +20 -1
- package/src/multisig.test.ts +267 -80
- package/src/multisig.ts +109 -20
- package/src/proposal/metadata.test.ts +60 -0
- package/src/proposal/metadata.ts +14 -0
- package/src/raw-client.test.ts +41 -3
- package/src/raw-client.ts +15 -5
- package/src/transaction/consumeNotes.ts +11 -1
- package/src/transaction/options.ts +4 -0
- package/src/transaction/p2id.test.ts +98 -8
- package/src/transaction/p2id.ts +64 -4
- package/src/transaction/summary.ts +12 -0
- package/src/transaction/updateGuardian.ts +11 -1
- package/src/transaction/updateProcedureThreshold.ts +13 -1
- package/src/transaction/updateSigners.ts +13 -1
- package/src/transaction.ts +3 -0
- package/src/types/proposal.ts +9 -0
package/README.md
CHANGED
|
@@ -32,7 +32,9 @@ const midenClient = await MidenClient.createDevnet();
|
|
|
32
32
|
const secretKey = AuthSecretKey.rpoFalconWithRNG(undefined);
|
|
33
33
|
const signer = new FalconSigner(secretKey);
|
|
34
34
|
|
|
35
|
-
// Create MultisigClient
|
|
35
|
+
// Create MultisigClient. Both endpoints are required; construction throws
|
|
36
|
+
// when either is omitted. midenRpcEndpoint must point at the same network as
|
|
37
|
+
// the injected MidenClient.
|
|
36
38
|
const client = new MultisigClient(midenClient, {
|
|
37
39
|
guardianEndpoint: 'http://localhost:3000',
|
|
38
40
|
midenRpcEndpoint: 'https://rpc.devnet.miden.io',
|
|
@@ -151,6 +153,23 @@ for (const p of proposals) {
|
|
|
151
153
|
}
|
|
152
154
|
```
|
|
153
155
|
|
|
156
|
+
### Recover From a Dead Transaction (Abandon)
|
|
157
|
+
|
|
158
|
+
If an approved transaction died client-side after guardian approval, the
|
|
159
|
+
candidate keeps the account locked on GUARDIAN. Record an abandon intent
|
|
160
|
+
and poll for the resolution:
|
|
161
|
+
|
|
162
|
+
```typescript
|
|
163
|
+
const accepted = await multisig.abandonCandidate(nonce);
|
|
164
|
+
console.log(accepted.state); // 'pending'
|
|
165
|
+
|
|
166
|
+
// The guardian's worker confirms over a short quarantine (typically well
|
|
167
|
+
// under a minute) that the transaction did not land, then releases the
|
|
168
|
+
// account.
|
|
169
|
+
const status = await multisig.abandonStatus(nonce);
|
|
170
|
+
// 'waiting' | 'landed' | 'abandoned' | 'unexpected'
|
|
171
|
+
```
|
|
172
|
+
|
|
154
173
|
### Check Proposal Status
|
|
155
174
|
|
|
156
175
|
Returns cached proposals without making a network request:
|
|
@@ -214,6 +233,11 @@ transaction — the integration owns that recipe and submits it itself.
|
|
|
214
233
|
import { buildP2idTransactionRequest } from '@openzeppelin/miden-multisig-client';
|
|
215
234
|
|
|
216
235
|
// Producer: build a transaction and propose it under a custom label.
|
|
236
|
+
// The options object accepts `noteType` (`NoteType.Public` (default) or
|
|
237
|
+
// `NoteType.Private`, from `@miden-sdk/miden-sdk`); a private note publishes
|
|
238
|
+
// only its hash on chain, so the recipient needs the note shared out-of-band.
|
|
239
|
+
// The typed path is `createP2idProposal(recipient, faucet, amount, nonce?,
|
|
240
|
+
// { noteType })`, which persists the choice in signed metadata.
|
|
217
241
|
const { request, salt } = buildP2idTransactionRequest(senderId, recipientId, faucetId, amount);
|
|
218
242
|
const proposal = await multisig.createCustomProposal(request.serialize(), 'b2agg');
|
|
219
243
|
|
|
@@ -10,9 +10,10 @@ import type { MultisigConfig, CreateAccountResult } from '../types.js';
|
|
|
10
10
|
*
|
|
11
11
|
* @param midenClient - Initialized MidenClient
|
|
12
12
|
* @param config - Multisig configuration
|
|
13
|
+
* @param midenRpcEndpoint - RPC endpoint for the MidenClient's network
|
|
13
14
|
* @returns The created account and seed
|
|
14
15
|
*/
|
|
15
|
-
export declare function createMultisigAccount(midenClient: MidenClient, config: MultisigConfig, midenRpcEndpoint
|
|
16
|
+
export declare function createMultisigAccount(midenClient: MidenClient, config: MultisigConfig, midenRpcEndpoint: string): Promise<CreateAccountResult>;
|
|
16
17
|
/**
|
|
17
18
|
* Validates a multisig configuration.
|
|
18
19
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/account/builder.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAIL,KAAK,WAAW,EACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAevE
|
|
1
|
+
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/account/builder.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAIL,KAAK,WAAW,EACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAevE;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CACzC,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,cAAc,EACtB,gBAAgB,EAAE,MAAM,GACvB,OAAO,CAAC,mBAAmB,CAAC,CAqD9B;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CA6CnE"}
|
package/dist/account/builder.js
CHANGED
|
@@ -14,6 +14,7 @@ import { normalizeSignerCommitment } from '../utils/signature.js';
|
|
|
14
14
|
*
|
|
15
15
|
* @param midenClient - Initialized MidenClient
|
|
16
16
|
* @param config - Multisig configuration
|
|
17
|
+
* @param midenRpcEndpoint - RPC endpoint for the MidenClient's network
|
|
17
18
|
* @returns The created account and seed
|
|
18
19
|
*/
|
|
19
20
|
export async function createMultisigAccount(midenClient, config, midenRpcEndpoint) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/account/builder.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,kBAAkB,GAEnB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,yBAAyB,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AACpF,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,mBAAmB,EACnB,aAAa,GACd,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,wCAAwC,EACxC,8CAA8C,GAC/C,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAElE
|
|
1
|
+
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/account/builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -82,7 +82,7 @@ describe('createMultisigAccount', () => {
|
|
|
82
82
|
threshold: 1,
|
|
83
83
|
signerCommitments: ['0x' + '1'.repeat(64)],
|
|
84
84
|
guardianCommitment: '0x' + '2'.repeat(64),
|
|
85
|
-
});
|
|
85
|
+
}, 'http://localhost:57291');
|
|
86
86
|
expect(authBuilder.linkModule).toHaveBeenNthCalledWith(1, 'openzeppelin::auth::guardian', GUARDIAN_MASM);
|
|
87
87
|
expect(authBuilder.linkModule).toHaveBeenNthCalledWith(2, 'openzeppelin::auth::multisig', MULTISIG_MASM);
|
|
88
88
|
expect(authBuilder.compileAccountComponentCode).toHaveBeenCalledWith(MULTISIG_GUARDIAN_ACCOUNT_COMPONENT_MASM);
|
|
@@ -104,7 +104,7 @@ describe('createMultisigAccount', () => {
|
|
|
104
104
|
signerCommitments: ['0x' + '1'.repeat(64)],
|
|
105
105
|
guardianCommitment: '0x' + '2'.repeat(64),
|
|
106
106
|
signatureScheme: 'ecdsa',
|
|
107
|
-
});
|
|
107
|
+
}, 'http://localhost:57291');
|
|
108
108
|
expect(authBuilder.linkModule).toHaveBeenNthCalledWith(1, 'openzeppelin::auth::guardian_ecdsa', GUARDIAN_ECDSA_MASM);
|
|
109
109
|
expect(authBuilder.linkModule).toHaveBeenNthCalledWith(2, 'openzeppelin::auth::multisig_ecdsa', MULTISIG_ECDSA_MASM);
|
|
110
110
|
expect(authBuilder.compileAccountComponentCode).toHaveBeenCalledWith(MULTISIG_GUARDIAN_ECDSA_ACCOUNT_COMPONENT_MASM);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.test.js","sourceRoot":"","sources":["../../src/account/builder.test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"builder.test.js","sourceRoot":"","sources":["../../src/account/builder.test.ts"],"names":[],"mappings":"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"}
|
package/dist/client.d.ts
CHANGED
|
@@ -13,10 +13,14 @@ import type { MultisigConfig, Signer } from './types.js';
|
|
|
13
13
|
* Configuration for MultisigClient.
|
|
14
14
|
*/
|
|
15
15
|
export interface MultisigClientConfig {
|
|
16
|
-
/** GUARDIAN server endpoint */
|
|
17
|
-
guardianEndpoint
|
|
18
|
-
/**
|
|
19
|
-
|
|
16
|
+
/** GUARDIAN server endpoint. Required — there is no default. */
|
|
17
|
+
guardianEndpoint: string;
|
|
18
|
+
/**
|
|
19
|
+
* Miden node RPC endpoint used for proposal execution and state
|
|
20
|
+
* commitment verification. Required — must point at the same network as
|
|
21
|
+
* the injected `MidenClient`; there is no default.
|
|
22
|
+
*/
|
|
23
|
+
midenRpcEndpoint: string;
|
|
20
24
|
}
|
|
21
25
|
/**
|
|
22
26
|
* One match returned by `MultisigClient.recoverByKey`. Pairs the discovered
|
|
@@ -58,7 +62,7 @@ export declare class MultisigClient {
|
|
|
58
62
|
private readonly midenClient;
|
|
59
63
|
private readonly midenRpcEndpoint;
|
|
60
64
|
private _guardianClient;
|
|
61
|
-
constructor(midenClient: MidenClient, config
|
|
65
|
+
constructor(midenClient: MidenClient, config: MultisigClientConfig);
|
|
62
66
|
/**
|
|
63
67
|
* Change the GUARDIAN endpoint.
|
|
64
68
|
*
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,KAAK,WAAW,EAAsB,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAIzC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAiBzD;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,KAAK,WAAW,EAAsB,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAIzC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAiBzD;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,gEAAgE;IAChE,gBAAgB,EAAE,MAAM,CAAC;IACzB;;;;OAIG;IACH,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,WAAW,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,eAAe,CAAqB;gBAEhC,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,oBAAoB;IAQlE;;;;OAIG;IACH,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAM3C;;OAEG;IACH,IAAI,cAAc,IAAI,kBAAkB,CAEvC;IAED;;;;;;;;;OASG;IACG,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAe/D;;;;;;OAMG;IACG,MAAM,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAsBvE;;;;;;OAMG;IACG,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;CA4CjE"}
|
package/dist/client.js
CHANGED
|
@@ -9,7 +9,7 @@ import { GuardianHttpClient } from '@openzeppelin/guardian-client';
|
|
|
9
9
|
import { Multisig } from './multisig.js';
|
|
10
10
|
import { createMultisigAccount } from './account/index.js';
|
|
11
11
|
import { AccountInspector } from './inspector.js';
|
|
12
|
-
import {
|
|
12
|
+
import { requireConfigValue, requireMidenRpcEndpoint } from './raw-client.js';
|
|
13
13
|
async function bindSignerAccountKey(signer, midenClient, accountId) {
|
|
14
14
|
const bindingSigner = signer;
|
|
15
15
|
if (typeof bindingSigner.bindAccountKey === 'function') {
|
|
@@ -47,10 +47,10 @@ export class MultisigClient {
|
|
|
47
47
|
midenClient;
|
|
48
48
|
midenRpcEndpoint;
|
|
49
49
|
_guardianClient;
|
|
50
|
-
constructor(midenClient, config
|
|
50
|
+
constructor(midenClient, config) {
|
|
51
51
|
this.midenClient = midenClient;
|
|
52
|
-
this.midenRpcEndpoint =
|
|
53
|
-
this._guardianClient = new GuardianHttpClient(config
|
|
52
|
+
this.midenRpcEndpoint = requireMidenRpcEndpoint(config?.midenRpcEndpoint);
|
|
53
|
+
this._guardianClient = new GuardianHttpClient(requireConfigValue('guardianEndpoint', config?.guardianEndpoint));
|
|
54
54
|
}
|
|
55
55
|
/**
|
|
56
56
|
* Change the GUARDIAN endpoint.
|
|
@@ -58,7 +58,7 @@ export class MultisigClient {
|
|
|
58
58
|
* @param endpoint - The new GUARDIAN server endpoint URL
|
|
59
59
|
*/
|
|
60
60
|
setGuardianEndpoint(endpoint) {
|
|
61
|
-
this._guardianClient = new GuardianHttpClient(endpoint);
|
|
61
|
+
this._guardianClient = new GuardianHttpClient(requireConfigValue('guardianEndpoint', endpoint));
|
|
62
62
|
}
|
|
63
63
|
/**
|
|
64
64
|
* Access the internal GUARDIAN client.
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAoB,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAEnE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAqB,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/client.test.js
CHANGED
|
@@ -49,6 +49,9 @@ vi.mock('./account/index.js', () => ({
|
|
|
49
49
|
// Mock fetch for GUARDIAN client
|
|
50
50
|
const mockFetch = vi.fn();
|
|
51
51
|
vi.stubGlobal('fetch', mockFetch);
|
|
52
|
+
const GUARDIAN_URL = 'http://localhost:3000';
|
|
53
|
+
const MIDEN_RPC = 'http://localhost:57291';
|
|
54
|
+
const CLIENT_CONFIG = { guardianEndpoint: GUARDIAN_URL, midenRpcEndpoint: MIDEN_RPC };
|
|
52
55
|
describe('MultisigClient', () => {
|
|
53
56
|
let webClient;
|
|
54
57
|
let mockSigner;
|
|
@@ -73,24 +76,52 @@ describe('MultisigClient', () => {
|
|
|
73
76
|
};
|
|
74
77
|
});
|
|
75
78
|
describe('constructor', () => {
|
|
76
|
-
it('should create client
|
|
77
|
-
const client = new MultisigClient(webClient);
|
|
79
|
+
it('should create client when both endpoints are supplied', () => {
|
|
80
|
+
const client = new MultisigClient(webClient, CLIENT_CONFIG);
|
|
78
81
|
expect(client).toBeInstanceOf(MultisigClient);
|
|
79
82
|
});
|
|
80
83
|
it('should create client with custom GUARDIAN endpoint', () => {
|
|
81
|
-
const client = new MultisigClient(webClient, {
|
|
84
|
+
const client = new MultisigClient(webClient, {
|
|
85
|
+
guardianEndpoint: 'http://custom:8080',
|
|
86
|
+
midenRpcEndpoint: MIDEN_RPC,
|
|
87
|
+
});
|
|
82
88
|
expect(client).toBeInstanceOf(MultisigClient);
|
|
83
89
|
});
|
|
90
|
+
it('throws when the config object is omitted', () => {
|
|
91
|
+
expect(() => new MultisigClient(webClient)).toThrow('missing required configuration: midenRpcEndpoint');
|
|
92
|
+
});
|
|
93
|
+
it.each([undefined, null, 42, '', ' '])('throws before any network or store access when midenRpcEndpoint is %j', (endpoint) => {
|
|
94
|
+
expect(() => new MultisigClient(webClient, {
|
|
95
|
+
guardianEndpoint: GUARDIAN_URL,
|
|
96
|
+
midenRpcEndpoint: endpoint,
|
|
97
|
+
})).toThrow('missing required configuration: midenRpcEndpoint');
|
|
98
|
+
expect(mockFetch).not.toHaveBeenCalled();
|
|
99
|
+
expect(webClient.accounts.get).not.toHaveBeenCalled();
|
|
100
|
+
expect(webClient.accounts.insert).not.toHaveBeenCalled();
|
|
101
|
+
});
|
|
102
|
+
it.each([undefined, null, 42, '', ' '])('throws before any network or store access when guardianEndpoint is %j', (endpoint) => {
|
|
103
|
+
expect(() => new MultisigClient(webClient, {
|
|
104
|
+
guardianEndpoint: endpoint,
|
|
105
|
+
midenRpcEndpoint: MIDEN_RPC,
|
|
106
|
+
})).toThrow('missing required configuration: guardianEndpoint');
|
|
107
|
+
expect(mockFetch).not.toHaveBeenCalled();
|
|
108
|
+
expect(webClient.accounts.get).not.toHaveBeenCalled();
|
|
109
|
+
expect(webClient.accounts.insert).not.toHaveBeenCalled();
|
|
110
|
+
});
|
|
111
|
+
it('rejects a blank endpoint passed to setGuardianEndpoint', () => {
|
|
112
|
+
const client = new MultisigClient(webClient, CLIENT_CONFIG);
|
|
113
|
+
expect(() => client.setGuardianEndpoint(' ')).toThrow('missing required configuration: guardianEndpoint');
|
|
114
|
+
});
|
|
84
115
|
});
|
|
85
116
|
describe('guardianClient getter', () => {
|
|
86
117
|
it('should expose GUARDIAN client for getting pubkey', () => {
|
|
87
|
-
const client = new MultisigClient(webClient);
|
|
118
|
+
const client = new MultisigClient(webClient, CLIENT_CONFIG);
|
|
88
119
|
expect(client.guardianClient).toBeDefined();
|
|
89
120
|
});
|
|
90
121
|
});
|
|
91
122
|
describe('create', () => {
|
|
92
123
|
it('should create multisig and return Multisig instance', async () => {
|
|
93
|
-
const client = new MultisigClient(webClient);
|
|
124
|
+
const client = new MultisigClient(webClient, CLIENT_CONFIG);
|
|
94
125
|
const config = {
|
|
95
126
|
threshold: 2,
|
|
96
127
|
signerCommitments: ['0x' + 'a'.repeat(64), '0x' + 'b'.repeat(64)],
|
|
@@ -103,7 +134,7 @@ describe('MultisigClient', () => {
|
|
|
103
134
|
expect(multisig.guardianCommitment).toBe(config.guardianCommitment);
|
|
104
135
|
});
|
|
105
136
|
it('should set signer on GUARDIAN client', async () => {
|
|
106
|
-
const client = new MultisigClient(webClient);
|
|
137
|
+
const client = new MultisigClient(webClient, CLIENT_CONFIG);
|
|
107
138
|
const config = {
|
|
108
139
|
threshold: 1,
|
|
109
140
|
signerCommitments: ['0x' + 'a'.repeat(64)],
|
|
@@ -113,7 +144,7 @@ describe('MultisigClient', () => {
|
|
|
113
144
|
expect(multisig.signerCommitment).toBe(mockSigner.commitment);
|
|
114
145
|
});
|
|
115
146
|
it('binds the signer auth key to the created account when supported', async () => {
|
|
116
|
-
const client = new MultisigClient(webClient);
|
|
147
|
+
const client = new MultisigClient(webClient, CLIENT_CONFIG);
|
|
117
148
|
const bindAccountKey = vi.fn().mockResolvedValue(undefined);
|
|
118
149
|
const bindingSigner = {
|
|
119
150
|
...mockSigner,
|
|
@@ -129,7 +160,7 @@ describe('MultisigClient', () => {
|
|
|
129
160
|
});
|
|
130
161
|
describe('load', () => {
|
|
131
162
|
it('should load existing multisig account and detect config', async () => {
|
|
132
|
-
const client = new MultisigClient(webClient);
|
|
163
|
+
const client = new MultisigClient(webClient, CLIENT_CONFIG);
|
|
133
164
|
// Mock getState response
|
|
134
165
|
mockFetch.mockResolvedValueOnce({
|
|
135
166
|
ok: true,
|
|
@@ -154,7 +185,7 @@ describe('MultisigClient', () => {
|
|
|
154
185
|
expect(webClient.accounts.insert).toHaveBeenCalledTimes(1);
|
|
155
186
|
});
|
|
156
187
|
it('should throw if account not found on GUARDIAN', async () => {
|
|
157
|
-
const client = new MultisigClient(webClient);
|
|
188
|
+
const client = new MultisigClient(webClient, CLIENT_CONFIG);
|
|
158
189
|
mockFetch.mockResolvedValueOnce({
|
|
159
190
|
ok: false,
|
|
160
191
|
status: 404,
|
|
@@ -164,7 +195,7 @@ describe('MultisigClient', () => {
|
|
|
164
195
|
await expect(client.load('0xnonexistent', mockSigner)).rejects.toThrow();
|
|
165
196
|
});
|
|
166
197
|
it('should allow registerOnGuardian after load without explicit initial state', async () => {
|
|
167
|
-
const client = new MultisigClient(webClient);
|
|
198
|
+
const client = new MultisigClient(webClient, CLIENT_CONFIG);
|
|
168
199
|
mockFetch.mockResolvedValueOnce({
|
|
169
200
|
ok: true,
|
|
170
201
|
json: async () => ({
|
|
@@ -190,7 +221,7 @@ describe('MultisigClient', () => {
|
|
|
190
221
|
expect(webClient.accounts.insert).toHaveBeenCalledTimes(1);
|
|
191
222
|
});
|
|
192
223
|
it('binds the signer auth key after loading an account when supported', async () => {
|
|
193
|
-
const client = new MultisigClient(webClient);
|
|
224
|
+
const client = new MultisigClient(webClient, CLIENT_CONFIG);
|
|
194
225
|
const bindAccountKey = vi.fn().mockResolvedValue(undefined);
|
|
195
226
|
const bindingSigner = {
|
|
196
227
|
...mockSigner,
|
|
@@ -244,7 +275,7 @@ describe('MultisigClient', () => {
|
|
|
244
275
|
});
|
|
245
276
|
}
|
|
246
277
|
it('returns one (accountId, state) pair when lookup matches a single account', async () => {
|
|
247
|
-
const client = new MultisigClient(webClient);
|
|
278
|
+
const client = new MultisigClient(webClient, CLIENT_CONFIG);
|
|
248
279
|
const signer = makeLookupCapableSigner();
|
|
249
280
|
const accountId = '0x7bfb0f38b0fafa103f86a805594170';
|
|
250
281
|
mockServerLookupResponse([accountId]);
|
|
@@ -259,7 +290,7 @@ describe('MultisigClient', () => {
|
|
|
259
290
|
expect(mockFetch).toHaveBeenCalledTimes(2);
|
|
260
291
|
});
|
|
261
292
|
it('returns multiple (accountId, state) pairs when one commitment authorizes several accounts', async () => {
|
|
262
|
-
const client = new MultisigClient(webClient);
|
|
293
|
+
const client = new MultisigClient(webClient, CLIENT_CONFIG);
|
|
263
294
|
const signer = makeLookupCapableSigner();
|
|
264
295
|
const accountA = '0xaaa1';
|
|
265
296
|
const accountB = '0xbbb2';
|
|
@@ -272,7 +303,7 @@ describe('MultisigClient', () => {
|
|
|
272
303
|
expect(mockFetch).toHaveBeenCalledTimes(3);
|
|
273
304
|
});
|
|
274
305
|
it('returns empty array when no account authorizes the commitment', async () => {
|
|
275
|
-
const client = new MultisigClient(webClient);
|
|
306
|
+
const client = new MultisigClient(webClient, CLIENT_CONFIG);
|
|
276
307
|
const signer = makeLookupCapableSigner();
|
|
277
308
|
mockServerLookupResponse([]);
|
|
278
309
|
const recovered = await client.recoverByKey(signer);
|
|
@@ -281,7 +312,7 @@ describe('MultisigClient', () => {
|
|
|
281
312
|
expect(mockFetch).toHaveBeenCalledTimes(1);
|
|
282
313
|
});
|
|
283
314
|
it('throws a clear error when the signer does not implement signLookupMessage', async () => {
|
|
284
|
-
const client = new MultisigClient(webClient);
|
|
315
|
+
const client = new MultisigClient(webClient, CLIENT_CONFIG);
|
|
285
316
|
// mockSigner from the outer beforeEach lacks signLookupMessage.
|
|
286
317
|
await expect(client.recoverByKey(mockSigner)).rejects.toThrow(/signLookupMessage/);
|
|
287
318
|
expect(mockFetch).not.toHaveBeenCalled();
|
package/dist/client.test.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.test.js","sourceRoot":"","sources":["../src/client.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.test.js","sourceRoot":"","sources":["../src/client.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG7C,qBAAqB;AACrB,EAAE,CAAC,IAAI,CAAC,sBAAsB,EAAE,GAAG,EAAE,CAAC,CAAC;IACrC,SAAS,EAAE;QACT,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,GAAW,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;KAC3D;IACD,OAAO,EAAE;QACP,WAAW,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;YACxB,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;gBACT,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBACrC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC1C,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;aAC3C,CAAC;YACF,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAC1C,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE;YAChB,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE;SACf,CAAC,CAAC;KACJ;CACF,CAAC,CAAC,CAAC;AAEJ,4BAA4B;AAC5B,EAAE,CAAC,IAAI,CAAC,gBAAgB,EAAE,GAAG,EAAE,CAAC,CAAC;IAC/B,gBAAgB,EAAE;QAChB,WAAW,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;YACxB,SAAS,EAAE,CAAC;YACZ,UAAU,EAAE,CAAC;YACb,iBAAiB,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACjE,eAAe,EAAE,IAAI;YACrB,kBAAkB,EAAE,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YACzC,aAAa,EAAE,EAAE;YACjB,mBAAmB,EAAE,IAAI,GAAG,EAAE;SAC/B,CAAC,CAAC;KACJ;CACF,CAAC,CAAC,CAAC;AAEJ,mCAAmC;AACnC,EAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,GAAG,EAAE,CAAC,CAAC;IACnC,qBAAqB,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC;QAC/C,OAAO,EAAE;YACP,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;gBACT,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBACrC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC1C,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;aAC3C,CAAC;YACF,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;SAC3C;QACD,IAAI,EAAE,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;KAChC,CAAC;CACH,CAAC,CAAC,CAAC;AAEJ,iCAAiC;AACjC,MAAM,SAAS,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;AAC1B,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AAElC,MAAM,YAAY,GAAG,uBAAuB,CAAC;AAC7C,MAAM,SAAS,GAAG,wBAAwB,CAAC;AAC3C,MAAM,aAAa,GAAG,EAAE,gBAAgB,EAAE,YAAY,EAAE,gBAAgB,EAAE,SAAS,EAAE,CAAC;AAEtF,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,IAAI,SAAc,CAAC;IACnB,IAAI,UAAkB,CAAC;IAEvB,UAAU,CAAC,GAAG,EAAE;QACd,SAAS,CAAC,SAAS,EAAE,CAAC;QAEtB,SAAS,GAAG;YACV,QAAQ,EAAE;gBACR,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC;gBACpC,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;aAC7C;YACD,QAAQ,EAAE;gBACR,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;aAC7C;SACF,CAAC;QAEF,UAAU,GAAG;YACX,UAAU,EAAE,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YACjC,SAAS,EAAE,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAChC,MAAM,EAAE,QAAQ;YAChB,0BAA0B,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC7E,WAAW,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC5D,cAAc,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;SAChE,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;QAC3B,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;YAC/D,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;YAC5D,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;YAC5D,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,SAAS,EAAE;gBAC3C,gBAAgB,EAAE,oBAAoB;gBACtC,gBAAgB,EAAE,SAAS;aAC5B,CAAC,CAAC;YACH,MAAM,CAAC,MAAM,CAAC,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;YAClD,MAAM,CAAC,GAAG,EAAE,CAAC,IAAK,cAAsB,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAC1D,kDAAkD,CACnD,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC,CACvC,uEAAuE,EACvE,CAAC,QAAQ,EAAE,EAAE;YACX,MAAM,CACJ,GAAG,EAAE,CACH,IAAI,cAAc,CAAC,SAAS,EAAE;gBAC5B,gBAAgB,EAAE,YAAY;gBAC9B,gBAAgB,EAAE,QAAe;aAClC,CAAC,CACL,CAAC,OAAO,CAAC,kDAAkD,CAAC,CAAC;YAC9D,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YACzC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YACtD,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QAC3D,CAAC,CACF,CAAC;QAEF,EAAE,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC,CACvC,uEAAuE,EACvE,CAAC,QAAQ,EAAE,EAAE;YACX,MAAM,CACJ,GAAG,EAAE,CACH,IAAI,cAAc,CAAC,SAAS,EAAE;gBAC5B,gBAAgB,EAAE,QAAe;gBACjC,gBAAgB,EAAE,SAAS;aAC5B,CAAC,CACL,CAAC,OAAO,CAAC,kDAAkD,CAAC,CAAC;YAC9D,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YACzC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;YACtD,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QAC3D,CAAC,CACF,CAAC;QAEF,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;YAChE,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;YAC5D,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CACrD,kDAAkD,CACnD,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;QACrC,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;YAC1D,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;YAC5D,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,WAAW,EAAE,CAAC;QAC9C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;QACtB,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;YACnE,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;YAE5D,MAAM,MAAM,GAAG;gBACb,SAAS,EAAE,CAAC;gBACZ,iBAAiB,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACjE,kBAAkB,EAAE,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;aAC1C,CAAC;YAEF,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;YAEzD,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;YAC/B,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACnC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;YACrE,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;YACpD,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;YAE5D,MAAM,MAAM,GAAG;gBACb,SAAS,EAAE,CAAC;gBACZ,iBAAiB,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBAC1C,kBAAkB,EAAE,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;aAC1C,CAAC;YAEF,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;YACzD,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iEAAiE,EAAE,KAAK,IAAI,EAAE;YAC/E,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;YAC5D,MAAM,cAAc,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;YAC5D,MAAM,aAAa,GAAG;gBACpB,GAAG,UAAU;gBACb,cAAc;aACf,CAAC;YAEF,MAAM,MAAM,CAAC,MAAM,CAAC;gBAClB,SAAS,EAAE,CAAC;gBACZ,iBAAiB,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBAC1C,kBAAkB,EAAE,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;aAC1C,EAAE,aAAa,CAAC,CAAC;YAElB,MAAM,CAAC,cAAc,CAAC,CAAC,oBAAoB,CAAC,SAAS,EAAE,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAChF,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE;QACpB,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;YACvE,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;YAE5D,yBAAyB;YACzB,SAAS,CAAC,qBAAqB,CAAC;gBAC9B,EAAE,EAAE,IAAI;gBACR,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;oBACjB,UAAU,EAAE,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;oBACjC,UAAU,EAAE,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;oBACjC,UAAU,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE;oBACnC,UAAU,EAAE,sBAAsB;oBAClC,UAAU,EAAE,sBAAsB;iBACnC,CAAC;aACH,CAAC,CAAC;YAEH,MAAM,SAAS,GAAG,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACxC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;YAE1D,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;YAC/B,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC3C,+DAA+D;YAC/D,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACnC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC3F,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;YAChE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YACxC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YACxD,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;YAC7D,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;YAE5D,SAAS,CAAC,qBAAqB,CAAC;gBAC9B,EAAE,EAAE,KAAK;gBACT,MAAM,EAAE,GAAG;gBACX,UAAU,EAAE,WAAW;gBACvB,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,mBAAmB;aACtC,CAAC,CAAC;YAEH,MAAM,MAAM,CACV,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,CACzC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QACtB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2EAA2E,EAAE,KAAK,IAAI,EAAE;YACzF,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;YAE5D,SAAS,CAAC,qBAAqB,CAAC;gBAC9B,EAAE,EAAE,IAAI;gBACR,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;oBACjB,UAAU,EAAE,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;oBACjC,UAAU,EAAE,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;oBACjC,UAAU,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE;oBACnC,UAAU,EAAE,sBAAsB;oBAClC,UAAU,EAAE,sBAAsB;iBACnC,CAAC;aACH,CAAC,CAAC;YAEH,SAAS,CAAC,qBAAqB,CAAC;gBAC9B,EAAE,EAAE,IAAI;gBACR,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;oBACjB,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,oBAAoB;oBAC7B,UAAU,EAAE,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;iBAClC,CAAC;aACH,CAAC,CAAC;YAEH,MAAM,SAAS,GAAG,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACxC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;YAE1D,MAAM,MAAM,CAAC,QAAQ,CAAC,kBAAkB,EAAE,CAAC,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;YACrE,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YACxD,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mEAAmE,EAAE,KAAK,IAAI,EAAE;YACjF,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;YAC5D,MAAM,cAAc,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;YAC5D,MAAM,aAAa,GAAG;gBACpB,GAAG,UAAU;gBACb,cAAc;aACf,CAAC;YAEF,SAAS,CAAC,qBAAqB,CAAC;gBAC9B,EAAE,EAAE,IAAI;gBACR,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;oBACjB,UAAU,EAAE,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;oBACjC,UAAU,EAAE,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;oBACjC,UAAU,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE;oBACnC,UAAU,EAAE,sBAAsB;oBAClC,UAAU,EAAE,sBAAsB;iBACnC,CAAC;aACH,CAAC,CAAC;YAEH,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,aAAa,CAAC,CAAC;YAExD,MAAM,CAAC,cAAc,CAAC,CAAC,oBAAoB,CAAC,SAAS,EAAE,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAChF,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,uCAAuC;IAEvC,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC5B,SAAS,uBAAuB;YAC9B,OAAO;gBACL,UAAU,EAAE,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;gBACjC,SAAS,EAAE,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC;gBACjC,MAAM,EAAE,QAAiB;gBACzB,0BAA0B,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC7E,WAAW,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC5D,cAAc,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC/D,iBAAiB,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;aACrE,CAAC;QACJ,CAAC;QAED,SAAS,wBAAwB,CAAC,UAAoB;YACpD,SAAS,CAAC,qBAAqB,CAAC;gBAC9B,EAAE,EAAE,IAAI;gBACR,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;oBACjB,QAAQ,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC;iBACvD,CAAC;aACH,CAAC,CAAC;QACL,CAAC;QAED,SAAS,uBAAuB,CAAC,SAAiB;YAChD,SAAS,CAAC,qBAAqB,CAAC;gBAC9B,EAAE,EAAE,IAAI;gBACR,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;oBACjB,UAAU,EAAE,SAAS;oBACrB,UAAU,EAAE,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;oBACjC,UAAU,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;oBAClC,UAAU,EAAE,sBAAsB;oBAClC,UAAU,EAAE,sBAAsB;iBACnC,CAAC;aACH,CAAC,CAAC;QACL,CAAC;QAED,EAAE,CAAC,0EAA0E,EAAE,KAAK,IAAI,EAAE;YACxF,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;YAC5D,MAAM,MAAM,GAAG,uBAAuB,EAAE,CAAC;YACzC,MAAM,SAAS,GAAG,kCAAkC,CAAC;YAErD,wBAAwB,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;YACtC,uBAAuB,CAAC,SAAS,CAAC,CAAC;YAEnC,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAEpD,MAAM,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAClC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC/C,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;YAClE,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YAC1D,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,oBAAoB,CACnD,MAAM,CAAC,UAAU,EACjB,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CACnB,CAAC;YACF,iDAAiD;YACjD,MAAM,CAAC,SAAS,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2FAA2F,EAAE,KAAK,IAAI,EAAE;YACzG,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;YAC5D,MAAM,MAAM,GAAG,uBAAuB,EAAE,CAAC;YACzC,MAAM,QAAQ,GAAG,QAAQ,CAAC;YAC1B,MAAM,QAAQ,GAAG,QAAQ,CAAC;YAE1B,wBAAwB,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;YAC/C,uBAAuB,CAAC,QAAQ,CAAC,CAAC;YAClC,uBAAuB,CAAC,QAAQ,CAAC,CAAC;YAElC,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAEpD,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;YACxE,8BAA8B;YAC9B,MAAM,CAAC,SAAS,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;YAC7E,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;YAC5D,MAAM,MAAM,GAAG,uBAAuB,EAAE,CAAC;YAEzC,wBAAwB,CAAC,EAAE,CAAC,CAAC;YAE7B,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAEpD,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC9B,4DAA4D;YAC5D,MAAM,CAAC,SAAS,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2EAA2E,EAAE,KAAK,IAAI,EAAE;YACzF,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;YAC5D,gEAAgE;YAChE,MAAM,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;YACnF,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QAC3C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Connectivity category for a codeless transport failure:
|
|
3
|
+
* - `network` — the browser/OS reports no connectivity at all
|
|
4
|
+
* (`navigator.onLine === false`); the problem is on the user's side.
|
|
5
|
+
* - `timeout` — the request was sent but timed out or was aborted.
|
|
6
|
+
* - `unreachable` — everything else: Guardian (or an intermediary) could not
|
|
7
|
+
* be reached or did not answer with a Guardian error object.
|
|
8
|
+
*/
|
|
9
|
+
export type ConnectivityCategory = 'network' | 'unreachable' | 'timeout';
|
|
10
|
+
/**
|
|
11
|
+
* Does this error look like a codeless transport/connectivity failure (vs a
|
|
12
|
+
* semantic Guardian error)? String heuristic — see module docs.
|
|
13
|
+
*/
|
|
14
|
+
export declare function isLikelyNetworkError(err: unknown): boolean;
|
|
15
|
+
/** A normalized, wallet-displayable view of any error thrown by a Guardian call. */
|
|
16
|
+
export interface UserFacingError {
|
|
17
|
+
/** Stable Guardian error code, when the server was reached. */
|
|
18
|
+
code?: string;
|
|
19
|
+
/** Connectivity category, when this was a codeless transport failure. */
|
|
20
|
+
category?: ConnectivityCategory;
|
|
21
|
+
/** Short message safe to display verbatim in a wallet UI. */
|
|
22
|
+
userMessage: string;
|
|
23
|
+
/** The original error, for logging/diagnostics. */
|
|
24
|
+
cause: unknown;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Normalize any error thrown by a Guardian call into a user-facing shape.
|
|
28
|
+
*
|
|
29
|
+
* - A {@link GuardianHttpError} with a parsed `{ code, message }` → the
|
|
30
|
+
* server's stable code + user-safe message (feature 009).
|
|
31
|
+
* - A reachable host that returned no Guardian error object (e.g. a proxy 5xx
|
|
32
|
+
* with an HTML body) → treated as a connectivity failure.
|
|
33
|
+
* - A codeless transport rejection (server never reached) → classified and
|
|
34
|
+
* given the generic connectivity message; the raw transport text is never
|
|
35
|
+
* surfaced as the primary message.
|
|
36
|
+
*/
|
|
37
|
+
export declare function toUserFacingError(err: unknown): UserFacingError;
|
|
38
|
+
//# sourceMappingURL=connectivity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connectivity.d.ts","sourceRoot":"","sources":["../src/connectivity.ts"],"names":[],"mappings":"AAkBA;;;;;;;GAOG;AACH,MAAM,MAAM,oBAAoB,GAAG,SAAS,GAAG,aAAa,GAAG,SAAS,CAAC;AA4BzE;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAa1D;AAED,oFAAoF;AACpF,MAAM,WAAW,eAAe;IAC9B,+DAA+D;IAC/D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,yEAAyE;IACzE,QAAQ,CAAC,EAAE,oBAAoB,CAAC;IAChC,6DAA6D;IAC7D,WAAW,EAAE,MAAM,CAAC;IACpB,mDAAmD;IACnD,KAAK,EAAE,OAAO,CAAC;CAChB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,eAAe,CAc/D"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Classification for codeless transport failures (feature
|
|
3
|
+
* `009-human-readable-errors`, User Story 3).
|
|
4
|
+
*
|
|
5
|
+
* When Guardian *is* reached, errors arrive as a {@link GuardianHttpError}
|
|
6
|
+
* carrying the server's stable `code` and user-safe `message` — use those.
|
|
7
|
+
* When Guardian is *not* reached (connection refused, DNS, timeout, TLS, or a
|
|
8
|
+
* proxy 5xx with no Guardian body) no error object exists, so the wallet-facing
|
|
9
|
+
* client must classify the failure and supply a friendly connectivity message
|
|
10
|
+
* rather than surfacing raw `"Failed to fetch"` / `"NetworkError"` text.
|
|
11
|
+
*
|
|
12
|
+
* The detection is intentionally string-matching, mirroring the 0xMiden/wallet
|
|
13
|
+
* `connectivity-classify.ts` heuristic: fetch / DOMException / TypeError each
|
|
14
|
+
* surface failures with different shapes, so the message string is the only
|
|
15
|
+
* stable join key.
|
|
16
|
+
*/
|
|
17
|
+
import { GuardianHttpError } from '@openzeppelin/guardian-client';
|
|
18
|
+
const CONNECTIVITY_MESSAGE = "Can't reach Guardian right now. Check your connection and try again.";
|
|
19
|
+
const GENERIC_MESSAGE = 'Something went wrong. Please try again.';
|
|
20
|
+
/**
|
|
21
|
+
* `navigator.onLine` is unreliable as a positive signal, but a `false` means
|
|
22
|
+
* the browser/OS is certain there is no connectivity — categorize as
|
|
23
|
+
* `network` rather than `unreachable` (mirrors the wallet's
|
|
24
|
+
* `isDefinitelyOffline`). Guarded for non-browser (Node) contexts.
|
|
25
|
+
*/
|
|
26
|
+
function isDefinitelyOffline() {
|
|
27
|
+
if (typeof navigator === 'undefined')
|
|
28
|
+
return false;
|
|
29
|
+
if (typeof navigator.onLine !== 'boolean')
|
|
30
|
+
return false;
|
|
31
|
+
return navigator.onLine === false;
|
|
32
|
+
}
|
|
33
|
+
/** Classify a codeless transport failure into a {@link ConnectivityCategory}. */
|
|
34
|
+
function classifyTransportError(err) {
|
|
35
|
+
if (isDefinitelyOffline())
|
|
36
|
+
return 'network';
|
|
37
|
+
const message = err?.message ?? String(err ?? '');
|
|
38
|
+
const lower = message.toLowerCase();
|
|
39
|
+
if (lower.includes('timeout') || lower.includes('timed out') || lower.includes('abort')) {
|
|
40
|
+
return 'timeout';
|
|
41
|
+
}
|
|
42
|
+
return 'unreachable';
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Does this error look like a codeless transport/connectivity failure (vs a
|
|
46
|
+
* semantic Guardian error)? String heuristic — see module docs.
|
|
47
|
+
*/
|
|
48
|
+
export function isLikelyNetworkError(err) {
|
|
49
|
+
const message = err?.message ?? String(err ?? '');
|
|
50
|
+
const lower = message.toLowerCase();
|
|
51
|
+
if (lower.includes('failed to fetch'))
|
|
52
|
+
return true;
|
|
53
|
+
if (lower.includes('networkerror'))
|
|
54
|
+
return true;
|
|
55
|
+
if (lower.includes('network error'))
|
|
56
|
+
return true;
|
|
57
|
+
if (lower.includes('load failed'))
|
|
58
|
+
return true;
|
|
59
|
+
if (lower.includes('abort'))
|
|
60
|
+
return true;
|
|
61
|
+
if (lower.includes('timeout') || lower.includes('timed out'))
|
|
62
|
+
return true;
|
|
63
|
+
if (lower.includes('connection'))
|
|
64
|
+
return true;
|
|
65
|
+
if (lower.includes('econnrefused') || lower.includes('enotfound'))
|
|
66
|
+
return true;
|
|
67
|
+
if (lower.includes('dns'))
|
|
68
|
+
return true;
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Normalize any error thrown by a Guardian call into a user-facing shape.
|
|
73
|
+
*
|
|
74
|
+
* - A {@link GuardianHttpError} with a parsed `{ code, message }` → the
|
|
75
|
+
* server's stable code + user-safe message (feature 009).
|
|
76
|
+
* - A reachable host that returned no Guardian error object (e.g. a proxy 5xx
|
|
77
|
+
* with an HTML body) → treated as a connectivity failure.
|
|
78
|
+
* - A codeless transport rejection (server never reached) → classified and
|
|
79
|
+
* given the generic connectivity message; the raw transport text is never
|
|
80
|
+
* surfaced as the primary message.
|
|
81
|
+
*/
|
|
82
|
+
export function toUserFacingError(err) {
|
|
83
|
+
if (err instanceof GuardianHttpError) {
|
|
84
|
+
if (err.code && err.userMessage) {
|
|
85
|
+
return { code: err.code, userMessage: err.userMessage, cause: err };
|
|
86
|
+
}
|
|
87
|
+
if (err.status >= 500) {
|
|
88
|
+
return { category: 'unreachable', userMessage: CONNECTIVITY_MESSAGE, cause: err };
|
|
89
|
+
}
|
|
90
|
+
return { userMessage: GENERIC_MESSAGE, cause: err };
|
|
91
|
+
}
|
|
92
|
+
if (isLikelyNetworkError(err)) {
|
|
93
|
+
return { category: classifyTransportError(err), userMessage: CONNECTIVITY_MESSAGE, cause: err };
|
|
94
|
+
}
|
|
95
|
+
return { userMessage: GENERIC_MESSAGE, cause: err };
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=connectivity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connectivity.js","sourceRoot":"","sources":["../src/connectivity.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connectivity.test.d.ts","sourceRoot":"","sources":["../src/connectivity.test.ts"],"names":[],"mappings":""}
|