doc-freshness-checker 2.2.2 → 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 +5 -20
- 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.js +0 -21
- 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/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/runner.js +0 -3
- package/dist/runner.js.map +1 -1
- package/dist/runner.test.js +1 -20
- package/dist/runner.test.js.map +1 -1
- package/dist/source/sourceIndex.test.js +0 -1
- package/dist/source/sourceIndex.test.js.map +1 -1
- package/dist/types.d.ts +2 -53
- package/package.json +1 -1
- 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
package/README.md
CHANGED
|
@@ -41,7 +41,7 @@ Validate documentation against your codebase to catch stale references before th
|
|
|
41
41
|
- **Manifest hints for version/dependency checks:** basic format-specific identifiers and versions from listed `package.json`, `requirements.txt`, `pyproject.toml`, `go.mod`, `Cargo.toml`, and `pom.xml` files.
|
|
42
42
|
- In the general manifest candidate set, concrete versions take precedence over unpinned entries. Python package names retain their Python-specific source precedence. Among equally concrete candidates, the later configured manifest wins.
|
|
43
43
|
- Cargo parses simple and inline-table entries in `[dependencies]`, `[dev-dependencies]`, `[build-dependencies]`, and `[workspace.dependencies]`. Workspace references resolve from matching workspace definitions across explicitly listed `Cargo.toml` files. Dependency subtables, dotted keys, and target-specific sections are not parsed.
|
|
44
|
-
- **Reporters:** `console`, `json`, `markdown`, `enhanced`.
|
|
44
|
+
- **Reporters:** `console`, `json`, `markdown`, `enhanced`. In a Git repository with graph linking enabled, `enhanced` also lists the documents whose referenced code changed in the last seven days.
|
|
45
45
|
- **Advanced modes:** incremental checking, freshness scoring, graph linking, semantic vector search.
|
|
46
46
|
|
|
47
47
|
## Prerequisites
|
|
@@ -263,6 +263,8 @@ rules: {
|
|
|
263
263
|
|
|
264
264
|
Illustrative paths and symbols (e.g., tutorial placeholders) are detected automatically and can be skipped or downgraded in severity via rule configuration.
|
|
265
265
|
|
|
266
|
+
To mark more paths as illustrative, add regular expressions to `illustrativePatterns` on the `file-path`, `directory-structure`, or `code-snippet` rule. Each pattern is matched without regard to case, in addition to the built-in patterns. For `code-snippet`, the patterns apply to import paths.
|
|
267
|
+
|
|
266
268
|
## Configuration
|
|
267
269
|
|
|
268
270
|
### Auto-Discovery
|
|
@@ -294,20 +296,6 @@ export default defineConfig({
|
|
|
294
296
|
});
|
|
295
297
|
```
|
|
296
298
|
|
|
297
|
-
The following accepted configuration options do not affect validation or reporting and are planned for removal in v3.0.0.
|
|
298
|
-
They remain part of the incremental configuration fingerprint, so changing one forces the next incremental run to perform
|
|
299
|
-
a full validation:
|
|
300
|
-
|
|
301
|
-
| Option | Current behavior / migration |
|
|
302
|
-
| ---------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
303
|
-
| `rules.version.allowMinorDrift` | Version validation compares major versions only. |
|
|
304
|
-
| `outputDir` | Use `outputPath` with the JSON, Markdown, or Enhanced reporter. Console output remains on stdout. |
|
|
305
|
-
| `ignorePatterns` | `include` and `exclude` select documentation files. Rule-level `illustrativePatterns` can suppress illustrative `file-path`, `directory-structure`, and `code-snippet` references; there is no general semantic reference-ignore replacement. |
|
|
306
|
-
| `git`, `git.enabled`, `git.trackChanges`, `git.changeWindow` | Git availability is auto-detected during graph processing, and Enhanced reports use a fixed seven-day change window. |
|
|
307
|
-
| `vectorSearch.indexCodeComments`, `vectorSearch.indexDocstrings` | Enabled vector search follows its built-in indexing behavior. |
|
|
308
|
-
|
|
309
|
-
The exported `GitConfig` type is deprecated with the `git` property.
|
|
310
|
-
|
|
311
299
|
<details>
|
|
312
300
|
<summary>Full configuration example</summary>
|
|
313
301
|
|
|
@@ -341,7 +329,7 @@ export default {
|
|
|
341
329
|
},
|
|
342
330
|
|
|
343
331
|
reporters: ['console'],
|
|
344
|
-
cache: { enabled: true, dir: '.doc-freshness-cache'
|
|
332
|
+
cache: { enabled: true, dir: '.doc-freshness-cache' },
|
|
345
333
|
incremental: { enabled: false },
|
|
346
334
|
vectorSearch: { enabled: false, similarityThreshold: 0.3 },
|
|
347
335
|
verbose: false,
|
|
@@ -400,10 +388,7 @@ console.log(results.summary);
|
|
|
400
388
|
|
|
401
389
|
`run()` and `runWithConfig()` reject when a matched document cannot be read or an extractor or validator throws. `runWithConfig()` also rejects when its configuration file cannot be loaded. Matched paths confirmed to have disappeared between discovery and reading are ignored as a normal filesystem race.
|
|
402
390
|
|
|
403
|
-
|
|
404
|
-
> `Plugin` is deprecated because it is not consumed by `run()` and is planned for removal in v3.0.0. Use
|
|
405
|
-
> `DocFreshnessConfig.customExtractors` and `DocFreshnessConfig.customValidators` for supported extensions. Reporter and
|
|
406
|
-
> lifecycle hooks have no replacement.
|
|
391
|
+
To add your own extractors or validators, use `DocFreshnessConfig.customExtractors` and `DocFreshnessConfig.customValidators`.
|
|
407
392
|
|
|
408
393
|
Key exports:
|
|
409
394
|
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import type { CacheStats2, DocFreshnessConfig, UrlCacheEntry } from '../types.js';
|
|
1
|
+
import type { DocFreshnessConfig, UrlCacheEntry } from '../types.js';
|
|
3
2
|
export type CachePolicy = Readonly<{
|
|
4
3
|
enabled: boolean;
|
|
5
4
|
dir: string;
|
|
@@ -8,11 +7,9 @@ export type CachePolicy = Readonly<{
|
|
|
8
7
|
* Resolves result-cache policy and manages persisted cache data
|
|
9
8
|
*/
|
|
10
9
|
export declare class CacheManager {
|
|
11
|
-
private config;
|
|
12
10
|
private rootDir;
|
|
13
11
|
private rawDir;
|
|
14
12
|
readonly policy: CachePolicy;
|
|
15
|
-
private cacheFile;
|
|
16
13
|
private urlCacheFile;
|
|
17
14
|
private embeddingCacheFile;
|
|
18
15
|
private incrementalStateFile;
|
|
@@ -22,20 +19,6 @@ export declare class CacheManager {
|
|
|
22
19
|
private validateCacheFile;
|
|
23
20
|
private readCacheFile;
|
|
24
21
|
private writeCacheFile;
|
|
25
|
-
private statCacheFile;
|
|
26
|
-
/**
|
|
27
|
-
* Save the code-to-doc graph
|
|
28
|
-
*/
|
|
29
|
-
saveGraph(graph: CodeDocGraph): Promise<void>;
|
|
30
|
-
/**
|
|
31
|
-
* Load the cached graph
|
|
32
|
-
*/
|
|
33
|
-
loadGraph(): Promise<CodeDocGraph | null>;
|
|
34
|
-
/**
|
|
35
|
-
* Check if cache is valid based on config hash and git state
|
|
36
|
-
*/
|
|
37
|
-
isCacheValid(graph: CodeDocGraph | null, currentCommit: string | null): boolean;
|
|
38
|
-
private getConfigHash;
|
|
39
22
|
/**
|
|
40
23
|
* Save URL validation cache
|
|
41
24
|
*/
|
|
@@ -53,8 +36,4 @@ export declare class CacheManager {
|
|
|
53
36
|
* Clear all caches
|
|
54
37
|
*/
|
|
55
38
|
clearCache(): Promise<void>;
|
|
56
|
-
/**
|
|
57
|
-
* Get cache statistics
|
|
58
|
-
*/
|
|
59
|
-
getCacheStats(): Promise<CacheStats2>;
|
|
60
39
|
}
|
|
@@ -1,27 +1,22 @@
|
|
|
1
1
|
import fs from 'fs';
|
|
2
2
|
import path from 'path';
|
|
3
3
|
import crypto from 'crypto';
|
|
4
|
-
import { CodeDocGraph } from '../graph/codeDocGraph.js';
|
|
5
4
|
import { isWithinRoot, resolveProjectRoot } from '../utils/pathSecurity.js';
|
|
6
5
|
/**
|
|
7
6
|
* Resolves result-cache policy and manages persisted cache data
|
|
8
7
|
*/
|
|
9
8
|
export class CacheManager {
|
|
10
|
-
config;
|
|
11
9
|
rootDir;
|
|
12
10
|
rawDir;
|
|
13
11
|
policy;
|
|
14
|
-
cacheFile;
|
|
15
12
|
urlCacheFile;
|
|
16
13
|
embeddingCacheFile;
|
|
17
14
|
incrementalStateFile;
|
|
18
15
|
constructor(config) {
|
|
19
|
-
this.config = config;
|
|
20
16
|
this.rawDir = config.cache?.dir || config.graph?.cacheDir || '.doc-freshness-cache';
|
|
21
17
|
this.rootDir = resolveProjectRoot(config.rootDir);
|
|
22
18
|
const resolved = path.resolve(this.rootDir, this.rawDir);
|
|
23
19
|
this.policy = Object.freeze({ enabled: config.cache?.enabled !== false, dir: resolved });
|
|
24
|
-
this.cacheFile = path.join(this.policy.dir, 'graph-cache.json');
|
|
25
20
|
this.urlCacheFile = path.join(this.policy.dir, 'url-cache.json');
|
|
26
21
|
this.embeddingCacheFile = path.join(this.policy.dir, 'embedding-cache.json');
|
|
27
22
|
this.incrementalStateFile = path.join(this.policy.dir, 'file-hashes.json');
|
|
@@ -96,74 +91,6 @@ export class CacheManager {
|
|
|
96
91
|
await fs.promises.rm(tempFile, { force: true }).catch(() => { });
|
|
97
92
|
}
|
|
98
93
|
}
|
|
99
|
-
async statCacheFile(filePath) {
|
|
100
|
-
if (!this.policy.enabled) {
|
|
101
|
-
return null;
|
|
102
|
-
}
|
|
103
|
-
this.validateCacheFile(filePath);
|
|
104
|
-
try {
|
|
105
|
-
return await fs.promises.stat(filePath);
|
|
106
|
-
}
|
|
107
|
-
catch {
|
|
108
|
-
return null;
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
/**
|
|
112
|
-
* Save the code-to-doc graph
|
|
113
|
-
*/
|
|
114
|
-
async saveGraph(graph) {
|
|
115
|
-
if (!this.policy.enabled) {
|
|
116
|
-
return;
|
|
117
|
-
}
|
|
118
|
-
const data = graph.serialize();
|
|
119
|
-
data.configHash = this.getConfigHash();
|
|
120
|
-
await this.writeCacheFile(this.cacheFile, JSON.stringify(data, null, 2));
|
|
121
|
-
}
|
|
122
|
-
/**
|
|
123
|
-
* Load the cached graph
|
|
124
|
-
*/
|
|
125
|
-
async loadGraph() {
|
|
126
|
-
const content = await this.readCacheFile(this.cacheFile);
|
|
127
|
-
if (content === null) {
|
|
128
|
-
return null;
|
|
129
|
-
}
|
|
130
|
-
try {
|
|
131
|
-
const data = JSON.parse(content);
|
|
132
|
-
return CodeDocGraph.deserialize(data);
|
|
133
|
-
}
|
|
134
|
-
catch {
|
|
135
|
-
return null;
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
/**
|
|
139
|
-
* Check if cache is valid based on config hash and git state
|
|
140
|
-
*/
|
|
141
|
-
isCacheValid(graph, currentCommit) {
|
|
142
|
-
if (!this.policy.enabled || !graph) {
|
|
143
|
-
return false;
|
|
144
|
-
}
|
|
145
|
-
if (!graph.buildTimestamp) {
|
|
146
|
-
return false;
|
|
147
|
-
}
|
|
148
|
-
const configHash = this.getConfigHash();
|
|
149
|
-
if (graph.configHash && graph.configHash !== configHash) {
|
|
150
|
-
return false;
|
|
151
|
-
}
|
|
152
|
-
if (currentCommit && graph.gitCommit) {
|
|
153
|
-
return currentCommit === graph.gitCommit;
|
|
154
|
-
}
|
|
155
|
-
const maxAge = this.config.cache?.maxAge || this.config.graph?.cacheMaxAge || 24 * 60 * 60 * 1000;
|
|
156
|
-
return Date.now() - graph.buildTimestamp < maxAge;
|
|
157
|
-
}
|
|
158
|
-
getConfigHash() {
|
|
159
|
-
const relevantConfig = {
|
|
160
|
-
include: this.config.include,
|
|
161
|
-
exclude: this.config.exclude,
|
|
162
|
-
sourcePatterns: this.config.sourcePatterns,
|
|
163
|
-
manifestFiles: this.config.manifestFiles,
|
|
164
|
-
};
|
|
165
|
-
return crypto.createHash('md5').update(JSON.stringify(relevantConfig)).digest('hex');
|
|
166
|
-
}
|
|
167
94
|
/**
|
|
168
95
|
* Save URL validation cache
|
|
169
96
|
*/
|
|
@@ -211,28 +138,5 @@ export class CacheManager {
|
|
|
211
138
|
this.validateCacheDir();
|
|
212
139
|
await fs.promises.rm(this.policy.dir, { recursive: true, force: true });
|
|
213
140
|
}
|
|
214
|
-
/**
|
|
215
|
-
* Get cache statistics
|
|
216
|
-
*/
|
|
217
|
-
async getCacheStats() {
|
|
218
|
-
const stats = {
|
|
219
|
-
exists: false,
|
|
220
|
-
graphSize: 0,
|
|
221
|
-
urlCacheSize: 0,
|
|
222
|
-
lastUpdated: null,
|
|
223
|
-
};
|
|
224
|
-
if (!this.policy.enabled) {
|
|
225
|
-
return stats;
|
|
226
|
-
}
|
|
227
|
-
const [graphStat, urlStat, embeddingStat, incrementalStat] = await Promise.all([this.cacheFile, this.urlCacheFile, this.embeddingCacheFile, this.incrementalStateFile].map((file) => this.statCacheFile(file)));
|
|
228
|
-
const existingStats = [graphStat, urlStat, embeddingStat, incrementalStat].filter((stat) => stat !== null);
|
|
229
|
-
if (existingStats.length > 0) {
|
|
230
|
-
stats.exists = true;
|
|
231
|
-
stats.graphSize = graphStat?.size ?? 0;
|
|
232
|
-
stats.urlCacheSize = urlStat?.size ?? 0;
|
|
233
|
-
stats.lastUpdated = new Date(Math.max(...existingStats.map((stat) => stat.mtimeMs)));
|
|
234
|
-
}
|
|
235
|
-
return stats;
|
|
236
|
-
}
|
|
237
141
|
}
|
|
238
142
|
//# sourceMappingURL=cacheManager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cacheManager.js","sourceRoot":"","sources":["../../src/cache/cacheManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"cacheManager.js","sourceRoot":"","sources":["../../src/cache/cacheManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,6 @@ import fs from 'fs';
|
|
|
2
2
|
import os from 'os';
|
|
3
3
|
import path from 'path';
|
|
4
4
|
import { CacheManager } from './cacheManager.js';
|
|
5
|
-
import { CodeDocGraph } from '../graph/codeDocGraph.js';
|
|
6
5
|
describe('CacheManager', () => {
|
|
7
6
|
const cacheDir = path.join(process.cwd(), '.doc-freshness-cache', 'test-cache');
|
|
8
7
|
const config = {
|
|
@@ -97,26 +96,6 @@ describe('CacheManager', () => {
|
|
|
97
96
|
expect(await fs.promises.readdir(cachePath)).toEqual(['url-cache.json']);
|
|
98
97
|
await fs.promises.rm(tempDir, { recursive: true, force: true });
|
|
99
98
|
});
|
|
100
|
-
describe('graph operations', () => {
|
|
101
|
-
it('saves and loads a graph', async () => {
|
|
102
|
-
const manager = new CacheManager(config);
|
|
103
|
-
const graph = new CodeDocGraph();
|
|
104
|
-
graph.addReference('doc.md', 'src/a.ts', { type: 'file-path', value: 'a.ts', lineNumber: 1, raw: 'a.ts', sourceFile: 'doc.md' });
|
|
105
|
-
graph.buildTimestamp = Date.now();
|
|
106
|
-
await manager.saveGraph(graph);
|
|
107
|
-
const loaded = await manager.loadGraph();
|
|
108
|
-
expect(loaded).not.toBeNull();
|
|
109
|
-
expect(loaded.getCodeReferencedByDoc('doc.md').has('src/a.ts')).toBe(true);
|
|
110
|
-
});
|
|
111
|
-
it('loadGraph returns null when no cache exists', async () => {
|
|
112
|
-
const freshConfig = {
|
|
113
|
-
rootDir: process.cwd(),
|
|
114
|
-
cache: { dir: '.doc-freshness-cache/nonexistent-test' },
|
|
115
|
-
};
|
|
116
|
-
const manager = new CacheManager(freshConfig);
|
|
117
|
-
expect(await manager.loadGraph()).toBeNull();
|
|
118
|
-
});
|
|
119
|
-
});
|
|
120
99
|
describe('URL cache operations', () => {
|
|
121
100
|
it('saves and loads URL cache', async () => {
|
|
122
101
|
const manager = new CacheManager(config);
|
|
@@ -147,7 +126,6 @@ describe('CacheManager', () => {
|
|
|
147
126
|
const manager = new CacheManager(config);
|
|
148
127
|
const readSpy = vi.spyOn(fs.promises, 'readFile').mockRejectedValue(Object.assign(new Error('denied'), { code: 'EACCES' }));
|
|
149
128
|
expect(await manager.loadUrlCache()).toEqual({});
|
|
150
|
-
expect(await manager.loadGraph()).toBeNull();
|
|
151
129
|
expect(await manager.readEmbeddingCache()).toBeNull();
|
|
152
130
|
readSpy.mockRestore();
|
|
153
131
|
});
|
|
@@ -161,39 +139,6 @@ describe('CacheManager', () => {
|
|
|
161
139
|
lstatSpy.mockRestore();
|
|
162
140
|
});
|
|
163
141
|
});
|
|
164
|
-
describe('isCacheValid', () => {
|
|
165
|
-
it('returns false for null graph', () => {
|
|
166
|
-
const manager = new CacheManager(config);
|
|
167
|
-
expect(manager.isCacheValid(null, null)).toBe(false);
|
|
168
|
-
});
|
|
169
|
-
it('returns false when graph has no buildTimestamp', () => {
|
|
170
|
-
const manager = new CacheManager(config);
|
|
171
|
-
const graph = new CodeDocGraph();
|
|
172
|
-
expect(manager.isCacheValid(graph, null)).toBe(false);
|
|
173
|
-
});
|
|
174
|
-
it('returns true when git commit matches', () => {
|
|
175
|
-
const manager = new CacheManager(config);
|
|
176
|
-
const graph = new CodeDocGraph();
|
|
177
|
-
graph.buildTimestamp = Date.now();
|
|
178
|
-
graph.gitCommit = 'abc123';
|
|
179
|
-
expect(manager.isCacheValid(graph, 'abc123')).toBe(true);
|
|
180
|
-
});
|
|
181
|
-
it('returns false when git commit differs', () => {
|
|
182
|
-
const manager = new CacheManager(config);
|
|
183
|
-
const graph = new CodeDocGraph();
|
|
184
|
-
graph.buildTimestamp = Date.now();
|
|
185
|
-
graph.gitCommit = 'abc123';
|
|
186
|
-
expect(manager.isCacheValid(graph, 'def456')).toBe(false);
|
|
187
|
-
});
|
|
188
|
-
it('uses time-based expiry when no git info', () => {
|
|
189
|
-
const manager = new CacheManager({ ...config, cache: { ...config.cache, maxAge: 1000 } });
|
|
190
|
-
const graph = new CodeDocGraph();
|
|
191
|
-
graph.buildTimestamp = Date.now();
|
|
192
|
-
expect(manager.isCacheValid(graph, null)).toBe(true);
|
|
193
|
-
graph.buildTimestamp = Date.now() - 2000;
|
|
194
|
-
expect(manager.isCacheValid(graph, null)).toBe(false);
|
|
195
|
-
});
|
|
196
|
-
});
|
|
197
142
|
describe('clearCache', () => {
|
|
198
143
|
it('removes the cache directory', async () => {
|
|
199
144
|
const manager = new CacheManager(config);
|
|
@@ -215,56 +160,5 @@ describe('CacheManager', () => {
|
|
|
215
160
|
rmSpy.mockRestore();
|
|
216
161
|
});
|
|
217
162
|
});
|
|
218
|
-
describe('isCacheValid - configHash', () => {
|
|
219
|
-
it('returns false when configHash differs', () => {
|
|
220
|
-
const manager = new CacheManager(config);
|
|
221
|
-
const graph = new CodeDocGraph();
|
|
222
|
-
graph.buildTimestamp = Date.now();
|
|
223
|
-
graph.configHash = 'stale-hash';
|
|
224
|
-
expect(manager.isCacheValid(graph, null)).toBe(false);
|
|
225
|
-
});
|
|
226
|
-
it('ignores configHash check when graph has no configHash', () => {
|
|
227
|
-
const manager = new CacheManager(config);
|
|
228
|
-
const graph = new CodeDocGraph();
|
|
229
|
-
graph.buildTimestamp = Date.now();
|
|
230
|
-
graph.configHash = null;
|
|
231
|
-
expect(manager.isCacheValid(graph, null)).toBe(true);
|
|
232
|
-
});
|
|
233
|
-
});
|
|
234
|
-
describe('getCacheStats', () => {
|
|
235
|
-
it('returns stats for existing cache', async () => {
|
|
236
|
-
const manager = new CacheManager(config);
|
|
237
|
-
const graph = new CodeDocGraph();
|
|
238
|
-
graph.buildTimestamp = Date.now();
|
|
239
|
-
await manager.saveGraph(graph);
|
|
240
|
-
const stats = await manager.getCacheStats();
|
|
241
|
-
expect(stats.exists).toBe(true);
|
|
242
|
-
expect(stats.graphSize).toBeGreaterThan(0);
|
|
243
|
-
});
|
|
244
|
-
it('returns empty stats when no cache', async () => {
|
|
245
|
-
const freshConfig = { rootDir: process.cwd(), cache: { dir: '.doc-freshness-cache/no-stats' } };
|
|
246
|
-
const manager = new CacheManager(freshConfig);
|
|
247
|
-
const stats = await manager.getCacheStats();
|
|
248
|
-
expect(stats.exists).toBe(false);
|
|
249
|
-
expect(stats.lastUpdated).toBeNull();
|
|
250
|
-
});
|
|
251
|
-
it('reports a populated result cache without a graph cache', async () => {
|
|
252
|
-
const manager = new CacheManager({
|
|
253
|
-
rootDir: process.cwd(),
|
|
254
|
-
cache: { dir: '.doc-freshness-cache/test-cache/url-only-stats' },
|
|
255
|
-
});
|
|
256
|
-
await manager.saveUrlCache({ 'https://x.com': { result: { valid: true }, timestamp: Date.now() } });
|
|
257
|
-
const stats = await manager.getCacheStats();
|
|
258
|
-
expect(stats.exists).toBe(true);
|
|
259
|
-
expect(stats.urlCacheSize).toBeGreaterThan(0);
|
|
260
|
-
expect(stats.lastUpdated).toBeInstanceOf(Date);
|
|
261
|
-
});
|
|
262
|
-
it('treats ordinary stat failures as missing cache files', async () => {
|
|
263
|
-
const manager = new CacheManager(config);
|
|
264
|
-
const statSpy = vi.spyOn(fs.promises, 'stat').mockRejectedValue(Object.assign(new Error('denied'), { code: 'EACCES' }));
|
|
265
|
-
expect(await manager.getCacheStats()).toEqual({ exists: false, graphSize: 0, urlCacheSize: 0, lastUpdated: null });
|
|
266
|
-
statSpy.mockRestore();
|
|
267
|
-
});
|
|
268
|
-
});
|
|
269
163
|
});
|
|
270
164
|
//# sourceMappingURL=cacheManager.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cacheManager.test.js","sourceRoot":"","sources":["../../src/cache/cacheManager.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cacheManager.test.js","sourceRoot":"","sources":["../../src/cache/cacheManager.test.ts"],"names":[],"mappings":"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"}
|
package/dist/config/defaults.js
CHANGED
|
@@ -59,8 +59,6 @@ export const DEFAULT_CONFIG = {
|
|
|
59
59
|
version: {
|
|
60
60
|
enabled: true,
|
|
61
61
|
severity: 'warning',
|
|
62
|
-
// Deprecated: ignored by validation; changing this value invalidates incremental reuse.
|
|
63
|
-
allowMinorDrift: true,
|
|
64
62
|
},
|
|
65
63
|
'directory-structure': {
|
|
66
64
|
enabled: true,
|
|
@@ -91,12 +89,6 @@ export const DEFAULT_CONFIG = {
|
|
|
91
89
|
},
|
|
92
90
|
// Reporter configuration
|
|
93
91
|
reporters: ['console'],
|
|
94
|
-
// Output directory for reports
|
|
95
|
-
// Deprecated: ignored by reporting; changing this value invalidates incremental reuse.
|
|
96
|
-
outputDir: '.doc-freshness-reports',
|
|
97
|
-
// Ignore patterns (regex strings)
|
|
98
|
-
// Deprecated: ignored by reference filtering; changing this value invalidates incremental reuse.
|
|
99
|
-
ignorePatterns: [],
|
|
100
92
|
// Custom extractors (advanced)
|
|
101
93
|
customExtractors: [],
|
|
102
94
|
// Custom validators (advanced)
|
|
@@ -105,14 +97,6 @@ export const DEFAULT_CONFIG = {
|
|
|
105
97
|
graph: {
|
|
106
98
|
enabled: true,
|
|
107
99
|
cacheDir: '.doc-freshness-cache',
|
|
108
|
-
cacheMaxAge: 24 * 60 * 60 * 1000, // 24 hours for non-git repos
|
|
109
|
-
},
|
|
110
|
-
// Git integration settings
|
|
111
|
-
// Deprecated: ignored by Git behavior; changing these values invalidates incremental reuse.
|
|
112
|
-
git: {
|
|
113
|
-
enabled: true,
|
|
114
|
-
trackChanges: true,
|
|
115
|
-
changeWindow: 7,
|
|
116
100
|
},
|
|
117
101
|
// Freshness scoring settings
|
|
118
102
|
freshnessScoring: {
|
|
@@ -134,16 +118,11 @@ export const DEFAULT_CONFIG = {
|
|
|
134
118
|
vectorSearch: {
|
|
135
119
|
enabled: false, // Disabled by default
|
|
136
120
|
similarityThreshold: 0.3, // Higher = stricter: doc sections need a closer code match, so more mismatches are reported
|
|
137
|
-
// Deprecated: ignored by vector indexing; changing this value invalidates incremental reuse.
|
|
138
|
-
indexCodeComments: true,
|
|
139
|
-
// Deprecated: ignored by vector indexing; changing this value invalidates incremental reuse.
|
|
140
|
-
indexDocstrings: true,
|
|
141
121
|
},
|
|
142
122
|
// Cache settings
|
|
143
123
|
cache: {
|
|
144
124
|
enabled: true,
|
|
145
125
|
dir: '.doc-freshness-cache',
|
|
146
|
-
maxAge: 24 * 60 * 60 * 1000,
|
|
147
126
|
},
|
|
148
127
|
// Incremental checking (only check changed files)
|
|
149
128
|
incremental: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"AAiBA,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,WAAW;IACX,cAAc;IACd,SAAS;IACT,qBAAqB;IACrB,cAAc;IACd,cAAc;IACd,YAAY;CACJ,CAAC;AAIX,MAAM,CAAC,MAAM,mBAAmB,GAA8B,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;AAExG;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAkB;IAC3C,iEAAiE;IACjE,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE;IAEtB,+BAA+B;IAC/B,OAAO,EAAE,CAAC,cAAc,EAAE,WAAW,CAAC;IAEtC,mBAAmB;IACnB,OAAO,EAAE,CAAC,oBAAoB,EAAE,cAAc,EAAE,YAAY,EAAE,aAAa,CAAC;IAE5E,yDAAyD;IACzD,iCAAiC;IACjC,aAAa,EAAE,IAAI;IAEnB,mDAAmD;IACnD,iCAAiC;IACjC,cAAc,EAAE,IAAI;IAEpB,0BAA0B;IAC1B,aAAa,EAAE;QACb,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,KAAK;QACd,WAAW,EAAE,CAAC;QACd,WAAW,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,aAAa,CAAC;QACtD,YAAY,EAAE,IAAI;KACnB;IAED,iCAAiC;IACjC,KAAK,EAAE;QACL,WAAW,EAAE;YACX,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,OAAO;YACjB,sEAAsE;YACtE,oBAAoB,EAAE;gBACpB,oEAAoE;gBACpE,wEAAwE;gBACxE,+BAA+B;gBAC/B,6CAA6C;gBAC7C,0DAA0D;gBAC1D,SAAS;gBACT,aAAa;gBACb,gDAAgD;gBAChD,8BAA8B;gBAC9B,YAAY,EAAE,wBAAwB;aACvC;YACD,gBAAgB,EAAE,IAAI;SACvB;QACD,cAAc,EAAE;YACd,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,SAAS;SACpB;QACD,OAAO,EAAE;YACP,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,SAAS;
|
|
1
|
+
{"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"AAiBA,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,WAAW;IACX,cAAc;IACd,SAAS;IACT,qBAAqB;IACrB,cAAc;IACd,cAAc;IACd,YAAY;CACJ,CAAC;AAIX,MAAM,CAAC,MAAM,mBAAmB,GAA8B,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;AAExG;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAkB;IAC3C,iEAAiE;IACjE,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE;IAEtB,+BAA+B;IAC/B,OAAO,EAAE,CAAC,cAAc,EAAE,WAAW,CAAC;IAEtC,mBAAmB;IACnB,OAAO,EAAE,CAAC,oBAAoB,EAAE,cAAc,EAAE,YAAY,EAAE,aAAa,CAAC;IAE5E,yDAAyD;IACzD,iCAAiC;IACjC,aAAa,EAAE,IAAI;IAEnB,mDAAmD;IACnD,iCAAiC;IACjC,cAAc,EAAE,IAAI;IAEpB,0BAA0B;IAC1B,aAAa,EAAE;QACb,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,KAAK;QACd,WAAW,EAAE,CAAC;QACd,WAAW,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,aAAa,CAAC;QACtD,YAAY,EAAE,IAAI;KACnB;IAED,iCAAiC;IACjC,KAAK,EAAE;QACL,WAAW,EAAE;YACX,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,OAAO;YACjB,sEAAsE;YACtE,oBAAoB,EAAE;gBACpB,oEAAoE;gBACpE,wEAAwE;gBACxE,+BAA+B;gBAC/B,6CAA6C;gBAC7C,0DAA0D;gBAC1D,SAAS;gBACT,aAAa;gBACb,gDAAgD;gBAChD,8BAA8B;gBAC9B,YAAY,EAAE,wBAAwB;aACvC;YACD,gBAAgB,EAAE,IAAI;SACvB;QACD,cAAc,EAAE;YACd,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,SAAS;SACpB;QACD,OAAO,EAAE;YACP,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,SAAS;SACpB;QACD,qBAAqB,EAAE;YACrB,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,SAAS;YACnB,yEAAyE;YACzE,oBAAoB,EAAE;gBACpB,oEAAoE;gBACpE,wEAAwE;gBACxE,+BAA+B;gBAC/B,6CAA6C;gBAC7C,oEAAoE;gBACpE,4BAA4B;aAC7B;YACD,gBAAgB,EAAE,IAAI;SACvB;QACD,cAAc,EAAE;YACd,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,SAAS;SACpB;QACD,cAAc,EAAE;YACd,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,SAAS;SACpB;QACD,UAAU,EAAE;YACV,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,MAAM;SACjB;KACF;IAED,yBAAyB;IACzB,SAAS,EAAE,CAAC,SAAS,CAAC;IAEtB,+BAA+B;IAC/B,gBAAgB,EAAE,EAAE;IAEpB,+BAA+B;IAC/B,gBAAgB,EAAE,EAAE;IAEpB,6BAA6B;IAC7B,KAAK,EAAE;QACL,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,sBAAsB;KACjC;IAED,6BAA6B;IAC7B,gBAAgB,EAAE;QAChB,OAAO,EAAE,KAAK;QACd,OAAO,EAAE;YACP,iBAAiB,EAAE,GAAG;YACtB,YAAY,EAAE,GAAG;YACjB,mBAAmB,EAAE,IAAI;YACzB,cAAc,EAAE,IAAI;SACrB;QACD,UAAU,EAAE;YACV,MAAM,EAAE,EAAE;YACV,MAAM,EAAE,EAAE;YACV,MAAM,EAAE,EAAE;YACV,MAAM,EAAE,EAAE;SACX;KACF;IAED,gEAAgE;IAChE,YAAY,EAAE;QACZ,OAAO,EAAE,KAAK,EAAE,sBAAsB;QACtC,mBAAmB,EAAE,GAAG,EAAE,4FAA4F;KACvH;IAED,iBAAiB;IACjB,KAAK,EAAE;QACL,OAAO,EAAE,IAAI;QACb,GAAG,EAAE,sBAAsB;KAC5B;IAED,kDAAkD;IAClD,WAAW,EAAE;QACX,OAAO,EAAE,KAAK;KACf;IAED,kBAAkB;IAClB,OAAO,EAAE,KAAK;CACf,CAAC"}
|
|
@@ -268,13 +268,13 @@ describe('loadConfig', () => {
|
|
|
268
268
|
`import { defineConfig } from 'doc-freshness-checker';`,
|
|
269
269
|
`import { include } from './config-value.mjs';`,
|
|
270
270
|
`import { readFileSync } from 'node:fs';`,
|
|
271
|
-
`export default defineConfig({ include,
|
|
271
|
+
`export default defineConfig({ include, cache: { dir: readFileSync(new URL('./config-value.txt', import.meta.url), 'utf8') }, outputPath: import.meta.filename });`,
|
|
272
272
|
].join('\n'));
|
|
273
|
-
await fs.promises.writeFile(concurrentConfigPath, `import { defineConfig } from 'doc-freshness-checker';\nexport default defineConfig({
|
|
273
|
+
await fs.promises.writeFile(concurrentConfigPath, `import { defineConfig } from 'doc-freshness-checker';\nexport default defineConfig({ cache: { dir: 'concurrent' } });`);
|
|
274
274
|
await fs.promises.symlink(targetConfigPath, configPath, 'file');
|
|
275
275
|
expect(fs.existsSync(path.join(projectDir, 'node_modules'))).toBe(false);
|
|
276
276
|
const loaderUrl = pathToFileURL(await transpilePublicLoader(buildDir)).href;
|
|
277
|
-
const reloadedSource = `import { defineConfig } from 'doc-freshness-checker';\nexport default defineConfig({
|
|
277
|
+
const reloadedSource = `import { defineConfig } from 'doc-freshness-checker';\nexport default defineConfig({ cache: { dir: 'reloaded' } });`;
|
|
278
278
|
const script = `
|
|
279
279
|
import { writeFile } from 'node:fs/promises';
|
|
280
280
|
import { loadConfig } from ${JSON.stringify(loaderUrl)};
|
|
@@ -294,11 +294,11 @@ describe('loadConfig', () => {
|
|
|
294
294
|
expect(canonicalConfigPath).toBe(canonicalTargetPath);
|
|
295
295
|
expect(canonicalConfigPath).not.toBe(configPath);
|
|
296
296
|
expect(result.config.include).toEqual(['from-sibling/**/*.md']);
|
|
297
|
-
expect(result.config.
|
|
297
|
+
expect(result.config.cache.dir).toBe('from-asset');
|
|
298
298
|
expect(result.config.outputPath).toBe(canonicalConfigPath);
|
|
299
|
-
expect(result.concurrentConfig.
|
|
299
|
+
expect(result.concurrentConfig.cache.dir).toBe('concurrent');
|
|
300
300
|
expect(result.errorMessage).toBe('config failed');
|
|
301
|
-
expect(result.reloadedConfig.
|
|
301
|
+
expect(result.reloadedConfig.cache.dir).toBe('reloaded');
|
|
302
302
|
}
|
|
303
303
|
finally {
|
|
304
304
|
await fs.promises.rm(projectDir, { recursive: true, force: true });
|
|
@@ -306,13 +306,16 @@ describe('loadConfig', () => {
|
|
|
306
306
|
});
|
|
307
307
|
it('loads a discovered ESM config from its original directory', async () => {
|
|
308
308
|
const siblingModule = path.join(tmpDir, 'discovered-value.mjs');
|
|
309
|
-
await fs.promises.writeFile(siblingModule, `export const
|
|
309
|
+
await fs.promises.writeFile(siblingModule, `export const cacheDir = 'discovered-sibling';`);
|
|
310
310
|
try {
|
|
311
|
-
await withTempConfig('.doc-freshness.config.js', [
|
|
311
|
+
await withTempConfig('.doc-freshness.config.js', [
|
|
312
|
+
`import { cacheDir } from './discovered-value.mjs';`,
|
|
313
|
+
`export default { cache: { dir: cacheDir }, outputPath: import.meta.filename };`,
|
|
314
|
+
].join('\n'), async (configPath) => {
|
|
312
315
|
const cwdSpy = vi.spyOn(process, 'cwd').mockReturnValue(tmpDir);
|
|
313
316
|
try {
|
|
314
317
|
const config = await loadConfig();
|
|
315
|
-
expect(config.
|
|
318
|
+
expect(config.cache?.dir).toBe('discovered-sibling');
|
|
316
319
|
expect(config.outputPath).toBe(await fs.promises.realpath(configPath));
|
|
317
320
|
}
|
|
318
321
|
finally {
|