@virune/compiler 1.1.0-rc.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.
- package/LICENSE +201 -0
- package/NOTICE +2 -0
- package/dist/src/analysis/control-flow.d.ts +9 -0
- package/dist/src/analysis/control-flow.d.ts.map +1 -0
- package/dist/src/analysis/control-flow.js +47 -0
- package/dist/src/analysis/control-flow.js.map +1 -0
- package/dist/src/ast/nodes.d.ts +495 -0
- package/dist/src/ast/nodes.d.ts.map +1 -0
- package/dist/src/ast/nodes.js +2 -0
- package/dist/src/ast/nodes.js.map +1 -0
- package/dist/src/binder/symbols.d.ts +36 -0
- package/dist/src/binder/symbols.d.ts.map +1 -0
- package/dist/src/binder/symbols.js +30 -0
- package/dist/src/binder/symbols.js.map +1 -0
- package/dist/src/checker/builtin-members.d.ts +4 -0
- package/dist/src/checker/builtin-members.d.ts.map +1 -0
- package/dist/src/checker/builtin-members.js +175 -0
- package/dist/src/checker/builtin-members.js.map +1 -0
- package/dist/src/checker/checker.d.ts +148 -0
- package/dist/src/checker/checker.d.ts.map +1 -0
- package/dist/src/checker/checker.js +2985 -0
- package/dist/src/checker/checker.js.map +1 -0
- package/dist/src/checker/effect-registry.d.ts +14 -0
- package/dist/src/checker/effect-registry.d.ts.map +1 -0
- package/dist/src/checker/effect-registry.js +11 -0
- package/dist/src/checker/effect-registry.js.map +1 -0
- package/dist/src/checker/type-operations.d.ts +27 -0
- package/dist/src/checker/type-operations.d.ts.map +1 -0
- package/dist/src/checker/type-operations.js +268 -0
- package/dist/src/checker/type-operations.js.map +1 -0
- package/dist/src/codegen/emitter.d.ts +83 -0
- package/dist/src/codegen/emitter.d.ts.map +1 -0
- package/dist/src/codegen/emitter.js +1029 -0
- package/dist/src/codegen/emitter.js.map +1 -0
- package/dist/src/codegen/helpers.d.ts +7 -0
- package/dist/src/codegen/helpers.d.ts.map +1 -0
- package/dist/src/codegen/helpers.js +48 -0
- package/dist/src/codegen/helpers.js.map +1 -0
- package/dist/src/codegen/runtime-imports.d.ts +6 -0
- package/dist/src/codegen/runtime-imports.d.ts.map +1 -0
- package/dist/src/codegen/runtime-imports.js +45 -0
- package/dist/src/codegen/runtime-imports.js.map +1 -0
- package/dist/src/codegen/writer.d.ts +14 -0
- package/dist/src/codegen/writer.d.ts.map +1 -0
- package/dist/src/codegen/writer.js +56 -0
- package/dist/src/codegen/writer.js.map +1 -0
- package/dist/src/compiler.d.ts +24 -0
- package/dist/src/compiler.d.ts.map +1 -0
- package/dist/src/compiler.js +97 -0
- package/dist/src/compiler.js.map +1 -0
- package/dist/src/diagnostics/codes.d.ts +18 -0
- package/dist/src/diagnostics/codes.d.ts.map +1 -0
- package/dist/src/diagnostics/codes.js +43 -0
- package/dist/src/diagnostics/codes.js.map +1 -0
- package/dist/src/diagnostics/diagnostic.d.ts +41 -0
- package/dist/src/diagnostics/diagnostic.d.ts.map +1 -0
- package/dist/src/diagnostics/diagnostic.js +50 -0
- package/dist/src/diagnostics/diagnostic.js.map +1 -0
- package/dist/src/diagnostics/render.d.ts +44 -0
- package/dist/src/diagnostics/render.d.ts.map +1 -0
- package/dist/src/diagnostics/render.js +44 -0
- package/dist/src/diagnostics/render.js.map +1 -0
- package/dist/src/experimental-api.d.ts +19 -0
- package/dist/src/experimental-api.d.ts.map +1 -0
- package/dist/src/experimental-api.js +17 -0
- package/dist/src/experimental-api.js.map +1 -0
- package/dist/src/hir/lower.d.ts +6 -0
- package/dist/src/hir/lower.d.ts.map +1 -0
- package/dist/src/hir/lower.js +124 -0
- package/dist/src/hir/lower.js.map +1 -0
- package/dist/src/hir/nodes.d.ts +12 -0
- package/dist/src/hir/nodes.d.ts.map +1 -0
- package/dist/src/hir/nodes.js +2 -0
- package/dist/src/hir/nodes.js.map +1 -0
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +2 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/interop/checked-api.d.ts +21 -0
- package/dist/src/interop/checked-api.d.ts.map +1 -0
- package/dist/src/interop/checked-api.js +46 -0
- package/dist/src/interop/checked-api.js.map +1 -0
- package/dist/src/interop/decision.d.ts +24 -0
- package/dist/src/interop/decision.d.ts.map +1 -0
- package/dist/src/interop/decision.js +96 -0
- package/dist/src/interop/decision.js.map +1 -0
- package/dist/src/interop/frontend-component-emission.d.ts +17 -0
- package/dist/src/interop/frontend-component-emission.d.ts.map +1 -0
- package/dist/src/interop/frontend-component-emission.js +271 -0
- package/dist/src/interop/frontend-component-emission.js.map +1 -0
- package/dist/src/interop/jsx-view-validation.d.ts +20 -0
- package/dist/src/interop/jsx-view-validation.d.ts.map +1 -0
- package/dist/src/interop/jsx-view-validation.js +847 -0
- package/dist/src/interop/jsx-view-validation.js.map +1 -0
- package/dist/src/interop/operation-api.d.ts +32 -0
- package/dist/src/interop/operation-api.d.ts.map +1 -0
- package/dist/src/interop/operation-api.js +61 -0
- package/dist/src/interop/operation-api.js.map +1 -0
- package/dist/src/interop/operation.d.ts +136 -0
- package/dist/src/interop/operation.d.ts.map +1 -0
- package/dist/src/interop/operation.js +575 -0
- package/dist/src/interop/operation.js.map +1 -0
- package/dist/src/interop/repetition-host-locator.d.ts +25 -0
- package/dist/src/interop/repetition-host-locator.d.ts.map +1 -0
- package/dist/src/interop/repetition-host-locator.js +61 -0
- package/dist/src/interop/repetition-host-locator.js.map +1 -0
- package/dist/src/interop/repetition-host-usage-validation.d.ts +11 -0
- package/dist/src/interop/repetition-host-usage-validation.d.ts.map +1 -0
- package/dist/src/interop/repetition-host-usage-validation.js +89 -0
- package/dist/src/interop/repetition-host-usage-validation.js.map +1 -0
- package/dist/src/interop/types.d.ts +365 -0
- package/dist/src/interop/types.d.ts.map +1 -0
- package/dist/src/interop/types.js +2 -0
- package/dist/src/interop/types.js.map +1 -0
- package/dist/src/mir/lower.d.ts +4 -0
- package/dist/src/mir/lower.d.ts.map +1 -0
- package/dist/src/mir/lower.js +131 -0
- package/dist/src/mir/lower.js.map +1 -0
- package/dist/src/mir/nodes.d.ts +36 -0
- package/dist/src/mir/nodes.d.ts.map +1 -0
- package/dist/src/mir/nodes.js +2 -0
- package/dist/src/mir/nodes.js.map +1 -0
- package/dist/src/project/incremental.d.ts +9 -0
- package/dist/src/project/incremental.d.ts.map +1 -0
- package/dist/src/project/incremental.js +15 -0
- package/dist/src/project/incremental.js.map +1 -0
- package/dist/src/project/project.d.ts +98 -0
- package/dist/src/project/project.d.ts.map +1 -0
- package/dist/src/project/project.js +884 -0
- package/dist/src/project/project.js.map +1 -0
- package/dist/src/public-api.d.ts +45 -0
- package/dist/src/public-api.d.ts.map +1 -0
- package/dist/src/public-api.js +37 -0
- package/dist/src/public-api.js.map +1 -0
- package/dist/src/reference/evaluator.d.ts +13 -0
- package/dist/src/reference/evaluator.d.ts.map +1 -0
- package/dist/src/reference/evaluator.js +304 -0
- package/dist/src/reference/evaluator.js.map +1 -0
- package/dist/src/selfhost/bootstrap-artifact-normalizer.d.ts +65 -0
- package/dist/src/selfhost/bootstrap-artifact-normalizer.d.ts.map +1 -0
- package/dist/src/selfhost/bootstrap-artifact-normalizer.js +226 -0
- package/dist/src/selfhost/bootstrap-artifact-normalizer.js.map +1 -0
- package/dist/src/selfhost/bootstrap-artifact-snapshot.d.ts +23 -0
- package/dist/src/selfhost/bootstrap-artifact-snapshot.d.ts.map +1 -0
- package/dist/src/selfhost/bootstrap-artifact-snapshot.js +122 -0
- package/dist/src/selfhost/bootstrap-artifact-snapshot.js.map +1 -0
- package/dist/src/selfhost/bootstrap-compiler-selection.d.ts +36 -0
- package/dist/src/selfhost/bootstrap-compiler-selection.d.ts.map +1 -0
- package/dist/src/selfhost/bootstrap-compiler-selection.js +52 -0
- package/dist/src/selfhost/bootstrap-compiler-selection.js.map +1 -0
- package/dist/src/selfhost/bootstrap-execution-probe.d.ts +42 -0
- package/dist/src/selfhost/bootstrap-execution-probe.d.ts.map +1 -0
- package/dist/src/selfhost/bootstrap-execution-probe.js +115 -0
- package/dist/src/selfhost/bootstrap-execution-probe.js.map +1 -0
- package/dist/src/selfhost/bootstrap-rollback-decision.d.ts +40 -0
- package/dist/src/selfhost/bootstrap-rollback-decision.d.ts.map +1 -0
- package/dist/src/selfhost/bootstrap-rollback-decision.js +144 -0
- package/dist/src/selfhost/bootstrap-rollback-decision.js.map +1 -0
- package/dist/src/selfhost/bootstrap-shadow-history.d.ts +49 -0
- package/dist/src/selfhost/bootstrap-shadow-history.d.ts.map +1 -0
- package/dist/src/selfhost/bootstrap-shadow-history.js +348 -0
- package/dist/src/selfhost/bootstrap-shadow-history.js.map +1 -0
- package/dist/src/selfhost/bootstrap-shadow-report.d.ts +43 -0
- package/dist/src/selfhost/bootstrap-shadow-report.d.ts.map +1 -0
- package/dist/src/selfhost/bootstrap-shadow-report.js +94 -0
- package/dist/src/selfhost/bootstrap-shadow-report.js.map +1 -0
- package/dist/src/selfhost/bootstrap-stage-executor.d.ts +53 -0
- package/dist/src/selfhost/bootstrap-stage-executor.d.ts.map +1 -0
- package/dist/src/selfhost/bootstrap-stage-executor.js +159 -0
- package/dist/src/selfhost/bootstrap-stage-executor.js.map +1 -0
- package/dist/src/selfhost/bootstrap-stage-loader.d.ts +14 -0
- package/dist/src/selfhost/bootstrap-stage-loader.d.ts.map +1 -0
- package/dist/src/selfhost/bootstrap-stage-loader.js +112 -0
- package/dist/src/selfhost/bootstrap-stage-loader.js.map +1 -0
- package/dist/src/selfhost/bootstrap-stage-pipeline.d.ts +8 -0
- package/dist/src/selfhost/bootstrap-stage-pipeline.d.ts.map +1 -0
- package/dist/src/selfhost/bootstrap-stage-pipeline.js +85 -0
- package/dist/src/selfhost/bootstrap-stage-pipeline.js.map +1 -0
- package/dist/src/selfhost/bootstrap-stage-runner.d.ts +47 -0
- package/dist/src/selfhost/bootstrap-stage-runner.d.ts.map +1 -0
- package/dist/src/selfhost/bootstrap-stage-runner.js +106 -0
- package/dist/src/selfhost/bootstrap-stage-runner.js.map +1 -0
- package/dist/src/selfhost/clean-bootstrap-evidence.d.ts +83 -0
- package/dist/src/selfhost/clean-bootstrap-evidence.d.ts.map +1 -0
- package/dist/src/selfhost/clean-bootstrap-evidence.js +233 -0
- package/dist/src/selfhost/clean-bootstrap-evidence.js.map +1 -0
- package/dist/src/selfhost/compiler-facade.d.ts +33 -0
- package/dist/src/selfhost/compiler-facade.d.ts.map +1 -0
- package/dist/src/selfhost/compiler-facade.js +65 -0
- package/dist/src/selfhost/compiler-facade.js.map +1 -0
- package/dist/src/selfhost/contract.d.ts +151 -0
- package/dist/src/selfhost/contract.d.ts.map +1 -0
- package/dist/src/selfhost/contract.js +335 -0
- package/dist/src/selfhost/contract.js.map +1 -0
- package/dist/src/selfhost/differential-artifacts.d.ts +8 -0
- package/dist/src/selfhost/differential-artifacts.d.ts.map +1 -0
- package/dist/src/selfhost/differential-artifacts.js +50 -0
- package/dist/src/selfhost/differential-artifacts.js.map +1 -0
- package/dist/src/selfhost/differential-harness.d.ts +91 -0
- package/dist/src/selfhost/differential-harness.d.ts.map +1 -0
- package/dist/src/selfhost/differential-harness.js +246 -0
- package/dist/src/selfhost/differential-harness.js.map +1 -0
- package/dist/src/selfhost/full-language-inventory-runner.d.ts +49 -0
- package/dist/src/selfhost/full-language-inventory-runner.d.ts.map +1 -0
- package/dist/src/selfhost/full-language-inventory-runner.js +225 -0
- package/dist/src/selfhost/full-language-inventory-runner.js.map +1 -0
- package/dist/src/selfhost/full-language-inventory.d.ts +42 -0
- package/dist/src/selfhost/full-language-inventory.d.ts.map +1 -0
- package/dist/src/selfhost/full-language-inventory.js +163 -0
- package/dist/src/selfhost/full-language-inventory.js.map +1 -0
- package/dist/src/selfhost/interop-resolution-witness.d.ts +35 -0
- package/dist/src/selfhost/interop-resolution-witness.d.ts.map +1 -0
- package/dist/src/selfhost/interop-resolution-witness.js +186 -0
- package/dist/src/selfhost/interop-resolution-witness.js.map +1 -0
- package/dist/src/selfhost/kernel-model-host-adapter.d.ts +28 -0
- package/dist/src/selfhost/kernel-model-host-adapter.d.ts.map +1 -0
- package/dist/src/selfhost/kernel-model-host-adapter.js +36 -0
- package/dist/src/selfhost/kernel-model-host-adapter.js.map +1 -0
- package/dist/src/selfhost/legacy-adapter.d.ts +8 -0
- package/dist/src/selfhost/legacy-adapter.d.ts.map +1 -0
- package/dist/src/selfhost/legacy-adapter.js +186 -0
- package/dist/src/selfhost/legacy-adapter.js.map +1 -0
- package/dist/src/selfhost/module-graph.d.ts +57 -0
- package/dist/src/selfhost/module-graph.d.ts.map +1 -0
- package/dist/src/selfhost/module-graph.js +267 -0
- package/dist/src/selfhost/module-graph.js.map +1 -0
- package/dist/src/selfhost/mvp-adapter.d.ts +19 -0
- package/dist/src/selfhost/mvp-adapter.d.ts.map +1 -0
- package/dist/src/selfhost/mvp-adapter.js +186 -0
- package/dist/src/selfhost/mvp-adapter.js.map +1 -0
- package/dist/src/selfhost/node-executor.d.ts +6 -0
- package/dist/src/selfhost/node-executor.d.ts.map +1 -0
- package/dist/src/selfhost/node-executor.js +138 -0
- package/dist/src/selfhost/node-executor.js.map +1 -0
- package/dist/src/selfhost/project-compiler-adapter.d.ts +77 -0
- package/dist/src/selfhost/project-compiler-adapter.d.ts.map +1 -0
- package/dist/src/selfhost/project-compiler-adapter.js +358 -0
- package/dist/src/selfhost/project-compiler-adapter.js.map +1 -0
- package/dist/src/selfhost/project-differential-adapter.d.ts +15 -0
- package/dist/src/selfhost/project-differential-adapter.d.ts.map +1 -0
- package/dist/src/selfhost/project-differential-adapter.js +65 -0
- package/dist/src/selfhost/project-differential-adapter.js.map +1 -0
- package/dist/src/selfhost/promotion-evidence.d.ts +62 -0
- package/dist/src/selfhost/promotion-evidence.d.ts.map +1 -0
- package/dist/src/selfhost/promotion-evidence.js +332 -0
- package/dist/src/selfhost/promotion-evidence.js.map +1 -0
- package/dist/src/selfhost/promotion-policy-replay-v2.d.ts +54 -0
- package/dist/src/selfhost/promotion-policy-replay-v2.d.ts.map +1 -0
- package/dist/src/selfhost/promotion-policy-replay-v2.js +343 -0
- package/dist/src/selfhost/promotion-policy-replay-v2.js.map +1 -0
- package/dist/src/selfhost/promotion-shadow-history-v2.d.ts +55 -0
- package/dist/src/selfhost/promotion-shadow-history-v2.d.ts.map +1 -0
- package/dist/src/selfhost/promotion-shadow-history-v2.js +227 -0
- package/dist/src/selfhost/promotion-shadow-history-v2.js.map +1 -0
- package/dist/src/selfhost/promotion-subject.d.ts +34 -0
- package/dist/src/selfhost/promotion-subject.d.ts.map +1 -0
- package/dist/src/selfhost/promotion-subject.js +141 -0
- package/dist/src/selfhost/promotion-subject.js.map +1 -0
- package/dist/src/selfhost/source-manifest.d.ts +31 -0
- package/dist/src/selfhost/source-manifest.d.ts.map +1 -0
- package/dist/src/selfhost/source-manifest.js +194 -0
- package/dist/src/selfhost/source-manifest.js.map +1 -0
- package/dist/src/selfhost/stage-compiler-facade.d.ts +25 -0
- package/dist/src/selfhost/stage-compiler-facade.d.ts.map +1 -0
- package/dist/src/selfhost/stage-compiler-facade.js +100 -0
- package/dist/src/selfhost/stage-compiler-facade.js.map +1 -0
- package/dist/src/semantic-evidence/snapshot.d.ts +114 -0
- package/dist/src/semantic-evidence/snapshot.d.ts.map +1 -0
- package/dist/src/semantic-evidence/snapshot.js +336 -0
- package/dist/src/semantic-evidence/snapshot.js.map +1 -0
- package/dist/src/source.d.ts +25 -0
- package/dist/src/source.d.ts.map +1 -0
- package/dist/src/source.js +10 -0
- package/dist/src/source.js.map +1 -0
- package/dist/src/syntax/cst-to-ast.d.ts +108 -0
- package/dist/src/syntax/cst-to-ast.d.ts.map +1 -0
- package/dist/src/syntax/cst-to-ast.js +383 -0
- package/dist/src/syntax/cst-to-ast.js.map +1 -0
- package/dist/src/syntax/documentation.d.ts +11 -0
- package/dist/src/syntax/documentation.d.ts.map +1 -0
- package/dist/src/syntax/documentation.js +261 -0
- package/dist/src/syntax/documentation.js.map +1 -0
- package/dist/src/syntax/parser.d.ts +114 -0
- package/dist/src/syntax/parser.d.ts.map +1 -0
- package/dist/src/syntax/parser.js +970 -0
- package/dist/src/syntax/parser.js.map +1 -0
- package/dist/src/syntax/syntax-metadata.d.ts +8 -0
- package/dist/src/syntax/syntax-metadata.d.ts.map +1 -0
- package/dist/src/syntax/syntax-metadata.js +14 -0
- package/dist/src/syntax/syntax-metadata.js.map +1 -0
- package/dist/src/syntax/tokens.d.ts +96 -0
- package/dist/src/syntax/tokens.d.ts.map +1 -0
- package/dist/src/syntax/tokens.js +260 -0
- package/dist/src/syntax/tokens.js.map +1 -0
- package/dist/src/types/types.d.ts +97 -0
- package/dist/src/types/types.d.ts.map +1 -0
- package/dist/src/types/types.js +105 -0
- package/dist/src/types/types.js.map +1 -0
- package/package.json +47 -0
- package/schema/diagnostics-v1.schema.json +75 -0
|
@@ -0,0 +1,575 @@
|
|
|
1
|
+
import { canonicalizeInteropDecision, } from './decision.js';
|
|
2
|
+
const FOREIGN_CATEGORIES = [
|
|
3
|
+
'primitive', 'literal', 'object', 'function', 'constructor', 'promise', 'array', 'tuple', 'union', 'unknown', 'any',
|
|
4
|
+
];
|
|
5
|
+
const FOREIGN_PRIMITIVES = [
|
|
6
|
+
'boolean', 'string', 'number', 'bigint', 'void', 'undefined', 'null',
|
|
7
|
+
];
|
|
8
|
+
const CANONICAL_FOREIGN_IDENTITIES = ['ecmascript:Promise'];
|
|
9
|
+
const CALLABLE_PRIMITIVES = ['Bool', 'Int', 'Float', 'BigInt', 'String', 'Unit'];
|
|
10
|
+
const BRIDGES = ['string', 'bool', 'float', 'bigint', 'unit', 'unknown'];
|
|
11
|
+
const RUNTIME_FORMATS = ['esm', 'commonjs', 'builtin', 'bundler', 'unknown'];
|
|
12
|
+
const PLATFORMS = ['node', 'browser', 'neutral'];
|
|
13
|
+
/**
|
|
14
|
+
* Project one completed checker result into provider-independent External Operations.
|
|
15
|
+
* Experimental entry points register the result before it is exposed to callers. Compiler-owned
|
|
16
|
+
* AST and semantic objects are trusted process state; this function validates only the facts
|
|
17
|
+
* that become stable operation evidence.
|
|
18
|
+
*/
|
|
19
|
+
export function buildExternalOperationSequence(input) {
|
|
20
|
+
if (input.diagnostics.some(diagnostic => diagnostic.severity === 'error'))
|
|
21
|
+
return Object.freeze([]);
|
|
22
|
+
const operations = [];
|
|
23
|
+
let witnessIndex = 0;
|
|
24
|
+
for (const declaration of input.module.imports) {
|
|
25
|
+
if (declaration.sourceKind !== 'javascript')
|
|
26
|
+
continue;
|
|
27
|
+
const witnessCount = importResolutionCount(declaration);
|
|
28
|
+
const witnesses = input.interop.moduleWitnesses.slice(witnessIndex, witnessIndex + witnessCount);
|
|
29
|
+
if (witnesses.length !== witnessCount)
|
|
30
|
+
throw new Error(`External operation evidence is missing module witnesses for ${declaration.source}`);
|
|
31
|
+
witnessIndex += witnessCount;
|
|
32
|
+
if (declaration.typeOnly)
|
|
33
|
+
continue;
|
|
34
|
+
operations.push(externalModuleLoadOperation({
|
|
35
|
+
nodeId: declaration.id,
|
|
36
|
+
span: declaration.span,
|
|
37
|
+
moduleSpecifier: declaration.source,
|
|
38
|
+
witnesses,
|
|
39
|
+
}));
|
|
40
|
+
}
|
|
41
|
+
if (witnessIndex !== input.interop.moduleWitnesses.length)
|
|
42
|
+
throw new Error('External operation evidence contains unconsumed module witnesses');
|
|
43
|
+
const callableProjections = groupCallableProjections(input.interop.callableProjections ?? []);
|
|
44
|
+
const objectCallableProjections = groupObjectCallableProjections(input.interop.objectCallableProjections ?? []);
|
|
45
|
+
const operationIndexAtUsageBoundary = [operations.length];
|
|
46
|
+
for (let usageIndex = 0; usageIndex < input.interop.usageIR.length; usageIndex++) {
|
|
47
|
+
const usage = input.interop.usageIR[usageIndex];
|
|
48
|
+
const projections = callableProjections.get(usage.nodeId) ?? [];
|
|
49
|
+
const objectProjections = objectCallableProjections.get(usage.nodeId) ?? [];
|
|
50
|
+
const invocation = usage.kind === 'call' || usage.kind === 'construct';
|
|
51
|
+
const objectBuild = usage.kind === 'object';
|
|
52
|
+
if (invocation && projections.some(projection => projection.beforeUsageIndex > usageIndex)) {
|
|
53
|
+
throw new Error('External callable projection usage order cannot extend beyond its outer invocation');
|
|
54
|
+
}
|
|
55
|
+
if (!invocation && projections.length !== 0)
|
|
56
|
+
throw new Error('External callable projection evidence must attach to a call or construct usage');
|
|
57
|
+
if (objectBuild && objectProjections.some(projection => projection.beforeUsageIndex > usageIndex)) {
|
|
58
|
+
throw new Error('External object callable projection usage order cannot extend beyond its object construction');
|
|
59
|
+
}
|
|
60
|
+
if (!objectBuild && objectProjections.length !== 0)
|
|
61
|
+
throw new Error('External object callable projection evidence must attach to a contextual object usage');
|
|
62
|
+
const stableProjections = invocation
|
|
63
|
+
? canonicalCallableProjections(projections, usage.nodeId, operationIndexAtUsageBoundary)
|
|
64
|
+
: [];
|
|
65
|
+
const stableObjectProjections = objectBuild
|
|
66
|
+
? canonicalObjectCallableProjections(objectProjections, usage.nodeId, operationIndexAtUsageBoundary)
|
|
67
|
+
: [];
|
|
68
|
+
const operation = externalOperationFromUsageWithCallables(usage, stableProjections, stableObjectProjections);
|
|
69
|
+
if (operation !== undefined)
|
|
70
|
+
operations.push(operation);
|
|
71
|
+
operationIndexAtUsageBoundary[usageIndex + 1] = operations.length;
|
|
72
|
+
if (invocation)
|
|
73
|
+
callableProjections.delete(usage.nodeId);
|
|
74
|
+
if (objectBuild)
|
|
75
|
+
objectCallableProjections.delete(usage.nodeId);
|
|
76
|
+
}
|
|
77
|
+
if (callableProjections.size !== 0)
|
|
78
|
+
throw new Error('External callable projection evidence does not correspond to a completed call or construct usage');
|
|
79
|
+
if (objectCallableProjections.size !== 0)
|
|
80
|
+
throw new Error('External object callable projection evidence does not correspond to a completed contextual object usage');
|
|
81
|
+
return Object.freeze(operations);
|
|
82
|
+
}
|
|
83
|
+
/** Import usages are declaration metadata; one ModuleLoad is emitted per runtime import declaration. */
|
|
84
|
+
export function externalOperationFromUsage(usage) {
|
|
85
|
+
return externalOperationFromUsageWithCallables(usage, [], []);
|
|
86
|
+
}
|
|
87
|
+
function externalOperationFromUsageWithCallables(usage, callableProjections, objectCallableProjections) {
|
|
88
|
+
if (usage.kind === 'import') {
|
|
89
|
+
if (callableProjections.length !== 0 || objectCallableProjections.length !== 0)
|
|
90
|
+
throw new Error('External callable projection evidence cannot attach to an import usage');
|
|
91
|
+
return undefined;
|
|
92
|
+
}
|
|
93
|
+
if (usage.kind !== 'call' && usage.kind !== 'construct' && callableProjections.length !== 0)
|
|
94
|
+
throw new Error('External callable projection evidence must attach to a call or construct usage');
|
|
95
|
+
if (usage.kind !== 'object' && objectCallableProjections.length !== 0)
|
|
96
|
+
throw new Error('External object callable projection evidence must attach to a contextual object usage');
|
|
97
|
+
const anchor = canonicalOperationAnchor(usage.nodeId, usage.span);
|
|
98
|
+
switch (usage.kind) {
|
|
99
|
+
case 'property':
|
|
100
|
+
return freezeOperation({
|
|
101
|
+
kind: 'read-property',
|
|
102
|
+
...anchor,
|
|
103
|
+
effect: 'JavaScript',
|
|
104
|
+
result: canonicalForeignType(usage.foreignType),
|
|
105
|
+
decision: directDecision(),
|
|
106
|
+
});
|
|
107
|
+
case 'index':
|
|
108
|
+
return freezeOperation({
|
|
109
|
+
kind: 'read-index',
|
|
110
|
+
...anchor,
|
|
111
|
+
effect: 'JavaScript',
|
|
112
|
+
result: canonicalForeignType(usage.foreignType),
|
|
113
|
+
decision: directDecision(),
|
|
114
|
+
});
|
|
115
|
+
case 'write-property':
|
|
116
|
+
if (usage.property === undefined)
|
|
117
|
+
throw new Error('External WriteProperty operation requires a property name');
|
|
118
|
+
return freezeOperation({
|
|
119
|
+
kind: 'write-property',
|
|
120
|
+
...anchor,
|
|
121
|
+
effect: 'JavaScript',
|
|
122
|
+
target: canonicalForeignType(usage.foreignType),
|
|
123
|
+
property: stableProviderText(usage.property, 'write property name'),
|
|
124
|
+
decision: directDecision(),
|
|
125
|
+
});
|
|
126
|
+
case 'write-index':
|
|
127
|
+
return freezeOperation({
|
|
128
|
+
kind: 'write-index',
|
|
129
|
+
...anchor,
|
|
130
|
+
effect: 'JavaScript',
|
|
131
|
+
target: canonicalForeignType(usage.foreignType),
|
|
132
|
+
decision: directDecision(),
|
|
133
|
+
});
|
|
134
|
+
case 'object':
|
|
135
|
+
return freezeOperation({
|
|
136
|
+
kind: 'build-external-object',
|
|
137
|
+
...anchor,
|
|
138
|
+
result: canonicalForeignType(usage.foreignType),
|
|
139
|
+
...(objectCallableProjections.length === 0 ? {} : { callableProjections: objectCallableProjections }),
|
|
140
|
+
decision: objectCallableProjections.length === 0 ? directDecision() : callableShimDecision([]),
|
|
141
|
+
});
|
|
142
|
+
case 'call': {
|
|
143
|
+
if (usage.receiverMode !== 'none' && usage.receiverMode !== 'preserve-this')
|
|
144
|
+
throw new Error('External Call operation requires a known receiver mode');
|
|
145
|
+
if (typeof usage.mayReject !== 'boolean')
|
|
146
|
+
throw new Error('External Call operation requires explicit rejection semantics');
|
|
147
|
+
const receiverClaims = usage.receiverMode === 'preserve-this' ? ['receiver-preserved'] : [];
|
|
148
|
+
return freezeOperation({
|
|
149
|
+
kind: 'call',
|
|
150
|
+
...anchor,
|
|
151
|
+
effect: 'JavaScript',
|
|
152
|
+
result: canonicalForeignType(usage.foreignType),
|
|
153
|
+
receiverMode: usage.receiverMode,
|
|
154
|
+
mayReject: usage.mayReject,
|
|
155
|
+
...(callableProjections.length === 0 ? {} : { callableProjections }),
|
|
156
|
+
decision: callableProjections.length === 0 ? directDecision(receiverClaims) : callableShimDecision(receiverClaims),
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
case 'construct':
|
|
160
|
+
if (usage.receiverMode !== 'none')
|
|
161
|
+
throw new Error('External Construct operation requires receiver mode none');
|
|
162
|
+
return freezeOperation({
|
|
163
|
+
kind: 'construct',
|
|
164
|
+
...anchor,
|
|
165
|
+
effect: 'JavaScript',
|
|
166
|
+
result: canonicalForeignType(usage.foreignType),
|
|
167
|
+
...(callableProjections.length === 0 ? {} : { callableProjections }),
|
|
168
|
+
decision: callableProjections.length === 0 ? directDecision() : callableShimDecision([]),
|
|
169
|
+
});
|
|
170
|
+
case 'await':
|
|
171
|
+
if (typeof usage.mayReject !== 'boolean')
|
|
172
|
+
throw new Error('External Await operation requires explicit rejection semantics');
|
|
173
|
+
return freezeOperation({
|
|
174
|
+
kind: 'await',
|
|
175
|
+
...anchor,
|
|
176
|
+
effect: 'JavaScript',
|
|
177
|
+
result: canonicalForeignType(usage.foreignType),
|
|
178
|
+
mayReject: usage.mayReject,
|
|
179
|
+
decision: directDecision(),
|
|
180
|
+
});
|
|
181
|
+
case 'bridge': {
|
|
182
|
+
if (usage.bridge?.kind !== 'primitive')
|
|
183
|
+
throw new Error('External primitive bridge operation requires an explicit primitive bridge plan');
|
|
184
|
+
assertKnown(BRIDGES, usage.bridge.bridge, 'primitive bridge');
|
|
185
|
+
const source = canonicalForeignType(usage.foreignType);
|
|
186
|
+
assertBridgeMatchesForeignType(usage.bridge.bridge, source);
|
|
187
|
+
return freezeOperation({
|
|
188
|
+
kind: 'bridge-foreign-primitive',
|
|
189
|
+
...anchor,
|
|
190
|
+
source,
|
|
191
|
+
bridge: usage.bridge.bridge,
|
|
192
|
+
decision: usage.bridge.bridge === 'unknown'
|
|
193
|
+
? unresolvedDirectDecision()
|
|
194
|
+
: directDecision(['primitive-bridge-validated']),
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
throw new Error(`Unknown Foreign usage kind: ${String(usage.kind)}`);
|
|
199
|
+
}
|
|
200
|
+
export function externalModuleLoadOperation(input) {
|
|
201
|
+
const anchor = canonicalOperationAnchor(input.nodeId, input.span);
|
|
202
|
+
const moduleSpecifier = stableProviderText(input.moduleSpecifier, 'module specifier');
|
|
203
|
+
if (input.witnesses.length === 0) {
|
|
204
|
+
return freezeOperation({ kind: 'module-load', ...anchor, moduleSpecifier, decision: unresolvedDirectDecision() });
|
|
205
|
+
}
|
|
206
|
+
const witnesses = input.witnesses.map(witness => canonicalRuntimeWitness(witness, moduleSpecifier));
|
|
207
|
+
const first = witnesses[0];
|
|
208
|
+
if (witnesses.some(witness => !sameRuntimeWitness(first, witness))) {
|
|
209
|
+
return freezeOperation({ kind: 'module-load', ...anchor, moduleSpecifier, decision: unresolvedDirectDecision() });
|
|
210
|
+
}
|
|
211
|
+
return freezeOperation({
|
|
212
|
+
kind: 'module-load',
|
|
213
|
+
...anchor,
|
|
214
|
+
moduleSpecifier,
|
|
215
|
+
runtimeWitness: first,
|
|
216
|
+
decision: runtimeResolutionDecision(first),
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
function importResolutionCount(declaration) {
|
|
220
|
+
if (declaration.defaultImport !== undefined || declaration.namespaceImport !== undefined)
|
|
221
|
+
return 1;
|
|
222
|
+
return Math.max(1, declaration.items.length);
|
|
223
|
+
}
|
|
224
|
+
function directDecision(claims = []) {
|
|
225
|
+
return canonicalizeInteropDecision({ status: 'resolved', mechanism: 'direct', authoring: 'none', claims, obligations: [] });
|
|
226
|
+
}
|
|
227
|
+
function callableShimDecision(claims) {
|
|
228
|
+
return canonicalizeInteropDecision({
|
|
229
|
+
status: 'resolved',
|
|
230
|
+
mechanism: 'callable-shim',
|
|
231
|
+
authoring: 'generated',
|
|
232
|
+
claims: [...claims, 'type-boundary-safe'],
|
|
233
|
+
obligations: [],
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
function unresolvedDirectDecision() {
|
|
237
|
+
return canonicalizeInteropDecision({ status: 'unresolved', mechanism: 'direct', authoring: 'none', claims: [], obligations: [] });
|
|
238
|
+
}
|
|
239
|
+
function runtimeResolutionDecision(witness) {
|
|
240
|
+
if ((witness.runtimeFormat === 'esm' || witness.runtimeFormat === 'commonjs' || witness.runtimeFormat === 'builtin') && witness.runtimeEntry !== undefined) {
|
|
241
|
+
return canonicalizeInteropDecision({
|
|
242
|
+
status: 'resolved', mechanism: 'direct', authoring: 'none', claims: [],
|
|
243
|
+
obligations: [{ kind: 'runtime-resolution', stage: 'check', status: 'discharged' }],
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
if (witness.runtimeFormat === 'bundler') {
|
|
247
|
+
return canonicalizeInteropDecision({
|
|
248
|
+
status: 'obligation-pending', mechanism: 'direct', authoring: 'none', claims: [],
|
|
249
|
+
obligations: [{ kind: 'runtime-resolution', stage: 'build', status: 'pending' }],
|
|
250
|
+
});
|
|
251
|
+
}
|
|
252
|
+
return unresolvedDirectDecision();
|
|
253
|
+
}
|
|
254
|
+
function groupCallableProjections(projections) {
|
|
255
|
+
const grouped = new Map();
|
|
256
|
+
for (const projection of projections) {
|
|
257
|
+
if (!Number.isSafeInteger(projection.callNodeId))
|
|
258
|
+
throw new Error('External callable projection call node id must be a safe integer');
|
|
259
|
+
const current = grouped.get(projection.callNodeId) ?? [];
|
|
260
|
+
current.push(projection);
|
|
261
|
+
grouped.set(projection.callNodeId, current);
|
|
262
|
+
}
|
|
263
|
+
return grouped;
|
|
264
|
+
}
|
|
265
|
+
function groupObjectCallableProjections(projections) {
|
|
266
|
+
const grouped = new Map();
|
|
267
|
+
for (const projection of projections) {
|
|
268
|
+
if (!Number.isSafeInteger(projection.objectNodeId))
|
|
269
|
+
throw new Error('External object callable projection object node id must be a safe integer');
|
|
270
|
+
const current = grouped.get(projection.objectNodeId) ?? [];
|
|
271
|
+
current.push(projection);
|
|
272
|
+
grouped.set(projection.objectNodeId, current);
|
|
273
|
+
}
|
|
274
|
+
return grouped;
|
|
275
|
+
}
|
|
276
|
+
function canonicalCallableProjections(projections, callNodeId, operationIndexAtUsageBoundary) {
|
|
277
|
+
const seenArguments = new Set();
|
|
278
|
+
const ordered = projections.map(projection => {
|
|
279
|
+
if (projection.callNodeId !== callNodeId)
|
|
280
|
+
throw new Error('External callable projection is attached to the wrong call node');
|
|
281
|
+
if (!Number.isSafeInteger(projection.argumentIndex) || projection.argumentIndex < 0)
|
|
282
|
+
throw new Error('External callable projection argument index must be a non-negative safe integer');
|
|
283
|
+
if (!Number.isSafeInteger(projection.beforeUsageIndex) || projection.beforeUsageIndex < 0)
|
|
284
|
+
throw new Error('External callable projection usage index must be a non-negative safe integer');
|
|
285
|
+
if (seenArguments.has(projection.argumentIndex))
|
|
286
|
+
throw new Error('External callable projection argument index must be unique within a call');
|
|
287
|
+
seenArguments.add(projection.argumentIndex);
|
|
288
|
+
const beforeOperationIndex = operationIndexAtUsageBoundary.at(projection.beforeUsageIndex);
|
|
289
|
+
if (typeof beforeOperationIndex !== 'number' || !Number.isSafeInteger(beforeOperationIndex) || beforeOperationIndex < 0) {
|
|
290
|
+
throw new Error('External callable projection usage boundary is not represented in the stable operation sequence');
|
|
291
|
+
}
|
|
292
|
+
return Object.freeze({
|
|
293
|
+
argumentIndex: projection.argumentIndex,
|
|
294
|
+
beforeUsageIndex: projection.beforeUsageIndex,
|
|
295
|
+
beforeOperationIndex,
|
|
296
|
+
descriptor: canonicalCallableDescriptor(projection.descriptor),
|
|
297
|
+
});
|
|
298
|
+
});
|
|
299
|
+
ordered.sort((left, right) => left.argumentIndex - right.argumentIndex);
|
|
300
|
+
for (let index = 1; index < ordered.length; index++) {
|
|
301
|
+
const current = ordered[index];
|
|
302
|
+
const previous = ordered[index - 1];
|
|
303
|
+
if (current.beforeUsageIndex < previous.beforeUsageIndex || current.beforeOperationIndex < previous.beforeOperationIndex) {
|
|
304
|
+
throw new Error('External callable projection usage order must follow argument evaluation order');
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
return Object.freeze(ordered.map(projection => Object.freeze({
|
|
308
|
+
argumentIndex: projection.argumentIndex,
|
|
309
|
+
beforeOperationIndex: projection.beforeOperationIndex,
|
|
310
|
+
descriptor: projection.descriptor,
|
|
311
|
+
})));
|
|
312
|
+
}
|
|
313
|
+
function canonicalObjectCallableProjections(projections, objectNodeId, operationIndexAtUsageBoundary) {
|
|
314
|
+
const seenEntries = new Set();
|
|
315
|
+
const ordered = projections.map(projection => {
|
|
316
|
+
if (projection.objectNodeId !== objectNodeId)
|
|
317
|
+
throw new Error('External object callable projection is attached to the wrong object node');
|
|
318
|
+
if (!Number.isSafeInteger(projection.entryIndex) || projection.entryIndex < 0)
|
|
319
|
+
throw new Error('External object callable projection entry index must be a non-negative safe integer');
|
|
320
|
+
if (!Number.isSafeInteger(projection.beforeUsageIndex) || projection.beforeUsageIndex < 0)
|
|
321
|
+
throw new Error('External object callable projection usage index must be a non-negative safe integer');
|
|
322
|
+
if (seenEntries.has(projection.entryIndex))
|
|
323
|
+
throw new Error('External object callable projection entry index must be unique within an object');
|
|
324
|
+
seenEntries.add(projection.entryIndex);
|
|
325
|
+
const beforeOperationIndex = operationIndexAtUsageBoundary.at(projection.beforeUsageIndex);
|
|
326
|
+
if (typeof beforeOperationIndex !== 'number' || !Number.isSafeInteger(beforeOperationIndex) || beforeOperationIndex < 0) {
|
|
327
|
+
throw new Error('External object callable projection usage boundary is not represented in the stable operation sequence');
|
|
328
|
+
}
|
|
329
|
+
return Object.freeze({
|
|
330
|
+
entryIndex: projection.entryIndex,
|
|
331
|
+
property: stableProviderText(projection.property, 'contextual object property'),
|
|
332
|
+
beforeUsageIndex: projection.beforeUsageIndex,
|
|
333
|
+
beforeOperationIndex,
|
|
334
|
+
descriptor: canonicalCallableDescriptor(projection.descriptor),
|
|
335
|
+
});
|
|
336
|
+
});
|
|
337
|
+
ordered.sort((left, right) => left.entryIndex - right.entryIndex);
|
|
338
|
+
for (let index = 1; index < ordered.length; index++) {
|
|
339
|
+
const current = ordered[index];
|
|
340
|
+
const previous = ordered[index - 1];
|
|
341
|
+
if (current.beforeUsageIndex < previous.beforeUsageIndex || current.beforeOperationIndex < previous.beforeOperationIndex) {
|
|
342
|
+
throw new Error('External object callable projection usage order must follow entry evaluation order');
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
return Object.freeze(ordered.map(projection => Object.freeze({
|
|
346
|
+
entryIndex: projection.entryIndex,
|
|
347
|
+
property: projection.property,
|
|
348
|
+
beforeOperationIndex: projection.beforeOperationIndex,
|
|
349
|
+
descriptor: projection.descriptor,
|
|
350
|
+
})));
|
|
351
|
+
}
|
|
352
|
+
function canonicalCallableDescriptor(descriptor) {
|
|
353
|
+
if (descriptor.version !== 'virune-callable-shim/v1' && descriptor.version !== 'virune-callable-shim/v2' && descriptor.version !== 'virune-callable-shim/v3')
|
|
354
|
+
throw new Error('Unknown native callable boundary descriptor version');
|
|
355
|
+
if (!Array.isArray(descriptor.parameters))
|
|
356
|
+
throw new Error('Native callable boundary parameters must be an array');
|
|
357
|
+
if (typeof descriptor.async !== 'boolean')
|
|
358
|
+
throw new Error('Native callable boundary async flag must be boolean');
|
|
359
|
+
if (descriptor.contextMode !== 'root-argument')
|
|
360
|
+
throw new Error('Native callable boundary requires external-root invocation');
|
|
361
|
+
if (!Array.isArray(descriptor.effects))
|
|
362
|
+
throw new Error('Native callable boundary effects must be an array');
|
|
363
|
+
const effects = descriptor.effects.map(effect => stableProviderText(effect, 'native callable effect'));
|
|
364
|
+
if (effects.includes('*'))
|
|
365
|
+
throw new Error('Open effects cannot become stable native callable boundary evidence');
|
|
366
|
+
const canonicalEffects = [...new Set(effects)].sort(compareText);
|
|
367
|
+
if (canonicalEffects.length !== effects.length || canonicalEffects.some((effect, index) => effect !== effects[index]))
|
|
368
|
+
throw new Error('Native callable boundary effects must be unique and canonically ordered');
|
|
369
|
+
if (descriptor.version === 'virune-callable-shim/v1') {
|
|
370
|
+
const parameters = descriptor.parameters.map(parameter => {
|
|
371
|
+
assertKnown(CALLABLE_PRIMITIVES, parameter, 'native callable primitive');
|
|
372
|
+
return parameter;
|
|
373
|
+
});
|
|
374
|
+
assertKnown(CALLABLE_PRIMITIVES, descriptor.result, 'native callable result primitive');
|
|
375
|
+
return Object.freeze({ version: 'virune-callable-shim/v1', parameters: Object.freeze(parameters), result: descriptor.result, async: descriptor.async, effects: Object.freeze(canonicalEffects), contextMode: 'root-argument' });
|
|
376
|
+
}
|
|
377
|
+
if (descriptor.version === 'virune-callable-shim/v3') {
|
|
378
|
+
if (descriptor.async !== false)
|
|
379
|
+
throw new Error('Native callable boundary v3 must be synchronous');
|
|
380
|
+
const parameters = descriptor.parameters.map(parameter => {
|
|
381
|
+
assertKnown(CALLABLE_PRIMITIVES, parameter, 'native callable primitive');
|
|
382
|
+
return parameter;
|
|
383
|
+
});
|
|
384
|
+
if (descriptor.result.version !== 'virune-callable-shim/v1' || descriptor.result.async !== false)
|
|
385
|
+
throw new Error('Native callable boundary v3 result must be a synchronous v1 callable');
|
|
386
|
+
const result = canonicalCallableDescriptor(descriptor.result);
|
|
387
|
+
if (result.version !== 'virune-callable-shim/v1' || result.async !== false)
|
|
388
|
+
throw new Error('Native callable boundary v3 result must canonicalize to a synchronous v1 callable');
|
|
389
|
+
return Object.freeze({ version: 'virune-callable-shim/v3', parameters: Object.freeze(parameters), result, async: false, effects: Object.freeze(canonicalEffects), contextMode: 'root-argument' });
|
|
390
|
+
}
|
|
391
|
+
if (descriptor.parameters.some(parameter => parameter !== 'External') || (descriptor.result !== 'External' && descriptor.result !== 'Never')) {
|
|
392
|
+
throw new Error('Native callable boundary v2 only supports External callbacks');
|
|
393
|
+
}
|
|
394
|
+
return Object.freeze({ version: 'virune-callable-shim/v2', parameters: Object.freeze(descriptor.parameters.map(() => 'External')), result: descriptor.result, async: descriptor.async, effects: Object.freeze(canonicalEffects), contextMode: 'root-argument' });
|
|
395
|
+
}
|
|
396
|
+
function canonicalForeignType(snapshot) {
|
|
397
|
+
assertKnown(FOREIGN_CATEGORIES, snapshot.category, 'foreign type category');
|
|
398
|
+
if (snapshot.category === 'any')
|
|
399
|
+
throw new Error('TypeScript any cannot become successful External operation evidence');
|
|
400
|
+
if (snapshot.canonicalIdentity !== undefined) {
|
|
401
|
+
assertKnown(CANONICAL_FOREIGN_IDENTITIES, snapshot.canonicalIdentity, 'canonical foreign type identity');
|
|
402
|
+
if (snapshot.canonicalIdentity === 'ecmascript:Promise' && snapshot.category !== 'promise') {
|
|
403
|
+
throw new Error('Canonical ECMAScript Promise identity requires the promise category');
|
|
404
|
+
}
|
|
405
|
+
}
|
|
406
|
+
if (snapshot.primitive !== undefined) {
|
|
407
|
+
assertKnown(FOREIGN_PRIMITIVES, snapshot.primitive, 'foreign primitive');
|
|
408
|
+
if (snapshot.category !== 'primitive' && snapshot.category !== 'literal') {
|
|
409
|
+
throw new Error(`External operation foreign primitive is incompatible with category ${snapshot.category}`);
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
else if (snapshot.category === 'primitive') {
|
|
413
|
+
throw new Error('External operation primitive category requires an explicit primitive kind');
|
|
414
|
+
}
|
|
415
|
+
if (snapshot.mustUse !== undefined && typeof snapshot.mustUse !== 'boolean')
|
|
416
|
+
throw new Error('External operation foreign mustUse must be boolean');
|
|
417
|
+
const origin = snapshot.origin === undefined ? undefined : canonicalOrigin(snapshot.origin);
|
|
418
|
+
return Object.freeze({
|
|
419
|
+
category: snapshot.category,
|
|
420
|
+
...(snapshot.canonicalIdentity === undefined ? {} : { canonicalIdentity: snapshot.canonicalIdentity }),
|
|
421
|
+
...(snapshot.primitive === undefined ? {} : { primitive: snapshot.primitive }),
|
|
422
|
+
...(snapshot.mustUse === undefined ? {} : { mustUse: snapshot.mustUse }),
|
|
423
|
+
...(origin === undefined ? {} : { origin }),
|
|
424
|
+
});
|
|
425
|
+
}
|
|
426
|
+
function canonicalOrigin(origin) {
|
|
427
|
+
const moduleSpecifier = stableOptionalOriginText(origin.moduleSpecifier);
|
|
428
|
+
const packageName = stableOptionalOriginText(origin.packageName);
|
|
429
|
+
const packageVersion = stableOptionalOriginText(origin.packageVersion);
|
|
430
|
+
const exportName = stableOptionalOriginText(origin.exportName);
|
|
431
|
+
if (moduleSpecifier === undefined && packageName === undefined && packageVersion === undefined && exportName === undefined)
|
|
432
|
+
return undefined;
|
|
433
|
+
return Object.freeze({
|
|
434
|
+
...(moduleSpecifier === undefined ? {} : { moduleSpecifier }),
|
|
435
|
+
...(packageName === undefined ? {} : { packageName }),
|
|
436
|
+
...(packageVersion === undefined ? {} : { packageVersion }),
|
|
437
|
+
...(exportName === undefined ? {} : { exportName }),
|
|
438
|
+
});
|
|
439
|
+
}
|
|
440
|
+
function canonicalRuntimeWitness(witness, moduleSpecifier) {
|
|
441
|
+
if (witness.moduleSpecifier !== moduleSpecifier)
|
|
442
|
+
throw new Error('External ModuleLoad witness must resolve the same module specifier');
|
|
443
|
+
assertKnown(PLATFORMS, witness.platform, 'module witness platform');
|
|
444
|
+
if (witness.runtimeFormat !== undefined)
|
|
445
|
+
assertKnown(RUNTIME_FORMATS, witness.runtimeFormat, 'module witness runtime format');
|
|
446
|
+
if (!Array.isArray(witness.conditions))
|
|
447
|
+
throw new Error('External module witness conditions must be an array');
|
|
448
|
+
const conditionValues = witness.conditions;
|
|
449
|
+
const conditions = Object.freeze([...new Set(conditionValues.map((condition) => stableProviderText(condition, 'module witness condition')))].sort(compareText));
|
|
450
|
+
const runtimeEntry = witness.runtimeEntry === undefined ? undefined : canonicalRuntimeEntry(witness.runtimeEntry);
|
|
451
|
+
assertRuntimeResolutionCoherence(moduleSpecifier, runtimeEntry, witness.runtimeFormat, witness.platform);
|
|
452
|
+
return Object.freeze({
|
|
453
|
+
moduleSpecifier,
|
|
454
|
+
...(witness.packageName === undefined ? {} : { packageName: stableProviderText(witness.packageName, 'runtime package name') }),
|
|
455
|
+
...(witness.packageVersion === undefined ? {} : { packageVersion: stableProviderText(witness.packageVersion, 'runtime package version') }),
|
|
456
|
+
...(runtimeEntry === undefined ? {} : { runtimeEntry }),
|
|
457
|
+
...(witness.runtimeFormat === undefined ? {} : { runtimeFormat: witness.runtimeFormat }),
|
|
458
|
+
conditions,
|
|
459
|
+
platform: witness.platform,
|
|
460
|
+
...(witness.packageJsonHash === undefined ? {} : { packageJsonHash: canonicalHash(witness.packageJsonHash, 'runtime package.json hash') }),
|
|
461
|
+
});
|
|
462
|
+
}
|
|
463
|
+
function sameRuntimeWitness(left, right) {
|
|
464
|
+
return left.moduleSpecifier === right.moduleSpecifier
|
|
465
|
+
&& left.packageName === right.packageName
|
|
466
|
+
&& left.packageVersion === right.packageVersion
|
|
467
|
+
&& left.runtimeEntry === right.runtimeEntry
|
|
468
|
+
&& left.runtimeFormat === right.runtimeFormat
|
|
469
|
+
&& left.platform === right.platform
|
|
470
|
+
&& left.packageJsonHash === right.packageJsonHash
|
|
471
|
+
&& left.conditions.length === right.conditions.length
|
|
472
|
+
&& left.conditions.every((condition, index) => condition === right.conditions[index]);
|
|
473
|
+
}
|
|
474
|
+
function assertBridgeMatchesForeignType(bridge, source) {
|
|
475
|
+
const matches = bridge === 'string' ? source.primitive === 'string'
|
|
476
|
+
: bridge === 'bool' ? source.primitive === 'boolean'
|
|
477
|
+
: bridge === 'float' ? source.primitive === 'number'
|
|
478
|
+
: bridge === 'bigint' ? source.primitive === 'bigint'
|
|
479
|
+
: bridge === 'unit' ? source.primitive === 'void'
|
|
480
|
+
: source.category === 'unknown';
|
|
481
|
+
if (!matches)
|
|
482
|
+
throw new Error('External primitive bridge evidence disagrees with foreign source facts');
|
|
483
|
+
}
|
|
484
|
+
function canonicalOperationAnchor(nodeId, span) {
|
|
485
|
+
if (!Number.isSafeInteger(nodeId))
|
|
486
|
+
throw new Error('External operation node id must be a safe integer');
|
|
487
|
+
return { nodeId, span: canonicalStableSourceSpan(span) };
|
|
488
|
+
}
|
|
489
|
+
function canonicalStableSourceSpan(span) {
|
|
490
|
+
return Object.freeze({ start: canonicalPosition(span.start), end: canonicalPosition(span.end) });
|
|
491
|
+
}
|
|
492
|
+
function canonicalPosition(position) {
|
|
493
|
+
if (!Number.isSafeInteger(position.offset) || position.offset < 0
|
|
494
|
+
|| !Number.isSafeInteger(position.line) || position.line < 1
|
|
495
|
+
|| !Number.isSafeInteger(position.column) || position.column < 1) {
|
|
496
|
+
throw new Error('External operation source span must contain valid integer positions');
|
|
497
|
+
}
|
|
498
|
+
return Object.freeze({ offset: position.offset, line: position.line, column: position.column });
|
|
499
|
+
}
|
|
500
|
+
function canonicalRuntimeEntry(value) {
|
|
501
|
+
stableProviderText(value, 'runtime entry');
|
|
502
|
+
if (value.includes('\\') || value.startsWith('/') || /^[A-Za-z]:[\\/]/u.test(value) || /^file:/iu.test(value)) {
|
|
503
|
+
throw new Error('External operation runtime entry must not contain an absolute or provider-private path');
|
|
504
|
+
}
|
|
505
|
+
const scheme = /^([A-Za-z][A-Za-z0-9+.-]*):/u.exec(value)?.[1];
|
|
506
|
+
if (scheme !== undefined) {
|
|
507
|
+
if (scheme !== 'node')
|
|
508
|
+
throw new Error(`External operation runtime entry uses unsupported scheme ${scheme}`);
|
|
509
|
+
const builtinSegments = value.slice('node:'.length).split('/');
|
|
510
|
+
if (builtinSegments.some(segment => segment.length === 0 || segment === '.' || segment === '..')) {
|
|
511
|
+
throw new Error('External operation runtime entry must be a canonical node builtin locator');
|
|
512
|
+
}
|
|
513
|
+
return value;
|
|
514
|
+
}
|
|
515
|
+
const segments = value.split('/');
|
|
516
|
+
if (segments.some(segment => segment.length === 0 || segment === '.' || segment === '..')) {
|
|
517
|
+
throw new Error('External operation runtime entry must be a canonical relative locator');
|
|
518
|
+
}
|
|
519
|
+
return value;
|
|
520
|
+
}
|
|
521
|
+
function assertRuntimeResolutionCoherence(moduleSpecifier, runtimeEntry, runtimeFormat, platform) {
|
|
522
|
+
const nodeBuiltinEntry = runtimeEntry?.startsWith('node:') ?? false;
|
|
523
|
+
const successfulRuntimeFormat = runtimeFormat === 'esm' || runtimeFormat === 'commonjs' || runtimeFormat === 'builtin';
|
|
524
|
+
if (runtimeFormat === 'commonjs' && platform !== 'node') {
|
|
525
|
+
throw new Error('External operation CommonJS runtime format requires the node platform');
|
|
526
|
+
}
|
|
527
|
+
if (moduleSpecifier.startsWith('node:') && runtimeEntry !== undefined && successfulRuntimeFormat
|
|
528
|
+
&& (runtimeFormat !== 'builtin' || platform !== 'node' || runtimeEntry !== moduleSpecifier)) {
|
|
529
|
+
throw new Error('External operation node: module specifier requires matching builtin runtime evidence');
|
|
530
|
+
}
|
|
531
|
+
if (nodeBuiltinEntry && (runtimeFormat !== 'builtin' || platform !== 'node')) {
|
|
532
|
+
throw new Error('External operation node builtin runtime entry requires builtin format on the node platform');
|
|
533
|
+
}
|
|
534
|
+
if (runtimeFormat === 'builtin' && runtimeEntry !== undefined) {
|
|
535
|
+
if (!nodeBuiltinEntry)
|
|
536
|
+
throw new Error('External operation builtin runtime format requires a node builtin runtime entry');
|
|
537
|
+
const expectedRuntimeEntry = moduleSpecifier.startsWith('node:') ? moduleSpecifier : `node:${moduleSpecifier}`;
|
|
538
|
+
if (runtimeEntry !== expectedRuntimeEntry) {
|
|
539
|
+
throw new Error('External operation builtin runtime entry must match the imported module specifier');
|
|
540
|
+
}
|
|
541
|
+
}
|
|
542
|
+
}
|
|
543
|
+
function stableOptionalOriginText(value) {
|
|
544
|
+
if (value === undefined || value.length === 0 || /\p{Cc}/u.test(value))
|
|
545
|
+
return undefined;
|
|
546
|
+
if (value.includes('\\') || value.startsWith('/') || /^[A-Za-z]:[\\/]/u.test(value) || /^file:/iu.test(value))
|
|
547
|
+
return undefined;
|
|
548
|
+
return value;
|
|
549
|
+
}
|
|
550
|
+
function stableProviderText(value, description) {
|
|
551
|
+
if (typeof value !== 'string' || value.length === 0)
|
|
552
|
+
throw new Error(`External operation ${description} must be a non-empty string`);
|
|
553
|
+
if (/\p{Cc}/u.test(value))
|
|
554
|
+
throw new Error(`External operation ${description} must not contain control characters`);
|
|
555
|
+
if (value.includes('\\') || value.startsWith('/') || /^[A-Za-z]:[\\/]/u.test(value) || /^file:/iu.test(value)) {
|
|
556
|
+
throw new Error(`External operation ${description} must not contain an absolute or provider-private path`);
|
|
557
|
+
}
|
|
558
|
+
return value;
|
|
559
|
+
}
|
|
560
|
+
function canonicalHash(value, description) {
|
|
561
|
+
if (!/^[0-9a-f]{64}$/u.test(value))
|
|
562
|
+
throw new Error(`External operation ${description} must be a lowercase SHA-256 digest`);
|
|
563
|
+
return value;
|
|
564
|
+
}
|
|
565
|
+
function freezeOperation(operation) {
|
|
566
|
+
return Object.freeze(operation);
|
|
567
|
+
}
|
|
568
|
+
function assertKnown(known, value, description) {
|
|
569
|
+
if (!known.includes(value))
|
|
570
|
+
throw new Error(`Unknown ${description}: ${String(value)}`);
|
|
571
|
+
}
|
|
572
|
+
function compareText(left, right) {
|
|
573
|
+
return left < right ? -1 : left > right ? 1 : 0;
|
|
574
|
+
}
|
|
575
|
+
//# sourceMappingURL=operation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operation.js","sourceRoot":"","sources":["../../../src/interop/operation.ts"],"names":[],"mappings":"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"}
|