@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.
- package/dist/agent/explore.d.ts.map +1 -1
- package/dist/agent/explore.js +6 -1
- package/dist/agent/explore.js.map +1 -1
- package/dist/agent/handles.d.ts.map +1 -1
- package/dist/agent/handles.js +2 -8
- package/dist/agent/handles.js.map +1 -1
- package/dist/agent/orient.js +0 -16
- package/dist/agent/orient.js.map +1 -1
- package/dist/agent/query-index/store.d.ts +2 -0
- package/dist/agent/query-index/store.d.ts.map +1 -1
- package/dist/agent/query-index/store.js +4 -0
- package/dist/agent/query-index/store.js.map +1 -1
- package/dist/agent/session.js +3 -3
- package/dist/agent/session.js.map +1 -1
- package/dist/chunking/chunkSplit.js +0 -15
- package/dist/chunking/chunkSplit.js.map +1 -1
- package/dist/documentLinks/check.d.ts.map +1 -1
- package/dist/documentLinks/check.js +4 -3
- package/dist/documentLinks/check.js.map +1 -1
- package/dist/documentLinks.d.ts.map +1 -1
- package/dist/documentLinks.js +0 -1
- package/dist/documentLinks.js.map +1 -1
- package/dist/drift/snapshot.js +1 -1
- package/dist/drift/snapshot.js.map +1 -1
- package/dist/duplicates/scoring.d.ts.map +1 -1
- package/dist/duplicates/scoring.js.map +1 -1
- package/dist/duplicates/unitCache.d.ts.map +1 -1
- package/dist/duplicates/unitCache.js +1 -1
- package/dist/duplicates/unitCache.js.map +1 -1
- package/dist/duplicates/units.d.ts.map +1 -1
- package/dist/duplicates/units.js +2 -3
- package/dist/duplicates/units.js.map +1 -1
- package/dist/duplicates.d.ts.map +1 -1
- package/dist/duplicates.js +0 -6
- package/dist/duplicates.js.map +1 -1
- package/dist/graph-edge-collector.d.ts +0 -2
- package/dist/graph-edge-collector.d.ts.map +1 -1
- package/dist/graph-edge-collector.js +2 -4
- package/dist/graph-edge-collector.js.map +1 -1
- package/dist/graphs/edgeResolution.d.ts.map +1 -1
- package/dist/graphs/specifiers.d.ts +1 -1
- package/dist/graphs/specifiers.d.ts.map +1 -1
- package/dist/graphs/specifiers.js +1 -1
- package/dist/graphs/specifiers.js.map +1 -1
- package/dist/graphs/symbol-graph-detailed.d.ts.map +1 -1
- package/dist/graphs/symbol-graph-detailed.js +0 -1
- package/dist/graphs/symbol-graph-detailed.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/indexer/build-cache/module-cache.d.ts.map +1 -1
- package/dist/indexer/build-cache/module-cache.js +1 -1
- package/dist/indexer/build-cache/module-cache.js.map +1 -1
- package/dist/indexer/build-cache/options.d.ts.map +1 -1
- package/dist/indexer/build-cache/options.js +0 -2
- package/dist/indexer/build-cache/options.js.map +1 -1
- package/dist/indexer/build-cache/project-snapshot.d.ts +9 -1
- package/dist/indexer/build-cache/project-snapshot.d.ts.map +1 -1
- package/dist/indexer/build-cache/project-snapshot.js +1 -5
- package/dist/indexer/build-cache/project-snapshot.js.map +1 -1
- package/dist/indexer/build-index.d.ts.map +1 -1
- package/dist/indexer/build-index.js +59 -44
- package/dist/indexer/build-index.js.map +1 -1
- package/dist/indexer/build-workers.d.ts +29 -2
- package/dist/indexer/build-workers.d.ts.map +1 -1
- package/dist/indexer/build-workers.js +54 -3
- package/dist/indexer/build-workers.js.map +1 -1
- package/dist/indexer/call-hierarchy.d.ts.map +1 -1
- package/dist/indexer/imports.d.ts +0 -3
- package/dist/indexer/imports.d.ts.map +1 -1
- package/dist/indexer/imports.js +1 -1
- package/dist/indexer/imports.js.map +1 -1
- package/dist/indexer/locals-and-exports.d.ts +2 -2
- package/dist/indexer/locals-and-exports.d.ts.map +1 -1
- package/dist/indexer/locals-and-exports.js +2 -3
- package/dist/indexer/locals-and-exports.js.map +1 -1
- package/dist/indexer/navigation-local.d.ts +2 -2
- package/dist/indexer/navigation-local.d.ts.map +1 -1
- package/dist/indexer/navigation-local.js +2 -2
- package/dist/indexer/navigation-local.js.map +1 -1
- package/dist/indexer/navigation-references.d.ts +1 -2
- package/dist/indexer/navigation-references.d.ts.map +1 -1
- package/dist/indexer/navigation-references.js +1 -1
- package/dist/indexer/navigation-references.js.map +1 -1
- package/dist/indexer/navigation.d.ts.map +1 -1
- package/dist/indexer/navigation.js +2 -4
- package/dist/indexer/navigation.js.map +1 -1
- package/dist/indexer/parse-context.d.ts +1 -4
- package/dist/indexer/parse-context.d.ts.map +1 -1
- package/dist/indexer/parse-context.js +11 -6
- package/dist/indexer/parse-context.js.map +1 -1
- package/dist/indexer/scope.d.ts +2 -2
- package/dist/indexer/scope.d.ts.map +1 -1
- package/dist/indexer/scope.js +1 -1
- package/dist/indexer/scope.js.map +1 -1
- package/dist/indexer.d.ts +3 -6
- package/dist/indexer.d.ts.map +1 -1
- package/dist/indexer.js +5 -8
- package/dist/indexer.js.map +1 -1
- package/dist/languages/definitions/c.d.ts.map +1 -1
- package/dist/languages/definitions/c.js +0 -1
- package/dist/languages/definitions/c.js.map +1 -1
- package/dist/languages/definitions/cFamily.d.ts +0 -1
- package/dist/languages/definitions/cFamily.d.ts.map +1 -1
- package/dist/languages/definitions/cFamily.js +0 -2
- package/dist/languages/definitions/cFamily.js.map +1 -1
- package/dist/languages/definitions/cpp.d.ts.map +1 -1
- package/dist/languages/definitions/cpp.js +0 -1
- package/dist/languages/definitions/cpp.js.map +1 -1
- package/dist/languages/definitions/csharp.d.ts.map +1 -1
- package/dist/languages/definitions/csharp.js +0 -2
- package/dist/languages/definitions/csharp.js.map +1 -1
- package/dist/languages/definitions/css.d.ts.map +1 -1
- package/dist/languages/definitions/css.js +0 -2
- package/dist/languages/definitions/css.js.map +1 -1
- package/dist/languages/definitions/go.d.ts.map +1 -1
- package/dist/languages/definitions/go.js +0 -2
- package/dist/languages/definitions/go.js.map +1 -1
- package/dist/languages/definitions/html.d.ts.map +1 -1
- package/dist/languages/definitions/html.js +0 -2
- package/dist/languages/definitions/html.js.map +1 -1
- package/dist/languages/definitions/htmlStub.d.ts.map +1 -1
- package/dist/languages/definitions/htmlStub.js +0 -2
- package/dist/languages/definitions/htmlStub.js.map +1 -1
- package/dist/languages/definitions/java.d.ts.map +1 -1
- package/dist/languages/definitions/java.js +0 -2
- package/dist/languages/definitions/java.js.map +1 -1
- package/dist/languages/definitions/javascript.d.ts.map +1 -1
- package/dist/languages/definitions/javascript.js +0 -2
- package/dist/languages/definitions/javascript.js.map +1 -1
- package/dist/languages/definitions/kotlin.d.ts.map +1 -1
- package/dist/languages/definitions/kotlin.js +0 -2
- package/dist/languages/definitions/kotlin.js.map +1 -1
- package/dist/languages/definitions/less.d.ts.map +1 -1
- package/dist/languages/definitions/less.js +0 -2
- package/dist/languages/definitions/less.js.map +1 -1
- package/dist/languages/definitions/php.d.ts.map +1 -1
- package/dist/languages/definitions/php.js +0 -2
- package/dist/languages/definitions/php.js.map +1 -1
- package/dist/languages/definitions/python.d.ts.map +1 -1
- package/dist/languages/definitions/python.js +0 -2
- package/dist/languages/definitions/python.js.map +1 -1
- package/dist/languages/definitions/ruby.d.ts.map +1 -1
- package/dist/languages/definitions/ruby.js +0 -2
- package/dist/languages/definitions/ruby.js.map +1 -1
- package/dist/languages/definitions/rust.d.ts.map +1 -1
- package/dist/languages/definitions/rust.js +0 -2
- package/dist/languages/definitions/rust.js.map +1 -1
- package/dist/languages/definitions/scss.d.ts.map +1 -1
- package/dist/languages/definitions/scss.js +0 -2
- package/dist/languages/definitions/scss.js.map +1 -1
- package/dist/languages/definitions/sql.d.ts.map +1 -1
- package/dist/languages/definitions/sql.js +0 -2
- package/dist/languages/definitions/sql.js.map +1 -1
- package/dist/languages/definitions/svelte.d.ts.map +1 -1
- package/dist/languages/definitions/svelte.js +0 -2
- package/dist/languages/definitions/svelte.js.map +1 -1
- package/dist/languages/definitions/swift.d.ts.map +1 -1
- package/dist/languages/definitions/swift.js +0 -2
- package/dist/languages/definitions/swift.js.map +1 -1
- package/dist/languages/definitions/typescript.d.ts.map +1 -1
- package/dist/languages/definitions/typescript.js +0 -3
- package/dist/languages/definitions/typescript.js.map +1 -1
- package/dist/languages/definitions/vue.d.ts.map +1 -1
- package/dist/languages/definitions/vue.js +0 -2
- package/dist/languages/definitions/vue.js.map +1 -1
- package/dist/languages/definitions/zig.d.ts.map +1 -1
- package/dist/languages/definitions/zig.js +0 -2
- package/dist/languages/definitions/zig.js.map +1 -1
- package/dist/languages/filePrep.d.ts +0 -2
- package/dist/languages/filePrep.d.ts.map +1 -1
- package/dist/languages/filePrep.js +0 -1
- package/dist/languages/filePrep.js.map +1 -1
- package/dist/languages/types.d.ts +19 -5
- package/dist/languages/types.d.ts.map +1 -1
- package/dist/languages.d.ts +1 -3
- package/dist/languages.d.ts.map +1 -1
- package/dist/languages.js +0 -7
- package/dist/languages.js.map +1 -1
- package/dist/native/bindingLoader.d.ts +27 -0
- package/dist/native/bindingLoader.d.ts.map +1 -1
- package/dist/native/bindingLoader.js +18 -1
- package/dist/native/bindingLoader.js.map +1 -1
- package/dist/native/contracts.d.ts +59 -12
- package/dist/native/contracts.d.ts.map +1 -1
- package/dist/native/execution.d.ts +10 -1
- package/dist/native/execution.d.ts.map +1 -1
- package/dist/native/execution.js +59 -3
- package/dist/native/execution.js.map +1 -1
- package/dist/native/projectedTree.d.ts +20 -5
- package/dist/native/projectedTree.d.ts.map +1 -1
- package/dist/native/projectedTree.js +100 -48
- package/dist/native/projectedTree.js.map +1 -1
- package/dist/native/runtime.d.ts +47 -1
- package/dist/native/runtime.d.ts.map +1 -1
- package/dist/native/runtime.js +151 -8
- package/dist/native/runtime.js.map +1 -1
- package/dist/native/runtimeCache.d.ts +92 -0
- package/dist/native/runtimeCache.d.ts.map +1 -1
- package/dist/native/runtimeCache.js +443 -13
- package/dist/native/runtimeCache.js.map +1 -1
- package/dist/native/treeShape.d.ts +21 -0
- package/dist/native/treeShape.d.ts.map +1 -0
- package/dist/native/treeShape.js +28 -0
- package/dist/native/treeShape.js.map +1 -0
- package/dist/native/treeSitterNative.d.ts +3 -3
- package/dist/native/treeSitterNative.d.ts.map +1 -1
- package/dist/native/treeSitterNative.js +2 -2
- package/dist/native/treeSitterNative.js.map +1 -1
- package/dist/presets.d.ts +7 -1
- package/dist/presets.d.ts.map +1 -1
- package/dist/presets.js +4 -0
- package/dist/presets.js.map +1 -1
- package/dist/review/deleted.js +2 -2
- package/dist/review/deleted.js.map +1 -1
- package/dist/review.js.map +1 -1
- package/dist/sql/extractFacts.d.ts.map +1 -1
- package/dist/sql/extractFacts.js +1 -1
- package/dist/sql/extractFacts.js.map +1 -1
- package/dist/util/lazySymbols.js +1 -1
- package/dist/util/lazySymbols.js.map +1 -1
- package/dist/util/projectFiles.js +1 -1
- package/dist/util/projectFiles.js.map +1 -1
- package/dist/util/resolution/jvm.js +1 -1
- package/dist/util/resolution/jvm.js.map +1 -1
- package/dist/util/resolution/php.d.ts.map +1 -1
- package/dist/util/resolution/php.js +0 -1
- package/dist/util/resolution/php.js.map +1 -1
- package/dist/util/resolution.d.ts.map +1 -1
- package/dist/util/resolution.js +5 -5
- package/dist/util/resolution.js.map +1 -1
- package/dist/worker/nativeExtractWorker.d.ts +10 -4
- package/dist/worker/nativeExtractWorker.d.ts.map +1 -1
- package/dist/worker/nativeExtractWorker.js +55 -3
- package/dist/worker/nativeExtractWorker.js.map +1 -1
- package/dist/worker/nativeWorkerPool.d.ts +4 -0
- package/dist/worker/nativeWorkerPool.d.ts.map +1 -1
- package/dist/worker/nativeWorkerPool.js +6 -1
- package/dist/worker/nativeWorkerPool.js.map +1 -1
- package/package.json +2 -2
- package/dist/languages/definitions/loadLanguage.d.ts +0 -2
- package/dist/languages/definitions/loadLanguage.d.ts.map +0 -1
- package/dist/languages/definitions/loadLanguage.js +0 -2
- package/dist/languages/definitions/loadLanguage.js.map +0 -1
- package/dist/parserBackend.d.ts +0 -57
- package/dist/parserBackend.d.ts.map +0 -1
- package/dist/parserBackend.js +0 -33
- 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;
|
|
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"}
|
package/dist/native/execution.js
CHANGED
|
@@ -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
|
-
|
|
140
|
-
|
|
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":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;
|
|
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,
|
|
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
|
-
|
|
21
|
-
constructor(tree: ProjectedSyntaxTree,
|
|
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,
|
|
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.
|
|
12
|
-
|
|
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
|
-
|
|
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
|
-
|
|
34
|
-
constructor(tree,
|
|
56
|
+
id;
|
|
57
|
+
constructor(tree, id) {
|
|
35
58
|
this.tree = tree;
|
|
36
|
-
this.
|
|
37
|
-
}
|
|
38
|
-
get id() {
|
|
39
|
-
return this.raw.id;
|
|
59
|
+
this.id = id;
|
|
40
60
|
}
|
|
41
61
|
get type() {
|
|
42
|
-
|
|
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.
|
|
66
|
+
return this.tree.stringIndexForByte(this.tree.columns.startIndex[this.id]);
|
|
46
67
|
}
|
|
47
68
|
get endIndex() {
|
|
48
|
-
return this.tree.stringIndexForByte(this.
|
|
69
|
+
return this.tree.stringIndexForByte(this.tree.columns.endIndex[this.id]);
|
|
49
70
|
}
|
|
50
71
|
get startPosition() {
|
|
51
|
-
|
|
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
|
-
|
|
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
|
-
|
|
91
|
+
const parentId = this.tree.columns.parentIds[this.id];
|
|
92
|
+
if (parentId < 0)
|
|
61
93
|
return null;
|
|
62
|
-
return this.tree.nodeById(
|
|
94
|
+
return this.tree.nodeById(parentId) ?? null;
|
|
63
95
|
}
|
|
64
96
|
get namedChildren() {
|
|
65
|
-
|
|
66
|
-
|
|
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
|
|
72
|
-
|
|
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
|
|
82
|
-
|
|
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
|
|
95
|
-
|
|
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(
|
|
114
|
+
return this.tree.nodeById(columns.childIds[start + index]) ?? null;
|
|
98
115
|
}
|
|
99
116
|
childForFieldName(fieldName) {
|
|
100
|
-
const
|
|
101
|
-
if (
|
|
117
|
+
const fieldNameId = this.tree.fieldNameId(fieldName);
|
|
118
|
+
if (fieldNameId === undefined)
|
|
102
119
|
return null;
|
|
103
|
-
|
|
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":"AACA,OAAO,EACL,yBAAyB,EACzB,kBAAkB,EAClB,0BAA0B,GAE3B,MAAM,gBAAgB,CAAC;AAOxB,MAAM,OAAO,mBAAmB;IACrB,MAAM,CAAS;
|
|
1
|
+
{"version":3,"file":"projectedTree.js","sourceRoot":"","sources":["../../src/native/projectedTree.ts"],"names":[],"mappings":"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"}
|
package/dist/native/runtime.d.ts
CHANGED
|
@@ -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":"
|
|
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"}
|