gitnexus 1.6.2-rc.15 → 1.6.2-rc.17

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.
Files changed (62) hide show
  1. package/dist/_shared/lbug/schema-constants.d.ts +1 -1
  2. package/dist/_shared/lbug/schema-constants.d.ts.map +1 -1
  3. package/dist/_shared/lbug/schema-constants.js +1 -0
  4. package/dist/_shared/lbug/schema-constants.js.map +1 -1
  5. package/dist/core/ingestion/call-processor.d.ts +1 -3
  6. package/dist/core/ingestion/call-processor.js +1 -2
  7. package/dist/core/ingestion/field-types.d.ts +1 -1
  8. package/dist/core/ingestion/language-provider.d.ts +5 -0
  9. package/dist/core/ingestion/languages/c-cpp.js +4 -0
  10. package/dist/core/ingestion/languages/csharp.js +3 -0
  11. package/dist/core/ingestion/languages/dart.js +3 -0
  12. package/dist/core/ingestion/languages/go.js +3 -0
  13. package/dist/core/ingestion/languages/java.js +3 -0
  14. package/dist/core/ingestion/languages/kotlin.js +3 -0
  15. package/dist/core/ingestion/languages/php.js +3 -0
  16. package/dist/core/ingestion/languages/python.js +3 -0
  17. package/dist/core/ingestion/languages/ruby.js +3 -0
  18. package/dist/core/ingestion/languages/rust.js +3 -0
  19. package/dist/core/ingestion/languages/swift.js +3 -0
  20. package/dist/core/ingestion/languages/typescript.js +4 -0
  21. package/dist/core/ingestion/languages/vue.js +3 -0
  22. package/dist/core/ingestion/model/index.d.ts +2 -2
  23. package/dist/core/ingestion/model/index.js +1 -1
  24. package/dist/core/ingestion/model/resolve.d.ts +3 -0
  25. package/dist/core/ingestion/model/resolve.js +6 -2
  26. package/dist/core/ingestion/parsing-processor.d.ts +1 -2
  27. package/dist/core/ingestion/tree-sitter-queries.d.ts +11 -11
  28. package/dist/core/ingestion/tree-sitter-queries.js +81 -0
  29. package/dist/core/ingestion/type-env.d.ts +1 -1
  30. package/dist/core/ingestion/utils/ast-helpers.d.ts +1 -1
  31. package/dist/core/ingestion/utils/ast-helpers.js +3 -0
  32. package/dist/core/ingestion/variable-extractors/configs/c-cpp.d.ts +3 -0
  33. package/dist/core/ingestion/variable-extractors/configs/c-cpp.js +81 -0
  34. package/dist/core/ingestion/variable-extractors/configs/csharp.d.ts +9 -0
  35. package/dist/core/ingestion/variable-extractors/configs/csharp.js +63 -0
  36. package/dist/core/ingestion/variable-extractors/configs/dart.d.ts +2 -0
  37. package/dist/core/ingestion/variable-extractors/configs/dart.js +94 -0
  38. package/dist/core/ingestion/variable-extractors/configs/go.d.ts +2 -0
  39. package/dist/core/ingestion/variable-extractors/configs/go.js +83 -0
  40. package/dist/core/ingestion/variable-extractors/configs/jvm.d.ts +18 -0
  41. package/dist/core/ingestion/variable-extractors/configs/jvm.js +115 -0
  42. package/dist/core/ingestion/variable-extractors/configs/php.d.ts +14 -0
  43. package/dist/core/ingestion/variable-extractors/configs/php.js +58 -0
  44. package/dist/core/ingestion/variable-extractors/configs/python.d.ts +2 -0
  45. package/dist/core/ingestion/variable-extractors/configs/python.js +101 -0
  46. package/dist/core/ingestion/variable-extractors/configs/ruby.d.ts +11 -0
  47. package/dist/core/ingestion/variable-extractors/configs/ruby.js +52 -0
  48. package/dist/core/ingestion/variable-extractors/configs/rust.d.ts +2 -0
  49. package/dist/core/ingestion/variable-extractors/configs/rust.js +76 -0
  50. package/dist/core/ingestion/variable-extractors/configs/swift.d.ts +2 -0
  51. package/dist/core/ingestion/variable-extractors/configs/swift.js +88 -0
  52. package/dist/core/ingestion/variable-extractors/configs/typescript-javascript.d.ts +3 -0
  53. package/dist/core/ingestion/variable-extractors/configs/typescript-javascript.js +83 -0
  54. package/dist/core/ingestion/variable-extractors/generic.d.ts +5 -0
  55. package/dist/core/ingestion/variable-extractors/generic.js +80 -0
  56. package/dist/core/ingestion/variable-types.d.ts +82 -0
  57. package/dist/core/ingestion/variable-types.js +2 -0
  58. package/dist/core/ingestion/workers/parse-worker.js +34 -0
  59. package/dist/core/lbug/csv-generator.js +1 -0
  60. package/dist/core/lbug/schema.d.ts +2 -1
  61. package/dist/core/lbug/schema.js +5 -0
  62. package/package.json +1 -1
@@ -7,7 +7,7 @@
7
7
  * Full DDL schemas remain in each package's own schema.ts because
8
8
  * the CLI uses native LadybugDB and the web uses WASM.
9
9
  */
10
- export declare const NODE_TABLES: readonly ["File", "Folder", "Function", "Class", "Interface", "Method", "CodeElement", "Community", "Process", "Section", "Struct", "Enum", "Macro", "Typedef", "Union", "Namespace", "Trait", "Impl", "TypeAlias", "Const", "Static", "Property", "Record", "Delegate", "Annotation", "Constructor", "Template", "Module", "Route", "Tool"];
10
+ export declare const NODE_TABLES: readonly ["File", "Folder", "Function", "Class", "Interface", "Method", "CodeElement", "Community", "Process", "Section", "Struct", "Enum", "Macro", "Typedef", "Union", "Namespace", "Trait", "Impl", "TypeAlias", "Const", "Static", "Variable", "Property", "Record", "Delegate", "Annotation", "Constructor", "Template", "Module", "Route", "Tool"];
11
11
  export type NodeTableName = (typeof NODE_TABLES)[number];
12
12
  export declare const REL_TABLE_NAME = "CodeRelation";
13
13
  export declare const REL_TYPES: readonly ["CONTAINS", "DEFINES", "IMPORTS", "CALLS", "EXTENDS", "IMPLEMENTS", "HAS_METHOD", "HAS_PROPERTY", "ACCESSES", "METHOD_OVERRIDES", "OVERRIDES", "METHOD_IMPLEMENTS", "MEMBER_OF", "STEP_IN_PROCESS", "HANDLES_ROUTE", "FETCHES", "HANDLES_TOOL", "ENTRY_POINT_OF", "WRAPS", "QUERIES"];
@@ -1 +1 @@
1
- {"version":3,"file":"schema-constants.d.ts","sourceRoot":"","sources":["../../src/lbug/schema-constants.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,eAAO,MAAM,WAAW,8UA+Bd,CAAC;AAEX,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD,eAAO,MAAM,cAAc,iBAAiB,CAAC;AAE7C,eAAO,MAAM,SAAS,iSAqBZ,CAAC;AAEX,MAAM,MAAM,OAAO,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC;AAEjD,eAAO,MAAM,oBAAoB,kBAAkB,CAAC"}
1
+ {"version":3,"file":"schema-constants.d.ts","sourceRoot":"","sources":["../../src/lbug/schema-constants.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,eAAO,MAAM,WAAW,0VAgCd,CAAC;AAEX,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD,eAAO,MAAM,cAAc,iBAAiB,CAAC;AAE7C,eAAO,MAAM,SAAS,iSAqBZ,CAAC;AAEX,MAAM,MAAM,OAAO,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC;AAEjD,eAAO,MAAM,oBAAoB,kBAAkB,CAAC"}
@@ -29,6 +29,7 @@ export const NODE_TABLES = [
29
29
  'TypeAlias',
30
30
  'Const',
31
31
  'Static',
32
+ 'Variable',
32
33
  'Property',
33
34
  'Record',
34
35
  'Delegate',
@@ -1 +1 @@
1
- {"version":3,"file":"schema-constants.js","sourceRoot":"","sources":["../../src/lbug/schema-constants.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,MAAM;IACN,QAAQ;IACR,UAAU;IACV,OAAO;IACP,WAAW;IACX,QAAQ;IACR,aAAa;IACb,WAAW;IACX,SAAS;IACT,SAAS;IACT,QAAQ;IACR,MAAM;IACN,OAAO;IACP,SAAS;IACT,OAAO;IACP,WAAW;IACX,OAAO;IACP,MAAM;IACN,WAAW;IACX,OAAO;IACP,QAAQ;IACR,UAAU;IACV,QAAQ;IACR,UAAU;IACV,YAAY;IACZ,aAAa;IACb,UAAU;IACV,QAAQ;IACR,OAAO;IACP,MAAM;CACE,CAAC;AAIX,MAAM,CAAC,MAAM,cAAc,GAAG,cAAc,CAAC;AAE7C,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,UAAU;IACV,SAAS;IACT,SAAS;IACT,OAAO;IACP,SAAS;IACT,YAAY;IACZ,YAAY;IACZ,cAAc;IACd,UAAU;IACV,kBAAkB;IAClB,WAAW,EAAE,mEAAmE;IAChF,mBAAmB;IACnB,WAAW;IACX,iBAAiB;IACjB,eAAe;IACf,SAAS;IACT,cAAc;IACd,gBAAgB;IAChB,OAAO;IACP,SAAS;CACD,CAAC;AAIX,MAAM,CAAC,MAAM,oBAAoB,GAAG,eAAe,CAAC"}
1
+ {"version":3,"file":"schema-constants.js","sourceRoot":"","sources":["../../src/lbug/schema-constants.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,MAAM;IACN,QAAQ;IACR,UAAU;IACV,OAAO;IACP,WAAW;IACX,QAAQ;IACR,aAAa;IACb,WAAW;IACX,SAAS;IACT,SAAS;IACT,QAAQ;IACR,MAAM;IACN,OAAO;IACP,SAAS;IACT,OAAO;IACP,WAAW;IACX,OAAO;IACP,MAAM;IACN,WAAW;IACX,OAAO;IACP,QAAQ;IACR,UAAU;IACV,UAAU;IACV,QAAQ;IACR,UAAU;IACV,YAAY;IACZ,aAAa;IACb,UAAU;IACV,QAAQ;IACR,OAAO;IACP,MAAM;CACE,CAAC;AAIX,MAAM,CAAC,MAAM,cAAc,GAAG,cAAc,CAAC;AAE7C,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,UAAU;IACV,SAAS;IACT,SAAS;IACT,OAAO;IACP,SAAS;IACT,YAAY;IACZ,YAAY;IACZ,cAAc;IACd,UAAU;IACV,kBAAkB;IAClB,WAAW,EAAE,mEAAmE;IAChF,mBAAmB;IACnB,WAAW;IACX,iBAAiB;IACjB,eAAe;IACf,SAAS;IACT,cAAc;IACd,gBAAgB;IAChB,OAAO;IACP,SAAS;CACD,CAAC;AAIX,MAAM,CAAC,MAAM,oBAAoB,GAAG,eAAe,CAAC"}
@@ -1,13 +1,11 @@
1
1
  import { KnowledgeGraph } from '../graph/types.js';
2
2
  import { ASTCache } from './ast-cache.js';
3
- import type { SymbolDefinition, SymbolTableReader } from './model/symbol-table.js';
3
+ import type { SymbolDefinition, SymbolTableReader, HeritageMap, ExtractedHeritage } from './model/index.js';
4
4
  import type { ResolutionContext } from './model/resolution-context.js';
5
5
  import type { TieredCandidates } from './model/resolution-context.js';
6
6
  import type { TypeEnvironment } from './type-env.js';
7
- import type { HeritageMap } from './model/heritage-map.js';
8
7
  import type { BindingAccumulator } from './binding-accumulator.js';
9
8
  import type { ExtractedCall, ExtractedAssignment, ExtractedRoute, ExtractedFetchCall, FileConstructorBindings } from './workers/parse-worker.js';
10
- import type { ExtractedHeritage } from './model/heritage-map.js';
11
9
  import type { LiteralTypeInferrer } from './type-extractors/types.js';
12
10
  import type { SyntaxNode } from './utils/ast-helpers.js';
13
11
  /** Per-file resolved type bindings for exported symbols.
@@ -1,4 +1,4 @@
1
- import { CLASS_TYPES, CALL_TARGET_TYPES } from './model/symbol-table.js';
1
+ import { CLASS_TYPES, CALL_TARGET_TYPES, lookupMethodByOwnerWithMRO } from './model/index.js';
2
2
  import Parser from 'tree-sitter';
3
3
  import { TIER_CONFIDENCE } from './model/resolution-context.js';
4
4
  import { isLanguageAvailable, loadParser, loadLanguage } from '../tree-sitter/parser-loader.js';
@@ -15,7 +15,6 @@ import { getTreeSitterBufferSize } from './constants.js';
15
15
  import { normalizeFetchURL, routeMatches } from './route-extractors/nextjs.js';
16
16
  import { extractTemplateComponents } from './vue-sfc-extractor.js';
17
17
  import { extractReturnTypeName, stripNullable } from './type-extractors/shared.js';
18
- import { lookupMethodByOwnerWithMRO } from './model/resolve.js';
19
18
  /**
20
19
  * Type labels treated as class-like **method-dispatch receivers** by the call
21
20
  * resolver — the set walked by the MRO / heritage path for member and static
@@ -1,5 +1,5 @@
1
1
  import type { TypeEnvironment } from './type-env.js';
2
- import type { SymbolTableReader } from './model/symbol-table.js';
2
+ import type { SymbolTableReader } from './model/index.js';
3
3
  import { SupportedLanguages } from '../../_shared/index.js';
4
4
  /**
5
5
  * Visibility levels used across all supported languages.
@@ -16,6 +16,7 @@ import type { ClassExtractor } from './class-types.js';
16
16
  import type { ExportChecker } from './export-detection.js';
17
17
  import type { FieldExtractor } from './field-extractor.js';
18
18
  import type { MethodExtractor } from './method-types.js';
19
+ import type { VariableExtractor } from './variable-types.js';
19
20
  import type { ImportResolverFn } from './import-resolvers/types.js';
20
21
  import type { NamedBindingExtractorFn } from './named-bindings/types.js';
21
22
  import type { SyntaxNode } from './utils/ast-helpers.js';
@@ -134,6 +135,10 @@ interface LanguageProviderConfig {
134
135
  * declarations. Produces MethodInfo[] with name, parameters, visibility, isAbstract,
135
136
  * isFinal, annotations metadata. Default: undefined (no method extraction). */
136
137
  readonly methodExtractor?: MethodExtractor;
138
+ /** Variable extractor for extracting metadata from module/file-scoped variable,
139
+ * constant, and static declarations. Produces VariableInfo with type, visibility,
140
+ * isConst, isStatic, isMutable metadata. Default: undefined (no variable extraction). */
141
+ readonly variableExtractor?: VariableExtractor;
137
142
  /** Class/type extractor for deriving canonical qualified names for class-like symbols.
138
143
  * Uses the same provider-driven strategy pattern as method/field extraction so
139
144
  * namespace/package/module rules stay language-specific. */
@@ -30,6 +30,8 @@ import { createFieldExtractor } from '../field-extractors/generic.js';
30
30
  import { cConfig as cFieldConfig, cppConfig as cppFieldConfig, } from '../field-extractors/configs/c-cpp.js';
31
31
  import { createMethodExtractor } from '../method-extractors/generic.js';
32
32
  import { cMethodConfig, cppMethodConfig } from '../method-extractors/configs/c-cpp.js';
33
+ import { createVariableExtractor } from '../variable-extractors/generic.js';
34
+ import { cVariableConfig, cppVariableConfig } from '../variable-extractors/configs/c-cpp.js';
33
35
  import { createCallExtractor } from '../call-extractors/generic.js';
34
36
  import { cCallConfig, cppCallConfig } from '../call-extractors/configs/c-cpp.js';
35
37
  const C_BUILT_INS = new Set([
@@ -296,6 +298,7 @@ export const cProvider = defineLanguage({
296
298
  ...cMethodConfig,
297
299
  extractFunctionName: cCppExtractFunctionName,
298
300
  }),
301
+ variableExtractor: createVariableExtractor(cVariableConfig),
299
302
  classExtractor: cClassExtractor,
300
303
  labelOverride: cppLabelOverride,
301
304
  builtInNames: C_BUILT_INS,
@@ -315,6 +318,7 @@ export const cppProvider = defineLanguage({
315
318
  ...cppMethodConfig,
316
319
  extractFunctionName: cCppExtractFunctionName,
317
320
  }),
321
+ variableExtractor: createVariableExtractor(cppVariableConfig),
318
322
  classExtractor: cppClassExtractor,
319
323
  labelOverride: cppLabelOverride,
320
324
  builtInNames: C_BUILT_INS,
@@ -20,6 +20,8 @@ import { createFieldExtractor } from '../field-extractors/generic.js';
20
20
  import { csharpConfig as csharpFieldConfig } from '../field-extractors/configs/csharp.js';
21
21
  import { createMethodExtractor } from '../method-extractors/generic.js';
22
22
  import { csharpMethodConfig } from '../method-extractors/configs/csharp.js';
23
+ import { createVariableExtractor } from '../variable-extractors/generic.js';
24
+ import { csharpVariableConfig } from '../variable-extractors/configs/csharp.js';
23
25
  const BUILT_INS = new Set([
24
26
  'Console',
25
27
  'WriteLine',
@@ -127,6 +129,7 @@ export const csharpProvider = defineLanguage({
127
129
  callExtractor: createCallExtractor(csharpCallConfig),
128
130
  fieldExtractor: createFieldExtractor(csharpFieldConfig),
129
131
  methodExtractor: createMethodExtractor(csharpMethodConfig),
132
+ variableExtractor: createVariableExtractor(csharpVariableConfig),
130
133
  classExtractor: createClassExtractor(csharpClassConfig),
131
134
  builtInNames: BUILT_INS,
132
135
  });
@@ -22,6 +22,8 @@ import { createFieldExtractor } from '../field-extractors/generic.js';
22
22
  import { dartConfig as dartFieldConfig } from '../field-extractors/configs/dart.js';
23
23
  import { createMethodExtractor } from '../method-extractors/generic.js';
24
24
  import { dartMethodConfig } from '../method-extractors/configs/dart.js';
25
+ import { createVariableExtractor } from '../variable-extractors/generic.js';
26
+ import { dartVariableConfig } from '../variable-extractors/configs/dart.js';
25
27
  import { createCallExtractor } from '../call-extractors/generic.js';
26
28
  import { dartCallConfig } from '../call-extractors/configs/dart.js';
27
29
  /**
@@ -90,6 +92,7 @@ export const dartProvider = defineLanguage({
90
92
  callExtractor: createCallExtractor(dartCallConfig),
91
93
  fieldExtractor: createFieldExtractor(dartFieldConfig),
92
94
  methodExtractor: createMethodExtractor(dartMethodConfig),
95
+ variableExtractor: createVariableExtractor(dartVariableConfig),
93
96
  classExtractor: createClassExtractor(dartClassConfig),
94
97
  enclosingFunctionFinder: dartEnclosingFunctionFinder,
95
98
  builtInNames: BUILT_INS,
@@ -20,6 +20,8 @@ import { createFieldExtractor } from '../field-extractors/generic.js';
20
20
  import { goConfig as goFieldConfig } from '../field-extractors/configs/go.js';
21
21
  import { createMethodExtractor } from '../method-extractors/generic.js';
22
22
  import { goMethodConfig } from '../method-extractors/configs/go.js';
23
+ import { createVariableExtractor } from '../variable-extractors/generic.js';
24
+ import { goVariableConfig } from '../variable-extractors/configs/go.js';
23
25
  import { createCallExtractor } from '../call-extractors/generic.js';
24
26
  import { goCallConfig } from '../call-extractors/configs/go.js';
25
27
  export const goProvider = defineLanguage({
@@ -33,5 +35,6 @@ export const goProvider = defineLanguage({
33
35
  callExtractor: createCallExtractor(goCallConfig),
34
36
  fieldExtractor: createFieldExtractor(goFieldConfig),
35
37
  methodExtractor: createMethodExtractor(goMethodConfig),
38
+ variableExtractor: createVariableExtractor(goVariableConfig),
36
39
  classExtractor: createClassExtractor(goClassConfig),
37
40
  });
@@ -21,6 +21,8 @@ import { createFieldExtractor } from '../field-extractors/generic.js';
21
21
  import { javaConfig } from '../field-extractors/configs/jvm.js';
22
22
  import { createMethodExtractor } from '../method-extractors/generic.js';
23
23
  import { javaMethodConfig } from '../method-extractors/configs/jvm.js';
24
+ import { createVariableExtractor } from '../variable-extractors/generic.js';
25
+ import { javaVariableConfig } from '../variable-extractors/configs/jvm.js';
24
26
  export const javaProvider = defineLanguage({
25
27
  id: SupportedLanguages.Java,
26
28
  extensions: ['.java'],
@@ -34,5 +36,6 @@ export const javaProvider = defineLanguage({
34
36
  callExtractor: createCallExtractor(javaCallConfig),
35
37
  fieldExtractor: createFieldExtractor(javaConfig),
36
38
  methodExtractor: createMethodExtractor(javaMethodConfig),
39
+ variableExtractor: createVariableExtractor(javaVariableConfig),
37
40
  classExtractor: createClassExtractor(javaClassConfig),
38
41
  });
@@ -22,6 +22,8 @@ import { createFieldExtractor } from '../field-extractors/generic.js';
22
22
  import { kotlinConfig } from '../field-extractors/configs/jvm.js';
23
23
  import { createMethodExtractor } from '../method-extractors/generic.js';
24
24
  import { kotlinMethodConfig } from '../method-extractors/configs/jvm.js';
25
+ import { createVariableExtractor } from '../variable-extractors/generic.js';
26
+ import { kotlinVariableConfig } from '../variable-extractors/configs/jvm.js';
25
27
  /** Check if a Kotlin function_declaration capture is inside a class_body (i.e., a method).
26
28
  * Kotlin grammar uses function_declaration for both top-level functions and class methods.
27
29
  * Returns true when the captured definition node has a class_body ancestor. */
@@ -105,6 +107,7 @@ export const kotlinProvider = defineLanguage({
105
107
  callExtractor: createCallExtractor(kotlinCallConfig),
106
108
  fieldExtractor: createFieldExtractor(kotlinConfig),
107
109
  methodExtractor: createMethodExtractor(kotlinMethodConfig),
110
+ variableExtractor: createVariableExtractor(kotlinVariableConfig),
108
111
  classExtractor: createClassExtractor(kotlinClassConfig),
109
112
  builtInNames: BUILT_INS,
110
113
  labelOverride: (functionNode, defaultLabel) => {
@@ -19,6 +19,8 @@ import { createFieldExtractor } from '../field-extractors/generic.js';
19
19
  import { phpConfig as phpFieldConfig } from '../field-extractors/configs/php.js';
20
20
  import { createMethodExtractor } from '../method-extractors/generic.js';
21
21
  import { phpMethodConfig } from '../method-extractors/configs/php.js';
22
+ import { createVariableExtractor } from '../variable-extractors/generic.js';
23
+ import { phpVariableConfig } from '../variable-extractors/configs/php.js';
22
24
  import { createCallExtractor } from '../call-extractors/generic.js';
23
25
  import { phpCallConfig } from '../call-extractors/configs/php.js';
24
26
  const BUILT_INS = new Set([
@@ -227,6 +229,7 @@ export const phpProvider = defineLanguage({
227
229
  callExtractor: createCallExtractor(phpCallConfig),
228
230
  fieldExtractor: createFieldExtractor(phpFieldConfig),
229
231
  methodExtractor: createMethodExtractor(phpMethodConfig),
232
+ variableExtractor: createVariableExtractor(phpVariableConfig),
230
233
  classExtractor: createClassExtractor(phpClassConfig),
231
234
  descriptionExtractor: phpDescriptionExtractor,
232
235
  isRouteFile: isPhpRouteFile,
@@ -22,6 +22,8 @@ import { createFieldExtractor } from '../field-extractors/generic.js';
22
22
  import { pythonConfig as pythonFieldConfig } from '../field-extractors/configs/python.js';
23
23
  import { createMethodExtractor } from '../method-extractors/generic.js';
24
24
  import { pythonMethodConfig } from '../method-extractors/configs/python.js';
25
+ import { createVariableExtractor } from '../variable-extractors/generic.js';
26
+ import { pythonVariableConfig } from '../variable-extractors/configs/python.js';
25
27
  import { createCallExtractor } from '../call-extractors/generic.js';
26
28
  import { pythonCallConfig } from '../call-extractors/configs/python.js';
27
29
  const BUILT_INS = new Set([
@@ -66,6 +68,7 @@ export const pythonProvider = defineLanguage({
66
68
  callExtractor: createCallExtractor(pythonCallConfig),
67
69
  fieldExtractor: createFieldExtractor(pythonFieldConfig),
68
70
  methodExtractor: createMethodExtractor(pythonMethodConfig),
71
+ variableExtractor: createVariableExtractor(pythonVariableConfig),
69
72
  classExtractor: createClassExtractor(pythonClassConfig),
70
73
  builtInNames: BUILT_INS,
71
74
  });
@@ -19,6 +19,8 @@ import { createFieldExtractor } from '../field-extractors/generic.js';
19
19
  import { rubyConfig as rubyFieldConfig } from '../field-extractors/configs/ruby.js';
20
20
  import { createMethodExtractor } from '../method-extractors/generic.js';
21
21
  import { rubyMethodConfig } from '../method-extractors/configs/ruby.js';
22
+ import { createVariableExtractor } from '../variable-extractors/generic.js';
23
+ import { rubyVariableConfig } from '../variable-extractors/configs/ruby.js';
22
24
  import { createCallExtractor } from '../call-extractors/generic.js';
23
25
  import { rubyCallConfig } from '../call-extractors/configs/ruby.js';
24
26
  /** Ruby method/singleton_method: extract name from 'name' field, label as Method. */
@@ -124,6 +126,7 @@ export const rubyProvider = defineLanguage({
124
126
  ...rubyMethodConfig,
125
127
  extractFunctionName: rubyExtractFunctionName,
126
128
  }),
129
+ variableExtractor: createVariableExtractor(rubyVariableConfig),
127
130
  classExtractor: createClassExtractor(rubyClassConfig),
128
131
  builtInNames: BUILT_INS,
129
132
  });
@@ -22,6 +22,8 @@ import { createFieldExtractor } from '../field-extractors/generic.js';
22
22
  import { rustConfig as rustFieldConfig } from '../field-extractors/configs/rust.js';
23
23
  import { createMethodExtractor } from '../method-extractors/generic.js';
24
24
  import { rustMethodConfig } from '../method-extractors/configs/rust.js';
25
+ import { createVariableExtractor } from '../variable-extractors/generic.js';
26
+ import { rustVariableConfig } from '../variable-extractors/configs/rust.js';
25
27
  import { createCallExtractor } from '../call-extractors/generic.js';
26
28
  import { rustCallConfig } from '../call-extractors/configs/rust.js';
27
29
  /** Rust impl_item: find the function_item child and extract its name as a Method. */
@@ -121,6 +123,7 @@ export const rustProvider = defineLanguage({
121
123
  ...rustMethodConfig,
122
124
  extractFunctionName: rustExtractFunctionName,
123
125
  }),
126
+ variableExtractor: createVariableExtractor(rustVariableConfig),
124
127
  classExtractor: createClassExtractor(rustClassConfig),
125
128
  builtInNames: BUILT_INS,
126
129
  });
@@ -21,6 +21,8 @@ import { createFieldExtractor } from '../field-extractors/generic.js';
21
21
  import { swiftConfig as swiftFieldConfig } from '../field-extractors/configs/swift.js';
22
22
  import { createMethodExtractor } from '../method-extractors/generic.js';
23
23
  import { swiftMethodConfig } from '../method-extractors/configs/swift.js';
24
+ import { createVariableExtractor } from '../variable-extractors/generic.js';
25
+ import { swiftVariableConfig } from '../variable-extractors/configs/swift.js';
24
26
  import { createCallExtractor } from '../call-extractors/generic.js';
25
27
  import { swiftCallConfig } from '../call-extractors/configs/swift.js';
26
28
  /**
@@ -232,6 +234,7 @@ export const swiftProvider = defineLanguage({
232
234
  ...swiftMethodConfig,
233
235
  extractFunctionName: swiftExtractFunctionName,
234
236
  }),
237
+ variableExtractor: createVariableExtractor(swiftVariableConfig),
235
238
  classExtractor: createClassExtractor(swiftClassConfig),
236
239
  implicitImportWirer: wireSwiftImplicitImports,
237
240
  builtInNames: BUILT_INS,
@@ -20,6 +20,8 @@ import { createFieldExtractor } from '../field-extractors/generic.js';
20
20
  import { javascriptConfig } from '../field-extractors/configs/typescript-javascript.js';
21
21
  import { createMethodExtractor } from '../method-extractors/generic.js';
22
22
  import { typescriptMethodConfig, javascriptMethodConfig, } from '../method-extractors/configs/typescript-javascript.js';
23
+ import { createVariableExtractor } from '../variable-extractors/generic.js';
24
+ import { typescriptVariableConfig, javascriptVariableConfig, } from '../variable-extractors/configs/typescript-javascript.js';
23
25
  import { createCallExtractor } from '../call-extractors/generic.js';
24
26
  import { typescriptCallConfig, javascriptCallConfig, } from '../call-extractors/configs/typescript-javascript.js';
25
27
  /**
@@ -154,6 +156,7 @@ export const typescriptProvider = defineLanguage({
154
156
  ...typescriptMethodConfig,
155
157
  extractFunctionName: tsExtractFunctionName,
156
158
  }),
159
+ variableExtractor: createVariableExtractor(typescriptVariableConfig),
157
160
  classExtractor: createClassExtractor(typescriptClassConfig),
158
161
  builtInNames: BUILT_INS,
159
162
  });
@@ -171,6 +174,7 @@ export const javascriptProvider = defineLanguage({
171
174
  ...javascriptMethodConfig,
172
175
  extractFunctionName: tsExtractFunctionName,
173
176
  }),
177
+ variableExtractor: createVariableExtractor(javascriptVariableConfig),
174
178
  classExtractor: createClassExtractor(javascriptClassConfig),
175
179
  builtInNames: BUILT_INS,
176
180
  });
@@ -21,6 +21,8 @@ import { extractTsNamedBindings } from '../named-bindings/typescript.js';
21
21
  import { TYPESCRIPT_QUERIES } from '../tree-sitter-queries.js';
22
22
  import { typescriptFieldExtractor } from '../field-extractors/typescript.js';
23
23
  import { BUILT_INS as TS_BUILT_INS } from './typescript.js';
24
+ import { createVariableExtractor } from '../variable-extractors/generic.js';
25
+ import { typescriptVariableConfig } from '../variable-extractors/configs/typescript-javascript.js';
24
26
  import { createCallExtractor } from '../call-extractors/generic.js';
25
27
  import { typescriptCallConfig } from '../call-extractors/configs/typescript-javascript.js';
26
28
  const VUE_SPECIFIC_BUILT_INS = [
@@ -66,6 +68,7 @@ export const vueProvider = defineLanguage({
66
68
  namedBindingExtractor: extractTsNamedBindings,
67
69
  callExtractor: createCallExtractor(typescriptCallConfig),
68
70
  fieldExtractor: typescriptFieldExtractor,
71
+ variableExtractor: createVariableExtractor(typescriptVariableConfig),
69
72
  classExtractor: vueClassExtractor,
70
73
  builtInNames: VUE_BUILT_INS,
71
74
  });
@@ -10,11 +10,11 @@
10
10
  * `SymbolTable` by design.
11
11
  */
12
12
  export { type SemanticModel, type MutableSemanticModel, createSemanticModel, } from './semantic-model.js';
13
- export { type SymbolTableReader, type SymbolTableWriter, createSymbolTable, } from './symbol-table.js';
13
+ export { type SymbolTableReader, type SymbolTableWriter, createSymbolTable, type SymbolDefinition, type AddMetadata, CLASS_TYPES, CLASS_TYPES_TUPLE, type ClassLikeLabel, FREE_CALLABLE_TYPES, FREE_CALLABLE_TUPLE, type FreeCallableLabel, CALL_TARGET_TYPES, } from './symbol-table.js';
14
14
  export { type TypeRegistry, type MutableTypeRegistry, createTypeRegistry, } from './type-registry.js';
15
15
  export { type MethodRegistry, type MutableMethodRegistry, createMethodRegistry, } from './method-registry.js';
16
16
  export { type FieldRegistry, type MutableFieldRegistry, createFieldRegistry, } from './field-registry.js';
17
17
  export { lookupMethodByOwnerWithMRO } from './resolve.js';
18
18
  export { type NamedImportBinding, type NamedImportMap, isFileInPackageDir, } from './resolution-context.js';
19
- export { type ExtractedHeritage, type HeritageResolutionStrategy, type HeritageStrategyLookup, } from './heritage-map.js';
19
+ export { type ExtractedHeritage, type HeritageMap, type HeritageResolutionStrategy, type HeritageStrategyLookup, } from './heritage-map.js';
20
20
  export { CALLABLE_ONLY_LABELS, INERT_LABELS, DISPATCH_LABELS, ALL_NODE_LABELS, type LabelBehavior, } from './registration-table.js';
@@ -16,7 +16,7 @@ export { createSemanticModel, } from './semantic-model.js';
16
16
  // SymbolTable is exclusively owned by SemanticModel. Re-exported here
17
17
  // for the rare caller that needs the file/callable interface in
18
18
  // isolation (e.g. tests).
19
- export { createSymbolTable, } from './symbol-table.js';
19
+ export { createSymbolTable, CLASS_TYPES, CLASS_TYPES_TUPLE, FREE_CALLABLE_TYPES, FREE_CALLABLE_TUPLE, CALL_TARGET_TYPES, } from './symbol-table.js';
20
20
  // Type registry (classes, structs, interfaces, enums, records, impls)
21
21
  export { createTypeRegistry, } from './type-registry.js';
22
22
  // Method registry (owner-scoped methods with arity-aware overload lookup)
@@ -12,6 +12,9 @@ import type { MroStrategy } from '../../../_shared/index.js';
12
12
  /**
13
13
  * Gather all ancestor IDs in BFS / topological order.
14
14
  * Returns the linearized list of ancestor IDs (excluding the class itself).
15
+ *
16
+ * Uses a head-pointer BFS (`queue[head++]`) instead of `Array.shift()` to
17
+ * avoid O(n) per-dequeue re-indexing — matching `buildParentMapFromHeritage`.
15
18
  */
16
19
  declare function gatherAncestors(classId: string, parentMap: Map<string, string[]>): string[];
17
20
  /**
@@ -15,13 +15,17 @@
15
15
  /**
16
16
  * Gather all ancestor IDs in BFS / topological order.
17
17
  * Returns the linearized list of ancestor IDs (excluding the class itself).
18
+ *
19
+ * Uses a head-pointer BFS (`queue[head++]`) instead of `Array.shift()` to
20
+ * avoid O(n) per-dequeue re-indexing — matching `buildParentMapFromHeritage`.
18
21
  */
19
22
  function gatherAncestors(classId, parentMap) {
20
23
  const visited = new Set();
21
24
  const order = [];
22
25
  const queue = [...(parentMap.get(classId) ?? [])];
23
- while (queue.length > 0) {
24
- const id = queue.shift();
26
+ let head = 0;
27
+ while (head < queue.length) {
28
+ const id = queue[head++];
25
29
  if (visited.has(id))
26
30
  continue;
27
31
  visited.add(id);
@@ -1,9 +1,8 @@
1
1
  import { KnowledgeGraph } from '../graph/types.js';
2
- import type { SymbolTableWriter } from './model/symbol-table.js';
2
+ import type { SymbolTableWriter, ExtractedHeritage } from './model/index.js';
3
3
  import { ASTCache } from './ast-cache.js';
4
4
  import { WorkerPool } from './workers/worker-pool.js';
5
5
  import type { ExtractedImport, ExtractedCall, ExtractedAssignment, ExtractedRoute, ExtractedFetchCall, ExtractedDecoratorRoute, ExtractedToolDef, FileConstructorBindings, FileScopeBindings, ExtractedORMQuery } from './workers/parse-worker.js';
6
- import type { ExtractedHeritage } from './model/heritage-map.js';
7
6
  export type FileProgressCallback = (current: number, total: number, filePath: string) => void;
8
7
  export interface WorkerExtractedData {
9
8
  imports: ExtractedImport[];