@vibe-agent-toolkit/resources 0.1.39-rc.1 → 0.1.39-rc.2
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/frontmatter-link-validator.d.ts +4 -4
- package/dist/frontmatter-link-validator.d.ts.map +1 -1
- package/dist/frontmatter-link-validator.js +3 -3
- package/dist/frontmatter-link-validator.js.map +1 -1
- package/dist/html-link-parser.d.ts +47 -0
- package/dist/html-link-parser.d.ts.map +1 -0
- package/dist/html-link-parser.js +111 -0
- package/dist/html-link-parser.js.map +1 -0
- package/dist/html-transform.d.ts +45 -0
- package/dist/html-transform.d.ts.map +1 -0
- package/dist/html-transform.js +116 -0
- package/dist/html-transform.js.map +1 -0
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/link-parser.d.ts +26 -2
- package/dist/link-parser.d.ts.map +1 -1
- package/dist/link-parser.js +28 -1
- package/dist/link-parser.js.map +1 -1
- package/dist/link-validator.d.ts +50 -3
- package/dist/link-validator.d.ts.map +1 -1
- package/dist/link-validator.js +72 -55
- package/dist/link-validator.js.map +1 -1
- package/dist/resource-registry.d.ts +46 -11
- package/dist/resource-registry.d.ts.map +1 -1
- package/dist/resource-registry.js +140 -34
- package/dist/resource-registry.js.map +1 -1
- package/dist/schemas/link-auth.d.ts +382 -0
- package/dist/schemas/link-auth.d.ts.map +1 -0
- package/dist/schemas/link-auth.js +124 -0
- package/dist/schemas/link-auth.js.map +1 -0
- package/dist/schemas/project-config.d.ts +642 -98
- package/dist/schemas/project-config.d.ts.map +1 -1
- package/dist/schemas/project-config.js +3 -0
- package/dist/schemas/project-config.js.map +1 -1
- package/dist/schemas/resource-metadata.d.ts +46 -10
- package/dist/schemas/resource-metadata.d.ts.map +1 -1
- package/dist/schemas/resource-metadata.js +14 -1
- package/dist/schemas/resource-metadata.js.map +1 -1
- package/package.json +4 -3
- package/src/frontmatter-link-validator.ts +5 -5
- package/src/html-link-parser.ts +140 -0
- package/src/html-transform.ts +157 -0
- package/src/index.ts +6 -1
- package/src/link-parser.ts +35 -2
- package/src/link-validator.ts +102 -82
- package/src/resource-registry.ts +157 -39
- package/src/schemas/link-auth.ts +146 -0
- package/src/schemas/project-config.ts +4 -0
- package/src/schemas/resource-metadata.ts +17 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-config.d.ts","sourceRoot":"","sources":["../../src/schemas/project-config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"project-config.d.ts","sourceRoot":"","sources":["../../src/schemas/project-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ValidationConfigSchema } from '@vibe-agent-toolkit/agent-schema';
|
|
2
2
|
import { z } from 'zod';
|
|
3
|
+
import { LinkAuthConfigSchema } from './link-auth.js';
|
|
3
4
|
/**
|
|
4
5
|
* Official semver regex from https://semver.org/ (anchored).
|
|
5
6
|
*
|
|
@@ -83,6 +84,8 @@ export const ResourcesConfigSchema = z.object({
|
|
|
83
84
|
.describe('Named collections of resources'),
|
|
84
85
|
validation: ValidationConfigSchema.optional()
|
|
85
86
|
.describe('Validation framework config: severity overrides and per-code allow entries (applied inside ResourceRegistry.validate)'),
|
|
87
|
+
linkAuth: LinkAuthConfigSchema.optional()
|
|
88
|
+
.describe('Authenticated external link resolution config (issue #113 / link-auth engine)'),
|
|
86
89
|
}).describe('Resources section of project configuration');
|
|
87
90
|
// ---------------------------------------------------------------------------
|
|
88
91
|
// Skill packaging configuration (self-contained — no agent-schema dependency)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-config.js","sourceRoot":"","sources":["../../src/schemas/project-config.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"project-config.js","sourceRoot":"","sources":["../../src/schemas/project-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,12 +3,13 @@ import { z } from 'zod';
|
|
|
3
3
|
* Type of link found in markdown resources.
|
|
4
4
|
*
|
|
5
5
|
* - `local_file`: Link to a local file (relative or absolute path)
|
|
6
|
+
* - `local_directory`: Link to a local directory, e.g. a ref ending in `/`
|
|
6
7
|
* - `anchor`: Link to a heading anchor (e.g., #heading-slug)
|
|
7
8
|
* - `external`: HTTP/HTTPS URL to external resource
|
|
8
9
|
* - `email`: Mailto link
|
|
9
10
|
* - `unknown`: Unclassified link type
|
|
10
11
|
*/
|
|
11
|
-
export declare const LinkTypeSchema: z.ZodEnum<["local_file", "anchor", "external", "email", "unknown"]>;
|
|
12
|
+
export declare const LinkTypeSchema: z.ZodEnum<["local_file", "local_directory", "anchor", "external", "email", "unknown"]>;
|
|
12
13
|
export type LinkType = z.infer<typeof LinkTypeSchema>;
|
|
13
14
|
/**
|
|
14
15
|
* AST node type that produced a link entry.
|
|
@@ -19,6 +20,20 @@ export type LinkType = z.infer<typeof LinkTypeSchema>;
|
|
|
19
20
|
*/
|
|
20
21
|
export declare const LinkNodeTypeSchema: z.ZodEnum<["link", "linkReference", "definition"]>;
|
|
21
22
|
export type LinkNodeType = z.infer<typeof LinkNodeTypeSchema>;
|
|
23
|
+
/**
|
|
24
|
+
* Zod schema for an HTML well-formedness diagnostic.
|
|
25
|
+
*/
|
|
26
|
+
export declare const HtmlParseErrorSchema: z.ZodObject<{
|
|
27
|
+
message: z.ZodString;
|
|
28
|
+
line: z.ZodOptional<z.ZodNumber>;
|
|
29
|
+
}, "strip", z.ZodTypeAny, {
|
|
30
|
+
message: string;
|
|
31
|
+
line?: number | undefined;
|
|
32
|
+
}, {
|
|
33
|
+
message: string;
|
|
34
|
+
line?: number | undefined;
|
|
35
|
+
}>;
|
|
36
|
+
export type HtmlParseError = z.infer<typeof HtmlParseErrorSchema>;
|
|
22
37
|
/**
|
|
23
38
|
* Represents a heading node in the document's table of contents.
|
|
24
39
|
*
|
|
@@ -48,14 +63,14 @@ export declare const HeadingNodeSchema: z.ZodType<HeadingNode>;
|
|
|
48
63
|
export declare const ResourceLinkSchema: z.ZodObject<{
|
|
49
64
|
text: z.ZodString;
|
|
50
65
|
href: z.ZodString;
|
|
51
|
-
type: z.ZodEnum<["local_file", "anchor", "external", "email", "unknown"]>;
|
|
66
|
+
type: z.ZodEnum<["local_file", "local_directory", "anchor", "external", "email", "unknown"]>;
|
|
52
67
|
line: z.ZodOptional<z.ZodNumber>;
|
|
53
68
|
resolvedPath: z.ZodOptional<z.ZodString>;
|
|
54
69
|
anchorTarget: z.ZodOptional<z.ZodString>;
|
|
55
70
|
resolvedId: z.ZodOptional<z.ZodString>;
|
|
56
71
|
nodeType: z.ZodOptional<z.ZodEnum<["link", "linkReference", "definition"]>>;
|
|
57
72
|
}, "strip", z.ZodTypeAny, {
|
|
58
|
-
type: "anchor" | "
|
|
73
|
+
type: "anchor" | "email" | "unknown" | "local_file" | "local_directory" | "external";
|
|
59
74
|
text: string;
|
|
60
75
|
href: string;
|
|
61
76
|
line?: number | undefined;
|
|
@@ -64,7 +79,7 @@ export declare const ResourceLinkSchema: z.ZodObject<{
|
|
|
64
79
|
resolvedId?: string | undefined;
|
|
65
80
|
nodeType?: "link" | "linkReference" | "definition" | undefined;
|
|
66
81
|
}, {
|
|
67
|
-
type: "anchor" | "
|
|
82
|
+
type: "anchor" | "email" | "unknown" | "local_file" | "local_directory" | "external";
|
|
68
83
|
text: string;
|
|
69
84
|
href: string;
|
|
70
85
|
line?: number | undefined;
|
|
@@ -86,14 +101,14 @@ export declare const ResourceMetadataSchema: z.ZodObject<{
|
|
|
86
101
|
links: z.ZodArray<z.ZodObject<{
|
|
87
102
|
text: z.ZodString;
|
|
88
103
|
href: z.ZodString;
|
|
89
|
-
type: z.ZodEnum<["local_file", "anchor", "external", "email", "unknown"]>;
|
|
104
|
+
type: z.ZodEnum<["local_file", "local_directory", "anchor", "external", "email", "unknown"]>;
|
|
90
105
|
line: z.ZodOptional<z.ZodNumber>;
|
|
91
106
|
resolvedPath: z.ZodOptional<z.ZodString>;
|
|
92
107
|
anchorTarget: z.ZodOptional<z.ZodString>;
|
|
93
108
|
resolvedId: z.ZodOptional<z.ZodString>;
|
|
94
109
|
nodeType: z.ZodOptional<z.ZodEnum<["link", "linkReference", "definition"]>>;
|
|
95
110
|
}, "strip", z.ZodTypeAny, {
|
|
96
|
-
type: "anchor" | "
|
|
111
|
+
type: "anchor" | "email" | "unknown" | "local_file" | "local_directory" | "external";
|
|
97
112
|
text: string;
|
|
98
113
|
href: string;
|
|
99
114
|
line?: number | undefined;
|
|
@@ -102,7 +117,7 @@ export declare const ResourceMetadataSchema: z.ZodObject<{
|
|
|
102
117
|
resolvedId?: string | undefined;
|
|
103
118
|
nodeType?: "link" | "linkReference" | "definition" | undefined;
|
|
104
119
|
}, {
|
|
105
|
-
type: "anchor" | "
|
|
120
|
+
type: "anchor" | "email" | "unknown" | "local_file" | "local_directory" | "external";
|
|
106
121
|
text: string;
|
|
107
122
|
href: string;
|
|
108
123
|
line?: number | undefined;
|
|
@@ -112,6 +127,17 @@ export declare const ResourceMetadataSchema: z.ZodObject<{
|
|
|
112
127
|
nodeType?: "link" | "linkReference" | "definition" | undefined;
|
|
113
128
|
}>, "many">;
|
|
114
129
|
headings: z.ZodArray<z.ZodType<HeadingNode, z.ZodTypeDef, HeadingNode>, "many">;
|
|
130
|
+
anchors: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
131
|
+
parseErrors: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
132
|
+
message: z.ZodString;
|
|
133
|
+
line: z.ZodOptional<z.ZodNumber>;
|
|
134
|
+
}, "strip", z.ZodTypeAny, {
|
|
135
|
+
message: string;
|
|
136
|
+
line?: number | undefined;
|
|
137
|
+
}, {
|
|
138
|
+
message: string;
|
|
139
|
+
line?: number | undefined;
|
|
140
|
+
}>, "many">>;
|
|
115
141
|
frontmatter: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
116
142
|
frontmatterError: z.ZodOptional<z.ZodString>;
|
|
117
143
|
sizeBytes: z.ZodNumber;
|
|
@@ -119,11 +145,11 @@ export declare const ResourceMetadataSchema: z.ZodObject<{
|
|
|
119
145
|
modifiedAt: z.ZodDate;
|
|
120
146
|
checksum: z.ZodBranded<z.ZodString, "SHA256">;
|
|
121
147
|
collections: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
122
|
-
}, "
|
|
148
|
+
}, "strict", z.ZodTypeAny, {
|
|
123
149
|
id: string;
|
|
124
150
|
filePath: string;
|
|
125
151
|
links: {
|
|
126
|
-
type: "anchor" | "
|
|
152
|
+
type: "anchor" | "email" | "unknown" | "local_file" | "local_directory" | "external";
|
|
127
153
|
text: string;
|
|
128
154
|
href: string;
|
|
129
155
|
line?: number | undefined;
|
|
@@ -138,13 +164,18 @@ export declare const ResourceMetadataSchema: z.ZodObject<{
|
|
|
138
164
|
modifiedAt: Date;
|
|
139
165
|
checksum: string & z.BRAND<"SHA256">;
|
|
140
166
|
collections?: string[] | undefined;
|
|
167
|
+
anchors?: string[] | undefined;
|
|
168
|
+
parseErrors?: {
|
|
169
|
+
message: string;
|
|
170
|
+
line?: number | undefined;
|
|
171
|
+
}[] | undefined;
|
|
141
172
|
frontmatter?: Record<string, unknown> | undefined;
|
|
142
173
|
frontmatterError?: string | undefined;
|
|
143
174
|
}, {
|
|
144
175
|
id: string;
|
|
145
176
|
filePath: string;
|
|
146
177
|
links: {
|
|
147
|
-
type: "anchor" | "
|
|
178
|
+
type: "anchor" | "email" | "unknown" | "local_file" | "local_directory" | "external";
|
|
148
179
|
text: string;
|
|
149
180
|
href: string;
|
|
150
181
|
line?: number | undefined;
|
|
@@ -159,6 +190,11 @@ export declare const ResourceMetadataSchema: z.ZodObject<{
|
|
|
159
190
|
modifiedAt: Date;
|
|
160
191
|
checksum: string;
|
|
161
192
|
collections?: string[] | undefined;
|
|
193
|
+
anchors?: string[] | undefined;
|
|
194
|
+
parseErrors?: {
|
|
195
|
+
message: string;
|
|
196
|
+
line?: number | undefined;
|
|
197
|
+
}[] | undefined;
|
|
162
198
|
frontmatter?: Record<string, unknown> | undefined;
|
|
163
199
|
frontmatterError?: string | undefined;
|
|
164
200
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resource-metadata.d.ts","sourceRoot":"","sources":["../../src/schemas/resource-metadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB
|
|
1
|
+
{"version":3,"file":"resource-metadata.d.ts","sourceRoot":"","sources":["../../src/schemas/resource-metadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB;;;;;;;;;GASG;AACH,eAAO,MAAM,cAAc,wFAO4B,CAAC;AAExD,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAEtD;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,oDAIqB,CAAC;AAErD,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;EAGa,CAAC;AAE/C,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE;;;;;GAKG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,QAAQ,CAAC,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC;CACtC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAQpD,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;EASiB,CAAC;AAEjD,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmB8B,CAAC;AAElE,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC"}
|
|
@@ -4,6 +4,7 @@ import { SHA256Schema } from './checksum.js';
|
|
|
4
4
|
* Type of link found in markdown resources.
|
|
5
5
|
*
|
|
6
6
|
* - `local_file`: Link to a local file (relative or absolute path)
|
|
7
|
+
* - `local_directory`: Link to a local directory, e.g. a ref ending in `/`
|
|
7
8
|
* - `anchor`: Link to a heading anchor (e.g., #heading-slug)
|
|
8
9
|
* - `external`: HTTP/HTTPS URL to external resource
|
|
9
10
|
* - `email`: Mailto link
|
|
@@ -11,6 +12,7 @@ import { SHA256Schema } from './checksum.js';
|
|
|
11
12
|
*/
|
|
12
13
|
export const LinkTypeSchema = z.enum([
|
|
13
14
|
'local_file',
|
|
15
|
+
'local_directory',
|
|
14
16
|
'anchor',
|
|
15
17
|
'external',
|
|
16
18
|
'email',
|
|
@@ -28,6 +30,13 @@ export const LinkNodeTypeSchema = z.enum([
|
|
|
28
30
|
'linkReference',
|
|
29
31
|
'definition',
|
|
30
32
|
]).describe('AST node type that produced this link');
|
|
33
|
+
/**
|
|
34
|
+
* Zod schema for an HTML well-formedness diagnostic.
|
|
35
|
+
*/
|
|
36
|
+
export const HtmlParseErrorSchema = z.object({
|
|
37
|
+
message: z.string().describe('parse5 error code (e.g. "missing-end-tag")'),
|
|
38
|
+
line: z.number().int().positive().optional().describe('1-based source line, when known'),
|
|
39
|
+
}).describe('HTML well-formedness diagnostic');
|
|
31
40
|
/**
|
|
32
41
|
* Zod schema for heading nodes in the document's table of contents.
|
|
33
42
|
*
|
|
@@ -68,6 +77,10 @@ export const ResourceMetadataSchema = z.object({
|
|
|
68
77
|
filePath: z.string().describe('Absolute path to the resource file'),
|
|
69
78
|
links: z.array(ResourceLinkSchema).describe('All links found in the resource'),
|
|
70
79
|
headings: z.array(HeadingNodeSchema).describe('Document table of contents (top-level headings only; children are nested)'),
|
|
80
|
+
anchors: z.array(z.string()).optional()
|
|
81
|
+
.describe('Fragment targets for anchor validation (HTML id/name attributes)'),
|
|
82
|
+
parseErrors: z.array(HtmlParseErrorSchema).optional()
|
|
83
|
+
.describe('HTML well-formedness diagnostics (populated for HTML resources only)'),
|
|
71
84
|
frontmatter: z.record(z.string(), z.unknown()).optional()
|
|
72
85
|
.describe('Parsed YAML frontmatter (if present in markdown file)'),
|
|
73
86
|
frontmatterError: z.string().optional()
|
|
@@ -78,5 +91,5 @@ export const ResourceMetadataSchema = z.object({
|
|
|
78
91
|
checksum: SHA256Schema.describe('SHA-256 checksum of file content'),
|
|
79
92
|
collections: z.array(z.string()).optional()
|
|
80
93
|
.describe('Collection names this resource belongs to (populated when using config-based discovery)'),
|
|
81
|
-
}).describe('Complete metadata for a markdown resource');
|
|
94
|
+
}).strict().describe('Complete metadata for a markdown resource');
|
|
82
95
|
//# sourceMappingURL=resource-metadata.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resource-metadata.js","sourceRoot":"","sources":["../../src/schemas/resource-metadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C
|
|
1
|
+
{"version":3,"file":"resource-metadata.js","sourceRoot":"","sources":["../../src/schemas/resource-metadata.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vibe-agent-toolkit/resources",
|
|
3
|
-
"version": "0.1.39-rc.
|
|
3
|
+
"version": "0.1.39-rc.2",
|
|
4
4
|
"description": "Markdown resource parsing, validation, and link integrity checking",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -33,12 +33,13 @@
|
|
|
33
33
|
"author": "Jeff Dutton",
|
|
34
34
|
"license": "MIT",
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@vibe-agent-toolkit/agent-schema": "0.1.39-rc.
|
|
37
|
-
"@vibe-agent-toolkit/utils": "0.1.39-rc.
|
|
36
|
+
"@vibe-agent-toolkit/agent-schema": "0.1.39-rc.2",
|
|
37
|
+
"@vibe-agent-toolkit/utils": "0.1.39-rc.2",
|
|
38
38
|
"ajv": "^8.17.1",
|
|
39
39
|
"ajv-formats": "^3.0.1",
|
|
40
40
|
"github-slugger": "^2.0.0",
|
|
41
41
|
"markdown-link-check": "^3.14.2",
|
|
42
|
+
"parse5": "^7.2.1",
|
|
42
43
|
"picomatch": "^4.0.3",
|
|
43
44
|
"remark-frontmatter": "^5.0.0",
|
|
44
45
|
"remark-gfm": "^4.0.0",
|
|
@@ -21,9 +21,9 @@
|
|
|
21
21
|
import { createRegistryIssue, type IssueCode } from '@vibe-agent-toolkit/agent-schema';
|
|
22
22
|
|
|
23
23
|
import { classifyLink } from './link-parser.js';
|
|
24
|
-
import { validateLink, type ValidateLinkOptions } from './link-validator.js';
|
|
24
|
+
import { validateLink, type FragmentIndex, type ValidateLinkOptions } from './link-validator.js';
|
|
25
25
|
import { walkFrontmatterUriReferences } from './schema-uri-walker.js';
|
|
26
|
-
import type {
|
|
26
|
+
import type { ResourceLink, ValidationIssue } from './types.js';
|
|
27
27
|
|
|
28
28
|
/** Map the link-level code emitted by validateLink to its frontmatter-scoped code. */
|
|
29
29
|
const LINK_CODE_TO_FRONTMATTER_CODE: Partial<Record<IssueCode, IssueCode>> = {
|
|
@@ -51,14 +51,14 @@ export interface FrontmatterLinkValidationResult {
|
|
|
51
51
|
* @param frontmatter - Parsed frontmatter (or undefined)
|
|
52
52
|
* @param schema - JSON Schema for the collection
|
|
53
53
|
* @param sourceFilePath - Absolute path to the source file
|
|
54
|
-
* @param
|
|
54
|
+
* @param fragmentsByFile - Fragment index (file path → set of valid fragments) for anchor validation
|
|
55
55
|
* @param options - Same shape as validateLink (projectRoot, gitTracker, ...)
|
|
56
56
|
*/
|
|
57
57
|
export async function validateFrontmatterLinks(
|
|
58
58
|
frontmatter: Record<string, unknown> | undefined,
|
|
59
59
|
schema: object,
|
|
60
60
|
sourceFilePath: string,
|
|
61
|
-
|
|
61
|
+
fragmentsByFile: FragmentIndex,
|
|
62
62
|
options?: ValidateLinkOptions,
|
|
63
63
|
): Promise<FrontmatterLinkValidationResult> {
|
|
64
64
|
if (!frontmatter) return { issues: [], externalUrls: [] };
|
|
@@ -89,7 +89,7 @@ export async function validateFrontmatterLinks(
|
|
|
89
89
|
line: 1, // Frontmatter per-field line numbers are post-v1.
|
|
90
90
|
};
|
|
91
91
|
|
|
92
|
-
const issue = await validateLink(syntheticLink, sourceFilePath,
|
|
92
|
+
const issue = await validateLink(syntheticLink, sourceFilePath, fragmentsByFile, options);
|
|
93
93
|
if (!issue) continue;
|
|
94
94
|
|
|
95
95
|
issues.push(rewriteIssue(issue, capture.dottedPath));
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTML resource parser.
|
|
3
|
+
*
|
|
4
|
+
* Parses local HTML files into the shared `ParseResult` shape:
|
|
5
|
+
* - `<a href>` and `<img src>` links (classified by `classifyLink`)
|
|
6
|
+
* - `id` / `name` attributes as fragment anchors
|
|
7
|
+
* - well-formedness diagnostics from parse5's `onParseError`
|
|
8
|
+
*
|
|
9
|
+
* Uses parse5 (WHATWG-conformant). The parse5 document + element walker are
|
|
10
|
+
* exported so the link rewriter (html-transform.ts) shares one parser path.
|
|
11
|
+
*
|
|
12
|
+
* Non-goal: `<base href>` is not honored — relative links are resolved against
|
|
13
|
+
* the file's own directory, not a document base.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
import { readFile, stat } from 'node:fs/promises';
|
|
17
|
+
|
|
18
|
+
import { parse, type DefaultTreeAdapterMap } from 'parse5';
|
|
19
|
+
|
|
20
|
+
import { classifyLink, type ParseResult } from './link-parser.js';
|
|
21
|
+
import type { HtmlParseError } from './schemas/resource-metadata.js';
|
|
22
|
+
import type { ResourceLink } from './types.js';
|
|
23
|
+
|
|
24
|
+
type P5Node = DefaultTreeAdapterMap['node'];
|
|
25
|
+
type P5Element = DefaultTreeAdapterMap['element'];
|
|
26
|
+
type P5ChildNode = DefaultTreeAdapterMap['childNode'];
|
|
27
|
+
|
|
28
|
+
/** A parsed parse5 document together with any well-formedness diagnostics. */
|
|
29
|
+
export interface HtmlDocument {
|
|
30
|
+
document: DefaultTreeAdapterMap['document'];
|
|
31
|
+
parseErrors: HtmlParseError[];
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Parse an HTML source string with source-location info and collect parser
|
|
36
|
+
* errors. Shared by `parseHtml` (link/anchor extraction) and `rewriteHtmlLinks`
|
|
37
|
+
* (attribute offset splicing).
|
|
38
|
+
*/
|
|
39
|
+
export function parseHtmlDocument(source: string): HtmlDocument {
|
|
40
|
+
const parseErrors: HtmlParseError[] = [];
|
|
41
|
+
const document = parse(source, {
|
|
42
|
+
sourceCodeLocationInfo: true,
|
|
43
|
+
onParseError: (err) => {
|
|
44
|
+
// parse5's ParserError extends Location which always has startLine: number.
|
|
45
|
+
// We always include line since it is always present.
|
|
46
|
+
parseErrors.push({ message: err.code, line: err.startLine });
|
|
47
|
+
},
|
|
48
|
+
});
|
|
49
|
+
return { document, parseErrors };
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Depth-first walk yielding every element node in the tree.
|
|
54
|
+
*
|
|
55
|
+
* Deliberate gap: a `<template>` element's content lives in its separate
|
|
56
|
+
* `content` fragment (not `childNodes`), so links inside `<template>` are not
|
|
57
|
+
* walked, and foreign-content (SVG/MathML) subtrees are not special-cased.
|
|
58
|
+
* Both are rare in the content link graph we rewrite.
|
|
59
|
+
*/
|
|
60
|
+
export function* walkElements(node: P5Node): Generator<P5Element> {
|
|
61
|
+
if ('tagName' in node) {
|
|
62
|
+
yield node;
|
|
63
|
+
}
|
|
64
|
+
if ('childNodes' in node) {
|
|
65
|
+
for (const child of node.childNodes as P5ChildNode[]) {
|
|
66
|
+
yield* walkElements(child);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
function getAttr(element: P5Element, name: string): string | undefined {
|
|
72
|
+
return element.attrs.find((a) => a.name === name)?.value;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
function makeLink(href: string, line: number | undefined): ResourceLink {
|
|
76
|
+
return { text: '', href, type: classifyLink(href), ...(line !== undefined && { line }) };
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
function visitElement(
|
|
80
|
+
element: P5Element,
|
|
81
|
+
links: ResourceLink[],
|
|
82
|
+
anchors: Set<string>,
|
|
83
|
+
): void {
|
|
84
|
+
const line = element.sourceCodeLocation?.startLine;
|
|
85
|
+
|
|
86
|
+
if (element.tagName === 'a') {
|
|
87
|
+
const href = getAttr(element, 'href');
|
|
88
|
+
if (href !== undefined) {
|
|
89
|
+
links.push(makeLink(href, line));
|
|
90
|
+
}
|
|
91
|
+
const name = getAttr(element, 'name');
|
|
92
|
+
if (name !== undefined && name !== '') {
|
|
93
|
+
anchors.add(name);
|
|
94
|
+
}
|
|
95
|
+
} else if (element.tagName === 'img') {
|
|
96
|
+
const src = getAttr(element, 'src');
|
|
97
|
+
if (src !== undefined) {
|
|
98
|
+
links.push(makeLink(src, line));
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
const id = getAttr(element, 'id');
|
|
103
|
+
if (id !== undefined && id !== '') {
|
|
104
|
+
anchors.add(id);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
/**
|
|
109
|
+
* Parse an HTML file into a `ParseResult`.
|
|
110
|
+
*
|
|
111
|
+
* @param filePath - Absolute path to the HTML file.
|
|
112
|
+
*/
|
|
113
|
+
export async function parseHtml(filePath: string): Promise<ParseResult> {
|
|
114
|
+
const [content, stats] = await Promise.all([
|
|
115
|
+
// eslint-disable-next-line security/detect-non-literal-fs-filename -- filePath is a user-provided path parameter
|
|
116
|
+
readFile(filePath, 'utf-8'),
|
|
117
|
+
// eslint-disable-next-line security/detect-non-literal-fs-filename -- filePath is a user-provided path parameter
|
|
118
|
+
stat(filePath),
|
|
119
|
+
]);
|
|
120
|
+
|
|
121
|
+
const { document, parseErrors } = parseHtmlDocument(content);
|
|
122
|
+
|
|
123
|
+
const links: ResourceLink[] = [];
|
|
124
|
+
const anchors = new Set<string>();
|
|
125
|
+
|
|
126
|
+
for (const element of walkElements(document)) {
|
|
127
|
+
visitElement(element, links, anchors);
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
const anchorList = [...anchors];
|
|
131
|
+
return {
|
|
132
|
+
links,
|
|
133
|
+
headings: [],
|
|
134
|
+
content,
|
|
135
|
+
sizeBytes: stats.size,
|
|
136
|
+
estimatedTokenCount: Math.ceil(content.length / 4),
|
|
137
|
+
...(anchorList.length > 0 && { anchors: anchorList }),
|
|
138
|
+
...(parseErrors.length > 0 && { parseErrors }),
|
|
139
|
+
};
|
|
140
|
+
}
|