@peac/net-node 0.12.6

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/LICENSE +190 -0
  2. package/README.md +736 -0
  3. package/dist/codes.d.ts +47 -0
  4. package/dist/codes.d.ts.map +1 -0
  5. package/dist/codes.js +53 -0
  6. package/dist/codes.js.map +1 -0
  7. package/dist/constants.d.ts +39 -0
  8. package/dist/constants.d.ts.map +1 -0
  9. package/dist/constants.js +39 -0
  10. package/dist/constants.js.map +1 -0
  11. package/dist/evidence-utils.d.ts +49 -0
  12. package/dist/evidence-utils.d.ts.map +1 -0
  13. package/dist/evidence-utils.js +109 -0
  14. package/dist/evidence-utils.js.map +1 -0
  15. package/dist/impl.d.ts +331 -0
  16. package/dist/impl.d.ts.map +1 -0
  17. package/dist/impl.js +1188 -0
  18. package/dist/impl.js.map +1 -0
  19. package/dist/index.d.ts +772 -0
  20. package/dist/index.d.ts.map +1 -0
  21. package/dist/index.js +1121 -0
  22. package/dist/index.js.map +1 -0
  23. package/dist/internal.d.ts +28 -0
  24. package/dist/internal.d.ts.map +1 -0
  25. package/dist/internal.js +59 -0
  26. package/dist/internal.js.map +1 -0
  27. package/dist/receipt-resolver.d.ts +65 -0
  28. package/dist/receipt-resolver.d.ts.map +1 -0
  29. package/dist/receipt-resolver.js +140 -0
  30. package/dist/receipt-resolver.js.map +1 -0
  31. package/dist/receipt-url-middleware.d.ts +87 -0
  32. package/dist/receipt-url-middleware.d.ts.map +1 -0
  33. package/dist/receipt-url-middleware.js +141 -0
  34. package/dist/receipt-url-middleware.js.map +1 -0
  35. package/dist/ssrf.d.ts +114 -0
  36. package/dist/ssrf.d.ts.map +1 -0
  37. package/dist/ssrf.js +214 -0
  38. package/dist/ssrf.js.map +1 -0
  39. package/dist/testing.d.ts +65 -0
  40. package/dist/testing.d.ts.map +1 -0
  41. package/dist/testing.js +103 -0
  42. package/dist/testing.js.map +1 -0
  43. package/package.json +79 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Internal utilities for @peac/net-node
3
+ *
4
+ * This module contains ONLY the finalizeEvidence function, which must be
5
+ * kept out of the main entry point's type definitions per API surface requirements.
6
+ *
7
+ * IMPORTANT: This module is NOT listed in package.json exports, so it cannot be
8
+ * directly imported by consumers. Only the testing subpath re-exports from here.
9
+ *
10
+ * @internal
11
+ * @module @peac/net-node/internal
12
+ */
13
+ import type { SafeFetchEvidence, SafeFetchEvidenceCore, RequestAuditContext } from './index.js';
14
+ /**
15
+ * Finalize evidence by computing and embedding the digest.
16
+ *
17
+ * INTERNAL ONLY - NOT exported from main package entry.
18
+ * Access via `_internals.finalizeEvidence` from the testing subpath only.
19
+ *
20
+ * CONTRACT:
21
+ * - If `ctx` has drops: audit_stats included, audit_truncated = true
22
+ * - If `ctx` has no drops: no audit_truncated field
23
+ * - If `ctx` omitted: no audit_truncated field (for re-finalize)
24
+ *
25
+ * @internal
26
+ */
27
+ export declare function finalizeEvidence(core: SafeFetchEvidenceCore, ctx?: RequestAuditContext): SafeFetchEvidence;
28
+ //# sourceMappingURL=internal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAUhG;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,qBAAqB,EAC3B,GAAG,CAAC,EAAE,mBAAmB,GACxB,iBAAiB,CA2BnB"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Internal utilities for @peac/net-node
3
+ *
4
+ * This module contains ONLY the finalizeEvidence function, which must be
5
+ * kept out of the main entry point's type definitions per API surface requirements.
6
+ *
7
+ * IMPORTANT: This module is NOT listed in package.json exports, so it cannot be
8
+ * directly imported by consumers. Only the testing subpath re-exports from here.
9
+ *
10
+ * @internal
11
+ * @module @peac/net-node/internal
12
+ */
13
+ // Import from evidence-utils.ts to break the circular dependency
14
+ // These were previously imported from index.ts, creating a cycle
15
+ import { MAX_PENDING_AUDIT_EVENTS, computeEvidenceDigest } from './evidence-utils.js';
16
+ // -----------------------------------------------------------------------------
17
+ // Evidence Finalization (INTERNAL-ONLY)
18
+ // -----------------------------------------------------------------------------
19
+ /**
20
+ * Finalize evidence by computing and embedding the digest.
21
+ *
22
+ * INTERNAL ONLY - NOT exported from main package entry.
23
+ * Access via `_internals.finalizeEvidence` from the testing subpath only.
24
+ *
25
+ * CONTRACT:
26
+ * - If `ctx` has drops: audit_stats included, audit_truncated = true
27
+ * - If `ctx` has no drops: no audit_truncated field
28
+ * - If `ctx` omitted: no audit_truncated field (for re-finalize)
29
+ *
30
+ * @internal
31
+ */
32
+ export function finalizeEvidence(core, ctx) {
33
+ const hasDrops = ctx && ctx.dropped > 0;
34
+ let coreWithStats;
35
+ if (hasDrops && ctx) {
36
+ coreWithStats = {
37
+ ...core,
38
+ audit_stats: {
39
+ pending: ctx.pending,
40
+ dropped: ctx.dropped,
41
+ max_pending: MAX_PENDING_AUDIT_EVENTS,
42
+ hook_errors: ctx.hookErrors,
43
+ hook_suppressed: ctx.hookSuppressed,
44
+ },
45
+ audit_truncated: true,
46
+ };
47
+ }
48
+ else {
49
+ coreWithStats = { ...core };
50
+ }
51
+ const digest = computeEvidenceDigest(coreWithStats);
52
+ return {
53
+ ...coreWithStats,
54
+ evidence_digest: digest,
55
+ evidence_alg: 'sha-256',
56
+ canonicalization: 'RFC8785-JCS',
57
+ };
58
+ }
59
+ //# sourceMappingURL=internal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"internal.js","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,iEAAiE;AACjE,iEAAiE;AACjE,OAAO,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAEtF,gFAAgF;AAChF,wCAAwC;AACxC,gFAAgF;AAEhF;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,gBAAgB,CAC9B,IAA2B,EAC3B,GAAyB;IAEzB,MAAM,QAAQ,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC;IAExC,IAAI,aAAoC,CAAC;IACzC,IAAI,QAAQ,IAAI,GAAG,EAAE,CAAC;QACpB,aAAa,GAAG;YACd,GAAG,IAAI;YACP,WAAW,EAAE;gBACX,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,WAAW,EAAE,wBAAwB;gBACrC,WAAW,EAAE,GAAG,CAAC,UAAU;gBAC3B,eAAe,EAAE,GAAG,CAAC,cAAc;aACpC;YACD,eAAe,EAAE,IAAI;SACtB,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,aAAa,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC;IAC9B,CAAC;IAED,MAAM,MAAM,GAAG,qBAAqB,CAAC,aAAa,CAAC,CAAC;IACpD,OAAO;QACL,GAAG,aAAa;QAChB,eAAe,EAAE,MAAM;QACvB,YAAY,EAAE,SAAS;QACvB,gBAAgB,EAAE,aAAa;KAChC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Receipt URL Resolver
3
+ *
4
+ * Opt-in SSRF-hardened fetch for resolving receipt_url locator hints.
5
+ * Lives in Layer 4 (@peac/net-node), NOT in @peac/schema (Layer 1).
6
+ *
7
+ * Uses raw text fetch (not JSON) since receipt URLs return compact JWS
8
+ * strings (typically served as text/plain or application/jose).
9
+ *
10
+ * Callers MUST verify sha256(fetched_jws) == receipt_ref after resolution.
11
+ * The verifyReceiptRef() helper is provided for this purpose.
12
+ *
13
+ * @since v0.11.2
14
+ */
15
+ /** Options for resolveReceiptUrl */
16
+ export interface ResolveReceiptUrlOptions {
17
+ /** Request timeout in milliseconds. Default: 5000 */
18
+ timeoutMs?: number;
19
+ /** Maximum response body size in bytes. Default: 65536 (64 KB) */
20
+ maxBytes?: number;
21
+ }
22
+ /** Successful resolution result */
23
+ export interface ResolveReceiptUrlSuccess {
24
+ ok: true;
25
+ /** Raw compact JWS string fetched from the URL */
26
+ jws: string;
27
+ }
28
+ /** Failed resolution result */
29
+ export interface ResolveReceiptUrlFailure {
30
+ ok: false;
31
+ /** Error code */
32
+ code: string;
33
+ /** Human-readable error message */
34
+ error: string;
35
+ }
36
+ export type ResolveReceiptUrlResult = ResolveReceiptUrlSuccess | ResolveReceiptUrlFailure;
37
+ /**
38
+ * Resolve a receipt URL to its JWS content.
39
+ *
40
+ * SSRF-hardened: rejects private IPs, non-HTTPS, credentials, redirects.
41
+ * Enforces timeout and response size limits.
42
+ * Uses raw text fetch (not JSON parsing) since JWS is a plain text format.
43
+ *
44
+ * After calling this function, the caller MUST verify:
45
+ * sha256(returned_jws) == carrier.receipt_ref
46
+ *
47
+ * Use the verifyReceiptRef() helper for this check.
48
+ *
49
+ * @param url - Receipt URL (HTTPS only, max 2048 chars, no credentials)
50
+ * @param options - Timeout and size limits
51
+ * @returns Resolution result with JWS string or error
52
+ */
53
+ export declare function resolveReceiptUrl(url: string, options?: ResolveReceiptUrlOptions): Promise<ResolveReceiptUrlResult>;
54
+ /**
55
+ * Verify that a fetched JWS matches the expected receipt_ref.
56
+ *
57
+ * This enforces the post-fetch invariant:
58
+ * sha256(fetched_jws) == carrier.receipt_ref
59
+ *
60
+ * @param jws - The fetched compact JWS string
61
+ * @param receiptRef - The expected receipt_ref (format: "sha256:<hex64>")
62
+ * @returns true if the JWS matches the receipt_ref
63
+ */
64
+ export declare function verifyReceiptRef(jws: string, receiptRef: string): boolean;
65
+ //# sourceMappingURL=receipt-resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"receipt-resolver.d.ts","sourceRoot":"","sources":["../src/receipt-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAuBH,oCAAoC;AACpC,MAAM,WAAW,wBAAwB;IACvC,qDAAqD;IACrD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kEAAkE;IAClE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,mCAAmC;AACnC,MAAM,WAAW,wBAAwB;IACvC,EAAE,EAAE,IAAI,CAAC;IACT,kDAAkD;IAClD,GAAG,EAAE,MAAM,CAAC;CACb;AAED,+BAA+B;AAC/B,MAAM,WAAW,wBAAwB;IACvC,EAAE,EAAE,KAAK,CAAC;IACV,iBAAiB;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,mCAAmC;IACnC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,uBAAuB,GAAG,wBAAwB,GAAG,wBAAwB,CAAC;AAM1F;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,wBAAwB,GACjC,OAAO,CAAC,uBAAuB,CAAC,CAmFlC;AAMD;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAIzE"}
@@ -0,0 +1,140 @@
1
+ /**
2
+ * Receipt URL Resolver
3
+ *
4
+ * Opt-in SSRF-hardened fetch for resolving receipt_url locator hints.
5
+ * Lives in Layer 4 (@peac/net-node), NOT in @peac/schema (Layer 1).
6
+ *
7
+ * Uses raw text fetch (not JSON) since receipt URLs return compact JWS
8
+ * strings (typically served as text/plain or application/jose).
9
+ *
10
+ * Callers MUST verify sha256(fetched_jws) == receipt_ref after resolution.
11
+ * The verifyReceiptRef() helper is provided for this purpose.
12
+ *
13
+ * @since v0.11.2
14
+ */
15
+ import { createHash } from 'crypto';
16
+ import { safeFetchRaw } from './index.js';
17
+ import { validateUrlForSSRF } from './ssrf.js';
18
+ // ---------------------------------------------------------------------------
19
+ // Constants
20
+ // ---------------------------------------------------------------------------
21
+ /** Default timeout for receipt URL resolution (5 seconds) */
22
+ const DEFAULT_TIMEOUT_MS = 5000;
23
+ /** Default max response size for receipt JWS (64 KB) */
24
+ const DEFAULT_MAX_BYTES = 65536;
25
+ /** Maximum allowed receipt URL length (matches ReceiptUrlSchema) */
26
+ const MAX_URL_LENGTH = 2048;
27
+ // ---------------------------------------------------------------------------
28
+ // Resolver
29
+ // ---------------------------------------------------------------------------
30
+ /**
31
+ * Resolve a receipt URL to its JWS content.
32
+ *
33
+ * SSRF-hardened: rejects private IPs, non-HTTPS, credentials, redirects.
34
+ * Enforces timeout and response size limits.
35
+ * Uses raw text fetch (not JSON parsing) since JWS is a plain text format.
36
+ *
37
+ * After calling this function, the caller MUST verify:
38
+ * sha256(returned_jws) == carrier.receipt_ref
39
+ *
40
+ * Use the verifyReceiptRef() helper for this check.
41
+ *
42
+ * @param url - Receipt URL (HTTPS only, max 2048 chars, no credentials)
43
+ * @param options - Timeout and size limits
44
+ * @returns Resolution result with JWS string or error
45
+ */
46
+ export async function resolveReceiptUrl(url, options) {
47
+ const timeoutMs = options?.timeoutMs ?? DEFAULT_TIMEOUT_MS;
48
+ const maxBytes = options?.maxBytes ?? DEFAULT_MAX_BYTES;
49
+ // Step 1: Length check
50
+ if (url.length > MAX_URL_LENGTH) {
51
+ return {
52
+ ok: false,
53
+ code: 'E_RECEIPT_URL_TOO_LONG',
54
+ error: `Receipt URL exceeds ${MAX_URL_LENGTH} character limit`,
55
+ };
56
+ }
57
+ // Step 2: SSRF pre-validation (HTTPS required, no credentials, no IP literals)
58
+ const ssrfCheck = validateUrlForSSRF(url, {
59
+ requireHttps: true,
60
+ allowCredentials: false,
61
+ allowIPLiterals: false,
62
+ });
63
+ if (!ssrfCheck.ok) {
64
+ return {
65
+ ok: false,
66
+ code: ssrfCheck.code,
67
+ error: ssrfCheck.error,
68
+ };
69
+ }
70
+ // Step 3: Fetch with SSRF-safe infrastructure (DNS pinning, no redirects)
71
+ // Use safeFetchRaw for text content (JWS is not JSON)
72
+ const result = await safeFetchRaw(url, {
73
+ timeoutMs,
74
+ maxResponseBytes: maxBytes,
75
+ maxRedirects: 0,
76
+ method: 'GET',
77
+ headers: {
78
+ Accept: 'application/jose, text/plain',
79
+ },
80
+ });
81
+ if (!result.ok) {
82
+ return {
83
+ ok: false,
84
+ code: result.code,
85
+ error: result.error,
86
+ };
87
+ }
88
+ // Step 4: Read response body as text
89
+ let body;
90
+ try {
91
+ body = await result.response.text();
92
+ }
93
+ catch {
94
+ await result.close();
95
+ return {
96
+ ok: false,
97
+ code: 'E_RECEIPT_URL_READ_ERROR',
98
+ error: 'Failed to read receipt URL response body',
99
+ };
100
+ }
101
+ await result.close();
102
+ if (!body || body.length === 0) {
103
+ return {
104
+ ok: false,
105
+ code: 'E_RECEIPT_URL_INVALID_RESPONSE',
106
+ error: 'Receipt URL response is empty',
107
+ };
108
+ }
109
+ // Trim whitespace (servers may include trailing newlines)
110
+ body = body.trim();
111
+ // Step 5: Basic JWS format check: three base64url segments separated by dots
112
+ const parts = body.split('.');
113
+ if (parts.length !== 3) {
114
+ return {
115
+ ok: false,
116
+ code: 'E_RECEIPT_URL_INVALID_JWS',
117
+ error: 'Receipt URL response is not a valid compact JWS (expected 3 dot-separated segments)',
118
+ };
119
+ }
120
+ return { ok: true, jws: body };
121
+ }
122
+ // ---------------------------------------------------------------------------
123
+ // Post-fetch verification helper
124
+ // ---------------------------------------------------------------------------
125
+ /**
126
+ * Verify that a fetched JWS matches the expected receipt_ref.
127
+ *
128
+ * This enforces the post-fetch invariant:
129
+ * sha256(fetched_jws) == carrier.receipt_ref
130
+ *
131
+ * @param jws - The fetched compact JWS string
132
+ * @param receiptRef - The expected receipt_ref (format: "sha256:<hex64>")
133
+ * @returns true if the JWS matches the receipt_ref
134
+ */
135
+ export function verifyReceiptRef(jws, receiptRef) {
136
+ const hash = createHash('sha256').update(jws).digest('hex');
137
+ const computed = `sha256:${hash}`;
138
+ return computed === receiptRef;
139
+ }
140
+ //# sourceMappingURL=receipt-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"receipt-resolver.js","sourceRoot":"","sources":["../src/receipt-resolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Receipt URL Resolution Middleware
3
+ *
4
+ * Carrier-shaped factory: takes a PeacEvidenceCarrier and returns one
5
+ * with receipt_jws populated (if receipt_url was present and resolvable).
6
+ *
7
+ * The returned carrier is a pure PeacEvidenceCarrier with no extra fields.
8
+ * Retrieval metadata (retrieval metadata) is exposed via an optional onResolved callback.
9
+ *
10
+ * Wraps resolveReceiptUrl() and verifyReceiptRef() with concurrency
11
+ * control and strict/non-strict modes.
12
+ *
13
+ * No negative caching (RURL-003): failed resolutions are never cached.
14
+ *
15
+ * @since v0.12.6
16
+ */
17
+ import type { PeacEvidenceCarrier } from '@peac/schema';
18
+ /**
19
+ * Retrieval metadata recorded on successful resolution (retrieval metadata).
20
+ *
21
+ * Delivered via the onResolved callback, not on the carrier itself.
22
+ */
23
+ export interface RetrievalMetadata {
24
+ /** ISO 8601 timestamp when resolution completed */
25
+ resolvedAt: string;
26
+ /** Resolution latency in milliseconds */
27
+ latencyMs: number;
28
+ /** The receipt URL that was resolved */
29
+ url: string;
30
+ }
31
+ /**
32
+ * Options for creating a receipt URL resolver middleware.
33
+ */
34
+ export interface ReceiptUrlResolverOptions {
35
+ /** Request timeout in milliseconds. Default: 5000. */
36
+ timeoutMs?: number;
37
+ /** Maximum response body size in bytes. Default: 65536 (64 KB). */
38
+ maxBytes?: number;
39
+ /**
40
+ * Maximum concurrent resolutions. Default: 4.
41
+ * Must be a positive integer.
42
+ */
43
+ maxConcurrent?: number;
44
+ /**
45
+ * Strict mode: throw on resolution or ref verification failure
46
+ * instead of returning the carrier unchanged. Default: false.
47
+ */
48
+ strict?: boolean;
49
+ /**
50
+ * Callback invoked on successful resolution with retrieval metadata (retrieval metadata).
51
+ * Use this to record audit data without widening the carrier type.
52
+ */
53
+ onResolved?: (metadata: RetrievalMetadata) => void;
54
+ }
55
+ /**
56
+ * Carrier middleware function returned by the factory.
57
+ *
58
+ * Takes a carrier and returns a pure PeacEvidenceCarrier with
59
+ * receipt_jws populated (if receipt_url was resolved successfully).
60
+ */
61
+ export type ReceiptUrlMiddleware = (carrier: PeacEvidenceCarrier) => Promise<PeacEvidenceCarrier>;
62
+ /**
63
+ * Create carrier-shaped receipt_url resolution middleware.
64
+ *
65
+ * The returned function resolves `receipt_url` on carriers that have it
66
+ * but lack `receipt_jws`. After fetching, it verifies
67
+ * `sha256(jws) == receipt_ref` and populates `receipt_jws` on success.
68
+ *
69
+ * The returned carrier is always a pure PeacEvidenceCarrier.
70
+ * Retrieval metadata (retrieval metadata) is delivered via the onResolved callback.
71
+ *
72
+ * Behavior:
73
+ * - Carrier already has `receipt_jws` or lacks `receipt_url`: returned unchanged
74
+ * - Resolution succeeds and ref matches: returned with `receipt_jws` populated
75
+ * - Resolution fails or ref mismatch:
76
+ * - `strict: false` (default): returned unchanged
77
+ * - `strict: true`: throws
78
+ *
79
+ * No negative caching (RURL-003): every call goes through full
80
+ * SSRF-hardened fetch. Failed resolutions are never cached.
81
+ *
82
+ * @param options - Resolver configuration
83
+ * @returns Carrier middleware function
84
+ * @throws Error if maxConcurrent is not a positive integer
85
+ */
86
+ export declare function createReceiptUrlResolver(options?: ReceiptUrlResolverOptions): ReceiptUrlMiddleware;
87
+ //# sourceMappingURL=receipt-url-middleware.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"receipt-url-middleware.d.ts","sourceRoot":"","sources":["../src/receipt-url-middleware.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAOxD;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,mDAAmD;IACnD,UAAU,EAAE,MAAM,CAAC;IACnB,yCAAyC;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,wCAAwC;IACxC,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,sDAAsD;IACtD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mEAAmE;IACnE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;OAGG;IACH,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,iBAAiB,KAAK,IAAI,CAAC;CACpD;AAED;;;;;GAKG;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,EAAE,mBAAmB,KAAK,OAAO,CAAC,mBAAmB,CAAC,CAAC;AAoClG;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,CAAC,EAAE,yBAAyB,GAClC,oBAAoB,CA+EtB"}
@@ -0,0 +1,141 @@
1
+ /**
2
+ * Receipt URL Resolution Middleware
3
+ *
4
+ * Carrier-shaped factory: takes a PeacEvidenceCarrier and returns one
5
+ * with receipt_jws populated (if receipt_url was present and resolvable).
6
+ *
7
+ * The returned carrier is a pure PeacEvidenceCarrier with no extra fields.
8
+ * Retrieval metadata (retrieval metadata) is exposed via an optional onResolved callback.
9
+ *
10
+ * Wraps resolveReceiptUrl() and verifyReceiptRef() with concurrency
11
+ * control and strict/non-strict modes.
12
+ *
13
+ * No negative caching (RURL-003): failed resolutions are never cached.
14
+ *
15
+ * @since v0.12.6
16
+ */
17
+ import { resolveReceiptUrl, verifyReceiptRef } from './receipt-resolver.js';
18
+ // ---------------------------------------------------------------------------
19
+ // Semaphore (simple counter + Promise queue)
20
+ // ---------------------------------------------------------------------------
21
+ class Semaphore {
22
+ max;
23
+ current = 0;
24
+ queue = [];
25
+ constructor(max) {
26
+ this.max = max;
27
+ }
28
+ async acquire() {
29
+ if (this.current < this.max) {
30
+ this.current++;
31
+ return;
32
+ }
33
+ return new Promise((resolve) => {
34
+ this.queue.push(() => {
35
+ this.current++;
36
+ resolve();
37
+ });
38
+ });
39
+ }
40
+ release() {
41
+ this.current--;
42
+ const next = this.queue.shift();
43
+ if (next)
44
+ next();
45
+ }
46
+ }
47
+ // ---------------------------------------------------------------------------
48
+ // Factory
49
+ // ---------------------------------------------------------------------------
50
+ /**
51
+ * Create carrier-shaped receipt_url resolution middleware.
52
+ *
53
+ * The returned function resolves `receipt_url` on carriers that have it
54
+ * but lack `receipt_jws`. After fetching, it verifies
55
+ * `sha256(jws) == receipt_ref` and populates `receipt_jws` on success.
56
+ *
57
+ * The returned carrier is always a pure PeacEvidenceCarrier.
58
+ * Retrieval metadata (retrieval metadata) is delivered via the onResolved callback.
59
+ *
60
+ * Behavior:
61
+ * - Carrier already has `receipt_jws` or lacks `receipt_url`: returned unchanged
62
+ * - Resolution succeeds and ref matches: returned with `receipt_jws` populated
63
+ * - Resolution fails or ref mismatch:
64
+ * - `strict: false` (default): returned unchanged
65
+ * - `strict: true`: throws
66
+ *
67
+ * No negative caching (RURL-003): every call goes through full
68
+ * SSRF-hardened fetch. Failed resolutions are never cached.
69
+ *
70
+ * @param options - Resolver configuration
71
+ * @returns Carrier middleware function
72
+ * @throws Error if maxConcurrent is not a positive integer
73
+ */
74
+ export function createReceiptUrlResolver(options) {
75
+ const timeoutMs = options?.timeoutMs ?? 5000;
76
+ const maxBytes = options?.maxBytes ?? 65536;
77
+ const maxConcurrent = options?.maxConcurrent ?? 4;
78
+ const strict = options?.strict ?? false;
79
+ const onResolved = options?.onResolved;
80
+ if (!Number.isInteger(maxConcurrent) || maxConcurrent <= 0) {
81
+ throw new Error(`maxConcurrent must be a positive integer (got: ${maxConcurrent})`);
82
+ }
83
+ const semaphore = new Semaphore(maxConcurrent);
84
+ return async (carrier) => {
85
+ // No-op: carrier already has JWS or lacks receipt_url
86
+ if (carrier.receipt_jws || !carrier.receipt_url) {
87
+ return carrier;
88
+ }
89
+ await semaphore.acquire();
90
+ const startMs = Date.now();
91
+ try {
92
+ const result = await resolveReceiptUrl(carrier.receipt_url, {
93
+ timeoutMs,
94
+ maxBytes,
95
+ });
96
+ if (!result.ok) {
97
+ if (strict) {
98
+ throw Object.assign(new Error(result.error), { code: result.code });
99
+ }
100
+ return carrier;
101
+ }
102
+ const latencyMs = Date.now() - startMs;
103
+ const refVerified = verifyReceiptRef(result.jws, carrier.receipt_ref);
104
+ if (!refVerified) {
105
+ if (strict) {
106
+ throw Object.assign(new Error(`Receipt ref verification failed: sha256(jws) does not match ${carrier.receipt_ref}`), { code: 'E_RECEIPT_URL_REF_MISMATCH' });
107
+ }
108
+ return carrier;
109
+ }
110
+ const resolved = {
111
+ ...carrier,
112
+ receipt_jws: result.jws,
113
+ };
114
+ // onResolved is best-effort: callback failures must not revert
115
+ // a successful resolution or trigger strict/non-strict behavior
116
+ if (onResolved) {
117
+ try {
118
+ onResolved({
119
+ resolvedAt: new Date().toISOString(),
120
+ latencyMs,
121
+ url: carrier.receipt_url,
122
+ });
123
+ }
124
+ catch {
125
+ // swallow: audit/telemetry plumbing must not affect carrier result
126
+ }
127
+ }
128
+ return resolved;
129
+ }
130
+ catch (e) {
131
+ if (!strict) {
132
+ return carrier;
133
+ }
134
+ throw e;
135
+ }
136
+ finally {
137
+ semaphore.release();
138
+ }
139
+ };
140
+ }
141
+ //# sourceMappingURL=receipt-url-middleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"receipt-url-middleware.js","sourceRoot":"","sources":["../src/receipt-url-middleware.ts"],"names":[],"mappings":"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"}