doc-freshness-checker 2.2.1 → 3.0.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/README.md +23 -25
- package/dist/cache/cacheManager.d.ts +1 -22
- package/dist/cache/cacheManager.js +0 -96
- package/dist/cache/cacheManager.js.map +1 -1
- package/dist/cache/cacheManager.test.js +0 -106
- package/dist/cache/cacheManager.test.js.map +1 -1
- package/dist/config/defaults.d.ts +2 -1
- package/dist/config/defaults.js +2 -22
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/loader.test.js +12 -9
- package/dist/config/loader.test.js.map +1 -1
- package/dist/config/validateConfig.js +17 -1
- package/dist/config/validateConfig.js.map +1 -1
- package/dist/config/validateConfig.test.js +23 -0
- package/dist/config/validateConfig.test.js.map +1 -1
- package/dist/graph/codeDocGraph.d.ts +1 -12
- package/dist/graph/codeDocGraph.js +0 -35
- package/dist/graph/codeDocGraph.js.map +1 -1
- package/dist/graph/codeDocGraph.test.js +0 -28
- package/dist/graph/codeDocGraph.test.js.map +1 -1
- package/dist/graph/graphBuilder.js +0 -1
- package/dist/graph/graphBuilder.js.map +1 -1
- package/dist/graph/graphBuilder.test.js +0 -5
- package/dist/graph/graphBuilder.test.js.map +1 -1
- package/dist/index.d.ts +1 -7
- package/dist/index.js +0 -6
- package/dist/index.js.map +1 -1
- package/dist/parsers/extractors/codeSnippetExtractor.d.ts +3 -4
- package/dist/parsers/extractors/codeSnippetExtractor.js +21 -32
- package/dist/parsers/extractors/codeSnippetExtractor.js.map +1 -1
- package/dist/parsers/extractors/codeSnippetExtractor.test.js +37 -0
- package/dist/parsers/extractors/codeSnippetExtractor.test.js.map +1 -1
- package/dist/runner.js +3 -14
- package/dist/runner.js.map +1 -1
- package/dist/runner.test.js +31 -75
- package/dist/runner.test.js.map +1 -1
- package/dist/source/sourceIndex.d.ts +1 -1
- package/dist/source/sourceIndex.js +56 -54
- package/dist/source/sourceIndex.js.map +1 -1
- package/dist/source/sourceIndex.test.js +48 -18
- package/dist/source/sourceIndex.test.js.map +1 -1
- package/dist/types.d.ts +9 -53
- package/dist/utils/pathSecurity.d.ts +5 -0
- package/dist/utils/pathSecurity.js +21 -0
- package/dist/utils/pathSecurity.js.map +1 -1
- package/dist/utils/pathSecurity.test.js +29 -1
- package/dist/utils/pathSecurity.test.js.map +1 -1
- package/dist/validators/codePatternValidator.js +1 -7
- package/dist/validators/codePatternValidator.js.map +1 -1
- package/dist/validators/codePatternValidator.test.js +4 -4
- package/dist/validators/codePatternValidator.test.js.map +1 -1
- package/dist/validators/codeSnippetValidator.d.ts +6 -0
- package/dist/validators/codeSnippetValidator.js +45 -27
- package/dist/validators/codeSnippetValidator.js.map +1 -1
- package/dist/validators/codeSnippetValidator.test.js +99 -0
- package/dist/validators/codeSnippetValidator.test.js.map +1 -1
- package/dist/validators/directoryValidator.d.ts +0 -1
- package/dist/validators/directoryValidator.js +18 -19
- package/dist/validators/directoryValidator.js.map +1 -1
- package/dist/validators/directoryValidator.test.js +44 -0
- package/dist/validators/directoryValidator.test.js.map +1 -1
- package/dist/validators/fileValidator.js +16 -25
- package/dist/validators/fileValidator.js.map +1 -1
- package/dist/validators/fileValidator.test.js +25 -0
- package/dist/validators/fileValidator.test.js.map +1 -1
- package/package.json +4 -5
- package/dist/plugins/plugin.d.ts +0 -36
- package/dist/plugins/plugin.js +0 -44
- package/dist/plugins/plugin.js.map +0 -1
- package/dist/plugins/plugin.test.d.ts +0 -1
- package/dist/plugins/plugin.test.js +0 -23
- package/dist/plugins/plugin.test.js.map +0 -1
|
@@ -56,13 +56,7 @@ export class CodeSnippetValidator {
|
|
|
56
56
|
if (this.sourceFiles) {
|
|
57
57
|
return;
|
|
58
58
|
}
|
|
59
|
-
|
|
60
|
-
this.useSnapshot(await this.index.load(config, 'snippet'));
|
|
61
|
-
}
|
|
62
|
-
catch (error) {
|
|
63
|
-
this.useSnapshot(await this.index.load(config, 'snippet'));
|
|
64
|
-
throw error;
|
|
65
|
-
}
|
|
59
|
+
this.useSnapshot(await this.index.load(config, 'snippet'));
|
|
66
60
|
}
|
|
67
61
|
useSnapshot(snapshot) {
|
|
68
62
|
this.sourceFiles = snapshot.snippetFiles;
|
|
@@ -208,6 +202,7 @@ export class CodeSnippetValidator {
|
|
|
208
202
|
validateFunctionCall(ref, config) {
|
|
209
203
|
const funcName = ref.value;
|
|
210
204
|
const snippetArity = parseInt(ref.linkText || '0', 10);
|
|
205
|
+
const keywordCount = this.keywordArgumentCount(ref, snippetArity);
|
|
211
206
|
if (isIllustrativeSymbol(funcName)) {
|
|
212
207
|
return {
|
|
213
208
|
reference: ref,
|
|
@@ -225,10 +220,18 @@ export class CodeSnippetValidator {
|
|
|
225
220
|
message: `Function ${funcName} not found in project source (may be external)`,
|
|
226
221
|
};
|
|
227
222
|
}
|
|
223
|
+
if (ref.unpacksArguments) {
|
|
224
|
+
return {
|
|
225
|
+
reference: ref,
|
|
226
|
+
valid: true,
|
|
227
|
+
skipped: true,
|
|
228
|
+
message: `Function ${funcName} call spreads or unpacks arguments, so its argument count is not checked`,
|
|
229
|
+
};
|
|
230
|
+
}
|
|
228
231
|
// A call is valid if any signature can accept this many arguments
|
|
229
|
-
const compatible = signatures.find((sig) =>
|
|
232
|
+
const compatible = signatures.find((sig) => this.acceptsArity(sig, snippetArity, keywordCount));
|
|
230
233
|
if (compatible) {
|
|
231
|
-
const parameterNamesResult = this.validateFunctionParameterNames(ref, compatible, signatures, config);
|
|
234
|
+
const parameterNamesResult = this.validateFunctionParameterNames(ref, keywordCount, compatible, signatures, config);
|
|
232
235
|
if (parameterNamesResult) {
|
|
233
236
|
return parameterNamesResult;
|
|
234
237
|
}
|
|
@@ -238,19 +241,21 @@ export class CodeSnippetValidator {
|
|
|
238
241
|
foundIn: [compatible.filePath],
|
|
239
242
|
};
|
|
240
243
|
}
|
|
241
|
-
const closest = signatures.reduce((prev, curr) =>
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
244
|
+
const closest = signatures.reduce((prev, curr) => this.arityDistance(curr, snippetArity, keywordCount) < this.arityDistance(prev, snippetArity, keywordCount) ? curr : prev);
|
|
245
|
+
const maxPositional = this.maxPositional(closest);
|
|
246
|
+
const arityDesc = closest.restIndex !== undefined
|
|
247
|
+
? `at least ${closest.requiredParams}`
|
|
248
|
+
: closest.requiredParams === maxPositional
|
|
249
|
+
? String(maxPositional)
|
|
250
|
+
: `${closest.requiredParams}–${maxPositional}`;
|
|
251
|
+
const message = closest.keywordRestIndex !== undefined && closest.restIndex === undefined
|
|
252
|
+
? `Function ${funcName} called with ${snippetArity - keywordCount} positional arg(s) but expects ${arityDesc} positional`
|
|
253
|
+
: `Function ${funcName} called with ${snippetArity} arg(s) but expects ${arityDesc}`;
|
|
249
254
|
return {
|
|
250
255
|
reference: ref,
|
|
251
256
|
valid: false,
|
|
252
257
|
severity: getRuleSeverity(config, 'code-snippet', 'warning'),
|
|
253
|
-
message
|
|
258
|
+
message,
|
|
254
259
|
suggestion: `Current signature: ${funcName}(${closest.params.join(', ')})`,
|
|
255
260
|
foundIn: signatures.map((s) => s.filePath),
|
|
256
261
|
};
|
|
@@ -313,14 +318,13 @@ export class CodeSnippetValidator {
|
|
|
313
318
|
return value ? [value] : [];
|
|
314
319
|
});
|
|
315
320
|
}
|
|
316
|
-
validateFunctionParameterNames(ref, compatible, signatures, config) {
|
|
321
|
+
validateFunctionParameterNames(ref, keywordCount, compatible, signatures, config) {
|
|
317
322
|
const argumentNames = ref.argumentNames;
|
|
318
323
|
if (!argumentNames || argumentNames.length === 0) {
|
|
319
324
|
return null;
|
|
320
325
|
}
|
|
321
|
-
const compatibleByNames = signatures.find((signature) => argumentNames.length
|
|
322
|
-
argumentNames.
|
|
323
|
-
this.parameterNamesMatch(argumentNames, signature.params));
|
|
326
|
+
const compatibleByNames = signatures.find((signature) => this.acceptsArity(signature, argumentNames.length, keywordCount) &&
|
|
327
|
+
this.parameterNamesMatch(argumentNames.slice(0, Math.max(0, argumentNames.length - keywordCount)), signature));
|
|
324
328
|
if (compatibleByNames) {
|
|
325
329
|
return null;
|
|
326
330
|
}
|
|
@@ -333,11 +337,25 @@ export class CodeSnippetValidator {
|
|
|
333
337
|
foundIn: signatures.map((signature) => signature.filePath),
|
|
334
338
|
};
|
|
335
339
|
}
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
340
|
+
/** Custom extractors can set any value; an impossible count is treated as all-positional, the strictest reading. */
|
|
341
|
+
keywordArgumentCount(ref, arity) {
|
|
342
|
+
const count = ref.keywordArgumentCount;
|
|
343
|
+
return count !== undefined && Number.isInteger(count) && count >= 0 && count <= arity ? count : 0;
|
|
344
|
+
}
|
|
345
|
+
acceptsArity(signature, arity, keywordCount) {
|
|
346
|
+
return this.arityDistance(signature, arity, keywordCount) === 0;
|
|
347
|
+
}
|
|
348
|
+
/** How many arguments a call must add or remove to fit the signature; 0 means it fits. */
|
|
349
|
+
arityDistance(signature, arity, keywordCount) {
|
|
350
|
+
const maxArity = signature.restIndex === undefined && signature.keywordRestIndex === undefined ? signature.params.length : Infinity;
|
|
351
|
+
return Math.max(signature.requiredParams - arity, arity - maxArity, arity - keywordCount - this.maxPositional(signature), 0);
|
|
352
|
+
}
|
|
353
|
+
maxPositional(signature) {
|
|
354
|
+
return signature.restIndex === undefined ? (signature.keywordRestIndex ?? signature.params.length) : Infinity;
|
|
355
|
+
}
|
|
356
|
+
parameterNamesMatch(argumentNames, signature) {
|
|
357
|
+
const positionalCount = signature.restIndex ?? signature.keywordRestIndex ?? signature.params.length;
|
|
358
|
+
return argumentNames.slice(0, positionalCount).every((name, index) => name === signature.params[index]);
|
|
341
359
|
}
|
|
342
360
|
// Exposed for testing / integration
|
|
343
361
|
getFunctionSignatures() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codeSnippetValidator.js","sourceRoot":"","sources":["../../src/validators/codeSnippetValidator.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"codeSnippetValidator.js","sourceRoot":"","sources":["../../src/validators/codeSnippetValidator.ts"],"names":[],"mappings":"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"}
|
|
@@ -216,6 +216,105 @@ describe('CodeSnippetValidator', () => {
|
|
|
216
216
|
expect(results[0].suggestion).toContain('createUser(name, email, role)');
|
|
217
217
|
});
|
|
218
218
|
});
|
|
219
|
+
it('accepts any number of arguments for rest parameters and reports too few as a minimum', async () => {
|
|
220
|
+
await withTempSourceFiles({
|
|
221
|
+
'src/api.ts': 'export function log(level: string, ...messages: string[]) { return [level, ...messages]; }\n',
|
|
222
|
+
'src/api.py': 'def gather(first, *rest): pass\n',
|
|
223
|
+
}, async (tempConfig) => {
|
|
224
|
+
const validator = new CodeSnippetValidator();
|
|
225
|
+
const results = await validator.validateBatch([
|
|
226
|
+
makeRef('function-call', 'log', { argumentNames: ['level', 'first', 'second', 'third'], linkText: '4', raw: 'log(...)' }),
|
|
227
|
+
makeRef('function-call', 'gather', { linkText: '3', raw: 'gather(a, b, c)', language: 'python' }),
|
|
228
|
+
makeRef('function-call', 'log', { linkText: '0', raw: 'log()' }),
|
|
229
|
+
], doc, tempConfig);
|
|
230
|
+
expect(results[0].valid).toBe(true);
|
|
231
|
+
expect(results[1].valid).toBe(true);
|
|
232
|
+
expect(results[2].valid).toBe(false);
|
|
233
|
+
expect(results[2].message).toContain('expects at least 1');
|
|
234
|
+
});
|
|
235
|
+
});
|
|
236
|
+
it('lets **kwargs absorb keyword arguments but not positional arguments', async () => {
|
|
237
|
+
await withTempSourceFiles({
|
|
238
|
+
'src/api.py': 'def configure(required, **options): pass\ndef gather(first, *rest, **options): pass\n',
|
|
239
|
+
}, async (tempConfig) => {
|
|
240
|
+
const python = { language: 'python' };
|
|
241
|
+
const results = await new CodeSnippetValidator().validateBatch([
|
|
242
|
+
makeRef('function-call', 'configure', {
|
|
243
|
+
...python,
|
|
244
|
+
linkText: '3',
|
|
245
|
+
keywordArgumentCount: 2,
|
|
246
|
+
raw: 'configure(x, debug=True, level=2)',
|
|
247
|
+
}),
|
|
248
|
+
makeRef('function-call', 'configure', { ...python, linkText: '1', keywordArgumentCount: 1, raw: 'configure(required=x)' }),
|
|
249
|
+
makeRef('function-call', 'configure', { ...python, linkText: '3', keywordArgumentCount: 0, raw: 'configure(a, b, c)' }),
|
|
250
|
+
makeRef('function-call', 'gather', { ...python, linkText: '4', keywordArgumentCount: 1, raw: 'gather(a, b, c, debug=True)' }),
|
|
251
|
+
], doc, tempConfig);
|
|
252
|
+
expect(results.map((result) => result.valid)).toEqual([true, true, false, true]);
|
|
253
|
+
expect(results[2].message).toBe('Function configure called with 3 positional arg(s) but expects 1 positional');
|
|
254
|
+
});
|
|
255
|
+
});
|
|
256
|
+
it('skips arity and name checks for calls that spread or unpack arguments', async () => {
|
|
257
|
+
await withTempSourceFiles({
|
|
258
|
+
'src/api.py': 'def connect(host, port): pass\n',
|
|
259
|
+
'src/mount.ts': 'export function mount(target: string, options: object) {}\n',
|
|
260
|
+
}, async (tempConfig) => {
|
|
261
|
+
const python = { language: 'python' };
|
|
262
|
+
const results = await new CodeSnippetValidator().validateBatch([
|
|
263
|
+
makeRef('function-call', 'connect', { ...python, linkText: '1', unpacksArguments: true, raw: 'connect(*address)' }),
|
|
264
|
+
makeRef('function-call', 'connect', {
|
|
265
|
+
...python,
|
|
266
|
+
linkText: '1',
|
|
267
|
+
keywordArgumentCount: 1,
|
|
268
|
+
unpacksArguments: true,
|
|
269
|
+
raw: 'connect(**settings)',
|
|
270
|
+
}),
|
|
271
|
+
makeRef('function-call', 'mount', {
|
|
272
|
+
language: 'typescript',
|
|
273
|
+
linkText: '1',
|
|
274
|
+
argumentNames: ['args'],
|
|
275
|
+
unpacksArguments: true,
|
|
276
|
+
raw: 'mount(...args)',
|
|
277
|
+
}),
|
|
278
|
+
makeRef('function-call', 'connect', { ...python, linkText: '1', raw: 'connect(address)' }),
|
|
279
|
+
], doc, tempConfig);
|
|
280
|
+
expect(results.map((result) => result.valid)).toEqual([true, true, true, false]);
|
|
281
|
+
expect(results.map((result) => result.skipped)).toEqual([true, true, true, undefined]);
|
|
282
|
+
expect(results[0].message).toBe('Function connect call spreads or unpacks arguments, so its argument count is not checked');
|
|
283
|
+
});
|
|
284
|
+
});
|
|
285
|
+
it('checks only positional argument names and treats impossible keyword counts as zero', async () => {
|
|
286
|
+
await withTempSourceFiles({
|
|
287
|
+
'src/api.py': 'def configure(required, **options): pass\ndef tune(a, b=1, **options): pass\n',
|
|
288
|
+
}, async (tempConfig) => {
|
|
289
|
+
const python = { language: 'python' };
|
|
290
|
+
const results = await new CodeSnippetValidator().validateBatch([
|
|
291
|
+
makeRef('function-call', 'configure', {
|
|
292
|
+
...python,
|
|
293
|
+
linkText: '2',
|
|
294
|
+
argumentNames: ['required', 'debug'],
|
|
295
|
+
keywordArgumentCount: 1,
|
|
296
|
+
}),
|
|
297
|
+
makeRef('function-call', 'tune', { ...python, linkText: '2', argumentNames: ['a', 'debug'], keywordArgumentCount: 1 }),
|
|
298
|
+
makeRef('function-call', 'configure', { ...python, linkText: '2', argumentNames: ['x', 'debug'], keywordArgumentCount: 1 }),
|
|
299
|
+
makeRef('function-call', 'configure', { ...python, linkText: '3', keywordArgumentCount: 4 }),
|
|
300
|
+
makeRef('function-call', 'configure', { ...python, linkText: '3', keywordArgumentCount: Number.NaN }),
|
|
301
|
+
], doc, tempConfig);
|
|
302
|
+
expect(results.map((result) => result.valid)).toEqual([true, true, false, false, false]);
|
|
303
|
+
expect(results[2].message).toContain('outdated parameter name');
|
|
304
|
+
expect(results[3].message).toBe('Function configure called with 3 positional arg(s) but expects 1 positional');
|
|
305
|
+
expect(results[4].message).toBe(results[3].message);
|
|
306
|
+
});
|
|
307
|
+
});
|
|
308
|
+
it('describes the overload nearest to the call when no overload accepts it', async () => {
|
|
309
|
+
await withTempSourceFiles({
|
|
310
|
+
'src/rest.ts': 'export function pick(first: string, ...rest: string[]) { return [first, ...rest]; }\n',
|
|
311
|
+
'src/fixed.ts': 'export function pick(a: string, b: string, c: string, d: string, e: string, f: string, g: string, h: string) { return a; }\n',
|
|
312
|
+
}, async (tempConfig) => {
|
|
313
|
+
const [result] = await new CodeSnippetValidator().validateBatch([makeRef('function-call', 'pick', { linkText: '0', raw: 'pick()' })], doc, tempConfig);
|
|
314
|
+
expect(result.valid).toBe(false);
|
|
315
|
+
expect(result.message).toBe('Function pick called with 0 arg(s) but expects at least 1');
|
|
316
|
+
});
|
|
317
|
+
});
|
|
219
318
|
it('skips parameter-name comparison when arguments are expressions', async () => {
|
|
220
319
|
await withTempSourceFiles({
|
|
221
320
|
'src/api.ts': 'export function createUser(name: string, email: string) { return { name, email }; }\n',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codeSnippetValidator.test.js","sourceRoot":"","sources":["../../src/validators/codeSnippetValidator.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"codeSnippetValidator.test.js","sourceRoot":"","sources":["../../src/validators/codeSnippetValidator.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,7 +16,6 @@ export declare class DirectoryValidator {
|
|
|
16
16
|
private initCustomPatterns;
|
|
17
17
|
validateBatch(references: Reference[], document: Document, config: DocFreshnessConfig): Promise<ValidationResult[]>;
|
|
18
18
|
private validateReference;
|
|
19
|
-
private pathExists;
|
|
20
19
|
/**
|
|
21
20
|
* Try to find a similar path for suggestions
|
|
22
21
|
* Handles common issues like singular/plural mismatches
|
|
@@ -2,7 +2,7 @@ import fs from 'fs';
|
|
|
2
2
|
import path from 'path';
|
|
3
3
|
import { isIllustrativePath, compilePatterns } from '../utils/illustrativePatterns.js';
|
|
4
4
|
import { similarityRatio } from '../utils/similarity.js';
|
|
5
|
-
import { isWithinRoot, resolveDocumentDir, resolveProjectRoot } from '../utils/pathSecurity.js';
|
|
5
|
+
import { isWithinRoot, locateRealPath, resolveDocumentDir, resolveProjectRoot } from '../utils/pathSecurity.js';
|
|
6
6
|
import { createIllustrativeSkippedResult, getRuleSeverity, severityForIllustrative } from '../utils/validation.js';
|
|
7
7
|
/**
|
|
8
8
|
* Validates that directory structure references exist
|
|
@@ -79,7 +79,15 @@ export class DirectoryValidator {
|
|
|
79
79
|
}
|
|
80
80
|
// Strategy 1: Check if the path exists from project root
|
|
81
81
|
// This handles full paths like "frontend/src/apps/domains"
|
|
82
|
-
|
|
82
|
+
// A permission error here must not hide a doc-relative match, so it is rethrown only if Strategy 2 also fails.
|
|
83
|
+
let fullPathError;
|
|
84
|
+
const fullLocation = isWithinRoot(fullPath, rootDir)
|
|
85
|
+
? await locateRealPath(fullPath, rootDir).catch((error) => {
|
|
86
|
+
fullPathError = error;
|
|
87
|
+
return null;
|
|
88
|
+
})
|
|
89
|
+
: null;
|
|
90
|
+
if (fullLocation === 'inside') {
|
|
83
91
|
this.pathCache.set(cacheKey, { found: true, foundAt: itemPath });
|
|
84
92
|
return {
|
|
85
93
|
reference: ref,
|
|
@@ -89,7 +97,8 @@ export class DirectoryValidator {
|
|
|
89
97
|
}
|
|
90
98
|
// Strategy 2: The path might be relative to the document's location
|
|
91
99
|
// e.g., a doc in "docs/" might reference "../src/..."
|
|
92
|
-
|
|
100
|
+
const docLocation = isWithinRoot(relativeToDoc, rootDir) ? await locateRealPath(relativeToDoc, rootDir) : null;
|
|
101
|
+
if (docLocation === 'inside') {
|
|
93
102
|
const foundAt = path.relative(rootDir, relativeToDoc);
|
|
94
103
|
this.pathCache.set(cacheKey, { found: true, foundAt });
|
|
95
104
|
return {
|
|
@@ -98,8 +107,11 @@ export class DirectoryValidator {
|
|
|
98
107
|
foundAt,
|
|
99
108
|
};
|
|
100
109
|
}
|
|
101
|
-
|
|
102
|
-
|
|
110
|
+
if (fullPathError) {
|
|
111
|
+
throw fullPathError;
|
|
112
|
+
}
|
|
113
|
+
// Fail early when both candidates are lexically outside root, or either one is a symlink out of it.
|
|
114
|
+
if (fullLocation === 'outside' || docLocation === 'outside' || (fullLocation === null && docLocation === null)) {
|
|
103
115
|
return {
|
|
104
116
|
reference: ref,
|
|
105
117
|
valid: false,
|
|
@@ -120,15 +132,6 @@ export class DirectoryValidator {
|
|
|
120
132
|
suggestion,
|
|
121
133
|
};
|
|
122
134
|
}
|
|
123
|
-
async pathExists(fullPath) {
|
|
124
|
-
try {
|
|
125
|
-
await fs.promises.access(fullPath);
|
|
126
|
-
return true;
|
|
127
|
-
}
|
|
128
|
-
catch {
|
|
129
|
-
return false;
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
135
|
/**
|
|
133
136
|
* Try to find a similar path for suggestions
|
|
134
137
|
* Handles common issues like singular/plural mismatches
|
|
@@ -140,11 +143,7 @@ export class DirectoryValidator {
|
|
|
140
143
|
// Get the parent directory path
|
|
141
144
|
const parentPath = segments.slice(0, -1).join('/');
|
|
142
145
|
const parentFullPath = path.resolve(rootDir, parentPath);
|
|
143
|
-
if (!isWithinRoot(parentFullPath, rootDir)) {
|
|
144
|
-
return null;
|
|
145
|
-
}
|
|
146
|
-
// Check if parent exists
|
|
147
|
-
if (!(await this.pathExists(parentFullPath))) {
|
|
146
|
+
if (!isWithinRoot(parentFullPath, rootDir) || (await locateRealPath(parentFullPath, rootDir)) !== 'inside') {
|
|
148
147
|
return null;
|
|
149
148
|
}
|
|
150
149
|
// List files in parent directory
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"directoryValidator.js","sourceRoot":"","sources":["../../src/validators/directoryValidator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACvF,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"directoryValidator.js","sourceRoot":"","sources":["../../src/validators/directoryValidator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import fs from 'fs';
|
|
2
|
+
import os from 'os';
|
|
2
3
|
import path from 'path';
|
|
3
4
|
import { DirectoryValidator } from './directoryValidator.js';
|
|
4
5
|
import { makeDoc as makeBaseDoc, makeRef as makeBaseRef } from '../test-utils/factories.js';
|
|
@@ -101,12 +102,55 @@ describe('DirectoryValidator', () => {
|
|
|
101
102
|
expect(results[0].suggestion).toBeTruthy();
|
|
102
103
|
}
|
|
103
104
|
});
|
|
105
|
+
it('reports a missing path as not found when only the root-relative candidate is outside root', async () => {
|
|
106
|
+
const results = await new DirectoryValidator().validateBatch([makeRef('../src/definitely-missing-dir')], doc, config);
|
|
107
|
+
expect(results[0].valid).toBe(false);
|
|
108
|
+
expect(results[0].message).toBe('Directory/file not found: ../src/definitely-missing-dir');
|
|
109
|
+
});
|
|
104
110
|
it('rejects paths that escape project root', async () => {
|
|
105
111
|
const validator = new DirectoryValidator();
|
|
106
112
|
const results = await validator.validateBatch([makeRef('../../../../etc/passwd')], doc, config);
|
|
107
113
|
expect(results[0].valid).toBe(false);
|
|
108
114
|
expect(results[0].message).toContain('escapes project root');
|
|
109
115
|
});
|
|
116
|
+
it('tries the doc-relative candidate before rethrowing a root-relative permission error', async () => {
|
|
117
|
+
const rootDir = await fs.promises.mkdtemp(path.join(os.tmpdir(), 'doc-freshness-directory-eacces-'));
|
|
118
|
+
try {
|
|
119
|
+
await fs.promises.mkdir(path.join(rootDir, 'docs', 'src'), { recursive: true });
|
|
120
|
+
await fs.promises.writeFile(path.join(rootDir, 'docs', 'src', 'index.ts'), '');
|
|
121
|
+
const permissionError = Object.assign(new Error('permission denied'), { code: 'EACCES' });
|
|
122
|
+
const realpath = fs.promises.realpath;
|
|
123
|
+
vi.spyOn(fs.promises, 'realpath').mockImplementation(async (candidate, options) => String(candidate).startsWith(path.join(rootDir, 'src') + path.sep) ? Promise.reject(permissionError) : realpath(candidate, options));
|
|
124
|
+
const guide = makeBaseDoc({ path: 'docs/guide.md' });
|
|
125
|
+
const [found] = await new DirectoryValidator().validateBatch([makeRef('src/index.ts')], guide, { ...config, rootDir });
|
|
126
|
+
expect(found.valid).toBe(true);
|
|
127
|
+
await expect(new DirectoryValidator().validateBatch([makeRef('src/missing.ts')], guide, { ...config, rootDir })).rejects.toBe(permissionError);
|
|
128
|
+
}
|
|
129
|
+
finally {
|
|
130
|
+
vi.restoreAllMocks();
|
|
131
|
+
await fs.promises.rm(rootDir, { recursive: true, force: true });
|
|
132
|
+
}
|
|
133
|
+
});
|
|
134
|
+
it('rejects symlinks that resolve outside project root and accepts symlinks inside it', async () => {
|
|
135
|
+
const tempDir = await fs.promises.mkdtemp(path.join(os.tmpdir(), 'doc-freshness-directory-symlink-'));
|
|
136
|
+
const rootDir = path.join(tempDir, 'root');
|
|
137
|
+
const outsideDir = path.join(tempDir, 'outside');
|
|
138
|
+
try {
|
|
139
|
+
await fs.promises.mkdir(path.join(rootDir, 'src'), { recursive: true });
|
|
140
|
+
await fs.promises.mkdir(outsideDir);
|
|
141
|
+
await fs.promises.writeFile(path.join(outsideDir, 'secret.txt'), 'outside');
|
|
142
|
+
await fs.promises.symlink(outsideDir, path.join(rootDir, 'linked'), 'dir');
|
|
143
|
+
await fs.promises.symlink(path.join(rootDir, 'src'), path.join(rootDir, 'src-link'), 'dir');
|
|
144
|
+
const results = await new DirectoryValidator().validateBatch([makeRef('linked'), makeRef('linked/secret.txt'), makeRef('linked/secre.txt'), makeRef('src-link')], makeBaseDoc({ path: 'docs/README.md' }), { ...config, rootDir });
|
|
145
|
+
expect(results.map((result) => result.valid)).toEqual([false, false, false, true]);
|
|
146
|
+
expect(results[0].message).toContain('escapes project root');
|
|
147
|
+
expect(results[1].message).toContain('escapes project root');
|
|
148
|
+
expect(results[2].suggestion).toBeNull();
|
|
149
|
+
}
|
|
150
|
+
finally {
|
|
151
|
+
await fs.promises.rm(tempDir, { recursive: true, force: true });
|
|
152
|
+
}
|
|
153
|
+
});
|
|
110
154
|
it('uses custom illustrative patterns from config', async () => {
|
|
111
155
|
const validator = new DirectoryValidator();
|
|
112
156
|
const customConfig = {
|