@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,30 +0,0 @@
1
- #ifndef NODE_TREE_SITTER_NODE_H_
2
- #define NODE_TREE_SITTER_NODE_H_
3
-
4
- #include "./tree.h"
5
- #include "tree_sitter/api.h"
6
-
7
- #include <napi.h>
8
-
9
- namespace node_tree_sitter::node_methods {
10
-
11
- void Init(Napi::Env env, Napi::Object exports);
12
- Napi::Value MarshalNode(const Napi::CallbackInfo &info, const Tree *, TSNode);
13
- Napi::Value GetMarshalNode(const Napi::CallbackInfo &info, const Tree *tree, TSNode node);
14
- Napi::Value GetMarshalNodes(const Napi::CallbackInfo &info, const Tree *tree, const TSNode *nodes, uint32_t node_count);
15
- TSNode UnmarshalNode(Napi::Env env, const Tree *tree, uint8_t offset = 0);
16
-
17
- static inline const void *UnmarshalNodeId(const uint32_t *buffer) {
18
- const void *result;
19
- memcpy(&result, buffer, sizeof(result));
20
- return result;
21
- }
22
-
23
- static inline void MarshalNodeId(const void *id, uint32_t *buffer) {
24
- memset(buffer, 0, sizeof(uint64_t));
25
- memcpy(buffer, &id, sizeof(id));
26
- }
27
-
28
- } // namespace node_tree_sitter::node_methods
29
-
30
- #endif // NODE_TREE_SITTER_NODE_H_
@@ -1,306 +0,0 @@
1
- #include "./parser.h"
2
- #include "./conversions.h"
3
- #include "./language.h"
4
- #include "./logger.h"
5
- #include "./tree.h"
6
-
7
- #include <cstddef>
8
- #include <napi.h>
9
- #include <vector>
10
-
11
- using namespace Napi;
12
- using std::vector;
13
-
14
- namespace node_tree_sitter {
15
-
16
- class CallbackInput final {
17
- public:
18
- CallbackInput(Function callback, Napi::Value js_buffer_size) {
19
- this->callback.Reset(callback, 1);
20
- if (js_buffer_size.IsNumber()) {
21
- buffer.resize(js_buffer_size.As<Number>().Uint32Value());
22
- } else {
23
- buffer.resize(static_cast<uint64_t>(32 * 1024));
24
- }
25
- }
26
-
27
- ~CallbackInput() {
28
- callback.Reset();
29
- partial_string.Reset();
30
- }
31
-
32
- TSInput Input() {
33
- TSInput result;
34
- result.payload = static_cast<void *>(this);
35
- result.encoding = TSInputEncodingUTF16LE;
36
- result.read = Read;
37
- return result;
38
- }
39
-
40
- private:
41
- static String slice(String s, uint32_t offset) {
42
- Env env = s.Env();
43
- auto *data = env.GetInstanceData<AddonData>();
44
- return data->string_slice.Call(s, {Number::New(s.Env(), offset)}).As<String>();
45
- }
46
-
47
- static const char * Read(void *payload, uint32_t byte, TSPoint position, uint32_t *bytes_read) {
48
- auto *reader = static_cast<CallbackInput *>(payload);
49
- Napi::Env env = reader->callback.Env();
50
-
51
- if (byte != reader->byte_offset) {
52
- reader->byte_offset = byte;
53
- reader->partial_string.Reset();
54
- }
55
-
56
- *bytes_read = 0;
57
- String result;
58
- if (!reader->partial_string.IsEmpty()) {
59
- result = reader->partial_string.Get("value").As<String>();
60
- } else {
61
- Function callback = reader->callback.Value();
62
- Napi::Value result_value = callback({
63
- ByteCountToJS(env, byte),
64
- PointToJS(env, position),
65
- });
66
- if (env.IsExceptionPending()) {
67
- return nullptr;
68
- }
69
- if (!result_value.IsString()) {
70
- return nullptr;
71
- }
72
- result = result_value.As<String>();
73
- }
74
-
75
- size_t length = 0;
76
- size_t utf16_units_read = 0;
77
- napi_status status;
78
- status = napi_get_value_string_utf16(
79
- env, result, nullptr, 0, &length
80
- );
81
- if (status != napi_ok) {
82
- return nullptr;
83
- }
84
- status = napi_get_value_string_utf16(
85
- env, result, reinterpret_cast<char16_t *>(reader->buffer.data()), reader->buffer.size(), &utf16_units_read
86
- );
87
- if (status != napi_ok) {
88
- return nullptr;
89
- }
90
-
91
- *bytes_read = 2 * utf16_units_read;
92
- reader->byte_offset += *bytes_read;
93
-
94
- if (utf16_units_read < length) {
95
- if (reader->partial_string.IsEmpty()) {
96
- reader->partial_string = Napi::Persistent(Object::New(env));
97
- }
98
- reader->partial_string.Set("value", slice(result, utf16_units_read));
99
- } else {
100
- reader->partial_string.Reset();
101
- }
102
-
103
- return reinterpret_cast<const char *>(reader->buffer.data());
104
- }
105
-
106
- FunctionReference callback;
107
- std::vector<uint16_t> buffer;
108
- size_t byte_offset {};
109
- ObjectReference partial_string;
110
- };
111
-
112
- void Parser::Init(Napi::Env env, Napi::Object exports) {
113
- auto *data = env.GetInstanceData<AddonData>();
114
-
115
- Function ctor = DefineClass(env, "Parser", {
116
- InstanceMethod("setLanguage", &Parser::SetLanguage, napi_default_method),
117
- InstanceMethod("parse", &Parser::Parse, napi_default_method),
118
- InstanceMethod("getIncludedRanges", &Parser::IncludedRanges, napi_default_method),
119
- InstanceMethod("getTimeoutMicros", &Parser::TimeoutMicros, napi_default_method),
120
- InstanceMethod("setTimeoutMicros", &Parser::SetTimeoutMicros, napi_default_method),
121
- InstanceMethod("getLogger", &Parser::GetLogger, napi_default_method),
122
- InstanceMethod("setLogger", &Parser::SetLogger, napi_default_method),
123
- InstanceMethod("printDotGraphs", &Parser::PrintDotGraphs, napi_default_method),
124
- InstanceMethod("reset", &Parser::Reset, napi_default_method),
125
- });
126
-
127
- data->parser_constructor = Napi::Persistent(ctor);
128
- exports["Parser"] = ctor;
129
- exports["LANGUAGE_VERSION"] = Number::New(env, TREE_SITTER_LANGUAGE_VERSION);
130
-
131
- String s = String::New(env, "");
132
- Napi::Value string_slice_value = s.As<Object>()["slice"];
133
- data->string_slice = Napi::Persistent(string_slice_value.As<Function>());
134
- }
135
-
136
- Parser::Parser(const Napi::CallbackInfo &info) : Napi::ObjectWrap<Parser>(info), parser_(ts_parser_new()) {}
137
-
138
- Parser::~Parser() {
139
- ts_parser_print_dot_graphs(parser_, -1);
140
- ts_parser_set_logger(parser_, { nullptr, nullptr });
141
- ts_parser_delete(parser_);
142
- }
143
-
144
- namespace {
145
-
146
- bool handle_included_ranges(Napi::Env env, TSParser *parser, Napi::Value arg) {
147
- uint32_t last_included_range_end = 0;
148
- if (arg.IsArray()) {
149
- auto js_included_ranges = arg.As<Array>();
150
- vector<TSRange> included_ranges;
151
- for (unsigned i = 0; i < js_included_ranges.Length(); i++) {
152
- Value range_value = js_included_ranges[i];
153
- if (!range_value.IsObject()) {
154
- return false;
155
- }
156
- auto maybe_range = RangeFromJS(range_value);
157
- if (!maybe_range.IsJust()) {
158
- return false;
159
- }
160
- auto range = maybe_range.Unwrap();
161
- if (range.start_byte < last_included_range_end) {
162
- throw RangeError::New(env, "Overlapping ranges");
163
- }
164
- last_included_range_end = range.end_byte;
165
- included_ranges.push_back(range);
166
- }
167
- ts_parser_set_included_ranges(parser, included_ranges.data(), included_ranges.size());
168
- } else {
169
- ts_parser_set_included_ranges(parser, nullptr, 0);
170
- }
171
-
172
- return true;
173
- }
174
-
175
- } // namespace
176
-
177
- Napi::Value Parser::SetLanguage(const Napi::CallbackInfo &info) {
178
- const TSLanguage *language = language_methods::UnwrapLanguage(info[0]);
179
- if (language != nullptr) {
180
- ts_parser_set_language(parser_, language);
181
- return info.This();
182
- }
183
- return info.Env().Undefined();
184
- }
185
-
186
- Napi::Value Parser::Parse(const CallbackInfo &info) {
187
- Napi::Env env = info.Env();
188
-
189
- if (!info[0].IsFunction()) {
190
- throw TypeError::New(env, "Input must be a function");
191
- }
192
-
193
- auto callback = info[0].As<Function>();
194
-
195
- Object js_old_tree;
196
- const TSTree *old_tree = nullptr;
197
- if (info.Length() > 1 && !info[1].IsNull() && !info[1].IsUndefined() && info[1].IsObject()) {
198
- js_old_tree = info[1].As<Object>();
199
- const Tree *tree = Tree::UnwrapTree(js_old_tree);
200
- if (tree == nullptr) {
201
- throw TypeError::New(env, "Second argument must be a tree");
202
- }
203
- old_tree = tree->tree_;
204
- }
205
-
206
- Napi::Value buffer_size = env.Null();
207
- if (info.Length() > 2) {
208
- buffer_size = info[2];
209
- }
210
-
211
- if (!handle_included_ranges(env, parser_, info[3])) {
212
- return env.Undefined();
213
- }
214
-
215
- CallbackInput callback_input(callback, buffer_size);
216
- TSTree *tree = ts_parser_parse(parser_, old_tree, callback_input.Input());
217
- Napi::Value result = Tree::NewInstance(env, tree);
218
- return result;
219
- }
220
-
221
- Napi::Value Parser::IncludedRanges(const Napi::CallbackInfo &info) {
222
- Napi::Env env = info.Env();
223
- uint32_t count;
224
- const TSRange *ranges = ts_parser_included_ranges(parser_, &count);
225
-
226
- Napi::Array result = Napi::Array::New(env, count);
227
- for (uint32_t i = 0; i < count; i++) {
228
- result[i] = RangeToJS(env, ranges[i]);
229
- }
230
-
231
- return result;
232
- }
233
-
234
- Napi::Value Parser::TimeoutMicros(const Napi::CallbackInfo &info) {
235
- uint64_t timeout_micros = ts_parser_timeout_micros(parser_);
236
- return Number::New(info.Env(), static_cast<double>(timeout_micros));
237
- }
238
-
239
- Napi::Value Parser::SetTimeoutMicros(const Napi::CallbackInfo &info) {
240
- uint64_t timeout_micros;
241
- if (!info[0].IsNumber()) {
242
- throw TypeError::New(info.Env(), "First argument must be a number");
243
- }
244
- timeout_micros = info[0].As<Number>().Uint32Value();
245
- ts_parser_set_timeout_micros(parser_, timeout_micros);
246
- return info.This();
247
- }
248
-
249
- Napi::Value Parser::GetLogger(const Napi::CallbackInfo &info) {
250
- TSLogger current_logger = ts_parser_logger(parser_);
251
- if ((current_logger.payload != nullptr) && current_logger.log == Logger::Log) {
252
- auto *logger = static_cast<Logger *>(current_logger.payload);
253
- return logger->func.Value();
254
- }
255
- return info.Env().Null();
256
- }
257
-
258
- Napi::Value Parser::SetLogger(const Napi::CallbackInfo &info) {
259
- TSLogger current_logger = ts_parser_logger(parser_);
260
-
261
- if (info[0].IsFunction()) {
262
- if (current_logger.payload != nullptr) {
263
- delete static_cast<Logger *>(current_logger.payload);
264
- }
265
- ts_parser_set_logger(parser_, Logger::Make(info[0].As<Function>()));
266
- } else if (info[0].IsEmpty() || info[0].IsUndefined() || info[0].IsNull() || (info[0].IsBoolean() && !info[0].As<Boolean>())) {
267
- if (current_logger.payload != nullptr) {
268
- delete static_cast<Logger *>(current_logger.payload);
269
- }
270
- ts_parser_set_logger(parser_, { nullptr, nullptr });
271
- } else {
272
- throw TypeError::New(info.Env(), "Logger callback must either be a function or a falsy value");
273
- }
274
-
275
- return info.This();
276
- }
277
-
278
- Napi::Value Parser::PrintDotGraphs(const Napi::CallbackInfo &info) {
279
- bool should_print = true;
280
- int fd = fileno(stderr);
281
-
282
- if (info.Length() > 0) {
283
- if (!info[0].IsBoolean()) {
284
- throw TypeError::New(info.Env(), "First argument must be a boolean");
285
- }
286
- should_print = info[0].As<Boolean>();
287
- }
288
-
289
- if (info.Length() > 1) {
290
- if (!info[1].IsNumber()) {
291
- throw TypeError::New(info.Env(), "Second argument must be a number");
292
- }
293
- fd = info[1].As<Number>().Int32Value();
294
- }
295
-
296
- ts_parser_print_dot_graphs(parser_, should_print ? fd : -1);
297
-
298
- return info.This();
299
- }
300
-
301
- Napi::Value Parser::Reset(const Napi::CallbackInfo & info) {
302
- ts_parser_reset(parser_);
303
- return info.This();
304
- }
305
-
306
- } // namespace node_tree_sitter
@@ -1,35 +0,0 @@
1
- #ifndef NODE_TREE_SITTER_PARSER_H_
2
- #define NODE_TREE_SITTER_PARSER_H_
3
-
4
- #include "tree_sitter/api.h"
5
-
6
- #include <napi.h>
7
- #include <node_object_wrap.h>
8
-
9
- namespace node_tree_sitter {
10
-
11
- class Parser final : public Napi::ObjectWrap<Parser> {
12
- public:
13
- static void Init(Napi::Env env, Napi::Object exports);
14
-
15
- explicit Parser(const Napi::CallbackInfo &info);
16
- ~Parser() final;
17
-
18
- private:
19
- TSParser *parser_;
20
-
21
- Napi::Value SetLanguage(const Napi::CallbackInfo &);
22
- Napi::Value Parse(const Napi::CallbackInfo &);
23
- Napi::Value IncludedRanges(const Napi::CallbackInfo &info);
24
- Napi::Value SetIncludedRanges(const Napi::CallbackInfo &info);
25
- Napi::Value TimeoutMicros(const Napi::CallbackInfo &info);
26
- Napi::Value SetTimeoutMicros(const Napi::CallbackInfo &info);
27
- Napi::Value GetLogger(const Napi::CallbackInfo &);
28
- Napi::Value SetLogger(const Napi::CallbackInfo &);
29
- Napi::Value PrintDotGraphs(const Napi::CallbackInfo &);
30
- Napi::Value Reset(const Napi::CallbackInfo &info);
31
- };
32
-
33
- } // namespace node_tree_sitter
34
-
35
- #endif // NODE_TREE_SITTER_PARSER_H_