@sunshaobei/dsh-workflow 0.0.0-stage → 2.1.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/README.md +43 -2
- package/cordis.patch.yml +17 -0
- package/lib/client.js +14708 -0
- package/lib/core.js +137 -0
- package/lib/engine-adapter.js +1387 -0
- package/lib/host-driver.js +298 -0
- package/lib/index.js +536 -0
- package/lib/projection.js +159 -0
- package/lib/registry.js +218 -0
- package/lib/session-records.js +54 -0
- package/lib/submission-commit.js +34 -0
- package/lib/world-driver.js +275 -0
- package/package.json +64 -4
- package/vendor/PROVENANCE.md +9 -0
- package/vendor/dynamic-workflow/analysis/actor-graph.d.ts +47 -0
- package/vendor/dynamic-workflow/analysis/actor-graph.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/actor-graph.js +95 -0
- package/vendor/dynamic-workflow/analysis/actor-models.d.ts +60 -0
- package/vendor/dynamic-workflow/analysis/actor-models.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/actor-models.js +208 -0
- package/vendor/dynamic-workflow/analysis/actor-names.d.ts +56 -0
- package/vendor/dynamic-workflow/analysis/actor-names.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/actor-names.js +155 -0
- package/vendor/dynamic-workflow/analysis/analyze.d.ts +63 -0
- package/vendor/dynamic-workflow/analysis/analyze.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/analyze.js +92 -0
- package/vendor/dynamic-workflow/analysis/array-methods.d.ts +21 -0
- package/vendor/dynamic-workflow/analysis/array-methods.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/array-methods.js +132 -0
- package/vendor/dynamic-workflow/analysis/artifact-types.d.ts +39 -0
- package/vendor/dynamic-workflow/analysis/artifact-types.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/artifact-types.js +114 -0
- package/vendor/dynamic-workflow/analysis/artifacts.d.ts +67 -0
- package/vendor/dynamic-workflow/analysis/artifacts.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/artifacts.js +263 -0
- package/vendor/dynamic-workflow/analysis/assign.d.ts +42 -0
- package/vendor/dynamic-workflow/analysis/assign.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/assign.js +287 -0
- package/vendor/dynamic-workflow/analysis/callbacks.d.ts +71 -0
- package/vendor/dynamic-workflow/analysis/callbacks.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/callbacks.js +133 -0
- package/vendor/dynamic-workflow/analysis/calls.d.ts +40 -0
- package/vendor/dynamic-workflow/analysis/calls.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/calls.js +495 -0
- package/vendor/dynamic-workflow/analysis/causality-graph-lanes.d.ts +25 -0
- package/vendor/dynamic-workflow/analysis/causality-graph-lanes.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/causality-graph-lanes.js +161 -0
- package/vendor/dynamic-workflow/analysis/causality-graph-types.d.ts +163 -0
- package/vendor/dynamic-workflow/analysis/causality-graph-types.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/causality-graph-types.js +8 -0
- package/vendor/dynamic-workflow/analysis/causality-graph.d.ts +39 -0
- package/vendor/dynamic-workflow/analysis/causality-graph.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/causality-graph.js +530 -0
- package/vendor/dynamic-workflow/analysis/causality-order-calls.d.ts +29 -0
- package/vendor/dynamic-workflow/analysis/causality-order-calls.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/causality-order-calls.js +266 -0
- package/vendor/dynamic-workflow/analysis/causality-order-functions.d.ts +26 -0
- package/vendor/dynamic-workflow/analysis/causality-order-functions.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/causality-order-functions.js +116 -0
- package/vendor/dynamic-workflow/analysis/causality-order-loops.d.ts +5 -0
- package/vendor/dynamic-workflow/analysis/causality-order-loops.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/causality-order-loops.js +148 -0
- package/vendor/dynamic-workflow/analysis/causality-order-settle.d.ts +39 -0
- package/vendor/dynamic-workflow/analysis/causality-order-settle.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/causality-order-settle.js +263 -0
- package/vendor/dynamic-workflow/analysis/causality-order-state.d.ts +110 -0
- package/vendor/dynamic-workflow/analysis/causality-order-state.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/causality-order-state.js +162 -0
- package/vendor/dynamic-workflow/analysis/causality-order-strands.d.ts +79 -0
- package/vendor/dynamic-workflow/analysis/causality-order-strands.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/causality-order-strands.js +154 -0
- package/vendor/dynamic-workflow/analysis/causality-order-types.d.ts +174 -0
- package/vendor/dynamic-workflow/analysis/causality-order-types.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/causality-order-types.js +1 -0
- package/vendor/dynamic-workflow/analysis/causality-order-walk.d.ts +17 -0
- package/vendor/dynamic-workflow/analysis/causality-order-walk.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/causality-order-walk.js +282 -0
- package/vendor/dynamic-workflow/analysis/causality-order.d.ts +60 -0
- package/vendor/dynamic-workflow/analysis/causality-order.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/causality-order.js +110 -0
- package/vendor/dynamic-workflow/analysis/causality-reduce.d.ts +60 -0
- package/vendor/dynamic-workflow/analysis/causality-reduce.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/causality-reduce.js +198 -0
- package/vendor/dynamic-workflow/analysis/classes.d.ts +47 -0
- package/vendor/dynamic-workflow/analysis/classes.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/classes.js +264 -0
- package/vendor/dynamic-workflow/analysis/constants.d.ts +35 -0
- package/vendor/dynamic-workflow/analysis/constants.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/constants.js +23 -0
- package/vendor/dynamic-workflow/analysis/control-flow.d.ts +26 -0
- package/vendor/dynamic-workflow/analysis/control-flow.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/control-flow.js +132 -0
- package/vendor/dynamic-workflow/analysis/core-json.d.ts +45 -0
- package/vendor/dynamic-workflow/analysis/core-json.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/core-json.js +49 -0
- package/vendor/dynamic-workflow/analysis/core.d.ts +194 -0
- package/vendor/dynamic-workflow/analysis/core.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/core.js +204 -0
- package/vendor/dynamic-workflow/analysis/domain.d.ts +269 -0
- package/vendor/dynamic-workflow/analysis/domain.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/domain.js +523 -0
- package/vendor/dynamic-workflow/analysis/facade-misuse.d.ts +56 -0
- package/vendor/dynamic-workflow/analysis/facade-misuse.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/facade-misuse.js +350 -0
- package/vendor/dynamic-workflow/analysis/fanout-cardinality.d.ts +11 -0
- package/vendor/dynamic-workflow/analysis/fanout-cardinality.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/fanout-cardinality.js +121 -0
- package/vendor/dynamic-workflow/analysis/flow-graph.d.ts +113 -0
- package/vendor/dynamic-workflow/analysis/flow-graph.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/flow-graph.js +411 -0
- package/vendor/dynamic-workflow/analysis/flow-phase.d.ts +28 -0
- package/vendor/dynamic-workflow/analysis/flow-phase.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/flow-phase.js +104 -0
- package/vendor/dynamic-workflow/analysis/flow-strands.d.ts +39 -0
- package/vendor/dynamic-workflow/analysis/flow-strands.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/flow-strands.js +47 -0
- package/vendor/dynamic-workflow/analysis/flow-tree.d.ts +35 -0
- package/vendor/dynamic-workflow/analysis/flow-tree.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/flow-tree.js +33 -0
- package/vendor/dynamic-workflow/analysis/graph.d.ts +5 -0
- package/vendor/dynamic-workflow/analysis/graph.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/graph.js +199 -0
- package/vendor/dynamic-workflow/analysis/handoff-graph.d.ts +48 -0
- package/vendor/dynamic-workflow/analysis/handoff-graph.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/handoff-graph.js +0 -0
- package/vendor/dynamic-workflow/analysis/heap-ops.d.ts +14 -0
- package/vendor/dynamic-workflow/analysis/heap-ops.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/heap-ops.js +70 -0
- package/vendor/dynamic-workflow/analysis/hole-id.d.ts +28 -0
- package/vendor/dynamic-workflow/analysis/hole-id.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/hole-id.js +41 -0
- package/vendor/dynamic-workflow/analysis/hole-sites.d.ts +32 -0
- package/vendor/dynamic-workflow/analysis/hole-sites.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/hole-sites.js +215 -0
- package/vendor/dynamic-workflow/analysis/hole-splice.d.ts +45 -0
- package/vendor/dynamic-workflow/analysis/hole-splice.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/hole-splice.js +100 -0
- package/vendor/dynamic-workflow/analysis/interpret.d.ts +26 -0
- package/vendor/dynamic-workflow/analysis/interpret.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/interpret.js +200 -0
- package/vendor/dynamic-workflow/analysis/literals.d.ts +18 -0
- package/vendor/dynamic-workflow/analysis/literals.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/literals.js +125 -0
- package/vendor/dynamic-workflow/analysis/mermaid.d.ts +60 -0
- package/vendor/dynamic-workflow/analysis/mermaid.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/mermaid.js +477 -0
- package/vendor/dynamic-workflow/analysis/patterns.d.ts +31 -0
- package/vendor/dynamic-workflow/analysis/patterns.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/patterns.js +94 -0
- package/vendor/dynamic-workflow/analysis/phase-graph.d.ts +47 -0
- package/vendor/dynamic-workflow/analysis/phase-graph.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/phase-graph.js +334 -0
- package/vendor/dynamic-workflow/analysis/phases.d.ts +24 -0
- package/vendor/dynamic-workflow/analysis/phases.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/phases.js +54 -0
- package/vendor/dynamic-workflow/analysis/promise-ops.d.ts +52 -0
- package/vendor/dynamic-workflow/analysis/promise-ops.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/promise-ops.js +123 -0
- package/vendor/dynamic-workflow/analysis/relays.d.ts +12 -0
- package/vendor/dynamic-workflow/analysis/relays.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/relays.js +78 -0
- package/vendor/dynamic-workflow/analysis/serialize.d.ts +125 -0
- package/vendor/dynamic-workflow/analysis/serialize.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/serialize.js +321 -0
- package/vendor/dynamic-workflow/analysis/site-phases.d.ts +32 -0
- package/vendor/dynamic-workflow/analysis/site-phases.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/site-phases.js +69 -0
- package/vendor/dynamic-workflow/analysis/sites-labels.d.ts +71 -0
- package/vendor/dynamic-workflow/analysis/sites-labels.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/sites-labels.js +189 -0
- package/vendor/dynamic-workflow/analysis/sites.d.ts +267 -0
- package/vendor/dynamic-workflow/analysis/sites.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/sites.js +225 -0
- package/vendor/dynamic-workflow/analysis/state.d.ts +254 -0
- package/vendor/dynamic-workflow/analysis/state.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/state.js +569 -0
- package/vendor/dynamic-workflow/analysis/taint.d.ts +97 -0
- package/vendor/dynamic-workflow/analysis/taint.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/taint.js +649 -0
- package/vendor/dynamic-workflow/analysis/types.d.ts +100 -0
- package/vendor/dynamic-workflow/analysis/types.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/types.js +1 -0
- package/vendor/dynamic-workflow/analysis/world-run.d.ts +27 -0
- package/vendor/dynamic-workflow/analysis/world-run.d.ts.map +1 -0
- package/vendor/dynamic-workflow/analysis/world-run.js +44 -0
- package/vendor/dynamic-workflow/compiler/compile.d.ts +59 -0
- package/vendor/dynamic-workflow/compiler/compile.d.ts.map +1 -0
- package/vendor/dynamic-workflow/compiler/compile.js +159 -0
- package/vendor/dynamic-workflow/compiler/libs.generated.d.ts +3 -0
- package/vendor/dynamic-workflow/compiler/libs.generated.d.ts.map +1 -0
- package/vendor/dynamic-workflow/compiler/libs.generated.js +64 -0
- package/vendor/dynamic-workflow/engine/artifact-spec.d.ts +26 -0
- package/vendor/dynamic-workflow/engine/artifact-spec.d.ts.map +1 -0
- package/vendor/dynamic-workflow/engine/artifact-spec.js +173 -0
- package/vendor/dynamic-workflow/engine/ask-observation-types.d.ts +54 -0
- package/vendor/dynamic-workflow/engine/ask-observation-types.d.ts.map +1 -0
- package/vendor/dynamic-workflow/engine/ask-observation-types.js +19 -0
- package/vendor/dynamic-workflow/engine/cached-ask-facts.d.ts +28 -0
- package/vendor/dynamic-workflow/engine/cached-ask-facts.d.ts.map +1 -0
- package/vendor/dynamic-workflow/engine/cached-ask-facts.js +35 -0
- package/vendor/dynamic-workflow/engine/concurrency.d.ts +151 -0
- package/vendor/dynamic-workflow/engine/concurrency.d.ts.map +1 -0
- package/vendor/dynamic-workflow/engine/concurrency.js +282 -0
- package/vendor/dynamic-workflow/engine/engine-artifacts-primary.d.ts +17 -0
- package/vendor/dynamic-workflow/engine/engine-artifacts-primary.d.ts.map +1 -0
- package/vendor/dynamic-workflow/engine/engine-artifacts-primary.js +29 -0
- package/vendor/dynamic-workflow/engine/engine-artifacts.d.ts +55 -0
- package/vendor/dynamic-workflow/engine/engine-artifacts.d.ts.map +1 -0
- package/vendor/dynamic-workflow/engine/engine-artifacts.js +367 -0
- package/vendor/dynamic-workflow/engine/engine-config.d.ts +90 -0
- package/vendor/dynamic-workflow/engine/engine-config.d.ts.map +1 -0
- package/vendor/dynamic-workflow/engine/engine-config.js +6 -0
- package/vendor/dynamic-workflow/engine/engine-holes.d.ts +116 -0
- package/vendor/dynamic-workflow/engine/engine-holes.d.ts.map +1 -0
- package/vendor/dynamic-workflow/engine/engine-holes.js +142 -0
- package/vendor/dynamic-workflow/engine/engine-launch.d.ts +34 -0
- package/vendor/dynamic-workflow/engine/engine-launch.d.ts.map +1 -0
- package/vendor/dynamic-workflow/engine/engine-launch.js +26 -0
- package/vendor/dynamic-workflow/engine/engine-phase-stamp.d.ts +35 -0
- package/vendor/dynamic-workflow/engine/engine-phase-stamp.d.ts.map +1 -0
- package/vendor/dynamic-workflow/engine/engine-phase-stamp.js +74 -0
- package/vendor/dynamic-workflow/engine/engine-report.d.ts +27 -0
- package/vendor/dynamic-workflow/engine/engine-report.d.ts.map +1 -0
- package/vendor/dynamic-workflow/engine/engine-report.js +151 -0
- package/vendor/dynamic-workflow/engine/engine-resume.d.ts +18 -0
- package/vendor/dynamic-workflow/engine/engine-resume.d.ts.map +1 -0
- package/vendor/dynamic-workflow/engine/engine-resume.js +38 -0
- package/vendor/dynamic-workflow/engine/engine-settlement.d.ts +30 -0
- package/vendor/dynamic-workflow/engine/engine-settlement.d.ts.map +1 -0
- package/vendor/dynamic-workflow/engine/engine-settlement.js +79 -0
- package/vendor/dynamic-workflow/engine/engine-state.d.ts +99 -0
- package/vendor/dynamic-workflow/engine/engine-state.d.ts.map +1 -0
- package/vendor/dynamic-workflow/engine/engine-state.js +13 -0
- package/vendor/dynamic-workflow/engine/engine-world.d.ts +36 -0
- package/vendor/dynamic-workflow/engine/engine-world.d.ts.map +1 -0
- package/vendor/dynamic-workflow/engine/engine-world.js +189 -0
- package/vendor/dynamic-workflow/engine/engine.d.ts +263 -0
- package/vendor/dynamic-workflow/engine/engine.d.ts.map +1 -0
- package/vendor/dynamic-workflow/engine/engine.js +602 -0
- package/vendor/dynamic-workflow/engine/errors.d.ts +87 -0
- package/vendor/dynamic-workflow/engine/errors.d.ts.map +1 -0
- package/vendor/dynamic-workflow/engine/errors.js +56 -0
- package/vendor/dynamic-workflow/engine/hash-mismatch.d.ts +10 -0
- package/vendor/dynamic-workflow/engine/hash-mismatch.d.ts.map +1 -0
- package/vendor/dynamic-workflow/engine/hash-mismatch.js +15 -0
- package/vendor/dynamic-workflow/engine/hash.d.ts +16 -0
- package/vendor/dynamic-workflow/engine/hash.d.ts.map +1 -0
- package/vendor/dynamic-workflow/engine/hash.js +48 -0
- package/vendor/dynamic-workflow/engine/imported-cache-types.d.ts +96 -0
- package/vendor/dynamic-workflow/engine/imported-cache-types.d.ts.map +1 -0
- package/vendor/dynamic-workflow/engine/imported-cache-types.js +6 -0
- package/vendor/dynamic-workflow/engine/imported-cache.d.ts +127 -0
- package/vendor/dynamic-workflow/engine/imported-cache.d.ts.map +1 -0
- package/vendor/dynamic-workflow/engine/imported-cache.js +244 -0
- package/vendor/dynamic-workflow/engine/index.d.ts +11 -0
- package/vendor/dynamic-workflow/engine/index.d.ts.map +1 -0
- package/vendor/dynamic-workflow/engine/index.js +10 -0
- package/vendor/dynamic-workflow/engine/journal-memory.d.ts +32 -0
- package/vendor/dynamic-workflow/engine/journal-memory.d.ts.map +1 -0
- package/vendor/dynamic-workflow/engine/journal-memory.js +243 -0
- package/vendor/dynamic-workflow/engine/journal-read-types.d.ts +72 -0
- package/vendor/dynamic-workflow/engine/journal-read-types.d.ts.map +1 -0
- package/vendor/dynamic-workflow/engine/journal-read-types.js +28 -0
- package/vendor/dynamic-workflow/engine/persona.d.ts +20 -0
- package/vendor/dynamic-workflow/engine/persona.d.ts.map +1 -0
- package/vendor/dynamic-workflow/engine/persona.js +43 -0
- package/vendor/dynamic-workflow/engine/replay-order.d.ts +96 -0
- package/vendor/dynamic-workflow/engine/replay-order.d.ts.map +1 -0
- package/vendor/dynamic-workflow/engine/replay-order.js +229 -0
- package/vendor/dynamic-workflow/engine/run-terminal.d.ts +35 -0
- package/vendor/dynamic-workflow/engine/run-terminal.d.ts.map +1 -0
- package/vendor/dynamic-workflow/engine/run-terminal.js +7 -0
- package/vendor/dynamic-workflow/engine/scheduler-submit.d.ts +22 -0
- package/vendor/dynamic-workflow/engine/scheduler-submit.d.ts.map +1 -0
- package/vendor/dynamic-workflow/engine/scheduler-submit.js +84 -0
- package/vendor/dynamic-workflow/engine/scheduler-types.d.ts +105 -0
- package/vendor/dynamic-workflow/engine/scheduler-types.d.ts.map +1 -0
- package/vendor/dynamic-workflow/engine/scheduler-types.js +17 -0
- package/vendor/dynamic-workflow/engine/scheduler.d.ts +113 -0
- package/vendor/dynamic-workflow/engine/scheduler.d.ts.map +1 -0
- package/vendor/dynamic-workflow/engine/scheduler.js +484 -0
- package/vendor/dynamic-workflow/engine/types.d.ts +979 -0
- package/vendor/dynamic-workflow/engine/types.d.ts.map +1 -0
- package/vendor/dynamic-workflow/engine/types.js +26 -0
- package/vendor/dynamic-workflow/engine/world-read-input.d.ts +10 -0
- package/vendor/dynamic-workflow/engine/world-read-input.d.ts.map +1 -0
- package/vendor/dynamic-workflow/engine/world-read-input.js +55 -0
- package/vendor/dynamic-workflow/facade/artifact-caps.d.ts +48 -0
- package/vendor/dynamic-workflow/facade/artifact-caps.d.ts.map +1 -0
- package/vendor/dynamic-workflow/facade/artifact-caps.js +47 -0
- package/vendor/dynamic-workflow/facade/dts-hole.d.ts +16 -0
- package/vendor/dynamic-workflow/facade/dts-hole.d.ts.map +1 -0
- package/vendor/dynamic-workflow/facade/dts-hole.js +26 -0
- package/vendor/dynamic-workflow/facade/dts-model.d.ts +11 -0
- package/vendor/dynamic-workflow/facade/dts-model.d.ts.map +1 -0
- package/vendor/dynamic-workflow/facade/dts-model.js +18 -0
- package/vendor/dynamic-workflow/facade/dts-stream.d.ts +15 -0
- package/vendor/dynamic-workflow/facade/dts-stream.d.ts.map +1 -0
- package/vendor/dynamic-workflow/facade/dts-stream.js +41 -0
- package/vendor/dynamic-workflow/facade/dts.d.ts +29 -0
- package/vendor/dynamic-workflow/facade/dts.d.ts.map +1 -0
- package/vendor/dynamic-workflow/facade/dts.js +324 -0
- package/vendor/dynamic-workflow/facade/registry.d.ts +218 -0
- package/vendor/dynamic-workflow/facade/registry.d.ts.map +1 -0
- package/vendor/dynamic-workflow/facade/registry.js +203 -0
- package/vendor/dynamic-workflow/facade/report-caps.d.ts +40 -0
- package/vendor/dynamic-workflow/facade/report-caps.d.ts.map +1 -0
- package/vendor/dynamic-workflow/facade/report-caps.js +39 -0
- package/vendor/dynamic-workflow/facade/world-read-caps.d.ts +37 -0
- package/vendor/dynamic-workflow/facade/world-read-caps.d.ts.map +1 -0
- package/vendor/dynamic-workflow/facade/world-read-caps.js +36 -0
- package/vendor/dynamic-workflow/index.d.ts +41 -0
- package/vendor/dynamic-workflow/index.d.ts.map +1 -0
- package/vendor/dynamic-workflow/index.js +51 -0
- package/vendor/dynamic-workflow/lowering/index.d.ts +2 -0
- package/vendor/dynamic-workflow/lowering/index.d.ts.map +1 -0
- package/vendor/dynamic-workflow/lowering/index.js +1 -0
- package/vendor/dynamic-workflow/lowering/lower-hole.d.ts +16 -0
- package/vendor/dynamic-workflow/lowering/lower-hole.d.ts.map +1 -0
- package/vendor/dynamic-workflow/lowering/lower-hole.js +63 -0
- package/vendor/dynamic-workflow/lowering/lower.d.ts +82 -0
- package/vendor/dynamic-workflow/lowering/lower.d.ts.map +1 -0
- package/vendor/dynamic-workflow/lowering/lower.js +333 -0
- package/vendor/dynamic-workflow/projections.d.ts +26 -0
- package/vendor/dynamic-workflow/projections.d.ts.map +1 -0
- package/vendor/dynamic-workflow/projections.js +23 -0
- package/vendor/dynamic-workflow/schema/actor-submit-profiles.d.ts +49 -0
- package/vendor/dynamic-workflow/schema/actor-submit-profiles.d.ts.map +1 -0
- package/vendor/dynamic-workflow/schema/actor-submit-profiles.js +69 -0
- package/vendor/dynamic-workflow/schema/emit.d.ts +55 -0
- package/vendor/dynamic-workflow/schema/emit.d.ts.map +1 -0
- package/vendor/dynamic-workflow/schema/emit.js +325 -0
- package/vendor/dynamic-workflow/schema/jsdoc.d.ts +10 -0
- package/vendor/dynamic-workflow/schema/jsdoc.d.ts.map +1 -0
- package/vendor/dynamic-workflow/schema/jsdoc.js +83 -0
- package/vendor/dynamic-workflow/schema/serialize.d.ts +8 -0
- package/vendor/dynamic-workflow/schema/serialize.d.ts.map +1 -0
- package/vendor/dynamic-workflow/schema/serialize.js +20 -0
- package/vendor/dynamic-workflow/schema/synthesize.d.ts +48 -0
- package/vendor/dynamic-workflow/schema/synthesize.d.ts.map +1 -0
- package/vendor/dynamic-workflow/schema/synthesize.js +138 -0
- package/vendor/dynamic-workflow/schema/types.d.ts +67 -0
- package/vendor/dynamic-workflow/schema/types.d.ts.map +1 -0
- package/vendor/dynamic-workflow/schema/types.js +18 -0
- package/vendor/dynamic-workflow/schema/validate.d.ts +15 -0
- package/vendor/dynamic-workflow/schema/validate.d.ts.map +1 -0
- package/vendor/dynamic-workflow/schema/validate.js +213 -0
- package/vendor/dynamic-workflow/testing/index.d.ts +6 -0
- package/vendor/dynamic-workflow/testing/index.d.ts.map +1 -0
- package/vendor/dynamic-workflow/testing/index.js +5 -0
- package/vendor/dynamic-workflow/testing/journal-contract-artifacts.d.ts +9 -0
- package/vendor/dynamic-workflow/testing/journal-contract-artifacts.d.ts.map +1 -0
- package/vendor/dynamic-workflow/testing/journal-contract-artifacts.js +195 -0
- package/vendor/dynamic-workflow/testing/journal-contract-events.d.ts +9 -0
- package/vendor/dynamic-workflow/testing/journal-contract-events.d.ts.map +1 -0
- package/vendor/dynamic-workflow/testing/journal-contract-events.js +163 -0
- package/vendor/dynamic-workflow/testing/journal-contract-helpers.d.ts +9 -0
- package/vendor/dynamic-workflow/testing/journal-contract-helpers.d.ts.map +1 -0
- package/vendor/dynamic-workflow/testing/journal-contract-helpers.js +12 -0
- package/vendor/dynamic-workflow/testing/journal-contract-isolation.d.ts +9 -0
- package/vendor/dynamic-workflow/testing/journal-contract-isolation.d.ts.map +1 -0
- package/vendor/dynamic-workflow/testing/journal-contract-isolation.js +46 -0
- package/vendor/dynamic-workflow/testing/journal-contract-nodes.d.ts +9 -0
- package/vendor/dynamic-workflow/testing/journal-contract-nodes.d.ts.map +1 -0
- package/vendor/dynamic-workflow/testing/journal-contract-nodes.js +234 -0
- package/vendor/dynamic-workflow/testing/journal-contract-reads.d.ts +11 -0
- package/vendor/dynamic-workflow/testing/journal-contract-reads.d.ts.map +1 -0
- package/vendor/dynamic-workflow/testing/journal-contract-reads.js +281 -0
- package/vendor/dynamic-workflow/testing/journal-contract-runs.d.ts +9 -0
- package/vendor/dynamic-workflow/testing/journal-contract-runs.d.ts.map +1 -0
- package/vendor/dynamic-workflow/testing/journal-contract-runs.js +396 -0
- package/vendor/dynamic-workflow/testing/journal-contract-script.d.ts +12 -0
- package/vendor/dynamic-workflow/testing/journal-contract-script.d.ts.map +1 -0
- package/vendor/dynamic-workflow/testing/journal-contract-script.js +82 -0
- package/vendor/dynamic-workflow/testing/journal-contract.d.ts +15 -0
- package/vendor/dynamic-workflow/testing/journal-contract.d.ts.map +1 -0
- package/vendor/dynamic-workflow/testing/journal-contract.js +31 -0
- package/vendor/dynamic-workflow-runtime/child-cell-streams.js +128 -0
- package/vendor/dynamic-workflow-runtime/child-entry-file.js +43 -0
- package/vendor/dynamic-workflow-runtime/child-source.js +299 -0
- package/vendor/dynamic-workflow-runtime/harness.js +302 -0
- package/vendor/dynamic-workflow-runtime/index.js +4 -0
- package/vendor/dynamic-workflow-runtime/protocol.js +2 -0
- package/vendor/mcode-host/dynamic-workflow-import.js +269 -0
- package/vendor/mcode-host/workflow-git-world-read.js +183 -0
- package/vendor/mcode-host/workflow-world-read.js +282 -0
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
import ts from "typescript";
|
|
2
|
+
import { callbackSemanticsOf, DEFAULT_CALLBACK_SEMANTICS } from "./callbacks.js";
|
|
3
|
+
import { functionName, resolveCallDeclaration, } from "./causality-order-functions.js";
|
|
4
|
+
import { applicationsAt, innermost, issue, issuesSince, jump, locOf, openRegion, } from "./causality-order-state.js";
|
|
5
|
+
import { barrier, settlesAt } from "./causality-order-settle.js";
|
|
6
|
+
import { closeStrand, isAsyncFunction, openStrand, } from "./causality-order-strands.js";
|
|
7
|
+
// causality-order.ts 顶到 oxlint max-lines 上限(400 行),把调用这一组(调用表达式
|
|
8
|
+
// 的访问器、通用调用规则 applyAt、函数体内联 inlineBody)拆到本文件;公开面仍从
|
|
9
|
+
// causality-order.ts 导出。递归回 walk 一律经 `state.walk`,本文件不 import walk 模块。
|
|
10
|
+
export function walkCall(state, node, chain) {
|
|
11
|
+
const { walk } = state;
|
|
12
|
+
// Receiver and arguments first, then the call itself — JavaScript's own order. (A
|
|
13
|
+
// function-like argument is deferred by `walk` itself: its body runs when applied.)
|
|
14
|
+
const receiverMark = state.events.length;
|
|
15
|
+
walk(node.expression, chain);
|
|
16
|
+
const receiverIssues = issuesSince(state, receiverMark);
|
|
17
|
+
for (const argument of node.arguments)
|
|
18
|
+
walk(argument, chain);
|
|
19
|
+
// A per-element callback call: the body runs once per element, inside a `fanout`.
|
|
20
|
+
const handled = new Set();
|
|
21
|
+
const cand = state.candByCall.get(node);
|
|
22
|
+
if (cand !== undefined) {
|
|
23
|
+
// An `async` literal callback makes the FAN-OUT the strand: every element's activation
|
|
24
|
+
// runs alongside the main line, and only a later await of the mapped array joins them.
|
|
25
|
+
// A named callback (`xs.map(review)`) inlines as a `call` inside the fan-out, and that
|
|
26
|
+
// `call` is the strand when `review` is async — {@link inlineBody} decides it there.
|
|
27
|
+
const strand = cand.callback !== undefined && isAsyncFunction(cand.callback);
|
|
28
|
+
const id = openRegion(state, "fanout", innermost(state, chain), {
|
|
29
|
+
entered: false,
|
|
30
|
+
label: cand.method,
|
|
31
|
+
loc: cand.loc,
|
|
32
|
+
...(strand ? { strand: true } : {}),
|
|
33
|
+
});
|
|
34
|
+
const inside = [...chain, id];
|
|
35
|
+
if (cand.callback !== undefined) {
|
|
36
|
+
const record = strand ? openStrand(state, id) : undefined;
|
|
37
|
+
// A `return` in the literal ends THIS element's iteration: it targets the fanout.
|
|
38
|
+
state.returnTargets.push(id);
|
|
39
|
+
walk(cand.body, inside);
|
|
40
|
+
state.returnTargets.pop();
|
|
41
|
+
if (record !== undefined)
|
|
42
|
+
closeStrand(state, record);
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
// A named / held callback: the oracle's argument applications, each an inlined call.
|
|
46
|
+
for (const fn of applicationsAt(state, node, "argument")) {
|
|
47
|
+
handled.add(fn);
|
|
48
|
+
inlineBody(state, fn, inside, node);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
const ask = state.askByCall.get(node);
|
|
53
|
+
if (ask !== undefined) {
|
|
54
|
+
issue(state, ask, chain);
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
const hole = state.holeByCall.get(node);
|
|
58
|
+
if (hole !== undefined) {
|
|
59
|
+
walkHole(state, node, hole, chain);
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
const read = state.readByCall.get(node);
|
|
63
|
+
if (read !== undefined) {
|
|
64
|
+
issue(state, read, chain);
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
const actor = state.actorByCall.get(node);
|
|
68
|
+
if (actor !== undefined) {
|
|
69
|
+
state.events.push({ actor, at: "actor", phase: state.currentPhase, regions: chain });
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
applyAt(state, node, chain, handled, receiverIssues);
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* THE GENERIC CALL RULE: apply what the oracle recorded at this node.
|
|
76
|
+
*
|
|
77
|
+
* - Callee applications inline the body as a `call` region (the helper's boundary, a
|
|
78
|
+
* `return` target). Several candidates (an indirect dispatch that may reach any of
|
|
79
|
+
* them) become the arms of one exhaustive `choice`: exactly one runs, we cannot say
|
|
80
|
+
* which. With no oracle record the checker's resolved declaration is the fallback — a
|
|
81
|
+
* value the interpreter could not track still has a syntactic answer.
|
|
82
|
+
* - Argument applications are callbacks a library may invoke, per the registry: `once`
|
|
83
|
+
* (the default) inlines the body as a `call`; when the library does not provably invoke
|
|
84
|
+
* it (`.then`, an unknown callee) the call sits in a one-arm skippable `choice` — the
|
|
85
|
+
* exact shape of an `if` without `else`, so certainty and the control-flow picture read
|
|
86
|
+
* "may not run" through the vocabulary they already have. `each` callbacks are handled
|
|
87
|
+
* by {@link walkCall} (their fanout) and arrive here in `handled`.
|
|
88
|
+
* - A DEFERRED callback (`.then` / `.catch` / `.finally`, a timer) runs after its receiver
|
|
89
|
+
* settles, so it is a STRAND whose PROLOGUE is an ordinary barrier over the receiver:
|
|
90
|
+
* the steps issued while evaluating the receiver (`receiverIssues`, the syntactic half)
|
|
91
|
+
* plus the oracle's claim keyed by the member-name token (see calls.ts), split by the
|
|
92
|
+
* settle-certainty rule like any other await. It needs no special certainty any more:
|
|
93
|
+
* the barrier runs inside the strand's own frame, so it orders the continuation's body
|
|
94
|
+
* without asserting anything about steps the MAIN LINE issues afterwards, and without
|
|
95
|
+
* robbing the main line's later `await` of its own certain settle. That scoping is what
|
|
96
|
+
* `settleLocally`'s may-claim used to approximate.
|
|
97
|
+
*/
|
|
98
|
+
export function applyAt(state, node, chain, handled = new Set(), receiverIssues = []) {
|
|
99
|
+
const { checker, program, scriptFile } = state;
|
|
100
|
+
const callees = applicationsAt(state, node, "callee").filter((fn) => !handled.has(fn));
|
|
101
|
+
if (callees.length === 0 && ts.isCallExpression(node)) {
|
|
102
|
+
const decl = resolveCallDeclaration(node, checker, scriptFile);
|
|
103
|
+
if (decl !== undefined)
|
|
104
|
+
callees.push(decl);
|
|
105
|
+
}
|
|
106
|
+
if (callees.length === 1) {
|
|
107
|
+
inlineBody(state, callees[0], chain, node);
|
|
108
|
+
}
|
|
109
|
+
else if (callees.length > 1) {
|
|
110
|
+
const choice = openRegion(state, "choice", innermost(state, chain), {
|
|
111
|
+
entered: true,
|
|
112
|
+
exhaustive: true,
|
|
113
|
+
loc: locOf(state, node),
|
|
114
|
+
});
|
|
115
|
+
for (const fn of callees) {
|
|
116
|
+
const arm = openRegion(state, "branch", choice, { entered: false, loc: locOf(state, fn) });
|
|
117
|
+
inlineBody(state, fn, [...chain, choice, arm], node);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
const callbacks = applicationsAt(state, node, "argument").filter((fn) => !handled.has(fn));
|
|
121
|
+
if (callbacks.length === 0)
|
|
122
|
+
return;
|
|
123
|
+
const semantics = ts.isTaggedTemplateExpression(node)
|
|
124
|
+
? undefined
|
|
125
|
+
: callbackSemanticsOf(node, checker, program);
|
|
126
|
+
const entered = semantics?.entered ?? DEFAULT_CALLBACK_SEMANTICS.entered;
|
|
127
|
+
const access = semantics?.deferred === true &&
|
|
128
|
+
ts.isCallExpression(node) &&
|
|
129
|
+
ts.isPropertyAccessExpression(node.expression)
|
|
130
|
+
? node.expression
|
|
131
|
+
: undefined;
|
|
132
|
+
const prologue = access === undefined
|
|
133
|
+
? undefined
|
|
134
|
+
: (inside) => {
|
|
135
|
+
const claim = settlesAt(state, node, access.name.getStart(scriptFile));
|
|
136
|
+
barrier(state, [...receiverIssues, ...claim.certain], claim.maybe, inside);
|
|
137
|
+
};
|
|
138
|
+
const options = {
|
|
139
|
+
label: semantics?.label,
|
|
140
|
+
prologue,
|
|
141
|
+
...(semantics?.deferred === true ? { strand: true } : {}),
|
|
142
|
+
};
|
|
143
|
+
for (const fn of callbacks) {
|
|
144
|
+
if (entered) {
|
|
145
|
+
inlineBody(state, fn, chain, node, options);
|
|
146
|
+
continue;
|
|
147
|
+
}
|
|
148
|
+
const choice = openRegion(state, "choice", innermost(state, chain), {
|
|
149
|
+
entered: true,
|
|
150
|
+
loc: locOf(state, node),
|
|
151
|
+
});
|
|
152
|
+
const arm = openRegion(state, "branch", choice, { entered: false, loc: locOf(state, fn) });
|
|
153
|
+
inlineBody(state, fn, [...chain, choice, arm], node, options);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* 留白在时序走查里的样子(docs/analysis.md「Sites」的 Hole sites 段)。
|
|
158
|
+
*
|
|
159
|
+
* **开放的留白是一步,也是一个阶段。** 一步:`issue` 一次,落在它**所站的**阶段里(当前阶段),
|
|
160
|
+
* 于是 await 屏障、settle、控制依赖对它与对 ask 一视同仁。一个阶段:id 就是站点 id、名字是
|
|
161
|
+
* 字面量,**没有成员**——它只是一个站,轨道要在 run 之前就画出来。为了让它出现在控制流投影
|
|
162
|
+
* 的阶段表上并接上前后的边,走查在 issue 之后发一条 `mark`:先 issue 再 mark,于是商图里
|
|
163
|
+
* 是「所站阶段 → 留白 → 下一阶段」而不是一次回到所站阶段的往返。
|
|
164
|
+
*
|
|
165
|
+
* **已补全的留白不是一步,只是一个阶段。** 它的阶段认领函数体里第一个标记之前的站点;体内
|
|
166
|
+
* 的标记是站在它之后的阶段,各自带 `fill` 指回这个留白;留白自己的阶段带的 `fill` 是**包着
|
|
167
|
+
* 它的**留白(顶层没有)——嵌套关系只记在这里,id 里没有(hole-id.ts)。
|
|
168
|
+
*
|
|
169
|
+
* 它的阶段还有一个 mark 节点,与开放的留白一样。修复原因:2026-09-28 之前已补全的留白没有
|
|
170
|
+
* mark,函数体以 `phase()` 开头时留白自己的阶段没有成员,控制流投影就把它丢了——接龙的每一步
|
|
171
|
+
* 名字因此从阶段表、侧栏与 run 的 `phaseNames` 里消失,只剩时间轴的头还叫得出它。
|
|
172
|
+
*
|
|
173
|
+
* 函数体像 `future` 的一样是一个进入过的、once 的、不延迟的回调——taint 解释器把它记成调用点
|
|
174
|
+
* 上的 `argument` 应用,这里照神谕内联;它是 async 的,所以是一条 strand,外面的 `await` 在
|
|
175
|
+
* 屏障处 join 它。
|
|
176
|
+
*/
|
|
177
|
+
function walkHole(state, node, site, chain) {
|
|
178
|
+
const name = site.name ?? site.id;
|
|
179
|
+
const enclosing = state.fillStack[state.fillStack.length - 1];
|
|
180
|
+
if (site.body === undefined) {
|
|
181
|
+
issue(state, site.id, chain);
|
|
182
|
+
mintHolePhase(state, site, name, enclosing);
|
|
183
|
+
state.events.push({ at: "mark", phase: site.id, regions: chain });
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
mintHolePhase(state, site, name, enclosing);
|
|
187
|
+
state.events.push({ at: "mark", phase: site.id, regions: chain });
|
|
188
|
+
const outer = state.currentPhase;
|
|
189
|
+
state.currentPhase = site.id;
|
|
190
|
+
state.fillStack.push(site.id);
|
|
191
|
+
for (const fn of applicationsAt(state, node, "argument")) {
|
|
192
|
+
inlineBody(state, fn, chain, node, { label: name });
|
|
193
|
+
}
|
|
194
|
+
state.fillStack.pop();
|
|
195
|
+
state.currentPhase = outer;
|
|
196
|
+
}
|
|
197
|
+
/** 留白的阶段按首次到达铸一次(helper 里的留白每次调用都到达,阶段只有一个)。 */
|
|
198
|
+
function mintHolePhase(state, site, name, fill) {
|
|
199
|
+
if (state.holePhases.has(site.id))
|
|
200
|
+
return;
|
|
201
|
+
state.holePhases.add(site.id);
|
|
202
|
+
state.phases.push({ id: site.id, loc: site.loc, name, ...(fill === undefined ? {} : { fill }) });
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Inline one function body at a site: the `call` region (positioned at the SITE — it is
|
|
206
|
+
* this occurrence, not the declaration), inside a `loop` region when the function is
|
|
207
|
+
* recursive, with re-entry cut to a `recur` jump.
|
|
208
|
+
*
|
|
209
|
+
* The body is a STRAND when the applied function is `async` or the caller forces it (a
|
|
210
|
+
* deferred callback): it then gets a frame of its own, so the `await`s inside it suspend
|
|
211
|
+
* this activation and settle nothing for the spawner — which is the JavaScript semantics
|
|
212
|
+
* the single global settled set used to flatten.
|
|
213
|
+
*/
|
|
214
|
+
function inlineBody(state, decl, chain, site, options = {}) {
|
|
215
|
+
const { fnStack, sccLoopByDecl } = state;
|
|
216
|
+
const { label, prologue } = options;
|
|
217
|
+
if (fnStack.includes(decl)) {
|
|
218
|
+
// Recursion: the enclosing `loop` region carries it; the re-entrant call itself is a
|
|
219
|
+
// back edge to that loop for the control-flow projection.
|
|
220
|
+
const loop = sccLoopByDecl.get(decl);
|
|
221
|
+
if (loop !== undefined)
|
|
222
|
+
jump(state, "recur", loop, chain);
|
|
223
|
+
return;
|
|
224
|
+
}
|
|
225
|
+
const name = functionName(decl) ?? label;
|
|
226
|
+
const strand = options.strand === true || isAsyncFunction(decl);
|
|
227
|
+
let inside = chain;
|
|
228
|
+
let sccLoop;
|
|
229
|
+
if (state.recursive.has(decl)) {
|
|
230
|
+
// A call-graph SCC containing a step is a `loop` region, never unrolled.
|
|
231
|
+
sccLoop = openRegion(state, "loop", innermost(state, chain), {
|
|
232
|
+
entered: true,
|
|
233
|
+
loc: locOf(state, decl),
|
|
234
|
+
recursive: true,
|
|
235
|
+
...(name === undefined ? {} : { label: name }),
|
|
236
|
+
});
|
|
237
|
+
inside = [...inside, sccLoop];
|
|
238
|
+
}
|
|
239
|
+
// The inlined body is a `call` region: the helper's boundary, which a `return` inside
|
|
240
|
+
// it targets.
|
|
241
|
+
const call = openRegion(state, "call", innermost(state, inside), {
|
|
242
|
+
entered: true,
|
|
243
|
+
loc: locOf(state, site),
|
|
244
|
+
...(name === undefined ? {} : { label: name }),
|
|
245
|
+
...(strand ? { strand: true } : {}),
|
|
246
|
+
});
|
|
247
|
+
inside = [...inside, call];
|
|
248
|
+
const record = strand ? openStrand(state, call) : undefined;
|
|
249
|
+
if (prologue !== undefined)
|
|
250
|
+
prologue(inside);
|
|
251
|
+
fnStack.push(decl);
|
|
252
|
+
state.walkedFns.add(decl);
|
|
253
|
+
const outerSccLoop = sccLoopByDecl.get(decl);
|
|
254
|
+
if (sccLoop !== undefined)
|
|
255
|
+
sccLoopByDecl.set(decl, sccLoop);
|
|
256
|
+
state.returnTargets.push(call);
|
|
257
|
+
state.walk(decl.body, inside);
|
|
258
|
+
state.returnTargets.pop();
|
|
259
|
+
if (outerSccLoop === undefined)
|
|
260
|
+
sccLoopByDecl.delete(decl);
|
|
261
|
+
else
|
|
262
|
+
sccLoopByDecl.set(decl, outerSccLoop);
|
|
263
|
+
fnStack.pop();
|
|
264
|
+
if (record !== undefined)
|
|
265
|
+
closeStrand(state, record);
|
|
266
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import ts from "typescript";
|
|
2
|
+
import type { ApplicationVia } from "./state.js";
|
|
3
|
+
export type ScriptFunction = ts.SignatureDeclaration & {
|
|
4
|
+
body: ts.Node;
|
|
5
|
+
};
|
|
6
|
+
/** Identifiers a binding name introduces (an identifier, or every leaf of a pattern). */
|
|
7
|
+
export declare function boundIdentifiers(name: ts.BindingName): ts.Identifier[];
|
|
8
|
+
export declare function asScriptFunction(node: ts.Node, scriptFile: ts.SourceFile): ScriptFunction | undefined;
|
|
9
|
+
/** The function-like ancestors of a node, innermost first. */
|
|
10
|
+
export declare function enclosingFunctions(node: ts.Node): ScriptFunction[];
|
|
11
|
+
export declare function functionName(decl: ts.Node): string | undefined;
|
|
12
|
+
/**
|
|
13
|
+
* The script-local function a call resolves to. `getResolvedSignature` handles the
|
|
14
|
+
* hard shapes (methods, overloads, aliased consts) in one hop; anything outside the
|
|
15
|
+
* authored file (the facade, the stdlib) is not inlinable.
|
|
16
|
+
*/
|
|
17
|
+
export declare function resolveCallDeclaration(call: ts.CallExpression, checker: ts.TypeChecker, scriptFile: ts.SourceFile): ScriptFunction | undefined;
|
|
18
|
+
/**
|
|
19
|
+
* Script-local functions that can reach themselves in the call graph — the SCCs the analysis turns into `loop` regions instead of unrolling. Callees are the union of the
|
|
20
|
+
* checker's resolved declarations and the call oracle's applications (both vias: a
|
|
21
|
+
* function handed to a library that hands it back is a cycle too). Nested function bodies
|
|
22
|
+
* count as their owner's callees, which over-approximates cycles; over-approximating here
|
|
23
|
+
* only costs a `loop` region, while under-approximating would unroll forever.
|
|
24
|
+
*/
|
|
25
|
+
export declare function collectRecursiveFunctions(scriptFile: ts.SourceFile, checker: ts.TypeChecker, applications: ReadonlyMap<ts.Node, ReadonlyMap<ts.Node, ApplicationVia>>): Set<ts.Node>;
|
|
26
|
+
//# sourceMappingURL=causality-order-functions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"causality-order-functions.d.ts","sourceRoot":"","sources":["../../src/analysis/causality-order-functions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAE5B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAMjD,MAAM,MAAM,cAAc,GAAG,EAAE,CAAC,oBAAoB,GAAG;IAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAA;CAAE,CAAC;AAEzE,yFAAyF;AACzF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,GAAG,EAAE,CAAC,UAAU,EAAE,CAQtE;AAED,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,EAAE,CAAC,IAAI,EACb,UAAU,EAAE,EAAE,CAAC,UAAU,GACxB,cAAc,GAAG,SAAS,CAK5B;AAED,8DAA8D;AAC9D,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,cAAc,EAAE,CAQlE;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,MAAM,GAAG,SAAS,CAa9D;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,EAAE,CAAC,cAAc,EACvB,OAAO,EAAE,EAAE,CAAC,WAAW,EACvB,UAAU,EAAE,EAAE,CAAC,UAAU,GACxB,cAAc,GAAG,SAAS,CAI5B;AAED;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,EAAE,CAAC,UAAU,EACzB,OAAO,EAAE,EAAE,CAAC,WAAW,EACvB,YAAY,EAAE,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,GACvE,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAiDd"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import ts from "typescript";
|
|
2
|
+
import { isFunctionLike } from "./sites.js";
|
|
3
|
+
/** Identifiers a binding name introduces (an identifier, or every leaf of a pattern). */
|
|
4
|
+
export function boundIdentifiers(name) {
|
|
5
|
+
if (ts.isIdentifier(name))
|
|
6
|
+
return [name];
|
|
7
|
+
const out = [];
|
|
8
|
+
for (const element of name.elements) {
|
|
9
|
+
if (ts.isOmittedExpression(element))
|
|
10
|
+
continue;
|
|
11
|
+
out.push(...boundIdentifiers(element.name));
|
|
12
|
+
}
|
|
13
|
+
return out;
|
|
14
|
+
}
|
|
15
|
+
export function asScriptFunction(node, scriptFile) {
|
|
16
|
+
if (!isFunctionLike(node))
|
|
17
|
+
return undefined;
|
|
18
|
+
if (node.getSourceFile() !== scriptFile)
|
|
19
|
+
return undefined;
|
|
20
|
+
const body = node.body;
|
|
21
|
+
return body === undefined ? undefined : node;
|
|
22
|
+
}
|
|
23
|
+
/** The function-like ancestors of a node, innermost first. */
|
|
24
|
+
export function enclosingFunctions(node) {
|
|
25
|
+
const scriptFile = node.getSourceFile();
|
|
26
|
+
const out = [];
|
|
27
|
+
for (let current = node.parent; current !== undefined; current = current.parent) {
|
|
28
|
+
const fn = asScriptFunction(current, scriptFile);
|
|
29
|
+
if (fn !== undefined)
|
|
30
|
+
out.push(fn);
|
|
31
|
+
}
|
|
32
|
+
return out;
|
|
33
|
+
}
|
|
34
|
+
export function functionName(decl) {
|
|
35
|
+
// A constructor is named by its class: `new Judge()` inlines as a call labelled "Judge".
|
|
36
|
+
if (ts.isConstructorDeclaration(decl)) {
|
|
37
|
+
const cls = decl.parent;
|
|
38
|
+
return ts.isClassLike(cls) && cls.name !== undefined ? cls.name.text : undefined;
|
|
39
|
+
}
|
|
40
|
+
const named = decl;
|
|
41
|
+
if (named.name !== undefined && ts.isIdentifier(named.name))
|
|
42
|
+
return named.name.text;
|
|
43
|
+
const parent = decl.parent;
|
|
44
|
+
if (parent !== undefined && ts.isVariableDeclaration(parent) && ts.isIdentifier(parent.name)) {
|
|
45
|
+
return parent.name.text;
|
|
46
|
+
}
|
|
47
|
+
return undefined;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* The script-local function a call resolves to. `getResolvedSignature` handles the
|
|
51
|
+
* hard shapes (methods, overloads, aliased consts) in one hop; anything outside the
|
|
52
|
+
* authored file (the facade, the stdlib) is not inlinable.
|
|
53
|
+
*/
|
|
54
|
+
export function resolveCallDeclaration(call, checker, scriptFile) {
|
|
55
|
+
const declaration = checker.getResolvedSignature(call)?.declaration;
|
|
56
|
+
if (declaration === undefined)
|
|
57
|
+
return undefined;
|
|
58
|
+
return asScriptFunction(declaration, scriptFile);
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Script-local functions that can reach themselves in the call graph — the SCCs the analysis turns into `loop` regions instead of unrolling. Callees are the union of the
|
|
62
|
+
* checker's resolved declarations and the call oracle's applications (both vias: a
|
|
63
|
+
* function handed to a library that hands it back is a cycle too). Nested function bodies
|
|
64
|
+
* count as their owner's callees, which over-approximates cycles; over-approximating here
|
|
65
|
+
* only costs a `loop` region, while under-approximating would unroll forever.
|
|
66
|
+
*/
|
|
67
|
+
export function collectRecursiveFunctions(scriptFile, checker, applications) {
|
|
68
|
+
const functions = [];
|
|
69
|
+
const collect = (node) => {
|
|
70
|
+
const fn = asScriptFunction(node, scriptFile);
|
|
71
|
+
if (fn !== undefined)
|
|
72
|
+
functions.push(fn);
|
|
73
|
+
ts.forEachChild(node, collect);
|
|
74
|
+
};
|
|
75
|
+
collect(scriptFile);
|
|
76
|
+
const callees = new Map();
|
|
77
|
+
for (const fn of functions) {
|
|
78
|
+
const set = new Set();
|
|
79
|
+
const scan = (node) => {
|
|
80
|
+
if (ts.isCallExpression(node)) {
|
|
81
|
+
const target = resolveCallDeclaration(node, checker, scriptFile);
|
|
82
|
+
if (target !== undefined)
|
|
83
|
+
set.add(target);
|
|
84
|
+
}
|
|
85
|
+
if (ts.isCallExpression(node) ||
|
|
86
|
+
ts.isNewExpression(node) ||
|
|
87
|
+
ts.isTaggedTemplateExpression(node)) {
|
|
88
|
+
for (const applied of applications.get(node)?.keys() ?? []) {
|
|
89
|
+
const target = asScriptFunction(applied, scriptFile);
|
|
90
|
+
if (target !== undefined)
|
|
91
|
+
set.add(target);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
ts.forEachChild(node, scan);
|
|
95
|
+
};
|
|
96
|
+
scan(fn.body);
|
|
97
|
+
callees.set(fn, set);
|
|
98
|
+
}
|
|
99
|
+
const recursive = new Set();
|
|
100
|
+
for (const fn of functions) {
|
|
101
|
+
const seen = new Set();
|
|
102
|
+
const stack = [...(callees.get(fn) ?? [])];
|
|
103
|
+
while (stack.length > 0) {
|
|
104
|
+
const next = stack.pop();
|
|
105
|
+
if (next === fn) {
|
|
106
|
+
recursive.add(fn);
|
|
107
|
+
break;
|
|
108
|
+
}
|
|
109
|
+
if (seen.has(next))
|
|
110
|
+
continue;
|
|
111
|
+
seen.add(next);
|
|
112
|
+
stack.push(...(callees.get(next) ?? []));
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
return recursive;
|
|
116
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import ts from "typescript";
|
|
2
|
+
import { type TraceState } from "./causality-order-state.js";
|
|
3
|
+
/** The loop cases of the visitor. Returns false when `node` is not a loop statement. */
|
|
4
|
+
export declare function walkLoop(state: TraceState, node: ts.Node, chain: readonly string[]): boolean;
|
|
5
|
+
//# sourceMappingURL=causality-order-loops.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"causality-order-loops.d.ts","sourceRoot":"","sources":["../../src/analysis/causality-order-loops.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAC5B,OAAO,EAKL,KAAK,UAAU,EAChB,MAAM,4BAA4B,CAAC;AAqBpC,wFAAwF;AACxF,wBAAgB,QAAQ,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAkE5F"}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import ts from "typescript";
|
|
2
|
+
import { innermost, issuesSince, locOf, openRegion, } from "./causality-order-state.js";
|
|
3
|
+
import { barrier, recordControl, settlesAt } from "./causality-order-settle.js";
|
|
4
|
+
import { strandMark } from "./causality-order-strands.js";
|
|
5
|
+
// causality-order.ts 顶到 oxlint max-lines 上限(400 行),把循环语句的访问器
|
|
6
|
+
// (for / for-of / for-in / while / do…while)连同 `for` 字面量轮数的推导拆到本文件;公开面
|
|
7
|
+
// 仍从 causality-order.ts 导出。{@link walkLoop} 在 walk 的 if 链里占原来四个分支的位置,
|
|
8
|
+
// 判定顺序与原文件逐字一致。
|
|
9
|
+
/** Walk a loop body with its statement registered as a jump target for the duration. */
|
|
10
|
+
function walkLoopBody(state, statement, body, chain) {
|
|
11
|
+
state.regionByStatement.set(statement, innermost(state, chain));
|
|
12
|
+
state.walk(body, chain);
|
|
13
|
+
state.regionByStatement.delete(statement);
|
|
14
|
+
}
|
|
15
|
+
/** The loop cases of the visitor. Returns false when `node` is not a loop statement. */
|
|
16
|
+
export function walkLoop(state, node, chain) {
|
|
17
|
+
const { walk } = state;
|
|
18
|
+
if (ts.isForStatement(node)) {
|
|
19
|
+
const { bound, entered } = literalForBound(node);
|
|
20
|
+
if (node.initializer !== undefined)
|
|
21
|
+
walk(node.initializer, chain);
|
|
22
|
+
if (node.condition !== undefined)
|
|
23
|
+
walk(node.condition, chain);
|
|
24
|
+
if (node.incrementor !== undefined)
|
|
25
|
+
walk(node.incrementor, chain);
|
|
26
|
+
const id = openRegion(state, "loop", innermost(state, chain), {
|
|
27
|
+
entered,
|
|
28
|
+
loc: locOf(state, node),
|
|
29
|
+
...(bound === undefined ? {} : { bound }),
|
|
30
|
+
});
|
|
31
|
+
if (node.condition !== undefined)
|
|
32
|
+
recordControl(state, node.condition, id);
|
|
33
|
+
walkLoopBody(state, node, node.statement, [...chain, id]);
|
|
34
|
+
return true;
|
|
35
|
+
}
|
|
36
|
+
if (ts.isForOfStatement(node) || ts.isForInStatement(node)) {
|
|
37
|
+
const mark = state.events.length;
|
|
38
|
+
const spawned = strandMark(state);
|
|
39
|
+
walk(node.expression, chain);
|
|
40
|
+
const id = openRegion(state, "loop", innermost(state, chain), {
|
|
41
|
+
entered: false,
|
|
42
|
+
loc: locOf(state, node),
|
|
43
|
+
});
|
|
44
|
+
const inside = [...chain, id];
|
|
45
|
+
// `for await (… of …)` awaits every element, so each iteration opens with a
|
|
46
|
+
// barrier over whatever the iterated expression issued — plus, from the oracle,
|
|
47
|
+
// whatever labels that expression's VALUE carries (an array of pending promises
|
|
48
|
+
// issues nothing at this point, which is the whole reason the oracle exists).
|
|
49
|
+
if (ts.isForOfStatement(node) && node.awaitModifier !== undefined) {
|
|
50
|
+
const claim = settlesAt(state, node.expression, node.expression.getStart(state.scriptFile));
|
|
51
|
+
barrier(state, [...issuesSince(state, mark), ...claim.certain], claim.maybe, inside, {
|
|
52
|
+
mark: spawned,
|
|
53
|
+
operand: node.expression,
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
walk(node.initializer, inside);
|
|
57
|
+
walkLoopBody(state, node, node.statement, inside);
|
|
58
|
+
return true;
|
|
59
|
+
}
|
|
60
|
+
if (ts.isWhileStatement(node)) {
|
|
61
|
+
walk(node.expression, chain);
|
|
62
|
+
const id = openRegion(state, "loop", innermost(state, chain), {
|
|
63
|
+
entered: false,
|
|
64
|
+
loc: locOf(state, node),
|
|
65
|
+
});
|
|
66
|
+
recordControl(state, node.expression, id);
|
|
67
|
+
walkLoopBody(state, node, node.statement, [...chain, id]);
|
|
68
|
+
return true;
|
|
69
|
+
}
|
|
70
|
+
if (ts.isDoStatement(node)) {
|
|
71
|
+
// A `do…while` body is unconditional on first entry, so it is `entered` and its
|
|
72
|
+
// condition is NOT a guard.
|
|
73
|
+
const id = openRegion(state, "loop", innermost(state, chain), {
|
|
74
|
+
entered: true,
|
|
75
|
+
loc: locOf(state, node),
|
|
76
|
+
});
|
|
77
|
+
walkLoopBody(state, node, node.statement, [...chain, id]);
|
|
78
|
+
walk(node.expression, [...chain, id]);
|
|
79
|
+
return true;
|
|
80
|
+
}
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* A `for` loop's provable entry and round count: `for (let i = <a>; i < <b>; i++)`
|
|
85
|
+
* with numeric literals and `a < b` runs `b - a` times. `entered` needs only the
|
|
86
|
+
* literal comparison; `bound` additionally needs a unit increment, or the count would
|
|
87
|
+
* be a guess.
|
|
88
|
+
*/
|
|
89
|
+
function literalForBound(node) {
|
|
90
|
+
const initializer = node.initializer;
|
|
91
|
+
const condition = node.condition;
|
|
92
|
+
if (initializer === undefined || !ts.isVariableDeclarationList(initializer)) {
|
|
93
|
+
return { entered: false };
|
|
94
|
+
}
|
|
95
|
+
const decl = initializer.declarations[0];
|
|
96
|
+
if (decl === undefined || !ts.isIdentifier(decl.name) || decl.initializer === undefined) {
|
|
97
|
+
return { entered: false };
|
|
98
|
+
}
|
|
99
|
+
const start = numericValue(decl.initializer);
|
|
100
|
+
if (start === undefined || condition === undefined || !ts.isBinaryExpression(condition)) {
|
|
101
|
+
return { entered: false };
|
|
102
|
+
}
|
|
103
|
+
if (!ts.isIdentifier(condition.left) || condition.left.text !== decl.name.text) {
|
|
104
|
+
return { entered: false };
|
|
105
|
+
}
|
|
106
|
+
const limit = numericValue(condition.right);
|
|
107
|
+
if (limit === undefined)
|
|
108
|
+
return { entered: false };
|
|
109
|
+
const operator = condition.operatorToken.kind;
|
|
110
|
+
const rounds = operator === ts.SyntaxKind.LessThanToken && start < limit
|
|
111
|
+
? limit - start
|
|
112
|
+
: operator === ts.SyntaxKind.LessThanEqualsToken && start <= limit
|
|
113
|
+
? limit - start + 1
|
|
114
|
+
: undefined;
|
|
115
|
+
if (rounds === undefined)
|
|
116
|
+
return { entered: false };
|
|
117
|
+
return isUnitIncrement(node.incrementor, decl.name.text)
|
|
118
|
+
? { bound: rounds, entered: true }
|
|
119
|
+
: { entered: true };
|
|
120
|
+
}
|
|
121
|
+
function numericValue(expr) {
|
|
122
|
+
if (ts.isNumericLiteral(expr))
|
|
123
|
+
return Number(expr.text);
|
|
124
|
+
if (ts.isPrefixUnaryExpression(expr) && expr.operator === ts.SyntaxKind.MinusToken) {
|
|
125
|
+
const inner = numericValue(expr.operand);
|
|
126
|
+
return inner === undefined ? undefined : -inner;
|
|
127
|
+
}
|
|
128
|
+
return undefined;
|
|
129
|
+
}
|
|
130
|
+
function isUnitIncrement(incrementor, name) {
|
|
131
|
+
if (incrementor === undefined)
|
|
132
|
+
return false;
|
|
133
|
+
if (ts.isPostfixUnaryExpression(incrementor) &&
|
|
134
|
+
incrementor.operator === ts.SyntaxKind.PlusPlusToken) {
|
|
135
|
+
return ts.isIdentifier(incrementor.operand) && incrementor.operand.text === name;
|
|
136
|
+
}
|
|
137
|
+
if (ts.isPrefixUnaryExpression(incrementor) &&
|
|
138
|
+
incrementor.operator === ts.SyntaxKind.PlusPlusToken) {
|
|
139
|
+
return ts.isIdentifier(incrementor.operand) && incrementor.operand.text === name;
|
|
140
|
+
}
|
|
141
|
+
if (ts.isBinaryExpression(incrementor) &&
|
|
142
|
+
incrementor.operatorToken.kind === ts.SyntaxKind.PlusEqualsToken &&
|
|
143
|
+
ts.isIdentifier(incrementor.left) &&
|
|
144
|
+
incrementor.left.text === name) {
|
|
145
|
+
return numericValue(incrementor.right) === 1;
|
|
146
|
+
}
|
|
147
|
+
return false;
|
|
148
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import ts from "typescript";
|
|
2
|
+
import type { TraceState } from "./causality-order-state.js";
|
|
3
|
+
import { type AwaitedOperand } from "./causality-order-strands.js";
|
|
4
|
+
/** An oracle lookup split by the settle-certainty rule. Readonly because {@link NO_CLAIM}
|
|
5
|
+
* is a shared singleton — an in-place edit of an empty result would leak everywhere. */
|
|
6
|
+
interface OracleClaim {
|
|
7
|
+
certain: readonly string[];
|
|
8
|
+
maybe: readonly string[];
|
|
9
|
+
}
|
|
10
|
+
export declare function settlesAt(state: TraceState, node: ts.Node, at: number): OracleClaim;
|
|
11
|
+
/**
|
|
12
|
+
* An `await` barrier over the union of what the two halves resolved, plus the summaries of
|
|
13
|
+
* the STRANDS it joins: `certain` settles as a certainty, `maybe` as a may-claim (a step
|
|
14
|
+
* claimed by both counts as certain). Steps already settled IN A VISIBLE FRAME drop out,
|
|
15
|
+
* and a claim that has entirely settled already is a no-op. Widening is reached only when
|
|
16
|
+
* the claim and every joined summary were empty to begin with.
|
|
17
|
+
*
|
|
18
|
+
* The already-settled no-op is not new; what changed is that it became REACHABLE. Before
|
|
19
|
+
* the settle oracle, an indirect await (`await held`, `await p` in a helper, a second await of
|
|
20
|
+
* one promise) resolved to the empty set, so every such await fell through to widening and
|
|
21
|
+
* manufactured `seq maybe` claims over unrelated steps still in flight. The oracle makes
|
|
22
|
+
* the claim non-empty, so the no-op catches it and those spurious barriers disappear —
|
|
23
|
+
* which is why several async-promise-* snapshots got STRONGER certainties once the oracle
|
|
24
|
+
* landed rather than gaining edges.
|
|
25
|
+
*
|
|
26
|
+
* Two frame rules carry the strand model:
|
|
27
|
+
* freshness is judged against EVERY frame on the stack, because a step the spawner
|
|
28
|
+
* already awaited is settled for the strands it spawns; fresh steps are recorded in the
|
|
29
|
+
* CURRENT frame alone, because this activation's await tells the spawner nothing.
|
|
30
|
+
* `awaited` is the operand this barrier stands over, which {@link joinStrands} scans for
|
|
31
|
+
* the promises it names; a barrier with no operand (a deferred callback's receiver
|
|
32
|
+
* prologue) can still LIFT a strand out of its own claim.
|
|
33
|
+
*/
|
|
34
|
+
export declare function barrier(state: TraceState, certain: readonly string[], maybe: readonly string[], chain: readonly string[], awaited?: AwaitedOperand): void;
|
|
35
|
+
export declare function bindSteps(state: TraceState, name: ts.BindingName, steps: readonly string[]): void;
|
|
36
|
+
/** Record a guard's control dependence against a region, when it has any. */
|
|
37
|
+
export declare function recordControl(state: TraceState, guard: ts.Expression, region: string): void;
|
|
38
|
+
export {};
|
|
39
|
+
//# sourceMappingURL=causality-order-settle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"causality-order-settle.d.ts","sourceRoot":"","sources":["../../src/analysis/causality-order-settle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAI5B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAIL,KAAK,cAAc,EACpB,MAAM,8BAA8B,CAAC;AAOtC;wFACwF;AACxF,UAAU,WAAW;IACnB,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;CAC1B;AAqHD,wBAAgB,SAAS,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,MAAM,GAAG,WAAW,CAEnF;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,OAAO,CACrB,KAAK,EAAE,UAAU,EACjB,OAAO,EAAE,SAAS,MAAM,EAAE,EAC1B,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,OAAO,CAAC,EAAE,cAAc,GACvB,IAAI,CA4DN;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC,WAAW,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CASjG;AAwCD,6EAA6E;AAC7E,wBAAgB,aAAa,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAK3F"}
|