@cesarandreslopez/occ 0.8.2 → 0.8.3
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 +1 -0
- package/dist/src/cli.d.ts +1 -0
- package/dist/src/cli.js +7 -0
- package/dist/src/cli.js.map +1 -1
- package/dist/src/code/build.d.ts +10 -1
- package/dist/src/code/build.js +87 -19
- package/dist/src/code/build.js.map +1 -1
- package/dist/src/code/cache.js +7 -4
- package/dist/src/code/cache.js.map +1 -1
- package/dist/src/code/chunk.js +10 -1
- package/dist/src/code/chunk.js.map +1 -1
- package/dist/src/code/command.js +43 -21
- package/dist/src/code/command.js.map +1 -1
- package/dist/src/code/discover.d.ts +5 -1
- package/dist/src/code/discover.js +16 -26
- package/dist/src/code/discover.js.map +1 -1
- package/dist/src/code/index-io.d.ts +19 -0
- package/dist/src/code/index-io.js +98 -0
- package/dist/src/code/index-io.js.map +1 -0
- package/dist/src/code/parsers.d.ts +15 -1
- package/dist/src/code/parsers.js +48 -4
- package/dist/src/code/parsers.js.map +1 -1
- package/dist/src/code/query.js +27 -4
- package/dist/src/code/query.js.map +1 -1
- package/dist/src/code/store.d.ts +9 -1
- package/dist/src/code/store.js +104 -43
- package/dist/src/code/store.js.map +1 -1
- package/dist/src/code/types.d.ts +51 -4
- package/dist/src/code/types.js +19 -2
- package/dist/src/code/types.js.map +1 -1
- package/dist/src/doc/batch.d.ts +2 -0
- package/dist/src/doc/batch.js +2 -0
- package/dist/src/doc/batch.js.map +1 -1
- package/dist/src/doc/command.js +15 -2
- package/dist/src/doc/command.js.map +1 -1
- package/dist/src/doc/discover.d.ts +2 -0
- package/dist/src/doc/discover.js +12 -25
- package/dist/src/doc/discover.js.map +1 -1
- package/dist/src/utils.d.ts +12 -0
- package/dist/src/utils.js +81 -0
- package/dist/src/utils.js.map +1 -1
- package/dist/src/walker.d.ts +1 -0
- package/dist/src/walker.js +15 -5
- package/dist/src/walker.js.map +1 -1
- package/dist/src/workspace/analyze.d.ts +1 -0
- package/dist/src/workspace/analyze.js +1 -0
- package/dist/src/workspace/analyze.js.map +1 -1
- package/dist/src/workspace/command.js +8 -0
- package/dist/src/workspace/command.js.map +1 -1
- package/dist/src/workspace/documents.d.ts +1 -0
- package/dist/src/workspace/documents.js +1 -0
- package/dist/src/workspace/documents.js.map +1 -1
- package/dist/src/workspace/prepare-runner.d.ts +2 -0
- package/dist/src/workspace/prepare-runner.js +18 -43
- package/dist/src/workspace/prepare-runner.js.map +1 -1
- package/dist/src/workspace/prepare-types.d.ts +15 -1
- package/dist/src/workspace/prepare.js +69 -11
- package/dist/src/workspace/prepare.js.map +1 -1
- package/package.json +3 -2
package/dist/src/code/command.js
CHANGED
|
@@ -18,12 +18,21 @@ const CodeCommandOptionsSchema = z.object({
|
|
|
18
18
|
type: z.string().optional(),
|
|
19
19
|
excludeDir: z.string().optional(),
|
|
20
20
|
gitignore: z.boolean().optional(),
|
|
21
|
+
ignorePattern: z.array(z.string()).optional(),
|
|
22
|
+
contentMode: z.string().optional(),
|
|
23
|
+
maxFileSizeBytes: z.string().optional(),
|
|
24
|
+
maxLines: z.string().optional(),
|
|
25
|
+
skipMinified: z.boolean().optional(),
|
|
21
26
|
}).passthrough();
|
|
22
27
|
function getOptions(command) {
|
|
23
28
|
return CodeCommandOptionsSchema.parse(command.optsWithGlobals());
|
|
24
29
|
}
|
|
25
30
|
const FINDABLE_TYPES = ['file', 'module', 'function', 'class', 'interface', 'type-alias', 'enum', 'variable'];
|
|
26
31
|
const FindableTypeSchema = z.enum(['file', 'module', 'function', 'class', 'interface', 'type-alias', 'enum', 'variable']);
|
|
32
|
+
const ContentModeSchema = z.enum(['none', 'excerpt', 'full']);
|
|
33
|
+
function collectOption(value, previous = []) {
|
|
34
|
+
return [...previous, value];
|
|
35
|
+
}
|
|
27
36
|
function parseType(value) {
|
|
28
37
|
if (!value)
|
|
29
38
|
return undefined;
|
|
@@ -40,13 +49,26 @@ async function emit(output, options) {
|
|
|
40
49
|
}
|
|
41
50
|
await writeStream(process.stdout, output);
|
|
42
51
|
}
|
|
43
|
-
|
|
52
|
+
function resolveContentMode(value, fallback) {
|
|
53
|
+
if (!value)
|
|
54
|
+
return fallback;
|
|
55
|
+
return ContentModeSchema.parse(value);
|
|
56
|
+
}
|
|
57
|
+
function buildIndexOptions(options, fallbackContentMode) {
|
|
44
58
|
const repoRoot = path.resolve(options.path ?? process.cwd());
|
|
45
|
-
return
|
|
59
|
+
return {
|
|
46
60
|
repoRoot,
|
|
47
61
|
excludeDir: options.excludeDir?.split(',').map(value => value.trim()).filter(Boolean),
|
|
48
62
|
noGitignore: options.gitignore === false,
|
|
49
|
-
|
|
63
|
+
ignorePatterns: options.ignorePattern,
|
|
64
|
+
contentMode: resolveContentMode(options.contentMode, fallbackContentMode),
|
|
65
|
+
maxFileSizeBytes: options.maxFileSizeBytes ? parsePositiveInt(options.maxFileSizeBytes, 2_097_152, 'max file size') : undefined,
|
|
66
|
+
maxLines: options.maxLines ? parsePositiveInt(options.maxLines, 25_000, 'max line count') : undefined,
|
|
67
|
+
skipMinified: options.skipMinified,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
async function withIndex(options, fallbackContentMode = 'excerpt') {
|
|
71
|
+
return buildCodebaseIndex(buildIndexOptions(options, fallbackContentMode));
|
|
50
72
|
}
|
|
51
73
|
function addSharedOptions(command, extra = {}) {
|
|
52
74
|
command
|
|
@@ -55,7 +77,12 @@ function addSharedOptions(command, extra = {}) {
|
|
|
55
77
|
.option('-o, --output <file>', 'write output to file')
|
|
56
78
|
.option('--ci', 'ASCII-only output, no colors')
|
|
57
79
|
.option('--exclude-dir <dirs>', 'directories to skip (comma-separated)', 'node_modules,.git,dist,vendor,build,coverage,target')
|
|
58
|
-
.option('--no-gitignore', 'disable .gitignore respect')
|
|
80
|
+
.option('--no-gitignore', 'disable .gitignore respect')
|
|
81
|
+
.option('--ignore-pattern <pattern>', 'gitignore-style pattern to ignore', collectOption, [])
|
|
82
|
+
.option('--content-mode <mode>', 'indexed content mode: none, excerpt, or full')
|
|
83
|
+
.option('--max-file-size-bytes <n>', 'skip code files larger than this many bytes')
|
|
84
|
+
.option('--max-lines <n>', 'skip code files with more than this many lines')
|
|
85
|
+
.option('--no-skip-minified', 'do not skip likely minified code files');
|
|
59
86
|
if (extra.includeFile) {
|
|
60
87
|
command.option('--file <path>', 'specific file path to disambiguate the target');
|
|
61
88
|
}
|
|
@@ -78,12 +105,7 @@ export function registerCodeCommands(program) {
|
|
|
78
105
|
addSharedOptions(indexCmd);
|
|
79
106
|
indexCmd.action(async (_options, command) => {
|
|
80
107
|
const options = getOptions(command);
|
|
81
|
-
const
|
|
82
|
-
const index = await buildCodebaseIndex({
|
|
83
|
-
repoRoot,
|
|
84
|
-
excludeDir: options.excludeDir?.split(',').map(value => value.trim()).filter(Boolean),
|
|
85
|
-
noGitignore: options.gitignore === false,
|
|
86
|
-
}, (event) => {
|
|
108
|
+
const index = await buildCodebaseIndex(buildIndexOptions(options, 'full'), (event) => {
|
|
87
109
|
if (options.format !== 'json') {
|
|
88
110
|
process.stderr.write(`\r${event.phase}: ${event.completed}/${event.total}${event.detail ? ` ${event.detail}` : ''} `);
|
|
89
111
|
}
|
|
@@ -100,7 +122,7 @@ export function registerCodeCommands(program) {
|
|
|
100
122
|
addSharedOptions(findName, { includeFile: true, includeLimit: true, includeType: true });
|
|
101
123
|
findName.action(async (name, _options, command) => {
|
|
102
124
|
const options = getOptions(command);
|
|
103
|
-
const index = await withIndex(options);
|
|
125
|
+
const index = await withIndex(options, 'excerpt');
|
|
104
126
|
const results = findByName(index, name, parseType(options.type), options.file, parsePositiveInt(options.limit, 50, 'limit'));
|
|
105
127
|
const payload = createPayload(index, { command: 'code.find.name', value: name, file: options.file, type: options.type }, results);
|
|
106
128
|
const output = options.format === 'json'
|
|
@@ -112,7 +134,7 @@ export function registerCodeCommands(program) {
|
|
|
112
134
|
addSharedOptions(findPatternCmd, { includeLimit: true, includeType: true });
|
|
113
135
|
findPatternCmd.action(async (pattern, _options, command) => {
|
|
114
136
|
const options = getOptions(command);
|
|
115
|
-
const index = await withIndex(options);
|
|
137
|
+
const index = await withIndex(options, 'excerpt');
|
|
116
138
|
const results = findByPattern(index, pattern, parseType(options.type), parsePositiveInt(options.limit, 50, 'limit'));
|
|
117
139
|
const payload = createPayload(index, { command: 'code.find.pattern', value: pattern, type: options.type }, results);
|
|
118
140
|
const output = options.format === 'json'
|
|
@@ -124,7 +146,7 @@ export function registerCodeCommands(program) {
|
|
|
124
146
|
addSharedOptions(findTypeCmd, { includeLimit: true });
|
|
125
147
|
findTypeCmd.action(async (nodeType, _options, command) => {
|
|
126
148
|
const options = getOptions(command);
|
|
127
|
-
const index = await withIndex(options);
|
|
149
|
+
const index = await withIndex(options, 'excerpt');
|
|
128
150
|
const results = findByType(index, parseType(nodeType) ?? 'function', parsePositiveInt(options.limit, 50, 'limit'));
|
|
129
151
|
const payload = createPayload(index, { command: 'code.find.type', value: nodeType }, results);
|
|
130
152
|
const output = options.format === 'json'
|
|
@@ -136,7 +158,7 @@ export function registerCodeCommands(program) {
|
|
|
136
158
|
addSharedOptions(findContentCmd, { includeLimit: true });
|
|
137
159
|
findContentCmd.action(async (text, _options, command) => {
|
|
138
160
|
const options = getOptions(command);
|
|
139
|
-
const index = await withIndex(options);
|
|
161
|
+
const index = await withIndex(options, 'full');
|
|
140
162
|
const results = findContent(index, text, parsePositiveInt(options.limit, 50, 'limit'));
|
|
141
163
|
const payload = createPayload(index, { command: 'code.find.content', value: text }, results);
|
|
142
164
|
const output = options.format === 'json'
|
|
@@ -148,7 +170,7 @@ export function registerCodeCommands(program) {
|
|
|
148
170
|
addSharedOptions(analyzeCallsCmd, { includeFile: true });
|
|
149
171
|
analyzeCallsCmd.action(async (functionName, _options, command) => {
|
|
150
172
|
const options = getOptions(command);
|
|
151
|
-
const index = await withIndex(options);
|
|
173
|
+
const index = await withIndex(options, 'excerpt');
|
|
152
174
|
const results = analyzeCalls(index, functionName, options.file);
|
|
153
175
|
const payload = createPayload(index, { command: 'code.analyze.calls', value: functionName, file: options.file }, results);
|
|
154
176
|
const output = options.format === 'json'
|
|
@@ -160,7 +182,7 @@ export function registerCodeCommands(program) {
|
|
|
160
182
|
addSharedOptions(analyzeCallersCmd, { includeFile: true });
|
|
161
183
|
analyzeCallersCmd.action(async (functionName, _options, command) => {
|
|
162
184
|
const options = getOptions(command);
|
|
163
|
-
const index = await withIndex(options);
|
|
185
|
+
const index = await withIndex(options, 'excerpt');
|
|
164
186
|
const results = analyzeCallers(index, functionName, options.file);
|
|
165
187
|
const payload = createPayload(index, { command: 'code.analyze.callers', value: functionName, file: options.file }, results);
|
|
166
188
|
const output = options.format === 'json'
|
|
@@ -172,7 +194,7 @@ export function registerCodeCommands(program) {
|
|
|
172
194
|
addSharedOptions(analyzeChainCmd, { includeDepth: true });
|
|
173
195
|
analyzeChainCmd.action(async (fromFunction, toFunction, _options, command) => {
|
|
174
196
|
const options = getOptions(command);
|
|
175
|
-
const index = await withIndex(options);
|
|
197
|
+
const index = await withIndex(options, 'excerpt');
|
|
176
198
|
const results = analyzeCallChain(index, fromFunction, toFunction, parsePositiveInt(options.depth, 5, 'depth'));
|
|
177
199
|
const payload = createPayload(index, { command: 'code.analyze.chain', from: fromFunction, to: toFunction, depth: options.depth }, results);
|
|
178
200
|
const output = options.format === 'json'
|
|
@@ -184,7 +206,7 @@ export function registerCodeCommands(program) {
|
|
|
184
206
|
addSharedOptions(analyzeDepsCmd);
|
|
185
207
|
analyzeDepsCmd.action(async (target, _options, command) => {
|
|
186
208
|
const options = getOptions(command);
|
|
187
|
-
const index = await withIndex(options);
|
|
209
|
+
const index = await withIndex(options, 'excerpt');
|
|
188
210
|
const results = analyzeDeps(index, target);
|
|
189
211
|
const payload = createPayload(index, { command: 'code.analyze.deps', value: target }, results);
|
|
190
212
|
const output = options.format === 'json'
|
|
@@ -196,7 +218,7 @@ export function registerCodeCommands(program) {
|
|
|
196
218
|
addSharedOptions(analyzeCouplingCmd);
|
|
197
219
|
analyzeCouplingCmd.action(async (target, _options, command) => {
|
|
198
220
|
const options = getOptions(command);
|
|
199
|
-
const index = await withIndex(options);
|
|
221
|
+
const index = await withIndex(options, 'excerpt');
|
|
200
222
|
const results = analyzeModuleCoupling(index, target);
|
|
201
223
|
const payload = createPayload(index, { command: 'code.analyze.coupling', value: target }, results);
|
|
202
224
|
const output = options.format === 'json'
|
|
@@ -208,7 +230,7 @@ export function registerCodeCommands(program) {
|
|
|
208
230
|
addSharedOptions(analyzeTreeCmd, { includeFile: true });
|
|
209
231
|
analyzeTreeCmd.action(async (className, _options, command) => {
|
|
210
232
|
const options = getOptions(command);
|
|
211
|
-
const index = await withIndex(options);
|
|
233
|
+
const index = await withIndex(options, 'excerpt');
|
|
212
234
|
const results = analyzeTree(index, className, options.file);
|
|
213
235
|
const payload = createPayload(index, { command: 'code.analyze.tree', value: className, file: options.file }, results);
|
|
214
236
|
const output = options.format === 'json'
|
|
@@ -221,7 +243,6 @@ export function registerCodeCommands(program) {
|
|
|
221
243
|
findFusedCmd.option('--weights <spec>', 'weights as name:N,pattern:N,content:N', 'name:3,pattern:2,content:1');
|
|
222
244
|
findFusedCmd.action(async (query, _options, command) => {
|
|
223
245
|
const options = getOptions(command);
|
|
224
|
-
const index = await withIndex(options);
|
|
225
246
|
const weightsStr = options.weights ?? 'name:3,pattern:2,content:1';
|
|
226
247
|
const weights = {};
|
|
227
248
|
for (const pair of weightsStr.split(',')) {
|
|
@@ -229,6 +250,7 @@ export function registerCodeCommands(program) {
|
|
|
229
250
|
if (key && val)
|
|
230
251
|
weights[key.trim()] = parseFloat(val);
|
|
231
252
|
}
|
|
253
|
+
const index = await withIndex(options, (weights.content ?? 1) > 0 ? 'full' : 'excerpt');
|
|
232
254
|
const results = fusedSearch(index, query, {
|
|
233
255
|
weights: { name: weights.name, pattern: weights.pattern, content: weights.content },
|
|
234
256
|
limit: parsePositiveInt(options.limit, 50, 'limit'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command.js","sourceRoot":"","sources":["../../../src/code/command.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"command.js","sourceRoot":"","sources":["../../../src/code/command.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,10 @@ import { z } from 'zod';
|
|
|
2
2
|
export declare const DiscoverCodeOptionsSchema: z.ZodObject<{
|
|
3
3
|
excludeDir: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
4
4
|
noGitignore: z.ZodOptional<z.ZodBoolean>;
|
|
5
|
+
ignorePatterns: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
5
6
|
}, z.core.$strip>;
|
|
6
7
|
export type DiscoverCodeOptions = z.infer<typeof DiscoverCodeOptionsSchema>;
|
|
7
|
-
export
|
|
8
|
+
export interface DiscoverCodeRuntimeOptions extends DiscoverCodeOptions {
|
|
9
|
+
signal?: AbortSignal;
|
|
10
|
+
}
|
|
11
|
+
export declare function discoverCodeFiles(repoRoot: string, options?: DiscoverCodeRuntimeOptions): Promise<string[]>;
|
|
@@ -1,52 +1,42 @@
|
|
|
1
1
|
import fg from 'fast-glob';
|
|
2
|
-
import {
|
|
2
|
+
import { stat } from 'node:fs/promises';
|
|
3
3
|
import path from 'node:path';
|
|
4
4
|
import { z } from 'zod';
|
|
5
5
|
import { CODE_EXTENSIONS, normalizePath } from './languages.js';
|
|
6
|
+
import { abortIfNeeded, buildExcludeDirGlobs, createIgnoreMatcher } from '../utils.js';
|
|
6
7
|
export const DiscoverCodeOptionsSchema = z.object({
|
|
7
8
|
excludeDir: z.array(z.string()).optional(),
|
|
8
9
|
noGitignore: z.boolean().optional(),
|
|
10
|
+
ignorePatterns: z.array(z.string()).optional(),
|
|
9
11
|
});
|
|
10
|
-
async function loadGitignorePatterns(repoRoot) {
|
|
11
|
-
try {
|
|
12
|
-
const content = await readFile(path.join(repoRoot, '.gitignore'), 'utf8');
|
|
13
|
-
return content
|
|
14
|
-
.split(/\r?\n/)
|
|
15
|
-
.map(line => line.trim())
|
|
16
|
-
.filter(line => line.length > 0 && !line.startsWith('#') && !line.startsWith('!'))
|
|
17
|
-
.map(line => {
|
|
18
|
-
const normalized = normalizePath(line.replace(/^\//, ''));
|
|
19
|
-
if (normalized.endsWith('/'))
|
|
20
|
-
return `${normalized}**`;
|
|
21
|
-
return normalized;
|
|
22
|
-
});
|
|
23
|
-
}
|
|
24
|
-
catch {
|
|
25
|
-
return [];
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
12
|
export async function discoverCodeFiles(repoRoot, options = {}) {
|
|
13
|
+
const resolvedRoot = path.resolve(repoRoot);
|
|
29
14
|
const excludeDir = options.excludeDir ?? ['node_modules', '.git', 'dist', 'vendor', 'build', 'coverage', 'target'];
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
15
|
+
abortIfNeeded(options.signal);
|
|
16
|
+
const ignoreMatcher = await createIgnoreMatcher(resolvedRoot, {
|
|
17
|
+
excludeDir,
|
|
18
|
+
noGitignore: options.noGitignore,
|
|
19
|
+
ignorePatterns: options.ignorePatterns,
|
|
20
|
+
});
|
|
34
21
|
const pattern = CODE_EXTENSIONS.length === 1
|
|
35
22
|
? `**/*.${CODE_EXTENSIONS[0]}`
|
|
36
23
|
: `**/*.{${CODE_EXTENSIONS.join(',')}}`;
|
|
37
24
|
const discovered = await fg(pattern, {
|
|
38
|
-
cwd:
|
|
25
|
+
cwd: resolvedRoot,
|
|
39
26
|
absolute: true,
|
|
40
27
|
onlyFiles: true,
|
|
41
28
|
dot: false,
|
|
42
29
|
followSymbolicLinks: false,
|
|
43
|
-
ignore,
|
|
30
|
+
ignore: buildExcludeDirGlobs(excludeDir),
|
|
44
31
|
});
|
|
32
|
+
abortIfNeeded(options.signal);
|
|
45
33
|
const existing = [];
|
|
46
34
|
for (const filePath of discovered.sort()) {
|
|
35
|
+
abortIfNeeded(options.signal);
|
|
47
36
|
try {
|
|
48
37
|
const fileStat = await stat(filePath);
|
|
49
|
-
|
|
38
|
+
const relativePath = normalizePath(path.relative(resolvedRoot, filePath));
|
|
39
|
+
if (fileStat.isFile() && !ignoreMatcher.ignores(relativePath))
|
|
50
40
|
existing.push(filePath);
|
|
51
41
|
}
|
|
52
42
|
catch {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discover.js","sourceRoot":"","sources":["../../../src/code/discover.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,WAAW,CAAC;AAC3B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"discover.js","sourceRoot":"","sources":["../../../src/code/discover.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,WAAW,CAAC;AAC3B,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEvF,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChD,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC1C,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACnC,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CAC/C,CAAC,CAAC;AAOH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,QAAgB,EAAE,UAAsC,EAAE;IAChG,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IACnH,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9B,MAAM,aAAa,GAAG,MAAM,mBAAmB,CAAC,YAAY,EAAE;QAC5D,UAAU;QACV,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,cAAc,EAAE,OAAO,CAAC,cAAc;KACvC,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,eAAe,CAAC,MAAM,KAAK,CAAC;QAC1C,CAAC,CAAC,QAAQ,eAAe,CAAC,CAAC,CAAC,EAAE;QAC9B,CAAC,CAAC,SAAS,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;IAE1C,MAAM,UAAU,GAAG,MAAM,EAAE,CAAC,OAAO,EAAE;QACnC,GAAG,EAAE,YAAY;QACjB,QAAQ,EAAE,IAAI;QACd,SAAS,EAAE,IAAI;QACf,GAAG,EAAE,KAAK;QACV,mBAAmB,EAAE,KAAK;QAC1B,MAAM,EAAE,oBAAoB,CAAC,UAAU,CAAC;KACzC,CAAC,CAAC;IACH,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAE9B,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,MAAM,QAAQ,IAAI,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC;QACzC,aAAa,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC9B,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC;YACtC,MAAM,YAAY,GAAG,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC;YAC1E,IAAI,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC;gBAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzF,CAAC;QAAC,MAAM,CAAC;YACP,gDAAgD;QAClD,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { CodebaseIndex, CodeSkippedFile, ContentMode } from './types.js';
|
|
2
|
+
export interface SerializedIndexMeta {
|
|
3
|
+
repoRoot: string;
|
|
4
|
+
contentMode: ContentMode;
|
|
5
|
+
capabilities: CodebaseIndex['capabilities'];
|
|
6
|
+
skippedFiles: CodeSkippedFile[];
|
|
7
|
+
fileCount: number;
|
|
8
|
+
nodeCount: number;
|
|
9
|
+
edgeCount: number;
|
|
10
|
+
schemaVersion?: number;
|
|
11
|
+
occVersion?: string;
|
|
12
|
+
builtAt?: string;
|
|
13
|
+
buildOptionFingerprint?: string;
|
|
14
|
+
}
|
|
15
|
+
export declare function writeSectionedCodeIndex(directory: string, index: CodebaseIndex, extraMeta?: Partial<SerializedIndexMeta>, signal?: AbortSignal): Promise<void>;
|
|
16
|
+
export declare function readSectionedCodeIndex(directory: string, signal?: AbortSignal): Promise<{
|
|
17
|
+
index: CodebaseIndex;
|
|
18
|
+
meta: SerializedIndexMeta;
|
|
19
|
+
}>;
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { createReadStream, createWriteStream } from 'node:fs';
|
|
2
|
+
import { mkdir, readFile, rm, writeFile } from 'node:fs/promises';
|
|
3
|
+
import { once } from 'node:events';
|
|
4
|
+
import path from 'node:path';
|
|
5
|
+
import readline from 'node:readline';
|
|
6
|
+
import { abortIfNeeded } from '../utils.js';
|
|
7
|
+
function metaPath(directory) {
|
|
8
|
+
return path.join(directory, 'meta.json');
|
|
9
|
+
}
|
|
10
|
+
function filesPath(directory) {
|
|
11
|
+
return path.join(directory, 'files.ndjson');
|
|
12
|
+
}
|
|
13
|
+
function nodesPath(directory) {
|
|
14
|
+
return path.join(directory, 'nodes.ndjson');
|
|
15
|
+
}
|
|
16
|
+
function edgesPath(directory) {
|
|
17
|
+
return path.join(directory, 'edges.ndjson');
|
|
18
|
+
}
|
|
19
|
+
async function writeNdjsonFile(filePath, entries, signal) {
|
|
20
|
+
const stream = createWriteStream(filePath, { encoding: 'utf8' });
|
|
21
|
+
try {
|
|
22
|
+
for (const entry of entries) {
|
|
23
|
+
abortIfNeeded(signal);
|
|
24
|
+
if (!stream.write(`${JSON.stringify(entry)}\n`)) {
|
|
25
|
+
await once(stream, 'drain');
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
stream.end();
|
|
29
|
+
await once(stream, 'finish');
|
|
30
|
+
}
|
|
31
|
+
finally {
|
|
32
|
+
stream.destroy();
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
async function readNdjsonFile(filePath, signal) {
|
|
36
|
+
const entries = [];
|
|
37
|
+
const stream = createReadStream(filePath, { encoding: 'utf8' });
|
|
38
|
+
const reader = readline.createInterface({
|
|
39
|
+
input: stream,
|
|
40
|
+
crlfDelay: Infinity,
|
|
41
|
+
});
|
|
42
|
+
try {
|
|
43
|
+
for await (const line of reader) {
|
|
44
|
+
abortIfNeeded(signal);
|
|
45
|
+
if (!line)
|
|
46
|
+
continue;
|
|
47
|
+
entries.push(JSON.parse(line));
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
finally {
|
|
51
|
+
reader.close();
|
|
52
|
+
stream.destroy();
|
|
53
|
+
}
|
|
54
|
+
return entries;
|
|
55
|
+
}
|
|
56
|
+
export async function writeSectionedCodeIndex(directory, index, extraMeta = {}, signal) {
|
|
57
|
+
await rm(directory, { recursive: true, force: true });
|
|
58
|
+
await mkdir(directory, { recursive: true });
|
|
59
|
+
abortIfNeeded(signal);
|
|
60
|
+
const meta = {
|
|
61
|
+
repoRoot: index.repoRoot,
|
|
62
|
+
contentMode: index.contentMode,
|
|
63
|
+
capabilities: index.capabilities,
|
|
64
|
+
skippedFiles: index.skippedFiles,
|
|
65
|
+
fileCount: index.files.length,
|
|
66
|
+
nodeCount: index.nodes.length,
|
|
67
|
+
edgeCount: index.edges.length,
|
|
68
|
+
...extraMeta,
|
|
69
|
+
};
|
|
70
|
+
await writeFile(metaPath(directory), JSON.stringify(meta, null, 2), 'utf8');
|
|
71
|
+
abortIfNeeded(signal);
|
|
72
|
+
await writeNdjsonFile(filesPath(directory), index.files, signal);
|
|
73
|
+
abortIfNeeded(signal);
|
|
74
|
+
await writeNdjsonFile(nodesPath(directory), index.nodes, signal);
|
|
75
|
+
abortIfNeeded(signal);
|
|
76
|
+
await writeNdjsonFile(edgesPath(directory), index.edges, signal);
|
|
77
|
+
}
|
|
78
|
+
export async function readSectionedCodeIndex(directory, signal) {
|
|
79
|
+
abortIfNeeded(signal);
|
|
80
|
+
const rawMeta = await readFile(metaPath(directory), 'utf8');
|
|
81
|
+
const meta = JSON.parse(rawMeta);
|
|
82
|
+
const files = await readNdjsonFile(filesPath(directory), signal);
|
|
83
|
+
const nodes = await readNdjsonFile(nodesPath(directory), signal);
|
|
84
|
+
const edges = await readNdjsonFile(edgesPath(directory), signal);
|
|
85
|
+
return {
|
|
86
|
+
meta,
|
|
87
|
+
index: {
|
|
88
|
+
repoRoot: meta.repoRoot,
|
|
89
|
+
contentMode: meta.contentMode ?? 'excerpt',
|
|
90
|
+
capabilities: meta.capabilities ?? {},
|
|
91
|
+
skippedFiles: meta.skippedFiles ?? [],
|
|
92
|
+
files,
|
|
93
|
+
nodes,
|
|
94
|
+
edges,
|
|
95
|
+
},
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=index-io.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-io.js","sourceRoot":"","sources":["../../../src/code/index-io.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,5 +2,19 @@ import type { ParsedFile } from './types.js';
|
|
|
2
2
|
interface ParserContext {
|
|
3
3
|
repoRoot: string;
|
|
4
4
|
}
|
|
5
|
-
export
|
|
5
|
+
export interface CodeFileGuardrails {
|
|
6
|
+
maxFileSizeBytes?: number;
|
|
7
|
+
maxLines?: number;
|
|
8
|
+
skipMinified?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export interface ParsedCodeFileSuccess {
|
|
11
|
+
kind: 'parsed';
|
|
12
|
+
file: ParsedFile;
|
|
13
|
+
}
|
|
14
|
+
export interface ParsedCodeFileSkipped {
|
|
15
|
+
kind: 'skipped';
|
|
16
|
+
reason: string;
|
|
17
|
+
}
|
|
18
|
+
export type ParseCodeFileResult = ParsedCodeFileSuccess | ParsedCodeFileSkipped | null;
|
|
19
|
+
export declare function parseCodeFile(filePath: string, context: ParserContext, guardrails?: CodeFileGuardrails): Promise<ParseCodeFileResult>;
|
|
6
20
|
export {};
|
package/dist/src/code/parsers.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
import { readFile } from 'node:fs/promises';
|
|
1
|
+
import { readFile, stat } from 'node:fs/promises';
|
|
2
2
|
import path from 'node:path';
|
|
3
3
|
import { getLanguageSpec, getModuleName, isLocalSpecifier, normalizePath, resolveLocalImport, resolvePythonImport } from './languages.js';
|
|
4
|
+
const DEFAULT_MAX_FILE_SIZE_BYTES = 2_097_152;
|
|
5
|
+
const DEFAULT_MAX_LINES = 25_000;
|
|
6
|
+
const MINIFIED_FILE_MIN_BYTES = 4_096;
|
|
4
7
|
const PYTHON_STDLIB_MODULES = new Set([
|
|
5
8
|
'abc', 'argparse', 'asyncio', 'base64', 'collections', 'contextlib', 'csv',
|
|
6
9
|
'dataclasses', 'datetime', 'functools', 'glob', 'hashlib', 'heapq', 'inspect',
|
|
@@ -578,21 +581,62 @@ function parseRegexFile(filePath, content, context) {
|
|
|
578
581
|
inheritances,
|
|
579
582
|
};
|
|
580
583
|
}
|
|
581
|
-
export async function parseCodeFile(filePath, context) {
|
|
584
|
+
export async function parseCodeFile(filePath, context, guardrails = {}) {
|
|
582
585
|
const spec = getLanguageSpec(filePath);
|
|
583
586
|
if (!spec)
|
|
584
587
|
return null;
|
|
588
|
+
const fileStat = await stat(filePath);
|
|
589
|
+
const maxFileSizeBytes = guardrails.maxFileSizeBytes ?? DEFAULT_MAX_FILE_SIZE_BYTES;
|
|
590
|
+
if (fileStat.size > maxFileSizeBytes) {
|
|
591
|
+
return {
|
|
592
|
+
kind: 'skipped',
|
|
593
|
+
reason: `Exceeds max file size of ${maxFileSizeBytes} bytes`,
|
|
594
|
+
};
|
|
595
|
+
}
|
|
585
596
|
const content = await readFile(filePath, 'utf8');
|
|
597
|
+
const lines = content.split(/\r?\n/);
|
|
598
|
+
const maxLines = guardrails.maxLines ?? DEFAULT_MAX_LINES;
|
|
599
|
+
if (lines.length > maxLines) {
|
|
600
|
+
return {
|
|
601
|
+
kind: 'skipped',
|
|
602
|
+
reason: `Exceeds max line count of ${maxLines}`,
|
|
603
|
+
};
|
|
604
|
+
}
|
|
605
|
+
const skipMinified = guardrails.skipMinified ?? true;
|
|
606
|
+
if (skipMinified && fileStat.size >= MINIFIED_FILE_MIN_BYTES && isLikelyMinified(lines)) {
|
|
607
|
+
return {
|
|
608
|
+
kind: 'skipped',
|
|
609
|
+
reason: 'Likely minified source',
|
|
610
|
+
};
|
|
611
|
+
}
|
|
586
612
|
switch (spec.parser) {
|
|
587
613
|
case 'typescript':
|
|
588
|
-
return parseTypescriptFile(filePath, content, context);
|
|
614
|
+
return { kind: 'parsed', file: await parseTypescriptFile(filePath, content, context) };
|
|
589
615
|
case 'python':
|
|
590
616
|
case 'go':
|
|
591
617
|
case 'rust':
|
|
592
618
|
case 'generic':
|
|
593
|
-
return parseRegexFile(filePath, content, context);
|
|
619
|
+
return { kind: 'parsed', file: parseRegexFile(filePath, content, context) };
|
|
594
620
|
default:
|
|
595
621
|
return null;
|
|
596
622
|
}
|
|
597
623
|
}
|
|
624
|
+
function isLikelyMinified(lines) {
|
|
625
|
+
const nonEmptyLines = lines.filter((line) => line.trim().length > 0);
|
|
626
|
+
if (nonEmptyLines.length === 0)
|
|
627
|
+
return false;
|
|
628
|
+
let totalLength = 0;
|
|
629
|
+
let longLineCount = 0;
|
|
630
|
+
let maxLineLength = 0;
|
|
631
|
+
for (const line of nonEmptyLines) {
|
|
632
|
+
totalLength += line.length;
|
|
633
|
+
if (line.length > 120)
|
|
634
|
+
longLineCount++;
|
|
635
|
+
if (line.length > maxLineLength)
|
|
636
|
+
maxLineLength = line.length;
|
|
637
|
+
}
|
|
638
|
+
const averageLength = totalLength / nonEmptyLines.length;
|
|
639
|
+
return (nonEmptyLines.length <= 20 && maxLineLength >= 2_000)
|
|
640
|
+
|| (averageLength >= 300 && longLineCount / nonEmptyLines.length >= 0.9);
|
|
641
|
+
}
|
|
598
642
|
//# sourceMappingURL=parsers.js.map
|