doc-freshness-checker 2.0.22 → 2.1.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.
Files changed (107) hide show
  1. package/README.md +10 -3
  2. package/dist/cache/cacheManager.d.ts +20 -2
  3. package/dist/cache/cacheManager.js +137 -39
  4. package/dist/cache/cacheManager.js.map +1 -1
  5. package/dist/cache/cacheManager.test.js +132 -4
  6. package/dist/cache/cacheManager.test.js.map +1 -1
  7. package/dist/index.d.ts +6 -1
  8. package/dist/index.js +5 -0
  9. package/dist/index.js.map +1 -1
  10. package/dist/manifests/manifestInventory.d.ts +28 -0
  11. package/dist/manifests/manifestInventory.js +225 -0
  12. package/dist/manifests/manifestInventory.js.map +1 -0
  13. package/dist/manifests/manifestInventory.test.d.ts +1 -0
  14. package/dist/manifests/manifestInventory.test.js +176 -0
  15. package/dist/manifests/manifestInventory.test.js.map +1 -0
  16. package/dist/manifests/validatorConstructors.test.d.ts +1 -0
  17. package/dist/manifests/validatorConstructors.test.js +17 -0
  18. package/dist/manifests/validatorConstructors.test.js.map +1 -0
  19. package/dist/parsers/documentParser.d.ts +2 -3
  20. package/dist/parsers/documentParser.js.map +1 -1
  21. package/dist/parsers/extractorInterface.test.d.ts +1 -0
  22. package/dist/parsers/extractorInterface.test.js +34 -0
  23. package/dist/parsers/extractorInterface.test.js.map +1 -0
  24. package/dist/parsers/extractors/codeSnippetExtractor.js.map +1 -1
  25. package/dist/plugins/plugin.d.ts +5 -1
  26. package/dist/plugins/plugin.js +5 -1
  27. package/dist/plugins/plugin.js.map +1 -1
  28. package/dist/reporters/consoleReporter.d.ts +5 -11
  29. package/dist/reporters/consoleReporter.js +74 -76
  30. package/dist/reporters/consoleReporter.js.map +1 -1
  31. package/dist/reporters/consoleReporter.test.js +22 -27
  32. package/dist/reporters/consoleReporter.test.js.map +1 -1
  33. package/dist/reporters/enhancedReporter.d.ts +51 -7
  34. package/dist/reporters/enhancedReporter.js +128 -74
  35. package/dist/reporters/enhancedReporter.js.map +1 -1
  36. package/dist/reporters/enhancedReporter.test.js +110 -122
  37. package/dist/reporters/enhancedReporter.test.js.map +1 -1
  38. package/dist/reporters/jsonReporter.d.ts +6 -6
  39. package/dist/reporters/jsonReporter.js +24 -14
  40. package/dist/reporters/jsonReporter.js.map +1 -1
  41. package/dist/reporters/jsonReporter.test.js +26 -11
  42. package/dist/reporters/jsonReporter.test.js.map +1 -1
  43. package/dist/reporters/markdownIssueCells.d.ts +7 -0
  44. package/dist/reporters/markdownIssueCells.js +9 -0
  45. package/dist/reporters/markdownIssueCells.js.map +1 -0
  46. package/dist/reporters/markdownReporter.d.ts +2 -7
  47. package/dist/reporters/markdownReporter.js +57 -56
  48. package/dist/reporters/markdownReporter.js.map +1 -1
  49. package/dist/reporters/markdownReporter.test.js +104 -76
  50. package/dist/reporters/markdownReporter.test.js.map +1 -1
  51. package/dist/reporters/publicReporterApi.test.d.ts +1 -0
  52. package/dist/reporters/publicReporterApi.test.js +28 -0
  53. package/dist/reporters/publicReporterApi.test.js.map +1 -0
  54. package/dist/reporters/reportContext.d.ts +12 -0
  55. package/dist/reporters/reportContext.js +8 -0
  56. package/dist/reporters/reportContext.js.map +1 -0
  57. package/dist/reporters/reportContext.test.d.ts +1 -0
  58. package/dist/reporters/reportContext.test.js +30 -0
  59. package/dist/reporters/reportContext.test.js.map +1 -0
  60. package/dist/reporters/reporters.characterization.test.d.ts +1 -0
  61. package/dist/reporters/reporters.characterization.test.js +208 -0
  62. package/dist/reporters/reporters.characterization.test.js.map +1 -0
  63. package/dist/runner.js +88 -85
  64. package/dist/runner.js.map +1 -1
  65. package/dist/runner.test.js +545 -56
  66. package/dist/runner.test.js.map +1 -1
  67. package/dist/semantic/vectorSearch.d.ts +3 -3
  68. package/dist/semantic/vectorSearch.js +29 -30
  69. package/dist/semantic/vectorSearch.js.map +1 -1
  70. package/dist/semantic/vectorSearch.test.js +53 -4
  71. package/dist/semantic/vectorSearch.test.js.map +1 -1
  72. package/dist/source/sourceIndex.d.ts +39 -0
  73. package/dist/source/sourceIndex.js +444 -0
  74. package/dist/source/sourceIndex.js.map +1 -0
  75. package/dist/source/sourceIndex.largeGlob.test.d.ts +1 -0
  76. package/dist/source/sourceIndex.largeGlob.test.js +29 -0
  77. package/dist/source/sourceIndex.largeGlob.test.js.map +1 -0
  78. package/dist/source/sourceIndex.test.d.ts +1 -0
  79. package/dist/source/sourceIndex.test.js +263 -0
  80. package/dist/source/sourceIndex.test.js.map +1 -0
  81. package/dist/source/sourceValidators.d.ts +7 -0
  82. package/dist/source/sourceValidators.js +8 -0
  83. package/dist/source/sourceValidators.js.map +1 -0
  84. package/dist/source/sourceValidators.test.d.ts +1 -0
  85. package/dist/source/sourceValidators.test.js +17 -0
  86. package/dist/source/sourceValidators.test.js.map +1 -0
  87. package/dist/types.d.ts +12 -2
  88. package/dist/utils/incremental.d.ts +3 -1
  89. package/dist/utils/incremental.js +32 -8
  90. package/dist/utils/incremental.js.map +1 -1
  91. package/dist/utils/incremental.test.js +17 -0
  92. package/dist/utils/incremental.test.js.map +1 -1
  93. package/dist/validators/codePatternValidator.d.ts +5 -11
  94. package/dist/validators/codePatternValidator.js +17 -145
  95. package/dist/validators/codePatternValidator.js.map +1 -1
  96. package/dist/validators/codeSnippetValidator.d.ts +5 -18
  97. package/dist/validators/codeSnippetValidator.js +19 -312
  98. package/dist/validators/codeSnippetValidator.js.map +1 -1
  99. package/dist/validators/dependencyValidator.d.ts +0 -5
  100. package/dist/validators/dependencyValidator.js +7 -64
  101. package/dist/validators/dependencyValidator.js.map +1 -1
  102. package/dist/validators/versionValidator.d.ts +1 -10
  103. package/dist/validators/versionValidator.js +7 -157
  104. package/dist/validators/versionValidator.js.map +1 -1
  105. package/dist/validators/versionValidator.test.js +1 -101
  106. package/dist/validators/versionValidator.test.js.map +1 -1
  107. package/package.json +3 -3
@@ -0,0 +1,29 @@
1
+ import fs from 'fs';
2
+ import os from 'os';
3
+ import path from 'path';
4
+ import { SourceIndex } from './sourceIndex.js';
5
+ const glob = vi.hoisted(() => vi.fn());
6
+ vi.mock('glob', () => ({ glob }));
7
+ describe('SourceIndex large glob results', () => {
8
+ it('preserves every match without a variadic append overflow', async () => {
9
+ const rootDir = await fs.promises.mkdtemp(path.join(os.tmpdir(), 'doc-freshness-large-glob-'));
10
+ const file = path.join(rootDir, 'large.ts');
11
+ await fs.promises.writeFile(file, 'class LargeResult {}', 'utf-8');
12
+ glob.mockResolvedValue(new Array(200_000).fill(file));
13
+ const readFile = vi.spyOn(fs.promises, 'readFile');
14
+ try {
15
+ const snapshot = await new SourceIndex().load({ rootDir, sourcePatterns: ['large'] }, 'pattern');
16
+ const locations = snapshot.symbols.get('LargeResult');
17
+ expect(locations).toHaveLength(200_000);
18
+ expect(locations?.[0].filePath).toBe('large.ts');
19
+ expect(locations?.at(-1)?.filePath).toBe('large.ts');
20
+ expect(readFile).toHaveBeenCalledOnce();
21
+ }
22
+ finally {
23
+ readFile.mockRestore();
24
+ glob.mockReset();
25
+ await fs.promises.rm(rootDir, { recursive: true, force: true });
26
+ }
27
+ });
28
+ });
29
+ //# sourceMappingURL=sourceIndex.largeGlob.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sourceIndex.largeGlob.test.js","sourceRoot":"","sources":["../../src/source/sourceIndex.largeGlob.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AAEvC,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAElC,QAAQ,CAAC,gCAAgC,EAAE,GAAG,EAAE;IAC9C,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;QACxE,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,2BAA2B,CAAC,CAAC,CAAC;QAC/F,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAC5C,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,EAAE,sBAAsB,EAAE,OAAO,CAAC,CAAC;QACnE,IAAI,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAS,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9D,MAAM,QAAQ,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAEnD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,WAAW,EAAE,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;YACjG,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YACtD,MAAM,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;YACxC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACjD,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACrD,MAAM,CAAC,QAAQ,CAAC,CAAC,oBAAoB,EAAE,CAAC;QAC1C,CAAC;gBACO,CAAC;YACP,QAAQ,CAAC,WAAW,EAAE,CAAC;YACvB,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAClE,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,263 @@
1
+ import fs from 'fs';
2
+ import os from 'os';
3
+ import path from 'path';
4
+ import { SourceIndex } from './sourceIndex.js';
5
+ import { createSourceValidators } from './sourceValidators.js';
6
+ async function withSources(files, run) {
7
+ const rootDir = await fs.promises.mkdtemp(path.join(os.tmpdir(), 'doc-freshness-source-index-'));
8
+ try {
9
+ for (const [relativePath, content] of Object.entries(files)) {
10
+ const absolutePath = path.join(rootDir, relativePath);
11
+ await fs.promises.mkdir(path.dirname(absolutePath), { recursive: true });
12
+ await fs.promises.writeFile(absolutePath, content, 'utf-8');
13
+ }
14
+ await run(rootDir);
15
+ }
16
+ finally {
17
+ await fs.promises.rm(rootDir, { recursive: true, force: true });
18
+ }
19
+ }
20
+ async function loadBoth(index, config) {
21
+ const [pattern, snippet] = await Promise.all([index.load(config, 'pattern'), index.load(config, 'snippet')]);
22
+ expect(snippet).toBe(pattern);
23
+ return pattern;
24
+ }
25
+ describe('SourceIndex', () => {
26
+ it('preserves the distinct fallback languages used by pattern and snippet scans', async () => {
27
+ await withSources({
28
+ 'src/a.js': 'class JsClass {}',
29
+ 'src/a.jsx': 'class JsxClass {}',
30
+ 'src/a.mjs': 'class MjsClass {}',
31
+ 'src/a.cjs': 'class CjsClass {}',
32
+ 'src/a.ts': 'interface TsType {}',
33
+ 'src/a.tsx': 'interface TsxType {}',
34
+ 'src/a.py': 'class PythonClass:',
35
+ 'src/a.go': 'type GoType struct {}',
36
+ 'src/a.rs': 'struct RustType {}',
37
+ 'src/A.java': 'class JavaType {}',
38
+ }, async (rootDir) => {
39
+ const snapshot = await loadBoth(new SourceIndex(), { rootDir });
40
+ expect(Array.from(snapshot.patternFiles.values()).map((file) => file.language)).toEqual(expect.arrayContaining(['javascript', 'typescript', 'python', 'go', 'rust', 'java']));
41
+ expect(snapshot.patternFiles.size).toBe(10);
42
+ expect(snapshot.snippetFiles.size).toBe(6);
43
+ expect(snapshot.snippetFiles.has('src/a.mjs')).toBe(false);
44
+ expect(snapshot.snippetFiles.has('src/a.rs')).toBe(false);
45
+ });
46
+ });
47
+ it('labels explicitly configured unknown files as javascript in both views', async () => {
48
+ await withSources({ 'src/custom.weird': 'export function odd() {}' }, async (rootDir) => {
49
+ const snapshot = await loadBoth(new SourceIndex(), { rootDir, sourcePatterns: ['**/*.weird'] });
50
+ expect(snapshot.patternFiles.get('src/custom.weird')?.language).toBe('javascript');
51
+ expect(snapshot.snippetFiles.get('src/custom.weird')?.language).toBe('javascript');
52
+ expect(snapshot.symbols.get('odd')).toHaveLength(2);
53
+ expect(snapshot.functionSignatures.get('odd')).toHaveLength(1);
54
+ });
55
+ });
56
+ it("starts only the requested view and performs only that view's reads", async () => {
57
+ await withSources({ 'src/api.ts': 'class TypeScript {}', 'src/api.rs': 'struct Rust {}' }, async (rootDir) => {
58
+ const readFile = vi.spyOn(fs.promises, 'readFile');
59
+ try {
60
+ const pattern = await new SourceIndex().load({ rootDir }, 'pattern');
61
+ expect(pattern.patternFiles.size).toBe(2);
62
+ expect(pattern.snippetFiles.size).toBe(0);
63
+ expect(readFile).toHaveBeenCalledTimes(2);
64
+ readFile.mockClear();
65
+ const snippet = await new SourceIndex().load({ rootDir }, 'snippet');
66
+ expect(snippet.patternFiles.size).toBe(0);
67
+ expect(snippet.snippetFiles.has('src/api.ts')).toBe(true);
68
+ expect(snippet.snippetFiles.has('src/api.rs')).toBe(false);
69
+ expect(readFile).toHaveBeenCalledTimes(1);
70
+ }
71
+ finally {
72
+ readFile.mockRestore();
73
+ }
74
+ });
75
+ });
76
+ it('preserves view-specific ignores and does not consume general config excludes', async () => {
77
+ await withSources({
78
+ 'src/kept.ts': 'class Kept {}',
79
+ 'dist/generated.ts': 'class DistOnly {}',
80
+ 'build/generated.ts': 'class BuildOnly {}',
81
+ 'src/ignored-by-config.ts': 'class ConfigStillIncluded {}',
82
+ 'src/ignored.test.ts': 'class TestIgnored {}',
83
+ 'src/ignored.spec.ts': 'class SpecIgnored {}',
84
+ 'src/types.d.ts': 'class DeclarationIgnored {}',
85
+ 'node_modules/pkg/index.ts': 'class DependencyIgnored {}',
86
+ 'vendor/pkg.ts': 'class VendorIgnored {}',
87
+ }, async (rootDir) => {
88
+ const fallback = await loadBoth(new SourceIndex(), { rootDir });
89
+ expect(fallback.patternFiles.has('dist/generated.ts')).toBe(true);
90
+ expect(fallback.patternFiles.has('build/generated.ts')).toBe(true);
91
+ expect(fallback.snippetFiles.has('dist/generated.ts')).toBe(false);
92
+ expect(fallback.snippetFiles.has('build/generated.ts')).toBe(false);
93
+ const broad = await loadBoth(new SourceIndex(), {
94
+ rootDir,
95
+ sourcePatterns: ['**/*'],
96
+ exclude: ['src/ignored-by-config.ts'],
97
+ ignorePatterns: ['src/ignored-by-config.ts'],
98
+ });
99
+ expect(broad.patternFiles.has('src/ignored-by-config.ts')).toBe(true);
100
+ expect(broad.snippetFiles.has('src/ignored-by-config.ts')).toBe(true);
101
+ expect(broad.patternFiles.has('src/ignored.test.ts')).toBe(false);
102
+ expect(broad.patternFiles.has('src/ignored.spec.ts')).toBe(false);
103
+ expect(broad.patternFiles.has('src/types.d.ts')).toBe(false);
104
+ expect(broad.patternFiles.has('node_modules/pkg/index.ts')).toBe(false);
105
+ expect(broad.patternFiles.has('vendor/pkg.ts')).toBe(false);
106
+ });
107
+ });
108
+ it('swallows unreadable matches and invalid patterns without aborting later patterns', async () => {
109
+ await withSources({ 'src/good.ts': 'class Good {}' }, async (rootDir) => {
110
+ const snapshot = await loadBoth(new SourceIndex(), { rootDir, sourcePatterns: ['src', '[', 'src/*.ts'] });
111
+ expect(snapshot.symbols.has('Good')).toBe(true);
112
+ expect(snapshot.patternFiles.has('src')).toBe(false);
113
+ expect(snapshot.snippetFiles.has('src')).toBe(false);
114
+ });
115
+ });
116
+ it('indexes every configured occurrence in order but reads each absolute file once', async () => {
117
+ await withSources({
118
+ 'src/a.ts': 'export function Shared() {}',
119
+ 'src/b.ts': 'export function Shared() {}',
120
+ }, async (rootDir) => {
121
+ const readFile = vi.spyOn(fs.promises, 'readFile');
122
+ try {
123
+ const snapshot = await loadBoth(new SourceIndex(), {
124
+ rootDir,
125
+ sourcePatterns: ['src/b.ts', 'src/a.ts', 'src/b.ts'],
126
+ });
127
+ expect(snapshot.symbols.get('Shared')?.map(({ filePath }) => filePath)).toEqual([
128
+ 'src/b.ts',
129
+ 'src/b.ts',
130
+ 'src/a.ts',
131
+ 'src/a.ts',
132
+ 'src/b.ts',
133
+ 'src/b.ts',
134
+ ]);
135
+ expect(snapshot.functionSignatures.get('Shared')?.map(({ filePath }) => filePath)).toEqual(['src/b.ts', 'src/a.ts', 'src/b.ts']);
136
+ expect(readFile).toHaveBeenCalledTimes(2);
137
+ }
138
+ finally {
139
+ readFile.mockRestore();
140
+ }
141
+ });
142
+ });
143
+ it('preserves signature, key, and export extraction quirks', async () => {
144
+ await withSources({
145
+ 'src/api.ts': [
146
+ 'export function calculate(required: Map<string, number>, optional?: string, ...rest: unknown[]) {}',
147
+ 'export const arrow = (first: string, second = "x") => first;',
148
+ 'export interface Config {',
149
+ ' readonly first?: string;',
150
+ ' nested: {',
151
+ ' ignored: string;',
152
+ ' };',
153
+ '}',
154
+ 'export type Config = { second: number };',
155
+ 'const Internal = 1;',
156
+ 'export { Internal as Public };',
157
+ 'export default function Named() {}',
158
+ 'module.exports = { common, alias: value };',
159
+ ].join('\n'),
160
+ 'src/api.py': [
161
+ 'def method(self, required, optional=1, *args): pass',
162
+ 'def public_fn(): pass',
163
+ 'def _private(): pass',
164
+ 'Public = 1',
165
+ ].join('\n'),
166
+ }, async (rootDir) => {
167
+ const snapshot = await loadBoth(new SourceIndex(), { rootDir, sourcePatterns: ['src/*'] });
168
+ expect(snapshot.symbols.get('calculate')).toHaveLength(2);
169
+ expect(snapshot.functionSignatures.get('calculate')).toEqual([
170
+ { params: ['required', 'optional', 'rest'], requiredParams: 1, filePath: 'src/api.ts' },
171
+ ]);
172
+ expect(snapshot.functionSignatures.get('arrow')).toEqual([
173
+ { params: ['first', 'second'], requiredParams: 1, filePath: 'src/api.ts' },
174
+ ]);
175
+ expect(snapshot.functionSignatures.get('method')).toEqual([
176
+ { params: ['required', 'optional', 'args'], requiredParams: 1, filePath: 'src/api.py' },
177
+ ]);
178
+ expect(snapshot.interfaceKeys.get('Config')).toEqual(new Set(['first', 'nested', 'second']));
179
+ expect(snapshot.exportsByFile.get('src/api.ts')).toEqual(new Set(['calculate', 'arrow', 'Config', 'Named', 'Internal', 'default', 'common', 'alias']));
180
+ expect(snapshot.exportsByFile.get('src/api.ts')?.has('Public')).toBe(false);
181
+ expect(snapshot.exportsByFile.get('src/api.py')).toEqual(new Set(['method', 'public_fn', 'Public']));
182
+ });
183
+ });
184
+ it('memoizes the in-flight load and lets the first config win', async () => {
185
+ await withSources({ 'a.ts': 'class FirstRoot {}' }, async (firstRoot) => {
186
+ await withSources({ 'b.ts': 'class SecondRoot {}' }, async (secondRoot) => {
187
+ const index = new SourceIndex();
188
+ const first = index.load({ rootDir: firstRoot, sourcePatterns: ['*.ts'] }, 'pattern');
189
+ const second = index.load({ rootDir: secondRoot, sourcePatterns: ['*.ts'] }, 'pattern');
190
+ expect(second).toBe(first);
191
+ const [firstSnapshot, secondSnapshot] = await Promise.all([first, second]);
192
+ expect(secondSnapshot).toBe(firstSnapshot);
193
+ expect(firstSnapshot.symbols.has('FirstRoot')).toBe(true);
194
+ expect(firstSnapshot.symbols.has('SecondRoot')).toBe(false);
195
+ const snippet = await index.load({ rootDir: secondRoot, sourcePatterns: ['*.ts'] }, 'snippet');
196
+ expect(snippet.snippetFiles.has('a.ts')).toBe(true);
197
+ expect(snippet.snippetFiles.has('b.ts')).toBe(false);
198
+ });
199
+ });
200
+ });
201
+ it('keeps successful empty loads sticky and recovers to empty maps after a rejected first load', async () => {
202
+ await withSources({ 'a.ts': 'class Later {}' }, async (rootDir) => {
203
+ const emptyIndex = new SourceIndex();
204
+ const empty = await emptyIndex.load({ rootDir, sourcePatterns: [] }, 'pattern');
205
+ expect(empty.symbols.size).toBe(0);
206
+ expect(await emptyIndex.load({ rootDir, sourcePatterns: ['*.ts'] }, 'pattern')).toBe(empty);
207
+ const rejectedIndex = new SourceIndex();
208
+ const error = new Error('bad config');
209
+ const badConfig = Object.defineProperty({ rootDir }, 'sourcePatterns', {
210
+ get: () => {
211
+ throw error;
212
+ },
213
+ });
214
+ const rejected = rejectedIndex.load(badConfig, 'pattern');
215
+ const concurrent = rejectedIndex.load({ rootDir, sourcePatterns: ['*.ts'] }, 'pattern');
216
+ expect(concurrent).toBe(rejected);
217
+ await expect(Promise.all([rejected, concurrent])).rejects.toBe(error);
218
+ const recovered = await rejectedIndex.load({ rootDir, sourcePatterns: ['*.ts'] }, 'pattern');
219
+ expect(recovered.patternFiles.size).toBe(0);
220
+ expect(recovered.symbols.size).toBe(0);
221
+ });
222
+ });
223
+ it('leaves validator getters initialized after each view rejects once', async () => {
224
+ await withSources({ 'src/api.ts': 'class Later {}' }, async (rootDir) => {
225
+ const error = new Error('bad config');
226
+ const badConfig = Object.defineProperty({ rootDir }, 'sourcePatterns', {
227
+ get: () => {
228
+ throw error;
229
+ },
230
+ });
231
+ const goodConfig = { rootDir, sourcePatterns: ['src/*.ts'] };
232
+ const index = new SourceIndex();
233
+ const { pattern, snippet } = createSourceValidators(index);
234
+ await expect(pattern.buildSourceIndex(badConfig)).rejects.toBe(error);
235
+ expect(pattern.getSourceIndex()).toEqual(new Map());
236
+ expect(pattern.getSourceFiles()).toEqual(new Map());
237
+ await expect(pattern.buildSourceIndex(goodConfig)).resolves.toBeUndefined();
238
+ await expect(snippet.validateBatch([], {}, badConfig)).rejects.toBe(error);
239
+ expect(snippet.getFunctionSignatures()).toEqual(new Map());
240
+ expect(snippet.getInterfaceKeys()).toEqual(new Map());
241
+ await expect(snippet.validateBatch([], {}, goodConfig)).resolves.toEqual([]);
242
+ });
243
+ });
244
+ it('keeps validator state null until build and then shares stable snapshot maps', async () => {
245
+ await withSources({ 'src/api.ts': 'export function real() {}\ninterface Config { key: string }' }, async (rootDir) => {
246
+ const index = new SourceIndex();
247
+ const { pattern, snippet } = createSourceValidators(index);
248
+ expect(pattern.getSourceIndex()).toBeNull();
249
+ expect(pattern.getSourceFiles()).toBeNull();
250
+ expect(snippet.getFunctionSignatures()).toBeNull();
251
+ expect(snippet.getInterfaceKeys()).toBeNull();
252
+ const config = { rootDir, sourcePatterns: ['src/*.ts'] };
253
+ await pattern.buildSourceIndex(config);
254
+ await snippet.validateBatch([], {}, config);
255
+ const snapshot = await index.load(config, 'pattern');
256
+ expect(pattern.getSourceIndex()).toBe(snapshot.symbols);
257
+ expect(pattern.getSourceFiles()).toBe(snapshot.patternFiles);
258
+ expect(snippet.getFunctionSignatures()).toBe(snapshot.functionSignatures);
259
+ expect(snippet.getInterfaceKeys()).toBe(snapshot.interfaceKeys);
260
+ });
261
+ });
262
+ });
263
+ //# sourceMappingURL=sourceIndex.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sourceIndex.test.js","sourceRoot":"","sources":["../../src/source/sourceIndex.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { CodePatternValidator } from '../validators/codePatternValidator.js';
2
+ import { CodeSnippetValidator } from '../validators/codeSnippetValidator.js';
3
+ import { SourceIndex } from './sourceIndex.js';
4
+ export declare function createSourceValidators(index: SourceIndex): {
5
+ pattern: CodePatternValidator;
6
+ snippet: CodeSnippetValidator;
7
+ };
@@ -0,0 +1,8 @@
1
+ import { CodePatternValidator } from '../validators/codePatternValidator.js';
2
+ import { CodeSnippetValidator } from '../validators/codeSnippetValidator.js';
3
+ export function createSourceValidators(index) {
4
+ const PatternValidator = CodePatternValidator;
5
+ const SnippetValidator = CodeSnippetValidator;
6
+ return { pattern: new PatternValidator(index), snippet: new SnippetValidator(index) };
7
+ }
8
+ //# sourceMappingURL=sourceValidators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sourceValidators.js","sourceRoot":"","sources":["../../src/source/sourceValidators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAK7E,MAAM,UAAU,sBAAsB,CAAC,KAAkB;IAIvD,MAAM,gBAAgB,GAAG,oBAAmF,CAAC;IAC7G,MAAM,gBAAgB,GAAG,oBAAmF,CAAC;IAC7G,OAAO,EAAE,OAAO,EAAE,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;AACxF,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,17 @@
1
+ import { CodePatternValidator } from '../validators/codePatternValidator.js';
2
+ import { CodeSnippetValidator } from '../validators/codeSnippetValidator.js';
3
+ import { SourceIndex } from './sourceIndex.js';
4
+ describe('public validator constructors', () => {
5
+ it('accept only zero arguments in the public type surface', () => {
6
+ expectTypeOf(CodePatternValidator).toBeConstructibleWith();
7
+ expectTypeOf(CodeSnippetValidator).toBeConstructibleWith();
8
+ const internalInjectionIsRejected = () => {
9
+ // @ts-expect-error SourceIndex injection is internal-only.
10
+ new CodePatternValidator(new SourceIndex());
11
+ // @ts-expect-error SourceIndex injection is internal-only.
12
+ new CodeSnippetValidator(new SourceIndex());
13
+ };
14
+ expectTypeOf(internalInjectionIsRejected).toBeFunction();
15
+ });
16
+ });
17
+ //# sourceMappingURL=sourceValidators.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sourceValidators.test.js","sourceRoot":"","sources":["../../src/source/sourceValidators.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,QAAQ,CAAC,+BAA+B,EAAE,GAAG,EAAE;IAC7C,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,YAAY,CAAC,oBAAoB,CAAC,CAAC,qBAAqB,EAAE,CAAC;QAC3D,YAAY,CAAC,oBAAoB,CAAC,CAAC,qBAAqB,EAAE,CAAC;QAE3D,MAAM,2BAA2B,GAAG,GAAS,EAAE;YAC7C,2DAA2D;YAC3D,IAAI,oBAAoB,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC;YAC5C,2DAA2D;YAC3D,IAAI,oBAAoB,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC;QAC9C,CAAC,CAAC;QACF,YAAY,CAAC,2BAA2B,CAAC,CAAC,YAAY,EAAE,CAAC;IAC3D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
package/dist/types.d.ts CHANGED
@@ -111,7 +111,7 @@ export interface DocFreshnessConfig {
111
111
  outputDir?: string;
112
112
  outputPath?: string;
113
113
  ignorePatterns?: string[];
114
- customExtractors?: BaseExtractor[];
114
+ customExtractors?: Extractor[];
115
115
  customValidators?: Record<string, BaseValidator>;
116
116
  graph?: GraphConfig;
117
117
  git?: GitConfig;
@@ -196,6 +196,10 @@ export interface LanguagePattern {
196
196
  regex: RegExp;
197
197
  kind: string;
198
198
  }
199
+ export interface Extractor {
200
+ supportsFormat(format: DocumentFormat): boolean;
201
+ extract(document: Document): Reference[];
202
+ }
199
203
  export interface BaseExtractor {
200
204
  type: string;
201
205
  supportedFormats: DocumentFormat[];
@@ -228,6 +232,11 @@ export interface SourceFileData {
228
232
  content: string;
229
233
  language: string;
230
234
  }
235
+ export interface FunctionSignature {
236
+ params: string[];
237
+ requiredParams: number;
238
+ filePath: string;
239
+ }
231
240
  export interface CodeFile {
232
241
  path: string;
233
242
  content: string;
@@ -309,7 +318,8 @@ export interface IncrementalStats {
309
318
  skipped: number;
310
319
  percentSkipped: number;
311
320
  }
312
- export type ManifestParser = (filePath: string) => Promise<Map<string, string>>;
321
+ export type SupportedLanguage = 'javascript' | 'typescript' | 'python' | 'go' | 'rust' | 'java';
322
+ export type SupportedSnippetLanguage = Extract<SupportedLanguage, 'javascript' | 'typescript' | 'python' | 'go'>;
313
323
  export interface LanguageConfig {
314
324
  extensions: string[];
315
325
  patterns: LanguagePattern[];
@@ -1,3 +1,4 @@
1
+ import type { CacheManager } from '../cache/cacheManager.js';
1
2
  import type { Document, IncrementalStats } from '../types.js';
2
3
  /**
3
4
  * Incremental checker for skipping unchanged documentation files.
@@ -6,12 +7,13 @@ import type { Document, IncrementalStats } from '../types.js';
6
7
  export declare class IncrementalChecker {
7
8
  private stateDir;
8
9
  private stateFile;
10
+ private cacheManager;
9
11
  private previousState;
10
12
  private currentHashes;
11
13
  private configFingerprint;
12
14
  private inputFingerprint;
13
15
  private verbose;
14
- constructor(stateDir?: string);
16
+ constructor(stateDirOrManager?: string | CacheManager);
15
17
  loadState(): Promise<void>;
16
18
  saveState(clean?: boolean): Promise<void>;
17
19
  getHash(filePath: string): Promise<string>;
@@ -11,14 +11,16 @@ const EXCLUDED_DIRECTORIES = new Set(['.git', 'node_modules']);
11
11
  export class IncrementalChecker {
12
12
  stateDir;
13
13
  stateFile;
14
+ cacheManager;
14
15
  previousState;
15
16
  currentHashes;
16
17
  configFingerprint;
17
18
  inputFingerprint;
18
19
  verbose;
19
- constructor(stateDir = '.doc-freshness-cache') {
20
- this.stateDir = stateDir;
21
- this.stateFile = path.join(stateDir, 'file-hashes.json');
20
+ constructor(stateDirOrManager = '.doc-freshness-cache') {
21
+ this.cacheManager = typeof stateDirOrManager === 'string' ? null : stateDirOrManager;
22
+ this.stateDir = typeof stateDirOrManager === 'string' ? stateDirOrManager : stateDirOrManager.policy.dir;
23
+ this.stateFile = path.join(this.stateDir, 'file-hashes.json');
22
24
  this.previousState = null;
23
25
  this.currentHashes = new Map();
24
26
  this.configFingerprint = null;
@@ -27,8 +29,25 @@ export class IncrementalChecker {
27
29
  }
28
30
  async loadState() {
29
31
  this.previousState = null;
32
+ let data;
33
+ if (this.cacheManager) {
34
+ data = await this.cacheManager.readIncrementalState();
35
+ }
36
+ else {
37
+ try {
38
+ data = await fs.promises.readFile(this.stateFile, 'utf-8');
39
+ }
40
+ catch (error) {
41
+ this.logFullValidation(error.code === 'ENOENT' ? 'no saved state exists' : 'saved state could not be read');
42
+ return;
43
+ }
44
+ }
45
+ if (data === null) {
46
+ this.logFullValidation('no saved state exists');
47
+ return;
48
+ }
30
49
  try {
31
- const value = JSON.parse(await fs.promises.readFile(this.stateFile, 'utf-8'));
50
+ const value = JSON.parse(data);
32
51
  if (!value || typeof value !== 'object' || Array.isArray(value)) {
33
52
  this.logFullValidation('saved state is not an object');
34
53
  return;
@@ -56,12 +75,11 @@ export class IncrementalChecker {
56
75
  }
57
76
  this.previousState = parsed;
58
77
  }
59
- catch (error) {
60
- this.logFullValidation(error.code === 'ENOENT' ? 'no saved state exists' : 'saved state could not be read');
78
+ catch {
79
+ this.logFullValidation('saved state could not be read');
61
80
  }
62
81
  }
63
82
  async saveState(clean = true) {
64
- await fs.promises.mkdir(this.stateDir, { recursive: true });
65
83
  const state = {
66
84
  version: STATE_VERSION,
67
85
  documentHashes: Object.fromEntries(this.currentHashes),
@@ -69,7 +87,13 @@ export class IncrementalChecker {
69
87
  inputFingerprint: this.inputFingerprint,
70
88
  clean,
71
89
  };
72
- await fs.promises.writeFile(this.stateFile, JSON.stringify(state, null, 2));
90
+ const content = JSON.stringify(state, null, 2);
91
+ if (this.cacheManager) {
92
+ await this.cacheManager.writeIncrementalState(content);
93
+ return;
94
+ }
95
+ await fs.promises.mkdir(this.stateDir, { recursive: true });
96
+ await fs.promises.writeFile(this.stateFile, content);
73
97
  }
74
98
  async getHash(filePath) {
75
99
  return hash(await fs.promises.readFile(filePath, 'utf-8'));
@@ -1 +1 @@
1
- {"version":3,"file":"incremental.js","sourceRoot":"","sources":["../../src/utils/incremental.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"incremental.js","sourceRoot":"","sources":["../../src/utils/incremental.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import fs from 'fs';
2
2
  import os from 'os';
3
3
  import path from 'path';
4
+ import { CacheManager } from '../cache/cacheManager.js';
4
5
  import { IncrementalChecker } from '../index.js';
5
6
  describe('IncrementalChecker', () => {
6
7
  let rootDir;
@@ -391,5 +392,21 @@ describe('IncrementalChecker', () => {
391
392
  expect(state.configFingerprint).toBeTypeOf('string');
392
393
  expect(state.inputFingerprint).toBeTypeOf('string');
393
394
  });
395
+ it('revalidates manager-owned state after an ancestor symlink swap', async () => {
396
+ const tempDir = await fs.promises.mkdtemp(path.join(os.tmpdir(), 'doc-freshness-incremental-swap-'));
397
+ const rootDir = path.join(tempDir, 'root');
398
+ const outsideDir = path.join(tempDir, 'outside');
399
+ const cacheAncestor = path.join(rootDir, 'results');
400
+ fs.mkdirSync(path.join(cacheAncestor, 'cache'), { recursive: true });
401
+ fs.mkdirSync(outsideDir);
402
+ fs.writeFileSync(path.join(outsideDir, 'sentinel'), 'keep');
403
+ const managedChecker = new IncrementalChecker(new CacheManager({ rootDir, cache: { enabled: true, dir: 'results/cache' } }));
404
+ fs.rmSync(cacheAncestor, { recursive: true, force: true });
405
+ fs.symlinkSync(outsideDir, cacheAncestor);
406
+ await expect(managedChecker.filterChanged([])).rejects.toThrow('strict descendant of project root');
407
+ await expect(managedChecker.saveState()).rejects.toThrow('strict descendant of project root');
408
+ expect(fs.readdirSync(outsideDir)).toEqual(['sentinel']);
409
+ fs.rmSync(tempDir, { recursive: true, force: true });
410
+ });
394
411
  });
395
412
  //# sourceMappingURL=incremental.test.js.map