@peac/adapter-x402 0.12.3 → 0.12.5

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/carrier.d.ts CHANGED
@@ -2,9 +2,20 @@
2
2
  * x402 carrier adapter for Evidence Carrier Contract.
3
3
  *
4
4
  * v0.11.1: header-only transport via PEAC-Receipt (compact JWS).
5
+ * v0.12.4: dual-header read for x402 v1/v2 upstream receipt artifacts (DD-193).
6
+ *
5
7
  * Extracts from x402 HTTP 402 (offer) and HTTP 200 (settlement) responses.
6
8
  * All size limits enforce the 8 KB header ceiling (x402_headers).
7
- * Reference mode is not supported; receipt_jws is required.
9
+ * Reference mode is not supported; receipt_jws is required for attach.
10
+ *
11
+ * Receipt artifact extraction priority:
12
+ * 1. PEAC-Receipt (PEAC carrier contract, always preferred)
13
+ * 2. PAYMENT-RESPONSE (x402 v2 upstream response header)
14
+ * 3. X-PAYMENT-RESPONSE (x402 v1 upstream response header)
15
+ *
16
+ * PAYMENT-REQUIRED is NOT handled here; it is payment-requirement/challenge
17
+ * material, not a receipt artifact. A future extractChallengeArtifactFromHeaders()
18
+ * seam may be added for challenge-side extraction if needed.
8
19
  */
9
20
  import type { PeacEvidenceCarrier, CarrierMeta, CarrierValidationResult, CarrierAdapter } from '@peac/kernel';
10
21
  /** x402 carrier size limits */
@@ -19,25 +30,82 @@ export interface X402ResponseLike {
19
30
  headers?: X402HeaderMap;
20
31
  body?: Record<string, unknown>;
21
32
  }
33
+ /** Source of the extracted receipt artifact */
34
+ export type ReceiptArtifactSource = 'peac' | 'x402_v2' | 'x402_v1';
35
+ /** Artifact kind discriminant for receipt extraction */
36
+ export type ReceiptArtifactKind = 'receipt' | 'unknown';
37
+ /** Format hint for the extracted artifact */
38
+ export type ReceiptArtifactFormat = 'jws' | 'json' | 'unknown';
39
+ /** Result of extracting a receipt artifact from headers */
40
+ export interface ReceiptArtifactResult {
41
+ source: ReceiptArtifactSource;
42
+ headerName: string;
43
+ rawArtifact: string;
44
+ parsedForm?: unknown;
45
+ artifactKind: ReceiptArtifactKind;
46
+ /**
47
+ * Format of the extracted artifact.
48
+ * - 'jws': PEAC compact JWS receipt (from PEAC-Receipt header)
49
+ * - 'json': upstream x402 response data (from PAYMENT-RESPONSE / X-PAYMENT-RESPONSE)
50
+ * - 'unknown': could not determine format
51
+ */
52
+ artifactFormat: ReceiptArtifactFormat;
53
+ /**
54
+ * Whether this artifact is a PEAC signed receipt (true) or an upstream
55
+ * observational artifact (false). Downstream callers should not treat
56
+ * upstream x402 response data as PEAC receipts.
57
+ */
58
+ isPeacReceipt: boolean;
59
+ }
22
60
  /** Extraction result */
23
61
  export interface X402ExtractResult {
24
62
  receipts: PeacEvidenceCarrier[];
25
63
  meta: CarrierMeta;
64
+ /**
65
+ * Raw upstream artifact when extracted from x402 v1/v2 headers
66
+ * (not a PEAC JWS receipt). Present only when artifactSource is
67
+ * 'x402_v1' or 'x402_v2'. Consumers use extractReceiptFromHeaders()
68
+ * in raw.ts for typed access to upstream receipt structures.
69
+ *
70
+ * This field exists because upstream x402 response artifacts (JSON with
71
+ * format+signature) must NOT be stored in receipt_jws, which is
72
+ * semantically reserved for PEAC compact JWS receipts.
73
+ */
74
+ upstreamArtifact?: ReceiptArtifactResult;
26
75
  }
27
76
  /** Async extraction result */
28
77
  export interface X402ExtractAsyncResult extends X402ExtractResult {
29
78
  violations: string[];
30
79
  }
80
+ /**
81
+ * Extract receipt artifact from headers with priority fallback (DD-193).
82
+ *
83
+ * Priority:
84
+ * 1. PEAC-Receipt (PEAC carrier contract)
85
+ * 2. PAYMENT-RESPONSE (x402 v2)
86
+ * 3. X-PAYMENT-RESPONSE (x402 v1)
87
+ *
88
+ * Only receipt/response artifacts are handled here.
89
+ * PAYMENT-REQUIRED (challenge material) is NOT included in this path.
90
+ */
91
+ export declare function extractReceiptArtifactFromHeaders(headers: X402HeaderMap): ReceiptArtifactResult | null;
31
92
  /**
32
93
  * Extract carrier from x402 offer response (HTTP 402).
33
94
  *
34
- * Reads PEAC-Receipt header for compact JWS (header-only in v0.11.1).
95
+ * v0.12.4: reads PEAC-Receipt first, then falls back to x402 v2/v1 upstream
96
+ * receipt headers (DD-193 dual-header read compatibility).
97
+ *
98
+ * When the artifact is from an upstream x402 header (v1 or v2), receipt_jws
99
+ * is NOT populated on the carrier. The raw upstream artifact is available
100
+ * via the upstreamArtifact field on the result. Consumers should use
101
+ * extractReceiptFromHeaders() in raw.ts for typed access.
35
102
  */
36
103
  export declare function fromOfferResponse(headers: X402HeaderMap, _body?: Record<string, unknown>): X402ExtractResult | null;
37
104
  /**
38
105
  * Extract carrier from x402 offer response (async).
39
106
  *
40
- * Computes receipt_ref from the JWS.
107
+ * Computes receipt_ref from the raw artifact. For PEAC sources, hashes the
108
+ * JWS. For upstream x402 sources, hashes the raw upstream header value.
41
109
  */
42
110
  export declare function fromOfferResponseAsync(headers: X402HeaderMap, _body?: Record<string, unknown>): Promise<X402ExtractAsyncResult | null>;
43
111
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"carrier.d.ts","sourceRoot":"","sources":["../src/carrier.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,mBAAmB,EACnB,WAAW,EACX,uBAAuB,EACvB,cAAc,EACf,MAAM,cAAc,CAAC;AAYtB,+BAA+B;AAC/B,eAAO,MAAM,mBAAmB;;;CAGtB,CAAC;AAMX,wBAAwB;AACxB,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEnD,4DAA4D;AAC5D,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,wBAAwB;AACxB,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,mBAAmB,EAAE,CAAC;IAChC,IAAI,EAAE,WAAW,CAAC;CACnB;AAED,8BAA8B;AAC9B,MAAM,WAAW,sBAAuB,SAAQ,iBAAiB;IAC/D,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AA0CD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,aAAa,EACtB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,iBAAiB,GAAG,IAAI,CAuB1B;AAED;;;;GAIG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,aAAa,EACtB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC,CAqBxC;AAMD;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,aAAa,EACtB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,iBAAiB,GAAG,IAAI,CAE1B;AAED;;GAEG;AACH,wBAAsB,2BAA2B,CAC/C,OAAO,EAAE,aAAa,EACtB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC,CAExC;AAMD;;;;;GAKG;AACH,qBAAa,kBAAmB,YAAW,cAAc,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAC3F,OAAO,CAAC,KAAK,EAAE,gBAAgB,GAAG;QAAE,QAAQ,EAAE,mBAAmB,EAAE,CAAC;QAAC,IAAI,EAAE,WAAW,CAAA;KAAE,GAAG,IAAI;IAK/F,MAAM,CACJ,MAAM,EAAE,gBAAgB,EACxB,QAAQ,EAAE,mBAAmB,EAAE,EAC/B,IAAI,CAAC,EAAE,WAAW,GACjB,gBAAgB;IA4BnB,mBAAmB,CAAC,OAAO,EAAE,mBAAmB,EAAE,IAAI,EAAE,WAAW,GAAG,uBAAuB;CAG9F"}
1
+ {"version":3,"file":"carrier.d.ts","sourceRoot":"","sources":["../src/carrier.ts"],"names":[],"mappings":"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"}
package/dist/carrier.js CHANGED
@@ -3,12 +3,24 @@
3
3
  * x402 carrier adapter for Evidence Carrier Contract.
4
4
  *
5
5
  * v0.11.1: header-only transport via PEAC-Receipt (compact JWS).
6
+ * v0.12.4: dual-header read for x402 v1/v2 upstream receipt artifacts (DD-193).
7
+ *
6
8
  * Extracts from x402 HTTP 402 (offer) and HTTP 200 (settlement) responses.
7
9
  * All size limits enforce the 8 KB header ceiling (x402_headers).
8
- * Reference mode is not supported; receipt_jws is required.
10
+ * Reference mode is not supported; receipt_jws is required for attach.
11
+ *
12
+ * Receipt artifact extraction priority:
13
+ * 1. PEAC-Receipt (PEAC carrier contract, always preferred)
14
+ * 2. PAYMENT-RESPONSE (x402 v2 upstream response header)
15
+ * 3. X-PAYMENT-RESPONSE (x402 v1 upstream response header)
16
+ *
17
+ * PAYMENT-REQUIRED is NOT handled here; it is payment-requirement/challenge
18
+ * material, not a receipt artifact. A future extractChallengeArtifactFromHeaders()
19
+ * seam may be added for challenge-side extraction if needed.
9
20
  */
10
21
  Object.defineProperty(exports, "__esModule", { value: true });
11
22
  exports.X402CarrierAdapter = exports.X402_CARRIER_LIMITS = void 0;
23
+ exports.extractReceiptArtifactFromHeaders = extractReceiptArtifactFromHeaders;
12
24
  exports.fromOfferResponse = fromOfferResponse;
13
25
  exports.fromOfferResponseAsync = fromOfferResponseAsync;
14
26
  exports.fromSettlementResponse = fromSettlementResponse;
@@ -23,6 +35,15 @@ exports.X402_CARRIER_LIMITS = {
23
35
  embed: schema_1.CARRIER_TRANSPORT_LIMITS.x402_embed,
24
36
  headers: schema_1.CARRIER_TRANSPORT_LIMITS.x402_headers,
25
37
  };
38
+ /**
39
+ * x402 upstream receipt response header names (lowercase for case-insensitive matching).
40
+ *
41
+ * v2 uses PAYMENT-RESPONSE; v1 uses X-PAYMENT-RESPONSE.
42
+ * Both carry the upstream receipt artifact (typically JSON with signed receipt data).
43
+ * Priority: v2 first, then v1 fallback.
44
+ */
45
+ const X402_V2_RECEIPT_HEADER = 'payment-response';
46
+ const X402_V1_RECEIPT_HEADER = 'x-payment-response';
26
47
  // ---------------------------------------------------------------------------
27
48
  // Helpers
28
49
  // ---------------------------------------------------------------------------
@@ -34,77 +55,156 @@ function defaultX402Meta() {
34
55
  };
35
56
  }
36
57
  /**
37
- * Extract JWS from PEAC-Receipt header (case-insensitive per RFC 9110).
58
+ * Case-insensitive header lookup (RFC 9110 field name matching).
38
59
  */
39
- function extractJwsFromHeaders(headers) {
40
- const key = Object.keys(headers).find((k) => k.toLowerCase() === kernel_1.PEAC_RECEIPT_HEADER.toLowerCase());
60
+ function findHeader(headers, target) {
61
+ const targetLower = target.toLowerCase();
62
+ const key = Object.keys(headers).find((k) => k.toLowerCase() === targetLower);
41
63
  if (!key)
42
64
  return null;
43
65
  const value = headers[key];
44
66
  return value && value.length > 0 ? value : null;
45
67
  }
46
68
  /**
47
- * Extract receipt URL from PEAC-Receipt-URL header.
69
+ * Extract receipt artifact from headers with priority fallback (DD-193).
70
+ *
71
+ * Priority:
72
+ * 1. PEAC-Receipt (PEAC carrier contract)
73
+ * 2. PAYMENT-RESPONSE (x402 v2)
74
+ * 3. X-PAYMENT-RESPONSE (x402 v1)
75
+ *
76
+ * Only receipt/response artifacts are handled here.
77
+ * PAYMENT-REQUIRED (challenge material) is NOT included in this path.
48
78
  */
49
- function extractReceiptUrlFromHeaders(headers) {
50
- const key = Object.keys(headers).find((k) => k.toLowerCase() === kernel_1.PEAC_RECEIPT_URL_HEADER.toLowerCase());
51
- if (!key)
52
- return null;
53
- const value = headers[key];
54
- return value && value.length > 0 ? value : null;
79
+ function extractReceiptArtifactFromHeaders(headers) {
80
+ // Priority 1: PEAC-Receipt (always preferred; this IS a PEAC signed receipt)
81
+ const peacValue = findHeader(headers, kernel_1.PEAC_RECEIPT_HEADER);
82
+ if (peacValue) {
83
+ return {
84
+ source: 'peac',
85
+ headerName: kernel_1.PEAC_RECEIPT_HEADER,
86
+ rawArtifact: peacValue,
87
+ artifactKind: 'receipt',
88
+ artifactFormat: 'jws',
89
+ isPeacReceipt: true,
90
+ };
91
+ }
92
+ // Priority 2: PAYMENT-RESPONSE (x402 v2)
93
+ // This is an upstream observational artifact, NOT a PEAC receipt.
94
+ // Contains x402 response data (typically JSON with format+signature).
95
+ const v2Value = findHeader(headers, X402_V2_RECEIPT_HEADER);
96
+ if (v2Value) {
97
+ return {
98
+ source: 'x402_v2',
99
+ headerName: X402_V2_RECEIPT_HEADER,
100
+ rawArtifact: v2Value,
101
+ parsedForm: tryParseJson(v2Value),
102
+ artifactKind: 'receipt',
103
+ artifactFormat: tryParseJson(v2Value) !== undefined ? 'json' : 'unknown',
104
+ isPeacReceipt: false,
105
+ };
106
+ }
107
+ // Priority 3: X-PAYMENT-RESPONSE (x402 v1)
108
+ // Same as v2: upstream observational artifact, not a PEAC receipt.
109
+ const v1Value = findHeader(headers, X402_V1_RECEIPT_HEADER);
110
+ if (v1Value) {
111
+ return {
112
+ source: 'x402_v1',
113
+ headerName: X402_V1_RECEIPT_HEADER,
114
+ rawArtifact: v1Value,
115
+ parsedForm: tryParseJson(v1Value),
116
+ artifactKind: 'receipt',
117
+ artifactFormat: tryParseJson(v1Value) !== undefined ? 'json' : 'unknown',
118
+ isPeacReceipt: false,
119
+ };
120
+ }
121
+ return null;
122
+ }
123
+ /**
124
+ * Best-effort JSON parse; returns undefined on failure.
125
+ */
126
+ function tryParseJson(value) {
127
+ try {
128
+ return JSON.parse(value);
129
+ }
130
+ catch {
131
+ return undefined;
132
+ }
55
133
  }
56
134
  // ---------------------------------------------------------------------------
57
135
  // Extract from Offer Response (HTTP 402)
58
136
  // ---------------------------------------------------------------------------
59
137
  /**
60
- * Extract carrier from x402 offer response (HTTP 402).
138
+ * Build a PeacEvidenceCarrier from an extracted artifact.
61
139
  *
62
- * Reads PEAC-Receipt header for compact JWS (header-only in v0.11.1).
140
+ * receipt_jws is ONLY populated when the source is 'peac' (actual JWS).
141
+ * For x402 upstream artifacts (JSON with format+signature), receipt_jws
142
+ * is left undefined; the raw upstream artifact is returned separately
143
+ * via upstreamArtifact on the extraction result. This preserves the
144
+ * semantic contract that receipt_jws holds a PEAC compact JWS receipt.
63
145
  */
64
- function fromOfferResponse(headers, _body) {
65
- const jws = extractJwsFromHeaders(headers);
66
- if (!jws)
67
- return null;
68
- const carrier = {
69
- receipt_ref: 'sha256:0000000000000000000000000000000000000000000000000000000000000000',
70
- receipt_jws: jws,
71
- };
72
- // Extract receipt_url locator hint
73
- const receiptUrl = extractReceiptUrlFromHeaders(headers);
146
+ function buildCarrierFromArtifact(artifact, receiptRef, headers) {
147
+ const carrier = { receipt_ref: receiptRef };
148
+ if (artifact.source === 'peac') {
149
+ // PEAC-Receipt IS a compact JWS; safe to store in receipt_jws
150
+ carrier.receipt_jws = artifact.rawArtifact;
151
+ }
152
+ // For x402 upstream: receipt_jws intentionally left undefined.
153
+ // Upstream artifact is carried via upstreamArtifact on the result.
154
+ // receipt_url locator hint (PEAC-specific; not present in x402 upstream)
155
+ const receiptUrl = findHeader(headers, kernel_1.PEAC_RECEIPT_URL_HEADER);
74
156
  if (receiptUrl) {
75
157
  carrier.receipt_url = receiptUrl;
76
158
  }
159
+ return { carrier, isUpstream: artifact.source !== 'peac' };
160
+ }
161
+ /**
162
+ * Extract carrier from x402 offer response (HTTP 402).
163
+ *
164
+ * v0.12.4: reads PEAC-Receipt first, then falls back to x402 v2/v1 upstream
165
+ * receipt headers (DD-193 dual-header read compatibility).
166
+ *
167
+ * When the artifact is from an upstream x402 header (v1 or v2), receipt_jws
168
+ * is NOT populated on the carrier. The raw upstream artifact is available
169
+ * via the upstreamArtifact field on the result. Consumers should use
170
+ * extractReceiptFromHeaders() in raw.ts for typed access.
171
+ */
172
+ function fromOfferResponse(headers, _body) {
173
+ const artifact = extractReceiptArtifactFromHeaders(headers);
174
+ if (!artifact)
175
+ return null;
176
+ const placeholderRef = 'sha256:0000000000000000000000000000000000000000000000000000000000000000';
177
+ const { carrier, isUpstream } = buildCarrierFromArtifact(artifact, placeholderRef, headers);
77
178
  return {
78
179
  receipts: [carrier],
79
180
  meta: {
80
181
  ...defaultX402Meta(),
182
+ artifactSource: artifact.source,
81
183
  redaction: ['receipt_ref_pending_async'],
82
184
  },
185
+ upstreamArtifact: isUpstream ? artifact : undefined,
83
186
  };
84
187
  }
85
188
  /**
86
189
  * Extract carrier from x402 offer response (async).
87
190
  *
88
- * Computes receipt_ref from the JWS.
191
+ * Computes receipt_ref from the raw artifact. For PEAC sources, hashes the
192
+ * JWS. For upstream x402 sources, hashes the raw upstream header value.
89
193
  */
90
194
  async function fromOfferResponseAsync(headers, _body) {
91
- const jws = extractJwsFromHeaders(headers);
92
- if (!jws)
195
+ const artifact = extractReceiptArtifactFromHeaders(headers);
196
+ if (!artifact)
93
197
  return null;
94
- const ref = await (0, schema_1.computeReceiptRef)(jws);
95
- const carrier = {
96
- receipt_ref: ref,
97
- receipt_jws: jws,
98
- };
99
- // Extract receipt_url locator hint
100
- const receiptUrl = extractReceiptUrlFromHeaders(headers);
101
- if (receiptUrl) {
102
- carrier.receipt_url = receiptUrl;
103
- }
198
+ const ref = await (0, schema_1.computeReceiptRef)(artifact.rawArtifact);
199
+ const { carrier, isUpstream } = buildCarrierFromArtifact(artifact, ref, headers);
104
200
  return {
105
201
  receipts: [carrier],
106
- meta: defaultX402Meta(),
202
+ meta: {
203
+ ...defaultX402Meta(),
204
+ artifactSource: artifact.source,
205
+ },
107
206
  violations: [],
207
+ upstreamArtifact: isUpstream ? artifact : undefined,
108
208
  };
109
209
  }
110
210
  // ---------------------------------------------------------------------------
@@ -1 +1 @@
1
- {"version":3,"file":"carrier.js","sourceRoot":"","sources":["../src/carrier.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"carrier.js","sourceRoot":"","sources":["../src/carrier.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -23,8 +23,8 @@ export { X402Error } from './errors.js';
23
23
  export type { X402ErrorCode } from './errors.js';
24
24
  export { verifyOffer, verifyReceipt, verifyOfferWire, verifyReceiptWire, verifyOfferReceiptConsistency, matchAcceptTerms, selectAccept, } from './verify.js';
25
25
  export { toPeacRecord, toPeacCarrier } from './map.js';
26
- export type { X402HeaderMap, X402ResponseLike, X402ExtractResult, X402ExtractAsyncResult, } from './carrier.js';
27
- export { X402_CARRIER_LIMITS, fromOfferResponse, fromOfferResponseAsync, fromSettlementResponse, fromSettlementResponseAsync, X402CarrierAdapter, } from './carrier.js';
26
+ export type { X402HeaderMap, X402ResponseLike, X402ExtractResult, X402ExtractAsyncResult, ReceiptArtifactSource, ReceiptArtifactKind, ReceiptArtifactFormat, ReceiptArtifactResult, } from './carrier.js';
27
+ export { X402_CARRIER_LIMITS, extractReceiptArtifactFromHeaders, fromOfferResponse, fromOfferResponseAsync, fromSettlementResponse, fromSettlementResponseAsync, X402CarrierAdapter, } from './carrier.js';
28
28
  export type { ChallengeType } from './challenge.js';
29
29
  export { mapX402ToChallengeType } from './challenge.js';
30
30
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,YAAY,EACV,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,cAAc,EACd,mBAAmB,EACnB,sBAAsB,EACtB,gBAAgB,EAChB,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,UAAU,CAAC;AAElB,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,oBAAoB,EACpB,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,yBAAyB,GAC1B,MAAM,UAAU,CAAC;AAGlB,YAAY,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAEvF,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAGhF,YAAY,EACV,eAAe,EACf,YAAY,EACZ,WAAW,EACX,cAAc,EACd,aAAa,EACb,WAAW,EACX,yBAAyB,EACzB,sBAAsB,EACtB,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,uBAAuB,EACvB,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,iBAAiB,EACjB,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,0BAA0B,EAC1B,kBAAkB,EAClB,uBAAuB,EACvB,iBAAiB,EACjB,wBAAwB,GACzB,MAAM,YAAY,CAAC;AAGpB,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAGrF,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjD,OAAO,EACL,WAAW,EACX,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,6BAA6B,EAC7B,gBAAgB,EAChB,YAAY,GACb,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAGvD,YAAY,EACV,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,sBAAsB,EACtB,sBAAsB,EACtB,2BAA2B,EAC3B,kBAAkB,GACnB,MAAM,cAAc,CAAC;AAGtB,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,YAAY,EACV,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,cAAc,EACd,mBAAmB,EACnB,sBAAsB,EACtB,gBAAgB,EAChB,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,UAAU,CAAC;AAElB,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,oBAAoB,EACpB,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,yBAAyB,GAC1B,MAAM,UAAU,CAAC;AAGlB,YAAY,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAEvF,OAAO,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAGhF,YAAY,EACV,eAAe,EACf,YAAY,EACZ,WAAW,EACX,cAAc,EACd,aAAa,EACb,WAAW,EACX,yBAAyB,EACzB,sBAAsB,EACtB,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,uBAAuB,EACvB,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,iBAAiB,EACjB,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,0BAA0B,EAC1B,kBAAkB,EAClB,uBAAuB,EACvB,iBAAiB,EACjB,wBAAwB,GACzB,MAAM,YAAY,CAAC;AAGpB,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAGrF,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjD,OAAO,EACL,WAAW,EACX,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,6BAA6B,EAC7B,gBAAgB,EAChB,YAAY,GACb,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAGvD,YAAY,EACV,aAAa,EACb,gBAAgB,EAChB,iBAAiB,EACjB,sBAAsB,EACtB,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,mBAAmB,EACnB,iCAAiC,EACjC,iBAAiB,EACjB,sBAAsB,EACtB,sBAAsB,EACtB,2BAA2B,EAC3B,kBAAkB,GACnB,MAAM,cAAc,CAAC;AAGtB,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC"}
package/dist/index.js CHANGED
@@ -14,7 +14,7 @@
14
14
  * @packageDocumentation
15
15
  */
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.mapX402ToChallengeType = exports.X402CarrierAdapter = exports.fromSettlementResponseAsync = exports.fromSettlementResponse = exports.fromOfferResponseAsync = exports.fromOfferResponse = exports.X402_CARRIER_LIMITS = exports.toPeacCarrier = exports.toPeacRecord = exports.selectAccept = exports.matchAcceptTerms = exports.verifyOfferReceiptConsistency = exports.verifyReceiptWire = exports.verifyOfferWire = exports.verifyReceipt = exports.verifyOffer = exports.X402Error = exports.defaultAddressComparator = exports.MAX_AMOUNT_LENGTH = exports.MAX_TOTAL_ACCEPTS_BYTES = exports.MAX_ACCEPT_ENTRIES = exports.X402_OFFER_RECEIPT_PROFILE = exports.normalizeReceiptPayload = exports.normalizeOfferPayload = exports.extractReceiptFromHeaders = exports.extractExtensionInfo = exports.extractReceiptPayload = exports.extractOfferPayload = exports.parseCompactJWS = exports.X402_RECEIPT_HEADERS = exports.MAX_COMPACT_JWS_BYTES = exports.OFFER_RECEIPT = void 0;
17
+ exports.mapX402ToChallengeType = exports.X402CarrierAdapter = exports.fromSettlementResponseAsync = exports.fromSettlementResponse = exports.fromOfferResponseAsync = exports.fromOfferResponse = exports.extractReceiptArtifactFromHeaders = exports.X402_CARRIER_LIMITS = exports.toPeacCarrier = exports.toPeacRecord = exports.selectAccept = exports.matchAcceptTerms = exports.verifyOfferReceiptConsistency = exports.verifyReceiptWire = exports.verifyOfferWire = exports.verifyReceipt = exports.verifyOffer = exports.X402Error = exports.defaultAddressComparator = exports.MAX_AMOUNT_LENGTH = exports.MAX_TOTAL_ACCEPTS_BYTES = exports.MAX_ACCEPT_ENTRIES = exports.X402_OFFER_RECEIPT_PROFILE = exports.normalizeReceiptPayload = exports.normalizeOfferPayload = exports.extractReceiptFromHeaders = exports.extractExtensionInfo = exports.extractReceiptPayload = exports.extractOfferPayload = exports.parseCompactJWS = exports.X402_RECEIPT_HEADERS = exports.MAX_COMPACT_JWS_BYTES = exports.OFFER_RECEIPT = void 0;
18
18
  var raw_js_1 = require("./raw.js");
19
19
  Object.defineProperty(exports, "OFFER_RECEIPT", { enumerable: true, get: function () { return raw_js_1.OFFER_RECEIPT; } });
20
20
  Object.defineProperty(exports, "MAX_COMPACT_JWS_BYTES", { enumerable: true, get: function () { return raw_js_1.MAX_COMPACT_JWS_BYTES; } });
@@ -52,6 +52,7 @@ Object.defineProperty(exports, "toPeacRecord", { enumerable: true, get: function
52
52
  Object.defineProperty(exports, "toPeacCarrier", { enumerable: true, get: function () { return map_js_1.toPeacCarrier; } });
53
53
  var carrier_js_1 = require("./carrier.js");
54
54
  Object.defineProperty(exports, "X402_CARRIER_LIMITS", { enumerable: true, get: function () { return carrier_js_1.X402_CARRIER_LIMITS; } });
55
+ Object.defineProperty(exports, "extractReceiptArtifactFromHeaders", { enumerable: true, get: function () { return carrier_js_1.extractReceiptArtifactFromHeaders; } });
55
56
  Object.defineProperty(exports, "fromOfferResponse", { enumerable: true, get: function () { return carrier_js_1.fromOfferResponse; } });
56
57
  Object.defineProperty(exports, "fromOfferResponseAsync", { enumerable: true, get: function () { return carrier_js_1.fromOfferResponseAsync; } });
57
58
  Object.defineProperty(exports, "fromSettlementResponse", { enumerable: true, get: function () { return carrier_js_1.fromSettlementResponse; } });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;GAaG;;;AAgBH,mCASkB;AARhB,uGAAA,aAAa,OAAA;AACb,+GAAA,qBAAqB,OAAA;AACrB,8GAAA,oBAAoB,OAAA;AACpB,yGAAA,eAAe,OAAA;AACf,6GAAA,mBAAmB,OAAA;AACnB,+GAAA,qBAAqB,OAAA;AACrB,8GAAA,oBAAoB,OAAA;AACpB,mHAAA,yBAAyB,OAAA;AAM3B,+CAAgF;AAAvE,qHAAA,qBAAqB,OAAA;AAAE,uHAAA,uBAAuB,OAAA;AA+BvD,qCAAqC;AACrC,uCAMoB;AALlB,sHAAA,0BAA0B,OAAA;AAC1B,8GAAA,kBAAkB,OAAA;AAClB,mHAAA,uBAAuB,OAAA;AACvB,6GAAA,iBAAiB,OAAA;AACjB,oHAAA,wBAAwB,OAAA;AAM1B,SAAS;AACT,yCAAwC;AAA/B,sGAAA,SAAS,OAAA;AAGlB,eAAe;AACf,yCAQqB;AAPnB,wGAAA,WAAW,OAAA;AACX,0GAAA,aAAa,OAAA;AACb,4GAAA,eAAe,OAAA;AACf,8GAAA,iBAAiB,OAAA;AACjB,0HAAA,6BAA6B,OAAA;AAC7B,6GAAA,gBAAgB,OAAA;AAChB,yGAAA,YAAY,OAAA;AAGd,UAAU;AACV,mCAAuD;AAA9C,sGAAA,YAAY,OAAA;AAAE,uGAAA,aAAa,OAAA;AAUpC,2CAOsB;AANpB,iHAAA,mBAAmB,OAAA;AACnB,+GAAA,iBAAiB,OAAA;AACjB,oHAAA,sBAAsB,OAAA;AACtB,oHAAA,sBAAsB,OAAA;AACtB,yHAAA,2BAA2B,OAAA;AAC3B,gHAAA,kBAAkB,OAAA;AAKpB,+CAAwD;AAA/C,sHAAA,sBAAsB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;GAaG;;;AAgBH,mCASkB;AARhB,uGAAA,aAAa,OAAA;AACb,+GAAA,qBAAqB,OAAA;AACrB,8GAAA,oBAAoB,OAAA;AACpB,yGAAA,eAAe,OAAA;AACf,6GAAA,mBAAmB,OAAA;AACnB,+GAAA,qBAAqB,OAAA;AACrB,8GAAA,oBAAoB,OAAA;AACpB,mHAAA,yBAAyB,OAAA;AAM3B,+CAAgF;AAAvE,qHAAA,qBAAqB,OAAA;AAAE,uHAAA,uBAAuB,OAAA;AA+BvD,qCAAqC;AACrC,uCAMoB;AALlB,sHAAA,0BAA0B,OAAA;AAC1B,8GAAA,kBAAkB,OAAA;AAClB,mHAAA,uBAAuB,OAAA;AACvB,6GAAA,iBAAiB,OAAA;AACjB,oHAAA,wBAAwB,OAAA;AAM1B,SAAS;AACT,yCAAwC;AAA/B,sGAAA,SAAS,OAAA;AAGlB,eAAe;AACf,yCAQqB;AAPnB,wGAAA,WAAW,OAAA;AACX,0GAAA,aAAa,OAAA;AACb,4GAAA,eAAe,OAAA;AACf,8GAAA,iBAAiB,OAAA;AACjB,0HAAA,6BAA6B,OAAA;AAC7B,6GAAA,gBAAgB,OAAA;AAChB,yGAAA,YAAY,OAAA;AAGd,UAAU;AACV,mCAAuD;AAA9C,sGAAA,YAAY,OAAA;AAAE,uGAAA,aAAa,OAAA;AAcpC,2CAQsB;AAPpB,iHAAA,mBAAmB,OAAA;AACnB,+HAAA,iCAAiC,OAAA;AACjC,+GAAA,iBAAiB,OAAA;AACjB,oHAAA,sBAAsB,OAAA;AACtB,oHAAA,sBAAsB,OAAA;AACtB,yHAAA,2BAA2B,OAAA;AAC3B,gHAAA,kBAAkB,OAAA;AAKpB,+CAAwD;AAA/C,sHAAA,sBAAsB,OAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@peac/adapter-x402",
3
- "version": "0.12.3",
3
+ "version": "0.12.5",
4
4
  "description": "x402 offer/receipt verification, term-matching, and PEAC record mapping",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -19,10 +19,10 @@
19
19
  "access": "public"
20
20
  },
21
21
  "dependencies": {
22
- "@peac/adapter-core": "0.12.3",
23
- "@peac/kernel": "0.12.3",
24
- "@peac/crypto": "0.12.3",
25
- "@peac/schema": "0.12.3"
22
+ "@peac/adapter-core": "0.12.5",
23
+ "@peac/crypto": "0.12.5",
24
+ "@peac/kernel": "0.12.5",
25
+ "@peac/schema": "0.12.5"
26
26
  },
27
27
  "devDependencies": {
28
28
  "@types/node": "^22.19.11",