@yalehwang/archguard 0.1.31 → 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 (298) hide show
  1. package/README.md +106 -19
  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/fitness/rule-types.d.ts +1 -33
  18. package/dist/analysis/fitness/rule-types.d.ts.map +1 -1
  19. package/dist/cli/analyze/run-analysis.d.ts +4 -0
  20. package/dist/cli/analyze/run-analysis.d.ts.map +1 -1
  21. package/dist/cli/analyze/run-analysis.js +63 -43
  22. package/dist/cli/analyze/run-analysis.js.map +1 -1
  23. package/dist/cli/cache/cache-manager.js +1 -1
  24. package/dist/cli/cache/cache-manager.js.map +1 -1
  25. package/dist/cli/mcp/analyze-tool.d.ts +2 -0
  26. package/dist/cli/mcp/analyze-tool.d.ts.map +1 -1
  27. package/dist/cli/mcp/analyze-tool.js +5 -0
  28. package/dist/cli/mcp/analyze-tool.js.map +1 -1
  29. package/dist/cli/mcp/mcp-server.d.ts +7 -2
  30. package/dist/cli/mcp/mcp-server.d.ts.map +1 -1
  31. package/dist/cli/mcp/mcp-server.js +37 -3
  32. package/dist/cli/mcp/mcp-server.js.map +1 -1
  33. package/dist/cli/processors/arch-json-provider-types.d.ts +5 -0
  34. package/dist/cli/processors/arch-json-provider-types.d.ts.map +1 -1
  35. package/dist/cli/processors/arch-json-provider.d.ts +5 -0
  36. package/dist/cli/processors/arch-json-provider.d.ts.map +1 -1
  37. package/dist/cli/processors/arch-json-provider.js +104 -55
  38. package/dist/cli/processors/arch-json-provider.js.map +1 -1
  39. package/dist/cli/processors/arch-json-utils.d.ts.map +1 -1
  40. package/dist/cli/processors/arch-json-utils.js +12 -3
  41. package/dist/cli/processors/arch-json-utils.js.map +1 -1
  42. package/dist/cli/processors/diagram-processor.d.ts +4 -0
  43. package/dist/cli/processors/diagram-processor.d.ts.map +1 -1
  44. package/dist/cli/processors/diagram-processor.js +2 -0
  45. package/dist/cli/processors/diagram-processor.js.map +1 -1
  46. package/dist/cli/processors/worker-pool-factory.d.ts +3 -0
  47. package/dist/cli/processors/worker-pool-factory.d.ts.map +1 -1
  48. package/dist/cli/processors/worker-pool-factory.js +9 -0
  49. package/dist/cli/processors/worker-pool-factory.js.map +1 -1
  50. package/dist/mermaid/generator.d.ts.map +1 -1
  51. package/dist/mermaid/generator.js +19 -1
  52. package/dist/mermaid/generator.js.map +1 -1
  53. package/dist/mermaid/renderer.d.ts.map +1 -1
  54. package/dist/mermaid/renderer.js +1 -1
  55. package/dist/mermaid/renderer.js.map +1 -1
  56. package/dist/mermaid/test-coverage-renderer.d.ts.map +1 -1
  57. package/dist/mermaid/test-coverage-renderer.js +18 -12
  58. package/dist/mermaid/test-coverage-renderer.js.map +1 -1
  59. package/dist/parser/archjson-aggregator.js +1 -1
  60. package/dist/parser/archjson-aggregator.js.map +1 -1
  61. package/dist/parser/parallel-parser.d.ts +10 -0
  62. package/dist/parser/parallel-parser.d.ts.map +1 -1
  63. package/dist/parser/parallel-parser.js +76 -35
  64. package/dist/parser/parallel-parser.js.map +1 -1
  65. package/dist/parser/parse-worker-pool.d.ts +59 -0
  66. package/dist/parser/parse-worker-pool.d.ts.map +1 -0
  67. package/dist/parser/parse-worker-pool.js +170 -0
  68. package/dist/parser/parse-worker-pool.js.map +1 -0
  69. package/dist/parser/parse-worker.d.ts +2 -0
  70. package/dist/parser/parse-worker.d.ts.map +1 -0
  71. package/dist/parser/parse-worker.js +71 -0
  72. package/dist/parser/parse-worker.js.map +1 -0
  73. package/dist/parser/process-parse-worker-pools.d.ts +18 -0
  74. package/dist/parser/process-parse-worker-pools.d.ts.map +1 -0
  75. package/dist/parser/process-parse-worker-pools.js +31 -0
  76. package/dist/parser/process-parse-worker-pools.js.map +1 -0
  77. package/dist/plugins/cpp/builders/class-builder.d.ts +2 -2
  78. package/dist/plugins/cpp/builders/class-builder.d.ts.map +1 -1
  79. package/dist/plugins/cpp/builders/class-builder.js.map +1 -1
  80. package/dist/plugins/cpp/index.d.ts +4 -1
  81. package/dist/plugins/cpp/index.d.ts.map +1 -1
  82. package/dist/plugins/cpp/index.js +11 -2
  83. package/dist/plugins/cpp/index.js.map +1 -1
  84. package/dist/plugins/cpp/tree-sitter-bridge.d.ts +3 -2
  85. package/dist/plugins/cpp/tree-sitter-bridge.d.ts.map +1 -1
  86. package/dist/plugins/cpp/tree-sitter-bridge.js +17 -15
  87. package/dist/plugins/cpp/tree-sitter-bridge.js.map +1 -1
  88. package/dist/plugins/golang/builders/function-builder.d.ts +4 -4
  89. package/dist/plugins/golang/builders/function-builder.d.ts.map +1 -1
  90. package/dist/plugins/golang/builders/function-builder.js.map +1 -1
  91. package/dist/plugins/golang/builders/goroutine-builder.d.ts +2 -2
  92. package/dist/plugins/golang/builders/goroutine-builder.d.ts.map +1 -1
  93. package/dist/plugins/golang/builders/goroutine-builder.js.map +1 -1
  94. package/dist/plugins/golang/builders/interface-builder.d.ts +4 -4
  95. package/dist/plugins/golang/builders/interface-builder.d.ts.map +1 -1
  96. package/dist/plugins/golang/builders/interface-builder.js.map +1 -1
  97. package/dist/plugins/golang/builders/node-utils.d.ts +3 -3
  98. package/dist/plugins/golang/builders/node-utils.d.ts.map +1 -1
  99. package/dist/plugins/golang/builders/node-utils.js.map +1 -1
  100. package/dist/plugins/golang/builders/struct-builder.d.ts +2 -2
  101. package/dist/plugins/golang/builders/struct-builder.d.ts.map +1 -1
  102. package/dist/plugins/golang/builders/struct-builder.js.map +1 -1
  103. package/dist/plugins/golang/go-parse-coordinator.d.ts +10 -2
  104. package/dist/plugins/golang/go-parse-coordinator.d.ts.map +1 -1
  105. package/dist/plugins/golang/go-parse-coordinator.js +44 -6
  106. package/dist/plugins/golang/go-parse-coordinator.js.map +1 -1
  107. package/dist/plugins/golang/gopls-client.d.ts +31 -2
  108. package/dist/plugins/golang/gopls-client.d.ts.map +1 -1
  109. package/dist/plugins/golang/gopls-client.js +230 -32
  110. package/dist/plugins/golang/gopls-client.js.map +1 -1
  111. package/dist/plugins/golang/gopls-interface-resolver.d.ts +14 -1
  112. package/dist/plugins/golang/gopls-interface-resolver.d.ts.map +1 -1
  113. package/dist/plugins/golang/gopls-interface-resolver.js +42 -11
  114. package/dist/plugins/golang/gopls-interface-resolver.js.map +1 -1
  115. package/dist/plugins/golang/index.d.ts +3 -1
  116. package/dist/plugins/golang/index.d.ts.map +1 -1
  117. package/dist/plugins/golang/index.js +17 -3
  118. package/dist/plugins/golang/index.js.map +1 -1
  119. package/dist/plugins/golang/interface-matcher.d.ts.map +1 -1
  120. package/dist/plugins/golang/interface-matcher.js +32 -30
  121. package/dist/plugins/golang/interface-matcher.js.map +1 -1
  122. package/dist/plugins/golang/tree-sitter-bridge.d.ts +3 -2
  123. package/dist/plugins/golang/tree-sitter-bridge.d.ts.map +1 -1
  124. package/dist/plugins/golang/tree-sitter-bridge.js +25 -23
  125. package/dist/plugins/golang/tree-sitter-bridge.js.map +1 -1
  126. package/dist/plugins/java/index.d.ts +4 -0
  127. package/dist/plugins/java/index.d.ts.map +1 -1
  128. package/dist/plugins/java/index.js +12 -1
  129. package/dist/plugins/java/index.js.map +1 -1
  130. package/dist/plugins/java/tree-sitter-bridge.d.ts +3 -2
  131. package/dist/plugins/java/tree-sitter-bridge.d.ts.map +1 -1
  132. package/dist/plugins/java/tree-sitter-bridge.js +33 -31
  133. package/dist/plugins/java/tree-sitter-bridge.js.map +1 -1
  134. package/dist/plugins/kotlin/builders/class-builder.d.ts +2 -1
  135. package/dist/plugins/kotlin/builders/class-builder.d.ts.map +1 -1
  136. package/dist/plugins/kotlin/builders/class-builder.js.map +1 -1
  137. package/dist/plugins/kotlin/builders/function-builder.d.ts +2 -1
  138. package/dist/plugins/kotlin/builders/function-builder.d.ts.map +1 -1
  139. package/dist/plugins/kotlin/builders/function-builder.js.map +1 -1
  140. package/dist/plugins/kotlin/index.d.ts +4 -1
  141. package/dist/plugins/kotlin/index.d.ts.map +1 -1
  142. package/dist/plugins/kotlin/index.js +12 -4
  143. package/dist/plugins/kotlin/index.js.map +1 -1
  144. package/dist/plugins/kotlin/tree-sitter-bridge.d.ts +3 -3
  145. package/dist/plugins/kotlin/tree-sitter-bridge.d.ts.map +1 -1
  146. package/dist/plugins/kotlin/tree-sitter-bridge.js +6 -7
  147. package/dist/plugins/kotlin/tree-sitter-bridge.js.map +1 -1
  148. package/dist/plugins/python/index.d.ts +4 -0
  149. package/dist/plugins/python/index.d.ts.map +1 -1
  150. package/dist/plugins/python/index.js +12 -1
  151. package/dist/plugins/python/index.js.map +1 -1
  152. package/dist/plugins/python/tree-sitter-bridge.d.ts +3 -2
  153. package/dist/plugins/python/tree-sitter-bridge.d.ts.map +1 -1
  154. package/dist/plugins/python/tree-sitter-bridge.js +50 -48
  155. package/dist/plugins/python/tree-sitter-bridge.js.map +1 -1
  156. package/dist/plugins/shared/native-parser-backend.d.ts +33 -0
  157. package/dist/plugins/shared/native-parser-backend.d.ts.map +1 -0
  158. package/dist/plugins/shared/native-parser-backend.js +84 -0
  159. package/dist/plugins/shared/native-parser-backend.js.map +1 -0
  160. package/dist/plugins/shared/parser-backend.d.ts +13 -0
  161. package/dist/plugins/shared/parser-backend.d.ts.map +1 -0
  162. package/dist/plugins/shared/parser-backend.js +38 -0
  163. package/dist/plugins/shared/parser-backend.js.map +1 -0
  164. package/dist/plugins/shared/parser-runtime.d.ts +32 -0
  165. package/dist/plugins/shared/parser-runtime.d.ts.map +1 -0
  166. package/dist/plugins/shared/parser-runtime.js +152 -0
  167. package/dist/plugins/shared/parser-runtime.js.map +1 -0
  168. package/dist/plugins/shared/plugin-factory.d.ts +5 -0
  169. package/dist/plugins/shared/plugin-factory.d.ts.map +1 -0
  170. package/dist/plugins/shared/plugin-factory.js +27 -0
  171. package/dist/plugins/shared/plugin-factory.js.map +1 -0
  172. package/dist/plugins/shared/syntax-tree.d.ts +32 -0
  173. package/dist/plugins/shared/syntax-tree.d.ts.map +1 -0
  174. package/dist/plugins/shared/syntax-tree.js +2 -0
  175. package/dist/plugins/shared/syntax-tree.js.map +1 -0
  176. package/dist/plugins/shared/wasm-parser-backend.d.ts +18 -0
  177. package/dist/plugins/shared/wasm-parser-backend.d.ts.map +1 -0
  178. package/dist/plugins/shared/wasm-parser-backend.js +118 -0
  179. package/dist/plugins/shared/wasm-parser-backend.js.map +1 -0
  180. package/dist/plugins/typescript/builders/module-graph-builder.d.ts.map +1 -1
  181. package/dist/plugins/typescript/builders/module-graph-builder.js +2 -1
  182. package/dist/plugins/typescript/builders/module-graph-builder.js.map +1 -1
  183. package/dist/types/config-global.d.ts +7 -1
  184. package/dist/types/config-global.d.ts.map +1 -1
  185. package/dist/types/config.d.ts +1 -0
  186. package/dist/types/config.d.ts.map +1 -1
  187. package/dist/types/config.js +1 -0
  188. package/dist/types/config.js.map +1 -1
  189. package/dist/types/fitness-rules.d.ts +34 -0
  190. package/dist/types/fitness-rules.d.ts.map +1 -0
  191. package/dist/types/fitness-rules.js +2 -0
  192. package/dist/types/fitness-rules.js.map +1 -0
  193. package/dist/types/parser-runtime.d.ts +4 -0
  194. package/dist/types/parser-runtime.d.ts.map +1 -0
  195. package/dist/types/parser-runtime.js +5 -0
  196. package/dist/types/parser-runtime.js.map +1 -0
  197. package/package.json +29 -16
  198. package/node_modules/node-addon-api/LICENSE.md +0 -9
  199. package/node_modules/node-addon-api/README.md +0 -95
  200. package/node_modules/node-addon-api/common.gypi +0 -21
  201. package/node_modules/node-addon-api/except.gypi +0 -25
  202. package/node_modules/node-addon-api/index.js +0 -14
  203. package/node_modules/node-addon-api/napi-inl.deprecated.h +0 -186
  204. package/node_modules/node-addon-api/napi-inl.h +0 -7033
  205. package/node_modules/node-addon-api/napi.h +0 -3309
  206. package/node_modules/node-addon-api/node_addon_api.gyp +0 -42
  207. package/node_modules/node-addon-api/node_api.gyp +0 -9
  208. package/node_modules/node-addon-api/noexcept.gypi +0 -26
  209. package/node_modules/node-addon-api/nothing.c +0 -0
  210. package/node_modules/node-addon-api/package-support.json +0 -21
  211. package/node_modules/node-addon-api/package.json +0 -480
  212. package/node_modules/node-addon-api/tools/README.md +0 -73
  213. package/node_modules/node-addon-api/tools/check-napi.js +0 -99
  214. package/node_modules/node-addon-api/tools/clang-format.js +0 -71
  215. package/node_modules/node-addon-api/tools/conversion.js +0 -301
  216. package/node_modules/node-gyp-build/README.md +0 -58
  217. package/node_modules/node-gyp-build/SECURITY.md +0 -5
  218. package/node_modules/node-gyp-build/bin.js +0 -84
  219. package/node_modules/node-gyp-build/build-test.js +0 -19
  220. package/node_modules/node-gyp-build/index.js +0 -6
  221. package/node_modules/node-gyp-build/node-gyp-build.js +0 -207
  222. package/node_modules/node-gyp-build/optional.js +0 -7
  223. package/node_modules/node-gyp-build/package.json +0 -43
  224. package/node_modules/tree-sitter/README.md +0 -128
  225. package/node_modules/tree-sitter/binding.gyp +0 -80
  226. package/node_modules/tree-sitter/index.js +0 -916
  227. package/node_modules/tree-sitter/package.json +0 -76
  228. package/node_modules/tree-sitter/prebuilds/linux-x64/node.napi.glibc.node +0 -0
  229. package/node_modules/tree-sitter/src/addon_data.h +0 -47
  230. package/node_modules/tree-sitter/src/binding.cc +0 -35
  231. package/node_modules/tree-sitter/src/conversions.cc +0 -140
  232. package/node_modules/tree-sitter/src/conversions.h +0 -22
  233. package/node_modules/tree-sitter/src/language.cc +0 -106
  234. package/node_modules/tree-sitter/src/language.h +0 -17
  235. package/node_modules/tree-sitter/src/logger.cc +0 -70
  236. package/node_modules/tree-sitter/src/logger.h +0 -19
  237. package/node_modules/tree-sitter/src/lookaheaditerator.cc +0 -122
  238. package/node_modules/tree-sitter/src/lookaheaditerator.h +0 -33
  239. package/node_modules/tree-sitter/src/node.cc +0 -1088
  240. package/node_modules/tree-sitter/src/node.h +0 -30
  241. package/node_modules/tree-sitter/src/parser.cc +0 -306
  242. package/node_modules/tree-sitter/src/parser.h +0 -35
  243. package/node_modules/tree-sitter/src/query.cc +0 -397
  244. package/node_modules/tree-sitter/src/query.h +0 -40
  245. package/node_modules/tree-sitter/src/tree.cc +0 -316
  246. package/node_modules/tree-sitter/src/tree.h +0 -45
  247. package/node_modules/tree-sitter/src/tree_cursor.cc +0 -213
  248. package/node_modules/tree-sitter/src/tree_cursor.h +0 -52
  249. package/node_modules/tree-sitter/tree-sitter.d.ts +0 -1042
  250. package/node_modules/tree-sitter/vendor/tree-sitter/lib/include/tree_sitter/api.h +0 -1478
  251. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/alloc.c +0 -48
  252. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/alloc.h +0 -41
  253. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/array.h +0 -291
  254. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/atomic.h +0 -68
  255. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/clock.h +0 -146
  256. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/error_costs.h +0 -11
  257. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/get_changed_ranges.c +0 -523
  258. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/get_changed_ranges.h +0 -36
  259. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/host.h +0 -21
  260. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/language.c +0 -293
  261. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/language.h +0 -293
  262. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/length.h +0 -52
  263. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/lexer.c +0 -483
  264. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/lexer.h +0 -54
  265. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/lib.c +0 -12
  266. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/node.c +0 -875
  267. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/parser.c +0 -2293
  268. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/parser.h +0 -286
  269. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/point.h +0 -48
  270. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/portable/endian.h +0 -239
  271. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/query.c +0 -4350
  272. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/reduce_action.h +0 -34
  273. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/reusable_node.h +0 -95
  274. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/stack.c +0 -911
  275. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/stack.h +0 -133
  276. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/subtree.c +0 -1034
  277. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/subtree.h +0 -399
  278. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree.c +0 -170
  279. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree.h +0 -31
  280. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree_cursor.c +0 -717
  281. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree_cursor.h +0 -48
  282. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/ts_assert.h +0 -11
  283. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/ICU_SHA +0 -1
  284. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/LICENSE +0 -414
  285. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/README.md +0 -29
  286. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/ptypes.h +0 -1
  287. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/umachine.h +0 -448
  288. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/urename.h +0 -1
  289. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/utf.h +0 -1
  290. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/utf16.h +0 -733
  291. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/utf8.h +0 -881
  292. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode.h +0 -75
  293. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm/stdlib-symbols.txt +0 -24
  294. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm/stdlib.c +0 -113
  295. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm/wasm-stdlib.h +0 -1314
  296. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm_store.c +0 -1935
  297. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm_store.h +0 -31
  298. package/scripts/postinstall-tree-sitter.mjs +0 -28
@@ -1,397 +0,0 @@
1
- #include "./query.h"
2
- #include "./language.h"
3
- #include "./node.h"
4
-
5
- #include <napi.h>
6
- #include <string>
7
- #include <vector>
8
-
9
- using std::vector;
10
- using namespace Napi;
11
-
12
- namespace node_tree_sitter {
13
-
14
- /*
15
- tstag() {
16
- b2sum -l64 <(printf tree-sitter) <(printf "$1") | \
17
- awk '{printf "0x" toupper($1) (NR == 1 ? ", " : "\n")}'
18
- }
19
- tstag query # => 0x8AF2E5212AD58ABF, 0x7B1FAB666CBD6803
20
- */
21
- const napi_type_tag QUERY_TYPE_TAG = {
22
- 0x8AF2E5212AD58ABF, 0x7B1FAB666CBD6803
23
- };
24
-
25
- const char *query_error_names[] = {
26
- "TSQueryErrorNone",
27
- "TSQueryErrorSyntax",
28
- "TSQueryErrorNodeType",
29
- "TSQueryErrorField",
30
- "TSQueryErrorCapture",
31
- "TSQueryErrorStructure",
32
- };
33
-
34
- void Query::Init(Napi::Env env, Napi::Object exports) {
35
- auto *data = env.GetInstanceData<AddonData>();
36
- data->ts_query_cursor = ts_query_cursor_new();
37
-
38
- Function ctor = DefineClass(env, "Query", {
39
- InstanceAccessor("matchLimit", &Query::MatchLimit, nullptr, napi_default_method),
40
-
41
- InstanceMethod("_matches", &Query::Matches, napi_default_method),
42
- InstanceMethod("_captures", &Query::Captures, napi_default_method),
43
- InstanceMethod("_getPredicates", &Query::GetPredicates, napi_default_method),
44
- InstanceMethod("disableCapture", &Query::DisableCapture, napi_default_method),
45
- InstanceMethod("disablePattern", &Query::DisablePattern, napi_default_method),
46
- InstanceMethod("isPatternGuaranteedAtStep", &Query::IsPatternGuaranteedAtStep, napi_default_method),
47
- InstanceMethod("isPatternRooted", &Query::IsPatternRooted, napi_default_method),
48
- InstanceMethod("isPatternNonLocal", &Query::IsPatternNonLocal, napi_default_method),
49
- InstanceMethod("startIndexForPattern", &Query::StartIndexForPattern, napi_default_method),
50
- InstanceMethod("endIndexForPattern", &Query::EndIndexForPattern, napi_default_method),
51
- InstanceMethod("didExceedMatchLimit", &Query::DidExceedMatchLimit, napi_default_method),
52
- });
53
-
54
- data->query_constructor = Napi::Persistent(ctor);
55
- exports["Query"] = ctor;
56
- }
57
-
58
- Query::Query(const Napi::CallbackInfo &info) : Napi::ObjectWrap<Query>(info) , query_(nullptr) {
59
- Napi::Env env = info.Env();
60
-
61
- Value().TypeTag(&QUERY_TYPE_TAG);
62
-
63
- const TSLanguage *language = language_methods::UnwrapLanguage(info[0]);
64
- const char *source;
65
- uint32_t source_len;
66
- uint32_t error_offset = 0;
67
- TSQueryError error_type = TSQueryErrorNone;
68
-
69
- if (language == nullptr) {
70
- throw Error::New(env, "Missing language argument");
71
- }
72
-
73
- if (info[1].IsString()) {
74
- auto string = info[1].As<String>();
75
- std::string utf8_string = string.Utf8Value();
76
- source = utf8_string.data();
77
- source_len = utf8_string.length();
78
- query_ = ts_query_new(language, source, source_len, &error_offset, &error_type);
79
- } else if (info[1].IsBuffer()) {
80
- auto buf = info[1].As<Buffer<char>>();
81
- source = buf.Data();
82
- source_len = buf.Length();
83
- query_ = ts_query_new(language, source, source_len, &error_offset, &error_type);
84
- }
85
- else {
86
- throw Error::New(env, "Missing source argument");
87
- }
88
-
89
- if (error_offset > 0) {
90
- const char *error_name = query_error_names[error_type];
91
- std::string message = "Query error of type ";
92
- message += error_name;
93
- message += " at position ";
94
- message += std::to_string(error_offset);
95
- throw Error::New(env, message.c_str());
96
- }
97
-
98
- info.This().As<Napi::Object>().Get("_init").As<Napi::Function>().Call(info.This(), {});
99
- }
100
-
101
- Query::~Query() {
102
- ts_query_delete(query_);
103
- }
104
-
105
- Query *Query::UnwrapQuery(const Napi::Value &value) {
106
- if (!value.IsObject()) {
107
- return nullptr;
108
- }
109
- auto js_query = value.As<Object>();
110
- if (!js_query.CheckTypeTag(&QUERY_TYPE_TAG)) {
111
- return nullptr;
112
- }
113
- return Query::Unwrap(js_query);
114
- }
115
-
116
- Napi::Value Query::GetPredicates(const Napi::CallbackInfo &info) {
117
- Napi::Env env = info.Env();
118
- Query *query = Query::UnwrapQuery(info.This());
119
- auto *ts_query = query->query_;
120
-
121
- auto pattern_len = ts_query_pattern_count(ts_query);
122
-
123
- Array js_predicates = Array::New(env);
124
-
125
- for (size_t pattern_index = 0; pattern_index < pattern_len; pattern_index++) {
126
- uint32_t predicates_len;
127
- const TSQueryPredicateStep *predicates = ts_query_predicates_for_pattern(
128
- ts_query, pattern_index, &predicates_len);
129
-
130
- Array js_pattern_predicates = Array::New(env);
131
-
132
- if (predicates_len > 0) {
133
- Array js_predicate = Array::New(env);
134
-
135
- size_t a_index = 0;
136
- size_t p_index = 0;
137
- for (size_t i = 0; i < predicates_len; i++) {
138
- const TSQueryPredicateStep predicate = predicates[i];
139
- uint32_t len;
140
- switch (predicate.type) {
141
- case TSQueryPredicateStepTypeCapture:
142
- js_predicate[p_index++] = Number::New(env, TSQueryPredicateStepTypeCapture);
143
- js_predicate[p_index++] = String::New(env,
144
- ts_query_capture_name_for_id(ts_query, predicate.value_id, &len)
145
- );
146
- break;
147
- case TSQueryPredicateStepTypeString:
148
- js_predicate[p_index++] = Number::New(env, TSQueryPredicateStepTypeString);
149
- js_predicate[p_index++] = String::New(env,
150
- ts_query_string_value_for_id(ts_query, predicate.value_id, &len)
151
- );
152
- break;
153
- case TSQueryPredicateStepTypeDone:
154
- js_pattern_predicates[a_index++] = js_predicate;
155
- js_predicate = Array::New(env);
156
- p_index = 0;
157
- break;
158
- }
159
- }
160
- }
161
-
162
- js_predicates[pattern_index] = js_pattern_predicates;
163
- }
164
-
165
- return js_predicates;
166
- }
167
-
168
- Napi::Value Query::Matches(const Napi::CallbackInfo &info) {
169
- Napi::Env env = info.Env();
170
- auto *data = env.GetInstanceData<AddonData>();
171
- Query *query = Query::UnwrapQuery(info.This());
172
- const Tree *tree = Tree::UnwrapTree(info[0]);
173
-
174
- uint32_t start_row = 0, start_column = 0, end_row = 0, end_column = 0, start_index = 0, end_index = 0,
175
- match_limit = UINT32_MAX, max_start_depth = UINT32_MAX, timeout_micros = 0;
176
-
177
- if (info.Length() > 1 && info[1].IsNumber()) {
178
- start_row = info[1].As<Number>().Uint32Value();
179
- }
180
- if (info.Length() > 2 && info[2].IsNumber()) {
181
- start_column = info[2].As<Number>().Uint32Value() << 1;
182
- }
183
- if (info.Length() > 3 && info[3].IsNumber()) {
184
- end_row = info[3].As<Number>().Uint32Value();
185
- }
186
- if (info.Length() > 4 && info[4].IsNumber()) {
187
- end_column = info[4].As<Number>().Uint32Value() << 1;
188
- }
189
- if (info.Length() > 5 && info[5].IsNumber()) {
190
- start_index = info[5].As<Number>().Uint32Value();
191
- }
192
- if (info.Length() > 6 && info[6].IsNumber()) {
193
- end_index = info[6].As<Number>().Uint32Value() << 1;
194
- }
195
- if (info.Length() > 7 && info[7].IsNumber()) {
196
- match_limit = info[7].As<Number>().Uint32Value();
197
- }
198
- if (info.Length() > 8 && info[8].IsNumber()) {
199
- max_start_depth = info[8].As<Number>().Uint32Value();
200
- }
201
- if (info.Length() > 9 && info[9].IsNumber()) {
202
- timeout_micros = info[9].As<Number>().Uint32Value();
203
- }
204
-
205
- if (query == nullptr) {
206
- throw Error::New(env, "Missing argument query");
207
- }
208
-
209
- if (tree == nullptr) {
210
- throw Error::New(env, "Missing argument tree");
211
- }
212
-
213
- TSQuery *ts_query = query->query_;
214
- TSNode root_node = node_methods::UnmarshalNode(env, tree);
215
- TSPoint start_point = {start_row, start_column};
216
- TSPoint end_point = {end_row, end_column};
217
- ts_query_cursor_set_point_range(data->ts_query_cursor, start_point, end_point);
218
- ts_query_cursor_set_byte_range(data->ts_query_cursor, start_index, end_index);
219
- ts_query_cursor_set_match_limit(data->ts_query_cursor, match_limit);
220
- ts_query_cursor_set_max_start_depth(data->ts_query_cursor, max_start_depth);
221
- ts_query_cursor_set_timeout_micros(data->ts_query_cursor, timeout_micros);
222
- ts_query_cursor_exec(data->ts_query_cursor, ts_query, root_node);
223
-
224
- Array js_matches = Array::New(env);
225
- unsigned index = 0;
226
- vector<TSNode> nodes;
227
- TSQueryMatch match;
228
-
229
- while (ts_query_cursor_next_match(data->ts_query_cursor, &match)) {
230
- js_matches[index++] = Number::New(env, match.pattern_index);
231
-
232
- for (uint16_t i = 0; i < match.capture_count; i++) {
233
- const TSQueryCapture &capture = match.captures[i];
234
-
235
- uint32_t capture_name_len = 0;
236
- const char *capture_name = ts_query_capture_name_for_id(
237
- ts_query, capture.index, &capture_name_len);
238
-
239
- TSNode node = capture.node;
240
- nodes.push_back(node);
241
-
242
- String js_capture = String::New(env, capture_name);;
243
- js_matches[index++] = js_capture;
244
- }
245
- }
246
-
247
- auto js_nodes = node_methods::GetMarshalNodes(info, tree, nodes.data(), nodes.size());
248
-
249
- auto result = Array::New(env);
250
- result[0U] = js_matches;
251
- result[1] = js_nodes;
252
- return result;
253
- }
254
-
255
- Napi::Value Query::Captures(const Napi::CallbackInfo &info) {
256
- Napi::Env env = info.Env();
257
- auto *data = env.GetInstanceData<AddonData>();
258
- Query *query = Query::UnwrapQuery(info.This());
259
- const Tree *tree = Tree::UnwrapTree(info[0]);
260
-
261
- uint32_t start_row = 0, start_column = 0, end_row = 0, end_column = 0, start_index = 0, end_index = 0,
262
- match_limit = UINT32_MAX, max_start_depth = UINT32_MAX, timeout_micros = 0;
263
-
264
- if (info.Length() > 1 && info[1].IsNumber()) {
265
- start_row = info[1].As<Number>().Uint32Value();
266
- }
267
- if (info.Length() > 2 && info[2].IsNumber()) {
268
- start_column = info[2].As<Number>().Uint32Value() << 1;
269
- }
270
- if (info.Length() > 3 && info[3].IsNumber()) {
271
- end_row = info[3].As<Number>().Uint32Value();
272
- }
273
- if (info.Length() > 4 && info[4].IsNumber()) {
274
- end_column = info[4].As<Number>().Uint32Value() << 1;
275
- }
276
- if (info.Length() > 5 && info[5].IsNumber()) {
277
- start_index = info[5].As<Number>().Uint32Value();
278
- }
279
- if (info.Length() > 6 && info[6].IsNumber()) {
280
- end_index = info[6].As<Number>().Uint32Value() << 1;
281
- }
282
- if (info.Length() > 7 && info[7].IsNumber()) {
283
- match_limit = info[7].As<Number>().Uint32Value();
284
- }
285
- if (info.Length() > 8 && info[8].IsNumber()) {
286
- max_start_depth = info[8].As<Number>().Uint32Value();
287
- }
288
- if (info.Length() > 9 && info[9].IsNumber()) {
289
- timeout_micros = info[9].As<Number>().Uint32Value();
290
- }
291
-
292
- if (query == nullptr) {
293
- throw Error::New(env, "Missing argument query");
294
- }
295
-
296
- if (tree == nullptr) {
297
- throw Error::New(env, "Missing argument tree");
298
- }
299
-
300
- TSQuery *ts_query = query->query_;
301
- TSNode root_node = node_methods::UnmarshalNode(env, tree);
302
- TSPoint start_point = {start_row, start_column};
303
- TSPoint end_point = {end_row, end_column};
304
- ts_query_cursor_set_point_range(data->ts_query_cursor, start_point, end_point);
305
- ts_query_cursor_set_byte_range(data->ts_query_cursor, start_index, end_index);
306
- ts_query_cursor_set_match_limit(data->ts_query_cursor, match_limit);
307
- ts_query_cursor_set_max_start_depth(data->ts_query_cursor, max_start_depth);
308
- ts_query_cursor_set_timeout_micros(data->ts_query_cursor, timeout_micros);
309
- ts_query_cursor_exec(data->ts_query_cursor, ts_query, root_node);
310
-
311
- Array js_matches = Array::New(env);
312
- unsigned index = 0;
313
- vector<TSNode> nodes;
314
- TSQueryMatch match;
315
- uint32_t capture_index;
316
-
317
- while (ts_query_cursor_next_capture(
318
- data->ts_query_cursor,
319
- &match,
320
- &capture_index
321
- )) {
322
-
323
- js_matches[index++] = Number::New(env, match.pattern_index);
324
- js_matches[index++] = Number::New(env, capture_index);
325
-
326
- for (uint16_t i = 0; i < match.capture_count; i++) {
327
- const TSQueryCapture &capture = match.captures[i];
328
-
329
- uint32_t capture_name_len = 0;
330
- const char *capture_name = ts_query_capture_name_for_id(
331
- ts_query, capture.index, &capture_name_len);
332
-
333
- TSNode node = capture.node;
334
- nodes.push_back(node);
335
-
336
- String js_capture = String::New(env, capture_name);;
337
- js_matches[index++] = js_capture;
338
- }
339
- }
340
-
341
- auto js_nodes = node_methods::GetMarshalNodes(info, tree, nodes.data(), nodes.size());
342
-
343
- auto result = Array::New(env);
344
- result[0U] = js_matches;
345
- result[1] = js_nodes;
346
- return result;
347
- }
348
-
349
- Napi::Value Query::DisableCapture(const Napi::CallbackInfo &info) {
350
- std::string string = info[0].As<String>().Utf8Value();
351
- const char *capture_name = string.c_str();
352
- ts_query_disable_capture(query_, capture_name, string.length());
353
- return info.Env().Undefined();
354
- }
355
-
356
- Napi::Value Query::DisablePattern(const Napi::CallbackInfo &info) {
357
- uint32_t pattern_index = info[0].As<Number>().Uint32Value();
358
- ts_query_disable_pattern(query_, pattern_index);
359
- return info.Env().Undefined();
360
- }
361
-
362
- Napi::Value Query::IsPatternGuaranteedAtStep(const Napi::CallbackInfo &info) {
363
- uint32_t byte_offset = info[0].As<Number>().Uint32Value();
364
- return Boolean::New(info.Env(), ts_query_is_pattern_guaranteed_at_step(query_, byte_offset));
365
- }
366
-
367
- Napi::Value Query::IsPatternRooted(const Napi::CallbackInfo &info) {
368
- uint32_t pattern_index = info[0].As<Number>().Uint32Value();
369
- return Boolean::New(info.Env(), ts_query_is_pattern_rooted(query_, pattern_index));
370
- }
371
-
372
- Napi::Value Query::IsPatternNonLocal(const Napi::CallbackInfo &info) {
373
- uint32_t pattern_index = info[0].As<Number>().Uint32Value();
374
- return Boolean::New(info.Env(), ts_query_is_pattern_non_local(query_, pattern_index));
375
- }
376
-
377
- Napi::Value Query::StartIndexForPattern(const Napi::CallbackInfo &info) {
378
- uint32_t pattern_index = info[0].As<Number>().Uint32Value();
379
- return Number::New(info.Env(), ts_query_start_byte_for_pattern(query_, pattern_index));
380
- }
381
-
382
- Napi::Value Query::EndIndexForPattern(const Napi::CallbackInfo &info) {
383
- uint32_t pattern_index = info[0].As<Number>().Uint32Value();
384
- return Number::New(info.Env(), ts_query_end_byte_for_pattern(query_, pattern_index));
385
- }
386
-
387
- Napi::Value Query::DidExceedMatchLimit(const Napi::CallbackInfo &info) {
388
- auto *data = info.Env().GetInstanceData<AddonData>();
389
- return Boolean::New(info.Env(), ts_query_cursor_did_exceed_match_limit(data->ts_query_cursor));
390
- }
391
-
392
- Napi::Value Query::MatchLimit(const Napi::CallbackInfo &info) {
393
- auto *data = info.Env().GetInstanceData<AddonData>();
394
- return Number::New(info.Env(), ts_query_cursor_match_limit(data->ts_query_cursor));
395
- }
396
-
397
- } // namespace node_tree_sitter
@@ -1,40 +0,0 @@
1
- #ifndef NODE_TREE_SITTER_QUERY_H_
2
- #define NODE_TREE_SITTER_QUERY_H_
3
-
4
- #include "./addon_data.h"
5
- #include "tree_sitter/api.h"
6
-
7
- #include <napi.h>
8
- #include <node_object_wrap.h>
9
-
10
- namespace node_tree_sitter {
11
-
12
- class Query final : public Napi::ObjectWrap<Query> {
13
- public:
14
- static void Init(Napi::Env env, Napi::Object exports);
15
- static Query *UnwrapQuery(const Napi::Value &);
16
-
17
- explicit Query(const Napi::CallbackInfo &info);
18
- ~Query() final;
19
-
20
- private:
21
- TSQuery *query_;
22
-
23
- Napi::Value New(const Napi::CallbackInfo &);
24
- Napi::Value Matches(const Napi::CallbackInfo &);
25
- Napi::Value Captures(const Napi::CallbackInfo &);
26
- Napi::Value GetPredicates(const Napi::CallbackInfo &);
27
- Napi::Value DisableCapture(const Napi::CallbackInfo &);
28
- Napi::Value DisablePattern(const Napi::CallbackInfo &);
29
- Napi::Value IsPatternGuaranteedAtStep(const Napi::CallbackInfo &);
30
- Napi::Value IsPatternRooted(const Napi::CallbackInfo &);
31
- Napi::Value IsPatternNonLocal(const Napi::CallbackInfo &);
32
- Napi::Value StartIndexForPattern(const Napi::CallbackInfo &);
33
- Napi::Value EndIndexForPattern(const Napi::CallbackInfo &);
34
- Napi::Value DidExceedMatchLimit(const Napi::CallbackInfo &);
35
- Napi::Value MatchLimit(const Napi::CallbackInfo &);
36
- };
37
-
38
- } // namespace node_tree_sitter
39
-
40
- #endif // NODE_TREE_SITTER_QUERY_H_