cotx-engine 0.1.0

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 (501) hide show
  1. package/LICENSE +94 -0
  2. package/README.md +103 -0
  3. package/dist/commands/compile.d.ts +3 -0
  4. package/dist/commands/compile.js +93 -0
  5. package/dist/commands/compile.js.map +1 -0
  6. package/dist/commands/context.d.ts +1 -0
  7. package/dist/commands/context.js +98 -0
  8. package/dist/commands/context.js.map +1 -0
  9. package/dist/commands/diff.d.ts +19 -0
  10. package/dist/commands/diff.js +127 -0
  11. package/dist/commands/diff.js.map +1 -0
  12. package/dist/commands/impact.d.ts +3 -0
  13. package/dist/commands/impact.js +91 -0
  14. package/dist/commands/impact.js.map +1 -0
  15. package/dist/commands/init.d.ts +1 -0
  16. package/dist/commands/init.js +13 -0
  17. package/dist/commands/init.js.map +1 -0
  18. package/dist/commands/lint.d.ts +13 -0
  19. package/dist/commands/lint.js +290 -0
  20. package/dist/commands/lint.js.map +1 -0
  21. package/dist/commands/map.d.ts +6 -0
  22. package/dist/commands/map.js +409 -0
  23. package/dist/commands/map.js.map +1 -0
  24. package/dist/commands/migrate.d.ts +16 -0
  25. package/dist/commands/migrate.js +150 -0
  26. package/dist/commands/migrate.js.map +1 -0
  27. package/dist/commands/query.d.ts +3 -0
  28. package/dist/commands/query.js +47 -0
  29. package/dist/commands/query.js.map +1 -0
  30. package/dist/commands/rename.d.ts +5 -0
  31. package/dist/commands/rename.js +163 -0
  32. package/dist/commands/rename.js.map +1 -0
  33. package/dist/commands/snapshot.d.ts +6 -0
  34. package/dist/commands/snapshot.js +48 -0
  35. package/dist/commands/snapshot.js.map +1 -0
  36. package/dist/commands/status.d.ts +1 -0
  37. package/dist/commands/status.js +72 -0
  38. package/dist/commands/status.js.map +1 -0
  39. package/dist/commands/update.d.ts +8 -0
  40. package/dist/commands/update.js +163 -0
  41. package/dist/commands/update.js.map +1 -0
  42. package/dist/commands/write.d.ts +6 -0
  43. package/dist/commands/write.js +221 -0
  44. package/dist/commands/write.js.map +1 -0
  45. package/dist/compiler/auto-describe.d.ts +13 -0
  46. package/dist/compiler/auto-describe.js +91 -0
  47. package/dist/compiler/auto-describe.js.map +1 -0
  48. package/dist/compiler/concept-compiler.d.ts +21 -0
  49. package/dist/compiler/concept-compiler.js +125 -0
  50. package/dist/compiler/concept-compiler.js.map +1 -0
  51. package/dist/compiler/contract-compiler.d.ts +16 -0
  52. package/dist/compiler/contract-compiler.js +90 -0
  53. package/dist/compiler/contract-compiler.js.map +1 -0
  54. package/dist/compiler/delta-detector.d.ts +8 -0
  55. package/dist/compiler/delta-detector.js +34 -0
  56. package/dist/compiler/delta-detector.js.map +1 -0
  57. package/dist/compiler/flow-compiler.d.ts +18 -0
  58. package/dist/compiler/flow-compiler.js +69 -0
  59. package/dist/compiler/flow-compiler.js.map +1 -0
  60. package/dist/compiler/module-compiler.d.ts +18 -0
  61. package/dist/compiler/module-compiler.js +420 -0
  62. package/dist/compiler/module-compiler.js.map +1 -0
  63. package/dist/compiler/stale-detector.d.ts +22 -0
  64. package/dist/compiler/stale-detector.js +79 -0
  65. package/dist/compiler/stale-detector.js.map +1 -0
  66. package/dist/config/ignore-service.d.ts +26 -0
  67. package/dist/config/ignore-service.js +366 -0
  68. package/dist/config/ignore-service.js.map +1 -0
  69. package/dist/core/analysis/cluster-enricher.d.ts +38 -0
  70. package/dist/core/analysis/cluster-enricher.js +169 -0
  71. package/dist/core/analysis/cluster-enricher.js.map +1 -0
  72. package/dist/core/analysis/community-processor.d.ts +39 -0
  73. package/dist/core/analysis/community-processor.js +319 -0
  74. package/dist/core/analysis/community-processor.js.map +1 -0
  75. package/dist/core/analysis/process-processor.d.ts +51 -0
  76. package/dist/core/analysis/process-processor.js +318 -0
  77. package/dist/core/analysis/process-processor.js.map +1 -0
  78. package/dist/core/bridge.d.ts +15 -0
  79. package/dist/core/bridge.js +63 -0
  80. package/dist/core/bridge.js.map +1 -0
  81. package/dist/core/export/json-exporter.d.ts +43 -0
  82. package/dist/core/export/json-exporter.js +13 -0
  83. package/dist/core/export/json-exporter.js.map +1 -0
  84. package/dist/core/graph/graph.d.ts +2 -0
  85. package/dist/core/graph/graph.js +79 -0
  86. package/dist/core/graph/graph.js.map +1 -0
  87. package/dist/core/graph/types.d.ts +25 -0
  88. package/dist/core/graph/types.js +2 -0
  89. package/dist/core/graph/types.js.map +1 -0
  90. package/dist/core/parser/ast-cache.d.ts +11 -0
  91. package/dist/core/parser/ast-cache.js +36 -0
  92. package/dist/core/parser/ast-cache.js.map +1 -0
  93. package/dist/core/parser/call-processor.d.ts +105 -0
  94. package/dist/core/parser/call-processor.js +1807 -0
  95. package/dist/core/parser/call-processor.js.map +1 -0
  96. package/dist/core/parser/call-routing.d.ts +55 -0
  97. package/dist/core/parser/call-routing.js +113 -0
  98. package/dist/core/parser/call-routing.js.map +1 -0
  99. package/dist/core/parser/call-sites/extract-language-call-site.d.ts +10 -0
  100. package/dist/core/parser/call-sites/extract-language-call-site.js +23 -0
  101. package/dist/core/parser/call-sites/extract-language-call-site.js.map +1 -0
  102. package/dist/core/parser/call-sites/java.d.ts +9 -0
  103. package/dist/core/parser/call-sites/java.js +31 -0
  104. package/dist/core/parser/call-sites/java.js.map +1 -0
  105. package/dist/core/parser/cluster-enricher.d.ts +38 -0
  106. package/dist/core/parser/cluster-enricher.js +169 -0
  107. package/dist/core/parser/cluster-enricher.js.map +1 -0
  108. package/dist/core/parser/community-processor.d.ts +39 -0
  109. package/dist/core/parser/community-processor.js +321 -0
  110. package/dist/core/parser/community-processor.js.map +1 -0
  111. package/dist/core/parser/constants.d.ts +16 -0
  112. package/dist/core/parser/constants.js +17 -0
  113. package/dist/core/parser/constants.js.map +1 -0
  114. package/dist/core/parser/entry-point-scoring.d.ts +57 -0
  115. package/dist/core/parser/entry-point-scoring.js +377 -0
  116. package/dist/core/parser/entry-point-scoring.js.map +1 -0
  117. package/dist/core/parser/export-detection.d.ts +57 -0
  118. package/dist/core/parser/export-detection.js +234 -0
  119. package/dist/core/parser/export-detection.js.map +1 -0
  120. package/dist/core/parser/field-extractor.d.ts +34 -0
  121. package/dist/core/parser/field-extractor.js +33 -0
  122. package/dist/core/parser/field-extractor.js.map +1 -0
  123. package/dist/core/parser/field-extractors/configs/c-cpp.d.ts +16 -0
  124. package/dist/core/parser/field-extractors/configs/c-cpp.js +129 -0
  125. package/dist/core/parser/field-extractors/configs/c-cpp.js.map +1 -0
  126. package/dist/core/parser/field-extractors/configs/csharp.d.ts +15 -0
  127. package/dist/core/parser/field-extractors/configs/csharp.js +129 -0
  128. package/dist/core/parser/field-extractors/configs/csharp.js.map +1 -0
  129. package/dist/core/parser/field-extractors/configs/dart.d.ts +12 -0
  130. package/dist/core/parser/field-extractors/configs/dart.js +93 -0
  131. package/dist/core/parser/field-extractors/configs/dart.js.map +1 -0
  132. package/dist/core/parser/field-extractors/configs/go.d.ts +12 -0
  133. package/dist/core/parser/field-extractors/configs/go.js +66 -0
  134. package/dist/core/parser/field-extractors/configs/go.js.map +1 -0
  135. package/dist/core/parser/field-extractors/configs/helpers.d.ts +40 -0
  136. package/dist/core/parser/field-extractors/configs/helpers.js +118 -0
  137. package/dist/core/parser/field-extractors/configs/helpers.js.map +1 -0
  138. package/dist/core/parser/field-extractors/configs/jvm.d.ts +17 -0
  139. package/dist/core/parser/field-extractors/configs/jvm.js +139 -0
  140. package/dist/core/parser/field-extractors/configs/jvm.js.map +1 -0
  141. package/dist/core/parser/field-extractors/configs/php.d.ts +12 -0
  142. package/dist/core/parser/field-extractors/configs/php.js +69 -0
  143. package/dist/core/parser/field-extractors/configs/php.js.map +1 -0
  144. package/dist/core/parser/field-extractors/configs/python.d.ts +15 -0
  145. package/dist/core/parser/field-extractors/configs/python.js +92 -0
  146. package/dist/core/parser/field-extractors/configs/python.js.map +1 -0
  147. package/dist/core/parser/field-extractors/configs/ruby.d.ts +15 -0
  148. package/dist/core/parser/field-extractors/configs/ruby.js +68 -0
  149. package/dist/core/parser/field-extractors/configs/ruby.js.map +1 -0
  150. package/dist/core/parser/field-extractors/configs/rust.d.ts +12 -0
  151. package/dist/core/parser/field-extractors/configs/rust.js +58 -0
  152. package/dist/core/parser/field-extractors/configs/rust.js.map +1 -0
  153. package/dist/core/parser/field-extractors/configs/swift.d.ts +15 -0
  154. package/dist/core/parser/field-extractors/configs/swift.js +75 -0
  155. package/dist/core/parser/field-extractors/configs/swift.js.map +1 -0
  156. package/dist/core/parser/field-extractors/configs/typescript-javascript.d.ts +14 -0
  157. package/dist/core/parser/field-extractors/configs/typescript-javascript.js +72 -0
  158. package/dist/core/parser/field-extractors/configs/typescript-javascript.js.map +1 -0
  159. package/dist/core/parser/field-extractors/generic.d.ts +61 -0
  160. package/dist/core/parser/field-extractors/generic.js +170 -0
  161. package/dist/core/parser/field-extractors/generic.js.map +1 -0
  162. package/dist/core/parser/field-extractors/typescript.d.ts +16 -0
  163. package/dist/core/parser/field-extractors/typescript.js +167 -0
  164. package/dist/core/parser/field-extractors/typescript.js.map +1 -0
  165. package/dist/core/parser/field-types.d.ts +46 -0
  166. package/dist/core/parser/field-types.js +2 -0
  167. package/dist/core/parser/field-types.js.map +1 -0
  168. package/dist/core/parser/filesystem-walker.d.ts +28 -0
  169. package/dist/core/parser/filesystem-walker.js +82 -0
  170. package/dist/core/parser/filesystem-walker.js.map +1 -0
  171. package/dist/core/parser/framework-detection.d.ts +149 -0
  172. package/dist/core/parser/framework-detection.js +782 -0
  173. package/dist/core/parser/framework-detection.js.map +1 -0
  174. package/dist/core/parser/heritage-processor.d.ts +52 -0
  175. package/dist/core/parser/heritage-processor.js +339 -0
  176. package/dist/core/parser/heritage-processor.js.map +1 -0
  177. package/dist/core/parser/import-processor.d.ts +33 -0
  178. package/dist/core/parser/import-processor.js +382 -0
  179. package/dist/core/parser/import-processor.js.map +1 -0
  180. package/dist/core/parser/import-resolvers/csharp.d.ts +19 -0
  181. package/dist/core/parser/import-resolvers/csharp.js +132 -0
  182. package/dist/core/parser/import-resolvers/csharp.js.map +1 -0
  183. package/dist/core/parser/import-resolvers/dart.d.ts +7 -0
  184. package/dist/core/parser/import-resolvers/dart.js +45 -0
  185. package/dist/core/parser/import-resolvers/dart.js.map +1 -0
  186. package/dist/core/parser/import-resolvers/go.d.ts +18 -0
  187. package/dist/core/parser/import-resolvers/go.js +62 -0
  188. package/dist/core/parser/import-resolvers/go.js.map +1 -0
  189. package/dist/core/parser/import-resolvers/jvm.d.ts +32 -0
  190. package/dist/core/parser/import-resolvers/jvm.js +160 -0
  191. package/dist/core/parser/import-resolvers/jvm.js.map +1 -0
  192. package/dist/core/parser/import-resolvers/php.d.ts +25 -0
  193. package/dist/core/parser/import-resolvers/php.js +81 -0
  194. package/dist/core/parser/import-resolvers/php.js.map +1 -0
  195. package/dist/core/parser/import-resolvers/python.d.ts +25 -0
  196. package/dist/core/parser/import-resolvers/python.js +85 -0
  197. package/dist/core/parser/import-resolvers/python.js.map +1 -0
  198. package/dist/core/parser/import-resolvers/ruby.d.ts +15 -0
  199. package/dist/core/parser/import-resolvers/ruby.js +21 -0
  200. package/dist/core/parser/import-resolvers/ruby.js.map +1 -0
  201. package/dist/core/parser/import-resolvers/rust.d.ts +18 -0
  202. package/dist/core/parser/import-resolvers/rust.js +119 -0
  203. package/dist/core/parser/import-resolvers/rust.js.map +1 -0
  204. package/dist/core/parser/import-resolvers/standard.d.ts +36 -0
  205. package/dist/core/parser/import-resolvers/standard.js +144 -0
  206. package/dist/core/parser/import-resolvers/standard.js.map +1 -0
  207. package/dist/core/parser/import-resolvers/swift.d.ts +7 -0
  208. package/dist/core/parser/import-resolvers/swift.js +25 -0
  209. package/dist/core/parser/import-resolvers/swift.js.map +1 -0
  210. package/dist/core/parser/import-resolvers/types.d.ts +44 -0
  211. package/dist/core/parser/import-resolvers/types.js +7 -0
  212. package/dist/core/parser/import-resolvers/types.js.map +1 -0
  213. package/dist/core/parser/import-resolvers/utils.d.ts +35 -0
  214. package/dist/core/parser/import-resolvers/utils.js +150 -0
  215. package/dist/core/parser/import-resolvers/utils.js.map +1 -0
  216. package/dist/core/parser/import-resolvers/vue.d.ts +8 -0
  217. package/dist/core/parser/import-resolvers/vue.js +10 -0
  218. package/dist/core/parser/import-resolvers/vue.js.map +1 -0
  219. package/dist/core/parser/language-config.d.ts +52 -0
  220. package/dist/core/parser/language-config.js +182 -0
  221. package/dist/core/parser/language-config.js.map +1 -0
  222. package/dist/core/parser/language-provider.d.ts +126 -0
  223. package/dist/core/parser/language-provider.js +25 -0
  224. package/dist/core/parser/language-provider.js.map +1 -0
  225. package/dist/core/parser/languages/c-cpp.d.ts +12 -0
  226. package/dist/core/parser/languages/c-cpp.js +312 -0
  227. package/dist/core/parser/languages/c-cpp.js.map +1 -0
  228. package/dist/core/parser/languages/csharp.d.ts +8 -0
  229. package/dist/core/parser/languages/csharp.js +127 -0
  230. package/dist/core/parser/languages/csharp.js.map +1 -0
  231. package/dist/core/parser/languages/dart.d.ts +12 -0
  232. package/dist/core/parser/languages/dart.js +91 -0
  233. package/dist/core/parser/languages/dart.js.map +1 -0
  234. package/dist/core/parser/languages/go.d.ts +11 -0
  235. package/dist/core/parser/languages/go.js +32 -0
  236. package/dist/core/parser/languages/go.js.map +1 -0
  237. package/dist/core/parser/languages/index.d.ts +38 -0
  238. package/dist/core/parser/languages/index.js +63 -0
  239. package/dist/core/parser/languages/index.js.map +1 -0
  240. package/dist/core/parser/languages/java.d.ts +9 -0
  241. package/dist/core/parser/languages/java.js +33 -0
  242. package/dist/core/parser/languages/java.js.map +1 -0
  243. package/dist/core/parser/languages/kotlin.d.ts +9 -0
  244. package/dist/core/parser/languages/kotlin.js +112 -0
  245. package/dist/core/parser/languages/kotlin.js.map +1 -0
  246. package/dist/core/parser/languages/php.d.ts +8 -0
  247. package/dist/core/parser/languages/php.js +226 -0
  248. package/dist/core/parser/languages/php.js.map +1 -0
  249. package/dist/core/parser/languages/python.d.ts +12 -0
  250. package/dist/core/parser/languages/python.js +66 -0
  251. package/dist/core/parser/languages/python.js.map +1 -0
  252. package/dist/core/parser/languages/ruby.d.ts +9 -0
  253. package/dist/core/parser/languages/ruby.js +109 -0
  254. package/dist/core/parser/languages/ruby.js.map +1 -0
  255. package/dist/core/parser/languages/rust.d.ts +12 -0
  256. package/dist/core/parser/languages/rust.js +121 -0
  257. package/dist/core/parser/languages/rust.js.map +1 -0
  258. package/dist/core/parser/languages/swift.d.ts +12 -0
  259. package/dist/core/parser/languages/swift.js +233 -0
  260. package/dist/core/parser/languages/swift.js.map +1 -0
  261. package/dist/core/parser/languages/typescript.d.ts +11 -0
  262. package/dist/core/parser/languages/typescript.js +169 -0
  263. package/dist/core/parser/languages/typescript.js.map +1 -0
  264. package/dist/core/parser/languages/vue.d.ts +13 -0
  265. package/dist/core/parser/languages/vue.js +65 -0
  266. package/dist/core/parser/languages/vue.js.map +1 -0
  267. package/dist/core/parser/markdown-processor.d.ts +17 -0
  268. package/dist/core/parser/markdown-processor.js +125 -0
  269. package/dist/core/parser/markdown-processor.js.map +1 -0
  270. package/dist/core/parser/method-extractors/configs/c-cpp.d.ts +3 -0
  271. package/dist/core/parser/method-extractors/configs/c-cpp.js +276 -0
  272. package/dist/core/parser/method-extractors/configs/c-cpp.js.map +1 -0
  273. package/dist/core/parser/method-extractors/configs/csharp.d.ts +2 -0
  274. package/dist/core/parser/method-extractors/configs/csharp.js +243 -0
  275. package/dist/core/parser/method-extractors/configs/csharp.js.map +1 -0
  276. package/dist/core/parser/method-extractors/configs/dart.d.ts +2 -0
  277. package/dist/core/parser/method-extractors/configs/dart.js +263 -0
  278. package/dist/core/parser/method-extractors/configs/dart.js.map +1 -0
  279. package/dist/core/parser/method-extractors/configs/go.d.ts +2 -0
  280. package/dist/core/parser/method-extractors/configs/go.js +120 -0
  281. package/dist/core/parser/method-extractors/configs/go.js.map +1 -0
  282. package/dist/core/parser/method-extractors/configs/jvm.d.ts +3 -0
  283. package/dist/core/parser/method-extractors/configs/jvm.js +309 -0
  284. package/dist/core/parser/method-extractors/configs/jvm.js.map +1 -0
  285. package/dist/core/parser/method-extractors/configs/php.d.ts +2 -0
  286. package/dist/core/parser/method-extractors/configs/php.js +243 -0
  287. package/dist/core/parser/method-extractors/configs/php.js.map +1 -0
  288. package/dist/core/parser/method-extractors/configs/python.d.ts +2 -0
  289. package/dist/core/parser/method-extractors/configs/python.js +219 -0
  290. package/dist/core/parser/method-extractors/configs/python.js.map +1 -0
  291. package/dist/core/parser/method-extractors/configs/ruby.d.ts +2 -0
  292. package/dist/core/parser/method-extractors/configs/ruby.js +201 -0
  293. package/dist/core/parser/method-extractors/configs/ruby.js.map +1 -0
  294. package/dist/core/parser/method-extractors/configs/rust.d.ts +2 -0
  295. package/dist/core/parser/method-extractors/configs/rust.js +120 -0
  296. package/dist/core/parser/method-extractors/configs/rust.js.map +1 -0
  297. package/dist/core/parser/method-extractors/configs/swift.d.ts +2 -0
  298. package/dist/core/parser/method-extractors/configs/swift.js +191 -0
  299. package/dist/core/parser/method-extractors/configs/swift.js.map +1 -0
  300. package/dist/core/parser/method-extractors/configs/typescript-javascript.d.ts +3 -0
  301. package/dist/core/parser/method-extractors/configs/typescript-javascript.js +231 -0
  302. package/dist/core/parser/method-extractors/configs/typescript-javascript.js.map +1 -0
  303. package/dist/core/parser/method-extractors/generic.d.ts +11 -0
  304. package/dist/core/parser/method-extractors/generic.js +162 -0
  305. package/dist/core/parser/method-extractors/generic.js.map +1 -0
  306. package/dist/core/parser/method-types.d.ts +110 -0
  307. package/dist/core/parser/method-types.js +2 -0
  308. package/dist/core/parser/method-types.js.map +1 -0
  309. package/dist/core/parser/mro-processor.d.ts +46 -0
  310. package/dist/core/parser/mro-processor.js +677 -0
  311. package/dist/core/parser/mro-processor.js.map +1 -0
  312. package/dist/core/parser/named-binding-processor.d.ts +18 -0
  313. package/dist/core/parser/named-binding-processor.js +43 -0
  314. package/dist/core/parser/named-binding-processor.js.map +1 -0
  315. package/dist/core/parser/named-bindings/csharp.d.ts +3 -0
  316. package/dist/core/parser/named-bindings/csharp.js +38 -0
  317. package/dist/core/parser/named-bindings/csharp.js.map +1 -0
  318. package/dist/core/parser/named-bindings/java.d.ts +3 -0
  319. package/dist/core/parser/named-bindings/java.js +30 -0
  320. package/dist/core/parser/named-bindings/java.js.map +1 -0
  321. package/dist/core/parser/named-bindings/kotlin.d.ts +3 -0
  322. package/dist/core/parser/named-bindings/kotlin.js +37 -0
  323. package/dist/core/parser/named-bindings/kotlin.js.map +1 -0
  324. package/dist/core/parser/named-bindings/php.d.ts +3 -0
  325. package/dist/core/parser/named-bindings/php.js +62 -0
  326. package/dist/core/parser/named-bindings/php.js.map +1 -0
  327. package/dist/core/parser/named-bindings/python.d.ts +3 -0
  328. package/dist/core/parser/named-bindings/python.js +50 -0
  329. package/dist/core/parser/named-bindings/python.js.map +1 -0
  330. package/dist/core/parser/named-bindings/rust.d.ts +3 -0
  331. package/dist/core/parser/named-bindings/rust.js +67 -0
  332. package/dist/core/parser/named-bindings/rust.js.map +1 -0
  333. package/dist/core/parser/named-bindings/types.d.ts +16 -0
  334. package/dist/core/parser/named-bindings/types.js +7 -0
  335. package/dist/core/parser/named-bindings/types.js.map +1 -0
  336. package/dist/core/parser/named-bindings/typescript.d.ts +3 -0
  337. package/dist/core/parser/named-bindings/typescript.js +59 -0
  338. package/dist/core/parser/named-bindings/typescript.js.map +1 -0
  339. package/dist/core/parser/parsing-processor.d.ts +23 -0
  340. package/dist/core/parser/parsing-processor.js +464 -0
  341. package/dist/core/parser/parsing-processor.js.map +1 -0
  342. package/dist/core/parser/pipeline.d.ts +17 -0
  343. package/dist/core/parser/pipeline.js +1405 -0
  344. package/dist/core/parser/pipeline.js.map +1 -0
  345. package/dist/core/parser/process-processor.d.ts +51 -0
  346. package/dist/core/parser/process-processor.js +318 -0
  347. package/dist/core/parser/process-processor.js.map +1 -0
  348. package/dist/core/parser/resolution-context.d.ts +58 -0
  349. package/dist/core/parser/resolution-context.js +136 -0
  350. package/dist/core/parser/resolution-context.js.map +1 -0
  351. package/dist/core/parser/route-extractors/expo.d.ts +1 -0
  352. package/dist/core/parser/route-extractors/expo.js +37 -0
  353. package/dist/core/parser/route-extractors/expo.js.map +1 -0
  354. package/dist/core/parser/route-extractors/middleware.d.ts +47 -0
  355. package/dist/core/parser/route-extractors/middleware.js +168 -0
  356. package/dist/core/parser/route-extractors/middleware.js.map +1 -0
  357. package/dist/core/parser/route-extractors/nextjs.d.ts +3 -0
  358. package/dist/core/parser/route-extractors/nextjs.js +77 -0
  359. package/dist/core/parser/route-extractors/nextjs.js.map +1 -0
  360. package/dist/core/parser/route-extractors/php.d.ts +7 -0
  361. package/dist/core/parser/route-extractors/php.js +23 -0
  362. package/dist/core/parser/route-extractors/php.js.map +1 -0
  363. package/dist/core/parser/route-extractors/response-shapes.d.ts +20 -0
  364. package/dist/core/parser/route-extractors/response-shapes.js +295 -0
  365. package/dist/core/parser/route-extractors/response-shapes.js.map +1 -0
  366. package/dist/core/parser/structure-processor.d.ts +2 -0
  367. package/dist/core/parser/structure-processor.js +37 -0
  368. package/dist/core/parser/structure-processor.js.map +1 -0
  369. package/dist/core/parser/symbol-table.d.ts +79 -0
  370. package/dist/core/parser/symbol-table.js +116 -0
  371. package/dist/core/parser/symbol-table.js.map +1 -0
  372. package/dist/core/parser/tree-sitter-queries.d.ts +16 -0
  373. package/dist/core/parser/tree-sitter-queries.js +1180 -0
  374. package/dist/core/parser/tree-sitter-queries.js.map +1 -0
  375. package/dist/core/parser/type-env.d.ts +81 -0
  376. package/dist/core/parser/type-env.js +1048 -0
  377. package/dist/core/parser/type-env.js.map +1 -0
  378. package/dist/core/parser/type-extractors/c-cpp.d.ts +7 -0
  379. package/dist/core/parser/type-extractors/c-cpp.js +533 -0
  380. package/dist/core/parser/type-extractors/c-cpp.js.map +1 -0
  381. package/dist/core/parser/type-extractors/csharp.d.ts +2 -0
  382. package/dist/core/parser/type-extractors/csharp.js +584 -0
  383. package/dist/core/parser/type-extractors/csharp.js.map +1 -0
  384. package/dist/core/parser/type-extractors/dart.d.ts +15 -0
  385. package/dist/core/parser/type-extractors/dart.js +370 -0
  386. package/dist/core/parser/type-extractors/dart.js.map +1 -0
  387. package/dist/core/parser/type-extractors/go.d.ts +2 -0
  388. package/dist/core/parser/type-extractors/go.js +514 -0
  389. package/dist/core/parser/type-extractors/go.js.map +1 -0
  390. package/dist/core/parser/type-extractors/jvm.d.ts +3 -0
  391. package/dist/core/parser/type-extractors/jvm.js +857 -0
  392. package/dist/core/parser/type-extractors/jvm.js.map +1 -0
  393. package/dist/core/parser/type-extractors/php.d.ts +2 -0
  394. package/dist/core/parser/type-extractors/php.js +535 -0
  395. package/dist/core/parser/type-extractors/php.js.map +1 -0
  396. package/dist/core/parser/type-extractors/python.d.ts +2 -0
  397. package/dist/core/parser/type-extractors/python.js +475 -0
  398. package/dist/core/parser/type-extractors/python.js.map +1 -0
  399. package/dist/core/parser/type-extractors/ruby.d.ts +2 -0
  400. package/dist/core/parser/type-extractors/ruby.js +378 -0
  401. package/dist/core/parser/type-extractors/ruby.js.map +1 -0
  402. package/dist/core/parser/type-extractors/rust.d.ts +2 -0
  403. package/dist/core/parser/type-extractors/rust.js +516 -0
  404. package/dist/core/parser/type-extractors/rust.js.map +1 -0
  405. package/dist/core/parser/type-extractors/shared.d.ts +131 -0
  406. package/dist/core/parser/type-extractors/shared.js +797 -0
  407. package/dist/core/parser/type-extractors/shared.js.map +1 -0
  408. package/dist/core/parser/type-extractors/swift.d.ts +2 -0
  409. package/dist/core/parser/type-extractors/swift.js +485 -0
  410. package/dist/core/parser/type-extractors/swift.js.map +1 -0
  411. package/dist/core/parser/type-extractors/types.d.ts +172 -0
  412. package/dist/core/parser/type-extractors/types.js +2 -0
  413. package/dist/core/parser/type-extractors/types.js.map +1 -0
  414. package/dist/core/parser/type-extractors/typescript.d.ts +2 -0
  415. package/dist/core/parser/type-extractors/typescript.js +662 -0
  416. package/dist/core/parser/type-extractors/typescript.js.map +1 -0
  417. package/dist/core/parser/utils/ast-helpers.d.ts +73 -0
  418. package/dist/core/parser/utils/ast-helpers.js +415 -0
  419. package/dist/core/parser/utils/ast-helpers.js.map +1 -0
  420. package/dist/core/parser/utils/call-analysis.d.ts +75 -0
  421. package/dist/core/parser/utils/call-analysis.js +575 -0
  422. package/dist/core/parser/utils/call-analysis.js.map +1 -0
  423. package/dist/core/parser/utils/event-loop.d.ts +5 -0
  424. package/dist/core/parser/utils/event-loop.js +6 -0
  425. package/dist/core/parser/utils/event-loop.js.map +1 -0
  426. package/dist/core/parser/utils/method-props.d.ts +8 -0
  427. package/dist/core/parser/utils/method-props.js +39 -0
  428. package/dist/core/parser/utils/method-props.js.map +1 -0
  429. package/dist/core/parser/utils/verbose.d.ts +1 -0
  430. package/dist/core/parser/utils/verbose.js +8 -0
  431. package/dist/core/parser/utils/verbose.js.map +1 -0
  432. package/dist/core/parser/vue-sfc-extractor.d.ts +44 -0
  433. package/dist/core/parser/vue-sfc-extractor.js +95 -0
  434. package/dist/core/parser/vue-sfc-extractor.js.map +1 -0
  435. package/dist/core/parser/workers/parse-worker.d.ts +171 -0
  436. package/dist/core/parser/workers/parse-worker.js +1724 -0
  437. package/dist/core/parser/workers/parse-worker.js.map +1 -0
  438. package/dist/core/parser/workers/worker-pool.d.ts +16 -0
  439. package/dist/core/parser/workers/worker-pool.js +124 -0
  440. package/dist/core/parser/workers/worker-pool.js.map +1 -0
  441. package/dist/core/shared/graph-types.d.ts +61 -0
  442. package/dist/core/shared/graph-types.js +5 -0
  443. package/dist/core/shared/graph-types.js.map +1 -0
  444. package/dist/core/shared/index.d.ts +4 -0
  445. package/dist/core/shared/index.js +4 -0
  446. package/dist/core/shared/index.js.map +1 -0
  447. package/dist/core/shared/language-detection.d.ts +22 -0
  448. package/dist/core/shared/language-detection.js +137 -0
  449. package/dist/core/shared/language-detection.js.map +1 -0
  450. package/dist/core/shared/languages.d.ts +23 -0
  451. package/dist/core/shared/languages.js +25 -0
  452. package/dist/core/shared/languages.js.map +1 -0
  453. package/dist/core/shared/pipeline.d.ts +15 -0
  454. package/dist/core/shared/pipeline.js +5 -0
  455. package/dist/core/shared/pipeline.js.map +1 -0
  456. package/dist/core/tree-sitter/parser-loader.d.ts +5 -0
  457. package/dist/core/tree-sitter/parser-loader.js +71 -0
  458. package/dist/core/tree-sitter/parser-loader.js.map +1 -0
  459. package/dist/index.d.ts +2 -0
  460. package/dist/index.js +132 -0
  461. package/dist/index.js.map +1 -0
  462. package/dist/lib/hash.d.ts +1 -0
  463. package/dist/lib/hash.js +6 -0
  464. package/dist/lib/hash.js.map +1 -0
  465. package/dist/lib/naming.d.ts +12 -0
  466. package/dist/lib/naming.js +28 -0
  467. package/dist/lib/naming.js.map +1 -0
  468. package/dist/lib/utils.d.ts +1 -0
  469. package/dist/lib/utils.js +4 -0
  470. package/dist/lib/utils.js.map +1 -0
  471. package/dist/mcp/server.d.ts +26 -0
  472. package/dist/mcp/server.js +282 -0
  473. package/dist/mcp/server.js.map +1 -0
  474. package/dist/mcp/tools.d.ts +37 -0
  475. package/dist/mcp/tools.js +650 -0
  476. package/dist/mcp/tools.js.map +1 -0
  477. package/dist/query/bm25.d.ts +19 -0
  478. package/dist/query/bm25.js +60 -0
  479. package/dist/query/bm25.js.map +1 -0
  480. package/dist/query/graph-index.d.ts +40 -0
  481. package/dist/query/graph-index.js +178 -0
  482. package/dist/query/graph-index.js.map +1 -0
  483. package/dist/store/derived-index.d.ts +4 -0
  484. package/dist/store/derived-index.js +68 -0
  485. package/dist/store/derived-index.js.map +1 -0
  486. package/dist/store/meta.d.ts +1 -0
  487. package/dist/store/meta.js +3 -0
  488. package/dist/store/meta.js.map +1 -0
  489. package/dist/store/schema.d.ts +135 -0
  490. package/dist/store/schema.js +2 -0
  491. package/dist/store/schema.js.map +1 -0
  492. package/dist/store/store.d.ts +49 -0
  493. package/dist/store/store.js +254 -0
  494. package/dist/store/store.js.map +1 -0
  495. package/dist/types/pipeline.d.ts +12 -0
  496. package/dist/types/pipeline.js +2 -0
  497. package/dist/types/pipeline.js.map +1 -0
  498. package/package.json +69 -0
  499. package/skills/cotx-enrich/SKILL.md +59 -0
  500. package/vendor/leiden/index.cjs +355 -0
  501. package/vendor/leiden/utils.cjs +392 -0
@@ -0,0 +1,234 @@
1
+ /**
2
+ * Export Detection
3
+ *
4
+ * Determines whether a symbol (function, class, etc.) is exported/public
5
+ * in its language. This is a pure function — safe for use in worker threads.
6
+ *
7
+ * Shared between parse-worker.ts (worker pool) and parsing-processor.ts (sequential fallback).
8
+ */
9
+ import { findSiblingChild } from './utils/ast-helpers.js';
10
+ // ============================================================================
11
+ // Per-language export checkers
12
+ // ============================================================================
13
+ /** JS/TS: walk ancestors looking for export_statement or export_specifier. */
14
+ export const tsExportChecker = (node, _name) => {
15
+ let current = node;
16
+ while (current) {
17
+ const type = current.type;
18
+ if (type === 'export_statement' ||
19
+ type === 'export_specifier' ||
20
+ (type === 'lexical_declaration' && current.parent?.type === 'export_statement')) {
21
+ return true;
22
+ }
23
+ // Fallback: check if node text starts with 'export ' for edge cases
24
+ if (current.text?.startsWith('export ')) {
25
+ return true;
26
+ }
27
+ current = current.parent;
28
+ }
29
+ return false;
30
+ };
31
+ /** Python: public if no leading underscore (convention). */
32
+ export const pythonExportChecker = (_node, name) => !name.startsWith('_');
33
+ /** Java: check for 'public' modifier — modifiers are siblings of the name node, not parents. */
34
+ export const javaExportChecker = (node, _name) => {
35
+ let current = node;
36
+ while (current) {
37
+ if (current.parent) {
38
+ const parent = current.parent;
39
+ for (let i = 0; i < parent.childCount; i++) {
40
+ const child = parent.child(i);
41
+ if (child?.type === 'modifiers' && child.text?.includes('public')) {
42
+ return true;
43
+ }
44
+ }
45
+ if (parent.type === 'method_declaration' || parent.type === 'constructor_declaration') {
46
+ if (parent.text?.trimStart().startsWith('public')) {
47
+ return true;
48
+ }
49
+ }
50
+ }
51
+ current = current.parent;
52
+ }
53
+ return false;
54
+ };
55
+ /** C# declaration node types for sibling modifier scanning. */
56
+ const CSHARP_DECL_TYPES = new Set([
57
+ 'method_declaration',
58
+ 'local_function_statement',
59
+ 'constructor_declaration',
60
+ 'class_declaration',
61
+ 'interface_declaration',
62
+ 'struct_declaration',
63
+ 'enum_declaration',
64
+ 'record_declaration',
65
+ // tree-sitter-c-sharp absorbs 'record struct' and 'record class' into
66
+ // record_declaration — these two node types are listed defensively but
67
+ // never emitted by the grammar in practice (verified against ^0.23.1).
68
+ 'record_struct_declaration',
69
+ 'record_class_declaration',
70
+ 'delegate_declaration',
71
+ 'property_declaration',
72
+ 'field_declaration',
73
+ 'event_declaration',
74
+ 'namespace_declaration',
75
+ 'file_scoped_namespace_declaration',
76
+ ]);
77
+ /**
78
+ * C#: modifier nodes are SIBLINGS of the name node inside the declaration.
79
+ * Walk up to the declaration node, then scan its direct children.
80
+ */
81
+ export const csharpExportChecker = (node, _name) => {
82
+ let current = node;
83
+ while (current) {
84
+ if (CSHARP_DECL_TYPES.has(current.type)) {
85
+ for (let i = 0; i < current.childCount; i++) {
86
+ const child = current.child(i);
87
+ if (child?.type === 'modifier' && child.text === 'public')
88
+ return true;
89
+ }
90
+ return false;
91
+ }
92
+ current = current.parent;
93
+ }
94
+ return false;
95
+ };
96
+ /** Go: uppercase first letter = exported. */
97
+ export const goExportChecker = (_node, name) => {
98
+ if (name.length === 0)
99
+ return false;
100
+ const first = name[0];
101
+ return first === first.toUpperCase() && first !== first.toLowerCase();
102
+ };
103
+ /** Rust declaration node types for sibling visibility_modifier scanning. */
104
+ const RUST_DECL_TYPES = new Set([
105
+ 'function_item',
106
+ 'struct_item',
107
+ 'enum_item',
108
+ 'trait_item',
109
+ 'impl_item',
110
+ 'union_item',
111
+ 'type_item',
112
+ 'const_item',
113
+ 'static_item',
114
+ 'mod_item',
115
+ 'use_declaration',
116
+ 'associated_type',
117
+ 'function_signature_item',
118
+ ]);
119
+ /**
120
+ * Rust: visibility_modifier is a SIBLING of the name node within the declaration node
121
+ * (function_item, struct_item, etc.), not a parent. Walk up to the declaration node,
122
+ * then scan its direct children.
123
+ */
124
+ export const rustExportChecker = (node, _name) => {
125
+ let current = node;
126
+ while (current) {
127
+ if (RUST_DECL_TYPES.has(current.type)) {
128
+ for (let i = 0; i < current.childCount; i++) {
129
+ const child = current.child(i);
130
+ if (child?.type === 'visibility_modifier' && child.text?.startsWith('pub'))
131
+ return true;
132
+ }
133
+ return false;
134
+ }
135
+ current = current.parent;
136
+ }
137
+ return false;
138
+ };
139
+ /**
140
+ * Kotlin: default visibility is public (unlike Java).
141
+ * visibility_modifier is inside modifiers, a sibling of the name node within the declaration.
142
+ */
143
+ export const kotlinExportChecker = (node, _name) => {
144
+ let current = node;
145
+ while (current) {
146
+ if (current.parent) {
147
+ const visMod = findSiblingChild(current.parent, 'modifiers', 'visibility_modifier');
148
+ if (visMod) {
149
+ const text = visMod.text;
150
+ if (text === 'private' || text === 'internal' || text === 'protected')
151
+ return false;
152
+ if (text === 'public')
153
+ return true;
154
+ }
155
+ }
156
+ current = current.parent;
157
+ }
158
+ // No visibility modifier = public (Kotlin default)
159
+ return true;
160
+ };
161
+ /**
162
+ * C/C++: functions without 'static' storage class have external linkage by default,
163
+ * making them globally accessible (equivalent to exported). Only functions explicitly
164
+ * marked 'static' are file-scoped (not exported). C++ anonymous namespaces
165
+ * (namespace { ... }) also give internal linkage.
166
+ */
167
+ export const cCppExportChecker = (node, _name) => {
168
+ let cur = node;
169
+ while (cur) {
170
+ if (cur.type === 'function_definition' || cur.type === 'declaration') {
171
+ // Check for 'static' storage class specifier as a direct child node.
172
+ // This avoids reading the full function text (which can be very large).
173
+ for (let i = 0; i < cur.childCount; i++) {
174
+ const child = cur.child(i);
175
+ if (child?.type === 'storage_class_specifier' && child.text === 'static')
176
+ return false;
177
+ }
178
+ }
179
+ // C++ anonymous namespace: namespace_definition with no name child = internal linkage
180
+ if (cur.type === 'namespace_definition') {
181
+ const hasName = cur.childForFieldName?.('name');
182
+ if (!hasName)
183
+ return false;
184
+ }
185
+ cur = cur.parent;
186
+ }
187
+ return true; // Top-level C/C++ functions default to external linkage
188
+ };
189
+ /** PHP: check for visibility modifier or top-level scope. */
190
+ export const phpExportChecker = (node, _name) => {
191
+ let current = node;
192
+ while (current) {
193
+ if (current.type === 'class_declaration' ||
194
+ current.type === 'interface_declaration' ||
195
+ current.type === 'trait_declaration' ||
196
+ current.type === 'enum_declaration') {
197
+ return true;
198
+ }
199
+ if (current.type === 'visibility_modifier') {
200
+ return current.text === 'public';
201
+ }
202
+ current = current.parent;
203
+ }
204
+ // Top-level functions are globally accessible
205
+ return true;
206
+ };
207
+ /**
208
+ * Swift: treat symbols as exported unless explicitly marked private/fileprivate.
209
+ *
210
+ * Swift's default access level is `internal`, which means visible to all files
211
+ * in the same module/target. Since cotx-engine indexes at the target level,
212
+ * `internal` symbols should be treated as exported (cross-file visible).
213
+ * Only `private` and `fileprivate` symbols are truly file-scoped.
214
+ */
215
+ export const swiftExportChecker = (node, _name) => {
216
+ let current = node;
217
+ while (current) {
218
+ if (current.type === 'modifiers' || current.type === 'visibility_modifier') {
219
+ const text = current.text || '';
220
+ // Exclude private(set)/fileprivate(set) — only the setter is restricted,
221
+ // the symbol itself is still readable cross-file.
222
+ if (/\b(private|fileprivate)\b(?!\s*\()/.test(text))
223
+ return false;
224
+ }
225
+ current = current.parent;
226
+ }
227
+ // Default (internal), public, and open are all cross-file visible
228
+ return true;
229
+ };
230
+ /** Ruby: all top-level definitions are public (no export syntax). */
231
+ export const rubyExportChecker = (_node, _name) => true;
232
+ /** Dart: public if no leading underscore (convention, same as Python). */
233
+ export const dartExportChecker = (_node, name) => !name.startsWith('_');
234
+ //# sourceMappingURL=export-detection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export-detection.js","sourceRoot":"","sources":["../../../src/core/parser/export-detection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import type { SyntaxNode } from './utils/ast-helpers.js';
2
+ import { SupportedLanguages } from '../shared/index.js';
3
+ import type { FieldExtractorContext, ExtractedFields, FieldVisibility } from './field-types.js';
4
+ /**
5
+ * Contract for language-specific field extraction from type declarations.
6
+ */
7
+ export interface FieldExtractor {
8
+ language: SupportedLanguages;
9
+ /** Parse fields out of a class/struct/interface AST node. */
10
+ extract(node: SyntaxNode, context: FieldExtractorContext): ExtractedFields | null;
11
+ /** Return true when the given AST node is a type declaration that can contain fields. */
12
+ isTypeDeclaration(node: SyntaxNode): boolean;
13
+ }
14
+ /**
15
+ * Shared foundation for language-specific field extractors.
16
+ * Provides type normalisation and resolution helpers that most
17
+ * concrete implementations rely on.
18
+ */
19
+ export declare abstract class BaseFieldExtractor implements FieldExtractor {
20
+ abstract language: SupportedLanguages;
21
+ abstract extract(node: SyntaxNode, context: FieldExtractorContext): ExtractedFields | null;
22
+ abstract isTypeDeclaration(node: SyntaxNode): boolean;
23
+ /**
24
+ * Collapse redundant whitespace in a type string.
25
+ * Returns null when the input is null/empty.
26
+ */
27
+ protected normalizeType(type: string | null): string | null;
28
+ /**
29
+ * Attempt to resolve a type name through the type environment and symbol table.
30
+ * Falls back to the raw name when no unique resolution is found.
31
+ */
32
+ protected resolveType(typeName: string, context: FieldExtractorContext): string | null;
33
+ protected abstract extractVisibility(node: SyntaxNode): FieldVisibility;
34
+ }
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Shared foundation for language-specific field extractors.
3
+ * Provides type normalisation and resolution helpers that most
4
+ * concrete implementations rely on.
5
+ */
6
+ export class BaseFieldExtractor {
7
+ /**
8
+ * Collapse redundant whitespace in a type string.
9
+ * Returns null when the input is null/empty.
10
+ */
11
+ normalizeType(type) {
12
+ if (!type)
13
+ return null;
14
+ return type.trim().replace(/\s+/g, ' ');
15
+ }
16
+ /**
17
+ * Attempt to resolve a type name through the type environment and symbol table.
18
+ * Falls back to the raw name when no unique resolution is found.
19
+ */
20
+ resolveType(typeName, context) {
21
+ const { typeEnv, symbolTable, filePath } = context;
22
+ const fileBindings = typeEnv.fileScope();
23
+ const resolved = fileBindings.get(typeName);
24
+ if (resolved)
25
+ return resolved;
26
+ const matches = symbolTable.lookupExactAll(filePath, typeName);
27
+ if (matches.length === 1) {
28
+ return matches[0].nodeId;
29
+ }
30
+ return typeName;
31
+ }
32
+ }
33
+ //# sourceMappingURL=field-extractor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field-extractor.js","sourceRoot":"","sources":["../../../src/core/parser/field-extractor.ts"],"names":[],"mappings":"AAiBA;;;;GAIG;AACH,MAAM,OAAgB,kBAAkB;IAMtC;;;OAGG;IACO,aAAa,CAAC,IAAmB;QACzC,IAAI,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QACvB,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC1C,CAAC;IAED;;;OAGG;IACO,WAAW,CAAC,QAAgB,EAAE,OAA8B;QACpE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;QAEnD,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;QACzC,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC5C,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAC;QAE9B,MAAM,OAAO,GAAG,WAAW,CAAC,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC/D,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAC3B,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;CAGF"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Field extraction configurations for C and C++.
3
+ *
4
+ * Both languages use `field_declaration` nodes inside `field_declaration_list`.
5
+ * The field name sits in a declarator child (field_identifier or
6
+ * pointer_declarator > field_identifier).
7
+ *
8
+ * C++ adds access specifiers (public:/private:/protected:) resolved by
9
+ * walking backwards through siblings. Struct members default to public;
10
+ * class members default to private.
11
+ *
12
+ * C has no access control -- all struct/union fields are public.
13
+ */
14
+ import type { FieldExtractionConfig } from '../generic.js';
15
+ export declare const cppConfig: FieldExtractionConfig;
16
+ export declare const cConfig: FieldExtractionConfig;
@@ -0,0 +1,129 @@
1
+ /**
2
+ * Field extraction configurations for C and C++.
3
+ *
4
+ * Both languages use `field_declaration` nodes inside `field_declaration_list`.
5
+ * The field name sits in a declarator child (field_identifier or
6
+ * pointer_declarator > field_identifier).
7
+ *
8
+ * C++ adds access specifiers (public:/private:/protected:) resolved by
9
+ * walking backwards through siblings. Struct members default to public;
10
+ * class members default to private.
11
+ *
12
+ * C has no access control -- all struct/union fields are public.
13
+ */
14
+ import { SupportedLanguages } from '../../../shared/index.js';
15
+ import { hasKeyword } from './helpers.js';
16
+ import { extractSimpleTypeName } from '../../type-extractors/shared.js';
17
+ // -------------------------------------------------------------------------
18
+ // Shared helpers for C/C++ field extraction
19
+ // -------------------------------------------------------------------------
20
+ /**
21
+ * Walk backward through named siblings looking for the nearest C++
22
+ * `access_specifier` node. Returns the visibility keyword or undefined.
23
+ */
24
+ function resolveAccessSpecifier(fieldNode) {
25
+ let prev = fieldNode.previousNamedSibling;
26
+ while (prev) {
27
+ if (prev.type === 'access_specifier') {
28
+ const keyword = prev.text.replace(':', '').trim();
29
+ if (keyword === 'public' || keyword === 'private' || keyword === 'protected') {
30
+ return keyword;
31
+ }
32
+ }
33
+ prev = prev.previousNamedSibling;
34
+ }
35
+ return undefined;
36
+ }
37
+ /**
38
+ * Extract the field name from a C/C++ field_declaration node.
39
+ * Handles both direct field_identifier and pointer_declarator wrappers.
40
+ */
41
+ function fieldDeclName(fieldNode) {
42
+ const declarator = fieldNode.childForFieldName('declarator');
43
+ if (declarator) {
44
+ if (declarator.type === 'field_identifier')
45
+ return declarator.text;
46
+ // pointer_declarator wraps the actual field_identifier
47
+ for (let idx = 0; idx < declarator.namedChildCount; idx++) {
48
+ const inner = declarator.namedChild(idx);
49
+ if (inner?.type === 'field_identifier')
50
+ return inner.text;
51
+ }
52
+ return declarator.text;
53
+ }
54
+ // Fallback: scan named children for a field_identifier
55
+ for (let idx = 0; idx < fieldNode.namedChildCount; idx++) {
56
+ const kid = fieldNode.namedChild(idx);
57
+ if (kid?.type === 'field_identifier')
58
+ return kid.text;
59
+ }
60
+ return undefined;
61
+ }
62
+ /**
63
+ * Extract the type from a C/C++ field_declaration node.
64
+ * Prefers the named `type` field; falls back to the first child that
65
+ * looks like a type node.
66
+ */
67
+ function fieldDeclType(fieldNode) {
68
+ const typeChild = fieldNode.childForFieldName('type');
69
+ if (typeChild)
70
+ return extractSimpleTypeName(typeChild) ?? typeChild.text?.trim();
71
+ const first = fieldNode.firstNamedChild;
72
+ if (first &&
73
+ (first.type === 'type_identifier' ||
74
+ first.type === 'primitive_type' ||
75
+ first.type === 'sized_type_specifier' ||
76
+ first.type === 'template_type')) {
77
+ return extractSimpleTypeName(first) ?? first.text?.trim();
78
+ }
79
+ return undefined;
80
+ }
81
+ // -------------------------------------------------------------------------
82
+ // C++ config
83
+ // -------------------------------------------------------------------------
84
+ export const cppConfig = {
85
+ language: SupportedLanguages.CPlusPlus,
86
+ typeDeclarationNodes: ['struct_specifier', 'class_specifier', 'union_specifier'],
87
+ fieldNodeTypes: ['field_declaration'],
88
+ bodyNodeTypes: ['field_declaration_list'],
89
+ defaultVisibility: 'private',
90
+ extractName: fieldDeclName,
91
+ extractType: fieldDeclType,
92
+ extractVisibility(fieldNode) {
93
+ const explicit = resolveAccessSpecifier(fieldNode);
94
+ if (explicit)
95
+ return explicit;
96
+ // struct defaults to public; class defaults to private
97
+ const container = fieldNode.parent?.parent;
98
+ return container?.type === 'struct_specifier' ? 'public' : 'private';
99
+ },
100
+ isStatic(fieldNode) {
101
+ return hasKeyword(fieldNode, 'static');
102
+ },
103
+ isReadonly(fieldNode) {
104
+ return hasKeyword(fieldNode, 'const');
105
+ },
106
+ };
107
+ // -------------------------------------------------------------------------
108
+ // C config (no access control, no class_specifier)
109
+ // -------------------------------------------------------------------------
110
+ export const cConfig = {
111
+ language: SupportedLanguages.C,
112
+ typeDeclarationNodes: ['struct_specifier', 'union_specifier'],
113
+ fieldNodeTypes: ['field_declaration'],
114
+ bodyNodeTypes: ['field_declaration_list'],
115
+ defaultVisibility: 'public',
116
+ extractName: fieldDeclName,
117
+ extractType: fieldDeclType,
118
+ extractVisibility() {
119
+ // C has no access control; all fields are public
120
+ return 'public';
121
+ },
122
+ isStatic(fieldNode) {
123
+ return hasKeyword(fieldNode, 'static');
124
+ },
125
+ isReadonly(fieldNode) {
126
+ return hasKeyword(fieldNode, 'const');
127
+ },
128
+ };
129
+ //# sourceMappingURL=c-cpp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"c-cpp.js","sourceRoot":"","sources":["../../../../../src/core/parser/field-extractors/configs/c-cpp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Field extraction configuration for C#.
3
+ *
4
+ * Handles `field_declaration` and `property_declaration` inside
5
+ * class/struct/interface/record bodies (`declaration_list`).
6
+ *
7
+ * C# has compound visibility modifiers:
8
+ * - `protected internal` (accessible from same assembly OR derived types)
9
+ * - `private protected` (accessible from derived types in same assembly)
10
+ *
11
+ * Record positional parameters (and C# 12 primary constructor parameters)
12
+ * are extracted via the `extractPrimaryFields` hook on the owner node.
13
+ */
14
+ import type { FieldExtractionConfig } from '../generic.js';
15
+ export declare const csharpConfig: FieldExtractionConfig;
@@ -0,0 +1,129 @@
1
+ /**
2
+ * Field extraction configuration for C#.
3
+ *
4
+ * Handles `field_declaration` and `property_declaration` inside
5
+ * class/struct/interface/record bodies (`declaration_list`).
6
+ *
7
+ * C# has compound visibility modifiers:
8
+ * - `protected internal` (accessible from same assembly OR derived types)
9
+ * - `private protected` (accessible from derived types in same assembly)
10
+ *
11
+ * Record positional parameters (and C# 12 primary constructor parameters)
12
+ * are extracted via the `extractPrimaryFields` hook on the owner node.
13
+ */
14
+ import { SupportedLanguages } from '../../../shared/index.js';
15
+ import { findVisibility, hasKeyword, hasModifier, collectModifierTexts } from './helpers.js';
16
+ import { extractSimpleTypeName } from '../../type-extractors/shared.js';
17
+ const CSHARP_VISIBILITY_SET = new Set([
18
+ 'public',
19
+ 'private',
20
+ 'protected',
21
+ 'internal',
22
+ ]);
23
+ export const csharpConfig = {
24
+ language: SupportedLanguages.CSharp,
25
+ typeDeclarationNodes: [
26
+ 'class_declaration',
27
+ 'struct_declaration',
28
+ 'interface_declaration',
29
+ 'record_declaration',
30
+ ],
31
+ fieldNodeTypes: ['field_declaration', 'property_declaration'],
32
+ bodyNodeTypes: ['declaration_list'],
33
+ defaultVisibility: 'private',
34
+ extractName(decl) {
35
+ // field_declaration > variable_declaration > variable_declarator > identifier
36
+ for (let idx = 0; idx < decl.namedChildCount; idx++) {
37
+ const kid = decl.namedChild(idx);
38
+ if (kid?.type === 'variable_declaration') {
39
+ for (let j = 0; j < kid.namedChildCount; j++) {
40
+ const declarator = kid.namedChild(j);
41
+ if (declarator?.type === 'variable_declarator') {
42
+ const nameChild = declarator.childForFieldName('name');
43
+ return nameChild?.text ?? declarator.firstNamedChild?.text;
44
+ }
45
+ }
46
+ }
47
+ }
48
+ // property_declaration uses the named 'name' field
49
+ const nameChild = decl.childForFieldName('name');
50
+ return nameChild?.text;
51
+ },
52
+ extractType(decl) {
53
+ // field_declaration > variable_declaration > type:(predefined_type | identifier | ...)
54
+ for (let idx = 0; idx < decl.namedChildCount; idx++) {
55
+ const kid = decl.namedChild(idx);
56
+ if (kid?.type === 'variable_declaration') {
57
+ const typeChild = kid.childForFieldName('type');
58
+ if (typeChild)
59
+ return extractSimpleTypeName(typeChild) ?? typeChild.text?.trim();
60
+ // Fallback: first child that is not a variable_declarator
61
+ const first = kid.firstNamedChild;
62
+ if (first && first.type !== 'variable_declarator') {
63
+ return extractSimpleTypeName(first) ?? first.text?.trim();
64
+ }
65
+ }
66
+ }
67
+ // property_declaration: use named 'type' field
68
+ const typeChild = decl.childForFieldName('type');
69
+ if (typeChild)
70
+ return extractSimpleTypeName(typeChild) ?? typeChild.text?.trim();
71
+ return undefined;
72
+ },
73
+ extractVisibility(decl) {
74
+ // Detect compound C# visibilities first
75
+ const mods = collectModifierTexts(decl);
76
+ if (mods.has('protected') && mods.has('internal'))
77
+ return 'protected internal';
78
+ if (mods.has('private') && mods.has('protected'))
79
+ return 'private protected';
80
+ return findVisibility(decl, CSHARP_VISIBILITY_SET, 'private', 'modifier');
81
+ },
82
+ isStatic(decl) {
83
+ return hasKeyword(decl, 'static') || hasModifier(decl, 'modifier', 'static');
84
+ },
85
+ isReadonly(decl) {
86
+ return hasKeyword(decl, 'readonly') || hasModifier(decl, 'modifier', 'readonly');
87
+ },
88
+ extractPrimaryFields(ownerNode, ctx) {
89
+ // Find a parameter_list directly on the type declaration node
90
+ // (C# record positional params or C# 12 class primary constructors)
91
+ let paramList = null;
92
+ for (let idx = 0; idx < ownerNode.namedChildCount; idx++) {
93
+ const kid = ownerNode.namedChild(idx);
94
+ if (kid?.type === 'parameter_list') {
95
+ paramList = kid;
96
+ break;
97
+ }
98
+ }
99
+ if (!paramList)
100
+ return [];
101
+ const ownerIsRecord = ownerNode.type === 'record_declaration';
102
+ const results = [];
103
+ for (let idx = 0; idx < paramList.namedChildCount; idx++) {
104
+ const param = paramList.namedChild(idx);
105
+ if (!param || param.type !== 'parameter')
106
+ continue;
107
+ const nameChild = param.childForFieldName('name');
108
+ if (!nameChild)
109
+ continue;
110
+ const typeChild = param.childForFieldName('type');
111
+ let resolvedType = null;
112
+ if (typeChild) {
113
+ resolvedType = extractSimpleTypeName(typeChild) ?? typeChild.text?.trim() ?? null;
114
+ }
115
+ results.push({
116
+ name: nameChild.text,
117
+ type: resolvedType,
118
+ // Record params become public properties; class params are private captures
119
+ visibility: ownerIsRecord ? 'public' : 'private',
120
+ isStatic: false,
121
+ isReadonly: ownerIsRecord, // record positional params are init-only
122
+ sourceFile: ctx.filePath,
123
+ line: param.startPosition.row + 1,
124
+ });
125
+ }
126
+ return results;
127
+ },
128
+ };
129
+ //# sourceMappingURL=csharp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"csharp.js","sourceRoot":"","sources":["../../../../../src/core/parser/field-extractors/configs/csharp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Field extraction configuration for Dart.
3
+ *
4
+ * Dart fields appear as `declaration` nodes inside `class_body`. The
5
+ * declaration typically nests:
6
+ * declaration > initialized_identifier_list > initialized_identifier > identifier
7
+ *
8
+ * Visibility follows Dart convention: an underscore prefix marks the
9
+ * member as library-private.
10
+ */
11
+ import type { FieldExtractionConfig } from '../generic.js';
12
+ export declare const dartConfig: FieldExtractionConfig;