@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
package/dist/link-validator.d.ts
CHANGED
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
*/
|
|
17
17
|
import { type ValidationIssue } from '@vibe-agent-toolkit/agent-schema';
|
|
18
18
|
import { type GitTracker } from '@vibe-agent-toolkit/utils';
|
|
19
|
-
import type {
|
|
19
|
+
import type { ResourceLink } from './types.js';
|
|
20
20
|
import { resolveLocalHref } from './utils.js';
|
|
21
21
|
/**
|
|
22
22
|
* Options for link validation.
|
|
@@ -34,7 +34,7 @@ export interface ValidateLinkOptions {
|
|
|
34
34
|
*
|
|
35
35
|
* @param link - The link to validate
|
|
36
36
|
* @param sourceFilePath - Absolute path to the file containing the link
|
|
37
|
-
* @param
|
|
37
|
+
* @param fragmentsByFile - Fragment index: file path → set of valid fragments (markdown slugs + HTML id/name)
|
|
38
38
|
* @param options - Validation options (projectRoot, skipGitIgnoreCheck)
|
|
39
39
|
* @returns ValidationIssue if link is broken, null if valid
|
|
40
40
|
*
|
|
@@ -49,7 +49,7 @@ export interface ValidateLinkOptions {
|
|
|
49
49
|
* }
|
|
50
50
|
* ```
|
|
51
51
|
*/
|
|
52
|
-
export declare function validateLink(link: ResourceLink, sourceFilePath: string,
|
|
52
|
+
export declare function validateLink(link: ResourceLink, sourceFilePath: string, fragmentsByFile: FragmentIndex, options?: ValidateLinkOptions): Promise<ValidationIssue | null>;
|
|
53
53
|
/**
|
|
54
54
|
* Convert a resolution failure kind to a broken_file ValidationIssue. Returns
|
|
55
55
|
* null for `resolved` (caller continues) and `anchor_only` (defensive no-op —
|
|
@@ -71,4 +71,51 @@ export declare function fileExistenceIssue(fileResult: {
|
|
|
71
71
|
* null otherwise (including when checks are disabled or out of scope).
|
|
72
72
|
*/
|
|
73
73
|
export declare function gitIgnoreSafetyIssue(link: ResourceLink, sourceFilePath: string, resolvedTarget: string, options: ValidateLinkOptions | undefined): ValidationIssue | null;
|
|
74
|
+
/** Result of checking an anchor against the fragment index. */
|
|
75
|
+
export type AnchorCheck = 'skip' | 'valid' | 'broken';
|
|
76
|
+
/**
|
|
77
|
+
* A file's fragment targets plus how to match against them. HTML `id`/`name`
|
|
78
|
+
* anchors are matched case-sensitively; markdown heading slugs are case-folded.
|
|
79
|
+
* The policy lives on the entry rather than being re-derived from the file
|
|
80
|
+
* extension at match time, so a new resource format only has to set this flag.
|
|
81
|
+
*/
|
|
82
|
+
export interface FragmentIndexEntry {
|
|
83
|
+
/** `true` for case-sensitive matching (HTML ids), `false` for case-folded (markdown slugs). */
|
|
84
|
+
caseSensitive: boolean;
|
|
85
|
+
fragments: Set<string>;
|
|
86
|
+
}
|
|
87
|
+
/** File path → its fragment targets and matching policy. */
|
|
88
|
+
export type FragmentIndex = Map<string, FragmentIndexEntry>;
|
|
89
|
+
/**
|
|
90
|
+
* Whether a path is an HTML resource (`.html`/`.htm`). The single place the
|
|
91
|
+
* extension drives format-specific behavior: case-sensitive ids (via
|
|
92
|
+
* {@link fragmentIndexEntry}) and the HTML top-fragment navigation rule.
|
|
93
|
+
*/
|
|
94
|
+
export declare function isHtmlPath(filePath: string): boolean;
|
|
95
|
+
/** Build one index entry, choosing the case-folding policy from the file type. */
|
|
96
|
+
export declare function fragmentIndexEntry(filePath: string, fragments?: Set<string>): FragmentIndexEntry;
|
|
97
|
+
/**
|
|
98
|
+
* Build a {@link FragmentIndex} from `[path, fragments]` pairs, deriving each
|
|
99
|
+
* entry's matching policy from its path. Single construction path shared by the
|
|
100
|
+
* registry and tests.
|
|
101
|
+
*/
|
|
102
|
+
export declare function fragmentIndex(entries?: Iterable<readonly [string, Set<string>]>): FragmentIndex;
|
|
103
|
+
/**
|
|
104
|
+
* Check whether a fragment exists in the target file's anchor set.
|
|
105
|
+
*
|
|
106
|
+
* - `'skip'` — target file is not indexed; we cannot prove the anchor is
|
|
107
|
+
* broken, so callers must not emit an issue.
|
|
108
|
+
* - Matching follows the entry's `caseSensitive` policy (HTML ids exact,
|
|
109
|
+
* markdown slugs case-folded). The index carries the policy, so this never
|
|
110
|
+
* re-derives the folding rule from the file extension.
|
|
111
|
+
* - For HTML targets the empty fragment (`#`) and `top` (ASCII
|
|
112
|
+
* case-insensitive) are always valid: per the HTML fragment-navigation
|
|
113
|
+
* algorithm both scroll to the top of the document regardless of whether a
|
|
114
|
+
* matching element exists, so `href="#"` / `href="#top"` are not broken.
|
|
115
|
+
*
|
|
116
|
+
* @param anchor - Fragment without the leading `#`.
|
|
117
|
+
* @param targetFilePath - Absolute path of the file the fragment lives in.
|
|
118
|
+
* @param fragmentsByFile - Fragment index carrying each file's matching policy.
|
|
119
|
+
*/
|
|
120
|
+
export declare function checkAnchor(anchor: string, targetFilePath: string, fragmentsByFile: FragmentIndex): AnchorCheck;
|
|
74
121
|
//# sourceMappingURL=link-validator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"link-validator.d.ts","sourceRoot":"","sources":["../src/link-validator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAKH,OAAO,EAAuB,KAAK,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAC7F,OAAO,EAEL,KAAK,UAAU,EAEhB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"link-validator.d.ts","sourceRoot":"","sources":["../src/link-validator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAKH,OAAO,EAAuB,KAAK,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAC7F,OAAO,EAEL,KAAK,UAAU,EAEhB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAkC,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAuB9E;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,uDAAuD;IACvD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,0EAA0E;IAC1E,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,qFAAqF;IACrF,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,YAAY,EAClB,cAAc,EAAE,MAAM,EACtB,eAAe,EAAE,aAAa,EAC9B,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CA8BjC;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,UAAU,CAAC,OAAO,gBAAgB,CAAC,EAC7C,IAAI,EAAE,YAAY,EAClB,cAAc,EAAE,MAAM,EACtB,WAAW,CAAC,EAAE,MAAM,GACnB,eAAe,GAAG,IAAI,CAyBxB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,EAC1E,IAAI,EAAE,YAAY,EAClB,cAAc,EAAE,MAAM,EACtB,WAAW,CAAC,EAAE,MAAM,GACnB,eAAe,GAAG,IAAI,CAsBxB;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,YAAY,EAClB,cAAc,EAAE,MAAM,EACtB,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,mBAAmB,GAAG,SAAS,GACvC,eAAe,GAAG,IAAI,CA2BxB;AAiHD,+DAA+D;AAC/D,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEtD;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC,+FAA+F;IAC/F,aAAa,EAAE,OAAO,CAAC;IACvB,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CACxB;AAED,4DAA4D;AAC5D,MAAM,MAAM,aAAa,GAAG,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;AAE5D;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED,kFAAkF;AAClF,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,GAAE,GAAG,CAAC,MAAM,CAAa,GAAG,kBAAkB,CAE3G;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,OAAO,GAAE,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAM,GAAG,aAAa,CAMnG;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,MAAM,EACtB,eAAe,EAAE,aAAa,GAC7B,WAAW,CAeb"}
|
package/dist/link-validator.js
CHANGED
|
@@ -37,7 +37,7 @@ function linkExtras(link, sourceFilePath, projectRoot, suggestion) {
|
|
|
37
37
|
*
|
|
38
38
|
* @param link - The link to validate
|
|
39
39
|
* @param sourceFilePath - Absolute path to the file containing the link
|
|
40
|
-
* @param
|
|
40
|
+
* @param fragmentsByFile - Fragment index: file path → set of valid fragments (markdown slugs + HTML id/name)
|
|
41
41
|
* @param options - Validation options (projectRoot, skipGitIgnoreCheck)
|
|
42
42
|
* @returns ValidationIssue if link is broken, null if valid
|
|
43
43
|
*
|
|
@@ -52,12 +52,13 @@ function linkExtras(link, sourceFilePath, projectRoot, suggestion) {
|
|
|
52
52
|
* }
|
|
53
53
|
* ```
|
|
54
54
|
*/
|
|
55
|
-
export async function validateLink(link, sourceFilePath,
|
|
55
|
+
export async function validateLink(link, sourceFilePath, fragmentsByFile, options) {
|
|
56
56
|
switch (link.type) {
|
|
57
57
|
case 'local_file':
|
|
58
|
-
|
|
58
|
+
case 'local_directory':
|
|
59
|
+
return await validateLocalFileLink(link, sourceFilePath, fragmentsByFile, options);
|
|
59
60
|
case 'anchor':
|
|
60
|
-
return await validateAnchorLink(link, sourceFilePath,
|
|
61
|
+
return await validateAnchorLink(link, sourceFilePath, fragmentsByFile, options?.projectRoot);
|
|
61
62
|
case 'external':
|
|
62
63
|
// External URLs are not validated - don't report them
|
|
63
64
|
return null;
|
|
@@ -130,7 +131,7 @@ export function gitIgnoreSafetyIssue(link, sourceFilePath, resolvedTarget, optio
|
|
|
130
131
|
/**
|
|
131
132
|
* Validate a local file link (with optional anchor).
|
|
132
133
|
*/
|
|
133
|
-
async function validateLocalFileLink(link, sourceFilePath,
|
|
134
|
+
async function validateLocalFileLink(link, sourceFilePath, fragmentsByFile, options) {
|
|
134
135
|
const resolved = resolveLocalHref(link.href, sourceFilePath, options?.projectRoot);
|
|
135
136
|
if (resolved.kind !== 'resolved') {
|
|
136
137
|
// anchor_only → null no-op; absolute_no_root / absolute_escapes_root → broken_file.
|
|
@@ -140,32 +141,41 @@ async function validateLocalFileLink(link, sourceFilePath, headingsByFile, optio
|
|
|
140
141
|
const notFound = fileExistenceIssue(fileResult, link, sourceFilePath, options?.projectRoot);
|
|
141
142
|
if (notFound)
|
|
142
143
|
return notFound;
|
|
143
|
-
if (fileResult.isDirectory) {
|
|
144
|
-
return createRegistryIssue('LINK_BROKEN_FILE', `Link target is a directory: ${fileResult.resolvedPath}`, linkExtras(link, sourceFilePath, options?.projectRoot, 'Link to a file inside the directory (e.g., README.md or index.md), or fix the link to point at the intended file.'));
|
|
145
|
-
}
|
|
146
144
|
const gitIgnoreIssue = gitIgnoreSafetyIssue(link, sourceFilePath, fileResult.resolvedPath, options);
|
|
147
145
|
if (gitIgnoreIssue)
|
|
148
146
|
return gitIgnoreIssue;
|
|
149
147
|
if (resolved.anchor) {
|
|
150
|
-
const
|
|
151
|
-
if (
|
|
148
|
+
const check = checkAnchor(resolved.anchor, fileResult.resolvedPath, fragmentsByFile);
|
|
149
|
+
if (check === 'broken') {
|
|
152
150
|
return createRegistryIssue('LINK_BROKEN_ANCHOR', `Anchor not found: #${resolved.anchor} in ${fileResult.resolvedPath}`, linkExtras(link, sourceFilePath, options?.projectRoot, ''));
|
|
153
151
|
}
|
|
154
152
|
}
|
|
155
153
|
return null;
|
|
156
154
|
}
|
|
155
|
+
/**
|
|
156
|
+
* Exhaustiveness guard for the {@link AnchorCheck} union: a compile error at the
|
|
157
|
+
* call site means a new variant was added without being handled here.
|
|
158
|
+
*/
|
|
159
|
+
function assertNever(value) {
|
|
160
|
+
throw new Error(`Unhandled AnchorCheck variant: ${String(value)}`);
|
|
161
|
+
}
|
|
157
162
|
/**
|
|
158
163
|
* Validate an anchor link (within current file).
|
|
159
164
|
*/
|
|
160
|
-
async function validateAnchorLink(link, sourceFilePath,
|
|
165
|
+
async function validateAnchorLink(link, sourceFilePath, fragmentsByFile, projectRoot) {
|
|
161
166
|
// Extract anchor (strip leading #)
|
|
162
167
|
const anchor = link.href.startsWith('#') ? link.href.slice(1) : link.href;
|
|
163
168
|
// Validate anchor exists in current file
|
|
164
|
-
const
|
|
165
|
-
|
|
166
|
-
|
|
169
|
+
const check = checkAnchor(anchor, sourceFilePath, fragmentsByFile);
|
|
170
|
+
switch (check) {
|
|
171
|
+
case 'skip':
|
|
172
|
+
case 'valid':
|
|
173
|
+
return null;
|
|
174
|
+
case 'broken':
|
|
175
|
+
return createRegistryIssue('LINK_BROKEN_ANCHOR', `Anchor not found: ${link.href}`, linkExtras(link, sourceFilePath, projectRoot, ''));
|
|
176
|
+
default:
|
|
177
|
+
return assertNever(check);
|
|
167
178
|
}
|
|
168
|
-
return null;
|
|
169
179
|
}
|
|
170
180
|
/**
|
|
171
181
|
* Verify that the resolved filesystem path exists with the correct case.
|
|
@@ -197,53 +207,60 @@ async function validateResolvedFile(resolvedPath) {
|
|
|
197
207
|
return result;
|
|
198
208
|
}
|
|
199
209
|
/**
|
|
200
|
-
*
|
|
201
|
-
*
|
|
202
|
-
* @
|
|
203
|
-
* @param targetFilePath - Absolute path to the file containing the heading
|
|
204
|
-
* @param headingsByFile - Map of file paths to their heading trees
|
|
205
|
-
* @returns True if anchor exists, false otherwise
|
|
206
|
-
*
|
|
207
|
-
* @example
|
|
208
|
-
* ```typescript
|
|
209
|
-
* const valid = await validateAnchor('my-heading', '/project/docs/guide.md', headingsMap);
|
|
210
|
-
* ```
|
|
210
|
+
* Whether a path is an HTML resource (`.html`/`.htm`). The single place the
|
|
211
|
+
* extension drives format-specific behavior: case-sensitive ids (via
|
|
212
|
+
* {@link fragmentIndexEntry}) and the HTML top-fragment navigation rule.
|
|
211
213
|
*/
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
214
|
+
export function isHtmlPath(filePath) {
|
|
215
|
+
return /\.html?$/i.test(filePath);
|
|
216
|
+
}
|
|
217
|
+
/** Build one index entry, choosing the case-folding policy from the file type. */
|
|
218
|
+
export function fragmentIndexEntry(filePath, fragments = new Set()) {
|
|
219
|
+
return { caseSensitive: isHtmlPath(filePath), fragments };
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Build a {@link FragmentIndex} from `[path, fragments]` pairs, deriving each
|
|
223
|
+
* entry's matching policy from its path. Single construction path shared by the
|
|
224
|
+
* registry and tests.
|
|
225
|
+
*/
|
|
226
|
+
export function fragmentIndex(entries = []) {
|
|
227
|
+
const map = new Map();
|
|
228
|
+
for (const [filePath, fragments] of entries) {
|
|
229
|
+
map.set(filePath, fragmentIndexEntry(filePath, fragments));
|
|
217
230
|
}
|
|
218
|
-
|
|
219
|
-
return findHeadingBySlug(headings, anchor);
|
|
231
|
+
return map;
|
|
220
232
|
}
|
|
221
233
|
/**
|
|
222
|
-
*
|
|
223
|
-
*
|
|
224
|
-
* Performs case-insensitive comparison of slugs.
|
|
234
|
+
* Check whether a fragment exists in the target file's anchor set.
|
|
225
235
|
*
|
|
226
|
-
*
|
|
227
|
-
*
|
|
228
|
-
*
|
|
236
|
+
* - `'skip'` — target file is not indexed; we cannot prove the anchor is
|
|
237
|
+
* broken, so callers must not emit an issue.
|
|
238
|
+
* - Matching follows the entry's `caseSensitive` policy (HTML ids exact,
|
|
239
|
+
* markdown slugs case-folded). The index carries the policy, so this never
|
|
240
|
+
* re-derives the folding rule from the file extension.
|
|
241
|
+
* - For HTML targets the empty fragment (`#`) and `top` (ASCII
|
|
242
|
+
* case-insensitive) are always valid: per the HTML fragment-navigation
|
|
243
|
+
* algorithm both scroll to the top of the document regardless of whether a
|
|
244
|
+
* matching element exists, so `href="#"` / `href="#top"` are not broken.
|
|
229
245
|
*
|
|
230
|
-
* @
|
|
231
|
-
*
|
|
232
|
-
*
|
|
233
|
-
* ```
|
|
246
|
+
* @param anchor - Fragment without the leading `#`.
|
|
247
|
+
* @param targetFilePath - Absolute path of the file the fragment lives in.
|
|
248
|
+
* @param fragmentsByFile - Fragment index carrying each file's matching policy.
|
|
234
249
|
*/
|
|
235
|
-
function
|
|
236
|
-
const
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
}
|
|
250
|
+
export function checkAnchor(anchor, targetFilePath, fragmentsByFile) {
|
|
251
|
+
const entry = fragmentsByFile.get(targetFilePath);
|
|
252
|
+
if (!entry) {
|
|
253
|
+
return 'skip';
|
|
254
|
+
}
|
|
255
|
+
// HTML spec: the empty fragment and "top" (case-insensitive) always navigate
|
|
256
|
+
// to the top of the document — valid even with no matching id. This is an
|
|
257
|
+
// HTML-format navigation rule, distinct from the case-folding policy above.
|
|
258
|
+
if (isHtmlPath(targetFilePath) && (anchor === '' || anchor.toLowerCase() === 'top')) {
|
|
259
|
+
return 'valid';
|
|
246
260
|
}
|
|
247
|
-
|
|
261
|
+
const found = entry.caseSensitive
|
|
262
|
+
? entry.fragments.has(anchor)
|
|
263
|
+
: entry.fragments.has(anchor.toLowerCase());
|
|
264
|
+
return found ? 'valid' : 'broken';
|
|
248
265
|
}
|
|
249
266
|
//# sourceMappingURL=link-validator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"link-validator.js","sourceRoot":"","sources":["../src/link-validator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,mBAAmB,EAAwB,MAAM,kCAAkC,CAAC;AAC7F,OAAO,EACL,YAAY,EAEZ,2BAA2B,GAC5B,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAI9E;;;;GAIG;AACH,SAAS,UAAU,CACjB,IAAkB,EAClB,cAAsB,EACtB,WAA+B,EAC/B,UAAmB;IAEnB,OAAO;QACL,QAAQ,EAAE,aAAa,CAAC,cAAc,EAAE,WAAW,CAAC;QACpD,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;QACnD,GAAG,CAAC,UAAU,KAAK,SAAS,IAAI,EAAE,UAAU,EAAE,CAAC;KAChD,CAAC;AACJ,CAAC;AAcD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,IAAkB,EAClB,cAAsB,EACtB,
|
|
1
|
+
{"version":3,"file":"link-validator.js","sourceRoot":"","sources":["../src/link-validator.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,6 +14,19 @@ import type { SHA256 } from './schemas/checksum.js';
|
|
|
14
14
|
import type { ProjectConfig } from './schemas/project-config.js';
|
|
15
15
|
import type { ResourceMetadata } from './schemas/resource-metadata.js';
|
|
16
16
|
import type { ValidationResult } from './schemas/validation-result.js';
|
|
17
|
+
/**
|
|
18
|
+
* Typed error thrown when two resources produce the same ID.
|
|
19
|
+
*
|
|
20
|
+
* Carries the authoritative id and both paths so callers can record accurate
|
|
21
|
+
* issue data without re-deriving the id from the file path (which would be
|
|
22
|
+
* wrong when the id came from a frontmatter `idField` value).
|
|
23
|
+
*/
|
|
24
|
+
export declare class DuplicateResourceIdError extends Error {
|
|
25
|
+
readonly id: string;
|
|
26
|
+
readonly existingPath: string;
|
|
27
|
+
readonly conflictingPath: string;
|
|
28
|
+
constructor(id: string, conflictingPath: string, existingPath: string);
|
|
29
|
+
}
|
|
17
30
|
/**
|
|
18
31
|
* Options for crawling directories to add resources.
|
|
19
32
|
*/
|
|
@@ -140,6 +153,11 @@ export declare class ResourceRegistry implements ResourceCollectionInterface {
|
|
|
140
153
|
* collectExternalUrls so the URLs feed into the existing health-check pass.
|
|
141
154
|
*/
|
|
142
155
|
private readonly frontmatterExternalUrlsByResource;
|
|
156
|
+
/**
|
|
157
|
+
* Collisions recorded by addResources() when two files produce the same resource id.
|
|
158
|
+
* Cleared by clear(). Surfaced as DUPLICATE_RESOURCE_ID issues in validate().
|
|
159
|
+
*/
|
|
160
|
+
private duplicateIdCollisions;
|
|
143
161
|
constructor(options?: ResourceRegistryOptions);
|
|
144
162
|
/**
|
|
145
163
|
* Create an empty registry with a base directory.
|
|
@@ -253,6 +271,16 @@ export declare class ResourceRegistry implements ResourceCollectionInterface {
|
|
|
253
271
|
* @private
|
|
254
272
|
*/
|
|
255
273
|
private collectYamlErrors;
|
|
274
|
+
/**
|
|
275
|
+
* Emit MALFORMED_HTML issues from each resource's HTML parse errors.
|
|
276
|
+
* @private
|
|
277
|
+
*/
|
|
278
|
+
private collectHtmlParseErrors;
|
|
279
|
+
/**
|
|
280
|
+
* Emit DUPLICATE_RESOURCE_ID errors for collisions recorded by addResources().
|
|
281
|
+
* @private
|
|
282
|
+
*/
|
|
283
|
+
private collectDuplicateIdErrors;
|
|
256
284
|
/**
|
|
257
285
|
* Validate all links in all resources.
|
|
258
286
|
* @private
|
|
@@ -574,11 +602,11 @@ export declare class ResourceRegistry implements ResourceCollectionInterface {
|
|
|
574
602
|
*/
|
|
575
603
|
private generateId;
|
|
576
604
|
/**
|
|
577
|
-
* Build a
|
|
578
|
-
*
|
|
579
|
-
*
|
|
605
|
+
* Build a format-neutral fragment index for anchor validation: each file's
|
|
606
|
+
* absolute path → the set of valid fragment targets. Markdown contributes
|
|
607
|
+
* heading slugs (lowercased); HTML contributes its `id`/`name` anchors.
|
|
580
608
|
*/
|
|
581
|
-
private
|
|
609
|
+
private buildFragmentIndex;
|
|
582
610
|
/**
|
|
583
611
|
* Add a resource to all indexes.
|
|
584
612
|
*
|
|
@@ -603,22 +631,29 @@ export declare class ResourceRegistry implements ResourceCollectionInterface {
|
|
|
603
631
|
/**
|
|
604
632
|
* Generate an ID from a file path.
|
|
605
633
|
*
|
|
634
|
+
* Every resource id includes a `-<ext>` suffix derived from the file extension
|
|
635
|
+
* (dot stripped, lowercased). This makes ids from different file types distinct
|
|
636
|
+
* even when the stem is identical (e.g. `foo.md` → `foo-md`, `foo.html` → `foo-html`).
|
|
637
|
+
* Extensionless files (e.g. `Makefile`) receive no suffix.
|
|
638
|
+
*
|
|
606
639
|
* When `baseDir` is provided, computes a relative path from baseDir and uses the full
|
|
607
640
|
* directory structure in the ID. When no `baseDir`, uses the filename stem only.
|
|
608
641
|
*
|
|
609
642
|
* @param filePath - Absolute file path
|
|
610
643
|
* @param baseDir - Base directory for relative path computation (optional)
|
|
611
|
-
* @returns Generated ID in kebab-case
|
|
644
|
+
* @returns Generated ID in kebab-case with `-<ext>` suffix
|
|
612
645
|
*
|
|
613
646
|
* @example
|
|
614
647
|
* ```typescript
|
|
615
|
-
* // Without baseDir: filename stem
|
|
616
|
-
* generateIdFromPath('/project/docs/User Guide.md') // 'user-guide'
|
|
617
|
-
* generateIdFromPath('/project/README.md') // 'readme'
|
|
648
|
+
* // Without baseDir: filename stem + extension suffix
|
|
649
|
+
* generateIdFromPath('/project/docs/User Guide.md') // 'user-guide-md'
|
|
650
|
+
* generateIdFromPath('/project/README.md') // 'readme-md'
|
|
651
|
+
* generateIdFromPath('/project/page.html') // 'page-html'
|
|
652
|
+
* generateIdFromPath('/project/Makefile') // 'makefile'
|
|
618
653
|
*
|
|
619
|
-
* // With baseDir: relative path
|
|
620
|
-
* generateIdFromPath('/project/docs/concepts/core/overview.md', '/project/docs') // 'concepts-core-overview'
|
|
621
|
-
* generateIdFromPath('/project/docs/guide.md', '/project/docs') // 'guide'
|
|
654
|
+
* // With baseDir: relative path + extension suffix
|
|
655
|
+
* generateIdFromPath('/project/docs/concepts/core/overview.md', '/project/docs') // 'concepts-core-overview-md'
|
|
656
|
+
* generateIdFromPath('/project/docs/guide.md', '/project/docs') // 'guide-md'
|
|
622
657
|
* ```
|
|
623
658
|
*/
|
|
624
659
|
export declare function generateIdFromPath(filePath: string, baseDir?: string): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resource-registry.d.ts","sourceRoot":"","sources":["../src/resource-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,EAA+D,KAAK,gBAAgB,EAAwB,MAAM,kCAAkC,CAAC;AAC5J,OAAO,EAA0D,KAAK,UAAU,EAAqE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"resource-registry.d.ts","sourceRoot":"","sources":["../src/resource-registry.ts"],"names":[],"mappings":"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"}
|