@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,176 @@
1
+ /**
2
+ * Der Zugang zu `@ast-grep/napi` — traege geladen, EINMAL registriert, und
3
+ * ohne stillen Ausfall.
4
+ *
5
+ * DREI EIGENHEITEN DIESER BIBLIOTHEK BESTIMMEN DIESE DATEI:
6
+ *
7
+ * 1. `registerDynamicLanguage` WIRKT GENAU EINMAL. Der zweite Aufruf wirft
8
+ * nicht — er registriert schweigend nichts, und jeder spaetere
9
+ * `parse("<sprache>", ...)` scheitert dann mit "not supported in napi".
10
+ * Also: EINE Registrierung, aufgeschoben bis zum ersten Parse einer
11
+ * dynamischen Sprache, mit ALLEN Sprachen, deren Adapter bis dahin
12
+ * angemeldet wurden. Wer danach noch eine Sprache anmeldet, bekommt einen
13
+ * Fehler statt einer stillen Wirkungslosigkeit ({@link registerAstGrepLanguage}).
14
+ *
15
+ * 2. EIN FEHLENDER PREBUILD SCHEITERT BEI DER INSTALLATION STILL. Die
16
+ * `postinstall` der `@ast-grep/lang-*`-Pakete faengt den Baufehler und
17
+ * endet mit Exit 0; npm/pnpm melden Erfolg. Erst `require("<paket>")
18
+ * .libraryPath` wirft — ein Getter. Die Sprachpakete liefern Prebuilds nur
19
+ * fuer macOS x64/arm64, Linux x64/arm64 (glibc) und Windows x64: auf
20
+ * Alpine (musl), Windows ARM64 und Windows ia32 gibt es KEINEN. Deshalb
21
+ * wird jede Sprache einzeln geprueft, der Ausfall benannt festgehalten
22
+ * ({@link astGrepLanguageStatus}) und beim Parsen als
23
+ * `grammar_unavailable` gemeldet — woraus der Aufrufer einen
24
+ * Skip-Ledger-Eintrag mit Grund baut (E4). Kein Adapter tut so, als haette
25
+ * er geparst.
26
+ *
27
+ * 3. `SgNode#id()` IST ADRESSABGELEITET. Innerhalb eines Prozesses taugt es
28
+ * zum Vergleich zweier Knoten, ueber Prozesse hinweg zu gar nichts. Es
29
+ * darf deshalb NIE in Ergebnisdaten stehen; genutzt wird es einzig in
30
+ * `syntax.ts`, um den Feldnamen des aktuellen Knotens zu bestimmen.
31
+ *
32
+ * Der Kern (`@ast-grep/napi`) bringt TypeScript, TSX, JavaScript, HTML und CSS
33
+ * fest eingebaut mit. Wir benutzen davon NICHTS: die JS/TS-Familie laeuft
34
+ * weiter ueber tree-sitter (Begruendung in `README.md` dieses Verzeichnisses).
35
+ */
36
+ import { createRequire } from "node:module";
37
+ import { AdapterParseError } from "@untangle-code/domain";
38
+ const require = createRequire(import.meta.url);
39
+ const pending = new Map();
40
+ const status = new Map();
41
+ let registrationDone = false;
42
+ let cachedModule;
43
+ /**
44
+ * Meldet eine Sprache fuer die EINE spaetere Registrierung an. Kostet nichts:
45
+ * kein `require`, kein Laden einer Grammatik — genau wie die traege
46
+ * Registrierung der tree-sitter-Adapter (`registry.ts`).
47
+ */
48
+ export function registerAstGrepLanguage(languageName, moduleName) {
49
+ const already = pending.get(languageName);
50
+ if (already !== undefined && already.moduleName === moduleName) {
51
+ // DIESELBE Sprache aus DEMSELBEN Paket ein zweites Mal anzumelden ist
52
+ // harmlos und passiert im Normalbetrieb: `createParserRegistry()` baut
53
+ // jedes Mal frische Adapter, und ein Prozess darf mehr als eine Registry
54
+ // haben (die CLI tut es je Befehl). Der Eintrag ist bereits da, die
55
+ // Registrierung enthaelt die Sprache also — hier ist NICHTS zu tun und
56
+ // nichts zu melden. Ohne diese Ausnahme warf die zweite Registry, obwohl
57
+ // ihre Sprachen samt und sonders verfuegbar waren (WP-86).
58
+ return;
59
+ }
60
+ if (registrationDone) {
61
+ // Nach der Registrierung ist die Liste unveraenderlich (Eigenheit 1 im
62
+ // Modulkopf). Ein spaeterer Eintrag waere wirkungslos — und wirkungslos
63
+ // und unbemerkt ist genau das, was E4 verbietet.
64
+ throw new AdapterParseError("grammar_unavailable", `Sprache "${languageName}" was registered after the one-time ast-grep registration. ` +
65
+ `registerDynamicLanguage only takes effect on its first call; the language would silently remain unavailable.`);
66
+ }
67
+ pending.set(languageName, { languageName, moduleName });
68
+ status.set(languageName, { state: "pending" });
69
+ }
70
+ function loadModule() {
71
+ if (cachedModule === undefined) {
72
+ cachedModule = require("@ast-grep/napi");
73
+ }
74
+ return cachedModule;
75
+ }
76
+ /**
77
+ * Fuehrt die EINE Registrierung aus (idempotent). Jede Sprache, deren Paket
78
+ * fehlt oder deren Prebuild nicht gebaut wurde, faellt hier mit BENANNTEM
79
+ * Grund heraus, statt erst beim Parsen unverstaendlich zu scheitern.
80
+ */
81
+ function ensureRegistered() {
82
+ const napi = loadModule();
83
+ if (registrationDone)
84
+ return napi;
85
+ registrationDone = true;
86
+ const registrations = {};
87
+ for (const language of pending.values()) {
88
+ try {
89
+ const registration = require(language.moduleName);
90
+ // `libraryPath` ist ein GETTER, der genau dann wirft, wenn weder ein
91
+ // Prebuild noch ein selbst gebauter Parser da ist. Der Zugriff hier ist
92
+ // die Pruefung, nicht ein beilaeufiges Lesen.
93
+ const libraryPath = registration.libraryPath;
94
+ registrations[language.languageName] = { ...registration, libraryPath };
95
+ }
96
+ catch (error) {
97
+ status.set(language.languageName, {
98
+ state: "unavailable",
99
+ reason: `Package "${language.moduleName}" could not be loaded or has no built parser for ${process.platform}/${process.arch}: ${errorText(error)}`,
100
+ });
101
+ }
102
+ }
103
+ if (Object.keys(registrations).length > 0) {
104
+ try {
105
+ napi.registerDynamicLanguage(registrations);
106
+ for (const name of Object.keys(registrations)) {
107
+ status.set(name, { state: "available" });
108
+ }
109
+ }
110
+ catch (error) {
111
+ for (const name of Object.keys(registrations)) {
112
+ status.set(name, {
113
+ state: "unavailable",
114
+ reason: `registerDynamicLanguage failed: ${errorText(error)}`,
115
+ });
116
+ }
117
+ }
118
+ }
119
+ return napi;
120
+ }
121
+ function errorText(error) {
122
+ return error instanceof Error ? error.message : String(error);
123
+ }
124
+ /**
125
+ * Zustand einer angemeldeten Sprache — fuer `doctor` und fuer Tests. Loest die
126
+ * Registrierung NICHT aus: wer nur fragt, soll keine Grammatik laden.
127
+ */
128
+ export function astGrepLanguageStatus(languageName) {
129
+ return status.get(languageName) ?? null;
130
+ }
131
+ /** Alle angemeldeten Sprachen mit ihrem Zustand (Reihenfolge der Anmeldung). */
132
+ export function astGrepLanguageStates() {
133
+ return [...pending.keys()].map((languageName) => ({
134
+ languageName,
135
+ status: status.get(languageName) ?? { state: "pending" },
136
+ }));
137
+ }
138
+ /**
139
+ * Parst Quelltext mit ast-grep. Loest beim ERSTEN Aufruf die einmalige
140
+ * Registrierung aus (siehe Modulkopf) und wirft einen benannten
141
+ * `AdapterParseError`, wenn genau diese Sprache nicht verfuegbar ist.
142
+ */
143
+ export function astGrepParse(languageName, source) {
144
+ let napi;
145
+ try {
146
+ napi = ensureRegistered();
147
+ }
148
+ catch (error) {
149
+ throw new AdapterParseError("grammar_unavailable", `Could not load @ast-grep/napi: ${errorText(error)}`, { cause: error });
150
+ }
151
+ const languageStatus = status.get(languageName);
152
+ if (languageStatus === undefined) {
153
+ throw new AdapterParseError("grammar_unavailable", `Sprache "${languageName}" is not registered with this ast-grep backend.`);
154
+ }
155
+ if (languageStatus.state === "unavailable") {
156
+ throw new AdapterParseError("grammar_unavailable", `Sprache "${languageName}" is unavailable: ${languageStatus.reason}`);
157
+ }
158
+ try {
159
+ return napi.parse(languageName, source).root();
160
+ }
161
+ catch (error) {
162
+ throw new AdapterParseError("parser_internal_error", `ast-grep could not parse "${languageName}" could not be parsed: ${errorText(error)}`, { cause: error });
163
+ }
164
+ }
165
+ /**
166
+ * Nur fuer Tests: setzt Anmeldungen und Registrierungszustand zurueck. Der
167
+ * NATIVE Zustand laesst sich damit NICHT zuruecksetzen — `registerDynamicLanguage`
168
+ * bleibt im Prozess wirksam. Ein Test, der eine zweite, andere Registrierung
169
+ * erzwingen will, braucht einen eigenen Prozess.
170
+ */
171
+ export function resetAstGrepRegistrationForTests() {
172
+ pending.clear();
173
+ status.clear();
174
+ registrationDone = false;
175
+ }
176
+ //# sourceMappingURL=napi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"napi.js","sourceRoot":"","sources":["../../../src/languages/astgrep-backend/napi.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,88 @@
1
+ /**
2
+ * Der backend-neutrale Baumvertrag (`shared/syntax.ts`), nachgebaut ueber
3
+ * `SgNode`.
4
+ *
5
+ * WARUM DAS HIER TEURER IST ALS DER ANDERE WEG, und warum wir es trotzdem so
6
+ * bauen: ast-grep hat KEINE Cursor-API. Es gibt kein Gegenstueck zu
7
+ * `gotoFirstChild`/`gotoNextSibling`/`gotoParent`; jeder Abstieg geht ueber
8
+ * `children()`, und jedes `children()` baut ein frisches JS-Array aus
9
+ * Knotenwrappern. Gemessen an diesem Repositorium (721 Dateien, 1.143.212
10
+ * Knoten): tree-sitter-Cursor 1.703.642 Knoten/s gegen ast-grep 455.329
11
+ * Knoten/s — Faktor 3,74, Mehrkosten 1,61 us je Knoten. Das ist das Niveau des
12
+ * `.children`-Weges, den WP-95 abgeschafft hat.
13
+ *
14
+ * Deshalb: die JS/TS-Familie bleibt bei tree-sitter, und dieser Cursor ist der
15
+ * Weg fuer Sprachen, die es sonst GAR NICHT gaebe. Fuer sie ist der Aufpreis
16
+ * kein Rueckschritt — er ist der Eintrittspreis.
17
+ *
18
+ * WAS DIESER CURSOR TROTZDEM RICHTIG MACHT:
19
+ * - Er ist ITERATIV. Ein Baum kann zehntausende Ebenen tief sein (eine lange
20
+ * `a || b || c`-Kette genuegt); ein rekursiver Walk zerbricht daran mit
21
+ * `RangeError: Maximum call stack size exceeded`, nachgemessen an 50.000
22
+ * Gliedern.
23
+ * - Er materialisiert die Kindliste je Ebene EINMAL, nicht je Zugriff.
24
+ * - Er merkt sich den Bereich (`range()`) des aktuellen Knotens, weil
25
+ * `rangeOfCursor` vier Werte daraus liest und ast-grep bei jedem Aufruf ein
26
+ * verschachteltes Objekt neu baut.
27
+ *
28
+ * WAS ER NICHT KANN — und was der Adapter deshalb ehrlich sagen muss:
29
+ * - `nodeIsMissing` gibt es bei ast-grep nicht. Hier steht eine HEURISTIK:
30
+ * ein Blatt der Breite null. An diesem Repositorium war sie exakt (3 von 3
31
+ * MISSING-Knoten), sie bleibt aber eine Heuristik. `create-adapter.ts`
32
+ * schreibt das in JEDE davon erzeugte Diagnose.
33
+ * - `currentFieldName` gibt es nicht als Rueckrichtung. Wir fragen die
34
+ * Felder ab, die das Sprachprofil nennt, und vergleichen ueber `id()` —
35
+ * prozesslokal gueltig, nie in Ergebnisdaten (siehe `napi.ts`).
36
+ */
37
+ import type { SyntaxCursor, SyntaxNode, SyntaxPoint } from "../shared/syntax.js";
38
+ import type { SgNode } from "./napi.js";
39
+ /** Ein `SgNode` in der Form, die `shared/` erwartet. */
40
+ export declare class AstGrepSyntaxNode implements SyntaxNode {
41
+ /** Der rohe ast-grep-Knoten. Nur `syntax.ts` fasst ihn an. */
42
+ readonly sg: SgNode;
43
+ private readonly fieldNames;
44
+ constructor(
45
+ /** Der rohe ast-grep-Knoten. Nur `syntax.ts` fasst ihn an. */
46
+ sg: SgNode, fieldNames: readonly string[]);
47
+ get type(): string;
48
+ get text(): string;
49
+ get isNamed(): boolean;
50
+ get startIndex(): number;
51
+ get endIndex(): number;
52
+ get startPosition(): SyntaxPoint;
53
+ get endPosition(): SyntaxPoint;
54
+ get parent(): SyntaxNode | null;
55
+ get previousSibling(): SyntaxNode | null;
56
+ get children(): readonly SyntaxNode[];
57
+ get namedChildCount(): number;
58
+ namedChild(index: number): SyntaxNode | null;
59
+ childForFieldName(fieldName: string): SyntaxNode | null;
60
+ walk(): SyntaxCursor;
61
+ }
62
+ export declare class AstGrepCursor implements SyntaxCursor {
63
+ private readonly rootNode;
64
+ private readonly fieldNames;
65
+ private readonly levels;
66
+ private rangeCacheNode;
67
+ private rangeCacheValue;
68
+ constructor(rootNode: SgNode, fieldNames: readonly string[]);
69
+ private get node();
70
+ private get range();
71
+ get nodeType(): string;
72
+ get nodeText(): string;
73
+ get nodeIsMissing(): boolean;
74
+ get currentFieldName(): string | undefined;
75
+ /** Der Elternknoten der aktuellen Position, oder `null` auf der Wurzel. */
76
+ private parentNode;
77
+ get currentNode(): SyntaxNode;
78
+ get startPosition(): SyntaxPoint;
79
+ get endPosition(): SyntaxPoint;
80
+ get startIndex(): number;
81
+ get endIndex(): number;
82
+ gotoParent(): boolean;
83
+ gotoFirstChild(): boolean;
84
+ gotoLastChild(): boolean;
85
+ gotoNextSibling(): boolean;
86
+ gotoPreviousSibling(): boolean;
87
+ }
88
+ //# sourceMappingURL=syntax.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"syntax.d.ts","sourceRoot":"","sources":["../../../src/languages/astgrep-backend/syntax.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEjF,OAAO,KAAK,EAAE,MAAM,EAAS,MAAM,WAAW,CAAC;AAM/C,wDAAwD;AACxD,qBAAa,iBAAkB,YAAW,UAAU;IAEhD,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,EAAE,MAAM;IACnB,OAAO,CAAC,QAAQ,CAAC,UAAU;;IAF3B,8DAA8D;IACrD,EAAE,EAAE,MAAM,EACF,UAAU,EAAE,SAAS,MAAM,EAAE;IAGhD,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,aAAa,IAAI,WAAW,CAE/B;IAED,IAAI,WAAW,IAAI,WAAW,CAE7B;IAED,IAAI,MAAM,IAAI,UAAU,GAAG,IAAI,CAG9B;IAED,IAAI,eAAe,IAAI,UAAU,GAAG,IAAI,CAOvC;IAED,IAAI,QAAQ,IAAI,SAAS,UAAU,EAAE,CAEpC;IAED,IAAI,eAAe,IAAI,MAAM,CAE5B;IAED,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAK5C,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI;IAQvD,IAAI,IAAI,YAAY;CAGrB;AAQD,qBAAa,aAAc,YAAW,YAAY;IAM9C,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAN7B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,OAAO,CAAC,cAAc,CAAuB;IAC7C,OAAO,CAAC,eAAe,CAA6C;gBAGjD,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,SAAS,MAAM,EAAE;IAGhD,OAAO,KAAK,IAAI,GAIf;IAED,OAAO,KAAK,KAAK,GAOhB;IAED,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,aAAa,IAAI,OAAO,CAQ3B;IAED,IAAI,gBAAgB,IAAI,MAAM,GAAG,SAAS,CASzC;IAED,2EAA2E;IAC3E,OAAO,CAAC,UAAU;IAOlB,IAAI,WAAW,IAAI,UAAU,CAE5B;IAED,IAAI,aAAa,IAAI,WAAW,CAE/B;IAED,IAAI,WAAW,IAAI,WAAW,CAE7B;IAED,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,UAAU,IAAI,OAAO;IAMrB,cAAc,IAAI,OAAO;IAOzB,aAAa,IAAI,OAAO;IAOxB,eAAe,IAAI,OAAO;IAO1B,mBAAmB,IAAI,OAAO;CAM/B"}
@@ -0,0 +1,180 @@
1
+ function pointOf(pos) {
2
+ return { row: pos.line, column: pos.column };
3
+ }
4
+ /** Ein `SgNode` in der Form, die `shared/` erwartet. */
5
+ export class AstGrepSyntaxNode {
6
+ sg;
7
+ fieldNames;
8
+ constructor(
9
+ /** Der rohe ast-grep-Knoten. Nur `syntax.ts` fasst ihn an. */
10
+ sg, fieldNames) {
11
+ this.sg = sg;
12
+ this.fieldNames = fieldNames;
13
+ }
14
+ get type() {
15
+ return this.sg.kind();
16
+ }
17
+ get text() {
18
+ return this.sg.text();
19
+ }
20
+ get isNamed() {
21
+ return this.sg.isNamed();
22
+ }
23
+ get startIndex() {
24
+ return this.sg.range().start.index;
25
+ }
26
+ get endIndex() {
27
+ return this.sg.range().end.index;
28
+ }
29
+ get startPosition() {
30
+ return pointOf(this.sg.range().start);
31
+ }
32
+ get endPosition() {
33
+ return pointOf(this.sg.range().end);
34
+ }
35
+ get parent() {
36
+ const parent = this.sg.parent();
37
+ return parent === null ? null : new AstGrepSyntaxNode(parent, this.fieldNames);
38
+ }
39
+ get previousSibling() {
40
+ // Geprueft: ast-grep `prev()` liefert auch ANONYME Geschwister (das
41
+ // vorangehende `{` einer Blockklammer ebenso wie einen Kommentar). Waere
42
+ // es nur das vorherige benannte Geschwister, verschoebe sich die
43
+ // Doc-Bindung stillschweigend.
44
+ const previous = this.sg.prev();
45
+ return previous === null ? null : new AstGrepSyntaxNode(previous, this.fieldNames);
46
+ }
47
+ get children() {
48
+ return this.sg.children().map((child) => new AstGrepSyntaxNode(child, this.fieldNames));
49
+ }
50
+ get namedChildCount() {
51
+ return this.sg.namedChildren().length;
52
+ }
53
+ namedChild(index) {
54
+ const child = this.sg.namedChildren()[index];
55
+ return child === undefined ? null : new AstGrepSyntaxNode(child, this.fieldNames);
56
+ }
57
+ childForFieldName(fieldName) {
58
+ // Ein unbekannter Feldname liefert bei ast-grep `null` (geprueft), wirft
59
+ // also nicht — ein Profil darf nach Feldern fragen, die es in dieser
60
+ // Grammatik nicht gibt.
61
+ const field = this.sg.field(fieldName);
62
+ return field === null ? null : new AstGrepSyntaxNode(field, this.fieldNames);
63
+ }
64
+ walk() {
65
+ return new AstGrepCursor(this.sg, this.fieldNames);
66
+ }
67
+ }
68
+ export class AstGrepCursor {
69
+ rootNode;
70
+ fieldNames;
71
+ levels = [];
72
+ rangeCacheNode = null;
73
+ rangeCacheValue = null;
74
+ constructor(rootNode, fieldNames) {
75
+ this.rootNode = rootNode;
76
+ this.fieldNames = fieldNames;
77
+ }
78
+ get node() {
79
+ const level = this.levels[this.levels.length - 1];
80
+ if (level === undefined)
81
+ return this.rootNode;
82
+ return level.siblings[level.index];
83
+ }
84
+ get range() {
85
+ const node = this.node;
86
+ if (this.rangeCacheNode === node && this.rangeCacheValue !== null)
87
+ return this.rangeCacheValue;
88
+ const value = node.range();
89
+ this.rangeCacheNode = node;
90
+ this.rangeCacheValue = value;
91
+ return value;
92
+ }
93
+ get nodeType() {
94
+ return this.node.kind();
95
+ }
96
+ get nodeText() {
97
+ return this.node.text();
98
+ }
99
+ get nodeIsMissing() {
100
+ // HEURISTIK, kein Messwert: ast-grep kennt `ts_node_is_missing` nicht.
101
+ // Ein von der Fehlerkorrektur eingefuegter Knoten hat die Breite null und
102
+ // keine Kinder; die Wurzel ist ausgenommen (eine leere Datei ist kein
103
+ // fehlender Knoten).
104
+ if (this.levels.length === 0)
105
+ return false;
106
+ const range = this.range;
107
+ return range.start.index === range.end.index && this.node.isLeaf();
108
+ }
109
+ get currentFieldName() {
110
+ const parent = this.parentNode();
111
+ if (parent === null)
112
+ return undefined;
113
+ const nodeId = this.node.id();
114
+ for (const fieldName of this.fieldNames) {
115
+ const field = parent.field(fieldName);
116
+ if (field !== null && field.id() === nodeId)
117
+ return fieldName;
118
+ }
119
+ return undefined;
120
+ }
121
+ /** Der Elternknoten der aktuellen Position, oder `null` auf der Wurzel. */
122
+ parentNode() {
123
+ if (this.levels.length === 0)
124
+ return null;
125
+ if (this.levels.length === 1)
126
+ return this.rootNode;
127
+ const level = this.levels[this.levels.length - 2];
128
+ return level.siblings[level.index];
129
+ }
130
+ get currentNode() {
131
+ return new AstGrepSyntaxNode(this.node, this.fieldNames);
132
+ }
133
+ get startPosition() {
134
+ return pointOf(this.range.start);
135
+ }
136
+ get endPosition() {
137
+ return pointOf(this.range.end);
138
+ }
139
+ get startIndex() {
140
+ return this.range.start.index;
141
+ }
142
+ get endIndex() {
143
+ return this.range.end.index;
144
+ }
145
+ gotoParent() {
146
+ if (this.levels.length === 0)
147
+ return false;
148
+ this.levels.pop();
149
+ return true;
150
+ }
151
+ gotoFirstChild() {
152
+ const children = this.node.children();
153
+ if (children.length === 0)
154
+ return false;
155
+ this.levels.push({ siblings: children, index: 0 });
156
+ return true;
157
+ }
158
+ gotoLastChild() {
159
+ const children = this.node.children();
160
+ if (children.length === 0)
161
+ return false;
162
+ this.levels.push({ siblings: children, index: children.length - 1 });
163
+ return true;
164
+ }
165
+ gotoNextSibling() {
166
+ const level = this.levels[this.levels.length - 1];
167
+ if (level === undefined || level.index + 1 >= level.siblings.length)
168
+ return false;
169
+ level.index += 1;
170
+ return true;
171
+ }
172
+ gotoPreviousSibling() {
173
+ const level = this.levels[this.levels.length - 1];
174
+ if (level === undefined || level.index === 0)
175
+ return false;
176
+ level.index -= 1;
177
+ return true;
178
+ }
179
+ }
180
+ //# sourceMappingURL=syntax.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"syntax.js","sourceRoot":"","sources":["../../../src/languages/astgrep-backend/syntax.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Central builtin-language registration point.
3
+ *
4
+ * Dateibesitz (BUILD_PLAN §4): every path under `packages/parser-registry/`
5
+ * belongs to WP-06, EXCEPT `src/languages/python/**` and "the registration
6
+ * line" in this file, both owned by WP-09 (a later wave). WP-09 adds its
7
+ * import and ONE `registry.register(createPythonAdapter());` line below,
8
+ * without touching any line above it — that is the whole contract for
9
+ * adding a language without editing existing files/lines.
10
+ */
11
+ import type { LazyParserRegistry } from "../registry.js";
12
+ /** Registers every builtin language adapter. Registration is cheap and lazy — see `registry.ts`'s doc comment. */
13
+ export declare function registerBuiltinLanguages(registry: LazyParserRegistry): void;
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/languages/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAgBzD,kHAAkH;AAClH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI,CAyB3E"}
@@ -0,0 +1,37 @@
1
+ import { createBreadthAdapters, createGoAdapter, createRustAdapter, } from "./astgrep-backend/index.js";
2
+ import { createJavaScriptAdapter } from "./javascript/index.js";
3
+ import { createJsxAdapter } from "./jsx/index.js";
4
+ import { createProseAdapter } from "./prose/index.js";
5
+ import { createPythonAdapter } from "./python/index.js";
6
+ import { createStructuredTextAdapter } from "./structured-text/index.js";
7
+ import { createTsxAdapter } from "./tsx/index.js";
8
+ import { createTypeScriptAdapter } from "./typescript/index.js";
9
+ import { createVueAdapter } from "./vue/index.js";
10
+ /** Registers every builtin language adapter. Registration is cheap and lazy — see `registry.ts`'s doc comment. */
11
+ export function registerBuiltinLanguages(registry) {
12
+ registry.register(createTypeScriptAdapter());
13
+ registry.register(createJavaScriptAdapter());
14
+ registry.register(createTsxAdapter());
15
+ registry.register(createJsxAdapter());
16
+ registry.register(createVueAdapter());
17
+ registry.register(createPythonAdapter());
18
+ // WP-110/WP-217: Prosa und strukturierte Daten sind Stufe `text`, nicht
19
+ // `unsupported_language` (vision.md §1c, spec.md §7.2). Beide Adapter
20
+ // laden keine Grammatik und kosten bei der Registrierung nichts.
21
+ registry.register(createProseAdapter());
22
+ registry.register(createStructuredTextAdapter());
23
+ // WP-220: Go und Rust laufen ueber das ast-grep-Backend
24
+ // (`languages/astgrep-backend/README.md` sagt, warum GENAU diese Sprachen
25
+ // dort laufen und die JS/TS-Familie nicht). Die Anmeldung kostet nichts:
26
+ // weder `@ast-grep/napi` noch eine Grammatik wird dabei geladen — das
27
+ // passiert erst beim ersten Parse einer dieser Sprachen.
28
+ registry.register(createGoAdapter());
29
+ registry.register(createRustAdapter());
30
+ // WP-86: neun weitere Sprachen ueber DASSELBE Backend und DIESELBE
31
+ // Tabellenform — Java, C#, Ruby, PHP, Kotlin, C, C++, Swift, Bash. Auch sie
32
+ // laden beim Registrieren nichts.
33
+ for (const adapter of createBreadthAdapters()) {
34
+ registry.register(adapter);
35
+ }
36
+ }
37
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/languages/index.ts"],"names":[],"mappings":"AAYA,OAAO,EACL,qBAAqB,EACrB,eAAe,EACf,iBAAiB,GAClB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,kHAAkH;AAClH,MAAM,UAAU,wBAAwB,CAAC,QAA4B;IACnE,QAAQ,CAAC,QAAQ,CAAC,uBAAuB,EAAE,CAAC,CAAC;IAC7C,QAAQ,CAAC,QAAQ,CAAC,uBAAuB,EAAE,CAAC,CAAC;IAC7C,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,EAAE,CAAC,CAAC;IACtC,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,EAAE,CAAC,CAAC;IACtC,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,EAAE,CAAC,CAAC;IACtC,QAAQ,CAAC,QAAQ,CAAC,mBAAmB,EAAE,CAAC,CAAC;IACzC,wEAAwE;IACxE,sEAAsE;IACtE,iEAAiE;IACjE,QAAQ,CAAC,QAAQ,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACxC,QAAQ,CAAC,QAAQ,CAAC,2BAA2B,EAAE,CAAC,CAAC;IACjD,wDAAwD;IACxD,0EAA0E;IAC1E,yEAAyE;IACzE,sEAAsE;IACtE,yDAAyD;IACzD,QAAQ,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC,CAAC;IACrC,QAAQ,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACvC,mEAAmE;IACnE,4EAA4E;IAC5E,kCAAkC;IAClC,KAAK,MAAM,OAAO,IAAI,qBAAqB,EAAE,EAAE,CAAC;QAC9C,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;AACH,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { LanguageAdapter } from "@untangle-code/domain";
2
+ /** JavaScript `LanguageAdapter` (`.js`, `.mjs`, `.cjs`), support level "deep" (spec.md §7.2). */
3
+ export declare function createJavaScriptAdapter(): LanguageAdapter;
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/languages/javascript/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAK7D,iGAAiG;AACjG,wBAAgB,uBAAuB,IAAI,eAAe,CAEzD"}
@@ -0,0 +1,7 @@
1
+ import { createTreeSitterAdapter } from "../shared/create-adapter.js";
2
+ import { JAVASCRIPT_DIALECT } from "../shared/dialect.js";
3
+ /** JavaScript `LanguageAdapter` (`.js`, `.mjs`, `.cjs`), support level "deep" (spec.md §7.2). */
4
+ export function createJavaScriptAdapter() {
5
+ return createTreeSitterAdapter(JAVASCRIPT_DIALECT);
6
+ }
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/languages/javascript/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,iGAAiG;AACjG,MAAM,UAAU,uBAAuB;IACrC,OAAO,uBAAuB,CAAC,kBAAkB,CAAC,CAAC;AACrD,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { LanguageAdapter } from "@untangle-code/domain";
2
+ /** JSX `LanguageAdapter` (`.jsx`), support level "deep" (spec.md §7.2). */
3
+ export declare function createJsxAdapter(): LanguageAdapter;
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/languages/jsx/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAK7D,2EAA2E;AAC3E,wBAAgB,gBAAgB,IAAI,eAAe,CAElD"}
@@ -0,0 +1,7 @@
1
+ import { createTreeSitterAdapter } from "../shared/create-adapter.js";
2
+ import { JSX_DIALECT } from "../shared/dialect.js";
3
+ /** JSX `LanguageAdapter` (`.jsx`), support level "deep" (spec.md §7.2). */
4
+ export function createJsxAdapter() {
5
+ return createTreeSitterAdapter(JSX_DIALECT);
6
+ }
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/languages/jsx/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,2EAA2E;AAC3E,MAAM,UAAU,gBAAgB;IAC9B,OAAO,uBAAuB,CAAC,WAAW,CAAC,CAAC;AAC9C,CAAC"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Prosa-`LanguageAdapter` (vision.md §1c, WP-110/WP-217).
3
+ *
4
+ * WAS ER LOEST
5
+ *
6
+ * Vor ihm kannte `getAdapterForPath("spec.md")` nur `null`. Jede Stelle, die
7
+ * das fragt — `untangle complexity`, der Watcher, der Selbstanalyse-Report —
8
+ * schrieb daraufhin `unsupported_language` ins Skip-Ledger. Bei der ersten
9
+ * Selbstanalyse dieses Repositories waren das allein 35 Markdown-Dateien,
10
+ * bei 654 KB Markdown gegen 2.006 KB TypeScript. vision.md §1c sagt genau
11
+ * das Gegenteil: Prosa ist erstklassiger Inhalt, und `text` ist kein
12
+ * abgeschwaechtes `deep`.
13
+ *
14
+ * WAS ER LIEFERT — UND WAS BEWUSST NICHT
15
+ *
16
+ * - `extractChunks` liefert ueberschriftenbewusste Abschnitte mit
17
+ * Breadcrumb. Die Gliederung ist NICHT neu gebaut: es ist dieselbe
18
+ * `outlineMarkdown()`, die `@untangle-code/context-artifacts` schon fuer
19
+ * konfigurierte Markdown-Artefakte benutzt hat (WP-110 hat sie nach
20
+ * domain gehoben). Damit bekommt eine gewoehnliche `.md`-Datei im Chunker
21
+ * die AST-Strategie statt `line_fallback` — statt willkuerlicher
22
+ * Zeilenfenster also dieselben semantischen Einheiten wie eine
23
+ * konfigurierte.
24
+ * - `extractSymbols` liefert je Abschnitt ein Symbol der Art `"section"`.
25
+ * Das ist die Zuordnung, ueber die der Chunker `symbolId`/`symbolFqn` an
26
+ * jeden Abschnitt und an jedes Fragment eines zu grossen Abschnitts
27
+ * haengt (spec.md §8.5).
28
+ * - `extractImports` liefert relative Dateiverweise. Ein Verweis von
29
+ * `vision.md` auf `spec.md` IST eine Kante im Dateigraphen; sie zu
30
+ * verschweigen waere derselbe Verlust wie ein verschwiegener Import.
31
+ * - `extractCalls` liefert NICHTS. Prosa hat keine Aufrufe.
32
+ * - `computeComplexity` liefert LEERE Facts: keine `symbolScopes`, keine
33
+ * `decisions`. Das ist der Kern von WP-217 und keine Nachlaessigkeit —
34
+ * zyklomatische Komplexitaet ueber ein Dokument ist keine schlechte Zahl,
35
+ * sondern gar keine. Wer Prosa messen will, nimmt die Prosa-Metriken aus
36
+ * `@untangle-code/complexity` (`computeProseMetrics`), die als eigene
37
+ * Metrikfamilie (`ProseNumberV1`) gefuehrt werden und deshalb strukturell
38
+ * nie in eine Code-Summe geraten koennen.
39
+ * - `tokenizeForHalstead` liefert NICHTS: Halstead zaehlt Operatoren und
40
+ * Operanden; in Prosa gibt es beides nicht.
41
+ *
42
+ * `parse()` kann nicht scheitern. Markdown hat keine Syntaxfehler — jeder
43
+ * Text ist gueltiges Markdown —, deshalb ist `parseQuality` immer
44
+ * `"complete"` und `ast` nie `null`. Das ist eine Aussage ueber das Format,
45
+ * keine Beschoenigung.
46
+ */
47
+ import type { LanguageAdapter } from "@untangle-code/domain";
48
+ /** Sprachkennung dieses Adapters; identisch mit der Scanner-Klassifikation fuer `.md`. */
49
+ export declare const PROSE_LANGUAGE_ID = "markdown";
50
+ /** Symbolart eines Prosa-Abschnitts. Ein Abschnitt ist keine Funktion und heisst auch nicht so. */
51
+ export declare const PROSE_SYMBOL_KIND = "section";
52
+ export declare function createProseAdapter(): LanguageAdapter;
53
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/languages/prose/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,OAAO,KAAK,EAKV,eAAe,EAQhB,MAAM,uBAAuB,CAAC;AAW/B,0FAA0F;AAC1F,eAAO,MAAM,iBAAiB,aAAa,CAAC;AAE5C,mGAAmG;AACnG,eAAO,MAAM,iBAAiB,YAAY,CAAC;AAkF3C,wBAAgB,kBAAkB,IAAI,eAAe,CAiHpD"}