@ic402/client 0.1.5 → 2.0.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/dist/client.d.ts +96 -22
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +325 -46
- package/dist/client.js.map +1 -1
- package/dist/evm.d.ts +108 -0
- package/dist/evm.d.ts.map +1 -0
- package/dist/evm.js +437 -0
- package/dist/evm.js.map +1 -0
- package/dist/idl.d.ts +25 -4
- package/dist/idl.d.ts.map +1 -1
- package/dist/idl.js +129 -39
- package/dist/idl.js.map +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +107 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/voucher.d.ts +9 -3
- package/dist/voucher.d.ts.map +1 -1
- package/dist/voucher.js +11 -5
- package/dist/voucher.js.map +1 -1
- package/package.json +8 -8
package/dist/client.js
CHANGED
|
@@ -1,4 +1,10 @@
|
|
|
1
|
+
import { Principal } from '@icp-sdk/core/principal';
|
|
2
|
+
/** JSON.stringify that handles BigInt values. */
|
|
3
|
+
function safeStringify(value) {
|
|
4
|
+
return JSON.stringify(value, (_key, val) => typeof val === 'bigint' ? val.toString() : val);
|
|
5
|
+
}
|
|
1
6
|
import { signVoucher } from './voucher.js';
|
|
7
|
+
import { Ic402Error, classifyNetworkError, probeX402 as probeX402Url, createEvmClient, getEvmNonce, getFeeData, broadcastTransaction as broadcastTx, registerAgent as registerAgentFlow, } from './evm.js';
|
|
2
8
|
/**
|
|
3
9
|
* ic402 TypeScript client SDK.
|
|
4
10
|
*
|
|
@@ -7,7 +13,6 @@ import { signVoucher } from './voucher.js';
|
|
|
7
13
|
*/
|
|
8
14
|
export class Ic402Client {
|
|
9
15
|
config;
|
|
10
|
-
totalSpent = 0n;
|
|
11
16
|
constructor(config) {
|
|
12
17
|
this.config = config;
|
|
13
18
|
}
|
|
@@ -16,13 +21,9 @@ export class Ic402Client {
|
|
|
16
21
|
*
|
|
17
22
|
* Flow: call method → if #paymentRequired → icrc2_approve → create sig → retry
|
|
18
23
|
*/
|
|
19
|
-
async call(
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
if (!actorFactory) {
|
|
23
|
-
throw new Error('actorFactory required: provide a function that creates an actor for the canister');
|
|
24
|
-
}
|
|
25
|
-
const actor = actorFactory(canisterId);
|
|
24
|
+
async call(method, args, canisterId) {
|
|
25
|
+
const cid = canisterId ?? this.config.canisterId;
|
|
26
|
+
const actor = this.config.actorFactory(cid);
|
|
26
27
|
const result = await actor[method](...args);
|
|
27
28
|
// Check for payment required response
|
|
28
29
|
if (result && typeof result === 'object' && 'paymentRequired' in result) {
|
|
@@ -30,23 +31,14 @@ export class Ic402Client {
|
|
|
30
31
|
throw new Error('Payment required but autoPayment is disabled');
|
|
31
32
|
}
|
|
32
33
|
const requirement = result.paymentRequired;
|
|
33
|
-
// Check budget limits
|
|
34
|
-
if (this.config.budget?.maxPerRequest &&
|
|
35
|
-
requirement.amount > this.config.budget.maxPerRequest) {
|
|
36
|
-
throw new Error(`Amount ${requirement.amount} exceeds maxPerRequest ${this.config.budget.maxPerRequest}`);
|
|
37
|
-
}
|
|
38
|
-
if (this.config.budget?.maxTotal &&
|
|
39
|
-
this.totalSpent + requirement.amount > this.config.budget.maxTotal) {
|
|
40
|
-
throw new Error('Total budget exceeded');
|
|
41
|
-
}
|
|
42
34
|
if (!this.config.ledger || !this.config.ledgerActorFactory) {
|
|
43
35
|
throw new Error('Auto-approval requires ledger and ledgerActorFactory in config');
|
|
44
36
|
}
|
|
45
|
-
// ICRC-2 approve: allow the target canister to spend
|
|
37
|
+
// ICRC-2 approve: allow the target canister to spend amount + fee buffer
|
|
46
38
|
const ledgerActor = this.config.ledgerActorFactory(this.config.ledger);
|
|
47
39
|
const approveResult = await ledgerActor.icrc2_approve({
|
|
48
|
-
spender: { owner:
|
|
49
|
-
amount: requirement.amount,
|
|
40
|
+
spender: { owner: Principal.fromText(cid), subaccount: [] },
|
|
41
|
+
amount: requirement.amount + (this.config.approvalFeeBuffer ?? 100000n),
|
|
50
42
|
fee: [],
|
|
51
43
|
memo: [],
|
|
52
44
|
from_subaccount: [],
|
|
@@ -55,16 +47,16 @@ export class Ic402Client {
|
|
|
55
47
|
expires_at: [],
|
|
56
48
|
});
|
|
57
49
|
if (approveResult && typeof approveResult === 'object' && 'Err' in approveResult) {
|
|
58
|
-
throw new Error(`ICRC-2 approve failed: ${
|
|
50
|
+
throw new Error(`ICRC-2 approve failed: ${safeStringify(approveResult.Err)}`);
|
|
59
51
|
}
|
|
60
|
-
this.totalSpent += requirement.amount;
|
|
61
52
|
// Construct PaymentSignature from the requirement's nonce and retry
|
|
53
|
+
const sender = this.config.identity?.getPrincipal().toText() ?? '';
|
|
62
54
|
const sig = {
|
|
63
55
|
scheme: 'exact',
|
|
64
56
|
network: this.config.network,
|
|
65
57
|
signature: requirement.nonce,
|
|
66
58
|
publicKey: [],
|
|
67
|
-
sender
|
|
59
|
+
sender,
|
|
68
60
|
nonce: requirement.nonce,
|
|
69
61
|
authorization: [],
|
|
70
62
|
};
|
|
@@ -87,13 +79,10 @@ export class Ic402Client {
|
|
|
87
79
|
*
|
|
88
80
|
* Flow: requestSession → calculate deposit → icrc2_approve → openSession → SessionHandle
|
|
89
81
|
*/
|
|
90
|
-
async openSession(
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
throw new Error('actorFactory required');
|
|
95
|
-
}
|
|
96
|
-
const actor = actorFactory(canisterId);
|
|
82
|
+
async openSession(sessionConfig, signer, canisterId) {
|
|
83
|
+
const cid = canisterId ?? this.config.canisterId;
|
|
84
|
+
const config = sessionConfig;
|
|
85
|
+
const actor = this.config.actorFactory(cid);
|
|
97
86
|
let intent = await actor.requestSession();
|
|
98
87
|
// For EVM sessions, override the intent's network, token, and recipient
|
|
99
88
|
if (config?.evmNetwork) {
|
|
@@ -107,19 +96,14 @@ export class Ic402Client {
|
|
|
107
96
|
const maxDeposit = config?.maxDeposit ?? this.config.sessions?.maxDeposit ?? intent.suggestedDeposit;
|
|
108
97
|
const autoClose = config?.autoClose ?? this.config.sessions?.autoClose ?? true;
|
|
109
98
|
const idleTimeout = config?.idleTimeout ?? this.config.sessions?.idleTimeout;
|
|
110
|
-
// Check budget
|
|
111
|
-
if (this.config.budget?.maxSessionDeposit &&
|
|
112
|
-
maxDeposit > this.config.budget.maxSessionDeposit) {
|
|
113
|
-
throw new Error(`Deposit ${maxDeposit} exceeds maxSessionDeposit ${this.config.budget.maxSessionDeposit}`);
|
|
114
|
-
}
|
|
115
99
|
const isEvm = !!config?.evmTxHash;
|
|
116
100
|
const network = config?.evmNetwork ?? this.config.network;
|
|
117
101
|
// ICRC-2 approve deposit amount (ICP sessions only)
|
|
118
102
|
if (!isEvm && this.config.autoPayment && this.config.ledger && this.config.ledgerActorFactory) {
|
|
119
103
|
const ledgerActor = this.config.ledgerActorFactory(this.config.ledger);
|
|
120
104
|
const approveResult = await ledgerActor.icrc2_approve({
|
|
121
|
-
spender: { owner:
|
|
122
|
-
amount: maxDeposit,
|
|
105
|
+
spender: { owner: Principal.fromText(cid), subaccount: [] },
|
|
106
|
+
amount: maxDeposit + (this.config.approvalFeeBuffer ?? 100000n),
|
|
123
107
|
fee: [],
|
|
124
108
|
memo: [],
|
|
125
109
|
from_subaccount: [],
|
|
@@ -128,10 +112,10 @@ export class Ic402Client {
|
|
|
128
112
|
expires_at: [],
|
|
129
113
|
});
|
|
130
114
|
if (approveResult && typeof approveResult === 'object' && 'Err' in approveResult) {
|
|
131
|
-
throw new Error(`ICRC-2 approve failed: ${
|
|
115
|
+
throw new Error(`ICRC-2 approve failed: ${safeStringify(approveResult.Err)}`);
|
|
132
116
|
}
|
|
133
117
|
}
|
|
134
|
-
const
|
|
118
|
+
const openConfig = {
|
|
135
119
|
maxDeposit,
|
|
136
120
|
autoClose,
|
|
137
121
|
idleTimeout: idleTimeout ? [idleTimeout] : [],
|
|
@@ -144,24 +128,48 @@ export class Ic402Client {
|
|
|
144
128
|
if (signer) {
|
|
145
129
|
pubKey = new Uint8Array(await signer.getPublicKey());
|
|
146
130
|
}
|
|
131
|
+
const evmAuth = config?.authorization;
|
|
147
132
|
const sig = {
|
|
148
133
|
scheme: 'exact',
|
|
149
134
|
network,
|
|
150
135
|
signature: isEvm
|
|
151
136
|
? Array.from(new TextEncoder().encode(config.evmTxHash))
|
|
152
137
|
: new Uint8Array(0),
|
|
153
|
-
publicKey: [
|
|
138
|
+
publicKey: [pubKey],
|
|
154
139
|
sender: config?.evmSender ?? '',
|
|
155
140
|
nonce: new Uint8Array(32),
|
|
156
|
-
authorization:
|
|
141
|
+
authorization: evmAuth
|
|
142
|
+
? [
|
|
143
|
+
{
|
|
144
|
+
from: evmAuth.from,
|
|
145
|
+
to: evmAuth.to,
|
|
146
|
+
value: typeof evmAuth.value === 'bigint' ? evmAuth.value : BigInt(evmAuth.value),
|
|
147
|
+
validAfter: typeof evmAuth.validAfter === 'bigint'
|
|
148
|
+
? evmAuth.validAfter
|
|
149
|
+
: BigInt(evmAuth.validAfter),
|
|
150
|
+
validBefore: typeof evmAuth.validBefore === 'bigint'
|
|
151
|
+
? evmAuth.validBefore
|
|
152
|
+
: BigInt(evmAuth.validBefore),
|
|
153
|
+
nonce: evmAuth.nonce,
|
|
154
|
+
v: evmAuth.v,
|
|
155
|
+
r: evmAuth.r,
|
|
156
|
+
s: evmAuth.s,
|
|
157
|
+
},
|
|
158
|
+
]
|
|
159
|
+
: [],
|
|
157
160
|
};
|
|
158
|
-
const result = await actor.openSession(
|
|
161
|
+
const result = await actor.openSession(openConfig, sig);
|
|
159
162
|
if ('err' in result) {
|
|
160
163
|
throw new Error(`Failed to open session: ${result.err}`);
|
|
161
164
|
}
|
|
162
165
|
const state = result.ok;
|
|
163
166
|
let sequence = 0n;
|
|
164
167
|
let consumed = 0n;
|
|
168
|
+
// M-7: bind the verifying canister's principal into every voucher signature.
|
|
169
|
+
// M-7: bind to the canister the session was actually opened on (the resolved
|
|
170
|
+
// `cid`, which honors the per-call canisterId override) — not config.canisterId,
|
|
171
|
+
// or vouchers would bind to the wrong canister and be rejected on the override path.
|
|
172
|
+
const canisterIdText = cid;
|
|
165
173
|
const handle = {
|
|
166
174
|
id: state.id,
|
|
167
175
|
deposited: state.deposited,
|
|
@@ -185,7 +193,7 @@ export class Ic402Client {
|
|
|
185
193
|
// Sign voucher
|
|
186
194
|
let signature = new Uint8Array(64);
|
|
187
195
|
if (signer) {
|
|
188
|
-
signature = new Uint8Array(await signVoucher(signer, state.id, consumed, sequence));
|
|
196
|
+
signature = new Uint8Array(await signVoucher(signer, canisterIdText, state.id, consumed, sequence));
|
|
189
197
|
}
|
|
190
198
|
const voucher = {
|
|
191
199
|
sessionId: state.id,
|
|
@@ -203,12 +211,20 @@ export class Ic402Client {
|
|
|
203
211
|
return callResult;
|
|
204
212
|
},
|
|
205
213
|
async callForContent(method, callArgs) {
|
|
206
|
-
|
|
214
|
+
// costPerCall is a Candid `opt nat` → decodes to [bigint] (Some) or [] (None),
|
|
215
|
+
// ALWAYS an array, so `?? 1n` never fires and `consumed += array` would throw
|
|
216
|
+
// "Cannot mix BigInt and other types". Mirror the guard in call().
|
|
217
|
+
const rawCost = intent.costPerCall;
|
|
218
|
+
const cost = Array.isArray(rawCost) && rawCost.length > 0
|
|
219
|
+
? BigInt(rawCost[0])
|
|
220
|
+
: typeof rawCost === 'bigint'
|
|
221
|
+
? rawCost
|
|
222
|
+
: 1n;
|
|
207
223
|
consumed += cost;
|
|
208
224
|
sequence += 1n;
|
|
209
225
|
let sig = new Uint8Array(64);
|
|
210
226
|
if (signer) {
|
|
211
|
-
sig = new Uint8Array(await signVoucher(signer, state.id, consumed, sequence));
|
|
227
|
+
sig = new Uint8Array(await signVoucher(signer, canisterIdText, state.id, consumed, sequence));
|
|
212
228
|
}
|
|
213
229
|
const v = {
|
|
214
230
|
sessionId: state.id,
|
|
@@ -230,7 +246,7 @@ export class Ic402Client {
|
|
|
230
246
|
if ('ok' in closeResult) {
|
|
231
247
|
return closeResult.ok;
|
|
232
248
|
}
|
|
233
|
-
throw new Error(`Failed to close session: ${
|
|
249
|
+
throw new Error(`Failed to close session: ${safeStringify(closeResult)}`);
|
|
234
250
|
},
|
|
235
251
|
};
|
|
236
252
|
return handle;
|
|
@@ -294,6 +310,269 @@ export class Ic402Client {
|
|
|
294
310
|
}
|
|
295
311
|
throw new Error('Unknown delivery method');
|
|
296
312
|
}
|
|
313
|
+
// ── EVM Remote Signing ──
|
|
314
|
+
/**
|
|
315
|
+
* Fetch from an x402-gated URL. The full flow:
|
|
316
|
+
* 1. Client probes the URL → gets 402 with payment requirements
|
|
317
|
+
* 2. Client calls canister signX402Payment → gets signed EIP-3009 header
|
|
318
|
+
* 3. Client retries the URL with the signed X-Payment header
|
|
319
|
+
*
|
|
320
|
+
* @param url - The x402-gated URL to fetch
|
|
321
|
+
* @param actorFactory - Factory to create canister actor
|
|
322
|
+
*/
|
|
323
|
+
async fetchX402(url, options) {
|
|
324
|
+
const { init, chainId } = options ?? {};
|
|
325
|
+
const cid = chainId ?? this.tryExtractChainId();
|
|
326
|
+
if (!cid) {
|
|
327
|
+
return {
|
|
328
|
+
status: 'error',
|
|
329
|
+
error: new Ic402Error('config_error', 'EVM chain ID required: set config.network to "eip155:<chainId>" or pass chainId to fetchX402'),
|
|
330
|
+
};
|
|
331
|
+
}
|
|
332
|
+
const actor = this.config.actorFactory(this.config.canisterId);
|
|
333
|
+
// 1. Probe
|
|
334
|
+
const probeResult = await probeX402Url(url, cid, init);
|
|
335
|
+
if (probeResult.status === 'free')
|
|
336
|
+
return probeResult;
|
|
337
|
+
if (probeResult.status === 'error')
|
|
338
|
+
return probeResult;
|
|
339
|
+
const { paymentOption } = probeResult;
|
|
340
|
+
// 2. Sign via canister
|
|
341
|
+
let signed;
|
|
342
|
+
try {
|
|
343
|
+
// Extract chain ID from payment option's network (e.g., "eip155:8453" → 8453)
|
|
344
|
+
const optionChainId = parseInt(paymentOption.network.replace('eip155:', ''), 10) || cid;
|
|
345
|
+
const result = await actor.signX402Payment(optionChainId, paymentOption.asset, paymentOption.recipient, paymentOption.amount, paymentOption.tokenName, paymentOption.tokenVersion);
|
|
346
|
+
if ('err' in result) {
|
|
347
|
+
return { status: 'error', error: new Ic402Error('sign_failed', result.err) };
|
|
348
|
+
}
|
|
349
|
+
signed = result.ok;
|
|
350
|
+
}
|
|
351
|
+
catch (e) {
|
|
352
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
353
|
+
return { status: 'error', error: new Ic402Error('sign_failed', msg, e) };
|
|
354
|
+
}
|
|
355
|
+
// 3. Retry with payment header.
|
|
356
|
+
// H-10: echo the ic402 server nonce from the 402 challenge into the payment
|
|
357
|
+
// payload so the canister can lock the bound amount (otherwise the
|
|
358
|
+
// EVM-over-HTTP settlement returns #expired). Mirrors evm.ts fetchX402.
|
|
359
|
+
let headerToSend = signed.header;
|
|
360
|
+
if (paymentOption.ic402Nonce) {
|
|
361
|
+
try {
|
|
362
|
+
const obj = JSON.parse(atob(signed.header));
|
|
363
|
+
obj.ic402Nonce = paymentOption.ic402Nonce;
|
|
364
|
+
headerToSend = btoa(JSON.stringify(obj));
|
|
365
|
+
}
|
|
366
|
+
catch {
|
|
367
|
+
headerToSend = signed.header;
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
let response;
|
|
371
|
+
try {
|
|
372
|
+
const headers = new Headers(init?.headers);
|
|
373
|
+
headers.set('X-Payment', headerToSend);
|
|
374
|
+
headers.set('Payment-Signature', headerToSend);
|
|
375
|
+
response = await fetch(url, { ...init, headers });
|
|
376
|
+
}
|
|
377
|
+
catch (e) {
|
|
378
|
+
return { status: 'error', error: classifyNetworkError(e) };
|
|
379
|
+
}
|
|
380
|
+
const body = await response.text();
|
|
381
|
+
if (response.ok)
|
|
382
|
+
return { status: 'ok', code: response.status, body, paidAmount: signed.paidAmount };
|
|
383
|
+
if (response.status === 402)
|
|
384
|
+
return { status: 'error', error: new Ic402Error('settlement_failed', body.slice(0, 200)) };
|
|
385
|
+
return {
|
|
386
|
+
status: 'error',
|
|
387
|
+
error: new Ic402Error('http_error', `HTTP ${response.status}: ${body.slice(0, 200)}`),
|
|
388
|
+
};
|
|
389
|
+
}
|
|
390
|
+
/**
|
|
391
|
+
* Register the canister as an agent on the ERC-8004 IdentityRegistry.
|
|
392
|
+
* Full flow: get chain state → canister signs → client broadcasts → poll receipt.
|
|
393
|
+
*
|
|
394
|
+
* @param actorFactory - Factory to create canister actor
|
|
395
|
+
* @param rpcUrl - Optional custom RPC URL for the target chain
|
|
396
|
+
*/
|
|
397
|
+
async registerAgent(rpcUrl, chainId) {
|
|
398
|
+
const cid = chainId ?? this.extractChainId();
|
|
399
|
+
const actor = this.config.actorFactory(this.config.canisterId);
|
|
400
|
+
const evmAddress = await actor.getEvmAddress();
|
|
401
|
+
const rpc = rpcUrl ?? this.config.evmRpcUrl;
|
|
402
|
+
const result = await registerAgentFlow(async (nonce, maxFee, priorityFee) => {
|
|
403
|
+
const r = await actor.signAgentRegistration(nonce, maxFee, priorityFee);
|
|
404
|
+
if ('err' in r)
|
|
405
|
+
throw new Ic402Error('sign_failed', r.err);
|
|
406
|
+
return r.ok;
|
|
407
|
+
}, evmAddress, cid, rpc);
|
|
408
|
+
if (result.tokenId != null) {
|
|
409
|
+
try {
|
|
410
|
+
await actor.setAgentId?.(result.tokenId);
|
|
411
|
+
}
|
|
412
|
+
catch {
|
|
413
|
+
/* optional */
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
return { tokenId: result.tokenId, txHash: result.txHash };
|
|
417
|
+
}
|
|
418
|
+
/**
|
|
419
|
+
* Sign and broadcast an ERC-20 transfer.
|
|
420
|
+
* Client fetches chain state, canister signs, client broadcasts.
|
|
421
|
+
*/
|
|
422
|
+
async sendErc20Transfer(tokenAddress, recipient, amount, rpcUrl) {
|
|
423
|
+
const chainId = this.extractChainId();
|
|
424
|
+
const actor = this.config.actorFactory(this.config.canisterId);
|
|
425
|
+
const evmAddress = await actor.getEvmAddress();
|
|
426
|
+
const rpc = rpcUrl ?? this.config.evmRpcUrl;
|
|
427
|
+
const client = createEvmClient(chainId, rpc);
|
|
428
|
+
const [nonce, fees] = await Promise.all([getEvmNonce(client, evmAddress), getFeeData(client)]);
|
|
429
|
+
const result = await actor.signErc20Transfer(chainId, tokenAddress, recipient, amount, nonce, fees.maxFeePerGas, fees.maxPriorityFeePerGas);
|
|
430
|
+
if ('err' in result)
|
|
431
|
+
throw new Ic402Error('sign_failed', result.err);
|
|
432
|
+
const txHash = await broadcastTx(client, result.ok.rawTx);
|
|
433
|
+
return { txHash };
|
|
434
|
+
}
|
|
435
|
+
/**
|
|
436
|
+
* Sign and broadcast a native ETH transfer.
|
|
437
|
+
*/
|
|
438
|
+
async sendEthTransfer(recipient, amountWei, rpcUrl) {
|
|
439
|
+
const chainId = this.extractChainId();
|
|
440
|
+
const actor = this.config.actorFactory(this.config.canisterId);
|
|
441
|
+
const evmAddress = await actor.getEvmAddress();
|
|
442
|
+
const rpc = rpcUrl ?? this.config.evmRpcUrl;
|
|
443
|
+
const client = createEvmClient(chainId, rpc);
|
|
444
|
+
const [nonce, fees] = await Promise.all([getEvmNonce(client, evmAddress), getFeeData(client)]);
|
|
445
|
+
const result = await actor.signEthTransfer(chainId, recipient, amountWei, 21000, nonce, fees.maxFeePerGas, fees.maxPriorityFeePerGas);
|
|
446
|
+
if ('err' in result)
|
|
447
|
+
throw new Ic402Error('sign_failed', result.err);
|
|
448
|
+
const txHash = await broadcastTx(client, result.ok.rawTx);
|
|
449
|
+
return { txHash };
|
|
450
|
+
}
|
|
451
|
+
/** Extract numeric chain ID from CAIP-2 network string, or null if not EVM. */
|
|
452
|
+
tryExtractChainId() {
|
|
453
|
+
const match = this.config.network.match(/^eip155:(\d+)$/);
|
|
454
|
+
return match ? parseInt(match[1], 10) : null;
|
|
455
|
+
}
|
|
456
|
+
/** Extract chain ID or throw. */
|
|
457
|
+
extractChainId() {
|
|
458
|
+
const id = this.tryExtractChainId();
|
|
459
|
+
if (id == null)
|
|
460
|
+
throw new Ic402Error('config_error', `Expected EVM network (eip155:*), got: ${this.config.network}`);
|
|
461
|
+
return id;
|
|
462
|
+
}
|
|
463
|
+
// ── Service Marketplace ──
|
|
464
|
+
/**
|
|
465
|
+
* List available services from the canister.
|
|
466
|
+
*/
|
|
467
|
+
async listServices() {
|
|
468
|
+
const actor = this.config.actorFactory(this.config.canisterId);
|
|
469
|
+
return actor.listServices();
|
|
470
|
+
}
|
|
471
|
+
/**
|
|
472
|
+
* Submit a paid service request. Handles x402 payment automatically.
|
|
473
|
+
* Returns the job ID for polling.
|
|
474
|
+
*/
|
|
475
|
+
async submitServiceRequest(serviceId, params) {
|
|
476
|
+
const actor = this.config.actorFactory(this.config.canisterId);
|
|
477
|
+
const result = await actor.submitServiceRequest(serviceId, Array.from(params), []);
|
|
478
|
+
if (result && typeof result === 'object' && 'paymentRequired' in result) {
|
|
479
|
+
if (!this.config.autoPayment) {
|
|
480
|
+
throw new Ic402Error('config_error', 'Payment required but autoPayment is disabled');
|
|
481
|
+
}
|
|
482
|
+
if (!this.config.ledger || !this.config.ledgerActorFactory) {
|
|
483
|
+
throw new Ic402Error('config_error', 'Auto-approval requires ledger and ledgerActorFactory');
|
|
484
|
+
}
|
|
485
|
+
const requirement = result.paymentRequired;
|
|
486
|
+
const amount = Array.isArray(requirement) && requirement.length > 0 ? requirement[0].amount : 0n;
|
|
487
|
+
// Approve amount + fee buffer (ICRC-2 transfer_from deducts fee from allowance)
|
|
488
|
+
const approveAmount = amount + (this.config.approvalFeeBuffer ?? 100000n);
|
|
489
|
+
const ledgerActor = this.config.ledgerActorFactory(this.config.ledger);
|
|
490
|
+
const approveResult = await ledgerActor.icrc2_approve({
|
|
491
|
+
spender: { owner: Principal.fromText(this.config.canisterId), subaccount: [] },
|
|
492
|
+
amount: approveAmount,
|
|
493
|
+
fee: [],
|
|
494
|
+
memo: [],
|
|
495
|
+
from_subaccount: [],
|
|
496
|
+
created_at_time: [],
|
|
497
|
+
expected_allowance: [],
|
|
498
|
+
expires_at: [],
|
|
499
|
+
});
|
|
500
|
+
if (approveResult && typeof approveResult === 'object' && 'Err' in approveResult) {
|
|
501
|
+
throw new Ic402Error('sign_failed', `ICRC-2 approve failed: ${safeStringify(approveResult.Err)}`);
|
|
502
|
+
}
|
|
503
|
+
// Convert nonce to proper array — Candid may decode vec nat8 as Uint8Array or indexed object
|
|
504
|
+
const rawNonce = requirement[0]?.nonce ?? new Uint8Array(32);
|
|
505
|
+
const nonce = rawNonce instanceof Uint8Array
|
|
506
|
+
? Array.from(rawNonce)
|
|
507
|
+
: Array.isArray(rawNonce)
|
|
508
|
+
? rawNonce
|
|
509
|
+
: Object.values(rawNonce);
|
|
510
|
+
// Sender must be the caller's principal — derive from identity if available
|
|
511
|
+
const sender = this.config.identity?.getPrincipal().toText() ?? '';
|
|
512
|
+
const sig = {
|
|
513
|
+
scheme: 'exact',
|
|
514
|
+
network: this.config.network,
|
|
515
|
+
signature: nonce,
|
|
516
|
+
publicKey: [],
|
|
517
|
+
sender,
|
|
518
|
+
nonce,
|
|
519
|
+
authorization: [],
|
|
520
|
+
};
|
|
521
|
+
const retryResult = await actor.submitServiceRequest(serviceId, Array.from(params), [sig]);
|
|
522
|
+
if (retryResult && typeof retryResult === 'object' && 'ok' in retryResult) {
|
|
523
|
+
return retryResult.ok;
|
|
524
|
+
}
|
|
525
|
+
if (retryResult && typeof retryResult === 'object' && 'error' in retryResult) {
|
|
526
|
+
throw new Ic402Error('sign_failed', retryResult.error);
|
|
527
|
+
}
|
|
528
|
+
throw new Ic402Error('unknown', `Unexpected result: ${safeStringify(retryResult)}`);
|
|
529
|
+
}
|
|
530
|
+
if (result && typeof result === 'object' && 'ok' in result) {
|
|
531
|
+
return result.ok;
|
|
532
|
+
}
|
|
533
|
+
if (result && typeof result === 'object' && 'error' in result) {
|
|
534
|
+
throw new Ic402Error('sign_failed', result.error);
|
|
535
|
+
}
|
|
536
|
+
throw new Ic402Error('unknown', `Unexpected result: ${safeStringify(result)}`);
|
|
537
|
+
}
|
|
538
|
+
/**
|
|
539
|
+
* Poll for a job result until completed or max attempts reached.
|
|
540
|
+
* Returns the full job record when done.
|
|
541
|
+
*/
|
|
542
|
+
async pollJobResult(jobId, maxAttempts = 30, intervalMs = 2000) {
|
|
543
|
+
const actor = this.config.actorFactory(this.config.canisterId);
|
|
544
|
+
for (let i = 0; i < maxAttempts; i++) {
|
|
545
|
+
const job = await actor.getJob(jobId);
|
|
546
|
+
// Candid opt returns [job] or []
|
|
547
|
+
const j = Array.isArray(job) && job.length > 0 ? job[0] : job;
|
|
548
|
+
if (!j)
|
|
549
|
+
throw new Ic402Error('unknown', `Job not found: ${jobId}`);
|
|
550
|
+
const status = j.status;
|
|
551
|
+
if ('Settled' in status || 'Verified' in status || 'Submitted' in status) {
|
|
552
|
+
return j;
|
|
553
|
+
}
|
|
554
|
+
if ('Disputed' in status) {
|
|
555
|
+
throw new Ic402Error('sign_failed', `Job disputed: ${jobId}`);
|
|
556
|
+
}
|
|
557
|
+
if ('Expired' in status || 'Refunded' in status) {
|
|
558
|
+
throw new Ic402Error('not_confirmed', `Job expired or refunded: ${jobId}`);
|
|
559
|
+
}
|
|
560
|
+
if (i < maxAttempts - 1) {
|
|
561
|
+
await new Promise((r) => setTimeout(r, intervalMs));
|
|
562
|
+
}
|
|
563
|
+
}
|
|
564
|
+
throw new Ic402Error('not_confirmed', `Job ${jobId} not completed within ${maxAttempts} attempts`);
|
|
565
|
+
}
|
|
566
|
+
/**
|
|
567
|
+
* Dispute a job result (for BuyerConfirm verification).
|
|
568
|
+
*/
|
|
569
|
+
async disputeJob(jobId, reason) {
|
|
570
|
+
const actor = this.config.actorFactory(this.config.canisterId);
|
|
571
|
+
const result = await actor.disputeJob(jobId, reason);
|
|
572
|
+
if (result && typeof result === 'object' && 'err' in result) {
|
|
573
|
+
throw new Ic402Error('unknown', result.err);
|
|
574
|
+
}
|
|
575
|
+
}
|
|
297
576
|
/**
|
|
298
577
|
* Discover agents via ERC-8004 registries.
|
|
299
578
|
*
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,WAAW,EAAsB,MAAM,cAAc,CAAC;AA2D/D;;;;;GAKG;AACH,MAAM,OAAO,WAAW;IACd,MAAM,CAAoB;IAC1B,UAAU,GAAG,EAAE,CAAC;IAExB,YAAY,MAAyB;QACnC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,IAAI,CACR,UAAkB,EAClB,MAAc,EACd,IAAe;IACf,8DAA8D;IAC9D,YAA0C;QAE1C,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CACb,kFAAkF,CACnF,CAAC;QACJ,CAAC;QAED,MAAM,KAAK,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;QACvC,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QAE5C,sCAAsC;QACtC,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,iBAAiB,IAAI,MAAM,EAAE,CAAC;YACxE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;gBAC7B,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;YAClE,CAAC;YAED,MAAM,WAAW,GAAG,MAAM,CAAC,eAAe,CAAC;YAE3C,sBAAsB;YACtB,IACE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa;gBACjC,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,EACrD,CAAC;gBACD,MAAM,IAAI,KAAK,CACb,UAAU,WAAW,CAAC,MAAM,0BAA0B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,CACzF,CAAC;YACJ,CAAC;YAED,IACE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ;gBAC5B,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAClE,CAAC;gBACD,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;YAC3C,CAAC;YAED,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC;gBAC3D,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;YACpF,CAAC;YAED,yEAAyE;YACzE,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACvE,MAAM,aAAa,GAAG,MAAM,WAAW,CAAC,aAAa,CAAC;gBACpD,OAAO,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,EAAE;gBAC9C,MAAM,EAAE,WAAW,CAAC,MAAM;gBAC1B,GAAG,EAAE,EAAE;gBACP,IAAI,EAAE,EAAE;gBACR,eAAe,EAAE,EAAE;gBACnB,eAAe,EAAE,EAAE;gBACnB,kBAAkB,EAAE,EAAE;gBACtB,UAAU,EAAE,EAAE;aACf,CAAC,CAAC;YAEH,IAAI,aAAa,IAAI,OAAO,aAAa,KAAK,QAAQ,IAAI,KAAK,IAAI,aAAa,EAAE,CAAC;gBACjF,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACjF,CAAC;YAED,IAAI,CAAC,UAAU,IAAI,WAAW,CAAC,MAAM,CAAC;YAEtC,oEAAoE;YACpE,MAAM,GAAG,GAAG;gBACV,MAAM,EAAE,OAAO;gBACf,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;gBAC5B,SAAS,EAAE,WAAW,CAAC,KAAK;gBAC5B,SAAS,EAAE,EAAE;gBACb,MAAM,EAAE,EAAE;gBACV,KAAK,EAAE,WAAW,CAAC,KAAK;gBACxB,aAAa,EAAE,EAAE;aAClB,CAAC;YAEF,uEAAuE;YACvE,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;YAC5B,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACxC,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC;YAEtD,IAAI,WAAW,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,IAAI,IAAI,WAAW,EAAE,CAAC;gBAC1E,OAAO,WAAW,CAAC,EAAE,CAAC;YACxB,CAAC;YACD,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,IAAI,IAAI,MAAM,EAAE,CAAC;YAC3D,OAAO,MAAM,CAAC,EAAE,CAAC;QACnB,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,WAAW,CACf,UAAkB,EAClB,MAAoC;IACpC,8DAA8D;IAC9D,YAA0C,EAC1C,MAAsB;QAEtB,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC3C,CAAC;QAED,MAAM,KAAK,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;QACvC,IAAI,MAAM,GAAkB,MAAM,KAAK,CAAC,cAAc,EAAE,CAAC;QAEzD,wEAAwE;QACxE,IAAI,MAAM,EAAE,UAAU,EAAE,CAAC;YACvB,MAAM,GAAG;gBACP,GAAG,MAAM;gBACT,OAAO,EAAE,MAAM,CAAC,UAAU;gBAC1B,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtD,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACnE,CAAC;QACJ,CAAC;QAED,MAAM,UAAU,GACd,MAAM,EAAE,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,IAAI,MAAM,CAAC,gBAAgB,CAAC;QACpF,MAAM,SAAS,GAAG,MAAM,EAAE,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,SAAS,IAAI,IAAI,CAAC;QAC/E,MAAM,WAAW,GAAG,MAAM,EAAE,WAAW,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC;QAE7E,eAAe;QACf,IACE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,iBAAiB;YACrC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,iBAAiB,EACjD,CAAC;YACD,MAAM,IAAI,KAAK,CACb,WAAW,UAAU,8BAA8B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAC1F,CAAC;QACJ,CAAC;QAED,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC;QAClC,MAAM,OAAO,GAAG,MAAM,EAAE,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QAE1D,oDAAoD;QACpD,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC;YAC9F,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACvE,MAAM,aAAa,GAAG,MAAM,WAAW,CAAC,aAAa,CAAC;gBACpD,OAAO,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,EAAE;gBAC9C,MAAM,EAAE,UAAU;gBAClB,GAAG,EAAE,EAAE;gBACP,IAAI,EAAE,EAAE;gBACR,eAAe,EAAE,EAAE;gBACnB,eAAe,EAAE,EAAE;gBACnB,kBAAkB,EAAE,EAAE;gBACtB,UAAU,EAAE,EAAE;aACf,CAAC,CAAC;YAEH,IAAI,aAAa,IAAI,OAAO,aAAa,KAAK,QAAQ,IAAI,KAAK,IAAI,aAAa,EAAE,CAAC;gBACjF,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACjF,CAAC;QACH,CAAC;QAED,MAAM,aAAa,GAAG;YACpB,UAAU;YACV,SAAS;YACT,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE;SAC9C,CAAC;QAEF,iCAAiC;QACjC,6EAA6E;QAC7E,uDAAuD;QACvD,2EAA2E;QAC3E,IAAI,MAAM,GAAe,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;QAC5C,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,GAAG,IAAI,UAAU,CAAC,MAAM,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;QACvD,CAAC;QAED,MAAM,GAAG,GAAG;YACV,MAAM,EAAE,OAAO;YACf,OAAO;YACP,SAAS,EAAE,KAAK;gBACd,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,MAAO,CAAC,SAAU,CAAC,CAAC;gBAC1D,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC;YACrB,SAAS,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC/B,MAAM,EAAE,MAAM,EAAE,SAAS,IAAI,EAAE;YAC/B,KAAK,EAAE,IAAI,UAAU,CAAC,EAAE,CAAC;YACzB,aAAa,EAAE,EAAE;SAClB,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;QAE3D,IAAI,KAAK,IAAI,MAAM,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,2BAA2B,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;QAC3D,CAAC;QAED,MAAM,KAAK,GAAiB,MAAM,CAAC,EAAE,CAAC;QACtC,IAAI,QAAQ,GAAG,EAAE,CAAC;QAClB,IAAI,QAAQ,GAAG,EAAE,CAAC;QAElB,MAAM,MAAM,GAAkB;YAC5B,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,IAAI,QAAQ;gBACV,OAAO,QAAQ,CAAC;YAClB,CAAC;YACD,IAAI,SAAS;gBACX,OAAO,KAAK,CAAC,SAAS,GAAG,QAAQ,CAAC;YACpC,CAAC;YAED,KAAK,CAAC,IAAI,CAAC,MAAc,EAAE,QAAmB;gBAC5C,uEAAuE;gBACvE,4DAA4D;gBAC5D,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC;gBACnC,MAAM,IAAI,GACR,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;oBAC1C,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBACpB,CAAC,CAAC,OAAO,OAAO,KAAK,QAAQ;wBAC3B,CAAC,CAAC,OAAO;wBACT,CAAC,CAAC,EAAE,CAAC;gBACX,QAAQ,IAAI,IAAI,CAAC;gBACjB,QAAQ,IAAI,EAAE,CAAC;gBAEf,eAAe;gBACf,IAAI,SAAS,GAAe,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;gBAC/C,IAAI,MAAM,EAAE,CAAC;oBACX,SAAS,GAAG,IAAI,UAAU,CAAC,MAAM,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;gBACtF,CAAC;gBAED,MAAM,OAAO,GAAY;oBACvB,SAAS,EAAE,KAAK,CAAC,EAAE;oBACnB,gBAAgB,EAAE,QAAQ;oBAC1B,QAAQ;oBACR,SAAS;iBACV,CAAC;gBAEF,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,GAAG,QAAQ,CAAC,CAAC;gBAC7D,IAAI,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,IAAI,IAAI,UAAU,EAAE,CAAC;oBACvE,OAAO,UAAU,CAAC,EAAE,CAAC;gBACvB,CAAC;gBACD,IAAI,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,OAAO,IAAI,UAAU,EAAE,CAAC;oBAC1E,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;gBACpC,CAAC;gBACD,OAAO,UAAU,CAAC;YACpB,CAAC;YAED,KAAK,CAAC,cAAc,CAAC,MAAc,EAAE,QAAmB;gBACtD,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC;gBACtC,QAAQ,IAAI,IAAI,CAAC;gBACjB,QAAQ,IAAI,EAAE,CAAC;gBAEf,IAAI,GAAG,GAAe,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;gBACzC,IAAI,MAAM,EAAE,CAAC;oBACX,GAAG,GAAG,IAAI,UAAU,CAAC,MAAM,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;gBAChF,CAAC;gBAED,MAAM,CAAC,GAAY;oBACjB,SAAS,EAAE,KAAK,CAAC,EAAE;oBACnB,gBAAgB,EAAE,QAAQ;oBAC1B,QAAQ;oBACR,SAAS,EAAE,GAAG;iBACf,CAAC;gBAEF,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,QAAQ,CAAC,CAAC;gBACvD,IAAI,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,IAAI,IAAI,UAAU,EAAE,CAAC;oBACvE,OAAO,UAAU,CAAC,EAAqB,CAAC;gBAC1C,CAAC;gBACD,IAAI,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,OAAO,IAAI,UAAU,EAAE,CAAC;oBAC1E,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,KAAe,CAAC,CAAC;gBAC9C,CAAC;gBACD,OAAO,UAA6B,CAAC;YACvC,CAAC;YAED,KAAK,CAAC,KAAK;gBACT,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACrD,IAAI,IAAI,IAAI,WAAW,EAAE,CAAC;oBACxB,OAAO,WAAW,CAAC,EAAE,CAAC;gBACxB,CAAC;gBACD,MAAM,IAAI,KAAK,CAAC,4BAA4B,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;YAC7E,CAAC;SACF,CAAC;QAEF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,YAAY,CAChB,QAAyB,EACzB,OAIC;QAED,MAAM,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAAC;QAEjC,IAAI,QAAQ,IAAI,MAAM,EAAE,CAAC;YACvB,OAAO,MAAM,CAAC,MAAM,CAAC;QACvB,CAAC;QAED,IAAI,SAAS,IAAI,MAAM,EAAE,CAAC;YACxB,2CAA2C;YAC3C,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;YAC/B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBACnC,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;YAC9D,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC;YACtC,IAAI,CAAC,QAAQ,CAAC,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;YACrF,OAAO,IAAI,UAAU,CAAC,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;QACtD,CAAC;QAED,IAAI,eAAe,IAAI,MAAM,EAAE,CAAC;YAC9B,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,aAAa,CAAC;YAClD,0EAA0E;YAC1E,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;YAClC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;gBACjC,MAAM,IAAI,KAAK,CAAC,8BAA8B,MAAM,EAAE,CAAC,CAAC;YAC1D,CAAC;YACD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC7E,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;YAC9E,CAAC;YACD,MAAM,GAAG,GAAG,WAAW,MAAM,WAAW,IAAI,EAAE,CAAC;YAC/C,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;YAClC,IAAI,CAAC,QAAQ,CAAC,EAAE;gBACd,MAAM,IAAI,KAAK,CAAC,kBAAkB,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;YAC/E,OAAO,IAAI,UAAU,CAAC,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;QACtD,CAAC;QAED,IAAI,eAAe,IAAI,MAAM,EAAE,CAAC;YAC9B,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC,aAAa,CAAC;YACjE,MAAM,GAAG,GAAG,OAAO,EAAE,UAAU,CAAC;YAChC,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,YAAY,EAAE,CAAC;gBACnC,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;YACrF,CAAC;YACD,MAAM,KAAK,GAAG,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YACxC,MAAM,MAAM,GAAiB,EAAE,CAAC;YAChC,KAAK,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;gBACrC,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;gBAClE,MAAM,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,KAAoB,CAAC,CAAC,CAAC;YACpD,CAAC;YACD,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YACjE,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC;YAC3C,IAAI,MAAM,GAAG,CAAC,CAAC;YACf,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;gBAC1B,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC;YACzB,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,cAAc,CAAC,MAKpB;QACC,OAAO,EAAE,CAAC;IACZ,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|