@lzehrung/codegraph-core 2.1.2 → 2.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (248) hide show
  1. package/dist/agent/explore.d.ts.map +1 -1
  2. package/dist/agent/explore.js +6 -1
  3. package/dist/agent/explore.js.map +1 -1
  4. package/dist/agent/handles.d.ts.map +1 -1
  5. package/dist/agent/handles.js +2 -8
  6. package/dist/agent/handles.js.map +1 -1
  7. package/dist/agent/orient.js +0 -16
  8. package/dist/agent/orient.js.map +1 -1
  9. package/dist/agent/query-index/store.d.ts +2 -0
  10. package/dist/agent/query-index/store.d.ts.map +1 -1
  11. package/dist/agent/query-index/store.js +4 -0
  12. package/dist/agent/query-index/store.js.map +1 -1
  13. package/dist/agent/session.js +3 -3
  14. package/dist/agent/session.js.map +1 -1
  15. package/dist/chunking/chunkSplit.js +0 -15
  16. package/dist/chunking/chunkSplit.js.map +1 -1
  17. package/dist/documentLinks/check.d.ts.map +1 -1
  18. package/dist/documentLinks/check.js +4 -3
  19. package/dist/documentLinks/check.js.map +1 -1
  20. package/dist/documentLinks.d.ts.map +1 -1
  21. package/dist/documentLinks.js +0 -1
  22. package/dist/documentLinks.js.map +1 -1
  23. package/dist/drift/snapshot.js +1 -1
  24. package/dist/drift/snapshot.js.map +1 -1
  25. package/dist/duplicates/scoring.d.ts.map +1 -1
  26. package/dist/duplicates/scoring.js.map +1 -1
  27. package/dist/duplicates/unitCache.d.ts.map +1 -1
  28. package/dist/duplicates/unitCache.js +1 -1
  29. package/dist/duplicates/unitCache.js.map +1 -1
  30. package/dist/duplicates/units.d.ts.map +1 -1
  31. package/dist/duplicates/units.js +2 -3
  32. package/dist/duplicates/units.js.map +1 -1
  33. package/dist/duplicates.d.ts.map +1 -1
  34. package/dist/duplicates.js +0 -6
  35. package/dist/duplicates.js.map +1 -1
  36. package/dist/graph-edge-collector.d.ts +0 -2
  37. package/dist/graph-edge-collector.d.ts.map +1 -1
  38. package/dist/graph-edge-collector.js +2 -4
  39. package/dist/graph-edge-collector.js.map +1 -1
  40. package/dist/graphs/edgeResolution.d.ts.map +1 -1
  41. package/dist/graphs/specifiers.d.ts +1 -1
  42. package/dist/graphs/specifiers.d.ts.map +1 -1
  43. package/dist/graphs/specifiers.js +1 -1
  44. package/dist/graphs/specifiers.js.map +1 -1
  45. package/dist/graphs/symbol-graph-detailed.d.ts.map +1 -1
  46. package/dist/graphs/symbol-graph-detailed.js +0 -1
  47. package/dist/graphs/symbol-graph-detailed.js.map +1 -1
  48. package/dist/index.d.ts +1 -1
  49. package/dist/index.d.ts.map +1 -1
  50. package/dist/index.js.map +1 -1
  51. package/dist/indexer/build-cache/module-cache.d.ts.map +1 -1
  52. package/dist/indexer/build-cache/module-cache.js +1 -1
  53. package/dist/indexer/build-cache/module-cache.js.map +1 -1
  54. package/dist/indexer/build-cache/options.d.ts.map +1 -1
  55. package/dist/indexer/build-cache/options.js +0 -2
  56. package/dist/indexer/build-cache/options.js.map +1 -1
  57. package/dist/indexer/build-cache/project-snapshot.d.ts +9 -1
  58. package/dist/indexer/build-cache/project-snapshot.d.ts.map +1 -1
  59. package/dist/indexer/build-cache/project-snapshot.js +1 -5
  60. package/dist/indexer/build-cache/project-snapshot.js.map +1 -1
  61. package/dist/indexer/build-index.d.ts.map +1 -1
  62. package/dist/indexer/build-index.js +59 -44
  63. package/dist/indexer/build-index.js.map +1 -1
  64. package/dist/indexer/build-workers.d.ts +29 -2
  65. package/dist/indexer/build-workers.d.ts.map +1 -1
  66. package/dist/indexer/build-workers.js +54 -3
  67. package/dist/indexer/build-workers.js.map +1 -1
  68. package/dist/indexer/call-hierarchy.d.ts.map +1 -1
  69. package/dist/indexer/imports.d.ts +0 -3
  70. package/dist/indexer/imports.d.ts.map +1 -1
  71. package/dist/indexer/imports.js +1 -1
  72. package/dist/indexer/imports.js.map +1 -1
  73. package/dist/indexer/locals-and-exports.d.ts +2 -2
  74. package/dist/indexer/locals-and-exports.d.ts.map +1 -1
  75. package/dist/indexer/locals-and-exports.js +2 -3
  76. package/dist/indexer/locals-and-exports.js.map +1 -1
  77. package/dist/indexer/navigation-local.d.ts +2 -2
  78. package/dist/indexer/navigation-local.d.ts.map +1 -1
  79. package/dist/indexer/navigation-local.js +2 -2
  80. package/dist/indexer/navigation-local.js.map +1 -1
  81. package/dist/indexer/navigation-references.d.ts +1 -2
  82. package/dist/indexer/navigation-references.d.ts.map +1 -1
  83. package/dist/indexer/navigation-references.js +1 -1
  84. package/dist/indexer/navigation-references.js.map +1 -1
  85. package/dist/indexer/navigation.d.ts.map +1 -1
  86. package/dist/indexer/navigation.js +2 -4
  87. package/dist/indexer/navigation.js.map +1 -1
  88. package/dist/indexer/parse-context.d.ts +1 -4
  89. package/dist/indexer/parse-context.d.ts.map +1 -1
  90. package/dist/indexer/parse-context.js +11 -6
  91. package/dist/indexer/parse-context.js.map +1 -1
  92. package/dist/indexer/scope.d.ts +2 -2
  93. package/dist/indexer/scope.d.ts.map +1 -1
  94. package/dist/indexer/scope.js +1 -1
  95. package/dist/indexer/scope.js.map +1 -1
  96. package/dist/indexer.d.ts +3 -6
  97. package/dist/indexer.d.ts.map +1 -1
  98. package/dist/indexer.js +5 -8
  99. package/dist/indexer.js.map +1 -1
  100. package/dist/languages/definitions/c.d.ts.map +1 -1
  101. package/dist/languages/definitions/c.js +0 -1
  102. package/dist/languages/definitions/c.js.map +1 -1
  103. package/dist/languages/definitions/cFamily.d.ts +0 -1
  104. package/dist/languages/definitions/cFamily.d.ts.map +1 -1
  105. package/dist/languages/definitions/cFamily.js +0 -2
  106. package/dist/languages/definitions/cFamily.js.map +1 -1
  107. package/dist/languages/definitions/cpp.d.ts.map +1 -1
  108. package/dist/languages/definitions/cpp.js +0 -1
  109. package/dist/languages/definitions/cpp.js.map +1 -1
  110. package/dist/languages/definitions/csharp.d.ts.map +1 -1
  111. package/dist/languages/definitions/csharp.js +0 -2
  112. package/dist/languages/definitions/csharp.js.map +1 -1
  113. package/dist/languages/definitions/css.d.ts.map +1 -1
  114. package/dist/languages/definitions/css.js +0 -2
  115. package/dist/languages/definitions/css.js.map +1 -1
  116. package/dist/languages/definitions/go.d.ts.map +1 -1
  117. package/dist/languages/definitions/go.js +0 -2
  118. package/dist/languages/definitions/go.js.map +1 -1
  119. package/dist/languages/definitions/html.d.ts.map +1 -1
  120. package/dist/languages/definitions/html.js +0 -2
  121. package/dist/languages/definitions/html.js.map +1 -1
  122. package/dist/languages/definitions/htmlStub.d.ts.map +1 -1
  123. package/dist/languages/definitions/htmlStub.js +0 -2
  124. package/dist/languages/definitions/htmlStub.js.map +1 -1
  125. package/dist/languages/definitions/java.d.ts.map +1 -1
  126. package/dist/languages/definitions/java.js +0 -2
  127. package/dist/languages/definitions/java.js.map +1 -1
  128. package/dist/languages/definitions/javascript.d.ts.map +1 -1
  129. package/dist/languages/definitions/javascript.js +0 -2
  130. package/dist/languages/definitions/javascript.js.map +1 -1
  131. package/dist/languages/definitions/kotlin.d.ts.map +1 -1
  132. package/dist/languages/definitions/kotlin.js +0 -2
  133. package/dist/languages/definitions/kotlin.js.map +1 -1
  134. package/dist/languages/definitions/less.d.ts.map +1 -1
  135. package/dist/languages/definitions/less.js +0 -2
  136. package/dist/languages/definitions/less.js.map +1 -1
  137. package/dist/languages/definitions/php.d.ts.map +1 -1
  138. package/dist/languages/definitions/php.js +0 -2
  139. package/dist/languages/definitions/php.js.map +1 -1
  140. package/dist/languages/definitions/python.d.ts.map +1 -1
  141. package/dist/languages/definitions/python.js +0 -2
  142. package/dist/languages/definitions/python.js.map +1 -1
  143. package/dist/languages/definitions/ruby.d.ts.map +1 -1
  144. package/dist/languages/definitions/ruby.js +0 -2
  145. package/dist/languages/definitions/ruby.js.map +1 -1
  146. package/dist/languages/definitions/rust.d.ts.map +1 -1
  147. package/dist/languages/definitions/rust.js +0 -2
  148. package/dist/languages/definitions/rust.js.map +1 -1
  149. package/dist/languages/definitions/scss.d.ts.map +1 -1
  150. package/dist/languages/definitions/scss.js +0 -2
  151. package/dist/languages/definitions/scss.js.map +1 -1
  152. package/dist/languages/definitions/sql.d.ts.map +1 -1
  153. package/dist/languages/definitions/sql.js +0 -2
  154. package/dist/languages/definitions/sql.js.map +1 -1
  155. package/dist/languages/definitions/svelte.d.ts.map +1 -1
  156. package/dist/languages/definitions/svelte.js +0 -2
  157. package/dist/languages/definitions/svelte.js.map +1 -1
  158. package/dist/languages/definitions/swift.d.ts.map +1 -1
  159. package/dist/languages/definitions/swift.js +0 -2
  160. package/dist/languages/definitions/swift.js.map +1 -1
  161. package/dist/languages/definitions/typescript.d.ts.map +1 -1
  162. package/dist/languages/definitions/typescript.js +0 -3
  163. package/dist/languages/definitions/typescript.js.map +1 -1
  164. package/dist/languages/definitions/vue.d.ts.map +1 -1
  165. package/dist/languages/definitions/vue.js +0 -2
  166. package/dist/languages/definitions/vue.js.map +1 -1
  167. package/dist/languages/definitions/zig.d.ts.map +1 -1
  168. package/dist/languages/definitions/zig.js +0 -2
  169. package/dist/languages/definitions/zig.js.map +1 -1
  170. package/dist/languages/filePrep.d.ts +0 -2
  171. package/dist/languages/filePrep.d.ts.map +1 -1
  172. package/dist/languages/filePrep.js +0 -1
  173. package/dist/languages/filePrep.js.map +1 -1
  174. package/dist/languages/types.d.ts +19 -5
  175. package/dist/languages/types.d.ts.map +1 -1
  176. package/dist/languages.d.ts +1 -3
  177. package/dist/languages.d.ts.map +1 -1
  178. package/dist/languages.js +0 -7
  179. package/dist/languages.js.map +1 -1
  180. package/dist/native/bindingLoader.d.ts +27 -0
  181. package/dist/native/bindingLoader.d.ts.map +1 -1
  182. package/dist/native/bindingLoader.js +18 -1
  183. package/dist/native/bindingLoader.js.map +1 -1
  184. package/dist/native/contracts.d.ts +59 -12
  185. package/dist/native/contracts.d.ts.map +1 -1
  186. package/dist/native/execution.d.ts +10 -1
  187. package/dist/native/execution.d.ts.map +1 -1
  188. package/dist/native/execution.js +59 -3
  189. package/dist/native/execution.js.map +1 -1
  190. package/dist/native/projectedTree.d.ts +20 -5
  191. package/dist/native/projectedTree.d.ts.map +1 -1
  192. package/dist/native/projectedTree.js +100 -48
  193. package/dist/native/projectedTree.js.map +1 -1
  194. package/dist/native/runtime.d.ts +47 -1
  195. package/dist/native/runtime.d.ts.map +1 -1
  196. package/dist/native/runtime.js +151 -8
  197. package/dist/native/runtime.js.map +1 -1
  198. package/dist/native/runtimeCache.d.ts +92 -0
  199. package/dist/native/runtimeCache.d.ts.map +1 -1
  200. package/dist/native/runtimeCache.js +443 -13
  201. package/dist/native/runtimeCache.js.map +1 -1
  202. package/dist/native/treeShape.d.ts +21 -0
  203. package/dist/native/treeShape.d.ts.map +1 -0
  204. package/dist/native/treeShape.js +28 -0
  205. package/dist/native/treeShape.js.map +1 -0
  206. package/dist/native/treeSitterNative.d.ts +3 -3
  207. package/dist/native/treeSitterNative.d.ts.map +1 -1
  208. package/dist/native/treeSitterNative.js +2 -2
  209. package/dist/native/treeSitterNative.js.map +1 -1
  210. package/dist/presets.d.ts +7 -1
  211. package/dist/presets.d.ts.map +1 -1
  212. package/dist/presets.js +4 -0
  213. package/dist/presets.js.map +1 -1
  214. package/dist/review/deleted.js +2 -2
  215. package/dist/review/deleted.js.map +1 -1
  216. package/dist/review.js.map +1 -1
  217. package/dist/sql/extractFacts.d.ts.map +1 -1
  218. package/dist/sql/extractFacts.js +1 -1
  219. package/dist/sql/extractFacts.js.map +1 -1
  220. package/dist/util/lazySymbols.js +1 -1
  221. package/dist/util/lazySymbols.js.map +1 -1
  222. package/dist/util/projectFiles.js +1 -1
  223. package/dist/util/projectFiles.js.map +1 -1
  224. package/dist/util/resolution/jvm.js +1 -1
  225. package/dist/util/resolution/jvm.js.map +1 -1
  226. package/dist/util/resolution/php.d.ts.map +1 -1
  227. package/dist/util/resolution/php.js +0 -1
  228. package/dist/util/resolution/php.js.map +1 -1
  229. package/dist/util/resolution.d.ts.map +1 -1
  230. package/dist/util/resolution.js +5 -5
  231. package/dist/util/resolution.js.map +1 -1
  232. package/dist/worker/nativeExtractWorker.d.ts +10 -4
  233. package/dist/worker/nativeExtractWorker.d.ts.map +1 -1
  234. package/dist/worker/nativeExtractWorker.js +55 -3
  235. package/dist/worker/nativeExtractWorker.js.map +1 -1
  236. package/dist/worker/nativeWorkerPool.d.ts +4 -0
  237. package/dist/worker/nativeWorkerPool.d.ts.map +1 -1
  238. package/dist/worker/nativeWorkerPool.js +6 -1
  239. package/dist/worker/nativeWorkerPool.js.map +1 -1
  240. package/package.json +2 -2
  241. package/dist/languages/definitions/loadLanguage.d.ts +0 -2
  242. package/dist/languages/definitions/loadLanguage.d.ts.map +0 -1
  243. package/dist/languages/definitions/loadLanguage.js +0 -2
  244. package/dist/languages/definitions/loadLanguage.js.map +0 -1
  245. package/dist/parserBackend.d.ts +0 -57
  246. package/dist/parserBackend.d.ts.map +0 -1
  247. package/dist/parserBackend.js +0 -33
  248. package/dist/parserBackend.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"execution.d.ts","sourceRoot":"","sources":["../../src/native/execution.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAGvD,OAAO,KAAK,EACV,uBAAuB,EACvB,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,0BAA0B,EAC1B,yBAAyB,EAC1B,MAAM,gBAAgB,CAAC;AAIxB,wBAAgB,sCAAsC,CAAC,IAAI,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAIxF;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,iBAAiB,GAAG,qBAAqB,GAAG,IAAI,CAS/G;AACD,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,eAAe,EACxB,IAAI,CAAC,EAAE,iBAAiB,GACvB,kBAAkB,GAAG,IAAI,CAE3B;AAED,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,eAAe,EACxB,KAAK,GAAE,kBAAkC,EACzC,KAAK,GAAE,gBAAyB,GAC/B,oBAAoB,CA0BtB;AAED,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,eAAe,EACxB,IAAI,CAAC,EAAE,iBAAiB,EACxB,KAAK,GAAE,gBAAyB,GAC/B,oBAAoB,CAItB;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,eAAe,EACxB,IAAI,CAAC,EAAE,iBAAiB,GACvB,uBAAuB,CAiCzB;AAED,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,eAAe,EACxB,SAAS,EAAE,MAAM,EACjB,IAAI,CAAC,EAAE,iBAAiB,GACvB,0BAA0B,CA4B5B;AAED,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,eAAe,EACxB,IAAI,CAAC,EAAE,iBAAiB,GACvB,yBAAyB,CA2B3B"}
1
+ {"version":3,"file":"execution.d.ts","sourceRoot":"","sources":["../../src/native/execution.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAGvD,OAAO,KAAK,EACV,uBAAuB,EACvB,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACrB,yBAAyB,EACzB,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,0BAA0B,EAC1B,yBAAyB,EAC1B,MAAM,gBAAgB,CAAC;AAKxB,wBAAgB,sCAAsC,CAAC,IAAI,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAIxF;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,iBAAiB,GAAG,qBAAqB,GAAG,IAAI,CAS/G;AACD,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,eAAe,EACxB,IAAI,CAAC,EAAE,iBAAiB,GACvB,kBAAkB,GAAG,IAAI,CAE3B;AAED,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,eAAe,EACxB,KAAK,GAAE,kBAAkC,EACzC,KAAK,GAAE,gBAAyB,GAC/B,oBAAoB,CA0BtB;AAED,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,eAAe,EACxB,IAAI,CAAC,EAAE,iBAAiB,EACxB,KAAK,GAAE,gBAAyB,GAC/B,oBAAoB,CAItB;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,eAAe,EACxB,IAAI,CAAC,EAAE,iBAAiB,GACvB,uBAAuB,CAiCzB;AAED,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,eAAe,EACxB,SAAS,EAAE,MAAM,EACjB,IAAI,CAAC,EAAE,iBAAiB,GACvB,0BAA0B,CA4B5B;AAED;;;;;;;GAOG;AACH,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,eAAe,EACxB,IAAI,CAAC,EAAE,iBAAiB,GACvB,yBAAyB,CAiD3B;AAED,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,eAAe,EACxB,IAAI,CAAC,EAAE,iBAAiB,GACvB,yBAAyB,CA+B3B"}
@@ -2,6 +2,7 @@ import { stringifyUnknown } from "../util/ast.js";
2
2
  import { errorMessage } from "../util/errors.js";
3
3
  import { getCachedNormalizedQuery, normalizeNativeQueryForSupport } from "./queries.js";
4
4
  import { loadBinding, resolveNativeBindingState, throwIfNativeRequiredUnavailable } from "./runtime.js";
5
+ import { isColumnarSyntaxTree, nativeShapeMismatchMessage, REQUIRED_NATIVE_EXTRACTION_VERSION } from "./treeShape.js";
5
6
  export function isNativeDuplicateTokenizationAvailable(mode) {
6
7
  const state = resolveNativeBindingState(mode);
7
8
  throwIfNativeRequiredUnavailable(mode, state);
@@ -119,6 +120,57 @@ export function getNativeSingleQueryExecution(source, support, queryText, mode)
119
120
  };
120
121
  }
121
122
  }
123
+ /**
124
+ * Runs the full query set and projects the syntax tree from one Tree-sitter parse.
125
+ * Prefer this over calling {@link getNativeQueryExecution} and
126
+ * {@link getNativeSyntaxTreeExecution} on the same source: each parses independently,
127
+ * so calling both parses the file twice for no benefit. This is what the native worker
128
+ * pool already uses (`extractLanguage`, one parse per file); this is the same call for
129
+ * callers that need both results outside a worker.
130
+ */
131
+ export function getNativeExtractionExecution(source, support, mode) {
132
+ const state = resolveNativeBindingState(mode);
133
+ throwIfNativeRequiredUnavailable(mode, state);
134
+ if (!state.loaded) {
135
+ return { results: null, tree: null, ...unavailableNativeFailure(state) };
136
+ }
137
+ if (!state.supportedLanguageIds.has(support.id)) {
138
+ return { results: null, tree: null, fallbackReason: "unsupportedLanguage" };
139
+ }
140
+ if (typeof state.binding.extractLanguage !== "function") {
141
+ return {
142
+ results: null,
143
+ tree: null,
144
+ fallbackReason: "unavailable",
145
+ error: `@lzehrung/codegraph-native >= ${REQUIRED_NATIVE_EXTRACTION_VERSION} is required; ` +
146
+ "the installed native binary does not provide extractLanguage. Reinstall the native package.",
147
+ };
148
+ }
149
+ try {
150
+ const extraction = state.binding.extractLanguage(source, support.id, getCachedNormalizedQuery(support, "imports"), getCachedNormalizedQuery(support, "exports"), getCachedNormalizedQuery(support, "locals"), getCachedNormalizedQuery(support, "importBindings"));
151
+ const tree = extraction.syntaxTree ?? null;
152
+ // A missing tree is a tolerated state; a present-but-legacy tree means the installed
153
+ // native package predates the columnar projection and cannot be read here. Query
154
+ // results are unaffected by that mismatch, so they still come back.
155
+ if (tree !== null && !isColumnarSyntaxTree(tree)) {
156
+ return {
157
+ results: extraction.results,
158
+ tree: null,
159
+ fallbackReason: "unavailable",
160
+ error: nativeShapeMismatchMessage(),
161
+ };
162
+ }
163
+ return { results: extraction.results, tree };
164
+ }
165
+ catch (error) {
166
+ return {
167
+ results: null,
168
+ tree: null,
169
+ fallbackReason: "queryFailure",
170
+ error: errorMessage(error),
171
+ };
172
+ }
173
+ }
122
174
  export function getNativeSyntaxTreeExecution(source, support, mode) {
123
175
  const state = resolveNativeBindingState(mode);
124
176
  throwIfNativeRequiredUnavailable(mode, state);
@@ -136,9 +188,13 @@ export function getNativeSyntaxTreeExecution(source, support, mode) {
136
188
  };
137
189
  }
138
190
  try {
139
- return {
140
- tree: state.binding.parseSyntaxTree(source, support.id),
141
- };
191
+ const tree = state.binding.parseSyntaxTree(source, support.id) ?? null;
192
+ // A missing tree is a tolerated state; a present-but-legacy tree means the installed
193
+ // native package predates the columnar projection and cannot be read here.
194
+ if (tree !== null && !isColumnarSyntaxTree(tree)) {
195
+ return { tree: null, fallbackReason: "unavailable", error: nativeShapeMismatchMessage() };
196
+ }
197
+ return { tree };
142
198
  }
143
199
  catch (error) {
144
200
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"execution.js","sourceRoot":"","sources":["../../src/native/execution.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"execution.js","sourceRoot":"","sources":["../../src/native/execution.ts"],"names":[],"mappings":"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"}
@@ -1,25 +1,37 @@
1
- import type { NativePoint, NativeSyntaxNode, NativeSyntaxTree } from "./treeSitterNative.js";
1
+ import type { NativePoint, NativeSyntaxTree } from "./treeSitterNative.js";
2
2
  import { type ByteToStringIndexMap } from "./byteIndex.js";
3
3
  export type ProjectedPosition = {
4
4
  row: number;
5
5
  column: number;
6
6
  };
7
+ /**
8
+ * Reads the native columnar projection (see `NativeSyntaxTree`) through the ordinary
9
+ * `SyntaxNodeLike` node API.
10
+ *
11
+ * Nodes are materialized lazily and memoized by id, so a walk that touches a handful
12
+ * of nodes allocates a handful of wrappers rather than one per node in the file, and
13
+ * repeated lookups of the same id return the same instance.
14
+ */
7
15
  export declare class ProjectedSyntaxTree {
8
16
  readonly source: string;
9
- private readonly nodesById;
10
17
  /** Shared byte-offset -> UTF-16 string-index map; reuse this instead of rebuilding one. */
11
18
  readonly byteIndexMap: ByteToStringIndexMap;
12
19
  readonly rootNode: ProjectedSyntaxNode;
20
+ /** @internal Column storage; read through `ProjectedSyntaxNode`. */
21
+ readonly columns: NativeSyntaxTree;
22
+ private readonly nodes;
23
+ private fieldNameIds;
13
24
  constructor(source: string, tree: NativeSyntaxTree);
14
25
  nodeById(id: number): ProjectedSyntaxNode | undefined;
15
26
  stringIndexForByte(byteIndex: number): number;
16
27
  positionForPoint(point: NativePoint): ProjectedPosition;
28
+ /** @internal Resolve an interned field name, or `undefined` when the grammar never emits it. */
29
+ fieldNameId(fieldName: string): number | undefined;
17
30
  }
18
31
  export declare class ProjectedSyntaxNode {
19
32
  private readonly tree;
20
- private readonly raw;
21
- constructor(tree: ProjectedSyntaxTree, raw: NativeSyntaxNode);
22
- get id(): number;
33
+ readonly id: number;
34
+ constructor(tree: ProjectedSyntaxTree, id: number);
23
35
  get type(): string;
24
36
  get startIndex(): number;
25
37
  get endIndex(): number;
@@ -34,5 +46,8 @@ export declare class ProjectedSyntaxNode {
34
46
  childForFieldName(fieldName: string): ProjectedSyntaxNode | null;
35
47
  descendantForIndex(startIndex: number, endIndex: number): ProjectedSyntaxNode;
36
48
  descendantForPosition(start: ProjectedPosition, end: ProjectedPosition): ProjectedSyntaxNode;
49
+ private collect;
50
+ /** Find the previous sibling in the parent's child list without materializing the siblings. */
51
+ private previousIn;
37
52
  }
38
53
  //# sourceMappingURL=projectedTree.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"projectedTree.d.ts","sourceRoot":"","sources":["../../src/native/projectedTree.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC7F,OAAO,EAIL,KAAK,oBAAoB,EAC1B,MAAM,gBAAgB,CAAC;AAExB,MAAM,MAAM,iBAAiB,GAAG;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,qBAAa,mBAAmB;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAmC;IAC7D,2FAA2F;IAC3F,QAAQ,CAAC,YAAY,EAAE,oBAAoB,CAAC;IAC5C,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,CAAC;gBAE3B,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB;IAclD,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS;IAIrD,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAI7C,gBAAgB,CAAC,KAAK,EAAE,WAAW,GAAG,iBAAiB;CAGxD;AAED,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAsB;IAC3C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAmB;gBAE3B,IAAI,EAAE,mBAAmB,EAAE,GAAG,EAAE,gBAAgB;IAK5D,IAAI,EAAE,IAAI,MAAM,CAEf;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,aAAa,IAAI,iBAAiB,CAErC;IAED,IAAI,WAAW,IAAI,iBAAiB,CAEnC;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,MAAM,IAAI,mBAAmB,GAAG,IAAI,CAGvC;IAED,IAAI,aAAa,IAAI,mBAAmB,EAAE,CAKzC;IAED,IAAI,oBAAoB,IAAI,mBAAmB,GAAG,IAAI,CAOrD;IAED,IAAI,eAAe,IAAI,mBAAmB,GAAG,IAAI,CAUhD;IAED,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI;IAMhD,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI;IAMhE,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,mBAAmB;IAS7E,qBAAqB,CAAC,KAAK,EAAE,iBAAiB,EAAE,GAAG,EAAE,iBAAiB,GAAG,mBAAmB;CAQ7F"}
1
+ {"version":3,"file":"projectedTree.d.ts","sourceRoot":"","sources":["../../src/native/projectedTree.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC3E,OAAO,EAIL,KAAK,oBAAoB,EAC1B,MAAM,gBAAgB,CAAC;AAExB,MAAM,MAAM,iBAAiB,GAAG;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;;;;;;GAOG;AACH,qBAAa,mBAAmB;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,2FAA2F;IAC3F,QAAQ,CAAC,YAAY,EAAE,oBAAoB,CAAC;IAC5C,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,CAAC;IACvC,oEAAoE;IACpE,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC;IAEnC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAyC;IAC/D,OAAO,CAAC,YAAY,CAAkC;gBAE1C,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB;IAYlD,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS;IASrD,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAI7C,gBAAgB,CAAC,KAAK,EAAE,WAAW,GAAG,iBAAiB;IAIvD,gGAAgG;IAChG,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;CAMnD;AAED,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAsB;IAC3C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;gBAER,IAAI,EAAE,mBAAmB,EAAE,EAAE,EAAE,MAAM;IAKjD,IAAI,IAAI,IAAI,MAAM,CAGjB;IAED,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,IAAI,aAAa,IAAI,iBAAiB,CAOrC;IAED,IAAI,WAAW,IAAI,iBAAiB,CAOnC;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,MAAM,IAAI,mBAAmB,GAAG,IAAI,CAIvC;IAED,IAAI,aAAa,IAAI,mBAAmB,EAAE,CAGzC;IAED,IAAI,oBAAoB,IAAI,mBAAmB,GAAG,IAAI,CAGrD;IAED,IAAI,eAAe,IAAI,mBAAmB,GAAG,IAAI,CAGhD;IAED,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI;IAQhD,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,mBAAmB,GAAG,IAAI;IAchE,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,mBAAmB;IAS7E,qBAAqB,CAAC,KAAK,EAAE,iBAAiB,EAAE,GAAG,EAAE,iBAAiB,GAAG,mBAAmB;IAS5F,OAAO,CAAC,OAAO;IAWf,+FAA+F;IAC/F,OAAO,CAAC,UAAU;CAYnB"}
@@ -1,17 +1,26 @@
1
1
  import { buildByteToStringIndexMap, stringIndexForByte, stringPositionForBytePoint, } from "./byteIndex.js";
2
+ /**
3
+ * Reads the native columnar projection (see `NativeSyntaxTree`) through the ordinary
4
+ * `SyntaxNodeLike` node API.
5
+ *
6
+ * Nodes are materialized lazily and memoized by id, so a walk that touches a handful
7
+ * of nodes allocates a handful of wrappers rather than one per node in the file, and
8
+ * repeated lookups of the same id return the same instance.
9
+ */
2
10
  export class ProjectedSyntaxTree {
3
11
  source;
4
- nodesById;
5
12
  /** Shared byte-offset -> UTF-16 string-index map; reuse this instead of rebuilding one. */
6
13
  byteIndexMap;
7
14
  rootNode;
15
+ /** @internal Column storage; read through `ProjectedSyntaxNode`. */
16
+ columns;
17
+ nodes;
18
+ fieldNameIds;
8
19
  constructor(source, tree) {
9
20
  this.source = source;
10
21
  this.byteIndexMap = buildByteToStringIndexMap(source);
11
- this.nodesById = new Map();
12
- for (const node of tree.nodes) {
13
- this.nodesById.set(node.id, new ProjectedSyntaxNode(this, node));
14
- }
22
+ this.columns = tree;
23
+ this.nodes = new Array(tree.nodeCount);
15
24
  const rootNode = this.nodeById(tree.rootId);
16
25
  if (!rootNode) {
17
26
  throw new Error("Projected syntax tree is missing the root node");
@@ -19,7 +28,14 @@ export class ProjectedSyntaxTree {
19
28
  this.rootNode = rootNode;
20
29
  }
21
30
  nodeById(id) {
22
- return this.nodesById.get(id);
31
+ if (id < 0 || id >= this.columns.nodeCount)
32
+ return undefined;
33
+ const existing = this.nodes[id];
34
+ if (existing)
35
+ return existing;
36
+ const created = new ProjectedSyntaxNode(this, id);
37
+ this.nodes[id] = created;
38
+ return created;
23
39
  }
24
40
  stringIndexForByte(byteIndex) {
25
41
  return stringIndexForByte(this.byteIndexMap, byteIndex);
@@ -27,80 +43,89 @@ export class ProjectedSyntaxTree {
27
43
  positionForPoint(point) {
28
44
  return stringPositionForBytePoint(this.byteIndexMap, point);
29
45
  }
46
+ /** @internal Resolve an interned field name, or `undefined` when the grammar never emits it. */
47
+ fieldNameId(fieldName) {
48
+ if (!this.fieldNameIds) {
49
+ this.fieldNameIds = new Map(this.columns.fieldNames.map((name, index) => [name, index]));
50
+ }
51
+ return this.fieldNameIds.get(fieldName);
52
+ }
30
53
  }
31
54
  export class ProjectedSyntaxNode {
32
55
  tree;
33
- raw;
34
- constructor(tree, raw) {
56
+ id;
57
+ constructor(tree, id) {
35
58
  this.tree = tree;
36
- this.raw = raw;
37
- }
38
- get id() {
39
- return this.raw.id;
59
+ this.id = id;
40
60
  }
41
61
  get type() {
42
- return this.raw.nodeType;
62
+ const columns = this.tree.columns;
63
+ return columns.kinds[columns.kindIds[this.id]];
43
64
  }
44
65
  get startIndex() {
45
- return this.tree.stringIndexForByte(this.raw.start.index);
66
+ return this.tree.stringIndexForByte(this.tree.columns.startIndex[this.id]);
46
67
  }
47
68
  get endIndex() {
48
- return this.tree.stringIndexForByte(this.raw.end.index);
69
+ return this.tree.stringIndexForByte(this.tree.columns.endIndex[this.id]);
49
70
  }
50
71
  get startPosition() {
51
- return this.tree.positionForPoint(this.raw.start);
72
+ const columns = this.tree.columns;
73
+ return this.tree.positionForPoint({
74
+ row: columns.startRow[this.id],
75
+ column: columns.startColumn[this.id],
76
+ index: columns.startIndex[this.id],
77
+ });
52
78
  }
53
79
  get endPosition() {
54
- return this.tree.positionForPoint(this.raw.end);
80
+ const columns = this.tree.columns;
81
+ return this.tree.positionForPoint({
82
+ row: columns.endRow[this.id],
83
+ column: columns.endColumn[this.id],
84
+ index: columns.endIndex[this.id],
85
+ });
55
86
  }
56
87
  get text() {
57
88
  return this.tree.source.slice(this.startIndex, this.endIndex);
58
89
  }
59
90
  get parent() {
60
- if (this.raw.parentId < 0)
91
+ const parentId = this.tree.columns.parentIds[this.id];
92
+ if (parentId < 0)
61
93
  return null;
62
- return this.tree.nodeById(this.raw.parentId) ?? null;
94
+ return this.tree.nodeById(parentId) ?? null;
63
95
  }
64
96
  get namedChildren() {
65
- return this.raw.namedChildIds.flatMap((id) => {
66
- const child = this.tree.nodeById(id);
67
- return child ? [child] : [];
68
- });
97
+ const columns = this.tree.columns;
98
+ return this.collect(columns.namedChildIds, columns.namedChildOffsets);
69
99
  }
70
100
  get previousNamedSibling() {
71
- const parent = this.parent;
72
- if (!parent)
73
- return null;
74
- const siblings = parent.namedChildren;
75
- const currentIndex = siblings.findIndex((node) => node.id === this.id);
76
- if (currentIndex <= 0)
77
- return null;
78
- return siblings[currentIndex - 1] ?? null;
101
+ const columns = this.tree.columns;
102
+ return this.previousIn(columns.namedChildIds, columns.namedChildOffsets);
79
103
  }
80
104
  get previousSibling() {
81
- const parent = this.parent;
82
- if (!parent)
83
- return null;
84
- const siblings = parent.raw.childIds.flatMap((id) => {
85
- const sibling = this.tree.nodeById(id);
86
- return sibling ? [sibling] : [];
87
- });
88
- const currentIndex = siblings.findIndex((node) => node.id === this.id);
89
- if (currentIndex <= 0)
90
- return null;
91
- return siblings[currentIndex - 1] ?? null;
105
+ const columns = this.tree.columns;
106
+ return this.previousIn(columns.childIds, columns.childOffsets);
92
107
  }
93
108
  child(index) {
94
- const childId = this.raw.childIds[index];
95
- if (childId === undefined)
109
+ const columns = this.tree.columns;
110
+ const start = columns.childOffsets[this.id];
111
+ const end = columns.childOffsets[this.id + 1];
112
+ if (index < 0 || index >= end - start)
96
113
  return null;
97
- return this.tree.nodeById(childId) ?? null;
114
+ return this.tree.nodeById(columns.childIds[start + index]) ?? null;
98
115
  }
99
116
  childForFieldName(fieldName) {
100
- const childIndex = this.raw.childFieldNames.findIndex((name) => name === fieldName);
101
- if (childIndex < 0)
117
+ const fieldNameId = this.tree.fieldNameId(fieldName);
118
+ if (fieldNameId === undefined)
102
119
  return null;
103
- return this.child(childIndex);
120
+ const columns = this.tree.columns;
121
+ const start = columns.childOffsets[this.id];
122
+ const end = columns.childOffsets[this.id + 1];
123
+ for (let slot = start; slot < end; slot += 1) {
124
+ if (columns.childFieldNameIds[slot] === fieldNameId) {
125
+ return this.tree.nodeById(columns.childIds[slot]) ?? null;
126
+ }
127
+ }
128
+ return null;
104
129
  }
105
130
  descendantForIndex(startIndex, endIndex) {
106
131
  for (const child of this.namedChildren) {
@@ -118,6 +143,33 @@ export class ProjectedSyntaxNode {
118
143
  }
119
144
  return this;
120
145
  }
146
+ collect(ids, offsets) {
147
+ const start = offsets[this.id];
148
+ const end = offsets[this.id + 1];
149
+ const out = [];
150
+ for (let slot = start; slot < end; slot += 1) {
151
+ const node = this.tree.nodeById(ids[slot]);
152
+ if (node)
153
+ out.push(node);
154
+ }
155
+ return out;
156
+ }
157
+ /** Find the previous sibling in the parent's child list without materializing the siblings. */
158
+ previousIn(ids, offsets) {
159
+ const parentId = this.tree.columns.parentIds[this.id];
160
+ if (parentId < 0)
161
+ return null;
162
+ const start = offsets[parentId];
163
+ const end = offsets[parentId + 1];
164
+ for (let slot = start; slot < end; slot += 1) {
165
+ if (ids[slot] !== this.id)
166
+ continue;
167
+ if (slot === start)
168
+ return null;
169
+ return this.tree.nodeById(ids[slot - 1]) ?? null;
170
+ }
171
+ return null;
172
+ }
121
173
  }
122
174
  function comparePosition(left, right) {
123
175
  if (left.row !== right.row) {
@@ -1 +1 @@
1
- {"version":3,"file":"projectedTree.js","sourceRoot":"","sources":["../../src/native/projectedTree.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"projectedTree.js","sourceRoot":"","sources":["../../src/native/projectedTree.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,60 @@
1
- import type { NativeBindingOrigin, NativeBindingState, NativeRuntimeMode } from "./contracts.js";
1
+ import type { NativeBindingOrigin, NativeBindingState, NativeRuntimeMode, NativeWorkerBindingHandoff } from "./contracts.js";
2
2
  export declare function __resetNativeTreeSitterBindingForTests(): void;
3
3
  export declare function isNativeTreeSitterDisabledByEnv(env?: NodeJS.ProcessEnv): boolean;
4
4
  export declare function normalizeNativeRuntimeMode(mode?: NativeRuntimeMode): NativeRuntimeMode;
5
5
  export declare function loadBinding(): NativeBindingState;
6
6
  export declare function resolveNativeBindingState(mode?: NativeRuntimeMode, env?: NodeJS.ProcessEnv): NativeBindingState;
7
+ /**
8
+ * The binding-derived half of the runtime fingerprint: everything the serializer reads that a
9
+ * full addon load would otherwise be needed to obtain.
10
+ */
11
+ export type NativeRuntimeIdentity = {
12
+ available: boolean;
13
+ supportedLanguageIds: string[];
14
+ origin: NativeBindingOrigin | undefined;
15
+ /** Cache-only deadline; omitted for identities obtained from a loaded binding. */
16
+ cacheIdentityRevalidateAt?: number | undefined;
17
+ };
18
+ /**
19
+ * Takes the binding-derived facts rather than a NativeBindingState, because the cache fast path
20
+ * below reconstructs those facts from a recorded identity and has no binding to hand.
21
+ */
22
+ export declare function serializeNativeRuntimeFingerprint(requestedMode: NativeRuntimeMode, envDisabled: boolean, identity: NativeRuntimeIdentity): string;
23
+ /**
24
+ * Rebuild the binding-derived half of the fingerprint from a recorded cache identity, without
25
+ * mapping the addon.
26
+ *
27
+ * Every caller of getNativeRuntimeFingerprint reaches it to decide whether an on-disk index is
28
+ * still valid, which is why a command that only reads a warm cache used to pay a full native
29
+ * load to prove it did not need one. A recorded identity supplies the two things the load was
30
+ * for - the supported language list and the binding origin - and stores the origin whole, so
31
+ * the string produced here is the same one a load produces.
32
+ *
33
+ * Returns undefined whenever anything is unproven: a workspace checkout (which resolves its own
34
+ * binary and never populates the cache), a platform without the runtime cache, an unresolvable
35
+ * platform package, or no identity record that still matches the files on disk.
36
+ */
37
+ export type CachedRuntimeIdentityOptions = {
38
+ /** Injected in tests; the runtime cache exists only on Windows. */
39
+ platform?: NodeJS.Platform | undefined;
40
+ arch?: string | undefined;
41
+ localPackageRoot?: string | undefined;
42
+ resolveFn?: ((specifier: string) => string) | undefined;
43
+ cacheRoot?: string | undefined;
44
+ now?: number | undefined;
45
+ };
46
+ export declare function resolveCachedRuntimeIdentity(options?: CachedRuntimeIdentityOptions): NativeRuntimeIdentity | undefined;
7
47
  export declare function getNativeRuntimeFingerprint(mode?: NativeRuntimeMode, env?: NodeJS.ProcessEnv): string;
8
48
  export declare function isNativeTreeSitterAvailable(mode?: NativeRuntimeMode): boolean;
9
49
  export declare function getNativeTreeSitterLoadError(mode?: NativeRuntimeMode): unknown;
10
50
  export declare function getNativeBindingOrigin(): NativeBindingOrigin | undefined;
11
51
  export declare function getCurrentNativeBindingOrigin(): NativeBindingOrigin | undefined;
52
+ /**
53
+ * The resolved addon path for a binding this process has already loaded, for handing to worker
54
+ * threads. Undefined unless a load succeeded, so a worker is never pointed at a path that did
55
+ * not work here.
56
+ */
57
+ export declare function getNativeWorkerBindingHandoff(): NativeWorkerBindingHandoff | undefined;
12
58
  export declare function getNativeTreeSitterSupportedLanguageIds(mode?: NativeRuntimeMode): string[];
13
59
  export declare function isNativeRequiredUnavailableError(error: unknown): boolean;
14
60
  export declare function throwIfNativeRequiredUnavailable(mode: NativeRuntimeMode | undefined, state: NativeBindingState): void;
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/native/runtime.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAiB,mBAAmB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAqBhH,wBAAgB,sCAAsC,IAAI,IAAI,CAG7D;AAED,wBAAgB,+BAA+B,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAO7F;AAED,wBAAgB,0BAA0B,CAAC,IAAI,CAAC,EAAE,iBAAiB,GAAG,iBAAiB,CAEtF;AAED,wBAAgB,WAAW,IAAI,kBAAkB,CAuBhD;AAED,wBAAgB,yBAAyB,CACvC,IAAI,CAAC,EAAE,iBAAiB,EACxB,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,kBAAkB,CAepB;AA+BD,wBAAgB,2BAA2B,CAAC,IAAI,CAAC,EAAE,iBAAiB,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CA4BlH;AAED,wBAAgB,2BAA2B,CAAC,IAAI,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAE7E;AAED,wBAAgB,4BAA4B,CAAC,IAAI,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAG9E;AAED,wBAAgB,sBAAsB,IAAI,mBAAmB,GAAG,SAAS,CAExE;AAED,wBAAgB,6BAA6B,IAAI,mBAAmB,GAAG,SAAS,CAE/E;AAED,wBAAgB,uCAAuC,CAAC,IAAI,CAAC,EAAE,iBAAiB,GAAG,MAAM,EAAE,CAG1F;AAED,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAExE;AAED,wBAAgB,gCAAgC,CAAC,IAAI,EAAE,iBAAiB,GAAG,SAAS,EAAE,KAAK,EAAE,kBAAkB,GAAG,IAAI,CAIrH;AAED,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,iBAAiB,GAAG,SAAS,GAAG,IAAI,CAIvF;AAED,wBAAgB,gCAAgC,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAGtG"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/native/runtime.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAEV,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,0BAA0B,EAC3B,MAAM,gBAAgB,CAAC;AAsCxB,wBAAgB,sCAAsC,IAAI,IAAI,CAI7D;AAED,wBAAgB,+BAA+B,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAO7F;AAED,wBAAgB,0BAA0B,CAAC,IAAI,CAAC,EAAE,iBAAiB,GAAG,iBAAiB,CAEtF;AAED,wBAAgB,WAAW,IAAI,kBAAkB,CA2ChD;AAED,wBAAgB,yBAAyB,CACvC,IAAI,CAAC,EAAE,iBAAiB,EACxB,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,kBAAkB,CAepB;AACD;;;GAGG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC,SAAS,EAAE,OAAO,CAAC;IACnB,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,MAAM,EAAE,mBAAmB,GAAG,SAAS,CAAC;IACxC,kFAAkF;IAClF,yBAAyB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAChD,CAAC;AAqCF;;;GAGG;AACH,wBAAgB,iCAAiC,CAC/C,aAAa,EAAE,iBAAiB,EAChC,WAAW,EAAE,OAAO,EACpB,QAAQ,EAAE,qBAAqB,GAC9B,MAAM,CAuBR;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,4BAA4B,GAAG;IACzC,mEAAmE;IACnE,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,GAAG,SAAS,CAAC;IACvC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,SAAS,CAAC,EAAE,CAAC,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,SAAS,CAAC;IACxD,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC1B,CAAC;AAEF,wBAAgB,4BAA4B,CAC1C,OAAO,GAAE,4BAAiC,GACzC,qBAAqB,GAAG,SAAS,CA8CnC;AAED,wBAAgB,2BAA2B,CAAC,IAAI,CAAC,EAAE,iBAAiB,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAyDlH;AAED,wBAAgB,2BAA2B,CAAC,IAAI,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAE7E;AAED,wBAAgB,4BAA4B,CAAC,IAAI,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAG9E;AAED,wBAAgB,sBAAsB,IAAI,mBAAmB,GAAG,SAAS,CAExE;AAED,wBAAgB,6BAA6B,IAAI,mBAAmB,GAAG,SAAS,CAE/E;AAED;;;;GAIG;AACH,wBAAgB,6BAA6B,IAAI,0BAA0B,GAAG,SAAS,CAKtF;AAED,wBAAgB,uCAAuC,CAAC,IAAI,CAAC,EAAE,iBAAiB,GAAG,MAAM,EAAE,CAG1F;AAED,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAExE;AAED,wBAAgB,gCAAgC,CAAC,IAAI,EAAE,iBAAiB,GAAG,SAAS,EAAE,KAAK,EAAE,kBAAkB,GAAG,IAAI,CAIrH;AAED,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,iBAAiB,GAAG,SAAS,GAAG,IAAI,CAIvF;AAED,wBAAgB,gCAAgC,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAGtG"}