@yalehwang/archguard 0.1.23 → 0.1.32

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 (866) hide show
  1. package/README.md +176 -32
  2. package/assets/grammars/benchmarks.md +101 -0
  3. package/assets/grammars/checksums.json +8 -0
  4. package/{node_modules/tree-sitter/LICENSE → assets/grammars/licenses/tree-sitter-cpp.LICENSE} +2 -2
  5. package/{node_modules/node-gyp-build/LICENSE → assets/grammars/licenses/tree-sitter-go.LICENSE} +5 -5
  6. package/assets/grammars/licenses/tree-sitter-java.LICENSE +21 -0
  7. package/assets/grammars/licenses/tree-sitter-kotlin.LICENSE +21 -0
  8. package/assets/grammars/licenses/tree-sitter-python.LICENSE +21 -0
  9. package/assets/grammars/licenses/tree-sitter.LICENSE +21 -0
  10. package/assets/grammars/provenance.json +66 -0
  11. package/assets/grammars/tree-sitter-cpp.wasm +0 -0
  12. package/assets/grammars/tree-sitter-go.wasm +0 -0
  13. package/assets/grammars/tree-sitter-java.wasm +0 -0
  14. package/assets/grammars/tree-sitter-kotlin.wasm +0 -0
  15. package/assets/grammars/tree-sitter-python.wasm +0 -0
  16. package/assets/grammars/tree-sitter.wasm +0 -0
  17. package/dist/analysis/atlas-metrics-analysis.d.ts +11 -0
  18. package/dist/analysis/atlas-metrics-analysis.d.ts.map +1 -0
  19. package/dist/analysis/atlas-metrics-analysis.js +17 -0
  20. package/dist/analysis/atlas-metrics-analysis.js.map +1 -0
  21. package/dist/analysis/fitness/dependency-checker.d.ts +4 -0
  22. package/dist/analysis/fitness/dependency-checker.d.ts.map +1 -0
  23. package/dist/analysis/fitness/dependency-checker.js +16 -0
  24. package/dist/analysis/fitness/dependency-checker.js.map +1 -0
  25. package/dist/analysis/fitness/rule-evaluator.d.ts +6 -0
  26. package/dist/analysis/fitness/rule-evaluator.d.ts.map +1 -0
  27. package/dist/analysis/fitness/rule-evaluator.js +64 -0
  28. package/dist/analysis/fitness/rule-evaluator.js.map +1 -0
  29. package/dist/analysis/fitness/rule-types.d.ts +2 -0
  30. package/dist/analysis/fitness/rule-types.d.ts.map +1 -0
  31. package/dist/analysis/fitness/rule-types.js +2 -0
  32. package/dist/analysis/fitness/rule-types.js.map +1 -0
  33. package/dist/analysis/gim/direction-hint.d.ts +18 -0
  34. package/dist/analysis/gim/direction-hint.d.ts.map +1 -0
  35. package/dist/analysis/gim/direction-hint.js +76 -0
  36. package/dist/analysis/gim/direction-hint.js.map +1 -0
  37. package/dist/analysis/gim/gim-loss-evaluator.d.ts +14 -0
  38. package/dist/analysis/gim/gim-loss-evaluator.d.ts.map +1 -0
  39. package/dist/analysis/gim/gim-loss-evaluator.js +80 -0
  40. package/dist/analysis/gim/gim-loss-evaluator.js.map +1 -0
  41. package/dist/analysis/gini.d.ts +2 -0
  42. package/dist/analysis/gini.d.ts.map +1 -0
  43. package/dist/analysis/gini.js +12 -0
  44. package/dist/analysis/gini.js.map +1 -0
  45. package/dist/analysis/git-history/git-log-reader.d.ts +24 -0
  46. package/dist/analysis/git-history/git-log-reader.d.ts.map +1 -0
  47. package/dist/analysis/git-history/git-log-reader.js +117 -0
  48. package/dist/analysis/git-history/git-log-reader.js.map +1 -0
  49. package/dist/analysis/git-history/history-aggregator.d.ts +19 -0
  50. package/dist/analysis/git-history/history-aggregator.d.ts.map +1 -0
  51. package/dist/analysis/git-history/history-aggregator.js +291 -0
  52. package/dist/analysis/git-history/history-aggregator.js.map +1 -0
  53. package/dist/analysis/git-history/history-query.d.ts +111 -0
  54. package/dist/analysis/git-history/history-query.d.ts.map +1 -0
  55. package/dist/analysis/git-history/history-query.js +201 -0
  56. package/dist/analysis/git-history/history-query.js.map +1 -0
  57. package/dist/analysis/git-history/index.d.ts +4 -0
  58. package/dist/analysis/git-history/index.d.ts.map +1 -0
  59. package/dist/analysis/git-history/index.js +4 -0
  60. package/dist/analysis/git-history/index.js.map +1 -0
  61. package/dist/analysis/metric-vector-builder.d.ts +5 -0
  62. package/dist/analysis/metric-vector-builder.d.ts.map +1 -0
  63. package/dist/analysis/metric-vector-builder.js +47 -0
  64. package/dist/analysis/metric-vector-builder.js.map +1 -0
  65. package/dist/analysis/metrics-history-reader.d.ts +4 -0
  66. package/dist/analysis/metrics-history-reader.d.ts.map +1 -0
  67. package/dist/analysis/metrics-history-reader.js +24 -0
  68. package/dist/analysis/metrics-history-reader.js.map +1 -0
  69. package/dist/analysis/package-metrics-analysis.d.ts +18 -0
  70. package/dist/analysis/package-metrics-analysis.d.ts.map +1 -0
  71. package/dist/analysis/package-metrics-analysis.js +59 -0
  72. package/dist/analysis/package-metrics-analysis.js.map +1 -0
  73. package/dist/analysis/project-semantics-loader.d.ts +3 -0
  74. package/dist/analysis/project-semantics-loader.d.ts.map +1 -0
  75. package/dist/analysis/project-semantics-loader.js +25 -0
  76. package/dist/analysis/project-semantics-loader.js.map +1 -0
  77. package/dist/analysis/snapshot-diff.d.ts +19 -0
  78. package/dist/analysis/snapshot-diff.d.ts.map +1 -0
  79. package/dist/analysis/snapshot-diff.js +54 -0
  80. package/dist/analysis/snapshot-diff.js.map +1 -0
  81. package/dist/analysis/snapshot-store.d.ts +15 -0
  82. package/dist/analysis/snapshot-store.d.ts.map +1 -0
  83. package/dist/analysis/snapshot-store.js +96 -0
  84. package/dist/analysis/snapshot-store.js.map +1 -0
  85. package/dist/analysis/test-analyzer.d.ts +4 -1
  86. package/dist/analysis/test-analyzer.d.ts.map +1 -1
  87. package/dist/analysis/test-analyzer.js +67 -14
  88. package/dist/analysis/test-analyzer.js.map +1 -1
  89. package/dist/analysis/test-coverage-mapper.d.ts +1 -1
  90. package/dist/analysis/test-coverage-mapper.d.ts.map +1 -1
  91. package/dist/analysis/test-coverage-mapper.js +32 -2
  92. package/dist/analysis/test-coverage-mapper.js.map +1 -1
  93. package/dist/analysis/test-issue-detector.d.ts +1 -1
  94. package/dist/analysis/test-issue-detector.d.ts.map +1 -1
  95. package/dist/analysis/test-issue-detector.js +7 -2
  96. package/dist/analysis/test-issue-detector.js.map +1 -1
  97. package/dist/analysis/test-pattern-advisor.d.ts +2 -0
  98. package/dist/analysis/test-pattern-advisor.d.ts.map +1 -0
  99. package/dist/analysis/test-pattern-advisor.js +59 -0
  100. package/dist/analysis/test-pattern-advisor.js.map +1 -0
  101. package/dist/cli/analyze/normalize-to-diagrams.d.ts +9 -0
  102. package/dist/cli/analyze/normalize-to-diagrams.d.ts.map +1 -1
  103. package/dist/cli/analyze/normalize-to-diagrams.js +35 -26
  104. package/dist/cli/analyze/normalize-to-diagrams.js.map +1 -1
  105. package/dist/cli/analyze/run-analysis.d.ts +5 -1
  106. package/dist/cli/analyze/run-analysis.d.ts.map +1 -1
  107. package/dist/cli/analyze/run-analysis.js +207 -33
  108. package/dist/cli/analyze/run-analysis.js.map +1 -1
  109. package/dist/cli/{cache-manager.d.ts → cache/cache-manager.d.ts} +1 -1
  110. package/dist/cli/cache/cache-manager.d.ts.map +1 -0
  111. package/dist/cli/{cache-manager.js → cache/cache-manager.js} +3 -3
  112. package/dist/cli/cache/cache-manager.js.map +1 -0
  113. package/dist/cli/cognitive/ccb-assembler.d.ts +8 -0
  114. package/dist/cli/cognitive/ccb-assembler.d.ts.map +1 -0
  115. package/dist/cli/cognitive/ccb-assembler.js +213 -0
  116. package/dist/cli/cognitive/ccb-assembler.js.map +1 -0
  117. package/dist/cli/cognitive/ccb-reader.d.ts +7 -0
  118. package/dist/cli/cognitive/ccb-reader.d.ts.map +1 -0
  119. package/dist/cli/cognitive/ccb-reader.js +27 -0
  120. package/dist/cli/cognitive/ccb-reader.js.map +1 -0
  121. package/dist/cli/cognitive/ccb-schema.d.ts +36 -0
  122. package/dist/cli/cognitive/ccb-schema.d.ts.map +1 -0
  123. package/dist/cli/cognitive/ccb-schema.js +2 -0
  124. package/dist/cli/cognitive/ccb-schema.js.map +1 -0
  125. package/dist/cli/cognitive/ccb-writer.d.ts +3 -0
  126. package/dist/cli/cognitive/ccb-writer.d.ts.map +1 -0
  127. package/dist/cli/cognitive/ccb-writer.js +12 -0
  128. package/dist/cli/cognitive/ccb-writer.js.map +1 -0
  129. package/dist/cli/commands/analyze.d.ts.map +1 -1
  130. package/dist/cli/commands/analyze.js +23 -4
  131. package/dist/cli/commands/analyze.js.map +1 -1
  132. package/dist/cli/commands/cache.js +2 -2
  133. package/dist/cli/commands/cache.js.map +1 -1
  134. package/dist/cli/commands/check.d.ts +3 -0
  135. package/dist/cli/commands/check.d.ts.map +1 -0
  136. package/dist/cli/commands/check.js +48 -0
  137. package/dist/cli/commands/check.js.map +1 -0
  138. package/dist/cli/commands/diff.d.ts +3 -0
  139. package/dist/cli/commands/diff.d.ts.map +1 -0
  140. package/dist/cli/commands/diff.js +89 -0
  141. package/dist/cli/commands/diff.js.map +1 -0
  142. package/dist/cli/commands/init.d.ts.map +1 -1
  143. package/dist/cli/commands/init.js +1 -2
  144. package/dist/cli/commands/init.js.map +1 -1
  145. package/dist/cli/commands/query.d.ts +51 -0
  146. package/dist/cli/commands/query.d.ts.map +1 -1
  147. package/dist/cli/commands/query.js +373 -17
  148. package/dist/cli/commands/query.js.map +1 -1
  149. package/dist/cli/config-loader.d.ts +50 -0
  150. package/dist/cli/config-loader.d.ts.map +1 -1
  151. package/dist/cli/config-loader.js +33 -0
  152. package/dist/cli/config-loader.js.map +1 -1
  153. package/dist/cli/{errors.d.ts → errors/index.d.ts} +16 -2
  154. package/dist/cli/errors/index.d.ts.map +1 -0
  155. package/dist/cli/{error-handler.js → errors/index.js} +32 -2
  156. package/dist/cli/errors/index.js.map +1 -0
  157. package/dist/cli/git-history/git-log-reader.d.ts +2 -0
  158. package/dist/cli/git-history/git-log-reader.d.ts.map +1 -0
  159. package/dist/cli/git-history/git-log-reader.js +2 -0
  160. package/dist/cli/git-history/git-log-reader.js.map +1 -0
  161. package/dist/cli/git-history/history-aggregator.d.ts +2 -0
  162. package/dist/cli/git-history/history-aggregator.d.ts.map +1 -0
  163. package/dist/cli/git-history/history-aggregator.js +2 -0
  164. package/dist/cli/git-history/history-aggregator.js.map +1 -0
  165. package/dist/cli/git-history/history-loader.d.ts +11 -0
  166. package/dist/cli/git-history/history-loader.d.ts.map +1 -0
  167. package/dist/cli/git-history/history-loader.js +30 -0
  168. package/dist/cli/git-history/history-loader.js.map +1 -0
  169. package/dist/cli/git-history/history-query.d.ts +2 -0
  170. package/dist/cli/git-history/history-query.d.ts.map +1 -0
  171. package/dist/cli/git-history/history-query.js +2 -0
  172. package/dist/cli/git-history/history-query.js.map +1 -0
  173. package/dist/cli/git-history/history-writer.d.ts +3 -0
  174. package/dist/cli/git-history/history-writer.d.ts.map +1 -0
  175. package/dist/cli/git-history/history-writer.js +14 -0
  176. package/dist/cli/git-history/history-writer.js.map +1 -0
  177. package/dist/cli/index.d.ts.map +1 -1
  178. package/dist/cli/index.js +5 -1
  179. package/dist/cli/index.js.map +1 -1
  180. package/dist/cli/mcp/analyze-tool.d.ts +2 -0
  181. package/dist/cli/mcp/analyze-tool.d.ts.map +1 -1
  182. package/dist/cli/mcp/analyze-tool.js +15 -4
  183. package/dist/cli/mcp/analyze-tool.js.map +1 -1
  184. package/dist/cli/mcp/mcp-server.d.ts +7 -2
  185. package/dist/cli/mcp/mcp-server.d.ts.map +1 -1
  186. package/dist/cli/mcp/mcp-server.js +203 -50
  187. package/dist/cli/mcp/mcp-server.js.map +1 -1
  188. package/dist/cli/mcp/tools/atlas-analytics-tools.d.ts +7 -0
  189. package/dist/cli/mcp/tools/atlas-analytics-tools.d.ts.map +1 -0
  190. package/dist/cli/mcp/tools/atlas-analytics-tools.js +190 -0
  191. package/dist/cli/mcp/tools/atlas-analytics-tools.js.map +1 -0
  192. package/dist/cli/mcp/tools/call-graph-tools.d.ts +3 -0
  193. package/dist/cli/mcp/tools/call-graph-tools.d.ts.map +1 -0
  194. package/dist/cli/mcp/tools/call-graph-tools.js +47 -0
  195. package/dist/cli/mcp/tools/call-graph-tools.js.map +1 -0
  196. package/dist/cli/mcp/tools/ccb-tool.d.ts +3 -0
  197. package/dist/cli/mcp/tools/ccb-tool.d.ts.map +1 -0
  198. package/dist/cli/mcp/tools/ccb-tool.js +63 -0
  199. package/dist/cli/mcp/tools/ccb-tool.js.map +1 -0
  200. package/dist/cli/mcp/tools/cognitive-summary-tool.d.ts +3 -0
  201. package/dist/cli/mcp/tools/cognitive-summary-tool.d.ts.map +1 -0
  202. package/dist/cli/mcp/tools/cognitive-summary-tool.js +118 -0
  203. package/dist/cli/mcp/tools/cognitive-summary-tool.js.map +1 -0
  204. package/dist/cli/mcp/tools/gim-tools.d.ts +3 -0
  205. package/dist/cli/mcp/tools/gim-tools.d.ts.map +1 -0
  206. package/dist/cli/mcp/tools/gim-tools.js +78 -0
  207. package/dist/cli/mcp/tools/gim-tools.js.map +1 -0
  208. package/dist/cli/mcp/tools/git-history-analyze-tool.d.ts +3 -0
  209. package/dist/cli/mcp/tools/git-history-analyze-tool.d.ts.map +1 -0
  210. package/dist/cli/mcp/tools/git-history-analyze-tool.js +172 -0
  211. package/dist/cli/mcp/tools/git-history-analyze-tool.js.map +1 -0
  212. package/dist/cli/mcp/tools/git-history-evidence-pack-tool.d.ts +3 -0
  213. package/dist/cli/mcp/tools/git-history-evidence-pack-tool.d.ts.map +1 -0
  214. package/dist/cli/mcp/tools/git-history-evidence-pack-tool.js +87 -0
  215. package/dist/cli/mcp/tools/git-history-evidence-pack-tool.js.map +1 -0
  216. package/dist/cli/mcp/tools/git-history-tools.d.ts +3 -0
  217. package/dist/cli/mcp/tools/git-history-tools.d.ts.map +1 -0
  218. package/dist/cli/mcp/tools/git-history-tools.js +125 -0
  219. package/dist/cli/mcp/tools/git-history-tools.js.map +1 -0
  220. package/dist/cli/mcp/tools/metric-trend-tools.d.ts +8 -0
  221. package/dist/cli/mcp/tools/metric-trend-tools.d.ts.map +1 -0
  222. package/dist/cli/mcp/tools/metric-trend-tools.js +50 -0
  223. package/dist/cli/mcp/tools/metric-trend-tools.js.map +1 -0
  224. package/dist/cli/mcp/tools/package-metrics-tools.d.ts +7 -0
  225. package/dist/cli/mcp/tools/package-metrics-tools.d.ts.map +1 -0
  226. package/dist/cli/mcp/tools/package-metrics-tools.js +62 -0
  227. package/dist/cli/mcp/tools/package-metrics-tools.js.map +1 -0
  228. package/dist/cli/mcp/tools/test-analysis-tools.d.ts.map +1 -1
  229. package/dist/cli/mcp/tools/test-analysis-tools.js +75 -84
  230. package/dist/cli/mcp/tools/test-analysis-tools.js.map +1 -1
  231. package/dist/cli/metrics-history-writer.d.ts +16 -0
  232. package/dist/cli/metrics-history-writer.d.ts.map +1 -0
  233. package/dist/cli/metrics-history-writer.js +16 -0
  234. package/dist/cli/metrics-history-writer.js.map +1 -0
  235. package/dist/cli/processors/arch-json-provider-types.d.ts +17 -0
  236. package/dist/cli/processors/arch-json-provider-types.d.ts.map +1 -0
  237. package/dist/cli/processors/arch-json-provider-types.js +2 -0
  238. package/dist/cli/processors/arch-json-provider-types.js.map +1 -0
  239. package/dist/cli/processors/arch-json-provider.d.ts +9 -13
  240. package/dist/cli/processors/arch-json-provider.d.ts.map +1 -1
  241. package/dist/cli/processors/arch-json-provider.js +144 -117
  242. package/dist/cli/processors/arch-json-provider.js.map +1 -1
  243. package/dist/cli/processors/arch-json-utils.d.ts +4 -0
  244. package/dist/cli/processors/arch-json-utils.d.ts.map +1 -0
  245. package/dist/cli/processors/arch-json-utils.js +82 -0
  246. package/dist/cli/processors/arch-json-utils.js.map +1 -0
  247. package/dist/cli/processors/diagram-output-router.d.ts +3 -1
  248. package/dist/cli/processors/diagram-output-router.d.ts.map +1 -1
  249. package/dist/cli/processors/diagram-output-router.js +28 -3
  250. package/dist/cli/processors/diagram-output-router.js.map +1 -1
  251. package/dist/cli/processors/diagram-pipeline-runner.d.ts +20 -0
  252. package/dist/cli/processors/diagram-pipeline-runner.d.ts.map +1 -0
  253. package/dist/cli/processors/diagram-pipeline-runner.js +171 -0
  254. package/dist/cli/processors/diagram-pipeline-runner.js.map +1 -0
  255. package/dist/cli/processors/diagram-processor.d.ts +15 -8
  256. package/dist/cli/processors/diagram-processor.d.ts.map +1 -1
  257. package/dist/cli/processors/diagram-processor.js +21 -148
  258. package/dist/cli/processors/diagram-processor.js.map +1 -1
  259. package/dist/cli/processors/query-scope-collector.d.ts +11 -0
  260. package/dist/cli/processors/query-scope-collector.d.ts.map +1 -0
  261. package/dist/cli/processors/query-scope-collector.js +44 -0
  262. package/dist/cli/processors/query-scope-collector.js.map +1 -0
  263. package/dist/cli/processors/test-coverage-writer.d.ts +4 -0
  264. package/dist/cli/processors/test-coverage-writer.d.ts.map +1 -0
  265. package/dist/cli/processors/test-coverage-writer.js +22 -0
  266. package/dist/cli/processors/test-coverage-writer.js.map +1 -0
  267. package/dist/cli/processors/worker-pool-factory.d.ts +9 -0
  268. package/dist/cli/processors/worker-pool-factory.d.ts.map +1 -0
  269. package/dist/cli/processors/worker-pool-factory.js +31 -0
  270. package/dist/cli/processors/worker-pool-factory.js.map +1 -0
  271. package/dist/cli/{progress.d.ts → progress/index.d.ts} +1 -1
  272. package/dist/cli/progress/index.d.ts.map +1 -0
  273. package/dist/cli/{progress.js → progress/index.js} +1 -1
  274. package/dist/cli/progress/index.js.map +1 -0
  275. package/dist/cli/query/arch-index-builder.d.ts +1 -3
  276. package/dist/cli/query/arch-index-builder.d.ts.map +1 -1
  277. package/dist/cli/query/arch-index-builder.js +1 -125
  278. package/dist/cli/query/arch-index-builder.js.map +1 -1
  279. package/dist/cli/query/arch-index.d.ts +2 -16
  280. package/dist/cli/query/arch-index.d.ts.map +1 -1
  281. package/dist/cli/query/arch-index.js +1 -1
  282. package/dist/cli/query/arch-index.js.map +1 -1
  283. package/dist/cli/query/engine-loader.d.ts +9 -1
  284. package/dist/cli/query/engine-loader.d.ts.map +1 -1
  285. package/dist/cli/query/engine-loader.js +5 -1
  286. package/dist/cli/query/engine-loader.js.map +1 -1
  287. package/dist/cli/query/query-artifacts.d.ts.map +1 -1
  288. package/dist/cli/query/query-artifacts.js +2 -1
  289. package/dist/cli/query/query-artifacts.js.map +1 -1
  290. package/dist/cli/query/query-engine.d.ts +3 -105
  291. package/dist/cli/query/query-engine.d.ts.map +1 -1
  292. package/dist/cli/query/query-engine.js +1 -417
  293. package/dist/cli/query/query-engine.js.map +1 -1
  294. package/dist/cli/utils/java-project-structure-detector.js +1 -1
  295. package/dist/cli/utils/java-project-structure-detector.js.map +1 -1
  296. package/dist/cli/utils/kotlin-project-structure-detector.d.ts +7 -0
  297. package/dist/cli/utils/kotlin-project-structure-detector.d.ts.map +1 -0
  298. package/dist/cli/utils/kotlin-project-structure-detector.js +101 -0
  299. package/dist/cli/utils/kotlin-project-structure-detector.js.map +1 -0
  300. package/dist/cli/utils/output-path-resolver.d.ts.map +1 -1
  301. package/dist/cli/utils/output-path-resolver.js.map +1 -1
  302. package/dist/cli/utils/project-language-detector.d.ts +1 -1
  303. package/dist/cli/utils/project-language-detector.d.ts.map +1 -1
  304. package/dist/cli/utils/project-language-detector.js +5 -1
  305. package/dist/cli/utils/project-language-detector.js.map +1 -1
  306. package/dist/cli/utils/project-structure-detector.js +3 -3
  307. package/dist/cli/utils/project-structure-detector.js.map +1 -1
  308. package/dist/cli/utils/test-output-writer.d.ts +1 -1
  309. package/dist/cli/utils/test-output-writer.d.ts.map +1 -1
  310. package/dist/cli/utils/test-output-writer.js.map +1 -1
  311. package/dist/core/entity-type-registry.d.ts +10 -0
  312. package/dist/core/entity-type-registry.d.ts.map +1 -0
  313. package/dist/core/entity-type-registry.js +17 -0
  314. package/dist/core/entity-type-registry.js.map +1 -0
  315. package/dist/core/interfaces/dependency.d.ts +1 -1
  316. package/dist/core/interfaces/dependency.d.ts.map +1 -1
  317. package/dist/core/interfaces/index.d.ts +2 -0
  318. package/dist/core/interfaces/index.d.ts.map +1 -1
  319. package/dist/core/interfaces/index.js.map +1 -1
  320. package/dist/core/interfaces/language-plugin.d.ts +8 -1
  321. package/dist/core/interfaces/language-plugin.d.ts.map +1 -1
  322. package/dist/core/interfaces/parser-facade.d.ts +5 -0
  323. package/dist/core/interfaces/parser-facade.d.ts.map +1 -0
  324. package/dist/core/interfaces/parser-facade.js +2 -0
  325. package/dist/core/interfaces/parser-facade.js.map +1 -0
  326. package/dist/core/interfaces/renderer-facade.d.ts +8 -0
  327. package/dist/core/interfaces/renderer-facade.d.ts.map +1 -0
  328. package/dist/core/interfaces/renderer-facade.js +2 -0
  329. package/dist/core/interfaces/renderer-facade.js.map +1 -0
  330. package/dist/core/interfaces/validation.d.ts.map +1 -1
  331. package/dist/core/plugin-registry.d.ts.map +1 -1
  332. package/dist/core/plugin-registry.js +2 -0
  333. package/dist/core/plugin-registry.js.map +1 -1
  334. package/dist/core/query/arch-index-builder.d.ts +4 -0
  335. package/dist/core/query/arch-index-builder.d.ts.map +1 -0
  336. package/dist/core/query/arch-index-builder.js +126 -0
  337. package/dist/core/query/arch-index-builder.js.map +1 -0
  338. package/dist/core/query/arch-index.d.ts +17 -0
  339. package/dist/core/query/arch-index.d.ts.map +1 -0
  340. package/dist/core/query/arch-index.js +2 -0
  341. package/dist/core/query/arch-index.js.map +1 -0
  342. package/dist/core/query/arch-metrics-cognitive.d.ts +32 -0
  343. package/dist/core/query/arch-metrics-cognitive.d.ts.map +1 -0
  344. package/dist/core/query/arch-metrics-cognitive.js +60 -0
  345. package/dist/core/query/arch-metrics-cognitive.js.map +1 -0
  346. package/dist/core/query/arch-metrics-quality.d.ts +24 -0
  347. package/dist/core/query/arch-metrics-quality.d.ts.map +1 -0
  348. package/dist/core/query/arch-metrics-quality.js +86 -0
  349. package/dist/core/query/arch-metrics-quality.js.map +1 -0
  350. package/dist/core/query/arch-metrics-structure.d.ts +43 -0
  351. package/dist/core/query/arch-metrics-structure.d.ts.map +1 -0
  352. package/dist/core/query/arch-metrics-structure.js +291 -0
  353. package/dist/core/query/arch-metrics-structure.js.map +1 -0
  354. package/dist/core/query/arch-metrics.d.ts +54 -0
  355. package/dist/core/query/arch-metrics.d.ts.map +1 -0
  356. package/dist/core/query/arch-metrics.js +42 -0
  357. package/dist/core/query/arch-metrics.js.map +1 -0
  358. package/dist/core/query/edge-list-serializer.d.ts +4 -0
  359. package/dist/core/query/edge-list-serializer.d.ts.map +1 -0
  360. package/dist/core/query/edge-list-serializer.js +24 -0
  361. package/dist/core/query/edge-list-serializer.js.map +1 -0
  362. package/dist/core/query/entity-query-service.d.ts +15 -0
  363. package/dist/core/query/entity-query-service.d.ts.map +1 -0
  364. package/dist/core/query/entity-query-service.js +51 -0
  365. package/dist/core/query/entity-query-service.js.map +1 -0
  366. package/dist/core/query/extension-accessor.d.ts +15 -0
  367. package/dist/core/query/extension-accessor.d.ts.map +1 -0
  368. package/dist/core/query/extension-accessor.js +28 -0
  369. package/dist/core/query/extension-accessor.js.map +1 -0
  370. package/dist/core/query/index.d.ts +8 -0
  371. package/dist/core/query/index.d.ts.map +1 -0
  372. package/dist/core/query/index.js +6 -0
  373. package/dist/core/query/index.js.map +1 -0
  374. package/dist/core/query/output-scope-filter.d.ts +6 -0
  375. package/dist/core/query/output-scope-filter.d.ts.map +1 -0
  376. package/dist/core/query/output-scope-filter.js +45 -0
  377. package/dist/core/query/output-scope-filter.js.map +1 -0
  378. package/dist/core/query/query-engine.d.ts +116 -0
  379. package/dist/core/query/query-engine.d.ts.map +1 -0
  380. package/dist/core/query/query-engine.js +105 -0
  381. package/dist/core/query/query-engine.js.map +1 -0
  382. package/dist/core/query/relation-query-service.d.ts +21 -0
  383. package/dist/core/query/relation-query-service.d.ts.map +1 -0
  384. package/dist/core/query/relation-query-service.js +124 -0
  385. package/dist/core/query/relation-query-service.js.map +1 -0
  386. package/dist/mermaid/auto-repair.d.ts +1 -1
  387. package/dist/mermaid/auto-repair.d.ts.map +1 -1
  388. package/dist/mermaid/auto-repair.js +6 -6
  389. package/dist/mermaid/auto-repair.js.map +1 -1
  390. package/dist/mermaid/cpp-package-flowchart-generator.js +1 -1
  391. package/dist/mermaid/cpp-package-flowchart-generator.js.map +1 -1
  392. package/dist/mermaid/diagram-generator.d.ts +2 -1
  393. package/dist/mermaid/diagram-generator.d.ts.map +1 -1
  394. package/dist/mermaid/diagram-generator.js +17 -16
  395. package/dist/mermaid/diagram-generator.js.map +1 -1
  396. package/dist/mermaid/generator-formatting.d.ts +1 -1
  397. package/dist/mermaid/generator-formatting.d.ts.map +1 -1
  398. package/dist/mermaid/generator-formatting.js +2 -0
  399. package/dist/mermaid/generator-formatting.js.map +1 -1
  400. package/dist/mermaid/generator-validation.d.ts.map +1 -1
  401. package/dist/mermaid/generator-validation.js.map +1 -1
  402. package/dist/mermaid/generator.d.ts +5 -10
  403. package/dist/mermaid/generator.d.ts.map +1 -1
  404. package/dist/mermaid/generator.js +210 -227
  405. package/dist/mermaid/generator.js.map +1 -1
  406. package/dist/mermaid/grouper.d.ts.map +1 -1
  407. package/dist/mermaid/grouper.js.map +1 -1
  408. package/dist/mermaid/renderer.d.ts.map +1 -1
  409. package/dist/mermaid/renderer.js +1 -1
  410. package/dist/mermaid/renderer.js.map +1 -1
  411. package/dist/mermaid/test-coverage-renderer.d.ts +1 -1
  412. package/dist/mermaid/test-coverage-renderer.d.ts.map +1 -1
  413. package/dist/mermaid/test-coverage-renderer.js +18 -12
  414. package/dist/mermaid/test-coverage-renderer.js.map +1 -1
  415. package/dist/mermaid/ts-module-graph-renderer.d.ts +6 -2
  416. package/dist/mermaid/ts-module-graph-renderer.d.ts.map +1 -1
  417. package/dist/mermaid/ts-module-graph-renderer.js +49 -2
  418. package/dist/mermaid/ts-module-graph-renderer.js.map +1 -1
  419. package/dist/mermaid/validator-quality.js +1 -1
  420. package/dist/mermaid/validator-quality.js.map +1 -1
  421. package/dist/mermaid/validator-render.js +1 -1
  422. package/dist/mermaid/validator-render.js.map +1 -1
  423. package/dist/parser/archjson-aggregator.d.ts +1 -0
  424. package/dist/parser/archjson-aggregator.d.ts.map +1 -1
  425. package/dist/parser/archjson-aggregator.js +38 -8
  426. package/dist/parser/archjson-aggregator.js.map +1 -1
  427. package/dist/parser/call-edge-extractor.d.ts +13 -0
  428. package/dist/parser/call-edge-extractor.d.ts.map +1 -0
  429. package/dist/parser/call-edge-extractor.js +70 -0
  430. package/dist/parser/call-edge-extractor.js.map +1 -0
  431. package/dist/parser/metrics-calculator.d.ts.map +1 -1
  432. package/dist/parser/metrics-calculator.js +2 -1
  433. package/dist/parser/metrics-calculator.js.map +1 -1
  434. package/dist/parser/parallel-parser.d.ts +12 -1
  435. package/dist/parser/parallel-parser.d.ts.map +1 -1
  436. package/dist/parser/parallel-parser.js +80 -37
  437. package/dist/parser/parallel-parser.js.map +1 -1
  438. package/dist/parser/parse-worker-pool.d.ts +59 -0
  439. package/dist/parser/parse-worker-pool.d.ts.map +1 -0
  440. package/dist/parser/parse-worker-pool.js +170 -0
  441. package/dist/parser/parse-worker-pool.js.map +1 -0
  442. package/dist/parser/parse-worker.d.ts +2 -0
  443. package/dist/parser/parse-worker.d.ts.map +1 -0
  444. package/dist/parser/parse-worker.js +71 -0
  445. package/dist/parser/parse-worker.js.map +1 -0
  446. package/dist/parser/process-parse-worker-pools.d.ts +18 -0
  447. package/dist/parser/process-parse-worker-pools.d.ts.map +1 -0
  448. package/dist/parser/process-parse-worker-pools.js +31 -0
  449. package/dist/parser/process-parse-worker-pools.js.map +1 -0
  450. package/dist/parser/relation-extractor.d.ts +1 -0
  451. package/dist/parser/relation-extractor.d.ts.map +1 -1
  452. package/dist/parser/relation-extractor.js +84 -4
  453. package/dist/parser/relation-extractor.js.map +1 -1
  454. package/dist/parser/typescript-parser.d.ts +2 -0
  455. package/dist/parser/typescript-parser.d.ts.map +1 -1
  456. package/dist/parser/typescript-parser.js +44 -5
  457. package/dist/parser/typescript-parser.js.map +1 -1
  458. package/dist/plugins/cpp/archjson-mapper.d.ts.map +1 -1
  459. package/dist/plugins/cpp/archjson-mapper.js.map +1 -1
  460. package/dist/plugins/cpp/builders/class-builder.d.ts +2 -2
  461. package/dist/plugins/cpp/builders/class-builder.d.ts.map +1 -1
  462. package/dist/plugins/cpp/builders/class-builder.js +6 -1
  463. package/dist/plugins/cpp/builders/class-builder.js.map +1 -1
  464. package/dist/plugins/cpp/index.d.ts +7 -4
  465. package/dist/plugins/cpp/index.d.ts.map +1 -1
  466. package/dist/plugins/cpp/index.js +47 -9
  467. package/dist/plugins/cpp/index.js.map +1 -1
  468. package/dist/plugins/cpp/tree-sitter-bridge.d.ts +3 -2
  469. package/dist/plugins/cpp/tree-sitter-bridge.d.ts.map +1 -1
  470. package/dist/plugins/cpp/tree-sitter-bridge.js +27 -22
  471. package/dist/plugins/cpp/tree-sitter-bridge.js.map +1 -1
  472. package/dist/plugins/golang/archjson-mapper.d.ts +3 -1
  473. package/dist/plugins/golang/archjson-mapper.d.ts.map +1 -1
  474. package/dist/plugins/golang/archjson-mapper.js +56 -1
  475. package/dist/plugins/golang/archjson-mapper.js.map +1 -1
  476. package/dist/plugins/golang/atlas/behavior-analyzer.d.ts +2 -1
  477. package/dist/plugins/golang/atlas/behavior-analyzer.d.ts.map +1 -1
  478. package/dist/plugins/golang/atlas/behavior-analyzer.js +2 -2
  479. package/dist/plugins/golang/atlas/behavior-analyzer.js.map +1 -1
  480. package/dist/plugins/golang/atlas/builders/capability-graph-builder.d.ts +5 -1
  481. package/dist/plugins/golang/atlas/builders/capability-graph-builder.d.ts.map +1 -1
  482. package/dist/plugins/golang/atlas/builders/capability-graph-builder.js +43 -1
  483. package/dist/plugins/golang/atlas/builders/capability-graph-builder.js.map +1 -1
  484. package/dist/plugins/golang/atlas/builders/flow-graph-builder.d.ts +3 -0
  485. package/dist/plugins/golang/atlas/builders/flow-graph-builder.d.ts.map +1 -1
  486. package/dist/plugins/golang/atlas/builders/flow-graph-builder.js +166 -6
  487. package/dist/plugins/golang/atlas/builders/flow-graph-builder.js.map +1 -1
  488. package/dist/plugins/golang/atlas/builders/goroutine-topology-builder.d.ts.map +1 -1
  489. package/dist/plugins/golang/atlas/builders/goroutine-topology-builder.js +12 -5
  490. package/dist/plugins/golang/atlas/builders/goroutine-topology-builder.js.map +1 -1
  491. package/dist/plugins/golang/atlas/builders/package-graph-builder.js +5 -5
  492. package/dist/plugins/golang/atlas/builders/package-graph-builder.js.map +1 -1
  493. package/dist/plugins/golang/atlas/framework-detector.d.ts.map +1 -1
  494. package/dist/plugins/golang/atlas/framework-detector.js +2 -0
  495. package/dist/plugins/golang/atlas/framework-detector.js.map +1 -1
  496. package/dist/plugins/golang/atlas/go-mod-resolver.d.ts.map +1 -1
  497. package/dist/plugins/golang/atlas/go-mod-resolver.js +3 -3
  498. package/dist/plugins/golang/atlas/go-mod-resolver.js.map +1 -1
  499. package/dist/plugins/golang/atlas/renderers/atlas-renderer.d.ts.map +1 -1
  500. package/dist/plugins/golang/atlas/renderers/atlas-renderer.js +32 -2
  501. package/dist/plugins/golang/atlas/renderers/atlas-renderer.js.map +1 -1
  502. package/dist/plugins/golang/atlas/renderers/capability-mermaid-template.d.ts.map +1 -1
  503. package/dist/plugins/golang/atlas/renderers/capability-mermaid-template.js +16 -5
  504. package/dist/plugins/golang/atlas/renderers/capability-mermaid-template.js.map +1 -1
  505. package/dist/plugins/golang/atlas/renderers/flow-mermaid-template.js.map +1 -1
  506. package/dist/plugins/golang/atlas/renderers/goroutine-mermaid-template.d.ts.map +1 -1
  507. package/dist/plugins/golang/atlas/renderers/goroutine-mermaid-template.js.map +1 -1
  508. package/dist/plugins/golang/atlas/renderers/mermaid-templates.d.ts.map +1 -1
  509. package/dist/plugins/golang/atlas/renderers/mermaid-templates.js.map +1 -1
  510. package/dist/plugins/golang/atlas/renderers/package-mermaid-template.d.ts.map +1 -1
  511. package/dist/plugins/golang/atlas/renderers/package-mermaid-template.js +5 -5
  512. package/dist/plugins/golang/atlas/renderers/package-mermaid-template.js.map +1 -1
  513. package/dist/plugins/golang/atlas/renderers/template-shared.d.ts.map +1 -1
  514. package/dist/plugins/golang/atlas/renderers/template-shared.js.map +1 -1
  515. package/dist/plugins/golang/atlas/types.d.ts +9 -3
  516. package/dist/plugins/golang/atlas/types.d.ts.map +1 -1
  517. package/dist/plugins/golang/atlas/types.js +1 -1
  518. package/dist/plugins/golang/atlas/types.js.map +1 -1
  519. package/dist/plugins/golang/builders/function-builder.d.ts +19 -0
  520. package/dist/plugins/golang/builders/function-builder.d.ts.map +1 -0
  521. package/dist/plugins/golang/builders/function-builder.js +206 -0
  522. package/dist/plugins/golang/builders/function-builder.js.map +1 -0
  523. package/dist/plugins/golang/builders/goroutine-builder.d.ts +11 -0
  524. package/dist/plugins/golang/builders/goroutine-builder.d.ts.map +1 -0
  525. package/dist/plugins/golang/builders/goroutine-builder.js +147 -0
  526. package/dist/plugins/golang/builders/goroutine-builder.js.map +1 -0
  527. package/dist/plugins/golang/builders/interface-builder.d.ts +9 -0
  528. package/dist/plugins/golang/builders/interface-builder.d.ts.map +1 -0
  529. package/dist/plugins/golang/builders/interface-builder.js +126 -0
  530. package/dist/plugins/golang/builders/interface-builder.js.map +1 -0
  531. package/dist/plugins/golang/builders/node-utils.d.ts +8 -0
  532. package/dist/plugins/golang/builders/node-utils.d.ts.map +1 -0
  533. package/dist/plugins/golang/builders/node-utils.js +18 -0
  534. package/dist/plugins/golang/builders/node-utils.js.map +1 -0
  535. package/dist/plugins/golang/builders/struct-builder.d.ts +12 -0
  536. package/dist/plugins/golang/builders/struct-builder.d.ts.map +1 -0
  537. package/dist/plugins/golang/builders/struct-builder.js +81 -0
  538. package/dist/plugins/golang/builders/struct-builder.js.map +1 -0
  539. package/dist/plugins/golang/go-atlas-adapter.d.ts +11 -0
  540. package/dist/plugins/golang/go-atlas-adapter.d.ts.map +1 -0
  541. package/dist/plugins/golang/go-atlas-adapter.js +47 -0
  542. package/dist/plugins/golang/go-atlas-adapter.js.map +1 -0
  543. package/dist/plugins/golang/go-atlas-coordinator.d.ts +12 -0
  544. package/dist/plugins/golang/go-atlas-coordinator.d.ts.map +1 -0
  545. package/dist/plugins/golang/go-atlas-coordinator.js +76 -0
  546. package/dist/plugins/golang/go-atlas-coordinator.js.map +1 -0
  547. package/dist/plugins/golang/go-mod-reader.d.ts +2 -0
  548. package/dist/plugins/golang/go-mod-reader.d.ts.map +1 -0
  549. package/dist/plugins/golang/go-mod-reader.js +12 -0
  550. package/dist/plugins/golang/go-mod-reader.js.map +1 -0
  551. package/dist/plugins/golang/go-parse-coordinator.d.ts +31 -0
  552. package/dist/plugins/golang/go-parse-coordinator.d.ts.map +1 -0
  553. package/dist/plugins/golang/go-parse-coordinator.js +175 -0
  554. package/dist/plugins/golang/go-parse-coordinator.js.map +1 -0
  555. package/dist/plugins/golang/go-test-analyzer.d.ts +10 -0
  556. package/dist/plugins/golang/go-test-analyzer.d.ts.map +1 -0
  557. package/dist/plugins/golang/go-test-analyzer.js +90 -0
  558. package/dist/plugins/golang/go-test-analyzer.js.map +1 -0
  559. package/dist/plugins/golang/gopls-client.d.ts +31 -2
  560. package/dist/plugins/golang/gopls-client.d.ts.map +1 -1
  561. package/dist/plugins/golang/gopls-client.js +234 -36
  562. package/dist/plugins/golang/gopls-client.js.map +1 -1
  563. package/dist/plugins/golang/gopls-interface-resolver.d.ts +32 -0
  564. package/dist/plugins/golang/gopls-interface-resolver.d.ts.map +1 -0
  565. package/dist/plugins/golang/gopls-interface-resolver.js +80 -0
  566. package/dist/plugins/golang/gopls-interface-resolver.js.map +1 -0
  567. package/dist/plugins/golang/index.d.ts +15 -18
  568. package/dist/plugins/golang/index.d.ts.map +1 -1
  569. package/dist/plugins/golang/index.js +59 -327
  570. package/dist/plugins/golang/index.js.map +1 -1
  571. package/dist/plugins/golang/interface-matcher.d.ts.map +1 -1
  572. package/dist/plugins/golang/interface-matcher.js +32 -30
  573. package/dist/plugins/golang/interface-matcher.js.map +1 -1
  574. package/dist/plugins/golang/tree-sitter-bridge.d.ts +7 -26
  575. package/dist/plugins/golang/tree-sitter-bridge.d.ts.map +1 -1
  576. package/dist/plugins/golang/tree-sitter-bridge.js +36 -544
  577. package/dist/plugins/golang/tree-sitter-bridge.js.map +1 -1
  578. package/dist/plugins/golang/types.d.ts +5 -0
  579. package/dist/plugins/golang/types.d.ts.map +1 -1
  580. package/dist/plugins/java/archjson-mapper.d.ts +3 -1
  581. package/dist/plugins/java/archjson-mapper.d.ts.map +1 -1
  582. package/dist/plugins/java/archjson-mapper.js +123 -0
  583. package/dist/plugins/java/archjson-mapper.js.map +1 -1
  584. package/dist/plugins/java/dependency-extractor.js +2 -2
  585. package/dist/plugins/java/dependency-extractor.js.map +1 -1
  586. package/dist/plugins/java/index.d.ts +6 -2
  587. package/dist/plugins/java/index.d.ts.map +1 -1
  588. package/dist/plugins/java/index.js +85 -17
  589. package/dist/plugins/java/index.js.map +1 -1
  590. package/dist/plugins/java/maven-crossmodule-parser.d.ts +9 -0
  591. package/dist/plugins/java/maven-crossmodule-parser.d.ts.map +1 -0
  592. package/dist/plugins/java/maven-crossmodule-parser.js +54 -0
  593. package/dist/plugins/java/maven-crossmodule-parser.js.map +1 -0
  594. package/dist/plugins/java/tree-sitter-bridge.d.ts +5 -2
  595. package/dist/plugins/java/tree-sitter-bridge.d.ts.map +1 -1
  596. package/dist/plugins/java/tree-sitter-bridge.js +103 -38
  597. package/dist/plugins/java/tree-sitter-bridge.js.map +1 -1
  598. package/dist/plugins/java/types.d.ts +7 -0
  599. package/dist/plugins/java/types.d.ts.map +1 -1
  600. package/dist/plugins/kotlin/archjson-mapper.d.ts +12 -0
  601. package/dist/plugins/kotlin/archjson-mapper.d.ts.map +1 -0
  602. package/dist/plugins/kotlin/archjson-mapper.js +157 -0
  603. package/dist/plugins/kotlin/archjson-mapper.js.map +1 -0
  604. package/dist/plugins/kotlin/builders/class-builder.d.ts +27 -0
  605. package/dist/plugins/kotlin/builders/class-builder.d.ts.map +1 -0
  606. package/dist/plugins/kotlin/builders/class-builder.js +366 -0
  607. package/dist/plugins/kotlin/builders/class-builder.js.map +1 -0
  608. package/dist/plugins/kotlin/builders/function-builder.d.ts +16 -0
  609. package/dist/plugins/kotlin/builders/function-builder.d.ts.map +1 -0
  610. package/dist/plugins/kotlin/builders/function-builder.js +172 -0
  611. package/dist/plugins/kotlin/builders/function-builder.js.map +1 -0
  612. package/dist/plugins/kotlin/builders/import-resolver.d.ts +5 -0
  613. package/dist/plugins/kotlin/builders/import-resolver.d.ts.map +1 -0
  614. package/dist/plugins/kotlin/builders/import-resolver.js +10 -0
  615. package/dist/plugins/kotlin/builders/import-resolver.js.map +1 -0
  616. package/dist/plugins/kotlin/dependency-extractor.d.ts +13 -0
  617. package/dist/plugins/kotlin/dependency-extractor.d.ts.map +1 -0
  618. package/dist/plugins/kotlin/dependency-extractor.js +104 -0
  619. package/dist/plugins/kotlin/dependency-extractor.js.map +1 -0
  620. package/dist/plugins/kotlin/index.d.ts +29 -0
  621. package/dist/plugins/kotlin/index.d.ts.map +1 -0
  622. package/dist/plugins/kotlin/index.js +246 -0
  623. package/dist/plugins/kotlin/index.js.map +1 -0
  624. package/dist/plugins/kotlin/kotlin-type-extractor.d.ts +7 -0
  625. package/dist/plugins/kotlin/kotlin-type-extractor.d.ts.map +1 -0
  626. package/dist/plugins/kotlin/kotlin-type-extractor.js +96 -0
  627. package/dist/plugins/kotlin/kotlin-type-extractor.js.map +1 -0
  628. package/dist/plugins/kotlin/tree-sitter-bridge.d.ts +15 -0
  629. package/dist/plugins/kotlin/tree-sitter-bridge.d.ts.map +1 -0
  630. package/dist/plugins/kotlin/tree-sitter-bridge.js +78 -0
  631. package/dist/plugins/kotlin/tree-sitter-bridge.js.map +1 -0
  632. package/dist/plugins/kotlin/types.d.ts +48 -0
  633. package/dist/plugins/kotlin/types.d.ts.map +1 -0
  634. package/dist/plugins/kotlin/types.js +2 -0
  635. package/dist/plugins/kotlin/types.js.map +1 -0
  636. package/dist/plugins/python/archjson-mapper.d.ts +7 -2
  637. package/dist/plugins/python/archjson-mapper.d.ts.map +1 -1
  638. package/dist/plugins/python/archjson-mapper.js +117 -10
  639. package/dist/plugins/python/archjson-mapper.js.map +1 -1
  640. package/dist/plugins/python/dependency-extractor.js +1 -1
  641. package/dist/plugins/python/dependency-extractor.js.map +1 -1
  642. package/dist/plugins/python/import-extractor.d.ts +11 -0
  643. package/dist/plugins/python/import-extractor.d.ts.map +1 -0
  644. package/dist/plugins/python/import-extractor.js +67 -0
  645. package/dist/plugins/python/import-extractor.js.map +1 -0
  646. package/dist/plugins/python/index.d.ts +8 -3
  647. package/dist/plugins/python/index.d.ts.map +1 -1
  648. package/dist/plugins/python/index.js +98 -12
  649. package/dist/plugins/python/index.js.map +1 -1
  650. package/dist/plugins/python/tree-sitter-bridge.d.ts +5 -2
  651. package/dist/plugins/python/tree-sitter-bridge.d.ts.map +1 -1
  652. package/dist/plugins/python/tree-sitter-bridge.js +117 -49
  653. package/dist/plugins/python/tree-sitter-bridge.js.map +1 -1
  654. package/dist/plugins/python/types.d.ts +6 -0
  655. package/dist/plugins/python/types.d.ts.map +1 -1
  656. package/dist/plugins/shared/mapper-utils.d.ts +1 -1
  657. package/dist/plugins/shared/mapper-utils.d.ts.map +1 -1
  658. package/dist/plugins/shared/mapper-utils.js.map +1 -1
  659. package/dist/plugins/shared/native-parser-backend.d.ts +33 -0
  660. package/dist/plugins/shared/native-parser-backend.d.ts.map +1 -0
  661. package/dist/plugins/shared/native-parser-backend.js +84 -0
  662. package/dist/plugins/shared/native-parser-backend.js.map +1 -0
  663. package/dist/plugins/shared/parser-backend.d.ts +13 -0
  664. package/dist/plugins/shared/parser-backend.d.ts.map +1 -0
  665. package/dist/plugins/shared/parser-backend.js +38 -0
  666. package/dist/plugins/shared/parser-backend.js.map +1 -0
  667. package/dist/plugins/shared/parser-runtime.d.ts +32 -0
  668. package/dist/plugins/shared/parser-runtime.d.ts.map +1 -0
  669. package/dist/plugins/shared/parser-runtime.js +152 -0
  670. package/dist/plugins/shared/parser-runtime.js.map +1 -0
  671. package/dist/plugins/shared/plugin-factory.d.ts +5 -0
  672. package/dist/plugins/shared/plugin-factory.d.ts.map +1 -0
  673. package/dist/plugins/shared/plugin-factory.js +27 -0
  674. package/dist/plugins/shared/plugin-factory.js.map +1 -0
  675. package/dist/plugins/shared/syntax-tree.d.ts +32 -0
  676. package/dist/plugins/shared/syntax-tree.d.ts.map +1 -0
  677. package/dist/plugins/shared/syntax-tree.js +2 -0
  678. package/dist/plugins/shared/syntax-tree.js.map +1 -0
  679. package/dist/plugins/shared/wasm-parser-backend.d.ts +18 -0
  680. package/dist/plugins/shared/wasm-parser-backend.d.ts.map +1 -0
  681. package/dist/plugins/shared/wasm-parser-backend.js +118 -0
  682. package/dist/plugins/shared/wasm-parser-backend.js.map +1 -0
  683. package/dist/plugins/typescript/builders/module-graph-builder.d.ts +2 -2
  684. package/dist/plugins/typescript/builders/module-graph-builder.d.ts.map +1 -1
  685. package/dist/plugins/typescript/builders/module-graph-builder.js +31 -9
  686. package/dist/plugins/typescript/builders/module-graph-builder.js.map +1 -1
  687. package/dist/plugins/typescript/index.d.ts +3 -2
  688. package/dist/plugins/typescript/index.d.ts.map +1 -1
  689. package/dist/plugins/typescript/index.js +116 -10
  690. package/dist/plugins/typescript/index.js.map +1 -1
  691. package/dist/plugins/typescript/typescript-analyzer.d.ts +2 -2
  692. package/dist/plugins/typescript/typescript-analyzer.d.ts.map +1 -1
  693. package/dist/plugins/typescript/typescript-analyzer.js +1 -1
  694. package/dist/plugins/typescript/typescript-analyzer.js.map +1 -1
  695. package/dist/types/cognitive-summary.d.ts +20 -0
  696. package/dist/types/cognitive-summary.d.ts.map +1 -0
  697. package/dist/types/cognitive-summary.js +2 -0
  698. package/dist/types/cognitive-summary.js.map +1 -0
  699. package/dist/types/config-cli.d.ts +4 -0
  700. package/dist/types/config-cli.d.ts.map +1 -1
  701. package/dist/types/config-global.d.ts +10 -0
  702. package/dist/types/config-global.d.ts.map +1 -1
  703. package/dist/types/config.d.ts +1 -0
  704. package/dist/types/config.d.ts.map +1 -1
  705. package/dist/types/config.js +1 -0
  706. package/dist/types/config.js.map +1 -1
  707. package/dist/types/{extensions.d.ts → extensions/go-atlas.d.ts} +5 -106
  708. package/dist/types/extensions/go-atlas.d.ts.map +1 -0
  709. package/dist/types/extensions/go-atlas.js +2 -0
  710. package/dist/types/extensions/go-atlas.js.map +1 -0
  711. package/dist/types/extensions/index.d.ts +15 -0
  712. package/dist/types/extensions/index.d.ts.map +1 -0
  713. package/dist/types/extensions/index.js +5 -0
  714. package/dist/types/extensions/index.js.map +1 -0
  715. package/dist/types/extensions/project-semantics.d.ts +55 -0
  716. package/dist/types/extensions/project-semantics.d.ts.map +1 -0
  717. package/dist/types/extensions/project-semantics.js +126 -0
  718. package/dist/types/extensions/project-semantics.js.map +1 -0
  719. package/dist/types/extensions/test-analysis.d.ts +68 -0
  720. package/dist/types/extensions/test-analysis.d.ts.map +1 -0
  721. package/dist/types/extensions/test-analysis.js +2 -0
  722. package/dist/types/extensions/test-analysis.js.map +1 -0
  723. package/dist/types/extensions/ts-analysis.d.ts +33 -0
  724. package/dist/types/extensions/ts-analysis.d.ts.map +1 -0
  725. package/dist/types/extensions/ts-analysis.js +2 -0
  726. package/dist/types/extensions/ts-analysis.js.map +1 -0
  727. package/dist/types/fitness-rules.d.ts +34 -0
  728. package/dist/types/fitness-rules.d.ts.map +1 -0
  729. package/dist/types/fitness-rules.js +2 -0
  730. package/dist/types/fitness-rules.js.map +1 -0
  731. package/dist/types/git-history.d.ts +68 -0
  732. package/dist/types/git-history.d.ts.map +1 -0
  733. package/dist/types/git-history.js +2 -0
  734. package/dist/types/git-history.js.map +1 -0
  735. package/dist/types/index.d.ts +38 -29
  736. package/dist/types/index.d.ts.map +1 -1
  737. package/dist/types/index.js +2 -1
  738. package/dist/types/index.js.map +1 -1
  739. package/dist/types/metric-vector.d.ts +17 -0
  740. package/dist/types/metric-vector.d.ts.map +1 -0
  741. package/dist/types/metric-vector.js +2 -0
  742. package/dist/types/metric-vector.js.map +1 -0
  743. package/dist/types/parser-runtime.d.ts +4 -0
  744. package/dist/types/parser-runtime.d.ts.map +1 -0
  745. package/dist/types/parser-runtime.js +5 -0
  746. package/dist/types/parser-runtime.js.map +1 -0
  747. package/dist/utils/cli-detector.js +2 -2
  748. package/dist/utils/cli-detector.js.map +1 -1
  749. package/dist/utils/tsconfig-finder.d.ts.map +1 -1
  750. package/dist/utils/tsconfig-finder.js +6 -1
  751. package/dist/utils/tsconfig-finder.js.map +1 -1
  752. package/package.json +32 -16
  753. package/dist/cli/cache-manager.d.ts.map +0 -1
  754. package/dist/cli/cache-manager.js.map +0 -1
  755. package/dist/cli/error-handler.d.ts +0 -15
  756. package/dist/cli/error-handler.d.ts.map +0 -1
  757. package/dist/cli/error-handler.js.map +0 -1
  758. package/dist/cli/errors.d.ts.map +0 -1
  759. package/dist/cli/errors.js +0 -31
  760. package/dist/cli/errors.js.map +0 -1
  761. package/dist/cli/progress.d.ts.map +0 -1
  762. package/dist/cli/progress.js.map +0 -1
  763. package/dist/types/extensions.d.ts.map +0 -1
  764. package/dist/types/extensions.js +0 -4
  765. package/dist/types/extensions.js.map +0 -1
  766. package/node_modules/node-addon-api/LICENSE.md +0 -9
  767. package/node_modules/node-addon-api/README.md +0 -95
  768. package/node_modules/node-addon-api/common.gypi +0 -21
  769. package/node_modules/node-addon-api/except.gypi +0 -25
  770. package/node_modules/node-addon-api/index.js +0 -14
  771. package/node_modules/node-addon-api/napi-inl.deprecated.h +0 -186
  772. package/node_modules/node-addon-api/napi-inl.h +0 -7033
  773. package/node_modules/node-addon-api/napi.h +0 -3309
  774. package/node_modules/node-addon-api/node_addon_api.gyp +0 -42
  775. package/node_modules/node-addon-api/node_api.gyp +0 -9
  776. package/node_modules/node-addon-api/noexcept.gypi +0 -26
  777. package/node_modules/node-addon-api/nothing.c +0 -0
  778. package/node_modules/node-addon-api/package-support.json +0 -21
  779. package/node_modules/node-addon-api/package.json +0 -480
  780. package/node_modules/node-addon-api/tools/README.md +0 -73
  781. package/node_modules/node-addon-api/tools/check-napi.js +0 -99
  782. package/node_modules/node-addon-api/tools/clang-format.js +0 -71
  783. package/node_modules/node-addon-api/tools/conversion.js +0 -301
  784. package/node_modules/node-gyp-build/README.md +0 -58
  785. package/node_modules/node-gyp-build/SECURITY.md +0 -5
  786. package/node_modules/node-gyp-build/bin.js +0 -84
  787. package/node_modules/node-gyp-build/build-test.js +0 -19
  788. package/node_modules/node-gyp-build/index.js +0 -6
  789. package/node_modules/node-gyp-build/node-gyp-build.js +0 -207
  790. package/node_modules/node-gyp-build/optional.js +0 -7
  791. package/node_modules/node-gyp-build/package.json +0 -43
  792. package/node_modules/tree-sitter/README.md +0 -128
  793. package/node_modules/tree-sitter/binding.gyp +0 -80
  794. package/node_modules/tree-sitter/index.js +0 -916
  795. package/node_modules/tree-sitter/package.json +0 -76
  796. package/node_modules/tree-sitter/prebuilds/linux-x64/node.napi.glibc.node +0 -0
  797. package/node_modules/tree-sitter/src/addon_data.h +0 -47
  798. package/node_modules/tree-sitter/src/binding.cc +0 -35
  799. package/node_modules/tree-sitter/src/conversions.cc +0 -140
  800. package/node_modules/tree-sitter/src/conversions.h +0 -22
  801. package/node_modules/tree-sitter/src/language.cc +0 -106
  802. package/node_modules/tree-sitter/src/language.h +0 -17
  803. package/node_modules/tree-sitter/src/logger.cc +0 -70
  804. package/node_modules/tree-sitter/src/logger.h +0 -19
  805. package/node_modules/tree-sitter/src/lookaheaditerator.cc +0 -122
  806. package/node_modules/tree-sitter/src/lookaheaditerator.h +0 -33
  807. package/node_modules/tree-sitter/src/node.cc +0 -1088
  808. package/node_modules/tree-sitter/src/node.h +0 -30
  809. package/node_modules/tree-sitter/src/parser.cc +0 -306
  810. package/node_modules/tree-sitter/src/parser.h +0 -35
  811. package/node_modules/tree-sitter/src/query.cc +0 -397
  812. package/node_modules/tree-sitter/src/query.h +0 -40
  813. package/node_modules/tree-sitter/src/tree.cc +0 -316
  814. package/node_modules/tree-sitter/src/tree.h +0 -45
  815. package/node_modules/tree-sitter/src/tree_cursor.cc +0 -213
  816. package/node_modules/tree-sitter/src/tree_cursor.h +0 -52
  817. package/node_modules/tree-sitter/tree-sitter.d.ts +0 -1042
  818. package/node_modules/tree-sitter/vendor/tree-sitter/lib/include/tree_sitter/api.h +0 -1478
  819. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/alloc.c +0 -48
  820. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/alloc.h +0 -41
  821. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/array.h +0 -291
  822. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/atomic.h +0 -68
  823. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/clock.h +0 -146
  824. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/error_costs.h +0 -11
  825. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/get_changed_ranges.c +0 -523
  826. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/get_changed_ranges.h +0 -36
  827. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/host.h +0 -21
  828. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/language.c +0 -293
  829. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/language.h +0 -293
  830. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/length.h +0 -52
  831. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/lexer.c +0 -483
  832. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/lexer.h +0 -54
  833. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/lib.c +0 -12
  834. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/node.c +0 -875
  835. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/parser.c +0 -2293
  836. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/parser.h +0 -286
  837. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/point.h +0 -48
  838. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/portable/endian.h +0 -239
  839. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/query.c +0 -4350
  840. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/reduce_action.h +0 -34
  841. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/reusable_node.h +0 -95
  842. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/stack.c +0 -911
  843. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/stack.h +0 -133
  844. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/subtree.c +0 -1034
  845. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/subtree.h +0 -399
  846. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree.c +0 -170
  847. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree.h +0 -31
  848. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree_cursor.c +0 -717
  849. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree_cursor.h +0 -48
  850. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/ts_assert.h +0 -11
  851. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/ICU_SHA +0 -1
  852. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/LICENSE +0 -414
  853. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/README.md +0 -29
  854. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/ptypes.h +0 -1
  855. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/umachine.h +0 -448
  856. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/urename.h +0 -1
  857. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/utf.h +0 -1
  858. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/utf16.h +0 -733
  859. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/utf8.h +0 -881
  860. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode.h +0 -75
  861. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm/stdlib-symbols.txt +0 -24
  862. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm/stdlib.c +0 -113
  863. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm/wasm-stdlib.h +0 -1314
  864. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm_store.c +0 -1935
  865. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm_store.h +0 -31
  866. package/scripts/postinstall-tree-sitter.mjs +0 -28
@@ -1,1034 +0,0 @@
1
- #include <ctype.h>
2
- #include <stdint.h>
3
- #include <stdbool.h>
4
- #include <string.h>
5
- #include <stdio.h>
6
- #include "./alloc.h"
7
- #include "./array.h"
8
- #include "./atomic.h"
9
- #include "./subtree.h"
10
- #include "./length.h"
11
- #include "./language.h"
12
- #include "./error_costs.h"
13
- #include "./ts_assert.h"
14
- #include <stddef.h>
15
-
16
- typedef struct {
17
- Length start;
18
- Length old_end;
19
- Length new_end;
20
- } Edit;
21
-
22
- #define TS_MAX_INLINE_TREE_LENGTH UINT8_MAX
23
- #define TS_MAX_TREE_POOL_SIZE 32
24
-
25
- // ExternalScannerState
26
-
27
- void ts_external_scanner_state_init(ExternalScannerState *self, const char *data, unsigned length) {
28
- self->length = length;
29
- if (length > sizeof(self->short_data)) {
30
- self->long_data = ts_malloc(length);
31
- memcpy(self->long_data, data, length);
32
- } else {
33
- memcpy(self->short_data, data, length);
34
- }
35
- }
36
-
37
- ExternalScannerState ts_external_scanner_state_copy(const ExternalScannerState *self) {
38
- ExternalScannerState result = *self;
39
- if (self->length > sizeof(self->short_data)) {
40
- result.long_data = ts_malloc(self->length);
41
- memcpy(result.long_data, self->long_data, self->length);
42
- }
43
- return result;
44
- }
45
-
46
- void ts_external_scanner_state_delete(ExternalScannerState *self) {
47
- if (self->length > sizeof(self->short_data)) {
48
- ts_free(self->long_data);
49
- }
50
- }
51
-
52
- const char *ts_external_scanner_state_data(const ExternalScannerState *self) {
53
- if (self->length > sizeof(self->short_data)) {
54
- return self->long_data;
55
- } else {
56
- return self->short_data;
57
- }
58
- }
59
-
60
- bool ts_external_scanner_state_eq(const ExternalScannerState *self, const char *buffer, unsigned length) {
61
- return
62
- self->length == length &&
63
- memcmp(ts_external_scanner_state_data(self), buffer, length) == 0;
64
- }
65
-
66
- // SubtreeArray
67
-
68
- void ts_subtree_array_copy(SubtreeArray self, SubtreeArray *dest) {
69
- dest->size = self.size;
70
- dest->capacity = self.capacity;
71
- dest->contents = self.contents;
72
- if (self.capacity > 0) {
73
- dest->contents = ts_calloc(self.capacity, sizeof(Subtree));
74
- memcpy(dest->contents, self.contents, self.size * sizeof(Subtree));
75
- for (uint32_t i = 0; i < self.size; i++) {
76
- ts_subtree_retain(dest->contents[i]);
77
- }
78
- }
79
- }
80
-
81
- void ts_subtree_array_clear(SubtreePool *pool, SubtreeArray *self) {
82
- for (uint32_t i = 0; i < self->size; i++) {
83
- ts_subtree_release(pool, self->contents[i]);
84
- }
85
- array_clear(self);
86
- }
87
-
88
- void ts_subtree_array_delete(SubtreePool *pool, SubtreeArray *self) {
89
- ts_subtree_array_clear(pool, self);
90
- array_delete(self);
91
- }
92
-
93
- void ts_subtree_array_remove_trailing_extras(
94
- SubtreeArray *self,
95
- SubtreeArray *destination
96
- ) {
97
- array_clear(destination);
98
- while (self->size > 0) {
99
- Subtree last = self->contents[self->size - 1];
100
- if (ts_subtree_extra(last)) {
101
- self->size--;
102
- array_push(destination, last);
103
- } else {
104
- break;
105
- }
106
- }
107
- ts_subtree_array_reverse(destination);
108
- }
109
-
110
- void ts_subtree_array_reverse(SubtreeArray *self) {
111
- for (uint32_t i = 0, limit = self->size / 2; i < limit; i++) {
112
- size_t reverse_index = self->size - 1 - i;
113
- Subtree swap = self->contents[i];
114
- self->contents[i] = self->contents[reverse_index];
115
- self->contents[reverse_index] = swap;
116
- }
117
- }
118
-
119
- // SubtreePool
120
-
121
- SubtreePool ts_subtree_pool_new(uint32_t capacity) {
122
- SubtreePool self = {array_new(), array_new()};
123
- array_reserve(&self.free_trees, capacity);
124
- return self;
125
- }
126
-
127
- void ts_subtree_pool_delete(SubtreePool *self) {
128
- if (self->free_trees.contents) {
129
- for (unsigned i = 0; i < self->free_trees.size; i++) {
130
- ts_free(self->free_trees.contents[i].ptr);
131
- }
132
- array_delete(&self->free_trees);
133
- }
134
- if (self->tree_stack.contents) array_delete(&self->tree_stack);
135
- }
136
-
137
- static SubtreeHeapData *ts_subtree_pool_allocate(SubtreePool *self) {
138
- if (self->free_trees.size > 0) {
139
- return array_pop(&self->free_trees).ptr;
140
- } else {
141
- return ts_malloc(sizeof(SubtreeHeapData));
142
- }
143
- }
144
-
145
- static void ts_subtree_pool_free(SubtreePool *self, SubtreeHeapData *tree) {
146
- if (self->free_trees.capacity > 0 && self->free_trees.size + 1 <= TS_MAX_TREE_POOL_SIZE) {
147
- array_push(&self->free_trees, (MutableSubtree) {.ptr = tree});
148
- } else {
149
- ts_free(tree);
150
- }
151
- }
152
-
153
- // Subtree
154
-
155
- static inline bool ts_subtree_can_inline(Length padding, Length size, uint32_t lookahead_bytes) {
156
- return
157
- padding.bytes < TS_MAX_INLINE_TREE_LENGTH &&
158
- padding.extent.row < 16 &&
159
- padding.extent.column < TS_MAX_INLINE_TREE_LENGTH &&
160
- size.bytes < TS_MAX_INLINE_TREE_LENGTH &&
161
- size.extent.row == 0 &&
162
- size.extent.column < TS_MAX_INLINE_TREE_LENGTH &&
163
- lookahead_bytes < 16;
164
- }
165
-
166
- Subtree ts_subtree_new_leaf(
167
- SubtreePool *pool, TSSymbol symbol, Length padding, Length size,
168
- uint32_t lookahead_bytes, TSStateId parse_state,
169
- bool has_external_tokens, bool depends_on_column,
170
- bool is_keyword, const TSLanguage *language
171
- ) {
172
- TSSymbolMetadata metadata = ts_language_symbol_metadata(language, symbol);
173
- bool extra = symbol == ts_builtin_sym_end;
174
-
175
- bool is_inline = (
176
- symbol <= UINT8_MAX &&
177
- !has_external_tokens &&
178
- ts_subtree_can_inline(padding, size, lookahead_bytes)
179
- );
180
-
181
- if (is_inline) {
182
- return (Subtree) {{
183
- .parse_state = parse_state,
184
- .symbol = symbol,
185
- .padding_bytes = padding.bytes,
186
- .padding_rows = padding.extent.row,
187
- .padding_columns = padding.extent.column,
188
- .size_bytes = size.bytes,
189
- .lookahead_bytes = lookahead_bytes,
190
- .visible = metadata.visible,
191
- .named = metadata.named,
192
- .extra = extra,
193
- .has_changes = false,
194
- .is_missing = false,
195
- .is_keyword = is_keyword,
196
- .is_inline = true,
197
- }};
198
- } else {
199
- SubtreeHeapData *data = ts_subtree_pool_allocate(pool);
200
- *data = (SubtreeHeapData) {
201
- .ref_count = 1,
202
- .padding = padding,
203
- .size = size,
204
- .lookahead_bytes = lookahead_bytes,
205
- .error_cost = 0,
206
- .child_count = 0,
207
- .symbol = symbol,
208
- .parse_state = parse_state,
209
- .visible = metadata.visible,
210
- .named = metadata.named,
211
- .extra = extra,
212
- .fragile_left = false,
213
- .fragile_right = false,
214
- .has_changes = false,
215
- .has_external_tokens = has_external_tokens,
216
- .has_external_scanner_state_change = false,
217
- .depends_on_column = depends_on_column,
218
- .is_missing = false,
219
- .is_keyword = is_keyword,
220
- {{.first_leaf = {.symbol = 0, .parse_state = 0}}}
221
- };
222
- return (Subtree) {.ptr = data};
223
- }
224
- }
225
-
226
- void ts_subtree_set_symbol(
227
- MutableSubtree *self,
228
- TSSymbol symbol,
229
- const TSLanguage *language
230
- ) {
231
- TSSymbolMetadata metadata = ts_language_symbol_metadata(language, symbol);
232
- if (self->data.is_inline) {
233
- ts_assert(symbol < UINT8_MAX);
234
- self->data.symbol = symbol;
235
- self->data.named = metadata.named;
236
- self->data.visible = metadata.visible;
237
- } else {
238
- self->ptr->symbol = symbol;
239
- self->ptr->named = metadata.named;
240
- self->ptr->visible = metadata.visible;
241
- }
242
- }
243
-
244
- Subtree ts_subtree_new_error(
245
- SubtreePool *pool, int32_t lookahead_char, Length padding, Length size,
246
- uint32_t bytes_scanned, TSStateId parse_state, const TSLanguage *language
247
- ) {
248
- Subtree result = ts_subtree_new_leaf(
249
- pool, ts_builtin_sym_error, padding, size, bytes_scanned,
250
- parse_state, false, false, false, language
251
- );
252
- SubtreeHeapData *data = (SubtreeHeapData *)result.ptr;
253
- data->fragile_left = true;
254
- data->fragile_right = true;
255
- data->lookahead_char = lookahead_char;
256
- return result;
257
- }
258
-
259
- // Clone a subtree.
260
- MutableSubtree ts_subtree_clone(Subtree self) {
261
- size_t alloc_size = ts_subtree_alloc_size(self.ptr->child_count);
262
- Subtree *new_children = ts_malloc(alloc_size);
263
- Subtree *old_children = ts_subtree_children(self);
264
- memcpy(new_children, old_children, alloc_size);
265
- SubtreeHeapData *result = (SubtreeHeapData *)&new_children[self.ptr->child_count];
266
- if (self.ptr->child_count > 0) {
267
- for (uint32_t i = 0; i < self.ptr->child_count; i++) {
268
- ts_subtree_retain(new_children[i]);
269
- }
270
- } else if (self.ptr->has_external_tokens) {
271
- result->external_scanner_state = ts_external_scanner_state_copy(
272
- &self.ptr->external_scanner_state
273
- );
274
- }
275
- result->ref_count = 1;
276
- return (MutableSubtree) {.ptr = result};
277
- }
278
-
279
- // Get mutable version of a subtree.
280
- //
281
- // This takes ownership of the subtree. If the subtree has only one owner,
282
- // this will directly convert it into a mutable version. Otherwise, it will
283
- // perform a copy.
284
- MutableSubtree ts_subtree_make_mut(SubtreePool *pool, Subtree self) {
285
- if (self.data.is_inline) return (MutableSubtree) {self.data};
286
- if (self.ptr->ref_count == 1) return ts_subtree_to_mut_unsafe(self);
287
- MutableSubtree result = ts_subtree_clone(self);
288
- ts_subtree_release(pool, self);
289
- return result;
290
- }
291
-
292
- void ts_subtree_compress(
293
- MutableSubtree self,
294
- unsigned count,
295
- const TSLanguage *language,
296
- MutableSubtreeArray *stack
297
- ) {
298
- unsigned initial_stack_size = stack->size;
299
-
300
- MutableSubtree tree = self;
301
- TSSymbol symbol = tree.ptr->symbol;
302
- for (unsigned i = 0; i < count; i++) {
303
- if (tree.ptr->ref_count > 1 || tree.ptr->child_count < 2) break;
304
-
305
- MutableSubtree child = ts_subtree_to_mut_unsafe(ts_subtree_children(tree)[0]);
306
- if (
307
- child.data.is_inline ||
308
- child.ptr->child_count < 2 ||
309
- child.ptr->ref_count > 1 ||
310
- child.ptr->symbol != symbol
311
- ) break;
312
-
313
- MutableSubtree grandchild = ts_subtree_to_mut_unsafe(ts_subtree_children(child)[0]);
314
- if (
315
- grandchild.data.is_inline ||
316
- grandchild.ptr->child_count < 2 ||
317
- grandchild.ptr->ref_count > 1 ||
318
- grandchild.ptr->symbol != symbol
319
- ) break;
320
-
321
- ts_subtree_children(tree)[0] = ts_subtree_from_mut(grandchild);
322
- ts_subtree_children(child)[0] = ts_subtree_children(grandchild)[grandchild.ptr->child_count - 1];
323
- ts_subtree_children(grandchild)[grandchild.ptr->child_count - 1] = ts_subtree_from_mut(child);
324
- array_push(stack, tree);
325
- tree = grandchild;
326
- }
327
-
328
- while (stack->size > initial_stack_size) {
329
- tree = array_pop(stack);
330
- MutableSubtree child = ts_subtree_to_mut_unsafe(ts_subtree_children(tree)[0]);
331
- MutableSubtree grandchild = ts_subtree_to_mut_unsafe(ts_subtree_children(child)[child.ptr->child_count - 1]);
332
- ts_subtree_summarize_children(grandchild, language);
333
- ts_subtree_summarize_children(child, language);
334
- ts_subtree_summarize_children(tree, language);
335
- }
336
- }
337
-
338
- // Assign all of the node's properties that depend on its children.
339
- void ts_subtree_summarize_children(
340
- MutableSubtree self,
341
- const TSLanguage *language
342
- ) {
343
- ts_assert(!self.data.is_inline);
344
-
345
- self.ptr->named_child_count = 0;
346
- self.ptr->visible_child_count = 0;
347
- self.ptr->error_cost = 0;
348
- self.ptr->repeat_depth = 0;
349
- self.ptr->visible_descendant_count = 0;
350
- self.ptr->has_external_tokens = false;
351
- self.ptr->depends_on_column = false;
352
- self.ptr->has_external_scanner_state_change = false;
353
- self.ptr->dynamic_precedence = 0;
354
-
355
- uint32_t structural_index = 0;
356
- const TSSymbol *alias_sequence = ts_language_alias_sequence(language, self.ptr->production_id);
357
- uint32_t lookahead_end_byte = 0;
358
-
359
- const Subtree *children = ts_subtree_children(self);
360
- for (uint32_t i = 0; i < self.ptr->child_count; i++) {
361
- Subtree child = children[i];
362
-
363
- if (
364
- self.ptr->size.extent.row == 0 &&
365
- ts_subtree_depends_on_column(child)
366
- ) {
367
- self.ptr->depends_on_column = true;
368
- }
369
-
370
- if (ts_subtree_has_external_scanner_state_change(child)) {
371
- self.ptr->has_external_scanner_state_change = true;
372
- }
373
-
374
- if (i == 0) {
375
- self.ptr->padding = ts_subtree_padding(child);
376
- self.ptr->size = ts_subtree_size(child);
377
- } else {
378
- self.ptr->size = length_add(self.ptr->size, ts_subtree_total_size(child));
379
- }
380
-
381
- uint32_t child_lookahead_end_byte =
382
- self.ptr->padding.bytes +
383
- self.ptr->size.bytes +
384
- ts_subtree_lookahead_bytes(child);
385
- if (child_lookahead_end_byte > lookahead_end_byte) {
386
- lookahead_end_byte = child_lookahead_end_byte;
387
- }
388
-
389
- if (ts_subtree_symbol(child) != ts_builtin_sym_error_repeat) {
390
- self.ptr->error_cost += ts_subtree_error_cost(child);
391
- }
392
-
393
- uint32_t grandchild_count = ts_subtree_child_count(child);
394
- if (
395
- self.ptr->symbol == ts_builtin_sym_error ||
396
- self.ptr->symbol == ts_builtin_sym_error_repeat
397
- ) {
398
- if (!ts_subtree_extra(child) && !(ts_subtree_is_error(child) && grandchild_count == 0)) {
399
- if (ts_subtree_visible(child)) {
400
- self.ptr->error_cost += ERROR_COST_PER_SKIPPED_TREE;
401
- } else if (grandchild_count > 0) {
402
- self.ptr->error_cost += ERROR_COST_PER_SKIPPED_TREE * child.ptr->visible_child_count;
403
- }
404
- }
405
- }
406
-
407
- self.ptr->dynamic_precedence += ts_subtree_dynamic_precedence(child);
408
- self.ptr->visible_descendant_count += ts_subtree_visible_descendant_count(child);
409
-
410
- if (
411
- !ts_subtree_extra(child) &&
412
- ts_subtree_symbol(child) != 0 &&
413
- alias_sequence &&
414
- alias_sequence[structural_index] != 0
415
- ) {
416
- self.ptr->visible_descendant_count++;
417
- self.ptr->visible_child_count++;
418
- if (ts_language_symbol_metadata(language, alias_sequence[structural_index]).named) {
419
- self.ptr->named_child_count++;
420
- }
421
- } else if (ts_subtree_visible(child)) {
422
- self.ptr->visible_descendant_count++;
423
- self.ptr->visible_child_count++;
424
- if (ts_subtree_named(child)) self.ptr->named_child_count++;
425
- } else if (grandchild_count > 0) {
426
- self.ptr->visible_child_count += child.ptr->visible_child_count;
427
- self.ptr->named_child_count += child.ptr->named_child_count;
428
- }
429
-
430
- if (ts_subtree_has_external_tokens(child)) self.ptr->has_external_tokens = true;
431
-
432
- if (ts_subtree_is_error(child)) {
433
- self.ptr->fragile_left = self.ptr->fragile_right = true;
434
- self.ptr->parse_state = TS_TREE_STATE_NONE;
435
- }
436
-
437
- if (!ts_subtree_extra(child)) structural_index++;
438
- }
439
-
440
- self.ptr->lookahead_bytes = lookahead_end_byte - self.ptr->size.bytes - self.ptr->padding.bytes;
441
-
442
- if (
443
- self.ptr->symbol == ts_builtin_sym_error ||
444
- self.ptr->symbol == ts_builtin_sym_error_repeat
445
- ) {
446
- self.ptr->error_cost +=
447
- ERROR_COST_PER_RECOVERY +
448
- ERROR_COST_PER_SKIPPED_CHAR * self.ptr->size.bytes +
449
- ERROR_COST_PER_SKIPPED_LINE * self.ptr->size.extent.row;
450
- }
451
-
452
- if (self.ptr->child_count > 0) {
453
- Subtree first_child = children[0];
454
- Subtree last_child = children[self.ptr->child_count - 1];
455
-
456
- self.ptr->first_leaf.symbol = ts_subtree_leaf_symbol(first_child);
457
- self.ptr->first_leaf.parse_state = ts_subtree_leaf_parse_state(first_child);
458
-
459
- if (ts_subtree_fragile_left(first_child)) self.ptr->fragile_left = true;
460
- if (ts_subtree_fragile_right(last_child)) self.ptr->fragile_right = true;
461
-
462
- if (
463
- self.ptr->child_count >= 2 &&
464
- !self.ptr->visible &&
465
- !self.ptr->named &&
466
- ts_subtree_symbol(first_child) == self.ptr->symbol
467
- ) {
468
- if (ts_subtree_repeat_depth(first_child) > ts_subtree_repeat_depth(last_child)) {
469
- self.ptr->repeat_depth = ts_subtree_repeat_depth(first_child) + 1;
470
- } else {
471
- self.ptr->repeat_depth = ts_subtree_repeat_depth(last_child) + 1;
472
- }
473
- }
474
- }
475
- }
476
-
477
- // Create a new parent node with the given children.
478
- //
479
- // This takes ownership of the children array.
480
- MutableSubtree ts_subtree_new_node(
481
- TSSymbol symbol,
482
- SubtreeArray *children,
483
- unsigned production_id,
484
- const TSLanguage *language
485
- ) {
486
- TSSymbolMetadata metadata = ts_language_symbol_metadata(language, symbol);
487
- bool fragile = symbol == ts_builtin_sym_error || symbol == ts_builtin_sym_error_repeat;
488
-
489
- // Allocate the node's data at the end of the array of children.
490
- size_t new_byte_size = ts_subtree_alloc_size(children->size);
491
- if (children->capacity * sizeof(Subtree) < new_byte_size) {
492
- children->contents = ts_realloc(children->contents, new_byte_size);
493
- children->capacity = (uint32_t)(new_byte_size / sizeof(Subtree));
494
- }
495
- SubtreeHeapData *data = (SubtreeHeapData *)&children->contents[children->size];
496
-
497
- *data = (SubtreeHeapData) {
498
- .ref_count = 1,
499
- .symbol = symbol,
500
- .child_count = children->size,
501
- .visible = metadata.visible,
502
- .named = metadata.named,
503
- .has_changes = false,
504
- .has_external_scanner_state_change = false,
505
- .fragile_left = fragile,
506
- .fragile_right = fragile,
507
- .is_keyword = false,
508
- {{
509
- .visible_descendant_count = 0,
510
- .production_id = production_id,
511
- .first_leaf = {.symbol = 0, .parse_state = 0},
512
- }}
513
- };
514
- MutableSubtree result = {.ptr = data};
515
- ts_subtree_summarize_children(result, language);
516
- return result;
517
- }
518
-
519
- // Create a new error node containing the given children.
520
- //
521
- // This node is treated as 'extra'. Its children are prevented from having
522
- // having any effect on the parse state.
523
- Subtree ts_subtree_new_error_node(
524
- SubtreeArray *children,
525
- bool extra,
526
- const TSLanguage *language
527
- ) {
528
- MutableSubtree result = ts_subtree_new_node(
529
- ts_builtin_sym_error, children, 0, language
530
- );
531
- result.ptr->extra = extra;
532
- return ts_subtree_from_mut(result);
533
- }
534
-
535
- // Create a new 'missing leaf' node.
536
- //
537
- // This node is treated as 'extra'. Its children are prevented from having
538
- // having any effect on the parse state.
539
- Subtree ts_subtree_new_missing_leaf(
540
- SubtreePool *pool,
541
- TSSymbol symbol,
542
- Length padding,
543
- uint32_t lookahead_bytes,
544
- const TSLanguage *language
545
- ) {
546
- Subtree result = ts_subtree_new_leaf(
547
- pool, symbol, padding, length_zero(), lookahead_bytes,
548
- 0, false, false, false, language
549
- );
550
- if (result.data.is_inline) {
551
- result.data.is_missing = true;
552
- } else {
553
- ((SubtreeHeapData *)result.ptr)->is_missing = true;
554
- }
555
- return result;
556
- }
557
-
558
- void ts_subtree_retain(Subtree self) {
559
- if (self.data.is_inline) return;
560
- ts_assert(self.ptr->ref_count > 0);
561
- atomic_inc((volatile uint32_t *)&self.ptr->ref_count);
562
- ts_assert(self.ptr->ref_count != 0);
563
- }
564
-
565
- void ts_subtree_release(SubtreePool *pool, Subtree self) {
566
- if (self.data.is_inline) return;
567
- array_clear(&pool->tree_stack);
568
-
569
- ts_assert(self.ptr->ref_count > 0);
570
- if (atomic_dec((volatile uint32_t *)&self.ptr->ref_count) == 0) {
571
- array_push(&pool->tree_stack, ts_subtree_to_mut_unsafe(self));
572
- }
573
-
574
- while (pool->tree_stack.size > 0) {
575
- MutableSubtree tree = array_pop(&pool->tree_stack);
576
- if (tree.ptr->child_count > 0) {
577
- Subtree *children = ts_subtree_children(tree);
578
- for (uint32_t i = 0; i < tree.ptr->child_count; i++) {
579
- Subtree child = children[i];
580
- if (child.data.is_inline) continue;
581
- ts_assert(child.ptr->ref_count > 0);
582
- if (atomic_dec((volatile uint32_t *)&child.ptr->ref_count) == 0) {
583
- array_push(&pool->tree_stack, ts_subtree_to_mut_unsafe(child));
584
- }
585
- }
586
- ts_free(children);
587
- } else {
588
- if (tree.ptr->has_external_tokens) {
589
- ts_external_scanner_state_delete(&tree.ptr->external_scanner_state);
590
- }
591
- ts_subtree_pool_free(pool, tree.ptr);
592
- }
593
- }
594
- }
595
-
596
- int ts_subtree_compare(Subtree left, Subtree right, SubtreePool *pool) {
597
- array_push(&pool->tree_stack, ts_subtree_to_mut_unsafe(left));
598
- array_push(&pool->tree_stack, ts_subtree_to_mut_unsafe(right));
599
-
600
- while (pool->tree_stack.size > 0) {
601
- right = ts_subtree_from_mut(array_pop(&pool->tree_stack));
602
- left = ts_subtree_from_mut(array_pop(&pool->tree_stack));
603
-
604
- int result = 0;
605
- if (ts_subtree_symbol(left) < ts_subtree_symbol(right)) result = -1;
606
- else if (ts_subtree_symbol(right) < ts_subtree_symbol(left)) result = 1;
607
- else if (ts_subtree_child_count(left) < ts_subtree_child_count(right)) result = -1;
608
- else if (ts_subtree_child_count(right) < ts_subtree_child_count(left)) result = 1;
609
- if (result != 0) {
610
- array_clear(&pool->tree_stack);
611
- return result;
612
- }
613
-
614
- for (uint32_t i = ts_subtree_child_count(left); i > 0; i--) {
615
- Subtree left_child = ts_subtree_children(left)[i - 1];
616
- Subtree right_child = ts_subtree_children(right)[i - 1];
617
- array_push(&pool->tree_stack, ts_subtree_to_mut_unsafe(left_child));
618
- array_push(&pool->tree_stack, ts_subtree_to_mut_unsafe(right_child));
619
- }
620
- }
621
-
622
- return 0;
623
- }
624
-
625
- static inline void ts_subtree_set_has_changes(MutableSubtree *self) {
626
- if (self->data.is_inline) {
627
- self->data.has_changes = true;
628
- } else {
629
- self->ptr->has_changes = true;
630
- }
631
- }
632
-
633
- Subtree ts_subtree_edit(Subtree self, const TSInputEdit *input_edit, SubtreePool *pool) {
634
- typedef struct {
635
- Subtree *tree;
636
- Edit edit;
637
- } EditEntry;
638
-
639
- Array(EditEntry) stack = array_new();
640
- array_push(&stack, ((EditEntry) {
641
- .tree = &self,
642
- .edit = (Edit) {
643
- .start = {input_edit->start_byte, input_edit->start_point},
644
- .old_end = {input_edit->old_end_byte, input_edit->old_end_point},
645
- .new_end = {input_edit->new_end_byte, input_edit->new_end_point},
646
- },
647
- }));
648
-
649
- while (stack.size) {
650
- EditEntry entry = array_pop(&stack);
651
- Edit edit = entry.edit;
652
- bool is_noop = edit.old_end.bytes == edit.start.bytes && edit.new_end.bytes == edit.start.bytes;
653
- bool is_pure_insertion = edit.old_end.bytes == edit.start.bytes;
654
- bool parent_depends_on_column = ts_subtree_depends_on_column(*entry.tree);
655
- bool column_shifted = edit.new_end.extent.column != edit.old_end.extent.column;
656
-
657
- Length size = ts_subtree_size(*entry.tree);
658
- Length padding = ts_subtree_padding(*entry.tree);
659
- Length total_size = length_add(padding, size);
660
- uint32_t lookahead_bytes = ts_subtree_lookahead_bytes(*entry.tree);
661
- uint32_t end_byte = total_size.bytes + lookahead_bytes;
662
- if (edit.start.bytes > end_byte || (is_noop && edit.start.bytes == end_byte)) continue;
663
-
664
- // If the edit is entirely within the space before this subtree, then shift this
665
- // subtree over according to the edit without changing its size.
666
- if (edit.old_end.bytes <= padding.bytes) {
667
- padding = length_add(edit.new_end, length_sub(padding, edit.old_end));
668
- }
669
-
670
- // If the edit starts in the space before this subtree and extends into this subtree,
671
- // shrink the subtree's content to compensate for the change in the space before it.
672
- else if (edit.start.bytes < padding.bytes) {
673
- size = length_saturating_sub(size, length_sub(edit.old_end, padding));
674
- padding = edit.new_end;
675
- }
676
-
677
- // If the edit is within this subtree, resize the subtree to reflect the edit.
678
- else if (
679
- edit.start.bytes < total_size.bytes ||
680
- (edit.start.bytes == total_size.bytes && is_pure_insertion)
681
- ) {
682
- size = length_add(
683
- length_sub(edit.new_end, padding),
684
- length_saturating_sub(total_size, edit.old_end)
685
- );
686
- }
687
-
688
- MutableSubtree result = ts_subtree_make_mut(pool, *entry.tree);
689
-
690
- if (result.data.is_inline) {
691
- if (ts_subtree_can_inline(padding, size, lookahead_bytes)) {
692
- result.data.padding_bytes = padding.bytes;
693
- result.data.padding_rows = padding.extent.row;
694
- result.data.padding_columns = padding.extent.column;
695
- result.data.size_bytes = size.bytes;
696
- } else {
697
- SubtreeHeapData *data = ts_subtree_pool_allocate(pool);
698
- data->ref_count = 1;
699
- data->padding = padding;
700
- data->size = size;
701
- data->lookahead_bytes = lookahead_bytes;
702
- data->error_cost = 0;
703
- data->child_count = 0;
704
- data->symbol = result.data.symbol;
705
- data->parse_state = result.data.parse_state;
706
- data->visible = result.data.visible;
707
- data->named = result.data.named;
708
- data->extra = result.data.extra;
709
- data->fragile_left = false;
710
- data->fragile_right = false;
711
- data->has_changes = false;
712
- data->has_external_tokens = false;
713
- data->depends_on_column = false;
714
- data->is_missing = result.data.is_missing;
715
- data->is_keyword = result.data.is_keyword;
716
- result.ptr = data;
717
- }
718
- } else {
719
- result.ptr->padding = padding;
720
- result.ptr->size = size;
721
- }
722
-
723
- ts_subtree_set_has_changes(&result);
724
- *entry.tree = ts_subtree_from_mut(result);
725
-
726
- Length child_left, child_right = length_zero();
727
- for (uint32_t i = 0, n = ts_subtree_child_count(*entry.tree); i < n; i++) {
728
- Subtree *child = &ts_subtree_children(*entry.tree)[i];
729
- Length child_size = ts_subtree_total_size(*child);
730
- child_left = child_right;
731
- child_right = length_add(child_left, child_size);
732
-
733
- // If this child ends before the edit, it is not affected.
734
- if (child_right.bytes + ts_subtree_lookahead_bytes(*child) < edit.start.bytes) continue;
735
-
736
- // Keep editing child nodes until a node is reached that starts after the edit.
737
- // Also, if this node's validity depends on its column position, then continue
738
- // invalidating child nodes until reaching a line break.
739
- if ((
740
- (child_left.bytes > edit.old_end.bytes) ||
741
- (child_left.bytes == edit.old_end.bytes && child_size.bytes > 0 && i > 0)
742
- ) && (
743
- !parent_depends_on_column ||
744
- child_left.extent.row > padding.extent.row
745
- ) && (
746
- !ts_subtree_depends_on_column(*child) ||
747
- !column_shifted ||
748
- child_left.extent.row > edit.old_end.extent.row
749
- )) {
750
- break;
751
- }
752
-
753
- // Transform edit into the child's coordinate space.
754
- Edit child_edit = {
755
- .start = length_saturating_sub(edit.start, child_left),
756
- .old_end = length_saturating_sub(edit.old_end, child_left),
757
- .new_end = length_saturating_sub(edit.new_end, child_left),
758
- };
759
-
760
- // Interpret all inserted text as applying to the *first* child that touches the edit.
761
- // Subsequent children are only never have any text inserted into them; they are only
762
- // shrunk to compensate for the edit.
763
- if (
764
- child_right.bytes > edit.start.bytes ||
765
- (child_right.bytes == edit.start.bytes && is_pure_insertion)
766
- ) {
767
- edit.new_end = edit.start;
768
- }
769
-
770
- // Children that occur before the edit are not reshaped by the edit.
771
- else {
772
- child_edit.old_end = child_edit.start;
773
- child_edit.new_end = child_edit.start;
774
- }
775
-
776
- // Queue processing of this child's subtree.
777
- array_push(&stack, ((EditEntry) {
778
- .tree = child,
779
- .edit = child_edit,
780
- }));
781
- }
782
- }
783
-
784
- array_delete(&stack);
785
- return self;
786
- }
787
-
788
- Subtree ts_subtree_last_external_token(Subtree tree) {
789
- if (!ts_subtree_has_external_tokens(tree)) return NULL_SUBTREE;
790
- while (tree.ptr->child_count > 0) {
791
- for (uint32_t i = tree.ptr->child_count - 1; i + 1 > 0; i--) {
792
- Subtree child = ts_subtree_children(tree)[i];
793
- if (ts_subtree_has_external_tokens(child)) {
794
- tree = child;
795
- break;
796
- }
797
- }
798
- }
799
- return tree;
800
- }
801
-
802
- static size_t ts_subtree__write_char_to_string(char *str, size_t n, int32_t chr) {
803
- if (chr == -1)
804
- return snprintf(str, n, "INVALID");
805
- else if (chr == '\0')
806
- return snprintf(str, n, "'\\0'");
807
- else if (chr == '\n')
808
- return snprintf(str, n, "'\\n'");
809
- else if (chr == '\t')
810
- return snprintf(str, n, "'\\t'");
811
- else if (chr == '\r')
812
- return snprintf(str, n, "'\\r'");
813
- else if (0 < chr && chr < 128 && isprint(chr))
814
- return snprintf(str, n, "'%c'", chr);
815
- else
816
- return snprintf(str, n, "%d", chr);
817
- }
818
-
819
- static const char *const ROOT_FIELD = "__ROOT__";
820
-
821
- static size_t ts_subtree__write_to_string(
822
- Subtree self, char *string, size_t limit,
823
- const TSLanguage *language, bool include_all,
824
- TSSymbol alias_symbol, bool alias_is_named, const char *field_name
825
- ) {
826
- if (!self.ptr) return snprintf(string, limit, "(NULL)");
827
-
828
- char *cursor = string;
829
- char **writer = (limit > 1) ? &cursor : &string;
830
- bool is_root = field_name == ROOT_FIELD;
831
- bool is_visible =
832
- include_all ||
833
- ts_subtree_missing(self) ||
834
- (
835
- alias_symbol
836
- ? alias_is_named
837
- : ts_subtree_visible(self) && ts_subtree_named(self)
838
- );
839
-
840
- if (is_visible) {
841
- if (!is_root) {
842
- cursor += snprintf(*writer, limit, " ");
843
- if (field_name) {
844
- cursor += snprintf(*writer, limit, "%s: ", field_name);
845
- }
846
- }
847
-
848
- if (ts_subtree_is_error(self) && ts_subtree_child_count(self) == 0 && self.ptr->size.bytes > 0) {
849
- cursor += snprintf(*writer, limit, "(UNEXPECTED ");
850
- cursor += ts_subtree__write_char_to_string(*writer, limit, self.ptr->lookahead_char);
851
- } else {
852
- TSSymbol symbol = alias_symbol ? alias_symbol : ts_subtree_symbol(self);
853
- const char *symbol_name = ts_language_symbol_name(language, symbol);
854
- if (ts_subtree_missing(self)) {
855
- cursor += snprintf(*writer, limit, "(MISSING ");
856
- if (alias_is_named || ts_subtree_named(self)) {
857
- cursor += snprintf(*writer, limit, "%s", symbol_name);
858
- } else {
859
- cursor += snprintf(*writer, limit, "\"%s\"", symbol_name);
860
- }
861
- } else {
862
- cursor += snprintf(*writer, limit, "(%s", symbol_name);
863
- }
864
- }
865
- } else if (is_root) {
866
- TSSymbol symbol = alias_symbol ? alias_symbol : ts_subtree_symbol(self);
867
- const char *symbol_name = ts_language_symbol_name(language, symbol);
868
- if (ts_subtree_child_count(self) > 0) {
869
- cursor += snprintf(*writer, limit, "(%s", symbol_name);
870
- } else if (ts_subtree_named(self)) {
871
- cursor += snprintf(*writer, limit, "(%s)", symbol_name);
872
- } else {
873
- cursor += snprintf(*writer, limit, "(\"%s\")", symbol_name);
874
- }
875
- }
876
-
877
- if (ts_subtree_child_count(self)) {
878
- const TSSymbol *alias_sequence = ts_language_alias_sequence(language, self.ptr->production_id);
879
- const TSFieldMapEntry *field_map, *field_map_end;
880
- ts_language_field_map(
881
- language,
882
- self.ptr->production_id,
883
- &field_map,
884
- &field_map_end
885
- );
886
-
887
- uint32_t structural_child_index = 0;
888
- for (uint32_t i = 0; i < self.ptr->child_count; i++) {
889
- Subtree child = ts_subtree_children(self)[i];
890
- if (ts_subtree_extra(child)) {
891
- cursor += ts_subtree__write_to_string(
892
- child, *writer, limit,
893
- language, include_all,
894
- 0, false, NULL
895
- );
896
- } else {
897
- TSSymbol subtree_alias_symbol = alias_sequence
898
- ? alias_sequence[structural_child_index]
899
- : 0;
900
- bool subtree_alias_is_named = subtree_alias_symbol
901
- ? ts_language_symbol_metadata(language, subtree_alias_symbol).named
902
- : false;
903
-
904
- const char *child_field_name = is_visible ? NULL : field_name;
905
- for (const TSFieldMapEntry *map = field_map; map < field_map_end; map++) {
906
- if (!map->inherited && map->child_index == structural_child_index) {
907
- child_field_name = language->field_names[map->field_id];
908
- break;
909
- }
910
- }
911
-
912
- cursor += ts_subtree__write_to_string(
913
- child, *writer, limit,
914
- language, include_all,
915
- subtree_alias_symbol, subtree_alias_is_named, child_field_name
916
- );
917
- structural_child_index++;
918
- }
919
- }
920
- }
921
-
922
- if (is_visible) cursor += snprintf(*writer, limit, ")");
923
-
924
- return cursor - string;
925
- }
926
-
927
- char *ts_subtree_string(
928
- Subtree self,
929
- TSSymbol alias_symbol,
930
- bool alias_is_named,
931
- const TSLanguage *language,
932
- bool include_all
933
- ) {
934
- char scratch_string[1];
935
- size_t size = ts_subtree__write_to_string(
936
- self, scratch_string, 1,
937
- language, include_all,
938
- alias_symbol, alias_is_named, ROOT_FIELD
939
- ) + 1;
940
- char *result = ts_malloc(size * sizeof(char));
941
- ts_subtree__write_to_string(
942
- self, result, size,
943
- language, include_all,
944
- alias_symbol, alias_is_named, ROOT_FIELD
945
- );
946
- return result;
947
- }
948
-
949
- void ts_subtree__print_dot_graph(const Subtree *self, uint32_t start_offset,
950
- const TSLanguage *language, TSSymbol alias_symbol,
951
- FILE *f) {
952
- TSSymbol subtree_symbol = ts_subtree_symbol(*self);
953
- TSSymbol symbol = alias_symbol ? alias_symbol : subtree_symbol;
954
- uint32_t end_offset = start_offset + ts_subtree_total_bytes(*self);
955
- fprintf(f, "tree_%p [label=\"", (void *)self);
956
- ts_language_write_symbol_as_dot_string(language, f, symbol);
957
- fprintf(f, "\"");
958
-
959
- if (ts_subtree_child_count(*self) == 0) fprintf(f, ", shape=plaintext");
960
- if (ts_subtree_extra(*self)) fprintf(f, ", fontcolor=gray");
961
- if (ts_subtree_has_changes(*self)) fprintf(f, ", color=green, penwidth=2");
962
-
963
- fprintf(f, ", tooltip=\""
964
- "range: %u - %u\n"
965
- "state: %d\n"
966
- "error-cost: %u\n"
967
- "has-changes: %u\n"
968
- "depends-on-column: %u\n"
969
- "descendant-count: %u\n"
970
- "repeat-depth: %u\n"
971
- "lookahead-bytes: %u",
972
- start_offset, end_offset,
973
- ts_subtree_parse_state(*self),
974
- ts_subtree_error_cost(*self),
975
- ts_subtree_has_changes(*self),
976
- ts_subtree_depends_on_column(*self),
977
- ts_subtree_visible_descendant_count(*self),
978
- ts_subtree_repeat_depth(*self),
979
- ts_subtree_lookahead_bytes(*self)
980
- );
981
-
982
- if (ts_subtree_is_error(*self) && ts_subtree_child_count(*self) == 0 && self->ptr->lookahead_char != 0) {
983
- fprintf(f, "\ncharacter: '%c'", self->ptr->lookahead_char);
984
- }
985
-
986
- fprintf(f, "\"]\n");
987
-
988
- uint32_t child_start_offset = start_offset;
989
- uint32_t child_info_offset =
990
- language->max_alias_sequence_length *
991
- ts_subtree_production_id(*self);
992
- for (uint32_t i = 0, n = ts_subtree_child_count(*self); i < n; i++) {
993
- const Subtree *child = &ts_subtree_children(*self)[i];
994
- TSSymbol subtree_alias_symbol = 0;
995
- if (!ts_subtree_extra(*child) && child_info_offset) {
996
- subtree_alias_symbol = language->alias_sequences[child_info_offset];
997
- child_info_offset++;
998
- }
999
- ts_subtree__print_dot_graph(child, child_start_offset, language, subtree_alias_symbol, f);
1000
- fprintf(f, "tree_%p -> tree_%p [tooltip=%u]\n", (void *)self, (void *)child, i);
1001
- child_start_offset += ts_subtree_total_bytes(*child);
1002
- }
1003
- }
1004
-
1005
- void ts_subtree_print_dot_graph(Subtree self, const TSLanguage *language, FILE *f) {
1006
- fprintf(f, "digraph tree {\n");
1007
- fprintf(f, "edge [arrowhead=none]\n");
1008
- ts_subtree__print_dot_graph(&self, 0, language, 0, f);
1009
- fprintf(f, "}\n");
1010
- }
1011
-
1012
- const ExternalScannerState *ts_subtree_external_scanner_state(Subtree self) {
1013
- static const ExternalScannerState empty_state = {{.short_data = {0}}, .length = 0};
1014
- if (
1015
- self.ptr &&
1016
- !self.data.is_inline &&
1017
- self.ptr->has_external_tokens &&
1018
- self.ptr->child_count == 0
1019
- ) {
1020
- return &self.ptr->external_scanner_state;
1021
- } else {
1022
- return &empty_state;
1023
- }
1024
- }
1025
-
1026
- bool ts_subtree_external_scanner_state_eq(Subtree self, Subtree other) {
1027
- const ExternalScannerState *state_self = ts_subtree_external_scanner_state(self);
1028
- const ExternalScannerState *state_other = ts_subtree_external_scanner_state(other);
1029
- return ts_external_scanner_state_eq(
1030
- state_self,
1031
- ts_external_scanner_state_data(state_other),
1032
- state_other->length
1033
- );
1034
- }