@bsv/sdk 1.8.6 → 1.8.7

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.
Files changed (43) hide show
  1. package/dist/cjs/package.json +1 -1
  2. package/dist/cjs/src/auth/Peer.js +21 -6
  3. package/dist/cjs/src/auth/Peer.js.map +1 -1
  4. package/dist/cjs/src/auth/clients/AuthFetch.js +229 -13
  5. package/dist/cjs/src/auth/clients/AuthFetch.js.map +1 -1
  6. package/dist/cjs/src/auth/clients/__tests__/AuthFetch.test.js +189 -0
  7. package/dist/cjs/src/auth/clients/__tests__/AuthFetch.test.js.map +1 -0
  8. package/dist/cjs/src/auth/transports/SimplifiedFetchTransport.js +162 -36
  9. package/dist/cjs/src/auth/transports/SimplifiedFetchTransport.js.map +1 -1
  10. package/dist/cjs/src/auth/transports/__tests__/SimplifiedFetchTransport.test.js +134 -0
  11. package/dist/cjs/src/auth/transports/__tests__/SimplifiedFetchTransport.test.js.map +1 -0
  12. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  13. package/dist/esm/src/auth/Peer.js +21 -6
  14. package/dist/esm/src/auth/Peer.js.map +1 -1
  15. package/dist/esm/src/auth/clients/AuthFetch.js +229 -13
  16. package/dist/esm/src/auth/clients/AuthFetch.js.map +1 -1
  17. package/dist/esm/src/auth/clients/__tests__/AuthFetch.test.js +187 -0
  18. package/dist/esm/src/auth/clients/__tests__/AuthFetch.test.js.map +1 -0
  19. package/dist/esm/src/auth/transports/SimplifiedFetchTransport.js +162 -36
  20. package/dist/esm/src/auth/transports/SimplifiedFetchTransport.js.map +1 -1
  21. package/dist/esm/src/auth/transports/__tests__/SimplifiedFetchTransport.test.js +109 -0
  22. package/dist/esm/src/auth/transports/__tests__/SimplifiedFetchTransport.test.js.map +1 -0
  23. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  24. package/dist/types/src/auth/Peer.d.ts +1 -0
  25. package/dist/types/src/auth/Peer.d.ts.map +1 -1
  26. package/dist/types/src/auth/clients/AuthFetch.d.ts +37 -0
  27. package/dist/types/src/auth/clients/AuthFetch.d.ts.map +1 -1
  28. package/dist/types/src/auth/clients/__tests__/AuthFetch.test.d.ts +2 -0
  29. package/dist/types/src/auth/clients/__tests__/AuthFetch.test.d.ts.map +1 -0
  30. package/dist/types/src/auth/transports/SimplifiedFetchTransport.d.ts +6 -0
  31. package/dist/types/src/auth/transports/SimplifiedFetchTransport.d.ts.map +1 -1
  32. package/dist/types/src/auth/transports/__tests__/SimplifiedFetchTransport.test.d.ts +2 -0
  33. package/dist/types/src/auth/transports/__tests__/SimplifiedFetchTransport.test.d.ts.map +1 -0
  34. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  35. package/dist/umd/bundle.js +3 -3
  36. package/dist/umd/bundle.js.map +1 -1
  37. package/package.json +1 -1
  38. package/src/auth/Peer.ts +25 -18
  39. package/src/auth/__tests/Peer.test.ts +238 -1
  40. package/src/auth/clients/AuthFetch.ts +327 -18
  41. package/src/auth/clients/__tests__/AuthFetch.test.ts +262 -0
  42. package/src/auth/transports/SimplifiedFetchTransport.ts +185 -35
  43. package/src/auth/transports/__tests__/SimplifiedFetchTransport.test.ts +126 -0
@@ -376,12 +376,10 @@ export class AuthFetch {
376
376
  * and re-attempt the request with an x-bsv-payment header.
377
377
  */
378
378
  async handlePaymentAndRetry(url, config = {}, originalResponse) {
379
- // Make sure the server is using the correct payment version
380
379
  const paymentVersion = originalResponse.headers.get('x-bsv-payment-version');
381
380
  if (!paymentVersion || paymentVersion !== PAYMENT_VERSION) {
382
381
  throw new Error(`Unsupported x-bsv-payment-version response header. Client version: ${PAYMENT_VERSION}, Server version: ${paymentVersion}`);
383
382
  }
384
- // Get required headers from the 402 response
385
383
  const satoshisRequiredHeader = originalResponse.headers.get('x-bsv-payment-satoshis-required');
386
384
  if (!satoshisRequiredHeader) {
387
385
  throw new Error('Missing x-bsv-payment-satoshis-required response header.');
@@ -398,16 +396,77 @@ export class AuthFetch {
398
396
  if (typeof derivationPrefix !== 'string' || derivationPrefix.length < 1) {
399
397
  throw new Error('Missing x-bsv-payment-derivation-prefix response header.');
400
398
  }
401
- // Create a random suffix for the derivation path
399
+ let paymentContext = config.paymentContext;
400
+ if (paymentContext != null) {
401
+ const requirementsChanged = !this.isPaymentContextCompatible(paymentContext, satoshisRequired, serverIdentityKey, derivationPrefix);
402
+ if (requirementsChanged) {
403
+ this.logPaymentAttempt('warn', 'Server adjusted payment requirements; regenerating transaction', this.composePaymentLogDetails(url, paymentContext));
404
+ paymentContext = await this.createPaymentContext(url, config, satoshisRequired, serverIdentityKey, derivationPrefix);
405
+ }
406
+ }
407
+ else {
408
+ paymentContext = await this.createPaymentContext(url, config, satoshisRequired, serverIdentityKey, derivationPrefix);
409
+ }
410
+ if (paymentContext.attempts >= paymentContext.maxAttempts) {
411
+ throw this.buildPaymentFailureError(url, paymentContext, new Error('Maximum payment attempts exceeded before retrying'));
412
+ }
413
+ const headersWithPayment = {
414
+ ...(config.headers ?? {})
415
+ };
416
+ headersWithPayment['x-bsv-payment'] = JSON.stringify({
417
+ derivationPrefix: paymentContext.derivationPrefix,
418
+ derivationSuffix: paymentContext.derivationSuffix,
419
+ transaction: paymentContext.transactionBase64
420
+ });
421
+ const nextConfig = {
422
+ ...config,
423
+ headers: headersWithPayment,
424
+ paymentContext
425
+ };
426
+ if (typeof nextConfig.retryCounter !== 'number') {
427
+ nextConfig.retryCounter = 3;
428
+ }
429
+ const attemptNumber = paymentContext.attempts + 1;
430
+ const maxAttempts = paymentContext.maxAttempts;
431
+ paymentContext.attempts = attemptNumber;
432
+ const attemptDetails = this.composePaymentLogDetails(url, paymentContext);
433
+ this.logPaymentAttempt('warn', `Attempting paid request (${attemptNumber}/${maxAttempts})`, attemptDetails);
434
+ try {
435
+ const response = await this.fetch(url, nextConfig);
436
+ this.logPaymentAttempt('info', `Paid request attempt ${attemptNumber} succeeded`, attemptDetails);
437
+ return response;
438
+ }
439
+ catch (error) {
440
+ const errorEntry = this.createPaymentErrorEntry(paymentContext.attempts, error);
441
+ paymentContext.errors.push(errorEntry);
442
+ this.logPaymentAttempt('error', `Paid request attempt ${attemptNumber} failed`, {
443
+ ...attemptDetails,
444
+ error: {
445
+ message: errorEntry.message,
446
+ stack: errorEntry.stack
447
+ }
448
+ });
449
+ if (paymentContext.attempts >= paymentContext.maxAttempts) {
450
+ throw this.buildPaymentFailureError(url, paymentContext, error);
451
+ }
452
+ const delayMs = this.getPaymentRetryDelay(paymentContext.attempts);
453
+ await this.wait(delayMs);
454
+ return this.handlePaymentAndRetry(url, nextConfig, originalResponse);
455
+ }
456
+ }
457
+ isPaymentContextCompatible(context, satoshisRequired, serverIdentityKey, derivationPrefix) {
458
+ return (context.satoshisRequired === satoshisRequired &&
459
+ context.serverIdentityKey === serverIdentityKey &&
460
+ context.derivationPrefix === derivationPrefix);
461
+ }
462
+ async createPaymentContext(url, config, satoshisRequired, serverIdentityKey, derivationPrefix) {
402
463
  const derivationSuffix = await createNonce(this.wallet, undefined, this.originator);
403
- // Derive the script hex from the server identity key
404
464
  const { publicKey: derivedPublicKey } = await this.wallet.getPublicKey({
405
465
  protocolID: [2, '3241645161d8'],
406
466
  keyID: `${derivationPrefix} ${derivationSuffix}`,
407
467
  counterparty: serverIdentityKey
408
468
  }, this.originator);
409
469
  const lockingScript = new P2PKH().lock(PublicKey.fromString(derivedPublicKey).toAddress()).toHex();
410
- // Create the payment transaction using createAction
411
470
  const { tx } = await this.wallet.createAction({
412
471
  description: `Payment for request to ${new URL(url).origin}`,
413
472
  outputs: [{
@@ -420,16 +479,173 @@ export class AuthFetch {
420
479
  randomizeOutputs: false
421
480
  }
422
481
  }, this.originator);
423
- // Attach the payment to the request headers
424
- config.headers = config.headers || {};
425
- config.headers['x-bsv-payment'] = JSON.stringify({
482
+ const { publicKey: clientIdentityKey } = await this.wallet.getPublicKey({ identityKey: true }, this.originator);
483
+ return {
484
+ satoshisRequired,
485
+ transactionBase64: Utils.toBase64(tx),
426
486
  derivationPrefix,
427
487
  derivationSuffix,
428
- transaction: Utils.toBase64(tx)
429
- });
430
- config.retryCounter ??= 3;
431
- // Re-attempt request with payment attached
432
- return this.fetch(url, config);
488
+ serverIdentityKey,
489
+ clientIdentityKey,
490
+ attempts: 0,
491
+ maxAttempts: this.getMaxPaymentAttempts(config),
492
+ errors: [],
493
+ requestSummary: this.buildPaymentRequestSummary(url, config)
494
+ };
495
+ }
496
+ getMaxPaymentAttempts(config) {
497
+ const attempts = typeof config.paymentRetryAttempts === 'number' ? config.paymentRetryAttempts : undefined;
498
+ if (typeof attempts === 'number' && attempts > 0) {
499
+ return Math.floor(attempts);
500
+ }
501
+ return 3;
502
+ }
503
+ buildPaymentRequestSummary(url, config) {
504
+ const headers = { ...(config.headers ?? {}) };
505
+ const method = typeof config.method === 'string' ? config.method.toUpperCase() : 'GET';
506
+ const bodySummary = this.describeRequestBodyForLogging(config.body);
507
+ return {
508
+ url,
509
+ method,
510
+ headers,
511
+ bodyType: bodySummary.type,
512
+ bodyByteLength: bodySummary.byteLength
513
+ };
514
+ }
515
+ describeRequestBodyForLogging(body) {
516
+ if (body == null) {
517
+ return { type: 'none', byteLength: 0 };
518
+ }
519
+ if (typeof body === 'string') {
520
+ return { type: 'string', byteLength: Utils.toArray(body, 'utf8').length };
521
+ }
522
+ if (Array.isArray(body)) {
523
+ if (body.every((item) => typeof item === 'number')) {
524
+ return { type: 'number[]', byteLength: body.length };
525
+ }
526
+ return { type: 'array', byteLength: body.length };
527
+ }
528
+ if (typeof ArrayBuffer !== 'undefined' && body instanceof ArrayBuffer) {
529
+ return { type: 'ArrayBuffer', byteLength: body.byteLength };
530
+ }
531
+ if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView(body)) {
532
+ return {
533
+ type: body.constructor != null ? body.constructor.name : 'TypedArray',
534
+ byteLength: body.byteLength
535
+ };
536
+ }
537
+ if (typeof Blob !== 'undefined' && body instanceof Blob) {
538
+ return { type: 'Blob', byteLength: body.size };
539
+ }
540
+ if (typeof FormData !== 'undefined' && body instanceof FormData) {
541
+ return { type: 'FormData', byteLength: 0 };
542
+ }
543
+ if (typeof URLSearchParams !== 'undefined' && body instanceof URLSearchParams) {
544
+ const serialized = body.toString();
545
+ return { type: 'URLSearchParams', byteLength: Utils.toArray(serialized, 'utf8').length };
546
+ }
547
+ if (typeof ReadableStream !== 'undefined' && body instanceof ReadableStream) {
548
+ return { type: 'ReadableStream', byteLength: 0 };
549
+ }
550
+ try {
551
+ const serialized = JSON.stringify(body);
552
+ if (typeof serialized === 'string') {
553
+ return { type: 'object', byteLength: Utils.toArray(serialized, 'utf8').length };
554
+ }
555
+ }
556
+ catch (_) {
557
+ // Ignore JSON serialization issues for logging purposes.
558
+ }
559
+ return { type: typeof body, byteLength: 0 };
560
+ }
561
+ composePaymentLogDetails(url, context) {
562
+ return {
563
+ url,
564
+ request: context.requestSummary,
565
+ payment: {
566
+ satoshis: context.satoshisRequired,
567
+ transactionBase64: context.transactionBase64,
568
+ derivationPrefix: context.derivationPrefix,
569
+ derivationSuffix: context.derivationSuffix,
570
+ serverIdentityKey: context.serverIdentityKey,
571
+ clientIdentityKey: context.clientIdentityKey
572
+ },
573
+ attempts: {
574
+ used: context.attempts,
575
+ max: context.maxAttempts
576
+ },
577
+ errors: context.errors
578
+ };
579
+ }
580
+ logPaymentAttempt(level, message, details) {
581
+ const prefix = '[AuthFetch][Payment]';
582
+ if (level === 'error') {
583
+ console.error(`${prefix} ${message}`, details);
584
+ }
585
+ else if (level === 'warn') {
586
+ console.warn(`${prefix} ${message}`, details);
587
+ }
588
+ else {
589
+ if (typeof console.info === 'function') {
590
+ console.info(`${prefix} ${message}`, details);
591
+ }
592
+ else {
593
+ console.log(`${prefix} ${message}`, details);
594
+ }
595
+ }
596
+ }
597
+ createPaymentErrorEntry(attempt, error) {
598
+ const entry = {
599
+ attempt,
600
+ timestamp: new Date().toISOString(),
601
+ message: '',
602
+ stack: undefined
603
+ };
604
+ if (error instanceof Error) {
605
+ entry.message = error.message;
606
+ entry.stack = error.stack ?? undefined;
607
+ }
608
+ else {
609
+ entry.message = String(error);
610
+ }
611
+ return entry;
612
+ }
613
+ getPaymentRetryDelay(attempt) {
614
+ const baseDelay = 250;
615
+ const multiplier = Math.min(attempt, 5);
616
+ return baseDelay * multiplier;
617
+ }
618
+ async wait(ms) {
619
+ if (ms <= 0) {
620
+ return;
621
+ }
622
+ await new Promise(resolve => setTimeout(resolve, ms));
623
+ }
624
+ buildPaymentFailureError(url, context, lastError) {
625
+ const message = `Paid request to ${url} failed after ${context.attempts}/${context.maxAttempts} attempts. Sent ${context.satoshisRequired} satoshis to ${context.serverIdentityKey}.`;
626
+ const error = new Error(message);
627
+ const failureDetails = {
628
+ request: context.requestSummary,
629
+ payment: {
630
+ satoshis: context.satoshisRequired,
631
+ transactionBase64: context.transactionBase64,
632
+ derivationPrefix: context.derivationPrefix,
633
+ derivationSuffix: context.derivationSuffix,
634
+ serverIdentityKey: context.serverIdentityKey,
635
+ clientIdentityKey: context.clientIdentityKey
636
+ },
637
+ attempts: {
638
+ used: context.attempts,
639
+ max: context.maxAttempts
640
+ },
641
+ errors: context.errors
642
+ };
643
+ error.details = failureDetails;
644
+ if (lastError instanceof Error) {
645
+ ;
646
+ error.cause = lastError;
647
+ }
648
+ return error;
433
649
  }
434
650
  async normalizeBodyToNumberArray(body) {
435
651
  // 0. Null / undefined
@@ -1 +1 @@
1
- {"version":3,"file":"AuthFetch.js","sourceRoot":"","sources":["../../../../../src/auth/clients/AuthFetch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AuthFetch.js","sourceRoot":"","sources":["../../../../../src/auth/clients/AuthFetch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,187 @@
1
+ import { jest } from '@jest/globals';
2
+ import { AuthFetch } from '../AuthFetch.js';
3
+ import { Utils, PrivateKey } from '../../../primitives/index.js';
4
+ jest.mock('../../utils/createNonce.js', () => ({
5
+ createNonce: jest.fn()
6
+ }));
7
+ import { createNonce } from '../../utils/createNonce.js';
8
+ const createNonceMock = createNonce;
9
+ function createWalletStub() {
10
+ const identityKey = new PrivateKey(10).toPublicKey().toString();
11
+ const derivedKey = new PrivateKey(11).toPublicKey().toString();
12
+ return {
13
+ getPublicKey: jest.fn(async (options) => {
14
+ if (options?.identityKey === true) {
15
+ return { publicKey: identityKey };
16
+ }
17
+ return { publicKey: derivedKey };
18
+ }),
19
+ createAction: jest.fn(async () => ({
20
+ tx: Utils.toArray('mock-transaction', 'utf8')
21
+ })),
22
+ createHmac: jest.fn(async () => ({
23
+ hmac: new Array(32).fill(7)
24
+ }))
25
+ };
26
+ }
27
+ function createPaymentRequiredResponse(overrides = {}) {
28
+ const headers = {
29
+ 'x-bsv-payment-version': '1.0',
30
+ 'x-bsv-payment-satoshis-required': '5',
31
+ 'x-bsv-auth-identity-key': 'server-key',
32
+ 'x-bsv-payment-derivation-prefix': 'prefix',
33
+ ...overrides
34
+ };
35
+ return new Response('', { status: 402, headers });
36
+ }
37
+ afterEach(() => {
38
+ jest.restoreAllMocks();
39
+ createNonceMock.mockReset();
40
+ });
41
+ describe('AuthFetch payment handling', () => {
42
+ test('createPaymentContext builds a complete retry context', async () => {
43
+ const wallet = createWalletStub();
44
+ const authFetch = new AuthFetch(wallet);
45
+ createNonceMock.mockResolvedValueOnce('suffix-from-test');
46
+ const config = {
47
+ method: 'POST',
48
+ headers: { 'Content-Type': 'application/json' },
49
+ body: { hello: 'world' }
50
+ };
51
+ const context = await authFetch.createPaymentContext('https://api.example.com/resource', config, 42, 'remote-identity-key', 'test-prefix');
52
+ expect(context.satoshisRequired).toBe(42);
53
+ expect(context.serverIdentityKey).toBe('remote-identity-key');
54
+ expect(context.derivationPrefix).toBe('test-prefix');
55
+ expect(context.derivationSuffix).toBe('suffix-from-test');
56
+ expect(context.transactionBase64).toBe(Utils.toBase64(Utils.toArray('mock-transaction', 'utf8')));
57
+ expect(context.clientIdentityKey).toEqual(expect.any(String));
58
+ expect(context.attempts).toBe(0);
59
+ expect(context.maxAttempts).toBe(3);
60
+ expect(context.errors).toEqual([]);
61
+ expect(context.requestSummary).toMatchObject({
62
+ url: 'https://api.example.com/resource',
63
+ method: 'POST',
64
+ headers: { 'Content-Type': 'application/json' },
65
+ bodyType: 'object'
66
+ });
67
+ expect(context.requestSummary.bodyByteLength).toBe(Utils.toArray(JSON.stringify(config.body), 'utf8').length);
68
+ expect(wallet.createAction).toHaveBeenCalledWith(expect.objectContaining({
69
+ description: expect.stringContaining('https://api.example.com'),
70
+ outputs: [
71
+ expect.objectContaining({
72
+ satoshis: 42,
73
+ customInstructions: expect.stringContaining('remote-identity-key')
74
+ })
75
+ ]
76
+ }), undefined);
77
+ });
78
+ test('handlePaymentAndRetry reuses compatible contexts and adds payment header', async () => {
79
+ const wallet = createWalletStub();
80
+ const authFetch = new AuthFetch(wallet);
81
+ const paymentContext = {
82
+ satoshisRequired: 5,
83
+ transactionBase64: Utils.toBase64([1, 2, 3]),
84
+ derivationPrefix: 'prefix',
85
+ derivationSuffix: 'suffix',
86
+ serverIdentityKey: 'server-key',
87
+ clientIdentityKey: 'client-key',
88
+ attempts: 0,
89
+ maxAttempts: 3,
90
+ errors: [],
91
+ requestSummary: {
92
+ url: 'https://api.example.com/resource',
93
+ method: 'POST',
94
+ headers: { 'X-Test': '1' },
95
+ bodyType: 'none',
96
+ bodyByteLength: 0
97
+ }
98
+ };
99
+ const fetchSpy = jest.spyOn(authFetch, 'fetch').mockResolvedValue({ status: 200 });
100
+ jest.spyOn(authFetch, 'logPaymentAttempt').mockImplementation(() => { });
101
+ const createPaymentContextSpy = jest.spyOn(authFetch, 'createPaymentContext');
102
+ const config = {
103
+ headers: { 'x-custom': 'value' },
104
+ paymentContext
105
+ };
106
+ const response = createPaymentRequiredResponse();
107
+ const result = await authFetch.handlePaymentAndRetry('https://api.example.com/resource', config, response);
108
+ expect(result).toEqual({ status: 200 });
109
+ expect(paymentContext.attempts).toBe(1);
110
+ expect(fetchSpy).toHaveBeenCalledTimes(1);
111
+ const callArgs = fetchSpy.mock.calls[0];
112
+ const nextConfig = callArgs?.[1];
113
+ expect(nextConfig).toBeDefined();
114
+ expect(nextConfig.paymentContext).toBe(paymentContext);
115
+ expect(nextConfig.retryCounter).toBe(3);
116
+ const paymentHeader = JSON.parse(nextConfig.headers['x-bsv-payment']);
117
+ expect(paymentHeader).toEqual({
118
+ derivationPrefix: 'prefix',
119
+ derivationSuffix: 'suffix',
120
+ transaction: Utils.toBase64([1, 2, 3])
121
+ });
122
+ expect(createPaymentContextSpy).not.toHaveBeenCalled();
123
+ });
124
+ test('handlePaymentAndRetry exhausts attempts and throws detailed error', async () => {
125
+ const wallet = createWalletStub();
126
+ const authFetch = new AuthFetch(wallet);
127
+ jest.spyOn(authFetch, 'logPaymentAttempt').mockImplementation(() => { });
128
+ jest.spyOn(authFetch, 'wait').mockResolvedValue(undefined);
129
+ const firstError = new Error('payment attempt 1 failed');
130
+ const secondError = new Error('payment attempt 2 failed');
131
+ jest.spyOn(authFetch, 'fetch')
132
+ .mockRejectedValueOnce(firstError)
133
+ .mockRejectedValueOnce(secondError);
134
+ const paymentContext = {
135
+ satoshisRequired: 5,
136
+ transactionBase64: Utils.toBase64([9, 9, 9]),
137
+ derivationPrefix: 'prefix',
138
+ derivationSuffix: 'suffix',
139
+ serverIdentityKey: 'server-key',
140
+ clientIdentityKey: 'client-key',
141
+ attempts: 0,
142
+ maxAttempts: 2,
143
+ errors: [],
144
+ requestSummary: {
145
+ url: 'https://api.example.com/resource',
146
+ method: 'GET',
147
+ headers: {},
148
+ bodyType: 'none',
149
+ bodyByteLength: 0
150
+ }
151
+ };
152
+ const config = { paymentContext };
153
+ const response = createPaymentRequiredResponse();
154
+ await expect((async () => {
155
+ try {
156
+ await authFetch.handlePaymentAndRetry('https://api.example.com/resource', config, response);
157
+ }
158
+ catch (error) {
159
+ const err = error;
160
+ expect(err.message).toBe('Paid request to https://api.example.com/resource failed after 2/2 attempts. Sent 5 satoshis to server-key.');
161
+ expect(err.details).toMatchObject({
162
+ attempts: { used: 2, max: 2 },
163
+ payment: expect.objectContaining({
164
+ satoshis: 5,
165
+ serverIdentityKey: 'server-key',
166
+ clientIdentityKey: 'client-key'
167
+ })
168
+ });
169
+ expect(err.details.errors).toHaveLength(2);
170
+ expect(err.details.errors[0]).toEqual(expect.objectContaining({
171
+ attempt: 1,
172
+ message: 'payment attempt 1 failed'
173
+ }));
174
+ expect(err.details.errors[1]).toEqual(expect.objectContaining({
175
+ attempt: 2,
176
+ message: 'payment attempt 2 failed'
177
+ }));
178
+ expect(typeof err.details.errors[0].timestamp).toBe('string');
179
+ expect(err.cause).toBe(secondError);
180
+ throw error;
181
+ }
182
+ })()).rejects.toThrow('Paid request to https://api.example.com/resource failed after 2/2 attempts. Sent 5 satoshis to server-key.');
183
+ expect(paymentContext.attempts).toBe(2);
184
+ expect(paymentContext.errors).toHaveLength(2);
185
+ });
186
+ });
187
+ //# sourceMappingURL=AuthFetch.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AuthFetch.test.js","sourceRoot":"","sources":["../../../../../../src/auth/clients/__tests__/AuthFetch.test.ts"],"names":[],"mappings":"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"}