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,49 @@
1
+ /**
2
+ * Deprecated Scanner Wrapper
3
+ *
4
+ * Provides backward compatibility for code using the old SemanticDataAccessScanner.
5
+ * This wrapper delegates to the new UnifiedScanner while maintaining the same interface.
6
+ *
7
+ * @deprecated Use UnifiedScanner from './integration/unified-scanner.js' instead.
8
+ * This wrapper will be removed in a future major version.
9
+ */
10
+ import { UnifiedScanner, createUnifiedScanner, detectProjectStack, } from '../integration/unified-scanner.js';
11
+ export {};
12
+ /**
13
+ * @deprecated Use UnifiedScanner instead.
14
+ * This class is a compatibility wrapper that delegates to UnifiedScanner.
15
+ */
16
+ export class SemanticDataAccessScanner {
17
+ scanner;
18
+ constructor(config) {
19
+ // Log deprecation warning in development
20
+ if (process.env['NODE_ENV'] !== 'production') {
21
+ console.warn('[DEPRECATED] SemanticDataAccessScanner is deprecated. ' +
22
+ 'Use UnifiedScanner from "@driftdetect/core/unified-provider" instead.');
23
+ }
24
+ this.scanner = createUnifiedScanner(config);
25
+ }
26
+ /**
27
+ * Scan files for data access patterns
28
+ * @deprecated Use UnifiedScanner.scanFiles() instead
29
+ */
30
+ async scanFiles(files) {
31
+ return this.scanner.scanFiles(files);
32
+ }
33
+ /**
34
+ * Scan directory with glob patterns
35
+ * @deprecated Use UnifiedScanner.scanDirectory() instead
36
+ */
37
+ async scanDirectory(options = {}) {
38
+ return this.scanner.scanDirectory(options);
39
+ }
40
+ }
41
+ /**
42
+ * @deprecated Use createUnifiedScanner instead.
43
+ */
44
+ export function createSemanticDataAccessScanner(config) {
45
+ return new SemanticDataAccessScanner(config);
46
+ }
47
+ // Re-export detectProjectStack (not deprecated, same implementation)
48
+ export { detectProjectStack };
49
+ //# sourceMappingURL=deprecated-scanner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deprecated-scanner.js","sourceRoot":"","sources":["../../../src/unified-provider/migration/deprecated-scanner.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,kBAAkB,GAInB,MAAM,mCAAmC,CAAC;AAK3C,OAAO,EAAsB,CAAC;AAE9B;;;GAGG;AACH,MAAM,OAAO,yBAAyB;IACnB,OAAO,CAAiB;IAEzC,YAAY,MAA6B;QACvC,yCAAyC;QACzC,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,YAAY,EAAE,CAAC;YAC7C,OAAO,CAAC,IAAI,CACV,wDAAwD;gBACxD,uEAAuE,CACxE,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,OAAO,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC9C,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,SAAS,CAAC,KAAe;QAC7B,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,aAAa,CAAC,UAGhB,EAAE;QACJ,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,+BAA+B,CAAC,MAA6B;IAC3E,OAAO,IAAI,yBAAyB,CAAC,MAAM,CAAC,CAAC;AAC/C,CAAC;AAED,qEAAqE;AACrE,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Migration Module
3
+ *
4
+ * Provides backward-compatible wrappers for deprecated APIs.
5
+ * These wrappers delegate to the new UnifiedLanguageProvider while
6
+ * maintaining the same interface as the original implementations.
7
+ *
8
+ * Migration Guide:
9
+ * ================
10
+ *
11
+ * OLD (deprecated):
12
+ * ```typescript
13
+ * import { SemanticDataAccessScanner, createSemanticDataAccessScanner } from 'driftdetect-core';
14
+ * const scanner = createSemanticDataAccessScanner({ rootDir: '/path' });
15
+ * const result = await scanner.scanDirectory();
16
+ * ```
17
+ *
18
+ * NEW (recommended):
19
+ * ```typescript
20
+ * import { UnifiedScanner, createUnifiedScanner } from 'driftdetect-core';
21
+ * const scanner = createUnifiedScanner({ rootDir: '/path' });
22
+ * const result = await scanner.scanDirectory();
23
+ * ```
24
+ *
25
+ * OLD (deprecated):
26
+ * ```typescript
27
+ * import { TypeScriptDataAccessExtractor } from 'driftdetect-core';
28
+ * const extractor = new TypeScriptDataAccessExtractor();
29
+ * const result = extractor.extract(source, filePath);
30
+ * ```
31
+ *
32
+ * NEW (recommended):
33
+ * ```typescript
34
+ * import { UnifiedDataAccessAdapter, createUnifiedDataAccessAdapter } from 'driftdetect-core';
35
+ * const adapter = createUnifiedDataAccessAdapter();
36
+ * const result = await adapter.extract(source, filePath);
37
+ * ```
38
+ */
39
+ export { SemanticDataAccessScanner, createSemanticDataAccessScanner, detectProjectStack, type SemanticScannerConfig, type SemanticScanResult, type DetectedStack, } from './deprecated-scanner.js';
40
+ export { TypeScriptDataAccessExtractor, PythonDataAccessExtractor, CSharpDataAccessExtractor, JavaDataAccessExtractor, PhpDataAccessExtractor, createTypeScriptDataAccessExtractor, createPythonDataAccessExtractor, createCSharpDataAccessExtractor, createJavaDataAccessExtractor, createPhpDataAccessExtractor, createDataAccessExtractors, type DataAccessExtractionResult, } from './deprecated-extractors.js';
41
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/unified-provider/migration/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAGH,OAAO,EACL,yBAAyB,EACzB,+BAA+B,EAC/B,kBAAkB,EAClB,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,EACvB,KAAK,aAAa,GACnB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EACL,6BAA6B,EAC7B,yBAAyB,EACzB,yBAAyB,EACzB,uBAAuB,EACvB,sBAAsB,EACtB,mCAAmC,EACnC,+BAA+B,EAC/B,+BAA+B,EAC/B,6BAA6B,EAC7B,4BAA4B,EAC5B,0BAA0B,EAC1B,KAAK,0BAA0B,GAChC,MAAM,4BAA4B,CAAC"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Migration Module
3
+ *
4
+ * Provides backward-compatible wrappers for deprecated APIs.
5
+ * These wrappers delegate to the new UnifiedLanguageProvider while
6
+ * maintaining the same interface as the original implementations.
7
+ *
8
+ * Migration Guide:
9
+ * ================
10
+ *
11
+ * OLD (deprecated):
12
+ * ```typescript
13
+ * import { SemanticDataAccessScanner, createSemanticDataAccessScanner } from 'driftdetect-core';
14
+ * const scanner = createSemanticDataAccessScanner({ rootDir: '/path' });
15
+ * const result = await scanner.scanDirectory();
16
+ * ```
17
+ *
18
+ * NEW (recommended):
19
+ * ```typescript
20
+ * import { UnifiedScanner, createUnifiedScanner } from 'driftdetect-core';
21
+ * const scanner = createUnifiedScanner({ rootDir: '/path' });
22
+ * const result = await scanner.scanDirectory();
23
+ * ```
24
+ *
25
+ * OLD (deprecated):
26
+ * ```typescript
27
+ * import { TypeScriptDataAccessExtractor } from 'driftdetect-core';
28
+ * const extractor = new TypeScriptDataAccessExtractor();
29
+ * const result = extractor.extract(source, filePath);
30
+ * ```
31
+ *
32
+ * NEW (recommended):
33
+ * ```typescript
34
+ * import { UnifiedDataAccessAdapter, createUnifiedDataAccessAdapter } from 'driftdetect-core';
35
+ * const adapter = createUnifiedDataAccessAdapter();
36
+ * const result = await adapter.extract(source, filePath);
37
+ * ```
38
+ */
39
+ // Deprecated Scanner (wraps UnifiedScanner)
40
+ export { SemanticDataAccessScanner, createSemanticDataAccessScanner, detectProjectStack, } from './deprecated-scanner.js';
41
+ // Deprecated Extractors (wrap UnifiedDataAccessAdapter)
42
+ export { TypeScriptDataAccessExtractor, PythonDataAccessExtractor, CSharpDataAccessExtractor, JavaDataAccessExtractor, PhpDataAccessExtractor, createTypeScriptDataAccessExtractor, createPythonDataAccessExtractor, createCSharpDataAccessExtractor, createJavaDataAccessExtractor, createPhpDataAccessExtractor, createDataAccessExtractors, } from './deprecated-extractors.js';
43
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/unified-provider/migration/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,4CAA4C;AAC5C,OAAO,EACL,yBAAyB,EACzB,+BAA+B,EAC/B,kBAAkB,GAInB,MAAM,yBAAyB,CAAC;AAEjC,wDAAwD;AACxD,OAAO,EACL,6BAA6B,EAC7B,yBAAyB,EACzB,yBAAyB,EACzB,uBAAuB,EACvB,sBAAsB,EACtB,mCAAmC,EACnC,+BAA+B,EAC/B,+BAA+B,EAC/B,6BAA6B,EAC7B,4BAA4B,EAC5B,0BAA0B,GAE3B,MAAM,4BAA4B,CAAC"}
@@ -0,0 +1,188 @@
1
+ /**
2
+ * Base Call Chain Normalizer
3
+ *
4
+ * Shared logic for all language-specific normalizers.
5
+ * Provides common utilities for AST traversal and normalization.
6
+ */
7
+ import type { TreeSitterNode } from '../../parsers/tree-sitter/types.js';
8
+ import type { UnifiedLanguage, UnifiedCallChain, CallChainSegment, NormalizedArg, UnifiedFunction, UnifiedClass, UnifiedImport, UnifiedExport, UnifiedParameter, CallChainNormalizer } from '../types.js';
9
+ /**
10
+ * Base normalizer with shared functionality
11
+ */
12
+ export declare abstract class BaseNormalizer implements CallChainNormalizer {
13
+ abstract readonly language: UnifiedLanguage;
14
+ /**
15
+ * Extract and normalize call chains from an AST node
16
+ */
17
+ abstract normalizeCallChains(rootNode: TreeSitterNode, source: string, filePath: string): UnifiedCallChain[];
18
+ /**
19
+ * Extract functions from an AST node
20
+ */
21
+ abstract extractFunctions(rootNode: TreeSitterNode, source: string, filePath: string): UnifiedFunction[];
22
+ /**
23
+ * Extract classes from an AST node
24
+ */
25
+ abstract extractClasses(rootNode: TreeSitterNode, source: string, filePath: string): UnifiedClass[];
26
+ /**
27
+ * Extract imports from an AST node
28
+ */
29
+ abstract extractImports(rootNode: TreeSitterNode, source: string, filePath: string): UnifiedImport[];
30
+ /**
31
+ * Extract exports from an AST node
32
+ */
33
+ abstract extractExports(rootNode: TreeSitterNode, source: string, filePath: string): UnifiedExport[];
34
+ /**
35
+ * Create a call chain segment
36
+ */
37
+ protected createSegment(name: string, isCall: boolean, args: NormalizedArg[], line: number, column: number): CallChainSegment;
38
+ /**
39
+ * Create a unified call chain
40
+ */
41
+ protected createCallChain(receiver: string, segments: CallChainSegment[], fullExpression: string, file: string, line: number, column: number, endLine: number, endColumn: number, rawNode?: TreeSitterNode): UnifiedCallChain;
42
+ /**
43
+ * Create a normalized argument from a string literal
44
+ */
45
+ protected createStringArg(value: string, line: number, column: number): NormalizedArg;
46
+ /**
47
+ * Create a normalized argument from a number literal
48
+ */
49
+ protected createNumberArg(value: string, line: number, column: number): NormalizedArg;
50
+ /**
51
+ * Create a normalized argument from a boolean literal
52
+ */
53
+ protected createBooleanArg(value: string, line: number, column: number): NormalizedArg;
54
+ /**
55
+ * Create a normalized argument from an identifier
56
+ */
57
+ protected createIdentifierArg(value: string, line: number, column: number): NormalizedArg;
58
+ /**
59
+ * Create a normalized argument from an object literal
60
+ */
61
+ protected createObjectArg(value: string, properties: Record<string, NormalizedArg>, line: number, column: number): NormalizedArg;
62
+ /**
63
+ * Create a normalized argument from an array literal
64
+ */
65
+ protected createArrayArg(value: string, elements: NormalizedArg[], line: number, column: number): NormalizedArg;
66
+ /**
67
+ * Create an unknown argument
68
+ */
69
+ protected createUnknownArg(value: string, line: number, column: number): NormalizedArg;
70
+ /**
71
+ * Create a unified function
72
+ */
73
+ protected createFunction(opts: {
74
+ name: string;
75
+ qualifiedName?: string | undefined;
76
+ file: string;
77
+ startLine: number;
78
+ endLine: number;
79
+ startColumn?: number | undefined;
80
+ endColumn?: number | undefined;
81
+ parameters?: UnifiedParameter[] | undefined;
82
+ returnType?: string | undefined;
83
+ isMethod?: boolean | undefined;
84
+ isStatic?: boolean | undefined;
85
+ isExported?: boolean | undefined;
86
+ isConstructor?: boolean | undefined;
87
+ isAsync?: boolean | undefined;
88
+ className?: string | undefined;
89
+ decorators?: string[] | undefined;
90
+ bodyStartLine?: number | undefined;
91
+ bodyEndLine?: number | undefined;
92
+ }): UnifiedFunction;
93
+ /**
94
+ * Create a unified class
95
+ */
96
+ protected createClass(opts: {
97
+ name: string;
98
+ file: string;
99
+ startLine: number;
100
+ endLine: number;
101
+ baseClasses?: string[];
102
+ methods?: string[];
103
+ isExported?: boolean;
104
+ }): UnifiedClass;
105
+ /**
106
+ * Create a unified import
107
+ */
108
+ protected createImport(opts: {
109
+ source: string;
110
+ names: Array<{
111
+ imported: string;
112
+ local?: string;
113
+ isDefault?: boolean;
114
+ isNamespace?: boolean;
115
+ }>;
116
+ line: number;
117
+ isTypeOnly?: boolean;
118
+ }): UnifiedImport;
119
+ /**
120
+ * Create a unified export
121
+ */
122
+ protected createExport(opts: {
123
+ name: string;
124
+ isDefault?: boolean | undefined;
125
+ isReExport?: boolean | undefined;
126
+ source?: string | undefined;
127
+ line: number;
128
+ }): UnifiedExport;
129
+ /**
130
+ * Create a parameter
131
+ */
132
+ protected createParameter(name: string, type?: string, hasDefault?: boolean, isRest?: boolean): UnifiedParameter;
133
+ /**
134
+ * Find all nodes of a specific type
135
+ */
136
+ protected findNodesOfType(node: TreeSitterNode, types: string[]): TreeSitterNode[];
137
+ /**
138
+ * Traverse all nodes in the tree
139
+ */
140
+ protected traverseNode(node: TreeSitterNode, callback: (node: TreeSitterNode) => void): void;
141
+ /**
142
+ * Get child by field name (type-safe wrapper)
143
+ */
144
+ protected getChildByField(node: TreeSitterNode, fieldName: string): TreeSitterNode | null;
145
+ /**
146
+ * Get all children of a specific type
147
+ */
148
+ protected getChildrenOfType(node: TreeSitterNode, type: string): TreeSitterNode[];
149
+ /**
150
+ * Check if node has a specific child type
151
+ */
152
+ protected hasChildOfType(node: TreeSitterNode, type: string): boolean;
153
+ /**
154
+ * Get text content of a node, handling null
155
+ */
156
+ protected getNodeText(node: TreeSitterNode | null): string;
157
+ /**
158
+ * Get position info from a node
159
+ */
160
+ protected getPosition(node: TreeSitterNode): {
161
+ line: number;
162
+ column: number;
163
+ };
164
+ /**
165
+ * Get end position info from a node
166
+ */
167
+ protected getEndPosition(node: TreeSitterNode): {
168
+ line: number;
169
+ column: number;
170
+ };
171
+ /**
172
+ * Extract string value from various string node types
173
+ */
174
+ protected extractStringValue(node: TreeSitterNode): string | null;
175
+ /**
176
+ * Remove quotes from a string
177
+ */
178
+ protected unquoteString(str: string): string;
179
+ /**
180
+ * Check if a string looks like a table name
181
+ */
182
+ protected looksLikeTableName(str: string): boolean;
183
+ /**
184
+ * Infer table name from a variable/class name
185
+ */
186
+ protected inferTableName(name: string): string;
187
+ }
188
+ //# sourceMappingURL=base-normalizer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-normalizer.d.ts","sourceRoot":"","sources":["../../../src/unified-provider/normalization/base-normalizer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,339 @@
1
+ /**
2
+ * Base Call Chain Normalizer
3
+ *
4
+ * Shared logic for all language-specific normalizers.
5
+ * Provides common utilities for AST traversal and normalization.
6
+ */
7
+ /**
8
+ * Base normalizer with shared functionality
9
+ */
10
+ export class BaseNormalizer {
11
+ // ============================================================================
12
+ // Shared Utilities
13
+ // ============================================================================
14
+ /**
15
+ * Create a call chain segment
16
+ */
17
+ createSegment(name, isCall, args, line, column) {
18
+ return { name, isCall, args, line, column };
19
+ }
20
+ /**
21
+ * Create a unified call chain
22
+ */
23
+ createCallChain(receiver, segments, fullExpression, file, line, column, endLine, endColumn, rawNode) {
24
+ return {
25
+ receiver,
26
+ segments,
27
+ fullExpression,
28
+ file,
29
+ line,
30
+ column,
31
+ endLine,
32
+ endColumn,
33
+ language: this.language,
34
+ rawNode,
35
+ };
36
+ }
37
+ /**
38
+ * Create a normalized argument from a string literal
39
+ */
40
+ createStringArg(value, line, column) {
41
+ // Remove quotes
42
+ const stringValue = value.replace(/^['"`]|['"`]$/g, '');
43
+ return {
44
+ type: 'string',
45
+ value,
46
+ stringValue,
47
+ line,
48
+ column,
49
+ };
50
+ }
51
+ /**
52
+ * Create a normalized argument from a number literal
53
+ */
54
+ createNumberArg(value, line, column) {
55
+ return {
56
+ type: 'number',
57
+ value,
58
+ numberValue: parseFloat(value),
59
+ line,
60
+ column,
61
+ };
62
+ }
63
+ /**
64
+ * Create a normalized argument from a boolean literal
65
+ */
66
+ createBooleanArg(value, line, column) {
67
+ return {
68
+ type: 'boolean',
69
+ value,
70
+ booleanValue: value.toLowerCase() === 'true',
71
+ line,
72
+ column,
73
+ };
74
+ }
75
+ /**
76
+ * Create a normalized argument from an identifier
77
+ */
78
+ createIdentifierArg(value, line, column) {
79
+ return {
80
+ type: 'identifier',
81
+ value,
82
+ line,
83
+ column,
84
+ };
85
+ }
86
+ /**
87
+ * Create a normalized argument from an object literal
88
+ */
89
+ createObjectArg(value, properties, line, column) {
90
+ return {
91
+ type: 'object',
92
+ value,
93
+ properties,
94
+ line,
95
+ column,
96
+ };
97
+ }
98
+ /**
99
+ * Create a normalized argument from an array literal
100
+ */
101
+ createArrayArg(value, elements, line, column) {
102
+ return {
103
+ type: 'array',
104
+ value,
105
+ elements,
106
+ line,
107
+ column,
108
+ };
109
+ }
110
+ /**
111
+ * Create an unknown argument
112
+ */
113
+ createUnknownArg(value, line, column) {
114
+ return {
115
+ type: 'unknown',
116
+ value,
117
+ line,
118
+ column,
119
+ };
120
+ }
121
+ /**
122
+ * Create a unified function
123
+ */
124
+ createFunction(opts) {
125
+ return {
126
+ name: opts.name,
127
+ qualifiedName: opts.qualifiedName ?? opts.name,
128
+ file: opts.file,
129
+ startLine: opts.startLine,
130
+ endLine: opts.endLine,
131
+ startColumn: opts.startColumn ?? 0,
132
+ endColumn: opts.endColumn ?? 0,
133
+ parameters: opts.parameters ?? [],
134
+ returnType: opts.returnType,
135
+ isMethod: opts.isMethod ?? false,
136
+ isStatic: opts.isStatic ?? false,
137
+ isExported: opts.isExported ?? false,
138
+ isConstructor: opts.isConstructor ?? false,
139
+ isAsync: opts.isAsync ?? false,
140
+ className: opts.className,
141
+ decorators: opts.decorators ?? [],
142
+ bodyStartLine: opts.bodyStartLine ?? opts.startLine,
143
+ bodyEndLine: opts.bodyEndLine ?? opts.endLine,
144
+ language: this.language,
145
+ };
146
+ }
147
+ /**
148
+ * Create a unified class
149
+ */
150
+ createClass(opts) {
151
+ return {
152
+ name: opts.name,
153
+ file: opts.file,
154
+ startLine: opts.startLine,
155
+ endLine: opts.endLine,
156
+ baseClasses: opts.baseClasses ?? [],
157
+ methods: opts.methods ?? [],
158
+ isExported: opts.isExported ?? false,
159
+ language: this.language,
160
+ };
161
+ }
162
+ /**
163
+ * Create a unified import
164
+ */
165
+ createImport(opts) {
166
+ return {
167
+ source: opts.source,
168
+ names: opts.names.map(n => ({
169
+ imported: n.imported,
170
+ local: n.local ?? n.imported,
171
+ isDefault: n.isDefault ?? false,
172
+ isNamespace: n.isNamespace ?? false,
173
+ })),
174
+ line: opts.line,
175
+ isTypeOnly: opts.isTypeOnly ?? false,
176
+ language: this.language,
177
+ };
178
+ }
179
+ /**
180
+ * Create a unified export
181
+ */
182
+ createExport(opts) {
183
+ return {
184
+ name: opts.name,
185
+ isDefault: opts.isDefault ?? false,
186
+ isReExport: opts.isReExport ?? false,
187
+ source: opts.source,
188
+ line: opts.line,
189
+ language: this.language,
190
+ };
191
+ }
192
+ /**
193
+ * Create a parameter
194
+ */
195
+ createParameter(name, type, hasDefault = false, isRest = false) {
196
+ return { name, type, hasDefault, isRest };
197
+ }
198
+ // ============================================================================
199
+ // AST Traversal Utilities
200
+ // ============================================================================
201
+ /**
202
+ * Find all nodes of a specific type
203
+ */
204
+ findNodesOfType(node, types) {
205
+ const results = [];
206
+ this.traverseNode(node, n => {
207
+ if (types.includes(n.type)) {
208
+ results.push(n);
209
+ }
210
+ });
211
+ return results;
212
+ }
213
+ /**
214
+ * Traverse all nodes in the tree
215
+ */
216
+ traverseNode(node, callback) {
217
+ callback(node);
218
+ for (const child of node.children) {
219
+ this.traverseNode(child, callback);
220
+ }
221
+ }
222
+ /**
223
+ * Get child by field name (type-safe wrapper)
224
+ */
225
+ getChildByField(node, fieldName) {
226
+ return node.childForFieldName(fieldName) ?? null;
227
+ }
228
+ /**
229
+ * Get all children of a specific type
230
+ */
231
+ getChildrenOfType(node, type) {
232
+ return node.children.filter(c => c.type === type);
233
+ }
234
+ /**
235
+ * Check if node has a specific child type
236
+ */
237
+ hasChildOfType(node, type) {
238
+ return node.children.some(c => c.type === type);
239
+ }
240
+ /**
241
+ * Get text content of a node, handling null
242
+ */
243
+ getNodeText(node) {
244
+ return node?.text ?? '';
245
+ }
246
+ /**
247
+ * Get position info from a node
248
+ */
249
+ getPosition(node) {
250
+ return {
251
+ line: node.startPosition.row + 1,
252
+ column: node.startPosition.column,
253
+ };
254
+ }
255
+ /**
256
+ * Get end position info from a node
257
+ */
258
+ getEndPosition(node) {
259
+ return {
260
+ line: node.endPosition.row + 1,
261
+ column: node.endPosition.column,
262
+ };
263
+ }
264
+ // ============================================================================
265
+ // String Extraction Utilities
266
+ // ============================================================================
267
+ /**
268
+ * Extract string value from various string node types
269
+ */
270
+ extractStringValue(node) {
271
+ const type = node.type;
272
+ // Common string types across languages
273
+ if (type === 'string' || type === 'string_literal' ||
274
+ type === 'interpreted_string_literal' || type === 'raw_string_literal') {
275
+ return this.unquoteString(node.text);
276
+ }
277
+ // Template strings
278
+ if (type === 'template_string' || type === 'template_literal') {
279
+ return this.unquoteString(node.text);
280
+ }
281
+ // Python strings
282
+ if (type === 'string_content') {
283
+ return node.text;
284
+ }
285
+ // Check for string child
286
+ const stringChild = node.children.find(c => c.type === 'string_content' ||
287
+ c.type === 'string_fragment' ||
288
+ c.type === 'escape_sequence');
289
+ if (stringChild) {
290
+ return stringChild.text;
291
+ }
292
+ return null;
293
+ }
294
+ /**
295
+ * Remove quotes from a string
296
+ */
297
+ unquoteString(str) {
298
+ // Handle triple quotes (Python)
299
+ if (str.startsWith('"""') || str.startsWith("'''")) {
300
+ return str.slice(3, -3);
301
+ }
302
+ // Handle single/double quotes and backticks
303
+ if (str.startsWith('"') || str.startsWith("'") || str.startsWith('`')) {
304
+ return str.slice(1, -1);
305
+ }
306
+ return str;
307
+ }
308
+ /**
309
+ * Check if a string looks like a table name
310
+ */
311
+ looksLikeTableName(str) {
312
+ // Table names are typically lowercase, snake_case, and don't contain spaces
313
+ return /^[a-z][a-z0-9_]*$/i.test(str) && !str.includes(' ');
314
+ }
315
+ /**
316
+ * Infer table name from a variable/class name
317
+ */
318
+ inferTableName(name) {
319
+ // Common patterns: userRepository -> users, UserModel -> users
320
+ const cleaned = name
321
+ .replace(/Repository$/i, '')
322
+ .replace(/Model$/i, '')
323
+ .replace(/Service$/i, '')
324
+ .replace(/DAO$/i, '')
325
+ .replace(/Entity$/i, '')
326
+ .replace(/^_+/, '');
327
+ // Convert to snake_case
328
+ const snakeCase = cleaned
329
+ .replace(/([A-Z])/g, '_$1')
330
+ .toLowerCase()
331
+ .replace(/^_/, '');
332
+ // Simple pluralization
333
+ if (!snakeCase.endsWith('s')) {
334
+ return snakeCase + 's';
335
+ }
336
+ return snakeCase;
337
+ }
338
+ }
339
+ //# sourceMappingURL=base-normalizer.js.map