driftdetect-core 0.4.4 → 0.4.6

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 (277) hide show
  1. package/LICENSE +21 -0
  2. package/dist/boundaries/boundary-scanner.d.ts.map +1 -1
  3. package/dist/boundaries/boundary-scanner.js +184 -18
  4. package/dist/boundaries/boundary-scanner.js.map +1 -1
  5. package/dist/boundaries/types.d.ts +34 -2
  6. package/dist/boundaries/types.d.ts.map +1 -1
  7. package/dist/call-graph/analysis/graph-builder.d.ts +3 -0
  8. package/dist/call-graph/analysis/graph-builder.d.ts.map +1 -1
  9. package/dist/call-graph/analysis/graph-builder.js +81 -18
  10. package/dist/call-graph/analysis/graph-builder.js.map +1 -1
  11. package/dist/call-graph/extractors/csharp-data-access-extractor.d.ts.map +1 -1
  12. package/dist/call-graph/extractors/csharp-data-access-extractor.js +10 -5
  13. package/dist/call-graph/extractors/csharp-data-access-extractor.js.map +1 -1
  14. package/dist/call-graph/extractors/data-access-extractor.d.ts +16 -2
  15. package/dist/call-graph/extractors/data-access-extractor.d.ts.map +1 -1
  16. package/dist/call-graph/extractors/data-access-extractor.js +114 -5
  17. package/dist/call-graph/extractors/data-access-extractor.js.map +1 -1
  18. package/dist/call-graph/extractors/java-data-access-extractor.d.ts.map +1 -1
  19. package/dist/call-graph/extractors/java-data-access-extractor.js +12 -6
  20. package/dist/call-graph/extractors/java-data-access-extractor.js.map +1 -1
  21. package/dist/call-graph/extractors/php-data-access-extractor.d.ts.map +1 -1
  22. package/dist/call-graph/extractors/php-data-access-extractor.js +12 -6
  23. package/dist/call-graph/extractors/php-data-access-extractor.js.map +1 -1
  24. package/dist/call-graph/extractors/python-data-access-extractor.d.ts.map +1 -1
  25. package/dist/call-graph/extractors/python-data-access-extractor.js +12 -6
  26. package/dist/call-graph/extractors/python-data-access-extractor.js.map +1 -1
  27. package/dist/call-graph/extractors/semantic-data-access-scanner.d.ts +4 -0
  28. package/dist/call-graph/extractors/semantic-data-access-scanner.d.ts.map +1 -1
  29. package/dist/call-graph/extractors/semantic-data-access-scanner.js +46 -2
  30. package/dist/call-graph/extractors/semantic-data-access-scanner.js.map +1 -1
  31. package/dist/call-graph/extractors/typescript-data-access-extractor.d.ts.map +1 -1
  32. package/dist/call-graph/extractors/typescript-data-access-extractor.js +23 -10
  33. package/dist/call-graph/extractors/typescript-data-access-extractor.js.map +1 -1
  34. package/dist/call-graph/index.d.ts +2 -4
  35. package/dist/call-graph/index.d.ts.map +1 -1
  36. package/dist/call-graph/index.js +5 -6
  37. package/dist/call-graph/index.js.map +1 -1
  38. package/dist/index.d.ts +4 -2
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +15 -5
  41. package/dist/index.js.map +1 -1
  42. package/dist/language-intelligence/base-normalizer.d.ts +68 -0
  43. package/dist/language-intelligence/base-normalizer.d.ts.map +1 -0
  44. package/dist/language-intelligence/base-normalizer.js +210 -0
  45. package/dist/language-intelligence/base-normalizer.js.map +1 -0
  46. package/dist/language-intelligence/framework-registry.d.ts +89 -0
  47. package/dist/language-intelligence/framework-registry.d.ts.map +1 -0
  48. package/dist/language-intelligence/framework-registry.js +165 -0
  49. package/dist/language-intelligence/framework-registry.js.map +1 -0
  50. package/dist/language-intelligence/frameworks/aspnet.d.ts +11 -0
  51. package/dist/language-intelligence/frameworks/aspnet.d.ts.map +1 -0
  52. package/dist/language-intelligence/frameworks/aspnet.js +325 -0
  53. package/dist/language-intelligence/frameworks/aspnet.js.map +1 -0
  54. package/dist/language-intelligence/frameworks/fastapi.d.ts +11 -0
  55. package/dist/language-intelligence/frameworks/fastapi.d.ts.map +1 -0
  56. package/dist/language-intelligence/frameworks/fastapi.js +188 -0
  57. package/dist/language-intelligence/frameworks/fastapi.js.map +1 -0
  58. package/dist/language-intelligence/frameworks/index.d.ts +32 -0
  59. package/dist/language-intelligence/frameworks/index.d.ts.map +1 -0
  60. package/dist/language-intelligence/frameworks/index.js +51 -0
  61. package/dist/language-intelligence/frameworks/index.js.map +1 -0
  62. package/dist/language-intelligence/frameworks/laravel.d.ts +12 -0
  63. package/dist/language-intelligence/frameworks/laravel.d.ts.map +1 -0
  64. package/dist/language-intelligence/frameworks/laravel.js +194 -0
  65. package/dist/language-intelligence/frameworks/laravel.js.map +1 -0
  66. package/dist/language-intelligence/frameworks/nestjs.d.ts +11 -0
  67. package/dist/language-intelligence/frameworks/nestjs.d.ts.map +1 -0
  68. package/dist/language-intelligence/frameworks/nestjs.js +307 -0
  69. package/dist/language-intelligence/frameworks/nestjs.js.map +1 -0
  70. package/dist/language-intelligence/frameworks/spring.d.ts +11 -0
  71. package/dist/language-intelligence/frameworks/spring.d.ts.map +1 -0
  72. package/dist/language-intelligence/frameworks/spring.js +369 -0
  73. package/dist/language-intelligence/frameworks/spring.js.map +1 -0
  74. package/dist/language-intelligence/index.d.ts +33 -0
  75. package/dist/language-intelligence/index.d.ts.map +1 -0
  76. package/dist/language-intelligence/index.js +37 -0
  77. package/dist/language-intelligence/index.js.map +1 -0
  78. package/dist/language-intelligence/language-intelligence.d.ts +99 -0
  79. package/dist/language-intelligence/language-intelligence.d.ts.map +1 -0
  80. package/dist/language-intelligence/language-intelligence.js +239 -0
  81. package/dist/language-intelligence/language-intelligence.js.map +1 -0
  82. package/dist/language-intelligence/normalizers/csharp-normalizer.d.ts +39 -0
  83. package/dist/language-intelligence/normalizers/csharp-normalizer.d.ts.map +1 -0
  84. package/dist/language-intelligence/normalizers/csharp-normalizer.js +86 -0
  85. package/dist/language-intelligence/normalizers/csharp-normalizer.js.map +1 -0
  86. package/dist/language-intelligence/normalizers/index.d.ts +25 -0
  87. package/dist/language-intelligence/normalizers/index.d.ts.map +1 -0
  88. package/dist/language-intelligence/normalizers/index.js +60 -0
  89. package/dist/language-intelligence/normalizers/index.js.map +1 -0
  90. package/dist/language-intelligence/normalizers/java-normalizer.d.ts +39 -0
  91. package/dist/language-intelligence/normalizers/java-normalizer.d.ts.map +1 -0
  92. package/dist/language-intelligence/normalizers/java-normalizer.js +96 -0
  93. package/dist/language-intelligence/normalizers/java-normalizer.js.map +1 -0
  94. package/dist/language-intelligence/normalizers/php-normalizer.d.ts +39 -0
  95. package/dist/language-intelligence/normalizers/php-normalizer.d.ts.map +1 -0
  96. package/dist/language-intelligence/normalizers/php-normalizer.js +86 -0
  97. package/dist/language-intelligence/normalizers/php-normalizer.js.map +1 -0
  98. package/dist/language-intelligence/normalizers/python-normalizer.d.ts +39 -0
  99. package/dist/language-intelligence/normalizers/python-normalizer.d.ts.map +1 -0
  100. package/dist/language-intelligence/normalizers/python-normalizer.js +95 -0
  101. package/dist/language-intelligence/normalizers/python-normalizer.js.map +1 -0
  102. package/dist/language-intelligence/normalizers/typescript-normalizer.d.ts +39 -0
  103. package/dist/language-intelligence/normalizers/typescript-normalizer.d.ts.map +1 -0
  104. package/dist/language-intelligence/normalizers/typescript-normalizer.js +84 -0
  105. package/dist/language-intelligence/normalizers/typescript-normalizer.js.map +1 -0
  106. package/dist/language-intelligence/types.d.ts +270 -0
  107. package/dist/language-intelligence/types.d.ts.map +1 -0
  108. package/dist/language-intelligence/types.js +9 -0
  109. package/dist/language-intelligence/types.js.map +1 -0
  110. package/dist/scanner/file-processor-worker.d.ts +66 -0
  111. package/dist/scanner/file-processor-worker.d.ts.map +1 -0
  112. package/dist/scanner/file-processor-worker.js +189 -0
  113. package/dist/scanner/file-processor-worker.js.map +1 -0
  114. package/dist/scanner/index.d.ts +2 -0
  115. package/dist/scanner/index.d.ts.map +1 -1
  116. package/dist/scanner/index.js +2 -0
  117. package/dist/scanner/index.js.map +1 -1
  118. package/dist/scanner/threaded-worker-pool.d.ts +182 -0
  119. package/dist/scanner/threaded-worker-pool.d.ts.map +1 -0
  120. package/dist/scanner/threaded-worker-pool.js +243 -0
  121. package/dist/scanner/threaded-worker-pool.js.map +1 -0
  122. package/dist/store/types.d.ts +6 -3
  123. package/dist/store/types.d.ts.map +1 -1
  124. package/dist/store/types.js.map +1 -1
  125. package/dist/unified-provider/compat/index.d.ts +11 -0
  126. package/dist/unified-provider/compat/index.d.ts.map +1 -0
  127. package/dist/unified-provider/compat/index.js +13 -0
  128. package/dist/unified-provider/compat/index.js.map +1 -0
  129. package/dist/unified-provider/compat/legacy-extractors.d.ts +63 -0
  130. package/dist/unified-provider/compat/legacy-extractors.d.ts.map +1 -0
  131. package/dist/unified-provider/compat/legacy-extractors.js +80 -0
  132. package/dist/unified-provider/compat/legacy-extractors.js.map +1 -0
  133. package/dist/unified-provider/compat/legacy-scanner.d.ts +28 -0
  134. package/dist/unified-provider/compat/legacy-scanner.d.ts.map +1 -0
  135. package/dist/unified-provider/compat/legacy-scanner.js +31 -0
  136. package/dist/unified-provider/compat/legacy-scanner.js.map +1 -0
  137. package/dist/unified-provider/index.d.ts +28 -0
  138. package/dist/unified-provider/index.d.ts.map +1 -0
  139. package/dist/unified-provider/index.js +47 -0
  140. package/dist/unified-provider/index.js.map +1 -0
  141. package/dist/unified-provider/integration/index.d.ts +9 -0
  142. package/dist/unified-provider/integration/index.d.ts.map +1 -0
  143. package/dist/unified-provider/integration/index.js +11 -0
  144. package/dist/unified-provider/integration/index.js.map +1 -0
  145. package/dist/unified-provider/integration/unified-data-access-adapter.d.ts +75 -0
  146. package/dist/unified-provider/integration/unified-data-access-adapter.d.ts.map +1 -0
  147. package/dist/unified-provider/integration/unified-data-access-adapter.js +210 -0
  148. package/dist/unified-provider/integration/unified-data-access-adapter.js.map +1 -0
  149. package/dist/unified-provider/integration/unified-scanner.d.ts +90 -0
  150. package/dist/unified-provider/integration/unified-scanner.d.ts.map +1 -0
  151. package/dist/unified-provider/integration/unified-scanner.js +369 -0
  152. package/dist/unified-provider/integration/unified-scanner.js.map +1 -0
  153. package/dist/unified-provider/matching/base-matcher.d.ts +80 -0
  154. package/dist/unified-provider/matching/base-matcher.d.ts.map +1 -0
  155. package/dist/unified-provider/matching/base-matcher.js +196 -0
  156. package/dist/unified-provider/matching/base-matcher.js.map +1 -0
  157. package/dist/unified-provider/matching/django-matcher.d.ts +32 -0
  158. package/dist/unified-provider/matching/django-matcher.d.ts.map +1 -0
  159. package/dist/unified-provider/matching/django-matcher.js +107 -0
  160. package/dist/unified-provider/matching/django-matcher.js.map +1 -0
  161. package/dist/unified-provider/matching/drizzle-matcher.d.ts +25 -0
  162. package/dist/unified-provider/matching/drizzle-matcher.d.ts.map +1 -0
  163. package/dist/unified-provider/matching/drizzle-matcher.js +123 -0
  164. package/dist/unified-provider/matching/drizzle-matcher.js.map +1 -0
  165. package/dist/unified-provider/matching/efcore-matcher.d.ts +27 -0
  166. package/dist/unified-provider/matching/efcore-matcher.d.ts.map +1 -0
  167. package/dist/unified-provider/matching/efcore-matcher.js +88 -0
  168. package/dist/unified-provider/matching/efcore-matcher.js.map +1 -0
  169. package/dist/unified-provider/matching/eloquent-matcher.d.ts +32 -0
  170. package/dist/unified-provider/matching/eloquent-matcher.d.ts.map +1 -0
  171. package/dist/unified-provider/matching/eloquent-matcher.js +162 -0
  172. package/dist/unified-provider/matching/eloquent-matcher.js.map +1 -0
  173. package/dist/unified-provider/matching/index.d.ts +19 -0
  174. package/dist/unified-provider/matching/index.d.ts.map +1 -0
  175. package/dist/unified-provider/matching/index.js +24 -0
  176. package/dist/unified-provider/matching/index.js.map +1 -0
  177. package/dist/unified-provider/matching/knex-matcher.d.ts +26 -0
  178. package/dist/unified-provider/matching/knex-matcher.d.ts.map +1 -0
  179. package/dist/unified-provider/matching/knex-matcher.js +109 -0
  180. package/dist/unified-provider/matching/knex-matcher.js.map +1 -0
  181. package/dist/unified-provider/matching/matcher-registry.d.ts +55 -0
  182. package/dist/unified-provider/matching/matcher-registry.d.ts.map +1 -0
  183. package/dist/unified-provider/matching/matcher-registry.js +130 -0
  184. package/dist/unified-provider/matching/matcher-registry.js.map +1 -0
  185. package/dist/unified-provider/matching/mongoose-matcher.d.ts +30 -0
  186. package/dist/unified-provider/matching/mongoose-matcher.d.ts.map +1 -0
  187. package/dist/unified-provider/matching/mongoose-matcher.js +132 -0
  188. package/dist/unified-provider/matching/mongoose-matcher.js.map +1 -0
  189. package/dist/unified-provider/matching/prisma-matcher.d.ts +31 -0
  190. package/dist/unified-provider/matching/prisma-matcher.d.ts.map +1 -0
  191. package/dist/unified-provider/matching/prisma-matcher.js +123 -0
  192. package/dist/unified-provider/matching/prisma-matcher.js.map +1 -0
  193. package/dist/unified-provider/matching/raw-sql-matcher.d.ts +31 -0
  194. package/dist/unified-provider/matching/raw-sql-matcher.d.ts.map +1 -0
  195. package/dist/unified-provider/matching/raw-sql-matcher.js +173 -0
  196. package/dist/unified-provider/matching/raw-sql-matcher.js.map +1 -0
  197. package/dist/unified-provider/matching/sequelize-matcher.d.ts +28 -0
  198. package/dist/unified-provider/matching/sequelize-matcher.d.ts.map +1 -0
  199. package/dist/unified-provider/matching/sequelize-matcher.js +132 -0
  200. package/dist/unified-provider/matching/sequelize-matcher.js.map +1 -0
  201. package/dist/unified-provider/matching/spring-data-matcher.d.ts +32 -0
  202. package/dist/unified-provider/matching/spring-data-matcher.d.ts.map +1 -0
  203. package/dist/unified-provider/matching/spring-data-matcher.js +112 -0
  204. package/dist/unified-provider/matching/spring-data-matcher.js.map +1 -0
  205. package/dist/unified-provider/matching/sqlalchemy-matcher.d.ts +32 -0
  206. package/dist/unified-provider/matching/sqlalchemy-matcher.d.ts.map +1 -0
  207. package/dist/unified-provider/matching/sqlalchemy-matcher.js +201 -0
  208. package/dist/unified-provider/matching/sqlalchemy-matcher.js.map +1 -0
  209. package/dist/unified-provider/matching/supabase-matcher.d.ts +27 -0
  210. package/dist/unified-provider/matching/supabase-matcher.d.ts.map +1 -0
  211. package/dist/unified-provider/matching/supabase-matcher.js +122 -0
  212. package/dist/unified-provider/matching/supabase-matcher.js.map +1 -0
  213. package/dist/unified-provider/matching/typeorm-matcher.d.ts +32 -0
  214. package/dist/unified-provider/matching/typeorm-matcher.d.ts.map +1 -0
  215. package/dist/unified-provider/matching/typeorm-matcher.js +169 -0
  216. package/dist/unified-provider/matching/typeorm-matcher.js.map +1 -0
  217. package/dist/unified-provider/migration/deprecated-extractors.d.ts +104 -0
  218. package/dist/unified-provider/migration/deprecated-extractors.d.ts.map +1 -0
  219. package/dist/unified-provider/migration/deprecated-extractors.js +129 -0
  220. package/dist/unified-provider/migration/deprecated-extractors.js.map +1 -0
  221. package/dist/unified-provider/migration/deprecated-scanner.d.ts +40 -0
  222. package/dist/unified-provider/migration/deprecated-scanner.d.ts.map +1 -0
  223. package/dist/unified-provider/migration/deprecated-scanner.js +49 -0
  224. package/dist/unified-provider/migration/deprecated-scanner.js.map +1 -0
  225. package/dist/unified-provider/migration/index.d.ts +41 -0
  226. package/dist/unified-provider/migration/index.d.ts.map +1 -0
  227. package/dist/unified-provider/migration/index.js +43 -0
  228. package/dist/unified-provider/migration/index.js.map +1 -0
  229. package/dist/unified-provider/normalization/base-normalizer.d.ts +188 -0
  230. package/dist/unified-provider/normalization/base-normalizer.d.ts.map +1 -0
  231. package/dist/unified-provider/normalization/base-normalizer.js +339 -0
  232. package/dist/unified-provider/normalization/base-normalizer.js.map +1 -0
  233. package/dist/unified-provider/normalization/csharp-normalizer.d.ts +58 -0
  234. package/dist/unified-provider/normalization/csharp-normalizer.d.ts.map +1 -0
  235. package/dist/unified-provider/normalization/csharp-normalizer.js +467 -0
  236. package/dist/unified-provider/normalization/csharp-normalizer.js.map +1 -0
  237. package/dist/unified-provider/normalization/index.d.ts +23 -0
  238. package/dist/unified-provider/normalization/index.d.ts.map +1 -0
  239. package/dist/unified-provider/normalization/index.js +62 -0
  240. package/dist/unified-provider/normalization/index.js.map +1 -0
  241. package/dist/unified-provider/normalization/java-normalizer.d.ts +54 -0
  242. package/dist/unified-provider/normalization/java-normalizer.d.ts.map +1 -0
  243. package/dist/unified-provider/normalization/java-normalizer.js +453 -0
  244. package/dist/unified-provider/normalization/java-normalizer.js.map +1 -0
  245. package/dist/unified-provider/normalization/php-normalizer.d.ts +54 -0
  246. package/dist/unified-provider/normalization/php-normalizer.d.ts.map +1 -0
  247. package/dist/unified-provider/normalization/php-normalizer.js +489 -0
  248. package/dist/unified-provider/normalization/php-normalizer.js.map +1 -0
  249. package/dist/unified-provider/normalization/python-normalizer.d.ts +61 -0
  250. package/dist/unified-provider/normalization/python-normalizer.d.ts.map +1 -0
  251. package/dist/unified-provider/normalization/python-normalizer.js +548 -0
  252. package/dist/unified-provider/normalization/python-normalizer.js.map +1 -0
  253. package/dist/unified-provider/normalization/typescript-normalizer.d.ts +60 -0
  254. package/dist/unified-provider/normalization/typescript-normalizer.d.ts.map +1 -0
  255. package/dist/unified-provider/normalization/typescript-normalizer.js +608 -0
  256. package/dist/unified-provider/normalization/typescript-normalizer.js.map +1 -0
  257. package/dist/unified-provider/parsing/index.d.ts +5 -0
  258. package/dist/unified-provider/parsing/index.d.ts.map +1 -0
  259. package/dist/unified-provider/parsing/index.js +5 -0
  260. package/dist/unified-provider/parsing/index.js.map +1 -0
  261. package/dist/unified-provider/parsing/parser-registry.d.ts +70 -0
  262. package/dist/unified-provider/parsing/parser-registry.d.ts.map +1 -0
  263. package/dist/unified-provider/parsing/parser-registry.js +260 -0
  264. package/dist/unified-provider/parsing/parser-registry.js.map +1 -0
  265. package/dist/unified-provider/provider/index.d.ts +5 -0
  266. package/dist/unified-provider/provider/index.d.ts.map +1 -0
  267. package/dist/unified-provider/provider/index.js +5 -0
  268. package/dist/unified-provider/provider/index.js.map +1 -0
  269. package/dist/unified-provider/provider/unified-language-provider.d.ts +56 -0
  270. package/dist/unified-provider/provider/unified-language-provider.d.ts.map +1 -0
  271. package/dist/unified-provider/provider/unified-language-provider.js +212 -0
  272. package/dist/unified-provider/provider/unified-language-provider.js.map +1 -0
  273. package/dist/unified-provider/types.d.ts +389 -0
  274. package/dist/unified-provider/types.d.ts.map +1 -0
  275. package/dist/unified-provider/types.js +9 -0
  276. package/dist/unified-provider/types.js.map +1 -0
  277. package/package.json +21 -17
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Parser Registry
3
+ *
4
+ * Manages tree-sitter parser instances with singleton pattern per language.
5
+ * Provides efficient parser reuse and availability checking.
6
+ */
7
+ import type { TreeSitterParser } from '../../parsers/tree-sitter/types.js';
8
+ import type { UnifiedLanguage } from '../types.js';
9
+ /**
10
+ * Parser availability status
11
+ */
12
+ export interface ParserAvailability {
13
+ language: UnifiedLanguage;
14
+ available: boolean;
15
+ reason?: string | undefined;
16
+ }
17
+ /**
18
+ * Parser Registry - Singleton manager for tree-sitter parsers
19
+ */
20
+ export declare class ParserRegistry {
21
+ private static instance;
22
+ private parsers;
23
+ private availability;
24
+ private constructor();
25
+ /**
26
+ * Get the singleton instance
27
+ */
28
+ static getInstance(): ParserRegistry;
29
+ /**
30
+ * Reset the singleton (for testing)
31
+ */
32
+ static reset(): void;
33
+ /**
34
+ * Check if a parser is available for a language
35
+ */
36
+ isAvailable(language: UnifiedLanguage): Promise<boolean>;
37
+ /**
38
+ * Get a parser for a language
39
+ */
40
+ getParser(language: UnifiedLanguage, filePath?: string): Promise<TreeSitterParser | null>;
41
+ /**
42
+ * Get availability status for all languages
43
+ */
44
+ getAllAvailability(): Promise<ParserAvailability[]>;
45
+ /**
46
+ * Get cache key for parser
47
+ */
48
+ private getCacheKey;
49
+ /**
50
+ * Check parser availability for a language
51
+ */
52
+ private checkAvailability;
53
+ /**
54
+ * Create a parser for a language
55
+ */
56
+ private createParser;
57
+ }
58
+ /**
59
+ * Get the parser registry singleton
60
+ */
61
+ export declare function getParserRegistry(): ParserRegistry;
62
+ /**
63
+ * Detect language from file path
64
+ */
65
+ export declare function detectLanguage(filePath: string): UnifiedLanguage | null;
66
+ /**
67
+ * Get file extensions for a language
68
+ */
69
+ export declare function getLanguageExtensions(language: UnifiedLanguage): string[];
70
+ //# sourceMappingURL=parser-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser-registry.d.ts","sourceRoot":"","sources":["../../../src/unified-provider/parsing/parser-registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AASnD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,eAAe,CAAC;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B;AAED;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA+B;IACtD,OAAO,CAAC,OAAO,CAA4C;IAC3D,OAAO,CAAC,YAAY,CAA4C;IAEhE,OAAO;IAEP;;OAEG;IACH,MAAM,CAAC,WAAW,IAAI,cAAc;IAOpC;;OAEG;IACH,MAAM,CAAC,KAAK,IAAI,IAAI;IAQpB;;OAEG;IACG,WAAW,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC;IAU9D;;OAEG;IACG,SAAS,CAAC,QAAQ,EAAE,eAAe,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAc/F;;OAEG;IACG,kBAAkB,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAgBzD;;OAEG;IACH,OAAO,CAAC,WAAW;IAcnB;;OAEG;YACW,iBAAiB;IA2C/B;;OAEG;YACW,YAAY;CA8C3B;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,cAAc,CAElD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAuCvE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,EAAE,CAiBzE"}
@@ -0,0 +1,260 @@
1
+ /**
2
+ * Parser Registry
3
+ *
4
+ * Manages tree-sitter parser instances with singleton pattern per language.
5
+ * Provides efficient parser reuse and availability checking.
6
+ */
7
+ // Lazy imports to avoid loading parsers until needed
8
+ let typescriptLoader = null;
9
+ let pythonLoader = null;
10
+ let javaLoader = null;
11
+ let phpLoader = null;
12
+ let csharpLoader = null;
13
+ /**
14
+ * Parser Registry - Singleton manager for tree-sitter parsers
15
+ */
16
+ export class ParserRegistry {
17
+ static instance = null;
18
+ parsers = new Map();
19
+ availability = new Map();
20
+ constructor() { }
21
+ /**
22
+ * Get the singleton instance
23
+ */
24
+ static getInstance() {
25
+ if (!ParserRegistry.instance) {
26
+ ParserRegistry.instance = new ParserRegistry();
27
+ }
28
+ return ParserRegistry.instance;
29
+ }
30
+ /**
31
+ * Reset the singleton (for testing)
32
+ */
33
+ static reset() {
34
+ if (ParserRegistry.instance) {
35
+ ParserRegistry.instance.parsers.clear();
36
+ ParserRegistry.instance.availability.clear();
37
+ }
38
+ ParserRegistry.instance = null;
39
+ }
40
+ /**
41
+ * Check if a parser is available for a language
42
+ */
43
+ async isAvailable(language) {
44
+ if (this.availability.has(language)) {
45
+ return this.availability.get(language);
46
+ }
47
+ const available = await this.checkAvailability(language);
48
+ this.availability.set(language, available);
49
+ return available;
50
+ }
51
+ /**
52
+ * Get a parser for a language
53
+ */
54
+ async getParser(language, filePath) {
55
+ const cacheKey = this.getCacheKey(language, filePath);
56
+ if (this.parsers.has(cacheKey)) {
57
+ return this.parsers.get(cacheKey);
58
+ }
59
+ const parser = await this.createParser(language, filePath);
60
+ if (parser) {
61
+ this.parsers.set(cacheKey, parser);
62
+ }
63
+ return parser;
64
+ }
65
+ /**
66
+ * Get availability status for all languages
67
+ */
68
+ async getAllAvailability() {
69
+ const languages = ['typescript', 'javascript', 'python', 'java', 'csharp', 'php'];
70
+ const results = [];
71
+ for (const language of languages) {
72
+ const available = await this.isAvailable(language);
73
+ results.push({
74
+ language,
75
+ available,
76
+ reason: available ? undefined : `Tree-sitter parser not available for ${language}`,
77
+ });
78
+ }
79
+ return results;
80
+ }
81
+ /**
82
+ * Get cache key for parser
83
+ */
84
+ getCacheKey(language, filePath) {
85
+ // TypeScript/JavaScript need different parsers for different file types
86
+ if (language === 'typescript' || language === 'javascript') {
87
+ if (filePath) {
88
+ const lower = filePath.toLowerCase();
89
+ if (lower.endsWith('.tsx'))
90
+ return 'tsx';
91
+ if (lower.endsWith('.jsx'))
92
+ return 'jsx';
93
+ if (lower.endsWith('.ts') || lower.endsWith('.mts') || lower.endsWith('.cts'))
94
+ return 'ts';
95
+ }
96
+ return language === 'typescript' ? 'ts' : 'js';
97
+ }
98
+ return language;
99
+ }
100
+ /**
101
+ * Check parser availability for a language
102
+ */
103
+ async checkAvailability(language) {
104
+ try {
105
+ switch (language) {
106
+ case 'typescript':
107
+ case 'javascript': {
108
+ if (!typescriptLoader) {
109
+ typescriptLoader = await import('../../parsers/tree-sitter/typescript-loader.js');
110
+ }
111
+ return typescriptLoader.isTypeScriptTreeSitterAvailable() ||
112
+ typescriptLoader.isJavaScriptTreeSitterAvailable();
113
+ }
114
+ case 'python': {
115
+ if (!pythonLoader) {
116
+ pythonLoader = await import('../../parsers/tree-sitter/loader.js');
117
+ }
118
+ return pythonLoader.isTreeSitterAvailable();
119
+ }
120
+ case 'java': {
121
+ if (!javaLoader) {
122
+ javaLoader = await import('../../parsers/tree-sitter/java-loader.js');
123
+ }
124
+ return javaLoader.isJavaTreeSitterAvailable();
125
+ }
126
+ case 'php': {
127
+ if (!phpLoader) {
128
+ phpLoader = await import('../../parsers/tree-sitter/php-loader.js');
129
+ }
130
+ return phpLoader.isPhpTreeSitterAvailable();
131
+ }
132
+ case 'csharp': {
133
+ if (!csharpLoader) {
134
+ csharpLoader = await import('../../parsers/tree-sitter/csharp-loader.js');
135
+ }
136
+ return csharpLoader.isCSharpTreeSitterAvailable();
137
+ }
138
+ default:
139
+ return false;
140
+ }
141
+ }
142
+ catch {
143
+ return false;
144
+ }
145
+ }
146
+ /**
147
+ * Create a parser for a language
148
+ */
149
+ async createParser(language, filePath) {
150
+ try {
151
+ switch (language) {
152
+ case 'typescript':
153
+ case 'javascript': {
154
+ if (!typescriptLoader) {
155
+ typescriptLoader = await import('../../parsers/tree-sitter/typescript-loader.js');
156
+ }
157
+ if (filePath) {
158
+ return typescriptLoader.createParserForFile(filePath);
159
+ }
160
+ return language === 'typescript'
161
+ ? typescriptLoader.createTypeScriptParser()
162
+ : typescriptLoader.createJavaScriptParser();
163
+ }
164
+ case 'python': {
165
+ if (!pythonLoader) {
166
+ pythonLoader = await import('../../parsers/tree-sitter/loader.js');
167
+ }
168
+ return pythonLoader.createPythonParser();
169
+ }
170
+ case 'java': {
171
+ if (!javaLoader) {
172
+ javaLoader = await import('../../parsers/tree-sitter/java-loader.js');
173
+ }
174
+ return javaLoader.createJavaParser();
175
+ }
176
+ case 'php': {
177
+ if (!phpLoader) {
178
+ phpLoader = await import('../../parsers/tree-sitter/php-loader.js');
179
+ }
180
+ return phpLoader.createPhpParser();
181
+ }
182
+ case 'csharp': {
183
+ if (!csharpLoader) {
184
+ csharpLoader = await import('../../parsers/tree-sitter/csharp-loader.js');
185
+ }
186
+ return csharpLoader.createCSharpParser();
187
+ }
188
+ default:
189
+ return null;
190
+ }
191
+ }
192
+ catch {
193
+ return null;
194
+ }
195
+ }
196
+ }
197
+ /**
198
+ * Get the parser registry singleton
199
+ */
200
+ export function getParserRegistry() {
201
+ return ParserRegistry.getInstance();
202
+ }
203
+ /**
204
+ * Detect language from file path
205
+ */
206
+ export function detectLanguage(filePath) {
207
+ const lower = filePath.toLowerCase();
208
+ // TypeScript
209
+ if (lower.endsWith('.ts') || lower.endsWith('.tsx') ||
210
+ lower.endsWith('.mts') || lower.endsWith('.cts')) {
211
+ return 'typescript';
212
+ }
213
+ // JavaScript
214
+ if (lower.endsWith('.js') || lower.endsWith('.jsx') ||
215
+ lower.endsWith('.mjs') || lower.endsWith('.cjs')) {
216
+ return 'javascript';
217
+ }
218
+ // Python
219
+ if (lower.endsWith('.py') || lower.endsWith('.pyw') || lower.endsWith('.pyi')) {
220
+ return 'python';
221
+ }
222
+ // Java
223
+ if (lower.endsWith('.java')) {
224
+ return 'java';
225
+ }
226
+ // C#
227
+ if (lower.endsWith('.cs')) {
228
+ return 'csharp';
229
+ }
230
+ // PHP
231
+ if (lower.endsWith('.php') || lower.endsWith('.phtml') ||
232
+ lower.endsWith('.php3') || lower.endsWith('.php4') ||
233
+ lower.endsWith('.php5') || lower.endsWith('.php7') ||
234
+ lower.endsWith('.phps')) {
235
+ return 'php';
236
+ }
237
+ return null;
238
+ }
239
+ /**
240
+ * Get file extensions for a language
241
+ */
242
+ export function getLanguageExtensions(language) {
243
+ switch (language) {
244
+ case 'typescript':
245
+ return ['.ts', '.tsx', '.mts', '.cts'];
246
+ case 'javascript':
247
+ return ['.js', '.jsx', '.mjs', '.cjs'];
248
+ case 'python':
249
+ return ['.py', '.pyw', '.pyi'];
250
+ case 'java':
251
+ return ['.java'];
252
+ case 'csharp':
253
+ return ['.cs'];
254
+ case 'php':
255
+ return ['.php', '.phtml', '.php3', '.php4', '.php5', '.php7', '.phps'];
256
+ default:
257
+ return [];
258
+ }
259
+ }
260
+ //# sourceMappingURL=parser-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser-registry.js","sourceRoot":"","sources":["../../../src/unified-provider/parsing/parser-registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Provider Module Exports
3
+ */
4
+ export { UnifiedLanguageProvider, createUnifiedProvider, } from './unified-language-provider.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/unified-provider/provider/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,gCAAgC,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Provider Module Exports
3
+ */
4
+ export { UnifiedLanguageProvider, createUnifiedProvider, } from './unified-language-provider.js';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/unified-provider/provider/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,gCAAgC,CAAC"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Unified Language Provider
3
+ *
4
+ * Main orchestrator for language-agnostic code extraction.
5
+ * Coordinates parsing, normalization, and pattern matching
6
+ * to produce unified extraction results.
7
+ */
8
+ import type { UnifiedLanguage, UnifiedExtractionResult, UnifiedProviderOptions } from '../types.js';
9
+ /**
10
+ * Unified Language Provider
11
+ *
12
+ * Single entry point for extracting code information from any supported language.
13
+ */
14
+ export declare class UnifiedLanguageProvider {
15
+ private options;
16
+ private parserRegistry;
17
+ private matcherRegistry;
18
+ constructor(options?: UnifiedProviderOptions);
19
+ /**
20
+ * Extract all information from a source file
21
+ */
22
+ extract(source: string, filePath: string): Promise<UnifiedExtractionResult>;
23
+ /**
24
+ * Extract using a normalizer
25
+ */
26
+ private extractWithNormalizer;
27
+ /**
28
+ * Match call chains against patterns to find data access points
29
+ */
30
+ private matchDataAccess;
31
+ /**
32
+ * Create an empty result with errors
33
+ */
34
+ private createEmptyResult;
35
+ /**
36
+ * Check if a language is supported
37
+ */
38
+ isLanguageSupported(language: UnifiedLanguage): Promise<boolean>;
39
+ /**
40
+ * Get all supported languages
41
+ */
42
+ getSupportedLanguages(): Promise<UnifiedLanguage[]>;
43
+ /**
44
+ * Get provider options
45
+ */
46
+ getOptions(): Required<UnifiedProviderOptions>;
47
+ /**
48
+ * Update provider options
49
+ */
50
+ setOptions(options: Partial<UnifiedProviderOptions>): void;
51
+ }
52
+ /**
53
+ * Create a unified language provider
54
+ */
55
+ export declare function createUnifiedProvider(options?: UnifiedProviderOptions): UnifiedLanguageProvider;
56
+ //# sourceMappingURL=unified-language-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unified-language-provider.d.ts","sourceRoot":"","sources":["../../../src/unified-provider/provider/unified-language-provider.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,OAAO,KAAK,EACV,eAAe,EACf,uBAAuB,EAEvB,sBAAsB,EAGvB,MAAM,aAAa,CAAC;AAerB;;;;GAIG;AACH,qBAAa,uBAAuB;IAClC,OAAO,CAAC,OAAO,CAAmC;IAClD,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,eAAe,CAAwB;gBAEnC,OAAO,GAAE,sBAA2B;IAIhD;;OAEG;IACG,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAwEjF;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAgD7B;;OAEG;IACH,OAAO,CAAC,eAAe;IA2BvB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAoBzB;;OAEG;IACG,mBAAmB,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC;IAItE;;OAEG;IACG,qBAAqB,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IAOzD;;OAEG;IACH,UAAU,IAAI,QAAQ,CAAC,sBAAsB,CAAC;IAI9C;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,sBAAsB,CAAC,GAAG,IAAI;CAG3D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,CAAC,EAAE,sBAAsB,GAAG,uBAAuB,CAE/F"}
@@ -0,0 +1,212 @@
1
+ /**
2
+ * Unified Language Provider
3
+ *
4
+ * Main orchestrator for language-agnostic code extraction.
5
+ * Coordinates parsing, normalization, and pattern matching
6
+ * to produce unified extraction results.
7
+ */
8
+ import { getParserRegistry, detectLanguage } from '../parsing/parser-registry.js';
9
+ import { getNormalizer } from '../normalization/index.js';
10
+ import { getMatcherRegistry } from '../matching/matcher-registry.js';
11
+ /**
12
+ * Default provider options
13
+ */
14
+ const DEFAULT_OPTIONS = {
15
+ projectRoot: '.',
16
+ languages: ['typescript', 'javascript', 'python', 'java', 'csharp', 'php'],
17
+ matchers: [],
18
+ includeRawNodes: false,
19
+ maxChainDepth: 20,
20
+ extractDataAccess: true,
21
+ extractCallGraph: true,
22
+ };
23
+ /**
24
+ * Unified Language Provider
25
+ *
26
+ * Single entry point for extracting code information from any supported language.
27
+ */
28
+ export class UnifiedLanguageProvider {
29
+ options;
30
+ parserRegistry = getParserRegistry();
31
+ matcherRegistry = getMatcherRegistry();
32
+ constructor(options = {}) {
33
+ this.options = { ...DEFAULT_OPTIONS, ...options };
34
+ }
35
+ /**
36
+ * Extract all information from a source file
37
+ */
38
+ async extract(source, filePath) {
39
+ const startTime = performance.now();
40
+ const stats = {
41
+ parseTimeMs: 0,
42
+ normalizeTimeMs: 0,
43
+ matchTimeMs: 0,
44
+ totalTimeMs: 0,
45
+ nodesVisited: 0,
46
+ callChainsExtracted: 0,
47
+ patternsMatched: 0,
48
+ };
49
+ // Detect language
50
+ const language = detectLanguage(filePath);
51
+ if (!language) {
52
+ return this.createEmptyResult(filePath, 'typescript', ['Unknown file type'], stats);
53
+ }
54
+ // Check if language is enabled
55
+ if (!this.options.languages?.includes(language)) {
56
+ return this.createEmptyResult(filePath, language, [`Language ${language} is not enabled`], stats);
57
+ }
58
+ // Get parser
59
+ const parseStart = performance.now();
60
+ const parser = await this.parserRegistry.getParser(language, filePath);
61
+ if (!parser) {
62
+ return this.createEmptyResult(filePath, language, [`Parser not available for ${language}`], stats);
63
+ }
64
+ // Parse source
65
+ let tree;
66
+ try {
67
+ tree = parser.parse(source);
68
+ }
69
+ catch (error) {
70
+ const message = error instanceof Error ? error.message : 'Unknown parse error';
71
+ return this.createEmptyResult(filePath, language, [message], stats);
72
+ }
73
+ stats.parseTimeMs = performance.now() - parseStart;
74
+ // Get normalizer
75
+ const normalizer = getNormalizer(language);
76
+ if (!normalizer) {
77
+ return this.createEmptyResult(filePath, language, [`Normalizer not available for ${language}`], stats);
78
+ }
79
+ // Extract and normalize
80
+ const normalizeStart = performance.now();
81
+ const result = this.extractWithNormalizer(tree.rootNode, source, filePath, language, normalizer, stats);
82
+ stats.normalizeTimeMs = performance.now() - normalizeStart;
83
+ // Match patterns for data access
84
+ if (this.options.extractDataAccess) {
85
+ const matchStart = performance.now();
86
+ result.dataAccess = this.matchDataAccess(result, filePath);
87
+ stats.matchTimeMs = performance.now() - matchStart;
88
+ stats.patternsMatched = result.dataAccess.length;
89
+ }
90
+ stats.totalTimeMs = performance.now() - startTime;
91
+ result.stats = stats;
92
+ return result;
93
+ }
94
+ /**
95
+ * Extract using a normalizer
96
+ */
97
+ extractWithNormalizer(rootNode, source, filePath, language, normalizer, stats) {
98
+ const result = {
99
+ file: filePath,
100
+ language,
101
+ functions: [],
102
+ callChains: [],
103
+ dataAccess: [],
104
+ classes: [],
105
+ imports: [],
106
+ exports: [],
107
+ errors: [],
108
+ stats,
109
+ };
110
+ try {
111
+ // Extract call chains
112
+ result.callChains = normalizer.normalizeCallChains(rootNode, source, filePath);
113
+ stats.callChainsExtracted = result.callChains.length;
114
+ // Remove raw nodes if not requested
115
+ if (!this.options.includeRawNodes) {
116
+ for (const chain of result.callChains) {
117
+ delete chain.rawNode;
118
+ }
119
+ }
120
+ // Extract functions
121
+ if (this.options.extractCallGraph) {
122
+ result.functions = normalizer.extractFunctions(rootNode, source, filePath);
123
+ result.classes = normalizer.extractClasses(rootNode, source, filePath);
124
+ result.imports = normalizer.extractImports(rootNode, source, filePath);
125
+ result.exports = normalizer.extractExports(rootNode, source, filePath);
126
+ }
127
+ }
128
+ catch (error) {
129
+ const message = error instanceof Error ? error.message : 'Unknown extraction error';
130
+ result.errors.push(message);
131
+ }
132
+ return result;
133
+ }
134
+ /**
135
+ * Match call chains against patterns to find data access points
136
+ */
137
+ matchDataAccess(result, filePath) {
138
+ const dataAccess = [];
139
+ for (const chain of result.callChains) {
140
+ const match = this.matcherRegistry.match(chain);
141
+ if (match) {
142
+ dataAccess.push({
143
+ id: `${filePath}:${chain.line}:${chain.column}:${match.table}`,
144
+ table: match.table,
145
+ fields: match.fields,
146
+ operation: match.operation,
147
+ file: filePath,
148
+ line: chain.line,
149
+ column: chain.column,
150
+ context: chain.fullExpression.slice(0, 200),
151
+ isRawSql: match.isRawSql,
152
+ confidence: match.confidence,
153
+ orm: match.orm,
154
+ language: result.language,
155
+ callChain: chain,
156
+ });
157
+ }
158
+ }
159
+ return dataAccess;
160
+ }
161
+ /**
162
+ * Create an empty result with errors
163
+ */
164
+ createEmptyResult(file, language, errors, stats) {
165
+ return {
166
+ file,
167
+ language,
168
+ functions: [],
169
+ callChains: [],
170
+ dataAccess: [],
171
+ classes: [],
172
+ imports: [],
173
+ exports: [],
174
+ errors,
175
+ stats,
176
+ };
177
+ }
178
+ /**
179
+ * Check if a language is supported
180
+ */
181
+ async isLanguageSupported(language) {
182
+ return this.parserRegistry.isAvailable(language);
183
+ }
184
+ /**
185
+ * Get all supported languages
186
+ */
187
+ async getSupportedLanguages() {
188
+ const availability = await this.parserRegistry.getAllAvailability();
189
+ return availability
190
+ .filter(a => a.available)
191
+ .map(a => a.language);
192
+ }
193
+ /**
194
+ * Get provider options
195
+ */
196
+ getOptions() {
197
+ return { ...this.options };
198
+ }
199
+ /**
200
+ * Update provider options
201
+ */
202
+ setOptions(options) {
203
+ this.options = { ...this.options, ...options };
204
+ }
205
+ }
206
+ /**
207
+ * Create a unified language provider
208
+ */
209
+ export function createUnifiedProvider(options) {
210
+ return new UnifiedLanguageProvider(options);
211
+ }
212
+ //# sourceMappingURL=unified-language-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unified-language-provider.js","sourceRoot":"","sources":["../../../src/unified-provider/provider/unified-language-provider.ts"],"names":[],"mappings":"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"}