@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,211 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
BROWSER_INTERACTION_ATTRIBUTES,
|
|
3
|
-
DREAMBOARD_BROWSER_INTERACTION_PROTOCOL_VERSION,
|
|
4
|
-
GAMEPLAY_BROWSER_INTERACTION_SURFACE,
|
|
5
|
-
} from "./constants.js";
|
|
6
|
-
import { encodeCanonicalCandidateValue } from "./canonical.js";
|
|
7
|
-
import {
|
|
8
|
-
encodeBrowserInteractionEffect,
|
|
9
|
-
encodeBrowserInteractionEffectPattern,
|
|
10
|
-
} from "./effects.js";
|
|
11
|
-
import type {
|
|
12
|
-
BrowserInteractionActuatorKind,
|
|
13
|
-
BrowserInteractionCandidateState,
|
|
14
|
-
BrowserInteractionEffectPattern,
|
|
15
|
-
BrowserInteractionIntent,
|
|
16
|
-
BrowserInteractionPreparationTarget,
|
|
17
|
-
BrowserInteractionReadiness,
|
|
18
|
-
BrowserInteractionSurfaceEffect,
|
|
19
|
-
GameplayBrowserInteractionIntent,
|
|
20
|
-
GameplaySemanticEffect,
|
|
21
|
-
GameplaySemanticEffectPattern,
|
|
22
|
-
} from "./types.js";
|
|
23
|
-
|
|
24
|
-
export type BrowserInteractionAttributeMap = Record<string, string | boolean>;
|
|
25
|
-
|
|
26
|
-
export interface BrowserInteractionRootAttributesInput {
|
|
27
|
-
readonly surface: string;
|
|
28
|
-
readonly scopeId: string;
|
|
29
|
-
readonly interactionKey: string;
|
|
30
|
-
readonly interactionId: string;
|
|
31
|
-
readonly descriptorDigest?: string;
|
|
32
|
-
readonly draftDigest?: string;
|
|
33
|
-
readonly readiness: BrowserInteractionReadiness;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
export interface BrowserInteractionActuatorAttributesInput {
|
|
37
|
-
readonly surface: string;
|
|
38
|
-
readonly scopeId: string;
|
|
39
|
-
readonly interactionKey: string;
|
|
40
|
-
readonly interactionId: string;
|
|
41
|
-
readonly descriptorDigest?: string;
|
|
42
|
-
readonly draftDigest?: string;
|
|
43
|
-
readonly intent: BrowserInteractionIntent;
|
|
44
|
-
readonly inputKey?: string;
|
|
45
|
-
readonly candidateValue?: unknown;
|
|
46
|
-
readonly candidateState?: BrowserInteractionCandidateState;
|
|
47
|
-
readonly enabled?: boolean;
|
|
48
|
-
readonly actuatorKind: BrowserInteractionActuatorKind;
|
|
49
|
-
readonly actuatorId?: string;
|
|
50
|
-
readonly semanticEffects?: readonly BrowserInteractionSurfaceEffect[];
|
|
51
|
-
readonly acceptedEffectPatterns?: readonly BrowserInteractionEffectPattern[];
|
|
52
|
-
readonly preparationPatterns?: readonly BrowserInteractionEffectPattern[];
|
|
53
|
-
readonly prepares?: BrowserInteractionPreparationTarget;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
function baseGameplayAttributes(
|
|
57
|
-
input: Pick<
|
|
58
|
-
BrowserInteractionRootAttributesInput,
|
|
59
|
-
"surface" | "scopeId" | "interactionKey" | "interactionId"
|
|
60
|
-
>,
|
|
61
|
-
): BrowserInteractionAttributeMap {
|
|
62
|
-
return {
|
|
63
|
-
[BROWSER_INTERACTION_ATTRIBUTES.protocol]:
|
|
64
|
-
DREAMBOARD_BROWSER_INTERACTION_PROTOCOL_VERSION,
|
|
65
|
-
[BROWSER_INTERACTION_ATTRIBUTES.surface]: input.surface,
|
|
66
|
-
[BROWSER_INTERACTION_ATTRIBUTES.scope]: input.scopeId,
|
|
67
|
-
[BROWSER_INTERACTION_ATTRIBUTES.interactionKey]: input.interactionKey,
|
|
68
|
-
[BROWSER_INTERACTION_ATTRIBUTES.interactionId]: input.interactionId,
|
|
69
|
-
};
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
export function createBrowserInteractionRootAttributes(
|
|
73
|
-
input: BrowserInteractionRootAttributesInput,
|
|
74
|
-
): BrowserInteractionAttributeMap {
|
|
75
|
-
return {
|
|
76
|
-
...baseGameplayAttributes(input),
|
|
77
|
-
[BROWSER_INTERACTION_ATTRIBUTES.role]: "interaction",
|
|
78
|
-
[BROWSER_INTERACTION_ATTRIBUTES.descriptorDigest]:
|
|
79
|
-
input.descriptorDigest ?? "",
|
|
80
|
-
[BROWSER_INTERACTION_ATTRIBUTES.draftDigest]: input.draftDigest ?? "",
|
|
81
|
-
[BROWSER_INTERACTION_ATTRIBUTES.readiness]: input.readiness,
|
|
82
|
-
};
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
export function createBrowserInteractionActuatorAttributes(
|
|
86
|
-
input: BrowserInteractionActuatorAttributesInput,
|
|
87
|
-
): BrowserInteractionAttributeMap {
|
|
88
|
-
const attrs: BrowserInteractionAttributeMap = {
|
|
89
|
-
...baseGameplayAttributes(input),
|
|
90
|
-
[BROWSER_INTERACTION_ATTRIBUTES.role]: "actuator",
|
|
91
|
-
[BROWSER_INTERACTION_ATTRIBUTES.intent]: input.intent,
|
|
92
|
-
[BROWSER_INTERACTION_ATTRIBUTES.actuatorKind]: input.actuatorKind,
|
|
93
|
-
[BROWSER_INTERACTION_ATTRIBUTES.enabled]:
|
|
94
|
-
input.enabled === false ? "false" : "true",
|
|
95
|
-
};
|
|
96
|
-
if (input.descriptorDigest) {
|
|
97
|
-
attrs[BROWSER_INTERACTION_ATTRIBUTES.descriptorDigest] =
|
|
98
|
-
input.descriptorDigest;
|
|
99
|
-
}
|
|
100
|
-
if (input.draftDigest) {
|
|
101
|
-
attrs[BROWSER_INTERACTION_ATTRIBUTES.draftDigest] = input.draftDigest;
|
|
102
|
-
}
|
|
103
|
-
if (input.actuatorId) {
|
|
104
|
-
attrs[BROWSER_INTERACTION_ATTRIBUTES.actuatorId] = input.actuatorId;
|
|
105
|
-
}
|
|
106
|
-
if (input.inputKey) {
|
|
107
|
-
attrs[BROWSER_INTERACTION_ATTRIBUTES.inputKey] = input.inputKey;
|
|
108
|
-
}
|
|
109
|
-
if ("candidateValue" in input) {
|
|
110
|
-
attrs[BROWSER_INTERACTION_ATTRIBUTES.candidateValue] =
|
|
111
|
-
encodeCanonicalCandidateValue(input.candidateValue);
|
|
112
|
-
}
|
|
113
|
-
if (input.candidateState) {
|
|
114
|
-
attrs[BROWSER_INTERACTION_ATTRIBUTES.candidateState] = input.candidateState;
|
|
115
|
-
}
|
|
116
|
-
if (input.semanticEffects && input.semanticEffects.length > 0) {
|
|
117
|
-
attrs[BROWSER_INTERACTION_ATTRIBUTES.semanticEffects] = JSON.stringify(
|
|
118
|
-
input.semanticEffects.map(encodeBrowserInteractionEffect),
|
|
119
|
-
);
|
|
120
|
-
}
|
|
121
|
-
if (input.acceptedEffectPatterns && input.acceptedEffectPatterns.length > 0) {
|
|
122
|
-
attrs[BROWSER_INTERACTION_ATTRIBUTES.acceptedEffectPatterns] =
|
|
123
|
-
JSON.stringify(
|
|
124
|
-
input.acceptedEffectPatterns.map(encodeBrowserInteractionEffectPattern),
|
|
125
|
-
);
|
|
126
|
-
}
|
|
127
|
-
if (input.preparationPatterns && input.preparationPatterns.length > 0) {
|
|
128
|
-
attrs[BROWSER_INTERACTION_ATTRIBUTES.preparationPatterns] = JSON.stringify(
|
|
129
|
-
input.preparationPatterns.map(encodeBrowserInteractionEffectPattern),
|
|
130
|
-
);
|
|
131
|
-
}
|
|
132
|
-
if (input.prepares) {
|
|
133
|
-
attrs[BROWSER_INTERACTION_ATTRIBUTES.preparesIntent] =
|
|
134
|
-
input.prepares.intent;
|
|
135
|
-
if (input.prepares.inputKey) {
|
|
136
|
-
attrs[BROWSER_INTERACTION_ATTRIBUTES.preparesInputKey] =
|
|
137
|
-
input.prepares.inputKey;
|
|
138
|
-
}
|
|
139
|
-
if (input.prepares.candidateValueKey) {
|
|
140
|
-
attrs[BROWSER_INTERACTION_ATTRIBUTES.preparesCandidateValue] =
|
|
141
|
-
input.prepares.candidateValueKey;
|
|
142
|
-
} else if ("candidateValue" in input.prepares) {
|
|
143
|
-
attrs[BROWSER_INTERACTION_ATTRIBUTES.preparesCandidateValue] =
|
|
144
|
-
encodeCanonicalCandidateValue(input.prepares.candidateValue);
|
|
145
|
-
}
|
|
146
|
-
if (input.prepares.actuatorKind) {
|
|
147
|
-
attrs[BROWSER_INTERACTION_ATTRIBUTES.preparesActuatorKind] =
|
|
148
|
-
input.prepares.actuatorKind;
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
return attrs;
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
export type GameplayInteractionRootAttributesInput = Omit<
|
|
155
|
-
BrowserInteractionRootAttributesInput,
|
|
156
|
-
"surface"
|
|
157
|
-
>;
|
|
158
|
-
|
|
159
|
-
export type GameplayActuatorAttributesInput = Omit<
|
|
160
|
-
BrowserInteractionActuatorAttributesInput,
|
|
161
|
-
| "surface"
|
|
162
|
-
| "intent"
|
|
163
|
-
| "semanticEffects"
|
|
164
|
-
| "acceptedEffectPatterns"
|
|
165
|
-
| "preparationPatterns"
|
|
166
|
-
> & {
|
|
167
|
-
readonly intent: GameplayBrowserInteractionIntent;
|
|
168
|
-
readonly semanticEffects?: readonly GameplaySemanticEffect[];
|
|
169
|
-
readonly acceptedEffectPatterns?: readonly GameplaySemanticEffectPattern[];
|
|
170
|
-
readonly preparationPatterns?: readonly GameplaySemanticEffectPattern[];
|
|
171
|
-
};
|
|
172
|
-
|
|
173
|
-
export function createGameplayInteractionRootAttributes(
|
|
174
|
-
input: GameplayInteractionRootAttributesInput,
|
|
175
|
-
): BrowserInteractionAttributeMap {
|
|
176
|
-
return createBrowserInteractionRootAttributes({
|
|
177
|
-
...input,
|
|
178
|
-
surface: GAMEPLAY_BROWSER_INTERACTION_SURFACE,
|
|
179
|
-
});
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
export function createGameplayActuatorAttributes(
|
|
183
|
-
input: GameplayActuatorAttributesInput,
|
|
184
|
-
): BrowserInteractionAttributeMap {
|
|
185
|
-
return createBrowserInteractionActuatorAttributes({
|
|
186
|
-
...input,
|
|
187
|
-
surface: GAMEPLAY_BROWSER_INTERACTION_SURFACE,
|
|
188
|
-
});
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
export function createBrowserInteractionActuatorKey(input: {
|
|
192
|
-
readonly surface: string;
|
|
193
|
-
readonly scopeId: string;
|
|
194
|
-
readonly interactionKey: string;
|
|
195
|
-
readonly intent: BrowserInteractionIntent;
|
|
196
|
-
readonly inputKey?: string;
|
|
197
|
-
readonly candidateValueKey?: string;
|
|
198
|
-
readonly actuatorKind: BrowserInteractionActuatorKind;
|
|
199
|
-
}): string {
|
|
200
|
-
return [
|
|
201
|
-
input.surface,
|
|
202
|
-
input.scopeId,
|
|
203
|
-
input.interactionKey,
|
|
204
|
-
input.intent,
|
|
205
|
-
input.inputKey ?? "",
|
|
206
|
-
input.candidateValueKey ?? "",
|
|
207
|
-
input.actuatorKind,
|
|
208
|
-
]
|
|
209
|
-
.map((part) => encodeURIComponent(part))
|
|
210
|
-
.join("|");
|
|
211
|
-
}
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
export type CanonicalBrowserInteractionValue =
|
|
2
|
-
| null
|
|
3
|
-
| boolean
|
|
4
|
-
| number
|
|
5
|
-
| string
|
|
6
|
-
| readonly CanonicalBrowserInteractionValue[]
|
|
7
|
-
| { readonly [key: string]: CanonicalBrowserInteractionValue };
|
|
8
|
-
|
|
9
|
-
function assertCanonicalValue(
|
|
10
|
-
value: unknown,
|
|
11
|
-
): asserts value is CanonicalBrowserInteractionValue {
|
|
12
|
-
if (value === null) return;
|
|
13
|
-
switch (typeof value) {
|
|
14
|
-
case "boolean":
|
|
15
|
-
case "string":
|
|
16
|
-
return;
|
|
17
|
-
case "number":
|
|
18
|
-
if (Number.isFinite(value)) return;
|
|
19
|
-
break;
|
|
20
|
-
case "object":
|
|
21
|
-
if (Array.isArray(value)) {
|
|
22
|
-
value.forEach(assertCanonicalValue);
|
|
23
|
-
return;
|
|
24
|
-
}
|
|
25
|
-
if (Object.getPrototypeOf(value) !== Object.prototype) break;
|
|
26
|
-
for (const [key, item] of Object.entries(value)) {
|
|
27
|
-
if (item === undefined) {
|
|
28
|
-
throw new Error(
|
|
29
|
-
`Browser interaction candidate '${key}' cannot be undefined.`,
|
|
30
|
-
);
|
|
31
|
-
}
|
|
32
|
-
assertCanonicalValue(item);
|
|
33
|
-
}
|
|
34
|
-
return;
|
|
35
|
-
}
|
|
36
|
-
throw new Error(
|
|
37
|
-
`Browser interaction candidates must be JSON-serializable primitives, arrays or plain objects. Received ${typeof value}.`,
|
|
38
|
-
);
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
function canonicalizeValue(
|
|
42
|
-
value: CanonicalBrowserInteractionValue,
|
|
43
|
-
): CanonicalBrowserInteractionValue {
|
|
44
|
-
if (Array.isArray(value)) {
|
|
45
|
-
return value.map(canonicalizeValue);
|
|
46
|
-
}
|
|
47
|
-
if (value && typeof value === "object") {
|
|
48
|
-
const objectValue = value as {
|
|
49
|
-
readonly [key: string]: CanonicalBrowserInteractionValue;
|
|
50
|
-
};
|
|
51
|
-
return Object.fromEntries(
|
|
52
|
-
Object.keys(objectValue)
|
|
53
|
-
.sort()
|
|
54
|
-
.map((key) => [key, canonicalizeValue(objectValue[key])]),
|
|
55
|
-
);
|
|
56
|
-
}
|
|
57
|
-
return value;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
export function encodeCanonicalCandidateValue(value: unknown): string {
|
|
61
|
-
assertCanonicalValue(value);
|
|
62
|
-
return JSON.stringify(canonicalizeValue(value));
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
export function decodeCanonicalCandidateValue(
|
|
66
|
-
encoded: string,
|
|
67
|
-
): CanonicalBrowserInteractionValue {
|
|
68
|
-
const parsed = JSON.parse(encoded) as unknown;
|
|
69
|
-
assertCanonicalValue(parsed);
|
|
70
|
-
return canonicalizeValue(parsed);
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
export function compareStableJson(a: unknown, b: unknown): number {
|
|
74
|
-
const encodedA = encodeCanonicalCandidateValue(a);
|
|
75
|
-
const encodedB = encodeCanonicalCandidateValue(b);
|
|
76
|
-
return encodedA.localeCompare(encodedB);
|
|
77
|
-
}
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
export const DREAMBOARD_BROWSER_INTERACTION_PROTOCOL_NAME =
|
|
2
|
-
"dreamboard-browser-interaction" as const;
|
|
3
|
-
|
|
4
|
-
export const DREAMBOARD_BROWSER_INTERACTION_PROTOCOL_VERSION = "2.0.0" as const;
|
|
5
|
-
|
|
6
|
-
export const BROWSER_INTERACTION_ATTRIBUTES = {
|
|
7
|
-
protocol: "data-dreamboard-browser-protocol",
|
|
8
|
-
surface: "data-dreamboard-browser-surface",
|
|
9
|
-
scope: "data-dreamboard-browser-scope",
|
|
10
|
-
role: "data-dreamboard-browser-role",
|
|
11
|
-
intent: "data-dreamboard-browser-intent",
|
|
12
|
-
interactionKey: "data-dreamboard-interaction-key",
|
|
13
|
-
interactionId: "data-dreamboard-interaction-id",
|
|
14
|
-
descriptorDigest: "data-dreamboard-descriptor-digest",
|
|
15
|
-
draftDigest: "data-dreamboard-draft-digest",
|
|
16
|
-
readiness: "data-dreamboard-readiness",
|
|
17
|
-
inputKey: "data-dreamboard-input-key",
|
|
18
|
-
candidateValue: "data-dreamboard-candidate-value",
|
|
19
|
-
candidateState: "data-dreamboard-candidate-state",
|
|
20
|
-
actuatorKind: "data-dreamboard-actuator-kind",
|
|
21
|
-
enabled: "data-dreamboard-actuator-enabled",
|
|
22
|
-
actuatorId: "data-dreamboard-actuator-id",
|
|
23
|
-
semanticEffects: "data-dreamboard-semantic-effects",
|
|
24
|
-
acceptedEffectPatterns: "data-dreamboard-accepted-effect-patterns",
|
|
25
|
-
preparationPatterns: "data-dreamboard-preparation-patterns",
|
|
26
|
-
preparesIntent: "data-dreamboard-prepares-intent",
|
|
27
|
-
preparesInputKey: "data-dreamboard-prepares-input-key",
|
|
28
|
-
preparesCandidateValue: "data-dreamboard-prepares-candidate-value",
|
|
29
|
-
preparesActuatorKind: "data-dreamboard-prepares-actuator-kind",
|
|
30
|
-
diagnostic: "data-dreamboard-browser-diagnostic",
|
|
31
|
-
} as const;
|
|
32
|
-
|
|
33
|
-
export const BROWSER_INTERACTION_RECORD_ROLES = [
|
|
34
|
-
"interaction",
|
|
35
|
-
"actuator",
|
|
36
|
-
] as const;
|
|
37
|
-
|
|
38
|
-
export const GAMEPLAY_BROWSER_INTERACTION_SURFACE = "gameplay" as const;
|
|
39
|
-
|
|
40
|
-
export const GAMEPLAY_BROWSER_INTERACTION_INTENTS = [
|
|
41
|
-
"arm",
|
|
42
|
-
"reveal",
|
|
43
|
-
"invoke",
|
|
44
|
-
"select",
|
|
45
|
-
"toggle",
|
|
46
|
-
"increment",
|
|
47
|
-
"decrement",
|
|
48
|
-
"fill",
|
|
49
|
-
"submit",
|
|
50
|
-
] as const;
|
|
51
|
-
|
|
52
|
-
export const GAMEPLAY_BROWSER_INTERACTION_EFFECT_KINDS = [
|
|
53
|
-
"setCandidate",
|
|
54
|
-
"adjustResource",
|
|
55
|
-
"setScalar",
|
|
56
|
-
"commit",
|
|
57
|
-
"invoke",
|
|
58
|
-
] as const;
|
|
59
|
-
|
|
60
|
-
export const BROWSER_INTERACTION_READINESS_VALUES = [
|
|
61
|
-
"ready",
|
|
62
|
-
"blocked",
|
|
63
|
-
"unavailable",
|
|
64
|
-
] as const;
|
|
65
|
-
|
|
66
|
-
export const BROWSER_INTERACTION_CANDIDATE_STATES = [
|
|
67
|
-
"selected",
|
|
68
|
-
"unselected",
|
|
69
|
-
"mixed",
|
|
70
|
-
] as const;
|
|
71
|
-
|
|
72
|
-
export const BROWSER_INTERACTION_ACTUATOR_KINDS = [
|
|
73
|
-
"click",
|
|
74
|
-
"fill",
|
|
75
|
-
"keyboard",
|
|
76
|
-
"pointer",
|
|
77
|
-
] as const;
|
|
@@ -1,176 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
decodeCanonicalCandidateValue,
|
|
3
|
-
encodeCanonicalCandidateValue,
|
|
4
|
-
type CanonicalBrowserInteractionValue,
|
|
5
|
-
} from "./canonical.js";
|
|
6
|
-
import type {
|
|
7
|
-
BrowserInteractionEffectPattern,
|
|
8
|
-
BrowserInteractionSurfaceEffect,
|
|
9
|
-
GameplaySemanticEffect,
|
|
10
|
-
} from "./types.js";
|
|
11
|
-
|
|
12
|
-
export function encodeBrowserInteractionEffect(
|
|
13
|
-
effect: BrowserInteractionSurfaceEffect,
|
|
14
|
-
): string {
|
|
15
|
-
return encodeCanonicalCandidateValue(effect);
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
export function decodeBrowserInteractionEffect(
|
|
19
|
-
encoded: string,
|
|
20
|
-
): BrowserInteractionSurfaceEffect {
|
|
21
|
-
const decoded = decodeCanonicalCandidateValue(encoded);
|
|
22
|
-
if (!decoded || typeof decoded !== "object" || Array.isArray(decoded)) {
|
|
23
|
-
throw new Error("Browser interaction effect must be a canonical object.");
|
|
24
|
-
}
|
|
25
|
-
const decodedObject = decoded as {
|
|
26
|
-
readonly [key: string]: CanonicalBrowserInteractionValue;
|
|
27
|
-
};
|
|
28
|
-
const kind = decodedObject.kind;
|
|
29
|
-
if (typeof kind !== "string" || kind.length === 0) {
|
|
30
|
-
throw new Error("Browser interaction effect requires a string kind.");
|
|
31
|
-
}
|
|
32
|
-
return decodedObject as BrowserInteractionSurfaceEffect;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
export function encodeBrowserInteractionEffectPattern(
|
|
36
|
-
pattern: BrowserInteractionEffectPattern,
|
|
37
|
-
): string {
|
|
38
|
-
return encodeCanonicalCandidateValue(pattern);
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
export function decodeBrowserInteractionEffectPattern(
|
|
42
|
-
encoded: string,
|
|
43
|
-
): BrowserInteractionEffectPattern {
|
|
44
|
-
const decoded = decodeCanonicalCandidateValue(encoded);
|
|
45
|
-
assertBrowserInteractionEffectPattern(decoded);
|
|
46
|
-
return decoded;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
export function browserInteractionEffectPatternMatches(
|
|
50
|
-
pattern: BrowserInteractionEffectPattern,
|
|
51
|
-
effect: BrowserInteractionSurfaceEffect,
|
|
52
|
-
): boolean {
|
|
53
|
-
switch (pattern.kind) {
|
|
54
|
-
case "exact":
|
|
55
|
-
return (
|
|
56
|
-
encodeBrowserInteractionEffect(pattern.effect) ===
|
|
57
|
-
encodeBrowserInteractionEffect(effect)
|
|
58
|
-
);
|
|
59
|
-
case "match": {
|
|
60
|
-
if (effect.kind !== pattern.effectKind) return false;
|
|
61
|
-
for (const [field, expected] of Object.entries(pattern.fields ?? {})) {
|
|
62
|
-
const actual = effect[field];
|
|
63
|
-
if (actual === undefined) return false;
|
|
64
|
-
if (
|
|
65
|
-
encodeCanonicalCandidateValue(actual) !==
|
|
66
|
-
encodeCanonicalCandidateValue(expected)
|
|
67
|
-
) {
|
|
68
|
-
return false;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
const scalar = pattern.scalar;
|
|
72
|
-
if (scalar) {
|
|
73
|
-
const actual = effect[scalar.field];
|
|
74
|
-
if (typeof actual !== "number" || !Number.isFinite(actual)) {
|
|
75
|
-
return false;
|
|
76
|
-
}
|
|
77
|
-
if (scalar.integer === true && !Number.isInteger(actual)) {
|
|
78
|
-
return false;
|
|
79
|
-
}
|
|
80
|
-
if (scalar.min !== undefined && actual < scalar.min) {
|
|
81
|
-
return false;
|
|
82
|
-
}
|
|
83
|
-
if (scalar.max !== undefined && actual > scalar.max) {
|
|
84
|
-
return false;
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
return true;
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
export function assertBrowserInteractionEffectPattern(
|
|
93
|
-
value: unknown,
|
|
94
|
-
): asserts value is BrowserInteractionEffectPattern {
|
|
95
|
-
if (!value || typeof value !== "object" || Array.isArray(value)) {
|
|
96
|
-
throw new Error("Browser interaction effect pattern must be an object.");
|
|
97
|
-
}
|
|
98
|
-
const pattern = value as {
|
|
99
|
-
readonly [key: string]: unknown;
|
|
100
|
-
};
|
|
101
|
-
if (pattern.kind === "exact") {
|
|
102
|
-
decodeBrowserInteractionEffect(
|
|
103
|
-
encodeCanonicalCandidateValue(pattern.effect),
|
|
104
|
-
);
|
|
105
|
-
return;
|
|
106
|
-
}
|
|
107
|
-
if (pattern.kind === "match") {
|
|
108
|
-
if (
|
|
109
|
-
typeof pattern.effectKind !== "string" ||
|
|
110
|
-
pattern.effectKind.length === 0
|
|
111
|
-
) {
|
|
112
|
-
throw new Error(
|
|
113
|
-
"Browser interaction match pattern requires an effectKind.",
|
|
114
|
-
);
|
|
115
|
-
}
|
|
116
|
-
if (pattern.fields !== undefined) {
|
|
117
|
-
if (
|
|
118
|
-
!pattern.fields ||
|
|
119
|
-
typeof pattern.fields !== "object" ||
|
|
120
|
-
Array.isArray(pattern.fields)
|
|
121
|
-
) {
|
|
122
|
-
throw new Error(
|
|
123
|
-
"Browser interaction match pattern fields must be an object.",
|
|
124
|
-
);
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
if (pattern.scalar !== undefined) {
|
|
128
|
-
if (
|
|
129
|
-
!pattern.scalar ||
|
|
130
|
-
typeof pattern.scalar !== "object" ||
|
|
131
|
-
Array.isArray(pattern.scalar) ||
|
|
132
|
-
typeof (pattern.scalar as { readonly field?: unknown }).field !==
|
|
133
|
-
"string" ||
|
|
134
|
-
(pattern.scalar as { readonly field: string }).field.length === 0
|
|
135
|
-
) {
|
|
136
|
-
throw new Error(
|
|
137
|
-
"Browser interaction scalar pattern requires a scalar field.",
|
|
138
|
-
);
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
return;
|
|
142
|
-
}
|
|
143
|
-
throw new Error("Unknown browser interaction effect pattern kind.");
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
export function gameplaySetCandidateEffect(input: {
|
|
147
|
-
readonly inputKey: string;
|
|
148
|
-
readonly candidateValue: CanonicalBrowserInteractionValue;
|
|
149
|
-
readonly beforeSelected: boolean;
|
|
150
|
-
readonly afterSelected: boolean;
|
|
151
|
-
}): GameplaySemanticEffect {
|
|
152
|
-
return { kind: "setCandidate", ...input };
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
export function gameplayAdjustResourceEffect(input: {
|
|
156
|
-
readonly inputKey: string;
|
|
157
|
-
readonly resourceKey: CanonicalBrowserInteractionValue;
|
|
158
|
-
readonly delta: -1 | 1;
|
|
159
|
-
}): GameplaySemanticEffect {
|
|
160
|
-
return { kind: "adjustResource", ...input };
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
export function gameplaySetScalarEffect(input: {
|
|
164
|
-
readonly inputKey: string;
|
|
165
|
-
readonly value: number;
|
|
166
|
-
}): GameplaySemanticEffect {
|
|
167
|
-
return { kind: "setScalar", ...input };
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
export function gameplayCommitEffect(): GameplaySemanticEffect {
|
|
171
|
-
return { kind: "commit" };
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
export function gameplayInvokeEffect(): GameplaySemanticEffect {
|
|
175
|
-
return { kind: "invoke" };
|
|
176
|
-
}
|
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
export {
|
|
2
|
-
BROWSER_INTERACTION_ACTUATOR_KINDS,
|
|
3
|
-
BROWSER_INTERACTION_ATTRIBUTES,
|
|
4
|
-
BROWSER_INTERACTION_CANDIDATE_STATES,
|
|
5
|
-
BROWSER_INTERACTION_READINESS_VALUES,
|
|
6
|
-
BROWSER_INTERACTION_RECORD_ROLES,
|
|
7
|
-
DREAMBOARD_BROWSER_INTERACTION_PROTOCOL_NAME,
|
|
8
|
-
DREAMBOARD_BROWSER_INTERACTION_PROTOCOL_VERSION,
|
|
9
|
-
GAMEPLAY_BROWSER_INTERACTION_EFFECT_KINDS,
|
|
10
|
-
GAMEPLAY_BROWSER_INTERACTION_INTENTS,
|
|
11
|
-
GAMEPLAY_BROWSER_INTERACTION_SURFACE,
|
|
12
|
-
} from "./constants.js";
|
|
13
|
-
export {
|
|
14
|
-
compareStableJson,
|
|
15
|
-
decodeCanonicalCandidateValue,
|
|
16
|
-
encodeCanonicalCandidateValue,
|
|
17
|
-
type CanonicalBrowserInteractionValue,
|
|
18
|
-
} from "./canonical.js";
|
|
19
|
-
export {
|
|
20
|
-
assertBrowserInteractionEffectPattern,
|
|
21
|
-
browserInteractionEffectPatternMatches,
|
|
22
|
-
decodeBrowserInteractionEffect,
|
|
23
|
-
decodeBrowserInteractionEffectPattern,
|
|
24
|
-
encodeBrowserInteractionEffect,
|
|
25
|
-
encodeBrowserInteractionEffectPattern,
|
|
26
|
-
gameplayAdjustResourceEffect,
|
|
27
|
-
gameplayCommitEffect,
|
|
28
|
-
gameplayInvokeEffect,
|
|
29
|
-
gameplaySetCandidateEffect,
|
|
30
|
-
gameplaySetScalarEffect,
|
|
31
|
-
} from "./effects.js";
|
|
32
|
-
export {
|
|
33
|
-
createBrowserInteractionActuatorAttributes,
|
|
34
|
-
createBrowserInteractionActuatorKey,
|
|
35
|
-
createBrowserInteractionRootAttributes,
|
|
36
|
-
createGameplayActuatorAttributes,
|
|
37
|
-
createGameplayInteractionRootAttributes,
|
|
38
|
-
type BrowserInteractionActuatorAttributesInput,
|
|
39
|
-
type BrowserInteractionAttributeMap,
|
|
40
|
-
type BrowserInteractionRootAttributesInput,
|
|
41
|
-
type GameplayActuatorAttributesInput,
|
|
42
|
-
type GameplayInteractionRootAttributesInput,
|
|
43
|
-
} from "./attributes.js";
|
|
44
|
-
export {
|
|
45
|
-
createBrowserInteractionRegistry,
|
|
46
|
-
defaultBrowserInteractionRegistry,
|
|
47
|
-
defineBrowserInteractionSurface,
|
|
48
|
-
gameplayBrowserInteractionSurface,
|
|
49
|
-
} from "./registry.js";
|
|
50
|
-
export {
|
|
51
|
-
actuatorIdentityKey,
|
|
52
|
-
isSemanticSurfaceSnapshot,
|
|
53
|
-
normalizeBrowserInteractionRecords,
|
|
54
|
-
targetIdentityKey,
|
|
55
|
-
validateBrowserInteractionSnapshot,
|
|
56
|
-
type NormalizeBrowserInteractionRecordsOptions,
|
|
57
|
-
} from "./normalize.js";
|
|
58
|
-
export {
|
|
59
|
-
resolveBrowserInteractionEffect,
|
|
60
|
-
resolveBrowserInteractionIntent,
|
|
61
|
-
} from "./resolve.js";
|
|
62
|
-
export {
|
|
63
|
-
browserInteractionEffectPatternSchema,
|
|
64
|
-
browserInteractionEffectSchema,
|
|
65
|
-
browserGameplayInteractionSchema,
|
|
66
|
-
browserGameplaySurfaceSnapshotSchema,
|
|
67
|
-
browserInteractionActuatorSchema,
|
|
68
|
-
browserInteractionDiagnosticSchema,
|
|
69
|
-
browserInteractionSnapshotSchema,
|
|
70
|
-
browserSemanticSurfaceSnapshotSchema,
|
|
71
|
-
browserUnknownSurfaceSnapshotSchema,
|
|
72
|
-
gameplaySemanticEffectSchema,
|
|
73
|
-
} from "./schemas.js";
|
|
74
|
-
export type {
|
|
75
|
-
BrowserGameplayInteraction,
|
|
76
|
-
BrowserGameplaySurfaceSnapshot,
|
|
77
|
-
BrowserInteractionActuator,
|
|
78
|
-
BrowserInteractionActuatorKind,
|
|
79
|
-
BrowserInteractionCandidateState,
|
|
80
|
-
BrowserInteractionDiagnostic,
|
|
81
|
-
BrowserInteractionEffectPattern,
|
|
82
|
-
BrowserInteractionEffectRequest,
|
|
83
|
-
BrowserInteractionEffectResolution,
|
|
84
|
-
BrowserInteractionEffectResolutionFailure,
|
|
85
|
-
BrowserInteractionEffectResolutionSuccess,
|
|
86
|
-
BrowserInteractionEntity,
|
|
87
|
-
BrowserInteractionIntent,
|
|
88
|
-
BrowserInteractionIntentRequest,
|
|
89
|
-
BrowserInteractionPreparationTarget,
|
|
90
|
-
BrowserInteractionProtocolIdentity,
|
|
91
|
-
BrowserInteractionRawRecord,
|
|
92
|
-
BrowserInteractionReadiness,
|
|
93
|
-
BrowserInteractionRegistry,
|
|
94
|
-
BrowserInteractionResolution,
|
|
95
|
-
BrowserInteractionResolutionFailure,
|
|
96
|
-
BrowserInteractionResolutionSuccess,
|
|
97
|
-
BrowserInteractionScalarPattern,
|
|
98
|
-
BrowserInteractionSemanticSurfaceSnapshot,
|
|
99
|
-
BrowserInteractionSnapshot,
|
|
100
|
-
BrowserInteractionSurfaceEffect,
|
|
101
|
-
BrowserInteractionSurface,
|
|
102
|
-
BrowserInteractionSurfaceDefinition,
|
|
103
|
-
BrowserInteractionSurfaceSnapshot,
|
|
104
|
-
BrowserInteractionUnknownSurfaceSnapshot,
|
|
105
|
-
GameplayBrowserInteractionEffectKind,
|
|
106
|
-
GameplayBrowserInteractionEffectRequest,
|
|
107
|
-
GameplayBrowserInteractionIntent,
|
|
108
|
-
GameplayBrowserInteractionSurface,
|
|
109
|
-
GameplaySemanticEffect,
|
|
110
|
-
GameplaySemanticEffectPattern,
|
|
111
|
-
} from "./types.js";
|