@dreamboard-games/sdk 0.2.1-alpha.1 → 0.3.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{HandView-ncJIVLhN.d.ts → HandView-PYDmehVD.d.ts} +1 -1
- package/dist/{ResourceCounter-CTREyF73.d.ts → ResourceCounter-BTXklCEZ.d.ts} +1 -1
- package/dist/{ThemeProvider-BBMVT3KG.d.ts → ThemeProvider-DvMl17Ny.d.ts} +1 -1
- package/dist/{chunk-NKCRKGR2.js → chunk-3RQEICD3.js} +2 -2
- package/dist/{chunk-ZABVH7AO.js → chunk-ADYH6PVT.js} +1336 -1363
- package/dist/chunk-ADYH6PVT.js.map +1 -0
- package/dist/{chunk-PEI3FIL2.js → chunk-P7VMTJ5D.js} +2 -2
- package/dist/{chunk-PEI3FIL2.js.map → chunk-P7VMTJ5D.js.map} +1 -1
- package/dist/{chunk-WG4JQL3S.js → chunk-QZ6X4B5P.js} +1177 -1109
- package/dist/chunk-QZ6X4B5P.js.map +1 -0
- package/dist/{chunk-MZNVHMJ5.js → chunk-TXXLS3OI.js} +405 -309
- package/dist/chunk-TXXLS3OI.js.map +1 -0
- package/dist/{chunk-FDNZTDD6.js → chunk-W6SGFWXH.js} +48 -44
- package/dist/chunk-W6SGFWXH.js.map +1 -0
- package/dist/{chunk-MKXPVOUT.js → chunk-Y2AFYBMB.js} +48 -4
- package/dist/chunk-Y2AFYBMB.js.map +1 -0
- package/dist/{index-BwqPQtBu.d.ts → codegen.d.ts} +57 -565
- package/dist/{infrastructure/workspace-codegen.js → codegen.js} +3 -3
- package/dist/{components-BoiVSYqx.d.ts → components-DaIqi9QM.d.ts} +48 -37
- package/dist/{hex-board-view-1iAyJRFn.d.ts → hex-board-view-UCUjMALd.d.ts} +2 -2
- package/dist/{infrastructure/reducer-bundle-abi.d.ts → index.d-BGqVifr_.d.ts} +289 -10
- package/dist/index.js +1 -1
- package/dist/package-set.d.ts +2 -2
- package/dist/package-set.js +1 -1
- package/dist/primitive-props-BNHDkgd7.d.ts +16 -0
- package/dist/reducer-contract.d.ts +3 -0
- package/dist/{infrastructure/reducer-bundle-abi.js → reducer-contract.js} +4 -4
- package/dist/reducer.d.ts +185 -179
- package/dist/reducer.js +1363 -1372
- package/dist/reducer.js.map +1 -1
- package/dist/runtime/primitives.d.ts +9 -9
- package/dist/runtime/primitives.js +7 -7
- package/dist/runtime/runtime-api.d.ts +2 -0
- package/dist/runtime/runtime-api.js +1 -0
- package/dist/runtime/workspace-contract.d.ts +62 -17
- package/dist/runtime/workspace-contract.js +5 -6
- package/dist/{runtime-api-CPLm_XDG.d.ts → runtime-api-tGL3ArsB.d.ts} +103 -4
- package/dist/runtime.d.ts +11 -57
- package/dist/runtime.js +487 -8
- package/dist/runtime.js.map +1 -1
- package/dist/testing.d.ts +4 -4
- package/dist/testing.js.map +1 -1
- package/dist/types.d.ts +1531 -85
- package/dist/types.js +1 -3
- package/dist/types.js.map +1 -1
- package/dist/ui/components.d.ts +7 -8
- package/dist/ui/components.js +1 -1
- package/dist/ui/defaults.d.ts +1 -1
- package/dist/ui/{types/player-state.d.ts → player-state.d.ts} +2 -2
- package/dist/{ui-contract-rzKBwOLC.d.ts → ui-contract-SctM4ibF.d.ts} +155 -150
- package/dist/ui.d.ts +10 -11
- package/dist/ui.js +2 -2
- package/package.json +30 -75
- package/dist/bundle-CDd5FKeD.d.ts +0 -283
- package/dist/cards-Sl3b40Mv.d.ts +0 -13
- package/dist/chunk-326PGVAA.js +0 -34
- package/dist/chunk-326PGVAA.js.map +0 -1
- package/dist/chunk-FDNZTDD6.js.map +0 -1
- package/dist/chunk-I46YJSOD.js +0 -1
- package/dist/chunk-MKXPVOUT.js.map +0 -1
- package/dist/chunk-MZNVHMJ5.js.map +0 -1
- package/dist/chunk-T52J5RMF.js +0 -1
- package/dist/chunk-WG4JQL3S.js.map +0 -1
- package/dist/chunk-XV6D3ET4.js +0 -485
- package/dist/chunk-XV6D3ET4.js.map +0 -1
- package/dist/chunk-ZABVH7AO.js.map +0 -1
- package/dist/generated/runtime/primitives.d.ts +0 -13
- package/dist/generated/runtime/primitives.js +0 -181
- package/dist/generated/runtime/primitives.js.map +0 -1
- package/dist/generated/runtime-api.d.ts +0 -3
- package/dist/generated/runtime-api.js +0 -2
- package/dist/generated/runtime.d.ts +0 -15
- package/dist/generated/runtime.js +0 -19
- package/dist/generated/runtime.js.map +0 -1
- package/dist/generated/workspace-contract.d.ts +0 -15
- package/dist/generated/workspace-contract.js +0 -15
- package/dist/generated/workspace-contract.js.map +0 -1
- package/dist/infrastructure/reducer-bundle-abi.js.map +0 -1
- package/dist/infrastructure/workspace-codegen.d.ts +0 -53
- package/dist/infrastructure/workspace-codegen.js.map +0 -1
- package/dist/manifest-contract-BNHVGFtU.d.ts +0 -9
- package/dist/primitive-props-DpKs-GCr.d.ts +0 -11
- package/dist/runtime/types/runtime-api.d.ts +0 -1
- package/dist/runtime/types/runtime-api.js +0 -2
- package/dist/runtime/types/runtime-api.js.map +0 -1
- package/dist/runtime-api-3dshj6kK.d.ts +0 -101
- package/dist/slots-1GPGihk8.d.ts +0 -8
- package/src/browser-interaction/attributes.ts +0 -211
- package/src/browser-interaction/canonical.ts +0 -77
- package/src/browser-interaction/constants.ts +0 -77
- package/src/browser-interaction/effects.ts +0 -176
- package/src/browser-interaction/index.ts +0 -111
- package/src/browser-interaction/normalize.ts +0 -997
- package/src/browser-interaction/registry.ts +0 -70
- package/src/browser-interaction/resolve.ts +0 -596
- package/src/browser-interaction/schemas.ts +0 -152
- package/src/browser-interaction/types.ts +0 -304
- package/src/browser-interaction.ts +0 -1
- package/src/generated/reducer-contract/builders.ts +0 -90
- package/src/generated/reducer-contract/version.ts +0 -9
- package/src/generated/reducer-contract/wire.ts +0 -100
- package/src/generated/reducer-contract/zod.ts +0 -103
- package/src/generated/runtime/primitives.ts +0 -2
- package/src/generated/runtime-api.ts +0 -5
- package/src/generated/runtime.ts +0 -35
- package/src/generated/workspace-contract.ts +0 -2
- package/src/index.ts +0 -7
- package/src/infrastructure/reducer-bundle-abi.ts +0 -8
- package/src/infrastructure/reducer-contract/bundle.ts +0 -37
- package/src/infrastructure/workspace-codegen/hex-geometry.ts +0 -69
- package/src/infrastructure/workspace-codegen/index.ts +0 -64
- package/src/infrastructure/workspace-codegen/manifest-contract.ts +0 -6632
- package/src/infrastructure/workspace-codegen/manifest-validation.ts +0 -795
- package/src/infrastructure/workspace-codegen/ownership.ts +0 -131
- package/src/infrastructure/workspace-codegen/preset-card-sets.ts +0 -169
- package/src/infrastructure/workspace-codegen/seeds.ts +0 -1705
- package/src/infrastructure/workspace-codegen.ts +0 -1
- package/src/package-set.ts +0 -19
- package/src/reducer/authoring/contract.ts +0 -157
- package/src/reducer/authoring/effect.ts +0 -224
- package/src/reducer/authoring/game.ts +0 -23
- package/src/reducer/authoring/interaction.ts +0 -98
- package/src/reducer/authoring/phase.ts +0 -300
- package/src/reducer/authoring/types.ts +0 -70
- package/src/reducer/authoring/validation.ts +0 -382
- package/src/reducer/authoring/view-stage.ts +0 -68
- package/src/reducer/authoring.ts +0 -29
- package/src/reducer/bundle/ingress-bundle.ts +0 -491
- package/src/reducer/bundle/trusted/engine-instruction-resolver.ts +0 -254
- package/src/reducer/bundle/trusted/flow-instruction-resolver.ts +0 -73
- package/src/reducer/bundle/trusted/instruction-runner.ts +0 -414
- package/src/reducer/bundle/trusted/interaction-authorization.ts +0 -137
- package/src/reducer/bundle/trusted/interaction-collectors.ts +0 -859
- package/src/reducer/bundle/trusted/interaction-decision.ts +0 -747
- package/src/reducer/bundle/trusted/interaction-resolver.ts +0 -95
- package/src/reducer/bundle/trusted/interaction-types.ts +0 -174
- package/src/reducer/bundle/trusted/lifecycle-runner.ts +0 -427
- package/src/reducer/bundle/trusted/projection-builder.ts +0 -680
- package/src/reducer/bundle/trusted/projection-context.ts +0 -39
- package/src/reducer/bundle/trusted/rng-sampler.ts +0 -150
- package/src/reducer/bundle/trusted/runtime-registry.ts +0 -120
- package/src/reducer/bundle/trusted/runtime-scope.ts +0 -336
- package/src/reducer/bundle/trusted/simultaneous-player.ts +0 -97
- package/src/reducer/bundle/trusted/stage-resolver.ts +0 -87
- package/src/reducer/bundle/trusted/static-projection.ts +0 -116
- package/src/reducer/bundle/trusted/trusted-runtime-args.ts +0 -97
- package/src/reducer/bundle/trusted/trusted-runtime-result.ts +0 -39
- package/src/reducer/bundle/trusted/trusted-setup-profiles.ts +0 -43
- package/src/reducer/bundle/trusted/trusted-state-codec.ts +0 -48
- package/src/reducer/bundle/trusted-bundle.ts +0 -97
- package/src/reducer/bundle/types.ts +0 -171
- package/src/reducer/bundle.ts +0 -2
- package/src/reducer/client-param-schemas.ts +0 -57
- package/src/reducer/compose.ts +0 -34
- package/src/reducer/core/runtime-input.ts +0 -30
- package/src/reducer/core/runtime-instruction.ts +0 -59
- package/src/reducer/core/types.ts +0 -62
- package/src/reducer/definition-index.ts +0 -277
- package/src/reducer/derived.ts +0 -106
- package/src/reducer/effects.ts +0 -92
- package/src/reducer/engine/runtime-instruction-engine.ts +0 -155
- package/src/reducer/ingress/decode-runtime-input.ts +0 -7
- package/src/reducer/ingress/decode-session-state.ts +0 -9
- package/src/reducer/ingress/encode-session-state.ts +0 -6
- package/src/reducer/ingress/input-codec.ts +0 -18
- package/src/reducer/ingress/phase-schemas.ts +0 -62
- package/src/reducer/ingress/raw-types.ts +0 -107
- package/src/reducer/ingress/runtime-codec.ts +0 -14
- package/src/reducer/ingress/runtime-payload.ts +0 -13
- package/src/reducer/ingress/session-codec.ts +0 -392
- package/src/reducer/ingress/types.ts +0 -6
- package/src/reducer/inputs/boardInput.ts +0 -217
- package/src/reducer/inputs/boardTarget.ts +0 -190
- package/src/reducer/inputs/cardInput.ts +0 -86
- package/src/reducer/inputs/cardTarget.ts +0 -101
- package/src/reducer/inputs/choiceTarget.ts +0 -104
- package/src/reducer/inputs/defineInputs.ts +0 -71
- package/src/reducer/inputs/formInput.ts +0 -809
- package/src/reducer/inputs/many.ts +0 -120
- package/src/reducer/inputs/promptInput.ts +0 -87
- package/src/reducer/inputs/rngInput.ts +0 -58
- package/src/reducer/inputs/targetRule.ts +0 -123
- package/src/reducer/inputs.ts +0 -41
- package/src/reducer/model/definition.ts +0 -1072
- package/src/reducer/model/extract.ts +0 -745
- package/src/reducer/model/manifest.ts +0 -570
- package/src/reducer/model/queries.ts +0 -641
- package/src/reducer/model/runtime.ts +0 -264
- package/src/reducer/model/spec.ts +0 -1386
- package/src/reducer/model/table.ts +0 -260
- package/src/reducer/model.ts +0 -7
- package/src/reducer/ops.ts +0 -1034
- package/src/reducer/parse-utils.ts +0 -28
- package/src/reducer/per-player.ts +0 -422
- package/src/reducer/rng.ts +0 -69
- package/src/reducer/schema-helpers.ts +0 -185
- package/src/reducer/setup-bootstrap-helpers.ts +0 -171
- package/src/reducer/setup-bootstrap.ts +0 -481
- package/src/reducer/table-ops.ts +0 -2671
- package/src/reducer/table-queries.ts +0 -372
- package/src/reducer/transaction.ts +0 -120
- package/src/reducer.ts +0 -314
- package/src/runtime/primitives.ts +0 -1
- package/src/runtime/types/runtime-api.ts +0 -1
- package/src/runtime/workspace-contract.ts +0 -32
- package/src/runtime-internal/components/InteractionForm.tsx +0 -1647
- package/src/runtime-internal/components/PluginRuntime.tsx +0 -105
- package/src/runtime-internal/components/board/target-layer.ts +0 -72
- package/src/runtime-internal/context/ClientParamSchemaContext.tsx +0 -44
- package/src/runtime-internal/context/InteractionDraftContext.tsx +0 -279
- package/src/runtime-internal/context/PluginSessionContext.tsx +0 -47
- package/src/runtime-internal/context/PluginStateContext.tsx +0 -303
- package/src/runtime-internal/context/RuntimeContext.tsx +0 -96
- package/src/runtime-internal/defaults/components.tsx +0 -409
- package/src/runtime-internal/defaults/index.ts +0 -11
- package/src/runtime-internal/errors/ValidationError.ts +0 -29
- package/src/runtime-internal/hooks/useActivePlayers.ts +0 -33
- package/src/runtime-internal/hooks/useBoardInteractions.ts +0 -727
- package/src/runtime-internal/hooks/useGameSelector.ts +0 -105
- package/src/runtime-internal/hooks/useGameView.ts +0 -9
- package/src/runtime-internal/hooks/useInteractionByKey.ts +0 -354
- package/src/runtime-internal/hooks/useInteractionHandle.ts +0 -438
- package/src/runtime-internal/hooks/useIsMyTurn.ts +0 -20
- package/src/runtime-internal/hooks/useLobby.ts +0 -76
- package/src/runtime-internal/hooks/useMe.ts +0 -48
- package/src/runtime-internal/hooks/usePlayerInfo.ts +0 -28
- package/src/runtime-internal/hooks/usePlayerTurnOrder.ts +0 -23
- package/src/runtime-internal/hooks/usePluginRuntime.ts +0 -147
- package/src/runtime-internal/hooks/useSeatInbox.ts +0 -61
- package/src/runtime-internal/hooks/useSimultaneousPhase.ts +0 -10
- package/src/runtime-internal/index.ts +0 -42
- package/src/runtime-internal/internal.ts +0 -43
- package/src/runtime-internal/plugin-styles.css +0 -250
- package/src/runtime-internal/primitives/board.tsx +0 -530
- package/src/runtime-internal/primitives/dialog-lifecycle.ts +0 -58
- package/src/runtime-internal/primitives/dice.tsx +0 -79
- package/src/runtime-internal/primitives/game-ui-provider.tsx +0 -35
- package/src/runtime-internal/primitives/game.tsx +0 -387
- package/src/runtime-internal/primitives/hand-intent-adapter.ts +0 -147
- package/src/runtime-internal/primitives/hand-surface.tsx +0 -594
- package/src/runtime-internal/primitives/index.ts +0 -196
- package/src/runtime-internal/primitives/interaction-form-binding.tsx +0 -56
- package/src/runtime-internal/primitives/interaction-submit.ts +0 -90
- package/src/runtime-internal/primitives/interaction.tsx +0 -1146
- package/src/runtime-internal/primitives/phase.tsx +0 -43
- package/src/runtime-internal/primitives/player-roster.tsx +0 -302
- package/src/runtime-internal/primitives/primitive-props.tsx +0 -101
- package/src/runtime-internal/primitives/prompt.tsx +0 -255
- package/src/runtime-internal/primitives/ui.tsx +0 -60
- package/src/runtime-internal/primitives/zone.tsx +0 -791
- package/src/runtime-internal/reducer.ts +0 -30
- package/src/runtime-internal/runtime/createPluginRuntimeAPI.ts +0 -605
- package/src/runtime-internal/types/plugin-state.ts +0 -514
- package/src/runtime-internal/types/reducer-state.ts +0 -24
- package/src/runtime-internal/types/runtime-api.ts +0 -114
- package/src/runtime-internal/ui-contract.ts +0 -519
- package/src/runtime-internal/utils/browser-interaction-effects.ts +0 -240
- package/src/runtime-internal/utils/card-intent-adapter.ts +0 -546
- package/src/runtime-internal/utils/interaction-draft-digest.ts +0 -252
- package/src/runtime-internal/utils/interaction-inputs.ts +0 -492
- package/src/runtime-internal/utils/interaction-labels.ts +0 -23
- package/src/runtime-internal/utils/interaction-router.ts +0 -273
- package/src/runtime-internal/utils/interaction-status.ts +0 -74
- package/src/runtime-internal/utils/semantic-projection-digest.ts +0 -407
- package/src/runtime-internal/workspace-contract.ts +0 -1170
- package/src/runtime.ts +0 -34
- package/src/testing/create-expect-api.ts +0 -352
- package/src/testing/create-test-runtime.ts +0 -381
- package/src/testing/definitions.ts +0 -127
- package/src/testing/index.ts +0 -3
- package/src/testing.ts +0 -1
- package/src/type-stubs/manifest-contract.d.ts +0 -42
- package/src/type-stubs/manifest-contract.js +0 -72
- package/src/type-stubs/ui-contract.d.ts +0 -5
- package/src/type-stubs/ui-contract.js +0 -1
- package/src/types/authoring-card-properties.type-test.ts +0 -266
- package/src/types/authoring.ts +0 -1282
- package/src/types/cards.ts +0 -19
- package/src/types/contracts.ts +0 -1550
- package/src/types/generated-helpers.ts +0 -35
- package/src/types/index.ts +0 -147
- package/src/types/slots.ts +0 -11
- package/src/types.ts +0 -1
- package/src/ui/components/ActionButton.tsx +0 -97
- package/src/ui/components/ActionPanel.tsx +0 -315
- package/src/ui/components/Card.tsx +0 -378
- package/src/ui/components/CardDragSurface.tsx +0 -1076
- package/src/ui/components/ChromeSuppressionContext.tsx +0 -70
- package/src/ui/components/CostDisplay.tsx +0 -145
- package/src/ui/components/DiceRoller.tsx +0 -581
- package/src/ui/components/Drawer.tsx +0 -180
- package/src/ui/components/ErrorBoundary.tsx +0 -275
- package/src/ui/components/GameEndDisplay.tsx +0 -398
- package/src/ui/components/GameSkeleton.tsx +0 -260
- package/src/ui/components/Hand.tsx +0 -468
- package/src/ui/components/HandDock.tsx +0 -299
- package/src/ui/components/HandView.tsx +0 -441
- package/src/ui/components/MobileHandTray.tsx +0 -381
- package/src/ui/components/MoreActions.tsx +0 -143
- package/src/ui/components/PhaseIndicator.tsx +0 -341
- package/src/ui/components/PlayArea.tsx +0 -146
- package/src/ui/components/PrimaryActionButton.tsx +0 -336
- package/src/ui/components/PrimaryButton.tsx +0 -45
- package/src/ui/components/ResourceCounter.tsx +0 -270
- package/src/ui/components/StagingZone.tsx +0 -134
- package/src/ui/components/ThemedButton.tsx +0 -113
- package/src/ui/components/Toast.tsx +0 -264
- package/src/ui/components/board/HexGrid.tsx +0 -1297
- package/src/ui/components/board/NetworkGraph.tsx +0 -476
- package/src/ui/components/board/SlotSystem.tsx +0 -388
- package/src/ui/components/board/SquareGrid.tsx +0 -1165
- package/src/ui/components/board/TrackBoard.tsx +0 -496
- package/src/ui/components/board/ZoneMap.tsx +0 -448
- package/src/ui/components/board/hex-board-view.ts +0 -123
- package/src/ui/components/board/index.ts +0 -142
- package/src/ui/components/board/interaction-accessibility.ts +0 -21
- package/src/ui/components/board/target-layer.ts +0 -67
- package/src/ui/components/card-render-content.type-test.ts +0 -27
- package/src/ui/components/hand-layout-math.ts +0 -163
- package/src/ui/components/hand-pointer-engine.ts +0 -413
- package/src/ui/components/index.ts +0 -245
- package/src/ui/components.ts +0 -1
- package/src/ui/defaults/components.tsx +0 -106
- package/src/ui/defaults/index.ts +0 -8
- package/src/ui/defaults.ts +0 -1
- package/src/ui/errors/ValidationError.ts +0 -29
- package/src/ui/helpers/cards.ts +0 -19
- package/src/ui/helpers/track-board.ts +0 -211
- package/src/ui/hooks/useBoardTopology.ts +0 -316
- package/src/ui/hooks/useCards.ts +0 -10
- package/src/ui/hooks/useHandCardPointer.ts +0 -381
- package/src/ui/hooks/useHandLayout.ts +0 -378
- package/src/ui/hooks/useHandPresentation.ts +0 -121
- package/src/ui/hooks/useHexBoard.ts +0 -74
- package/src/ui/hooks/useHexGrid.ts +0 -185
- package/src/ui/hooks/useIsMobile.ts +0 -35
- package/src/ui/hooks/usePanZoom.ts +0 -278
- package/src/ui/hooks/useSquareBoard.ts +0 -124
- package/src/ui/hooks/useSquareGrid.ts +0 -328
- package/src/ui/index.ts +0 -98
- package/src/ui/internal/ui/alert.tsx +0 -51
- package/src/ui/internal/ui/button.tsx +0 -58
- package/src/ui/internal/ui/dialog.tsx +0 -134
- package/src/ui/internal/ui/input.tsx +0 -21
- package/src/ui/internal/ui/label.tsx +0 -21
- package/src/ui/internal/ui/select.tsx +0 -129
- package/src/ui/internal/ui/tooltip.tsx +0 -54
- package/src/ui/internal/ui/utils.ts +0 -5
- package/src/ui/plugin-styles.css +0 -250
- package/src/ui/primitives/dialog-lifecycle.ts +0 -58
- package/src/ui/primitives/dice.tsx +0 -79
- package/src/ui/primitives/primitive-props.tsx +0 -101
- package/src/ui/theme/ThemeProvider.tsx +0 -252
- package/src/ui/theme/board.ts +0 -61
- package/src/ui/theme/css-vars.ts +0 -105
- package/src/ui/theme/derive.ts +0 -240
- package/src/ui/theme/index.ts +0 -61
- package/src/ui/theme/presets/arcade.ts +0 -261
- package/src/ui/theme/presets/studio.ts +0 -261
- package/src/ui/theme/presets/tabletop.ts +0 -266
- package/src/ui/theme/tokens.ts +0 -392
- package/src/ui/types/hex-color.ts +0 -20
- package/src/ui/types/player-state.ts +0 -463
- package/src/ui/types/tiled-board.ts +0 -785
- package/src/ui/types/visual-state.ts +0 -137
- package/src/ui.ts +0 -1
- /package/dist/{chunk-NKCRKGR2.js.map → chunk-3RQEICD3.js.map} +0 -0
- /package/dist/{chunk-I46YJSOD.js.map → codegen.js.map} +0 -0
- /package/dist/{chunk-T52J5RMF.js.map → reducer-contract.js.map} +0 -0
- /package/dist/{generated → runtime}/runtime-api.js.map +0 -0
- /package/dist/ui/{types/player-state.js → player-state.js} +0 -0
- /package/dist/ui/{types/player-state.js.map → player-state.js.map} +0 -0
|
@@ -1,150 +0,0 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
CollectorState,
|
|
3
|
-
InputCollector,
|
|
4
|
-
RandomHelpers,
|
|
5
|
-
RuntimeRngState,
|
|
6
|
-
SchemaLike,
|
|
7
|
-
} from "../../model";
|
|
8
|
-
import { nextRandomInt } from "../../rng";
|
|
9
|
-
|
|
10
|
-
export type RngConsumption = {
|
|
11
|
-
operation: string;
|
|
12
|
-
traceEntry: string;
|
|
13
|
-
};
|
|
14
|
-
|
|
15
|
-
export type MutableRandomHelpers = {
|
|
16
|
-
random: RandomHelpers;
|
|
17
|
-
currentRng: () => RuntimeRngState;
|
|
18
|
-
};
|
|
19
|
-
|
|
20
|
-
export function sampleDieValue(
|
|
21
|
-
sides: number,
|
|
22
|
-
rng: RuntimeRngState,
|
|
23
|
-
): {
|
|
24
|
-
value: number;
|
|
25
|
-
nextRng: RuntimeRngState;
|
|
26
|
-
consumption: RngConsumption;
|
|
27
|
-
} {
|
|
28
|
-
const [offset, nextRng] = nextRandomInt(sides, rng);
|
|
29
|
-
return {
|
|
30
|
-
value: offset + 1,
|
|
31
|
-
nextRng,
|
|
32
|
-
consumption: {
|
|
33
|
-
operation: "rollDie",
|
|
34
|
-
traceEntry: nextRng.trace[nextRng.trace.length - 1] ?? "",
|
|
35
|
-
},
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
export function shuffleWithRng<T>(
|
|
40
|
-
values: readonly T[],
|
|
41
|
-
rng: RuntimeRngState,
|
|
42
|
-
operation:
|
|
43
|
-
| "shuffleSharedZone"
|
|
44
|
-
| "shufflePlayerZone"
|
|
45
|
-
| "randomSubset" = "shuffleSharedZone",
|
|
46
|
-
): {
|
|
47
|
-
orderedValues: T[];
|
|
48
|
-
nextRng: RuntimeRngState;
|
|
49
|
-
consumptions: RngConsumption[];
|
|
50
|
-
} {
|
|
51
|
-
const orderedValues = [...values];
|
|
52
|
-
let nextRng = rng;
|
|
53
|
-
const consumptions: RngConsumption[] = [];
|
|
54
|
-
for (
|
|
55
|
-
let lastIndex = orderedValues.length - 1;
|
|
56
|
-
lastIndex > 0;
|
|
57
|
-
lastIndex -= 1
|
|
58
|
-
) {
|
|
59
|
-
const [swapIndex, updatedRng] = nextRandomInt(lastIndex + 1, nextRng);
|
|
60
|
-
consumptions.push({
|
|
61
|
-
operation,
|
|
62
|
-
traceEntry: updatedRng.trace[updatedRng.trace.length - 1] ?? "",
|
|
63
|
-
});
|
|
64
|
-
nextRng = updatedRng;
|
|
65
|
-
const current = orderedValues[lastIndex];
|
|
66
|
-
const swap = orderedValues[swapIndex];
|
|
67
|
-
if (current === undefined || swap === undefined) {
|
|
68
|
-
throw new Error(
|
|
69
|
-
`shuffleWithRng: invalid index (lastIndex=${lastIndex}, swapIndex=${swapIndex}, length=${orderedValues.length})`,
|
|
70
|
-
);
|
|
71
|
-
}
|
|
72
|
-
orderedValues[lastIndex] = swap;
|
|
73
|
-
orderedValues[swapIndex] = current;
|
|
74
|
-
}
|
|
75
|
-
return { orderedValues, nextRng, consumptions };
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
export function subsetWithRng<T>(
|
|
79
|
-
values: readonly T[],
|
|
80
|
-
count: number,
|
|
81
|
-
rng: RuntimeRngState,
|
|
82
|
-
): {
|
|
83
|
-
values: readonly T[];
|
|
84
|
-
nextRng: RuntimeRngState;
|
|
85
|
-
consumptions: RngConsumption[];
|
|
86
|
-
} {
|
|
87
|
-
if (!Number.isInteger(count) || count < 0) {
|
|
88
|
-
throw new Error("random.subset count must be a non-negative integer.");
|
|
89
|
-
}
|
|
90
|
-
if (count > values.length) {
|
|
91
|
-
throw new Error(
|
|
92
|
-
`random.subset count ${count} exceeds source length ${values.length}.`,
|
|
93
|
-
);
|
|
94
|
-
}
|
|
95
|
-
const shuffled = shuffleWithRng(values, rng, "randomSubset");
|
|
96
|
-
return {
|
|
97
|
-
values: shuffled.orderedValues.slice(0, count),
|
|
98
|
-
nextRng: shuffled.nextRng,
|
|
99
|
-
consumptions: shuffled.consumptions,
|
|
100
|
-
};
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
export function createMutableRandomHelpers(
|
|
104
|
-
rng: RuntimeRngState,
|
|
105
|
-
): MutableRandomHelpers {
|
|
106
|
-
let current = rng;
|
|
107
|
-
return {
|
|
108
|
-
random: {
|
|
109
|
-
subset(options) {
|
|
110
|
-
const sampled = subsetWithRng(options.from, options.count, current);
|
|
111
|
-
current = sampled.nextRng;
|
|
112
|
-
return sampled.values;
|
|
113
|
-
},
|
|
114
|
-
},
|
|
115
|
-
currentRng: () => current,
|
|
116
|
-
};
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
export function sampleRngCollectorValue(
|
|
120
|
-
collector: InputCollector<SchemaLike<unknown>, CollectorState, "rng">,
|
|
121
|
-
rng: RuntimeRngState,
|
|
122
|
-
): { value: unknown; nextRng: RuntimeRngState } {
|
|
123
|
-
const meta = collector.meta;
|
|
124
|
-
switch (meta.rng) {
|
|
125
|
-
case "d6": {
|
|
126
|
-
const count = meta.count > 0 ? meta.count : 1;
|
|
127
|
-
const values: number[] = [];
|
|
128
|
-
let nextRng = rng;
|
|
129
|
-
for (let i = 0; i < count; i += 1) {
|
|
130
|
-
const sampled = sampleDieValue(6, nextRng);
|
|
131
|
-
values.push(sampled.value);
|
|
132
|
-
nextRng = sampled.nextRng;
|
|
133
|
-
}
|
|
134
|
-
return { value: { values }, nextRng };
|
|
135
|
-
}
|
|
136
|
-
case "coin": {
|
|
137
|
-
const [offset, nextRng] = nextRandomInt(2, rng);
|
|
138
|
-
return {
|
|
139
|
-
value: { value: offset === 0 ? "heads" : "tails" },
|
|
140
|
-
nextRng,
|
|
141
|
-
};
|
|
142
|
-
}
|
|
143
|
-
default: {
|
|
144
|
-
const _exhaustive: never = meta;
|
|
145
|
-
throw new Error(
|
|
146
|
-
`Unknown rngInput kind '${String(_exhaustive)}'. Register a sampler in trusted rng-sampler.`,
|
|
147
|
-
);
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
}
|
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
AnyContinuationCallable,
|
|
3
|
-
BaseGameStateOfContract,
|
|
4
|
-
ManifestContractOf,
|
|
5
|
-
PhaseMapOf,
|
|
6
|
-
PhaseNamesOfDefinition,
|
|
7
|
-
ReducerGameContractLike,
|
|
8
|
-
ReducerGameDefinition,
|
|
9
|
-
ViewMapOf,
|
|
10
|
-
} from "../../model";
|
|
11
|
-
import {
|
|
12
|
-
collectReducerDefinitionIndex,
|
|
13
|
-
type ReducerDefinitionPhaseIndex,
|
|
14
|
-
type ReducerIndexedCardActionEntry,
|
|
15
|
-
type ReducerIndexedInteractionEntry,
|
|
16
|
-
type ReducerIndexedPhase,
|
|
17
|
-
type ReducerIndexedStageEntry,
|
|
18
|
-
type ReducerIndexedZoneEntry,
|
|
19
|
-
} from "../../definition-index";
|
|
20
|
-
|
|
21
|
-
export type TrustedErasedPhase<Contract extends ReducerGameContractLike> =
|
|
22
|
-
ReducerIndexedPhase<Contract>;
|
|
23
|
-
|
|
24
|
-
export type TrustedInteractionEntry<Contract extends ReducerGameContractLike> =
|
|
25
|
-
ReducerIndexedInteractionEntry<Contract>;
|
|
26
|
-
|
|
27
|
-
export type TrustedCardActionEntry<Contract extends ReducerGameContractLike> =
|
|
28
|
-
ReducerIndexedCardActionEntry<Contract>;
|
|
29
|
-
|
|
30
|
-
export type TrustedStageEntry<Contract extends ReducerGameContractLike> =
|
|
31
|
-
ReducerIndexedStageEntry<Contract>;
|
|
32
|
-
|
|
33
|
-
export type TrustedZoneEntry<Contract extends ReducerGameContractLike> =
|
|
34
|
-
ReducerIndexedZoneEntry<Contract>;
|
|
35
|
-
|
|
36
|
-
export type TrustedContinuationRegistry<
|
|
37
|
-
Contract extends ReducerGameContractLike,
|
|
38
|
-
> = ReadonlyMap<
|
|
39
|
-
string,
|
|
40
|
-
AnyContinuationCallable<BaseGameStateOfContract<Contract>>
|
|
41
|
-
>;
|
|
42
|
-
|
|
43
|
-
export interface TrustedPhaseRegistry<
|
|
44
|
-
Contract extends ReducerGameContractLike,
|
|
45
|
-
Definitions extends PhaseMapOf<Contract>,
|
|
46
|
-
Views extends ViewMapOf<Contract>,
|
|
47
|
-
> extends Omit<
|
|
48
|
-
ReducerDefinitionPhaseIndex<Contract, Definitions, Views>,
|
|
49
|
-
"effects"
|
|
50
|
-
> {}
|
|
51
|
-
|
|
52
|
-
export interface TrustedRuntimeRegistry<
|
|
53
|
-
Contract extends ReducerGameContractLike,
|
|
54
|
-
Definitions extends PhaseMapOf<Contract>,
|
|
55
|
-
Views extends ViewMapOf<Contract>,
|
|
56
|
-
> {
|
|
57
|
-
readonly phaseEntries: ReadonlyArray<
|
|
58
|
-
readonly [
|
|
59
|
-
PhaseNamesOfDefinition<
|
|
60
|
-
ReducerGameDefinition<Contract, Definitions, Views>
|
|
61
|
-
>,
|
|
62
|
-
TrustedErasedPhase<Contract>,
|
|
63
|
-
]
|
|
64
|
-
>;
|
|
65
|
-
readonly phasesByName: ReadonlyMap<
|
|
66
|
-
PhaseNamesOfDefinition<ReducerGameDefinition<Contract, Definitions, Views>>,
|
|
67
|
-
TrustedPhaseRegistry<Contract, Definitions, Views>
|
|
68
|
-
>;
|
|
69
|
-
readonly continuationsById: TrustedContinuationRegistry<Contract>;
|
|
70
|
-
readonly effectsById: ReadonlyMap<
|
|
71
|
-
string,
|
|
72
|
-
{ readonly id: string; readonly type: string }
|
|
73
|
-
>;
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
export function collectTrustedRuntimeRegistry<
|
|
77
|
-
Contract extends ReducerGameContractLike,
|
|
78
|
-
Definitions extends PhaseMapOf<Contract>,
|
|
79
|
-
Views extends ViewMapOf<Contract>,
|
|
80
|
-
>(
|
|
81
|
-
definition: ReducerGameDefinition<Contract, Definitions, Views>,
|
|
82
|
-
): TrustedRuntimeRegistry<Contract, Definitions, Views> {
|
|
83
|
-
type State = BaseGameStateOfContract<Contract>;
|
|
84
|
-
type PhaseName = PhaseNamesOfDefinition<
|
|
85
|
-
ReducerGameDefinition<Contract, Definitions, Views>
|
|
86
|
-
>;
|
|
87
|
-
|
|
88
|
-
const index = collectReducerDefinitionIndex(definition);
|
|
89
|
-
const phasesByName = new Map<
|
|
90
|
-
PhaseName,
|
|
91
|
-
TrustedPhaseRegistry<Contract, Definitions, Views>
|
|
92
|
-
>();
|
|
93
|
-
const continuationsById = new Map<string, AnyContinuationCallable<State>>();
|
|
94
|
-
const effectsById = new Map<
|
|
95
|
-
string,
|
|
96
|
-
{ readonly id: string; readonly type: string }
|
|
97
|
-
>();
|
|
98
|
-
|
|
99
|
-
for (const phaseIndex of index.phasesByName.values()) {
|
|
100
|
-
const { effects: _effects, ...trustedPhase } = phaseIndex;
|
|
101
|
-
phasesByName.set(phaseIndex.phaseName, trustedPhase);
|
|
102
|
-
for (const [, effect] of phaseIndex.effects) {
|
|
103
|
-
effectsById.set(effect.id, { id: effect.id, type: effect.type });
|
|
104
|
-
if (effect.continuation) {
|
|
105
|
-
const continuationId = effect.continuation.id ?? effect.id;
|
|
106
|
-
continuationsById.set(
|
|
107
|
-
continuationId,
|
|
108
|
-
effect.continuation as AnyContinuationCallable<State>,
|
|
109
|
-
);
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
return {
|
|
115
|
-
phaseEntries: index.phaseEntries,
|
|
116
|
-
phasesByName,
|
|
117
|
-
continuationsById,
|
|
118
|
-
effectsById,
|
|
119
|
-
};
|
|
120
|
-
}
|
|
@@ -1,336 +0,0 @@
|
|
|
1
|
-
import { createDerivedResolver } from "../../derived";
|
|
2
|
-
import type { DerivedResolver } from "../../derived";
|
|
3
|
-
import { createReducerFx } from "../../effects";
|
|
4
|
-
import { createReducerOps } from "../../ops";
|
|
5
|
-
import { createReducerEdit } from "../../transaction";
|
|
6
|
-
import { createStateQueries } from "../../table-queries";
|
|
7
|
-
import type { TrustedRuntimeInput } from "../../core/types";
|
|
8
|
-
import type { RuntimeInstructionForState } from "../../core/runtime-instruction";
|
|
9
|
-
import type {
|
|
10
|
-
ActionContext,
|
|
11
|
-
AnyContinuationCallable,
|
|
12
|
-
AnyInteractionSpec,
|
|
13
|
-
BaseGameSessionOfContract,
|
|
14
|
-
BaseGameStateOfContract,
|
|
15
|
-
ManifestContractOf,
|
|
16
|
-
PhaseMapOf,
|
|
17
|
-
PhaseNamesOfDefinition,
|
|
18
|
-
PlayerIdOfState,
|
|
19
|
-
PlayerZoneIdOfManifest,
|
|
20
|
-
RandomHelpers,
|
|
21
|
-
ReducerGameContractLike,
|
|
22
|
-
ReducerGameDefinition,
|
|
23
|
-
StageSpec,
|
|
24
|
-
TableQueriesOfState,
|
|
25
|
-
ViewMapOf,
|
|
26
|
-
} from "../../model";
|
|
27
|
-
import {
|
|
28
|
-
collectTrustedRuntimeRegistry,
|
|
29
|
-
type TrustedErasedPhase,
|
|
30
|
-
type TrustedCardActionEntry,
|
|
31
|
-
type TrustedInteractionEntry,
|
|
32
|
-
type TrustedPhaseRegistry,
|
|
33
|
-
type TrustedRuntimeRegistry,
|
|
34
|
-
} from "./runtime-registry";
|
|
35
|
-
import {
|
|
36
|
-
buildContext as buildTrustedContext,
|
|
37
|
-
buildRuntimeArgs as buildTrustedRuntimeArgs,
|
|
38
|
-
fxForState as trustedFxForState,
|
|
39
|
-
} from "./trusted-runtime-args";
|
|
40
|
-
import {
|
|
41
|
-
normalizeResult,
|
|
42
|
-
rejectResult,
|
|
43
|
-
runtimeResultHelpers,
|
|
44
|
-
} from "./trusted-runtime-result";
|
|
45
|
-
import {
|
|
46
|
-
toCombinedState as codecToCombinedState,
|
|
47
|
-
toDomainState as codecToDomainState,
|
|
48
|
-
toSessionState as codecToSessionState,
|
|
49
|
-
} from "./trusted-state-codec";
|
|
50
|
-
import {
|
|
51
|
-
resolveDefaultInitialPhase,
|
|
52
|
-
resolveTrustedSetupProfiles,
|
|
53
|
-
} from "./trusted-setup-profiles";
|
|
54
|
-
|
|
55
|
-
export { normalizeResult, rejectResult } from "./trusted-runtime-result";
|
|
56
|
-
|
|
57
|
-
export type TrustedDefinition<
|
|
58
|
-
Contract extends ReducerGameContractLike,
|
|
59
|
-
Definitions extends PhaseMapOf<Contract>,
|
|
60
|
-
Views extends ViewMapOf<Contract>,
|
|
61
|
-
> = ReducerGameDefinition<Contract, Definitions, Views>;
|
|
62
|
-
|
|
63
|
-
export type TrustedDomainState<Contract extends ReducerGameContractLike> =
|
|
64
|
-
BaseGameStateOfContract<Contract>;
|
|
65
|
-
|
|
66
|
-
export type TrustedSessionState<Contract extends ReducerGameContractLike> =
|
|
67
|
-
BaseGameSessionOfContract<Contract>;
|
|
68
|
-
|
|
69
|
-
export type TrustedState<Contract extends ReducerGameContractLike> =
|
|
70
|
-
TrustedDomainState<Contract> & {
|
|
71
|
-
runtime: TrustedSessionState<Contract>["runtime"];
|
|
72
|
-
};
|
|
73
|
-
|
|
74
|
-
export type TrustedManifest<Contract extends ReducerGameContractLike> =
|
|
75
|
-
ManifestContractOf<Contract>;
|
|
76
|
-
|
|
77
|
-
export type TrustedPhaseName<
|
|
78
|
-
Contract extends ReducerGameContractLike,
|
|
79
|
-
Definitions extends PhaseMapOf<Contract>,
|
|
80
|
-
Views extends ViewMapOf<Contract>,
|
|
81
|
-
> = PhaseNamesOfDefinition<TrustedDefinition<Contract, Definitions, Views>>;
|
|
82
|
-
|
|
83
|
-
export type TrustedPlayerId<Contract extends ReducerGameContractLike> =
|
|
84
|
-
PlayerIdOfState<TrustedDomainState<Contract>>;
|
|
85
|
-
|
|
86
|
-
export type TrustedInput<Contract extends ReducerGameContractLike> =
|
|
87
|
-
TrustedRuntimeInput<TrustedPlayerId<Contract>>;
|
|
88
|
-
|
|
89
|
-
export type { TrustedErasedPhase } from "./runtime-registry";
|
|
90
|
-
|
|
91
|
-
export interface TrustedRuntimeHelpers<
|
|
92
|
-
Contract extends ReducerGameContractLike,
|
|
93
|
-
> {
|
|
94
|
-
accept: (
|
|
95
|
-
state: TrustedDomainState<Contract>,
|
|
96
|
-
instructions?: Array<
|
|
97
|
-
RuntimeInstructionForState<TrustedDomainState<Contract>>
|
|
98
|
-
>,
|
|
99
|
-
) => {
|
|
100
|
-
type: "accept";
|
|
101
|
-
state: TrustedDomainState<Contract>;
|
|
102
|
-
instructions: Array<
|
|
103
|
-
RuntimeInstructionForState<TrustedDomainState<Contract>>
|
|
104
|
-
>;
|
|
105
|
-
};
|
|
106
|
-
reject: typeof rejectResult;
|
|
107
|
-
ops: ReturnType<typeof createReducerOps<TrustedDomainState<Contract>>>;
|
|
108
|
-
edit: ReturnType<typeof createReducerEdit<TrustedDomainState<Contract>>>;
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
export interface TrustedRuntimeScope<
|
|
112
|
-
Contract extends ReducerGameContractLike,
|
|
113
|
-
Definitions extends PhaseMapOf<Contract>,
|
|
114
|
-
Views extends ViewMapOf<Contract>,
|
|
115
|
-
> {
|
|
116
|
-
definition: TrustedDefinition<Contract, Definitions, Views>;
|
|
117
|
-
registry: TrustedRuntimeRegistry<Contract, Definitions, Views>;
|
|
118
|
-
phaseEntries: ReadonlyArray<
|
|
119
|
-
readonly [
|
|
120
|
-
TrustedPhaseName<Contract, Definitions, Views>,
|
|
121
|
-
TrustedErasedPhase<Contract>,
|
|
122
|
-
]
|
|
123
|
-
>;
|
|
124
|
-
defaultInitialPhase: TrustedPhaseName<Contract, Definitions, Views>;
|
|
125
|
-
manifestSetupProfilesById: TrustedManifest<Contract>["setupProfilesById"];
|
|
126
|
-
reducerSetupProfiles: NonNullable<
|
|
127
|
-
TrustedDefinition<Contract, Definitions, Views>["setupProfiles"]
|
|
128
|
-
>;
|
|
129
|
-
runtimeHelpers: TrustedRuntimeHelpers<Contract>;
|
|
130
|
-
toDomainState(state: TrustedState<Contract>): TrustedDomainState<Contract>;
|
|
131
|
-
toCombinedState(
|
|
132
|
-
session: TrustedSessionState<Contract>,
|
|
133
|
-
): TrustedState<Contract>;
|
|
134
|
-
toSessionState(state: TrustedState<Contract>): TrustedSessionState<Contract>;
|
|
135
|
-
phaseRegistryByName(
|
|
136
|
-
phaseName: TrustedPhaseName<Contract, Definitions, Views>,
|
|
137
|
-
): TrustedPhaseRegistry<Contract, Definitions, Views> | undefined;
|
|
138
|
-
phaseByName(
|
|
139
|
-
phaseName: TrustedPhaseName<Contract, Definitions, Views>,
|
|
140
|
-
): TrustedErasedPhase<Contract>;
|
|
141
|
-
findInteractionInPhase(
|
|
142
|
-
phaseName: TrustedPhaseName<Contract, Definitions, Views>,
|
|
143
|
-
interactionId: string,
|
|
144
|
-
):
|
|
145
|
-
| AnyInteractionSpec<
|
|
146
|
-
TrustedDomainState<Contract>,
|
|
147
|
-
TrustedManifest<Contract>
|
|
148
|
-
>
|
|
149
|
-
| undefined;
|
|
150
|
-
interactionEntriesForPhase(
|
|
151
|
-
phaseName: TrustedPhaseName<Contract, Definitions, Views>,
|
|
152
|
-
): ReadonlyArray<TrustedInteractionEntry<Contract>>;
|
|
153
|
-
stagesForPhase(
|
|
154
|
-
phaseName: TrustedPhaseName<Contract, Definitions, Views>,
|
|
155
|
-
): ReadonlyArray<
|
|
156
|
-
readonly [
|
|
157
|
-
string,
|
|
158
|
-
StageSpec<TrustedDomainState<Contract>, TrustedManifest<Contract>>,
|
|
159
|
-
]
|
|
160
|
-
>;
|
|
161
|
-
zonesForPhase(
|
|
162
|
-
phaseName: TrustedPhaseName<Contract, Definitions, Views>,
|
|
163
|
-
): ReadonlyArray<PlayerZoneIdOfManifest<TrustedManifest<Contract>>>;
|
|
164
|
-
cardActionEntriesForPhase(
|
|
165
|
-
phaseName: TrustedPhaseName<Contract, Definitions, Views>,
|
|
166
|
-
): ReadonlyArray<TrustedCardActionEntry<Contract>>;
|
|
167
|
-
continuationById(
|
|
168
|
-
id: string,
|
|
169
|
-
): AnyContinuationCallable<TrustedDomainState<Contract>> | undefined;
|
|
170
|
-
fxForState(
|
|
171
|
-
state: TrustedState<Contract>,
|
|
172
|
-
): ReturnType<typeof createReducerFx<TrustedState<Contract>>>;
|
|
173
|
-
buildContext(
|
|
174
|
-
state: TrustedState<Contract>,
|
|
175
|
-
): ActionContext<TrustedDomainState<Contract>, TrustedManifest<Contract>>;
|
|
176
|
-
buildRuntimeArgs<Extra extends object>(
|
|
177
|
-
state: TrustedState<Contract>,
|
|
178
|
-
extra: Extra,
|
|
179
|
-
options?: {
|
|
180
|
-
q?: TableQueriesOfState<TrustedDomainState<Contract>>;
|
|
181
|
-
derived?: DerivedResolver;
|
|
182
|
-
fx?: ReturnType<typeof createReducerFx<TrustedState<Contract>>>;
|
|
183
|
-
random?: RandomHelpers;
|
|
184
|
-
},
|
|
185
|
-
): ActionContext<TrustedDomainState<Contract>, TrustedManifest<Contract>> &
|
|
186
|
-
TrustedRuntimeHelpers<Contract> & {
|
|
187
|
-
fx: ReturnType<typeof createReducerFx<TrustedState<Contract>>>;
|
|
188
|
-
q: ReturnType<typeof createStateQueries<TrustedDomainState<Contract>>>;
|
|
189
|
-
derived: ReturnType<
|
|
190
|
-
typeof createDerivedResolver<TrustedDomainState<Contract>>
|
|
191
|
-
>;
|
|
192
|
-
runtime: Omit<TrustedState<Contract>["runtime"], "rng">;
|
|
193
|
-
random: RandomHelpers;
|
|
194
|
-
} & Extra;
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
export function createTrustedRuntimeScope<
|
|
198
|
-
Contract extends ReducerGameContractLike,
|
|
199
|
-
Definitions extends PhaseMapOf<Contract>,
|
|
200
|
-
Views extends ViewMapOf<Contract>,
|
|
201
|
-
>(
|
|
202
|
-
definition: TrustedDefinition<Contract, Definitions, Views>,
|
|
203
|
-
): TrustedRuntimeScope<Contract, Definitions, Views> {
|
|
204
|
-
type DomainState = TrustedDomainState<Contract>;
|
|
205
|
-
type SessionState = TrustedSessionState<Contract>;
|
|
206
|
-
type State = TrustedState<Contract>;
|
|
207
|
-
type Manifest = TrustedManifest<Contract>;
|
|
208
|
-
type PhaseName = TrustedPhaseName<Contract, Definitions, Views>;
|
|
209
|
-
const registry = collectTrustedRuntimeRegistry(definition);
|
|
210
|
-
const { phaseEntries } = registry;
|
|
211
|
-
const defaultInitialPhase = resolveDefaultInitialPhase(
|
|
212
|
-
definition.initialPhase as PhaseName | undefined,
|
|
213
|
-
phaseEntries,
|
|
214
|
-
);
|
|
215
|
-
const { manifestSetupProfilesById, reducerSetupProfiles } =
|
|
216
|
-
resolveTrustedSetupProfiles(definition);
|
|
217
|
-
|
|
218
|
-
function toDomainState(state: State): DomainState {
|
|
219
|
-
return codecToDomainState<State, DomainState>(state);
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
function toCombinedState(session: SessionState): State {
|
|
223
|
-
return codecToCombinedState<SessionState, State>(session);
|
|
224
|
-
}
|
|
225
|
-
|
|
226
|
-
function toSessionState(state: State): SessionState {
|
|
227
|
-
return codecToSessionState<State, DomainState, SessionState>(
|
|
228
|
-
state,
|
|
229
|
-
toDomainState,
|
|
230
|
-
);
|
|
231
|
-
}
|
|
232
|
-
|
|
233
|
-
function phaseRegistryByName(
|
|
234
|
-
phaseName: PhaseName,
|
|
235
|
-
): TrustedPhaseRegistry<Contract, Definitions, Views> | undefined {
|
|
236
|
-
return registry.phasesByName.get(phaseName);
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
function phaseByName(phaseName: PhaseName): TrustedErasedPhase<Contract> {
|
|
240
|
-
const phaseRegistry = phaseRegistryByName(phaseName);
|
|
241
|
-
if (!phaseRegistry) {
|
|
242
|
-
throw new Error(`Unknown reducer phase '${phaseName}'.`);
|
|
243
|
-
}
|
|
244
|
-
return phaseRegistry.phase;
|
|
245
|
-
}
|
|
246
|
-
|
|
247
|
-
function findInteractionInPhase(
|
|
248
|
-
phaseName: PhaseName,
|
|
249
|
-
interactionId: string,
|
|
250
|
-
): AnyInteractionSpec<DomainState, Manifest> | undefined {
|
|
251
|
-
const found = interactionEntriesForPhase(phaseName).find(
|
|
252
|
-
([id]) => id === interactionId,
|
|
253
|
-
);
|
|
254
|
-
return found?.[1];
|
|
255
|
-
}
|
|
256
|
-
|
|
257
|
-
function interactionEntriesForPhase(phaseName: PhaseName) {
|
|
258
|
-
return phaseRegistryByName(phaseName)?.interactions ?? [];
|
|
259
|
-
}
|
|
260
|
-
|
|
261
|
-
function stagesForPhase(phaseName: PhaseName) {
|
|
262
|
-
return phaseRegistryByName(phaseName)?.stages ?? [];
|
|
263
|
-
}
|
|
264
|
-
|
|
265
|
-
function zonesForPhase(phaseName: PhaseName) {
|
|
266
|
-
return phaseRegistryByName(phaseName)?.zones ?? [];
|
|
267
|
-
}
|
|
268
|
-
|
|
269
|
-
function cardActionEntriesForPhase(phaseName: PhaseName) {
|
|
270
|
-
return phaseRegistryByName(phaseName)?.cardActions ?? [];
|
|
271
|
-
}
|
|
272
|
-
|
|
273
|
-
function continuationById(id: string) {
|
|
274
|
-
return registry.continuationsById.get(id);
|
|
275
|
-
}
|
|
276
|
-
|
|
277
|
-
const helpers: TrustedRuntimeHelpers<Contract> = {
|
|
278
|
-
...runtimeResultHelpers,
|
|
279
|
-
ops: createReducerOps<DomainState>(),
|
|
280
|
-
edit: createReducerEdit<DomainState>(),
|
|
281
|
-
};
|
|
282
|
-
|
|
283
|
-
function fxForState(state: State) {
|
|
284
|
-
return trustedFxForState<Contract>(state);
|
|
285
|
-
}
|
|
286
|
-
|
|
287
|
-
function buildContext(state: State): ActionContext<DomainState, Manifest> {
|
|
288
|
-
return buildTrustedContext<Contract>(state, definition.contract.manifest);
|
|
289
|
-
}
|
|
290
|
-
|
|
291
|
-
function buildRuntimeArgs<Extra extends object>(
|
|
292
|
-
state: State,
|
|
293
|
-
extra: Extra,
|
|
294
|
-
options?: {
|
|
295
|
-
q?: TableQueriesOfState<DomainState>;
|
|
296
|
-
derived?: DerivedResolver;
|
|
297
|
-
fx?: ReturnType<typeof createReducerFx<State>>;
|
|
298
|
-
random?: RandomHelpers;
|
|
299
|
-
},
|
|
300
|
-
) {
|
|
301
|
-
return buildTrustedRuntimeArgs<Contract, Extra>(
|
|
302
|
-
state,
|
|
303
|
-
definition.contract.manifest,
|
|
304
|
-
helpers,
|
|
305
|
-
toDomainState,
|
|
306
|
-
extra,
|
|
307
|
-
options,
|
|
308
|
-
);
|
|
309
|
-
}
|
|
310
|
-
|
|
311
|
-
return {
|
|
312
|
-
definition,
|
|
313
|
-
registry,
|
|
314
|
-
phaseEntries,
|
|
315
|
-
defaultInitialPhase,
|
|
316
|
-
manifestSetupProfilesById,
|
|
317
|
-
reducerSetupProfiles: reducerSetupProfiles as NonNullable<
|
|
318
|
-
TrustedDefinition<Contract, Definitions, Views>["setupProfiles"]
|
|
319
|
-
>,
|
|
320
|
-
runtimeHelpers: helpers,
|
|
321
|
-
toDomainState,
|
|
322
|
-
toCombinedState,
|
|
323
|
-
toSessionState,
|
|
324
|
-
phaseRegistryByName,
|
|
325
|
-
phaseByName,
|
|
326
|
-
findInteractionInPhase,
|
|
327
|
-
interactionEntriesForPhase,
|
|
328
|
-
stagesForPhase,
|
|
329
|
-
zonesForPhase,
|
|
330
|
-
cardActionEntriesForPhase,
|
|
331
|
-
continuationById,
|
|
332
|
-
fxForState,
|
|
333
|
-
buildContext,
|
|
334
|
-
buildRuntimeArgs,
|
|
335
|
-
};
|
|
336
|
-
}
|
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
AnyInteractionSpec,
|
|
3
|
-
PhaseMapOf,
|
|
4
|
-
ReducerGameContractLike,
|
|
5
|
-
ViewMapOf,
|
|
6
|
-
} from "../../model";
|
|
7
|
-
import type { ProjectionContext } from "./projection-context";
|
|
8
|
-
import type {
|
|
9
|
-
TrustedDomainState,
|
|
10
|
-
TrustedManifest,
|
|
11
|
-
TrustedPlayerId,
|
|
12
|
-
TrustedRuntimeScope,
|
|
13
|
-
TrustedState,
|
|
14
|
-
} from "./runtime-scope";
|
|
15
|
-
|
|
16
|
-
export const SIMULTANEOUS_SUBMIT_INTERACTION_ID = "submit";
|
|
17
|
-
|
|
18
|
-
type ErasedPhase<
|
|
19
|
-
Contract extends ReducerGameContractLike,
|
|
20
|
-
Definitions extends PhaseMapOf<Contract>,
|
|
21
|
-
Views extends ViewMapOf<Contract>,
|
|
22
|
-
> = ReturnType<
|
|
23
|
-
TrustedRuntimeScope<Contract, Definitions, Views>["phaseByName"]
|
|
24
|
-
>;
|
|
25
|
-
|
|
26
|
-
export function isSimultaneousPhase<
|
|
27
|
-
Contract extends ReducerGameContractLike,
|
|
28
|
-
Definitions extends PhaseMapOf<Contract>,
|
|
29
|
-
Views extends ViewMapOf<Contract>,
|
|
30
|
-
>(phase: ErasedPhase<Contract, Definitions, Views>): boolean {
|
|
31
|
-
return phase.kind === "simultaneousPlayer";
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
export function simultaneousSubmitInteraction<
|
|
35
|
-
Contract extends ReducerGameContractLike,
|
|
36
|
-
Definitions extends PhaseMapOf<Contract>,
|
|
37
|
-
Views extends ViewMapOf<Contract>,
|
|
38
|
-
>(
|
|
39
|
-
phase: ErasedPhase<Contract, Definitions, Views>,
|
|
40
|
-
):
|
|
41
|
-
| AnyInteractionSpec<TrustedDomainState<Contract>, TrustedManifest<Contract>>
|
|
42
|
-
| undefined {
|
|
43
|
-
return (phase as { submit?: unknown }).submit as
|
|
44
|
-
| AnyInteractionSpec<
|
|
45
|
-
TrustedDomainState<Contract>,
|
|
46
|
-
TrustedManifest<Contract>
|
|
47
|
-
>
|
|
48
|
-
| undefined;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
function resolvePromptToArray<PlayerId extends string>(
|
|
52
|
-
value: unknown,
|
|
53
|
-
): PlayerId[] {
|
|
54
|
-
if (value === undefined || value === null) return [];
|
|
55
|
-
if (Array.isArray(value)) return value as PlayerId[];
|
|
56
|
-
if (typeof value === "string") return [value as PlayerId];
|
|
57
|
-
return [];
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
export function resolveSimultaneousActors<
|
|
61
|
-
Contract extends ReducerGameContractLike,
|
|
62
|
-
Definitions extends PhaseMapOf<Contract>,
|
|
63
|
-
Views extends ViewMapOf<Contract>,
|
|
64
|
-
>(
|
|
65
|
-
scope: TrustedRuntimeScope<Contract, Definitions, Views>,
|
|
66
|
-
state: TrustedState<Contract>,
|
|
67
|
-
phase: ErasedPhase<Contract, Definitions, Views>,
|
|
68
|
-
projection?: ProjectionContext<
|
|
69
|
-
TrustedDomainState<Contract>,
|
|
70
|
-
TrustedState<Contract>
|
|
71
|
-
>,
|
|
72
|
-
): TrustedPlayerId<Contract>[] {
|
|
73
|
-
type PlayerId = TrustedPlayerId<Contract>;
|
|
74
|
-
const selector =
|
|
75
|
-
(phase as { actors?: unknown; actor?: unknown }).actors ??
|
|
76
|
-
(phase as { actor?: unknown }).actor;
|
|
77
|
-
if (typeof selector === "function") {
|
|
78
|
-
const selected = selector(
|
|
79
|
-
scope.buildRuntimeArgs(
|
|
80
|
-
state,
|
|
81
|
-
{
|
|
82
|
-
state: projection?.domainState ?? scope.toDomainState(state),
|
|
83
|
-
},
|
|
84
|
-
projection,
|
|
85
|
-
),
|
|
86
|
-
);
|
|
87
|
-
const resolved = resolvePromptToArray<PlayerId>(selected);
|
|
88
|
-
if (resolved.length > 0) {
|
|
89
|
-
return resolved;
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
const active = state.flow.activePlayers as PlayerId[];
|
|
93
|
-
if (active.length > 0) {
|
|
94
|
-
return [...active];
|
|
95
|
-
}
|
|
96
|
-
return [...(state.table.playerOrder as PlayerId[])];
|
|
97
|
-
}
|