@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,120 @@
1
+ import { textFormatExtensions, textFormatExtensionOf } from "@untangle-code/domain";
2
+ import { buildLineByteIndex, rangeForLines } from "../prose/line-bytes.js";
3
+ /** Sprachkennung dieses Adapters. Bewusst formatuebergreifend: die Behandlung ist dieselbe. */
4
+ export const STRUCTURED_TEXT_LANGUAGE_ID = "structured-text";
5
+ const TOML_TABLE = /^\s*\[/;
6
+ const YAML_DOCUMENT_SEPARATOR = /^---\s*$/;
7
+ /** Zeilen, an denen ein neuer Block beginnt (1-basiert), aufsteigend, ohne Zeile 1. */
8
+ function blockStartLines(path, lines) {
9
+ const extension = textFormatExtensionOf(path);
10
+ const isToml = extension === ".toml";
11
+ const isYaml = extension === ".yaml" || extension === ".yml";
12
+ if (!isToml && !isYaml)
13
+ return [];
14
+ const starts = [];
15
+ for (const [index, rawLine] of lines.entries()) {
16
+ if (index === 0)
17
+ continue;
18
+ if (isToml && TOML_TABLE.test(rawLine))
19
+ starts.push(index + 1);
20
+ if (isYaml && YAML_DOCUMENT_SEPARATOR.test(rawLine))
21
+ starts.push(index + 1);
22
+ }
23
+ return starts;
24
+ }
25
+ function buildBlocks(path, content, index) {
26
+ const lines = content.split("\n").map((line) => (line.endsWith("\r") ? line.slice(0, -1) : line));
27
+ const totalLines = Math.max(index.lineCount, 1);
28
+ const starts = [1, ...blockStartLines(path, lines)];
29
+ return starts.map((startLine, position) => {
30
+ const next = starts[position + 1];
31
+ return rangeForLines(index, startLine, next !== undefined ? next - 1 : totalLines);
32
+ });
33
+ }
34
+ function rootOf(ast) {
35
+ return ast.root;
36
+ }
37
+ export function createStructuredTextAdapter() {
38
+ return {
39
+ languageId: STRUCTURED_TEXT_LANGUAGE_ID,
40
+ extensions: textFormatExtensions("structured_data"),
41
+ supportLevel: "text",
42
+ parse(source) {
43
+ const index = buildLineByteIndex(source.content);
44
+ const root = {
45
+ fileId: source.fileId,
46
+ index,
47
+ blocks: buildBlocks(source.path, source.content, index),
48
+ };
49
+ // Es wird nichts geparst, also kann nichts scheitern. `"complete"` ist
50
+ // hier eine Aussage ueber die Textzerlegung, nicht ueber eine
51
+ // Grammatik: eine ungueltige JSON-Datei wird trotzdem vollstaendig
52
+ // erfasst und durchsuchbar — sie bekommt nur keine Struktur.
53
+ return {
54
+ parseQuality: "complete",
55
+ ast: {
56
+ languageId: STRUCTURED_TEXT_LANGUAGE_ID,
57
+ parseQuality: "complete",
58
+ root,
59
+ diagnostics: [],
60
+ },
61
+ diagnostics: [],
62
+ errorNodeCount: 0,
63
+ missingNodeCount: 0,
64
+ };
65
+ },
66
+ extractChunks(ast) {
67
+ const root = rootOf(ast);
68
+ const children = root.blocks.map((range, ordinal) => ({
69
+ chunkKind: "configuration",
70
+ range,
71
+ scopeId: `${root.fileId}#block#${String(ordinal)}`,
72
+ splittable: false,
73
+ }));
74
+ return [
75
+ {
76
+ chunkKind: "module",
77
+ range: {
78
+ startLine: 1,
79
+ endLine: root.index.lineCount,
80
+ startByte: 0,
81
+ endByte: root.index.totalBytes,
82
+ },
83
+ scopeId: root.fileId,
84
+ // Ein einziger Block ueber die ganze Datei traegt keine
85
+ // Information; dann bleibt der Wurzelbereich kinderlos und der
86
+ // Chunker schneidet selbst am Tokenbudget.
87
+ splittable: children.length > 1,
88
+ ...(children.length > 1 ? { children } : {}),
89
+ },
90
+ ];
91
+ },
92
+ extractSymbols(_ast) {
93
+ return [];
94
+ },
95
+ extractImports(_ast) {
96
+ return [];
97
+ },
98
+ extractCalls(_ast) {
99
+ return [];
100
+ },
101
+ computeComplexity(ast) {
102
+ return {
103
+ symbolScopes: [],
104
+ decisions: [],
105
+ nestingEvents: [],
106
+ operators: [],
107
+ operands: [],
108
+ nodeKinds: [],
109
+ comments: [],
110
+ identifiers: [],
111
+ literals: [],
112
+ parseDiagnostics: ast.diagnostics,
113
+ };
114
+ },
115
+ tokenizeForHalstead(_ast) {
116
+ return { operators: [], operands: [] };
117
+ },
118
+ };
119
+ }
120
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/languages/structured-text/index.ts"],"names":[],"mappings":"AAwDA,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAEpF,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAsB,MAAM,wBAAwB,CAAC;AAE/F,+FAA+F;AAC/F,MAAM,CAAC,MAAM,2BAA2B,GAAG,iBAAiB,CAAC;AAQ7D,MAAM,UAAU,GAAG,QAAQ,CAAC;AAC5B,MAAM,uBAAuB,GAAG,UAAU,CAAC;AAE3C,uFAAuF;AACvF,SAAS,eAAe,CAAC,IAAY,EAAE,KAAwB;IAC7D,MAAM,SAAS,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,SAAS,KAAK,OAAO,CAAC;IACrC,MAAM,MAAM,GAAG,SAAS,KAAK,OAAO,IAAI,SAAS,KAAK,MAAM,CAAC;IAC7D,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IAElC,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;QAC/C,IAAI,KAAK,KAAK,CAAC;YAAE,SAAS;QAC1B,IAAI,MAAM,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAC/D,IAAI,MAAM,IAAI,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC;YAAE,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IAC9E,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,WAAW,CAAC,IAAY,EAAE,OAAe,EAAE,KAAoB;IACtE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAClG,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,GAAG,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IACpD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE;QACxC,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;QAClC,OAAO,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IACrF,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,MAAM,CAAC,GAAc;IAC5B,OAAO,GAAG,CAAC,IAAyB,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,2BAA2B;IACzC,OAAO;QACL,UAAU,EAAE,2BAA2B;QACvC,UAAU,EAAE,oBAAoB,CAAC,iBAAiB,CAAC;QACnD,YAAY,EAAE,MAAM;QAEpB,KAAK,CAAC,MAAkB;YACtB,MAAM,KAAK,GAAG,kBAAkB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACjD,MAAM,IAAI,GAAsB;gBAC9B,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,KAAK;gBACL,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC;aACxD,CAAC;YACF,uEAAuE;YACvE,8DAA8D;YAC9D,mEAAmE;YACnE,6DAA6D;YAC7D,OAAO;gBACL,YAAY,EAAE,UAAU;gBACxB,GAAG,EAAE;oBACH,UAAU,EAAE,2BAA2B;oBACvC,YAAY,EAAE,UAAU;oBACxB,IAAI;oBACJ,WAAW,EAAE,EAAE;iBAChB;gBACD,WAAW,EAAE,EAAE;gBACf,cAAc,EAAE,CAAC;gBACjB,gBAAgB,EAAE,CAAC;aACpB,CAAC;QACJ,CAAC;QAED,aAAa,CAAC,GAAc;YAC1B,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YACzB,MAAM,QAAQ,GAAgB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;gBACjE,SAAS,EAAE,eAAe;gBAC1B,KAAK;gBACL,OAAO,EAAE,GAAG,IAAI,CAAC,MAAM,UAAU,MAAM,CAAC,OAAO,CAAC,EAAE;gBAClD,UAAU,EAAE,KAAK;aAClB,CAAC,CAAC,CAAC;YACJ,OAAO;gBACL;oBACE,SAAS,EAAE,QAAQ;oBACnB,KAAK,EAAE;wBACL,SAAS,EAAE,CAAC;wBACZ,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS;wBAC7B,SAAS,EAAE,CAAC;wBACZ,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU;qBAC/B;oBACD,OAAO,EAAE,IAAI,CAAC,MAAM;oBACpB,wDAAwD;oBACxD,+DAA+D;oBAC/D,2CAA2C;oBAC3C,UAAU,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC;oBAC/B,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC7C;aACF,CAAC;QACJ,CAAC;QAED,cAAc,CAAC,IAAe;YAC5B,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,cAAc,CAAC,IAAe;YAC5B,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,YAAY,CAAC,IAAe;YAC1B,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,iBAAiB,CAAC,GAAc;YAC9B,OAAO;gBACL,YAAY,EAAE,EAAE;gBAChB,SAAS,EAAE,EAAE;gBACb,aAAa,EAAE,EAAE;gBACjB,SAAS,EAAE,EAAE;gBACb,QAAQ,EAAE,EAAE;gBACZ,SAAS,EAAE,EAAE;gBACb,QAAQ,EAAE,EAAE;gBACZ,WAAW,EAAE,EAAE;gBACf,QAAQ,EAAE,EAAE;gBACZ,gBAAgB,EAAE,GAAG,CAAC,WAAW;aAClC,CAAC;QACJ,CAAC;QAED,mBAAmB,CAAC,IAAe;YACjC,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QACzC,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { LanguageAdapter } from "@untangle-code/domain";
2
+ /** TSX `LanguageAdapter` (`.tsx`), support level "deep" (spec.md §7.2). */
3
+ export declare function createTsxAdapter(): LanguageAdapter;
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/languages/tsx/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 { TSX_DIALECT } from "../shared/dialect.js";
3
+ /** TSX `LanguageAdapter` (`.tsx`), support level "deep" (spec.md §7.2). */
4
+ export function createTsxAdapter() {
5
+ return createTreeSitterAdapter(TSX_DIALECT);
6
+ }
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/languages/tsx/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,4 @@
1
+ import type { LanguageAdapter } from "@untangle-code/domain";
2
+ /** TypeScript `LanguageAdapter` (`.ts`, `.mts`, `.cts`), support level "deep" (spec.md §7.2). */
3
+ export declare function createTypeScriptAdapter(): LanguageAdapter;
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/languages/typescript/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 { TYPESCRIPT_DIALECT } from "../shared/dialect.js";
3
+ /** TypeScript `LanguageAdapter` (`.ts`, `.mts`, `.cts`), support level "deep" (spec.md §7.2). */
4
+ export function createTypeScriptAdapter() {
5
+ return createTreeSitterAdapter(TYPESCRIPT_DIALECT);
6
+ }
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/languages/typescript/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,21 @@
1
+ import type { LanguageAdapter, ParsedAst, SourceFile, SourceRange } from "@untangle-code/domain";
2
+ export { shiftVueRange, vueQualifiedName, vueScopeId } from "./mapping.js";
3
+ export interface VueScriptAst {
4
+ context: "script" | "setup";
5
+ /** Only dual-script SFCs need explicit context names to keep equal bindings distinct. */
6
+ qualifier: string;
7
+ adapter: LanguageAdapter;
8
+ ast: ParsedAst;
9
+ source: SourceFile;
10
+ /** Content range in the original SFC, not the surrounding script tags. */
11
+ range: SourceRange;
12
+ }
13
+ export interface VueAstRoot {
14
+ kind: "vue-sfc";
15
+ fileId: string;
16
+ range: SourceRange;
17
+ scripts: VueScriptAst[];
18
+ }
19
+ /** Vue SFC adapter: source-level inline scripts, never generated render/setup code. */
20
+ export declare function createVueAdapter(): LanguageAdapter;
21
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/languages/vue/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAGV,eAAe,EAEf,SAAS,EAET,UAAU,EACV,WAAW,EACZ,MAAM,uBAAuB,CAAC;AAc/B,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE3E,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC5B,yFAAyF;IACzF,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,eAAe,CAAC;IACzB,GAAG,EAAE,SAAS,CAAC;IACf,MAAM,EAAE,UAAU,CAAC;IACnB,0EAA0E;IAC1E,KAAK,EAAE,WAAW,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,SAAS,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,WAAW,CAAC;IACnB,OAAO,EAAE,YAAY,EAAE,CAAC;CACzB;AAuMD,uFAAuF;AACvF,wBAAgB,gBAAgB,IAAI,eAAe,CAoElD"}
@@ -0,0 +1,234 @@
1
+ import { createRequire } from "node:module";
2
+ import { AdapterParseError, sha256Hex } from "@untangle-code/domain";
3
+ import { buildByteOffsetTable } from "../../text/byte-offset-table.js";
4
+ import { createJavaScriptAdapter } from "../javascript/index.js";
5
+ import { createJsxAdapter } from "../jsx/index.js";
6
+ import { MAX_PARSE_SOURCE_BYTES } from "../shared/parse-limits.js";
7
+ import { createTsxAdapter } from "../tsx/index.js";
8
+ import { createTypeScriptAdapter } from "../typescript/index.js";
9
+ import { shiftVueRange, vueFacts, vueRegion, vueScopeId, vueSymbol } from "./mapping.js";
10
+ export { shiftVueRange, vueQualifiedName, vueScopeId } from "./mapping.js";
11
+ const require = createRequire(import.meta.url);
12
+ let parseSfc;
13
+ function parseDescriptor(source) {
14
+ // Loading the registry must not load Vue's compiler or any native grammar.
15
+ parseSfc ??= require("@vue/compiler-sfc").parse;
16
+ return parseSfc(source.content, { filename: source.path, sourceMap: false, ignoreEmpty: false });
17
+ }
18
+ function rootOf(ast) {
19
+ return ast.root;
20
+ }
21
+ function emptyFacts(diagnostics) {
22
+ return {
23
+ symbolScopes: [],
24
+ decisions: [],
25
+ nestingEvents: [],
26
+ operators: [],
27
+ operands: [],
28
+ nodeKinds: [],
29
+ comments: [],
30
+ identifiers: [],
31
+ literals: [],
32
+ parseDiagnostics: diagnostics,
33
+ };
34
+ }
35
+ function combinedFacts(ast) {
36
+ const root = rootOf(ast);
37
+ const facts = emptyFacts(ast.diagnostics);
38
+ // A template-only component has no executable-code scope and no invented base complexity.
39
+ if (root.scripts.length === 0)
40
+ return facts;
41
+ facts.symbolScopes.push({
42
+ symbolScopeId: root.fileId,
43
+ name: "",
44
+ qualifiedName: "",
45
+ kind: "file",
46
+ range: root.range,
47
+ executable: true,
48
+ });
49
+ for (const script of root.scripts) {
50
+ const part = vueFacts(script, root.fileId);
51
+ facts.symbolScopes.push(...part.symbolScopes);
52
+ facts.decisions.push(...part.decisions);
53
+ facts.nestingEvents.push(...part.nestingEvents);
54
+ facts.operators.push(...part.operators);
55
+ facts.operands.push(...part.operands);
56
+ facts.nodeKinds.push(...part.nodeKinds);
57
+ facts.comments.push(...part.comments);
58
+ facts.identifiers.push(...part.identifiers);
59
+ facts.literals.push(...part.literals);
60
+ }
61
+ return facts;
62
+ }
63
+ function blockRange(source, block) {
64
+ const offsets = buildByteOffsetTable(source.content);
65
+ return {
66
+ startLine: block.loc.start.line,
67
+ endLine: block.loc.end.line,
68
+ startByte: offsets.toByteOffset(block.loc.start.offset),
69
+ endByte: offsets.toByteOffset(block.loc.end.offset),
70
+ };
71
+ }
72
+ function diagnostic(message, range, kind = "fallback") {
73
+ return { severity: "warning", kind, message, range };
74
+ }
75
+ function parseVue(source, adapters) {
76
+ const bytes = Buffer.byteLength(source.content, "utf8");
77
+ if (bytes > MAX_PARSE_SOURCE_BYTES) {
78
+ throw new AdapterParseError("file_too_large", "Vue SFC exceeds the parser source-byte limit.", {
79
+ measurements: { sizeBytes: bytes, limitBytes: MAX_PARSE_SOURCE_BYTES },
80
+ });
81
+ }
82
+ const parsed = parseDescriptor(source);
83
+ const range = {
84
+ startByte: 0,
85
+ endByte: bytes,
86
+ startLine: 1,
87
+ endLine: source.content.split("\n").length,
88
+ };
89
+ const diagnostics = parsed.errors.map((error) => ({
90
+ severity: "error",
91
+ kind: "error_node",
92
+ message: `Vue SFC: ${error.message}`,
93
+ range: "loc" in error && error.loc !== undefined ? blockRange(source, { loc: error.loc }) : range,
94
+ }));
95
+ let errorNodeCount = parsed.errors.length;
96
+ let missingNodeCount = 0;
97
+ let incomplete = parsed.errors.length > 0;
98
+ const scripts = [];
99
+ const descriptor = parsed.descriptor;
100
+ const blocks = [
101
+ ["script", descriptor.script],
102
+ ["setup", descriptor.scriptSetup],
103
+ ];
104
+ blocks.sort((left, right) => (left[1]?.loc.start.offset ?? Number.POSITIVE_INFINITY) -
105
+ (right[1]?.loc.start.offset ?? Number.POSITIVE_INFINITY));
106
+ const dual = descriptor.script !== null && descriptor.scriptSetup !== null;
107
+ if (dual && (descriptor.script?.lang ?? "js") !== (descriptor.scriptSetup?.lang ?? "js")) {
108
+ incomplete = true;
109
+ diagnostics.push(diagnostic("Vue script and script setup must use the same language; cross-block compilation is not validated.", range));
110
+ }
111
+ for (const [context, block] of blocks) {
112
+ if (block === null)
113
+ continue;
114
+ const partRange = blockRange(source, block);
115
+ const lang = block.lang ?? "js";
116
+ const adapter = adapters.get(lang);
117
+ if (block.src !== undefined || adapter === undefined) {
118
+ incomplete = true;
119
+ diagnostics.push(diagnostic(block.src !== undefined
120
+ ? `Vue ${context}: external script src is not analyzed; analyze its source file separately.`
121
+ : `Vue ${context}: unsupported script language "${lang}".`, partRange));
122
+ continue;
123
+ }
124
+ const scriptSource = {
125
+ ...source,
126
+ fileId: `${source.fileId}\u001fvue-${context}`,
127
+ languageId: adapter.languageId,
128
+ content: block.content,
129
+ contentHash: sha256Hex(block.content),
130
+ sizeBytes: Buffer.byteLength(block.content, "utf8"),
131
+ };
132
+ const part = adapter.parse(scriptSource);
133
+ const script = {
134
+ context,
135
+ qualifier: dual ? context : "",
136
+ adapter,
137
+ source: scriptSource,
138
+ range: partRange,
139
+ };
140
+ diagnostics.push(...part.diagnostics.map((item) => ({
141
+ ...item,
142
+ range: shiftVueRange(script, item.range),
143
+ })));
144
+ errorNodeCount += part.errorNodeCount;
145
+ missingNodeCount += part.missingNodeCount;
146
+ incomplete ||= part.parseQuality !== "complete";
147
+ if (part.ast !== null)
148
+ scripts.push({ ...script, ast: part.ast });
149
+ }
150
+ if (blocks.every(([, block]) => block === null)) {
151
+ incomplete = true;
152
+ diagnostics.push(diagnostic("Vue SFC contains no inline script; template logic is not analyzed.", range));
153
+ }
154
+ // Valid syntax is distinct from analysis scope: these warnings do not invent syntax errors.
155
+ const unmeasuredBlocks = [descriptor.template, ...descriptor.styles, ...descriptor.customBlocks];
156
+ for (const block of unmeasuredBlocks) {
157
+ if (block === null)
158
+ continue;
159
+ diagnostics.push({
160
+ ...diagnostic(`Vue analysis scope: inline script code only; ${block.type} block complexity and runtime bindings are not measured. The original block remains text-searchable.`, blockRange(source, block), "other"),
161
+ code: "analysis_scope_limited",
162
+ });
163
+ }
164
+ const parseQuality = incomplete ? "partial" : "complete";
165
+ const ast = {
166
+ languageId: "vue",
167
+ parseQuality,
168
+ diagnostics,
169
+ root: { kind: "vue-sfc", fileId: source.fileId, range, scripts },
170
+ };
171
+ return { parseQuality, ast, diagnostics, errorNodeCount, missingNodeCount };
172
+ }
173
+ /** Vue SFC adapter: source-level inline scripts, never generated render/setup code. */
174
+ export function createVueAdapter() {
175
+ const adapters = new Map([
176
+ ["js", createJavaScriptAdapter()],
177
+ ["javascript", createJavaScriptAdapter()],
178
+ ["ts", createTypeScriptAdapter()],
179
+ ["typescript", createTypeScriptAdapter()],
180
+ ["tsx", createTsxAdapter()],
181
+ ["jsx", createJsxAdapter()],
182
+ ]);
183
+ const cache = new WeakMap();
184
+ const facts = (ast) => {
185
+ const previous = cache.get(ast);
186
+ if (previous !== undefined)
187
+ return previous;
188
+ const computed = combinedFacts(ast);
189
+ cache.set(ast, computed);
190
+ return computed;
191
+ };
192
+ return {
193
+ languageId: "vue",
194
+ extensions: [".vue"],
195
+ supportLevel: "structural",
196
+ parse: (source) => parseVue(source, adapters),
197
+ extractChunks(ast) {
198
+ const root = rootOf(ast);
199
+ const children = root.scripts
200
+ .flatMap((script) => script.adapter
201
+ .extractChunks(script.ast)
202
+ .flatMap((region) => region.children ?? [])
203
+ .map((region) => vueRegion(script, region, root.fileId)))
204
+ .sort((left, right) => left.range.startByte - right.range.startByte);
205
+ return [
206
+ {
207
+ chunkKind: "module",
208
+ range: root.range,
209
+ scopeId: root.fileId,
210
+ splittable: children.length > 0,
211
+ children,
212
+ },
213
+ ];
214
+ },
215
+ extractSymbols: (ast) => rootOf(ast).scripts.flatMap((script) => script.adapter.extractSymbols(script.ast).map((symbol) => vueSymbol(script, symbol))),
216
+ extractImports: (ast) => rootOf(ast).scripts.flatMap((script) => script.adapter
217
+ .extractImports(script.ast)
218
+ .map((item) => ({ ...item, range: shiftVueRange(script, item.range) }))),
219
+ extractCalls: (ast) => {
220
+ const root = rootOf(ast);
221
+ return root.scripts.flatMap((script) => script.adapter.extractCalls(script.ast).map((call) => ({
222
+ ...call,
223
+ callerScopeId: vueScopeId(script, call.callerScopeId, root.fileId),
224
+ range: shiftVueRange(script, call.range),
225
+ })));
226
+ },
227
+ computeComplexity: facts,
228
+ tokenizeForHalstead(ast) {
229
+ const { operators, operands } = facts(ast);
230
+ return { operators, operands };
231
+ },
232
+ };
233
+ }
234
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/languages/vue/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { AstRegion, ComplexityFacts, ExtractedSymbol, SourceRange } from "@untangle-code/domain";
2
+ import type { VueScriptAst } from "./index.js";
3
+ /** Vue compiler locations use UTF-16; the block range is already converted to UTF-8. */
4
+ export declare function shiftVueRange(script: Pick<VueScriptAst, "range">, range: SourceRange): SourceRange;
5
+ export declare function vueQualifiedName(script: VueScriptAst, name: string): string;
6
+ /** Both inline blocks share the enclosing file scope, but their child identities stay distinct. */
7
+ export declare function vueScopeId(script: VueScriptAst, scopeId: string, fileId: string): string;
8
+ export declare function vueSymbol(script: VueScriptAst, symbol: ExtractedSymbol): ExtractedSymbol;
9
+ export declare function vueRegion(script: VueScriptAst, region: AstRegion, fileId: string): AstRegion;
10
+ export declare function vueFacts(script: VueScriptAst, fileId: string): ComplexityFacts;
11
+ //# sourceMappingURL=mapping.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapping.d.ts","sourceRoot":"","sources":["../../../src/languages/vue/mapping.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,eAAe,EACf,eAAe,EACf,WAAW,EACZ,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,wFAAwF;AACxF,wBAAgB,aAAa,CAC3B,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,EACnC,KAAK,EAAE,WAAW,GACjB,WAAW,CAOb;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAE3E;AAED,mGAAmG;AACnG,wBAAgB,UAAU,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAExF;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,eAAe,GAAG,eAAe,CAUxF;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,CAY5F;AAED,wBAAgB,QAAQ,CAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,eAAe,CAmC9E"}
@@ -0,0 +1,77 @@
1
+ /** Vue compiler locations use UTF-16; the block range is already converted to UTF-8. */
2
+ export function shiftVueRange(script, range) {
3
+ return {
4
+ startByte: script.range.startByte + range.startByte,
5
+ endByte: script.range.startByte + range.endByte,
6
+ startLine: script.range.startLine + range.startLine - 1,
7
+ endLine: script.range.startLine + range.endLine - 1,
8
+ };
9
+ }
10
+ export function vueQualifiedName(script, name) {
11
+ return script.qualifier.length === 0 ? name : `${script.qualifier}.${name}`;
12
+ }
13
+ /** Both inline blocks share the enclosing file scope, but their child identities stay distinct. */
14
+ export function vueScopeId(script, scopeId, fileId) {
15
+ return scopeId === script.source.fileId ? fileId : scopeId;
16
+ }
17
+ export function vueSymbol(script, symbol) {
18
+ return {
19
+ ...symbol,
20
+ qualifiedName: vueQualifiedName(script, symbol.qualifiedName),
21
+ range: shiftVueRange(script, symbol.range),
22
+ ...(symbol.docRange !== undefined ? { docRange: shiftVueRange(script, symbol.docRange) } : {}),
23
+ ...(symbol.parentQualifiedName !== undefined
24
+ ? { parentQualifiedName: vueQualifiedName(script, symbol.parentQualifiedName) }
25
+ : {}),
26
+ };
27
+ }
28
+ export function vueRegion(script, region, fileId) {
29
+ return {
30
+ ...region,
31
+ range: shiftVueRange(script, region.range),
32
+ scopeId: vueScopeId(script, region.scopeId, fileId),
33
+ ...(region.symbolFqn !== undefined
34
+ ? { symbolFqn: vueQualifiedName(script, region.symbolFqn) }
35
+ : {}),
36
+ ...(region.children !== undefined
37
+ ? { children: region.children.map((child) => vueRegion(script, child, fileId)) }
38
+ : {}),
39
+ };
40
+ }
41
+ export function vueFacts(script, fileId) {
42
+ const facts = script.adapter.computeComplexity(script.ast);
43
+ const scoped = (fact) => ({
44
+ ...fact,
45
+ symbolScopeId: vueScopeId(script, fact.symbolScopeId, fileId),
46
+ });
47
+ const ranged = (fact) => ({
48
+ ...fact,
49
+ range: shiftVueRange(script, fact.range),
50
+ });
51
+ return {
52
+ symbolScopes: facts.symbolScopes
53
+ .filter((scope) => scope.symbolScopeId !== script.source.fileId)
54
+ .map((scope) => ({
55
+ ...ranged(scoped(scope)),
56
+ qualifiedName: vueQualifiedName(script, scope.qualifiedName),
57
+ ...(scope.parentScopeId !== undefined
58
+ ? { parentScopeId: vueScopeId(script, scope.parentScopeId, fileId) }
59
+ : {}),
60
+ })),
61
+ decisions: facts.decisions.map((fact) => ({
62
+ ...ranged(scoped(fact)),
63
+ ...(fact.logicalGroupId !== undefined
64
+ ? { logicalGroupId: `${script.context}:${fact.logicalGroupId}` }
65
+ : {}),
66
+ })),
67
+ nestingEvents: facts.nestingEvents.map((fact) => ranged(scoped(fact))),
68
+ operators: facts.operators.map((fact) => ranged(scoped(fact))),
69
+ operands: facts.operands.map((fact) => ranged(scoped(fact))),
70
+ nodeKinds: facts.nodeKinds.map(scoped),
71
+ comments: facts.comments.map((range) => shiftVueRange(script, range)),
72
+ identifiers: facts.identifiers.map((fact) => ranged(scoped(fact))),
73
+ literals: facts.literals.map((fact) => ranged(scoped(fact))),
74
+ parseDiagnostics: facts.parseDiagnostics.map(ranged),
75
+ };
76
+ }
77
+ //# sourceMappingURL=mapping.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapping.js","sourceRoot":"","sources":["../../../src/languages/vue/mapping.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * `ParserRegistry` (domain `ports.ts`) implementation: registration plus
3
+ * resolution by extension / language id (architecture.md §6.5).
4
+ *
5
+ * Registering an adapter here does NOT load its grammar — `createTreeSitterAdapter`
6
+ * (see `languages/shared/create-adapter.ts`) only touches the native
7
+ * `tree-sitter` module and the specific grammar module inside `parse()`,
8
+ * via `grammar-loader.ts`'s lazy, cached `require`. A CLI can therefore call
9
+ * `createParserRegistry()` and list/resolve adapters at startup without
10
+ * loading a single native grammar; the first grammar load happens on the
11
+ * first `parse()` call for that language, and only that language's grammar
12
+ * is ever touched if a workspace has, say, TypeScript files only.
13
+ */
14
+ import type { LanguageAdapter, ParserRegistry, SupportLevel } from "@untangle-code/domain";
15
+ export declare class LazyParserRegistry implements ParserRegistry {
16
+ private readonly adaptersByLanguageId;
17
+ private readonly adaptersByExtension;
18
+ register(adapter: LanguageAdapter): void;
19
+ listAdapters(): LanguageAdapter[];
20
+ getAdapterByLanguage(languageId: string): LanguageAdapter | null;
21
+ getAdapterForPath(path: string, _contentSample?: string): LanguageAdapter | null;
22
+ supportLevelOf(languageId: string): SupportLevel | null;
23
+ }
24
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE3F,qBAAa,kBAAmB,YAAW,cAAc;IACvD,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAsC;IAC3E,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAsC;IAE1E,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI;IAOxC,YAAY,IAAI,eAAe,EAAE;IAIjC,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI;IAIhE,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI;IAchF,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;CAGxD"}
@@ -0,0 +1,42 @@
1
+ export class LazyParserRegistry {
2
+ adaptersByLanguageId = new Map();
3
+ adaptersByExtension = new Map();
4
+ register(adapter) {
5
+ this.adaptersByLanguageId.set(adapter.languageId, adapter);
6
+ for (const extension of adapter.extensions) {
7
+ this.adaptersByExtension.set(extension.toLowerCase(), adapter);
8
+ }
9
+ }
10
+ listAdapters() {
11
+ return [...this.adaptersByLanguageId.values()];
12
+ }
13
+ getAdapterByLanguage(languageId) {
14
+ return this.adaptersByLanguageId.get(languageId) ?? null;
15
+ }
16
+ getAdapterForPath(path, _contentSample) {
17
+ const extension = extensionOf(path);
18
+ if (extension === null) {
19
+ // Extensionless-file content probing (spec.md §6.1) has no MVP use
20
+ // case in this package — every language it supports (TS/JS/TSX/JSX)
21
+ // is always extension-identified. `_contentSample` is accepted (per
22
+ // the domain port signature) but unused; a future adapter that needs
23
+ // it (e.g. a shebang-sniffed shell/Python script) implements the
24
+ // probe itself.
25
+ return null;
26
+ }
27
+ return this.adaptersByExtension.get(extension) ?? null;
28
+ }
29
+ supportLevelOf(languageId) {
30
+ return this.adaptersByLanguageId.get(languageId)?.supportLevel ?? null;
31
+ }
32
+ }
33
+ function extensionOf(path) {
34
+ const normalized = path.replace(/\\/g, "/");
35
+ const lastSlash = normalized.lastIndexOf("/");
36
+ const fileName = lastSlash === -1 ? normalized : normalized.slice(lastSlash + 1);
37
+ const lastDot = fileName.lastIndexOf(".");
38
+ if (lastDot <= 0)
39
+ return null; // no dot, or a dotfile like ".gitignore" (no extension)
40
+ return fileName.slice(lastDot).toLowerCase();
41
+ }
42
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAeA,MAAM,OAAO,kBAAkB;IACZ,oBAAoB,GAAG,IAAI,GAAG,EAA2B,CAAC;IAC1D,mBAAmB,GAAG,IAAI,GAAG,EAA2B,CAAC;IAE1E,QAAQ,CAAC,OAAwB;QAC/B,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC3D,KAAK,MAAM,SAAS,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YAC3C,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,OAAO,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IAED,YAAY;QACV,OAAO,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,oBAAoB,CAAC,UAAkB;QACrC,OAAO,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC;IAC3D,CAAC;IAED,iBAAiB,CAAC,IAAY,EAAE,cAAuB;QACrD,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YACvB,mEAAmE;YACnE,oEAAoE;YACpE,oEAAoE;YACpE,qEAAqE;YACrE,iEAAiE;YACjE,gBAAgB;YAChB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC;IACzD,CAAC;IAED,cAAc,CAAC,UAAkB;QAC/B,OAAO,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,YAAY,IAAI,IAAI,CAAC;IACzE,CAAC;CACF;AAED,SAAS,WAAW,CAAC,IAAY;IAC/B,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAG,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;IACjF,MAAM,OAAO,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC1C,IAAI,OAAO,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC,CAAC,wDAAwD;IACvF,OAAO,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;AAC/C,CAAC"}