@opencodereview/core 1.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (453) hide show
  1. package/dist/ai/anthropic-provider.d.ts +41 -0
  2. package/dist/ai/anthropic-provider.d.ts.map +1 -0
  3. package/dist/ai/anthropic-provider.js +139 -0
  4. package/dist/ai/anthropic-provider.js.map +1 -0
  5. package/dist/ai/index.d.ts +39 -0
  6. package/dist/ai/index.d.ts.map +1 -0
  7. package/dist/ai/index.js +41 -0
  8. package/dist/ai/index.js.map +1 -0
  9. package/dist/ai/ollama-provider.d.ts +46 -0
  10. package/dist/ai/ollama-provider.d.ts.map +1 -0
  11. package/dist/ai/ollama-provider.js +149 -0
  12. package/dist/ai/ollama-provider.js.map +1 -0
  13. package/dist/ai/openai-provider.d.ts +44 -0
  14. package/dist/ai/openai-provider.d.ts.map +1 -0
  15. package/dist/ai/openai-provider.js +137 -0
  16. package/dist/ai/openai-provider.js.map +1 -0
  17. package/dist/ai/orchestrator.d.ts +60 -0
  18. package/dist/ai/orchestrator.d.ts.map +1 -0
  19. package/dist/ai/orchestrator.js +188 -0
  20. package/dist/ai/orchestrator.js.map +1 -0
  21. package/dist/ai/prompts.d.ts +27 -0
  22. package/dist/ai/prompts.d.ts.map +1 -0
  23. package/dist/ai/prompts.js +112 -0
  24. package/dist/ai/prompts.js.map +1 -0
  25. package/dist/ai/types.d.ts +75 -0
  26. package/dist/ai/types.d.ts.map +1 -0
  27. package/dist/ai/types.js +10 -0
  28. package/dist/ai/types.js.map +1 -0
  29. package/dist/ai/v4/embedding/index.d.ts +10 -0
  30. package/dist/ai/v4/embedding/index.d.ts.map +1 -0
  31. package/dist/ai/v4/embedding/index.js +10 -0
  32. package/dist/ai/v4/embedding/index.js.map +1 -0
  33. package/dist/ai/v4/embedding/local.d.ts +68 -0
  34. package/dist/ai/v4/embedding/local.d.ts.map +1 -0
  35. package/dist/ai/v4/embedding/local.js +167 -0
  36. package/dist/ai/v4/embedding/local.js.map +1 -0
  37. package/dist/ai/v4/embedding/ollama.d.ts +58 -0
  38. package/dist/ai/v4/embedding/ollama.d.ts.map +1 -0
  39. package/dist/ai/v4/embedding/ollama.js +101 -0
  40. package/dist/ai/v4/embedding/ollama.js.map +1 -0
  41. package/dist/ai/v4/embedding/openai.d.ts +36 -0
  42. package/dist/ai/v4/embedding/openai.d.ts.map +1 -0
  43. package/dist/ai/v4/embedding/openai.js +76 -0
  44. package/dist/ai/v4/embedding/openai.js.map +1 -0
  45. package/dist/ai/v4/embedding/similarity.d.ts +36 -0
  46. package/dist/ai/v4/embedding/similarity.d.ts.map +1 -0
  47. package/dist/ai/v4/embedding/similarity.js +60 -0
  48. package/dist/ai/v4/embedding/similarity.js.map +1 -0
  49. package/dist/ai/v4/index.d.ts +51 -0
  50. package/dist/ai/v4/index.d.ts.map +1 -0
  51. package/dist/ai/v4/index.js +54 -0
  52. package/dist/ai/v4/index.js.map +1 -0
  53. package/dist/ai/v4/llm/anthropic.d.ts +38 -0
  54. package/dist/ai/v4/llm/anthropic.d.ts.map +1 -0
  55. package/dist/ai/v4/llm/anthropic.js +86 -0
  56. package/dist/ai/v4/llm/anthropic.js.map +1 -0
  57. package/dist/ai/v4/llm/index.d.ts +9 -0
  58. package/dist/ai/v4/llm/index.d.ts.map +1 -0
  59. package/dist/ai/v4/llm/index.js +9 -0
  60. package/dist/ai/v4/llm/index.js.map +1 -0
  61. package/dist/ai/v4/llm/ollama.d.ts +39 -0
  62. package/dist/ai/v4/llm/ollama.d.ts.map +1 -0
  63. package/dist/ai/v4/llm/ollama.js +95 -0
  64. package/dist/ai/v4/llm/ollama.js.map +1 -0
  65. package/dist/ai/v4/llm/openai.d.ts +38 -0
  66. package/dist/ai/v4/llm/openai.d.ts.map +1 -0
  67. package/dist/ai/v4/llm/openai.js +88 -0
  68. package/dist/ai/v4/llm/openai.js.map +1 -0
  69. package/dist/ai/v4/patterns/defect-patterns.d.ts +57 -0
  70. package/dist/ai/v4/patterns/defect-patterns.d.ts.map +1 -0
  71. package/dist/ai/v4/patterns/defect-patterns.js +331 -0
  72. package/dist/ai/v4/patterns/defect-patterns.js.map +1 -0
  73. package/dist/ai/v4/patterns/index.d.ts +8 -0
  74. package/dist/ai/v4/patterns/index.d.ts.map +1 -0
  75. package/dist/ai/v4/patterns/index.js +7 -0
  76. package/dist/ai/v4/patterns/index.js.map +1 -0
  77. package/dist/ai/v4/pipeline.d.ts +74 -0
  78. package/dist/ai/v4/pipeline.d.ts.map +1 -0
  79. package/dist/ai/v4/pipeline.js +381 -0
  80. package/dist/ai/v4/pipeline.js.map +1 -0
  81. package/dist/ai/v4/sla.d.ts +62 -0
  82. package/dist/ai/v4/sla.d.ts.map +1 -0
  83. package/dist/ai/v4/sla.js +136 -0
  84. package/dist/ai/v4/sla.js.map +1 -0
  85. package/dist/ai/v4/types.d.ts +117 -0
  86. package/dist/ai/v4/types.d.ts.map +1 -0
  87. package/dist/ai/v4/types.js +16 -0
  88. package/dist/ai/v4/types.js.map +1 -0
  89. package/dist/ai-healer/prompt-builder.d.ts +33 -0
  90. package/dist/ai-healer/prompt-builder.d.ts.map +1 -0
  91. package/dist/ai-healer/prompt-builder.js +89 -0
  92. package/dist/ai-healer/prompt-builder.js.map +1 -0
  93. package/dist/config/defaults.d.ts +14 -0
  94. package/dist/config/defaults.d.ts.map +1 -0
  95. package/dist/config/defaults.js +57 -0
  96. package/dist/config/defaults.js.map +1 -0
  97. package/dist/config/index.d.ts +8 -0
  98. package/dist/config/index.d.ts.map +1 -0
  99. package/dist/config/index.js +6 -0
  100. package/dist/config/index.js.map +1 -0
  101. package/dist/config/loader.d.ts +33 -0
  102. package/dist/config/loader.d.ts.map +1 -0
  103. package/dist/config/loader.js +245 -0
  104. package/dist/config/loader.js.map +1 -0
  105. package/dist/config/types.d.ts +58 -0
  106. package/dist/config/types.d.ts.map +1 -0
  107. package/dist/config/types.js +7 -0
  108. package/dist/config/types.js.map +1 -0
  109. package/dist/config/v4-config.d.ts +77 -0
  110. package/dist/config/v4-config.d.ts.map +1 -0
  111. package/dist/config/v4-config.js +336 -0
  112. package/dist/config/v4-config.js.map +1 -0
  113. package/dist/detectors/ai-detector.d.ts +38 -0
  114. package/dist/detectors/ai-detector.d.ts.map +1 -0
  115. package/dist/detectors/ai-detector.js +62 -0
  116. package/dist/detectors/ai-detector.js.map +1 -0
  117. package/dist/detectors/context-break.d.ts +57 -0
  118. package/dist/detectors/context-break.d.ts.map +1 -0
  119. package/dist/detectors/context-break.js +199 -0
  120. package/dist/detectors/context-break.js.map +1 -0
  121. package/dist/detectors/deep-hallucination.d.ts +42 -0
  122. package/dist/detectors/deep-hallucination.d.ts.map +1 -0
  123. package/dist/detectors/deep-hallucination.js +297 -0
  124. package/dist/detectors/deep-hallucination.js.map +1 -0
  125. package/dist/detectors/duplication.d.ts +61 -0
  126. package/dist/detectors/duplication.d.ts.map +1 -0
  127. package/dist/detectors/duplication.js +204 -0
  128. package/dist/detectors/duplication.js.map +1 -0
  129. package/dist/detectors/hallucination.d.ts +80 -0
  130. package/dist/detectors/hallucination.d.ts.map +1 -0
  131. package/dist/detectors/hallucination.js +350 -0
  132. package/dist/detectors/hallucination.js.map +1 -0
  133. package/dist/detectors/index.d.ts +35 -0
  134. package/dist/detectors/index.d.ts.map +1 -0
  135. package/dist/detectors/index.js +33 -0
  136. package/dist/detectors/index.js.map +1 -0
  137. package/dist/detectors/logic-gap.d.ts +58 -0
  138. package/dist/detectors/logic-gap.d.ts.map +1 -0
  139. package/dist/detectors/logic-gap.js +284 -0
  140. package/dist/detectors/logic-gap.js.map +1 -0
  141. package/dist/detectors/over-engineering.d.ts +44 -0
  142. package/dist/detectors/over-engineering.d.ts.map +1 -0
  143. package/dist/detectors/over-engineering.js +257 -0
  144. package/dist/detectors/over-engineering.js.map +1 -0
  145. package/dist/detectors/security-pattern.d.ts +43 -0
  146. package/dist/detectors/security-pattern.d.ts.map +1 -0
  147. package/dist/detectors/security-pattern.js +235 -0
  148. package/dist/detectors/security-pattern.js.map +1 -0
  149. package/dist/detectors/stale-api.d.ts +44 -0
  150. package/dist/detectors/stale-api.d.ts.map +1 -0
  151. package/dist/detectors/stale-api.js +160 -0
  152. package/dist/detectors/stale-api.js.map +1 -0
  153. package/dist/detectors/type-safety.d.ts +41 -0
  154. package/dist/detectors/type-safety.d.ts.map +1 -0
  155. package/dist/detectors/type-safety.js +306 -0
  156. package/dist/detectors/type-safety.js.map +1 -0
  157. package/dist/detectors/v4/context-coherence.d.ts +67 -0
  158. package/dist/detectors/v4/context-coherence.d.ts.map +1 -0
  159. package/dist/detectors/v4/context-coherence.js +319 -0
  160. package/dist/detectors/v4/context-coherence.js.map +1 -0
  161. package/dist/detectors/v4/hallucinated-import.d.ts +52 -0
  162. package/dist/detectors/v4/hallucinated-import.d.ts.map +1 -0
  163. package/dist/detectors/v4/hallucinated-import.js +206 -0
  164. package/dist/detectors/v4/hallucinated-import.js.map +1 -0
  165. package/dist/detectors/v4/index.d.ts +28 -0
  166. package/dist/detectors/v4/index.d.ts.map +1 -0
  167. package/dist/detectors/v4/index.js +40 -0
  168. package/dist/detectors/v4/index.js.map +1 -0
  169. package/dist/detectors/v4/over-engineering.d.ts +69 -0
  170. package/dist/detectors/v4/over-engineering.d.ts.map +1 -0
  171. package/dist/detectors/v4/over-engineering.js +234 -0
  172. package/dist/detectors/v4/over-engineering.js.map +1 -0
  173. package/dist/detectors/v4/security-pattern.d.ts +46 -0
  174. package/dist/detectors/v4/security-pattern.d.ts.map +1 -0
  175. package/dist/detectors/v4/security-pattern.js +233 -0
  176. package/dist/detectors/v4/security-pattern.js.map +1 -0
  177. package/dist/detectors/v4/stale-api.d.ts +59 -0
  178. package/dist/detectors/v4/stale-api.d.ts.map +1 -0
  179. package/dist/detectors/v4/stale-api.js +470 -0
  180. package/dist/detectors/v4/stale-api.js.map +1 -0
  181. package/dist/detectors/v4/types.d.ts +74 -0
  182. package/dist/detectors/v4/types.d.ts.map +1 -0
  183. package/dist/detectors/v4/types.js +10 -0
  184. package/dist/detectors/v4/types.js.map +1 -0
  185. package/dist/diff/filter.d.ts +35 -0
  186. package/dist/diff/filter.d.ts.map +1 -0
  187. package/dist/diff/filter.js +65 -0
  188. package/dist/diff/filter.js.map +1 -0
  189. package/dist/diff/index.d.ts +9 -0
  190. package/dist/diff/index.d.ts.map +1 -0
  191. package/dist/diff/index.js +8 -0
  192. package/dist/diff/index.js.map +1 -0
  193. package/dist/diff/parser.d.ts +61 -0
  194. package/dist/diff/parser.d.ts.map +1 -0
  195. package/dist/diff/parser.js +203 -0
  196. package/dist/diff/parser.js.map +1 -0
  197. package/dist/i18n/en.d.ts +18 -0
  198. package/dist/i18n/en.d.ts.map +1 -0
  199. package/dist/i18n/en.js +83 -0
  200. package/dist/i18n/en.js.map +1 -0
  201. package/dist/i18n/index.d.ts +13 -0
  202. package/dist/i18n/index.d.ts.map +1 -0
  203. package/dist/i18n/index.js +14 -0
  204. package/dist/i18n/index.js.map +1 -0
  205. package/dist/i18n/provider.d.ts +54 -0
  206. package/dist/i18n/provider.d.ts.map +1 -0
  207. package/dist/i18n/provider.js +88 -0
  208. package/dist/i18n/provider.js.map +1 -0
  209. package/dist/i18n/types.d.ts +37 -0
  210. package/dist/i18n/types.d.ts.map +1 -0
  211. package/dist/i18n/types.js +10 -0
  212. package/dist/i18n/types.js.map +1 -0
  213. package/dist/i18n/zh.d.ts +14 -0
  214. package/dist/i18n/zh.d.ts.map +1 -0
  215. package/dist/i18n/zh.js +83 -0
  216. package/dist/i18n/zh.js.map +1 -0
  217. package/dist/index.d.ts +113 -0
  218. package/dist/index.d.ts.map +1 -0
  219. package/dist/index.js +106 -0
  220. package/dist/index.js.map +1 -0
  221. package/dist/ir/index.d.ts +10 -0
  222. package/dist/ir/index.d.ts.map +1 -0
  223. package/dist/ir/index.js +9 -0
  224. package/dist/ir/index.js.map +1 -0
  225. package/dist/ir/types.d.ts +126 -0
  226. package/dist/ir/types.d.ts.map +1 -0
  227. package/dist/ir/types.js +33 -0
  228. package/dist/ir/types.js.map +1 -0
  229. package/dist/languages/go/index.d.ts +7 -0
  230. package/dist/languages/go/index.d.ts.map +1 -0
  231. package/dist/languages/go/index.js +7 -0
  232. package/dist/languages/go/index.js.map +1 -0
  233. package/dist/languages/go/parser.d.ts +89 -0
  234. package/dist/languages/go/parser.d.ts.map +1 -0
  235. package/dist/languages/go/parser.js +509 -0
  236. package/dist/languages/go/parser.js.map +1 -0
  237. package/dist/languages/index.d.ts +13 -0
  238. package/dist/languages/index.d.ts.map +1 -0
  239. package/dist/languages/index.js +14 -0
  240. package/dist/languages/index.js.map +1 -0
  241. package/dist/languages/java/index.d.ts +7 -0
  242. package/dist/languages/java/index.d.ts.map +1 -0
  243. package/dist/languages/java/index.js +7 -0
  244. package/dist/languages/java/index.js.map +1 -0
  245. package/dist/languages/java/parser.d.ts +82 -0
  246. package/dist/languages/java/parser.d.ts.map +1 -0
  247. package/dist/languages/java/parser.js +492 -0
  248. package/dist/languages/java/parser.js.map +1 -0
  249. package/dist/languages/kotlin/index.d.ts +7 -0
  250. package/dist/languages/kotlin/index.d.ts.map +1 -0
  251. package/dist/languages/kotlin/index.js +7 -0
  252. package/dist/languages/kotlin/index.js.map +1 -0
  253. package/dist/languages/kotlin/parser.d.ts +84 -0
  254. package/dist/languages/kotlin/parser.d.ts.map +1 -0
  255. package/dist/languages/kotlin/parser.js +507 -0
  256. package/dist/languages/kotlin/parser.js.map +1 -0
  257. package/dist/languages/python/index.d.ts +7 -0
  258. package/dist/languages/python/index.d.ts.map +1 -0
  259. package/dist/languages/python/index.js +7 -0
  260. package/dist/languages/python/index.js.map +1 -0
  261. package/dist/languages/python/parser.d.ts +91 -0
  262. package/dist/languages/python/parser.d.ts.map +1 -0
  263. package/dist/languages/python/parser.js +375 -0
  264. package/dist/languages/python/parser.js.map +1 -0
  265. package/dist/languages/registry.d.ts +81 -0
  266. package/dist/languages/registry.d.ts.map +1 -0
  267. package/dist/languages/registry.js +150 -0
  268. package/dist/languages/registry.js.map +1 -0
  269. package/dist/languages/types.d.ts +137 -0
  270. package/dist/languages/types.d.ts.map +1 -0
  271. package/dist/languages/types.js +10 -0
  272. package/dist/languages/types.js.map +1 -0
  273. package/dist/languages/typescript/index.d.ts +7 -0
  274. package/dist/languages/typescript/index.d.ts.map +1 -0
  275. package/dist/languages/typescript/index.js +7 -0
  276. package/dist/languages/typescript/index.js.map +1 -0
  277. package/dist/languages/typescript/parser.d.ts +51 -0
  278. package/dist/languages/typescript/parser.d.ts.map +1 -0
  279. package/dist/languages/typescript/parser.js +286 -0
  280. package/dist/languages/typescript/parser.js.map +1 -0
  281. package/dist/license/generator.d.ts +43 -0
  282. package/dist/license/generator.d.ts.map +1 -0
  283. package/dist/license/generator.js +72 -0
  284. package/dist/license/generator.js.map +1 -0
  285. package/dist/license/index.d.ts +11 -0
  286. package/dist/license/index.d.ts.map +1 -0
  287. package/dist/license/index.js +12 -0
  288. package/dist/license/index.js.map +1 -0
  289. package/dist/license/types.d.ts +85 -0
  290. package/dist/license/types.d.ts.map +1 -0
  291. package/dist/license/types.js +10 -0
  292. package/dist/license/types.js.map +1 -0
  293. package/dist/license/validator.d.ts +77 -0
  294. package/dist/license/validator.d.ts.map +1 -0
  295. package/dist/license/validator.js +275 -0
  296. package/dist/license/validator.js.map +1 -0
  297. package/dist/parser/extractor.d.ts +31 -0
  298. package/dist/parser/extractor.d.ts.map +1 -0
  299. package/dist/parser/extractor.js +10 -0
  300. package/dist/parser/extractor.js.map +1 -0
  301. package/dist/parser/extractors/go.d.ts +21 -0
  302. package/dist/parser/extractors/go.d.ts.map +1 -0
  303. package/dist/parser/extractors/go.js +569 -0
  304. package/dist/parser/extractors/go.js.map +1 -0
  305. package/dist/parser/extractors/index.d.ts +13 -0
  306. package/dist/parser/extractors/index.d.ts.map +1 -0
  307. package/dist/parser/extractors/index.js +13 -0
  308. package/dist/parser/extractors/index.js.map +1 -0
  309. package/dist/parser/extractors/java.d.ts +24 -0
  310. package/dist/parser/extractors/java.d.ts.map +1 -0
  311. package/dist/parser/extractors/java.js +611 -0
  312. package/dist/parser/extractors/java.js.map +1 -0
  313. package/dist/parser/extractors/kotlin.d.ts +25 -0
  314. package/dist/parser/extractors/kotlin.d.ts.map +1 -0
  315. package/dist/parser/extractors/kotlin.js +665 -0
  316. package/dist/parser/extractors/kotlin.js.map +1 -0
  317. package/dist/parser/extractors/python.d.ts +21 -0
  318. package/dist/parser/extractors/python.d.ts.map +1 -0
  319. package/dist/parser/extractors/python.js +514 -0
  320. package/dist/parser/extractors/python.js.map +1 -0
  321. package/dist/parser/extractors/typescript.d.ts +23 -0
  322. package/dist/parser/extractors/typescript.d.ts.map +1 -0
  323. package/dist/parser/extractors/typescript.js +664 -0
  324. package/dist/parser/extractors/typescript.js.map +1 -0
  325. package/dist/parser/index.d.ts +15 -0
  326. package/dist/parser/index.d.ts.map +1 -0
  327. package/dist/parser/index.js +14 -0
  328. package/dist/parser/index.js.map +1 -0
  329. package/dist/parser/manager.d.ts +50 -0
  330. package/dist/parser/manager.d.ts.map +1 -0
  331. package/dist/parser/manager.js +159 -0
  332. package/dist/parser/manager.js.map +1 -0
  333. package/dist/registry/builtins/go-builtins.d.ts +13 -0
  334. package/dist/registry/builtins/go-builtins.d.ts.map +1 -0
  335. package/dist/registry/builtins/go-builtins.js +63 -0
  336. package/dist/registry/builtins/go-builtins.js.map +1 -0
  337. package/dist/registry/builtins/java-builtins.d.ts +10 -0
  338. package/dist/registry/builtins/java-builtins.d.ts.map +1 -0
  339. package/dist/registry/builtins/java-builtins.js +59 -0
  340. package/dist/registry/builtins/java-builtins.js.map +1 -0
  341. package/dist/registry/builtins/kotlin-builtins.d.ts +10 -0
  342. package/dist/registry/builtins/kotlin-builtins.d.ts.map +1 -0
  343. package/dist/registry/builtins/kotlin-builtins.js +38 -0
  344. package/dist/registry/builtins/kotlin-builtins.js.map +1 -0
  345. package/dist/registry/builtins/node-builtins.d.ts +10 -0
  346. package/dist/registry/builtins/node-builtins.d.ts.map +1 -0
  347. package/dist/registry/builtins/node-builtins.js +36 -0
  348. package/dist/registry/builtins/node-builtins.js.map +1 -0
  349. package/dist/registry/builtins/python-builtins.d.ts +10 -0
  350. package/dist/registry/builtins/python-builtins.d.ts.map +1 -0
  351. package/dist/registry/builtins/python-builtins.js +43 -0
  352. package/dist/registry/builtins/python-builtins.js.map +1 -0
  353. package/dist/registry/cache.d.ts +53 -0
  354. package/dist/registry/cache.d.ts.map +1 -0
  355. package/dist/registry/cache.js +147 -0
  356. package/dist/registry/cache.js.map +1 -0
  357. package/dist/registry/go-registry.d.ts +52 -0
  358. package/dist/registry/go-registry.d.ts.map +1 -0
  359. package/dist/registry/go-registry.js +148 -0
  360. package/dist/registry/go-registry.js.map +1 -0
  361. package/dist/registry/index.d.ts +18 -0
  362. package/dist/registry/index.d.ts.map +1 -0
  363. package/dist/registry/index.js +21 -0
  364. package/dist/registry/index.js.map +1 -0
  365. package/dist/registry/maven-registry.d.ts +57 -0
  366. package/dist/registry/maven-registry.d.ts.map +1 -0
  367. package/dist/registry/maven-registry.js +155 -0
  368. package/dist/registry/maven-registry.js.map +1 -0
  369. package/dist/registry/npm-registry.d.ts +40 -0
  370. package/dist/registry/npm-registry.d.ts.map +1 -0
  371. package/dist/registry/npm-registry.js +155 -0
  372. package/dist/registry/npm-registry.js.map +1 -0
  373. package/dist/registry/pypi-registry.d.ts +49 -0
  374. package/dist/registry/pypi-registry.d.ts.map +1 -0
  375. package/dist/registry/pypi-registry.js +175 -0
  376. package/dist/registry/pypi-registry.js.map +1 -0
  377. package/dist/registry/registry-manager.d.ts +45 -0
  378. package/dist/registry/registry-manager.d.ts.map +1 -0
  379. package/dist/registry/registry-manager.js +107 -0
  380. package/dist/registry/registry-manager.js.map +1 -0
  381. package/dist/registry/types.d.ts +83 -0
  382. package/dist/registry/types.d.ts.map +1 -0
  383. package/dist/registry/types.js +12 -0
  384. package/dist/registry/types.js.map +1 -0
  385. package/dist/reporter/html-reporter.d.ts +20 -0
  386. package/dist/reporter/html-reporter.d.ts.map +1 -0
  387. package/dist/reporter/html-reporter.js +612 -0
  388. package/dist/reporter/html-reporter.js.map +1 -0
  389. package/dist/reporter/index.d.ts +28 -0
  390. package/dist/reporter/index.d.ts.map +1 -0
  391. package/dist/reporter/index.js +48 -0
  392. package/dist/reporter/index.js.map +1 -0
  393. package/dist/reporter/markdown-reporter.d.ts +16 -0
  394. package/dist/reporter/markdown-reporter.d.ts.map +1 -0
  395. package/dist/reporter/markdown-reporter.js +182 -0
  396. package/dist/reporter/markdown-reporter.js.map +1 -0
  397. package/dist/reporter/sarif-reporter.d.ts +67 -0
  398. package/dist/reporter/sarif-reporter.d.ts.map +1 -0
  399. package/dist/reporter/sarif-reporter.js +73 -0
  400. package/dist/reporter/sarif-reporter.js.map +1 -0
  401. package/dist/reporter/terminal-reporter.d.ts +14 -0
  402. package/dist/reporter/terminal-reporter.d.ts.map +1 -0
  403. package/dist/reporter/terminal-reporter.js +126 -0
  404. package/dist/reporter/terminal-reporter.js.map +1 -0
  405. package/dist/reporter/types.d.ts +43 -0
  406. package/dist/reporter/types.d.ts.map +1 -0
  407. package/dist/reporter/types.js +10 -0
  408. package/dist/reporter/types.js.map +1 -0
  409. package/dist/reporter/v4-html.d.ts +24 -0
  410. package/dist/reporter/v4-html.d.ts.map +1 -0
  411. package/dist/reporter/v4-html.js +359 -0
  412. package/dist/reporter/v4-html.js.map +1 -0
  413. package/dist/reporter/v4-terminal.d.ts +55 -0
  414. package/dist/reporter/v4-terminal.d.ts.map +1 -0
  415. package/dist/reporter/v4-terminal.js +199 -0
  416. package/dist/reporter/v4-terminal.js.map +1 -0
  417. package/dist/scanner/index.d.ts +9 -0
  418. package/dist/scanner/index.d.ts.map +1 -0
  419. package/dist/scanner/index.js +9 -0
  420. package/dist/scanner/index.js.map +1 -0
  421. package/dist/scanner/v4-scanner.d.ts +162 -0
  422. package/dist/scanner/v4-scanner.d.ts.map +1 -0
  423. package/dist/scanner/v4-scanner.js +327 -0
  424. package/dist/scanner/v4-scanner.js.map +1 -0
  425. package/dist/scorer/report.d.ts +52 -0
  426. package/dist/scorer/report.d.ts.map +1 -0
  427. package/dist/scorer/report.js +347 -0
  428. package/dist/scorer/report.js.map +1 -0
  429. package/dist/scorer/scoring-engine.d.ts +170 -0
  430. package/dist/scorer/scoring-engine.d.ts.map +1 -0
  431. package/dist/scorer/scoring-engine.js +308 -0
  432. package/dist/scorer/scoring-engine.js.map +1 -0
  433. package/dist/scorer/v4-adapter.d.ts +87 -0
  434. package/dist/scorer/v4-adapter.d.ts.map +1 -0
  435. package/dist/scorer/v4-adapter.js +145 -0
  436. package/dist/scorer/v4-adapter.js.map +1 -0
  437. package/dist/sla/index.d.ts +7 -0
  438. package/dist/sla/index.d.ts.map +1 -0
  439. package/dist/sla/index.js +6 -0
  440. package/dist/sla/index.js.map +1 -0
  441. package/dist/sla/tracker.d.ts +70 -0
  442. package/dist/sla/tracker.d.ts.map +1 -0
  443. package/dist/sla/tracker.js +151 -0
  444. package/dist/sla/tracker.js.map +1 -0
  445. package/dist/sla/types.d.ts +67 -0
  446. package/dist/sla/types.d.ts.map +1 -0
  447. package/dist/sla/types.js +42 -0
  448. package/dist/sla/types.js.map +1 -0
  449. package/dist/types.d.ts +172 -0
  450. package/dist/types.d.ts.map +1 -0
  451. package/dist/types.js +69 -0
  452. package/dist/types.js.map +1 -0
  453. package/package.json +97 -0
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Python Language Adapter
3
+ *
4
+ * Regex-based parser for Python source code. No native AST dependencies needed —
5
+ * Python's indentation-based syntax is straightforward enough for regex extraction.
6
+ *
7
+ * Supports:
8
+ * - Import extraction (import, from...import, relative imports)
9
+ * - Function/method call extraction
10
+ * - Complexity metrics (cyclomatic, cognitive, nesting via indentation)
11
+ * - Deprecated API detection (via deprecated-apis-python.json)
12
+ * - Package verification (builtin + common third-party whitelists)
13
+ *
14
+ * @since 0.3.0
15
+ */
16
+ import type { SupportedLanguage } from '../../types.js';
17
+ import type { LanguageAdapter, ASTNode, ImportInfo, CallInfo, PackageVerifyResult, DeprecatedInfo, ComplexityMetrics } from '../types.js';
18
+ /**
19
+ * Python standard library modules (3.10+).
20
+ * At least 65 modules covering the most commonly used parts of stdlib.
21
+ */
22
+ export declare const PYTHON_BUILTIN_MODULES: Set<string>;
23
+ /**
24
+ * Well-known Python third-party packages from PyPI.
25
+ * At least 55 packages covering data science, web, testing, tooling, etc.
26
+ */
27
+ export declare const PYTHON_COMMON_PACKAGES: Set<string>;
28
+ /**
29
+ * PythonAdapter — LanguageAdapter implementation for Python.
30
+ *
31
+ * Covers: .py, .pyi
32
+ *
33
+ * Uses regex-based parsing instead of a native AST parser.
34
+ * Python's syntax (indentation-based nesting, simple import syntax)
35
+ * is well-suited for regex-based extraction.
36
+ */
37
+ export declare class PythonAdapter implements LanguageAdapter {
38
+ readonly id: SupportedLanguage;
39
+ readonly extensions: string[];
40
+ /**
41
+ * Parse Python source code.
42
+ * Returns a lightweight AST-like structure with lines and source,
43
+ * sufficient for regex-based detection.
44
+ */
45
+ parse(source: string, _filePath: string): Promise<ASTNode>;
46
+ /**
47
+ * Extract import statements from Python source.
48
+ *
49
+ * Matches:
50
+ * - import os
51
+ * - import os.path
52
+ * - import os, sys
53
+ * - from os import path
54
+ * - from os.path import exists, join
55
+ * - from . import relative
56
+ * - from ..parent import something
57
+ * - from __future__ import annotations
58
+ */
59
+ extractImports(source: string, _ast?: ASTNode): ImportInfo[];
60
+ /**
61
+ * Extract function/method calls from Python source.
62
+ *
63
+ * Matches patterns like:
64
+ * - func()
65
+ * - obj.method()
66
+ * - module.submodule.func()
67
+ * - Class()
68
+ */
69
+ extractCalls(source: string, _ast?: ASTNode): CallInfo[];
70
+ /**
71
+ * Verify if a Python package exists.
72
+ *
73
+ * Phase 2 implementation: checks against builtin modules and
74
+ * common third-party package whitelists.
75
+ * Full PyPI verification will be added in a later phase.
76
+ */
77
+ verifyPackage(name: string): Promise<PackageVerifyResult>;
78
+ /**
79
+ * Check if an API is deprecated.
80
+ * Searches the deprecated-apis-python.json database.
81
+ */
82
+ checkDeprecated(api: string): DeprecatedInfo | null;
83
+ /**
84
+ * Compute complexity metrics for Python source code.
85
+ *
86
+ * Uses indentation-based nesting detection (Python's natural structure)
87
+ * and regex matching for decision points.
88
+ */
89
+ computeComplexity(source: string, _ast?: ASTNode): ComplexityMetrics;
90
+ }
91
+ //# sourceMappingURL=parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../src/languages/python/parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,KAAK,EACV,eAAe,EACf,OAAO,EACP,UAAU,EACV,QAAQ,EACR,mBAAmB,EACnB,cAAc,EACd,iBAAiB,EAClB,MAAM,aAAa,CAAC;AAIrB;;;GAGG;AACH,eAAO,MAAM,sBAAsB,aAkCjC,CAAC;AAIH;;;GAGG;AACH,eAAO,MAAM,sBAAsB,aAgCjC,CAAC;AA2BH;;;;;;;;GAQG;AACH,qBAAa,aAAc,YAAW,eAAe;IACnD,QAAQ,CAAC,EAAE,EAAE,iBAAiB,CAAY;IAC1C,QAAQ,CAAC,UAAU,WAAmB;IAEtC;;;;OAIG;IACG,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAQhE;;;;;;;;;;;;OAYG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,UAAU,EAAE;IA+E5D;;;;;;;;OAQG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,QAAQ,EAAE;IAiDxD;;;;;;OAMG;IACG,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IA0B/D;;;OAGG;IACH,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IAenD;;;;;OAKG;IACH,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,iBAAiB;CA6DrE"}
@@ -0,0 +1,375 @@
1
+ /**
2
+ * Python Language Adapter
3
+ *
4
+ * Regex-based parser for Python source code. No native AST dependencies needed —
5
+ * Python's indentation-based syntax is straightforward enough for regex extraction.
6
+ *
7
+ * Supports:
8
+ * - Import extraction (import, from...import, relative imports)
9
+ * - Function/method call extraction
10
+ * - Complexity metrics (cyclomatic, cognitive, nesting via indentation)
11
+ * - Deprecated API detection (via deprecated-apis-python.json)
12
+ * - Package verification (builtin + common third-party whitelists)
13
+ *
14
+ * @since 0.3.0
15
+ */
16
+ import { createRequire } from 'node:module';
17
+ // ─── Python Built-in Modules ───
18
+ /**
19
+ * Python standard library modules (3.10+).
20
+ * At least 65 modules covering the most commonly used parts of stdlib.
21
+ */
22
+ export const PYTHON_BUILTIN_MODULES = new Set([
23
+ // Core
24
+ 'os', 'sys', 're', 'json', 'math', 'random', 'datetime', 'time',
25
+ 'pathlib', 'typing', 'collections', 'functools', 'itertools', 'io',
26
+ // System & subprocess
27
+ 'subprocess', 'shutil', 'tempfile', 'logging', 'unittest', 'argparse',
28
+ // Crypto & encoding
29
+ 'hashlib', 'hmac', 'secrets', 'base64',
30
+ // Network & web
31
+ 'urllib', 'http', 'socket', 'ssl', 'email', 'smtplib',
32
+ // Data formats
33
+ 'csv', 'sqlite3', 'xml', 'html', 'configparser',
34
+ // OOP & patterns
35
+ 'abc', 'asyncio', 'concurrent', 'multiprocessing', 'threading', 'queue',
36
+ // Binary & serialization
37
+ 'struct', 'pickle', 'copy', 'pprint', 'textwrap',
38
+ // Enums & data
39
+ 'enum', 'dataclasses', 'contextlib', 'warnings', 'traceback',
40
+ // Introspection
41
+ 'inspect', 'dis', 'ast', 'token', 'tokenize', 'importlib', 'pkgutil',
42
+ // Archive & compression
43
+ 'zipfile', 'tarfile', 'gzip', 'bz2', 'lzma', 'zipimport',
44
+ // OS-level
45
+ 'signal', 'ctypes', 'platform',
46
+ // Additional stdlib
47
+ 'string', 'decimal', 'fractions', 'statistics', 'operator',
48
+ 'array', 'bisect', 'heapq', 'weakref', 'types',
49
+ 'glob', 'fnmatch', 'linecache', 'shelve', 'dbm',
50
+ 'binascii', 'codecs', 'unicodedata',
51
+ 'mmap', 'select', 'selectors',
52
+ 'atexit', 'sched', 'gettext', 'locale',
53
+ 'os.path', 'posixpath', 'ntpath',
54
+ 'pdb', 'profile', 'cProfile', 'timeit',
55
+ 'doctest', 'builtins', '__future__',
56
+ ]);
57
+ // ─── Common Third-Party Packages ───
58
+ /**
59
+ * Well-known Python third-party packages from PyPI.
60
+ * At least 55 packages covering data science, web, testing, tooling, etc.
61
+ */
62
+ export const PYTHON_COMMON_PACKAGES = new Set([
63
+ // Data science & ML
64
+ 'numpy', 'pandas', 'scipy', 'matplotlib', 'seaborn',
65
+ 'sklearn', 'scikit-learn', 'tensorflow', 'torch', 'keras',
66
+ 'xgboost', 'lightgbm', 'transformers',
67
+ // Web frameworks
68
+ 'flask', 'django', 'fastapi', 'uvicorn', 'gunicorn',
69
+ 'starlette', 'sanic',
70
+ // Task queues & caching
71
+ 'celery', 'redis', 'kombu',
72
+ // Database
73
+ 'sqlalchemy', 'alembic', 'pydantic', 'psycopg2', 'pymongo',
74
+ // HTTP clients
75
+ 'requests', 'httpx', 'aiohttp', 'urllib3',
76
+ // Scraping & automation
77
+ 'beautifulsoup4', 'bs4', 'scrapy', 'selenium', 'playwright',
78
+ // Image processing
79
+ 'pillow', 'PIL', 'opencv-python', 'cv2',
80
+ // Cloud
81
+ 'boto3', 'botocore', 'google-cloud-storage',
82
+ // Testing
83
+ 'pytest', 'tox', 'coverage', 'mock', 'hypothesis',
84
+ // Code quality
85
+ 'black', 'isort', 'flake8', 'pylint', 'mypy', 'ruff', 'pre-commit',
86
+ // Packaging
87
+ 'poetry', 'pipenv', 'setuptools', 'wheel', 'twine', 'pip',
88
+ // CLI
89
+ 'click', 'typer', 'rich', 'tqdm',
90
+ // Config & serialization
91
+ 'pyyaml', 'yaml', 'toml', 'tomli', 'python-dotenv', 'dotenv',
92
+ // Security
93
+ 'cryptography', 'paramiko', 'jwt', 'pyjwt',
94
+ ]);
95
+ /** Load deprecated APIs from JSON data file */
96
+ function loadDeprecatedAPIs() {
97
+ try {
98
+ const require = createRequire(import.meta.url);
99
+ return require('../../data/deprecated-apis-python.json');
100
+ }
101
+ catch {
102
+ return [];
103
+ }
104
+ }
105
+ const PYTHON_DEPRECATED_DB = loadDeprecatedAPIs();
106
+ // ─── Python Adapter ───
107
+ /**
108
+ * PythonAdapter — LanguageAdapter implementation for Python.
109
+ *
110
+ * Covers: .py, .pyi
111
+ *
112
+ * Uses regex-based parsing instead of a native AST parser.
113
+ * Python's syntax (indentation-based nesting, simple import syntax)
114
+ * is well-suited for regex-based extraction.
115
+ */
116
+ export class PythonAdapter {
117
+ id = 'python';
118
+ extensions = ['.py', '.pyi'];
119
+ /**
120
+ * Parse Python source code.
121
+ * Returns a lightweight AST-like structure with lines and source,
122
+ * sufficient for regex-based detection.
123
+ */
124
+ async parse(source, _filePath) {
125
+ return {
126
+ type: 'PythonModule',
127
+ lines: source.split('\n'),
128
+ source,
129
+ };
130
+ }
131
+ /**
132
+ * Extract import statements from Python source.
133
+ *
134
+ * Matches:
135
+ * - import os
136
+ * - import os.path
137
+ * - import os, sys
138
+ * - from os import path
139
+ * - from os.path import exists, join
140
+ * - from . import relative
141
+ * - from ..parent import something
142
+ * - from __future__ import annotations
143
+ */
144
+ extractImports(source, _ast) {
145
+ const lines = source.split('\n');
146
+ const imports = [];
147
+ for (let i = 0; i < lines.length; i++) {
148
+ const line = lines[i];
149
+ const trimmed = line.trim();
150
+ const lineNum = i + 1;
151
+ // Skip comments and strings
152
+ if (trimmed.startsWith('#'))
153
+ continue;
154
+ // from xxx import yyy, zzz
155
+ const fromMatch = trimmed.match(/^from\s+(\.{0,3}[\w.]*)\s+import\s+(.+?)(?:\s*#.*)?$/);
156
+ if (fromMatch) {
157
+ const modulePath = fromMatch[1];
158
+ const importedNames = fromMatch[2];
159
+ const isRelative = modulePath.startsWith('.');
160
+ // Parse imported bindings: "a, b as c, d"
161
+ const bindings = [];
162
+ // Handle star import
163
+ if (importedNames.trim() === '*') {
164
+ bindings.push('*');
165
+ }
166
+ else {
167
+ // Handle parenthesized imports (single-line): from x import (a, b, c)
168
+ const cleaned = importedNames.replace(/[()]/g, '');
169
+ for (const part of cleaned.split(',')) {
170
+ const name = part.trim().split(/\s+as\s+/).pop()?.trim();
171
+ if (name && name !== '\\')
172
+ bindings.push(name);
173
+ }
174
+ }
175
+ // Determine base module name
176
+ const baseModule = isRelative
177
+ ? modulePath
178
+ : modulePath.split('.')[0];
179
+ imports.push({
180
+ module: modulePath,
181
+ bindings,
182
+ line: lineNum,
183
+ isRelative,
184
+ isBuiltin: !isRelative && PYTHON_BUILTIN_MODULES.has(baseModule),
185
+ });
186
+ continue;
187
+ }
188
+ // import xxx, yyy.zzz
189
+ const importMatch = trimmed.match(/^import\s+(.+?)(?:\s*#.*)?$/);
190
+ if (importMatch) {
191
+ const moduleList = importMatch[1];
192
+ // Split comma-separated imports: import os, sys, json
193
+ for (const part of moduleList.split(',')) {
194
+ const asMatch = part.trim().match(/^([\w.]+)(?:\s+as\s+(\w+))?$/);
195
+ if (asMatch) {
196
+ const fullPath = asMatch[1];
197
+ const alias = asMatch[2] || fullPath.split('.').pop();
198
+ const baseModule = fullPath.split('.')[0];
199
+ imports.push({
200
+ module: fullPath,
201
+ bindings: [alias],
202
+ line: lineNum,
203
+ isRelative: false,
204
+ isBuiltin: PYTHON_BUILTIN_MODULES.has(baseModule),
205
+ });
206
+ }
207
+ }
208
+ }
209
+ }
210
+ return imports;
211
+ }
212
+ /**
213
+ * Extract function/method calls from Python source.
214
+ *
215
+ * Matches patterns like:
216
+ * - func()
217
+ * - obj.method()
218
+ * - module.submodule.func()
219
+ * - Class()
220
+ */
221
+ extractCalls(source, _ast) {
222
+ const lines = source.split('\n');
223
+ const calls = [];
224
+ // Python keywords that look like function calls but aren't
225
+ const pythonKeywords = new Set([
226
+ 'if', 'elif', 'else', 'for', 'while', 'with', 'try', 'except',
227
+ 'finally', 'def', 'class', 'return', 'yield', 'raise', 'import',
228
+ 'from', 'as', 'pass', 'break', 'continue', 'del', 'assert',
229
+ 'lambda', 'global', 'nonlocal', 'async', 'await', 'and', 'or',
230
+ 'not', 'in', 'is', 'True', 'False', 'None',
231
+ ]);
232
+ for (let i = 0; i < lines.length; i++) {
233
+ const line = lines[i];
234
+ const trimmed = line.trimStart();
235
+ const lineNum = i + 1;
236
+ // Skip comments
237
+ if (trimmed.startsWith('#'))
238
+ continue;
239
+ // Skip string-only lines (rough heuristic)
240
+ if (/^(['"]){3}/.test(trimmed) || /^(['"])/.test(trimmed))
241
+ continue;
242
+ // Match calls: word.word.word( or word(
243
+ const callPattern = /(\w+(?:\.\w+)*)\s*\(/g;
244
+ let match;
245
+ while ((match = callPattern.exec(line)) !== null) {
246
+ const callee = match[1];
247
+ const firstName = callee.split('.')[0];
248
+ // Skip keywords
249
+ if (pythonKeywords.has(firstName))
250
+ continue;
251
+ // Skip decorators (they're on lines starting with @)
252
+ if (trimmed.startsWith('@') && match.index <= line.indexOf(callee))
253
+ continue;
254
+ const isMethodCall = callee.includes('.');
255
+ calls.push({
256
+ name: callee,
257
+ line: lineNum,
258
+ column: match.index + 1,
259
+ isMethodCall,
260
+ });
261
+ }
262
+ }
263
+ return calls;
264
+ }
265
+ /**
266
+ * Verify if a Python package exists.
267
+ *
268
+ * Phase 2 implementation: checks against builtin modules and
269
+ * common third-party package whitelists.
270
+ * Full PyPI verification will be added in a later phase.
271
+ */
272
+ async verifyPackage(name) {
273
+ const baseModule = name.split('.')[0];
274
+ if (PYTHON_BUILTIN_MODULES.has(baseModule) || PYTHON_BUILTIN_MODULES.has(name)) {
275
+ return {
276
+ name,
277
+ exists: true,
278
+ checkedAt: Date.now(),
279
+ };
280
+ }
281
+ if (PYTHON_COMMON_PACKAGES.has(baseModule) || PYTHON_COMMON_PACKAGES.has(name)) {
282
+ return {
283
+ name,
284
+ exists: true,
285
+ checkedAt: Date.now(),
286
+ };
287
+ }
288
+ return {
289
+ name,
290
+ exists: false,
291
+ checkedAt: Date.now(),
292
+ };
293
+ }
294
+ /**
295
+ * Check if an API is deprecated.
296
+ * Searches the deprecated-apis-python.json database.
297
+ */
298
+ checkDeprecated(api) {
299
+ for (const entry of PYTHON_DEPRECATED_DB) {
300
+ const regex = new RegExp(entry.pattern);
301
+ if (regex.test(api)) {
302
+ return {
303
+ api: entry.api,
304
+ reason: entry.reason,
305
+ replacement: entry.replacement,
306
+ since: entry.deprecated_since,
307
+ };
308
+ }
309
+ }
310
+ return null;
311
+ }
312
+ /**
313
+ * Compute complexity metrics for Python source code.
314
+ *
315
+ * Uses indentation-based nesting detection (Python's natural structure)
316
+ * and regex matching for decision points.
317
+ */
318
+ computeComplexity(source, _ast) {
319
+ const lines = source.split('\n');
320
+ let cyclomatic = 1; // base complexity
321
+ let cognitive = 0;
322
+ let maxNestingDepth = 0;
323
+ let currentDepth = 0;
324
+ let functionCount = 0;
325
+ // Track non-empty, non-comment lines
326
+ const codeLines = lines.filter(l => {
327
+ const t = l.trim();
328
+ return t.length > 0 && !t.startsWith('#');
329
+ });
330
+ for (const line of lines) {
331
+ const trimmed = line.trimStart();
332
+ if (!trimmed || trimmed.startsWith('#'))
333
+ continue;
334
+ // Python uses indentation for nesting
335
+ const indent = line.length - trimmed.length;
336
+ // Use 4-space standard, but handle 2-space too
337
+ currentDepth = indent > 0 ? Math.floor(indent / 4) || Math.floor(indent / 2) : 0;
338
+ maxNestingDepth = Math.max(maxNestingDepth, currentDepth);
339
+ // Decision points → cyclomatic complexity
340
+ if (/^(if|elif)\s+/.test(trimmed)) {
341
+ cyclomatic++;
342
+ cognitive += 1 + currentDepth; // nesting adds cognitive load
343
+ }
344
+ else if (/^(for|while)\s+/.test(trimmed)) {
345
+ cyclomatic++;
346
+ cognitive += 1 + currentDepth;
347
+ }
348
+ else if (/^except(\s+|\s*:)/.test(trimmed)) {
349
+ cyclomatic++;
350
+ cognitive += 1 + currentDepth;
351
+ }
352
+ else if (/^else\s*:/.test(trimmed)) {
353
+ cognitive += 1; // else doesn't add cyclomatic but adds cognitive
354
+ }
355
+ // Logical operators within expressions
356
+ const logicalOps = (trimmed.match(/\band\b|\bor\b/g) || []).length;
357
+ cyclomatic += logicalOps;
358
+ cognitive += logicalOps;
359
+ // Count function/method definitions
360
+ if (/^(async\s+)?def\s+\w+/.test(trimmed)) {
361
+ functionCount++;
362
+ }
363
+ // Count class definitions (rough proxy for structure)
364
+ // Not counted as functions, but noted
365
+ }
366
+ return {
367
+ cyclomatic,
368
+ cognitive,
369
+ loc: codeLines.length,
370
+ functionCount,
371
+ maxNestingDepth,
372
+ };
373
+ }
374
+ }
375
+ //# sourceMappingURL=parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../src/languages/python/parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAY5C,kCAAkC;AAElC;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC;IAC5C,OAAO;IACP,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM;IAC/D,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,WAAW,EAAE,IAAI;IAClE,sBAAsB;IACtB,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU;IACrE,oBAAoB;IACpB,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ;IACtC,gBAAgB;IAChB,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS;IACrD,eAAe;IACf,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc;IAC/C,iBAAiB;IACjB,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,iBAAiB,EAAE,WAAW,EAAE,OAAO;IACvE,yBAAyB;IACzB,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU;IAChD,eAAe;IACf,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW;IAC5D,gBAAgB;IAChB,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS;IACpE,wBAAwB;IACxB,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW;IACxD,WAAW;IACX,QAAQ,EAAE,QAAQ,EAAE,UAAU;IAC9B,oBAAoB;IACpB,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,UAAU;IAC1D,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO;IAC9C,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK;IAC/C,UAAU,EAAE,QAAQ,EAAE,aAAa;IACnC,MAAM,EAAE,QAAQ,EAAE,WAAW;IAC7B,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ;IACtC,SAAS,EAAE,WAAW,EAAE,QAAQ;IAChC,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ;IACtC,SAAS,EAAE,UAAU,EAAE,YAAY;CACpC,CAAC,CAAC;AAEH,sCAAsC;AAEtC;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC;IAC5C,oBAAoB;IACpB,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS;IACnD,SAAS,EAAE,cAAc,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO;IACzD,SAAS,EAAE,UAAU,EAAE,cAAc;IACrC,iBAAiB;IACjB,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU;IACnD,WAAW,EAAE,OAAO;IACpB,wBAAwB;IACxB,QAAQ,EAAE,OAAO,EAAE,OAAO;IAC1B,WAAW;IACX,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS;IAC1D,eAAe;IACf,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS;IACzC,wBAAwB;IACxB,gBAAgB,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,YAAY;IAC3D,mBAAmB;IACnB,QAAQ,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK;IACvC,QAAQ;IACR,OAAO,EAAE,UAAU,EAAE,sBAAsB;IAC3C,UAAU;IACV,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY;IACjD,eAAe;IACf,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY;IAClE,YAAY;IACZ,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK;IACzD,MAAM;IACN,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM;IAChC,yBAAyB;IACzB,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ;IAC5D,WAAW;IACX,cAAc,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO;CAC3C,CAAC,CAAC;AAaH,+CAA+C;AAC/C,SAAS,kBAAkB;IACzB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC/C,OAAO,OAAO,CAAC,wCAAwC,CAAyB,CAAC;IACnF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,oBAAoB,GAAG,kBAAkB,EAAE,CAAC;AAElD,yBAAyB;AAEzB;;;;;;;;GAQG;AACH,MAAM,OAAO,aAAa;IACf,EAAE,GAAsB,QAAQ,CAAC;IACjC,UAAU,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAEtC;;;;OAIG;IACH,KAAK,CAAC,KAAK,CAAC,MAAc,EAAE,SAAiB;QAC3C,OAAO;YACL,IAAI,EAAE,cAAc;YACpB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;YACzB,MAAM;SACP,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,cAAc,CAAC,MAAc,EAAE,IAAc;QAC3C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,OAAO,GAAiB,EAAE,CAAC;QAEjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAC5B,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;YAEtB,4BAA4B;YAC5B,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,SAAS;YAEtC,2BAA2B;YAC3B,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAC7B,sDAAsD,CACvD,CAAC;YACF,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;gBAChC,MAAM,aAAa,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;gBACnC,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;gBAE9C,0CAA0C;gBAC1C,MAAM,QAAQ,GAAa,EAAE,CAAC;gBAC9B,qBAAqB;gBACrB,IAAI,aAAa,CAAC,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;oBACjC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACrB,CAAC;qBAAM,CAAC;oBACN,sEAAsE;oBACtE,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;oBACnD,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;wBACtC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC;wBACzD,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI;4BAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACjD,CAAC;gBACH,CAAC;gBAED,6BAA6B;gBAC7B,MAAM,UAAU,GAAG,UAAU;oBAC3B,CAAC,CAAC,UAAU;oBACZ,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBAE7B,OAAO,CAAC,IAAI,CAAC;oBACX,MAAM,EAAE,UAAU;oBAClB,QAAQ;oBACR,IAAI,EAAE,OAAO;oBACb,UAAU;oBACV,SAAS,EAAE,CAAC,UAAU,IAAI,sBAAsB,CAAC,GAAG,CAAC,UAAU,CAAC;iBACjE,CAAC,CAAC;gBACH,SAAS;YACX,CAAC;YAED,sBAAsB;YACtB,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAC/B,6BAA6B,CAC9B,CAAC;YACF,IAAI,WAAW,EAAE,CAAC;gBAChB,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;gBAClC,sDAAsD;gBACtD,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;oBACzC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;oBAClE,IAAI,OAAO,EAAE,CAAC;wBACZ,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;wBAC5B,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAG,CAAC;wBACvD,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;wBAE1C,OAAO,CAAC,IAAI,CAAC;4BACX,MAAM,EAAE,QAAQ;4BAChB,QAAQ,EAAE,CAAC,KAAK,CAAC;4BACjB,IAAI,EAAE,OAAO;4BACb,UAAU,EAAE,KAAK;4BACjB,SAAS,EAAE,sBAAsB,CAAC,GAAG,CAAC,UAAU,CAAC;yBAClD,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;;;;;OAQG;IACH,YAAY,CAAC,MAAc,EAAE,IAAc;QACzC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,KAAK,GAAe,EAAE,CAAC;QAE7B,2DAA2D;QAC3D,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC;YAC7B,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ;YAC7D,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ;YAC/D,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ;YAC1D,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI;YAC7D,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;SAC3C,CAAC,CAAC;QAEH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YACjC,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC;YAEtB,gBAAgB;YAChB,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,SAAS;YACtC,2CAA2C;YAC3C,IAAI,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC;gBAAE,SAAS;YAEpE,0CAA0C;YAC1C,MAAM,WAAW,GAAG,uBAAuB,CAAC;YAC5C,IAAI,KAA6B,CAAC;YAClC,OAAO,CAAC,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBACjD,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBACxB,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBAEvC,gBAAgB;gBAChB,IAAI,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC;oBAAE,SAAS;gBAC5C,qDAAqD;gBACrD,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;oBAAE,SAAS;gBAE7E,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;gBAE1C,KAAK,CAAC,IAAI,CAAC;oBACT,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,OAAO;oBACb,MAAM,EAAE,KAAK,CAAC,KAAK,GAAG,CAAC;oBACvB,YAAY;iBACb,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,aAAa,CAAC,IAAY;QAC9B,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAEtC,IAAI,sBAAsB,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/E,OAAO;gBACL,IAAI;gBACJ,MAAM,EAAE,IAAI;gBACZ,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;aACtB,CAAC;QACJ,CAAC;QAED,IAAI,sBAAsB,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,sBAAsB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/E,OAAO;gBACL,IAAI;gBACJ,MAAM,EAAE,IAAI;gBACZ,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;aACtB,CAAC;QACJ,CAAC;QAED,OAAO;YACL,IAAI;YACJ,MAAM,EAAE,KAAK;YACb,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,eAAe,CAAC,GAAW;QACzB,KAAK,MAAM,KAAK,IAAI,oBAAoB,EAAE,CAAC;YACzC,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACxC,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBACpB,OAAO;oBACL,GAAG,EAAE,KAAK,CAAC,GAAG;oBACd,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,WAAW,EAAE,KAAK,CAAC,WAAW;oBAC9B,KAAK,EAAE,KAAK,CAAC,gBAAgB;iBAC9B,CAAC;YACJ,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;OAKG;IACH,iBAAiB,CAAC,MAAc,EAAE,IAAc;QAC9C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAEjC,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC,kBAAkB;QACtC,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,IAAI,eAAe,GAAG,CAAC,CAAC;QACxB,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,IAAI,aAAa,GAAG,CAAC,CAAC;QAEtB,qCAAqC;QACrC,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;YACjC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;YACnB,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YACjC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,SAAS;YAElD,sCAAsC;YACtC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;YAC5C,+CAA+C;YAC/C,YAAY,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACjF,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;YAE1D,0CAA0C;YAC1C,IAAI,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBAClC,UAAU,EAAE,CAAC;gBACb,SAAS,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC,8BAA8B;YAC/D,CAAC;iBAAM,IAAI,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC3C,UAAU,EAAE,CAAC;gBACb,SAAS,IAAI,CAAC,GAAG,YAAY,CAAC;YAChC,CAAC;iBAAM,IAAI,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC7C,UAAU,EAAE,CAAC;gBACb,SAAS,IAAI,CAAC,GAAG,YAAY,CAAC;YAChC,CAAC;iBAAM,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBACrC,SAAS,IAAI,CAAC,CAAC,CAAC,iDAAiD;YACnE,CAAC;YAED,uCAAuC;YACvC,MAAM,UAAU,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;YACnE,UAAU,IAAI,UAAU,CAAC;YACzB,SAAS,IAAI,UAAU,CAAC;YAExB,oCAAoC;YACpC,IAAI,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC1C,aAAa,EAAE,CAAC;YAClB,CAAC;YAED,sDAAsD;YACtD,sCAAsC;QACxC,CAAC;QAED,OAAO;YACL,UAAU;YACV,SAAS;YACT,GAAG,EAAE,SAAS,CAAC,MAAM;YACrB,aAAa;YACb,eAAe;SAChB,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Language Registry
3
+ *
4
+ * Manages registered LanguageAdapters and auto-selects the appropriate
5
+ * adapter based on file extension.
6
+ *
7
+ * @since 0.3.0
8
+ */
9
+ import type { SupportedLanguage } from '../types.js';
10
+ import type { LanguageAdapter } from './types.js';
11
+ /**
12
+ * LanguageRegistry — singleton that maps file extensions to language adapters.
13
+ *
14
+ * Usage:
15
+ * const registry = LanguageRegistry.getInstance();
16
+ * registry.register(new TypeScriptAdapter());
17
+ * const adapter = registry.getByExtension('.ts');
18
+ */
19
+ export declare class LanguageRegistry {
20
+ private static instance;
21
+ /** Adapter map by language ID */
22
+ private adapters;
23
+ /** Extension → language ID lookup */
24
+ private extensionMap;
25
+ private constructor();
26
+ /** Get the singleton instance */
27
+ static getInstance(): LanguageRegistry;
28
+ /**
29
+ * Reset the singleton (for testing).
30
+ */
31
+ static resetInstance(): void;
32
+ /**
33
+ * Register a language adapter.
34
+ * @param adapter The language adapter to register
35
+ * @throws If an adapter with the same ID is already registered
36
+ */
37
+ register(adapter: LanguageAdapter): void;
38
+ /**
39
+ * Unregister a language adapter by ID.
40
+ * @param id Language identifier
41
+ */
42
+ unregister(id: string): void;
43
+ /**
44
+ * Get a language adapter by language ID.
45
+ * @param id Language identifier (e.g. 'typescript')
46
+ * @returns The adapter, or undefined if not registered
47
+ */
48
+ getById(id: string): LanguageAdapter | undefined;
49
+ /**
50
+ * Get a language adapter by file extension.
51
+ * @param ext File extension including dot (e.g. '.ts')
52
+ * @returns The adapter, or undefined if no adapter matches
53
+ */
54
+ getByExtension(ext: string): LanguageAdapter | undefined;
55
+ /**
56
+ * Get a language adapter for a file path.
57
+ * Extracts the extension and looks up the adapter.
58
+ * @param filePath File path
59
+ * @returns The adapter, or undefined if no adapter matches
60
+ */
61
+ getByFilePath(filePath: string): LanguageAdapter | undefined;
62
+ /**
63
+ * Detect the language for a file path.
64
+ * @param filePath File path
65
+ * @returns The language identifier, or undefined
66
+ */
67
+ detectLanguage(filePath: string): SupportedLanguage | undefined;
68
+ /**
69
+ * Get all registered language IDs.
70
+ */
71
+ getRegisteredLanguages(): string[];
72
+ /**
73
+ * Get all supported extensions.
74
+ */
75
+ getSupportedExtensions(): string[];
76
+ /**
77
+ * Check if a file extension is supported.
78
+ */
79
+ isSupported(extOrPath: string): boolean;
80
+ }
81
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/languages/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD;;;;;;;GAOG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAiC;IAExD,iCAAiC;IACjC,OAAO,CAAC,QAAQ,CAAsC;IAEtD,qCAAqC;IACrC,OAAO,CAAC,YAAY,CAA6B;IAEjD,OAAO;IAEP,iCAAiC;IACjC,MAAM,CAAC,WAAW,IAAI,gBAAgB;IAOtC;;OAEG;IACH,MAAM,CAAC,aAAa,IAAI,IAAI;IAI5B;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;IAUxC;;;OAGG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAU5B;;;;OAIG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAIhD;;;;OAIG;IACH,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAQxD;;;;;OAKG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAQ5D;;;;OAIG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAS/D;;OAEG;IACH,sBAAsB,IAAI,MAAM,EAAE;IAIlC;;OAEG;IACH,sBAAsB,IAAI,MAAM,EAAE;IAIlC;;OAEG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;CAOxC"}