doc-freshness-checker 1.0.2 → 1.2.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 +82 -8
- package/dist/git/changeTracker.d.ts +7 -0
- package/dist/git/changeTracker.js +20 -0
- package/dist/git/changeTracker.js.map +1 -1
- package/dist/git/changeTracker.test.js +37 -0
- package/dist/git/changeTracker.test.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/parsers/extractors/codeSnippetExtractor.d.ts +40 -0
- package/dist/parsers/extractors/codeSnippetExtractor.js +613 -0
- package/dist/parsers/extractors/codeSnippetExtractor.js.map +1 -0
- package/dist/parsers/extractors/codeSnippetExtractor.test.d.ts +1 -0
- package/dist/parsers/extractors/codeSnippetExtractor.test.js +238 -0
- package/dist/parsers/extractors/codeSnippetExtractor.test.js.map +1 -0
- package/dist/runner.js +4 -0
- package/dist/runner.js.map +1 -1
- package/dist/scoring/freshnessScorer.d.ts +21 -1
- package/dist/scoring/freshnessScorer.js +42 -4
- package/dist/scoring/freshnessScorer.js.map +1 -1
- package/dist/scoring/freshnessScorer.test.js +66 -4
- package/dist/scoring/freshnessScorer.test.js.map +1 -1
- package/dist/types.d.ts +11 -1
- package/dist/validators/codeSnippetValidator.d.ts +48 -0
- package/dist/validators/codeSnippetValidator.js +618 -0
- package/dist/validators/codeSnippetValidator.js.map +1 -0
- package/dist/validators/codeSnippetValidator.test.d.ts +1 -0
- package/dist/validators/codeSnippetValidator.test.js +359 -0
- package/dist/validators/codeSnippetValidator.test.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -30,12 +30,14 @@ Validate documentation against your codebase to catch stale references before th
|
|
|
30
30
|
- Catch broken file links and dead external URLs.
|
|
31
31
|
- Detect version mismatches between docs and manifests.
|
|
32
32
|
- Surface code symbols mentioned in docs that no longer exist.
|
|
33
|
+
- Detect stale code examples — wrong imports, changed function signatures, outdated config keys.
|
|
33
34
|
- Run in CI as a quality gate or reporting step.
|
|
34
35
|
|
|
35
36
|
## Features
|
|
36
37
|
|
|
37
38
|
- **Documentation formats:** Markdown (`.md`, `.markdown`), reStructuredText (`.rst`), AsciiDoc (`.adoc`, `.asciidoc`), plaintext (`.txt`).
|
|
38
39
|
- **Source indexing for symbol validation:** JavaScript, TypeScript, Python, Go, Rust, Java.
|
|
40
|
+
- **Code snippet validation:** verifies import paths resolve, imported symbols are exported, function call signatures still match example placeholders, and config object keys match type/interface definitions.
|
|
39
41
|
- **Manifest parsing for version/dependency checks:** `package.json`, `requirements.txt`, `pyproject.toml`, `go.mod`, `Cargo.toml`, `pom.xml`.
|
|
40
42
|
- **Reporters:** `console`, `json`, `markdown`, `enhanced`.
|
|
41
43
|
- **Advanced modes:** incremental checking, freshness scoring, graph linking, semantic vector search.
|
|
@@ -158,14 +160,15 @@ doc-freshness --score --incremental
|
|
|
158
160
|
|
|
159
161
|
## What Gets Validated
|
|
160
162
|
|
|
161
|
-
| Reference type | What is checked
|
|
162
|
-
| --------------------- |
|
|
163
|
-
| `file-path` | Referenced files/directories exist
|
|
164
|
-
| `external-url` | External URLs are reachable (with caching and skip rules)
|
|
165
|
-
| `version` | Mentioned versions compared to parsed manifests
|
|
166
|
-
| `directory-structure` | Tree snippets align with actual structure
|
|
167
|
-
| `code-pattern` | Mentioned symbols exist in indexed source
|
|
168
|
-
| `
|
|
163
|
+
| Reference type | What is checked |
|
|
164
|
+
| --------------------- | --------------------------------------------------------------------------------- |
|
|
165
|
+
| `file-path` | Referenced files/directories exist |
|
|
166
|
+
| `external-url` | External URLs are reachable (with caching and skip rules) |
|
|
167
|
+
| `version` | Mentioned versions compared to parsed manifests |
|
|
168
|
+
| `directory-structure` | Tree snippets align with actual structure |
|
|
169
|
+
| `code-pattern` | Mentioned symbols exist in indexed source |
|
|
170
|
+
| `code-snippet` | Import paths resolve, exported symbols exist, function signatures still match, config keys valid |
|
|
171
|
+
| `dependency` | Mentioned packages exist in manifest dependencies |
|
|
169
172
|
|
|
170
173
|
### URL Validation Behavior
|
|
171
174
|
|
|
@@ -176,6 +179,75 @@ doc-freshness --score --incremental
|
|
|
176
179
|
- Handles GitHub `404` private-repo behavior conservatively.
|
|
177
180
|
- Caches URL results to reduce repeated checks.
|
|
178
181
|
|
|
182
|
+
### Code Snippet Validation
|
|
183
|
+
|
|
184
|
+
Fenced code blocks in documentation go stale just as quickly as any other reference. The `code-snippet` rule validates three aspects of code examples:
|
|
185
|
+
|
|
186
|
+
**Import statements** — verifies that the module path resolves to an actual source file and that each imported symbol is exported from it. Only relative imports are checked; bare npm/package imports are skipped.
|
|
187
|
+
|
|
188
|
+
If your docs contain:
|
|
189
|
+
|
|
190
|
+
````markdown
|
|
191
|
+
```typescript
|
|
192
|
+
import { createUser, sendWelcomeEmail } from './services/userService';
|
|
193
|
+
```
|
|
194
|
+
````
|
|
195
|
+
|
|
196
|
+
The checker resolves `./services/userService` against the project source tree (trying common extensions and index files) and confirms that `createUser` and `sendWelcomeEmail` are exported. If `sendWelcomeEmail` was renamed to `sendOnboardingEmail`, the report shows:
|
|
197
|
+
|
|
198
|
+
```
|
|
199
|
+
⚠️ Line 12: Symbol(s) not exported from src/services/userService.ts: sendWelcomeEmail
|
|
200
|
+
💡 Did you mean: sendOnboardingEmail?
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
**Function signatures** — checks that the number of arguments shown in a code example matches the function's current signature, accounting for optional and rest parameters. When an example uses simple placeholder identifiers like `name, email`, those are also compared to the current parameter names to catch renamed positional parameters.
|
|
204
|
+
|
|
205
|
+
````markdown
|
|
206
|
+
```typescript
|
|
207
|
+
const user = createUser(name, email, role, department);
|
|
208
|
+
```
|
|
209
|
+
````
|
|
210
|
+
|
|
211
|
+
If `createUser` now takes only `(name, email, role?)`, the report shows:
|
|
212
|
+
|
|
213
|
+
```
|
|
214
|
+
⚠️ Line 18: Function createUser called with 4 arg(s) but expects 2–3
|
|
215
|
+
💡 Current signature: createUser(name, email, role)
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
**Config object keys** — when a code example assigns an object with an explicit type annotation, each key is checked against the type/interface definition in source.
|
|
219
|
+
|
|
220
|
+
````markdown
|
|
221
|
+
```typescript
|
|
222
|
+
const opts: ServerConfig = {
|
|
223
|
+
port: 3000,
|
|
224
|
+
hostname: 'localhost',
|
|
225
|
+
maxRetries: 5,
|
|
226
|
+
};
|
|
227
|
+
```
|
|
228
|
+
````
|
|
229
|
+
|
|
230
|
+
If `ServerConfig` no longer has a `hostname` property (renamed to `host`):
|
|
231
|
+
|
|
232
|
+
```
|
|
233
|
+
⚠️ Line 24: Config key(s) not found in ServerConfig: hostname
|
|
234
|
+
💡 Did you mean: hostname → host?
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
Each sub-check can be toggled independently:
|
|
238
|
+
|
|
239
|
+
```js
|
|
240
|
+
rules: {
|
|
241
|
+
'code-snippet': {
|
|
242
|
+
enabled: true,
|
|
243
|
+
severity: 'warning',
|
|
244
|
+
validateImports: true,
|
|
245
|
+
validateFunctionCalls: true,
|
|
246
|
+
validateConfigKeys: true,
|
|
247
|
+
},
|
|
248
|
+
},
|
|
249
|
+
```
|
|
250
|
+
|
|
179
251
|
### False Positive Reduction
|
|
180
252
|
|
|
181
253
|
Illustrative paths and symbols (e.g., tutorial placeholders) are detected automatically and can be skipped or downgraded in severity via rule configuration.
|
|
@@ -239,6 +311,7 @@ export default {
|
|
|
239
311
|
version: { enabled: true, severity: 'warning' },
|
|
240
312
|
'directory-structure': { enabled: true, severity: 'warning' },
|
|
241
313
|
'code-pattern': { enabled: true, severity: 'warning' },
|
|
314
|
+
'code-snippet': { enabled: true, severity: 'warning' },
|
|
242
315
|
dependency: { enabled: true, severity: 'info' },
|
|
243
316
|
},
|
|
244
317
|
|
|
@@ -284,6 +357,7 @@ Key exports:
|
|
|
284
357
|
| `run`, `runWithConfig` | Execute the checker programmatically |
|
|
285
358
|
| `loadConfig`, `defineConfig` | Load/merge configuration and type-safe config helper |
|
|
286
359
|
| `DocumentParser` | Parse documentation files and extract references |
|
|
360
|
+
| `CodeSnippetExtractor`, `CodeSnippetValidator` | Code example validation (imports, calls, config) |
|
|
287
361
|
| `ValidationEngine` | Dispatch references to validators |
|
|
288
362
|
| `ConsoleReporter`, `JsonReporter`, `MarkdownReporter`, `EnhancedReporter` | Reporter classes |
|
|
289
363
|
| `GraphBuilder`, `FreshnessScorer`, `VectorSearch` | Advanced analysis modules |
|
|
@@ -24,6 +24,13 @@ export declare class GitChangeTracker {
|
|
|
24
24
|
* Get files changed since a timestamp
|
|
25
25
|
*/
|
|
26
26
|
getChangedFilesSince(timestamp: number): string[];
|
|
27
|
+
/**
|
|
28
|
+
* Count the number of commits touching a file since a given point in time.
|
|
29
|
+
* @param filePath Relative path to the file
|
|
30
|
+
* @param sinceMs Epoch milliseconds – only commits strictly after this point are counted
|
|
31
|
+
* Returns 0 when the file has no commits in that window or git is unavailable.
|
|
32
|
+
*/
|
|
33
|
+
getFileCommitCount(filePath: string, sinceMs: number): number;
|
|
27
34
|
/**
|
|
28
35
|
* Get the last modification time of a file from git
|
|
29
36
|
*/
|
|
@@ -75,6 +75,26 @@ export class GitChangeTracker {
|
|
|
75
75
|
return [];
|
|
76
76
|
}
|
|
77
77
|
}
|
|
78
|
+
/**
|
|
79
|
+
* Count the number of commits touching a file since a given point in time.
|
|
80
|
+
* @param filePath Relative path to the file
|
|
81
|
+
* @param sinceMs Epoch milliseconds – only commits strictly after this point are counted
|
|
82
|
+
* Returns 0 when the file has no commits in that window or git is unavailable.
|
|
83
|
+
*/
|
|
84
|
+
getFileCommitCount(filePath, sinceMs) {
|
|
85
|
+
if (!this.isGitRepo())
|
|
86
|
+
return 0;
|
|
87
|
+
try {
|
|
88
|
+
const sinceDate = new Date(sinceMs).toISOString();
|
|
89
|
+
const output = this.git(['log', '--oneline', `--since=${sinceDate}`, '--', filePath]);
|
|
90
|
+
if (!output)
|
|
91
|
+
return 0;
|
|
92
|
+
return output.split('\n').filter(Boolean).length;
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
return 0;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
78
98
|
/**
|
|
79
99
|
* Get the last modification time of a file from git
|
|
80
100
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"changeTracker.js","sourceRoot":"","sources":["../../src/git/changeTracker.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"changeTracker.js","sourceRoot":"","sources":["../../src/git/changeTracker.ts"],"names":[],"mappings":"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"}
|
|
@@ -90,6 +90,43 @@ describe('GitChangeTracker', () => {
|
|
|
90
90
|
expect(new GitChangeTracker(config).getChangedFilesSince(Date.now())).toEqual([]);
|
|
91
91
|
});
|
|
92
92
|
});
|
|
93
|
+
describe('getFileCommitCount', () => {
|
|
94
|
+
it('returns number of commits since the given timestamp', () => {
|
|
95
|
+
mockExecFileSync.mockReturnValueOnce('.git\n').mockReturnValueOnce('abc Fix foo\ndef Update bar\nghi Refactor\n');
|
|
96
|
+
const sinceMs = Date.now() - 7 * 24 * 60 * 60 * 1000;
|
|
97
|
+
expect(new GitChangeTracker(config).getFileCommitCount('src/a.ts', sinceMs)).toBe(3);
|
|
98
|
+
});
|
|
99
|
+
it('returns 0 when file has no commits since the timestamp', () => {
|
|
100
|
+
mockExecFileSync.mockReturnValueOnce('.git\n').mockReturnValueOnce('\n');
|
|
101
|
+
expect(new GitChangeTracker(config).getFileCommitCount('src/a.ts', Date.now())).toBe(0);
|
|
102
|
+
});
|
|
103
|
+
it('returns 0 for non-git repos', () => {
|
|
104
|
+
mockExecFileSync.mockImplementation(() => {
|
|
105
|
+
throw new Error();
|
|
106
|
+
});
|
|
107
|
+
expect(new GitChangeTracker(config).getFileCommitCount('src/a.ts', Date.now())).toBe(0);
|
|
108
|
+
});
|
|
109
|
+
it('returns 0 when git log fails', () => {
|
|
110
|
+
mockExecFileSync.mockReturnValueOnce('.git\n').mockImplementationOnce(() => {
|
|
111
|
+
throw new Error('log failed');
|
|
112
|
+
});
|
|
113
|
+
expect(new GitChangeTracker(config).getFileCommitCount('src/a.ts', Date.now())).toBe(0);
|
|
114
|
+
});
|
|
115
|
+
it('passes correct --since flag from epoch ms', () => {
|
|
116
|
+
mockExecFileSync.mockReturnValueOnce('.git\n').mockReturnValueOnce('\n');
|
|
117
|
+
const sinceMs = Date.now() - 30 * 24 * 60 * 60 * 1000;
|
|
118
|
+
new GitChangeTracker(config).getFileCommitCount('src/a.ts', sinceMs);
|
|
119
|
+
const call = mockExecFileSync.mock.calls[1];
|
|
120
|
+
expect(call[0]).toBe('git');
|
|
121
|
+
expect(call[1]).toContain('--oneline');
|
|
122
|
+
const sinceArg = call[1].find((a) => a.startsWith('--since='));
|
|
123
|
+
expect(sinceArg).toBeDefined();
|
|
124
|
+
const sinceDate = new Date(sinceArg.replace('--since=', ''));
|
|
125
|
+
// Should match the provided epoch ms within 1 second tolerance
|
|
126
|
+
expect(sinceDate.getTime()).toBeGreaterThanOrEqual(sinceMs - 1000);
|
|
127
|
+
expect(sinceDate.getTime()).toBeLessThanOrEqual(sinceMs + 1000);
|
|
128
|
+
});
|
|
129
|
+
});
|
|
93
130
|
describe('getFileLastModified', () => {
|
|
94
131
|
it('returns timestamp in milliseconds', () => {
|
|
95
132
|
const ts = Math.floor(Date.now() / 1000);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"changeTracker.test.js","sourceRoot":"","sources":["../../src/git/changeTracker.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"changeTracker.test.js","sourceRoot":"","sources":["../../src/git/changeTracker.test.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -16,12 +16,14 @@ export { DirectoryStructureExtractor } from './parsers/extractors/directoryStruc
|
|
|
16
16
|
export { CodePatternExtractor } from './parsers/extractors/codePatternExtractor.js';
|
|
17
17
|
export { ExternalUrlExtractor } from './parsers/extractors/externalUrlExtractor.js';
|
|
18
18
|
export { DependencyExtractor } from './parsers/extractors/dependencyExtractor.js';
|
|
19
|
+
export { CodeSnippetExtractor } from './parsers/extractors/codeSnippetExtractor.js';
|
|
19
20
|
export { FileValidator } from './validators/fileValidator.js';
|
|
20
21
|
export { UrlValidator } from './validators/urlValidator.js';
|
|
21
22
|
export { VersionValidator } from './validators/versionValidator.js';
|
|
22
23
|
export { DirectoryValidator } from './validators/directoryValidator.js';
|
|
23
24
|
export { CodePatternValidator } from './validators/codePatternValidator.js';
|
|
24
25
|
export { DependencyValidator } from './validators/dependencyValidator.js';
|
|
26
|
+
export { CodeSnippetValidator } from './validators/codeSnippetValidator.js';
|
|
25
27
|
export { ConsoleReporter } from './reporters/consoleReporter.js';
|
|
26
28
|
export { JsonReporter } from './reporters/jsonReporter.js';
|
|
27
29
|
export { MarkdownReporter } from './reporters/markdownReporter.js';
|
|
@@ -34,4 +36,4 @@ export { FreshnessScorer } from './scoring/freshnessScorer.js';
|
|
|
34
36
|
export { Plugin } from './plugins/plugin.js';
|
|
35
37
|
export { IncrementalChecker } from './utils/incremental.js';
|
|
36
38
|
export { VectorSearch } from './semantic/vectorSearch.js';
|
|
37
|
-
export type { DocFreshnessConfig, Document, DocumentFormat, Reference, ValidationResult, ValidationResults, ValidationSummary, DocumentIssues, VectorMismatch, Severity, RuleConfig, VersionRuleConfig, RulesConfig, UrlValidationConfig, GraphConfig, GitConfig, FreshnessScoringConfig, FreshnessScoringWeights, FreshnessScoringThresholds, VectorSearchConfig, CacheConfig, IncrementalConfig, ReporterType, Grade, DocScore, ProjectScores, CommitInfo, ChangeSummaryItem, IndexMetadata, CacheStats, SymbolLocation, SourceFileData, CodeFile, BaseExtractor as BaseExtractorType, BaseValidator, } from './types.js';
|
|
39
|
+
export type { DocFreshnessConfig, Document, DocumentFormat, Reference, ValidationResult, ValidationResults, ValidationSummary, DocumentIssues, VectorMismatch, Severity, RuleConfig, VersionRuleConfig, RulesConfig, UrlValidationConfig, GraphConfig, GitConfig, FreshnessScoringConfig, FreshnessScoringWeights, FreshnessScoringThresholds, VectorSearchConfig, CacheConfig, IncrementalConfig, ReporterType, Grade, DocScore, ProjectScores, CommitInfo, ChangeSummaryItem, IndexMetadata, CacheStats, SymbolLocation, SourceFileData, CodeFile, CodeSnippetRuleConfig, BaseExtractor as BaseExtractorType, BaseValidator, } from './types.js';
|
package/dist/index.js
CHANGED
|
@@ -16,12 +16,14 @@ export { DirectoryStructureExtractor } from './parsers/extractors/directoryStruc
|
|
|
16
16
|
export { CodePatternExtractor } from './parsers/extractors/codePatternExtractor.js';
|
|
17
17
|
export { ExternalUrlExtractor } from './parsers/extractors/externalUrlExtractor.js';
|
|
18
18
|
export { DependencyExtractor } from './parsers/extractors/dependencyExtractor.js';
|
|
19
|
+
export { CodeSnippetExtractor } from './parsers/extractors/codeSnippetExtractor.js';
|
|
19
20
|
export { FileValidator } from './validators/fileValidator.js';
|
|
20
21
|
export { UrlValidator } from './validators/urlValidator.js';
|
|
21
22
|
export { VersionValidator } from './validators/versionValidator.js';
|
|
22
23
|
export { DirectoryValidator } from './validators/directoryValidator.js';
|
|
23
24
|
export { CodePatternValidator } from './validators/codePatternValidator.js';
|
|
24
25
|
export { DependencyValidator } from './validators/dependencyValidator.js';
|
|
26
|
+
export { CodeSnippetValidator } from './validators/codeSnippetValidator.js';
|
|
25
27
|
export { ConsoleReporter } from './reporters/consoleReporter.js';
|
|
26
28
|
export { JsonReporter } from './reporters/jsonReporter.js';
|
|
27
29
|
export { MarkdownReporter } from './reporters/markdownReporter.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,GAAG,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAC5E,OAAO,EAAE,2BAA2B,EAAE,MAAM,qDAAqD,CAAC;AAClG,OAAO,EAAE,oBAAoB,EAAE,MAAM,8CAA8C,CAAC;AACpF,OAAO,EAAE,oBAAoB,EAAE,MAAM,8CAA8C,CAAC;AACpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAC;AAClF,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,GAAG,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2CAA2C,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAC5E,OAAO,EAAE,2BAA2B,EAAE,MAAM,qDAAqD,CAAC;AAClG,OAAO,EAAE,oBAAoB,EAAE,MAAM,8CAA8C,CAAC;AACpF,OAAO,EAAE,oBAAoB,EAAE,MAAM,8CAA8C,CAAC;AACpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,6CAA6C,CAAC;AAClF,OAAO,EAAE,oBAAoB,EAAE,MAAM,8CAA8C,CAAC;AACpF,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { BaseExtractor } from './baseExtractor.js';
|
|
2
|
+
import type { Document, Reference } from '../../types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Extracts code snippet references from fenced code blocks in documentation.
|
|
5
|
+
*
|
|
6
|
+
* Produces three kinds of references:
|
|
7
|
+
* - 'import': import/require statements with relative module paths
|
|
8
|
+
* - 'function-call': standalone function calls with arity
|
|
9
|
+
* - 'config-keys': typed object literals with identifiable key sets
|
|
10
|
+
*
|
|
11
|
+
* Uses `linkText` to carry secondary data:
|
|
12
|
+
* import → comma-separated imported symbol names
|
|
13
|
+
* function-call → arity as a string
|
|
14
|
+
* config-keys → the type/interface name
|
|
15
|
+
*/
|
|
16
|
+
export declare class CodeSnippetExtractor extends BaseExtractor {
|
|
17
|
+
constructor();
|
|
18
|
+
extract(document: Document): Reference[];
|
|
19
|
+
private normalizeLanguage;
|
|
20
|
+
private extractImports;
|
|
21
|
+
private extractJsImports;
|
|
22
|
+
private extractPythonImports;
|
|
23
|
+
private extractGoImports;
|
|
24
|
+
private extractFunctionCalls;
|
|
25
|
+
/**
|
|
26
|
+
* Count arguments starting from the opening paren, handling nesting and
|
|
27
|
+
* multi-line argument lists.
|
|
28
|
+
*/
|
|
29
|
+
private countArguments;
|
|
30
|
+
private hasClosingParen;
|
|
31
|
+
private extractParenContent;
|
|
32
|
+
private splitTopLevel;
|
|
33
|
+
private parseJsImportSpecifiers;
|
|
34
|
+
private parseNamedImportList;
|
|
35
|
+
private extractArgumentNames;
|
|
36
|
+
private extractArgumentName;
|
|
37
|
+
private extractConfigKeys;
|
|
38
|
+
private extractBraceContent;
|
|
39
|
+
private extractObjectKeys;
|
|
40
|
+
}
|