@colbymchenry/codegraph-win32-x64 1.2.0 → 1.3.1
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/lib/dist/bin/codegraph.d.ts +1 -1
- package/lib/dist/bin/codegraph.d.ts.map +1 -1
- package/lib/dist/bin/codegraph.js +232 -61
- package/lib/dist/bin/codegraph.js.map +1 -1
- package/lib/dist/bin/command-supervision.d.ts.map +1 -1
- package/lib/dist/bin/command-supervision.js +4 -1
- package/lib/dist/bin/command-supervision.js.map +1 -1
- package/lib/dist/db/index.d.ts +17 -5
- package/lib/dist/db/index.d.ts.map +1 -1
- package/lib/dist/db/index.js +68 -12
- package/lib/dist/db/index.js.map +1 -1
- package/lib/dist/db/migrations.d.ts +1 -1
- package/lib/dist/db/migrations.d.ts.map +1 -1
- package/lib/dist/db/migrations.js +19 -1
- package/lib/dist/db/migrations.js.map +1 -1
- package/lib/dist/db/queries.d.ts +76 -1
- package/lib/dist/db/queries.d.ts.map +1 -1
- package/lib/dist/db/queries.js +180 -0
- package/lib/dist/db/queries.js.map +1 -1
- package/lib/dist/db/schema.sql +19 -0
- package/lib/dist/directory.d.ts +9 -5
- package/lib/dist/directory.d.ts.map +1 -1
- package/lib/dist/directory.js +210 -19
- package/lib/dist/directory.js.map +1 -1
- package/lib/dist/extraction/cfml-extractor.d.ts +107 -0
- package/lib/dist/extraction/cfml-extractor.d.ts.map +1 -0
- package/lib/dist/extraction/cfml-extractor.js +494 -0
- package/lib/dist/extraction/cfml-extractor.js.map +1 -0
- package/lib/dist/extraction/grammars.d.ts +9 -0
- package/lib/dist/extraction/grammars.d.ts.map +1 -1
- package/lib/dist/extraction/grammars.js +115 -3
- package/lib/dist/extraction/grammars.js.map +1 -1
- package/lib/dist/extraction/index.d.ts +46 -1
- package/lib/dist/extraction/index.d.ts.map +1 -1
- package/lib/dist/extraction/index.js +338 -34
- package/lib/dist/extraction/index.js.map +1 -1
- package/lib/dist/extraction/languages/arkts.d.ts +3 -0
- package/lib/dist/extraction/languages/arkts.d.ts.map +1 -0
- package/lib/dist/extraction/languages/arkts.js +127 -0
- package/lib/dist/extraction/languages/arkts.js.map +1 -0
- package/lib/dist/extraction/languages/c-cpp.d.ts +42 -0
- package/lib/dist/extraction/languages/c-cpp.d.ts.map +1 -1
- package/lib/dist/extraction/languages/c-cpp.js +369 -4
- package/lib/dist/extraction/languages/c-cpp.js.map +1 -1
- package/lib/dist/extraction/languages/cfquery.d.ts +12 -0
- package/lib/dist/extraction/languages/cfquery.d.ts.map +1 -0
- package/lib/dist/extraction/languages/cfquery.js +28 -0
- package/lib/dist/extraction/languages/cfquery.js.map +1 -0
- package/lib/dist/extraction/languages/cfscript.d.ts +3 -0
- package/lib/dist/extraction/languages/cfscript.d.ts.map +1 -0
- package/lib/dist/extraction/languages/cfscript.js +73 -0
- package/lib/dist/extraction/languages/cfscript.js.map +1 -0
- package/lib/dist/extraction/languages/cobol.d.ts +33 -0
- package/lib/dist/extraction/languages/cobol.d.ts.map +1 -0
- package/lib/dist/extraction/languages/cobol.js +499 -0
- package/lib/dist/extraction/languages/cobol.js.map +1 -0
- package/lib/dist/extraction/languages/erlang.d.ts +3 -0
- package/lib/dist/extraction/languages/erlang.d.ts.map +1 -0
- package/lib/dist/extraction/languages/erlang.js +350 -0
- package/lib/dist/extraction/languages/erlang.js.map +1 -0
- package/lib/dist/extraction/languages/index.d.ts.map +1 -1
- package/lib/dist/extraction/languages/index.js +18 -0
- package/lib/dist/extraction/languages/index.js.map +1 -1
- package/lib/dist/extraction/languages/nix.d.ts +3 -0
- package/lib/dist/extraction/languages/nix.d.ts.map +1 -0
- package/lib/dist/extraction/languages/nix.js +294 -0
- package/lib/dist/extraction/languages/nix.js.map +1 -0
- package/lib/dist/extraction/languages/solidity.d.ts +3 -0
- package/lib/dist/extraction/languages/solidity.d.ts.map +1 -0
- package/lib/dist/extraction/languages/solidity.js +293 -0
- package/lib/dist/extraction/languages/solidity.js.map +1 -0
- package/lib/dist/extraction/languages/terraform.d.ts +3 -0
- package/lib/dist/extraction/languages/terraform.d.ts.map +1 -0
- package/lib/dist/extraction/languages/terraform.js +641 -0
- package/lib/dist/extraction/languages/terraform.js.map +1 -0
- package/lib/dist/extraction/languages/vbnet.d.ts +11 -0
- package/lib/dist/extraction/languages/vbnet.d.ts.map +1 -0
- package/lib/dist/extraction/languages/vbnet.js +141 -0
- package/lib/dist/extraction/languages/vbnet.js.map +1 -0
- package/lib/dist/extraction/mybatis-extractor.d.ts +30 -10
- package/lib/dist/extraction/mybatis-extractor.d.ts.map +1 -1
- package/lib/dist/extraction/mybatis-extractor.js +140 -38
- package/lib/dist/extraction/mybatis-extractor.js.map +1 -1
- package/lib/dist/extraction/tree-sitter-helpers.d.ts.map +1 -1
- package/lib/dist/extraction/tree-sitter-helpers.js +1 -0
- package/lib/dist/extraction/tree-sitter-helpers.js.map +1 -1
- package/lib/dist/extraction/tree-sitter-types.d.ts +3 -1
- package/lib/dist/extraction/tree-sitter-types.d.ts.map +1 -1
- package/lib/dist/extraction/tree-sitter.d.ts +38 -0
- package/lib/dist/extraction/tree-sitter.d.ts.map +1 -1
- package/lib/dist/extraction/tree-sitter.js +753 -10
- package/lib/dist/extraction/tree-sitter.js.map +1 -1
- package/lib/dist/extraction/wasm/tree-sitter-arkts.wasm +0 -0
- package/lib/dist/extraction/wasm/tree-sitter-cfml.wasm +0 -0
- package/lib/dist/extraction/wasm/tree-sitter-cfquery.wasm +0 -0
- package/lib/dist/extraction/wasm/tree-sitter-cfscript.wasm +0 -0
- package/lib/dist/extraction/wasm/tree-sitter-cobol.wasm +0 -0
- package/lib/dist/extraction/wasm/tree-sitter-erlang.wasm +0 -0
- package/lib/dist/extraction/wasm/tree-sitter-nix.wasm +0 -0
- package/lib/dist/extraction/wasm/tree-sitter-terraform.wasm +0 -0
- package/lib/dist/extraction/wasm/tree-sitter-vbnet.wasm +0 -0
- package/lib/dist/index.d.ts +63 -1
- package/lib/dist/index.d.ts.map +1 -1
- package/lib/dist/index.js +327 -5
- package/lib/dist/index.js.map +1 -1
- package/lib/dist/installer/index.d.ts.map +1 -1
- package/lib/dist/installer/index.js +3 -1
- package/lib/dist/installer/index.js.map +1 -1
- package/lib/dist/mcp/daemon.d.ts +25 -3
- package/lib/dist/mcp/daemon.d.ts.map +1 -1
- package/lib/dist/mcp/daemon.js +62 -8
- package/lib/dist/mcp/daemon.js.map +1 -1
- package/lib/dist/mcp/dynamic-boundaries.d.ts.map +1 -1
- package/lib/dist/mcp/dynamic-boundaries.js +2 -1
- package/lib/dist/mcp/dynamic-boundaries.js.map +1 -1
- package/lib/dist/mcp/early-ppid.d.ts +26 -0
- package/lib/dist/mcp/early-ppid.d.ts.map +1 -0
- package/lib/dist/mcp/early-ppid.js +29 -0
- package/lib/dist/mcp/early-ppid.js.map +1 -0
- package/lib/dist/mcp/index.d.ts.map +1 -1
- package/lib/dist/mcp/index.js +21 -4
- package/lib/dist/mcp/index.js.map +1 -1
- package/lib/dist/mcp/proxy.d.ts.map +1 -1
- package/lib/dist/mcp/proxy.js +29 -3
- package/lib/dist/mcp/proxy.js.map +1 -1
- package/lib/dist/mcp/query-pool.d.ts +14 -0
- package/lib/dist/mcp/query-pool.d.ts.map +1 -1
- package/lib/dist/mcp/query-pool.js +18 -0
- package/lib/dist/mcp/query-pool.js.map +1 -1
- package/lib/dist/mcp/session.d.ts.map +1 -1
- package/lib/dist/mcp/session.js +6 -0
- package/lib/dist/mcp/session.js.map +1 -1
- package/lib/dist/mcp/startup-handshake.d.ts +44 -0
- package/lib/dist/mcp/startup-handshake.d.ts.map +1 -0
- package/lib/dist/mcp/startup-handshake.js +73 -0
- package/lib/dist/mcp/startup-handshake.js.map +1 -0
- package/lib/dist/mcp/tools.d.ts +22 -0
- package/lib/dist/mcp/tools.d.ts.map +1 -1
- package/lib/dist/mcp/tools.js +88 -18
- package/lib/dist/mcp/tools.js.map +1 -1
- package/lib/dist/mcp/transport.d.ts.map +1 -1
- package/lib/dist/mcp/transport.js +18 -0
- package/lib/dist/mcp/transport.js.map +1 -1
- package/lib/dist/project-config.d.ts +38 -0
- package/lib/dist/project-config.d.ts.map +1 -1
- package/lib/dist/project-config.js +101 -2
- package/lib/dist/project-config.js.map +1 -1
- package/lib/dist/resolution/c-fnptr-synthesizer.d.ts +2 -1
- package/lib/dist/resolution/c-fnptr-synthesizer.d.ts.map +1 -1
- package/lib/dist/resolution/c-fnptr-synthesizer.js +170 -146
- package/lib/dist/resolution/c-fnptr-synthesizer.js.map +1 -1
- package/lib/dist/resolution/callback-synthesizer.d.ts.map +1 -1
- package/lib/dist/resolution/callback-synthesizer.js +982 -81
- package/lib/dist/resolution/callback-synthesizer.js.map +1 -1
- package/lib/dist/resolution/frameworks/cics.d.ts +20 -0
- package/lib/dist/resolution/frameworks/cics.d.ts.map +1 -0
- package/lib/dist/resolution/frameworks/cics.js +90 -0
- package/lib/dist/resolution/frameworks/cics.js.map +1 -0
- package/lib/dist/resolution/frameworks/index.d.ts.map +1 -1
- package/lib/dist/resolution/frameworks/index.js +6 -0
- package/lib/dist/resolution/frameworks/index.js.map +1 -1
- package/lib/dist/resolution/frameworks/java.d.ts.map +1 -1
- package/lib/dist/resolution/frameworks/java.js +14 -6
- package/lib/dist/resolution/frameworks/java.js.map +1 -1
- package/lib/dist/resolution/frameworks/terraform.d.ts +38 -0
- package/lib/dist/resolution/frameworks/terraform.d.ts.map +1 -0
- package/lib/dist/resolution/frameworks/terraform.js +277 -0
- package/lib/dist/resolution/frameworks/terraform.js.map +1 -0
- package/lib/dist/resolution/goframe-synthesizer.d.ts +2 -1
- package/lib/dist/resolution/goframe-synthesizer.d.ts.map +1 -1
- package/lib/dist/resolution/goframe-synthesizer.js +8 -3
- package/lib/dist/resolution/goframe-synthesizer.js.map +1 -1
- package/lib/dist/resolution/import-resolver.d.ts +7 -0
- package/lib/dist/resolution/import-resolver.d.ts.map +1 -1
- package/lib/dist/resolution/import-resolver.js +129 -4
- package/lib/dist/resolution/import-resolver.js.map +1 -1
- package/lib/dist/resolution/index.d.ts +49 -6
- package/lib/dist/resolution/index.d.ts.map +1 -1
- package/lib/dist/resolution/index.js +342 -65
- package/lib/dist/resolution/index.js.map +1 -1
- package/lib/dist/resolution/name-matcher.d.ts +0 -3
- package/lib/dist/resolution/name-matcher.d.ts.map +1 -1
- package/lib/dist/resolution/name-matcher.js +225 -33
- package/lib/dist/resolution/name-matcher.js.map +1 -1
- package/lib/dist/resolution/strip-comments.d.ts +1 -1
- package/lib/dist/resolution/strip-comments.d.ts.map +1 -1
- package/lib/dist/resolution/strip-comments.js +49 -0
- package/lib/dist/resolution/strip-comments.js.map +1 -1
- package/lib/dist/resolution/types.d.ts +29 -0
- package/lib/dist/resolution/types.d.ts.map +1 -1
- package/lib/dist/resolution/workspace-packages.d.ts +10 -0
- package/lib/dist/resolution/workspace-packages.d.ts.map +1 -1
- package/lib/dist/resolution/workspace-packages.js +142 -4
- package/lib/dist/resolution/workspace-packages.js.map +1 -1
- package/lib/dist/search/identifier-segments.d.ts +60 -0
- package/lib/dist/search/identifier-segments.d.ts.map +1 -0
- package/lib/dist/search/identifier-segments.js +176 -0
- package/lib/dist/search/identifier-segments.js.map +1 -0
- package/lib/dist/sync/git-hooks.d.ts.map +1 -1
- package/lib/dist/sync/git-hooks.js +2 -0
- package/lib/dist/sync/git-hooks.js.map +1 -1
- package/lib/dist/sync/watcher.d.ts +10 -5
- package/lib/dist/sync/watcher.d.ts.map +1 -1
- package/lib/dist/sync/watcher.js +51 -14
- package/lib/dist/sync/watcher.js.map +1 -1
- package/lib/dist/sync/worktree.d.ts.map +1 -1
- package/lib/dist/sync/worktree.js +5 -0
- package/lib/dist/sync/worktree.js.map +1 -1
- package/lib/dist/types.d.ts +19 -1
- package/lib/dist/types.d.ts.map +1 -1
- package/lib/dist/types.js +10 -0
- package/lib/dist/types.js.map +1 -1
- package/lib/node_modules/.package-lock.json +1 -1
- package/lib/package.json +1 -1
- package/package.json +1 -1
- package/lib/dist/reasoning/config.d.ts +0 -45
- package/lib/dist/reasoning/config.d.ts.map +0 -1
- package/lib/dist/reasoning/config.js +0 -171
- package/lib/dist/reasoning/config.js.map +0 -1
- package/lib/dist/reasoning/credentials.d.ts +0 -5
- package/lib/dist/reasoning/credentials.d.ts.map +0 -1
- package/lib/dist/reasoning/credentials.js +0 -83
- package/lib/dist/reasoning/credentials.js.map +0 -1
- package/lib/dist/reasoning/login.d.ts +0 -21
- package/lib/dist/reasoning/login.d.ts.map +0 -1
- package/lib/dist/reasoning/login.js +0 -85
- package/lib/dist/reasoning/login.js.map +0 -1
- package/lib/dist/reasoning/reasoner.d.ts +0 -43
- package/lib/dist/reasoning/reasoner.d.ts.map +0 -1
- package/lib/dist/reasoning/reasoner.js +0 -308
- package/lib/dist/reasoning/reasoner.js.map +0 -1
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { LanguageExtractor } from '../tree-sitter-types';
|
|
2
|
+
/**
|
|
3
|
+
* The vendored VB.NET grammar has no true end-of-file token (its `_eof` rule is
|
|
4
|
+
* a literal-`$` placeholder that never matches real input), so a file whose
|
|
5
|
+
* last line lacks a trailing newline ends every parse with a MISSING-newline
|
|
6
|
+
* error on the final statement. Appending a newline is offset-preserving for
|
|
7
|
+
* all existing content.
|
|
8
|
+
*/
|
|
9
|
+
export declare function ensureTrailingNewline(source: string): string;
|
|
10
|
+
export declare const vbnetExtractor: LanguageExtractor;
|
|
11
|
+
//# sourceMappingURL=vbnet.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vbnet.d.ts","sourceRoot":"","sources":["../../../src/extraction/languages/vbnet.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE9D;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAE5D;AAgCD,eAAO,MAAM,cAAc,EAAE,iBA2F5B,CAAC"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.vbnetExtractor = void 0;
|
|
4
|
+
exports.ensureTrailingNewline = ensureTrailingNewline;
|
|
5
|
+
const tree_sitter_helpers_1 = require("../tree-sitter-helpers");
|
|
6
|
+
/**
|
|
7
|
+
* The vendored VB.NET grammar has no true end-of-file token (its `_eof` rule is
|
|
8
|
+
* a literal-`$` placeholder that never matches real input), so a file whose
|
|
9
|
+
* last line lacks a trailing newline ends every parse with a MISSING-newline
|
|
10
|
+
* error on the final statement. Appending a newline is offset-preserving for
|
|
11
|
+
* all existing content.
|
|
12
|
+
*/
|
|
13
|
+
function ensureTrailingNewline(source) {
|
|
14
|
+
return source.endsWith('\n') ? source : source + '\n';
|
|
15
|
+
}
|
|
16
|
+
/** Case-insensitive member-modifier scan (VB keywords are case-insensitive). */
|
|
17
|
+
function hasModifier(node, re) {
|
|
18
|
+
for (let i = 0; i < node.childCount; i++) {
|
|
19
|
+
const child = node.child(i);
|
|
20
|
+
if (child?.type === 'member_modifier' && re.test(child.text))
|
|
21
|
+
return true;
|
|
22
|
+
}
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* A VB.NET method's declared return type (`Function Foo(...) As Bar`),
|
|
27
|
+
* normalized to the bare class name a chained `Foo.Create().Bar()` could be
|
|
28
|
+
* called on (the #645/#608 mechanism). The type lives in the method's
|
|
29
|
+
* `as_clause` child; predefined types (Integer/String/…) and arrays yield
|
|
30
|
+
* undefined, generics `List(Of Foo)` unwrap to the base type, and a dotted
|
|
31
|
+
* `Ns.Foo` reduces to the simple name. Subs have no as_clause → undefined.
|
|
32
|
+
*/
|
|
33
|
+
function extractVbnetReturnType(node, source) {
|
|
34
|
+
const asClause = node.namedChildren.find((c) => c.type === 'as_clause');
|
|
35
|
+
if (!asClause)
|
|
36
|
+
return undefined;
|
|
37
|
+
const typeNode = asClause.childForFieldName('declared_type');
|
|
38
|
+
if (!typeNode || typeNode.type === 'predefined_type' || typeNode.type === 'array_type')
|
|
39
|
+
return undefined;
|
|
40
|
+
let t = (0, tree_sitter_helpers_1.getNodeText)(typeNode, source).trim();
|
|
41
|
+
t = t.replace(/\?+$/, ''); // nullable `Foo?`
|
|
42
|
+
t = t.replace(/\(\s*Of\b[^)]*\)/gi, ''); // generics `List(Of Foo)` → `List`
|
|
43
|
+
const last = t.split('.').pop()?.trim();
|
|
44
|
+
if (!last || !/^[A-Za-z_]\w*$/.test(last))
|
|
45
|
+
return undefined;
|
|
46
|
+
return last;
|
|
47
|
+
}
|
|
48
|
+
exports.vbnetExtractor = {
|
|
49
|
+
preParse: ensureTrailingNewline,
|
|
50
|
+
functionTypes: [],
|
|
51
|
+
// VB Modules are static containers (Shared members, no instantiation) —
|
|
52
|
+
// indexed as classes so their members get normal containment/qualification.
|
|
53
|
+
classTypes: ['class_declaration', 'module_declaration'],
|
|
54
|
+
methodTypes: [
|
|
55
|
+
'method_declaration',
|
|
56
|
+
'constructor_declaration',
|
|
57
|
+
// `Declare Function GetWindowLong Lib "user32" ...` (P/Invoke)
|
|
58
|
+
'external_method_declaration',
|
|
59
|
+
// Interface members are distinct node types in this grammar (unlike C#).
|
|
60
|
+
'interface_method_declaration',
|
|
61
|
+
// `MustOverride Sub/Function ...` — body-less abstract members.
|
|
62
|
+
'abstract_method_declaration',
|
|
63
|
+
],
|
|
64
|
+
interfaceTypes: ['interface_declaration'],
|
|
65
|
+
structTypes: ['structure_declaration'],
|
|
66
|
+
enumTypes: ['enum_declaration'],
|
|
67
|
+
enumMemberTypes: ['enum_member_declaration'],
|
|
68
|
+
typeAliasTypes: ['delegate_declaration'],
|
|
69
|
+
packageTypes: ['namespace_declaration'],
|
|
70
|
+
extractPackage: (node, source) => {
|
|
71
|
+
const name = node.childForFieldName('name');
|
|
72
|
+
return name ? (0, tree_sitter_helpers_1.getNodeText)(name, source) : null;
|
|
73
|
+
},
|
|
74
|
+
importTypes: ['imports_statement'],
|
|
75
|
+
// VB uses parentheses for BOTH calls and indexing, so the grammar can only
|
|
76
|
+
// split them heuristically (empty parens → invocation, args → array access;
|
|
77
|
+
// even Roslyn parses both as InvocationExpression and disambiguates during
|
|
78
|
+
// binding). Both are treated as call sites — extractCall has a vbnet branch
|
|
79
|
+
// — and name matching simply never resolves an index read on a collection.
|
|
80
|
+
callTypes: ['invocation_expression', 'array_access_expression', 'generic_invocation_expression'],
|
|
81
|
+
variableTypes: ['declaration_statement'],
|
|
82
|
+
fieldTypes: ['field_declaration'],
|
|
83
|
+
propertyTypes: ['property_declaration', 'interface_property_declaration', 'abstract_property_declaration'],
|
|
84
|
+
nameField: 'name',
|
|
85
|
+
bodyField: 'body',
|
|
86
|
+
paramsField: 'parameters',
|
|
87
|
+
// Method/property statements are direct children of the declaration node
|
|
88
|
+
// (this grammar has no body wrapper), so the node is its own body — without
|
|
89
|
+
// this, calls inside every Sub/Function would be skipped.
|
|
90
|
+
resolveBody: (node) => node,
|
|
91
|
+
getReturnType: extractVbnetReturnType,
|
|
92
|
+
getVisibility: (node) => {
|
|
93
|
+
if (hasModifier(node, /^private$/i))
|
|
94
|
+
return 'private';
|
|
95
|
+
if (hasModifier(node, /^protected(\s+friend)?$/i))
|
|
96
|
+
return 'protected';
|
|
97
|
+
if (hasModifier(node, /^friend$/i))
|
|
98
|
+
return 'internal';
|
|
99
|
+
return 'public'; // VB members default to Public in practice
|
|
100
|
+
},
|
|
101
|
+
isStatic: (node) => hasModifier(node, /^shared$/i),
|
|
102
|
+
isConst: (node) => hasModifier(node, /^const$/i) || (hasModifier(node, /^shared$/i) && hasModifier(node, /^readonly$/i)),
|
|
103
|
+
isAsync: (node) => hasModifier(node, /^async$/i),
|
|
104
|
+
extractImport: (node, source) => {
|
|
105
|
+
const importText = source.substring(node.startIndex, node.endIndex).trim();
|
|
106
|
+
// `Imports System.Collections.Generic` / `Imports Alias = Some.Namespace` /
|
|
107
|
+
// `Imports Global.Company.Product`. The name reference is the last
|
|
108
|
+
// qualified/simple/global name child (skips the alias identifier).
|
|
109
|
+
const nameNode = [...node.namedChildren]
|
|
110
|
+
.reverse()
|
|
111
|
+
.find((c) => c.type === 'qualified_name' || c.type === 'simple_name' || c.type === 'global_qualified_name' || c.type === 'identifier');
|
|
112
|
+
if (nameNode) {
|
|
113
|
+
return { moduleName: (0, tree_sitter_helpers_1.getNodeText)(nameNode, source), signature: importText };
|
|
114
|
+
}
|
|
115
|
+
return null;
|
|
116
|
+
},
|
|
117
|
+
visitNode: (node, ctx) => {
|
|
118
|
+
// Events are indexed so `RaiseEvent X` / `Handles obj.X` flows have a
|
|
119
|
+
// findable declaration (WinForms/WPF code is built around them).
|
|
120
|
+
if (node.type === 'event_declaration' || node.type === 'custom_event_declaration') {
|
|
121
|
+
const nameNode = node.childForFieldName('name');
|
|
122
|
+
if (nameNode) {
|
|
123
|
+
ctx.createNode('field', (0, tree_sitter_helpers_1.getNodeText)(nameNode, ctx.source), node);
|
|
124
|
+
}
|
|
125
|
+
return true;
|
|
126
|
+
}
|
|
127
|
+
// `Sub New(...)` lexes as one token with no name field — without this,
|
|
128
|
+
// constructors index as `<anonymous>`.
|
|
129
|
+
if (node.type === 'constructor_declaration') {
|
|
130
|
+
const ctor = ctx.createNode('method', 'New', node);
|
|
131
|
+
if (ctor) {
|
|
132
|
+
ctx.pushScope(ctor.id);
|
|
133
|
+
ctx.visitFunctionBody(node, ctor.id);
|
|
134
|
+
ctx.popScope();
|
|
135
|
+
}
|
|
136
|
+
return true;
|
|
137
|
+
}
|
|
138
|
+
return false;
|
|
139
|
+
},
|
|
140
|
+
};
|
|
141
|
+
//# sourceMappingURL=vbnet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vbnet.js","sourceRoot":"","sources":["../../../src/extraction/languages/vbnet.ts"],"names":[],"mappings":";;;AAWA,sDAEC;AAZD,gEAAqD;AAGrD;;;;;;GAMG;AACH,SAAgB,qBAAqB,CAAC,MAAc;IAClD,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC;AACxD,CAAC;AAED,gFAAgF;AAChF,SAAS,WAAW,CAAC,IAAgB,EAAE,EAAU;IAC/C,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,CAAC;QAC5B,IAAI,KAAK,EAAE,IAAI,KAAK,iBAAiB,IAAI,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;IAC5E,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,sBAAsB,CAAC,IAAgB,EAAE,MAAc;IAC9D,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAa,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;IACpF,IAAI,CAAC,QAAQ;QAAE,OAAO,SAAS,CAAC;IAChC,MAAM,QAAQ,GAAG,QAAQ,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC;IAC7D,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,KAAK,iBAAiB,IAAI,QAAQ,CAAC,IAAI,KAAK,YAAY;QAAE,OAAO,SAAS,CAAC;IACzG,IAAI,CAAC,GAAG,IAAA,iCAAW,EAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;IAC7C,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,kBAAkB;IAC7C,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC,CAAC,mCAAmC;IAC5E,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC;IACxC,IAAI,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IAC5D,OAAO,IAAI,CAAC;AACd,CAAC;AAEY,QAAA,cAAc,GAAsB;IAC/C,QAAQ,EAAE,qBAAqB;IAC/B,aAAa,EAAE,EAAE;IACjB,wEAAwE;IACxE,4EAA4E;IAC5E,UAAU,EAAE,CAAC,mBAAmB,EAAE,oBAAoB,CAAC;IACvD,WAAW,EAAE;QACX,oBAAoB;QACpB,yBAAyB;QACzB,+DAA+D;QAC/D,6BAA6B;QAC7B,yEAAyE;QACzE,8BAA8B;QAC9B,gEAAgE;QAChE,6BAA6B;KAC9B;IACD,cAAc,EAAE,CAAC,uBAAuB,CAAC;IACzC,WAAW,EAAE,CAAC,uBAAuB,CAAC;IACtC,SAAS,EAAE,CAAC,kBAAkB,CAAC;IAC/B,eAAe,EAAE,CAAC,yBAAyB,CAAC;IAC5C,cAAc,EAAE,CAAC,sBAAsB,CAAC;IACxC,YAAY,EAAE,CAAC,uBAAuB,CAAC;IACvC,cAAc,EAAE,CAAC,IAAgB,EAAE,MAAc,EAAE,EAAE;QACnD,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC,CAAC,CAAC,IAAA,iCAAW,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACjD,CAAC;IACD,WAAW,EAAE,CAAC,mBAAmB,CAAC;IAClC,2EAA2E;IAC3E,4EAA4E;IAC5E,2EAA2E;IAC3E,4EAA4E;IAC5E,2EAA2E;IAC3E,SAAS,EAAE,CAAC,uBAAuB,EAAE,yBAAyB,EAAE,+BAA+B,CAAC;IAChG,aAAa,EAAE,CAAC,uBAAuB,CAAC;IACxC,UAAU,EAAE,CAAC,mBAAmB,CAAC;IACjC,aAAa,EAAE,CAAC,sBAAsB,EAAE,gCAAgC,EAAE,+BAA+B,CAAC;IAC1G,SAAS,EAAE,MAAM;IACjB,SAAS,EAAE,MAAM;IACjB,WAAW,EAAE,YAAY;IACzB,yEAAyE;IACzE,4EAA4E;IAC5E,0DAA0D;IAC1D,WAAW,EAAE,CAAC,IAAgB,EAAE,EAAE,CAAC,IAAI;IACvC,aAAa,EAAE,sBAAsB;IACrC,aAAa,EAAE,CAAC,IAAI,EAAE,EAAE;QACtB,IAAI,WAAW,CAAC,IAAI,EAAE,YAAY,CAAC;YAAE,OAAO,SAAS,CAAC;QACtD,IAAI,WAAW,CAAC,IAAI,EAAE,0BAA0B,CAAC;YAAE,OAAO,WAAW,CAAC;QACtE,IAAI,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC;YAAE,OAAO,UAAU,CAAC;QACtD,OAAO,QAAQ,CAAC,CAAC,2CAA2C;IAC9D,CAAC;IACD,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC;IAClD,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,WAAW,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IACxH,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,UAAU,CAAC;IAChD,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;QAC9B,MAAM,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3E,4EAA4E;QAC5E,mEAAmE;QACnE,mEAAmE;QACnE,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC;aACrC,OAAO,EAAE;aACT,IAAI,CAAC,CAAC,CAAa,EAAE,EAAE,CACtB,CAAC,CAAC,IAAI,KAAK,gBAAgB,IAAI,CAAC,CAAC,IAAI,KAAK,aAAa,IAAI,CAAC,CAAC,IAAI,KAAK,uBAAuB,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,CACzH,CAAC;QACJ,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,EAAE,UAAU,EAAE,IAAA,iCAAW,EAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;QAC9E,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,SAAS,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QACvB,sEAAsE;QACtE,iEAAiE;QACjE,IAAI,IAAI,CAAC,IAAI,KAAK,mBAAmB,IAAI,IAAI,CAAC,IAAI,KAAK,0BAA0B,EAAE,CAAC;YAClF,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;YAChD,IAAI,QAAQ,EAAE,CAAC;gBACb,GAAG,CAAC,UAAU,CAAC,OAAO,EAAE,IAAA,iCAAW,EAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC;YACnE,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,uEAAuE;QACvE,uCAAuC;QACvC,IAAI,IAAI,CAAC,IAAI,KAAK,yBAAyB,EAAE,CAAC;YAC5C,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YACnD,IAAI,IAAI,EAAE,CAAC;gBACT,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACvB,GAAG,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;gBACrC,GAAG,CAAC,QAAQ,EAAE,CAAC;YACjB,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;CACF,CAAC"}
|
|
@@ -12,15 +12,21 @@ import { ExtractionResult } from '../types';
|
|
|
12
12
|
*
|
|
13
13
|
* This extractor emits one method-shaped node per `<select|insert|update|
|
|
14
14
|
* delete>` and per `<sql>` fragment, qualified as `<namespace>::<id>` so the
|
|
15
|
-
* MyBatis framework synthesizer
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
15
|
+
* MyBatis framework synthesizer can link the matching Java method → XML
|
|
16
|
+
* statement by suffix-matching qualified names. `<include refid="...">` inside
|
|
17
|
+
* a statement yields an unresolved reference to the SQL fragment, also keyed
|
|
18
|
+
* by `<namespace>::<refid>`.
|
|
19
|
+
*
|
|
20
|
+
* Both dialects are covered: MyBatis 3 `<mapper namespace="...">` and the
|
|
21
|
+
* legacy iBatis 2 `<sqlMap>` (namespaced, or namespace-less with `Map.stmt`
|
|
22
|
+
* ids, plus its extra `<statement>`/`<procedure>` verbs). Attribute values may
|
|
23
|
+
* use either quote style, and statements commented out with `<!-- ... -->` are
|
|
24
|
+
* ignored (see the constructor's comment-stripping pre-pass).
|
|
19
25
|
*
|
|
20
26
|
* Non-mapper XML (Maven `pom.xml`, Spring beans XML, `web.xml`, log4j config,
|
|
21
|
-
* etc.) is detected by the absence of a `<mapper namespace="...">`
|
|
22
|
-
* returns just a file node — we still need the file row so
|
|
23
|
-
* track it, but we emit no symbols.
|
|
27
|
+
* etc.) is detected by the absence of a `<mapper namespace="...">` /
|
|
28
|
+
* `<sqlMap>` root and returns just a file node — we still need the file row so
|
|
29
|
+
* the watcher can track it, but we emit no symbols.
|
|
24
30
|
*/
|
|
25
31
|
export declare class MyBatisExtractor {
|
|
26
32
|
private filePath;
|
|
@@ -31,16 +37,30 @@ export declare class MyBatisExtractor {
|
|
|
31
37
|
private errors;
|
|
32
38
|
private lineStarts;
|
|
33
39
|
constructor(filePath: string, source: string);
|
|
40
|
+
private static stripXmlComments;
|
|
34
41
|
extract(): ExtractionResult;
|
|
35
42
|
private createFileNode;
|
|
36
43
|
/**
|
|
37
|
-
* Find the
|
|
38
|
-
*
|
|
39
|
-
*
|
|
44
|
+
* Find the mapper root and its dialect. Two shapes are recognized:
|
|
45
|
+
* - MyBatis 3: `<mapper namespace="com.foo.Bar">` — namespace required.
|
|
46
|
+
* - iBatis 2: `<sqlMap namespace="Account">`, or a namespace-less
|
|
47
|
+
* `<sqlMap>` whose statement ids carry the qualifier as `Map.statement`.
|
|
48
|
+
* Returns the namespace, the dialect, and the byte offsets of the body
|
|
49
|
+
* (between the opening and closing tag) so statement extraction is scoped to
|
|
50
|
+
* the root's contents. Either quote style is accepted for the namespace
|
|
51
|
+
* (`namespace='X'` is legal XML and common in older mappers).
|
|
40
52
|
*/
|
|
41
53
|
private findMapperRoot;
|
|
42
54
|
private extractMapper;
|
|
43
55
|
private buildSignature;
|
|
56
|
+
/**
|
|
57
|
+
* Build the `<namespace>::<id>` qualified name the MyBatis synthesizer
|
|
58
|
+
* suffix-matches against a Java `<Class>::<method>`, and the display name.
|
|
59
|
+
* For a namespace-less iBatis `<sqlMap>`, the statement id carries the
|
|
60
|
+
* qualifier as `Map.statement`, so split on the last dot to reach the same
|
|
61
|
+
* shape (`Account.getById` → `Account::getById`, name `getById`).
|
|
62
|
+
*/
|
|
63
|
+
private qualifyStatement;
|
|
44
64
|
private previewSql;
|
|
45
65
|
private computeLineStarts;
|
|
46
66
|
private getLineNumber;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mybatis-extractor.d.ts","sourceRoot":"","sources":["../../src/extraction/mybatis-extractor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,gBAAgB,EAA6B,MAAM,UAAU,CAAC;AAG9F
|
|
1
|
+
{"version":3,"file":"mybatis-extractor.d.ts","sourceRoot":"","sources":["../../src/extraction/mybatis-extractor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,gBAAgB,EAA6B,MAAM,UAAU,CAAC;AAG9F;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,oBAAoB,CAA6B;IACzD,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,UAAU,CAAgB;gBAEtB,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAa5C,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAwB/B,OAAO,IAAI,gBAAgB;IA2B3B,OAAO,CAAC,cAAc;IAoBtB;;;;;;;;;OASG;IACH,OAAO,CAAC,cAAc;IAkCtB,OAAO,CAAC,aAAa;IAuFrB,OAAO,CAAC,cAAc;IAetB;;;;;;OAMG;IACH,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,iBAAiB;IAOzB,OAAO,CAAC,aAAa;CAWtB"}
|
|
@@ -15,15 +15,21 @@ const tree_sitter_helpers_1 = require("./tree-sitter-helpers");
|
|
|
15
15
|
*
|
|
16
16
|
* This extractor emits one method-shaped node per `<select|insert|update|
|
|
17
17
|
* delete>` and per `<sql>` fragment, qualified as `<namespace>::<id>` so the
|
|
18
|
-
* MyBatis framework synthesizer
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
18
|
+
* MyBatis framework synthesizer can link the matching Java method → XML
|
|
19
|
+
* statement by suffix-matching qualified names. `<include refid="...">` inside
|
|
20
|
+
* a statement yields an unresolved reference to the SQL fragment, also keyed
|
|
21
|
+
* by `<namespace>::<refid>`.
|
|
22
|
+
*
|
|
23
|
+
* Both dialects are covered: MyBatis 3 `<mapper namespace="...">` and the
|
|
24
|
+
* legacy iBatis 2 `<sqlMap>` (namespaced, or namespace-less with `Map.stmt`
|
|
25
|
+
* ids, plus its extra `<statement>`/`<procedure>` verbs). Attribute values may
|
|
26
|
+
* use either quote style, and statements commented out with `<!-- ... -->` are
|
|
27
|
+
* ignored (see the constructor's comment-stripping pre-pass).
|
|
22
28
|
*
|
|
23
29
|
* Non-mapper XML (Maven `pom.xml`, Spring beans XML, `web.xml`, log4j config,
|
|
24
|
-
* etc.) is detected by the absence of a `<mapper namespace="...">`
|
|
25
|
-
* returns just a file node — we still need the file row so
|
|
26
|
-
* track it, but we emit no symbols.
|
|
30
|
+
* etc.) is detected by the absence of a `<mapper namespace="...">` /
|
|
31
|
+
* `<sqlMap>` root and returns just a file node — we still need the file row so
|
|
32
|
+
* the watcher can track it, but we emit no symbols.
|
|
27
33
|
*/
|
|
28
34
|
class MyBatisExtractor {
|
|
29
35
|
filePath;
|
|
@@ -35,16 +41,47 @@ class MyBatisExtractor {
|
|
|
35
41
|
lineStarts = [];
|
|
36
42
|
constructor(filePath, source) {
|
|
37
43
|
this.filePath = filePath;
|
|
38
|
-
|
|
44
|
+
// Blank out XML comments up front so commented-out statements and includes
|
|
45
|
+
// aren't matched by the scans below (a `<!-- <select id="old">…</select> -->`
|
|
46
|
+
// block must not produce a phantom node). Length-preserving — comment bytes
|
|
47
|
+
// become spaces, newlines are kept — so the offsets and line numbers
|
|
48
|
+
// computed afterwards still map to the original source. Text inside
|
|
49
|
+
// `<![CDATA[ … ]]>` is left intact: a literal `<!--` there is SQL data, not
|
|
50
|
+
// an XML comment.
|
|
51
|
+
this.source = MyBatisExtractor.stripXmlComments(source);
|
|
39
52
|
this.computeLineStarts();
|
|
40
53
|
}
|
|
54
|
+
static stripXmlComments(source) {
|
|
55
|
+
const out = source.split('');
|
|
56
|
+
const n = source.length;
|
|
57
|
+
let i = 0;
|
|
58
|
+
while (i < n) {
|
|
59
|
+
if (source.startsWith('<![CDATA[', i)) {
|
|
60
|
+
const end = source.indexOf(']]>', i + 9);
|
|
61
|
+
i = end >= 0 ? end + 3 : n;
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
64
|
+
if (source.startsWith('<!--', i)) {
|
|
65
|
+
const end = source.indexOf('-->', i + 4);
|
|
66
|
+
const stop = end >= 0 ? end + 3 : n;
|
|
67
|
+
for (let j = i; j < stop; j++) {
|
|
68
|
+
if (source.charCodeAt(j) !== 10)
|
|
69
|
+
out[j] = ' ';
|
|
70
|
+
}
|
|
71
|
+
i = stop;
|
|
72
|
+
continue;
|
|
73
|
+
}
|
|
74
|
+
i++;
|
|
75
|
+
}
|
|
76
|
+
return out.join('');
|
|
77
|
+
}
|
|
41
78
|
extract() {
|
|
42
79
|
const startTime = Date.now();
|
|
43
80
|
const fileNode = this.createFileNode();
|
|
44
81
|
try {
|
|
45
|
-
const
|
|
46
|
-
if (
|
|
47
|
-
this.extractMapper(fileNode.id,
|
|
82
|
+
const root = this.findMapperRoot();
|
|
83
|
+
if (root) {
|
|
84
|
+
this.extractMapper(fileNode.id, root.namespace, root.dialect, root.bodyStart, root.bodyEnd);
|
|
48
85
|
}
|
|
49
86
|
}
|
|
50
87
|
catch (error) {
|
|
@@ -82,49 +119,89 @@ class MyBatisExtractor {
|
|
|
82
119
|
return node;
|
|
83
120
|
}
|
|
84
121
|
/**
|
|
85
|
-
* Find the
|
|
86
|
-
*
|
|
87
|
-
*
|
|
122
|
+
* Find the mapper root and its dialect. Two shapes are recognized:
|
|
123
|
+
* - MyBatis 3: `<mapper namespace="com.foo.Bar">` — namespace required.
|
|
124
|
+
* - iBatis 2: `<sqlMap namespace="Account">`, or a namespace-less
|
|
125
|
+
* `<sqlMap>` whose statement ids carry the qualifier as `Map.statement`.
|
|
126
|
+
* Returns the namespace, the dialect, and the byte offsets of the body
|
|
127
|
+
* (between the opening and closing tag) so statement extraction is scoped to
|
|
128
|
+
* the root's contents. Either quote style is accepted for the namespace
|
|
129
|
+
* (`namespace='X'` is legal XML and common in older mappers).
|
|
88
130
|
*/
|
|
89
131
|
findMapperRoot() {
|
|
90
|
-
const
|
|
91
|
-
if (
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
132
|
+
const mapper = /<mapper\b([^>]*)>/.exec(this.source);
|
|
133
|
+
if (mapper) {
|
|
134
|
+
const nsMatch = /\bnamespace\s*=\s*(["'])([^"']+)\1/.exec(mapper[1] ?? '');
|
|
135
|
+
if (nsMatch) {
|
|
136
|
+
const bodyStart = mapper.index + mapper[0].length;
|
|
137
|
+
const closeIdx = this.source.indexOf('</mapper>', bodyStart);
|
|
138
|
+
return {
|
|
139
|
+
namespace: nsMatch[2],
|
|
140
|
+
dialect: 'mybatis',
|
|
141
|
+
bodyStart,
|
|
142
|
+
bodyEnd: closeIdx >= 0 ? closeIdx : this.source.length,
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
// iBatis 2 SqlMap. `\b` keeps `<sqlMapConfig>` (the iBatis config root,
|
|
147
|
+
// which holds no statements) from matching here. namespace is optional.
|
|
148
|
+
const sqlMap = /<sqlMap\b([^>]*)>/.exec(this.source);
|
|
149
|
+
if (sqlMap) {
|
|
150
|
+
const nsMatch = /\bnamespace\s*=\s*(["'])([^"']+)\1/.exec(sqlMap[1] ?? '');
|
|
151
|
+
const bodyStart = sqlMap.index + sqlMap[0].length;
|
|
152
|
+
const closeIdx = this.source.indexOf('</sqlMap>', bodyStart);
|
|
153
|
+
return {
|
|
154
|
+
namespace: nsMatch?.[2] ?? '',
|
|
155
|
+
dialect: 'ibatis',
|
|
156
|
+
bodyStart,
|
|
157
|
+
bodyEnd: closeIdx >= 0 ? closeIdx : this.source.length,
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
return null;
|
|
101
161
|
}
|
|
102
|
-
extractMapper(fileNodeId, namespace, bodyStart, bodyEnd) {
|
|
162
|
+
extractMapper(fileNodeId, namespace, dialect, bodyStart, bodyEnd) {
|
|
103
163
|
const body = this.source.slice(bodyStart, bodyEnd);
|
|
104
164
|
// Match each top-level statement-shaped element. The body may have nested
|
|
105
165
|
// tags (`<if>`, `<foreach>`, `<include>`), so we scan with a regex that
|
|
106
166
|
// pairs an opening tag to its matching close — the simple form below works
|
|
107
|
-
// because MyBatis statement elements are not themselves nested.
|
|
108
|
-
|
|
167
|
+
// because MyBatis/iBatis statement elements are not themselves nested.
|
|
168
|
+
// iBatis 2 adds the generic `<statement>` and `<procedure>` on top of the
|
|
169
|
+
// MyBatis 3 verbs; gating by dialect keeps MyBatis extraction unchanged.
|
|
170
|
+
const verbs = dialect === 'ibatis'
|
|
171
|
+
? 'select|insert|update|delete|sql|statement|procedure'
|
|
172
|
+
: 'select|insert|update|delete|sql';
|
|
173
|
+
const stmtRegex = new RegExp(`<(${verbs})\\b([^>]*)>([\\s\\S]*?)</\\1>`, 'g');
|
|
109
174
|
let m;
|
|
110
175
|
while ((m = stmtRegex.exec(body)) !== null) {
|
|
111
176
|
const elemType = m[1];
|
|
112
177
|
const attrs = m[2] ?? '';
|
|
113
178
|
const elemBody = m[3] ?? '';
|
|
114
|
-
|
|
179
|
+
// Accept either quote style (`(["'])…\1`). The identifier-shaped MyBatis
|
|
180
|
+
// attributes matched here and below (namespace/id/refid/resultType/
|
|
181
|
+
// parameterType) are Java FQNs, method names, or type aliases and never
|
|
182
|
+
// contain a quote character, so excluding both quotes from the value is safe.
|
|
183
|
+
const idMatch = /\bid\s*=\s*(["'])([^"']+)\1/.exec(attrs);
|
|
115
184
|
if (!idMatch)
|
|
116
185
|
continue;
|
|
117
|
-
const id = idMatch[
|
|
186
|
+
const id = idMatch[2];
|
|
118
187
|
const absoluteIndex = bodyStart + m.index;
|
|
119
188
|
const startLine = this.getLineNumber(absoluteIndex);
|
|
120
189
|
const endLine = this.getLineNumber(absoluteIndex + m[0].length);
|
|
121
|
-
const qualified =
|
|
190
|
+
const { qualifiedName: qualified, name } = this.qualifyStatement(namespace, id);
|
|
122
191
|
const isSqlFragment = elemType === 'sql';
|
|
123
|
-
|
|
192
|
+
// The id-hash folds in the statement's byte offset (unique per statement
|
|
193
|
+
// in the file), not just the start line: two statements sharing a
|
|
194
|
+
// qualifiedName AND a start line — e.g. a vendor-split `databaseId` pair
|
|
195
|
+
// (`<select id="x" databaseId="oracle">…</select><select id="x"
|
|
196
|
+
// databaseId="mysql">…`) written on one line — would otherwise hash to
|
|
197
|
+
// the same node id, and `INSERT OR REPLACE INTO nodes` (id is the PRIMARY
|
|
198
|
+
// KEY) would silently drop one. qualifiedName and startLine are stored
|
|
199
|
+
// unchanged, so the Java↔XML suffix-match bridge is untouched.
|
|
200
|
+
const nodeId = (0, tree_sitter_helpers_1.generateNodeId)(this.filePath, 'method', qualified, absoluteIndex);
|
|
124
201
|
const node = {
|
|
125
202
|
id: nodeId,
|
|
126
203
|
kind: 'method',
|
|
127
|
-
name
|
|
204
|
+
name,
|
|
128
205
|
qualifiedName: qualified,
|
|
129
206
|
filePath: this.filePath,
|
|
130
207
|
language: 'xml',
|
|
@@ -140,11 +217,15 @@ class MyBatisExtractor {
|
|
|
140
217
|
this.edges.push({ source: fileNodeId, target: nodeId, kind: 'contains' });
|
|
141
218
|
// <include refid="X"/> → reference to the SQL fragment in this mapper
|
|
142
219
|
// (or in another mapper, when the refid is qualified — `ns.X`).
|
|
143
|
-
const includeRegex = /<include\b[^>]*\brefid\s*=\s*"([^"]+)
|
|
220
|
+
const includeRegex = /<include\b[^>]*\brefid\s*=\s*(["'])([^"']+)\1/g;
|
|
144
221
|
let inc;
|
|
145
222
|
while ((inc = includeRegex.exec(elemBody)) !== null) {
|
|
146
|
-
const refid = inc[
|
|
147
|
-
const refQualified = refid.includes('.')
|
|
223
|
+
const refid = inc[2];
|
|
224
|
+
const refQualified = refid.includes('.')
|
|
225
|
+
? refid.replace(/\./g, '::')
|
|
226
|
+
: namespace
|
|
227
|
+
? `${namespace}::${refid}`
|
|
228
|
+
: refid;
|
|
148
229
|
const includeOffset = absoluteIndex + (m[0].length - m[3].length - `</${elemType}>`.length) + inc.index;
|
|
149
230
|
const line = this.getLineNumber(includeOffset);
|
|
150
231
|
this.unresolvedReferences.push({
|
|
@@ -161,15 +242,36 @@ class MyBatisExtractor {
|
|
|
161
242
|
if (isSqlFragment)
|
|
162
243
|
return '<sql>';
|
|
163
244
|
const verb = elemType.toUpperCase();
|
|
164
|
-
const result = /\bresultType\s*=\s*"([^"]+)
|
|
165
|
-
const param = /\bparameterType\s*=\s*"([^"]+)
|
|
245
|
+
const result = /\bresultType\s*=\s*(["'])([^"']+)\1/.exec(attrs)?.[2];
|
|
246
|
+
const param = /\bparameterType\s*=\s*(["'])([^"']+)\1/.exec(attrs)?.[2];
|
|
247
|
+
// A vendor-split statement carries `databaseId`; surface it so the two
|
|
248
|
+
// otherwise-identical `<namespace>::<id>` nodes are distinguishable.
|
|
249
|
+
const dbId = /\bdatabaseId\s*=\s*(["'])([^"']+)\1/.exec(attrs)?.[2];
|
|
166
250
|
const parts = [verb];
|
|
167
251
|
if (param)
|
|
168
252
|
parts.push(`param=${param}`);
|
|
169
253
|
if (result)
|
|
170
254
|
parts.push(`result=${result}`);
|
|
255
|
+
if (dbId)
|
|
256
|
+
parts.push(`databaseId=${dbId}`);
|
|
171
257
|
return parts.join(' ');
|
|
172
258
|
}
|
|
259
|
+
/**
|
|
260
|
+
* Build the `<namespace>::<id>` qualified name the MyBatis synthesizer
|
|
261
|
+
* suffix-matches against a Java `<Class>::<method>`, and the display name.
|
|
262
|
+
* For a namespace-less iBatis `<sqlMap>`, the statement id carries the
|
|
263
|
+
* qualifier as `Map.statement`, so split on the last dot to reach the same
|
|
264
|
+
* shape (`Account.getById` → `Account::getById`, name `getById`).
|
|
265
|
+
*/
|
|
266
|
+
qualifyStatement(namespace, id) {
|
|
267
|
+
if (namespace)
|
|
268
|
+
return { qualifiedName: `${namespace}::${id}`, name: id };
|
|
269
|
+
const dot = id.lastIndexOf('.');
|
|
270
|
+
if (dot >= 0) {
|
|
271
|
+
return { qualifiedName: `${id.slice(0, dot)}::${id.slice(dot + 1)}`, name: id.slice(dot + 1) };
|
|
272
|
+
}
|
|
273
|
+
return { qualifiedName: id, name: id };
|
|
274
|
+
}
|
|
173
275
|
previewSql(body) {
|
|
174
276
|
return body.replace(/<[^>]+>/g, ' ').replace(/\s+/g, ' ').trim().slice(0, 200);
|
|
175
277
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mybatis-extractor.js","sourceRoot":"","sources":["../../src/extraction/mybatis-extractor.ts"],"names":[],"mappings":";;;AACA,+DAAuD;AAEvD
|
|
1
|
+
{"version":3,"file":"mybatis-extractor.js","sourceRoot":"","sources":["../../src/extraction/mybatis-extractor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tree-sitter-helpers.d.ts","sourceRoot":"","sources":["../../src/extraction/tree-sitter-helpers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,IAAI,IAAI,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAErD,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpC;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,QAAQ,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACX,MAAM,CAOR;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAEpE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAEtF;
|
|
1
|
+
{"version":3,"file":"tree-sitter-helpers.d.ts","sourceRoot":"","sources":["../../src/extraction/tree-sitter-helpers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,IAAI,IAAI,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAErD,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEpC;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,QAAQ,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACX,MAAM,CAOR;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAEpE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAEtF;AAgDD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAgC1F"}
|
|
@@ -114,6 +114,7 @@ function cleanCommentMarkers(comment) {
|
|
|
114
114
|
.replace(/^\/\/[/!]?\s?/gm, '') // // , and Rust/Swift doc lines /// //!
|
|
115
115
|
.replace(/^--\s?/gm, '') // Lua/Luau line comments
|
|
116
116
|
.replace(/^#\s?/gm, '') // Python/Ruby/shell line comments
|
|
117
|
+
.replace(/^%+\s?/gm, '') // Erlang line comments (% / %% / %%%)
|
|
117
118
|
.replace(/^\s*\*\s?/gm, '') // block-comment continuation (* foo)
|
|
118
119
|
.trim();
|
|
119
120
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tree-sitter-helpers.js","sourceRoot":"","sources":["../../src/extraction/tree-sitter-helpers.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYH,wCAYC;AAKD,kCAEC;AAKD,0CAEC;
|
|
1
|
+
{"version":3,"file":"tree-sitter-helpers.js","sourceRoot":"","sources":["../../src/extraction/tree-sitter-helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -76,8 +76,10 @@ export interface LanguageExtractor {
|
|
|
76
76
|
* grammar mis-parses inside enum bodies). MUST preserve byte offsets (replace
|
|
77
77
|
* removed text with spaces, keep newlines) so node positions and getNodeText
|
|
78
78
|
* stay correct; the returned string is used for both parsing and extraction.
|
|
79
|
+
* `filePath` lets a transform key off the concrete file extension when one
|
|
80
|
+
* language id serves several dialects (C++ also parses `.metal` shaders).
|
|
79
81
|
*/
|
|
80
|
-
preParse?: (source: string) => string;
|
|
82
|
+
preParse?: (source: string, filePath?: string) => string;
|
|
81
83
|
/** Node types that represent functions */
|
|
82
84
|
functionTypes: string[];
|
|
83
85
|
/** Node types that represent classes */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tree-sitter-types.d.ts","sourceRoot":"","sources":["../../src/extraction/tree-sitter-types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,IAAI,IAAI,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EACL,IAAI,EACJ,QAAQ,EACR,mBAAmB,EACpB,MAAM,UAAU,CAAC;AAElB;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,6CAA6C;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB,6CAA6C;IAC7C,SAAS,EAAE,MAAM,CAAC;IAClB,qEAAqE;IACrE,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,oBAAoB;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,0CAA0C;IAC1C,IAAI,EAAE,QAAQ,CAAC;IACf,gCAAgC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qFAAqF;IACrF,kBAAkB,CAAC,EAAE,UAAU,CAAC;IAChC,iFAAiF;IACjF,YAAY,CAAC,EAAE,UAAU,CAAC;CAC3B;AAED;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,wDAAwD;IACxD,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;IAC/F,2EAA2E;IAC3E,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,CAAC;IAClC,6CAA6C;IAC7C,iBAAiB,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9D,kCAAkC;IAClC,sBAAsB,CAAC,GAAG,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACvD,oFAAoF;IACpF,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,gDAAgD;IAChD,QAAQ,IAAI,IAAI,CAAC;IACjB,wBAAwB;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,0BAA0B;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,+CAA+C;IAC/C,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,iCAAiC;IACjC,QAAQ,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,CAAC;CACjC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,iBAAiB;IAChC
|
|
1
|
+
{"version":3,"file":"tree-sitter-types.d.ts","sourceRoot":"","sources":["../../src/extraction/tree-sitter-types.ts"],"names":[],"mappings":"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"}
|