@dreamboard-games/sdk 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +96 -0
- package/README.md +12 -0
- package/dist/HandView-ncJIVLhN.d.ts +193 -0
- package/dist/ResourceCounter-CTREyF73.d.ts +102 -0
- package/dist/ThemeProvider-fy0_QzgO.d.ts +99 -0
- package/dist/bundle-TIZcw8LB.d.ts +281 -0
- package/dist/cards-Sl3b40Mv.d.ts +13 -0
- package/dist/chunk-7YAHLYBR.js +481 -0
- package/dist/chunk-7YAHLYBR.js.map +1 -0
- package/dist/chunk-FDNZTDD6.js +8085 -0
- package/dist/chunk-FDNZTDD6.js.map +1 -0
- package/dist/chunk-GKKBPPSW.js +598 -0
- package/dist/chunk-GKKBPPSW.js.map +1 -0
- package/dist/chunk-I46YJSOD.js +1 -0
- package/dist/chunk-I46YJSOD.js.map +1 -0
- package/dist/chunk-KAELH4KC.js +104 -0
- package/dist/chunk-KAELH4KC.js.map +1 -0
- package/dist/chunk-PZ5AY32C.js +10 -0
- package/dist/chunk-PZ5AY32C.js.map +1 -0
- package/dist/chunk-T3ZKNUZ7.js +1 -0
- package/dist/chunk-T3ZKNUZ7.js.map +1 -0
- package/dist/chunk-T52J5RMF.js +1 -0
- package/dist/chunk-T52J5RMF.js.map +1 -0
- package/dist/chunk-TDSWKVZ4.js +5401 -0
- package/dist/chunk-TDSWKVZ4.js.map +1 -0
- package/dist/chunk-U5C6BONG.js +34 -0
- package/dist/chunk-U5C6BONG.js.map +1 -0
- package/dist/chunk-VDXOF4FW.js +69 -0
- package/dist/chunk-VDXOF4FW.js.map +1 -0
- package/dist/chunk-VFTAA4WO.js +115 -0
- package/dist/chunk-VFTAA4WO.js.map +1 -0
- package/dist/chunk-WN74KVNY.js +17 -0
- package/dist/chunk-WN74KVNY.js.map +1 -0
- package/dist/chunk-WYPQ3GG5.js +10990 -0
- package/dist/chunk-WYPQ3GG5.js.map +1 -0
- package/dist/components-D5ZRE2Hl.d.ts +1451 -0
- package/dist/generated/runtime/primitives.d.ts +12 -0
- package/dist/generated/runtime/primitives.js +180 -0
- package/dist/generated/runtime/primitives.js.map +1 -0
- package/dist/generated/runtime-api.d.ts +3 -0
- package/dist/generated/runtime-api.js +2 -0
- package/dist/generated/runtime-api.js.map +1 -0
- package/dist/generated/runtime.d.ts +14 -0
- package/dist/generated/runtime.js +18 -0
- package/dist/generated/runtime.js.map +1 -0
- package/dist/generated/workspace-contract.d.ts +14 -0
- package/dist/generated/workspace-contract.js +14 -0
- package/dist/generated/workspace-contract.js.map +1 -0
- package/dist/hex-board-view-D_07hO6O.d.ts +933 -0
- package/dist/hex-color-MhOyuY-o.d.ts +8 -0
- package/dist/index-BwqPQtBu.d.ts +1433 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/dist/infrastructure/reducer-bundle-abi.d.ts +1083 -0
- package/dist/infrastructure/reducer-bundle-abi.js +14 -0
- package/dist/infrastructure/reducer-bundle-abi.js.map +1 -0
- package/dist/infrastructure/workspace-codegen.d.ts +53 -0
- package/dist/infrastructure/workspace-codegen.js +44 -0
- package/dist/infrastructure/workspace-codegen.js.map +1 -0
- package/dist/manifest-contract-BNHVGFtU.d.ts +9 -0
- package/dist/package-set.d.ts +13 -0
- package/dist/package-set.js +12 -0
- package/dist/package-set.js.map +1 -0
- package/dist/primitive-props-DpKs-GCr.d.ts +11 -0
- package/dist/reducer.d.ts +3786 -0
- package/dist/reducer.js +8131 -0
- package/dist/reducer.js.map +1 -0
- package/dist/runtime/primitives.d.ts +226 -0
- package/dist/runtime/primitives.js +180 -0
- package/dist/runtime/primitives.js.map +1 -0
- package/dist/runtime/types/runtime-api.d.ts +1 -0
- package/dist/runtime/types/runtime-api.js +2 -0
- package/dist/runtime/types/runtime-api.js.map +1 -0
- package/dist/runtime/workspace-contract.d.ts +172 -0
- package/dist/runtime/workspace-contract.js +14 -0
- package/dist/runtime/workspace-contract.js.map +1 -0
- package/dist/runtime-api-3dshj6kK.d.ts +101 -0
- package/dist/runtime-api-DWxvTr-O.d.ts +379 -0
- package/dist/runtime.d.ts +58 -0
- package/dist/runtime.js +13 -0
- package/dist/runtime.js.map +1 -0
- package/dist/slots-1GPGihk8.d.ts +8 -0
- package/dist/testing.d.ts +149 -0
- package/dist/testing.js +513 -0
- package/dist/testing.js.map +1 -0
- package/dist/types.d.ts +496 -0
- package/dist/types.js +28 -0
- package/dist/types.js.map +1 -0
- package/dist/ui/components.d.ts +16 -0
- package/dist/ui/components.js +192 -0
- package/dist/ui/components.js.map +1 -0
- package/dist/ui/defaults.d.ts +19 -0
- package/dist/ui/defaults.js +104 -0
- package/dist/ui/defaults.js.map +1 -0
- package/dist/ui/plugin-styles.css +250 -0
- package/dist/ui/types/player-state.d.ts +365 -0
- package/dist/ui/types/player-state.js +1 -0
- package/dist/ui/types/player-state.js.map +1 -0
- package/dist/ui-contract-iQfTtUSL.d.ts +1161 -0
- package/dist/ui.d.ts +320 -0
- package/dist/ui.js +253 -0
- package/dist/ui.js.map +1 -0
- package/package.json +199 -0
- package/src/generated/reducer-contract/builders.ts +90 -0
- package/src/generated/reducer-contract/version.ts +9 -0
- package/src/generated/reducer-contract/wire.ts +100 -0
- package/src/generated/reducer-contract/zod.ts +101 -0
- package/src/generated/runtime/primitives.ts +2 -0
- package/src/generated/runtime-api.ts +5 -0
- package/src/generated/runtime.ts +35 -0
- package/src/generated/workspace-contract.ts +2 -0
- package/src/index.ts +7 -0
- package/src/infrastructure/reducer-bundle-abi.ts +8 -0
- package/src/infrastructure/reducer-contract/bundle.ts +37 -0
- package/src/infrastructure/workspace-codegen/hex-geometry.ts +69 -0
- package/src/infrastructure/workspace-codegen/index.ts +64 -0
- package/src/infrastructure/workspace-codegen/manifest-contract.ts +6632 -0
- package/src/infrastructure/workspace-codegen/manifest-validation.ts +795 -0
- package/src/infrastructure/workspace-codegen/ownership.ts +131 -0
- package/src/infrastructure/workspace-codegen/preset-card-sets.ts +169 -0
- package/src/infrastructure/workspace-codegen/seeds.ts +1705 -0
- package/src/infrastructure/workspace-codegen.ts +1 -0
- package/src/package-set.ts +19 -0
- package/src/reducer/authoring/contract.ts +157 -0
- package/src/reducer/authoring/effect.ts +224 -0
- package/src/reducer/authoring/game.ts +23 -0
- package/src/reducer/authoring/interaction.ts +98 -0
- package/src/reducer/authoring/phase.ts +300 -0
- package/src/reducer/authoring/types.ts +70 -0
- package/src/reducer/authoring/validation.ts +382 -0
- package/src/reducer/authoring/view-stage.ts +68 -0
- package/src/reducer/authoring.ts +29 -0
- package/src/reducer/bundle/ingress-bundle.ts +491 -0
- package/src/reducer/bundle/trusted/engine-instruction-resolver.ts +254 -0
- package/src/reducer/bundle/trusted/flow-instruction-resolver.ts +73 -0
- package/src/reducer/bundle/trusted/instruction-runner.ts +414 -0
- package/src/reducer/bundle/trusted/interaction-authorization.ts +137 -0
- package/src/reducer/bundle/trusted/interaction-collectors.ts +859 -0
- package/src/reducer/bundle/trusted/interaction-decision.ts +747 -0
- package/src/reducer/bundle/trusted/interaction-resolver.ts +95 -0
- package/src/reducer/bundle/trusted/interaction-types.ts +171 -0
- package/src/reducer/bundle/trusted/lifecycle-runner.ts +427 -0
- package/src/reducer/bundle/trusted/projection-builder.ts +356 -0
- package/src/reducer/bundle/trusted/projection-context.ts +39 -0
- package/src/reducer/bundle/trusted/rng-sampler.ts +150 -0
- package/src/reducer/bundle/trusted/runtime-registry.ts +120 -0
- package/src/reducer/bundle/trusted/runtime-scope.ts +336 -0
- package/src/reducer/bundle/trusted/simultaneous-player.ts +97 -0
- package/src/reducer/bundle/trusted/stage-resolver.ts +87 -0
- package/src/reducer/bundle/trusted/static-projection.ts +116 -0
- package/src/reducer/bundle/trusted/trusted-runtime-args.ts +97 -0
- package/src/reducer/bundle/trusted/trusted-runtime-result.ts +39 -0
- package/src/reducer/bundle/trusted/trusted-setup-profiles.ts +43 -0
- package/src/reducer/bundle/trusted/trusted-state-codec.ts +48 -0
- package/src/reducer/bundle/trusted-bundle.ts +97 -0
- package/src/reducer/bundle/types.ts +171 -0
- package/src/reducer/bundle.ts +2 -0
- package/src/reducer/client-param-schemas.ts +57 -0
- package/src/reducer/compose.ts +34 -0
- package/src/reducer/core/runtime-input.ts +30 -0
- package/src/reducer/core/runtime-instruction.ts +59 -0
- package/src/reducer/core/types.ts +62 -0
- package/src/reducer/definition-index.ts +277 -0
- package/src/reducer/derived.ts +106 -0
- package/src/reducer/effects.ts +92 -0
- package/src/reducer/engine/runtime-instruction-engine.ts +155 -0
- package/src/reducer/ingress/decode-runtime-input.ts +7 -0
- package/src/reducer/ingress/decode-session-state.ts +9 -0
- package/src/reducer/ingress/encode-session-state.ts +6 -0
- package/src/reducer/ingress/input-codec.ts +18 -0
- package/src/reducer/ingress/phase-schemas.ts +62 -0
- package/src/reducer/ingress/raw-types.ts +107 -0
- package/src/reducer/ingress/runtime-codec.ts +14 -0
- package/src/reducer/ingress/runtime-payload.ts +13 -0
- package/src/reducer/ingress/session-codec.ts +392 -0
- package/src/reducer/ingress/types.ts +6 -0
- package/src/reducer/inputs/boardInput.ts +217 -0
- package/src/reducer/inputs/boardTarget.ts +190 -0
- package/src/reducer/inputs/cardInput.ts +86 -0
- package/src/reducer/inputs/cardTarget.ts +101 -0
- package/src/reducer/inputs/choiceTarget.ts +104 -0
- package/src/reducer/inputs/defineInputs.ts +71 -0
- package/src/reducer/inputs/formInput.ts +809 -0
- package/src/reducer/inputs/many.ts +120 -0
- package/src/reducer/inputs/promptInput.ts +87 -0
- package/src/reducer/inputs/rngInput.ts +58 -0
- package/src/reducer/inputs/targetRule.ts +123 -0
- package/src/reducer/inputs.ts +41 -0
- package/src/reducer/model/definition.ts +1072 -0
- package/src/reducer/model/extract.ts +745 -0
- package/src/reducer/model/manifest.ts +570 -0
- package/src/reducer/model/queries.ts +641 -0
- package/src/reducer/model/runtime.ts +264 -0
- package/src/reducer/model/spec.ts +1386 -0
- package/src/reducer/model/table.ts +260 -0
- package/src/reducer/model.ts +7 -0
- package/src/reducer/ops.ts +1034 -0
- package/src/reducer/parse-utils.ts +28 -0
- package/src/reducer/per-player.ts +422 -0
- package/src/reducer/rng.ts +69 -0
- package/src/reducer/schema-helpers.ts +185 -0
- package/src/reducer/setup-bootstrap-helpers.ts +171 -0
- package/src/reducer/setup-bootstrap.ts +481 -0
- package/src/reducer/table-ops.ts +2671 -0
- package/src/reducer/table-queries.ts +372 -0
- package/src/reducer/transaction.ts +120 -0
- package/src/reducer.ts +314 -0
- package/src/runtime/primitives.ts +1 -0
- package/src/runtime/types/runtime-api.ts +1 -0
- package/src/runtime/workspace-contract.ts +32 -0
- package/src/runtime-internal/components/InteractionForm.tsx +1309 -0
- package/src/runtime-internal/components/PluginRuntime.tsx +103 -0
- package/src/runtime-internal/components/board/target-layer.ts +70 -0
- package/src/runtime-internal/context/ClientParamSchemaContext.tsx +44 -0
- package/src/runtime-internal/context/InteractionDraftContext.tsx +279 -0
- package/src/runtime-internal/context/PluginSessionContext.tsx +47 -0
- package/src/runtime-internal/context/PluginStateContext.tsx +262 -0
- package/src/runtime-internal/context/RuntimeContext.tsx +96 -0
- package/src/runtime-internal/defaults/components.tsx +409 -0
- package/src/runtime-internal/defaults/index.ts +11 -0
- package/src/runtime-internal/errors/ValidationError.ts +29 -0
- package/src/runtime-internal/hooks/useActivePlayers.ts +33 -0
- package/src/runtime-internal/hooks/useBoardInteractions.ts +665 -0
- package/src/runtime-internal/hooks/useGameSelector.ts +105 -0
- package/src/runtime-internal/hooks/useGameView.ts +9 -0
- package/src/runtime-internal/hooks/useInteractionByKey.ts +354 -0
- package/src/runtime-internal/hooks/useInteractionHandle.ts +438 -0
- package/src/runtime-internal/hooks/useIsMyTurn.ts +20 -0
- package/src/runtime-internal/hooks/useLobby.ts +76 -0
- package/src/runtime-internal/hooks/useMe.ts +48 -0
- package/src/runtime-internal/hooks/usePlayerInfo.ts +28 -0
- package/src/runtime-internal/hooks/usePlayerTurnOrder.ts +23 -0
- package/src/runtime-internal/hooks/usePluginRuntime.ts +147 -0
- package/src/runtime-internal/hooks/useSeatInbox.ts +61 -0
- package/src/runtime-internal/hooks/useSimultaneousPhase.ts +10 -0
- package/src/runtime-internal/index.ts +42 -0
- package/src/runtime-internal/internal.ts +43 -0
- package/src/runtime-internal/plugin-styles.css +250 -0
- package/src/runtime-internal/primitives/board.tsx +459 -0
- package/src/runtime-internal/primitives/dialog-lifecycle.ts +58 -0
- package/src/runtime-internal/primitives/dice.tsx +79 -0
- package/src/runtime-internal/primitives/game-ui-provider.tsx +35 -0
- package/src/runtime-internal/primitives/game.tsx +387 -0
- package/src/runtime-internal/primitives/hand-intent-adapter.ts +147 -0
- package/src/runtime-internal/primitives/hand-surface.tsx +594 -0
- package/src/runtime-internal/primitives/index.ts +196 -0
- package/src/runtime-internal/primitives/interaction-form-binding.tsx +56 -0
- package/src/runtime-internal/primitives/interaction-submit.ts +90 -0
- package/src/runtime-internal/primitives/interaction.tsx +987 -0
- package/src/runtime-internal/primitives/phase.tsx +43 -0
- package/src/runtime-internal/primitives/player-roster.tsx +302 -0
- package/src/runtime-internal/primitives/primitive-props.tsx +101 -0
- package/src/runtime-internal/primitives/prompt.tsx +255 -0
- package/src/runtime-internal/primitives/ui.tsx +60 -0
- package/src/runtime-internal/primitives/zone.tsx +791 -0
- package/src/runtime-internal/reducer.ts +30 -0
- package/src/runtime-internal/runtime/createPluginRuntimeAPI.ts +605 -0
- package/src/runtime-internal/types/plugin-state.ts +508 -0
- package/src/runtime-internal/types/reducer-state.ts +24 -0
- package/src/runtime-internal/types/runtime-api.ts +114 -0
- package/src/runtime-internal/ui-contract.ts +519 -0
- package/src/runtime-internal/utils/card-intent-adapter.ts +546 -0
- package/src/runtime-internal/utils/interaction-inputs.ts +492 -0
- package/src/runtime-internal/utils/interaction-labels.ts +23 -0
- package/src/runtime-internal/utils/interaction-router.ts +273 -0
- package/src/runtime-internal/utils/interaction-status.ts +74 -0
- package/src/runtime-internal/workspace-contract.ts +1170 -0
- package/src/runtime.ts +34 -0
- package/src/testing/create-expect-api.ts +352 -0
- package/src/testing/create-test-runtime.ts +381 -0
- package/src/testing/definitions.ts +127 -0
- package/src/testing/index.ts +3 -0
- package/src/testing.ts +1 -0
- package/src/type-stubs/manifest-contract.d.ts +42 -0
- package/src/type-stubs/manifest-contract.js +72 -0
- package/src/type-stubs/ui-contract.d.ts +5 -0
- package/src/type-stubs/ui-contract.js +1 -0
- package/src/types/authoring-card-properties.type-test.ts +266 -0
- package/src/types/authoring.ts +1282 -0
- package/src/types/cards.ts +19 -0
- package/src/types/contracts.ts +1550 -0
- package/src/types/generated-helpers.ts +35 -0
- package/src/types/index.ts +147 -0
- package/src/types/slots.ts +11 -0
- package/src/types.ts +1 -0
- package/src/ui/components/ActionButton.tsx +97 -0
- package/src/ui/components/ActionPanel.tsx +315 -0
- package/src/ui/components/Card.tsx +378 -0
- package/src/ui/components/CardDragSurface.tsx +1076 -0
- package/src/ui/components/ChromeSuppressionContext.tsx +70 -0
- package/src/ui/components/CostDisplay.tsx +145 -0
- package/src/ui/components/DiceRoller.tsx +581 -0
- package/src/ui/components/Drawer.tsx +180 -0
- package/src/ui/components/ErrorBoundary.tsx +275 -0
- package/src/ui/components/GameEndDisplay.tsx +398 -0
- package/src/ui/components/GameSkeleton.tsx +260 -0
- package/src/ui/components/Hand.tsx +468 -0
- package/src/ui/components/HandDock.tsx +299 -0
- package/src/ui/components/HandView.tsx +441 -0
- package/src/ui/components/MobileHandTray.tsx +381 -0
- package/src/ui/components/MoreActions.tsx +143 -0
- package/src/ui/components/PhaseIndicator.tsx +341 -0
- package/src/ui/components/PlayArea.tsx +146 -0
- package/src/ui/components/PrimaryActionButton.tsx +336 -0
- package/src/ui/components/PrimaryButton.tsx +45 -0
- package/src/ui/components/ResourceCounter.tsx +270 -0
- package/src/ui/components/StagingZone.tsx +134 -0
- package/src/ui/components/ThemedButton.tsx +113 -0
- package/src/ui/components/Toast.tsx +264 -0
- package/src/ui/components/board/HexGrid.tsx +1294 -0
- package/src/ui/components/board/NetworkGraph.tsx +476 -0
- package/src/ui/components/board/SlotSystem.tsx +388 -0
- package/src/ui/components/board/SquareGrid.tsx +1165 -0
- package/src/ui/components/board/TrackBoard.tsx +496 -0
- package/src/ui/components/board/ZoneMap.tsx +448 -0
- package/src/ui/components/board/hex-board-view.ts +123 -0
- package/src/ui/components/board/index.ts +142 -0
- package/src/ui/components/board/interaction-accessibility.ts +21 -0
- package/src/ui/components/board/target-layer.ts +66 -0
- package/src/ui/components/card-render-content.type-test.ts +27 -0
- package/src/ui/components/hand-layout-math.ts +163 -0
- package/src/ui/components/hand-pointer-engine.ts +413 -0
- package/src/ui/components/index.ts +245 -0
- package/src/ui/components.ts +1 -0
- package/src/ui/defaults/components.tsx +106 -0
- package/src/ui/defaults/index.ts +8 -0
- package/src/ui/defaults.ts +1 -0
- package/src/ui/errors/ValidationError.ts +29 -0
- package/src/ui/helpers/cards.ts +19 -0
- package/src/ui/helpers/track-board.ts +211 -0
- package/src/ui/hooks/useBoardTopology.ts +316 -0
- package/src/ui/hooks/useCards.ts +10 -0
- package/src/ui/hooks/useHandCardPointer.ts +381 -0
- package/src/ui/hooks/useHandLayout.ts +378 -0
- package/src/ui/hooks/useHandPresentation.ts +121 -0
- package/src/ui/hooks/useHexBoard.ts +74 -0
- package/src/ui/hooks/useHexGrid.ts +185 -0
- package/src/ui/hooks/useIsMobile.ts +35 -0
- package/src/ui/hooks/usePanZoom.ts +278 -0
- package/src/ui/hooks/useSquareBoard.ts +124 -0
- package/src/ui/hooks/useSquareGrid.ts +328 -0
- package/src/ui/index.ts +98 -0
- package/src/ui/internal/ui/alert.tsx +51 -0
- package/src/ui/internal/ui/button.tsx +58 -0
- package/src/ui/internal/ui/dialog.tsx +134 -0
- package/src/ui/internal/ui/input.tsx +21 -0
- package/src/ui/internal/ui/label.tsx +21 -0
- package/src/ui/internal/ui/select.tsx +129 -0
- package/src/ui/internal/ui/tooltip.tsx +54 -0
- package/src/ui/internal/ui/utils.ts +5 -0
- package/src/ui/plugin-styles.css +250 -0
- package/src/ui/primitives/dialog-lifecycle.ts +58 -0
- package/src/ui/primitives/dice.tsx +79 -0
- package/src/ui/primitives/primitive-props.tsx +101 -0
- package/src/ui/theme/ThemeProvider.tsx +252 -0
- package/src/ui/theme/board.ts +61 -0
- package/src/ui/theme/css-vars.ts +105 -0
- package/src/ui/theme/derive.ts +240 -0
- package/src/ui/theme/index.ts +61 -0
- package/src/ui/theme/presets/arcade.ts +261 -0
- package/src/ui/theme/presets/studio.ts +261 -0
- package/src/ui/theme/presets/tabletop.ts +266 -0
- package/src/ui/theme/tokens.ts +392 -0
- package/src/ui/types/hex-color.ts +20 -0
- package/src/ui/types/player-state.ts +463 -0
- package/src/ui/types/tiled-board.ts +785 -0
- package/src/ui/types/visual-state.ts +137 -0
- package/src/ui.ts +1 -0
package/package.json
ADDED
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@dreamboard-games/sdk",
|
|
3
|
+
"version": "0.2.0",
|
|
4
|
+
"description": "Dreamboard SDK package set metadata and public facade",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"bun": "./src/index.ts",
|
|
11
|
+
"types": "./dist/index.d.ts",
|
|
12
|
+
"import": "./dist/index.js",
|
|
13
|
+
"default": "./dist/index.js"
|
|
14
|
+
},
|
|
15
|
+
"./package-set": {
|
|
16
|
+
"bun": "./src/package-set.ts",
|
|
17
|
+
"types": "./dist/package-set.d.ts",
|
|
18
|
+
"import": "./dist/package-set.js",
|
|
19
|
+
"default": "./dist/package-set.js"
|
|
20
|
+
},
|
|
21
|
+
"./types": {
|
|
22
|
+
"bun": "./src/types.ts",
|
|
23
|
+
"types": "./dist/types.d.ts",
|
|
24
|
+
"import": "./dist/types.js",
|
|
25
|
+
"default": "./dist/types.js"
|
|
26
|
+
},
|
|
27
|
+
"./reducer": {
|
|
28
|
+
"bun": "./src/reducer.ts",
|
|
29
|
+
"types": "./dist/reducer.d.ts",
|
|
30
|
+
"import": "./dist/reducer.js",
|
|
31
|
+
"default": "./dist/reducer.js"
|
|
32
|
+
},
|
|
33
|
+
"./ui": {
|
|
34
|
+
"bun": "./src/ui.ts",
|
|
35
|
+
"types": "./dist/ui.d.ts",
|
|
36
|
+
"import": "./dist/ui.js",
|
|
37
|
+
"default": "./dist/ui.js"
|
|
38
|
+
},
|
|
39
|
+
"./ui/components": {
|
|
40
|
+
"bun": "./src/ui/components.ts",
|
|
41
|
+
"types": "./dist/ui/components.d.ts",
|
|
42
|
+
"import": "./dist/ui/components.js",
|
|
43
|
+
"default": "./dist/ui/components.js"
|
|
44
|
+
},
|
|
45
|
+
"./ui/defaults": {
|
|
46
|
+
"bun": "./src/ui/defaults.ts",
|
|
47
|
+
"types": "./dist/ui/defaults.d.ts",
|
|
48
|
+
"import": "./dist/ui/defaults.js",
|
|
49
|
+
"default": "./dist/ui/defaults.js"
|
|
50
|
+
},
|
|
51
|
+
"./ui/types/player-state": {
|
|
52
|
+
"bun": "./src/ui/types/player-state.ts",
|
|
53
|
+
"types": "./dist/ui/types/player-state.d.ts",
|
|
54
|
+
"import": "./dist/ui/types/player-state.js",
|
|
55
|
+
"default": "./dist/ui/types/player-state.js"
|
|
56
|
+
},
|
|
57
|
+
"./ui/plugin-styles.css": {
|
|
58
|
+
"default": "./dist/ui/plugin-styles.css"
|
|
59
|
+
},
|
|
60
|
+
"./runtime": {
|
|
61
|
+
"bun": "./src/runtime.ts",
|
|
62
|
+
"types": "./dist/runtime.d.ts",
|
|
63
|
+
"import": "./dist/runtime.js",
|
|
64
|
+
"default": "./dist/runtime.js"
|
|
65
|
+
},
|
|
66
|
+
"./runtime/primitives": {
|
|
67
|
+
"bun": "./src/runtime/primitives.ts",
|
|
68
|
+
"types": "./dist/runtime/primitives.d.ts",
|
|
69
|
+
"import": "./dist/runtime/primitives.js",
|
|
70
|
+
"default": "./dist/runtime/primitives.js"
|
|
71
|
+
},
|
|
72
|
+
"./runtime/workspace-contract": {
|
|
73
|
+
"bun": "./src/runtime/workspace-contract.ts",
|
|
74
|
+
"types": "./dist/runtime/workspace-contract.d.ts",
|
|
75
|
+
"import": "./dist/runtime/workspace-contract.js",
|
|
76
|
+
"default": "./dist/runtime/workspace-contract.js"
|
|
77
|
+
},
|
|
78
|
+
"./runtime/types/runtime-api": {
|
|
79
|
+
"bun": "./src/runtime/types/runtime-api.ts",
|
|
80
|
+
"types": "./dist/runtime/types/runtime-api.d.ts",
|
|
81
|
+
"import": "./dist/runtime/types/runtime-api.js",
|
|
82
|
+
"default": "./dist/runtime/types/runtime-api.js"
|
|
83
|
+
},
|
|
84
|
+
"./generated/runtime": {
|
|
85
|
+
"bun": "./src/generated/runtime.ts",
|
|
86
|
+
"types": "./dist/generated/runtime.d.ts",
|
|
87
|
+
"import": "./dist/generated/runtime.js",
|
|
88
|
+
"default": "./dist/generated/runtime.js"
|
|
89
|
+
},
|
|
90
|
+
"./generated/runtime-api": {
|
|
91
|
+
"bun": "./src/generated/runtime-api.ts",
|
|
92
|
+
"types": "./dist/generated/runtime-api.d.ts",
|
|
93
|
+
"import": "./dist/generated/runtime-api.js",
|
|
94
|
+
"default": "./dist/generated/runtime-api.js"
|
|
95
|
+
},
|
|
96
|
+
"./generated/runtime/primitives": {
|
|
97
|
+
"bun": "./src/generated/runtime/primitives.ts",
|
|
98
|
+
"types": "./dist/generated/runtime/primitives.d.ts",
|
|
99
|
+
"import": "./dist/generated/runtime/primitives.js",
|
|
100
|
+
"default": "./dist/generated/runtime/primitives.js"
|
|
101
|
+
},
|
|
102
|
+
"./generated/workspace-contract": {
|
|
103
|
+
"bun": "./src/generated/workspace-contract.ts",
|
|
104
|
+
"types": "./dist/generated/workspace-contract.d.ts",
|
|
105
|
+
"import": "./dist/generated/workspace-contract.js",
|
|
106
|
+
"default": "./dist/generated/workspace-contract.js"
|
|
107
|
+
},
|
|
108
|
+
"./infrastructure/reducer-bundle-abi": {
|
|
109
|
+
"bun": "./src/infrastructure/reducer-bundle-abi.ts",
|
|
110
|
+
"types": "./dist/infrastructure/reducer-bundle-abi.d.ts",
|
|
111
|
+
"import": "./dist/infrastructure/reducer-bundle-abi.js",
|
|
112
|
+
"default": "./dist/infrastructure/reducer-bundle-abi.js"
|
|
113
|
+
},
|
|
114
|
+
"./infrastructure/workspace-codegen": {
|
|
115
|
+
"bun": "./src/infrastructure/workspace-codegen.ts",
|
|
116
|
+
"types": "./dist/infrastructure/workspace-codegen.d.ts",
|
|
117
|
+
"import": "./dist/infrastructure/workspace-codegen.js",
|
|
118
|
+
"default": "./dist/infrastructure/workspace-codegen.js"
|
|
119
|
+
},
|
|
120
|
+
"./testing": {
|
|
121
|
+
"bun": "./src/testing.ts",
|
|
122
|
+
"types": "./dist/testing.d.ts",
|
|
123
|
+
"import": "./dist/testing.js",
|
|
124
|
+
"default": "./dist/testing.js"
|
|
125
|
+
},
|
|
126
|
+
"./package.json": "./package.json"
|
|
127
|
+
},
|
|
128
|
+
"files": [
|
|
129
|
+
"LICENSE.md",
|
|
130
|
+
"dist",
|
|
131
|
+
"src",
|
|
132
|
+
"README.md",
|
|
133
|
+
"!src/**/*.test.ts",
|
|
134
|
+
"!src/**/*.test.tsx",
|
|
135
|
+
"!src/**/__fixtures__/**",
|
|
136
|
+
"!src/**/*.stories.ts",
|
|
137
|
+
"!src/**/*.stories.tsx",
|
|
138
|
+
"!src/stories/**",
|
|
139
|
+
"!visual/**",
|
|
140
|
+
"!.turbo/**",
|
|
141
|
+
"!tsconfig.tsbuildinfo"
|
|
142
|
+
],
|
|
143
|
+
"scripts": {
|
|
144
|
+
"build": "tsup && mkdir -p dist/ui && cp src/ui/plugin-styles.css dist/ui/plugin-styles.css",
|
|
145
|
+
"typecheck": "tsc --noEmit",
|
|
146
|
+
"lint": "eslint 'src/**/*.ts'",
|
|
147
|
+
"test": "bun test"
|
|
148
|
+
},
|
|
149
|
+
"dependencies": {
|
|
150
|
+
"@radix-ui/react-dialog": "^1.1.14",
|
|
151
|
+
"@radix-ui/react-accordion": "^1.2.12",
|
|
152
|
+
"@radix-ui/react-label": "^2.1.6",
|
|
153
|
+
"@radix-ui/react-select": "^2.2.5",
|
|
154
|
+
"@radix-ui/react-slot": "^1.1.2",
|
|
155
|
+
"@radix-ui/react-tooltip": "^1.2.8",
|
|
156
|
+
"@use-gesture/react": "^10.3.1",
|
|
157
|
+
"clsx": "^2.1.1",
|
|
158
|
+
"framer-motion": "^11.15.0",
|
|
159
|
+
"lucide-react": "^0.562.0",
|
|
160
|
+
"react": "^19.2.0",
|
|
161
|
+
"react-dom": "^19.2.0",
|
|
162
|
+
"tailwindcss": "^4.1.5",
|
|
163
|
+
"vaul": "^1.1.2",
|
|
164
|
+
"zod": "4.4.3",
|
|
165
|
+
"zustand": "^5.0.4"
|
|
166
|
+
},
|
|
167
|
+
"devDependencies": {
|
|
168
|
+
"@happy-dom/global-registrator": "^20.9.0",
|
|
169
|
+
"@types/node": "^24.5.2",
|
|
170
|
+
"@types/react": "^19.0.0",
|
|
171
|
+
"@types/react-dom": "^19.0.0",
|
|
172
|
+
"eslint": "^9.39.0",
|
|
173
|
+
"tsup": "^8.5.0",
|
|
174
|
+
"typescript": "^5.9.2"
|
|
175
|
+
},
|
|
176
|
+
"peerDependencies": {
|
|
177
|
+
"framer-motion": "^11.0.0 || ^12.0.0",
|
|
178
|
+
"react": "^19.0.0",
|
|
179
|
+
"zod": "4.4.3"
|
|
180
|
+
},
|
|
181
|
+
"publishConfig": {
|
|
182
|
+
"access": "public"
|
|
183
|
+
},
|
|
184
|
+
"repository": {
|
|
185
|
+
"type": "git",
|
|
186
|
+
"url": "git+https://github.com/dreamboard-games/dreamboard-sdk.git",
|
|
187
|
+
"directory": "packages/sdk"
|
|
188
|
+
},
|
|
189
|
+
"bugs": {
|
|
190
|
+
"url": "https://github.com/dreamboard-games/dreamboard-sdk/issues"
|
|
191
|
+
},
|
|
192
|
+
"homepage": "https://github.com/dreamboard-games/dreamboard-sdk#readme",
|
|
193
|
+
"keywords": [
|
|
194
|
+
"dreamboard",
|
|
195
|
+
"sdk",
|
|
196
|
+
"package-set"
|
|
197
|
+
],
|
|
198
|
+
"license": "SEE LICENSE IN LICENSE.md"
|
|
199
|
+
}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
// @generated by packages/reducer-contract/scripts/generate-ts.mjs
|
|
2
|
+
// DO NOT EDIT BY HAND. Edit schema/reducer-runtime.schema.json and rerun `pnpm generate`.
|
|
3
|
+
|
|
4
|
+
/* eslint-disable */
|
|
5
|
+
import type * as Wire from "./wire";
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Typed effect constructors. Authors MUST go through these; hand-constructing
|
|
9
|
+
* Wire.Effect objects is banned by convention because it's how wire drift
|
|
10
|
+
* re-enters the codebase.
|
|
11
|
+
*
|
|
12
|
+
* The `effectId` is minted by the runtime (see createEffectIdMinter below),
|
|
13
|
+
* not by the author. Each builder returns a `PendingEffect` that carries
|
|
14
|
+
* the optional continuation; the reducer bundle's accept materializer splits
|
|
15
|
+
* pending effects into the wire's `effects[]` + `continuations` map.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
export type PendingEffect = Wire.Effect & {
|
|
19
|
+
readonly __continuation?: Wire.ContinuationToken;
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
export type EffectIdMinter = () => Wire.EffectId;
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Produces sequential, deterministic effect ids scoped to a single accept
|
|
26
|
+
* payload: "ef0", "ef1", ... . Uniqueness only needs to be local to the
|
|
27
|
+
* payload because the host consumes and discards them per dispatch.
|
|
28
|
+
*/
|
|
29
|
+
export function createEffectIdMinter(): EffectIdMinter {
|
|
30
|
+
let i = 0;
|
|
31
|
+
return () => `ef${i++}` as Wire.EffectId;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export type EffectBuilders = {
|
|
35
|
+
transition(args: { to: string }, continuation?: Wire.ContinuationToken): PendingEffect;
|
|
36
|
+
rollDie(args: { dieId: string }, continuation?: Wire.ContinuationToken): PendingEffect;
|
|
37
|
+
shuffleSharedZone(args: { zoneId: string }, continuation?: Wire.ContinuationToken): PendingEffect;
|
|
38
|
+
shufflePlayerZone(args: { zoneId: string; playerId: string }, continuation?: Wire.ContinuationToken): PendingEffect;
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
export function createEffectBuilders(mint: EffectIdMinter): EffectBuilders {
|
|
42
|
+
return {
|
|
43
|
+
transition(args, continuation) {
|
|
44
|
+
const effect = { effectId: mint(), type: "transition" as const, to: args.to };
|
|
45
|
+
return continuation === undefined
|
|
46
|
+
? (effect as PendingEffect)
|
|
47
|
+
: Object.assign(effect, { __continuation: continuation });
|
|
48
|
+
},
|
|
49
|
+
rollDie(args, continuation) {
|
|
50
|
+
const effect = { effectId: mint(), type: "rollDie" as const, dieId: args.dieId };
|
|
51
|
+
return continuation === undefined
|
|
52
|
+
? (effect as PendingEffect)
|
|
53
|
+
: Object.assign(effect, { __continuation: continuation });
|
|
54
|
+
},
|
|
55
|
+
shuffleSharedZone(args, continuation) {
|
|
56
|
+
const effect = { effectId: mint(), type: "shuffleSharedZone" as const, zoneId: args.zoneId };
|
|
57
|
+
return continuation === undefined
|
|
58
|
+
? (effect as PendingEffect)
|
|
59
|
+
: Object.assign(effect, { __continuation: continuation });
|
|
60
|
+
},
|
|
61
|
+
shufflePlayerZone(args, continuation) {
|
|
62
|
+
const effect = { effectId: mint(), type: "shufflePlayerZone" as const, zoneId: args.zoneId, playerId: args.playerId };
|
|
63
|
+
return continuation === undefined
|
|
64
|
+
? (effect as PendingEffect)
|
|
65
|
+
: Object.assign(effect, { __continuation: continuation });
|
|
66
|
+
},
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Takes a list of PendingEffects and splits them into the canonical wire
|
|
72
|
+
* shape: `effects[]` (stripped of `__continuation`) + `continuations` map
|
|
73
|
+
* keyed by effectId. Use at the boundary where reduce/dispatch results leave
|
|
74
|
+
* author code and enter the wire.
|
|
75
|
+
*/
|
|
76
|
+
export function materializeAccept(pending: ReadonlyArray<PendingEffect>): {
|
|
77
|
+
effects: Wire.Effect[];
|
|
78
|
+
continuations: Wire.ContinuationMap;
|
|
79
|
+
} {
|
|
80
|
+
const effects: Wire.Effect[] = [];
|
|
81
|
+
const continuations: Wire.ContinuationMap = {};
|
|
82
|
+
for (const pe of pending) {
|
|
83
|
+
const { __continuation, ...effect } = pe as PendingEffect & { __continuation?: Wire.ContinuationToken };
|
|
84
|
+
effects.push(effect as Wire.Effect);
|
|
85
|
+
if (__continuation !== undefined) {
|
|
86
|
+
continuations[(effect as Wire.Effect).effectId] = __continuation;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
return { effects, continuations };
|
|
90
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// @generated by packages/reducer-contract/scripts/generate-ts.mjs
|
|
2
|
+
// DO NOT EDIT BY HAND. Edit schema/reducer-runtime.schema.json and rerun `pnpm generate`.
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* The wire-protocol version this package implements. Bumped in lockstep with
|
|
6
|
+
* any breaking change to schema/reducer-runtime.schema.json. At bundle load
|
|
7
|
+
* time hosts refuse bundles whose major version differs.
|
|
8
|
+
*/
|
|
9
|
+
export const REDUCER_CONTRACT_VERSION = "0.2.0" as const;
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
// @generated by packages/reducer-contract/scripts/generate-ts.mjs
|
|
2
|
+
// DO NOT EDIT BY HAND. Edit schema/reducer-runtime.schema.json and rerun `pnpm generate`.
|
|
3
|
+
|
|
4
|
+
/* eslint-disable */
|
|
5
|
+
|
|
6
|
+
export type ReducerContractVersion = string;
|
|
7
|
+
|
|
8
|
+
export type EffectId = string;
|
|
9
|
+
|
|
10
|
+
export type ContinuationToken = { "id": string; "data": JsonValue };
|
|
11
|
+
|
|
12
|
+
export type ContinuationMap = Record<string, ContinuationToken>;
|
|
13
|
+
|
|
14
|
+
export type JsonValue = Record<string, unknown> | Array<unknown> | string | number | boolean | null;
|
|
15
|
+
|
|
16
|
+
export type ReducerSetupSelection = { "profileId": string; "optionValues": Record<string, string | null> };
|
|
17
|
+
|
|
18
|
+
export type RngState = { "seed": number | null; "cursor": number; "trace": Array<string> };
|
|
19
|
+
|
|
20
|
+
export type ReducerFlowState = { "currentPhase": string; "turn": number; "round": number; "activePlayers": Array<string> };
|
|
21
|
+
|
|
22
|
+
export type RuntimeSimultaneousSubmission = { "interactionId": string; "params": JsonValue };
|
|
23
|
+
|
|
24
|
+
export type RuntimeSimultaneousCurrent = { "phaseName": string; "actors": Array<string>; "submissions": Record<string, RuntimeSimultaneousSubmission> };
|
|
25
|
+
|
|
26
|
+
export type RuntimeSimultaneousState = { "current": RuntimeSimultaneousCurrent | null };
|
|
27
|
+
|
|
28
|
+
export type TransitionRecord = { "from": string; "to": string };
|
|
29
|
+
|
|
30
|
+
export type ReducerRuntimeState = { "rng": RngState; "setup": ReducerSetupSelection | null; "simultaneous": RuntimeSimultaneousState; "lastTransition": TransitionRecord | null };
|
|
31
|
+
|
|
32
|
+
export type ReducerDomainState = { "table": JsonValue; "publicState": JsonValue; "privateState": Record<string, JsonValue>; "hiddenState": JsonValue; "flow": ReducerFlowState; "phase": JsonValue };
|
|
33
|
+
|
|
34
|
+
export type ReducerSessionState = { "domain": ReducerDomainState; "runtime": ReducerRuntimeState };
|
|
35
|
+
|
|
36
|
+
export type GameInput = GameInputInteraction;
|
|
37
|
+
|
|
38
|
+
export type GameInputInteraction = { "kind": "interaction"; "playerId": string; "interactionId": string; "params": JsonValue };
|
|
39
|
+
|
|
40
|
+
export type Effect = EffectTransition | EffectRollDie | EffectShuffleSharedZone | EffectShufflePlayerZone;
|
|
41
|
+
|
|
42
|
+
export type EffectTransition = { "effectId": EffectId; "type": "transition"; "to": string };
|
|
43
|
+
|
|
44
|
+
export type EffectRollDie = { "effectId": EffectId; "type": "rollDie"; "dieId": string };
|
|
45
|
+
|
|
46
|
+
export type EffectShuffleSharedZone = { "effectId": EffectId; "type": "shuffleSharedZone"; "zoneId": string };
|
|
47
|
+
|
|
48
|
+
export type EffectShufflePlayerZone = { "effectId": EffectId; "type": "shufflePlayerZone"; "zoneId": string; "playerId": string };
|
|
49
|
+
|
|
50
|
+
export type ReducerInputValidationResult = { "valid": boolean; "errorCode"?: string; "message"?: string };
|
|
51
|
+
|
|
52
|
+
export type InitializeRequest = { "table": JsonValue; "playerIds": Array<string>; "rngSeed"?: number | null; "setup"?: ReducerSetupSelection | null };
|
|
53
|
+
|
|
54
|
+
export type InitializePhaseRequest = { "state": ReducerSessionState; "to": string };
|
|
55
|
+
|
|
56
|
+
export type ValidateInputRequest = { "state": ReducerSessionState; "input": GameInput };
|
|
57
|
+
|
|
58
|
+
export type ReduceRequest = { "state": ReducerSessionState; "input": GameInput };
|
|
59
|
+
|
|
60
|
+
export type DispatchRequest = { "state": ReducerSessionState; "input": GameInput };
|
|
61
|
+
|
|
62
|
+
export type ReduceResult = ReduceResultReject | ReduceResultAccept;
|
|
63
|
+
|
|
64
|
+
export type ReduceResultReject = { "kind": "reject"; "errorCode": string; "message"?: string };
|
|
65
|
+
|
|
66
|
+
export type ReduceResultAccept = { "kind": "accept"; "state": ReducerSessionState; "effects": Array<Effect>; "continuations": ContinuationMap };
|
|
67
|
+
|
|
68
|
+
export type DispatchTrace = DispatchTraceAcceptedClientInput | DispatchTraceAppliedEffect | DispatchTraceRngConsumption;
|
|
69
|
+
|
|
70
|
+
export type DispatchTraceAcceptedClientInput = { "kind": "acceptedClientInput"; "input": GameInput };
|
|
71
|
+
|
|
72
|
+
export type DispatchTraceAppliedEffect = { "kind": "appliedEffect"; "effect": Effect; "continuation"?: ContinuationToken };
|
|
73
|
+
|
|
74
|
+
export type DispatchTraceRngConsumption = { "kind": "rngConsumption"; "operation": string; "traceEntry": string };
|
|
75
|
+
|
|
76
|
+
export type DispatchResult = DispatchResultReject | DispatchResultAccept;
|
|
77
|
+
|
|
78
|
+
export type DispatchResultReject = { "kind": "reject"; "errorCode": string; "message"?: string };
|
|
79
|
+
|
|
80
|
+
export type DispatchResultAccept = { "kind": "accept"; "state": ReducerSessionState; "trace": Array<DispatchTrace> };
|
|
81
|
+
|
|
82
|
+
export type ReducerRuntimeLogEntry = ReducerRuntimeLogEntryAcceptedClientInput | ReducerRuntimeLogEntryAppliedEffect | ReducerRuntimeLogEntryRngConsumption | ReducerRuntimeLogEntryStateCommit;
|
|
83
|
+
|
|
84
|
+
export type ReducerRuntimeLogEntryAcceptedClientInput = { "kind": "acceptedClientInput"; "version": number; "input": GameInput };
|
|
85
|
+
|
|
86
|
+
export type ReducerRuntimeLogEntryAppliedEffect = { "kind": "appliedEffect"; "version": number; "effect": Effect; "continuation": ContinuationToken | null };
|
|
87
|
+
|
|
88
|
+
export type ReducerRuntimeLogEntryRngConsumption = { "kind": "rngConsumption"; "version": number; "operation": string; "traceEntry": string };
|
|
89
|
+
|
|
90
|
+
export type ReducerRuntimeLogEntryStateCommit = { "kind": "stateCommit"; "version": number; "state": ReducerSessionState };
|
|
91
|
+
|
|
92
|
+
export type SeatProjection = { "view"?: JsonValue; "availableInteractionRefs"?: JsonValue; "zones"?: JsonValue };
|
|
93
|
+
|
|
94
|
+
export type SimultaneousPhaseProjection = { "phaseName": string; "interactionId": string; "actorIds": Array<string>; "sealedPlayerIds": Array<string>; "pendingPlayerIds": Array<string> };
|
|
95
|
+
|
|
96
|
+
export type SeatProjectionBundle = { "currentStage"?: string | null; "stageSeats"?: Array<string>; "simultaneousPhase"?: SimultaneousPhaseProjection | null; "interactionsByRef"?: JsonValue; "seats": Record<string, SeatProjection> };
|
|
97
|
+
|
|
98
|
+
export type ProjectSeatsDynamicRequest = { "state": ReducerSessionState; "playerIds": Array<string>; "viewId"?: string; "projectionMode"?: "full" | "actionsOnly" | null };
|
|
99
|
+
|
|
100
|
+
export type BoardStaticProjection = { "view": JsonValue; "hash": string; "manifestVersion": string };
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
// @generated by packages/reducer-contract/scripts/generate-ts.mjs
|
|
2
|
+
// DO NOT EDIT BY HAND. Edit schema/reducer-runtime.schema.json and rerun `pnpm generate`.
|
|
3
|
+
|
|
4
|
+
/* eslint-disable */
|
|
5
|
+
import { z } from "zod";
|
|
6
|
+
|
|
7
|
+
export const ReducerContractVersionSchema = z.string().regex(new RegExp("^[0-9]+\\.[0-9]+\\.[0-9]+$"));
|
|
8
|
+
|
|
9
|
+
export const EffectIdSchema = z.string().min(1);
|
|
10
|
+
|
|
11
|
+
export const JsonValueSchema = z.union([z.record(z.string(), z.unknown()), z.array(z.unknown()), z.string(), z.number(), z.boolean(), z.null()]);
|
|
12
|
+
|
|
13
|
+
export const ContinuationTokenSchema = z.object({ "id": z.string().min(1), "data": JsonValueSchema }).strict();
|
|
14
|
+
|
|
15
|
+
export const ContinuationMapSchema = z.record(z.string(), ContinuationTokenSchema);
|
|
16
|
+
|
|
17
|
+
export const ReducerSetupSelectionSchema = z.object({ "profileId": z.string().min(1), "optionValues": z.record(z.string(), z.union([z.string(), z.null()])) }).strict();
|
|
18
|
+
|
|
19
|
+
export const RngStateSchema = z.object({ "seed": z.union([z.number().refine(Number.isInteger, { message: "Expected integer" }), z.null()]), "cursor": z.number().int(), "trace": z.array(z.string()) }).strict();
|
|
20
|
+
|
|
21
|
+
export const ReducerFlowStateSchema = z.object({ "currentPhase": z.string().min(1), "turn": z.number().int(), "round": z.number().int(), "activePlayers": z.array(z.string().min(1)) }).strict();
|
|
22
|
+
|
|
23
|
+
export const RuntimeSimultaneousSubmissionSchema = z.object({ "interactionId": z.string().min(1), "params": JsonValueSchema }).strict();
|
|
24
|
+
|
|
25
|
+
export const RuntimeSimultaneousCurrentSchema = z.object({ "phaseName": z.string().min(1), "actors": z.array(z.string().min(1)), "submissions": z.record(z.string(), RuntimeSimultaneousSubmissionSchema) }).strict();
|
|
26
|
+
|
|
27
|
+
export const RuntimeSimultaneousStateSchema = z.object({ "current": z.union([RuntimeSimultaneousCurrentSchema, z.null()]) }).strict();
|
|
28
|
+
|
|
29
|
+
export const TransitionRecordSchema = z.object({ "from": z.string().min(1), "to": z.string().min(1) }).strict();
|
|
30
|
+
|
|
31
|
+
export const ReducerRuntimeStateSchema = z.object({ "rng": RngStateSchema, "setup": z.union([ReducerSetupSelectionSchema, z.null()]), "simultaneous": RuntimeSimultaneousStateSchema, "lastTransition": z.union([TransitionRecordSchema, z.null()]) }).strict();
|
|
32
|
+
|
|
33
|
+
export const ReducerDomainStateSchema = z.object({ "table": JsonValueSchema, "publicState": JsonValueSchema, "privateState": z.record(z.string(), JsonValueSchema), "hiddenState": JsonValueSchema, "flow": ReducerFlowStateSchema, "phase": JsonValueSchema }).strict();
|
|
34
|
+
|
|
35
|
+
export const ReducerSessionStateSchema = z.object({ "domain": ReducerDomainStateSchema, "runtime": ReducerRuntimeStateSchema }).strict();
|
|
36
|
+
|
|
37
|
+
export const GameInputInteractionSchema = z.object({ "kind": z.literal("interaction"), "playerId": z.string().min(1), "interactionId": z.string().min(1), "params": JsonValueSchema }).strict();
|
|
38
|
+
|
|
39
|
+
export const GameInputSchema = z.discriminatedUnion("kind", [GameInputInteractionSchema]);
|
|
40
|
+
|
|
41
|
+
export const EffectTransitionSchema = z.object({ "effectId": EffectIdSchema, "type": z.literal("transition"), "to": z.string().min(1) }).strict();
|
|
42
|
+
|
|
43
|
+
export const EffectRollDieSchema = z.object({ "effectId": EffectIdSchema, "type": z.literal("rollDie"), "dieId": z.string().min(1) }).strict();
|
|
44
|
+
|
|
45
|
+
export const EffectShuffleSharedZoneSchema = z.object({ "effectId": EffectIdSchema, "type": z.literal("shuffleSharedZone"), "zoneId": z.string().min(1) }).strict();
|
|
46
|
+
|
|
47
|
+
export const EffectShufflePlayerZoneSchema = z.object({ "effectId": EffectIdSchema, "type": z.literal("shufflePlayerZone"), "zoneId": z.string().min(1), "playerId": z.string().min(1) }).strict();
|
|
48
|
+
|
|
49
|
+
export const EffectSchema = z.discriminatedUnion("type", [EffectTransitionSchema, EffectRollDieSchema, EffectShuffleSharedZoneSchema, EffectShufflePlayerZoneSchema]);
|
|
50
|
+
|
|
51
|
+
export const ReducerInputValidationResultSchema = z.object({ "valid": z.boolean(), "errorCode": z.string().optional(), "message": z.string().optional() }).strict();
|
|
52
|
+
|
|
53
|
+
export const InitializeRequestSchema = z.object({ "table": JsonValueSchema, "playerIds": z.array(z.string().min(1)), "rngSeed": z.union([z.number().refine(Number.isInteger, { message: "Expected integer" }), z.null()]).optional(), "setup": z.union([ReducerSetupSelectionSchema, z.null()]).optional() }).strict();
|
|
54
|
+
|
|
55
|
+
export const InitializePhaseRequestSchema = z.object({ "state": ReducerSessionStateSchema, "to": z.string().min(1) }).strict();
|
|
56
|
+
|
|
57
|
+
export const ValidateInputRequestSchema = z.object({ "state": ReducerSessionStateSchema, "input": GameInputSchema }).strict();
|
|
58
|
+
|
|
59
|
+
export const ReduceRequestSchema = z.object({ "state": ReducerSessionStateSchema, "input": GameInputSchema }).strict();
|
|
60
|
+
|
|
61
|
+
export const DispatchRequestSchema = z.object({ "state": ReducerSessionStateSchema, "input": GameInputSchema }).strict();
|
|
62
|
+
|
|
63
|
+
export const ReduceResultRejectSchema = z.object({ "kind": z.literal("reject"), "errorCode": z.string().min(1), "message": z.string().optional() }).strict();
|
|
64
|
+
|
|
65
|
+
export const ReduceResultAcceptSchema = z.object({ "kind": z.literal("accept"), "state": ReducerSessionStateSchema, "effects": z.array(EffectSchema), "continuations": ContinuationMapSchema }).strict();
|
|
66
|
+
|
|
67
|
+
export const ReduceResultSchema = z.discriminatedUnion("kind", [ReduceResultRejectSchema, ReduceResultAcceptSchema]);
|
|
68
|
+
|
|
69
|
+
export const DispatchTraceAcceptedClientInputSchema = z.object({ "kind": z.literal("acceptedClientInput"), "input": GameInputSchema }).strict();
|
|
70
|
+
|
|
71
|
+
export const DispatchTraceAppliedEffectSchema = z.object({ "kind": z.literal("appliedEffect"), "effect": EffectSchema, "continuation": ContinuationTokenSchema.optional() }).strict();
|
|
72
|
+
|
|
73
|
+
export const DispatchTraceRngConsumptionSchema = z.object({ "kind": z.literal("rngConsumption"), "operation": z.string().min(1), "traceEntry": z.string() }).strict();
|
|
74
|
+
|
|
75
|
+
export const DispatchTraceSchema = z.discriminatedUnion("kind", [DispatchTraceAcceptedClientInputSchema, DispatchTraceAppliedEffectSchema, DispatchTraceRngConsumptionSchema]);
|
|
76
|
+
|
|
77
|
+
export const DispatchResultRejectSchema = z.object({ "kind": z.literal("reject"), "errorCode": z.string().min(1), "message": z.string().optional() }).strict();
|
|
78
|
+
|
|
79
|
+
export const DispatchResultAcceptSchema = z.object({ "kind": z.literal("accept"), "state": ReducerSessionStateSchema, "trace": z.array(DispatchTraceSchema) }).strict();
|
|
80
|
+
|
|
81
|
+
export const DispatchResultSchema = z.discriminatedUnion("kind", [DispatchResultRejectSchema, DispatchResultAcceptSchema]);
|
|
82
|
+
|
|
83
|
+
export const ReducerRuntimeLogEntryAcceptedClientInputSchema = z.object({ "kind": z.literal("acceptedClientInput"), "version": z.number().int(), "input": GameInputSchema }).strict();
|
|
84
|
+
|
|
85
|
+
export const ReducerRuntimeLogEntryAppliedEffectSchema = z.object({ "kind": z.literal("appliedEffect"), "version": z.number().int(), "effect": EffectSchema, "continuation": z.union([ContinuationTokenSchema, z.null()]) }).strict();
|
|
86
|
+
|
|
87
|
+
export const ReducerRuntimeLogEntryRngConsumptionSchema = z.object({ "kind": z.literal("rngConsumption"), "version": z.number().int(), "operation": z.string().min(1), "traceEntry": z.string() }).strict();
|
|
88
|
+
|
|
89
|
+
export const ReducerRuntimeLogEntryStateCommitSchema = z.object({ "kind": z.literal("stateCommit"), "version": z.number().int(), "state": ReducerSessionStateSchema }).strict();
|
|
90
|
+
|
|
91
|
+
export const ReducerRuntimeLogEntrySchema = z.discriminatedUnion("kind", [ReducerRuntimeLogEntryAcceptedClientInputSchema, ReducerRuntimeLogEntryAppliedEffectSchema, ReducerRuntimeLogEntryRngConsumptionSchema, ReducerRuntimeLogEntryStateCommitSchema]);
|
|
92
|
+
|
|
93
|
+
export const SeatProjectionSchema = z.object({ "view": JsonValueSchema.optional(), "availableInteractionRefs": JsonValueSchema.optional(), "zones": JsonValueSchema.optional() }).strict();
|
|
94
|
+
|
|
95
|
+
export const SimultaneousPhaseProjectionSchema = z.object({ "phaseName": z.string().min(1), "interactionId": z.string().min(1), "actorIds": z.array(z.string().min(1)), "sealedPlayerIds": z.array(z.string().min(1)), "pendingPlayerIds": z.array(z.string().min(1)) }).strict();
|
|
96
|
+
|
|
97
|
+
export const SeatProjectionBundleSchema = z.object({ "currentStage": z.union([z.string().min(1), z.null()]).optional(), "stageSeats": z.array(z.string().min(1)).optional(), "simultaneousPhase": z.union([SimultaneousPhaseProjectionSchema, z.null()]).optional(), "interactionsByRef": JsonValueSchema.optional(), "seats": z.record(z.string(), SeatProjectionSchema) }).strict();
|
|
98
|
+
|
|
99
|
+
export const ProjectSeatsDynamicRequestSchema = z.object({ "state": ReducerSessionStateSchema, "playerIds": z.array(z.string().min(1)), "viewId": z.string().min(1).optional(), "projectionMode": z.union([z.enum(["full", "actionsOnly"]), z.null()]).optional() }).strict();
|
|
100
|
+
|
|
101
|
+
export const BoardStaticProjectionSchema = z.object({ "view": JsonValueSchema, "hash": z.string().min(1), "manifestVersion": z.string() }).strict();
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export * from "../runtime.js";
|
|
2
|
+
export { createWorkspaceUIContract } from "../runtime/workspace-contract.js";
|
|
3
|
+
export type {
|
|
4
|
+
BoardHexGridProps,
|
|
5
|
+
BoardHexViewProps,
|
|
6
|
+
BoardSpaceTargetProps,
|
|
7
|
+
ClientParamSchemaMap,
|
|
8
|
+
DreamboardUI,
|
|
9
|
+
GameMeState,
|
|
10
|
+
GamePlayersState,
|
|
11
|
+
GameRenderState,
|
|
12
|
+
GameTurnState,
|
|
13
|
+
ResourceCounterComponents,
|
|
14
|
+
TypedGame,
|
|
15
|
+
UIContract,
|
|
16
|
+
UIRootProps,
|
|
17
|
+
WorkspaceBoardSurface,
|
|
18
|
+
WorkspaceBoardSurfaceDescriptor,
|
|
19
|
+
WorkspaceBoardTargetInputSlot,
|
|
20
|
+
WorkspaceCardCollectionSurface,
|
|
21
|
+
WorkspaceCardCollectionSurfaceDescriptor,
|
|
22
|
+
WorkspaceCardInputSlot,
|
|
23
|
+
WorkspaceFormInputSlot,
|
|
24
|
+
WorkspaceHandSurface,
|
|
25
|
+
WorkspaceHandSurfaceDescriptor,
|
|
26
|
+
WorkspaceInteractionFormDescriptor,
|
|
27
|
+
WorkspaceInteractionFormsDescriptor,
|
|
28
|
+
WorkspaceInteractionSlotComponent,
|
|
29
|
+
WorkspacePileSurface,
|
|
30
|
+
WorkspacePileSurfaceDescriptor,
|
|
31
|
+
WorkspacePilesSurfaceDescriptor,
|
|
32
|
+
WorkspaceSurfaceSpec,
|
|
33
|
+
ZoneCardRenderItem,
|
|
34
|
+
ZoneListProps,
|
|
35
|
+
} from "../runtime/workspace-contract.js";
|
package/src/index.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { REDUCER_CONTRACT_VERSION } from "../generated/reducer-contract/version.js";
|
|
2
|
+
export type {
|
|
3
|
+
MaybePromise,
|
|
4
|
+
ReducerBundleContract,
|
|
5
|
+
} from "./reducer-contract/bundle.js";
|
|
6
|
+
export { materializeManifestTable } from "./workspace-codegen/index.js";
|
|
7
|
+
export type * as ReducerWire from "../generated/reducer-contract/wire.js";
|
|
8
|
+
export * as ReducerWireZod from "../generated/reducer-contract/zod.js";
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
// @generated by packages/reducer-contract/scripts/generate-ts.mjs
|
|
2
|
+
// DO NOT EDIT BY HAND. Edit schema/reducer-runtime.operations.json and rerun `pnpm generate`.
|
|
3
|
+
|
|
4
|
+
/* eslint-disable */
|
|
5
|
+
import type * as Wire from "../../generated/reducer-contract/wire";
|
|
6
|
+
|
|
7
|
+
export type MaybePromise<T> = T | Promise<T>;
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Canonical erased reducer boundary for `createReducerBundle(...)`.
|
|
11
|
+
*
|
|
12
|
+
* The callable method list is generated from
|
|
13
|
+
* `schema/reducer-runtime.operations.json`; payload DTOs come from
|
|
14
|
+
* `schema/reducer-runtime.schema.json`.
|
|
15
|
+
*
|
|
16
|
+
* This interface models the host/guest surface only. The concrete
|
|
17
|
+
* authored bundle stays strongly typed in `@dreamboard-games/sdk/reducer`, but every
|
|
18
|
+
* cross-runtime caller should agree on this shape.
|
|
19
|
+
*/
|
|
20
|
+
export interface ReducerBundleContract {
|
|
21
|
+
readonly reducerContractVersion: Wire.ReducerContractVersion;
|
|
22
|
+
initialize(
|
|
23
|
+
input: Wire.InitializeRequest,
|
|
24
|
+
): MaybePromise<Wire.ReducerSessionState>;
|
|
25
|
+
initializePhase(
|
|
26
|
+
input: Wire.InitializePhaseRequest,
|
|
27
|
+
): MaybePromise<Wire.ReducerSessionState>;
|
|
28
|
+
validateInput(
|
|
29
|
+
input: Wire.ValidateInputRequest,
|
|
30
|
+
): MaybePromise<Wire.ReducerInputValidationResult>;
|
|
31
|
+
reduce(input: Wire.ReduceRequest): MaybePromise<Wire.ReduceResult>;
|
|
32
|
+
dispatch(input: Wire.DispatchRequest): MaybePromise<Wire.DispatchResult>;
|
|
33
|
+
projectStatic(): Wire.BoardStaticProjection | null;
|
|
34
|
+
projectSeatsDynamic(
|
|
35
|
+
input: Wire.ProjectSeatsDynamicRequest,
|
|
36
|
+
): Wire.SeatProjectionBundle;
|
|
37
|
+
}
|