@untangle-code/parser-registry 0.0.0-stage → 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 (345) hide show
  1. package/LICENSE +661 -0
  2. package/NOTICE +90 -0
  3. package/README.md +352 -2
  4. package/THIRD_PARTY_LICENSES.md +91 -0
  5. package/dist/boundaries/expression.d.ts +10 -0
  6. package/dist/boundaries/expression.d.ts.map +1 -0
  7. package/dist/boundaries/expression.js +95 -0
  8. package/dist/boundaries/expression.js.map +1 -0
  9. package/dist/boundaries/extract.d.ts +12 -0
  10. package/dist/boundaries/extract.d.ts.map +1 -0
  11. package/dist/boundaries/extract.js +259 -0
  12. package/dist/boundaries/extract.js.map +1 -0
  13. package/dist/boundaries/python.d.ts +6 -0
  14. package/dist/boundaries/python.d.ts.map +1 -0
  15. package/dist/boundaries/python.js +154 -0
  16. package/dist/boundaries/python.js.map +1 -0
  17. package/dist/index.d.ts +26 -0
  18. package/dist/index.d.ts.map +1 -0
  19. package/dist/index.js +19 -0
  20. package/dist/index.js.map +1 -0
  21. package/dist/languages/astgrep-backend/adapter.d.ts +101 -0
  22. package/dist/languages/astgrep-backend/adapter.d.ts.map +1 -0
  23. package/dist/languages/astgrep-backend/adapter.js +130 -0
  24. package/dist/languages/astgrep-backend/adapter.js.map +1 -0
  25. package/dist/languages/astgrep-backend/index.d.ts +29 -0
  26. package/dist/languages/astgrep-backend/index.d.ts.map +1 -0
  27. package/dist/languages/astgrep-backend/index.js +28 -0
  28. package/dist/languages/astgrep-backend/index.js.map +1 -0
  29. package/dist/languages/astgrep-backend/lang/bash.d.ts +38 -0
  30. package/dist/languages/astgrep-backend/lang/bash.d.ts.map +1 -0
  31. package/dist/languages/astgrep-backend/lang/bash.js +42 -0
  32. package/dist/languages/astgrep-backend/lang/bash.js.map +1 -0
  33. package/dist/languages/astgrep-backend/lang/c.d.ts +33 -0
  34. package/dist/languages/astgrep-backend/lang/c.d.ts.map +1 -0
  35. package/dist/languages/astgrep-backend/lang/c.js +85 -0
  36. package/dist/languages/astgrep-backend/lang/c.js.map +1 -0
  37. package/dist/languages/astgrep-backend/lang/cpp.d.ts +27 -0
  38. package/dist/languages/astgrep-backend/lang/cpp.d.ts.map +1 -0
  39. package/dist/languages/astgrep-backend/lang/cpp.js +38 -0
  40. package/dist/languages/astgrep-backend/lang/cpp.js.map +1 -0
  41. package/dist/languages/astgrep-backend/lang/csharp.d.ts +24 -0
  42. package/dist/languages/astgrep-backend/lang/csharp.d.ts.map +1 -0
  43. package/dist/languages/astgrep-backend/lang/csharp.js +102 -0
  44. package/dist/languages/astgrep-backend/lang/csharp.js.map +1 -0
  45. package/dist/languages/astgrep-backend/lang/index.d.ts +29 -0
  46. package/dist/languages/astgrep-backend/lang/index.d.ts.map +1 -0
  47. package/dist/languages/astgrep-backend/lang/index.js +22 -0
  48. package/dist/languages/astgrep-backend/lang/index.js.map +1 -0
  49. package/dist/languages/astgrep-backend/lang/java.d.ts +26 -0
  50. package/dist/languages/astgrep-backend/lang/java.d.ts.map +1 -0
  51. package/dist/languages/astgrep-backend/lang/java.js +89 -0
  52. package/dist/languages/astgrep-backend/lang/java.js.map +1 -0
  53. package/dist/languages/astgrep-backend/lang/kotlin.d.ts +44 -0
  54. package/dist/languages/astgrep-backend/lang/kotlin.d.ts.map +1 -0
  55. package/dist/languages/astgrep-backend/lang/kotlin.js +94 -0
  56. package/dist/languages/astgrep-backend/lang/kotlin.js.map +1 -0
  57. package/dist/languages/astgrep-backend/lang/php.d.ts +23 -0
  58. package/dist/languages/astgrep-backend/lang/php.d.ts.map +1 -0
  59. package/dist/languages/astgrep-backend/lang/php.js +80 -0
  60. package/dist/languages/astgrep-backend/lang/php.js.map +1 -0
  61. package/dist/languages/astgrep-backend/lang/ruby.d.ts +37 -0
  62. package/dist/languages/astgrep-backend/lang/ruby.d.ts.map +1 -0
  63. package/dist/languages/astgrep-backend/lang/ruby.js +70 -0
  64. package/dist/languages/astgrep-backend/lang/ruby.js.map +1 -0
  65. package/dist/languages/astgrep-backend/lang/swift.d.ts +34 -0
  66. package/dist/languages/astgrep-backend/lang/swift.d.ts.map +1 -0
  67. package/dist/languages/astgrep-backend/lang/swift.js +86 -0
  68. package/dist/languages/astgrep-backend/lang/swift.js.map +1 -0
  69. package/dist/languages/astgrep-backend/languages.d.ts +55 -0
  70. package/dist/languages/astgrep-backend/languages.d.ts.map +1 -0
  71. package/dist/languages/astgrep-backend/languages.js +214 -0
  72. package/dist/languages/astgrep-backend/languages.js.map +1 -0
  73. package/dist/languages/astgrep-backend/napi.d.ts +71 -0
  74. package/dist/languages/astgrep-backend/napi.d.ts.map +1 -0
  75. package/dist/languages/astgrep-backend/napi.js +176 -0
  76. package/dist/languages/astgrep-backend/napi.js.map +1 -0
  77. package/dist/languages/astgrep-backend/syntax.d.ts +88 -0
  78. package/dist/languages/astgrep-backend/syntax.d.ts.map +1 -0
  79. package/dist/languages/astgrep-backend/syntax.js +180 -0
  80. package/dist/languages/astgrep-backend/syntax.js.map +1 -0
  81. package/dist/languages/index.d.ts +14 -0
  82. package/dist/languages/index.d.ts.map +1 -0
  83. package/dist/languages/index.js +37 -0
  84. package/dist/languages/index.js.map +1 -0
  85. package/dist/languages/javascript/index.d.ts +4 -0
  86. package/dist/languages/javascript/index.d.ts.map +1 -0
  87. package/dist/languages/javascript/index.js +7 -0
  88. package/dist/languages/javascript/index.js.map +1 -0
  89. package/dist/languages/jsx/index.d.ts +4 -0
  90. package/dist/languages/jsx/index.d.ts.map +1 -0
  91. package/dist/languages/jsx/index.js +7 -0
  92. package/dist/languages/jsx/index.js.map +1 -0
  93. package/dist/languages/prose/index.d.ts +53 -0
  94. package/dist/languages/prose/index.d.ts.map +1 -0
  95. package/dist/languages/prose/index.js +172 -0
  96. package/dist/languages/prose/index.js.map +1 -0
  97. package/dist/languages/prose/line-bytes.d.ts +31 -0
  98. package/dist/languages/prose/line-bytes.d.ts.map +1 -0
  99. package/dist/languages/prose/line-bytes.js +39 -0
  100. package/dist/languages/prose/line-bytes.js.map +1 -0
  101. package/dist/languages/python/create-adapter.d.ts +20 -0
  102. package/dist/languages/python/create-adapter.d.ts.map +1 -0
  103. package/dist/languages/python/create-adapter.js +9 -0
  104. package/dist/languages/python/create-adapter.js.map +1 -0
  105. package/dist/languages/python/index.d.ts +4 -0
  106. package/dist/languages/python/index.d.ts.map +1 -0
  107. package/dist/languages/python/index.js +6 -0
  108. package/dist/languages/python/index.js.map +1 -0
  109. package/dist/languages/python/profile.d.ts +36 -0
  110. package/dist/languages/python/profile.d.ts.map +1 -0
  111. package/dist/languages/python/profile.js +282 -0
  112. package/dist/languages/python/profile.js.map +1 -0
  113. package/dist/languages/python/signature.d.ts +53 -0
  114. package/dist/languages/python/signature.d.ts.map +1 -0
  115. package/dist/languages/python/signature.js +188 -0
  116. package/dist/languages/python/signature.js.map +1 -0
  117. package/dist/languages/python/table.d.ts +46 -0
  118. package/dist/languages/python/table.d.ts.map +1 -0
  119. package/dist/languages/python/table.js +88 -0
  120. package/dist/languages/python/table.js.map +1 -0
  121. package/dist/languages/shared/call-detection.d.ts +17 -0
  122. package/dist/languages/shared/call-detection.d.ts.map +1 -0
  123. package/dist/languages/shared/call-detection.js +86 -0
  124. package/dist/languages/shared/call-detection.js.map +1 -0
  125. package/dist/languages/shared/chunks.d.ts +28 -0
  126. package/dist/languages/shared/chunks.d.ts.map +1 -0
  127. package/dist/languages/shared/chunks.js +181 -0
  128. package/dist/languages/shared/chunks.js.map +1 -0
  129. package/dist/languages/shared/create-adapter.d.ts +11 -0
  130. package/dist/languages/shared/create-adapter.d.ts.map +1 -0
  131. package/dist/languages/shared/create-adapter.js +90 -0
  132. package/dist/languages/shared/create-adapter.js.map +1 -0
  133. package/dist/languages/shared/decisions.d.ts +45 -0
  134. package/dist/languages/shared/decisions.d.ts.map +1 -0
  135. package/dist/languages/shared/decisions.js +141 -0
  136. package/dist/languages/shared/decisions.js.map +1 -0
  137. package/dist/languages/shared/dialect.d.ts +18 -0
  138. package/dist/languages/shared/dialect.d.ts.map +1 -0
  139. package/dist/languages/shared/dialect.js +37 -0
  140. package/dist/languages/shared/dialect.js.map +1 -0
  141. package/dist/languages/shared/doc-binding.d.ts +26 -0
  142. package/dist/languages/shared/doc-binding.d.ts.map +1 -0
  143. package/dist/languages/shared/doc-binding.js +50 -0
  144. package/dist/languages/shared/doc-binding.js.map +1 -0
  145. package/dist/languages/shared/engine.d.ts +49 -0
  146. package/dist/languages/shared/engine.d.ts.map +1 -0
  147. package/dist/languages/shared/engine.js +317 -0
  148. package/dist/languages/shared/engine.js.map +1 -0
  149. package/dist/languages/shared/extract-symbols.d.ts +5 -0
  150. package/dist/languages/shared/extract-symbols.d.ts.map +1 -0
  151. package/dist/languages/shared/extract-symbols.js +31 -0
  152. package/dist/languages/shared/extract-symbols.js.map +1 -0
  153. package/dist/languages/shared/fingerprint.d.ts +7 -0
  154. package/dist/languages/shared/fingerprint.d.ts.map +1 -0
  155. package/dist/languages/shared/fingerprint.js +95 -0
  156. package/dist/languages/shared/fingerprint.js.map +1 -0
  157. package/dist/languages/shared/grammar-loader.d.ts +15 -0
  158. package/dist/languages/shared/grammar-loader.d.ts.map +1 -0
  159. package/dist/languages/shared/grammar-loader.js +48 -0
  160. package/dist/languages/shared/grammar-loader.js.map +1 -0
  161. package/dist/languages/shared/import-detection.d.ts +24 -0
  162. package/dist/languages/shared/import-detection.d.ts.map +1 -0
  163. package/dist/languages/shared/import-detection.js +138 -0
  164. package/dist/languages/shared/import-detection.js.map +1 -0
  165. package/dist/languages/shared/js-family-profile.d.ts +5 -0
  166. package/dist/languages/shared/js-family-profile.d.ts.map +1 -0
  167. package/dist/languages/shared/js-family-profile.js +179 -0
  168. package/dist/languages/shared/js-family-profile.js.map +1 -0
  169. package/dist/languages/shared/node-kinds.d.ts +78 -0
  170. package/dist/languages/shared/node-kinds.d.ts.map +1 -0
  171. package/dist/languages/shared/node-kinds.js +141 -0
  172. package/dist/languages/shared/node-kinds.js.map +1 -0
  173. package/dist/languages/shared/node-utils.d.ts +31 -0
  174. package/dist/languages/shared/node-utils.d.ts.map +1 -0
  175. package/dist/languages/shared/node-utils.js +89 -0
  176. package/dist/languages/shared/node-utils.js.map +1 -0
  177. package/dist/languages/shared/parse-diagnostics.d.ts +44 -0
  178. package/dist/languages/shared/parse-diagnostics.d.ts.map +1 -0
  179. package/dist/languages/shared/parse-diagnostics.js +64 -0
  180. package/dist/languages/shared/parse-diagnostics.js.map +1 -0
  181. package/dist/languages/shared/parse-limits.d.ts +24 -0
  182. package/dist/languages/shared/parse-limits.d.ts.map +1 -0
  183. package/dist/languages/shared/parse-limits.js +134 -0
  184. package/dist/languages/shared/parse-limits.js.map +1 -0
  185. package/dist/languages/shared/profile.d.ts +149 -0
  186. package/dist/languages/shared/profile.d.ts.map +1 -0
  187. package/dist/languages/shared/profile.js +9 -0
  188. package/dist/languages/shared/profile.js.map +1 -0
  189. package/dist/languages/shared/scope-model.d.ts +32 -0
  190. package/dist/languages/shared/scope-model.d.ts.map +1 -0
  191. package/dist/languages/shared/scope-model.js +2 -0
  192. package/dist/languages/shared/scope-model.js.map +1 -0
  193. package/dist/languages/shared/scope-naming.d.ts +20 -0
  194. package/dist/languages/shared/scope-naming.d.ts.map +1 -0
  195. package/dist/languages/shared/scope-naming.js +118 -0
  196. package/dist/languages/shared/scope-naming.js.map +1 -0
  197. package/dist/languages/shared/scope-signature.d.ts +14 -0
  198. package/dist/languages/shared/scope-signature.d.ts.map +1 -0
  199. package/dist/languages/shared/scope-signature.js +82 -0
  200. package/dist/languages/shared/scope-signature.js.map +1 -0
  201. package/dist/languages/shared/signature.d.ts +55 -0
  202. package/dist/languages/shared/signature.d.ts.map +1 -0
  203. package/dist/languages/shared/signature.js +147 -0
  204. package/dist/languages/shared/signature.js.map +1 -0
  205. package/dist/languages/shared/syntax.d.ts +115 -0
  206. package/dist/languages/shared/syntax.d.ts.map +1 -0
  207. package/dist/languages/shared/syntax.js +2 -0
  208. package/dist/languages/shared/syntax.js.map +1 -0
  209. package/dist/languages/shared/table-profile-decisions.d.ts +54 -0
  210. package/dist/languages/shared/table-profile-decisions.d.ts.map +1 -0
  211. package/dist/languages/shared/table-profile-decisions.js +245 -0
  212. package/dist/languages/shared/table-profile-decisions.js.map +1 -0
  213. package/dist/languages/shared/table-profile-module-facts.d.ts +29 -0
  214. package/dist/languages/shared/table-profile-module-facts.d.ts.map +1 -0
  215. package/dist/languages/shared/table-profile-module-facts.js +139 -0
  216. package/dist/languages/shared/table-profile-module-facts.js.map +1 -0
  217. package/dist/languages/shared/table-profile-queries.d.ts +27 -0
  218. package/dist/languages/shared/table-profile-queries.d.ts.map +1 -0
  219. package/dist/languages/shared/table-profile-queries.js +70 -0
  220. package/dist/languages/shared/table-profile-queries.js.map +1 -0
  221. package/dist/languages/shared/table-profile-scopes.d.ts +46 -0
  222. package/dist/languages/shared/table-profile-scopes.d.ts.map +1 -0
  223. package/dist/languages/shared/table-profile-scopes.js +180 -0
  224. package/dist/languages/shared/table-profile-scopes.js.map +1 -0
  225. package/dist/languages/shared/table-profile.d.ts +302 -0
  226. package/dist/languages/shared/table-profile.d.ts.map +1 -0
  227. package/dist/languages/shared/table-profile.js +125 -0
  228. package/dist/languages/shared/table-profile.js.map +1 -0
  229. package/dist/languages/shared/tree-sitter-types.d.ts +44 -0
  230. package/dist/languages/shared/tree-sitter-types.d.ts.map +1 -0
  231. package/dist/languages/shared/tree-sitter-types.js +2 -0
  232. package/dist/languages/shared/tree-sitter-types.js.map +1 -0
  233. package/dist/languages/structured-text/index.d.ts +48 -0
  234. package/dist/languages/structured-text/index.d.ts.map +1 -0
  235. package/dist/languages/structured-text/index.js +120 -0
  236. package/dist/languages/structured-text/index.js.map +1 -0
  237. package/dist/languages/tsx/index.d.ts +4 -0
  238. package/dist/languages/tsx/index.d.ts.map +1 -0
  239. package/dist/languages/tsx/index.js +7 -0
  240. package/dist/languages/tsx/index.js.map +1 -0
  241. package/dist/languages/typescript/index.d.ts +4 -0
  242. package/dist/languages/typescript/index.d.ts.map +1 -0
  243. package/dist/languages/typescript/index.js +7 -0
  244. package/dist/languages/typescript/index.js.map +1 -0
  245. package/dist/languages/vue/index.d.ts +21 -0
  246. package/dist/languages/vue/index.d.ts.map +1 -0
  247. package/dist/languages/vue/index.js +234 -0
  248. package/dist/languages/vue/index.js.map +1 -0
  249. package/dist/languages/vue/mapping.d.ts +11 -0
  250. package/dist/languages/vue/mapping.d.ts.map +1 -0
  251. package/dist/languages/vue/mapping.js +77 -0
  252. package/dist/languages/vue/mapping.js.map +1 -0
  253. package/dist/registry.d.ts +24 -0
  254. package/dist/registry.d.ts.map +1 -0
  255. package/dist/registry.js +42 -0
  256. package/dist/registry.js.map +1 -0
  257. package/dist/text/byte-offset-table.d.ts +27 -0
  258. package/dist/text/byte-offset-table.d.ts.map +1 -0
  259. package/dist/text/byte-offset-table.js +39 -0
  260. package/dist/text/byte-offset-table.js.map +1 -0
  261. package/package.json +125 -3
  262. package/src/boundaries/expression.ts +95 -0
  263. package/src/boundaries/extract.ts +307 -0
  264. package/src/boundaries/python.ts +181 -0
  265. package/src/index.ts +51 -0
  266. package/src/languages/__golden__/javascript-basic.json +32 -0
  267. package/src/languages/__golden__/tsx-basic.json +19 -0
  268. package/src/languages/__golden__/typescript-basic.json +37 -0
  269. package/src/languages/astgrep-backend/GRAMMARS.md +86 -0
  270. package/src/languages/astgrep-backend/README.md +112 -0
  271. package/src/languages/astgrep-backend/__golden__/bash-basic.sh +53 -0
  272. package/src/languages/astgrep-backend/__golden__/c-basic.c +64 -0
  273. package/src/languages/astgrep-backend/__golden__/cpp-basic.cpp +65 -0
  274. package/src/languages/astgrep-backend/__golden__/csharp-basic.cs +73 -0
  275. package/src/languages/astgrep-backend/__golden__/go-basic.go +93 -0
  276. package/src/languages/astgrep-backend/__golden__/java-basic.java +62 -0
  277. package/src/languages/astgrep-backend/__golden__/kotlin-basic.kt +58 -0
  278. package/src/languages/astgrep-backend/__golden__/php-basic.php +72 -0
  279. package/src/languages/astgrep-backend/__golden__/ruby-basic.rb +62 -0
  280. package/src/languages/astgrep-backend/__golden__/rust-basic.rs +82 -0
  281. package/src/languages/astgrep-backend/__golden__/swift-basic.swift +73 -0
  282. package/src/languages/astgrep-backend/adapter.ts +240 -0
  283. package/src/languages/astgrep-backend/index.ts +44 -0
  284. package/src/languages/astgrep-backend/lang/README.md +115 -0
  285. package/src/languages/astgrep-backend/lang/bash.ts +78 -0
  286. package/src/languages/astgrep-backend/lang/c.ts +119 -0
  287. package/src/languages/astgrep-backend/lang/cpp.ts +65 -0
  288. package/src/languages/astgrep-backend/lang/csharp.ts +125 -0
  289. package/src/languages/astgrep-backend/lang/index.ts +61 -0
  290. package/src/languages/astgrep-backend/lang/java.ts +115 -0
  291. package/src/languages/astgrep-backend/lang/kotlin.ts +136 -0
  292. package/src/languages/astgrep-backend/lang/php.ts +105 -0
  293. package/src/languages/astgrep-backend/lang/ruby.ts +105 -0
  294. package/src/languages/astgrep-backend/lang/swift.ts +118 -0
  295. package/src/languages/astgrep-backend/languages.ts +238 -0
  296. package/src/languages/astgrep-backend/napi.ts +261 -0
  297. package/src/languages/astgrep-backend/syntax.ts +242 -0
  298. package/src/languages/index.ts +53 -0
  299. package/src/languages/javascript/index.ts +9 -0
  300. package/src/languages/jsx/index.ts +9 -0
  301. package/src/languages/prose/index.ts +270 -0
  302. package/src/languages/prose/line-bytes.ts +52 -0
  303. package/src/languages/python/README.md +246 -0
  304. package/src/languages/python/__golden__/python-basic.json +44 -0
  305. package/src/languages/python/create-adapter.ts +29 -0
  306. package/src/languages/python/index.ts +8 -0
  307. package/src/languages/python/profile.ts +341 -0
  308. package/src/languages/python/signature.ts +183 -0
  309. package/src/languages/python/table.ts +135 -0
  310. package/src/languages/shared/__fixtures__/large-over-32kib.ts.txt +1207 -0
  311. package/src/languages/shared/call-detection.ts +112 -0
  312. package/src/languages/shared/chunks.ts +255 -0
  313. package/src/languages/shared/create-adapter.ts +136 -0
  314. package/src/languages/shared/decisions.ts +204 -0
  315. package/src/languages/shared/dialect.ts +55 -0
  316. package/src/languages/shared/doc-binding.ts +78 -0
  317. package/src/languages/shared/engine.ts +461 -0
  318. package/src/languages/shared/extract-symbols.ts +35 -0
  319. package/src/languages/shared/fingerprint.ts +99 -0
  320. package/src/languages/shared/grammar-loader.ts +67 -0
  321. package/src/languages/shared/import-detection.ts +154 -0
  322. package/src/languages/shared/js-family-profile.ts +246 -0
  323. package/src/languages/shared/node-kinds.ts +153 -0
  324. package/src/languages/shared/node-utils.ts +120 -0
  325. package/src/languages/shared/parse-diagnostics.ts +125 -0
  326. package/src/languages/shared/parse-limits.ts +147 -0
  327. package/src/languages/shared/profile.ts +184 -0
  328. package/src/languages/shared/scope-model.ts +43 -0
  329. package/src/languages/shared/scope-naming.ts +124 -0
  330. package/src/languages/shared/scope-signature.ts +108 -0
  331. package/src/languages/shared/signature.ts +149 -0
  332. package/src/languages/shared/syntax.ts +116 -0
  333. package/src/languages/shared/table-profile-decisions.ts +251 -0
  334. package/src/languages/shared/table-profile-module-facts.ts +177 -0
  335. package/src/languages/shared/table-profile-queries.ts +85 -0
  336. package/src/languages/shared/table-profile-scopes.ts +198 -0
  337. package/src/languages/shared/table-profile.ts +427 -0
  338. package/src/languages/shared/tree-sitter-types.ts +46 -0
  339. package/src/languages/structured-text/index.ts +192 -0
  340. package/src/languages/tsx/index.ts +9 -0
  341. package/src/languages/typescript/index.ts +9 -0
  342. package/src/languages/vue/index.ts +312 -0
  343. package/src/languages/vue/mapping.ts +93 -0
  344. package/src/registry.ts +61 -0
  345. package/src/text/byte-offset-table.ts +63 -0
@@ -0,0 +1,147 @@
1
+ /**
2
+ * Signature text normalization for the JS/TS grammar family.
3
+ *
4
+ * Normative requirement (WP-06 task, spec.md §5.5): `normalizedSignature`
5
+ * feeds `buildSymbolId`, so it MUST be stable across:
6
+ *
7
+ * 1. Whitespace — any run of spaces/tabs/newlines collapses to a single
8
+ * space; spacing around `,`, `:`, `(`, `)`, `<`, `>`, `?:` is
9
+ * canonicalized rather than preserved verbatim.
10
+ * 2. Default values — `= <expr>` parameter/type-parameter initializers are
11
+ * STRIPPED. Rationale: giving a parameter a default value is (mostly) a
12
+ * call-site convenience, not a new overload; keeping it in the identity
13
+ * signature would needlessly change a symbol's id on a body-only-feeling
14
+ * edit. The optional marker (see next point) already captures "callers
15
+ * may omit this argument".
16
+ * 3. Optional markers — TypeScript's trailing `?` on a parameter name is
17
+ * KEPT and canonicalized to sit directly against the following `:`
18
+ * (`a ?:string` and `a?: string` both become `a?: string`) because it
19
+ * changes the call contract independent of any default value.
20
+ * 4. Type annotations — kept verbatim (modulo the same whitespace rules)
21
+ * because they are part of the observable contract.
22
+ *
23
+ * Known limitation (documented, not a defect): default-value stripping and
24
+ * top-level-comma splitting use a bracket-DEPTH scanner, not a full
25
+ * expression parser. A `<` used as a less-than operator inside a default
26
+ * expression (e.g. `(a = b < c ? 1 : 2)`) is misread as a generic open
27
+ * bracket and can throw off depth tracking for the rest of that one
28
+ * parameter. This is vanishingly rare in default-value position and is
29
+ * accepted as a WP-06 scoping decision (see README "Entscheidungen").
30
+ */
31
+ const OPEN_BRACKETS = new Set(["(", "[", "{", "<"]);
32
+ const CLOSE_BRACKETS = new Set([")", "]", "}", ">"]);
33
+ /** Collapses whitespace and canonicalizes spacing around common punctuation. */
34
+ export function normalizeSpacing(text) {
35
+ return text
36
+ .replace(/\s+/g, " ")
37
+ .replace(/\s*\?\s*:/g, "?:")
38
+ .replace(/\s*:\s*/g, ": ")
39
+ .replace(/\s*,\s*/g, ", ")
40
+ .replace(/\(\s+/g, "(")
41
+ .replace(/\s+\)/g, ")")
42
+ .replace(/<\s+/g, "<")
43
+ .replace(/\s+>/g, ">")
44
+ .replace(/\.\.\.\s+/g, "...")
45
+ .replace(/\s{2,}/g, " ")
46
+ .trim();
47
+ }
48
+ /**
49
+ * Splits `content` on top-level occurrences of `separator` (depth 0 with
50
+ * respect to `(`, `[`, `{`, `<`/`>`). Used to split parameter lists and
51
+ * type-parameter lists without being confused by nested generics/objects.
52
+ */
53
+ export function splitTopLevel(content, separator) {
54
+ const parts = [];
55
+ let depth = 0;
56
+ let current = "";
57
+ for (const ch of content) {
58
+ if (OPEN_BRACKETS.has(ch))
59
+ depth += 1;
60
+ else if (CLOSE_BRACKETS.has(ch))
61
+ depth = Math.max(0, depth - 1);
62
+ if (ch === separator && depth === 0) {
63
+ parts.push(current);
64
+ current = "";
65
+ }
66
+ else {
67
+ current += ch;
68
+ }
69
+ }
70
+ parts.push(current);
71
+ return parts;
72
+ }
73
+ /**
74
+ * Index of the top-level `=` that introduces a default value, or -1.
75
+ * Excludes `=>`, `==`, `===`, `!=`, `!==`, `<=`, `>=`.
76
+ */
77
+ function findTopLevelDefaultEquals(text) {
78
+ let depth = 0;
79
+ for (let i = 0; i < text.length; i += 1) {
80
+ const ch = text[i];
81
+ if (OPEN_BRACKETS.has(ch)) {
82
+ depth += 1;
83
+ continue;
84
+ }
85
+ if (CLOSE_BRACKETS.has(ch)) {
86
+ depth = Math.max(0, depth - 1);
87
+ continue;
88
+ }
89
+ if (ch === "=" && depth === 0) {
90
+ const prev = i > 0 ? text[i - 1] : "";
91
+ const next = i + 1 < text.length ? text[i + 1] : "";
92
+ const isCompoundOperator = next === "=" || next === ">" || prev === "!" || prev === "<" || prev === ">";
93
+ if (!isCompoundOperator)
94
+ return i;
95
+ }
96
+ }
97
+ return -1;
98
+ }
99
+ /** Strips a single parameter's/type-parameter's default value (`= <expr>`), keeping any `?`/type annotation before it. */
100
+ export function stripDefaultValue(entry) {
101
+ const eqIndex = findTopLevelDefaultEquals(entry);
102
+ return eqIndex === -1 ? entry : entry.slice(0, eqIndex).trimEnd();
103
+ }
104
+ /**
105
+ * Normalizes a formal-parameter-list text (including its outer parens),
106
+ * e.g. `(a: number = 1, b ?: string)` -> `(a: number, b?: string)`.
107
+ */
108
+ export function normalizeParameterList(paramsText) {
109
+ const trimmed = paramsText.trim();
110
+ const hasParens = trimmed.startsWith("(") && trimmed.endsWith(")");
111
+ const inner = hasParens ? trimmed.slice(1, -1) : trimmed;
112
+ const entries = splitTopLevel(inner, ",")
113
+ .map((entry) => entry.trim())
114
+ .filter((entry) => entry.length > 0);
115
+ const normalizedEntries = entries.map((entry) => normalizeSpacing(stripDefaultValue(entry)));
116
+ return `(${normalizedEntries.join(", ")})`;
117
+ }
118
+ /**
119
+ * Normalizes a type-parameter list text (including its outer `<>`), e.g.
120
+ * `<T extends object = {}, U>` -> `<T extends object, U>`.
121
+ */
122
+ export function normalizeTypeParameterList(typeParamsText) {
123
+ if (typeParamsText === undefined || typeParamsText.trim().length === 0)
124
+ return "";
125
+ const trimmed = typeParamsText.trim();
126
+ const hasBrackets = trimmed.startsWith("<") && trimmed.endsWith(">");
127
+ const inner = hasBrackets ? trimmed.slice(1, -1) : trimmed;
128
+ const entries = splitTopLevel(inner, ",")
129
+ .map((entry) => entry.trim())
130
+ .filter((entry) => entry.length > 0);
131
+ if (entries.length === 0)
132
+ return "";
133
+ const normalizedEntries = entries.map((entry) => normalizeSpacing(stripDefaultValue(entry)));
134
+ return `<${normalizedEntries.join(", ")}>`;
135
+ }
136
+ /** Normalizes a return-type annotation text (e.g. ` : Promise<void> ` -> `: Promise<void>`). */
137
+ export function normalizeReturnType(returnTypeText) {
138
+ if (returnTypeText === undefined || returnTypeText.trim().length === 0)
139
+ return "";
140
+ const normalized = normalizeSpacing(returnTypeText);
141
+ return normalized.startsWith(":") ? normalized : `: ${normalized}`;
142
+ }
143
+ /** Normalizes an arbitrary header text (class/interface/type/enum declarations). */
144
+ export function normalizeHeaderText(headerText) {
145
+ return normalizeSpacing(headerText.replace(/;\s*$/, ""));
146
+ }
147
+ //# sourceMappingURL=signature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signature.js","sourceRoot":"","sources":["../../../src/languages/shared/signature.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,115 @@
1
+ /**
2
+ * Der backend-neutrale Baumvertrag dieses Pakets.
3
+ *
4
+ * WARUM ES IHN GIBT: seit WP-220 laufen ZWEI Parser-Backends unter demselben
5
+ * `LanguageAdapter` (domain `analysis.ts`) — `tree-sitter` fuer die
6
+ * JS/TS-Familie und `@ast-grep/napi` fuer die Sprachen, fuer die wir keine
7
+ * eigene Grammatik pflegen wollen. Der vereinheitlichte Walk (`engine.ts`),
8
+ * die Parse-Diagnosen (`parse-diagnostics.ts`), die Fingerabdruecke
9
+ * (`fingerprint.ts`) und der Regionenbaum (`chunks.ts`) sind fuer BEIDE
10
+ * dieselben Zeilen. Sie sprechen deshalb nicht mehr ueber
11
+ * `Parser.SyntaxNode`/`Parser.TreeCursor`, sondern ueber die zwei Formen hier.
12
+ *
13
+ * DIE FORMEN SIND ABSICHTLICH DIE VON TREE-SITTER. `Parser.SyntaxNode` und
14
+ * `Parser.TreeCursor` erfuellen sie STRUKTURELL, ohne einen einzigen Wrapper:
15
+ * der tree-sitter-Weg zahlt fuer diese Abstraktion nichts, kein Objekt, kein
16
+ * Aufruf mehr als vorher (`languages/shared/tree-sitter-types.ts` haelt die
17
+ * Zusage mit einer Zuweisungspruefung fest). Die Kosten traegt der neue Weg:
18
+ * `languages/astgrep-backend/syntax.ts` baut die Form ueber `SgNode` nach, weil
19
+ * ast-grep KEINE Cursor-API hat (gemessen: Faktor 3,74 auf dem Walk). Diese
20
+ * Richtung ist gewollt — der gemessen schnellere Weg bleibt der billige.
21
+ *
22
+ * ZWEI EIGENSCHAFTEN, DIE JEDES BACKEND EINHALTEN MUSS:
23
+ *
24
+ * 1. `startIndex`/`endIndex` und `startPosition.column` sind UTF-16-Offsets,
25
+ * NICHT Bytes — bei tree-sitter ebenso wie bei ast-grep, dessen
26
+ * Typdefinition `Pos.index` faelschlich als "byte offset" beschreibt
27
+ * (nachgemessen an Umlauten und Emoji). Bytes entstehen ausschliesslich
28
+ * in `node-utils.ts#rangeOf`/`rangeOfCursor` ueber die `ByteOffsetTable`.
29
+ *
30
+ * 2. Ein Cursor wird IMMER an der Ausgangsposition zurueckgegeben. Jede
31
+ * Hilfsfunktion, die ihn bewegt, bewegt ihn zurueck.
32
+ */
33
+ /** Zeile/Spalte eines Knotens; `row` und `column` sind 0-basiert. */
34
+ export interface SyntaxPoint {
35
+ readonly row: number;
36
+ readonly column: number;
37
+ }
38
+ /**
39
+ * Ein Knoten des Syntaxbaums — die Teilmenge der tree-sitter-Knotenform, die
40
+ * dieses Paket wirklich benutzt. Wer hier etwas hinzufuegt, verpflichtet
41
+ * BEIDE Backends dazu; `languages/astgrep-backend/syntax.ts` muss es dann nachbauen.
42
+ */
43
+ export interface SyntaxNode {
44
+ readonly type: string;
45
+ readonly text: string;
46
+ /**
47
+ * Benannter Knoten der Grammatik (kein reines Satzzeichen-/Schluesselwort-
48
+ * Token). Beide Backends liefern das ohne Umweg (tree-sitter `isNamed`,
49
+ * ast-grep `isNamed()`); gebraucht wird es dort, wo ein Operator KEIN
50
+ * eigenes Feld hat und nur ueber "das anonyme Kind" zu finden ist.
51
+ */
52
+ readonly isNamed: boolean;
53
+ /** UTF-16-Offset des ersten Zeichens (siehe Modulkopf, Punkt 1). */
54
+ readonly startIndex: number;
55
+ /** UTF-16-Offset hinter dem letzten Zeichen. */
56
+ readonly endIndex: number;
57
+ readonly startPosition: SyntaxPoint;
58
+ readonly endPosition: SyntaxPoint;
59
+ readonly parent: SyntaxNode | null;
60
+ /**
61
+ * Vorheriges Geschwister — auch ein anonymes. `doc-binding.ts` laeuft
62
+ * darueber rueckwaerts zu Dekoratoren und Doc-Kommentaren; wuerde ein
63
+ * Backend hier nur BENANNTE Geschwister liefern, veraenderte das die
64
+ * Doc-Bindung stillschweigend (ast-grep `prev()` ist deshalb geprueft).
65
+ */
66
+ readonly previousSibling: SyntaxNode | null;
67
+ readonly children: readonly SyntaxNode[];
68
+ readonly namedChildCount: number;
69
+ namedChild(index: number): SyntaxNode | null;
70
+ childForFieldName(fieldName: string): SyntaxNode | null;
71
+ /** Ein Cursor, der auf DIESEM Knoten steht. */
72
+ walk(): SyntaxCursor;
73
+ }
74
+ /**
75
+ * Der Traversierungszeiger. Bei tree-sitter haelt er die Position nativ und
76
+ * baut je Knoten KEINEN Wrapper (WP-95); bei ast-grep bildet ihn ein
77
+ * expliziter Stapel nach. Der Vertrag ist in beiden Faellen derselbe, und die
78
+ * Besuchsreihenfolge ebenfalls: Vorordnung ueber `gotoFirstChild` /
79
+ * `gotoNextSibling` / `gotoParent`, Rueckordnung ueber `gotoLastChild` /
80
+ * `gotoPreviousSibling` (die Parse-Diagnosen laufen rueckwaerts, siehe
81
+ * `parse-diagnostics.ts`).
82
+ */
83
+ export interface SyntaxCursor {
84
+ readonly nodeType: string;
85
+ readonly nodeText: string;
86
+ /**
87
+ * Fehlender Knoten der Fehlerkorrektur (tree-sitter `ts_node_is_missing`).
88
+ *
89
+ * ast-grep hat dazu KEIN Gegenstueck. Sein Cursor liefert an dieser Stelle
90
+ * eine HEURISTIK (Knoten der Breite null), und der Adapter sagt das in der
91
+ * Diagnose auch — `languages/astgrep-backend/syntax.ts` und
92
+ * `languages/astgrep-backend/create-adapter.ts`. Wer den Wert liest, muss wissen,
93
+ * dass er je nach Backend gemessen oder geschaetzt ist.
94
+ */
95
+ readonly nodeIsMissing: boolean;
96
+ /**
97
+ * Feldname, unter dem der aktuelle Knoten in seinem Elternknoten steht,
98
+ * oder `undefined`. tree-sitter liefert ihn ohne Zusatzkosten; der
99
+ * ast-grep-Cursor muss ihn ueber die Felder des Elternknotens suchen und
100
+ * kennt deshalb nur die Feldnamen, die das Sprachprofil nennt
101
+ * (`profile.ts#LanguageProfile.fieldNames`).
102
+ */
103
+ readonly currentFieldName: string | undefined;
104
+ readonly currentNode: SyntaxNode;
105
+ readonly startPosition: SyntaxPoint;
106
+ readonly endPosition: SyntaxPoint;
107
+ readonly startIndex: number;
108
+ readonly endIndex: number;
109
+ gotoParent(): boolean;
110
+ gotoFirstChild(): boolean;
111
+ gotoLastChild(): boolean;
112
+ gotoNextSibling(): boolean;
113
+ gotoPreviousSibling(): boolean;
114
+ }
115
+ //# sourceMappingURL=syntax.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"syntax.d.ts","sourceRoot":"","sources":["../../../src/languages/shared/syntax.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,qEAAqE;AACrE,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB;;;;;OAKG;IACH,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,oEAAoE;IACpE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,gDAAgD;IAChD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,aAAa,EAAE,WAAW,CAAC;IACpC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC;IACnC;;;;;OAKG;IACH,QAAQ,CAAC,eAAe,EAAE,UAAU,GAAG,IAAI,CAAC;IAC5C,QAAQ,CAAC,QAAQ,EAAE,SAAS,UAAU,EAAE,CAAC;IACzC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAAC;IAC7C,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAAC;IACxD,+CAA+C;IAC/C,IAAI,IAAI,YAAY,CAAC;CACtB;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B;;;;;;;;OAQG;IACH,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC;;;;;;OAMG;IACH,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9C,QAAQ,CAAC,WAAW,EAAE,UAAU,CAAC;IACjC,QAAQ,CAAC,aAAa,EAAE,WAAW,CAAC;IACpC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,UAAU,IAAI,OAAO,CAAC;IACtB,cAAc,IAAI,OAAO,CAAC;IAC1B,aAAa,IAAI,OAAO,CAAC;IACzB,eAAe,IAAI,OAAO,CAAC;IAC3B,mBAAmB,IAAI,OAAO,CAAC;CAChC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=syntax.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"syntax.js","sourceRoot":"","sources":["../../../src/languages/shared/syntax.ts"],"names":[],"mappings":""}
@@ -0,0 +1,54 @@
1
+ import type { DecisionDetectionResult } from "./decisions.js";
2
+ import type { SyntaxNode } from "./syntax.js";
3
+ import type { DecisionRules } from "./table-profile.js";
4
+ /** Kompiliert ausschliesslich Kontrollflussregeln einer Sprachtabelle. */
5
+ export declare class TableDecisionDetector {
6
+ private readonly rules;
7
+ private readonly triviaKinds;
8
+ readonly nodeKinds: ReadonlySet<string>;
9
+ private readonly ifKinds;
10
+ private readonly elseIfParentKinds;
11
+ private readonly elseIfWrapperKinds;
12
+ private readonly elseIfKinds;
13
+ private readonly loopKinds;
14
+ private readonly catchKinds;
15
+ private readonly ternaryKinds;
16
+ private readonly switchKinds;
17
+ private readonly caseKinds;
18
+ private readonly caseExcludeChildKinds;
19
+ private readonly guardKinds;
20
+ private readonly patternAlternativeKinds;
21
+ private readonly shortCircuitKinds;
22
+ private readonly anonymousOperatorKinds;
23
+ private readonly binaryKinds;
24
+ private readonly jumpKinds;
25
+ private readonly blockKinds;
26
+ private readonly logicalKinds;
27
+ private readonly operatorField;
28
+ constructor(rules: DecisionRules, triviaKinds: ReadonlySet<string>);
29
+ private registerLogicalKinds;
30
+ detect(node: SyntaxNode): DecisionDetectionResult;
31
+ private detectIf;
32
+ private isElseIf;
33
+ /**
34
+ * Kotlin 0.0.7 verliert in `else /* ... *\/ if` das `else` als Baumknoten
35
+ * und beendet das erste `if_expression` vor dem Blockkommentar. Die
36
+ * Korrektur bleibt an AST-Grenzen gebunden: links muss ein mit `if` endender
37
+ * Geschwisterteilbaum stehen, dazwischen mindestens ein echter
38
+ * Kommentarknoten, und nur der exakte Keyword-Spalt `else` darf fehlen.
39
+ */
40
+ private isDetachedElseIfAfterComments;
41
+ private isWhitespaceGap;
42
+ private textBetween;
43
+ /** Ob `node` an seiner rechten AST-Grenze in einem `if` endet. */
44
+ private endsWithIf;
45
+ private isGuardClause;
46
+ private soleStatementOf;
47
+ private detectCase;
48
+ private detectLogical;
49
+ private operatorOf;
50
+ /** Stabile, positionsbasierte Kennung einer maximalen Operatorkette. */
51
+ private logicalGroupIdFor;
52
+ private isLogicalExpression;
53
+ }
54
+ //# sourceMappingURL=table-profile-decisions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-profile-decisions.d.ts","sourceRoot":"","sources":["../../../src/languages/shared/table-profile-decisions.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,uBAAuB,EAAoB,MAAM,gBAAgB,CAAC;AAChF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAuBxD,0EAA0E;AAC1E,qBAAa,qBAAqB;IAwB9B,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAxB9B,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAExC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsB;IAC9C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAsB;IACxD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAsB;IACzD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAsB;IAClD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAsB;IAChD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAsB;IACjD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsB;IACnD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAsB;IAClD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAsB;IAChD,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAsB;IAC5D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAsB;IACjD,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAsB;IAC9D,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAsB;IACxD,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAsB;IAC7D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAsB;IAClD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAsB;IAChD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAsB;IACjD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAmC;IAChE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;gBAGpB,KAAK,EAAE,aAAa,EACpB,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC;IAuCnD,OAAO,CAAC,oBAAoB;IAI5B,MAAM,CAAC,IAAI,EAAE,UAAU,GAAG,uBAAuB;IAqBjD,OAAO,CAAC,QAAQ;IAKhB,OAAO,CAAC,QAAQ;IAchB;;;;;;OAMG;IACH,OAAO,CAAC,6BAA6B;IAkBrC,OAAO,CAAC,eAAe;IAKvB,OAAO,CAAC,WAAW;IAOnB,kEAAkE;IAClE,OAAO,CAAC,UAAU;IAclB,OAAO,CAAC,aAAa;IAarB,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,UAAU;IAOlB,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,UAAU;IAWlB,wEAAwE;IACxE,OAAO,CAAC,iBAAiB;IAUzB,OAAO,CAAC,mBAAmB;CAG5B"}
@@ -0,0 +1,245 @@
1
+ import { firstChildOfKinds, setOf } from "./table-profile-queries.js";
2
+ function branching(kind, construct, continuation) {
3
+ return {
4
+ decision: { kind, countsForClassic: true, countsForExtended: true },
5
+ nesting: { construct, continuation },
6
+ };
7
+ }
8
+ function extendedOnly(kind, logicalGroupId) {
9
+ const decision = {
10
+ kind,
11
+ countsForClassic: false,
12
+ countsForExtended: true,
13
+ ...(logicalGroupId === undefined ? {} : { logicalGroupId }),
14
+ };
15
+ return { decision };
16
+ }
17
+ /** Kompiliert ausschliesslich Kontrollflussregeln einer Sprachtabelle. */
18
+ export class TableDecisionDetector {
19
+ rules;
20
+ triviaKinds;
21
+ nodeKinds;
22
+ ifKinds;
23
+ elseIfParentKinds;
24
+ elseIfWrapperKinds;
25
+ elseIfKinds;
26
+ loopKinds;
27
+ catchKinds;
28
+ ternaryKinds;
29
+ switchKinds;
30
+ caseKinds;
31
+ caseExcludeChildKinds;
32
+ guardKinds;
33
+ patternAlternativeKinds;
34
+ shortCircuitKinds;
35
+ anonymousOperatorKinds;
36
+ binaryKinds;
37
+ jumpKinds;
38
+ blockKinds;
39
+ logicalKinds = new Map();
40
+ operatorField;
41
+ constructor(rules, triviaKinds) {
42
+ this.rules = rules;
43
+ this.triviaKinds = triviaKinds;
44
+ this.ifKinds = setOf(rules.ifKinds);
45
+ this.elseIfParentKinds = setOf(rules.elseIfParentKinds);
46
+ this.elseIfWrapperKinds = setOf(rules.elseIfWrapperKinds);
47
+ this.elseIfKinds = setOf(rules.elseIfKinds);
48
+ this.loopKinds = setOf(rules.loopKinds);
49
+ this.catchKinds = setOf(rules.catchKinds);
50
+ this.ternaryKinds = setOf(rules.ternaryKinds);
51
+ this.switchKinds = setOf(rules.switchKinds);
52
+ this.caseKinds = setOf(rules.caseKinds);
53
+ this.caseExcludeChildKinds = setOf(rules.caseExcludeChildKinds);
54
+ this.guardKinds = setOf(rules.guardKinds);
55
+ this.patternAlternativeKinds = setOf(rules.patternAlternativeKinds);
56
+ this.shortCircuitKinds = setOf(rules.shortCircuitKinds);
57
+ this.anonymousOperatorKinds = setOf(rules.anonymousOperatorKinds);
58
+ this.binaryKinds = setOf(rules.binaryKinds);
59
+ this.jumpKinds = setOf(rules.jumpKinds);
60
+ this.blockKinds = setOf(rules.blockKinds);
61
+ this.operatorField = rules.operatorField ?? "operator";
62
+ this.registerLogicalKinds(rules.logicalAndOperators, "logical_and");
63
+ this.registerLogicalKinds(rules.logicalOrOperators, "logical_or");
64
+ this.registerLogicalKinds(rules.shortCircuitOperators, "short_circuit");
65
+ this.nodeKinds = new Set([
66
+ ...this.ifKinds,
67
+ ...this.loopKinds,
68
+ ...this.catchKinds,
69
+ ...this.ternaryKinds,
70
+ ...this.switchKinds,
71
+ ...this.caseKinds,
72
+ ...this.elseIfKinds,
73
+ ...this.guardKinds,
74
+ ...this.patternAlternativeKinds,
75
+ ...this.shortCircuitKinds,
76
+ ...this.anonymousOperatorKinds,
77
+ ...this.binaryKinds,
78
+ ]);
79
+ }
80
+ registerLogicalKinds(operators, kind) {
81
+ for (const operator of operators ?? [])
82
+ this.logicalKinds.set(operator, kind);
83
+ }
84
+ detect(node) {
85
+ const kind = node.type;
86
+ if (this.elseIfKinds.has(kind))
87
+ return branching("else_if", "if", true);
88
+ if (this.guardKinds.has(kind))
89
+ return branching("guard", "if", false);
90
+ if (this.patternAlternativeKinds.has(kind))
91
+ return extendedOnly("pattern_alternative");
92
+ if (this.shortCircuitKinds.has(kind)) {
93
+ return extendedOnly("short_circuit", `short-circuit-${String(node.startIndex)}`);
94
+ }
95
+ if (this.ifKinds.has(kind))
96
+ return this.detectIf(node);
97
+ if (this.loopKinds.has(kind))
98
+ return branching("loop", "loop", false);
99
+ if (this.catchKinds.has(kind))
100
+ return branching("catch", "catch", false);
101
+ if (this.ternaryKinds.has(kind))
102
+ return branching("ternary", "ternary", false);
103
+ if (this.switchKinds.has(kind))
104
+ return { nesting: { construct: "switch", continuation: false } };
105
+ if (this.caseKinds.has(kind))
106
+ return this.detectCase(node);
107
+ if (this.binaryKinds.has(kind) || this.anonymousOperatorKinds.has(kind)) {
108
+ return this.detectLogical(node);
109
+ }
110
+ return {};
111
+ }
112
+ detectIf(node) {
113
+ if (this.isElseIf(node))
114
+ return branching("else_if", "if", true);
115
+ return branching(this.isGuardClause(node) ? "guard" : "if", "if", false);
116
+ }
117
+ isElseIf(node) {
118
+ const parent = node.parent;
119
+ if (parent === null)
120
+ return false;
121
+ if (this.elseIfParentKinds.has(parent.type))
122
+ return true;
123
+ if (this.elseIfWrapperKinds.has(parent.type)) {
124
+ let previous = parent.previousSibling;
125
+ while (previous !== null && this.triviaKinds.has(previous.type)) {
126
+ previous = previous.previousSibling;
127
+ }
128
+ if (previous?.type === "else")
129
+ return true;
130
+ }
131
+ return this.isDetachedElseIfAfterComments(node, parent);
132
+ }
133
+ /**
134
+ * Kotlin 0.0.7 verliert in `else /* ... *\/ if` das `else` als Baumknoten
135
+ * und beendet das erste `if_expression` vor dem Blockkommentar. Die
136
+ * Korrektur bleibt an AST-Grenzen gebunden: links muss ein mit `if` endender
137
+ * Geschwisterteilbaum stehen, dazwischen mindestens ein echter
138
+ * Kommentarknoten, und nur der exakte Keyword-Spalt `else` darf fehlen.
139
+ */
140
+ isDetachedElseIfAfterComments(node, parent) {
141
+ if (this.rules.recoverDetachedElseIfAfterComments !== true)
142
+ return false;
143
+ let right = node;
144
+ let left = node.previousSibling;
145
+ let sawComment = false;
146
+ while (left !== null && this.triviaKinds.has(left.type)) {
147
+ if (!this.isWhitespaceGap(parent, left.endIndex, right.startIndex))
148
+ return false;
149
+ sawComment = true;
150
+ right = left;
151
+ left = left.previousSibling;
152
+ }
153
+ if (!sawComment || left === null || !this.endsWithIf(left))
154
+ return false;
155
+ const keywordGap = this.textBetween(parent, left.endIndex, right.startIndex);
156
+ return keywordGap !== null && keywordGap.trim() === "else";
157
+ }
158
+ isWhitespaceGap(parent, startIndex, endIndex) {
159
+ const gap = this.textBetween(parent, startIndex, endIndex);
160
+ return gap !== null && gap.trim().length === 0;
161
+ }
162
+ textBetween(parent, startIndex, endIndex) {
163
+ const start = startIndex - parent.startIndex;
164
+ const end = endIndex - parent.startIndex;
165
+ if (start < 0 || end < start || end > parent.text.length)
166
+ return null;
167
+ return parent.text.slice(start, end);
168
+ }
169
+ /** Ob `node` an seiner rechten AST-Grenze in einem `if` endet. */
170
+ endsWithIf(node) {
171
+ const endIndex = node.endIndex;
172
+ const stack = [node];
173
+ while (stack.length > 0) {
174
+ const current = stack.pop();
175
+ if (current.endIndex !== endIndex)
176
+ continue;
177
+ if (this.ifKinds.has(current.type))
178
+ return true;
179
+ for (const child of current.children) {
180
+ if (child.endIndex === endIndex)
181
+ stack.push(child);
182
+ }
183
+ }
184
+ return false;
185
+ }
186
+ isGuardClause(node) {
187
+ if (this.rules.consequenceField === undefined || this.jumpKinds.size === 0)
188
+ return false;
189
+ if (this.rules.alternativeField !== undefined &&
190
+ node.childForFieldName(this.rules.alternativeField) !== null) {
191
+ return false;
192
+ }
193
+ const consequence = node.childForFieldName(this.rules.consequenceField);
194
+ const sole = consequence === null ? null : this.soleStatementOf(consequence);
195
+ return sole !== null && this.jumpKinds.has(sole.type);
196
+ }
197
+ soleStatementOf(node) {
198
+ let current = node;
199
+ while (current !== null && this.blockKinds.has(current.type)) {
200
+ current = current.namedChildCount === 1 ? current.namedChild(0) : null;
201
+ }
202
+ return current;
203
+ }
204
+ detectCase(node) {
205
+ if (firstChildOfKinds(node, this.caseExcludeChildKinds) !== null)
206
+ return {};
207
+ const firstText = node.children[0]?.text.trim();
208
+ if (firstText !== undefined && firstText === this.rules.caseExcludeFirstChildText)
209
+ return {};
210
+ return { decision: { kind: "case", countsForClassic: true, countsForExtended: true } };
211
+ }
212
+ detectLogical(node) {
213
+ const operator = this.operatorOf(node);
214
+ if (operator === undefined)
215
+ return {};
216
+ const kind = this.logicalKinds.get(operator);
217
+ return kind === undefined ? {} : extendedOnly(kind, this.logicalGroupIdFor(node, operator));
218
+ }
219
+ operatorOf(node) {
220
+ if (!this.anonymousOperatorKinds.has(node.type)) {
221
+ return node.childForFieldName(this.operatorField)?.text;
222
+ }
223
+ for (const child of node.children) {
224
+ const text = child.text.trim();
225
+ if (this.logicalKinds.has(text))
226
+ return text;
227
+ }
228
+ return undefined;
229
+ }
230
+ /** Stabile, positionsbasierte Kennung einer maximalen Operatorkette. */
231
+ logicalGroupIdFor(node, operator) {
232
+ let top = node;
233
+ while (top.parent !== null && this.isLogicalExpression(top.parent)) {
234
+ const parent = top.parent;
235
+ if (this.operatorOf(parent) !== operator)
236
+ break;
237
+ top = parent;
238
+ }
239
+ return `logical-${String(top.startIndex)}`;
240
+ }
241
+ isLogicalExpression(node) {
242
+ return this.binaryKinds.has(node.type) || this.anonymousOperatorKinds.has(node.type);
243
+ }
244
+ }
245
+ //# sourceMappingURL=table-profile-decisions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-profile-decisions.js","sourceRoot":"","sources":["../../../src/languages/shared/table-profile-decisions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import type { FileTextContext } from "./node-utils.js";
2
+ import type { ModuleFactSink } from "./profile.js";
3
+ import type { SyntaxNode } from "./syntax.js";
4
+ import type { CallRules, ImportRules } from "./table-profile.js";
5
+ /** Kompiliert ausschliesslich Import- und Aufrufregeln einer Sprachtabelle. */
6
+ export declare class TableModuleFactCollector {
7
+ private readonly imports;
8
+ private readonly calls;
9
+ readonly nodeKinds: ReadonlySet<string>;
10
+ private readonly importKinds;
11
+ private readonly importSpecKinds;
12
+ private readonly callKinds;
13
+ private readonly constructionKinds;
14
+ private readonly memberKinds;
15
+ private readonly functionField;
16
+ private readonly argumentsField;
17
+ constructor(imports: ImportRules, calls: CallRules);
18
+ collect(node: SyntaxNode, kind: string, callerScopeId: string, ctx: FileTextContext, sink: ModuleFactSink): void;
19
+ private collectImports;
20
+ private collectImportSpec;
21
+ private importPartsOf;
22
+ private initialImportPathOf;
23
+ private namedChildTexts;
24
+ private collectCall;
25
+ private calleeOf;
26
+ private callTargetOf;
27
+ private memberCalleeOf;
28
+ }
29
+ //# sourceMappingURL=table-profile-module-facts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table-profile-module-facts.d.ts","sourceRoot":"","sources":["../../../src/languages/shared/table-profile-module-facts.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAO9C,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAYjE,+EAA+E;AAC/E,qBAAa,wBAAwB;IAYjC,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAZxB,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAExC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAsB;IAClD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAsB;IACtD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAsB;IAChD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAsB;IACxD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAsB;IAClD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;gBAGrB,OAAO,EAAE,WAAW,EACpB,KAAK,EAAE,SAAS;IAYnC,OAAO,CACL,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,MAAM,EACZ,aAAa,EAAE,MAAM,EACrB,GAAG,EAAE,eAAe,EACpB,IAAI,EAAE,cAAc,GACnB,IAAI;IAQP,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,iBAAiB;IAczB,OAAO,CAAC,aAAa;IAmBrB,OAAO,CAAC,mBAAmB;IAU3B,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,WAAW;IAoBnB,OAAO,CAAC,QAAQ;IAehB,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,cAAc;CAQvB"}