@peac/protocol 0.9.31 → 0.10.0
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/discovery.d.ts +48 -8
- package/dist/discovery.d.ts.map +1 -1
- package/dist/discovery.js +331 -46
- package/dist/discovery.js.map +1 -1
- package/package.json +5 -5
package/dist/discovery.d.ts
CHANGED
|
@@ -1,19 +1,59 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* PEAC
|
|
2
|
+
* PEAC Discovery - Issuer Configuration and Policy Manifest
|
|
3
|
+
*
|
|
4
|
+
* This module provides functions for:
|
|
5
|
+
* - Issuer configuration discovery (/.well-known/peac-issuer.json)
|
|
6
|
+
* - Policy manifest parsing (/.well-known/peac.txt)
|
|
7
|
+
*
|
|
8
|
+
* @see docs/specs/PEAC-ISSUER.md
|
|
9
|
+
* @see docs/specs/PEAC-TXT.md
|
|
3
10
|
*/
|
|
4
|
-
import { PEACDiscovery } from '@peac/schema';
|
|
11
|
+
import { PEACIssuerConfig, PEACPolicyManifest, PEACDiscovery } from '@peac/schema';
|
|
5
12
|
/**
|
|
6
|
-
* Parse
|
|
13
|
+
* Parse PEAC issuer configuration from JSON
|
|
7
14
|
*
|
|
8
|
-
* @param
|
|
9
|
-
* @returns Parsed
|
|
15
|
+
* @param json - JSON string or object
|
|
16
|
+
* @returns Parsed issuer configuration
|
|
17
|
+
* @throws Error if validation fails
|
|
10
18
|
*/
|
|
11
|
-
export declare function
|
|
19
|
+
export declare function parseIssuerConfig(json: string | object): PEACIssuerConfig;
|
|
12
20
|
/**
|
|
13
|
-
* Fetch
|
|
21
|
+
* Fetch PEAC issuer configuration from an issuer URL
|
|
14
22
|
*
|
|
15
23
|
* @param issuerUrl - Issuer URL (https://)
|
|
16
|
-
* @returns Parsed
|
|
24
|
+
* @returns Parsed issuer configuration
|
|
25
|
+
* @throws Error if fetch or validation fails
|
|
26
|
+
*/
|
|
27
|
+
export declare function fetchIssuerConfig(issuerUrl: string): Promise<PEACIssuerConfig>;
|
|
28
|
+
/**
|
|
29
|
+
* Parse PEAC policy manifest from YAML or JSON
|
|
30
|
+
*
|
|
31
|
+
* @param text - Policy manifest text (YAML or JSON)
|
|
32
|
+
* @param contentType - Optional Content-Type header value
|
|
33
|
+
* @returns Parsed policy manifest
|
|
34
|
+
* @throws Error if validation fails
|
|
35
|
+
*/
|
|
36
|
+
export declare function parsePolicyManifest(text: string, contentType?: string): PEACPolicyManifest;
|
|
37
|
+
/**
|
|
38
|
+
* Fetch PEAC policy manifest from a domain
|
|
39
|
+
*
|
|
40
|
+
* @param baseUrl - Base URL (https://example.com)
|
|
41
|
+
* @returns Parsed policy manifest
|
|
42
|
+
* @throws Error if fetch or validation fails
|
|
43
|
+
*/
|
|
44
|
+
export declare function fetchPolicyManifest(baseUrl: string): Promise<PEACPolicyManifest>;
|
|
45
|
+
/**
|
|
46
|
+
* @deprecated Use parseIssuerConfig instead. Will be removed in v1.0.
|
|
47
|
+
*
|
|
48
|
+
* Parse a PEAC discovery manifest from YAML-like text.
|
|
49
|
+
* This function is maintained for backward compatibility only.
|
|
50
|
+
*/
|
|
51
|
+
export declare function parseDiscovery(text: string): PEACDiscovery;
|
|
52
|
+
/**
|
|
53
|
+
* @deprecated Use fetchIssuerConfig instead. Will be removed in v1.0.
|
|
54
|
+
*
|
|
55
|
+
* Fetch and parse PEAC discovery from an issuer URL.
|
|
56
|
+
* This function is maintained for backward compatibility only.
|
|
17
57
|
*/
|
|
18
58
|
export declare function fetchDiscovery(issuerUrl: string): Promise<PEACDiscovery>;
|
|
19
59
|
//# sourceMappingURL=discovery.d.ts.map
|
package/dist/discovery.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,aAAa,EAMd,MAAM,cAAc,CAAC;AAMtB;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,gBAAgB,CAiFzE;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAqCpF;AAiBD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,kBAAkB,CAoD1F;AAkFD;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA8CtF;AAMD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CAkD1D;AAED;;;;;GAKG;AACH,wBAAsB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CA0B9E"}
|
package/dist/discovery.js
CHANGED
|
@@ -1,58 +1,349 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
/**
|
|
3
|
-
* PEAC
|
|
3
|
+
* PEAC Discovery - Issuer Configuration and Policy Manifest
|
|
4
|
+
*
|
|
5
|
+
* This module provides functions for:
|
|
6
|
+
* - Issuer configuration discovery (/.well-known/peac-issuer.json)
|
|
7
|
+
* - Policy manifest parsing (/.well-known/peac.txt)
|
|
8
|
+
*
|
|
9
|
+
* @see docs/specs/PEAC-ISSUER.md
|
|
10
|
+
* @see docs/specs/PEAC-TXT.md
|
|
4
11
|
*/
|
|
5
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.parseIssuerConfig = parseIssuerConfig;
|
|
14
|
+
exports.fetchIssuerConfig = fetchIssuerConfig;
|
|
15
|
+
exports.parsePolicyManifest = parsePolicyManifest;
|
|
16
|
+
exports.fetchPolicyManifest = fetchPolicyManifest;
|
|
6
17
|
exports.parseDiscovery = parseDiscovery;
|
|
7
18
|
exports.fetchDiscovery = fetchDiscovery;
|
|
8
19
|
const schema_1 = require("@peac/schema");
|
|
20
|
+
// ============================================================================
|
|
21
|
+
// Issuer Configuration (/.well-known/peac-issuer.json)
|
|
22
|
+
// ============================================================================
|
|
9
23
|
/**
|
|
10
|
-
* Parse
|
|
24
|
+
* Parse PEAC issuer configuration from JSON
|
|
11
25
|
*
|
|
12
|
-
* @param
|
|
13
|
-
* @returns Parsed
|
|
26
|
+
* @param json - JSON string or object
|
|
27
|
+
* @returns Parsed issuer configuration
|
|
28
|
+
* @throws Error if validation fails
|
|
14
29
|
*/
|
|
15
|
-
function
|
|
16
|
-
|
|
30
|
+
function parseIssuerConfig(json) {
|
|
31
|
+
let config;
|
|
32
|
+
if (typeof json === 'string') {
|
|
33
|
+
const bytes = new TextEncoder().encode(json).length;
|
|
34
|
+
if (bytes > schema_1.PEAC_ISSUER_CONFIG_MAX_BYTES) {
|
|
35
|
+
throw new Error(`Issuer config exceeds ${schema_1.PEAC_ISSUER_CONFIG_MAX_BYTES} bytes (got ${bytes})`);
|
|
36
|
+
}
|
|
37
|
+
try {
|
|
38
|
+
config = JSON.parse(json);
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
throw new Error('Issuer config is not valid JSON');
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
config = json;
|
|
46
|
+
}
|
|
47
|
+
if (typeof config !== 'object' || config === null) {
|
|
48
|
+
throw new Error('Issuer config must be an object');
|
|
49
|
+
}
|
|
50
|
+
const obj = config;
|
|
51
|
+
// Validate required fields
|
|
52
|
+
if (typeof obj.version !== 'string' || !obj.version) {
|
|
53
|
+
throw new Error('Missing required field: version');
|
|
54
|
+
}
|
|
55
|
+
if (typeof obj.issuer !== 'string' || !obj.issuer) {
|
|
56
|
+
throw new Error('Missing required field: issuer');
|
|
57
|
+
}
|
|
58
|
+
if (typeof obj.jwks_uri !== 'string' || !obj.jwks_uri) {
|
|
59
|
+
throw new Error('Missing required field: jwks_uri');
|
|
60
|
+
}
|
|
61
|
+
// Validate URL fields
|
|
62
|
+
if (!obj.issuer.startsWith('https://')) {
|
|
63
|
+
throw new Error('issuer must be an HTTPS URL');
|
|
64
|
+
}
|
|
65
|
+
if (!obj.jwks_uri.startsWith('https://')) {
|
|
66
|
+
throw new Error('jwks_uri must be an HTTPS URL');
|
|
67
|
+
}
|
|
68
|
+
// Validate optional fields
|
|
69
|
+
if (obj.verify_endpoint !== undefined) {
|
|
70
|
+
if (typeof obj.verify_endpoint !== 'string') {
|
|
71
|
+
throw new Error('verify_endpoint must be a string');
|
|
72
|
+
}
|
|
73
|
+
if (!obj.verify_endpoint.startsWith('https://')) {
|
|
74
|
+
throw new Error('verify_endpoint must be an HTTPS URL');
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
if (obj.receipt_versions !== undefined) {
|
|
78
|
+
if (!Array.isArray(obj.receipt_versions)) {
|
|
79
|
+
throw new Error('receipt_versions must be an array');
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
if (obj.algorithms !== undefined) {
|
|
83
|
+
if (!Array.isArray(obj.algorithms)) {
|
|
84
|
+
throw new Error('algorithms must be an array');
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
if (obj.payment_rails !== undefined) {
|
|
88
|
+
if (!Array.isArray(obj.payment_rails)) {
|
|
89
|
+
throw new Error('payment_rails must be an array');
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
return {
|
|
93
|
+
version: obj.version,
|
|
94
|
+
issuer: obj.issuer,
|
|
95
|
+
jwks_uri: obj.jwks_uri,
|
|
96
|
+
verify_endpoint: obj.verify_endpoint,
|
|
97
|
+
receipt_versions: obj.receipt_versions,
|
|
98
|
+
algorithms: obj.algorithms,
|
|
99
|
+
payment_rails: obj.payment_rails,
|
|
100
|
+
security_contact: obj.security_contact,
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Fetch PEAC issuer configuration from an issuer URL
|
|
105
|
+
*
|
|
106
|
+
* @param issuerUrl - Issuer URL (https://)
|
|
107
|
+
* @returns Parsed issuer configuration
|
|
108
|
+
* @throws Error if fetch or validation fails
|
|
109
|
+
*/
|
|
110
|
+
async function fetchIssuerConfig(issuerUrl) {
|
|
111
|
+
if (!issuerUrl.startsWith('https://')) {
|
|
112
|
+
throw new Error('Issuer URL must be https://');
|
|
113
|
+
}
|
|
114
|
+
// Remove trailing slash for consistent URL construction
|
|
115
|
+
const baseUrl = issuerUrl.replace(/\/$/, '');
|
|
116
|
+
const configUrl = `${baseUrl}${schema_1.PEAC_ISSUER_CONFIG_PATH}`;
|
|
117
|
+
try {
|
|
118
|
+
const resp = await fetch(configUrl, {
|
|
119
|
+
headers: { Accept: 'application/json' },
|
|
120
|
+
signal: AbortSignal.timeout(10000),
|
|
121
|
+
});
|
|
122
|
+
if (!resp.ok) {
|
|
123
|
+
throw new Error(`Issuer config fetch failed: ${resp.status}`);
|
|
124
|
+
}
|
|
125
|
+
const text = await resp.text();
|
|
126
|
+
const config = parseIssuerConfig(text);
|
|
127
|
+
// Verify issuer matches
|
|
128
|
+
const normalizedExpected = baseUrl.replace(/\/$/, '');
|
|
129
|
+
const normalizedActual = config.issuer.replace(/\/$/, '');
|
|
130
|
+
if (normalizedActual !== normalizedExpected) {
|
|
131
|
+
throw new Error(`Issuer mismatch: expected ${normalizedExpected}, got ${normalizedActual}`);
|
|
132
|
+
}
|
|
133
|
+
return config;
|
|
134
|
+
}
|
|
135
|
+
catch (err) {
|
|
136
|
+
throw new Error(`Failed to fetch issuer config from ${issuerUrl}: ${err instanceof Error ? err.message : String(err)}`);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
// ============================================================================
|
|
140
|
+
// Policy Manifest (/.well-known/peac.txt)
|
|
141
|
+
// ============================================================================
|
|
142
|
+
/**
|
|
143
|
+
* Detect if content is JSON or YAML
|
|
144
|
+
*/
|
|
145
|
+
function isJsonContent(text, contentType) {
|
|
146
|
+
if (contentType?.includes('application/json')) {
|
|
147
|
+
return true;
|
|
148
|
+
}
|
|
149
|
+
const firstChar = text.trimStart()[0];
|
|
150
|
+
return firstChar === '{';
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Parse PEAC policy manifest from YAML or JSON
|
|
154
|
+
*
|
|
155
|
+
* @param text - Policy manifest text (YAML or JSON)
|
|
156
|
+
* @param contentType - Optional Content-Type header value
|
|
157
|
+
* @returns Parsed policy manifest
|
|
158
|
+
* @throws Error if validation fails
|
|
159
|
+
*/
|
|
160
|
+
function parsePolicyManifest(text, contentType) {
|
|
17
161
|
const bytes = new TextEncoder().encode(text).length;
|
|
18
|
-
if (bytes > schema_1.
|
|
19
|
-
throw new Error(`
|
|
162
|
+
if (bytes > schema_1.PEAC_POLICY_MAX_BYTES) {
|
|
163
|
+
throw new Error(`Policy manifest exceeds ${schema_1.PEAC_POLICY_MAX_BYTES} bytes (got ${bytes})`);
|
|
20
164
|
}
|
|
21
|
-
|
|
22
|
-
if (
|
|
23
|
-
|
|
165
|
+
let manifest;
|
|
166
|
+
if (isJsonContent(text, contentType)) {
|
|
167
|
+
// Parse as JSON
|
|
168
|
+
try {
|
|
169
|
+
manifest = JSON.parse(text);
|
|
170
|
+
}
|
|
171
|
+
catch {
|
|
172
|
+
throw new Error('Policy manifest is not valid JSON');
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
// Parse as simple YAML (key: value format)
|
|
177
|
+
manifest = parseSimpleYaml(text);
|
|
178
|
+
}
|
|
179
|
+
// Validate required fields
|
|
180
|
+
if (typeof manifest.version !== 'string' || !manifest.version) {
|
|
181
|
+
throw new Error('Missing required field: version');
|
|
182
|
+
}
|
|
183
|
+
// Validate version format: must be peac-policy/<major>.<minor>
|
|
184
|
+
if (!manifest.version.startsWith('peac-policy/')) {
|
|
185
|
+
throw new Error(`Invalid version format: "${manifest.version}". Must start with "peac-policy/" (e.g., "peac-policy/0.1")`);
|
|
24
186
|
}
|
|
25
|
-
|
|
26
|
-
|
|
187
|
+
if (manifest.usage !== 'open' && manifest.usage !== 'conditional') {
|
|
188
|
+
throw new Error('Missing or invalid field: usage (must be "open" or "conditional")');
|
|
189
|
+
}
|
|
190
|
+
return {
|
|
191
|
+
version: manifest.version,
|
|
192
|
+
usage: manifest.usage,
|
|
193
|
+
purposes: manifest.purposes,
|
|
194
|
+
receipts: manifest.receipts,
|
|
195
|
+
attribution: manifest.attribution,
|
|
196
|
+
rate_limit: manifest.rate_limit,
|
|
197
|
+
daily_limit: manifest.daily_limit,
|
|
198
|
+
negotiate: manifest.negotiate,
|
|
199
|
+
contact: manifest.contact,
|
|
200
|
+
license: manifest.license,
|
|
201
|
+
price: manifest.price,
|
|
202
|
+
currency: manifest.currency,
|
|
203
|
+
payment_methods: manifest.payment_methods,
|
|
204
|
+
payment_endpoint: manifest.payment_endpoint,
|
|
27
205
|
};
|
|
28
|
-
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Parse simple YAML (key: value format, no complex features)
|
|
209
|
+
* Rejects YAML features that are security risks (anchors, aliases, tags)
|
|
210
|
+
*/
|
|
211
|
+
function parseSimpleYaml(text) {
|
|
212
|
+
const lines = text.split('\n');
|
|
213
|
+
const result = {};
|
|
214
|
+
// Security: reject YAML features that are dangerous
|
|
215
|
+
// Check merge keys first (they contain * which would trigger anchor check)
|
|
216
|
+
if (text.includes('<<:')) {
|
|
217
|
+
throw new Error('YAML merge keys are not allowed');
|
|
218
|
+
}
|
|
219
|
+
if (text.includes('&') || text.includes('*')) {
|
|
220
|
+
throw new Error('YAML anchors and aliases are not allowed');
|
|
221
|
+
}
|
|
222
|
+
if (/!\w+/.test(text)) {
|
|
223
|
+
throw new Error('YAML custom tags are not allowed');
|
|
224
|
+
}
|
|
225
|
+
// Count document separators
|
|
226
|
+
const docSeparators = text.match(/^---$/gm);
|
|
227
|
+
if (docSeparators && docSeparators.length > 1) {
|
|
228
|
+
throw new Error('Multi-document YAML is not allowed');
|
|
229
|
+
}
|
|
29
230
|
for (const line of lines) {
|
|
30
231
|
const trimmed = line.trim();
|
|
31
|
-
|
|
32
|
-
|
|
232
|
+
// Skip empty lines, comments, and document markers
|
|
233
|
+
if (!trimmed || trimmed.startsWith('#') || trimmed === '---') {
|
|
234
|
+
continue;
|
|
33
235
|
}
|
|
34
|
-
|
|
35
|
-
|
|
236
|
+
// Parse key: value
|
|
237
|
+
const colonIndex = trimmed.indexOf(':');
|
|
238
|
+
if (colonIndex === -1)
|
|
36
239
|
continue;
|
|
240
|
+
const key = trimmed.slice(0, colonIndex).trim();
|
|
241
|
+
let value = trimmed.slice(colonIndex + 1).trim();
|
|
242
|
+
// Parse value types
|
|
243
|
+
if (value === '') {
|
|
244
|
+
value = undefined;
|
|
37
245
|
}
|
|
38
|
-
if (
|
|
39
|
-
//
|
|
40
|
-
if (
|
|
41
|
-
|
|
42
|
-
|
|
246
|
+
else if (typeof value === 'string') {
|
|
247
|
+
// Remove quotes if present
|
|
248
|
+
if ((value.startsWith('"') && value.endsWith('"')) ||
|
|
249
|
+
(value.startsWith("'") && value.endsWith("'"))) {
|
|
250
|
+
value = value.slice(1, -1);
|
|
251
|
+
}
|
|
252
|
+
// Parse arrays [a, b, c]
|
|
253
|
+
else if (value.startsWith('[') && value.endsWith(']')) {
|
|
254
|
+
const inner = value.slice(1, -1);
|
|
255
|
+
value = inner
|
|
256
|
+
.split(',')
|
|
257
|
+
.map((s) => s.trim())
|
|
258
|
+
.filter((s) => s.length > 0);
|
|
43
259
|
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
discovery.payments[discovery.payments.length - 1].info = info;
|
|
48
|
-
}
|
|
260
|
+
// Parse numbers
|
|
261
|
+
else if (/^-?\d+(\.\d+)?$/.test(value)) {
|
|
262
|
+
value = parseFloat(value);
|
|
49
263
|
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
264
|
+
// Parse booleans
|
|
265
|
+
else if (value === 'true') {
|
|
266
|
+
value = true;
|
|
267
|
+
}
|
|
268
|
+
else if (value === 'false') {
|
|
269
|
+
value = false;
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
if (value !== undefined) {
|
|
273
|
+
result[key] = value;
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
return result;
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* Fetch PEAC policy manifest from a domain
|
|
280
|
+
*
|
|
281
|
+
* @param baseUrl - Base URL (https://example.com)
|
|
282
|
+
* @returns Parsed policy manifest
|
|
283
|
+
* @throws Error if fetch or validation fails
|
|
284
|
+
*/
|
|
285
|
+
async function fetchPolicyManifest(baseUrl) {
|
|
286
|
+
if (!baseUrl.startsWith('https://') && !baseUrl.startsWith('http://localhost')) {
|
|
287
|
+
throw new Error('Base URL must be https://');
|
|
288
|
+
}
|
|
289
|
+
const normalizedBase = baseUrl.replace(/\/$/, '');
|
|
290
|
+
const primaryUrl = `${normalizedBase}${schema_1.PEAC_POLICY_PATH}`;
|
|
291
|
+
const fallbackUrl = `${normalizedBase}${schema_1.PEAC_POLICY_FALLBACK_PATH}`;
|
|
292
|
+
// Try primary location first
|
|
293
|
+
try {
|
|
294
|
+
const resp = await fetch(primaryUrl, {
|
|
295
|
+
headers: { Accept: 'text/plain, application/json' },
|
|
296
|
+
signal: AbortSignal.timeout(5000),
|
|
297
|
+
});
|
|
298
|
+
if (resp.ok) {
|
|
299
|
+
const text = await resp.text();
|
|
300
|
+
const contentType = resp.headers.get('content-type') || undefined;
|
|
301
|
+
return parsePolicyManifest(text, contentType);
|
|
302
|
+
}
|
|
303
|
+
// If 404, try fallback
|
|
304
|
+
if (resp.status === 404) {
|
|
305
|
+
const fallbackResp = await fetch(fallbackUrl, {
|
|
306
|
+
headers: { Accept: 'text/plain, application/json' },
|
|
307
|
+
signal: AbortSignal.timeout(5000),
|
|
308
|
+
});
|
|
309
|
+
if (fallbackResp.ok) {
|
|
310
|
+
const text = await fallbackResp.text();
|
|
311
|
+
const contentType = fallbackResp.headers.get('content-type') || undefined;
|
|
312
|
+
return parsePolicyManifest(text, contentType);
|
|
53
313
|
}
|
|
314
|
+
throw new Error('Policy manifest not found at primary or fallback location');
|
|
54
315
|
}
|
|
55
|
-
|
|
316
|
+
throw new Error(`Policy manifest fetch failed: ${resp.status}`);
|
|
317
|
+
}
|
|
318
|
+
catch (err) {
|
|
319
|
+
throw new Error(`Failed to fetch policy manifest from ${baseUrl}: ${err instanceof Error ? err.message : String(err)}`);
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
// ============================================================================
|
|
323
|
+
// Deprecated Legacy API (for backward compatibility)
|
|
324
|
+
// ============================================================================
|
|
325
|
+
/**
|
|
326
|
+
* @deprecated Use parseIssuerConfig instead. Will be removed in v1.0.
|
|
327
|
+
*
|
|
328
|
+
* Parse a PEAC discovery manifest from YAML-like text.
|
|
329
|
+
* This function is maintained for backward compatibility only.
|
|
330
|
+
*/
|
|
331
|
+
function parseDiscovery(text) {
|
|
332
|
+
const bytes = new TextEncoder().encode(text).length;
|
|
333
|
+
if (bytes > 2000) {
|
|
334
|
+
throw new Error(`Discovery manifest exceeds 2000 bytes (got ${bytes})`);
|
|
335
|
+
}
|
|
336
|
+
const lines = text.trim().split('\n');
|
|
337
|
+
if (lines.length > 20) {
|
|
338
|
+
throw new Error(`Discovery manifest exceeds 20 lines (got ${lines.length})`);
|
|
339
|
+
}
|
|
340
|
+
const discovery = {};
|
|
341
|
+
for (const line of lines) {
|
|
342
|
+
const trimmed = line.trim();
|
|
343
|
+
if (!trimmed || trimmed.startsWith('#')) {
|
|
344
|
+
continue;
|
|
345
|
+
}
|
|
346
|
+
if (trimmed.includes(':')) {
|
|
56
347
|
const [key, ...valueParts] = trimmed.split(':');
|
|
57
348
|
const value = valueParts.join(':').trim();
|
|
58
349
|
switch (key.trim()) {
|
|
@@ -63,19 +354,13 @@ function parseDiscovery(text) {
|
|
|
63
354
|
discovery.issuer = value;
|
|
64
355
|
break;
|
|
65
356
|
case 'verify':
|
|
66
|
-
discovery.
|
|
357
|
+
discovery.verify_endpoint = value;
|
|
67
358
|
break;
|
|
68
359
|
case 'jwks':
|
|
69
|
-
discovery.
|
|
70
|
-
break;
|
|
71
|
-
case 'aipref':
|
|
72
|
-
discovery.aipref = value;
|
|
73
|
-
break;
|
|
74
|
-
case 'slos':
|
|
75
|
-
discovery.slos = value;
|
|
360
|
+
discovery.jwks_uri = value;
|
|
76
361
|
break;
|
|
77
362
|
case 'security':
|
|
78
|
-
discovery.
|
|
363
|
+
discovery.security_contact = value;
|
|
79
364
|
break;
|
|
80
365
|
}
|
|
81
366
|
}
|
|
@@ -85,17 +370,17 @@ function parseDiscovery(text) {
|
|
|
85
370
|
throw new Error('Missing required field: version');
|
|
86
371
|
if (!discovery.issuer)
|
|
87
372
|
throw new Error('Missing required field: issuer');
|
|
88
|
-
if (!discovery.
|
|
373
|
+
if (!discovery.verify_endpoint)
|
|
89
374
|
throw new Error('Missing required field: verify');
|
|
90
|
-
if (!discovery.
|
|
375
|
+
if (!discovery.jwks_uri)
|
|
91
376
|
throw new Error('Missing required field: jwks');
|
|
92
377
|
return discovery;
|
|
93
378
|
}
|
|
94
379
|
/**
|
|
95
|
-
*
|
|
380
|
+
* @deprecated Use fetchIssuerConfig instead. Will be removed in v1.0.
|
|
96
381
|
*
|
|
97
|
-
*
|
|
98
|
-
*
|
|
382
|
+
* Fetch and parse PEAC discovery from an issuer URL.
|
|
383
|
+
* This function is maintained for backward compatibility only.
|
|
99
384
|
*/
|
|
100
385
|
async function fetchDiscovery(issuerUrl) {
|
|
101
386
|
if (!issuerUrl.startsWith('https://')) {
|
package/dist/discovery.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discovery.js","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"discovery.js","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@peac/protocol",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.10.0",
|
|
4
4
|
"description": "PEAC protocol implementation - receipt issuance and verification",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -25,10 +25,10 @@
|
|
|
25
25
|
"dependencies": {
|
|
26
26
|
"uuidv7": "^0.6.3",
|
|
27
27
|
"zod": "^3.22.4",
|
|
28
|
-
"@peac/kernel": "0.
|
|
29
|
-
"@peac/
|
|
30
|
-
"@peac/
|
|
31
|
-
"@peac/crypto": "0.
|
|
28
|
+
"@peac/kernel": "0.10.0",
|
|
29
|
+
"@peac/telemetry": "0.10.0",
|
|
30
|
+
"@peac/schema": "0.10.0",
|
|
31
|
+
"@peac/crypto": "0.10.0"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
34
|
"@types/node": "^20.10.0",
|