@peac/disc 0.9.18
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/README.md +23 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +35 -0
- package/dist/index.js.map +1 -0
- package/dist/parser.d.ts +9 -0
- package/dist/parser.d.ts.map +1 -0
- package/dist/parser.js +135 -0
- package/dist/parser.js.map +1 -0
- package/dist/types.d.ts +28 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/package.json +53 -0
package/README.md
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# @peac/disc
|
|
2
|
+
|
|
3
|
+
PEAC discovery with ≤20 lines enforcement
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
pnpm add @peac/disc
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Documentation
|
|
12
|
+
|
|
13
|
+
See [peacprotocol.org](https://peacprotocol.org) for full documentation.
|
|
14
|
+
|
|
15
|
+
## License
|
|
16
|
+
|
|
17
|
+
Apache-2.0
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
PEAC Protocol is an open source project stewarded by Originary and community contributors.
|
|
22
|
+
|
|
23
|
+
[Originary](https://www.originary.xyz) | [Docs](https://peacprotocol.org) | [GitHub](https://github.com/peacprotocol/peac)
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @peac/disc - PEAC discovery with ≤20 lines enforcement
|
|
3
|
+
* ABNF-compliant .well-known/peac.txt parser and generator
|
|
4
|
+
*/
|
|
5
|
+
export { parse, emit, validate } from './parser.js';
|
|
6
|
+
export type { PeacDiscovery, PublicKeyInfo, ParseResult, ValidationOptions } from './types.js';
|
|
7
|
+
export declare const VERSION = "0.9.15";
|
|
8
|
+
export declare const MAX_LINES = 20;
|
|
9
|
+
export declare const WELL_KNOWN_PATH = "/.well-known/peac.txt";
|
|
10
|
+
export declare function discover(origin: string): Promise<import('./types.js').ParseResult>;
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACpD,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAG/F,eAAO,MAAM,OAAO,WAAW,CAAC;AAChC,eAAO,MAAM,SAAS,KAAK,CAAC;AAC5B,eAAO,MAAM,eAAe,0BAA0B,CAAC;AAKvD,wBAAsB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,YAAY,EAAE,WAAW,CAAC,CAuBxF"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @peac/disc - PEAC discovery with ≤20 lines enforcement
|
|
3
|
+
* ABNF-compliant .well-known/peac.txt parser and generator
|
|
4
|
+
*/
|
|
5
|
+
export { parse, emit, validate } from './parser.js';
|
|
6
|
+
// Constants
|
|
7
|
+
export const VERSION = '0.9.15';
|
|
8
|
+
export const MAX_LINES = 20;
|
|
9
|
+
export const WELL_KNOWN_PATH = '/.well-known/peac.txt';
|
|
10
|
+
const UA = `PEAC/${VERSION} (+https://peacprotocol.org)`;
|
|
11
|
+
// Convenience function for fetching and parsing discovery documents
|
|
12
|
+
export async function discover(origin) {
|
|
13
|
+
try {
|
|
14
|
+
const url = new URL(WELL_KNOWN_PATH, origin);
|
|
15
|
+
const response = await fetch(url.toString(), {
|
|
16
|
+
headers: { 'User-Agent': UA },
|
|
17
|
+
});
|
|
18
|
+
if (!response.ok) {
|
|
19
|
+
return {
|
|
20
|
+
valid: false,
|
|
21
|
+
errors: [`HTTP ${response.status}: ${response.statusText}`],
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
const content = await response.text();
|
|
25
|
+
const { parse } = await import('./parser.js');
|
|
26
|
+
return parse(content);
|
|
27
|
+
}
|
|
28
|
+
catch (error) {
|
|
29
|
+
return {
|
|
30
|
+
valid: false,
|
|
31
|
+
errors: [`Discovery failed: ${error instanceof Error ? error.message : String(error)}`],
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGpD,YAAY;AACZ,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC;AAChC,MAAM,CAAC,MAAM,SAAS,GAAG,EAAE,CAAC;AAC5B,MAAM,CAAC,MAAM,eAAe,GAAG,uBAAuB,CAAC;AAEvD,MAAM,EAAE,GAAG,QAAQ,OAAO,8BAA8B,CAAC;AAEzD,oEAAoE;AACpE,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,MAAc;IAC3C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;QAC7C,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE;YAC3C,OAAO,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE;SAC9B,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,MAAM,EAAE,CAAC,QAAQ,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,UAAU,EAAE,CAAC;aAC5D,CAAC;QACJ,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACtC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;QAC9C,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC;IACxB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE,CAAC,qBAAqB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;SACxF,CAAC;IACJ,CAAC;AACH,CAAC"}
|
package/dist/parser.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @peac/disc/parser - peac.txt parser with ≤20 lines enforcement
|
|
3
|
+
* ABNF-compliant discovery document parsing
|
|
4
|
+
*/
|
|
5
|
+
import type { PeacDiscovery, ParseResult, ValidationOptions } from './types.js';
|
|
6
|
+
export declare function parse(content: string, options?: ValidationOptions): ParseResult;
|
|
7
|
+
export declare function emit(data: PeacDiscovery): string;
|
|
8
|
+
export declare function validate(content: string): boolean;
|
|
9
|
+
//# sourceMappingURL=parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAiB,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAa/F,wBAAgB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,iBAAsB,GAAG,WAAW,CAsEnF;AA6BD,wBAAgB,IAAI,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAuChD;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAGjD"}
|
package/dist/parser.js
ADDED
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @peac/disc/parser - peac.txt parser with ≤20 lines enforcement
|
|
3
|
+
* ABNF-compliant discovery document parsing
|
|
4
|
+
*/
|
|
5
|
+
const MAX_LINES = 20;
|
|
6
|
+
const FIELD_PATTERNS = {
|
|
7
|
+
preferences: /^preferences:\s*(.+)$/,
|
|
8
|
+
access_control: /^access_control:\s*(.+)$/,
|
|
9
|
+
payments: /^payments:\s*\[([^\]]+)\]$/,
|
|
10
|
+
provenance: /^provenance:\s*(.+)$/,
|
|
11
|
+
receipts: /^receipts:\s*(required|optional)$/,
|
|
12
|
+
verify: /^verify:\s*(.+)$/,
|
|
13
|
+
public_keys: /^public_keys:\s*\[([^\]]+)\]$/,
|
|
14
|
+
};
|
|
15
|
+
export function parse(content, options = {}) {
|
|
16
|
+
const maxLines = options.maxLines ?? MAX_LINES;
|
|
17
|
+
const errors = [];
|
|
18
|
+
const data = {};
|
|
19
|
+
const lines = content
|
|
20
|
+
.split('\n')
|
|
21
|
+
.map((l) => l.trim())
|
|
22
|
+
.filter((l) => l && !l.startsWith('#'));
|
|
23
|
+
// Enforce line limit
|
|
24
|
+
if (lines.length > maxLines) {
|
|
25
|
+
return {
|
|
26
|
+
valid: false,
|
|
27
|
+
errors: [`Line limit exceeded: ${lines.length} > ${maxLines}`],
|
|
28
|
+
lineCount: lines.length,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
// Parse each line
|
|
32
|
+
for (const [index, line] of lines.entries()) {
|
|
33
|
+
let matched = false;
|
|
34
|
+
for (const [field, pattern] of Object.entries(FIELD_PATTERNS)) {
|
|
35
|
+
const match = line.match(pattern);
|
|
36
|
+
if (match) {
|
|
37
|
+
matched = true;
|
|
38
|
+
try {
|
|
39
|
+
switch (field) {
|
|
40
|
+
case 'preferences':
|
|
41
|
+
case 'access_control':
|
|
42
|
+
case 'provenance':
|
|
43
|
+
case 'verify':
|
|
44
|
+
data[field] = match[1].trim();
|
|
45
|
+
break;
|
|
46
|
+
case 'receipts':
|
|
47
|
+
data.receipts = match[1];
|
|
48
|
+
break;
|
|
49
|
+
case 'payments':
|
|
50
|
+
data.payments = parseArray(match[1]);
|
|
51
|
+
break;
|
|
52
|
+
case 'public_keys':
|
|
53
|
+
data.public_keys = parsePublicKeys(match[1]);
|
|
54
|
+
break;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
errors.push(`Line ${index + 1}: ${error instanceof Error ? error.message : String(error)}`);
|
|
59
|
+
}
|
|
60
|
+
break;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
if (!matched) {
|
|
64
|
+
errors.push(`Line ${index + 1}: Invalid format: ${line}`);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
// Validate required fields
|
|
68
|
+
if (!data.verify) {
|
|
69
|
+
errors.push('Missing required field: verify');
|
|
70
|
+
}
|
|
71
|
+
return {
|
|
72
|
+
valid: errors.length === 0,
|
|
73
|
+
data: errors.length === 0 ? data : undefined,
|
|
74
|
+
errors: errors.length > 0 ? errors : undefined,
|
|
75
|
+
lineCount: lines.length,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
function parseArray(content) {
|
|
79
|
+
return content
|
|
80
|
+
.split(',')
|
|
81
|
+
.map((item) => item.trim().replace(/^["']|["']$/g, ''))
|
|
82
|
+
.filter((item) => item.length > 0);
|
|
83
|
+
}
|
|
84
|
+
function parsePublicKeys(content) {
|
|
85
|
+
const keyStrings = parseArray(content);
|
|
86
|
+
const keys = [];
|
|
87
|
+
for (const keyString of keyStrings) {
|
|
88
|
+
const keyMatch = keyString.match(/^([^:]+):([^:]+):(.+)$/);
|
|
89
|
+
if (!keyMatch) {
|
|
90
|
+
throw new Error(`Invalid public key format: ${keyString}`);
|
|
91
|
+
}
|
|
92
|
+
keys.push({
|
|
93
|
+
kid: keyMatch[1],
|
|
94
|
+
alg: keyMatch[2],
|
|
95
|
+
key: keyMatch[3],
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
return keys;
|
|
99
|
+
}
|
|
100
|
+
export function emit(data) {
|
|
101
|
+
const lines = [];
|
|
102
|
+
if (data.preferences) {
|
|
103
|
+
lines.push(`preferences: ${data.preferences}`);
|
|
104
|
+
}
|
|
105
|
+
if (data.access_control) {
|
|
106
|
+
lines.push(`access_control: ${data.access_control}`);
|
|
107
|
+
}
|
|
108
|
+
if (data.payments && data.payments.length > 0) {
|
|
109
|
+
const paymentsStr = data.payments.map((p) => `"${p}"`).join(', ');
|
|
110
|
+
lines.push(`payments: [${paymentsStr}]`);
|
|
111
|
+
}
|
|
112
|
+
if (data.provenance) {
|
|
113
|
+
lines.push(`provenance: ${data.provenance}`);
|
|
114
|
+
}
|
|
115
|
+
if (data.receipts) {
|
|
116
|
+
lines.push(`receipts: ${data.receipts}`);
|
|
117
|
+
}
|
|
118
|
+
if (data.verify) {
|
|
119
|
+
lines.push(`verify: ${data.verify}`);
|
|
120
|
+
}
|
|
121
|
+
if (data.public_keys && data.public_keys.length > 0) {
|
|
122
|
+
const keysStr = data.public_keys.map((k) => `"${k.kid}:${k.alg}:${k.key}"`).join(', ');
|
|
123
|
+
lines.push(`public_keys: [${keysStr}]`);
|
|
124
|
+
}
|
|
125
|
+
// Enforce line limit during emission
|
|
126
|
+
if (lines.length > MAX_LINES) {
|
|
127
|
+
throw new Error(`Generated peac.txt exceeds ${MAX_LINES} lines: ${lines.length}`);
|
|
128
|
+
}
|
|
129
|
+
return lines.join('\n');
|
|
130
|
+
}
|
|
131
|
+
export function validate(content) {
|
|
132
|
+
const result = parse(content);
|
|
133
|
+
return result.valid;
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @peac/disc/types - Discovery types for .well-known/peac.txt
|
|
3
|
+
*/
|
|
4
|
+
export interface PeacDiscovery {
|
|
5
|
+
preferences?: string;
|
|
6
|
+
access_control?: string;
|
|
7
|
+
payments?: string[];
|
|
8
|
+
provenance?: string;
|
|
9
|
+
receipts?: 'required' | 'optional';
|
|
10
|
+
verify?: string;
|
|
11
|
+
public_keys?: PublicKeyInfo[];
|
|
12
|
+
}
|
|
13
|
+
export interface PublicKeyInfo {
|
|
14
|
+
kid: string;
|
|
15
|
+
alg: string;
|
|
16
|
+
key: string;
|
|
17
|
+
}
|
|
18
|
+
export interface ParseResult {
|
|
19
|
+
valid: boolean;
|
|
20
|
+
data?: PeacDiscovery;
|
|
21
|
+
errors?: string[];
|
|
22
|
+
lineCount?: number;
|
|
23
|
+
}
|
|
24
|
+
export interface ValidationOptions {
|
|
25
|
+
maxLines?: number;
|
|
26
|
+
strictAbnf?: boolean;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,aAAa;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,UAAU,GAAG,UAAU,CAAC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,aAAa,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
package/package.json
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@peac/disc",
|
|
3
|
+
"version": "0.9.18",
|
|
4
|
+
"description": "PEAC discovery with ≤20 lines enforcement",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./dist/index.d.ts",
|
|
11
|
+
"import": "./dist/index.js",
|
|
12
|
+
"require": "./dist/index.js",
|
|
13
|
+
"default": "./dist/index.js"
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
"files": [
|
|
17
|
+
"dist",
|
|
18
|
+
"package.json",
|
|
19
|
+
"README.md",
|
|
20
|
+
"LICENSE"
|
|
21
|
+
],
|
|
22
|
+
"scripts": {
|
|
23
|
+
"build": "tsc",
|
|
24
|
+
"build:types": "tsc -b",
|
|
25
|
+
"test": "node --test src/*.test.js",
|
|
26
|
+
"lint": "echo 'Lint temporarily disabled due to workspace dependencies - run from root'",
|
|
27
|
+
"typecheck": "tsc --noEmit"
|
|
28
|
+
},
|
|
29
|
+
"dependencies": {},
|
|
30
|
+
"devDependencies": {
|
|
31
|
+
"typescript": "^5.0.0"
|
|
32
|
+
},
|
|
33
|
+
"keywords": [
|
|
34
|
+
"peac",
|
|
35
|
+
"discovery",
|
|
36
|
+
"well-known",
|
|
37
|
+
"abnf"
|
|
38
|
+
],
|
|
39
|
+
"license": "Apache-2.0",
|
|
40
|
+
"repository": {
|
|
41
|
+
"type": "git",
|
|
42
|
+
"url": "https://github.com/peacprotocol/peac.git",
|
|
43
|
+
"directory": "packages/discovery"
|
|
44
|
+
},
|
|
45
|
+
"bugs": {
|
|
46
|
+
"url": "https://github.com/peacprotocol/peac/issues"
|
|
47
|
+
},
|
|
48
|
+
"homepage": "https://github.com/peacprotocol/peac#readme",
|
|
49
|
+
"publishConfig": {
|
|
50
|
+
"access": "public"
|
|
51
|
+
},
|
|
52
|
+
"sideEffects": false
|
|
53
|
+
}
|