agentmap 0.5.0 → 0.6.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/dist/cli.js +7 -1
- package/dist/cli.js.map +1 -1
- package/dist/extract/definitions.d.ts.map +1 -1
- package/dist/extract/definitions.js +195 -316
- package/dist/extract/definitions.js.map +1 -1
- package/dist/extract/definitions.test.js +749 -20
- package/dist/extract/definitions.test.js.map +1 -1
- package/dist/extract/marker.d.ts.map +1 -1
- package/dist/extract/marker.js +74 -5
- package/dist/extract/marker.js.map +1 -1
- package/dist/extract/marker.test.js +142 -4
- package/dist/extract/marker.test.js.map +1 -1
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +33 -1
- package/dist/index.js.map +1 -1
- package/dist/languages/cpp.d.ts +30 -0
- package/dist/languages/cpp.d.ts.map +1 -0
- package/dist/languages/cpp.js +116 -0
- package/dist/languages/cpp.js.map +1 -0
- package/dist/languages/go.d.ts +26 -0
- package/dist/languages/go.d.ts.map +1 -0
- package/dist/languages/go.js +65 -0
- package/dist/languages/go.js.map +1 -0
- package/dist/languages/index.d.ts +90 -0
- package/dist/languages/index.d.ts.map +1 -0
- package/dist/languages/index.js +209 -0
- package/dist/languages/index.js.map +1 -0
- package/dist/languages/javascript.d.ts +18 -0
- package/dist/languages/javascript.d.ts.map +1 -0
- package/dist/languages/javascript.js +23 -0
- package/dist/languages/javascript.js.map +1 -0
- package/dist/languages/python.d.ts +23 -0
- package/dist/languages/python.d.ts.map +1 -0
- package/dist/languages/python.js +35 -0
- package/dist/languages/python.js.map +1 -0
- package/dist/languages/rust.d.ts +26 -0
- package/dist/languages/rust.d.ts.map +1 -0
- package/dist/languages/rust.js +65 -0
- package/dist/languages/rust.js.map +1 -0
- package/dist/languages/typescript.d.ts +30 -0
- package/dist/languages/typescript.d.ts.map +1 -0
- package/dist/languages/typescript.js +68 -0
- package/dist/languages/typescript.js.map +1 -0
- package/dist/languages/zig.d.ts +38 -0
- package/dist/languages/zig.d.ts.map +1 -0
- package/dist/languages/zig.js +104 -0
- package/dist/languages/zig.js.map +1 -0
- package/dist/map/builder.d.ts.map +1 -1
- package/dist/map/builder.js +4 -1
- package/dist/map/builder.js.map +1 -1
- package/dist/parser/languages.d.ts +2 -4
- package/dist/parser/languages.d.ts.map +1 -1
- package/dist/parser/languages.js +4 -29
- package/dist/parser/languages.js.map +1 -1
- package/dist/scanner.d.ts.map +1 -1
- package/dist/scanner.js +21 -49
- package/dist/scanner.js.map +1 -1
- package/dist/types.d.ts +4 -2
- package/dist/types.d.ts.map +1 -1
- package/package.json +3 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"python.js","sourceRoot":"","sources":["../../src/languages/python.ts"],"names":[],"mappings":"AAAA,wCAAwC;AAIxC,MAAM,CAAC,MAAM,EAAE,GAAG,QAAiB,CAAA;AACnC,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;AACzC,MAAM,CAAC,MAAM,OAAO,GAAG,4CAA4C,CAAA;AAEnE,iBAAiB;AACjB,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,qBAAqB,CAAC,CAAA;AACrD,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,kBAAkB,CAAC,CAAA;AAC/C,MAAM,CAAC,MAAM,YAAY,GAAa,EAAE,CAAA;AACxC,MAAM,CAAC,MAAM,WAAW,GAAa,EAAE,CAAA;AACvC,MAAM,CAAC,MAAM,eAAe,GAAa,EAAE,CAAA;AAC3C,MAAM,CAAC,MAAM,UAAU,GAAa,EAAE,CAAA;AACtC,MAAM,CAAC,MAAM,UAAU,GAAa,EAAE,CAAA;AACtC,MAAM,CAAC,MAAM,WAAW,GAAa,EAAE,CAAA,CAAE,sCAAsC;AAE/E;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,KAAiB;IAC1C,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,IAAgB;IAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QAC3B,IAAI,KAAK,EAAE,IAAI,KAAK,YAAY,EAAE,CAAC;YACjC,OAAO,KAAK,CAAC,IAAI,CAAA;QACnB,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,mBAAmB;AACnB,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,GAAG,CAAC,CAAA;AACpC,MAAM,CAAC,MAAM,aAAa,GAAG,QAAQ,CAAA,CAAE,yBAAyB"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { SyntaxNode } from '../types.js';
|
|
2
|
+
export declare const id: "rust";
|
|
3
|
+
export declare const extensions: string[];
|
|
4
|
+
export declare const grammar = "tree-sitter-rust/tree-sitter-rust.wasm";
|
|
5
|
+
export declare const FUNCTION_TYPES: string[];
|
|
6
|
+
export declare const CLASS_TYPES: string[];
|
|
7
|
+
export declare const STRUCT_TYPES: string[];
|
|
8
|
+
export declare const TRAIT_TYPES: string[];
|
|
9
|
+
export declare const INTERFACE_TYPES: string[];
|
|
10
|
+
export declare const TYPE_TYPES: string[];
|
|
11
|
+
export declare const ENUM_TYPES: string[];
|
|
12
|
+
export declare const CONST_TYPES: string[];
|
|
13
|
+
/**
|
|
14
|
+
* Check if a Rust node has 'pub' visibility modifier
|
|
15
|
+
*/
|
|
16
|
+
export declare function isExported(node: SyntaxNode): boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Extract name from a Rust node
|
|
19
|
+
*/
|
|
20
|
+
export declare function extractName(node: SyntaxNode): string | null;
|
|
21
|
+
/**
|
|
22
|
+
* Extract name from const/static declaration
|
|
23
|
+
*/
|
|
24
|
+
export declare function extractConstName(node: SyntaxNode): string | null;
|
|
25
|
+
export declare const commentPrefixes: string[];
|
|
26
|
+
//# sourceMappingURL=rust.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rust.d.ts","sourceRoot":"","sources":["../../src/languages/rust.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAE7C,eAAO,MAAM,EAAE,EAAG,MAAe,CAAA;AACjC,eAAO,MAAM,UAAU,UAAU,CAAA;AACjC,eAAO,MAAM,OAAO,2CAA2C,CAAA;AAG/D,eAAO,MAAM,cAAc,UAAoB,CAAA;AAC/C,eAAO,MAAM,WAAW,EAAE,MAAM,EAAO,CAAA;AACvC,eAAO,MAAM,YAAY,UAAkB,CAAA;AAC3C,eAAO,MAAM,WAAW,UAAiB,CAAA;AACzC,eAAO,MAAM,eAAe,EAAE,MAAM,EAAO,CAAA;AAC3C,eAAO,MAAM,UAAU,UAAgB,CAAA;AACvC,eAAO,MAAM,UAAU,UAAgB,CAAA;AACvC,eAAO,MAAM,WAAW,UAAgC,CAAA;AAExD;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CASpD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,CAkB3D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,CAEhE;AAWD,eAAO,MAAM,eAAe,UAA6B,CAAA"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
// Rust language support for agentmap.
|
|
2
|
+
export const id = 'rust';
|
|
3
|
+
export const extensions = ['.rs'];
|
|
4
|
+
export const grammar = 'tree-sitter-rust/tree-sitter-rust.wasm';
|
|
5
|
+
// AST node types
|
|
6
|
+
export const FUNCTION_TYPES = ['function_item'];
|
|
7
|
+
export const CLASS_TYPES = []; // Rust has structs/traits, not classes
|
|
8
|
+
export const STRUCT_TYPES = ['struct_item'];
|
|
9
|
+
export const TRAIT_TYPES = ['trait_item'];
|
|
10
|
+
export const INTERFACE_TYPES = []; // Rust traits handled in TRAIT_TYPES
|
|
11
|
+
export const TYPE_TYPES = ['type_item'];
|
|
12
|
+
export const ENUM_TYPES = ['enum_item'];
|
|
13
|
+
export const CONST_TYPES = ['const_item', 'static_item'];
|
|
14
|
+
/**
|
|
15
|
+
* Check if a Rust node has 'pub' visibility modifier
|
|
16
|
+
*/
|
|
17
|
+
export function isExported(node) {
|
|
18
|
+
for (let i = 0; i < node.childCount; i++) {
|
|
19
|
+
const child = node.child(i);
|
|
20
|
+
if (child?.type === 'visibility_modifier') {
|
|
21
|
+
return child.text.startsWith('pub');
|
|
22
|
+
}
|
|
23
|
+
if (child?.type === 'identifier' || child?.type === 'type_identifier')
|
|
24
|
+
break;
|
|
25
|
+
}
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Extract name from a Rust node
|
|
30
|
+
*/
|
|
31
|
+
export function extractName(node) {
|
|
32
|
+
if (node.type === 'impl_item') {
|
|
33
|
+
const typeNode = node.childForFieldName('type');
|
|
34
|
+
if (typeNode) {
|
|
35
|
+
const ident = typeNode.type === 'type_identifier'
|
|
36
|
+
? typeNode
|
|
37
|
+
: findChild(typeNode, 'type_identifier');
|
|
38
|
+
return ident?.text ?? null;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
for (let i = 0; i < node.childCount; i++) {
|
|
42
|
+
const child = node.child(i);
|
|
43
|
+
if (child?.type === 'identifier' || child?.type === 'type_identifier') {
|
|
44
|
+
return child.text;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Extract name from const/static declaration
|
|
51
|
+
*/
|
|
52
|
+
export function extractConstName(node) {
|
|
53
|
+
return extractName(node);
|
|
54
|
+
}
|
|
55
|
+
function findChild(node, type) {
|
|
56
|
+
for (let i = 0; i < node.childCount; i++) {
|
|
57
|
+
const child = node.child(i);
|
|
58
|
+
if (child?.type === type)
|
|
59
|
+
return child;
|
|
60
|
+
}
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
// Comment handling
|
|
64
|
+
export const commentPrefixes = ['//', '/*', '//!', '///'];
|
|
65
|
+
//# sourceMappingURL=rust.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rust.js","sourceRoot":"","sources":["../../src/languages/rust.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { SyntaxNode } from '../types.js';
|
|
2
|
+
export declare const id: "typescript";
|
|
3
|
+
export declare const extensions: string[];
|
|
4
|
+
export declare const grammar = "tree-sitter-typescript/tree-sitter-tsx.wasm";
|
|
5
|
+
export declare const FUNCTION_TYPES: string[];
|
|
6
|
+
export declare const CLASS_TYPES: string[];
|
|
7
|
+
export declare const STRUCT_TYPES: string[];
|
|
8
|
+
export declare const TRAIT_TYPES: string[];
|
|
9
|
+
export declare const INTERFACE_TYPES: string[];
|
|
10
|
+
export declare const TYPE_TYPES: string[];
|
|
11
|
+
export declare const ENUM_TYPES: string[];
|
|
12
|
+
export declare const CONST_TYPES: string[];
|
|
13
|
+
/**
|
|
14
|
+
* Check if a node is an export statement
|
|
15
|
+
*/
|
|
16
|
+
export declare function isExported(node: SyntaxNode): boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Unwrap export statement to get the actual declaration
|
|
19
|
+
*/
|
|
20
|
+
export declare function unwrapExport(node: SyntaxNode): SyntaxNode;
|
|
21
|
+
/**
|
|
22
|
+
* Extract name from a TypeScript/JavaScript node
|
|
23
|
+
*/
|
|
24
|
+
export declare function extractName(node: SyntaxNode): string | null;
|
|
25
|
+
/**
|
|
26
|
+
* Extract name from const/let declaration
|
|
27
|
+
*/
|
|
28
|
+
export declare function extractConstName(node: SyntaxNode): string | null;
|
|
29
|
+
export declare const commentPrefixes: string[];
|
|
30
|
+
//# sourceMappingURL=typescript.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typescript.d.ts","sourceRoot":"","sources":["../../src/languages/typescript.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAE7C,eAAO,MAAM,EAAE,EAAG,YAAqB,CAAA;AACvC,eAAO,MAAM,UAAU,UAAkC,CAAA;AACzD,eAAO,MAAM,OAAO,gDAAgD,CAAA;AAGpE,eAAO,MAAM,cAAc,UAAgD,CAAA;AAC3E,eAAO,MAAM,WAAW,UAAsD,CAAA;AAC9E,eAAO,MAAM,YAAY,EAAE,MAAM,EAAO,CAAA;AACxC,eAAO,MAAM,WAAW,EAAE,MAAM,EAAO,CAAA;AACvC,eAAO,MAAM,eAAe,UAA4B,CAAA;AACxD,eAAO,MAAM,UAAU,UAA6B,CAAA;AACpD,eAAO,MAAM,UAAU,UAAuB,CAAA;AAC9C,eAAO,MAAM,WAAW,UAA0B,CAAA;AAElD;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAEpD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU,CAWzD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,CAY3D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,CAShE;AAGD,eAAO,MAAM,eAAe,UAAe,CAAA"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
// TypeScript language support for agentmap.
|
|
2
|
+
export const id = 'typescript';
|
|
3
|
+
export const extensions = ['.ts', '.tsx', '.mts', '.cts'];
|
|
4
|
+
export const grammar = 'tree-sitter-typescript/tree-sitter-tsx.wasm';
|
|
5
|
+
// AST node types
|
|
6
|
+
export const FUNCTION_TYPES = ['function_declaration', 'method_definition'];
|
|
7
|
+
export const CLASS_TYPES = ['class_declaration', 'abstract_class_declaration'];
|
|
8
|
+
export const STRUCT_TYPES = [];
|
|
9
|
+
export const TRAIT_TYPES = [];
|
|
10
|
+
export const INTERFACE_TYPES = ['interface_declaration'];
|
|
11
|
+
export const TYPE_TYPES = ['type_alias_declaration'];
|
|
12
|
+
export const ENUM_TYPES = ['enum_declaration'];
|
|
13
|
+
export const CONST_TYPES = ['lexical_declaration'];
|
|
14
|
+
/**
|
|
15
|
+
* Check if a node is an export statement
|
|
16
|
+
*/
|
|
17
|
+
export function isExported(node) {
|
|
18
|
+
return node.type === 'export_statement';
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Unwrap export statement to get the actual declaration
|
|
22
|
+
*/
|
|
23
|
+
export function unwrapExport(node) {
|
|
24
|
+
if (node.type === 'export_statement') {
|
|
25
|
+
for (let i = 0; i < node.childCount; i++) {
|
|
26
|
+
const child = node.child(i);
|
|
27
|
+
if (!child)
|
|
28
|
+
continue;
|
|
29
|
+
if (child.type !== 'export' && !child.type.includes('comment') && child.type !== 'default') {
|
|
30
|
+
return child;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return node;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Extract name from a TypeScript/JavaScript node
|
|
38
|
+
*/
|
|
39
|
+
export function extractName(node) {
|
|
40
|
+
for (let i = 0; i < node.childCount; i++) {
|
|
41
|
+
const child = node.child(i);
|
|
42
|
+
if (!child)
|
|
43
|
+
continue;
|
|
44
|
+
if (child.type === 'identifier' || child.type === 'type_identifier') {
|
|
45
|
+
return child.text;
|
|
46
|
+
}
|
|
47
|
+
if (child.type === 'property_identifier') {
|
|
48
|
+
return child.text;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Extract name from const/let declaration
|
|
55
|
+
*/
|
|
56
|
+
export function extractConstName(node) {
|
|
57
|
+
for (let i = 0; i < node.childCount; i++) {
|
|
58
|
+
const child = node.child(i);
|
|
59
|
+
if (child?.type === 'variable_declarator') {
|
|
60
|
+
const nameNode = child.childForFieldName('name');
|
|
61
|
+
return nameNode?.text ?? null;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
// Comment handling
|
|
67
|
+
export const commentPrefixes = ['//', '/*'];
|
|
68
|
+
//# sourceMappingURL=typescript.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typescript.js","sourceRoot":"","sources":["../../src/languages/typescript.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { SyntaxNode, DefinitionType } from '../types.js';
|
|
2
|
+
export declare const id: "zig";
|
|
3
|
+
export declare const extensions: string[];
|
|
4
|
+
export declare const grammar = "@tree-sitter-grammars/tree-sitter-zig/tree-sitter-zig.wasm";
|
|
5
|
+
export declare const FUNCTION_TYPES: string[];
|
|
6
|
+
export declare const CLASS_TYPES: string[];
|
|
7
|
+
export declare const STRUCT_TYPES: string[];
|
|
8
|
+
export declare const TRAIT_TYPES: string[];
|
|
9
|
+
export declare const INTERFACE_TYPES: string[];
|
|
10
|
+
export declare const TYPE_TYPES: string[];
|
|
11
|
+
export declare const ENUM_TYPES: string[];
|
|
12
|
+
export declare const CONST_TYPES: string[];
|
|
13
|
+
/**
|
|
14
|
+
* Check if a Zig node has 'pub' modifier
|
|
15
|
+
*/
|
|
16
|
+
export declare function isExported(node: SyntaxNode): boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Check if a Zig variable_declaration uses 'const' (not 'var')
|
|
19
|
+
*/
|
|
20
|
+
export declare function isConst(node: SyntaxNode): boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Check if a Zig variable_declaration contains a struct/enum/union declaration
|
|
23
|
+
*/
|
|
24
|
+
export declare function getTypeDeclaration(node: SyntaxNode): DefinitionType | null;
|
|
25
|
+
/**
|
|
26
|
+
* Check if a Zig function has 'extern' modifier
|
|
27
|
+
*/
|
|
28
|
+
export declare function isExtern(node: SyntaxNode): boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Extract name from a Zig node
|
|
31
|
+
*/
|
|
32
|
+
export declare function extractName(node: SyntaxNode): string | null;
|
|
33
|
+
/**
|
|
34
|
+
* Extract name from const/var declaration
|
|
35
|
+
*/
|
|
36
|
+
export declare function extractConstName(node: SyntaxNode): string | null;
|
|
37
|
+
export declare const commentPrefixes: string[];
|
|
38
|
+
//# sourceMappingURL=zig.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zig.d.ts","sourceRoot":"","sources":["../../src/languages/zig.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAE7D,eAAO,MAAM,EAAE,EAAG,KAAc,CAAA;AAChC,eAAO,MAAM,UAAU,UAAW,CAAA;AAClC,eAAO,MAAM,OAAO,+DAA+D,CAAA;AAGnF,eAAO,MAAM,cAAc,UAA+C,CAAA;AAC1E,eAAO,MAAM,WAAW,EAAE,MAAM,EAAO,CAAA;AACvC,eAAO,MAAM,YAAY,EAAE,MAAM,EAAO,CAAA;AACxC,eAAO,MAAM,WAAW,EAAE,MAAM,EAAO,CAAA;AACvC,eAAO,MAAM,eAAe,EAAE,MAAM,EAAO,CAAA;AAC3C,eAAO,MAAM,UAAU,EAAE,MAAM,EAAO,CAAA;AACtC,eAAO,MAAM,UAAU,EAAE,MAAM,EAAO,CAAA;AACtC,eAAO,MAAM,WAAW,UAA2B,CAAA;AAEnD;;GAEG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAOpD;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAOjD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,UAAU,GAAG,cAAc,GAAG,IAAI,CAQ1E;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAOlD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,CAyB3D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,CAEhE;AAGD,eAAO,MAAM,eAAe,UAAe,CAAA"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
// Zig language support for agentmap.
|
|
2
|
+
export const id = 'zig';
|
|
3
|
+
export const extensions = ['.zig'];
|
|
4
|
+
export const grammar = '@tree-sitter-grammars/tree-sitter-zig/tree-sitter-zig.wasm';
|
|
5
|
+
// AST node types
|
|
6
|
+
export const FUNCTION_TYPES = ['function_declaration', 'test_declaration'];
|
|
7
|
+
export const CLASS_TYPES = []; // Zig has structs/unions, not classes
|
|
8
|
+
export const STRUCT_TYPES = []; // Handled via variable_declaration with struct value
|
|
9
|
+
export const TRAIT_TYPES = [];
|
|
10
|
+
export const INTERFACE_TYPES = [];
|
|
11
|
+
export const TYPE_TYPES = [];
|
|
12
|
+
export const ENUM_TYPES = []; // Handled via variable_declaration with enum value
|
|
13
|
+
export const CONST_TYPES = ['variable_declaration'];
|
|
14
|
+
/**
|
|
15
|
+
* Check if a Zig node has 'pub' modifier
|
|
16
|
+
*/
|
|
17
|
+
export function isExported(node) {
|
|
18
|
+
for (let i = 0; i < node.childCount; i++) {
|
|
19
|
+
const child = node.child(i);
|
|
20
|
+
if (child?.type === 'pub')
|
|
21
|
+
return true;
|
|
22
|
+
if (child?.type === 'identifier' || child?.type === 'block')
|
|
23
|
+
break;
|
|
24
|
+
}
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Check if a Zig variable_declaration uses 'const' (not 'var')
|
|
29
|
+
*/
|
|
30
|
+
export function isConst(node) {
|
|
31
|
+
for (let i = 0; i < node.childCount; i++) {
|
|
32
|
+
const child = node.child(i);
|
|
33
|
+
if (child?.type === 'const')
|
|
34
|
+
return true;
|
|
35
|
+
if (child?.type === 'var')
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Check if a Zig variable_declaration contains a struct/enum/union declaration
|
|
42
|
+
*/
|
|
43
|
+
export function getTypeDeclaration(node) {
|
|
44
|
+
for (let i = 0; i < node.childCount; i++) {
|
|
45
|
+
const child = node.child(i);
|
|
46
|
+
if (child?.type === 'struct_declaration')
|
|
47
|
+
return 'struct';
|
|
48
|
+
if (child?.type === 'union_declaration')
|
|
49
|
+
return 'union';
|
|
50
|
+
if (child?.type === 'enum_declaration')
|
|
51
|
+
return 'enum';
|
|
52
|
+
}
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Check if a Zig function has 'extern' modifier
|
|
57
|
+
*/
|
|
58
|
+
export function isExtern(node) {
|
|
59
|
+
for (let i = 0; i < node.childCount; i++) {
|
|
60
|
+
const child = node.child(i);
|
|
61
|
+
if (child?.type === 'extern')
|
|
62
|
+
return true;
|
|
63
|
+
if (child?.type === 'block' || child?.type === 'fn')
|
|
64
|
+
break;
|
|
65
|
+
}
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Extract name from a Zig node
|
|
70
|
+
*/
|
|
71
|
+
export function extractName(node) {
|
|
72
|
+
if (node.type === 'test_declaration') {
|
|
73
|
+
for (let i = 0; i < node.childCount; i++) {
|
|
74
|
+
const child = node.child(i);
|
|
75
|
+
if (child?.type === 'string') {
|
|
76
|
+
const text = child.text;
|
|
77
|
+
if (text.startsWith('"') && text.endsWith('"')) {
|
|
78
|
+
return text.slice(1, -1);
|
|
79
|
+
}
|
|
80
|
+
return text;
|
|
81
|
+
}
|
|
82
|
+
if (child?.type === 'identifier') {
|
|
83
|
+
return child.text;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return null;
|
|
87
|
+
}
|
|
88
|
+
for (let i = 0; i < node.childCount; i++) {
|
|
89
|
+
const child = node.child(i);
|
|
90
|
+
if (child?.type === 'identifier') {
|
|
91
|
+
return child.text;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return null;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Extract name from const/var declaration
|
|
98
|
+
*/
|
|
99
|
+
export function extractConstName(node) {
|
|
100
|
+
return extractName(node);
|
|
101
|
+
}
|
|
102
|
+
// Comment handling
|
|
103
|
+
export const commentPrefixes = ['//', '/*'];
|
|
104
|
+
//# sourceMappingURL=zig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zig.js","sourceRoot":"","sources":["../../src/languages/zig.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/map/builder.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAyB,UAAU,EAAiB,OAAO,EAAE,MAAM,aAAa,CAAA;AAE5F;;GAEG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CASzE;
|
|
1
|
+
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/map/builder.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAyB,UAAU,EAAiB,OAAO,EAAE,MAAM,aAAa,CAAA;AAE5F;;GAEG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CASzE;AA4FD;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAM/C"}
|
package/dist/map/builder.js
CHANGED
|
@@ -25,7 +25,7 @@ function formatFileDiff(diff) {
|
|
|
25
25
|
return parts.join('');
|
|
26
26
|
}
|
|
27
27
|
/**
|
|
28
|
-
* Format a definition as a string like "line 13, function, exported, updated (+5-2)"
|
|
28
|
+
* Format a definition as a string like "line 13, function, exported, extern, updated (+5-2)"
|
|
29
29
|
*/
|
|
30
30
|
function formatDefinition(def) {
|
|
31
31
|
const lineStr = `line ${def.line}`;
|
|
@@ -33,6 +33,9 @@ function formatDefinition(def) {
|
|
|
33
33
|
if (def.exported) {
|
|
34
34
|
parts.push('exported');
|
|
35
35
|
}
|
|
36
|
+
if (def.extern) {
|
|
37
|
+
parts.push('extern');
|
|
38
|
+
}
|
|
36
39
|
// Add diff info if present
|
|
37
40
|
if (def.diff) {
|
|
38
41
|
// Format as +N-M or just +N or -M
|
package/dist/map/builder.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/map/builder.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/map/builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import Parser from 'web-tree-sitter';
|
|
2
2
|
import type { Language } from '../types.js';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
*/
|
|
6
|
-
export declare const LANGUAGE_EXTENSIONS: Record<string, Language>;
|
|
3
|
+
import { LANGUAGE_EXTENSIONS } from '../languages/index.js';
|
|
4
|
+
export { LANGUAGE_EXTENSIONS };
|
|
7
5
|
/**
|
|
8
6
|
* Detect language from file path extension
|
|
9
7
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"languages.d.ts","sourceRoot":"","sources":["../../src/parser/languages.ts"],"names":[],"mappings":"AAEA,OAAO,MAAM,MAAM,iBAAiB,CAAA;AACpC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"languages.d.ts","sourceRoot":"","sources":["../../src/parser/languages.ts"],"names":[],"mappings":"AAEA,OAAO,MAAM,MAAM,iBAAiB,CAAA;AACpC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAE3C,OAAO,EAAE,mBAAmB,EAAiB,MAAM,uBAAuB,CAAA;AAK1E,OAAO,EAAE,mBAAmB,EAAE,CAAA;AAE9B;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAGhE;AAyBD;;GAEG;AACH,wBAAsB,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAU9E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAExC"}
|
package/dist/parser/languages.js
CHANGED
|
@@ -1,24 +1,10 @@
|
|
|
1
1
|
// Language detection and grammar loading for tree-sitter.
|
|
2
2
|
import Parser from 'web-tree-sitter';
|
|
3
3
|
import { createRequire } from 'module';
|
|
4
|
+
import { LANGUAGE_EXTENSIONS, GRAMMAR_PATHS } from '../languages/index.js';
|
|
4
5
|
const require = createRequire(import.meta.url);
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
*/
|
|
8
|
-
export const LANGUAGE_EXTENSIONS = {
|
|
9
|
-
'.ts': 'typescript',
|
|
10
|
-
'.tsx': 'typescript',
|
|
11
|
-
'.mts': 'typescript',
|
|
12
|
-
'.cts': 'typescript',
|
|
13
|
-
'.js': 'javascript',
|
|
14
|
-
'.jsx': 'javascript',
|
|
15
|
-
'.mjs': 'javascript',
|
|
16
|
-
'.cjs': 'javascript',
|
|
17
|
-
'.py': 'python',
|
|
18
|
-
'.pyi': 'python',
|
|
19
|
-
'.rs': 'rust',
|
|
20
|
-
'.go': 'go',
|
|
21
|
-
};
|
|
6
|
+
// Re-export for backwards compatibility
|
|
7
|
+
export { LANGUAGE_EXTENSIONS };
|
|
22
8
|
/**
|
|
23
9
|
* Detect language from file path extension
|
|
24
10
|
*/
|
|
@@ -30,18 +16,7 @@ export function detectLanguage(filepath) {
|
|
|
30
16
|
* Get the WASM grammar path for a language
|
|
31
17
|
*/
|
|
32
18
|
function getGrammarPath(language) {
|
|
33
|
-
|
|
34
|
-
case 'typescript':
|
|
35
|
-
return require.resolve('tree-sitter-typescript/tree-sitter-tsx.wasm');
|
|
36
|
-
case 'javascript':
|
|
37
|
-
return require.resolve('tree-sitter-javascript/tree-sitter-javascript.wasm');
|
|
38
|
-
case 'python':
|
|
39
|
-
return require.resolve('tree-sitter-python/tree-sitter-python.wasm');
|
|
40
|
-
case 'rust':
|
|
41
|
-
return require.resolve('tree-sitter-rust/tree-sitter-rust.wasm');
|
|
42
|
-
case 'go':
|
|
43
|
-
return require.resolve('tree-sitter-go/tree-sitter-go.wasm');
|
|
44
|
-
}
|
|
19
|
+
return require.resolve(GRAMMAR_PATHS[language]);
|
|
45
20
|
}
|
|
46
21
|
/**
|
|
47
22
|
* Cache for loaded grammars
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"languages.js","sourceRoot":"","sources":["../../src/parser/languages.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAE1D,OAAO,MAAM,MAAM,iBAAiB,CAAA;AAEpC,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"languages.js","sourceRoot":"","sources":["../../src/parser/languages.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAE1D,OAAO,MAAM,MAAM,iBAAiB,CAAA;AAEpC,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAA;AACtC,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAE1E,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAE9C,wCAAwC;AACxC,OAAO,EAAE,mBAAmB,EAAE,CAAA;AAE9B;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,QAAgB;IAC7C,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAA;IACrD,OAAO,mBAAmB,CAAC,GAAG,CAAC,IAAI,IAAI,CAAA;AACzC,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,QAAkB;IACxC,OAAO,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAA;AACjD,CAAC;AAED;;GAEG;AACH,MAAM,YAAY,GAAG,IAAI,GAAG,EAA6B,CAAA;AAEzD;;GAEG;AACH,IAAI,iBAAiB,GAAG,KAAK,CAAA;AAC7B,KAAK,UAAU,gBAAgB;IAC7B,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACvB,MAAM,MAAM,CAAC,IAAI,EAAE,CAAA;QACnB,iBAAiB,GAAG,IAAI,CAAA;IAC1B,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,QAAkB;IAClD,MAAM,gBAAgB,EAAE,CAAA;IAExB,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IACzC,IAAI,MAAM;QAAE,OAAO,MAAM,CAAA;IAEzB,MAAM,IAAI,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAA;IACrC,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAChD,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IACnC,OAAO,OAAO,CAAA;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,YAAY,CAAC,KAAK,EAAE,CAAA;AACtB,CAAC"}
|
package/dist/scanner.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../src/scanner.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../src/scanner.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAA2B,MAAM,YAAY,CAAA;AAuDtF;;GAEG;AACH,wBAAsB,aAAa,CAAC,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CA8DxF"}
|
package/dist/scanner.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
// Scan directory for files with header comments/docstrings.
|
|
2
2
|
import { execSync } from 'child_process';
|
|
3
|
-
import fg from 'fast-glob';
|
|
4
3
|
import picomatch from 'picomatch';
|
|
5
4
|
import { readFile } from 'fs/promises';
|
|
6
5
|
import { join, normalize } from 'path';
|
|
@@ -8,6 +7,11 @@ import { extractMarker, extractMarkdownDescription } from './extract/marker.js';
|
|
|
8
7
|
import { extractDefinitions } from './extract/definitions.js';
|
|
9
8
|
import { getAllDiffData, applyDiffToDefinitions } from './extract/git-status.js';
|
|
10
9
|
import { parseCode, detectLanguage, LANGUAGE_EXTENSIONS } from './parser/index.js';
|
|
10
|
+
/**
|
|
11
|
+
* Maximum number of files to process (safety limit)
|
|
12
|
+
* If exceeded, returns empty results to avoid scanning huge directories
|
|
13
|
+
*/
|
|
14
|
+
const MAX_FILES = 5_000_000;
|
|
11
15
|
/**
|
|
12
16
|
* Supported file extensions (from LANGUAGE_EXTENSIONS)
|
|
13
17
|
*/
|
|
@@ -27,59 +31,28 @@ function isReadmeFile(filepath) {
|
|
|
27
31
|
return filename === 'readme.md' || filename === 'readme';
|
|
28
32
|
}
|
|
29
33
|
/**
|
|
30
|
-
*
|
|
31
|
-
|
|
32
|
-
function isGitRepo(dir) {
|
|
33
|
-
try {
|
|
34
|
-
execSync('git rev-parse --git-dir', { cwd: dir, stdio: 'ignore' });
|
|
35
|
-
return true;
|
|
36
|
-
}
|
|
37
|
-
catch {
|
|
38
|
-
return false;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Get files using git ls-files
|
|
43
|
-
* Uses --cached --others to get tracked + untracked files
|
|
44
|
-
* Uses --exclude-standard to respect .gitignore
|
|
34
|
+
* Get tracked files using git ls-files
|
|
35
|
+
* Only returns files that are tracked by git (committed or staged)
|
|
45
36
|
*/
|
|
46
37
|
function getGitFiles(dir) {
|
|
47
38
|
const maxBuffer = 1024 * 10000000;
|
|
48
39
|
try {
|
|
49
|
-
// Get tracked
|
|
50
|
-
const stdout = execSync('git ls-files
|
|
51
|
-
cwd: dir,
|
|
52
|
-
maxBuffer,
|
|
53
|
-
encoding: 'utf8',
|
|
54
|
-
});
|
|
55
|
-
// Get deleted files to exclude
|
|
56
|
-
const deleted = execSync('git ls-files --deleted', {
|
|
40
|
+
// Get only tracked files
|
|
41
|
+
const stdout = execSync('git ls-files', {
|
|
57
42
|
cwd: dir,
|
|
58
43
|
maxBuffer,
|
|
59
44
|
encoding: 'utf8',
|
|
60
45
|
});
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
.filter(
|
|
46
|
+
return stdout
|
|
47
|
+
.split(/\r?\n/)
|
|
48
|
+
.map(x => x.trim())
|
|
49
|
+
.filter(Boolean)
|
|
65
50
|
.map(normalize);
|
|
66
51
|
}
|
|
67
52
|
catch {
|
|
68
53
|
return [];
|
|
69
54
|
}
|
|
70
55
|
}
|
|
71
|
-
/**
|
|
72
|
-
* Get files using fast-glob (fallback when not in git repo)
|
|
73
|
-
*/
|
|
74
|
-
async function getGlobFiles(dir) {
|
|
75
|
-
const patterns = Object.keys(LANGUAGE_EXTENSIONS).map(ext => `**/*${ext}`);
|
|
76
|
-
return fg(patterns, {
|
|
77
|
-
cwd: dir,
|
|
78
|
-
ignore: ['**/node_modules/**', '**/dist/**', '**/build/**', '**/.git/**'],
|
|
79
|
-
absolute: false,
|
|
80
|
-
dot: false,
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
56
|
/**
|
|
84
57
|
* Scan directory and process files with header comments
|
|
85
58
|
*/
|
|
@@ -88,14 +61,8 @@ export async function scanDirectory(options = {}) {
|
|
|
88
61
|
// Filter out null/undefined/empty patterns (cac can pass [null] when option not used)
|
|
89
62
|
const ignorePatterns = (options.ignore ?? []).filter((p) => !!p);
|
|
90
63
|
const includeDiff = options.diff ?? false;
|
|
91
|
-
// Get file list
|
|
92
|
-
let files;
|
|
93
|
-
if (isGitRepo(dir)) {
|
|
94
|
-
files = getGitFiles(dir);
|
|
95
|
-
}
|
|
96
|
-
else {
|
|
97
|
-
files = await getGlobFiles(dir);
|
|
98
|
-
}
|
|
64
|
+
// Get file list from git (caller should ensure we're in a git repo)
|
|
65
|
+
let files = getGitFiles(dir);
|
|
99
66
|
// Filter by supported extensions or README files
|
|
100
67
|
files = files.filter(f => isSupportedFile(f) || isReadmeFile(f));
|
|
101
68
|
// Filter by ignore patterns
|
|
@@ -103,10 +70,15 @@ export async function scanDirectory(options = {}) {
|
|
|
103
70
|
const isIgnored = picomatch(ignorePatterns);
|
|
104
71
|
files = files.filter(f => !isIgnored(f));
|
|
105
72
|
}
|
|
73
|
+
// Safety check: bail if too many files to avoid scanning huge directories
|
|
74
|
+
if (files.length > MAX_FILES) {
|
|
75
|
+
console.error(`Warning: Too many files (${files.length} > ${MAX_FILES}), skipping scan`);
|
|
76
|
+
return [];
|
|
77
|
+
}
|
|
106
78
|
// Get git diff data if needed (isolated from main processing)
|
|
107
79
|
let fileStats = null;
|
|
108
80
|
let fileDiffs = null;
|
|
109
|
-
if (includeDiff
|
|
81
|
+
if (includeDiff) {
|
|
110
82
|
try {
|
|
111
83
|
const diffData = getAllDiffData(dir);
|
|
112
84
|
fileStats = diffData.fileStats;
|