@peac/protocol 0.10.6 → 0.10.8

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ssrf-safe-fetch.js","sourceRoot":"","sources":["../src/ssrf-safe-fetch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,115 @@
1
+ /**
2
+ * PEAC Transport Profile Parsers
3
+ *
4
+ * Implements parsing for transport profiles per TRANSPORT-PROFILES.md:
5
+ * - Header profile (PEAC-Receipt header)
6
+ * - Pointer profile (PEAC-Receipt-Pointer header)
7
+ * - Body profile (peac_receipt/peac_receipts in JSON body)
8
+ *
9
+ * @packageDocumentation
10
+ */
11
+ /**
12
+ * Transport profile type
13
+ */
14
+ export type TransportProfile = 'header' | 'pointer' | 'body';
15
+ /**
16
+ * Result of parsing a header transport profile
17
+ */
18
+ export interface HeaderProfileResult {
19
+ profile: 'header';
20
+ receipt: string;
21
+ }
22
+ /**
23
+ * Result of parsing a pointer transport profile
24
+ */
25
+ export interface PointerProfileResult {
26
+ profile: 'pointer';
27
+ digestAlg: 'sha256';
28
+ digestValue: string;
29
+ url: string;
30
+ /**
31
+ * Extension parameters (keys starting with ext_).
32
+ * Stored separately from normative fields for forward-compatibility.
33
+ * Consumers SHOULD NOT rely on extension keys for core verification logic.
34
+ */
35
+ extensions?: Record<string, string>;
36
+ }
37
+ /**
38
+ * Result of parsing a body transport profile
39
+ */
40
+ export interface BodyProfileResult {
41
+ profile: 'body';
42
+ receipts: string[];
43
+ }
44
+ /**
45
+ * Parsed transport profile (discriminated union)
46
+ */
47
+ export type ParsedTransportProfile = HeaderProfileResult | PointerProfileResult | BodyProfileResult;
48
+ /**
49
+ * Transport profile parse error
50
+ */
51
+ export interface TransportProfileError {
52
+ ok: false;
53
+ reason: 'invalid_transport' | 'malformed_receipt' | 'pointer_fetch_blocked';
54
+ errorCode: string;
55
+ message: string;
56
+ }
57
+ /**
58
+ * Transport profile parse success
59
+ */
60
+ export interface TransportProfileSuccess<T extends ParsedTransportProfile = ParsedTransportProfile> {
61
+ ok: true;
62
+ result: T;
63
+ }
64
+ /**
65
+ * Transport profile parse result
66
+ */
67
+ export type TransportProfileParseResult<T extends ParsedTransportProfile = ParsedTransportProfile> = TransportProfileSuccess<T> | TransportProfileError;
68
+ /**
69
+ * Parse PEAC-Receipt header
70
+ *
71
+ * Per TRANSPORT-PROFILES.md:
72
+ * - Multiple headers MUST be rejected
73
+ * - Comma-separated values MUST be rejected
74
+ * - Value MUST be JWS compact serialization (three dot-separated segments)
75
+ *
76
+ * @param headerValue - PEAC-Receipt header value (string or array if multiple)
77
+ * @returns Parse result
78
+ */
79
+ export declare function parseHeaderProfile(headerValue: string | string[] | undefined): TransportProfileParseResult<HeaderProfileResult>;
80
+ /**
81
+ * Parse PEAC-Receipt-Pointer header
82
+ *
83
+ * Per TRANSPORT-PROFILES.md:
84
+ * - Format: RFC 8941 dictionary with sha256 and url parameters
85
+ * - Multiple headers MUST be rejected
86
+ * - URL MUST be HTTPS
87
+ *
88
+ * Example: sha256="7d8f...", url="https://receipts.example.com/abc123"
89
+ *
90
+ * @param headerValue - PEAC-Receipt-Pointer header value (string or array if multiple)
91
+ * @returns Parse result
92
+ */
93
+ export declare function parsePointerProfile(headerValue: string | string[] | undefined): TransportProfileParseResult<PointerProfileResult>;
94
+ /**
95
+ * Parse body profile (JSON body with peac_receipt or peac_receipts)
96
+ *
97
+ * Per TRANSPORT-PROFILES.md:
98
+ * - peac_receipt: single receipt (string)
99
+ * - peac_receipts: multiple receipts (array of strings)
100
+ *
101
+ * @param body - Parsed JSON body object
102
+ * @returns Parse result
103
+ */
104
+ export declare function parseBodyProfile(body: unknown): TransportProfileParseResult<BodyProfileResult>;
105
+ /**
106
+ * Auto-detect and parse transport profile from request context
107
+ *
108
+ * @param context - Request context with headers and optional body
109
+ * @returns Parse result
110
+ */
111
+ export declare function parseTransportProfile(context: {
112
+ headers: Record<string, string | string[] | undefined>;
113
+ body?: unknown;
114
+ }): TransportProfileParseResult;
115
+ //# sourceMappingURL=transport-profiles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport-profiles.d.ts","sourceRoot":"","sources":["../src/transport-profiles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;AAE7D;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,QAAQ,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,SAAS,CAAC;IACnB,SAAS,EAAE,QAAQ,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG,mBAAmB,GAAG,oBAAoB,GAAG,iBAAiB,CAAC;AAEpG;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,KAAK,CAAC;IACV,MAAM,EAAE,mBAAmB,GAAG,mBAAmB,GAAG,uBAAuB,CAAC;IAC5E,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB,CACtC,CAAC,SAAS,sBAAsB,GAAG,sBAAsB;IAEzD,EAAE,EAAE,IAAI,CAAC;IACT,MAAM,EAAE,CAAC,CAAC;CACX;AAED;;GAEG;AACH,MAAM,MAAM,2BAA2B,CAAC,CAAC,SAAS,sBAAsB,GAAG,sBAAsB,IAC/F,uBAAuB,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC;AAMrD;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,GACzC,2BAA2B,CAAC,mBAAmB,CAAC,CA4ElD;AAMD;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,GACzC,2BAA2B,CAAC,oBAAoB,CAAC,CAuHnD;AA6FD;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,2BAA2B,CAAC,iBAAiB,CAAC,CA0F9F;AAMD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE;IAC7C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;IACvD,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,GAAG,2BAA2B,CA2B9B"}
@@ -0,0 +1,424 @@
1
+ "use strict";
2
+ /**
3
+ * PEAC Transport Profile Parsers
4
+ *
5
+ * Implements parsing for transport profiles per TRANSPORT-PROFILES.md:
6
+ * - Header profile (PEAC-Receipt header)
7
+ * - Pointer profile (PEAC-Receipt-Pointer header)
8
+ * - Body profile (peac_receipt/peac_receipts in JSON body)
9
+ *
10
+ * @packageDocumentation
11
+ */
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.parseHeaderProfile = parseHeaderProfile;
14
+ exports.parsePointerProfile = parsePointerProfile;
15
+ exports.parseBodyProfile = parseBodyProfile;
16
+ exports.parseTransportProfile = parseTransportProfile;
17
+ // ---------------------------------------------------------------------------
18
+ // Header Profile Parser
19
+ // ---------------------------------------------------------------------------
20
+ /**
21
+ * Parse PEAC-Receipt header
22
+ *
23
+ * Per TRANSPORT-PROFILES.md:
24
+ * - Multiple headers MUST be rejected
25
+ * - Comma-separated values MUST be rejected
26
+ * - Value MUST be JWS compact serialization (three dot-separated segments)
27
+ *
28
+ * @param headerValue - PEAC-Receipt header value (string or array if multiple)
29
+ * @returns Parse result
30
+ */
31
+ function parseHeaderProfile(headerValue) {
32
+ // Check for missing header
33
+ if (headerValue === undefined || headerValue === '') {
34
+ return {
35
+ ok: false,
36
+ reason: 'invalid_transport',
37
+ errorCode: 'E_VERIFY_INVALID_TRANSPORT',
38
+ message: 'PEAC-Receipt header is missing',
39
+ };
40
+ }
41
+ // Check for multiple headers (array)
42
+ if (Array.isArray(headerValue)) {
43
+ return {
44
+ ok: false,
45
+ reason: 'invalid_transport',
46
+ errorCode: 'E_VERIFY_INVALID_TRANSPORT',
47
+ message: 'Multiple PEAC-Receipt headers are not allowed',
48
+ };
49
+ }
50
+ // Check for comma-separated values (HTTP header list syntax)
51
+ if (headerValue.includes(',')) {
52
+ // Could be comma in base64url, but JWS compact has exactly 2 periods
53
+ // If there are commas between periods, it's likely multiple values
54
+ const parts = headerValue.split('.');
55
+ if (parts.length !== 3 || parts.some((p) => p.includes(','))) {
56
+ return {
57
+ ok: false,
58
+ reason: 'invalid_transport',
59
+ errorCode: 'E_VERIFY_INVALID_TRANSPORT',
60
+ message: 'Comma-separated PEAC-Receipt values are not allowed',
61
+ };
62
+ }
63
+ }
64
+ // Validate JWS compact serialization structure (three segments)
65
+ const segments = headerValue.split('.');
66
+ if (segments.length !== 3) {
67
+ return {
68
+ ok: false,
69
+ reason: 'malformed_receipt',
70
+ errorCode: 'E_VERIFY_MALFORMED_RECEIPT',
71
+ message: `Invalid JWS compact serialization: expected 3 segments, got ${segments.length}`,
72
+ };
73
+ }
74
+ // All segments must be non-empty base64url strings
75
+ const base64urlRegex = /^[A-Za-z0-9_-]*$/;
76
+ for (let i = 0; i < segments.length; i++) {
77
+ const segment = segments[i];
78
+ if (segment.length === 0) {
79
+ return {
80
+ ok: false,
81
+ reason: 'malformed_receipt',
82
+ errorCode: 'E_VERIFY_MALFORMED_RECEIPT',
83
+ message: `Invalid JWS compact serialization: segment ${i + 1} is empty`,
84
+ };
85
+ }
86
+ if (!base64urlRegex.test(segment)) {
87
+ return {
88
+ ok: false,
89
+ reason: 'malformed_receipt',
90
+ errorCode: 'E_VERIFY_MALFORMED_RECEIPT',
91
+ message: `Invalid JWS compact serialization: segment ${i + 1} contains invalid characters`,
92
+ };
93
+ }
94
+ }
95
+ return {
96
+ ok: true,
97
+ result: {
98
+ profile: 'header',
99
+ receipt: headerValue,
100
+ },
101
+ };
102
+ }
103
+ // ---------------------------------------------------------------------------
104
+ // Pointer Profile Parser
105
+ // ---------------------------------------------------------------------------
106
+ /**
107
+ * Parse PEAC-Receipt-Pointer header
108
+ *
109
+ * Per TRANSPORT-PROFILES.md:
110
+ * - Format: RFC 8941 dictionary with sha256 and url parameters
111
+ * - Multiple headers MUST be rejected
112
+ * - URL MUST be HTTPS
113
+ *
114
+ * Example: sha256="7d8f...", url="https://receipts.example.com/abc123"
115
+ *
116
+ * @param headerValue - PEAC-Receipt-Pointer header value (string or array if multiple)
117
+ * @returns Parse result
118
+ */
119
+ function parsePointerProfile(headerValue) {
120
+ // Check for missing header
121
+ if (headerValue === undefined || headerValue === '') {
122
+ return {
123
+ ok: false,
124
+ reason: 'invalid_transport',
125
+ errorCode: 'E_VERIFY_INVALID_TRANSPORT',
126
+ message: 'PEAC-Receipt-Pointer header is missing',
127
+ };
128
+ }
129
+ // Check for multiple headers (array)
130
+ if (Array.isArray(headerValue)) {
131
+ return {
132
+ ok: false,
133
+ reason: 'invalid_transport',
134
+ errorCode: 'E_VERIFY_INVALID_TRANSPORT',
135
+ message: 'Multiple PEAC-Receipt-Pointer headers are not allowed',
136
+ };
137
+ }
138
+ // Parse RFC 8941 dictionary format
139
+ // Format: sha256="<hex>", url="<url>"
140
+ // We use a simple parser here instead of a full RFC 8941 implementation
141
+ const parseResult = parseSimpleDictionary(headerValue);
142
+ // Strict: Reject duplicate parameters
143
+ if (parseResult.duplicates.length > 0) {
144
+ return {
145
+ ok: false,
146
+ reason: 'invalid_transport',
147
+ errorCode: 'E_VERIFY_INVALID_TRANSPORT',
148
+ message: `PEAC-Receipt-Pointer has duplicate parameter: ${parseResult.duplicates[0]}`,
149
+ };
150
+ }
151
+ // Strict: Reject unknown parameters (only sha256, url, and ext_* are valid)
152
+ // Extension keys (ext_*) are allowed for forward-compatibility
153
+ const ALLOWED_KEYS = new Set(['sha256', 'url']);
154
+ const unknownKeys = parseResult.keys.filter((k) => !ALLOWED_KEYS.has(k) && !k.startsWith('ext_'));
155
+ if (unknownKeys.length > 0) {
156
+ return {
157
+ ok: false,
158
+ reason: 'invalid_transport',
159
+ errorCode: 'E_VERIFY_INVALID_TRANSPORT',
160
+ message: `PEAC-Receipt-Pointer has unknown parameter: ${unknownKeys[0]}`,
161
+ };
162
+ }
163
+ const params = parseResult.params;
164
+ if (!params.sha256) {
165
+ return {
166
+ ok: false,
167
+ reason: 'invalid_transport',
168
+ errorCode: 'E_VERIFY_INVALID_TRANSPORT',
169
+ message: 'PEAC-Receipt-Pointer missing sha256 parameter',
170
+ };
171
+ }
172
+ if (!params.url) {
173
+ return {
174
+ ok: false,
175
+ reason: 'invalid_transport',
176
+ errorCode: 'E_VERIFY_INVALID_TRANSPORT',
177
+ message: 'PEAC-Receipt-Pointer missing url parameter',
178
+ };
179
+ }
180
+ // Validate digest is lowercase hex
181
+ const hexRegex = /^[0-9a-f]{64}$/;
182
+ if (!hexRegex.test(params.sha256)) {
183
+ return {
184
+ ok: false,
185
+ reason: 'invalid_transport',
186
+ errorCode: 'E_VERIFY_INVALID_TRANSPORT',
187
+ message: 'PEAC-Receipt-Pointer sha256 must be 64 lowercase hex characters',
188
+ };
189
+ }
190
+ // Validate URL is HTTPS
191
+ try {
192
+ const url = new URL(params.url);
193
+ if (url.protocol !== 'https:') {
194
+ return {
195
+ ok: false,
196
+ reason: 'pointer_fetch_blocked',
197
+ errorCode: 'E_VERIFY_POINTER_FETCH_BLOCKED',
198
+ message: 'Pointer URL must use HTTPS',
199
+ };
200
+ }
201
+ }
202
+ catch {
203
+ return {
204
+ ok: false,
205
+ reason: 'invalid_transport',
206
+ errorCode: 'E_VERIFY_INVALID_TRANSPORT',
207
+ message: 'PEAC-Receipt-Pointer url is not a valid URL',
208
+ };
209
+ }
210
+ // Extract extension keys (ext_*) for forward-compatibility
211
+ const extensions = {};
212
+ for (const key of parseResult.keys) {
213
+ if (key.startsWith('ext_')) {
214
+ extensions[key] = params[key];
215
+ }
216
+ }
217
+ return {
218
+ ok: true,
219
+ result: {
220
+ profile: 'pointer',
221
+ digestAlg: 'sha256',
222
+ digestValue: params.sha256,
223
+ url: params.url,
224
+ ...(Object.keys(extensions).length > 0 && { extensions }),
225
+ },
226
+ };
227
+ }
228
+ /**
229
+ * Simple RFC 8941-like dictionary parser (ReDoS-safe)
230
+ *
231
+ * Parses: key1="value1", key2="value2"
232
+ * Returns map of key -> value (unquoted) plus metadata for strict validation
233
+ *
234
+ * Uses explicit character-by-character parsing to avoid ReDoS vulnerabilities
235
+ * from regex alternation patterns.
236
+ */
237
+ function parseSimpleDictionary(input) {
238
+ const params = {};
239
+ const duplicates = [];
240
+ const keys = [];
241
+ let i = 0;
242
+ const len = input.length;
243
+ while (i < len) {
244
+ // Skip whitespace and commas
245
+ while (i < len && (input[i] === ' ' || input[i] === ',' || input[i] === '\t')) {
246
+ i++;
247
+ }
248
+ if (i >= len)
249
+ break;
250
+ // Parse key (word characters only)
251
+ const keyStart = i;
252
+ while (i < len && /\w/.test(input[i])) {
253
+ i++;
254
+ }
255
+ const key = input.slice(keyStart, i);
256
+ if (!key)
257
+ break;
258
+ // Skip whitespace before '='
259
+ while (i < len && input[i] === ' ')
260
+ i++;
261
+ // Expect '='
262
+ if (i >= len || input[i] !== '=')
263
+ break;
264
+ i++; // skip '='
265
+ // Skip whitespace after '='
266
+ while (i < len && input[i] === ' ')
267
+ i++;
268
+ // Parse value (quoted or unquoted)
269
+ let value;
270
+ if (input[i] === '"') {
271
+ // Quoted value - find closing quote
272
+ i++; // skip opening quote
273
+ const valueStart = i;
274
+ while (i < len && input[i] !== '"') {
275
+ i++;
276
+ }
277
+ value = input.slice(valueStart, i);
278
+ if (i < len)
279
+ i++; // skip closing quote
280
+ }
281
+ else {
282
+ // Unquoted value - read until comma or whitespace
283
+ const valueStart = i;
284
+ while (i < len && input[i] !== ',' && input[i] !== ' ' && input[i] !== '\t') {
285
+ i++;
286
+ }
287
+ value = input.slice(valueStart, i);
288
+ }
289
+ keys.push(key);
290
+ // Track duplicates
291
+ if (key in params) {
292
+ duplicates.push(key);
293
+ }
294
+ params[key] = value;
295
+ }
296
+ return { params, duplicates, keys };
297
+ }
298
+ // ---------------------------------------------------------------------------
299
+ // Body Profile Parser
300
+ // ---------------------------------------------------------------------------
301
+ /**
302
+ * Parse body profile (JSON body with peac_receipt or peac_receipts)
303
+ *
304
+ * Per TRANSPORT-PROFILES.md:
305
+ * - peac_receipt: single receipt (string)
306
+ * - peac_receipts: multiple receipts (array of strings)
307
+ *
308
+ * @param body - Parsed JSON body object
309
+ * @returns Parse result
310
+ */
311
+ function parseBodyProfile(body) {
312
+ if (body === null || typeof body !== 'object') {
313
+ return {
314
+ ok: false,
315
+ reason: 'invalid_transport',
316
+ errorCode: 'E_VERIFY_INVALID_TRANSPORT',
317
+ message: 'Body must be a JSON object',
318
+ };
319
+ }
320
+ const obj = body;
321
+ // Check for peac_receipts (array, takes precedence)
322
+ if ('peac_receipts' in obj) {
323
+ if (!Array.isArray(obj.peac_receipts)) {
324
+ return {
325
+ ok: false,
326
+ reason: 'invalid_transport',
327
+ errorCode: 'E_VERIFY_INVALID_TRANSPORT',
328
+ message: 'peac_receipts must be an array',
329
+ };
330
+ }
331
+ const receipts = [];
332
+ for (let i = 0; i < obj.peac_receipts.length; i++) {
333
+ const receipt = obj.peac_receipts[i];
334
+ if (typeof receipt !== 'string') {
335
+ return {
336
+ ok: false,
337
+ reason: 'invalid_transport',
338
+ errorCode: 'E_VERIFY_INVALID_TRANSPORT',
339
+ message: `peac_receipts[${i}] must be a string`,
340
+ };
341
+ }
342
+ receipts.push(receipt);
343
+ }
344
+ if (receipts.length === 0) {
345
+ return {
346
+ ok: false,
347
+ reason: 'invalid_transport',
348
+ errorCode: 'E_VERIFY_INVALID_TRANSPORT',
349
+ message: 'peac_receipts array is empty',
350
+ };
351
+ }
352
+ return {
353
+ ok: true,
354
+ result: {
355
+ profile: 'body',
356
+ receipts,
357
+ },
358
+ };
359
+ }
360
+ // Check for peac_receipt (single)
361
+ if ('peac_receipt' in obj) {
362
+ if (typeof obj.peac_receipt !== 'string') {
363
+ return {
364
+ ok: false,
365
+ reason: 'invalid_transport',
366
+ errorCode: 'E_VERIFY_INVALID_TRANSPORT',
367
+ message: 'peac_receipt must be a string',
368
+ };
369
+ }
370
+ if (obj.peac_receipt.length === 0) {
371
+ return {
372
+ ok: false,
373
+ reason: 'invalid_transport',
374
+ errorCode: 'E_VERIFY_INVALID_TRANSPORT',
375
+ message: 'peac_receipt is empty',
376
+ };
377
+ }
378
+ return {
379
+ ok: true,
380
+ result: {
381
+ profile: 'body',
382
+ receipts: [obj.peac_receipt],
383
+ },
384
+ };
385
+ }
386
+ return {
387
+ ok: false,
388
+ reason: 'invalid_transport',
389
+ errorCode: 'E_VERIFY_INVALID_TRANSPORT',
390
+ message: 'Body must contain peac_receipt or peac_receipts',
391
+ };
392
+ }
393
+ // ---------------------------------------------------------------------------
394
+ // Auto-detect Parser
395
+ // ---------------------------------------------------------------------------
396
+ /**
397
+ * Auto-detect and parse transport profile from request context
398
+ *
399
+ * @param context - Request context with headers and optional body
400
+ * @returns Parse result
401
+ */
402
+ function parseTransportProfile(context) {
403
+ const peacReceipt = context.headers['peac-receipt'] ?? context.headers['PEAC-Receipt'];
404
+ const peacPointer = context.headers['peac-receipt-pointer'] ?? context.headers['PEAC-Receipt-Pointer'];
405
+ // Header profile takes precedence
406
+ if (peacReceipt !== undefined) {
407
+ return parseHeaderProfile(peacReceipt);
408
+ }
409
+ // Pointer profile second
410
+ if (peacPointer !== undefined) {
411
+ return parsePointerProfile(peacPointer);
412
+ }
413
+ // Body profile last (if body provided)
414
+ if (context.body !== undefined) {
415
+ return parseBodyProfile(context.body);
416
+ }
417
+ return {
418
+ ok: false,
419
+ reason: 'invalid_transport',
420
+ errorCode: 'E_VERIFY_INVALID_TRANSPORT',
421
+ message: 'No transport profile detected (missing PEAC-Receipt, PEAC-Receipt-Pointer, or body receipt)',
422
+ };
423
+ }
424
+ //# sourceMappingURL=transport-profiles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport-profiles.js","sourceRoot":"","sources":["../src/transport-profiles.ts"],"names":[],"mappings":"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"}