@untangle-code/parser-registry 0.0.0-stage → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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,101 @@
1
+ /**
2
+ * Die Adapterfabrik des ast-grep-Backends.
3
+ *
4
+ * Sie baut aus einer Sprachtabelle (`shared/table-profile.ts`) einen
5
+ * vollstaendigen `LanguageAdapter` (domain `analysis.ts`) — mit DEMSELBEN
6
+ * Walk, DENSELBEN Diagnosen, DENSELBEN Fingerabdruecken und DEMSELBEN
7
+ * Regionenbau wie der tree-sitter-Weg. `chunker`, `complexity`, `file-graph`
8
+ * und `symbol-graph` koennen nicht erkennen, welches Backend gelaufen ist;
9
+ * genau das ist die Zusage.
10
+ *
11
+ * WAS SICH ZWISCHEN DEN BACKENDS UNTERSCHEIDET, und wo es steht:
12
+ *
13
+ * 1. GROESSENGRENZE. Die 32-KiB-Puffergrenze der nativen tree-sitter-Bindung
14
+ * (`shared/parse-limits.ts`, WP-215) gibt es hier NICHT: ast-grep nimmt
15
+ * 84 KB, 167 KB, 1 MB und 4 MB ohne jede Option. Dafuer kostet der Walk
16
+ * mehr Speicher, also gilt eine EIGENE, niedrigere Obergrenze
17
+ * ({@link MAX_ASTGREP_SOURCE_BYTES}) — begruendet unten.
18
+ *
19
+ * 2. FEHLENDE KNOTEN. tree-sitter misst sie (`nodeIsMissing`), ast-grep hat
20
+ * dafuer nichts. Der Cursor liefert hier eine Heuristik, und JEDE daraus
21
+ * entstehende Diagnose sagt das in ihrem Text
22
+ * (`collectParseDiagnostics(..., "heuristic")`). `missingNodeCount` bleibt
23
+ * eine Zahl — aber eine, deren Herkunft in der Ausgabe steht (E4).
24
+ *
25
+ * 3. VERSIONIERUNG. Ein anderer Parser erzeugt eine andere AST-Form und damit
26
+ * andere Chunk-IDs und Fingerabdruecke. Sichtbar wird das ueber
27
+ * `parserVersionForLanguage` (domain `versions.ts`), das fuer jede
28
+ * ast-grep-Sprache eine eigene `parser_version` liefert. Ohne sie lieferten
29
+ * die inhaltsadressierten Caches aus WP-100 stillschweigend Altes.
30
+ */
31
+ import type { LanguageAdapter, SourceFile } from "@untangle-code/domain";
32
+ import type { LanguageProfile } from "../shared/profile.js";
33
+ import type { SyntaxNode } from "../shared/syntax.js";
34
+ import type { LanguageKindTable } from "../shared/table-profile.js";
35
+ /**
36
+ * Obergrenze fuer eine einzelne Quelldatei, in Bytes — 5 MiB.
37
+ *
38
+ * WARUM NIEDRIGER ALS BEIM TREE-SITTER-WEG (8 MiB, `shared/parse-limits.ts`):
39
+ * der Walk kostet hier mehr Speicher, weil jeder Abstieg ueber `children()`
40
+ * geht und dabei je Knoten JS-Wrapper entstehen. SELBST GEMESSEN ueber diesen
41
+ * Adapter (`parse()` + `computeComplexity()`, generierter Go-Quelltext, je
42
+ * Groesse ein EIGENER Prozess, `maxRSS` aus `process.resourceUsage()`,
43
+ * darwin/arm64, Node 26.7.0):
44
+ *
45
+ * Bytes Knoten parse walk Spitzen-RSS
46
+ * 1 MiB 490.959 1.897 ms 12.289 ms 1.048 MiB
47
+ * 2 MiB 976.521 3.087 ms 11.699 ms 2.719 MiB
48
+ * 4 MiB 1.937.712 5.803 ms 45.863 ms 2.098 MiB
49
+ *
50
+ * Die RSS-Spalte ist ERKENNBAR VERRAUSCHT (4 MiB unter 2 MiB), weil die
51
+ * napi-Finalisierer auf der Ereignisschleife laufen und ein synchroner Lauf
52
+ * sie nicht drankommen laesst — dieselbe Beobachtung machte die Erkundung.
53
+ * Verlaesslich ist nur die Groessenordnung: rund ein Gigabyte je Megabyte
54
+ * Quelltext, und damit rund das Vierfache des tree-sitter-Weges.
55
+ *
56
+ * DIE GRENZE IST DESHALB DIE SCANNERGRENZE: 5 MiB, genau die Vorgabe aus
57
+ * `packages/scanner/src/discovery.ts`. Damit ist der Parser bei
58
+ * Standardkonfiguration NIE die engere, unausgesprochene Grenze — jede Datei,
59
+ * die der Scanner durchlaesst, nimmt er auch an —, und zugleich bleibt der
60
+ * Speicherbedarf im messbaren Bereich. Wer die Scannergrenze bewusst anhebt,
61
+ * bekommt hier einen benannten Grund (`file_too_large`) statt eines Absturzes.
62
+ *
63
+ * NICHT GELOEST, und hier ausdruecklich vermerkt: 12 bis 46 Sekunden Walk je
64
+ * Megabyte sind ein eigener Leistungsdefekt dieses Weges (der tree-sitter-Weg
65
+ * misst an vergleichbarer Stelle rund sechs Sekunden je Megabyte). Diese
66
+ * Grenze verhindert nur, dass er in einen Speicherabsturz umschlaegt.
67
+ */
68
+ export declare const MAX_ASTGREP_SOURCE_BYTES: number;
69
+ /** Welches npm-Paket die Grammatik einer Sprache liefert. */
70
+ export interface AstGrepLanguageSource {
71
+ /** Name, unter dem ast-grep die Sprache fuehrt (`parse(name, ...)`). */
72
+ languageName: string;
73
+ /** Sprachpaket, EINZELN aufgenommen — nie eine Sammelabhaengigkeit (450 MB fuer 22 Sprachen). */
74
+ moduleName: string;
75
+ }
76
+ /**
77
+ * Haken fuer eine Sprache, deren Regeln eine Tabelle NICHT ausdrueckt.
78
+ *
79
+ * WOFUER, an einem echten Fall: Python bindet den Doc-Kommentar nicht an ein
80
+ * Kommentarzeichen, sondern an die erste Anweisung des Rumpfes; seine
81
+ * Sichtbarkeit steht in einer Namenskonvention statt in einem Modifikator;
82
+ * und `__all__` gilt je DATEI, nicht je Knoten. Das erste und zweite koennte
83
+ * eine Tabelle notfalls noch beschreiben, das dritte nicht: es braucht einen
84
+ * Zustand, den es erst gibt, wenn die Datei geparst ist.
85
+ *
86
+ * Deshalb DIESER Zuschnitt und kein anderer: der Haken bekommt das fertige
87
+ * Tabellenprofil, den Wurzelknoten und die Datei und darf daraus ein
88
+ * VERFEINERTES Profil bauen. Er laeuft genau einmal je Parse — nicht je
89
+ * Knoten —, und wer ihn nicht setzt, bezahlt nichts.
90
+ */
91
+ export interface AstGrepAdapterHooks {
92
+ readonly profileForFile?: (base: LanguageProfile, root: SyntaxNode, file: SourceFile) => LanguageProfile;
93
+ }
94
+ /**
95
+ * Baut einen `LanguageAdapter` ueber ast-grep. Die Anmeldung der Sprache
96
+ * kostet hier nichts: kein `require`, keine Grammatik, kein natives Modul —
97
+ * das passiert erst beim ersten `parse()` einer ast-grep-Sprache, und dann
98
+ * fuer alle angemeldeten auf einmal (`napi.ts`, Eigenheit 1).
99
+ */
100
+ export declare function createAstGrepAdapter(table: LanguageKindTable, source: AstGrepLanguageSource, hooks?: AstGrepAdapterHooks): LanguageAdapter;
101
+ //# sourceMappingURL=adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/languages/astgrep-backend/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,OAAO,KAAK,EAIV,eAAe,EAKf,UAAU,EACX,MAAM,uBAAuB,CAAC;AAU/B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAMpE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,eAAO,MAAM,wBAAwB,QAAkB,CAAC;AA+BxD,6DAA6D;AAC7D,MAAM,WAAW,qBAAqB;IACpC,wEAAwE;IACxE,YAAY,EAAE,MAAM,CAAC;IACrB,iGAAiG;IACjG,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,cAAc,CAAC,EAAE,CACxB,IAAI,EAAE,eAAe,EACrB,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,UAAU,KACb,eAAe,CAAC;CACtB;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,iBAAiB,EACxB,MAAM,EAAE,qBAAqB,EAC7B,KAAK,GAAE,mBAAwB,GAC9B,eAAe,CA4EjB"}
@@ -0,0 +1,130 @@
1
+ import { AdapterParseError } from "@untangle-code/domain";
2
+ import { buildByteOffsetTable } from "../../text/byte-offset-table.js";
3
+ import { buildFileRegion } from "../shared/chunks.js";
4
+ import { analyzeTree } from "../shared/engine.js";
5
+ import { extractedSymbolsOf } from "../shared/extract-symbols.js";
6
+ import { collectParseDiagnostics } from "../shared/parse-diagnostics.js";
7
+ import { createTableProfile, fieldNamesOf } from "../shared/table-profile.js";
8
+ import { astGrepParse, registerAstGrepLanguage } from "./napi.js";
9
+ import { AstGrepSyntaxNode } from "./syntax.js";
10
+ /**
11
+ * Obergrenze fuer eine einzelne Quelldatei, in Bytes — 5 MiB.
12
+ *
13
+ * WARUM NIEDRIGER ALS BEIM TREE-SITTER-WEG (8 MiB, `shared/parse-limits.ts`):
14
+ * der Walk kostet hier mehr Speicher, weil jeder Abstieg ueber `children()`
15
+ * geht und dabei je Knoten JS-Wrapper entstehen. SELBST GEMESSEN ueber diesen
16
+ * Adapter (`parse()` + `computeComplexity()`, generierter Go-Quelltext, je
17
+ * Groesse ein EIGENER Prozess, `maxRSS` aus `process.resourceUsage()`,
18
+ * darwin/arm64, Node 26.7.0):
19
+ *
20
+ * Bytes Knoten parse walk Spitzen-RSS
21
+ * 1 MiB 490.959 1.897 ms 12.289 ms 1.048 MiB
22
+ * 2 MiB 976.521 3.087 ms 11.699 ms 2.719 MiB
23
+ * 4 MiB 1.937.712 5.803 ms 45.863 ms 2.098 MiB
24
+ *
25
+ * Die RSS-Spalte ist ERKENNBAR VERRAUSCHT (4 MiB unter 2 MiB), weil die
26
+ * napi-Finalisierer auf der Ereignisschleife laufen und ein synchroner Lauf
27
+ * sie nicht drankommen laesst — dieselbe Beobachtung machte die Erkundung.
28
+ * Verlaesslich ist nur die Groessenordnung: rund ein Gigabyte je Megabyte
29
+ * Quelltext, und damit rund das Vierfache des tree-sitter-Weges.
30
+ *
31
+ * DIE GRENZE IST DESHALB DIE SCANNERGRENZE: 5 MiB, genau die Vorgabe aus
32
+ * `packages/scanner/src/discovery.ts`. Damit ist der Parser bei
33
+ * Standardkonfiguration NIE die engere, unausgesprochene Grenze — jede Datei,
34
+ * die der Scanner durchlaesst, nimmt er auch an —, und zugleich bleibt der
35
+ * Speicherbedarf im messbaren Bereich. Wer die Scannergrenze bewusst anhebt,
36
+ * bekommt hier einen benannten Grund (`file_too_large`) statt eines Absturzes.
37
+ *
38
+ * NICHT GELOEST, und hier ausdruecklich vermerkt: 12 bis 46 Sekunden Walk je
39
+ * Megabyte sind ein eigener Leistungsdefekt dieses Weges (der tree-sitter-Weg
40
+ * misst an vergleichbarer Stelle rund sechs Sekunden je Megabyte). Diese
41
+ * Grenze verhindert nur, dass er in einen Speicherabsturz umschlaegt.
42
+ */
43
+ export const MAX_ASTGREP_SOURCE_BYTES = 5 * 1024 * 1024;
44
+ const analysisCache = new WeakMap();
45
+ /**
46
+ * Wie in `shared/create-adapter.ts`: `ComplexityFacts.parseDiagnostics` ist der
47
+ * EINZIGE Kanal, ueber den nachgelagerte Rechnungen von einem beschaedigten
48
+ * Baum erfahren. `analyzeTree` sieht die Diagnosen nicht — sie entstehen in
49
+ * `parse()` und haengen am `ParsedAst`.
50
+ */
51
+ function getAnalysis(ast) {
52
+ const cached = analysisCache.get(ast);
53
+ if (cached !== undefined)
54
+ return cached;
55
+ const root = ast.root;
56
+ const analyzed = analyzeTree(root.root, root.ctx, root.fileId, root.profile);
57
+ const result = {
58
+ ...analyzed,
59
+ facts: { ...analyzed.facts, parseDiagnostics: ast.diagnostics },
60
+ };
61
+ analysisCache.set(ast, result);
62
+ return result;
63
+ }
64
+ /**
65
+ * Baut einen `LanguageAdapter` ueber ast-grep. Die Anmeldung der Sprache
66
+ * kostet hier nichts: kein `require`, keine Grammatik, kein natives Modul —
67
+ * das passiert erst beim ersten `parse()` einer ast-grep-Sprache, und dann
68
+ * fuer alle angemeldeten auf einmal (`napi.ts`, Eigenheit 1).
69
+ */
70
+ export function createAstGrepAdapter(table, source, hooks = {}) {
71
+ const profile = createTableProfile(table);
72
+ const fieldNames = fieldNamesOf(table);
73
+ registerAstGrepLanguage(source.languageName, source.moduleName);
74
+ return {
75
+ languageId: table.languageId,
76
+ extensions: [...table.extensions],
77
+ supportLevel: table.supportLevel,
78
+ parse(file) {
79
+ const byteLength = Buffer.byteLength(file.content, "utf8");
80
+ if (byteLength > MAX_ASTGREP_SOURCE_BYTES) {
81
+ throw new AdapterParseError("file_too_large", `Source text with ${String(byteLength)} bytes exceeds the ast-grep parser limit of ` +
82
+ `${String(MAX_ASTGREP_SOURCE_BYTES)} Bytes.`, {
83
+ measurements: { sizeBytes: byteLength, limitBytes: MAX_ASTGREP_SOURCE_BYTES },
84
+ });
85
+ }
86
+ // KEIN `bufferSize` und keine 32-KiB-Grenze: die gibt es nur in der
87
+ // nativen tree-sitter-Bindung (`shared/parse-limits.ts`). Nachgeprueft
88
+ // an 84 KB, 167 KB, 1 MB und 4 MB — ast-grep nimmt sie ohne Option an.
89
+ const rootNode = astGrepParse(source.languageName, file.content);
90
+ const root = new AstGrepSyntaxNode(rootNode, fieldNames);
91
+ const byteTable = buildByteOffsetTable(file.content);
92
+ const ctx = { sourceText: file.content, byteTable };
93
+ const { parseQuality, diagnostics, errorNodeCount, missingNodeCount } = collectParseDiagnostics(root, ctx, "heuristic");
94
+ if (parseQuality === "failed") {
95
+ return { parseQuality, ast: null, diagnostics, errorNodeCount, missingNodeCount };
96
+ }
97
+ const fileProfile = hooks.profileForFile?.(profile, root, file) ?? profile;
98
+ const astRoot = { root, ctx, fileId: file.fileId, profile: fileProfile };
99
+ return {
100
+ parseQuality,
101
+ ast: { languageId: table.languageId, parseQuality, root: astRoot, diagnostics },
102
+ diagnostics,
103
+ errorNodeCount,
104
+ missingNodeCount,
105
+ };
106
+ },
107
+ extractChunks(ast) {
108
+ const { scopeTree } = getAnalysis(ast);
109
+ const root = ast.root;
110
+ return [buildFileRegion(scopeTree, root.ctx, root.profile)];
111
+ },
112
+ extractSymbols(ast) {
113
+ return extractedSymbolsOf(getAnalysis(ast).scopeTree);
114
+ },
115
+ extractImports(ast) {
116
+ return getAnalysis(ast).imports;
117
+ },
118
+ extractCalls(ast) {
119
+ return getAnalysis(ast).calls;
120
+ },
121
+ computeComplexity(ast) {
122
+ return getAnalysis(ast).facts;
123
+ },
124
+ tokenizeForHalstead(ast) {
125
+ const { facts } = getAnalysis(ast);
126
+ return { operators: facts.operators, operands: facts.operands };
127
+ },
128
+ };
129
+ }
130
+ //# sourceMappingURL=adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/languages/astgrep-backend/adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Oeffentliche Einstiegspunkte des ast-grep-Backends.
3
+ *
4
+ * WELCHE SPRACHE UEBER WELCHEN WEG LAEUFT, steht in `README.md` neben dieser
5
+ * Datei — mit der Messung, auf der die Aufteilung beruht.
6
+ */
7
+ import type { LanguageAdapter } from "@untangle-code/domain";
8
+ export { createAstGrepAdapter, MAX_ASTGREP_SOURCE_BYTES } from "./adapter.js";
9
+ export type { AstGrepAdapterHooks, AstGrepLanguageSource } from "./adapter.js";
10
+ export { GO_SOURCE, GO_TABLE, RUST_SOURCE, RUST_TABLE } from "./languages.js";
11
+ export { AST_GREP_LANGUAGES } from "./lang/index.js";
12
+ export type { AstGrepLanguage } from "./lang/index.js";
13
+ export { astGrepLanguageStates, astGrepLanguageStatus } from "./napi.js";
14
+ export type { AstGrepLanguageStatus } from "./napi.js";
15
+ /** Go-Adapter ueber ast-grep (`@ast-grep/lang-go`). */
16
+ export declare function createGoAdapter(): LanguageAdapter;
17
+ /** Rust-Adapter ueber ast-grep (`@ast-grep/lang-rust`). */
18
+ export declare function createRustAdapter(): LanguageAdapter;
19
+ /**
20
+ * Die WEITEREN Sprachen aus WP-86 (Java, C#, Ruby, PHP, Kotlin, C, C++, Swift,
21
+ * Bash) — je eine Tabelle unter `lang/`, kein Motor.
22
+ *
23
+ * Sie kommen als LISTE und nicht als neun einzelne Fabriken, damit
24
+ * `languages/index.ts` mit EINER Schleife auskommt: wer die zehnte Sprache
25
+ * aufnimmt, schreibt eine Tabelle und eine Zeile in `lang/index.ts` — und
26
+ * faesst weder diese Datei noch die Registrierung an.
27
+ */
28
+ export declare function createBreadthAdapters(): LanguageAdapter[];
29
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/languages/astgrep-backend/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAM7D,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAC9E,YAAY,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAC/E,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AACzE,YAAY,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAEvD,uDAAuD;AACvD,wBAAgB,eAAe,IAAI,eAAe,CAEjD;AAED,2DAA2D;AAC3D,wBAAgB,iBAAiB,IAAI,eAAe,CAEnD;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,IAAI,eAAe,EAAE,CAIzD"}
@@ -0,0 +1,28 @@
1
+ import { createAstGrepAdapter } from "./adapter.js";
2
+ import { AST_GREP_LANGUAGES } from "./lang/index.js";
3
+ import { GO_SOURCE, GO_TABLE, RUST_SOURCE, RUST_TABLE } from "./languages.js";
4
+ export { createAstGrepAdapter, MAX_ASTGREP_SOURCE_BYTES } from "./adapter.js";
5
+ export { GO_SOURCE, GO_TABLE, RUST_SOURCE, RUST_TABLE } from "./languages.js";
6
+ export { AST_GREP_LANGUAGES } from "./lang/index.js";
7
+ export { astGrepLanguageStates, astGrepLanguageStatus } from "./napi.js";
8
+ /** Go-Adapter ueber ast-grep (`@ast-grep/lang-go`). */
9
+ export function createGoAdapter() {
10
+ return createAstGrepAdapter(GO_TABLE, GO_SOURCE);
11
+ }
12
+ /** Rust-Adapter ueber ast-grep (`@ast-grep/lang-rust`). */
13
+ export function createRustAdapter() {
14
+ return createAstGrepAdapter(RUST_TABLE, RUST_SOURCE);
15
+ }
16
+ /**
17
+ * Die WEITEREN Sprachen aus WP-86 (Java, C#, Ruby, PHP, Kotlin, C, C++, Swift,
18
+ * Bash) — je eine Tabelle unter `lang/`, kein Motor.
19
+ *
20
+ * Sie kommen als LISTE und nicht als neun einzelne Fabriken, damit
21
+ * `languages/index.ts` mit EINER Schleife auskommt: wer die zehnte Sprache
22
+ * aufnimmt, schreibt eine Tabelle und eine Zeile in `lang/index.ts` — und
23
+ * faesst weder diese Datei noch die Registrierung an.
24
+ */
25
+ export function createBreadthAdapters() {
26
+ return AST_GREP_LANGUAGES.map((language) => createAstGrepAdapter(language.table, language.source));
27
+ }
28
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/languages/astgrep-backend/index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE9E,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAE9E,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAErD,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAGzE,uDAAuD;AACvD,MAAM,UAAU,eAAe;IAC7B,OAAO,oBAAoB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;AACnD,CAAC;AAED,2DAA2D;AAC3D,MAAM,UAAU,iBAAiB;IAC/B,OAAO,oBAAoB,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;AACvD,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,qBAAqB;IACnC,OAAO,kBAAkB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CACzC,oBAAoB,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CACtD,CAAC;AACJ,CAAC"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Bash (WP-86).
3
+ *
4
+ * WAS EINE SHELL AN SYMBOLEN HAT: Funktionen. Mehr nicht — keine Klassen,
5
+ * keine Typen, keine Namensraeume. Das ist kein Mangel des Adapters, sondern
6
+ * der Sprache, und deshalb steht hier eine kurze Tabelle statt einer
7
+ * erfundenen Struktur.
8
+ *
9
+ * VARIABLENZUWEISUNGEN AUF OBERSTER EBENE SIND KEINE SYMBOLE. In einer Shell
10
+ * ist jede Zuweisung eine Anweisung; die Grenze zwischen "Konstante" und
11
+ * "Zwischenwert" steht nicht im Syntaxbaum. `MAX_RETRIES=3` und
12
+ * `attempt=$((attempt + 1))` als gleichrangige Symbole zu fuehren waere eine
13
+ * falsche Aussage ueber die Datei.
14
+ *
15
+ * ENTSCHEIDUNGSPUNKTE (spec.md §16.2/§16.3):
16
+ * - `while_statement` deckt AUCH `until` ab — dieselbe Knotenart mit anderem
17
+ * Schluesselwort.
18
+ * - `elif_clause` ist eine eigene Knotenart und damit direkt ein `else_if`.
19
+ * - `case_item` zaehlt als `case`. Der Auffangzweig `*)` zaehlt NICHT: sein
20
+ * Muster ist genau `*` (`caseExcludeFirstChildText`).
21
+ * - `&&`/`||` zwischen Kommandos stehen in einem `list`-Knoten und tragen
22
+ * den Operator als anonymes Kind (`anonymousOperatorKinds`). Sie zaehlen
23
+ * nur ERWEITERT. In der Shell ist `cmd || exit 1` idiomatisch ein
24
+ * Fehlerpfad und kein reiner Kurzschluss; die konservative Auslegung haelt
25
+ * die Zahl mit den anderen zehn Sprachen vergleichbar.
26
+ * - PIPES (`|`) zaehlen NICHT: sie verketten, sie verzweigen nicht.
27
+ *
28
+ * IMPORTE: `source datei` und `. datei` sind gewoehnliche Kommandos, keine
29
+ * eigene Knotenart. Die Tabelle koennte sie nicht von einer selbstgeschriebenen
30
+ * Funktion gleichen Namens unterscheiden — dieser Adapter meldet deshalb KEINE
31
+ * Importe. Wer sie braucht, sieht sie in `extractCalls` als Aufruf von
32
+ * `source`.
33
+ */
34
+ import type { LanguageKindTable } from "../../shared/table-profile.js";
35
+ import type { AstGrepLanguageSource } from "../adapter.js";
36
+ export declare const BASH_SOURCE: AstGrepLanguageSource;
37
+ export declare const BASH_TABLE: LanguageKindTable;
38
+ //# sourceMappingURL=bash.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bash.d.ts","sourceRoot":"","sources":["../../../../src/languages/astgrep-backend/lang/bash.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAE3D,eAAO,MAAM,WAAW,EAAE,qBAGzB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,iBAoCxB,CAAC"}
@@ -0,0 +1,42 @@
1
+ export const BASH_SOURCE = {
2
+ languageName: "bash",
3
+ moduleName: "@ast-grep/lang-bash",
4
+ };
5
+ export const BASH_TABLE = {
6
+ languageId: "shell",
7
+ extensions: [".sh", ".bash", ".zsh", ".ksh"],
8
+ supportLevel: "deep",
9
+ commentKinds: ["comment"],
10
+ stringContainerKinds: ["string", "raw_string", "ansi_c_string", "heredoc_body"],
11
+ identifierLeafKinds: [
12
+ "variable_name",
13
+ "special_variable_name",
14
+ "word",
15
+ "extglob_pattern",
16
+ "simple_expansion",
17
+ ],
18
+ numberLeafKinds: ["number"],
19
+ scopes: [{ kinds: ["function_definition"], scopeKind: "function", nameKinds: ["word"] }],
20
+ decisions: {
21
+ ifKinds: ["if_statement"],
22
+ elseIfKinds: ["elif_clause"],
23
+ loopKinds: ["while_statement", "for_statement", "c_style_for_statement"],
24
+ switchKinds: ["case_statement"],
25
+ caseKinds: ["case_item"],
26
+ caseExcludeFirstChildText: "*",
27
+ anonymousOperatorKinds: ["list"],
28
+ logicalAndOperators: ["&&"],
29
+ logicalOrOperators: ["||"],
30
+ jumpKinds: [],
31
+ blockKinds: ["compound_statement", "do_group"],
32
+ },
33
+ // Siehe Modulkopf: die Shell hat keine Importanweisung.
34
+ imports: { kinds: [] },
35
+ calls: {
36
+ kinds: ["command"],
37
+ functionField: "name",
38
+ },
39
+ declarationParentKinds: [],
40
+ fieldNames: ["name"],
41
+ };
42
+ //# sourceMappingURL=bash.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bash.js","sourceRoot":"","sources":["../../../../src/languages/astgrep-backend/lang/bash.ts"],"names":[],"mappings":"AAoCA,MAAM,CAAC,MAAM,WAAW,GAA0B;IAChD,YAAY,EAAE,MAAM;IACpB,UAAU,EAAE,qBAAqB;CAClC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAsB;IAC3C,UAAU,EAAE,OAAO;IACnB,UAAU,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC;IAC5C,YAAY,EAAE,MAAM;IACpB,YAAY,EAAE,CAAC,SAAS,CAAC;IACzB,oBAAoB,EAAE,CAAC,QAAQ,EAAE,YAAY,EAAE,eAAe,EAAE,cAAc,CAAC;IAC/E,mBAAmB,EAAE;QACnB,eAAe;QACf,uBAAuB;QACvB,MAAM;QACN,iBAAiB;QACjB,kBAAkB;KACnB;IACD,eAAe,EAAE,CAAC,QAAQ,CAAC;IAC3B,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,qBAAqB,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;IACxF,SAAS,EAAE;QACT,OAAO,EAAE,CAAC,cAAc,CAAC;QACzB,WAAW,EAAE,CAAC,aAAa,CAAC;QAC5B,SAAS,EAAE,CAAC,iBAAiB,EAAE,eAAe,EAAE,uBAAuB,CAAC;QACxE,WAAW,EAAE,CAAC,gBAAgB,CAAC;QAC/B,SAAS,EAAE,CAAC,WAAW,CAAC;QACxB,yBAAyB,EAAE,GAAG;QAC9B,sBAAsB,EAAE,CAAC,MAAM,CAAC;QAChC,mBAAmB,EAAE,CAAC,IAAI,CAAC;QAC3B,kBAAkB,EAAE,CAAC,IAAI,CAAC;QAC1B,SAAS,EAAE,EAAE;QACb,UAAU,EAAE,CAAC,oBAAoB,EAAE,UAAU,CAAC;KAC/C;IACD,wDAAwD;IACxD,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;IACtB,KAAK,EAAE;QACL,KAAK,EAAE,CAAC,SAAS,CAAC;QAClB,aAAa,EAAE,MAAM;KACtB;IACD,sBAAsB,EAAE,EAAE;IAC1B,UAAU,EAAE,CAAC,MAAM,CAAC;CACrB,CAAC"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * C (WP-86).
3
+ *
4
+ * DER EINE BESONDERE PUNKT: C schreibt den Namen einer Funktion nicht in ein
5
+ * `name`-Feld, sondern in eine Kette von Deklaratoren.
6
+ * `ring_t *ring_new(size_t cap)` ergibt
7
+ * `function_definition.declarator` -> `pointer_declarator.declarator`
8
+ * -> `function_declarator.declarator` -> `identifier`. Dafuer gibt es
9
+ * `nameDescend`: demselben Feld folgen, solange es weiterfuehrt. Ohne das
10
+ * hiesse jede zeigerwertige Funktion `*ring_new(size_t cap)`.
11
+ *
12
+ * ABBILDUNGEN: `struct`/`union` -> `class`, `typedef` -> `type`.
13
+ *
14
+ * ENTSCHEIDUNGSPUNKTE (spec.md §16.2/§16.3):
15
+ * - `case_statement` traegt `case X:` UND `default:` — nur die `case`-Form
16
+ * zaehlt (`caseExcludeChildKinds`).
17
+ * - C hat kein `try`/`catch`; die Art `catch` entsteht in C-Dateien nie.
18
+ * - PRAEPROZESSORZWEIGE (`#ifdef`, `#if`) zaehlen NICHT. Sie sind
19
+ * Uebersetzungs-, nicht Laufzeitverzweigungen: die uebersetzte Datei
20
+ * enthaelt genau EINEN der Zweige. Beide zu zaehlen ergaebe eine Zahl, die
21
+ * kein ausgefuehrter Pfad je erreicht. Das ist die konservative Auslegung;
22
+ * sie UNTERSCHAETZT Dateien, die schwer per `#ifdef` verzweigen, und das
23
+ * steht hier, damit niemand es aus der Zahl erraten muss.
24
+ * - Es gibt keine Sichtbarkeit im Baum: `static` ist eine Speicherklasse,
25
+ * kein Zugriffsmodifikator. `exportedNames` bleibt deshalb leer, ausser
26
+ * bei einer Funktion OHNE `static` — die ist aus der Uebersetzungseinheit
27
+ * heraus sichtbar, und das ist die einzige Aussage, die der Baum hergibt.
28
+ */
29
+ import type { LanguageKindTable } from "../../shared/table-profile.js";
30
+ import type { AstGrepLanguageSource } from "../adapter.js";
31
+ export declare const C_SOURCE: AstGrepLanguageSource;
32
+ export declare const C_TABLE: LanguageKindTable;
33
+ //# sourceMappingURL=c.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"c.d.ts","sourceRoot":"","sources":["../../../../src/languages/astgrep-backend/lang/c.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAE3D,eAAO,MAAM,QAAQ,EAAE,qBAGtB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,iBAkFrB,CAAC"}
@@ -0,0 +1,85 @@
1
+ export const C_SOURCE = {
2
+ languageName: "c",
3
+ moduleName: "@ast-grep/lang-c",
4
+ };
5
+ export const C_TABLE = {
6
+ languageId: "c",
7
+ extensions: [".c", ".h"],
8
+ supportLevel: "deep",
9
+ commentKinds: ["comment"],
10
+ stringContainerKinds: ["string_literal", "char_literal", "system_lib_string"],
11
+ identifierLeafKinds: [
12
+ "identifier",
13
+ "field_identifier",
14
+ "type_identifier",
15
+ "primitive_type",
16
+ "statement_identifier",
17
+ ],
18
+ numberLeafKinds: ["number_literal"],
19
+ booleanLeafKinds: ["true", "false"],
20
+ nullLeafKinds: ["null"],
21
+ scopes: [
22
+ {
23
+ kinds: ["function_definition"],
24
+ scopeKind: "function",
25
+ nameField: "declarator",
26
+ nameDescend: true,
27
+ },
28
+ { kinds: ["struct_specifier", "union_specifier"], scopeKind: "class" },
29
+ { kinds: ["enum_specifier"], scopeKind: "enum" },
30
+ {
31
+ kinds: ["type_definition"],
32
+ scopeKind: "type",
33
+ nameField: "declarator",
34
+ nameDescend: true,
35
+ },
36
+ {
37
+ kinds: ["field_declaration"],
38
+ scopeKind: "property",
39
+ nameField: "declarator",
40
+ nameDescend: true,
41
+ },
42
+ ],
43
+ decisions: {
44
+ ifKinds: ["if_statement"],
45
+ elseIfParentKinds: ["else_clause"],
46
+ loopKinds: ["for_statement", "while_statement", "do_statement"],
47
+ ternaryKinds: ["conditional_expression"],
48
+ switchKinds: ["switch_statement"],
49
+ caseKinds: ["case_statement"],
50
+ caseExcludeChildKinds: ["default"],
51
+ binaryKinds: ["binary_expression"],
52
+ operatorField: "operator",
53
+ logicalAndOperators: ["&&"],
54
+ logicalOrOperators: ["||"],
55
+ jumpKinds: ["return_statement", "break_statement", "continue_statement", "goto_statement"],
56
+ blockKinds: ["compound_statement"],
57
+ consequenceField: "consequence",
58
+ alternativeField: "alternative",
59
+ },
60
+ imports: {
61
+ kinds: ["preproc_include"],
62
+ // Der Spezifizierer behaelt seine SPITZEN KLAMMERN: `<stdlib.h>` ist eine
63
+ // Systemeinbindung, `"ring.h"` eine im Projekt. Die Klammern hier zu
64
+ // entfernen wuerde die beiden Faelle ununterscheidbar machen — und die
65
+ // Aufloesung im `file-graph` haengt genau daran.
66
+ pathField: "path",
67
+ },
68
+ calls: {
69
+ kinds: ["call_expression"],
70
+ functionField: "function",
71
+ argumentsField: "arguments",
72
+ memberKinds: ["field_expression"],
73
+ },
74
+ declarationParentKinds: [
75
+ "struct_specifier",
76
+ "union_specifier",
77
+ "enum_specifier",
78
+ "enumerator",
79
+ "function_declarator",
80
+ ],
81
+ bodyField: "body",
82
+ isExported: (_name, node) => !node.children.some((child) => child.type === "storage_class_specifier" && child.text === "static"),
83
+ fieldNames: ["name", "declarator"],
84
+ };
85
+ //# sourceMappingURL=c.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"c.js","sourceRoot":"","sources":["../../../../src/languages/astgrep-backend/lang/c.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * C++ (WP-86) — DER BELEG FUER DIE RATSCHE.
3
+ *
4
+ * Die C++-Grammatik ist eine ERWEITERUNG der C-Grammatik: jede Knotenart aus
5
+ * `c.ts` kommt in C++ genauso vor. Deshalb steht hier keine zweite Tabelle,
6
+ * sondern die DIFFERENZ — Klassen, Namensraeume, `try`/`catch`, Lambdas,
7
+ * bereichsbasierte `for`-Schleifen. Elf Sprachen ergaenzen heisst nicht elfmal
8
+ * dieselbe Arbeit; wo zwei Sprachen verwandt sind, muss die zweite billiger
9
+ * sein als die erste, sonst haben wir nichts gewonnen.
10
+ *
11
+ * ABBILDUNGEN ZUSAETZLICH ZU C: `class` -> `class`, `namespace` ->
12
+ * `namespace`. `template_declaration` ist KEIN eigenes Symbol: es umhuellt
13
+ * die Funktion oder Klasse, die es parametrisiert, und die ist der Scope.
14
+ *
15
+ * ENTSCHEIDUNGSPUNKTE ZUSAETZLICH ZU C: `catch_clause` zaehlt als `catch`,
16
+ * `for_range_loop` als Schleife. `co_await`/`co_yield` zaehlen NICHT — sie
17
+ * unterbrechen den Ablauf, verzweigen ihn aber nicht.
18
+ *
19
+ * SICHTBARKEIT: C++ fuehrt sie als ABSCHNITTSMARKE (`access_specifier`
20
+ * `public:`), nicht am Mitglied. Sie ist damit ohne Positionsvergleich nicht
21
+ * am Symbol ablesbar — der Adapter meldet deshalb keine, statt eine zu raten.
22
+ */
23
+ import type { LanguageKindTable } from "../../shared/table-profile.js";
24
+ import type { AstGrepLanguageSource } from "../adapter.js";
25
+ export declare const CPP_SOURCE: AstGrepLanguageSource;
26
+ export declare const CPP_TABLE: LanguageKindTable;
27
+ //# sourceMappingURL=cpp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cpp.d.ts","sourceRoot":"","sources":["../../../../src/languages/astgrep-backend/lang/cpp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAI3D,eAAO,MAAM,UAAU,EAAE,qBAGxB,CAAC;AAIF,eAAO,MAAM,SAAS,EAAE,iBA8BvB,CAAC"}
@@ -0,0 +1,38 @@
1
+ import { C_TABLE } from "./c.js";
2
+ export const CPP_SOURCE = {
3
+ languageName: "cpp",
4
+ moduleName: "@ast-grep/lang-cpp",
5
+ };
6
+ const { isExported: _cIsExported, ...C_TABLE_WITHOUT_EXPORT } = C_TABLE;
7
+ export const CPP_TABLE = {
8
+ ...C_TABLE_WITHOUT_EXPORT,
9
+ languageId: "cpp",
10
+ extensions: [".cpp", ".cc", ".cxx", ".hpp", ".hh", ".hxx"],
11
+ identifierLeafKinds: [
12
+ ...C_TABLE.identifierLeafKinds,
13
+ "namespace_identifier",
14
+ "qualified_identifier",
15
+ "this",
16
+ "destructor_name",
17
+ "operator_name",
18
+ ],
19
+ nullLeafKinds: [...(C_TABLE.nullLeafKinds ?? []), "nullptr"],
20
+ scopes: [
21
+ ...C_TABLE.scopes,
22
+ { kinds: ["class_specifier"], scopeKind: "class" },
23
+ { kinds: ["namespace_definition"], scopeKind: "namespace" },
24
+ ],
25
+ decisions: {
26
+ ...C_TABLE.decisions,
27
+ catchKinds: ["catch_clause"],
28
+ loopKinds: [...C_TABLE.decisions.loopKinds, "for_range_loop"],
29
+ jumpKinds: [...(C_TABLE.decisions.jumpKinds ?? []), "throw_statement"],
30
+ },
31
+ declarationParentKinds: [
32
+ ...C_TABLE.declarationParentKinds,
33
+ "class_specifier",
34
+ "namespace_definition",
35
+ "type_parameter_declaration",
36
+ ],
37
+ };
38
+ //# sourceMappingURL=cpp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cpp.js","sourceRoot":"","sources":["../../../../src/languages/astgrep-backend/lang/cpp.ts"],"names":[],"mappings":"AAyBA,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAEjC,MAAM,CAAC,MAAM,UAAU,GAA0B;IAC/C,YAAY,EAAE,KAAK;IACnB,UAAU,EAAE,oBAAoB;CACjC,CAAC;AAEF,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,GAAG,sBAAsB,EAAE,GAAG,OAAO,CAAC;AAExE,MAAM,CAAC,MAAM,SAAS,GAAsB;IAC1C,GAAG,sBAAsB;IACzB,UAAU,EAAE,KAAK;IACjB,UAAU,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC;IAC1D,mBAAmB,EAAE;QACnB,GAAG,OAAO,CAAC,mBAAmB;QAC9B,sBAAsB;QACtB,sBAAsB;QACtB,MAAM;QACN,iBAAiB;QACjB,eAAe;KAChB;IACD,aAAa,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,IAAI,EAAE,CAAC,EAAE,SAAS,CAAC;IAC5D,MAAM,EAAE;QACN,GAAG,OAAO,CAAC,MAAM;QACjB,EAAE,KAAK,EAAE,CAAC,iBAAiB,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE;QAClD,EAAE,KAAK,EAAE,CAAC,sBAAsB,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE;KAC5D;IACD,SAAS,EAAE;QACT,GAAG,OAAO,CAAC,SAAS;QACpB,UAAU,EAAE,CAAC,cAAc,CAAC;QAC5B,SAAS,EAAE,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,SAAS,EAAE,gBAAgB,CAAC;QAC7D,SAAS,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,IAAI,EAAE,CAAC,EAAE,iBAAiB,CAAC;KACvE;IACD,sBAAsB,EAAE;QACtB,GAAG,OAAO,CAAC,sBAAsB;QACjC,iBAAiB;QACjB,sBAAsB;QACtB,4BAA4B;KAC7B;CACF,CAAC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * C# (WP-86).
3
+ *
4
+ * ABBILDUNGEN: `struct` und `record` -> `class`, `namespace` -> `namespace`.
5
+ * Eine `property_declaration` (`public string Name { get; set; }`) ist eine
6
+ * `property`, keine Methode — die Zugriffsmethoden gehoeren zu ihr.
7
+ *
8
+ * ENTSCHEIDUNGSPUNKTE (spec.md §16.2/§16.3):
9
+ * - `case_switch_label` zaehlt; `default_switch_label` ist eine EIGENE
10
+ * Knotenart und steht deshalb gar nicht erst in `caseKinds`.
11
+ * - `switch_expression_arm` (C# 8, `x switch { ... }`) zaehlt ebenfalls als
12
+ * `case`.
13
+ * - `catch_clause` zaehlt, `finally_clause` nicht.
14
+ * - `??` zaehlt als `short_circuit`, also NUR erweitert.
15
+ * - `?.` (`conditional_access_expression`) zaehlt NICHT. Es verzweigt zwar,
16
+ * ist aber in idiomatischem C# die normale Null-Absicherung; klassisch
17
+ * mitgezaehlt bekaeme jede defensive Kette dieselbe Zahl wie eine echte
18
+ * Fallunterscheidung. Konservative Auslegung, hier benannt.
19
+ */
20
+ import type { LanguageKindTable } from "../../shared/table-profile.js";
21
+ import type { AstGrepLanguageSource } from "../adapter.js";
22
+ export declare const CSHARP_SOURCE: AstGrepLanguageSource;
23
+ export declare const CSHARP_TABLE: LanguageKindTable;
24
+ //# sourceMappingURL=csharp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"csharp.d.ts","sourceRoot":"","sources":["../../../../src/languages/astgrep-backend/lang/csharp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAE3D,eAAO,MAAM,aAAa,EAAE,qBAG3B,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,iBAiG1B,CAAC"}