rn-gamekit 0.1.0 → 0.2.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/CHANGELOG.md +75 -0
- package/README.md +97 -16
- package/lib/module/assets/defineAssets.js +28 -3
- package/lib/module/assets/defineAssets.js.map +1 -1
- package/lib/module/assets.js +11 -0
- package/lib/module/assets.js.map +1 -0
- package/lib/module/audio/createGameAudio.js +784 -0
- package/lib/module/audio/createGameAudio.js.map +1 -0
- package/lib/module/audio/errors.js +12 -0
- package/lib/module/audio/errors.js.map +1 -0
- package/lib/module/audio/index.js +5 -0
- package/lib/module/audio/index.js.map +1 -0
- package/lib/module/audio/resolver.js +37 -0
- package/lib/module/audio/resolver.js.map +1 -0
- package/lib/module/audio/types.js +4 -0
- package/lib/module/audio/types.js.map +1 -0
- package/lib/module/audio.js +9 -0
- package/lib/module/audio.js.map +1 -0
- package/lib/module/camera2d/bounds.js +59 -0
- package/lib/module/camera2d/bounds.js.map +1 -0
- package/lib/module/camera2d/extents.js +25 -0
- package/lib/module/camera2d/extents.js.map +1 -0
- package/lib/module/camera2d/follow.js +138 -0
- package/lib/module/camera2d/follow.js.map +1 -0
- package/lib/module/camera2d/index.js +20 -0
- package/lib/module/camera2d/index.js.map +1 -0
- package/lib/module/camera2d/interpolation.js +98 -0
- package/lib/module/camera2d/interpolation.js.map +1 -0
- package/lib/module/camera2d/shake.js +85 -0
- package/lib/module/camera2d/shake.js.map +1 -0
- package/lib/module/camera2d/transform.js +151 -0
- package/lib/module/camera2d/transform.js.map +1 -0
- package/lib/module/camera2d/types.js +4 -0
- package/lib/module/camera2d/types.js.map +1 -0
- package/lib/module/camera2d/validation.js +98 -0
- package/lib/module/camera2d/validation.js.map +1 -0
- package/lib/module/camera2d/visibility.js +138 -0
- package/lib/module/camera2d/visibility.js.map +1 -0
- package/lib/module/camera2d.js +9 -0
- package/lib/module/camera2d.js.map +1 -0
- package/lib/module/collision2d/colliders.js +266 -0
- package/lib/module/collision2d/colliders.js.map +1 -0
- package/lib/module/collision2d/debug.js +105 -0
- package/lib/module/collision2d/debug.js.map +1 -0
- package/lib/module/collision2d/filters.js +40 -0
- package/lib/module/collision2d/filters.js.map +1 -0
- package/lib/module/collision2d/index.js +12 -0
- package/lib/module/collision2d/index.js.map +1 -0
- package/lib/module/collision2d/intersections.js +67 -0
- package/lib/module/collision2d/intersections.js.map +1 -0
- package/lib/module/collision2d/manifolds.js +218 -0
- package/lib/module/collision2d/manifolds.js.map +1 -0
- package/lib/module/collision2d/segments.js +187 -0
- package/lib/module/collision2d/segments.js.map +1 -0
- package/lib/module/collision2d/spatialHash.js +167 -0
- package/lib/module/collision2d/spatialHash.js.map +1 -0
- package/lib/module/collision2d/sweeps.js +255 -0
- package/lib/module/collision2d/sweeps.js.map +1 -0
- package/lib/module/collision2d.js +9 -0
- package/lib/module/collision2d.js.map +1 -0
- package/lib/module/core/input/buttonPad.js +214 -0
- package/lib/module/core/input/buttonPad.js.map +1 -0
- package/lib/module/core/input/createInputBuffer.js +66 -14
- package/lib/module/core/input/createInputBuffer.js.map +1 -1
- package/lib/module/core/session/createGameSession.js +454 -50
- package/lib/module/core/session/createGameSession.js.map +1 -1
- package/lib/module/core/session/deepFreeze.js +92 -2
- package/lib/module/core/session/deepFreeze.js.map +1 -1
- package/lib/module/core/session/types.js +12 -0
- package/lib/module/core/session/types.js.map +1 -1
- package/lib/module/definition/defineGame.js +23 -0
- package/lib/module/definition/defineGame.js.map +1 -1
- package/lib/module/events/defineGameEvents.js +46 -0
- package/lib/module/events/defineGameEvents.js.map +1 -0
- package/lib/module/events/errors.js +16 -0
- package/lib/module/events/errors.js.map +1 -0
- package/lib/module/events/index.js +7 -0
- package/lib/module/events/index.js.map +1 -0
- package/lib/module/events/payload.js +219 -0
- package/lib/module/events/payload.js.map +1 -0
- package/lib/module/events/seed.js +33 -0
- package/lib/module/events/seed.js.map +1 -0
- package/lib/module/events/types.js +4 -0
- package/lib/module/events/types.js.map +1 -0
- package/lib/module/events.js +13 -0
- package/lib/module/events.js.map +1 -0
- package/lib/module/geometry/helpers.js +140 -0
- package/lib/module/geometry/helpers.js.map +1 -0
- package/lib/module/geometry/index.js +5 -0
- package/lib/module/geometry/index.js.map +1 -0
- package/lib/module/geometry/validation.js +104 -0
- package/lib/module/geometry/validation.js.map +1 -0
- package/lib/module/geometry.js +9 -0
- package/lib/module/geometry.js.map +1 -0
- package/lib/module/haptics/createGameHaptics.js +214 -0
- package/lib/module/haptics/createGameHaptics.js.map +1 -0
- package/lib/module/haptics/errors.js +12 -0
- package/lib/module/haptics/errors.js.map +1 -0
- package/lib/module/haptics/index.js +5 -0
- package/lib/module/haptics/index.js.map +1 -0
- package/lib/module/haptics/resolver.js +37 -0
- package/lib/module/haptics/resolver.js.map +1 -0
- package/lib/module/haptics/types.js +4 -0
- package/lib/module/haptics/types.js.map +1 -0
- package/lib/module/haptics.js +9 -0
- package/lib/module/haptics.js.map +1 -0
- package/lib/module/index.js +8 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/particles/createParticleSystem.js +481 -0
- package/lib/module/particles/createParticleSystem.js.map +1 -0
- package/lib/module/particles/defineParticleEffect.js +178 -0
- package/lib/module/particles/defineParticleEffect.js.map +1 -0
- package/lib/module/particles/errors.js +9 -0
- package/lib/module/particles/errors.js.map +1 -0
- package/lib/module/particles/index.js +8 -0
- package/lib/module/particles/index.js.map +1 -0
- package/lib/module/particles/sampling.js +121 -0
- package/lib/module/particles/sampling.js.map +1 -0
- package/lib/module/particles/types.js +4 -0
- package/lib/module/particles/types.js.map +1 -0
- package/lib/module/particles.js +4 -0
- package/lib/module/particles.js.map +1 -0
- package/lib/module/react/GameButtonPad.js +344 -0
- package/lib/module/react/GameButtonPad.js.map +1 -0
- package/lib/module/react/GamePointerInput.js +74 -16
- package/lib/module/react/GamePointerInput.js.map +1 -1
- package/lib/module/react/GameView.js +139 -60
- package/lib/module/react/GameView.js.map +1 -1
- package/lib/module/react/assets/createGameAssetStore.js +145 -95
- package/lib/module/react/assets/createGameAssetStore.js.map +1 -1
- package/lib/module/react/assets/useGameAssets.js +60 -35
- package/lib/module/react/assets/useGameAssets.js.map +1 -1
- package/lib/module/react/bindAppLifecycle.js +46 -17
- package/lib/module/react/bindAppLifecycle.js.map +1 -1
- package/lib/module/react/bindGameSession.js +13 -2
- package/lib/module/react/bindGameSession.js.map +1 -1
- package/lib/module/react/camera2d/GameLayer2D.js +50 -0
- package/lib/module/react/camera2d/GameLayer2D.js.map +1 -0
- package/lib/module/react/camera2d/defineGameCamera2D.js +30 -0
- package/lib/module/react/camera2d/defineGameCamera2D.js.map +1 -0
- package/lib/module/react/camera2d/usePresentedCameraBinding.js +177 -0
- package/lib/module/react/camera2d/usePresentedCameraBinding.js.map +1 -0
- package/lib/module/react/cleanupList.js +38 -0
- package/lib/module/react/cleanupList.js.map +1 -0
- package/lib/module/react/lifecycleSource.js +49 -0
- package/lib/module/react/lifecycleSource.js.map +1 -0
- package/lib/module/react/particles/ParticleView.js +308 -0
- package/lib/module/react/particles/ParticleView.js.map +1 -0
- package/lib/module/react/particles/culling.js +115 -0
- package/lib/module/react/particles/culling.js.map +1 -0
- package/lib/module/react/particles/index.js +7 -0
- package/lib/module/react/particles/index.js.map +1 -0
- package/lib/module/react/particles/spriteXForm.js +45 -0
- package/lib/module/react/particles/spriteXForm.js.map +1 -0
- package/lib/module/react/particles/useParticlePresentation.js +204 -0
- package/lib/module/react/particles/useParticlePresentation.js.map +1 -0
- package/lib/module/react/pointerBinding.js +55 -17
- package/lib/module/react/pointerBinding.js.map +1 -1
- package/lib/module/react/pointerCamera.js +28 -0
- package/lib/module/react/pointerCamera.js.map +1 -0
- package/lib/module/react/pointerCoalescer.js +16 -9
- package/lib/module/react/pointerCoalescer.js.map +1 -1
- package/lib/module/react/sprites/GameSprite.js +5 -17
- package/lib/module/react/sprites/GameSprite.js.map +1 -1
- package/lib/module/react/sprites/GameWorld2D.js +112 -9
- package/lib/module/react/sprites/GameWorld2D.js.map +1 -1
- package/lib/module/react/sprites/Sprite.js +48 -63
- package/lib/module/react/sprites/Sprite.js.map +1 -1
- package/lib/module/react/sprites/SpriteBatch.js +53 -28
- package/lib/module/react/sprites/SpriteBatch.js.map +1 -1
- package/lib/module/react/sprites/batchVisibility.js +58 -0
- package/lib/module/react/sprites/batchVisibility.js.map +1 -0
- package/lib/module/react/sprites/spriteSelection.js +103 -0
- package/lib/module/react/sprites/spriteSelection.js.map +1 -0
- package/lib/module/react/sprites/spriteTransform.js +46 -25
- package/lib/module/react/sprites/spriteTransform.js.map +1 -1
- package/lib/module/react/tilemap/TileMapLayer2D.js +217 -0
- package/lib/module/react/tilemap/TileMapLayer2D.js.map +1 -0
- package/lib/module/react/tilemap/tilePresentation.js +374 -0
- package/lib/module/react/tilemap/tilePresentation.js.map +1 -0
- package/lib/module/react/useGameSession.js +70 -0
- package/lib/module/react/useGameSession.js.map +1 -0
- package/lib/module/react/useGameSessionStatus.js +46 -0
- package/lib/module/react/useGameSessionStatus.js.map +1 -0
- package/lib/module/react/viewportBinding.js +5 -1
- package/lib/module/react/viewportBinding.js.map +1 -1
- package/lib/module/react.js +12 -1
- package/lib/module/react.js.map +1 -1
- package/lib/module/scene/defineScene.js +17 -0
- package/lib/module/scene/defineScene.js.map +1 -1
- package/lib/module/sprites/sampleSpriteClip.js +66 -6
- package/lib/module/sprites/sampleSpriteClip.js.map +1 -1
- package/lib/module/sprites/spriteAnimationState.js +10 -20
- package/lib/module/sprites/spriteAnimationState.js.map +1 -1
- package/lib/module/sprites.js +11 -0
- package/lib/module/sprites.js.map +1 -0
- package/lib/module/storage/adapters/asyncStorage.js +57 -0
- package/lib/module/storage/adapters/asyncStorage.js.map +1 -0
- package/lib/module/storage/adapters/memory.js +50 -0
- package/lib/module/storage/adapters/memory.js.map +1 -0
- package/lib/module/storage/errors.js +34 -0
- package/lib/module/storage/errors.js.map +1 -0
- package/lib/module/storage/index.js +11 -0
- package/lib/module/storage/index.js.map +1 -0
- package/lib/module/storage/schema.js +151 -0
- package/lib/module/storage/schema.js.map +1 -0
- package/lib/module/storage/serialization.js +249 -0
- package/lib/module/storage/serialization.js.map +1 -0
- package/lib/module/storage/store.js +387 -0
- package/lib/module/storage/store.js.map +1 -0
- package/lib/module/storage/types.js +16 -0
- package/lib/module/storage/types.js.map +1 -0
- package/lib/module/storage/validation.js +111 -0
- package/lib/module/storage/validation.js.map +1 -0
- package/lib/module/storage.js +4 -0
- package/lib/module/storage.js.map +1 -0
- package/lib/module/testing.js +4 -0
- package/lib/module/testing.js.map +1 -1
- package/lib/module/tilemap/chunkStats.js +27 -0
- package/lib/module/tilemap/chunkStats.js.map +1 -0
- package/lib/module/tilemap/definitions.js +308 -0
- package/lib/module/tilemap/definitions.js.map +1 -0
- package/lib/module/tilemap/errors.js +13 -0
- package/lib/module/tilemap/errors.js.map +1 -0
- package/lib/module/tilemap/index.js +10 -0
- package/lib/module/tilemap/index.js.map +1 -0
- package/lib/module/tilemap/movement.js +379 -0
- package/lib/module/tilemap/movement.js.map +1 -0
- package/lib/module/tilemap/queries.js +114 -0
- package/lib/module/tilemap/queries.js.map +1 -0
- package/lib/module/tilemap/tiledAdapter.js +141 -0
- package/lib/module/tilemap/tiledAdapter.js.map +1 -0
- package/lib/module/tilemap/types.js +4 -0
- package/lib/module/tilemap/types.js.map +1 -0
- package/lib/module/tilemap.js +4 -0
- package/lib/module/tilemap.js.map +1 -0
- package/lib/typescript/src/assets/defineAssets.d.ts +1 -1
- package/lib/typescript/src/assets/defineAssets.d.ts.map +1 -1
- package/lib/typescript/src/assets.d.ts +11 -0
- package/lib/typescript/src/assets.d.ts.map +1 -0
- package/lib/typescript/src/audio/createGameAudio.d.ts +5 -0
- package/lib/typescript/src/audio/createGameAudio.d.ts.map +1 -0
- package/lib/typescript/src/audio/errors.d.ts +6 -0
- package/lib/typescript/src/audio/errors.d.ts.map +1 -0
- package/lib/typescript/src/audio/index.d.ts +4 -0
- package/lib/typescript/src/audio/index.d.ts.map +1 -0
- package/lib/typescript/src/audio/resolver.d.ts +44 -0
- package/lib/typescript/src/audio/resolver.d.ts.map +1 -0
- package/lib/typescript/src/audio/types.d.ts +42 -0
- package/lib/typescript/src/audio/types.d.ts.map +1 -0
- package/lib/typescript/src/audio.d.ts +8 -0
- package/lib/typescript/src/audio.d.ts.map +1 -0
- package/lib/typescript/src/camera2d/bounds.d.ts +25 -0
- package/lib/typescript/src/camera2d/bounds.d.ts.map +1 -0
- package/lib/typescript/src/camera2d/extents.d.ts +17 -0
- package/lib/typescript/src/camera2d/extents.d.ts.map +1 -0
- package/lib/typescript/src/camera2d/follow.d.ts +24 -0
- package/lib/typescript/src/camera2d/follow.d.ts.map +1 -0
- package/lib/typescript/src/camera2d/index.d.ts +19 -0
- package/lib/typescript/src/camera2d/index.d.ts.map +1 -0
- package/lib/typescript/src/camera2d/interpolation.d.ts +17 -0
- package/lib/typescript/src/camera2d/interpolation.d.ts.map +1 -0
- package/lib/typescript/src/camera2d/shake.d.ts +20 -0
- package/lib/typescript/src/camera2d/shake.d.ts.map +1 -0
- package/lib/typescript/src/camera2d/transform.d.ts +44 -0
- package/lib/typescript/src/camera2d/transform.d.ts.map +1 -0
- package/lib/typescript/src/camera2d/types.d.ts +74 -0
- package/lib/typescript/src/camera2d/types.d.ts.map +1 -0
- package/lib/typescript/src/camera2d/validation.d.ts +30 -0
- package/lib/typescript/src/camera2d/validation.d.ts.map +1 -0
- package/lib/typescript/src/camera2d/visibility.d.ts +47 -0
- package/lib/typescript/src/camera2d/visibility.d.ts.map +1 -0
- package/lib/typescript/src/camera2d.d.ts +7 -0
- package/lib/typescript/src/camera2d.d.ts.map +1 -0
- package/lib/typescript/src/collision2d/colliders.d.ts +120 -0
- package/lib/typescript/src/collision2d/colliders.d.ts.map +1 -0
- package/lib/typescript/src/collision2d/debug.d.ts +67 -0
- package/lib/typescript/src/collision2d/debug.d.ts.map +1 -0
- package/lib/typescript/src/collision2d/filters.d.ts +28 -0
- package/lib/typescript/src/collision2d/filters.d.ts.map +1 -0
- package/lib/typescript/src/collision2d/index.d.ts +17 -0
- package/lib/typescript/src/collision2d/index.d.ts.map +1 -0
- package/lib/typescript/src/collision2d/intersections.d.ts +24 -0
- package/lib/typescript/src/collision2d/intersections.d.ts.map +1 -0
- package/lib/typescript/src/collision2d/manifolds.d.ts +39 -0
- package/lib/typescript/src/collision2d/manifolds.d.ts.map +1 -0
- package/lib/typescript/src/collision2d/segments.d.ts +24 -0
- package/lib/typescript/src/collision2d/segments.d.ts.map +1 -0
- package/lib/typescript/src/collision2d/spatialHash.d.ts +50 -0
- package/lib/typescript/src/collision2d/spatialHash.d.ts.map +1 -0
- package/lib/typescript/src/collision2d/sweeps.d.ts +60 -0
- package/lib/typescript/src/collision2d/sweeps.d.ts.map +1 -0
- package/lib/typescript/src/collision2d.d.ts +7 -0
- package/lib/typescript/src/collision2d.d.ts.map +1 -0
- package/lib/typescript/src/core/input/buttonPad.d.ts +59 -0
- package/lib/typescript/src/core/input/buttonPad.d.ts.map +1 -0
- package/lib/typescript/src/core/input/createInputBuffer.d.ts +1 -1
- package/lib/typescript/src/core/input/createInputBuffer.d.ts.map +1 -1
- package/lib/typescript/src/core/input/types.d.ts +7 -0
- package/lib/typescript/src/core/input/types.d.ts.map +1 -1
- package/lib/typescript/src/core/session/createGameSession.d.ts +4 -2
- package/lib/typescript/src/core/session/createGameSession.d.ts.map +1 -1
- package/lib/typescript/src/core/session/deepFreeze.d.ts +21 -1
- package/lib/typescript/src/core/session/deepFreeze.d.ts.map +1 -1
- package/lib/typescript/src/core/session/diagnostics.d.ts +2 -0
- package/lib/typescript/src/core/session/diagnostics.d.ts.map +1 -1
- package/lib/typescript/src/core/session/types.d.ts +69 -4
- package/lib/typescript/src/core/session/types.d.ts.map +1 -1
- package/lib/typescript/src/definition/defineGame.d.ts +12 -1
- package/lib/typescript/src/definition/defineGame.d.ts.map +1 -1
- package/lib/typescript/src/definition/types.d.ts +10 -1
- package/lib/typescript/src/definition/types.d.ts.map +1 -1
- package/lib/typescript/src/events/defineGameEvents.d.ts +26 -0
- package/lib/typescript/src/events/defineGameEvents.d.ts.map +1 -0
- package/lib/typescript/src/events/errors.d.ts +12 -0
- package/lib/typescript/src/events/errors.d.ts.map +1 -0
- package/lib/typescript/src/events/index.d.ts +6 -0
- package/lib/typescript/src/events/index.d.ts.map +1 -0
- package/lib/typescript/src/events/payload.d.ts +21 -0
- package/lib/typescript/src/events/payload.d.ts.map +1 -0
- package/lib/typescript/src/events/seed.d.ts +3 -0
- package/lib/typescript/src/events/seed.d.ts.map +1 -0
- package/lib/typescript/src/events/types.d.ts +42 -0
- package/lib/typescript/src/events/types.d.ts.map +1 -0
- package/lib/typescript/src/events.d.ts +12 -0
- package/lib/typescript/src/events.d.ts.map +1 -0
- package/lib/typescript/src/geometry/helpers.d.ts +35 -0
- package/lib/typescript/src/geometry/helpers.d.ts.map +1 -0
- package/lib/typescript/src/geometry/index.d.ts +4 -0
- package/lib/typescript/src/geometry/index.d.ts.map +1 -0
- package/lib/typescript/src/geometry/types.d.ts +49 -0
- package/lib/typescript/src/geometry/types.d.ts.map +1 -1
- package/lib/typescript/src/geometry/validation.d.ts +44 -0
- package/lib/typescript/src/geometry/validation.d.ts.map +1 -0
- package/lib/typescript/src/geometry.d.ts +7 -0
- package/lib/typescript/src/geometry.d.ts.map +1 -0
- package/lib/typescript/src/haptics/createGameHaptics.d.ts +3 -0
- package/lib/typescript/src/haptics/createGameHaptics.d.ts.map +1 -0
- package/lib/typescript/src/haptics/errors.d.ts +6 -0
- package/lib/typescript/src/haptics/errors.d.ts.map +1 -0
- package/lib/typescript/src/haptics/index.d.ts +4 -0
- package/lib/typescript/src/haptics/index.d.ts.map +1 -0
- package/lib/typescript/src/haptics/resolver.d.ts +22 -0
- package/lib/typescript/src/haptics/resolver.d.ts.map +1 -0
- package/lib/typescript/src/haptics/types.d.ts +37 -0
- package/lib/typescript/src/haptics/types.d.ts.map +1 -0
- package/lib/typescript/src/haptics.d.ts +8 -0
- package/lib/typescript/src/haptics.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +10 -2
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/particles/createParticleSystem.d.ts +5 -0
- package/lib/typescript/src/particles/createParticleSystem.d.ts.map +1 -0
- package/lib/typescript/src/particles/defineParticleEffect.d.ts +3 -0
- package/lib/typescript/src/particles/defineParticleEffect.d.ts.map +1 -0
- package/lib/typescript/src/particles/errors.d.ts +5 -0
- package/lib/typescript/src/particles/errors.d.ts.map +1 -0
- package/lib/typescript/src/particles/index.d.ts +6 -0
- package/lib/typescript/src/particles/index.d.ts.map +1 -0
- package/lib/typescript/src/particles/sampling.d.ts +54 -0
- package/lib/typescript/src/particles/sampling.d.ts.map +1 -0
- package/lib/typescript/src/particles/types.d.ts +292 -0
- package/lib/typescript/src/particles/types.d.ts.map +1 -0
- package/lib/typescript/src/particles.d.ts +2 -0
- package/lib/typescript/src/particles.d.ts.map +1 -0
- package/lib/typescript/src/react/GameButtonPad.d.ts +84 -0
- package/lib/typescript/src/react/GameButtonPad.d.ts.map +1 -0
- package/lib/typescript/src/react/GamePointerInput.d.ts.map +1 -1
- package/lib/typescript/src/react/GameView.d.ts +27 -1
- package/lib/typescript/src/react/GameView.d.ts.map +1 -1
- package/lib/typescript/src/react/assets/createGameAssetStore.d.ts.map +1 -1
- package/lib/typescript/src/react/assets/useGameAssets.d.ts.map +1 -1
- package/lib/typescript/src/react/bindAppLifecycle.d.ts +7 -1
- package/lib/typescript/src/react/bindAppLifecycle.d.ts.map +1 -1
- package/lib/typescript/src/react/bindGameSession.d.ts.map +1 -1
- package/lib/typescript/src/react/camera2d/GameLayer2D.d.ts +24 -0
- package/lib/typescript/src/react/camera2d/GameLayer2D.d.ts.map +1 -0
- package/lib/typescript/src/react/camera2d/defineGameCamera2D.d.ts +44 -0
- package/lib/typescript/src/react/camera2d/defineGameCamera2D.d.ts.map +1 -0
- package/lib/typescript/src/react/camera2d/usePresentedCameraBinding.d.ts +22 -0
- package/lib/typescript/src/react/camera2d/usePresentedCameraBinding.d.ts.map +1 -0
- package/lib/typescript/src/react/cleanupList.d.ts +21 -0
- package/lib/typescript/src/react/cleanupList.d.ts.map +1 -0
- package/lib/typescript/src/react/instrumentation.d.ts +33 -3
- package/lib/typescript/src/react/instrumentation.d.ts.map +1 -1
- package/lib/typescript/src/react/lifecycleSource.d.ts +21 -0
- package/lib/typescript/src/react/lifecycleSource.d.ts.map +1 -0
- package/lib/typescript/src/react/particles/ParticleView.d.ts +65 -0
- package/lib/typescript/src/react/particles/ParticleView.d.ts.map +1 -0
- package/lib/typescript/src/react/particles/culling.d.ts +70 -0
- package/lib/typescript/src/react/particles/culling.d.ts.map +1 -0
- package/lib/typescript/src/react/particles/index.d.ts +7 -0
- package/lib/typescript/src/react/particles/index.d.ts.map +1 -0
- package/lib/typescript/src/react/particles/spriteXForm.d.ts +28 -0
- package/lib/typescript/src/react/particles/spriteXForm.d.ts.map +1 -0
- package/lib/typescript/src/react/particles/useParticlePresentation.d.ts +48 -0
- package/lib/typescript/src/react/particles/useParticlePresentation.d.ts.map +1 -0
- package/lib/typescript/src/react/pointerBinding.d.ts +38 -8
- package/lib/typescript/src/react/pointerBinding.d.ts.map +1 -1
- package/lib/typescript/src/react/pointerCamera.d.ts +20 -0
- package/lib/typescript/src/react/pointerCamera.d.ts.map +1 -0
- package/lib/typescript/src/react/pointerCoalescer.d.ts +17 -1
- package/lib/typescript/src/react/pointerCoalescer.d.ts.map +1 -1
- package/lib/typescript/src/react/sprites/GameSprite.d.ts +3 -10
- package/lib/typescript/src/react/sprites/GameSprite.d.ts.map +1 -1
- package/lib/typescript/src/react/sprites/GameWorld2D.d.ts +51 -6
- package/lib/typescript/src/react/sprites/GameWorld2D.d.ts.map +1 -1
- package/lib/typescript/src/react/sprites/Sprite.d.ts.map +1 -1
- package/lib/typescript/src/react/sprites/SpriteBatch.d.ts +22 -1
- package/lib/typescript/src/react/sprites/SpriteBatch.d.ts.map +1 -1
- package/lib/typescript/src/react/sprites/batchVisibility.d.ts +28 -0
- package/lib/typescript/src/react/sprites/batchVisibility.d.ts.map +1 -0
- package/lib/typescript/src/react/sprites/spriteSelection.d.ts +58 -0
- package/lib/typescript/src/react/sprites/spriteSelection.d.ts.map +1 -0
- package/lib/typescript/src/react/sprites/spriteTransform.d.ts +27 -12
- package/lib/typescript/src/react/sprites/spriteTransform.d.ts.map +1 -1
- package/lib/typescript/src/react/tilemap/TileMapLayer2D.d.ts +69 -0
- package/lib/typescript/src/react/tilemap/TileMapLayer2D.d.ts.map +1 -0
- package/lib/typescript/src/react/tilemap/tilePresentation.d.ts +217 -0
- package/lib/typescript/src/react/tilemap/tilePresentation.d.ts.map +1 -0
- package/lib/typescript/src/react/useGameSession.d.ts +48 -0
- package/lib/typescript/src/react/useGameSession.d.ts.map +1 -0
- package/lib/typescript/src/react/useGameSessionStatus.d.ts +23 -0
- package/lib/typescript/src/react/useGameSessionStatus.d.ts.map +1 -0
- package/lib/typescript/src/react/viewportBinding.d.ts +5 -1
- package/lib/typescript/src/react/viewportBinding.d.ts.map +1 -1
- package/lib/typescript/src/react.d.ts +18 -1
- package/lib/typescript/src/react.d.ts.map +1 -1
- package/lib/typescript/src/scene/defineScene.d.ts +22 -2
- package/lib/typescript/src/scene/defineScene.d.ts.map +1 -1
- package/lib/typescript/src/scene/types.d.ts +24 -4
- package/lib/typescript/src/scene/types.d.ts.map +1 -1
- package/lib/typescript/src/sprites/sampleSpriteClip.d.ts +26 -2
- package/lib/typescript/src/sprites/sampleSpriteClip.d.ts.map +1 -1
- package/lib/typescript/src/sprites/spriteAnimationState.d.ts +6 -7
- package/lib/typescript/src/sprites/spriteAnimationState.d.ts.map +1 -1
- package/lib/typescript/src/sprites.d.ts +10 -0
- package/lib/typescript/src/sprites.d.ts.map +1 -0
- package/lib/typescript/src/storage/adapters/asyncStorage.d.ts +18 -0
- package/lib/typescript/src/storage/adapters/asyncStorage.d.ts.map +1 -0
- package/lib/typescript/src/storage/adapters/memory.d.ts +16 -0
- package/lib/typescript/src/storage/adapters/memory.d.ts.map +1 -0
- package/lib/typescript/src/storage/errors.d.ts +37 -0
- package/lib/typescript/src/storage/errors.d.ts.map +1 -0
- package/lib/typescript/src/storage/index.d.ts +11 -0
- package/lib/typescript/src/storage/index.d.ts.map +1 -0
- package/lib/typescript/src/storage/schema.d.ts +22 -0
- package/lib/typescript/src/storage/schema.d.ts.map +1 -0
- package/lib/typescript/src/storage/serialization.d.ts +23 -0
- package/lib/typescript/src/storage/serialization.d.ts.map +1 -0
- package/lib/typescript/src/storage/store.d.ts +3 -0
- package/lib/typescript/src/storage/store.d.ts.map +1 -0
- package/lib/typescript/src/storage/types.d.ts +69 -0
- package/lib/typescript/src/storage/types.d.ts.map +1 -0
- package/lib/typescript/src/storage/validation.d.ts +24 -0
- package/lib/typescript/src/storage/validation.d.ts.map +1 -0
- package/lib/typescript/src/storage.d.ts +2 -0
- package/lib/typescript/src/storage.d.ts.map +1 -0
- package/lib/typescript/src/testing.d.ts +1 -0
- package/lib/typescript/src/testing.d.ts.map +1 -1
- package/lib/typescript/src/tilemap/chunkStats.d.ts +14 -0
- package/lib/typescript/src/tilemap/chunkStats.d.ts.map +1 -0
- package/lib/typescript/src/tilemap/definitions.d.ts +38 -0
- package/lib/typescript/src/tilemap/definitions.d.ts.map +1 -0
- package/lib/typescript/src/tilemap/errors.d.ts +7 -0
- package/lib/typescript/src/tilemap/errors.d.ts.map +1 -0
- package/lib/typescript/src/tilemap/index.d.ts +8 -0
- package/lib/typescript/src/tilemap/index.d.ts.map +1 -0
- package/lib/typescript/src/tilemap/movement.d.ts +52 -0
- package/lib/typescript/src/tilemap/movement.d.ts.map +1 -0
- package/lib/typescript/src/tilemap/queries.d.ts +21 -0
- package/lib/typescript/src/tilemap/queries.d.ts.map +1 -0
- package/lib/typescript/src/tilemap/tiledAdapter.d.ts +32 -0
- package/lib/typescript/src/tilemap/tiledAdapter.d.ts.map +1 -0
- package/lib/typescript/src/tilemap/types.d.ts +127 -0
- package/lib/typescript/src/tilemap/types.d.ts.map +1 -0
- package/lib/typescript/src/tilemap.d.ts +2 -0
- package/lib/typescript/src/tilemap.d.ts.map +1 -0
- package/package.json +100 -10
- package/src/assets/defineAssets.ts +31 -5
- package/src/assets.ts +27 -0
- package/src/audio/createGameAudio.ts +749 -0
- package/src/audio/errors.ts +12 -0
- package/src/audio/index.ts +9 -0
- package/src/audio/resolver.ts +74 -0
- package/src/audio/types.ts +47 -0
- package/src/audio.ts +13 -0
- package/src/camera2d/bounds.ts +69 -0
- package/src/camera2d/extents.ts +25 -0
- package/src/camera2d/follow.ts +165 -0
- package/src/camera2d/index.ts +29 -0
- package/src/camera2d/interpolation.ts +113 -0
- package/src/camera2d/shake.ts +90 -0
- package/src/camera2d/transform.ts +148 -0
- package/src/camera2d/types.ts +73 -0
- package/src/camera2d/validation.ts +126 -0
- package/src/camera2d/visibility.ts +181 -0
- package/src/camera2d.ts +6 -0
- package/src/collision2d/colliders.ts +292 -0
- package/src/collision2d/debug.ts +133 -0
- package/src/collision2d/filters.ts +48 -0
- package/src/collision2d/index.ts +74 -0
- package/src/collision2d/intersections.ts +82 -0
- package/src/collision2d/manifolds.ts +191 -0
- package/src/collision2d/segments.ts +176 -0
- package/src/collision2d/spatialHash.ts +211 -0
- package/src/collision2d/sweeps.ts +269 -0
- package/src/collision2d.ts +6 -0
- package/src/core/input/buttonPad.ts +235 -0
- package/src/core/input/createInputBuffer.ts +95 -14
- package/src/core/input/types.ts +7 -0
- package/src/core/session/createGameSession.ts +480 -53
- package/src/core/session/deepFreeze.ts +104 -3
- package/src/core/session/diagnostics.ts +2 -0
- package/src/core/session/types.ts +77 -4
- package/src/definition/defineGame.ts +61 -3
- package/src/definition/types.ts +10 -0
- package/src/events/defineGameEvents.ts +46 -0
- package/src/events/errors.ts +14 -0
- package/src/events/index.ts +14 -0
- package/src/events/payload.ts +234 -0
- package/src/events/seed.ts +33 -0
- package/src/events/types.ts +53 -0
- package/src/events.ts +20 -0
- package/src/geometry/helpers.ts +136 -0
- package/src/geometry/index.ts +14 -0
- package/src/geometry/types.ts +54 -0
- package/src/geometry/validation.ts +131 -0
- package/src/geometry.ts +6 -0
- package/src/haptics/createGameHaptics.ts +214 -0
- package/src/haptics/errors.ts +12 -0
- package/src/haptics/index.ts +3 -0
- package/src/haptics/resolver.ts +58 -0
- package/src/haptics/types.ts +48 -0
- package/src/haptics.ts +7 -0
- package/src/index.ts +37 -1
- package/src/particles/createParticleSystem.ts +505 -0
- package/src/particles/defineParticleEffect.ts +164 -0
- package/src/particles/errors.ts +6 -0
- package/src/particles/index.ts +5 -0
- package/src/particles/sampling.ts +141 -0
- package/src/particles/types.ts +327 -0
- package/src/particles.ts +1 -0
- package/src/react/GameButtonPad.tsx +436 -0
- package/src/react/GamePointerInput.tsx +73 -8
- package/src/react/GameView.tsx +160 -61
- package/src/react/assets/createGameAssetStore.ts +140 -107
- package/src/react/assets/useGameAssets.ts +63 -31
- package/src/react/bindAppLifecycle.ts +55 -19
- package/src/react/bindGameSession.ts +12 -2
- package/src/react/camera2d/GameLayer2D.tsx +43 -0
- package/src/react/camera2d/defineGameCamera2D.ts +59 -0
- package/src/react/camera2d/usePresentedCameraBinding.ts +185 -0
- package/src/react/cleanupList.ts +48 -0
- package/src/react/instrumentation.ts +31 -3
- package/src/react/lifecycleSource.ts +58 -0
- package/src/react/particles/ParticleView.tsx +358 -0
- package/src/react/particles/culling.ts +145 -0
- package/src/react/particles/index.ts +6 -0
- package/src/react/particles/spriteXForm.ts +72 -0
- package/src/react/particles/useParticlePresentation.ts +261 -0
- package/src/react/pointerBinding.ts +74 -16
- package/src/react/pointerCamera.ts +33 -0
- package/src/react/pointerCoalescer.ts +36 -10
- package/src/react/sprites/GameSprite.tsx +4 -33
- package/src/react/sprites/GameWorld2D.tsx +113 -7
- package/src/react/sprites/Sprite.tsx +51 -72
- package/src/react/sprites/SpriteBatch.tsx +74 -22
- package/src/react/sprites/batchVisibility.ts +76 -0
- package/src/react/sprites/spriteSelection.ts +133 -0
- package/src/react/sprites/spriteTransform.ts +46 -26
- package/src/react/tilemap/TileMapLayer2D.tsx +274 -0
- package/src/react/tilemap/tilePresentation.ts +491 -0
- package/src/react/useGameSession.ts +90 -0
- package/src/react/useGameSessionStatus.ts +53 -0
- package/src/react/viewportBinding.ts +5 -1
- package/src/react.ts +18 -1
- package/src/scene/defineScene.ts +47 -5
- package/src/scene/types.ts +37 -3
- package/src/sprites/sampleSpriteClip.ts +82 -14
- package/src/sprites/spriteAnimationState.ts +29 -25
- package/src/sprites.ts +22 -0
- package/src/storage/adapters/asyncStorage.ts +77 -0
- package/src/storage/adapters/memory.ts +58 -0
- package/src/storage/errors.ts +88 -0
- package/src/storage/index.ts +18 -0
- package/src/storage/schema.ts +147 -0
- package/src/storage/serialization.ts +248 -0
- package/src/storage/store.ts +380 -0
- package/src/storage/types.ts +76 -0
- package/src/storage/validation.ts +102 -0
- package/src/storage.ts +1 -0
- package/src/testing.ts +4 -0
- package/src/tilemap/chunkStats.ts +24 -0
- package/src/tilemap/definitions.ts +327 -0
- package/src/tilemap/errors.ts +11 -0
- package/src/tilemap/index.ts +10 -0
- package/src/tilemap/movement.ts +368 -0
- package/src/tilemap/queries.ts +136 -0
- package/src/tilemap/tiledAdapter.ts +165 -0
- package/src/tilemap/types.ts +119 -0
- package/src/tilemap.ts +1 -0
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { GameSession } from '../core/session/types.js';
|
|
2
|
+
import type { GameDefinition, InputMap, SceneMap } from '../definition/types.js';
|
|
3
|
+
type SessionCreator<TScenes extends SceneMap, TInput extends InputMap> = (definition: GameDefinition<TScenes, TInput>) => GameSession<TScenes, TInput>;
|
|
4
|
+
/**
|
|
5
|
+
* Create and own a `GameSession` for a `GameDefinition`, with React
|
|
6
|
+
* ownership.
|
|
7
|
+
*
|
|
8
|
+
* The hook creates an idle session during the commit phase, publishes it,
|
|
9
|
+
* and disposes it exactly once when it is replaced or the owner unmounts.
|
|
10
|
+
* React Strict Mode's development setup/cleanup rehearsal is safe: every
|
|
11
|
+
* rehearsal session is disposed exactly once and a disposed session is never
|
|
12
|
+
* published.
|
|
13
|
+
*
|
|
14
|
+
* Ownership rules:
|
|
15
|
+
*
|
|
16
|
+
* - The return value is `undefined` until React commits a live session for
|
|
17
|
+
* the current definition: the initial render, and the boundary while a
|
|
18
|
+
* definition replacement is being created. Render a deliberate fallback
|
|
19
|
+
* instead of hiding it.
|
|
20
|
+
* - The same definition object returns the same session across re-renders.
|
|
21
|
+
* A different definition object unpublishes the old session, disposes it,
|
|
22
|
+
* and publishes a fresh one. Disposed sessions are never revived, so
|
|
23
|
+
* declaring definitions at module scope keeps identity stable.
|
|
24
|
+
* - The hook owns terminal disposal. Do not call `session.dispose()` on a
|
|
25
|
+
* hook-owned session.
|
|
26
|
+
* - The hook does not start the session. Pass it to `GameView`, which binds,
|
|
27
|
+
* starts, pauses on unmount/backgrounding, and never terminally disposes a
|
|
28
|
+
* borrowed session.
|
|
29
|
+
* - For an asset-backed game, mount the component that calls this hook only
|
|
30
|
+
* after `useGameAssets()` reports `ready`; this hook does not load assets.
|
|
31
|
+
*
|
|
32
|
+
* Use `createGameSession()` with explicit `try/finally` disposal for headless
|
|
33
|
+
* tests, non-React programs, and custom surface controllers that need to own
|
|
34
|
+
* sessions imperatively.
|
|
35
|
+
*/
|
|
36
|
+
export declare function useGameSession<TScenes extends SceneMap, TInput extends InputMap>(definition: GameDefinition<TScenes, TInput>): GameSession<TScenes, TInput> | undefined;
|
|
37
|
+
/**
|
|
38
|
+
* @internal
|
|
39
|
+
*
|
|
40
|
+
* The injectable-creator seam behind `useGameSession`, exported from this
|
|
41
|
+
* module only (never from the `rn-gamekit/react` barrel). Tests supply a
|
|
42
|
+
* deterministic creator (for example `createGameSessionWithDriver` with a
|
|
43
|
+
* `ManualFrameDriver`, since node has no `requestAnimationFrame`) and must
|
|
44
|
+
* pass a stable factory identity across renders.
|
|
45
|
+
*/
|
|
46
|
+
export declare function useOwnedGameSession<TScenes extends SceneMap, TInput extends InputMap>(definition: GameDefinition<TScenes, TInput>, create: SessionCreator<TScenes, TInput>): GameSession<TScenes, TInput> | undefined;
|
|
47
|
+
export {};
|
|
48
|
+
//# sourceMappingURL=useGameSession.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useGameSession.d.ts","sourceRoot":"","sources":["../../../../src/react/useGameSession.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,wBAAqB,CAAC;AAE9E,KAAK,cAAc,CAAC,OAAO,SAAS,QAAQ,EAAE,MAAM,SAAS,QAAQ,IAAI,CACvE,UAAU,EAAE,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,KACxC,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AASlC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,cAAc,CAAC,OAAO,SAAS,QAAQ,EAAE,MAAM,SAAS,QAAQ,EAC9E,UAAU,EAAE,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,GAC1C,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,SAAS,CAE1C;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,SAAS,QAAQ,EAAE,MAAM,SAAS,QAAQ,EACnF,UAAU,EAAE,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,EAC3C,MAAM,EAAE,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,GACtC,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,SAAS,CAuB1C"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { GameSession, GameSessionStatus } from '../core/session/types.js';
|
|
2
|
+
import type { InputMap, SceneMap } from '../definition/types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Observe a session's lifecycle status from React.
|
|
5
|
+
*
|
|
6
|
+
* Returns the current `session.status` on the render that observes a
|
|
7
|
+
* session, and re-renders once per actual lifecycle transition. `undefined`
|
|
8
|
+
* means no session is currently available — the same meaning Task 9's
|
|
9
|
+
* `useGameSession()` gives its pre-commit value, so both hooks compose
|
|
10
|
+
* unconditionally:
|
|
11
|
+
*
|
|
12
|
+
* ```ts
|
|
13
|
+
* const session = useGameSession(game);
|
|
14
|
+
* const status = useGameSessionStatus(session);
|
|
15
|
+
* ```
|
|
16
|
+
*
|
|
17
|
+
* The hook subscribes through `addStatusListener` and never polls; it owns
|
|
18
|
+
* no session and never disposes one. Replacing the session argument detaches
|
|
19
|
+
* the old subscription before the replacement's status is reported, and
|
|
20
|
+
* idempotent lifecycle commands do not cause redundant re-renders.
|
|
21
|
+
*/
|
|
22
|
+
export declare function useGameSessionStatus<TScenes extends SceneMap, TInput extends InputMap>(session: GameSession<TScenes, TInput> | undefined): GameSessionStatus | undefined;
|
|
23
|
+
//# sourceMappingURL=useGameSessionStatus.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useGameSessionStatus.d.ts","sourceRoot":"","sources":["../../../../src/react/useGameSessionStatus.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,0BAAuB,CAAC;AAC5E,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,wBAAqB,CAAC;AAK9D;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,SAAS,QAAQ,EACxB,MAAM,SAAS,QAAQ,EACvB,OAAO,EAAE,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,SAAS,GAAG,iBAAiB,GAAG,SAAS,CAuBlF"}
|
|
@@ -29,7 +29,11 @@ export declare class ViewportBinding {
|
|
|
29
29
|
setSurfaceSize(size: SurfaceSize): void;
|
|
30
30
|
/** Observe layout revisions. Returns an idempotent unsubscribe. */
|
|
31
31
|
subscribe(listener: () => void): () => void;
|
|
32
|
-
/**
|
|
32
|
+
/**
|
|
33
|
+
* Release current subscribers (GS-VIEWPORT-01). This is not a lifecycle
|
|
34
|
+
* gate: late subscriptions still register and setSurfaceSize still
|
|
35
|
+
* resolves. Discard the binding after disposal instead of reusing it.
|
|
36
|
+
*/
|
|
33
37
|
dispose(): void;
|
|
34
38
|
}
|
|
35
39
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"viewportBinding.d.ts","sourceRoot":"","sources":["../../../../src/react/viewportBinding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,kBAAkB,EAAE,KAAK,WAAW,EAAE,KAAK,QAAQ,EAAE,MAAM,wBAAe,CAAC;AAE5G;;;;;;;;;GASG;AACH,qBAAa,eAAe;;gBAOd,MAAM,EAAE,QAAQ;IAI5B,iEAAiE;IACjE,IAAI,MAAM,IAAI,QAAQ,CAErB;IAED,gFAAgF;IAChF,IAAI,QAAQ,IAAI,kBAAkB,GAAG,SAAS,CAE7C;IAED,6EAA6E;IAC7E,IAAI,WAAW,IAAI,WAAW,GAAG,SAAS,CAEzC;IAED,8DAA8D;IAC9D,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED;;;;;OAKG;IACH,cAAc,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;IAgBvC,mEAAmE;IACnE,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;IAY3C
|
|
1
|
+
{"version":3,"file":"viewportBinding.d.ts","sourceRoot":"","sources":["../../../../src/react/viewportBinding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,kBAAkB,EAAE,KAAK,WAAW,EAAE,KAAK,QAAQ,EAAE,MAAM,wBAAe,CAAC;AAE5G;;;;;;;;;GASG;AACH,qBAAa,eAAe;;gBAOd,MAAM,EAAE,QAAQ;IAI5B,iEAAiE;IACjE,IAAI,MAAM,IAAI,QAAQ,CAErB;IAED,gFAAgF;IAChF,IAAI,QAAQ,IAAI,kBAAkB,GAAG,SAAS,CAE7C;IAED,6EAA6E;IAC7E,IAAI,WAAW,IAAI,WAAW,GAAG,SAAS,CAEzC;IAED,8DAA8D;IAC9D,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED;;;;;OAKG;IACH,cAAc,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;IAgBvC,mEAAmE;IACnE,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;IAY3C;;;;OAIG;IACH,OAAO,IAAI,IAAI;CAGhB;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,QAAQ,EAChB,QAAQ,EAAE,eAAe,GAAG,IAAI,GAC/B,eAAe,CAUjB"}
|
|
@@ -1,8 +1,15 @@
|
|
|
1
1
|
export { GameView } from './react/GameView.js';
|
|
2
|
+
export { useGameSession } from './react/useGameSession.js';
|
|
3
|
+
export { useGameSessionStatus } from './react/useGameSessionStatus.js';
|
|
4
|
+
export { createGameLifecycleSource, GameLifecycleProvider, useGameLifecycleSource } from './react/lifecycleSource.js';
|
|
5
|
+
export type { GameLifecycleSource } from './core/session/types.js';
|
|
2
6
|
export { createGameAssetStore } from './react/assets/decodeSkiaImage.js';
|
|
3
7
|
export { useGameAssets, stableGroupsKey } from './react/assets/useGameAssets.js';
|
|
4
8
|
export type { GameAssetsState } from './react/assets/useGameAssets.js';
|
|
5
|
-
export { GameWorld2D, viewportTransform } from './react/sprites/GameWorld2D.js';
|
|
9
|
+
export { GameWorld2D, viewportTransform, cameraViewportTransform2D, layerParallaxTransform2D } from './react/sprites/GameWorld2D.js';
|
|
10
|
+
export { GameLayer2D } from './react/camera2d/GameLayer2D.js';
|
|
11
|
+
export { defineGameCamera2D } from './react/camera2d/defineGameCamera2D.js';
|
|
12
|
+
export type { GameCamera2DDefinition } from './react/camera2d/defineGameCamera2D.js';
|
|
6
13
|
export { Sprite, resolveSpriteFrameRect } from './react/sprites/Sprite.js';
|
|
7
14
|
export type { SpriteAnimatable, SpriteAnimatableBoolean, SpriteProps } from './react/sprites/Sprite.js';
|
|
8
15
|
export { GameSprite, spriteFrameNameForClip } from './react/sprites/GameSprite.js';
|
|
@@ -16,5 +23,15 @@ export type { AcquireOptions, AssetPipelines, GameAssetStore, NativeImageHandle,
|
|
|
16
23
|
export type { GameRendererProps, GameViewProps } from './react/GameView.js';
|
|
17
24
|
export { GamePointerInput } from './react/GamePointerInput.js';
|
|
18
25
|
export type { GamePointerInputProps } from './react/GamePointerInput.js';
|
|
26
|
+
export { GameButtonPad, GameButton } from './react/GameButtonPad.js';
|
|
27
|
+
export type { GameButtonPadProps, GameButtonProps, ButtonActionName } from './react/GameButtonPad.js';
|
|
19
28
|
export type { GamePointerInstrumentation, GameViewInstrumentation } from './react/instrumentation.js';
|
|
29
|
+
export { ParticleView } from './react/particles/ParticleView.js';
|
|
30
|
+
export type { ParticleViewProps } from './react/particles/ParticleView.js';
|
|
31
|
+
export { useParticlePresentation } from './react/particles/useParticlePresentation.js';
|
|
32
|
+
export type { ParticlePresentation } from './react/particles/useParticlePresentation.js';
|
|
33
|
+
export { particleSpriteXform, assertUniformParticleSpriteRatio } from './react/particles/spriteXForm.js';
|
|
34
|
+
export { cameraVisibleWorldBounds, visibleInBounds, PARTICLE_CULL_PADDING } from './react/particles/culling.js';
|
|
35
|
+
export { TileMapLayer2D } from './react/tilemap/TileMapLayer2D.js';
|
|
36
|
+
export type { TileMapLayer2DProps } from './react/tilemap/TileMapLayer2D.js';
|
|
20
37
|
//# sourceMappingURL=react.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../../../src/react.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAkB,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAgC,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,iCAA8B,CAAC;AAC9E,YAAY,EAAE,eAAe,EAAE,MAAM,iCAA8B,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,gCAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"react.d.ts","sourceRoot":"","sources":["../../../src/react.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAkB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,2BAAwB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAA8B,CAAC;AACpE,OAAO,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,4BAAyB,CAAC;AACnH,YAAY,EAAE,mBAAmB,EAAE,MAAM,yBAAsB,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAgC,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,iCAA8B,CAAC;AAC9E,YAAY,EAAE,eAAe,EAAE,MAAM,iCAA8B,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,MAAM,gCAA6B,CAAC;AAClI,OAAO,EAAE,WAAW,EAAE,MAAM,iCAA8B,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAqC,CAAC;AACzE,YAAY,EAAE,sBAAsB,EAAE,MAAM,wCAAqC,CAAC;AAClF,OAAO,EAAE,MAAM,EAAE,sBAAsB,EAAE,MAAM,2BAAwB,CAAC;AACxE,YAAY,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,WAAW,EAAE,MAAM,2BAAwB,CAAC;AACrG,OAAO,EAAE,UAAU,EAAE,sBAAsB,EAAE,MAAM,+BAA4B,CAAC;AAChF,YAAY,EACV,eAAe,EACf,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,+BAA4B,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,gCAA6B,CAAC;AAC1D,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,gCAA6B,CAAC;AACtF,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,oCAAiC,CAAC;AACzC,YAAY,EACV,oBAAoB,EACpB,aAAa,EACb,oBAAoB,GACrB,MAAM,oCAAiC,CAAC;AACzC,OAAO,EAAE,wBAAwB,EAAE,MAAM,wCAAqC,CAAC;AAC/E,YAAY,EACV,cAAc,EACd,cAAc,EACd,cAAc,EACd,iBAAiB,GAClB,MAAM,wCAAqC,CAAC;AAE7C,YAAY,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,qBAAkB,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA0B,CAAC;AAC5D,YAAY,EAAE,qBAAqB,EAAE,MAAM,6BAA0B,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,0BAAuB,CAAC;AAClE,YAAY,EAAE,kBAAkB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,0BAAuB,CAAC;AACnG,YAAY,EAAE,0BAA0B,EAAE,uBAAuB,EAAE,MAAM,4BAAyB,CAAC;AACnG,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAgC,CAAC;AAC9D,YAAY,EAAE,iBAAiB,EAAE,MAAM,mCAAgC,CAAC;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8CAA2C,CAAC;AACpF,YAAY,EAAE,oBAAoB,EAAE,MAAM,8CAA2C,CAAC;AACtF,OAAO,EAAE,mBAAmB,EAAE,gCAAgC,EAAE,MAAM,kCAA+B,CAAC;AACtG,OAAO,EAAE,wBAAwB,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,8BAA2B,CAAC;AAC7G,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAgC,CAAC;AAChE,YAAY,EAAE,mBAAmB,EAAE,MAAM,mCAAgC,CAAC"}
|
|
@@ -1,8 +1,26 @@
|
|
|
1
|
+
import type { GameEventDescriptor, InferGameEventMap } from '../events/types.js';
|
|
1
2
|
import type { SceneDefinition } from './types.js';
|
|
2
3
|
/**
|
|
3
4
|
* Define a synchronous functional scene while inferring its state, snapshot,
|
|
4
5
|
* action, and transition types.
|
|
5
6
|
*
|
|
7
|
+
* To get typed event emission in a standalone scene, pass the same
|
|
8
|
+
* `events` object that will be passed to `defineGame({ events })`:
|
|
9
|
+
*
|
|
10
|
+
* ```ts
|
|
11
|
+
* const events = defineGameEvents({ 'brick-hit': gameEvent<{ id: string }>() });
|
|
12
|
+
* const play = defineScene({
|
|
13
|
+
* actions: ['primary'],
|
|
14
|
+
* emits: ['brick-hit'],
|
|
15
|
+
* events,
|
|
16
|
+
* update: ({ events }) => {
|
|
17
|
+
* events.emit('brick-hit', { id: '1' }); // typed, wrong payload fails
|
|
18
|
+
* },
|
|
19
|
+
* // ...
|
|
20
|
+
* });
|
|
21
|
+
* const game = defineGame({ events, scenes: { play }, initialScene: 'play' });
|
|
22
|
+
* ```
|
|
23
|
+
*
|
|
6
24
|
* @example
|
|
7
25
|
* ```ts
|
|
8
26
|
* const ready = defineScene({
|
|
@@ -19,8 +37,10 @@ import type { SceneDefinition } from './types.js';
|
|
|
19
37
|
* });
|
|
20
38
|
* ```
|
|
21
39
|
*/
|
|
22
|
-
export declare function defineScene<const TActions extends readonly string[], TState, TSnapshot, const TTransitions extends readonly string[] = []>(definition: Omit<SceneDefinition<TState, TSnapshot, TActions[number], TTransitions[number]>, 'kind' | '__actionType' | '__transitionType' | '__snapshotType' | 'actions' | 'transitions'> & {
|
|
40
|
+
export declare function defineScene<const TActions extends readonly string[], TState, TSnapshot, const TTransitions extends readonly string[] = [], const TEmits extends readonly (keyof InferGameEventMap<TEventDefs> & string)[] = [], const TEventDefs extends Record<string, GameEventDescriptor<unknown>> = Record<string, never>>(definition: Omit<SceneDefinition<TState, TSnapshot, TActions[number], TTransitions[number], TEmits[number], TEventDefs>, 'kind' | '__actionType' | '__transitionType' | '__snapshotType' | '__emitType' | '__eventMapType' | '__eventDefsType' | 'actions' | 'transitions' | 'emits' | 'events'> & {
|
|
23
41
|
readonly actions: TActions;
|
|
24
42
|
readonly transitions?: TTransitions;
|
|
25
|
-
|
|
43
|
+
readonly emits?: TEmits;
|
|
44
|
+
readonly events?: TEventDefs;
|
|
45
|
+
}): SceneDefinition<TState, TSnapshot, TActions[number], TTransitions[number], TEmits[number], TEventDefs>;
|
|
26
46
|
//# sourceMappingURL=defineScene.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defineScene.d.ts","sourceRoot":"","sources":["../../../../src/scene/defineScene.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAS,CAAC;AAE/C
|
|
1
|
+
{"version":3,"file":"defineScene.d.ts","sourceRoot":"","sources":["../../../../src/scene/defineScene.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,oBAAiB,CAAC;AAC9E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAS,CAAC;AAE/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAAgB,WAAW,CACzB,KAAK,CAAC,QAAQ,SAAS,SAAS,MAAM,EAAE,EACxC,MAAM,EACN,SAAS,EACT,KAAK,CAAC,YAAY,SAAS,SAAS,MAAM,EAAE,GAAG,EAAE,EACjD,KAAK,CAAC,MAAM,SAAS,SAAS,CAAC,MAAM,iBAAiB,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,EAAE,GAAG,EAAE,EACnF,KAAK,CAAC,UAAU,SAAS,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EAE7F,UAAU,EAAE,IAAI,CACd,eAAe,CACb,MAAM,EACN,SAAS,EACT,QAAQ,CAAC,MAAM,CAAC,EAChB,YAAY,CAAC,MAAM,CAAC,EACpB,MAAM,CAAC,MAAM,CAAC,EACd,UAAU,CACX,EACC,MAAM,GACN,cAAc,GACd,kBAAkB,GAClB,gBAAgB,GAChB,YAAY,GACZ,gBAAgB,GAChB,iBAAiB,GACjB,SAAS,GACT,aAAa,GACb,OAAO,GACP,QAAQ,CACX,GAAG;IACF,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC;IAC3B,QAAQ,CAAC,WAAW,CAAC,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC;CAC9B,GACA,eAAe,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC,CAKxG"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { InputFrame } from '../core/input/types.js';
|
|
2
|
+
import type { GameEventDescriptor, GameEventEmitter, InferGameEventMap } from '../events/types.js';
|
|
2
3
|
/**
|
|
3
4
|
* Update-scoped scene transition controls.
|
|
4
5
|
*
|
|
@@ -18,13 +19,15 @@ export interface SceneTransitionController<TTransitionName extends string> {
|
|
|
18
19
|
restartScene(): void;
|
|
19
20
|
}
|
|
20
21
|
/** Values supplied to a scene for one deterministic simulation tick. */
|
|
21
|
-
export interface SceneUpdate<TState, TActionName extends string, TTransitionName extends string> {
|
|
22
|
+
export interface SceneUpdate<TState, TActionName extends string, TTransitionName extends string, TEventDefs extends Record<string, GameEventDescriptor<unknown>> = Record<string, never>, TEmits extends keyof InferGameEventMap<TEventDefs> & string = keyof InferGameEventMap<TEventDefs> & string> {
|
|
22
23
|
/** The authoritative state produced by the previous tick. */
|
|
23
24
|
readonly state: Readonly<TState>;
|
|
24
25
|
/** One immutable semantic input snapshot for this tick. */
|
|
25
26
|
readonly input: InputFrame<TActionName>;
|
|
26
27
|
/** Update-scoped transition controls restricted to declared targets. */
|
|
27
28
|
readonly transition: SceneTransitionController<TTransitionName>;
|
|
29
|
+
/** Update-scoped emitter for declared game events (T13). Invalid after the update returns or throws. */
|
|
30
|
+
readonly events: GameEventEmitter<Pick<InferGameEventMap<TEventDefs>, TEmits>>;
|
|
28
31
|
/** One-based global simulation tick number. */
|
|
29
32
|
readonly tick: number;
|
|
30
33
|
/** One-based tick number within the current scene instance. */
|
|
@@ -42,7 +45,7 @@ export interface SceneSnapshotContext<TState> {
|
|
|
42
45
|
readonly state: Readonly<TState>;
|
|
43
46
|
}
|
|
44
47
|
/** A synchronous functional scene used by the runtime. */
|
|
45
|
-
export interface SceneDefinition<TState, TSnapshot, TActionName extends string = never, TTransitionName extends string = never
|
|
48
|
+
export interface SceneDefinition<TState, TSnapshot, TActionName extends string = never, TTransitionName extends string = never, TEmits extends string = never, TEventDefs extends Record<string, GameEventDescriptor<unknown>> = Record<string, never>> {
|
|
46
49
|
/** Internal scene-definition discriminator. */
|
|
47
50
|
readonly kind: 'gamekit.scene';
|
|
48
51
|
/** @internal Covariant type witness used to infer presentation snapshots. */
|
|
@@ -51,15 +54,32 @@ export interface SceneDefinition<TState, TSnapshot, TActionName extends string =
|
|
|
51
54
|
readonly __actionType?: TActionName;
|
|
52
55
|
/** @internal Type witness used to validate scene transition targets. */
|
|
53
56
|
readonly __transitionType?: TTransitionName;
|
|
57
|
+
/** @internal Type witness for emitted event names. */
|
|
58
|
+
readonly __emitType?: TEmits;
|
|
59
|
+
/** @internal Type witness for the game event map. */
|
|
60
|
+
readonly __eventMapType?: InferGameEventMap<TEventDefs>;
|
|
61
|
+
/** @internal Type witness for the branded event definitions identity. */
|
|
62
|
+
readonly __eventDefsType?: TEventDefs;
|
|
54
63
|
/** Semantic input actions this scene may read. */
|
|
55
64
|
readonly actions: readonly TActionName[];
|
|
56
65
|
/** Declared scene names this scene may transition to. */
|
|
57
66
|
readonly transitions?: readonly TTransitionName[];
|
|
67
|
+
/** Declared event names this scene may emit (subset of the game's event map). */
|
|
68
|
+
readonly emits?: readonly TEmits[];
|
|
69
|
+
/** The branded event definitions this scene is bound to (for standalone type safety). */
|
|
70
|
+
readonly events?: TEventDefs;
|
|
58
71
|
/** Create the scene's initial authoritative state. */
|
|
59
72
|
readonly create: () => TState;
|
|
60
73
|
/** Produce the next state for one fixed simulation tick. */
|
|
61
|
-
readonly update: (frame: SceneUpdate<TState, TActionName, TTransitionName>) => TState;
|
|
62
|
-
/**
|
|
74
|
+
readonly update: (frame: SceneUpdate<TState, TActionName, TTransitionName, TEventDefs, TEmits>) => TState;
|
|
75
|
+
/**
|
|
76
|
+
* Extract a compact renderer-specific snapshot from current state.
|
|
77
|
+
*
|
|
78
|
+
* The snapshot domain is plain records, arrays, and scalars; anything
|
|
79
|
+
* else fails with a `SnapshotDomainError` carrying the key path before
|
|
80
|
+
* publication. Returning a state reference transfers it into immutable
|
|
81
|
+
* snapshot ownership — it is frozen in place.
|
|
82
|
+
*/
|
|
63
83
|
readonly snapshot: (context: SceneSnapshotContext<TState>) => TSnapshot;
|
|
64
84
|
/** Release scene-owned resources exactly once. */
|
|
65
85
|
readonly dispose?: (state: Readonly<TState>) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/scene/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/scene/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAqB,CAAC;AACtD,OAAO,KAAK,EACV,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,oBAAiB,CAAC;AAEzB;;;;;;GAMG;AACH,MAAM,WAAW,yBAAyB,CAAC,eAAe,SAAS,MAAM;IACvE;;;;;OAKG;IACH,QAAQ,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI,CAAC;IACtC,mDAAmD;IACnD,YAAY,IAAI,IAAI,CAAC;CACtB;AAED,wEAAwE;AACxE,MAAM,WAAW,WAAW,CAC1B,MAAM,EACN,WAAW,SAAS,MAAM,EAC1B,eAAe,SAAS,MAAM,EAC9B,UAAU,SAAS,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EACvF,MAAM,SAAS,MAAM,iBAAiB,CAAC,UAAU,CAAC,GAAG,MAAM,GAAG,MAAM,iBAAiB,CAAC,UAAU,CAAC,GAAG,MAAM;IAE1G,6DAA6D;IAC7D,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IACjC,2DAA2D;IAC3D,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;IACxC,wEAAwE;IACxE,QAAQ,CAAC,UAAU,EAAE,yBAAyB,CAAC,eAAe,CAAC,CAAC;IAChE,wGAAwG;IACxG,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IAC/E,+CAA+C;IAC/C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,+DAA+D;IAC/D,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,+CAA+C;IAC/C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,4DAA4D;IAC5D,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,4DAA4D;IAC5D,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;CACtC;AAED,oEAAoE;AACpE,MAAM,WAAW,oBAAoB,CAAC,MAAM;IAC1C,yCAAyC;IACzC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;CAClC;AAED,0DAA0D;AAC1D,MAAM,WAAW,eAAe,CAC9B,MAAM,EACN,SAAS,EACT,WAAW,SAAS,MAAM,GAAG,KAAK,EAClC,eAAe,SAAS,MAAM,GAAG,KAAK,EACtC,MAAM,SAAS,MAAM,GAAG,KAAK,EAC7B,UAAU,SAAS,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC;IAEvF,+CAA+C;IAC/C,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,6EAA6E;IAC7E,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,CAAC;IACpC,8EAA8E;IAC9E,QAAQ,CAAC,YAAY,CAAC,EAAE,WAAW,CAAC;IACpC,wEAAwE;IACxE,QAAQ,CAAC,gBAAgB,CAAC,EAAE,eAAe,CAAC;IAC5C,sDAAsD;IACtD,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,qDAAqD;IACrD,QAAQ,CAAC,cAAc,CAAC,EAAE,iBAAiB,CAAC,UAAU,CAAC,CAAC;IACxD,yEAAyE;IACzE,QAAQ,CAAC,eAAe,CAAC,EAAE,UAAU,CAAC;IACtC,kDAAkD;IAClD,QAAQ,CAAC,OAAO,EAAE,SAAS,WAAW,EAAE,CAAC;IACzC,yDAAyD;IACzD,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,eAAe,EAAE,CAAC;IAClD,iFAAiF;IACjF,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,yFAAyF;IACzF,QAAQ,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC;IAC7B,sDAAsD;IACtD,QAAQ,CAAC,MAAM,EAAE,MAAM,MAAM,CAAC;IAC9B,4DAA4D;IAC5D,QAAQ,CAAC,MAAM,EAAE,CACf,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,CAAC,KACzE,MAAM,CAAC;IACZ;;;;;;;OAOG;IACH,QAAQ,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,oBAAoB,CAAC,MAAM,CAAC,KAAK,SAAS,CAAC;IACxE,kDAAkD;IAClD,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC;CACtD;AAED,sEAAsE;AACtE,MAAM,MAAM,aAAa,CAAC,MAAM,IAC9B,MAAM,SAAS;IAAE,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,SAAS,CAAA;CAAE,GAAG,SAAS,GAAG,KAAK,CAAC"}
|
|
@@ -4,14 +4,24 @@
|
|
|
4
4
|
* Pure, allocation-free, worklet-compatible frame selection. The same clip
|
|
5
5
|
* metadata and elapsed time always select the same frame, so equivalent
|
|
6
6
|
* game time produces identical presentation at 30/60/90/120 Hz.
|
|
7
|
+
*
|
|
8
|
+
* Single-contract rule (GS-ANIMATION-01): every renderer path resolves
|
|
9
|
+
* frames through these helpers — never duplicated arithmetic. Negative
|
|
10
|
+
* elapsed clamps uniformly (loops wrap, one-shots pin to frame zero);
|
|
11
|
+
* non-finite elapsed, empty clips, and non-positive durations fail clearly
|
|
12
|
+
* instead of masking invalid data as frame zero. Unknown clip names throw
|
|
13
|
+
* a plain `[ASSET_UNKNOWN_CLIP]` error: the UI-reachable call graph must
|
|
14
|
+
* stay free of error-class construction so failure branches execute on the
|
|
15
|
+
* UI runtime exactly as they do headlessly (GS-ANIMATION-02).
|
|
7
16
|
*/
|
|
8
17
|
import type { SpriteClip } from '../assets/types.js';
|
|
9
18
|
/**
|
|
10
19
|
* Select the frame index for `elapsedMs` of playback.
|
|
11
20
|
*
|
|
12
21
|
* Loop clips wrap with modulo — the boundary frame is never duplicated and
|
|
13
|
-
* no zero-length boundary frame exists
|
|
14
|
-
*
|
|
22
|
+
* no zero-length boundary frame exists; negative elapsed wraps into range.
|
|
23
|
+
* One-shot clips clamp to `[0, frameCount - 1]`; completion is reported
|
|
24
|
+
* separately by the playback state.
|
|
15
25
|
*/
|
|
16
26
|
export declare function sampleSpriteClipFrame(clip: SpriteClip, elapsedMs: number): number;
|
|
17
27
|
/**
|
|
@@ -21,4 +31,18 @@ export declare function sampleSpriteClipFrame(clip: SpriteClip, elapsedMs: numbe
|
|
|
21
31
|
export declare function sampleSpriteClipFrameName(clip: SpriteClip, elapsedMs: number): string;
|
|
22
32
|
/** Total clip duration in milliseconds (one-shot: its full timeline). */
|
|
23
33
|
export declare function spriteClipDurationMs(clip: SpriteClip): number;
|
|
34
|
+
/**
|
|
35
|
+
* Select the frame name for a clip + elapsed time (loop/once semantics).
|
|
36
|
+
*
|
|
37
|
+
* Reads the descriptor's animation table with the single sampler contract
|
|
38
|
+
* above. An absent clip table entry is an invalid clip — it throws instead
|
|
39
|
+
* of returning the clip string as if it were a frame name. Absent
|
|
40
|
+
* *selection* (no clip chosen yet) is distinct: callers keep that path and
|
|
41
|
+
* present nothing without calling this helper.
|
|
42
|
+
*/
|
|
43
|
+
export declare function spriteFrameNameForClip(animations: Readonly<Record<string, {
|
|
44
|
+
readonly frames: readonly string[];
|
|
45
|
+
readonly frameDurationMs: number;
|
|
46
|
+
readonly mode: 'loop' | 'once';
|
|
47
|
+
}>>, clip: string, elapsedMs: number): string;
|
|
24
48
|
//# sourceMappingURL=sampleSpriteClip.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sampleSpriteClip.d.ts","sourceRoot":"","sources":["../../../../src/sprites/sampleSpriteClip.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"sampleSpriteClip.d.ts","sourceRoot":"","sources":["../../../../src/sprites/sampleSpriteClip.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAiB,CAAC;AA4BlD;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAcjF;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAKrF;AAED,yEAAyE;AACzE,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAG7D;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,QAAQ,CAClB,MAAM,CACJ,MAAM,EACN;IACE,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;CAChC,CACF,CACF,EACD,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,GAChB,MAAM,CAWR"}
|
|
@@ -15,12 +15,11 @@ export interface SpriteAnimationState<TClipName extends string = string> {
|
|
|
15
15
|
/** The clip names of a sprite-sheet descriptor (works through the manifest brand). */
|
|
16
16
|
export type SpriteClipNames<TDescriptor extends SpriteSheetDescriptor> = Extract<keyof TDescriptor['animations'], string>;
|
|
17
17
|
/**
|
|
18
|
-
* Start playback of `clip` from its beginning. The clip name is
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
* names literal via the spriteSheet contract).
|
|
18
|
+
* Start playback of `clip` from its beginning. The clip name is constrained
|
|
19
|
+
* to the descriptor's animation keys, so a misspelled clip fails compilation;
|
|
20
|
+
* untyped callers still hit the runtime check below.
|
|
22
21
|
*/
|
|
23
|
-
export declare function startSpriteAnimation<
|
|
22
|
+
export declare function startSpriteAnimation<TDescriptor extends SpriteSheetDescriptor>(descriptor: TDescriptor, clip: SpriteClipNames<TDescriptor>): SpriteAnimationState<SpriteClipNames<TDescriptor>>;
|
|
24
23
|
/**
|
|
25
24
|
* Advance playback by `deltaSeconds` of fixed-step game time.
|
|
26
25
|
*
|
|
@@ -28,12 +27,12 @@ export declare function startSpriteAnimation<TClipName extends string>(descripto
|
|
|
28
27
|
* clearly. Loop clips keep their elapsed time bounded within one timeline
|
|
29
28
|
* (modulo), so arbitrarily large deltas cost constant arithmetic.
|
|
30
29
|
*/
|
|
31
|
-
export declare function advanceSpriteAnimation<
|
|
30
|
+
export declare function advanceSpriteAnimation<TDescriptor extends SpriteSheetDescriptor, TClip extends SpriteClipNames<TDescriptor>>(descriptor: TDescriptor, state: SpriteAnimationState<TClip>, deltaSeconds: number): SpriteAnimationState<TClip>;
|
|
32
31
|
/**
|
|
33
32
|
* Switch playback to `clip`, restarting it from the beginning. The clip
|
|
34
33
|
* name is typed against the descriptor's animation table.
|
|
35
34
|
*/
|
|
36
|
-
export declare function playSpriteAnimation<
|
|
35
|
+
export declare function playSpriteAnimation<TDescriptor extends SpriteSheetDescriptor, TClip extends SpriteClipNames<TDescriptor>>(descriptor: TDescriptor, state: SpriteAnimationState<TClip>, clip: SpriteClipNames<TDescriptor>): SpriteAnimationState<SpriteClipNames<TDescriptor>>;
|
|
37
36
|
/** Pause playback; `advance` becomes a no-op while paused. */
|
|
38
37
|
export declare function pauseSpriteAnimation<TClipName extends string>(state: SpriteAnimationState<TClipName>): SpriteAnimationState<TClipName>;
|
|
39
38
|
/** Resume playback from the paused position. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spriteAnimationState.d.ts","sourceRoot":"","sources":["../../../../src/sprites/spriteAnimationState.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"spriteAnimationState.d.ts","sourceRoot":"","sources":["../../../../src/sprites/spriteAnimationState.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAiB,CAAC;AAG7D,wDAAwD;AACxD,MAAM,WAAW,oBAAoB,CAAC,SAAS,SAAS,MAAM,GAAG,MAAM;IACrE,qDAAqD;IACrD,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,oEAAoE;IACpE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,wDAAwD;IACxD,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,kDAAkD;IAClD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,gEAAgE;IAChE,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC7B;AAaD,sFAAsF;AACtF,MAAM,MAAM,eAAe,CAAC,WAAW,SAAS,qBAAqB,IAAI,OAAO,CAC9E,MAAM,WAAW,CAAC,YAAY,CAAC,EAC/B,MAAM,CACP,CAAC;AAkBF;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,SAAS,qBAAqB,EAC5E,UAAU,EAAE,WAAW,EACvB,IAAI,EAAE,eAAe,CAAC,WAAW,CAAC,GACjC,oBAAoB,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,CASpD;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,WAAW,SAAS,qBAAqB,EACzC,KAAK,SAAS,eAAe,CAAC,WAAW,CAAC,EAE1C,UAAU,EAAE,WAAW,EACvB,KAAK,EAAE,oBAAoB,CAAC,KAAK,CAAC,EAClC,YAAY,EAAE,MAAM,GACnB,oBAAoB,CAAC,KAAK,CAAC,CAiB7B;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,WAAW,SAAS,qBAAqB,EACzC,KAAK,SAAS,eAAe,CAAC,WAAW,CAAC,EAE1C,UAAU,EAAE,WAAW,EACvB,KAAK,EAAE,oBAAoB,CAAC,KAAK,CAAC,EAClC,IAAI,EAAE,eAAe,CAAC,WAAW,CAAC,GACjC,oBAAoB,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,CAYpD;AAED,8DAA8D;AAC9D,wBAAgB,oBAAoB,CAAC,SAAS,SAAS,MAAM,EAC3D,KAAK,EAAE,oBAAoB,CAAC,SAAS,CAAC,GACrC,oBAAoB,CAAC,SAAS,CAAC,CAEjC;AAED,gDAAgD;AAChD,wBAAgB,qBAAqB,CAAC,SAAS,SAAS,MAAM,EAC5D,KAAK,EAAE,oBAAoB,CAAC,SAAS,CAAC,GACrC,oBAAoB,CAAC,SAAS,CAAC,CAEjC;AAED,mDAAmD;AACnD,wBAAgB,oBAAoB,CAAC,SAAS,SAAS,MAAM,EAC3D,KAAK,EAAE,oBAAoB,CAAC,SAAS,CAAC,GACrC,oBAAoB,CAAC,SAAS,CAAC,CAEjC;AAED,8CAA8C;AAC9C,wBAAgB,uBAAuB,CAAC,SAAS,SAAS,MAAM,EAC9D,KAAK,EAAE,oBAAoB,CAAC,SAAS,CAAC,EACtC,KAAK,EAAE,MAAM,GACZ,oBAAoB,CAAC,SAAS,CAAC,CAGjC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Subpath entry for `rn-gamekit/sprites`.
|
|
3
|
+
*
|
|
4
|
+
* Deterministic sprite-clip sampling and immutable playback-state helpers.
|
|
5
|
+
* React components (Sprite, GameSprite, SpriteBatch) remain in `rn-gamekit/react`.
|
|
6
|
+
*/
|
|
7
|
+
export { sampleSpriteClipFrame, sampleSpriteClipFrameName, spriteClipDurationMs, spriteFrameNameForClip, } from './sprites/sampleSpriteClip.js';
|
|
8
|
+
export { advanceSpriteAnimation, pauseSpriteAnimation, playSpriteAnimation, resetSpriteAnimation, resumeSpriteAnimation, setSpriteAnimationSpeed, startSpriteAnimation, } from './sprites/spriteAnimationState.js';
|
|
9
|
+
export type { SpriteAnimationState, SpriteClipNames } from './sprites/spriteAnimationState.js';
|
|
10
|
+
//# sourceMappingURL=sprites.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sprites.d.ts","sourceRoot":"","sources":["../../../src/sprites.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EACL,qBAAqB,EACrB,yBAAyB,EACzB,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,+BAA4B,CAAC;AACpC,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,mCAAgC,CAAC;AACxC,YAAY,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,mCAAgC,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { GameStorageAdapter } from '../types.js';
|
|
2
|
+
export type LoadedAsyncStorage = {
|
|
3
|
+
getItem(key: string): Promise<string | null>;
|
|
4
|
+
setItem(key: string, value: string): Promise<void>;
|
|
5
|
+
removeItem(key: string): Promise<void>;
|
|
6
|
+
};
|
|
7
|
+
type Loader = () => Promise<LoadedAsyncStorage>;
|
|
8
|
+
export declare function __setAsyncStorageLoader(fn: Loader | null): void;
|
|
9
|
+
export declare function __getAsyncStorageLoader(): Loader | null;
|
|
10
|
+
/**
|
|
11
|
+
* RN adapter backed by AsyncStorage.
|
|
12
|
+
*
|
|
13
|
+
* Importing `rn-gamekit/storage` does not eagerly import AsyncStorage —
|
|
14
|
+
* the dynamic import happens on the first read/write/remove.
|
|
15
|
+
*/
|
|
16
|
+
export declare function createGameStorageAdapter(): GameStorageAdapter;
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=asyncStorage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asyncStorage.d.ts","sourceRoot":"","sources":["../../../../../src/storage/adapters/asyncStorage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAU,CAAC;AAGnD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxC,CAAC;AAEF,KAAK,MAAM,GAAG,MAAM,OAAO,CAAC,kBAAkB,CAAC,CAAC;AAGhD,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAE/D;AAED,wBAAgB,uBAAuB,IAAI,MAAM,GAAG,IAAI,CAEvD;AA6BD;;;;;GAKG;AACH,wBAAgB,wBAAwB,IAAI,kBAAkB,CAuB7D"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { GameStorageAdapter } from '../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* In-memory adapter for tests and apps that own storage elsewhere.
|
|
4
|
+
* Each instance owns its map.
|
|
5
|
+
*/
|
|
6
|
+
export declare function createMemoryStorageAdapter(initial?: Record<string, string>): GameStorageAdapter;
|
|
7
|
+
/**
|
|
8
|
+
* Programmable failure adapter for tests — wraps another adapter and injects failures.
|
|
9
|
+
*/
|
|
10
|
+
export declare function createFailingStorageAdapter(inner: GameStorageAdapter, opts?: {
|
|
11
|
+
failRead?: (key: string) => Error | null;
|
|
12
|
+
failWrite?: (key: string, value: string) => Error | null;
|
|
13
|
+
failRemove?: (key: string) => Error | null;
|
|
14
|
+
delayMs?: number;
|
|
15
|
+
}): GameStorageAdapter;
|
|
16
|
+
//# sourceMappingURL=memory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../../../src/storage/adapters/memory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAU,CAAC;AAEnD;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,kBAAkB,CAc/F;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,kBAAkB,EACzB,IAAI,GAAE;IACJ,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,KAAK,GAAG,IAAI,CAAC;IACzC,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,KAAK,GAAG,IAAI,CAAC;IACzD,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,KAAK,GAAG,IAAI,CAAC;IAC3C,OAAO,CAAC,EAAE,MAAM,CAAC;CACb,GACL,kBAAkB,CAwBpB"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* V1 storage errors — stable codes, operation, namespace/slot, schema context,
|
|
3
|
+
* exact path where relevant, and original cause.
|
|
4
|
+
*/
|
|
5
|
+
export type GameStorageErrorCode = 'INVALID_NAMESPACE' | 'INVALID_SLOT' | 'INVALID_SCHEMA_ID' | 'INVALID_SCHEMA_VERSION' | 'INVALID_MIGRATION' | 'UNSUPPORTED_VALUE' | 'SERIALIZATION_FAILED' | 'SIZE_EXCEEDED' | 'DEPTH_EXCEEDED' | 'BACKEND_READ_FAILED' | 'BACKEND_WRITE_FAILED' | 'BACKEND_REMOVE_FAILED' | 'CORRUPT_ENVELOPE' | 'SCHEMA_ID_MISMATCH' | 'FUTURE_VERSION' | 'MISSING_MIGRATION' | 'MIGRATION_FAILED' | 'VALIDATION_FAILED' | 'DISPOSED';
|
|
6
|
+
export type GameStorageOperation = 'load' | 'save' | 'remove' | 'delete' | 'flush' | 'dispose' | 'validate' | 'migrate' | 'serialize' | 'parse';
|
|
7
|
+
export declare class GameStorageError extends Error {
|
|
8
|
+
readonly name = "GameStorageError";
|
|
9
|
+
readonly code: GameStorageErrorCode;
|
|
10
|
+
readonly operation: GameStorageOperation | undefined;
|
|
11
|
+
readonly namespace: string | undefined;
|
|
12
|
+
readonly slot: string | undefined;
|
|
13
|
+
readonly schemaId: string | undefined;
|
|
14
|
+
readonly schemaVersion: number | undefined;
|
|
15
|
+
readonly path: string | undefined;
|
|
16
|
+
readonly cause: unknown | undefined;
|
|
17
|
+
constructor(message: string, options: {
|
|
18
|
+
code: GameStorageErrorCode;
|
|
19
|
+
operation?: GameStorageOperation | undefined;
|
|
20
|
+
namespace?: string | undefined;
|
|
21
|
+
slot?: string | undefined;
|
|
22
|
+
schemaId?: string | undefined;
|
|
23
|
+
schemaVersion?: number | undefined;
|
|
24
|
+
path?: string | undefined;
|
|
25
|
+
cause?: unknown | undefined;
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
export declare function storageError(message: string, code: GameStorageErrorCode, opts?: {
|
|
29
|
+
operation?: GameStorageOperation | undefined;
|
|
30
|
+
namespace?: string | undefined;
|
|
31
|
+
slot?: string | undefined;
|
|
32
|
+
schemaId?: string | undefined;
|
|
33
|
+
schemaVersion?: number | undefined;
|
|
34
|
+
path?: string | undefined;
|
|
35
|
+
cause?: unknown | undefined;
|
|
36
|
+
}): GameStorageError;
|
|
37
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../../src/storage/errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAC5B,mBAAmB,GACnB,cAAc,GACd,mBAAmB,GACnB,wBAAwB,GACxB,mBAAmB,GACnB,mBAAmB,GACnB,sBAAsB,GACtB,eAAe,GACf,gBAAgB,GAChB,qBAAqB,GACrB,sBAAsB,GACtB,uBAAuB,GACvB,kBAAkB,GAClB,oBAAoB,GACpB,gBAAgB,GAChB,mBAAmB,GACnB,kBAAkB,GAClB,mBAAmB,GACnB,UAAU,CAAC;AAEf,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,WAAW,GAAG,OAAO,CAAC;AAEhJ,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,SAAkB,IAAI,sBAAsB;IAE5C,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC;IACpC,QAAQ,CAAC,SAAS,EAAE,oBAAoB,GAAG,SAAS,CAAC;IACrD,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3C,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,SAAkB,KAAK,EAAE,OAAO,GAAG,SAAS,CAAC;gBAG3C,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;QACP,IAAI,EAAE,oBAAoB,CAAC;QAC3B,SAAS,CAAC,EAAE,oBAAoB,GAAG,SAAS,CAAC;QAC7C,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC/B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC1B,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC9B,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QACnC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;QAC1B,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;KAC7B;CAYJ;AAED,wBAAgB,YAAY,CAC1B,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,oBAAoB,EAC1B,IAAI,GAAE;IACJ,SAAS,CAAC,EAAE,oBAAoB,GAAG,SAAS,CAAC;IAC7C,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CACxB,GACL,gBAAgB,CAWlB"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export { GameStorageError } from './errors.js';
|
|
2
|
+
export type { GameStorageErrorCode, GameStorageOperation } from './errors.js';
|
|
3
|
+
export { defineGameSave } from './schema.js';
|
|
4
|
+
export { createGameSaveStore } from './store.js';
|
|
5
|
+
export { createMemoryStorageAdapter } from './adapters/memory.js';
|
|
6
|
+
export { createGameStorageAdapter } from './adapters/asyncStorage.js';
|
|
7
|
+
export { __setAsyncStorageLoader, __getAsyncStorageLoader } from './adapters/asyncStorage.js';
|
|
8
|
+
export type { GameSaveSchema, GameStorageAdapter, StoredGameEnvelope, GameSaveLoadResult, GameSaveLoadStatus, CreateGameSaveStoreOptions, GameSaveStore, } from './types.js';
|
|
9
|
+
export { STORAGE_LIMITS } from './types.js';
|
|
10
|
+
export { STORAGE_ENVELOPE_FORMAT } from './serialization.js';
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/storage/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAU,CAAC;AAC5C,YAAY,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,aAAU,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,aAAU,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAS,CAAC;AAC9C,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAmB,CAAC;AAC/D,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAAyB,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,4BAAyB,CAAC;AAC3F,YAAY,EACV,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,0BAA0B,EAC1B,aAAa,GACd,MAAM,YAAS,CAAC;AACjB,OAAO,EAAE,cAAc,EAAE,MAAM,YAAS,CAAC;AACzC,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAiB,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { GameSaveSchema } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Define a versioned game save schema.
|
|
4
|
+
*
|
|
5
|
+
* Id/version/migrations are validated immediately. `createDefault` and
|
|
6
|
+
* `validate` are stored as-is — they run later per load/save.
|
|
7
|
+
*/
|
|
8
|
+
export declare function defineGameSave<TData>(options: {
|
|
9
|
+
id: string;
|
|
10
|
+
version: number;
|
|
11
|
+
createDefault: () => TData;
|
|
12
|
+
validate: (value: unknown) => TData;
|
|
13
|
+
migrations?: Readonly<Record<number, (value: unknown) => unknown>>;
|
|
14
|
+
}): GameSaveSchema<TData>;
|
|
15
|
+
export declare function createDefaultData<TData>(schema: GameSaveSchema<TData>): TData;
|
|
16
|
+
export declare function validateCurrentData<TData>(schema: GameSaveSchema<TData>, value: unknown, path?: string): TData;
|
|
17
|
+
export declare function migratePayload<TData>(schema: GameSaveSchema<TData>, storedVersion: number, payload: unknown): {
|
|
18
|
+
data: unknown;
|
|
19
|
+
fromVersion: number;
|
|
20
|
+
toVersion: number;
|
|
21
|
+
};
|
|
22
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../src/storage/schema.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAS,CAAC;AAI9C;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE;IAC7C,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,KAAK,CAAC;IAC3B,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,KAAK,CAAC;IACpC,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC;CACpE,GAAG,cAAc,CAAC,KAAK,CAAC,CAuBxB;AAuBD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,CAAC,KAAK,CAAC,GAAG,KAAK,CAkB7E;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,SAAS,GAAG,KAAK,CAgB9G;AAED,wBAAgB,cAAc,CAAC,KAAK,EAClC,MAAM,EAAE,cAAc,CAAC,KAAK,CAAC,EAC7B,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,OAAO,GACf;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAyC3D"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type StoredGameEnvelope } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Bounded plain-data clone + validation for storage payloads.
|
|
4
|
+
*
|
|
5
|
+
* Mirrors the strictness of event payloads but with storage-sized limits.
|
|
6
|
+
* Rejects: functions, symbols, bigint, non-finite numbers, cycles,
|
|
7
|
+
* sparse holes, accessors, non-enumerable, unsafe prototype keys,
|
|
8
|
+
* array subclasses, class instances, React elements, thenables.
|
|
9
|
+
*/
|
|
10
|
+
export declare function cloneAndValidatePlainData(value: unknown, basePath?: string): unknown;
|
|
11
|
+
/**
|
|
12
|
+
* Exact UTF-8 byte length (GS-STORAGE-03): the single routine for every
|
|
13
|
+
* storage size check. TextEncoder is exact everywhere it exists (Node,
|
|
14
|
+
* browsers, modern Hermes); the scalar fallback below is bit-exact too,
|
|
15
|
+
* including unpaired surrogates (which encode as U+FFFD, 3 bytes).
|
|
16
|
+
*/
|
|
17
|
+
export declare function utf8ByteLength(str: string): number;
|
|
18
|
+
/** Bit-exact scalar UTF-8 length for runtimes without TextEncoder. */
|
|
19
|
+
export declare function utf8ByteLengthScalar(str: string): number;
|
|
20
|
+
export declare function serializeEnvelope(envelope: StoredGameEnvelope): string;
|
|
21
|
+
export declare function parseEnvelope(raw: string): StoredGameEnvelope;
|
|
22
|
+
export declare const STORAGE_ENVELOPE_FORMAT: "rn-gamekit.save";
|
|
23
|
+
//# sourceMappingURL=serialization.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serialization.d.ts","sourceRoot":"","sources":["../../../../src/storage/serialization.ts"],"names":[],"mappings":"AAEA,OAAO,EAAkB,KAAK,kBAAkB,EAAE,MAAM,YAAS,CAAC;AAIlE;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,SAAY,GAAG,OAAO,CA0IvF;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAKlD;AAED,sEAAsE;AACtE,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAqBxD;AAMD,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,MAAM,CAetE;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB,CAiC7D;AAED,eAAO,MAAM,uBAAuB,mBAAkB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../../src/storage/store.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,0BAA0B,EAAsB,aAAa,EAAE,MAAM,YAAS,CAAC;AAO7F,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,0BAA0B,CAAC,KAAK,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,CAmX3G"}
|