semantifold 0.1.1 → 0.3.0

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 (399) hide show
  1. package/README.md +42 -10
  2. package/build/index.d.ts +32 -3
  3. package/build/index.d.ts.map +1 -1
  4. package/build/index.js +99 -4
  5. package/build/src/acceptance.d.ts +32 -0
  6. package/build/src/acceptance.d.ts.map +1 -0
  7. package/build/src/acceptance.js +358 -0
  8. package/build/src/array.d.ts +7 -0
  9. package/build/src/array.d.ts.map +1 -0
  10. package/build/src/array.js +18 -0
  11. package/build/src/artifact-path.d.ts +13 -0
  12. package/build/src/artifact-path.d.ts.map +1 -0
  13. package/build/src/artifact-path.js +30 -0
  14. package/build/src/artifacts.d.ts +7 -0
  15. package/build/src/artifacts.d.ts.map +1 -0
  16. package/build/src/artifacts.js +389 -0
  17. package/build/src/backends/c-runtime.d.ts +3 -0
  18. package/build/src/backends/c-runtime.d.ts.map +1 -0
  19. package/build/src/backends/c-runtime.js +151 -0
  20. package/build/src/backends/c-validation.d.ts +12 -0
  21. package/build/src/backends/c-validation.d.ts.map +1 -0
  22. package/build/src/backends/c-validation.js +85 -0
  23. package/build/src/backends/c.d.ts +31 -0
  24. package/build/src/backends/c.d.ts.map +1 -0
  25. package/build/src/backends/c.js +308 -0
  26. package/build/src/backends/cpp-runtime.d.ts +3 -0
  27. package/build/src/backends/cpp-runtime.d.ts.map +1 -0
  28. package/build/src/backends/cpp-runtime.js +99 -0
  29. package/build/src/backends/cpp-validation.d.ts +9 -0
  30. package/build/src/backends/cpp-validation.d.ts.map +1 -0
  31. package/build/src/backends/cpp-validation.js +74 -0
  32. package/build/src/backends/cpp.d.ts +16 -0
  33. package/build/src/backends/cpp.d.ts.map +1 -0
  34. package/build/src/backends/cpp.js +285 -0
  35. package/build/src/backends/csharp.d.ts +20 -0
  36. package/build/src/backends/csharp.d.ts.map +1 -0
  37. package/build/src/backends/csharp.js +259 -0
  38. package/build/src/backends/go.d.ts +20 -0
  39. package/build/src/backends/go.d.ts.map +1 -0
  40. package/build/src/backends/go.js +374 -0
  41. package/build/src/backends/identifiers.d.ts +12 -0
  42. package/build/src/backends/identifiers.d.ts.map +1 -1
  43. package/build/src/backends/identifiers.js +79 -2
  44. package/build/src/backends/index.d.ts.map +1 -1
  45. package/build/src/backends/index.js +27 -37
  46. package/build/src/backends/native-validation.d.ts +9 -0
  47. package/build/src/backends/native-validation.d.ts.map +1 -0
  48. package/build/src/backends/native-validation.js +59 -0
  49. package/build/src/backends/ordered-expressions.d.ts +74 -0
  50. package/build/src/backends/ordered-expressions.d.ts.map +1 -0
  51. package/build/src/backends/ordered-expressions.js +159 -0
  52. package/build/src/backends/python.d.ts +8 -0
  53. package/build/src/backends/python.d.ts.map +1 -0
  54. package/build/src/backends/python.js +162 -0
  55. package/build/src/backends/scalars.d.ts.map +1 -1
  56. package/build/src/backends/scalars.js +8 -2
  57. package/build/src/backends/shared.d.ts.map +1 -1
  58. package/build/src/backends/shared.js +67 -19
  59. package/build/src/binary-mapping.d.ts +32 -0
  60. package/build/src/binary-mapping.d.ts.map +1 -0
  61. package/build/src/binary-mapping.js +285 -0
  62. package/build/src/diagnostic.d.ts +36 -4
  63. package/build/src/diagnostic.d.ts.map +1 -1
  64. package/build/src/diagnostic.js +42 -3
  65. package/build/src/frontends/c-parser.d.ts +20 -0
  66. package/build/src/frontends/c-parser.d.ts.map +1 -0
  67. package/build/src/frontends/c-parser.js +14 -0
  68. package/build/src/frontends/c.d.ts +220 -0
  69. package/build/src/frontends/c.d.ts.map +1 -0
  70. package/build/src/frontends/c.js +750 -0
  71. package/build/src/frontends/cpp-parser.d.ts +11 -0
  72. package/build/src/frontends/cpp-parser.d.ts.map +1 -0
  73. package/build/src/frontends/cpp-parser.js +15 -0
  74. package/build/src/frontends/cpp.d.ts +227 -0
  75. package/build/src/frontends/cpp.d.ts.map +1 -0
  76. package/build/src/frontends/cpp.js +784 -0
  77. package/build/src/frontends/csharp.d.ts +14 -0
  78. package/build/src/frontends/csharp.d.ts.map +1 -0
  79. package/build/src/frontends/csharp.js +708 -0
  80. package/build/src/frontends/go.d.ts +15 -0
  81. package/build/src/frontends/go.d.ts.map +1 -0
  82. package/build/src/frontends/go.js +712 -0
  83. package/build/src/frontends/index.d.ts.map +1 -1
  84. package/build/src/frontends/index.js +5 -23
  85. package/build/src/frontends/python.d.ts +14 -0
  86. package/build/src/frontends/python.d.ts.map +1 -0
  87. package/build/src/frontends/python.js +615 -0
  88. package/build/src/frontends/scalars.d.ts.map +1 -1
  89. package/build/src/frontends/scalars.js +21 -1
  90. package/build/src/language-registry.d.ts +113 -0
  91. package/build/src/language-registry.d.ts.map +1 -0
  92. package/build/src/language-registry.js +421 -0
  93. package/build/src/mapping.js +3 -2
  94. package/build/src/semantic/location.d.ts +7 -0
  95. package/build/src/semantic/location.d.ts.map +1 -1
  96. package/build/src/semantic/location.js +10 -1
  97. package/build/src/semantic/provenance.js +3 -3
  98. package/build/src/semantic/types.d.ts +399 -2
  99. package/build/src/semantic/types.d.ts.map +1 -1
  100. package/build/src/semantic/types.js +110 -2
  101. package/build/src/subprocess.d.ts +38 -0
  102. package/build/src/subprocess.d.ts.map +1 -0
  103. package/build/src/subprocess.js +233 -0
  104. package/build/src/timeout.d.ts +8 -0
  105. package/build/src/timeout.d.ts.map +1 -0
  106. package/build/src/timeout.js +11 -0
  107. package/build/src/toolchains.d.ts +107 -0
  108. package/build/src/toolchains.d.ts.map +1 -0
  109. package/build/src/toolchains.js +417 -0
  110. package/docs/architecture.md +23 -5
  111. package/docs/c.md +60 -0
  112. package/docs/cpp.md +61 -0
  113. package/docs/goals.md +4 -2
  114. package/docs/language-support.md +46 -6
  115. package/docs/parser-qualification.md +219 -0
  116. package/docs/plans/2026-09-05-standard-library-portability.md +46 -0
  117. package/docs/source-maps.md +38 -5
  118. package/docs/standard-library-portability.md +190 -0
  119. package/docs/testing.md +131 -3
  120. package/index.js +109 -4
  121. package/node_modules/node-addon-api/LICENSE.md +9 -0
  122. package/node_modules/node-addon-api/README.md +95 -0
  123. package/node_modules/node-addon-api/common.gypi +21 -0
  124. package/node_modules/node-addon-api/except.gypi +25 -0
  125. package/node_modules/node-addon-api/index.js +14 -0
  126. package/node_modules/node-addon-api/napi-inl.deprecated.h +186 -0
  127. package/node_modules/node-addon-api/napi-inl.h +7250 -0
  128. package/node_modules/node-addon-api/napi.h +3463 -0
  129. package/node_modules/node-addon-api/node_addon_api.gyp +42 -0
  130. package/node_modules/node-addon-api/node_api.gyp +9 -0
  131. package/node_modules/node-addon-api/noexcept.gypi +26 -0
  132. package/node_modules/node-addon-api/nothing.c +0 -0
  133. package/node_modules/node-addon-api/package-support.json +21 -0
  134. package/node_modules/node-addon-api/package.json +481 -0
  135. package/node_modules/node-addon-api/tools/README.md +73 -0
  136. package/node_modules/node-addon-api/tools/check-napi.js +99 -0
  137. package/node_modules/node-addon-api/tools/clang-format.js +71 -0
  138. package/node_modules/node-addon-api/tools/conversion.js +301 -0
  139. package/node_modules/node-gyp-build/LICENSE +21 -0
  140. package/node_modules/node-gyp-build/README.md +58 -0
  141. package/node_modules/node-gyp-build/SECURITY.md +5 -0
  142. package/node_modules/node-gyp-build/bin.js +84 -0
  143. package/node_modules/node-gyp-build/build-test.js +19 -0
  144. package/node_modules/node-gyp-build/index.js +6 -0
  145. package/node_modules/node-gyp-build/node-gyp-build.js +207 -0
  146. package/node_modules/node-gyp-build/optional.js +7 -0
  147. package/node_modules/node-gyp-build/package.json +43 -0
  148. package/node_modules/semantifold-tree-sitter-legacy-internal/LICENSE +15 -0
  149. package/node_modules/semantifold-tree-sitter-legacy-internal/README.md +7 -0
  150. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/LICENSE +21 -0
  151. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/README.md +90 -0
  152. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/binding.gyp +79 -0
  153. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/index.js +895 -0
  154. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/package.json +62 -0
  155. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/prebuilds/darwin-arm64/tree-sitter.node +0 -0
  156. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/prebuilds/darwin-x64/tree-sitter.node +0 -0
  157. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/prebuilds/linux-x64/tree-sitter.node +0 -0
  158. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/prebuilds/win32-x64/tree-sitter.node +0 -0
  159. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/addon_data.h +47 -0
  160. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/binding.cc +35 -0
  161. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/conversions.cc +140 -0
  162. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/conversions.h +22 -0
  163. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/language.cc +106 -0
  164. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/language.h +17 -0
  165. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/logger.cc +70 -0
  166. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/logger.h +19 -0
  167. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/lookaheaditerator.cc +122 -0
  168. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/lookaheaditerator.h +33 -0
  169. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/node.cc +1056 -0
  170. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/node.h +30 -0
  171. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/parser.cc +298 -0
  172. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/parser.h +35 -0
  173. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/query.cc +383 -0
  174. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/query.h +39 -0
  175. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/tree.cc +307 -0
  176. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/tree.h +45 -0
  177. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/tree_cursor.cc +213 -0
  178. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/src/tree_cursor.h +52 -0
  179. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/tree-sitter.d.ts +211 -0
  180. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/include/tree_sitter/api.h +1266 -0
  181. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/alloc.c +48 -0
  182. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/alloc.h +41 -0
  183. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/array.h +290 -0
  184. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/atomic.h +68 -0
  185. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/clock.h +146 -0
  186. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/error_costs.h +11 -0
  187. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/get_changed_ranges.c +501 -0
  188. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/get_changed_ranges.h +36 -0
  189. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/host.h +21 -0
  190. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/language.c +221 -0
  191. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/language.h +299 -0
  192. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/length.h +52 -0
  193. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/lexer.c +419 -0
  194. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/lexer.h +49 -0
  195. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/lib.c +14 -0
  196. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/node.c +774 -0
  197. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/parser.c +2151 -0
  198. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/parser.h +230 -0
  199. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/point.h +62 -0
  200. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/query.c +4134 -0
  201. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/reduce_action.h +34 -0
  202. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/reusable_node.h +95 -0
  203. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/stack.c +899 -0
  204. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/stack.h +133 -0
  205. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/subtree.c +1060 -0
  206. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/subtree.h +382 -0
  207. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree.c +165 -0
  208. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree.h +31 -0
  209. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree_cursor.c +714 -0
  210. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree_cursor.h +48 -0
  211. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/ICU_SHA +1 -0
  212. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/LICENSE +414 -0
  213. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/README.md +29 -0
  214. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/ptypes.h +1 -0
  215. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/umachine.h +448 -0
  216. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/urename.h +1 -0
  217. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/utf.h +1 -0
  218. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/utf16.h +733 -0
  219. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/utf8.h +881 -0
  220. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode.h +50 -0
  221. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm/stdlib-symbols.txt +23 -0
  222. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm/stdlib.c +109 -0
  223. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm/wasm-stdlib.h +1294 -0
  224. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm_store.c +1823 -0
  225. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm_store.h +31 -0
  226. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/LICENSE +21 -0
  227. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/README.md +18 -0
  228. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/binding.gyp +29 -0
  229. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/bindings/node/binding.cc +20 -0
  230. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/bindings/node/binding_test.js +9 -0
  231. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/bindings/node/index.d.ts +28 -0
  232. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/bindings/node/index.js +11 -0
  233. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/grammar.js +1470 -0
  234. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/package.json +60 -0
  235. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/prebuilds/darwin-arm64/tree-sitter-c.node +0 -0
  236. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/prebuilds/darwin-x64/tree-sitter-c.node +0 -0
  237. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/prebuilds/linux-arm64/tree-sitter-c.node +0 -0
  238. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/prebuilds/linux-x64/tree-sitter-c.node +0 -0
  239. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/prebuilds/win32-arm64/tree-sitter-c.node +0 -0
  240. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/prebuilds/win32-x64/tree-sitter-c.node +0 -0
  241. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/queries/highlights.scm +81 -0
  242. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/queries/tags.scm +9 -0
  243. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/src/grammar.json +9735 -0
  244. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/src/node-types.json +4614 -0
  245. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/src/parser.c +119615 -0
  246. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/src/tree_sitter/alloc.h +54 -0
  247. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/src/tree_sitter/array.h +290 -0
  248. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/src/tree_sitter/parser.h +266 -0
  249. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/tree-sitter-c.wasm +0 -0
  250. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-c/tree-sitter.json +43 -0
  251. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/LICENSE +21 -0
  252. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/README.md +22 -0
  253. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/binding.gyp +30 -0
  254. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/bindings/node/binding.cc +20 -0
  255. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/bindings/node/binding_test.js +9 -0
  256. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/bindings/node/index.d.ts +28 -0
  257. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/bindings/node/index.js +11 -0
  258. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/grammar.js +1436 -0
  259. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/package.json +61 -0
  260. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/prebuilds/darwin-arm64/tree-sitter-cpp.node +0 -0
  261. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/prebuilds/darwin-x64/tree-sitter-cpp.node +0 -0
  262. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/prebuilds/linux-arm64/tree-sitter-cpp.node +0 -0
  263. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/prebuilds/linux-x64/tree-sitter-cpp.node +0 -0
  264. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/prebuilds/win32-arm64/tree-sitter-cpp.node +0 -0
  265. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/prebuilds/win32-x64/tree-sitter-cpp.node +0 -0
  266. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/queries/highlights.scm +70 -0
  267. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/queries/injections.scm +3 -0
  268. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/queries/tags.scm +15 -0
  269. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/src/grammar.json +17084 -0
  270. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/src/node-types.json +7997 -0
  271. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/src/parser.c +530368 -0
  272. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/src/scanner.c +148 -0
  273. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/src/tree_sitter/alloc.h +54 -0
  274. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/src/tree_sitter/array.h +290 -0
  275. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/src/tree_sitter/parser.h +266 -0
  276. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/tree-sitter-cpp.wasm +0 -0
  277. package/node_modules/semantifold-tree-sitter-legacy-internal/node_modules/tree-sitter-cpp/tree-sitter.json +55 -0
  278. package/node_modules/semantifold-tree-sitter-legacy-internal/package.json +22 -0
  279. package/node_modules/semantifold-tree-sitter-legacy-internal/src/c.js +152 -0
  280. package/node_modules/tree-sitter/LICENSE +21 -0
  281. package/node_modules/tree-sitter/README.md +128 -0
  282. package/node_modules/tree-sitter/binding.gyp +88 -0
  283. package/node_modules/tree-sitter/index.js +950 -0
  284. package/node_modules/tree-sitter/package.json +76 -0
  285. package/node_modules/tree-sitter/prebuilds/darwin-arm64/tree-sitter.node +0 -0
  286. package/node_modules/tree-sitter/prebuilds/darwin-x64/tree-sitter.node +0 -0
  287. package/node_modules/tree-sitter/prebuilds/linux-arm64/tree-sitter.node +0 -0
  288. package/node_modules/tree-sitter/prebuilds/linux-x64/tree-sitter.node +0 -0
  289. package/node_modules/tree-sitter/prebuilds/win32-arm64/tree-sitter.node +0 -0
  290. package/node_modules/tree-sitter/prebuilds/win32-x64/tree-sitter.node +0 -0
  291. package/node_modules/tree-sitter/src/addon_data.h +47 -0
  292. package/node_modules/tree-sitter/src/binding.cc +35 -0
  293. package/node_modules/tree-sitter/src/conversions.cc +140 -0
  294. package/node_modules/tree-sitter/src/conversions.h +22 -0
  295. package/node_modules/tree-sitter/src/language.cc +105 -0
  296. package/node_modules/tree-sitter/src/language.h +17 -0
  297. package/node_modules/tree-sitter/src/logger.cc +70 -0
  298. package/node_modules/tree-sitter/src/logger.h +19 -0
  299. package/node_modules/tree-sitter/src/lookaheaditerator.cc +122 -0
  300. package/node_modules/tree-sitter/src/lookaheaditerator.h +33 -0
  301. package/node_modules/tree-sitter/src/node.cc +1088 -0
  302. package/node_modules/tree-sitter/src/node.h +30 -0
  303. package/node_modules/tree-sitter/src/parser.cc +332 -0
  304. package/node_modules/tree-sitter/src/parser.h +35 -0
  305. package/node_modules/tree-sitter/src/query.cc +425 -0
  306. package/node_modules/tree-sitter/src/query.h +40 -0
  307. package/node_modules/tree-sitter/src/tree.cc +316 -0
  308. package/node_modules/tree-sitter/src/tree.h +45 -0
  309. package/node_modules/tree-sitter/src/tree_cursor.cc +213 -0
  310. package/node_modules/tree-sitter/src/tree_cursor.h +52 -0
  311. package/node_modules/tree-sitter/tree-sitter.d.ts +1083 -0
  312. package/node_modules/tree-sitter/vendor/tree-sitter/lib/include/tree_sitter/api.h +1478 -0
  313. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/alloc.c +48 -0
  314. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/alloc.h +41 -0
  315. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/array.h +291 -0
  316. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/atomic.h +68 -0
  317. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/clock.h +146 -0
  318. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/error_costs.h +11 -0
  319. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/get_changed_ranges.c +523 -0
  320. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/get_changed_ranges.h +36 -0
  321. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/host.h +21 -0
  322. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/language.c +293 -0
  323. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/language.h +293 -0
  324. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/length.h +52 -0
  325. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/lexer.c +483 -0
  326. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/lexer.h +54 -0
  327. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/lib.c +12 -0
  328. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/node.c +875 -0
  329. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/parser.c +2297 -0
  330. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/parser.h +286 -0
  331. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/point.h +48 -0
  332. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/portable/endian.h +241 -0
  333. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/query.c +4347 -0
  334. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/reduce_action.h +34 -0
  335. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/reusable_node.h +95 -0
  336. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/stack.c +912 -0
  337. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/stack.h +133 -0
  338. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/subtree.c +1034 -0
  339. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/subtree.h +399 -0
  340. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree.c +170 -0
  341. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree.h +31 -0
  342. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree_cursor.c +716 -0
  343. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/tree_cursor.h +48 -0
  344. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/ts_assert.h +11 -0
  345. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/ICU_SHA +1 -0
  346. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/LICENSE +414 -0
  347. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/README.md +29 -0
  348. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/ptypes.h +1 -0
  349. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/umachine.h +448 -0
  350. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/urename.h +1 -0
  351. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/utf.h +1 -0
  352. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/utf16.h +733 -0
  353. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode/utf8.h +881 -0
  354. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/unicode.h +75 -0
  355. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm/stdlib-symbols.txt +24 -0
  356. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm/stdlib.c +137 -0
  357. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm/wasm-stdlib.h +1314 -0
  358. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm_store.c +1937 -0
  359. package/node_modules/tree-sitter/vendor/tree-sitter/lib/src/wasm_store.h +31 -0
  360. package/package.json +24 -6
  361. package/src/acceptance.js +380 -0
  362. package/src/array.js +19 -0
  363. package/src/artifact-path.js +34 -0
  364. package/src/artifacts.js +420 -0
  365. package/src/backends/c-runtime.js +151 -0
  366. package/src/backends/c-validation.js +83 -0
  367. package/src/backends/c.js +308 -0
  368. package/src/backends/cpp-runtime.js +99 -0
  369. package/src/backends/cpp-validation.js +70 -0
  370. package/src/backends/cpp.js +285 -0
  371. package/src/backends/csharp.js +270 -0
  372. package/src/backends/go.js +383 -0
  373. package/src/backends/identifiers.js +80 -1
  374. package/src/backends/index.js +23 -32
  375. package/src/backends/native-validation.js +64 -0
  376. package/src/backends/ordered-expressions.js +161 -0
  377. package/src/backends/python.js +175 -0
  378. package/src/backends/scalars.js +8 -1
  379. package/src/backends/shared.js +64 -17
  380. package/src/binary-mapping.js +305 -0
  381. package/src/diagnostic.js +34 -2
  382. package/src/frontends/c-parser.js +17 -0
  383. package/src/frontends/c.js +780 -0
  384. package/src/frontends/cpp-parser.js +18 -0
  385. package/src/frontends/cpp.js +816 -0
  386. package/src/frontends/csharp.js +759 -0
  387. package/src/frontends/go.js +770 -0
  388. package/src/frontends/index.js +5 -20
  389. package/src/frontends/python.js +689 -0
  390. package/src/frontends/scalars.js +20 -0
  391. package/src/language-registry.js +454 -0
  392. package/src/mapping.js +2 -1
  393. package/src/semantic/location.js +10 -0
  394. package/src/semantic/provenance.js +2 -2
  395. package/src/semantic/types.js +124 -1
  396. package/src/subprocess.js +232 -0
  397. package/src/timeout.js +12 -0
  398. package/src/toolchains.js +448 -0
  399. package/tsconfig.json +1 -0
@@ -0,0 +1,950 @@
1
+ const binding = typeof process.versions.bun === "string" ?
2
+ // Statically analyzable enough for `bun build --compile` to embed the tree-sitter.node napi addon
3
+ require(`./prebuilds/${process.platform}-${process.arch}/tree-sitter.node`) :
4
+ require('node-gyp-build')(__dirname);
5
+ const {Query, Parser, NodeMethods, Tree, TreeCursor, LookaheadIterator} = binding;
6
+
7
+ const util = require('util');
8
+
9
+ /*
10
+ * Tree
11
+ */
12
+
13
+ const {rootNode, rootNodeWithOffset, edit} = Tree.prototype;
14
+
15
+ Object.defineProperty(Tree.prototype, 'rootNode', {
16
+ get() {
17
+ /*
18
+ Due to a race condition arising from Jest's worker pool, "this"
19
+ has no knowledge of the native extension if the extension has not
20
+ yet loaded when multiple Jest tests are being run simultaneously.
21
+ If the extension has correctly loaded, "this" should be an instance
22
+ of the class whose prototype we are acting on (in this case, Tree).
23
+ Furthermore, the race condition sometimes results in the function in
24
+ question being undefined even when the context is correct, so we also
25
+ perform a null function check.
26
+ */
27
+ if (this instanceof Tree && rootNode) {
28
+ return unmarshalNode(rootNode.call(this), this);
29
+ }
30
+ },
31
+ // Jest worker pool may attempt to override property due to race condition,
32
+ // we don't want to error on this
33
+ configurable: true
34
+ });
35
+
36
+ Tree.prototype.rootNodeWithOffset = function(offset_bytes, offset_extent) {
37
+ return unmarshalNode(rootNodeWithOffset.call(this, offset_bytes, offset_extent.row, offset_extent.column), this);
38
+ }
39
+
40
+ Tree.prototype.edit = function(arg) {
41
+ if (this instanceof Tree && edit) {
42
+ edit.call(
43
+ this,
44
+ arg.startPosition.row, arg.startPosition.column,
45
+ arg.oldEndPosition.row, arg.oldEndPosition.column,
46
+ arg.newEndPosition.row, arg.newEndPosition.column,
47
+ arg.startIndex,
48
+ arg.oldEndIndex,
49
+ arg.newEndIndex
50
+ );
51
+ }
52
+ };
53
+
54
+ Tree.prototype.walk = function() {
55
+ return this.rootNode.walk()
56
+ };
57
+
58
+ /*
59
+ * Node
60
+ */
61
+
62
+ class SyntaxNode {
63
+ constructor(tree) {
64
+ Object.defineProperty(this, 'tree', {
65
+ value: tree,
66
+ enumerable: true
67
+ });
68
+ }
69
+
70
+ [util.inspect.custom]() {
71
+ return this.constructor.name + ' {\n' +
72
+ ' type: ' + this.type + ',\n' +
73
+ ' startPosition: ' + pointToString(this.startPosition) + ',\n' +
74
+ ' endPosition: ' + pointToString(this.endPosition) + ',\n' +
75
+ ' childCount: ' + this.childCount + ',\n' +
76
+ '}'
77
+ }
78
+
79
+ get id() {
80
+ marshalNode(this);
81
+ return NodeMethods.id(this.tree);
82
+ }
83
+
84
+ get typeId() {
85
+ marshalNode(this);
86
+ return NodeMethods.typeId(this.tree);
87
+ }
88
+
89
+ get grammarId() {
90
+ marshalNode(this);
91
+ return NodeMethods.grammarId(this.tree);
92
+ }
93
+
94
+ get type() {
95
+ marshalNode(this);
96
+ return NodeMethods.type(this.tree);
97
+ }
98
+
99
+ get grammarType() {
100
+ marshalNode(this);
101
+ return NodeMethods.grammarType(this.tree);
102
+ }
103
+
104
+ get isExtra() {
105
+ marshalNode(this);
106
+ return NodeMethods.isExtra(this.tree);
107
+ }
108
+
109
+ get isNamed() {
110
+ marshalNode(this);
111
+ return NodeMethods.isNamed(this.tree);
112
+ }
113
+
114
+ get isMissing() {
115
+ marshalNode(this);
116
+ return NodeMethods.isMissing(this.tree);
117
+ }
118
+
119
+ get hasChanges() {
120
+ marshalNode(this);
121
+ return NodeMethods.hasChanges(this.tree);
122
+ }
123
+
124
+ get hasError() {
125
+ marshalNode(this);
126
+ return NodeMethods.hasError(this.tree);
127
+ }
128
+
129
+ get isError() {
130
+ marshalNode(this);
131
+ return NodeMethods.isError(this.tree);
132
+ }
133
+
134
+ get text() {
135
+ return this.tree.getText(this);
136
+ }
137
+
138
+ get startPosition() {
139
+ marshalNode(this);
140
+ NodeMethods.startPosition(this.tree);
141
+ return unmarshalPoint();
142
+ }
143
+
144
+ get endPosition() {
145
+ marshalNode(this);
146
+ NodeMethods.endPosition(this.tree);
147
+ return unmarshalPoint();
148
+ }
149
+
150
+ get startIndex() {
151
+ marshalNode(this);
152
+ return NodeMethods.startIndex(this.tree);
153
+ }
154
+
155
+ get endIndex() {
156
+ marshalNode(this);
157
+ return NodeMethods.endIndex(this.tree);
158
+ }
159
+
160
+ get parent() {
161
+ marshalNode(this);
162
+ return unmarshalNode(NodeMethods.parent(this.tree), this.tree);
163
+ }
164
+
165
+ get children() {
166
+ marshalNode(this);
167
+ return unmarshalNodes(NodeMethods.children(this.tree), this.tree);
168
+ }
169
+
170
+ get namedChildren() {
171
+ marshalNode(this);
172
+ return unmarshalNodes(NodeMethods.namedChildren(this.tree), this.tree);
173
+ }
174
+
175
+ get childCount() {
176
+ marshalNode(this);
177
+ return NodeMethods.childCount(this.tree);
178
+ }
179
+
180
+ get namedChildCount() {
181
+ marshalNode(this);
182
+ return NodeMethods.namedChildCount(this.tree);
183
+ }
184
+
185
+ get firstChild() {
186
+ marshalNode(this);
187
+ return unmarshalNode(NodeMethods.firstChild(this.tree), this.tree);
188
+ }
189
+
190
+ get firstNamedChild() {
191
+ marshalNode(this);
192
+ return unmarshalNode(NodeMethods.firstNamedChild(this.tree), this.tree);
193
+ }
194
+
195
+ get lastChild() {
196
+ marshalNode(this);
197
+ return unmarshalNode(NodeMethods.lastChild(this.tree), this.tree);
198
+ }
199
+
200
+ get lastNamedChild() {
201
+ marshalNode(this);
202
+ return unmarshalNode(NodeMethods.lastNamedChild(this.tree), this.tree);
203
+ }
204
+
205
+ get nextSibling() {
206
+ marshalNode(this);
207
+ return unmarshalNode(NodeMethods.nextSibling(this.tree), this.tree);
208
+ }
209
+
210
+ get nextNamedSibling() {
211
+ marshalNode(this);
212
+ return unmarshalNode(NodeMethods.nextNamedSibling(this.tree), this.tree);
213
+ }
214
+
215
+ get previousSibling() {
216
+ marshalNode(this);
217
+ return unmarshalNode(NodeMethods.previousSibling(this.tree), this.tree);
218
+ }
219
+
220
+ get previousNamedSibling() {
221
+ marshalNode(this);
222
+ return unmarshalNode(NodeMethods.previousNamedSibling(this.tree), this.tree);
223
+ }
224
+
225
+ get parseState() {
226
+ marshalNode(this);
227
+ return NodeMethods.parseState(this.tree);
228
+ }
229
+
230
+ get nextParseState() {
231
+ marshalNode(this);
232
+ return NodeMethods.nextParseState(this.tree);
233
+ }
234
+
235
+ get descendantCount() {
236
+ marshalNode(this);
237
+ return NodeMethods.descendantCount(this.tree);
238
+ }
239
+
240
+ toString() {
241
+ marshalNode(this);
242
+ return NodeMethods.toString(this.tree);
243
+ }
244
+
245
+ toJSON() {
246
+ return {
247
+ type: this.type,
248
+ startPosition: this.startPosition,
249
+ endPosition: this.endPosition,
250
+ childCount: this.childCount,
251
+ }
252
+ }
253
+
254
+ child(index) {
255
+ marshalNode(this);
256
+ return unmarshalNode(NodeMethods.child(this.tree, index), this.tree);
257
+ }
258
+
259
+ namedChild(index) {
260
+ marshalNode(this);
261
+ return unmarshalNode(NodeMethods.namedChild(this.tree, index), this.tree);
262
+ }
263
+
264
+ childForFieldName(fieldName) {
265
+ marshalNode(this);
266
+ return unmarshalNode(NodeMethods.childForFieldName(this.tree, fieldName), this.tree);
267
+ }
268
+
269
+ childForFieldId(fieldId) {
270
+ marshalNode(this);
271
+ return unmarshalNode(NodeMethods.childForFieldId(this.tree, fieldId), this.tree);
272
+ }
273
+
274
+ fieldNameForChild(childIndex) {
275
+ marshalNode(this);
276
+ return NodeMethods.fieldNameForChild(this.tree, childIndex);
277
+ }
278
+
279
+ fieldNameForNamedChild(namedChildIndex) {
280
+ marshalNode(this);
281
+ return NodeMethods.fieldNameForNamedChild(this.tree, namedChildIndex);
282
+ }
283
+
284
+ childrenForFieldName(fieldName) {
285
+ marshalNode(this);
286
+ return unmarshalNodes(NodeMethods.childrenForFieldName(this.tree, fieldName), this.tree);
287
+ }
288
+
289
+ childrenForFieldId(fieldId) {
290
+ marshalNode(this);
291
+ return unmarshalNodes(NodeMethods.childrenForFieldId(this.tree, fieldId), this.tree);
292
+ }
293
+
294
+ firstChildForIndex(index) {
295
+ marshalNode(this);
296
+ return unmarshalNode(NodeMethods.firstChildForIndex(this.tree, index), this.tree);
297
+ }
298
+
299
+ firstNamedChildForIndex(index) {
300
+ marshalNode(this);
301
+ return unmarshalNode(NodeMethods.firstNamedChildForIndex(this.tree, index), this.tree);
302
+ }
303
+
304
+ childWithDescendant(descendant) {
305
+ marshalNodes([this, descendant]);
306
+ return unmarshalNode(NodeMethods.childWithDescendant(this.tree, descendant.tree), this.tree);
307
+ }
308
+
309
+ namedDescendantForIndex(start, end) {
310
+ marshalNode(this);
311
+ if (end == null) end = start;
312
+ return unmarshalNode(NodeMethods.namedDescendantForIndex(this.tree, start, end), this.tree);
313
+ }
314
+
315
+ descendantForIndex(start, end) {
316
+ marshalNode(this);
317
+ if (end == null) end = start;
318
+ return unmarshalNode(NodeMethods.descendantForIndex(this.tree, start, end), this.tree);
319
+ }
320
+
321
+ descendantsOfType(types, start, end) {
322
+ marshalNode(this);
323
+ if (typeof types === 'string') types = [types]
324
+ return unmarshalNodes(NodeMethods.descendantsOfType(this.tree, types, start, end), this.tree);
325
+ }
326
+
327
+ namedDescendantForPosition(start, end) {
328
+ marshalNode(this);
329
+ if (end == null) end = start;
330
+ return unmarshalNode(NodeMethods.namedDescendantForPosition(this.tree, start, end), this.tree);
331
+ }
332
+
333
+ descendantForPosition(start, end) {
334
+ marshalNode(this);
335
+ if (end == null) end = start;
336
+ return unmarshalNode(NodeMethods.descendantForPosition(this.tree, start, end), this.tree);
337
+ }
338
+
339
+ closest(types) {
340
+ marshalNode(this);
341
+ if (typeof types === 'string') types = [types]
342
+ return unmarshalNode(NodeMethods.closest(this.tree, types), this.tree);
343
+ }
344
+
345
+ walk () {
346
+ marshalNode(this);
347
+ const cursor = NodeMethods.walk(this.tree);
348
+ cursor.tree = this.tree;
349
+ unmarshalNode(cursor.currentNode, this.tree);
350
+ return cursor;
351
+ }
352
+ }
353
+
354
+ /*
355
+ * Parser
356
+ */
357
+
358
+ const {parse, setLanguage} = Parser.prototype;
359
+ const languageSymbol = Symbol('parser.language');
360
+
361
+ Parser.prototype.setLanguage = function(language) {
362
+ if (this instanceof Parser && setLanguage) {
363
+ setLanguage.call(this, language);
364
+ }
365
+ this[languageSymbol] = language;
366
+ if (!language.nodeSubclasses) {
367
+ initializeLanguageNodeClasses(language)
368
+ }
369
+ return this;
370
+ };
371
+
372
+ Parser.prototype.getLanguage = function(_language) {
373
+ return this[languageSymbol] || null;
374
+ };
375
+
376
+ Parser.prototype.parse = function(input, oldTree, {bufferSize, includedRanges, progressCallback}={}) {
377
+ let getText, treeInput = input
378
+ if (typeof input === 'string') {
379
+ const inputString = input;
380
+ input = (offset, _position) => inputString.slice(offset)
381
+ getText = getTextFromString
382
+ } else {
383
+ getText = getTextFromFunction
384
+ }
385
+ const tree = this instanceof Parser && parse
386
+ ? parse.call(
387
+ this,
388
+ input,
389
+ oldTree,
390
+ bufferSize,
391
+ includedRanges,
392
+ progressCallback,
393
+ )
394
+ : undefined;
395
+
396
+ if (tree) {
397
+ tree.input = treeInput
398
+ tree.getText = getText
399
+ tree.language = this.getLanguage()
400
+ }
401
+ return tree
402
+ };
403
+
404
+ /*
405
+ * TreeCursor
406
+ */
407
+
408
+ const {startPosition, endPosition, currentNode} = TreeCursor.prototype;
409
+
410
+ Object.defineProperties(TreeCursor.prototype, {
411
+ currentNode: {
412
+ get() {
413
+ if (this instanceof TreeCursor && currentNode) {
414
+ return unmarshalNode(currentNode.call(this), this.tree);
415
+ }
416
+ },
417
+ configurable: true
418
+ },
419
+ startPosition: {
420
+ get() {
421
+ if (this instanceof TreeCursor && startPosition) {
422
+ startPosition.call(this);
423
+ return unmarshalPoint();
424
+ }
425
+ },
426
+ configurable: true
427
+ },
428
+ endPosition: {
429
+ get() {
430
+ if (this instanceof TreeCursor && endPosition) {
431
+ endPosition.call(this);
432
+ return unmarshalPoint();
433
+ }
434
+ },
435
+ configurable: true
436
+ },
437
+ nodeText: {
438
+ get() {
439
+ return this.tree.getText(this)
440
+ },
441
+ configurable: true
442
+ }
443
+ });
444
+
445
+ /*
446
+ * Query
447
+ */
448
+
449
+ const {_matches, _captures} = Query.prototype;
450
+
451
+ const PREDICATE_STEP_TYPE = {
452
+ DONE: 0,
453
+ CAPTURE: 1,
454
+ STRING: 2,
455
+ }
456
+
457
+ const ZERO_POINT = { row: 0, column: 0 };
458
+
459
+ Query.prototype._init = function() {
460
+ /*
461
+ * Initialize predicate functions
462
+ * format: [type1, value1, type2, value2, ...]
463
+ */
464
+ const predicateDescriptions = this._getPredicates();
465
+ const patternCount = predicateDescriptions.length;
466
+
467
+ const setProperties = new Array(patternCount);
468
+ const assertedProperties = new Array(patternCount);
469
+ const refutedProperties = new Array(patternCount);
470
+ const predicates = new Array(patternCount);
471
+
472
+ const FIRST = 0
473
+ const SECOND = 2
474
+ const THIRD = 4
475
+
476
+ for (let i = 0; i < predicateDescriptions.length; i++) {
477
+ predicates[i] = [];
478
+
479
+ for (let j = 0; j < predicateDescriptions[i].length; j++) {
480
+
481
+ const steps = predicateDescriptions[i][j];
482
+ const stepsLength = steps.length / 2;
483
+
484
+ if (steps[FIRST] !== PREDICATE_STEP_TYPE.STRING) {
485
+ throw new Error('Predicates must begin with a literal value');
486
+ }
487
+
488
+ const operator = steps[FIRST + 1];
489
+
490
+ let isPositive = true;
491
+ let matchAll = true;
492
+ let captureName;
493
+ switch (operator) {
494
+ case 'any-not-eq?':
495
+ case 'not-eq?':
496
+ isPositive = false;
497
+ case 'any-eq?':
498
+ case 'eq?':
499
+ if (stepsLength !== 3) throw new Error(
500
+ `Wrong number of arguments to \`#eq?\` predicate. Expected 2, got ${stepsLength - 1}`
501
+ );
502
+ if (steps[SECOND] !== PREDICATE_STEP_TYPE.CAPTURE) throw new Error(
503
+ `First argument of \`#eq?\` predicate must be a capture. Got "${steps[SECOND + 1]}"`
504
+ );
505
+ matchAll = !operator.startsWith('any-');
506
+ if (steps[THIRD] === PREDICATE_STEP_TYPE.CAPTURE) {
507
+ const captureName1 = steps[SECOND + 1];
508
+ const captureName2 = steps[THIRD + 1];
509
+ predicates[i].push(function (captures) {
510
+ let nodes_1 = [];
511
+ let nodes_2 = [];
512
+ for (const c of captures) {
513
+ if (c.name === captureName1) nodes_1.push(c.node);
514
+ if (c.name === captureName2) nodes_2.push(c.node);
515
+ }
516
+ let compare = (n1, n2, positive) => {
517
+ return positive ?
518
+ n1.text === n2.text :
519
+ n1.text !== n2.text;
520
+ };
521
+ return matchAll
522
+ ? nodes_1.every(n1 => nodes_2.some(n2 => compare(n1, n2, isPositive)))
523
+ : nodes_1.some(n1 => nodes_2.some(n2 => compare(n1, n2, isPositive)));
524
+ });
525
+ } else {
526
+ captureName = steps[SECOND + 1];
527
+ const stringValue = steps[THIRD + 1];
528
+ let matches = (n) => n.text === stringValue;
529
+ let doesNotMatch = (n) => n.text !== stringValue;
530
+ predicates[i].push(function (captures) {
531
+ let nodes = [];
532
+ for (const c of captures) {
533
+ if (c.name === captureName) nodes.push(c.node);
534
+ }
535
+ let test = isPositive ? matches : doesNotMatch;
536
+ return matchAll
537
+ ? nodes.every(test)
538
+ : nodes.some(test);
539
+ });
540
+ }
541
+ break;
542
+
543
+ case 'any-not-match?':
544
+ case 'not-match?':
545
+ isPositive = false;
546
+ case 'any-match?':
547
+ case 'match?':
548
+ if (stepsLength !== 3) throw new Error(
549
+ `Wrong number of arguments to \`#match?\` predicate. Expected 2, got ${stepsLength - 1}.`
550
+ );
551
+ if (steps[SECOND] !== PREDICATE_STEP_TYPE.CAPTURE) throw new Error(
552
+ `First argument of \`#match?\` predicate must be a capture. Got "${steps[SECOND + 1]}".`
553
+ );
554
+ if (steps[THIRD] !== PREDICATE_STEP_TYPE.STRING) throw new Error(
555
+ `Second argument of \`#match?\` predicate must be a string. Got @${steps[THIRD + 1]}.`
556
+ );
557
+ captureName = steps[SECOND + 1];
558
+ const regex = new RegExp(steps[THIRD + 1]);
559
+ matchAll = !operator.startsWith('any-');
560
+ predicates[i].push(function (captures) {
561
+ const nodes = [];
562
+ for (const c of captures) {
563
+ if (c.name === captureName) nodes.push(c.node.text);
564
+ }
565
+ let test = (text, positive) => {
566
+ return positive ?
567
+ regex.test(text) :
568
+ !regex.test(text);
569
+ };
570
+ if (nodes.length === 0) return !isPositive;
571
+ return matchAll
572
+ ? nodes.every(text => test(text, isPositive))
573
+ : nodes.some(text => test(text, isPositive))
574
+ });
575
+ break;
576
+
577
+ case 'set!':
578
+ if (stepsLength < 2 || stepsLength > 3) throw new Error(
579
+ `Wrong number of arguments to \`#set!\` predicate. Expected 1 or 2. Got ${stepsLength - 1}.`
580
+ );
581
+ if (steps.some((s, i) => (i % 2 !== 1) && s !== PREDICATE_STEP_TYPE.STRING)) throw new Error(
582
+ `Arguments to \`#set!\` predicate must be a strings.".`
583
+ );
584
+ if (!setProperties[i]) setProperties[i] = {};
585
+ setProperties[i][steps[SECOND + 1]] = steps[THIRD] ? steps[THIRD + 1] : null;
586
+ break;
587
+
588
+ case 'is?':
589
+ case 'is-not?':
590
+ if (stepsLength < 2 || stepsLength > 3) throw new Error(
591
+ `Wrong number of arguments to \`#${operator}\` predicate. Expected 1 or 2. Got ${stepsLength - 1}.`
592
+ );
593
+ if (steps.some((s, i) => (i % 2 !== 1) && s !== PREDICATE_STEP_TYPE.STRING)) throw new Error(
594
+ `Arguments to \`#${operator}\` predicate must be a strings.".`
595
+ );
596
+ const properties = operator === 'is?' ? assertedProperties : refutedProperties;
597
+ if (!properties[i]) properties[i] = {};
598
+ properties[i][steps[SECOND + 1]] = steps[THIRD] ? steps[THIRD + 1] : null;
599
+ break;
600
+
601
+ case 'not-any-of?':
602
+ isPositive = false;
603
+ case 'any-of?':
604
+ if (stepsLength < 2) throw new Error(
605
+ `Wrong number of arguments to \`#${operator}\` predicate. Expected at least 1. Got ${stepsLength - 1}.`
606
+ );
607
+ if (steps[SECOND] !== PREDICATE_STEP_TYPE.CAPTURE) throw new Error(
608
+ `First argument of \`#${operator}\` predicate must be a capture. Got "${steps[1].value}".`
609
+ );
610
+ const stringValues = [];
611
+ for (let k = THIRD; k < 2 * stepsLength; k += 2) {
612
+ if (steps[k] !== PREDICATE_STEP_TYPE.STRING) throw new Error(
613
+ `Arguments to \`#${operator}\` predicate must be a strings.".`
614
+ );
615
+ stringValues.push(steps[k + 1]);
616
+ }
617
+ captureName = steps[SECOND + 1];
618
+ predicates[i].push(function (captures) {
619
+ const nodes = [];
620
+ for (const c of captures) {
621
+ if (c.name === captureName) nodes.push(c.node.text);
622
+ }
623
+ if (nodes.length === 0) return !isPositive;
624
+ return nodes.every(text => stringValues.includes(text)) === isPositive;
625
+ });
626
+ break;
627
+
628
+ default:
629
+ throw new Error(`Unknown query predicate \`#${steps[FIRST + 1]}\``);
630
+ }
631
+ }
632
+ }
633
+
634
+ this.predicates = Object.freeze(predicates);
635
+ this.setProperties = Object.freeze(setProperties);
636
+ this.assertedProperties = Object.freeze(assertedProperties);
637
+ this.refutedProperties = Object.freeze(refutedProperties);
638
+ }
639
+
640
+ Query.prototype.matches = function(
641
+ node,
642
+ {
643
+ startPosition = ZERO_POINT,
644
+ endPosition = ZERO_POINT,
645
+ startIndex = 0,
646
+ endIndex = 0,
647
+ matchLimit = 0xFFFFFFFF,
648
+ maxStartDepth = 0xFFFFFFFF,
649
+ timeoutMicros = 0
650
+ } = {}
651
+ ) {
652
+ marshalNode(node);
653
+ const [returnedMatches, returnedNodes] = _matches.call(this, node.tree,
654
+ startPosition.row, startPosition.column,
655
+ endPosition.row, endPosition.column,
656
+ startIndex, endIndex, matchLimit, maxStartDepth, timeoutMicros
657
+ );
658
+ const nodes = unmarshalNodes(returnedNodes, node.tree);
659
+ const results = [];
660
+
661
+ let i = 0
662
+ let nodeIndex = 0;
663
+ while (i < returnedMatches.length) {
664
+ const patternIndex = returnedMatches[i++];
665
+ const captures = [];
666
+
667
+ while (i < returnedMatches.length && typeof returnedMatches[i] === 'string') {
668
+ const captureName = returnedMatches[i++];
669
+ captures.push({
670
+ name: captureName,
671
+ node: nodes[nodeIndex++],
672
+ })
673
+ }
674
+
675
+ if (this.predicates[patternIndex].every(p => p(captures))) {
676
+ const result = {pattern: patternIndex, captures};
677
+ const setProperties = this.setProperties[patternIndex];
678
+ const assertedProperties = this.assertedProperties[patternIndex];
679
+ const refutedProperties = this.refutedProperties[patternIndex];
680
+ if (setProperties) result.setProperties = setProperties;
681
+ if (assertedProperties) result.assertedProperties = assertedProperties;
682
+ if (refutedProperties) result.refutedProperties = refutedProperties;
683
+ results.push(result);
684
+ }
685
+ }
686
+
687
+ return results;
688
+ }
689
+
690
+ Query.prototype.captures = function(
691
+ node,
692
+ {
693
+ startPosition = ZERO_POINT,
694
+ endPosition = ZERO_POINT,
695
+ startIndex = 0,
696
+ endIndex = 0,
697
+ matchLimit = 0xFFFFFFFF,
698
+ maxStartDepth = 0xFFFFFFFF,
699
+ timeoutMicros = 0,
700
+ progressCallback = undefined,
701
+ } = {}
702
+ ) {
703
+ marshalNode(node);
704
+ const [returnedMatches, returnedNodes] = _captures.call(this, node.tree,
705
+ startPosition.row, startPosition.column, endPosition.row, endPosition.column,
706
+ startIndex, endIndex, matchLimit, maxStartDepth, timeoutMicros, progressCallback
707
+ );
708
+ const nodes = unmarshalNodes(returnedNodes, node.tree);
709
+ const results = [];
710
+
711
+ let i = 0
712
+ let nodeIndex = 0;
713
+ while (i < returnedMatches.length) {
714
+ const patternIndex = returnedMatches[i++];
715
+ const captureIndex = returnedMatches[i++];
716
+ const captures = [];
717
+
718
+ while (i < returnedMatches.length && typeof returnedMatches[i] === 'string') {
719
+ const captureName = returnedMatches[i++];
720
+ captures.push({
721
+ name: captureName,
722
+ node: nodes[nodeIndex++],
723
+ })
724
+ }
725
+
726
+ if (this.predicates[patternIndex].every(p => p(captures))) {
727
+ const result = captures[captureIndex];
728
+ const setProperties = this.setProperties[patternIndex];
729
+ const assertedProperties = this.assertedProperties[patternIndex];
730
+ const refutedProperties = this.refutedProperties[patternIndex];
731
+ if (setProperties) result.setProperties = setProperties;
732
+ if (assertedProperties) result.assertedProperties = assertedProperties;
733
+ if (refutedProperties) result.refutedProperties = refutedProperties;
734
+ results.push(result);
735
+ }
736
+ }
737
+
738
+ return results;
739
+ }
740
+
741
+ /*
742
+ * LookaheadIterator
743
+ */
744
+
745
+ LookaheadIterator.prototype[Symbol.iterator] = function() {
746
+ const self = this;
747
+ return {
748
+ next() {
749
+ if (self._next()) {
750
+ return {done: false, value: self.currentType};
751
+ }
752
+
753
+ return {done: true, value: ''};
754
+ },
755
+ };
756
+ }
757
+
758
+ /*
759
+ * Other functions
760
+ */
761
+
762
+ function getTextFromString (node) {
763
+ return this.input.substring(node.startIndex, node.endIndex);
764
+ }
765
+
766
+ function getTextFromFunction ({startIndex, endIndex}) {
767
+ const {input} = this
768
+ let result = '';
769
+ const goalLength = endIndex - startIndex;
770
+ while (result.length < goalLength) {
771
+ const text = input(startIndex + result.length);
772
+ result += text;
773
+ }
774
+ return result.slice(0, goalLength);
775
+ }
776
+
777
+ const {pointTransferArray} = binding;
778
+
779
+ const NODE_FIELD_COUNT = 6;
780
+ const ERROR_TYPE_ID = 0xFFFF
781
+
782
+ function getID(buffer, offset) {
783
+ const low = BigInt(buffer[offset]);
784
+ const high = BigInt(buffer[offset + 1]);
785
+ return (high << 32n) + low;
786
+ }
787
+
788
+ function unmarshalNode(value, tree, offset = 0, cache = null) {
789
+ /* case 1: node from the tree cache */
790
+ if (typeof value === 'object') {
791
+ const node = value;
792
+ return node;
793
+ }
794
+
795
+ /* case 2: node being transferred */
796
+ const nodeTypeId = value;
797
+ const NodeClass = nodeTypeId === ERROR_TYPE_ID
798
+ ? SyntaxNode
799
+ : tree.language.nodeSubclasses[nodeTypeId];
800
+
801
+ const {nodeTransferArray} = binding;
802
+ const id = getID(nodeTransferArray, offset)
803
+ if (id === 0n) {
804
+ return null
805
+ }
806
+
807
+ let cachedResult;
808
+ if (cache && (cachedResult = cache.get(id)))
809
+ return cachedResult;
810
+
811
+ const result = new NodeClass(tree);
812
+ for (let i = 0; i < NODE_FIELD_COUNT; i++) {
813
+ result[i] = nodeTransferArray[offset + i];
814
+ }
815
+
816
+ if (cache)
817
+ cache.set(id, result);
818
+ else
819
+ tree._cacheNode(result);
820
+
821
+ return result;
822
+ }
823
+
824
+ function unmarshalNodes(nodes, tree) {
825
+ const cache = new Map();
826
+
827
+ let offset = 0;
828
+ for (let i = 0, {length} = nodes; i < length; i++) {
829
+ const node = unmarshalNode(nodes[i], tree, offset, cache);
830
+ if (node !== nodes[i]) {
831
+ nodes[i] = node;
832
+ offset += NODE_FIELD_COUNT
833
+ }
834
+ }
835
+
836
+ tree._cacheNodes(Array.from(cache.values()));
837
+
838
+ return nodes;
839
+ }
840
+
841
+ function marshalNode(node, offset = 0) {
842
+ if (!(node.tree instanceof Tree)) {
843
+ throw new TypeError("SyntaxNode must belong to a Tree")
844
+ }
845
+ const { nodeTransferArray } = binding;
846
+ for (let i = 0; i < NODE_FIELD_COUNT; i++) {
847
+ nodeTransferArray[offset * NODE_FIELD_COUNT + i] = node[i];
848
+ }
849
+ }
850
+
851
+ function marshalNodes(nodes) {
852
+ for (let i = 0, { length } = nodes; i < length; i++) {
853
+ marshalNode(nodes[i], i);
854
+ }
855
+ }
856
+
857
+ function unmarshalPoint() {
858
+ return {row: pointTransferArray[0], column: pointTransferArray[1]};
859
+ }
860
+
861
+ function pointToString(point) {
862
+ return `{row: ${point.row}, column: ${point.column}}`;
863
+ }
864
+
865
+ function initializeLanguageNodeClasses(language) {
866
+ const nodeTypeNamesById = binding.getNodeTypeNamesById(language);
867
+ const nodeFieldNamesById = binding.getNodeFieldNamesById(language);
868
+ const nodeTypeInfo = language.nodeTypeInfo || [];
869
+
870
+ const nodeSubclasses = [];
871
+
872
+ for (let id = 0, n = nodeTypeNamesById.length; id < n; ++id) {
873
+ nodeSubclasses[id] = SyntaxNode;
874
+
875
+ const typeName = nodeTypeNamesById[id];
876
+ if (!typeName) continue;
877
+
878
+ const typeInfo = nodeTypeInfo.find(info => info.named && info.type === typeName);
879
+ if (!typeInfo) continue;
880
+
881
+ const fieldNames = [];
882
+ const fieldGetters = {};
883
+
884
+ if (typeInfo.fields) {
885
+ for (const fieldName in typeInfo.fields) {
886
+ const fieldId = nodeFieldNamesById.indexOf(fieldName);
887
+ if (fieldId === -1) continue;
888
+ if (typeInfo.fields[fieldName].multiple) {
889
+ const getterName = camelCase(fieldName) + 'Nodes';
890
+ fieldNames.push(getterName);
891
+ fieldGetters[getterName] = {
892
+ get: function () {
893
+ marshalNode(this);
894
+ return unmarshalNodes(
895
+ NodeMethods.childNodesForFieldId(this.tree, fieldId),
896
+ this.tree
897
+ );
898
+ },
899
+ enumerable: true
900
+ };
901
+ } else {
902
+ const getterName = camelCase(fieldName, false) + 'Node';
903
+ fieldNames.push(getterName);
904
+ fieldGetters[getterName] = {
905
+ get: function () {
906
+ marshalNode(this);
907
+ return unmarshalNode(
908
+ NodeMethods.childNodeForFieldId(this.tree, fieldId),
909
+ this.tree
910
+ );
911
+ },
912
+ enumerable: true
913
+ };
914
+ }
915
+ }
916
+ }
917
+
918
+ nodeSubclasses[id] = new Function('SyntaxNode', `
919
+ return class ${camelCase(typeName, true)}Node extends SyntaxNode {}
920
+ `)(SyntaxNode);
921
+
922
+ Object.defineProperties(nodeSubclasses[id].prototype, {
923
+ type: {
924
+ value: typeName,
925
+ enumerable: true
926
+ },
927
+ fields: {
928
+ value: Object.freeze(fieldNames.sort()),
929
+ enumerable: true
930
+ },
931
+ ...fieldGetters
932
+ });
933
+ }
934
+
935
+ language.nodeSubclasses = nodeSubclasses;
936
+ }
937
+
938
+
939
+ function camelCase(name, upperCase) {
940
+ name = name.replace(/_(\w)/g, (_match, letter) => letter.toUpperCase());
941
+ if (upperCase) name = name[0].toUpperCase() + name.slice(1);
942
+ return name;
943
+ }
944
+
945
+ module.exports = Parser;
946
+ module.exports.Query = Query;
947
+ module.exports.Tree = Tree;
948
+ module.exports.SyntaxNode = SyntaxNode;
949
+ module.exports.TreeCursor = TreeCursor;
950
+ module.exports.LookaheadIterator = LookaheadIterator;