@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.
- package/LICENSE +190 -0
- package/README.md +736 -0
- package/dist/codes.d.ts +47 -0
- package/dist/codes.d.ts.map +1 -0
- package/dist/codes.js +53 -0
- package/dist/codes.js.map +1 -0
- package/dist/constants.d.ts +39 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +39 -0
- package/dist/constants.js.map +1 -0
- package/dist/evidence-utils.d.ts +49 -0
- package/dist/evidence-utils.d.ts.map +1 -0
- package/dist/evidence-utils.js +109 -0
- package/dist/evidence-utils.js.map +1 -0
- package/dist/impl.d.ts +331 -0
- package/dist/impl.d.ts.map +1 -0
- package/dist/impl.js +1188 -0
- package/dist/impl.js.map +1 -0
- package/dist/index.d.ts +772 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1121 -0
- package/dist/index.js.map +1 -0
- package/dist/internal.d.ts +28 -0
- package/dist/internal.d.ts.map +1 -0
- package/dist/internal.js +59 -0
- package/dist/internal.js.map +1 -0
- package/dist/receipt-resolver.d.ts +65 -0
- package/dist/receipt-resolver.d.ts.map +1 -0
- package/dist/receipt-resolver.js +140 -0
- package/dist/receipt-resolver.js.map +1 -0
- package/dist/receipt-url-middleware.d.ts +87 -0
- package/dist/receipt-url-middleware.d.ts.map +1 -0
- package/dist/receipt-url-middleware.js +141 -0
- package/dist/receipt-url-middleware.js.map +1 -0
- package/dist/ssrf.d.ts +114 -0
- package/dist/ssrf.d.ts.map +1 -0
- package/dist/ssrf.js +214 -0
- package/dist/ssrf.js.map +1 -0
- package/dist/testing.d.ts +65 -0
- package/dist/testing.d.ts.map +1 -0
- package/dist/testing.js +103 -0
- package/dist/testing.js.map +1 -0
- 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"}
|
package/dist/internal.js
ADDED
|
@@ -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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"}
|