driftdetect-core 0.4.0 → 0.4.2

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 (237) hide show
  1. package/dist/boundaries/boundary-scanner.d.ts +76 -0
  2. package/dist/boundaries/boundary-scanner.d.ts.map +1 -0
  3. package/dist/boundaries/boundary-scanner.js +801 -0
  4. package/dist/boundaries/boundary-scanner.js.map +1 -0
  5. package/dist/boundaries/data-access-learner.d.ts +126 -0
  6. package/dist/boundaries/data-access-learner.d.ts.map +1 -0
  7. package/dist/boundaries/data-access-learner.js +486 -0
  8. package/dist/boundaries/data-access-learner.js.map +1 -0
  9. package/dist/boundaries/index.d.ts +6 -0
  10. package/dist/boundaries/index.d.ts.map +1 -1
  11. package/dist/boundaries/index.js +6 -0
  12. package/dist/boundaries/index.js.map +1 -1
  13. package/dist/boundaries/security-prioritizer.d.ts +118 -0
  14. package/dist/boundaries/security-prioritizer.d.ts.map +1 -0
  15. package/dist/boundaries/security-prioritizer.js +316 -0
  16. package/dist/boundaries/security-prioritizer.js.map +1 -0
  17. package/dist/call-graph/analysis/coverage-analyzer.d.ts +201 -0
  18. package/dist/call-graph/analysis/coverage-analyzer.d.ts.map +1 -0
  19. package/dist/call-graph/analysis/coverage-analyzer.js +553 -0
  20. package/dist/call-graph/analysis/coverage-analyzer.js.map +1 -0
  21. package/dist/call-graph/analysis/dead-code-detector.d.ts +145 -0
  22. package/dist/call-graph/analysis/dead-code-detector.d.ts.map +1 -0
  23. package/dist/call-graph/analysis/dead-code-detector.js +391 -0
  24. package/dist/call-graph/analysis/dead-code-detector.js.map +1 -0
  25. package/dist/call-graph/analysis/graph-builder.d.ts +142 -0
  26. package/dist/call-graph/analysis/graph-builder.d.ts.map +1 -0
  27. package/dist/call-graph/analysis/graph-builder.js +624 -0
  28. package/dist/call-graph/analysis/graph-builder.js.map +1 -0
  29. package/dist/call-graph/analysis/impact-analyzer.d.ts +150 -0
  30. package/dist/call-graph/analysis/impact-analyzer.d.ts.map +1 -0
  31. package/dist/call-graph/analysis/impact-analyzer.js +329 -0
  32. package/dist/call-graph/analysis/impact-analyzer.js.map +1 -0
  33. package/dist/call-graph/analysis/index.d.ts +11 -0
  34. package/dist/call-graph/analysis/index.d.ts.map +1 -0
  35. package/dist/call-graph/analysis/index.js +9 -0
  36. package/dist/call-graph/analysis/index.js.map +1 -0
  37. package/dist/call-graph/analysis/path-finder.d.ts +117 -0
  38. package/dist/call-graph/analysis/path-finder.d.ts.map +1 -0
  39. package/dist/call-graph/analysis/path-finder.js +360 -0
  40. package/dist/call-graph/analysis/path-finder.js.map +1 -0
  41. package/dist/call-graph/analysis/reachability.d.ts +56 -0
  42. package/dist/call-graph/analysis/reachability.d.ts.map +1 -0
  43. package/dist/call-graph/analysis/reachability.js +357 -0
  44. package/dist/call-graph/analysis/reachability.js.map +1 -0
  45. package/dist/call-graph/demo.d.ts +11 -0
  46. package/dist/call-graph/demo.d.ts.map +1 -0
  47. package/dist/call-graph/demo.js +339 -0
  48. package/dist/call-graph/demo.js.map +1 -0
  49. package/dist/call-graph/enrichment/enrichment-engine.d.ts +126 -0
  50. package/dist/call-graph/enrichment/enrichment-engine.d.ts.map +1 -0
  51. package/dist/call-graph/enrichment/enrichment-engine.js +760 -0
  52. package/dist/call-graph/enrichment/enrichment-engine.js.map +1 -0
  53. package/dist/call-graph/enrichment/impact-scorer.d.ts +59 -0
  54. package/dist/call-graph/enrichment/impact-scorer.d.ts.map +1 -0
  55. package/dist/call-graph/enrichment/impact-scorer.js +328 -0
  56. package/dist/call-graph/enrichment/impact-scorer.js.map +1 -0
  57. package/dist/call-graph/enrichment/index.d.ts +12 -0
  58. package/dist/call-graph/enrichment/index.d.ts.map +1 -0
  59. package/dist/call-graph/enrichment/index.js +15 -0
  60. package/dist/call-graph/enrichment/index.js.map +1 -0
  61. package/dist/call-graph/enrichment/remediation-generator.d.ts +41 -0
  62. package/dist/call-graph/enrichment/remediation-generator.d.ts.map +1 -0
  63. package/dist/call-graph/enrichment/remediation-generator.js +609 -0
  64. package/dist/call-graph/enrichment/remediation-generator.js.map +1 -0
  65. package/dist/call-graph/enrichment/sensitivity-classifier.d.ts +71 -0
  66. package/dist/call-graph/enrichment/sensitivity-classifier.d.ts.map +1 -0
  67. package/dist/call-graph/enrichment/sensitivity-classifier.js +454 -0
  68. package/dist/call-graph/enrichment/sensitivity-classifier.js.map +1 -0
  69. package/dist/call-graph/enrichment/types.d.ts +402 -0
  70. package/dist/call-graph/enrichment/types.d.ts.map +1 -0
  71. package/dist/call-graph/enrichment/types.js +9 -0
  72. package/dist/call-graph/enrichment/types.js.map +1 -0
  73. package/dist/call-graph/extractors/base-extractor.d.ts +112 -0
  74. package/dist/call-graph/extractors/base-extractor.d.ts.map +1 -0
  75. package/dist/call-graph/extractors/base-extractor.js +140 -0
  76. package/dist/call-graph/extractors/base-extractor.js.map +1 -0
  77. package/dist/call-graph/extractors/csharp-data-access-extractor.d.ts +76 -0
  78. package/dist/call-graph/extractors/csharp-data-access-extractor.d.ts.map +1 -0
  79. package/dist/call-graph/extractors/csharp-data-access-extractor.js +387 -0
  80. package/dist/call-graph/extractors/csharp-data-access-extractor.js.map +1 -0
  81. package/dist/call-graph/extractors/csharp-extractor.d.ts +87 -0
  82. package/dist/call-graph/extractors/csharp-extractor.d.ts.map +1 -0
  83. package/dist/call-graph/extractors/csharp-extractor.js +470 -0
  84. package/dist/call-graph/extractors/csharp-extractor.js.map +1 -0
  85. package/dist/call-graph/extractors/data-access-extractor.d.ts +76 -0
  86. package/dist/call-graph/extractors/data-access-extractor.d.ts.map +1 -0
  87. package/dist/call-graph/extractors/data-access-extractor.js +234 -0
  88. package/dist/call-graph/extractors/data-access-extractor.js.map +1 -0
  89. package/dist/call-graph/extractors/index.d.ts +26 -0
  90. package/dist/call-graph/extractors/index.d.ts.map +1 -0
  91. package/dist/call-graph/extractors/index.js +36 -0
  92. package/dist/call-graph/extractors/index.js.map +1 -0
  93. package/dist/call-graph/extractors/java-data-access-extractor.d.ts +101 -0
  94. package/dist/call-graph/extractors/java-data-access-extractor.d.ts.map +1 -0
  95. package/dist/call-graph/extractors/java-data-access-extractor.js +611 -0
  96. package/dist/call-graph/extractors/java-data-access-extractor.js.map +1 -0
  97. package/dist/call-graph/extractors/java-extractor.d.ts +87 -0
  98. package/dist/call-graph/extractors/java-extractor.d.ts.map +1 -0
  99. package/dist/call-graph/extractors/java-extractor.js +510 -0
  100. package/dist/call-graph/extractors/java-extractor.js.map +1 -0
  101. package/dist/call-graph/extractors/php-data-access-extractor.d.ts +93 -0
  102. package/dist/call-graph/extractors/php-data-access-extractor.d.ts.map +1 -0
  103. package/dist/call-graph/extractors/php-data-access-extractor.js +589 -0
  104. package/dist/call-graph/extractors/php-data-access-extractor.js.map +1 -0
  105. package/dist/call-graph/extractors/php-extractor.d.ts +104 -0
  106. package/dist/call-graph/extractors/php-extractor.d.ts.map +1 -0
  107. package/dist/call-graph/extractors/php-extractor.js +619 -0
  108. package/dist/call-graph/extractors/php-extractor.js.map +1 -0
  109. package/dist/call-graph/extractors/python-data-access-extractor.d.ts +90 -0
  110. package/dist/call-graph/extractors/python-data-access-extractor.d.ts.map +1 -0
  111. package/dist/call-graph/extractors/python-data-access-extractor.js +537 -0
  112. package/dist/call-graph/extractors/python-data-access-extractor.js.map +1 -0
  113. package/dist/call-graph/extractors/python-extractor.d.ts +98 -0
  114. package/dist/call-graph/extractors/python-extractor.d.ts.map +1 -0
  115. package/dist/call-graph/extractors/python-extractor.js +681 -0
  116. package/dist/call-graph/extractors/python-extractor.js.map +1 -0
  117. package/dist/call-graph/extractors/semantic-data-access-scanner.d.ts +91 -0
  118. package/dist/call-graph/extractors/semantic-data-access-scanner.d.ts.map +1 -0
  119. package/dist/call-graph/extractors/semantic-data-access-scanner.js +498 -0
  120. package/dist/call-graph/extractors/semantic-data-access-scanner.js.map +1 -0
  121. package/dist/call-graph/extractors/typescript-data-access-extractor.d.ts +122 -0
  122. package/dist/call-graph/extractors/typescript-data-access-extractor.d.ts.map +1 -0
  123. package/dist/call-graph/extractors/typescript-data-access-extractor.js +788 -0
  124. package/dist/call-graph/extractors/typescript-data-access-extractor.js.map +1 -0
  125. package/dist/call-graph/extractors/typescript-extractor.d.ts +145 -0
  126. package/dist/call-graph/extractors/typescript-extractor.d.ts.map +1 -0
  127. package/dist/call-graph/extractors/typescript-extractor.js +904 -0
  128. package/dist/call-graph/extractors/typescript-extractor.js.map +1 -0
  129. package/dist/call-graph/index.d.ts +127 -0
  130. package/dist/call-graph/index.d.ts.map +1 -0
  131. package/dist/call-graph/index.js +247 -0
  132. package/dist/call-graph/index.js.map +1 -0
  133. package/dist/call-graph/store/call-graph-store.d.ts +70 -0
  134. package/dist/call-graph/store/call-graph-store.d.ts.map +1 -0
  135. package/dist/call-graph/store/call-graph-store.js +210 -0
  136. package/dist/call-graph/store/call-graph-store.js.map +1 -0
  137. package/dist/call-graph/store/index.d.ts +7 -0
  138. package/dist/call-graph/store/index.d.ts.map +1 -0
  139. package/dist/call-graph/store/index.js +7 -0
  140. package/dist/call-graph/store/index.js.map +1 -0
  141. package/dist/call-graph/types.d.ts +376 -0
  142. package/dist/call-graph/types.d.ts.map +1 -0
  143. package/dist/call-graph/types.js +8 -0
  144. package/dist/call-graph/types.js.map +1 -0
  145. package/dist/index.d.ts +8 -0
  146. package/dist/index.d.ts.map +1 -1
  147. package/dist/index.js +12 -0
  148. package/dist/index.js.map +1 -1
  149. package/dist/lake/callgraph-shard-store.d.ts +168 -0
  150. package/dist/lake/callgraph-shard-store.d.ts.map +1 -0
  151. package/dist/lake/callgraph-shard-store.js +466 -0
  152. package/dist/lake/callgraph-shard-store.js.map +1 -0
  153. package/dist/lake/examples-store.d.ts +127 -0
  154. package/dist/lake/examples-store.d.ts.map +1 -0
  155. package/dist/lake/examples-store.js +389 -0
  156. package/dist/lake/examples-store.js.map +1 -0
  157. package/dist/lake/index-store.d.ts +82 -0
  158. package/dist/lake/index-store.d.ts.map +1 -0
  159. package/dist/lake/index-store.js +359 -0
  160. package/dist/lake/index-store.js.map +1 -0
  161. package/dist/lake/index.d.ts +93 -0
  162. package/dist/lake/index.d.ts.map +1 -0
  163. package/dist/lake/index.js +138 -0
  164. package/dist/lake/index.js.map +1 -0
  165. package/dist/lake/lake.bak/index-store.d.ts +82 -0
  166. package/dist/lake/lake.bak/index-store.d.ts.map +1 -0
  167. package/dist/lake/lake.bak/index-store.js +357 -0
  168. package/dist/lake/lake.bak/index-store.js.map +1 -0
  169. package/dist/lake/lake.bak/index.d.ts +81 -0
  170. package/dist/lake/lake.bak/index.d.ts.map +1 -0
  171. package/dist/lake/lake.bak/index.js +114 -0
  172. package/dist/lake/lake.bak/index.js.map +1 -0
  173. package/dist/lake/lake.bak/manifest-store.d.ts +51 -0
  174. package/dist/lake/lake.bak/manifest-store.d.ts.map +1 -0
  175. package/dist/lake/lake.bak/manifest-store.js +347 -0
  176. package/dist/lake/lake.bak/manifest-store.js.map +1 -0
  177. package/dist/lake/lake.bak/query-engine.d.ts +112 -0
  178. package/dist/lake/lake.bak/query-engine.d.ts.map +1 -0
  179. package/dist/lake/lake.bak/query-engine.js +370 -0
  180. package/dist/lake/lake.bak/query-engine.js.map +1 -0
  181. package/dist/lake/lake.bak/types.d.ts +428 -0
  182. package/dist/lake/lake.bak/types.d.ts.map +1 -0
  183. package/dist/lake/lake.bak/types.js +46 -0
  184. package/dist/lake/lake.bak/types.js.map +1 -0
  185. package/dist/lake/lake.bak/view-materializer.d.ts +70 -0
  186. package/dist/lake/lake.bak/view-materializer.d.ts.map +1 -0
  187. package/dist/lake/lake.bak/view-materializer.js +314 -0
  188. package/dist/lake/lake.bak/view-materializer.js.map +1 -0
  189. package/dist/lake/lake.bak/view-store.d.ts +57 -0
  190. package/dist/lake/lake.bak/view-store.d.ts.map +1 -0
  191. package/dist/lake/lake.bak/view-store.js +348 -0
  192. package/dist/lake/lake.bak/view-store.js.map +1 -0
  193. package/dist/lake/manifest-store.d.ts +51 -0
  194. package/dist/lake/manifest-store.d.ts.map +1 -0
  195. package/dist/lake/manifest-store.js +348 -0
  196. package/dist/lake/manifest-store.js.map +1 -0
  197. package/dist/lake/pattern-shard-store.d.ts +87 -0
  198. package/dist/lake/pattern-shard-store.d.ts.map +1 -0
  199. package/dist/lake/pattern-shard-store.js +347 -0
  200. package/dist/lake/pattern-shard-store.js.map +1 -0
  201. package/dist/lake/query-engine.d.ts +124 -0
  202. package/dist/lake/query-engine.d.ts.map +1 -0
  203. package/dist/lake/query-engine.js +453 -0
  204. package/dist/lake/query-engine.js.map +1 -0
  205. package/dist/lake/security-shard-store.d.ts +156 -0
  206. package/dist/lake/security-shard-store.d.ts.map +1 -0
  207. package/dist/lake/security-shard-store.js +498 -0
  208. package/dist/lake/security-shard-store.js.map +1 -0
  209. package/dist/lake/types.d.ts +428 -0
  210. package/dist/lake/types.d.ts.map +1 -0
  211. package/dist/lake/types.js +46 -0
  212. package/dist/lake/types.js.map +1 -0
  213. package/dist/lake/view-materializer.d.ts +70 -0
  214. package/dist/lake/view-materializer.d.ts.map +1 -0
  215. package/dist/lake/view-materializer.js +314 -0
  216. package/dist/lake/view-materializer.js.map +1 -0
  217. package/dist/lake/view-store.d.ts +57 -0
  218. package/dist/lake/view-store.d.ts.map +1 -0
  219. package/dist/lake/view-store.js +348 -0
  220. package/dist/lake/view-store.js.map +1 -0
  221. package/dist/parsers/tree-sitter/index.d.ts +1 -0
  222. package/dist/parsers/tree-sitter/index.d.ts.map +1 -1
  223. package/dist/parsers/tree-sitter/index.js +4 -0
  224. package/dist/parsers/tree-sitter/index.js.map +1 -1
  225. package/dist/parsers/tree-sitter/typescript-loader.d.ts +58 -0
  226. package/dist/parsers/tree-sitter/typescript-loader.d.ts.map +1 -0
  227. package/dist/parsers/tree-sitter/typescript-loader.js +250 -0
  228. package/dist/parsers/tree-sitter/typescript-loader.js.map +1 -0
  229. package/dist/store/project-config.d.ts +154 -0
  230. package/dist/store/project-config.d.ts.map +1 -0
  231. package/dist/store/project-config.js +235 -0
  232. package/dist/store/project-config.js.map +1 -0
  233. package/dist/store/project-registry.d.ts +241 -0
  234. package/dist/store/project-registry.d.ts.map +1 -0
  235. package/dist/store/project-registry.js +557 -0
  236. package/dist/store/project-registry.js.map +1 -0
  237. package/package.json +7 -7
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-extractor.js","sourceRoot":"","sources":["../../../src/call-graph/extractors/base-extractor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * C# Semantic Data Access Extractor
3
+ *
4
+ * Extracts data access points from C# using tree-sitter.
5
+ * Provides accurate, semantic-aware detection of database operations.
6
+ *
7
+ * Supports:
8
+ * - Entity Framework Core: dbContext.Users.Where().ToListAsync()
9
+ * - Dapper: connection.Query<User>("SELECT * FROM users")
10
+ * - ADO.NET: command.ExecuteReader()
11
+ * - Raw SQL via EF: dbContext.Database.ExecuteSqlRaw()
12
+ */
13
+ import { BaseDataAccessExtractor, type DataAccessExtractionResult } from './data-access-extractor.js';
14
+ import type { CallGraphLanguage } from '../types.js';
15
+ /**
16
+ * C# data access extractor using tree-sitter
17
+ */
18
+ export declare class CSharpDataAccessExtractor extends BaseDataAccessExtractor {
19
+ readonly language: CallGraphLanguage;
20
+ readonly extensions: string[];
21
+ private parser;
22
+ /**
23
+ * Check if tree-sitter is available for C#
24
+ */
25
+ static isAvailable(): boolean;
26
+ /**
27
+ * Extract data access points from C# source
28
+ */
29
+ extract(source: string, filePath: string): DataAccessExtractionResult;
30
+ /**
31
+ * Visit AST nodes to find data access patterns
32
+ */
33
+ private visitNode;
34
+ /**
35
+ * Analyze a method invocation for data access patterns
36
+ */
37
+ private analyzeInvocation;
38
+ /**
39
+ * Get the invocation chain from a method call
40
+ */
41
+ private getInvocationChain;
42
+ /**
43
+ * Try to match Entity Framework Core pattern
44
+ */
45
+ private tryEFCorePattern;
46
+ /**
47
+ * Extract field names from lambda expressions in Where clauses
48
+ * e.g., .Where(u => u.Email == email) -> ['Email']
49
+ */
50
+ private extractFieldsFromLambda;
51
+ /**
52
+ * Try to match Dapper pattern
53
+ */
54
+ private tryDapperPattern;
55
+ /**
56
+ * Try to match ADO.NET pattern
57
+ */
58
+ private tryAdoNetPattern;
59
+ /**
60
+ * Try to match EF Core raw SQL pattern
61
+ */
62
+ private tryEFRawSqlPattern;
63
+ /**
64
+ * Analyze LINQ query expressions
65
+ */
66
+ private analyzeLinqQuery;
67
+ /**
68
+ * Parse a SQL statement to extract table, operation, and fields
69
+ */
70
+ private parseSQLStatement;
71
+ }
72
+ /**
73
+ * Create a C# data access extractor
74
+ */
75
+ export declare function createCSharpDataAccessExtractor(): CSharpDataAccessExtractor;
76
+ //# sourceMappingURL=csharp-data-access-extractor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"csharp-data-access-extractor.d.ts","sourceRoot":"","sources":["../../../src/call-graph/extractors/csharp-data-access-extractor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,uBAAuB,EAAE,KAAK,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AACtG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAQrD;;GAEG;AACH,qBAAa,yBAA0B,SAAQ,uBAAuB;IACpE,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAY;IAChD,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,CAAW;IAExC,OAAO,CAAC,MAAM,CAAiC;IAE/C;;OAEG;IACH,MAAM,CAAC,WAAW,IAAI,OAAO;IAI7B;;OAEG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,0BAA0B;IAwBrE;;OAEG;IACH,OAAO,CAAC,SAAS;IAsBjB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAsBzB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAqC1B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA+DxB;;;OAGG;IACH,OAAO,CAAC,uBAAuB;IAwB/B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAgDxB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAuCxB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA+C1B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAqCxB;;OAEG;IACH,OAAO,CAAC,iBAAiB;CAqB1B;AAED;;GAEG;AACH,wBAAgB,+BAA+B,IAAI,yBAAyB,CAE3E"}
@@ -0,0 +1,387 @@
1
+ /**
2
+ * C# Semantic Data Access Extractor
3
+ *
4
+ * Extracts data access points from C# using tree-sitter.
5
+ * Provides accurate, semantic-aware detection of database operations.
6
+ *
7
+ * Supports:
8
+ * - Entity Framework Core: dbContext.Users.Where().ToListAsync()
9
+ * - Dapper: connection.Query<User>("SELECT * FROM users")
10
+ * - ADO.NET: command.ExecuteReader()
11
+ * - Raw SQL via EF: dbContext.Database.ExecuteSqlRaw()
12
+ */
13
+ import { BaseDataAccessExtractor } from './data-access-extractor.js';
14
+ import { isCSharpTreeSitterAvailable, createCSharpParser, } from '../../parsers/tree-sitter/csharp-loader.js';
15
+ /**
16
+ * C# data access extractor using tree-sitter
17
+ */
18
+ export class CSharpDataAccessExtractor extends BaseDataAccessExtractor {
19
+ language = 'csharp';
20
+ extensions = ['.cs'];
21
+ parser = null;
22
+ /**
23
+ * Check if tree-sitter is available for C#
24
+ */
25
+ static isAvailable() {
26
+ return isCSharpTreeSitterAvailable();
27
+ }
28
+ /**
29
+ * Extract data access points from C# source
30
+ */
31
+ extract(source, filePath) {
32
+ const result = this.createEmptyResult(filePath);
33
+ if (!isCSharpTreeSitterAvailable()) {
34
+ result.errors.push('Tree-sitter not available for C# parsing');
35
+ return result;
36
+ }
37
+ try {
38
+ if (!this.parser) {
39
+ this.parser = createCSharpParser();
40
+ }
41
+ const tree = this.parser.parse(source);
42
+ this.visitNode(tree.rootNode, result, filePath, source);
43
+ }
44
+ catch (error) {
45
+ result.errors.push(error instanceof Error ? error.message : 'Unknown parse error');
46
+ }
47
+ return result;
48
+ }
49
+ /**
50
+ * Visit AST nodes to find data access patterns
51
+ */
52
+ visitNode(node, result, filePath, source) {
53
+ // Check for invocation expressions (method calls)
54
+ if (node.type === 'invocation_expression') {
55
+ this.analyzeInvocation(node, result, filePath, source);
56
+ }
57
+ // Check for LINQ query expressions
58
+ if (node.type === 'query_expression') {
59
+ this.analyzeLinqQuery(node, result, filePath, source);
60
+ }
61
+ // Recurse into children
62
+ for (const child of node.children) {
63
+ this.visitNode(child, result, filePath, source);
64
+ }
65
+ }
66
+ /**
67
+ * Analyze a method invocation for data access patterns
68
+ */
69
+ analyzeInvocation(node, result, filePath, source) {
70
+ const chain = this.getInvocationChain(node);
71
+ const accessPoint = this.tryEFCorePattern(chain, node, filePath) ||
72
+ this.tryDapperPattern(chain, node, filePath, source) ||
73
+ this.tryAdoNetPattern(chain, node, filePath, source) ||
74
+ this.tryEFRawSqlPattern(chain, node, filePath, source);
75
+ if (accessPoint) {
76
+ const exists = result.accessPoints.some(ap => ap.id === accessPoint.id);
77
+ if (!exists) {
78
+ result.accessPoints.push(accessPoint);
79
+ }
80
+ }
81
+ }
82
+ /**
83
+ * Get the invocation chain from a method call
84
+ */
85
+ getInvocationChain(node) {
86
+ const chain = [];
87
+ let current = node;
88
+ while (current) {
89
+ if (current.type === 'invocation_expression') {
90
+ const funcNode = current.childForFieldName('function');
91
+ if (funcNode?.type === 'member_access_expression') {
92
+ const memberName = funcNode.childForFieldName('name')?.text;
93
+ if (memberName) {
94
+ chain.unshift({ names: [memberName], node: current });
95
+ }
96
+ current = funcNode.childForFieldName('expression');
97
+ }
98
+ else if (funcNode?.type === 'identifier') {
99
+ chain.unshift({ names: [funcNode.text], node: current });
100
+ break;
101
+ }
102
+ else {
103
+ break;
104
+ }
105
+ }
106
+ else if (current.type === 'member_access_expression') {
107
+ const memberName = current.childForFieldName('name')?.text;
108
+ if (memberName) {
109
+ chain.unshift({ names: [memberName], node: current });
110
+ }
111
+ current = current.childForFieldName('expression');
112
+ }
113
+ else if (current.type === 'identifier') {
114
+ chain.unshift({ names: [current.text], node: current });
115
+ break;
116
+ }
117
+ else {
118
+ break;
119
+ }
120
+ }
121
+ return chain;
122
+ }
123
+ /**
124
+ * Try to match Entity Framework Core pattern
125
+ */
126
+ tryEFCorePattern(chain, node, filePath) {
127
+ if (chain.length < 2)
128
+ return null;
129
+ const firstPart = chain[0]?.names[0]?.toLowerCase() ?? '';
130
+ if (!firstPart.includes('context') && !firstPart.includes('db') && !firstPart.startsWith('_')) {
131
+ return null;
132
+ }
133
+ const tablePart = chain[1]?.names[0];
134
+ if (!tablePart || !/^[A-Z]/.test(tablePart))
135
+ return null;
136
+ const efMethods = {
137
+ read: ['Where', 'FirstOrDefault', 'FirstOrDefaultAsync', 'First', 'FirstAsync',
138
+ 'Single', 'SingleOrDefault', 'SingleAsync', 'SingleOrDefaultAsync',
139
+ 'ToList', 'ToListAsync', 'ToArray', 'ToArrayAsync',
140
+ 'Find', 'FindAsync', 'Any', 'AnyAsync', 'All', 'AllAsync',
141
+ 'Count', 'CountAsync', 'Sum', 'SumAsync', 'Average', 'AverageAsync',
142
+ 'Max', 'MaxAsync', 'Min', 'MinAsync', 'Select', 'Include', 'ThenInclude'],
143
+ write: ['Add', 'AddAsync', 'AddRange', 'AddRangeAsync',
144
+ 'Update', 'UpdateRange', 'Attach', 'AttachRange'],
145
+ delete: ['Remove', 'RemoveRange'],
146
+ };
147
+ let operation = 'read';
148
+ const whereFields = [];
149
+ for (const item of chain) {
150
+ const methodName = item.names[0];
151
+ if (!methodName)
152
+ continue;
153
+ if (efMethods.write.includes(methodName)) {
154
+ operation = 'write';
155
+ break;
156
+ }
157
+ if (efMethods.delete.includes(methodName)) {
158
+ operation = 'delete';
159
+ break;
160
+ }
161
+ // Extract fields from Where clause lambda expressions
162
+ if (methodName === 'Where' || methodName === 'FirstOrDefault' || methodName === 'Single' ||
163
+ methodName === 'Any' || methodName === 'All' || methodName === 'Count') {
164
+ const extractedFields = this.extractFieldsFromLambda(item.node);
165
+ whereFields.push(...extractedFields);
166
+ }
167
+ }
168
+ return this.createAccessPoint({
169
+ table: this.inferTableFromName(tablePart),
170
+ fields: whereFields,
171
+ operation,
172
+ file: filePath,
173
+ line: node.startPosition.row + 1,
174
+ column: node.startPosition.column,
175
+ context: node.text.slice(0, 200),
176
+ confidence: 0.95,
177
+ });
178
+ }
179
+ /**
180
+ * Extract field names from lambda expressions in Where clauses
181
+ * e.g., .Where(u => u.Email == email) -> ['Email']
182
+ */
183
+ extractFieldsFromLambda(node) {
184
+ const fields = [];
185
+ // Find lambda expression in arguments
186
+ const argsNode = node.childForFieldName('arguments');
187
+ if (!argsNode)
188
+ return fields;
189
+ // Recursively search for member access expressions
190
+ const findMemberAccess = (n) => {
191
+ if (n.type === 'member_access_expression') {
192
+ const memberName = n.childForFieldName('name')?.text;
193
+ if (memberName && /^[A-Z]/.test(memberName)) {
194
+ fields.push(memberName);
195
+ }
196
+ }
197
+ for (const child of n.children) {
198
+ findMemberAccess(child);
199
+ }
200
+ };
201
+ findMemberAccess(argsNode);
202
+ return [...new Set(fields)];
203
+ }
204
+ /**
205
+ * Try to match Dapper pattern
206
+ */
207
+ tryDapperPattern(chain, node, filePath, _source) {
208
+ const dapperMethods = ['Query', 'QueryAsync', 'QueryFirst', 'QueryFirstAsync',
209
+ 'QueryFirstOrDefault', 'QueryFirstOrDefaultAsync',
210
+ 'QuerySingle', 'QuerySingleAsync', 'QuerySingleOrDefault',
211
+ 'QuerySingleOrDefaultAsync', 'QueryMultiple', 'QueryMultipleAsync',
212
+ 'Execute', 'ExecuteAsync', 'ExecuteScalar', 'ExecuteScalarAsync'];
213
+ const methodItem = chain.find(item => dapperMethods.includes(item.names[0] ?? ''));
214
+ if (!methodItem)
215
+ return null;
216
+ const argsNode = methodItem.node.childForFieldName('arguments');
217
+ if (!argsNode)
218
+ return null;
219
+ let sqlText = '';
220
+ for (const arg of argsNode.children) {
221
+ if (arg.type === 'argument') {
222
+ const expr = arg.childForFieldName('expression');
223
+ if (expr?.type === 'string_literal' || expr?.type === 'verbatim_string_literal') {
224
+ sqlText = expr.text.replace(/^[@$]?"/, '').replace(/"$/, '');
225
+ break;
226
+ }
227
+ }
228
+ }
229
+ if (!sqlText)
230
+ return null;
231
+ const { table, operation, fields } = this.parseSQLStatement(sqlText);
232
+ if (!table || table === 'unknown')
233
+ return null;
234
+ return this.createAccessPoint({
235
+ table,
236
+ fields,
237
+ operation,
238
+ file: filePath,
239
+ line: node.startPosition.row + 1,
240
+ column: node.startPosition.column,
241
+ context: node.text.slice(0, 200),
242
+ isRawSql: true,
243
+ confidence: 0.9,
244
+ });
245
+ }
246
+ /**
247
+ * Try to match ADO.NET pattern
248
+ */
249
+ tryAdoNetPattern(chain, node, filePath, _source) {
250
+ const adoMethods = {
251
+ read: ['ExecuteReader', 'ExecuteReaderAsync', 'ExecuteScalar', 'ExecuteScalarAsync'],
252
+ write: ['ExecuteNonQuery', 'ExecuteNonQueryAsync'],
253
+ };
254
+ let operation = null;
255
+ for (const item of chain) {
256
+ const methodName = item.names[0] ?? '';
257
+ if (adoMethods.read.includes(methodName)) {
258
+ operation = 'read';
259
+ break;
260
+ }
261
+ if (adoMethods.write.includes(methodName)) {
262
+ operation = 'write';
263
+ break;
264
+ }
265
+ }
266
+ if (!operation)
267
+ return null;
268
+ return this.createAccessPoint({
269
+ table: 'unknown',
270
+ fields: [],
271
+ operation,
272
+ file: filePath,
273
+ line: node.startPosition.row + 1,
274
+ column: node.startPosition.column,
275
+ context: node.text.slice(0, 200),
276
+ isRawSql: true,
277
+ confidence: 0.7,
278
+ });
279
+ }
280
+ /**
281
+ * Try to match EF Core raw SQL pattern
282
+ */
283
+ tryEFRawSqlPattern(chain, node, filePath, _source) {
284
+ const rawSqlMethods = ['ExecuteSqlRaw', 'ExecuteSqlRawAsync',
285
+ 'ExecuteSqlInterpolated', 'ExecuteSqlInterpolatedAsync',
286
+ 'FromSqlRaw', 'FromSqlInterpolated'];
287
+ const methodItem = chain.find(item => rawSqlMethods.includes(item.names[0] ?? ''));
288
+ if (!methodItem)
289
+ return null;
290
+ if (!chain.some(item => item.names[0] === 'Database'))
291
+ return null;
292
+ const argsNode = methodItem.node.childForFieldName('arguments');
293
+ if (!argsNode)
294
+ return null;
295
+ let sqlText = '';
296
+ for (const arg of argsNode.children) {
297
+ if (arg.type === 'argument') {
298
+ const expr = arg.childForFieldName('expression');
299
+ if (expr?.type === 'string_literal' || expr?.type === 'verbatim_string_literal' ||
300
+ expr?.type === 'interpolated_string_expression') {
301
+ sqlText = expr.text.replace(/^[@$]?"/, '').replace(/"$/, '');
302
+ break;
303
+ }
304
+ }
305
+ }
306
+ if (!sqlText)
307
+ return null;
308
+ const { table, operation, fields } = this.parseSQLStatement(sqlText);
309
+ return this.createAccessPoint({
310
+ table: table || 'unknown',
311
+ fields,
312
+ operation: operation || 'unknown',
313
+ file: filePath,
314
+ line: node.startPosition.row + 1,
315
+ column: node.startPosition.column,
316
+ context: node.text.slice(0, 200),
317
+ isRawSql: true,
318
+ confidence: 0.85,
319
+ });
320
+ }
321
+ /**
322
+ * Analyze LINQ query expressions
323
+ */
324
+ analyzeLinqQuery(node, result, filePath, _source) {
325
+ const fromClause = node.children.find(c => c.type === 'from_clause');
326
+ if (!fromClause)
327
+ return;
328
+ const inExpr = fromClause.childForFieldName('expression');
329
+ if (!inExpr)
330
+ return;
331
+ let tableName = 'unknown';
332
+ if (inExpr.type === 'member_access_expression') {
333
+ const memberName = inExpr.childForFieldName('name')?.text;
334
+ if (memberName && /^[A-Z]/.test(memberName)) {
335
+ tableName = this.inferTableFromName(memberName);
336
+ }
337
+ }
338
+ const accessPoint = this.createAccessPoint({
339
+ table: tableName,
340
+ fields: [],
341
+ operation: 'read',
342
+ file: filePath,
343
+ line: node.startPosition.row + 1,
344
+ column: node.startPosition.column,
345
+ context: node.text.slice(0, 200),
346
+ confidence: 0.9,
347
+ });
348
+ const exists = result.accessPoints.some(ap => ap.id === accessPoint.id);
349
+ if (!exists) {
350
+ result.accessPoints.push(accessPoint);
351
+ }
352
+ }
353
+ /**
354
+ * Parse a SQL statement to extract table, operation, and fields
355
+ */
356
+ parseSQLStatement(sql) {
357
+ const upperSql = sql.toUpperCase().trim();
358
+ let operation = 'unknown';
359
+ let table = 'unknown';
360
+ const fields = [];
361
+ if (upperSql.startsWith('SELECT'))
362
+ operation = 'read';
363
+ else if (upperSql.startsWith('INSERT'))
364
+ operation = 'write';
365
+ else if (upperSql.startsWith('UPDATE'))
366
+ operation = 'write';
367
+ else if (upperSql.startsWith('DELETE'))
368
+ operation = 'delete';
369
+ const fromMatch = sql.match(/FROM\s+["'`\[]?(\w+)["'`\]]?/i);
370
+ const intoMatch = sql.match(/INTO\s+["'`\[]?(\w+)["'`\]]?/i);
371
+ const updateMatch = sql.match(/UPDATE\s+["'`\[]?(\w+)["'`\]]?/i);
372
+ if (fromMatch?.[1])
373
+ table = fromMatch[1];
374
+ else if (intoMatch?.[1])
375
+ table = intoMatch[1];
376
+ else if (updateMatch?.[1])
377
+ table = updateMatch[1];
378
+ return { table, operation, fields };
379
+ }
380
+ }
381
+ /**
382
+ * Create a C# data access extractor
383
+ */
384
+ export function createCSharpDataAccessExtractor() {
385
+ return new CSharpDataAccessExtractor();
386
+ }
387
+ //# sourceMappingURL=csharp-data-access-extractor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"csharp-data-access-extractor.js","sourceRoot":"","sources":["../../../src/call-graph/extractors/csharp-data-access-extractor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,uBAAuB,EAAmC,MAAM,4BAA4B,CAAC;AAGtG,OAAO,EACL,2BAA2B,EAC3B,kBAAkB,GACnB,MAAM,4CAA4C,CAAC;AAGpD;;GAEG;AACH,MAAM,OAAO,yBAA0B,SAAQ,uBAAuB;IAC3D,QAAQ,GAAsB,QAAQ,CAAC;IACvC,UAAU,GAAa,CAAC,KAAK,CAAC,CAAC;IAEhC,MAAM,GAA4B,IAAI,CAAC;IAE/C;;OAEG;IACH,MAAM,CAAC,WAAW;QAChB,OAAO,2BAA2B,EAAE,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,MAAc,EAAE,QAAgB;QACtC,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAEhD,IAAI,CAAC,2BAA2B,EAAE,EAAE,CAAC;YACnC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;YAC/D,OAAO,MAAM,CAAC;QAChB,CAAC;QAGD,IAAI,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACjB,IAAI,CAAC,MAAM,GAAG,kBAAkB,EAAE,CAAC;YACrC,CAAC;YAED,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACvC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QAE1D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC;QACrF,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACK,SAAS,CACf,IAAoB,EACpB,MAAkC,EAClC,QAAgB,EAChB,MAAc;QAEd,kDAAkD;QAClD,IAAI,IAAI,CAAC,IAAI,KAAK,uBAAuB,EAAE,CAAC;YAC1C,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QACzD,CAAC;QAED,mCAAmC;QACnC,IAAI,IAAI,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;YACrC,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QACxD,CAAC;QAED,wBAAwB;QACxB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAED;;OAEG;IACK,iBAAiB,CACvB,IAAoB,EACpB,MAAkC,EAClC,QAAgB,EAChB,MAAc;QAEd,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAE5C,MAAM,WAAW,GACf,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC;YAC5C,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC;YACpD,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC;YACpD,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QAEzD,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,WAAW,CAAC,EAAE,CAAC,CAAC;YACxE,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACxC,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACK,kBAAkB,CAAC,IAAoB;QAC7C,MAAM,KAAK,GAAgD,EAAE,CAAC;QAC9D,IAAI,OAAO,GAA0B,IAAI,CAAC;QAE1C,OAAO,OAAO,EAAE,CAAC;YACf,IAAI,OAAO,CAAC,IAAI,KAAK,uBAAuB,EAAE,CAAC;gBAC7C,MAAM,QAAQ,GAAG,OAAO,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;gBACvD,IAAI,QAAQ,EAAE,IAAI,KAAK,0BAA0B,EAAE,CAAC;oBAClD,MAAM,UAAU,GAAG,QAAQ,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC;oBAC5D,IAAI,UAAU,EAAE,CAAC;wBACf,KAAK,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;oBACxD,CAAC;oBACD,OAAO,GAAG,QAAQ,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;gBACrD,CAAC;qBAAM,IAAI,QAAQ,EAAE,IAAI,KAAK,YAAY,EAAE,CAAC;oBAC3C,KAAK,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;oBACzD,MAAM;gBACR,CAAC;qBAAM,CAAC;oBACN,MAAM;gBACR,CAAC;YACH,CAAC;iBAAM,IAAI,OAAO,CAAC,IAAI,KAAK,0BAA0B,EAAE,CAAC;gBACvD,MAAM,UAAU,GAAG,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC;gBAC3D,IAAI,UAAU,EAAE,CAAC;oBACf,KAAK,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;gBACxD,CAAC;gBACD,OAAO,GAAG,OAAO,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;YACpD,CAAC;iBAAM,IAAI,OAAO,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBACzC,KAAK,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;gBACxD,MAAM;YACR,CAAC;iBAAM,CAAC;gBACN,MAAM;YACR,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAGD;;OAEG;IACK,gBAAgB,CACtB,KAAkD,EAClD,IAAoB,EACpB,QAAgB;QAEhB,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QAElC,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;QAC1D,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9F,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QACrC,IAAI,CAAC,SAAS,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC;YAAE,OAAO,IAAI,CAAC;QAEzD,MAAM,SAAS,GAAG;YAChB,IAAI,EAAE,CAAC,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,OAAO,EAAE,YAAY;gBACvE,QAAQ,EAAE,iBAAiB,EAAE,aAAa,EAAE,sBAAsB;gBAClE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,cAAc;gBAClD,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU;gBACzD,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,cAAc;gBACnE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,CAAC;YAChF,KAAK,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,eAAe;gBAC9C,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,aAAa,CAAC;YACzD,MAAM,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC;SAClC,CAAC;QAEF,IAAI,SAAS,GAAkB,MAAM,CAAC;QACtC,MAAM,WAAW,GAAa,EAAE,CAAC;QAEjC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACjC,IAAI,CAAC,UAAU;gBAAE,SAAS;YAE1B,IAAI,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;gBACzC,SAAS,GAAG,OAAO,CAAC;gBACpB,MAAM;YACR,CAAC;YACD,IAAI,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC1C,SAAS,GAAG,QAAQ,CAAC;gBACrB,MAAM;YACR,CAAC;YAED,sDAAsD;YACtD,IAAI,UAAU,KAAK,OAAO,IAAI,UAAU,KAAK,gBAAgB,IAAI,UAAU,KAAK,QAAQ;gBACpF,UAAU,KAAK,KAAK,IAAI,UAAU,KAAK,KAAK,IAAI,UAAU,KAAK,OAAO,EAAE,CAAC;gBAC3E,MAAM,eAAe,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAChE,WAAW,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,CAAC;YACvC,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC,iBAAiB,CAAC;YAC5B,KAAK,EAAE,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC;YACzC,MAAM,EAAE,WAAW;YACnB,SAAS;YACT,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC;YAChC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM;YACjC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;YAChC,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACK,uBAAuB,CAAC,IAAoB;QAClD,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,sCAAsC;QACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;QACrD,IAAI,CAAC,QAAQ;YAAE,OAAO,MAAM,CAAC;QAE7B,mDAAmD;QACnD,MAAM,gBAAgB,GAAG,CAAC,CAAiB,EAAQ,EAAE;YACnD,IAAI,CAAC,CAAC,IAAI,KAAK,0BAA0B,EAAE,CAAC;gBAC1C,MAAM,UAAU,GAAG,CAAC,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC;gBACrD,IAAI,UAAU,IAAI,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;oBAC5C,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC1B,CAAC;YACH,CAAC;YACD,KAAK,MAAM,KAAK,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAC/B,gBAAgB,CAAC,KAAK,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC,CAAC;QAEF,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAC3B,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IAC9B,CAAC;IAED;;OAEG;IACK,gBAAgB,CACtB,KAAkD,EAClD,IAAoB,EACpB,QAAgB,EAChB,OAAe;QAEf,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,iBAAiB;YACvD,qBAAqB,EAAE,0BAA0B;YACjD,aAAa,EAAE,kBAAkB,EAAE,sBAAsB;YACzD,2BAA2B,EAAE,eAAe,EAAE,oBAAoB;YAClE,SAAS,EAAE,cAAc,EAAE,eAAe,EAAE,oBAAoB,CAAC,CAAC;QAExF,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACnF,IAAI,CAAC,UAAU;YAAE,OAAO,IAAI,CAAC;QAE7B,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;QAChE,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC;QAE3B,IAAI,OAAO,GAAG,EAAE,CAAC;QACjB,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACpC,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBAC5B,MAAM,IAAI,GAAG,GAAG,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;gBACjD,IAAI,IAAI,EAAE,IAAI,KAAK,gBAAgB,IAAI,IAAI,EAAE,IAAI,KAAK,yBAAyB,EAAE,CAAC;oBAChF,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;oBAC7D,MAAM;gBACR,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAE1B,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QACrE,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QAE/C,OAAO,IAAI,CAAC,iBAAiB,CAAC;YAC5B,KAAK;YACL,MAAM;YACN,SAAS;YACT,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC;YAChC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM;YACjC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;YAChC,QAAQ,EAAE,IAAI;YACd,UAAU,EAAE,GAAG;SAChB,CAAC,CAAC;IACL,CAAC;IAGD;;OAEG;IACK,gBAAgB,CACtB,KAAkD,EAClD,IAAoB,EACpB,QAAgB,EAChB,OAAe;QAEf,MAAM,UAAU,GAAG;YACjB,IAAI,EAAE,CAAC,eAAe,EAAE,oBAAoB,EAAE,eAAe,EAAE,oBAAoB,CAAC;YACpF,KAAK,EAAE,CAAC,iBAAiB,EAAE,sBAAsB,CAAC;SACnD,CAAC;QAEF,IAAI,SAAS,GAAyB,IAAI,CAAC;QAC3C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACvC,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;gBACzC,SAAS,GAAG,MAAM,CAAC;gBACnB,MAAM;YACR,CAAC;YACD,IAAI,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC1C,SAAS,GAAG,OAAO,CAAC;gBACpB,MAAM;YACR,CAAC;QACH,CAAC;QAED,IAAI,CAAC,SAAS;YAAE,OAAO,IAAI,CAAC;QAE5B,OAAO,IAAI,CAAC,iBAAiB,CAAC;YAC5B,KAAK,EAAE,SAAS;YAChB,MAAM,EAAE,EAAE;YACV,SAAS;YACT,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC;YAChC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM;YACjC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;YAChC,QAAQ,EAAE,IAAI;YACd,UAAU,EAAE,GAAG;SAChB,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,kBAAkB,CACxB,KAAkD,EAClD,IAAoB,EACpB,QAAgB,EAChB,OAAe;QAEf,MAAM,aAAa,GAAG,CAAC,eAAe,EAAE,oBAAoB;YACtC,wBAAwB,EAAE,6BAA6B;YACvD,YAAY,EAAE,qBAAqB,CAAC,CAAC;QAE3D,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACnF,IAAI,CAAC,UAAU;YAAE,OAAO,IAAI,CAAC;QAE7B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC;YAAE,OAAO,IAAI,CAAC;QAEnE,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;QAChE,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC;QAE3B,IAAI,OAAO,GAAG,EAAE,CAAC;QACjB,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACpC,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBAC5B,MAAM,IAAI,GAAG,GAAG,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;gBACjD,IAAI,IAAI,EAAE,IAAI,KAAK,gBAAgB,IAAI,IAAI,EAAE,IAAI,KAAK,yBAAyB;oBAC3E,IAAI,EAAE,IAAI,KAAK,gCAAgC,EAAE,CAAC;oBACpD,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;oBAC7D,MAAM;gBACR,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAE1B,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAErE,OAAO,IAAI,CAAC,iBAAiB,CAAC;YAC5B,KAAK,EAAE,KAAK,IAAI,SAAS;YACzB,MAAM;YACN,SAAS,EAAE,SAAS,IAAI,SAAS;YACjC,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC;YAChC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM;YACjC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;YAChC,QAAQ,EAAE,IAAI;YACd,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,gBAAgB,CACtB,IAAoB,EACpB,MAAkC,EAClC,QAAgB,EAChB,OAAe;QAEf,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,CAAC;QACrE,IAAI,CAAC,UAAU;YAAE,OAAO;QAExB,MAAM,MAAM,GAAG,UAAU,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;QAC1D,IAAI,CAAC,MAAM;YAAE,OAAO;QAEpB,IAAI,SAAS,GAAG,SAAS,CAAC;QAC1B,IAAI,MAAM,CAAC,IAAI,KAAK,0BAA0B,EAAE,CAAC;YAC/C,MAAM,UAAU,GAAG,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC;YAC1D,IAAI,UAAU,IAAI,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC5C,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC;YACzC,KAAK,EAAE,SAAS;YAChB,MAAM,EAAE,EAAE;YACV,SAAS,EAAE,MAAM;YACjB,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC;YAChC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM;YACjC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;YAChC,UAAU,EAAE,GAAG;SAChB,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,WAAW,CAAC,EAAE,CAAC,CAAC;QACxE,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAED;;OAEG;IACK,iBAAiB,CAAC,GAAW;QACnC,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;QAC1C,IAAI,SAAS,GAAkB,SAAS,CAAC;QACzC,IAAI,KAAK,GAAG,SAAS,CAAC;QACtB,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,IAAI,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC;YAAE,SAAS,GAAG,MAAM,CAAC;aACjD,IAAI,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC;YAAE,SAAS,GAAG,OAAO,CAAC;aACvD,IAAI,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC;YAAE,SAAS,GAAG,OAAO,CAAC;aACvD,IAAI,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC;YAAE,SAAS,GAAG,QAAQ,CAAC;QAE7D,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;QAC7D,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;QAC7D,MAAM,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC;QAEjE,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC;YAAE,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;aACpC,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC;YAAE,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;aACzC,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC;YAAE,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QAElD,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;IACtC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,+BAA+B;IAC7C,OAAO,IAAI,yBAAyB,EAAE,CAAC;AACzC,CAAC"}
@@ -0,0 +1,87 @@
1
+ /**
2
+ * C# Call Graph Extractor
3
+ *
4
+ * Extracts functions, calls, imports, and exports from C#
5
+ * using tree-sitter for AST parsing.
6
+ *
7
+ * Handles:
8
+ * - Method definitions (regular, static, async)
9
+ * - Constructors
10
+ * - Properties with getters/setters
11
+ * - Class hierarchies
12
+ * - Namespace imports (using statements)
13
+ * - Lambda expressions
14
+ * - LINQ queries
15
+ * - ASP.NET controller actions
16
+ */
17
+ import { BaseCallGraphExtractor } from './base-extractor.js';
18
+ import type { CallGraphLanguage, FileExtractionResult } from '../types.js';
19
+ /**
20
+ * C# call graph extractor using tree-sitter
21
+ */
22
+ export declare class CSharpCallGraphExtractor extends BaseCallGraphExtractor {
23
+ readonly language: CallGraphLanguage;
24
+ readonly extensions: string[];
25
+ private parser;
26
+ /**
27
+ * Check if tree-sitter is available
28
+ */
29
+ static isAvailable(): boolean;
30
+ /**
31
+ * Extract call graph information from C# source
32
+ */
33
+ extract(source: string, filePath: string): FileExtractionResult;
34
+ /**
35
+ * Visit a tree-sitter node and extract information
36
+ */
37
+ private visitNode;
38
+ /**
39
+ * Extract namespace and visit children with namespace context
40
+ */
41
+ private extractNamespace;
42
+ /**
43
+ * Extract a class/record/struct declaration
44
+ */
45
+ private extractClassDeclaration;
46
+ /**
47
+ * Extract an interface declaration
48
+ */
49
+ private extractInterfaceDeclaration;
50
+ /**
51
+ * Extract a method declaration
52
+ */
53
+ private extractMethodDeclaration;
54
+ /**
55
+ * Extract a constructor declaration
56
+ */
57
+ private extractConstructorDeclaration;
58
+ /**
59
+ * Extract a using directive
60
+ */
61
+ private extractUsingDirective;
62
+ /**
63
+ * Extract an invocation expression (method call)
64
+ */
65
+ private extractInvocationExpression;
66
+ /**
67
+ * Extract an object creation expression (new Foo())
68
+ */
69
+ private extractObjectCreation;
70
+ /**
71
+ * Extract calls from a method body
72
+ */
73
+ private extractCallsFromBody;
74
+ /**
75
+ * Extract parameters from a parameter list
76
+ */
77
+ private extractParameters;
78
+ /**
79
+ * Extract attributes (decorators) from a node
80
+ */
81
+ private extractAttributes;
82
+ /**
83
+ * Check if a node has a specific modifier
84
+ */
85
+ private hasModifier;
86
+ }
87
+ //# sourceMappingURL=csharp-extractor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"csharp-extractor.d.ts","sourceRoot":"","sources":["../../../src/call-graph/extractors/csharp-extractor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,KAAK,EACV,iBAAiB,EACjB,oBAAoB,EAErB,MAAM,aAAa,CAAC;AAOrB;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,sBAAsB;IAClE,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAY;IAChD,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,CAAW;IAExC,OAAO,CAAC,MAAM,CAAiC;IAE/C;;OAEG;IACH,MAAM,CAAC,WAAW,IAAI,OAAO;IAI7B;;OAEG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,oBAAoB;IAuB/D;;OAEG;IACH,OAAO,CAAC,SAAS;IAmDjB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAoBxB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAyD/B;;OAEG;IACH,OAAO,CAAC,2BAA2B;IA2CnC;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAyDhC;;OAEG;IACH,OAAO,CAAC,6BAA6B;IAkDrC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAmB7B;;OAEG;IACH,OAAO,CAAC,2BAA2B;IA4DnC;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAsD7B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAyB5B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAuBzB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAiBzB;;OAEG;IACH,OAAO,CAAC,WAAW;CAQpB"}