modality-ts 0.0.8 → 0.0.10
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 +9 -7
- package/dist/check/diagnostics/bounds.d.ts +4 -0
- package/dist/check/diagnostics/bounds.d.ts.map +1 -0
- package/dist/check/diagnostics/bounds.js +25 -0
- package/dist/check/diagnostics/bounds.js.map +1 -0
- package/dist/check/diagnostics/vacuity.d.ts +3 -0
- package/dist/check/diagnostics/vacuity.d.ts.map +1 -0
- package/dist/check/diagnostics/vacuity.js +22 -0
- package/dist/check/diagnostics/vacuity.js.map +1 -0
- package/dist/check/engine/check-model.d.ts +4 -0
- package/dist/check/engine/check-model.d.ts.map +1 -0
- package/dist/check/engine/check-model.js +162 -0
- package/dist/check/engine/check-model.js.map +1 -0
- package/dist/check/engine/initial-states.d.ts +3 -0
- package/dist/check/engine/initial-states.d.ts.map +1 -0
- package/dist/check/engine/initial-states.js +11 -0
- package/dist/check/engine/initial-states.js.map +1 -0
- package/dist/check/engine/model-api.d.ts +4 -0
- package/dist/check/engine/model-api.d.ts.map +1 -0
- package/dist/check/engine/model-api.js +15 -0
- package/dist/check/engine/model-api.js.map +1 -0
- package/dist/check/engine/mounts.d.ts +3 -0
- package/dist/check/engine/mounts.d.ts.map +1 -0
- package/dist/check/engine/mounts.js +13 -0
- package/dist/check/engine/mounts.js.map +1 -0
- package/dist/check/engine/stabilize.d.ts +3 -0
- package/dist/check/engine/stabilize.d.ts.map +1 -0
- package/dist/check/engine/stabilize.js +82 -0
- package/dist/check/engine/stabilize.js.map +1 -0
- package/dist/check/engine/state-utils.d.ts +12 -0
- package/dist/check/engine/state-utils.d.ts.map +1 -0
- package/dist/check/engine/state-utils.js +30 -0
- package/dist/check/engine/state-utils.js.map +1 -0
- package/dist/check/engine/transitions.d.ts +4 -0
- package/dist/check/engine/transitions.d.ts.map +1 -0
- package/dist/check/engine/transitions.js +15 -0
- package/dist/check/engine/transitions.js.map +1 -0
- package/dist/check/index.d.ts +14 -0
- package/dist/check/index.d.ts.map +1 -0
- package/dist/check/index.js +13 -0
- package/dist/check/index.js.map +1 -0
- package/dist/check/properties/checked-state.d.ts +3 -0
- package/dist/check/properties/checked-state.d.ts.map +1 -0
- package/dist/check/properties/checked-state.js +21 -0
- package/dist/check/properties/checked-state.js.map +1 -0
- package/dist/check/properties/finalize.d.ts +4 -0
- package/dist/check/properties/finalize.d.ts.map +1 -0
- package/dist/check/properties/finalize.js +71 -0
- package/dist/check/properties/finalize.js.map +1 -0
- package/dist/check/properties/leads-to.d.ts +8 -0
- package/dist/check/properties/leads-to.d.ts.map +1 -0
- package/dist/check/properties/leads-to.js +69 -0
- package/dist/check/properties/leads-to.js.map +1 -0
- package/dist/check/properties/observe.d.ts +5 -0
- package/dist/check/properties/observe.d.ts.map +1 -0
- package/dist/check/properties/observe.js +56 -0
- package/dist/check/properties/observe.js.map +1 -0
- package/dist/check/properties/reachable-from.d.ts +8 -0
- package/dist/check/properties/reachable-from.d.ts.map +1 -0
- package/dist/check/properties/reachable-from.js +19 -0
- package/dist/check/properties/reachable-from.js.map +1 -0
- package/dist/check/runtime/domains.d.ts +5 -0
- package/dist/check/runtime/domains.d.ts.map +1 -0
- package/dist/check/runtime/domains.js +53 -0
- package/dist/check/runtime/domains.js.map +1 -0
- package/dist/check/runtime/effects.d.ts +9 -0
- package/dist/check/runtime/effects.d.ts.map +1 -0
- package/dist/check/runtime/effects.js +86 -0
- package/dist/check/runtime/effects.js.map +1 -0
- package/dist/check/runtime/expr.d.ts +7 -0
- package/dist/check/runtime/expr.d.ts.map +1 -0
- package/dist/check/runtime/expr.js +49 -0
- package/dist/check/runtime/expr.js.map +1 -0
- package/dist/check/runtime/navigation.d.ts +7 -0
- package/dist/check/runtime/navigation.d.ts.map +1 -0
- package/dist/check/runtime/navigation.js +60 -0
- package/dist/check/runtime/navigation.js.map +1 -0
- package/dist/check/runtime/opaque.d.ts +3 -0
- package/dist/check/runtime/opaque.d.ts.map +1 -0
- package/dist/check/runtime/opaque.js +72 -0
- package/dist/check/runtime/opaque.js.map +1 -0
- package/dist/check/runtime/paths.d.ts +4 -0
- package/dist/check/runtime/paths.d.ts.map +1 -0
- package/dist/check/runtime/paths.js +28 -0
- package/dist/check/runtime/paths.js.map +1 -0
- package/dist/check/runtime/pending.d.ts +9 -0
- package/dist/check/runtime/pending.d.ts.map +1 -0
- package/dist/check/runtime/pending.js +5 -0
- package/dist/check/runtime/pending.js.map +1 -0
- package/dist/check/runtime/tokens.d.ts +7 -0
- package/dist/check/runtime/tokens.d.ts.map +1 -0
- package/dist/check/runtime/tokens.js +36 -0
- package/dist/check/runtime/tokens.js.map +1 -0
- package/dist/check/slicing/slice-model.d.ts +5 -0
- package/dist/check/slicing/slice-model.d.ts.map +1 -0
- package/dist/check/slicing/slice-model.js +48 -0
- package/dist/check/slicing/slice-model.js.map +1 -0
- package/dist/check/traces/step-facts.d.ts +3 -0
- package/dist/check/traces/step-facts.d.ts.map +1 -0
- package/dist/check/traces/step-facts.js +35 -0
- package/dist/check/traces/step-facts.js.map +1 -0
- package/dist/check/traces/trace.d.ts +8 -0
- package/dist/check/traces/trace.d.ts.map +1 -0
- package/dist/check/traces/trace.js +42 -0
- package/dist/check/traces/trace.js.map +1 -0
- package/dist/{checker/search/index.d.ts → check/types.d.ts} +16 -6
- package/dist/check/types.d.ts.map +1 -0
- package/dist/{kernel/ir → check}/types.js.map +1 -1
- package/dist/cli/check.d.ts +3 -0
- package/dist/cli/check.d.ts.map +1 -0
- package/dist/cli/check.js +2 -0
- package/dist/cli/check.js.map +1 -0
- package/dist/cli/ci.d.ts.map +1 -0
- package/dist/cli/ci.js.map +1 -0
- package/dist/{modality → cli}/cli.d.ts.map +1 -1
- package/dist/{modality → cli}/cli.js +183 -50
- package/dist/cli/cli.js.map +1 -0
- package/dist/cli/codegen/model.d.ts +3 -0
- package/dist/cli/codegen/model.d.ts.map +1 -0
- package/dist/{modality → cli}/codegen/model.js +18 -10
- package/dist/cli/codegen/model.js.map +1 -0
- package/dist/{modality → cli}/codegen/replay-test.d.ts +1 -1
- package/dist/cli/codegen/replay-test.d.ts.map +1 -0
- package/dist/{modality → cli}/codegen/replay-test.js +12 -12
- package/dist/cli/codegen/replay-test.js.map +1 -0
- package/dist/cli/conform.d.ts +3 -0
- package/dist/cli/conform.d.ts.map +1 -0
- package/dist/cli/conform.js +2 -0
- package/dist/cli/conform.js.map +1 -0
- package/dist/cli/defaults.d.ts +13 -0
- package/dist/cli/defaults.d.ts.map +1 -0
- package/dist/cli/defaults.js +57 -0
- package/dist/cli/defaults.js.map +1 -0
- package/dist/cli/export-tla.d.ts +3 -0
- package/dist/cli/export-tla.d.ts.map +1 -0
- package/dist/cli/export-tla.js +2 -0
- package/dist/cli/export-tla.js.map +1 -0
- package/dist/{modality → cli}/extract.d.ts +1 -1
- package/dist/cli/extract.d.ts.map +1 -0
- package/dist/cli/extract.js.map +1 -0
- package/dist/{modality → cli}/features/check/command.d.ts +3 -2
- package/dist/cli/features/check/command.d.ts.map +1 -0
- package/dist/{modality → cli}/features/check/command.js +67 -27
- package/dist/cli/features/check/command.js.map +1 -0
- package/dist/cli/features/check/index.d.ts +3 -0
- package/dist/cli/features/check/index.d.ts.map +1 -0
- package/dist/cli/features/check/index.js +2 -0
- package/dist/cli/features/check/index.js.map +1 -0
- package/dist/cli/features/ci/command.d.ts.map +1 -0
- package/dist/{modality → cli}/features/ci/command.js +66 -26
- package/dist/cli/features/ci/command.js.map +1 -0
- package/dist/cli/features/ci/index.d.ts.map +1 -0
- package/dist/cli/features/ci/index.js.map +1 -0
- package/dist/{modality → cli}/features/conform/command.d.ts +1 -1
- package/dist/cli/features/conform/command.d.ts.map +1 -0
- package/dist/{modality → cli}/features/conform/command.js +67 -25
- package/dist/cli/features/conform/command.js.map +1 -0
- package/dist/cli/features/conform/index.d.ts.map +1 -0
- package/dist/cli/features/conform/index.js.map +1 -0
- package/dist/{modality → cli}/features/export/command.d.ts +1 -1
- package/dist/cli/features/export/command.d.ts.map +1 -0
- package/dist/{modality → cli}/features/export/command.js +72 -27
- package/dist/cli/features/export/command.js.map +1 -0
- package/dist/{modality → cli}/features/export/index.d.ts +2 -2
- package/dist/cli/features/export/index.d.ts.map +1 -0
- package/dist/cli/features/export/index.js +2 -0
- package/dist/cli/features/export/index.js.map +1 -0
- package/dist/{modality → cli}/features/extract/command.d.ts +5 -4
- package/dist/cli/features/extract/command.d.ts.map +1 -0
- package/dist/{modality → cli}/features/extract/command.js +295 -82
- package/dist/cli/features/extract/command.js.map +1 -0
- package/dist/{modality → cli}/features/extract/index.d.ts +1 -1
- package/dist/cli/features/extract/index.d.ts.map +1 -0
- package/dist/cli/features/extract/index.js.map +1 -0
- package/dist/cli/features/init/command.d.ts +9 -0
- package/dist/cli/features/init/command.d.ts.map +1 -0
- package/dist/cli/features/init/command.js +23 -0
- package/dist/cli/features/init/command.js.map +1 -0
- package/dist/cli/features/init/index.d.ts +3 -0
- package/dist/cli/features/init/index.d.ts.map +1 -0
- package/dist/cli/features/init/index.js +2 -0
- package/dist/cli/features/init/index.js.map +1 -0
- package/dist/{modality → cli}/features/replay/command.d.ts +1 -1
- package/dist/cli/features/replay/command.d.ts.map +1 -0
- package/dist/{modality → cli}/features/replay/command.js +42 -16
- package/dist/cli/features/replay/command.js.map +1 -0
- package/dist/cli/features/replay/index.d.ts.map +1 -0
- package/dist/cli/features/replay/index.js.map +1 -0
- package/dist/{harness → cli/harness}/index.d.ts +1 -1
- package/dist/cli/harness/index.d.ts.map +1 -0
- package/dist/{harness → cli/harness}/index.js +128 -37
- package/dist/cli/harness/index.js.map +1 -0
- package/dist/{modality → cli}/overlay.d.ts +1 -1
- package/dist/cli/overlay.d.ts.map +1 -0
- package/dist/{modality → cli}/overlay.js +1 -1
- package/dist/cli/overlay.js.map +1 -0
- package/dist/{modality → cli}/registry/index.d.ts +2 -2
- package/dist/cli/registry/index.d.ts.map +1 -0
- package/dist/{modality → cli}/registry/index.js +32 -17
- package/dist/cli/registry/index.js.map +1 -0
- package/dist/cli/replay.d.ts +3 -0
- package/dist/cli/replay.d.ts.map +1 -0
- package/dist/cli/replay.js.map +1 -0
- package/dist/{runtime → cli/runtime}/index.d.ts +1 -1
- package/dist/cli/runtime/index.d.ts.map +1 -0
- package/dist/{runtime → cli/runtime}/index.js +37 -10
- package/dist/cli/runtime/index.js.map +1 -0
- package/dist/core/artifacts/index.d.ts.map +1 -0
- package/dist/{kernel → core}/artifacts/index.js +7 -2
- package/dist/core/artifacts/index.js.map +1 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/ir/canonical.d.ts.map +1 -0
- package/dist/{kernel → core}/ir/canonical.js +30 -7
- package/dist/core/ir/canonical.js.map +1 -0
- package/dist/core/ir/domains.d.ts.map +1 -0
- package/dist/{kernel → core}/ir/domains.js +18 -6
- package/dist/core/ir/domains.js.map +1 -0
- package/dist/core/ir/types.d.ts.map +1 -0
- package/dist/{kernel/trace → core/ir}/types.js.map +1 -1
- package/dist/core/ir/validator.d.ts.map +1 -0
- package/dist/{kernel → core}/ir/validator.js +48 -19
- package/dist/core/ir/validator.js.map +1 -0
- package/dist/core/overlay/index.d.ts.map +1 -0
- package/dist/{kernel → core}/overlay/index.js +35 -14
- package/dist/core/overlay/index.js.map +1 -0
- package/dist/core/props/index.d.ts.map +1 -0
- package/dist/{kernel → core}/props/index.js +69 -21
- package/dist/core/props/index.js.map +1 -0
- package/dist/{kernel → core}/report/types.d.ts.map +1 -1
- package/dist/{kernel → core}/report/types.js.map +1 -1
- package/dist/core/trace/types.d.ts.map +1 -0
- package/dist/core/trace/types.js +2 -0
- package/dist/core/trace/types.js.map +1 -0
- package/dist/extract/engine/index.d.ts +4 -0
- package/dist/extract/engine/index.d.ts.map +1 -0
- package/dist/extract/engine/index.js +4 -0
- package/dist/extract/engine/index.js.map +1 -0
- package/dist/{extraction → extract/engine}/pipeline/index.d.ts +1 -2
- package/dist/extract/engine/pipeline/index.d.ts.map +1 -0
- package/dist/{extraction → extract/engine}/pipeline/index.js +55 -18
- package/dist/extract/engine/pipeline/index.js.map +1 -0
- package/dist/{extraction → extract/engine}/spi/index.d.ts +17 -1
- package/dist/extract/engine/spi/index.d.ts.map +1 -0
- package/dist/extract/engine/spi/index.js.map +1 -0
- package/dist/extract/engine/ts/ast.d.ts +23 -0
- package/dist/extract/engine/ts/ast.d.ts.map +1 -0
- package/dist/extract/engine/ts/ast.js +97 -0
- package/dist/extract/engine/ts/ast.js.map +1 -0
- package/dist/extract/engine/ts/components.d.ts +21 -0
- package/dist/extract/engine/ts/components.d.ts.map +1 -0
- package/dist/extract/engine/ts/components.js +287 -0
- package/dist/extract/engine/ts/components.js.map +1 -0
- package/dist/extract/engine/ts/context.d.ts +10 -0
- package/dist/extract/engine/ts/context.d.ts.map +1 -0
- package/dist/extract/engine/ts/context.js +273 -0
- package/dist/extract/engine/ts/context.js.map +1 -0
- package/dist/extract/engine/ts/domains.d.ts +8 -0
- package/dist/extract/engine/ts/domains.d.ts.map +1 -0
- package/dist/extract/engine/ts/domains.js +262 -0
- package/dist/extract/engine/ts/domains.js.map +1 -0
- package/dist/extract/engine/ts/expressions.d.ts +2 -0
- package/dist/extract/engine/ts/expressions.d.ts.map +1 -0
- package/dist/extract/engine/ts/expressions.js +2 -0
- package/dist/extract/engine/ts/expressions.js.map +1 -0
- package/dist/extract/engine/ts/handlers.d.ts +4 -0
- package/dist/extract/engine/ts/handlers.d.ts.map +1 -0
- package/dist/extract/engine/ts/handlers.js +3 -0
- package/dist/extract/engine/ts/handlers.js.map +1 -0
- package/dist/extract/engine/ts/ids.d.ts +7 -0
- package/dist/extract/engine/ts/ids.d.ts.map +1 -0
- package/dist/extract/engine/ts/ids.js +63 -0
- package/dist/extract/engine/ts/ids.js.map +1 -0
- package/dist/extract/engine/ts/input-transitions.d.ts +5 -0
- package/dist/extract/engine/ts/input-transitions.d.ts.map +1 -0
- package/dist/extract/engine/ts/input-transitions.js +132 -0
- package/dist/extract/engine/ts/input-transitions.js.map +1 -0
- package/dist/extract/engine/ts/jsx.d.ts +3 -0
- package/dist/extract/engine/ts/jsx.d.ts.map +1 -0
- package/dist/extract/engine/ts/jsx.js +3 -0
- package/dist/extract/engine/ts/jsx.js.map +1 -0
- package/dist/extract/engine/ts/react-source-transitions.d.ts +24 -0
- package/dist/extract/engine/ts/react-source-transitions.d.ts.map +1 -0
- package/dist/extract/engine/ts/react-source-transitions.js +243 -0
- package/dist/extract/engine/ts/react-source-transitions.js.map +1 -0
- package/dist/extract/engine/ts/routes.d.ts +9 -0
- package/dist/extract/engine/ts/routes.d.ts.map +1 -0
- package/dist/extract/engine/ts/routes.js +94 -0
- package/dist/extract/engine/ts/routes.js.map +1 -0
- package/dist/extract/engine/ts/source.d.ts +3 -0
- package/dist/extract/engine/ts/source.d.ts.map +1 -0
- package/dist/extract/engine/ts/source.js +5 -0
- package/dist/extract/engine/ts/source.js.map +1 -0
- package/dist/extract/engine/ts/static-navigation.d.ts +5 -0
- package/dist/extract/engine/ts/static-navigation.d.ts.map +1 -0
- package/dist/extract/engine/ts/static-navigation.js +425 -0
- package/dist/extract/engine/ts/static-navigation.js.map +1 -0
- package/dist/extract/engine/ts/transition/async.d.ts +45 -0
- package/dist/extract/engine/ts/transition/async.d.ts.map +1 -0
- package/dist/extract/engine/ts/transition/async.js +578 -0
- package/dist/extract/engine/ts/transition/async.js.map +1 -0
- package/dist/extract/engine/ts/transition/component-props.d.ts +26 -0
- package/dist/extract/engine/ts/transition/component-props.d.ts.map +1 -0
- package/dist/extract/engine/ts/transition/component-props.js +200 -0
- package/dist/extract/engine/ts/transition/component-props.js.map +1 -0
- package/dist/extract/engine/ts/transition/effects.d.ts +12 -0
- package/dist/extract/engine/ts/transition/effects.d.ts.map +1 -0
- package/dist/extract/engine/ts/transition/effects.js +139 -0
- package/dist/extract/engine/ts/transition/effects.js.map +1 -0
- package/dist/extract/engine/ts/transition/expressions.d.ts +34 -0
- package/dist/extract/engine/ts/transition/expressions.d.ts.map +1 -0
- package/dist/extract/engine/ts/transition/expressions.js +374 -0
- package/dist/extract/engine/ts/transition/expressions.js.map +1 -0
- package/dist/extract/engine/ts/transition/guards.d.ts +21 -0
- package/dist/extract/engine/ts/transition/guards.d.ts.map +1 -0
- package/dist/extract/engine/ts/transition/guards.js +258 -0
- package/dist/extract/engine/ts/transition/guards.js.map +1 -0
- package/dist/extract/engine/ts/transition/handlers.d.ts +32 -0
- package/dist/extract/engine/ts/transition/handlers.d.ts.map +1 -0
- package/dist/extract/engine/ts/transition/handlers.js +294 -0
- package/dist/extract/engine/ts/transition/handlers.js.map +1 -0
- package/dist/extract/engine/ts/transition/locals.d.ts +20 -0
- package/dist/extract/engine/ts/transition/locals.d.ts.map +1 -0
- package/dist/extract/engine/ts/transition/locals.js +123 -0
- package/dist/extract/engine/ts/transition/locals.js.map +1 -0
- package/dist/extract/engine/ts/transition/navigation.d.ts +21 -0
- package/dist/extract/engine/ts/transition/navigation.d.ts.map +1 -0
- package/dist/extract/engine/ts/transition/navigation.js +129 -0
- package/dist/extract/engine/ts/transition/navigation.js.map +1 -0
- package/dist/extract/engine/ts/transition/plugin-calls.d.ts +10 -0
- package/dist/extract/engine/ts/transition/plugin-calls.d.ts.map +1 -0
- package/dist/extract/engine/ts/transition/plugin-calls.js +114 -0
- package/dist/extract/engine/ts/transition/plugin-calls.js.map +1 -0
- package/dist/extract/engine/ts/transition/statement-summary.d.ts +34 -0
- package/dist/extract/engine/ts/transition/statement-summary.d.ts.map +1 -0
- package/dist/extract/engine/ts/transition/statement-summary.js +502 -0
- package/dist/extract/engine/ts/transition/statement-summary.js.map +1 -0
- package/dist/extract/engine/ts/transition/timers.d.ts +15 -0
- package/dist/extract/engine/ts/transition/timers.d.ts.map +1 -0
- package/dist/extract/engine/ts/transition/timers.js +109 -0
- package/dist/extract/engine/ts/transition/timers.js.map +1 -0
- package/dist/extract/engine/ts/transition/ui.d.ts +12 -0
- package/dist/extract/engine/ts/transition/ui.d.ts.map +1 -0
- package/dist/extract/engine/ts/transition/ui.js +113 -0
- package/dist/extract/engine/ts/transition/ui.js.map +1 -0
- package/dist/extract/engine/ts/traversal.d.ts +3 -0
- package/dist/extract/engine/ts/traversal.d.ts.map +1 -0
- package/dist/extract/engine/ts/traversal.js +6 -0
- package/dist/extract/engine/ts/traversal.js.map +1 -0
- package/dist/extract/engine/ts/types.d.ts +46 -0
- package/dist/extract/engine/ts/types.d.ts.map +1 -0
- package/dist/extract/engine/ts/types.js +2 -0
- package/dist/extract/engine/ts/types.js.map +1 -0
- package/dist/extract/index.d.ts +2 -0
- package/dist/extract/index.d.ts.map +1 -0
- package/dist/extract/index.js +2 -0
- package/dist/extract/index.js.map +1 -0
- package/dist/extract/sources/jotai/discover.d.ts +3 -0
- package/dist/extract/sources/jotai/discover.d.ts.map +1 -0
- package/dist/extract/sources/jotai/discover.js +65 -0
- package/dist/extract/sources/jotai/discover.js.map +1 -0
- package/dist/extract/sources/jotai/domains.d.ts +6 -0
- package/dist/extract/sources/jotai/domains.d.ts.map +1 -0
- package/dist/extract/sources/jotai/domains.js +283 -0
- package/dist/extract/sources/jotai/domains.js.map +1 -0
- package/dist/{sources → extract/sources}/jotai/harness.d.ts +2 -2
- package/dist/extract/sources/jotai/harness.d.ts.map +1 -0
- package/dist/{sources → extract/sources}/jotai/harness.js +1 -1
- package/dist/extract/sources/jotai/harness.js.map +1 -0
- package/dist/extract/sources/jotai/index.d.ts +4 -0
- package/dist/extract/sources/jotai/index.d.ts.map +1 -0
- package/dist/extract/sources/jotai/index.js +3 -0
- package/dist/extract/sources/jotai/index.js.map +1 -0
- package/dist/extract/sources/jotai/plugin.d.ts +4 -0
- package/dist/extract/sources/jotai/plugin.d.ts.map +1 -0
- package/dist/extract/sources/jotai/plugin.js +19 -0
- package/dist/extract/sources/jotai/plugin.js.map +1 -0
- package/dist/extract/sources/jotai/transitions.d.ts +15 -0
- package/dist/extract/sources/jotai/transitions.d.ts.map +1 -0
- package/dist/extract/sources/jotai/transitions.js +44 -0
- package/dist/extract/sources/jotai/transitions.js.map +1 -0
- package/dist/extract/sources/jotai/writes.d.ts +8 -0
- package/dist/extract/sources/jotai/writes.d.ts.map +1 -0
- package/dist/extract/sources/jotai/writes.js +173 -0
- package/dist/extract/sources/jotai/writes.js.map +1 -0
- package/dist/{sources → extract/sources}/router/harness.d.ts +1 -1
- package/dist/extract/sources/router/harness.d.ts.map +1 -0
- package/dist/{sources → extract/sources}/router/harness.js +6 -2
- package/dist/extract/sources/router/harness.js.map +1 -0
- package/dist/extract/sources/router/index.d.ts +9 -0
- package/dist/extract/sources/router/index.d.ts.map +1 -0
- package/dist/extract/sources/router/index.js +22 -0
- package/dist/extract/sources/router/index.js.map +1 -0
- package/dist/extract/sources/router/navigation.d.ts +5 -0
- package/dist/extract/sources/router/navigation.d.ts.map +1 -0
- package/dist/extract/sources/router/navigation.js +16 -0
- package/dist/extract/sources/router/navigation.js.map +1 -0
- package/dist/extract/sources/router/routes.d.ts +4 -0
- package/dist/extract/sources/router/routes.d.ts.map +1 -0
- package/dist/extract/sources/router/routes.js +28 -0
- package/dist/extract/sources/router/routes.js.map +1 -0
- package/dist/extract/sources/shared/react-transition-extract.d.ts +13 -0
- package/dist/extract/sources/shared/react-transition-extract.d.ts.map +1 -0
- package/dist/extract/sources/shared/react-transition-extract.js +22 -0
- package/dist/extract/sources/shared/react-transition-extract.js.map +1 -0
- package/dist/extract/sources/swr/discover.d.ts +11 -0
- package/dist/extract/sources/swr/discover.d.ts.map +1 -0
- package/dist/extract/sources/swr/discover.js +175 -0
- package/dist/extract/sources/swr/discover.js.map +1 -0
- package/dist/extract/sources/swr/domains.d.ts +5 -0
- package/dist/extract/sources/swr/domains.d.ts.map +1 -0
- package/dist/extract/sources/swr/domains.js +99 -0
- package/dist/extract/sources/swr/domains.js.map +1 -0
- package/dist/{sources → extract/sources}/swr/harness.d.ts +2 -2
- package/dist/extract/sources/swr/harness.d.ts.map +1 -0
- package/dist/{sources → extract/sources}/swr/harness.js +3 -1
- package/dist/extract/sources/swr/harness.js.map +1 -0
- package/dist/extract/sources/swr/index.d.ts +6 -0
- package/dist/extract/sources/swr/index.d.ts.map +1 -0
- package/dist/extract/sources/swr/index.js +4 -0
- package/dist/extract/sources/swr/index.js.map +1 -0
- package/dist/extract/sources/swr/plugin.d.ts +4 -0
- package/dist/extract/sources/swr/plugin.d.ts.map +1 -0
- package/dist/extract/sources/swr/plugin.js +21 -0
- package/dist/extract/sources/swr/plugin.js.map +1 -0
- package/dist/{sources/swr/index.d.ts → extract/sources/swr/template.d.ts} +4 -6
- package/dist/extract/sources/swr/template.d.ts.map +1 -0
- package/dist/extract/sources/swr/template.js +331 -0
- package/dist/extract/sources/swr/template.js.map +1 -0
- package/dist/extract/sources/swr/transitions.d.ts +15 -0
- package/dist/extract/sources/swr/transitions.d.ts.map +1 -0
- package/dist/extract/sources/swr/transitions.js +43 -0
- package/dist/extract/sources/swr/transitions.js.map +1 -0
- package/dist/extract/sources/swr/writes.d.ts +3 -0
- package/dist/extract/sources/swr/writes.d.ts.map +1 -0
- package/dist/extract/sources/swr/writes.js +54 -0
- package/dist/extract/sources/swr/writes.js.map +1 -0
- package/dist/{sources → extract/sources}/use-state/harness.d.ts +2 -2
- package/dist/extract/sources/use-state/harness.d.ts.map +1 -0
- package/dist/{sources → extract/sources}/use-state/harness.js +1 -1
- package/dist/extract/sources/use-state/harness.js.map +1 -0
- package/dist/extract/sources/use-state/index.d.ts +4 -0
- package/dist/extract/sources/use-state/index.d.ts.map +1 -0
- package/dist/{sources → extract/sources}/use-state/index.js +84 -31
- package/dist/extract/sources/use-state/index.js.map +1 -0
- package/dist/extract/sources/use-state/transitions.d.ts +4 -0
- package/dist/extract/sources/use-state/transitions.d.ts.map +1 -0
- package/dist/extract/sources/use-state/transitions.js +27 -0
- package/dist/extract/sources/use-state/transitions.js.map +1 -0
- package/dist/extract/sources/use-state/types.d.ts +67 -0
- package/dist/extract/sources/use-state/types.d.ts.map +1 -0
- package/dist/extract/sources/use-state/types.js +2 -0
- package/dist/extract/sources/use-state/types.js.map +1 -0
- package/package.json +85 -71
- package/dist/checker/encode/index.d.ts +0 -2
- package/dist/checker/encode/index.d.ts.map +0 -1
- package/dist/checker/encode/index.js +0 -2
- package/dist/checker/encode/index.js.map +0 -1
- package/dist/checker/index.d.ts +0 -6
- package/dist/checker/index.d.ts.map +0 -1
- package/dist/checker/index.js +0 -6
- package/dist/checker/index.js.map +0 -1
- package/dist/checker/monitors/index.d.ts +0 -2
- package/dist/checker/monitors/index.d.ts.map +0 -1
- package/dist/checker/monitors/index.js.map +0 -1
- package/dist/checker/search/eval.d.ts +0 -16
- package/dist/checker/search/eval.d.ts.map +0 -1
- package/dist/checker/search/eval.js +0 -308
- package/dist/checker/search/eval.js.map +0 -1
- package/dist/checker/search/index.d.ts.map +0 -1
- package/dist/checker/search/index.js +0 -556
- package/dist/checker/search/index.js.map +0 -1
- package/dist/checker/slicing/index.d.ts +0 -2
- package/dist/checker/slicing/index.d.ts.map +0 -1
- package/dist/checker/slicing/index.js +0 -2
- package/dist/checker/slicing/index.js.map +0 -1
- package/dist/checker/traces/index.d.ts +0 -2
- package/dist/checker/traces/index.d.ts.map +0 -1
- package/dist/checker/traces/index.js +0 -2
- package/dist/checker/traces/index.js.map +0 -1
- package/dist/extraction/index.d.ts +0 -34
- package/dist/extraction/index.d.ts.map +0 -1
- package/dist/extraction/index.js +0 -2982
- package/dist/extraction/index.js.map +0 -1
- package/dist/extraction/pipeline/index.d.ts.map +0 -1
- package/dist/extraction/pipeline/index.js.map +0 -1
- package/dist/extraction/spi/index.d.ts.map +0 -1
- package/dist/extraction/spi/index.js +0 -2
- package/dist/extraction/spi/index.js.map +0 -1
- package/dist/harness/index.d.ts.map +0 -1
- package/dist/harness/index.js.map +0 -1
- package/dist/kernel/artifacts/index.d.ts.map +0 -1
- package/dist/kernel/artifacts/index.js.map +0 -1
- package/dist/kernel/index.d.ts.map +0 -1
- package/dist/kernel/index.js.map +0 -1
- package/dist/kernel/ir/canonical.d.ts.map +0 -1
- package/dist/kernel/ir/canonical.js.map +0 -1
- package/dist/kernel/ir/domains.d.ts.map +0 -1
- package/dist/kernel/ir/domains.js.map +0 -1
- package/dist/kernel/ir/types.d.ts.map +0 -1
- package/dist/kernel/ir/validator.d.ts.map +0 -1
- package/dist/kernel/ir/validator.js.map +0 -1
- package/dist/kernel/overlay/index.d.ts.map +0 -1
- package/dist/kernel/overlay/index.js.map +0 -1
- package/dist/kernel/props/index.d.ts.map +0 -1
- package/dist/kernel/props/index.js.map +0 -1
- package/dist/kernel/trace/types.d.ts.map +0 -1
- package/dist/modality/check.d.ts +0 -3
- package/dist/modality/check.d.ts.map +0 -1
- package/dist/modality/check.js +0 -2
- package/dist/modality/check.js.map +0 -1
- package/dist/modality/ci.d.ts.map +0 -1
- package/dist/modality/ci.js.map +0 -1
- package/dist/modality/cli.js.map +0 -1
- package/dist/modality/codegen/model.d.ts +0 -3
- package/dist/modality/codegen/model.d.ts.map +0 -1
- package/dist/modality/codegen/model.js.map +0 -1
- package/dist/modality/codegen/replay-test.d.ts.map +0 -1
- package/dist/modality/codegen/replay-test.js.map +0 -1
- package/dist/modality/conform.d.ts +0 -3
- package/dist/modality/conform.d.ts.map +0 -1
- package/dist/modality/conform.js +0 -2
- package/dist/modality/conform.js.map +0 -1
- package/dist/modality/export-tla.d.ts +0 -3
- package/dist/modality/export-tla.d.ts.map +0 -1
- package/dist/modality/export-tla.js +0 -2
- package/dist/modality/export-tla.js.map +0 -1
- package/dist/modality/extract.d.ts.map +0 -1
- package/dist/modality/extract.js.map +0 -1
- package/dist/modality/features/check/command.d.ts.map +0 -1
- package/dist/modality/features/check/command.js.map +0 -1
- package/dist/modality/features/check/index.d.ts +0 -3
- package/dist/modality/features/check/index.d.ts.map +0 -1
- package/dist/modality/features/check/index.js +0 -2
- package/dist/modality/features/check/index.js.map +0 -1
- package/dist/modality/features/ci/command.d.ts.map +0 -1
- package/dist/modality/features/ci/command.js.map +0 -1
- package/dist/modality/features/ci/index.d.ts.map +0 -1
- package/dist/modality/features/ci/index.js.map +0 -1
- package/dist/modality/features/conform/command.d.ts.map +0 -1
- package/dist/modality/features/conform/command.js.map +0 -1
- package/dist/modality/features/conform/index.d.ts.map +0 -1
- package/dist/modality/features/conform/index.js.map +0 -1
- package/dist/modality/features/export/command.d.ts.map +0 -1
- package/dist/modality/features/export/command.js.map +0 -1
- package/dist/modality/features/export/index.d.ts.map +0 -1
- package/dist/modality/features/export/index.js +0 -2
- package/dist/modality/features/export/index.js.map +0 -1
- package/dist/modality/features/extract/command.d.ts.map +0 -1
- package/dist/modality/features/extract/command.js.map +0 -1
- package/dist/modality/features/extract/index.d.ts.map +0 -1
- package/dist/modality/features/extract/index.js.map +0 -1
- package/dist/modality/features/replay/command.d.ts.map +0 -1
- package/dist/modality/features/replay/command.js.map +0 -1
- package/dist/modality/features/replay/index.d.ts.map +0 -1
- package/dist/modality/features/replay/index.js.map +0 -1
- package/dist/modality/overlay.d.ts.map +0 -1
- package/dist/modality/overlay.js.map +0 -1
- package/dist/modality/registry/index.d.ts.map +0 -1
- package/dist/modality/registry/index.js.map +0 -1
- package/dist/modality/replay.d.ts +0 -3
- package/dist/modality/replay.d.ts.map +0 -1
- package/dist/modality/replay.js.map +0 -1
- package/dist/runtime/index.d.ts.map +0 -1
- package/dist/runtime/index.js.map +0 -1
- package/dist/sources/jotai/harness.d.ts.map +0 -1
- package/dist/sources/jotai/harness.js.map +0 -1
- package/dist/sources/jotai/index.d.ts +0 -11
- package/dist/sources/jotai/index.d.ts.map +0 -1
- package/dist/sources/jotai/index.js +0 -432
- package/dist/sources/jotai/index.js.map +0 -1
- package/dist/sources/router/harness.d.ts.map +0 -1
- package/dist/sources/router/harness.js.map +0 -1
- package/dist/sources/router/index.d.ts +0 -15
- package/dist/sources/router/index.d.ts.map +0 -1
- package/dist/sources/router/index.js +0 -41
- package/dist/sources/router/index.js.map +0 -1
- package/dist/sources/swr/harness.d.ts.map +0 -1
- package/dist/sources/swr/harness.js.map +0 -1
- package/dist/sources/swr/index.d.ts.map +0 -1
- package/dist/sources/swr/index.js +0 -528
- package/dist/sources/swr/index.js.map +0 -1
- package/dist/sources/use-state/harness.d.ts.map +0 -1
- package/dist/sources/use-state/harness.js.map +0 -1
- package/dist/sources/use-state/index.d.ts +0 -9
- package/dist/sources/use-state/index.d.ts.map +0 -1
- package/dist/sources/use-state/index.js.map +0 -1
- /package/dist/{kernel/ir → check}/types.js +0 -0
- /package/dist/{modality → cli}/ci.d.ts +0 -0
- /package/dist/{modality → cli}/ci.js +0 -0
- /package/dist/{modality → cli}/cli.d.ts +0 -0
- /package/dist/{modality → cli}/extract.js +0 -0
- /package/dist/{modality → cli}/features/ci/command.d.ts +0 -0
- /package/dist/{modality → cli}/features/ci/index.d.ts +0 -0
- /package/dist/{modality → cli}/features/ci/index.js +0 -0
- /package/dist/{modality → cli}/features/conform/index.d.ts +0 -0
- /package/dist/{modality → cli}/features/conform/index.js +0 -0
- /package/dist/{modality → cli}/features/extract/index.js +0 -0
- /package/dist/{modality → cli}/features/replay/index.d.ts +0 -0
- /package/dist/{modality → cli}/features/replay/index.js +0 -0
- /package/dist/{modality → cli}/replay.js +0 -0
- /package/dist/{kernel → core}/artifacts/index.d.ts +0 -0
- /package/dist/{kernel → core}/index.d.ts +0 -0
- /package/dist/{kernel → core}/index.js +0 -0
- /package/dist/{kernel → core}/ir/canonical.d.ts +0 -0
- /package/dist/{kernel → core}/ir/domains.d.ts +0 -0
- /package/dist/{kernel → core}/ir/types.d.ts +0 -0
- /package/dist/{kernel/report → core/ir}/types.js +0 -0
- /package/dist/{kernel → core}/ir/validator.d.ts +0 -0
- /package/dist/{kernel → core}/overlay/index.d.ts +0 -0
- /package/dist/{kernel → core}/props/index.d.ts +0 -0
- /package/dist/{kernel → core}/report/types.d.ts +0 -0
- /package/dist/{kernel/trace → core/report}/types.js +0 -0
- /package/dist/{kernel → core}/trace/types.d.ts +0 -0
- /package/dist/{checker/monitors → extract/engine/spi}/index.js +0 -0
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
import { defaultActionReplayTestsDir, defaultAppModelPath, defaultConformReportPath, defaultModelPath, defaultReplayReportPath, defaultReplayTestsDir, defaultReportPath, defaultTlaPath, defaultTracesDir, discoverPropsFiles, inferSourceFilesFromProps, } from "./defaults.js";
|
|
2
3
|
import { runCheckCommand } from "./features/check/index.js";
|
|
3
4
|
import { runCiCommand } from "./features/ci/index.js";
|
|
4
5
|
import { runConformCommand } from "./features/conform/index.js";
|
|
5
6
|
import { runExportTlaCommand } from "./features/export/index.js";
|
|
6
7
|
import { runExtractCommand } from "./features/extract/index.js";
|
|
8
|
+
import { runInitCommand } from "./features/init/index.js";
|
|
7
9
|
import { runReplayCommand } from "./features/replay/index.js";
|
|
8
10
|
function flagValue(args, flag) {
|
|
9
11
|
const index = args.indexOf(flag);
|
|
@@ -24,16 +26,29 @@ function positionals(args, valueFlags, repeatableValueFlags = []) {
|
|
|
24
26
|
}
|
|
25
27
|
async function main() {
|
|
26
28
|
const [, , command, ...args] = process.argv;
|
|
27
|
-
if (command !== "check" &&
|
|
28
|
-
|
|
29
|
-
|
|
29
|
+
if (command !== "check" &&
|
|
30
|
+
command !== "ci" &&
|
|
31
|
+
command !== "conform" &&
|
|
32
|
+
command !== "export" &&
|
|
33
|
+
command !== "extract" &&
|
|
34
|
+
command !== "init" &&
|
|
35
|
+
command !== "replay") {
|
|
36
|
+
console.log("Usage: modality init");
|
|
37
|
+
console.log(" modality extract [source.tsx ...] [--out .modality/model.json] [--app-model .modality/app.model.ts] [--report extraction-report.json] [--expect-model expected.json] [--config modality.config.ts] [--package-json package.json] [--disable-plugin id] [--effect-api name] [--explain-drift]");
|
|
38
|
+
console.log(" modality check [model.json] [props.mjs ...] [--report .modality/report.json]");
|
|
30
39
|
console.log(" modality ci <model.json> [props.ts] --artifacts .modality [--baseline report.json] [--source source.tsx] [--conform-count 8] [--min-transition-conform-pass-rate 1]");
|
|
31
40
|
console.log(" modality replay <trace.json> [--mode abstract|action] [--harness harness.ts] [--states states.json] [--observed observed-states.json] [--report report.json]");
|
|
32
41
|
console.log(" modality conform <walks.json> [--mode abstract|action] [--harness harness.ts] [--report conform-report.json]");
|
|
33
|
-
console.log(" modality conform --model model.json [--count 8] [--depth 4] [--seed 1] [--mode abstract|action] [--harness harness.ts] [--report conform-report.json]");
|
|
34
|
-
console.log(" modality export
|
|
42
|
+
console.log(" modality conform [--model .modality/model.json] [--count 8] [--depth 4] [--seed 1] [--mode abstract|action] [--harness harness.ts] [--report .modality/conform-report.json]");
|
|
43
|
+
console.log(" modality export [model.json] [--format tla] [--out .modality/model.tla]");
|
|
35
44
|
process.exit(command ? 1 : 0);
|
|
36
45
|
}
|
|
46
|
+
if (command === "init") {
|
|
47
|
+
const result = await runInitCommand();
|
|
48
|
+
for (const line of result.lines)
|
|
49
|
+
console.log(line);
|
|
50
|
+
process.exit(0);
|
|
51
|
+
}
|
|
37
52
|
if (command === "ci") {
|
|
38
53
|
const artifactDir = flagValue(args, "--artifacts");
|
|
39
54
|
const overlayPath = flagValue(args, "--overlay");
|
|
@@ -47,12 +62,33 @@ async function main() {
|
|
|
47
62
|
const conformHarnessPath = flagValue(args, "--conform-harness");
|
|
48
63
|
const minConformPassRateValue = flagValue(args, "--min-conform-pass-rate");
|
|
49
64
|
const minTransitionConformPassRateValue = flagValue(args, "--min-transition-conform-pass-rate");
|
|
50
|
-
const conformCount = conformCountValue
|
|
51
|
-
|
|
65
|
+
const conformCount = conformCountValue
|
|
66
|
+
? Number(conformCountValue)
|
|
67
|
+
: undefined;
|
|
68
|
+
const conformDepth = conformDepthValue
|
|
69
|
+
? Number(conformDepthValue)
|
|
70
|
+
: undefined;
|
|
52
71
|
const conformSeed = conformSeedValue ? Number(conformSeedValue) : undefined;
|
|
53
|
-
const minConformPassRate = minConformPassRateValue
|
|
54
|
-
|
|
55
|
-
|
|
72
|
+
const minConformPassRate = minConformPassRateValue
|
|
73
|
+
? Number(minConformPassRateValue)
|
|
74
|
+
: undefined;
|
|
75
|
+
const minTransitionConformPassRate = minTransitionConformPassRateValue
|
|
76
|
+
? Number(minTransitionConformPassRateValue)
|
|
77
|
+
: undefined;
|
|
78
|
+
const positional = positionals(args, [
|
|
79
|
+
"--artifacts",
|
|
80
|
+
"--overlay",
|
|
81
|
+
"--baseline",
|
|
82
|
+
"--source",
|
|
83
|
+
"--conform-walks",
|
|
84
|
+
"--conform-count",
|
|
85
|
+
"--conform-depth",
|
|
86
|
+
"--conform-seed",
|
|
87
|
+
"--conform-mode",
|
|
88
|
+
"--conform-harness",
|
|
89
|
+
"--min-conform-pass-rate",
|
|
90
|
+
"--min-transition-conform-pass-rate",
|
|
91
|
+
]);
|
|
56
92
|
const [modelPath, propsPath] = positional;
|
|
57
93
|
if (!modelPath)
|
|
58
94
|
throw new Error("Missing model.json path");
|
|
@@ -66,13 +102,29 @@ async function main() {
|
|
|
66
102
|
throw new Error("Missing --source path");
|
|
67
103
|
if (args.includes("--conform-walks") && !conformWalksPath)
|
|
68
104
|
throw new Error("Missing --conform-walks path");
|
|
69
|
-
const result = await runCiCommand({
|
|
105
|
+
const result = await runCiCommand({
|
|
106
|
+
modelPath,
|
|
107
|
+
propsPath,
|
|
108
|
+
artifactDir,
|
|
109
|
+
overlayPath,
|
|
110
|
+
baselinePath,
|
|
111
|
+
sourcePath,
|
|
112
|
+
conformWalksPath,
|
|
113
|
+
conformCount,
|
|
114
|
+
conformDepth,
|
|
115
|
+
conformSeed,
|
|
116
|
+
conformMode,
|
|
117
|
+
conformHarnessPath,
|
|
118
|
+
minConformPassRate,
|
|
119
|
+
minTransitionConformPassRate,
|
|
120
|
+
});
|
|
70
121
|
for (const line of result.lines)
|
|
71
122
|
console.log(line);
|
|
72
123
|
process.exit(result.exitCode);
|
|
73
124
|
}
|
|
74
125
|
if (command === "conform") {
|
|
75
|
-
const
|
|
126
|
+
const reportFlag = flagValue(args, "--report");
|
|
127
|
+
const reportPath = reportFlag ?? defaultConformReportPath;
|
|
76
128
|
const modelPath = flagValue(args, "--model");
|
|
77
129
|
const flaggedWalksPath = flagValue(args, "--walks");
|
|
78
130
|
const countValue = flagValue(args, "--count");
|
|
@@ -83,55 +135,90 @@ async function main() {
|
|
|
83
135
|
const walkCount = countValue ? Number(countValue) : undefined;
|
|
84
136
|
const depth = depthValue ? Number(depthValue) : undefined;
|
|
85
137
|
const seed = seedValue ? Number(seedValue) : undefined;
|
|
86
|
-
const walksPath = flaggedWalksPath ??
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
138
|
+
const walksPath = flaggedWalksPath ??
|
|
139
|
+
positionals(args, [
|
|
140
|
+
"--report",
|
|
141
|
+
"--model",
|
|
142
|
+
"--walks",
|
|
143
|
+
"--count",
|
|
144
|
+
"--depth",
|
|
145
|
+
"--seed",
|
|
146
|
+
"--mode",
|
|
147
|
+
"--harness",
|
|
148
|
+
])[0];
|
|
149
|
+
const effectiveModelPath = walksPath
|
|
150
|
+
? modelPath
|
|
151
|
+
: (modelPath ?? defaultModelPath);
|
|
152
|
+
if (args.includes("--report") && !reportFlag)
|
|
90
153
|
throw new Error("Missing --report path");
|
|
91
154
|
if (args.includes("--model") && !modelPath)
|
|
92
155
|
throw new Error("Missing --model path");
|
|
93
156
|
if (args.includes("--walks") && !flaggedWalksPath)
|
|
94
157
|
throw new Error("Missing --walks path");
|
|
95
|
-
const result = await runConformCommand({
|
|
158
|
+
const result = await runConformCommand({
|
|
159
|
+
walksPath,
|
|
160
|
+
modelPath: effectiveModelPath,
|
|
161
|
+
reportPath,
|
|
162
|
+
walkCount,
|
|
163
|
+
depth,
|
|
164
|
+
seed,
|
|
165
|
+
mode,
|
|
166
|
+
harnessPath,
|
|
167
|
+
});
|
|
96
168
|
for (const line of result.lines)
|
|
97
169
|
console.log(line);
|
|
98
170
|
process.exit(result.exitCode);
|
|
99
171
|
}
|
|
100
172
|
if (command === "export") {
|
|
101
|
-
const
|
|
102
|
-
const
|
|
173
|
+
const outFlag = flagValue(args, "--out");
|
|
174
|
+
const outPath = outFlag ?? defaultTlaPath;
|
|
175
|
+
const formatFlag = flagValue(args, "--format");
|
|
176
|
+
const format = formatFlag ?? "tla";
|
|
103
177
|
const moduleName = flagValue(args, "--module");
|
|
104
|
-
const modelPath = positionals(args, ["--out", "--format", "--module"])[0]
|
|
105
|
-
|
|
106
|
-
throw new Error("Missing model.json path");
|
|
107
|
-
if (!outPath)
|
|
108
|
-
throw new Error("Missing --out path");
|
|
178
|
+
const modelPath = positionals(args, ["--out", "--format", "--module"])[0] ??
|
|
179
|
+
defaultModelPath;
|
|
109
180
|
if (format !== "tla")
|
|
110
181
|
throw new Error(`Unsupported export format ${format}`);
|
|
182
|
+
if (args.includes("--out") && !outFlag)
|
|
183
|
+
throw new Error("Missing --out path");
|
|
184
|
+
if (args.includes("--format") && !formatFlag)
|
|
185
|
+
throw new Error("Missing --format value");
|
|
111
186
|
if (args.includes("--module") && !moduleName)
|
|
112
187
|
throw new Error("Missing --module path");
|
|
113
|
-
const result = await runExportTlaCommand({
|
|
188
|
+
const result = await runExportTlaCommand({
|
|
189
|
+
modelPath,
|
|
190
|
+
outPath,
|
|
191
|
+
moduleName,
|
|
192
|
+
});
|
|
114
193
|
for (const line of result.lines)
|
|
115
194
|
console.log(line);
|
|
116
195
|
process.exit(0);
|
|
117
196
|
}
|
|
118
197
|
if (command === "extract") {
|
|
119
198
|
const explainDrift = args.includes("--explain-drift");
|
|
120
|
-
const effectApiFlags = args.flatMap((arg, index) =>
|
|
121
|
-
const disabledPlugins = args.flatMap((arg, index) =>
|
|
122
|
-
const
|
|
123
|
-
|
|
124
|
-
|
|
199
|
+
const effectApiFlags = args.flatMap((arg, index) => arg === "--effect-api" && args[index + 1] ? [args[index + 1]] : []);
|
|
200
|
+
const disabledPlugins = args.flatMap((arg, index) => arg === "--disable-plugin" && args[index + 1] ? [args[index + 1]] : []);
|
|
201
|
+
const sourcePaths = positionals(args, [
|
|
202
|
+
"--out",
|
|
203
|
+
"--app-model",
|
|
204
|
+
"--report",
|
|
205
|
+
"--overlay",
|
|
206
|
+
"--expect-model",
|
|
207
|
+
"--config",
|
|
208
|
+
"--package-json",
|
|
209
|
+
], ["--effect-api", "--disable-plugin"]);
|
|
210
|
+
const outFlag = flagValue(args, "--out");
|
|
211
|
+
const appModelFlag = flagValue(args, "--app-model");
|
|
212
|
+
const modelPath = outFlag ?? defaultModelPath;
|
|
213
|
+
const appModelPath = appModelFlag ?? defaultAppModelPath;
|
|
125
214
|
const reportPath = flagValue(args, "--report");
|
|
126
215
|
const overlayPath = flagValue(args, "--overlay");
|
|
127
216
|
const expectModelPath = flagValue(args, "--expect-model");
|
|
128
217
|
const configPath = flagValue(args, "--config");
|
|
129
218
|
const packageJsonPath = flagValue(args, "--package-json");
|
|
130
|
-
if (!
|
|
131
|
-
throw new Error("Missing source.tsx path");
|
|
132
|
-
if (!modelPath)
|
|
219
|
+
if (args.includes("--out") && !outFlag)
|
|
133
220
|
throw new Error("Missing --out path");
|
|
134
|
-
if (args.includes("--app-model") && !
|
|
221
|
+
if (args.includes("--app-model") && !appModelFlag)
|
|
135
222
|
throw new Error("Missing --app-model path");
|
|
136
223
|
if (args.includes("--report") && !reportPath)
|
|
137
224
|
throw new Error("Missing --report path");
|
|
@@ -145,54 +232,100 @@ async function main() {
|
|
|
145
232
|
throw new Error("Missing --package-json path");
|
|
146
233
|
if (args.includes("--disable-plugin") && disabledPlugins.length === 0)
|
|
147
234
|
throw new Error("Missing --disable-plugin id");
|
|
148
|
-
const
|
|
235
|
+
const effectiveSourcePaths = sourcePaths.length > 0 ? sourcePaths : await inferSourceFilesFromProps();
|
|
236
|
+
const result = await runExtractCommand({
|
|
237
|
+
sourcePaths: effectiveSourcePaths,
|
|
238
|
+
modelPath,
|
|
239
|
+
appModelPath,
|
|
240
|
+
reportPath,
|
|
241
|
+
overlayPath,
|
|
242
|
+
expectModelPath,
|
|
243
|
+
configPath,
|
|
244
|
+
packageJsonPath,
|
|
245
|
+
disabledPlugins,
|
|
246
|
+
effectApis: effectApiFlags,
|
|
247
|
+
explainDrift,
|
|
248
|
+
});
|
|
149
249
|
for (const line of result.lines)
|
|
150
250
|
console.log(line);
|
|
151
251
|
process.exit(0);
|
|
152
252
|
}
|
|
153
253
|
if (command === "replay") {
|
|
154
|
-
const
|
|
254
|
+
const reportFlag = flagValue(args, "--report");
|
|
255
|
+
const reportPath = reportFlag ?? defaultReplayReportPath;
|
|
155
256
|
const statesPath = flagValue(args, "--states");
|
|
156
257
|
const observedPath = flagValue(args, "--observed");
|
|
157
258
|
const mode = flagValue(args, "--mode");
|
|
158
259
|
const harnessPath = flagValue(args, "--harness");
|
|
159
|
-
const tracePath = positionals(args, [
|
|
260
|
+
const tracePath = positionals(args, [
|
|
261
|
+
"--report",
|
|
262
|
+
"--states",
|
|
263
|
+
"--observed",
|
|
264
|
+
"--mode",
|
|
265
|
+
"--harness",
|
|
266
|
+
])[0];
|
|
160
267
|
if (!tracePath)
|
|
161
268
|
throw new Error("Missing trace.json path");
|
|
162
|
-
if (args.includes("--report") && !
|
|
269
|
+
if (args.includes("--report") && !reportFlag)
|
|
163
270
|
throw new Error("Missing --report path");
|
|
164
271
|
if (args.includes("--states") && !statesPath)
|
|
165
272
|
throw new Error("Missing --states path");
|
|
166
273
|
if (args.includes("--observed") && !observedPath)
|
|
167
274
|
throw new Error("Missing --observed path");
|
|
168
|
-
const result = await runReplayCommand({
|
|
275
|
+
const result = await runReplayCommand({
|
|
276
|
+
tracePath,
|
|
277
|
+
statesPath,
|
|
278
|
+
observedPath,
|
|
279
|
+
reportPath,
|
|
280
|
+
mode,
|
|
281
|
+
harnessPath,
|
|
282
|
+
});
|
|
169
283
|
for (const line of result.lines)
|
|
170
284
|
console.log(line);
|
|
171
285
|
process.exit(result.exitCode);
|
|
172
286
|
}
|
|
173
287
|
const reportPath = flagValue(args, "--report");
|
|
174
|
-
const
|
|
175
|
-
const
|
|
176
|
-
const
|
|
288
|
+
const tracesFlag = flagValue(args, "--traces");
|
|
289
|
+
const replayTestsFlag = flagValue(args, "--replay-tests");
|
|
290
|
+
const actionReplayTestsFlag = flagValue(args, "--action-replay-tests");
|
|
291
|
+
const tracesDir = tracesFlag ?? defaultTracesDir;
|
|
292
|
+
const replayTestsDir = replayTestsFlag ?? defaultReplayTestsDir;
|
|
293
|
+
const actionReplayTestsDir = actionReplayTestsFlag ?? defaultActionReplayTestsDir;
|
|
177
294
|
const statesPath = flagValue(args, "--states");
|
|
178
|
-
const positional = positionals(args, [
|
|
179
|
-
|
|
295
|
+
const positional = positionals(args, [
|
|
296
|
+
"--report",
|
|
297
|
+
"--overlay",
|
|
298
|
+
"--traces",
|
|
299
|
+
"--replay-tests",
|
|
300
|
+
"--action-replay-tests",
|
|
301
|
+
"--states",
|
|
302
|
+
]);
|
|
303
|
+
const [modelPath, ...propsPaths] = positional;
|
|
180
304
|
const overlayPath = flagValue(args, "--overlay");
|
|
181
|
-
|
|
182
|
-
|
|
305
|
+
const effectiveModelPath = modelPath ?? defaultModelPath;
|
|
306
|
+
const effectivePropsPaths = propsPaths.length > 0 ? propsPaths : await discoverPropsFiles();
|
|
183
307
|
if (args.includes("--report") && !reportPath)
|
|
184
308
|
throw new Error("Missing --report path");
|
|
185
309
|
if (args.includes("--overlay") && !overlayPath)
|
|
186
310
|
throw new Error("Missing --overlay path");
|
|
187
|
-
if (args.includes("--traces") && !
|
|
311
|
+
if (args.includes("--traces") && !tracesFlag)
|
|
188
312
|
throw new Error("Missing --traces path");
|
|
189
|
-
if (args.includes("--replay-tests") && !
|
|
313
|
+
if (args.includes("--replay-tests") && !replayTestsFlag)
|
|
190
314
|
throw new Error("Missing --replay-tests path");
|
|
191
|
-
if (args.includes("--action-replay-tests") && !
|
|
315
|
+
if (args.includes("--action-replay-tests") && !actionReplayTestsFlag)
|
|
192
316
|
throw new Error("Missing --action-replay-tests path");
|
|
193
317
|
if (args.includes("--states") && !statesPath)
|
|
194
318
|
throw new Error("Missing --states path");
|
|
195
|
-
const result = await runCheckCommand({
|
|
319
|
+
const result = await runCheckCommand({
|
|
320
|
+
modelPath: effectiveModelPath,
|
|
321
|
+
propsPaths: effectivePropsPaths,
|
|
322
|
+
reportPath: reportPath ?? defaultReportPath,
|
|
323
|
+
overlayPath,
|
|
324
|
+
tracesDir,
|
|
325
|
+
replayTestsDir,
|
|
326
|
+
actionReplayTestsDir,
|
|
327
|
+
statesPath,
|
|
328
|
+
});
|
|
196
329
|
for (const line of result.lines)
|
|
197
330
|
console.log(line);
|
|
198
331
|
process.exit(result.exitCode);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../../src/cli/codegen/model.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,KAAK,EAGX,MAAM,kBAAkB,CAAC;AAE1B,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAiBjD"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { canonicalJson } from "modality-ts/
|
|
1
|
+
import { canonicalJson, } from "modality-ts/core";
|
|
2
2
|
export function emitAppModel(model) {
|
|
3
3
|
return [
|
|
4
|
-
|
|
4
|
+
'import type { Model } from "modality-ts/core";',
|
|
5
5
|
"",
|
|
6
6
|
`export const M = ${canonicalJson(model)} as const satisfies Model;`,
|
|
7
7
|
"",
|
|
@@ -12,7 +12,7 @@ export function emitAppModel(model) {
|
|
|
12
12
|
"export type VarId = keyof AppState;",
|
|
13
13
|
"",
|
|
14
14
|
`export const initialState = ${canonicalJson(initialState(model.vars))} as const satisfies AppState;`,
|
|
15
|
-
""
|
|
15
|
+
"",
|
|
16
16
|
].join("\n");
|
|
17
17
|
}
|
|
18
18
|
function typeForDomain(domain) {
|
|
@@ -20,26 +20,34 @@ function typeForDomain(domain) {
|
|
|
20
20
|
case "bool":
|
|
21
21
|
return "boolean";
|
|
22
22
|
case "enum":
|
|
23
|
-
return domain.values.length > 0
|
|
23
|
+
return domain.values.length > 0
|
|
24
|
+
? domain.values.map(stringLiteralType).join(" | ")
|
|
25
|
+
: "never";
|
|
24
26
|
case "boundedInt":
|
|
25
27
|
return domain.min === domain.max ? JSON.stringify(domain.min) : "number";
|
|
26
28
|
case "option":
|
|
27
29
|
return `${typeForDomain(domain.inner)} | null`;
|
|
28
30
|
case "record":
|
|
29
|
-
return `{ ${Object.entries(domain.fields)
|
|
31
|
+
return `{ ${Object.entries(domain.fields)
|
|
32
|
+
.map(([key, field]) => `${quoteProperty(key)}: ${typeForDomain(field)};`)
|
|
33
|
+
.join(" ")} }`;
|
|
30
34
|
case "tagged":
|
|
31
|
-
return Object.entries(domain.variants)
|
|
35
|
+
return (Object.entries(domain.variants)
|
|
32
36
|
.map(([tagValue, variant]) => {
|
|
33
37
|
const body = variant.kind === "record"
|
|
34
|
-
? Object.entries(variant.fields)
|
|
38
|
+
? Object.entries(variant.fields)
|
|
39
|
+
.map(([key, field]) => `${quoteProperty(key)}: ${typeForDomain(field)};`)
|
|
40
|
+
.join(" ")
|
|
35
41
|
: `value: ${typeForDomain(variant)};`;
|
|
36
42
|
return `{ ${quoteProperty(domain.tag)}: ${stringLiteralType(tagValue)}; ${body} }`;
|
|
37
43
|
})
|
|
38
|
-
.join(" | ") || "never";
|
|
44
|
+
.join(" | ") || "never");
|
|
39
45
|
case "tokens":
|
|
40
|
-
return domain.names?.length
|
|
46
|
+
return domain.names?.length
|
|
47
|
+
? domain.names.map(stringLiteralType).join(" | ")
|
|
48
|
+
: "string";
|
|
41
49
|
case "lengthCat":
|
|
42
|
-
return "
|
|
50
|
+
return '"0" | "1" | "many"';
|
|
43
51
|
case "boundedList":
|
|
44
52
|
return `readonly ${parenthesizeIfUnion(typeForDomain(domain.inner))}[]`;
|
|
45
53
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.js","sourceRoot":"","sources":["../../../src/cli/codegen/model.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"replay-test.d.ts","sourceRoot":"","sources":["../../../src/cli/codegen/replay-test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAE7D,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,KAAK,GACX,kBAAkB,CAmBpB;AAED,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,KAAK,GACX,kBAAkB,CAyCpB;AAED,wBAAgB,qBAAqB,IAAI,kBAAkB,CA6C1D;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAElD"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { canonicalJson } from "modality-ts/
|
|
1
|
+
import { canonicalJson } from "modality-ts/core";
|
|
2
2
|
export function generateAbstractReplayTest(property, trace) {
|
|
3
3
|
const safeName = safeFileName(property);
|
|
4
4
|
return {
|
|
5
5
|
fileName: `${safeName}.replay.test.ts`,
|
|
6
6
|
source: [
|
|
7
7
|
`import { describe, expect, it } from "vitest";`,
|
|
8
|
-
`import { replayTrace, StateSequenceDriver, statesFromTrace } from "modality-ts/harness";`,
|
|
8
|
+
`import { replayTrace, StateSequenceDriver, statesFromTrace } from "modality-ts/cli/harness";`,
|
|
9
9
|
``,
|
|
10
10
|
`const trace = ${canonicalJson(trace)};`,
|
|
11
11
|
``,
|
|
@@ -15,8 +15,8 @@ export function generateAbstractReplayTest(property, trace) {
|
|
|
15
15
|
` expect(verdict.status).toBe("reproduced");`,
|
|
16
16
|
` });`,
|
|
17
17
|
`});`,
|
|
18
|
-
|
|
19
|
-
].join("\n")
|
|
18
|
+
``,
|
|
19
|
+
].join("\n"),
|
|
20
20
|
};
|
|
21
21
|
}
|
|
22
22
|
export function generateActionReplayTest(property, trace) {
|
|
@@ -28,8 +28,8 @@ export function generateActionReplayTest(property, trace) {
|
|
|
28
28
|
` * @vitest-environment jsdom`,
|
|
29
29
|
` */`,
|
|
30
30
|
`import { describe, expect, it } from "vitest";`,
|
|
31
|
-
`import { createDomReplayActor, ObservableActionReplayDriver, replayTrace } from "modality-ts/harness";`,
|
|
32
|
-
`import type { ModalityReplayHarness, ObservationSource } from "modality-ts/harness";`,
|
|
31
|
+
`import { createDomReplayActor, ObservableActionReplayDriver, replayTrace } from "modality-ts/cli/harness";`,
|
|
32
|
+
`import type { ModalityReplayHarness, ObservationSource } from "modality-ts/cli/harness";`,
|
|
33
33
|
`import { observeModalityReplay, renderModalityReplay } from "./modality.replay.harness.js";`,
|
|
34
34
|
``,
|
|
35
35
|
`const trace = ${canonicalJson(trace)};`,
|
|
@@ -57,16 +57,16 @@ export function generateActionReplayTest(property, trace) {
|
|
|
57
57
|
` expect(verdict.status).toBe("reproduced");`,
|
|
58
58
|
` });`,
|
|
59
59
|
`});`,
|
|
60
|
-
|
|
61
|
-
].join("\n")
|
|
60
|
+
``,
|
|
61
|
+
].join("\n"),
|
|
62
62
|
};
|
|
63
63
|
}
|
|
64
64
|
export function generateReplayHarness() {
|
|
65
65
|
return {
|
|
66
66
|
fileName: "modality.replay.harness.ts",
|
|
67
67
|
source: [
|
|
68
|
-
`import { createDeterministicReplayAsyncController, observationSource, type DeterministicReplayAsyncController, type ModalityReplayHarness, type ObservationSource } from "modality-ts/harness";`,
|
|
69
|
-
`import type { Trace } from "modality-ts/
|
|
68
|
+
`import { createDeterministicReplayAsyncController, observationSource, type DeterministicReplayAsyncController, type ModalityReplayHarness, type ObservationSource } from "modality-ts/cli/harness";`,
|
|
69
|
+
`import type { Trace } from "modality-ts/core";`,
|
|
70
70
|
``,
|
|
71
71
|
`declare global {`,
|
|
72
72
|
` var __modalityRenderReplayApp: ((trace: Trace, replayAsync: DeterministicReplayAsyncController) => Partial<ModalityReplayHarness> | Promise<Partial<ModalityReplayHarness>>) | undefined;`,
|
|
@@ -103,8 +103,8 @@ export function generateReplayHarness() {
|
|
|
103
103
|
`function cssString(value: string): string {`,
|
|
104
104
|
` return value.replace(/["\\\\]/g, "\\\\$&");`,
|
|
105
105
|
`}`,
|
|
106
|
-
|
|
107
|
-
].join("\n")
|
|
106
|
+
``,
|
|
107
|
+
].join("\n"),
|
|
108
108
|
};
|
|
109
109
|
}
|
|
110
110
|
export function safeFileName(value) {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"replay-test.js","sourceRoot":"","sources":["../../../src/cli/codegen/replay-test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAc,MAAM,kBAAkB,CAAC;AAO7D,MAAM,UAAU,0BAA0B,CACxC,QAAgB,EAChB,KAAY;IAEZ,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IACxC,OAAO;QACL,QAAQ,EAAE,GAAG,QAAQ,iBAAiB;QACtC,MAAM,EAAE;YACN,gDAAgD;YAChD,8FAA8F;YAC9F,EAAE;YACF,iBAAiB,aAAa,CAAC,KAAK,CAAC,GAAG;YACxC,EAAE;YACF,YAAY,IAAI,CAAC,SAAS,CAAC,UAAU,QAAQ,EAAE,CAAC,WAAW;YAC3D,kDAAkD;YAClD,gGAAgG;YAChG,gDAAgD;YAChD,OAAO;YACP,KAAK;YACL,EAAE;SACH,CAAC,IAAI,CAAC,IAAI,CAAC;KACb,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,QAAgB,EAChB,KAAY;IAEZ,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;IACxC,OAAO;QACL,QAAQ,EAAE,GAAG,QAAQ,wBAAwB;QAC7C,MAAM,EAAE;YACN,KAAK;YACL,8BAA8B;YAC9B,KAAK;YACL,gDAAgD;YAChD,4GAA4G;YAC5G,0FAA0F;YAC1F,6FAA6F;YAC7F,EAAE;YACF,iBAAiB,aAAa,CAAC,KAAK,CAAC,GAAG;YACxC,0HAA0H;YAC1H,EAAE;YACF,YAAY,IAAI,CAAC,SAAS,CAAC,UAAU,QAAQ,EAAE,CAAC,WAAW;YAC3D,8DAA8D;YAC9D,qFAAqF;YACrF,+HAA+H;YAC/H,6BAA6B;YAC7B,+CAA+C;YAC/C,uDAAuD;YACvD,6CAA6C;YAC7C,0CAA0C;YAC1C,QAAQ;YACR,0CAA0C;YAC1C,yCAAyC;YACzC,yCAAyC;YACzC,uCAAuC;YACvC,uDAAuD;YACvD,mCAAmC;YACnC,0CAA0C;YAC1C,SAAS;YACT,uKAAuK;YACvK,gDAAgD;YAChD,OAAO;YACP,KAAK;YACL,EAAE;SACH,CAAC,IAAI,CAAC,IAAI,CAAC;KACb,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO;QACL,QAAQ,EAAE,4BAA4B;QACtC,MAAM,EAAE;YACN,qMAAqM;YACrM,gDAAgD;YAChD,EAAE;YACF,kBAAkB;YAClB,6LAA6L;YAC7L,GAAG;YACH,EAAE;YACF,4FAA4F;YAC5F,mEAAmE;YACnE,wFAAwF;YACxF,YAAY;YACZ,oCAAoC;YACpC,mCAAmC;YACnC,kBAAkB;YAClB,+CAA+C;YAC/C,2BAA2B;YAC3B,MAAM;YACN,GAAG;YACH,EAAE;YACF,6FAA6F;YAC7F,2DAA2D;YAC3D,yGAAyG;YACzG,0CAA0C;YAC1C,sEAAsE;YACtE,OAAO;YACP,GAAG;YACH,EAAE;YACF,sDAAsD;YACtD,SAAS;YACT,8BAA8B;YAC9B,aAAa;YACb,kBAAkB;YAClB,KAAK;YACL,GAAG;YACH,EAAE;YACF,6CAA6C;YAC7C,+CAA+C;YAC/C,GAAG;YACH,EAAE;SACH,CAAC,IAAI,CAAC,IAAI,CAAC;KACb,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,OAAO,KAAK,CAAC,OAAO,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;AACjD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conform.d.ts","sourceRoot":"","sources":["../../src/cli/conform.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,6BAA6B,CAAC;AACrC,YAAY,EACV,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,6BAA6B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conform.js","sourceRoot":"","sources":["../../src/cli/conform.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,6BAA6B,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export declare const defaultArtifactDir = ".modality";
|
|
2
|
+
export declare const defaultModelPath: string;
|
|
3
|
+
export declare const defaultAppModelPath: string;
|
|
4
|
+
export declare const defaultTlaPath: string;
|
|
5
|
+
export declare const defaultReportPath: string;
|
|
6
|
+
export declare const defaultReplayReportPath: string;
|
|
7
|
+
export declare const defaultConformReportPath: string;
|
|
8
|
+
export declare const defaultTracesDir: string;
|
|
9
|
+
export declare const defaultReplayTestsDir: string;
|
|
10
|
+
export declare const defaultActionReplayTestsDir: string;
|
|
11
|
+
export declare function discoverPropsFiles(root?: string): Promise<string[]>;
|
|
12
|
+
export declare function inferSourceFilesFromProps(root?: string): Promise<string[]>;
|
|
13
|
+
//# sourceMappingURL=defaults.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/cli/defaults.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,kBAAkB,cAAc,CAAC;AAC9C,eAAO,MAAM,gBAAgB,QAAyC,CAAC;AACvE,eAAO,MAAM,mBAAmB,QAA2C,CAAC;AAC5E,eAAO,MAAM,cAAc,QAAwC,CAAC;AACpE,eAAO,MAAM,iBAAiB,QAA0C,CAAC;AACzE,eAAO,MAAM,uBAAuB,QAGnC,CAAC;AACF,eAAO,MAAM,wBAAwB,QAGpC,CAAC;AACF,eAAO,MAAM,gBAAgB,QAAqC,CAAC;AACnE,eAAO,MAAM,qBAAqB,QAA2C,CAAC;AAC9E,eAAO,MAAM,2BAA2B,QAGvC,CAAC;AAIF,wBAAsB,kBAAkB,CACtC,IAAI,SAAgB,GACnB,OAAO,CAAC,MAAM,EAAE,CAAC,CAGnB;AAED,wBAAsB,yBAAyB,CAC7C,IAAI,SAAgB,GACnB,OAAO,CAAC,MAAM,EAAE,CAAC,CAwBnB"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { readdir, stat } from "node:fs/promises";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
export const defaultArtifactDir = ".modality";
|
|
4
|
+
export const defaultModelPath = join(defaultArtifactDir, "model.json");
|
|
5
|
+
export const defaultAppModelPath = join(defaultArtifactDir, "app.model.ts");
|
|
6
|
+
export const defaultTlaPath = join(defaultArtifactDir, "model.tla");
|
|
7
|
+
export const defaultReportPath = join(defaultArtifactDir, "report.json");
|
|
8
|
+
export const defaultReplayReportPath = join(defaultArtifactDir, "replay-report.json");
|
|
9
|
+
export const defaultConformReportPath = join(defaultArtifactDir, "conform-report.json");
|
|
10
|
+
export const defaultTracesDir = join(defaultArtifactDir, "traces");
|
|
11
|
+
export const defaultReplayTestsDir = join(defaultArtifactDir, "replay-tests");
|
|
12
|
+
export const defaultActionReplayTestsDir = join(defaultArtifactDir, "action-replay-tests");
|
|
13
|
+
const ignoredDirs = new Set([".git", ".modality", "dist", "node_modules"]);
|
|
14
|
+
export async function discoverPropsFiles(root = process.cwd()) {
|
|
15
|
+
const files = await discoverPropsFilesIn(root);
|
|
16
|
+
return files.sort((left, right) => left.localeCompare(right));
|
|
17
|
+
}
|
|
18
|
+
export async function inferSourceFilesFromProps(root = process.cwd()) {
|
|
19
|
+
const propsFiles = await discoverPropsFiles(root);
|
|
20
|
+
if (propsFiles.length === 0) {
|
|
21
|
+
throw new Error(`No *.props.mjs files found under ${root}`);
|
|
22
|
+
}
|
|
23
|
+
const sourceFiles = propsFiles.map((path) => path.replace(/\.props\.mjs$/, ".tsx"));
|
|
24
|
+
const missing = [];
|
|
25
|
+
for (const sourceFile of sourceFiles) {
|
|
26
|
+
try {
|
|
27
|
+
const info = await stat(sourceFile);
|
|
28
|
+
if (!info.isFile())
|
|
29
|
+
missing.push(sourceFile);
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
if (error.code !== "ENOENT")
|
|
33
|
+
throw error;
|
|
34
|
+
missing.push(sourceFile);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
if (missing.length > 0) {
|
|
38
|
+
throw new Error(`Missing inferred source files for props: ${missing.join(", ")}`);
|
|
39
|
+
}
|
|
40
|
+
return sourceFiles;
|
|
41
|
+
}
|
|
42
|
+
async function discoverPropsFilesIn(dir) {
|
|
43
|
+
const entries = await readdir(dir, { withFileTypes: true });
|
|
44
|
+
const discovered = await Promise.all(entries.map(async (entry) => {
|
|
45
|
+
const path = join(dir, entry.name);
|
|
46
|
+
if (entry.isDirectory()) {
|
|
47
|
+
if (ignoredDirs.has(entry.name))
|
|
48
|
+
return [];
|
|
49
|
+
return discoverPropsFilesIn(path);
|
|
50
|
+
}
|
|
51
|
+
if (entry.isFile() && entry.name.endsWith(".props.mjs"))
|
|
52
|
+
return [path];
|
|
53
|
+
return [];
|
|
54
|
+
}));
|
|
55
|
+
return discovered.flat();
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=defaults.js.map
|