rn-gamekit 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (601) hide show
  1. package/CHANGELOG.md +68 -0
  2. package/README.md +95 -14
  3. package/lib/module/assets/defineAssets.js +28 -3
  4. package/lib/module/assets/defineAssets.js.map +1 -1
  5. package/lib/module/assets.js +11 -0
  6. package/lib/module/assets.js.map +1 -0
  7. package/lib/module/audio/createGameAudio.js +784 -0
  8. package/lib/module/audio/createGameAudio.js.map +1 -0
  9. package/lib/module/audio/errors.js +12 -0
  10. package/lib/module/audio/errors.js.map +1 -0
  11. package/lib/module/audio/index.js +5 -0
  12. package/lib/module/audio/index.js.map +1 -0
  13. package/lib/module/audio/resolver.js +37 -0
  14. package/lib/module/audio/resolver.js.map +1 -0
  15. package/lib/module/audio/types.js +4 -0
  16. package/lib/module/audio/types.js.map +1 -0
  17. package/lib/module/audio.js +9 -0
  18. package/lib/module/audio.js.map +1 -0
  19. package/lib/module/camera2d/bounds.js +59 -0
  20. package/lib/module/camera2d/bounds.js.map +1 -0
  21. package/lib/module/camera2d/extents.js +25 -0
  22. package/lib/module/camera2d/extents.js.map +1 -0
  23. package/lib/module/camera2d/follow.js +138 -0
  24. package/lib/module/camera2d/follow.js.map +1 -0
  25. package/lib/module/camera2d/index.js +20 -0
  26. package/lib/module/camera2d/index.js.map +1 -0
  27. package/lib/module/camera2d/interpolation.js +98 -0
  28. package/lib/module/camera2d/interpolation.js.map +1 -0
  29. package/lib/module/camera2d/shake.js +85 -0
  30. package/lib/module/camera2d/shake.js.map +1 -0
  31. package/lib/module/camera2d/transform.js +151 -0
  32. package/lib/module/camera2d/transform.js.map +1 -0
  33. package/lib/module/camera2d/types.js +4 -0
  34. package/lib/module/camera2d/types.js.map +1 -0
  35. package/lib/module/camera2d/validation.js +98 -0
  36. package/lib/module/camera2d/validation.js.map +1 -0
  37. package/lib/module/camera2d/visibility.js +138 -0
  38. package/lib/module/camera2d/visibility.js.map +1 -0
  39. package/lib/module/camera2d.js +9 -0
  40. package/lib/module/camera2d.js.map +1 -0
  41. package/lib/module/collision2d/colliders.js +266 -0
  42. package/lib/module/collision2d/colliders.js.map +1 -0
  43. package/lib/module/collision2d/debug.js +105 -0
  44. package/lib/module/collision2d/debug.js.map +1 -0
  45. package/lib/module/collision2d/filters.js +40 -0
  46. package/lib/module/collision2d/filters.js.map +1 -0
  47. package/lib/module/collision2d/index.js +12 -0
  48. package/lib/module/collision2d/index.js.map +1 -0
  49. package/lib/module/collision2d/intersections.js +67 -0
  50. package/lib/module/collision2d/intersections.js.map +1 -0
  51. package/lib/module/collision2d/manifolds.js +218 -0
  52. package/lib/module/collision2d/manifolds.js.map +1 -0
  53. package/lib/module/collision2d/segments.js +187 -0
  54. package/lib/module/collision2d/segments.js.map +1 -0
  55. package/lib/module/collision2d/spatialHash.js +167 -0
  56. package/lib/module/collision2d/spatialHash.js.map +1 -0
  57. package/lib/module/collision2d/sweeps.js +255 -0
  58. package/lib/module/collision2d/sweeps.js.map +1 -0
  59. package/lib/module/collision2d.js +9 -0
  60. package/lib/module/collision2d.js.map +1 -0
  61. package/lib/module/core/input/buttonPad.js +214 -0
  62. package/lib/module/core/input/buttonPad.js.map +1 -0
  63. package/lib/module/core/input/createInputBuffer.js +66 -14
  64. package/lib/module/core/input/createInputBuffer.js.map +1 -1
  65. package/lib/module/core/session/createGameSession.js +454 -50
  66. package/lib/module/core/session/createGameSession.js.map +1 -1
  67. package/lib/module/core/session/deepFreeze.js +92 -2
  68. package/lib/module/core/session/deepFreeze.js.map +1 -1
  69. package/lib/module/core/session/types.js +12 -0
  70. package/lib/module/core/session/types.js.map +1 -1
  71. package/lib/module/definition/defineGame.js +23 -0
  72. package/lib/module/definition/defineGame.js.map +1 -1
  73. package/lib/module/events/defineGameEvents.js +46 -0
  74. package/lib/module/events/defineGameEvents.js.map +1 -0
  75. package/lib/module/events/errors.js +16 -0
  76. package/lib/module/events/errors.js.map +1 -0
  77. package/lib/module/events/index.js +7 -0
  78. package/lib/module/events/index.js.map +1 -0
  79. package/lib/module/events/payload.js +219 -0
  80. package/lib/module/events/payload.js.map +1 -0
  81. package/lib/module/events/seed.js +33 -0
  82. package/lib/module/events/seed.js.map +1 -0
  83. package/lib/module/events/types.js +4 -0
  84. package/lib/module/events/types.js.map +1 -0
  85. package/lib/module/events.js +13 -0
  86. package/lib/module/events.js.map +1 -0
  87. package/lib/module/geometry/helpers.js +140 -0
  88. package/lib/module/geometry/helpers.js.map +1 -0
  89. package/lib/module/geometry/index.js +5 -0
  90. package/lib/module/geometry/index.js.map +1 -0
  91. package/lib/module/geometry/validation.js +104 -0
  92. package/lib/module/geometry/validation.js.map +1 -0
  93. package/lib/module/geometry.js +9 -0
  94. package/lib/module/geometry.js.map +1 -0
  95. package/lib/module/haptics/createGameHaptics.js +214 -0
  96. package/lib/module/haptics/createGameHaptics.js.map +1 -0
  97. package/lib/module/haptics/errors.js +12 -0
  98. package/lib/module/haptics/errors.js.map +1 -0
  99. package/lib/module/haptics/index.js +5 -0
  100. package/lib/module/haptics/index.js.map +1 -0
  101. package/lib/module/haptics/resolver.js +37 -0
  102. package/lib/module/haptics/resolver.js.map +1 -0
  103. package/lib/module/haptics/types.js +4 -0
  104. package/lib/module/haptics/types.js.map +1 -0
  105. package/lib/module/haptics.js +9 -0
  106. package/lib/module/haptics.js.map +1 -0
  107. package/lib/module/index.js +8 -1
  108. package/lib/module/index.js.map +1 -1
  109. package/lib/module/particles/createParticleSystem.js +481 -0
  110. package/lib/module/particles/createParticleSystem.js.map +1 -0
  111. package/lib/module/particles/defineParticleEffect.js +178 -0
  112. package/lib/module/particles/defineParticleEffect.js.map +1 -0
  113. package/lib/module/particles/errors.js +9 -0
  114. package/lib/module/particles/errors.js.map +1 -0
  115. package/lib/module/particles/index.js +8 -0
  116. package/lib/module/particles/index.js.map +1 -0
  117. package/lib/module/particles/sampling.js +121 -0
  118. package/lib/module/particles/sampling.js.map +1 -0
  119. package/lib/module/particles/types.js +4 -0
  120. package/lib/module/particles/types.js.map +1 -0
  121. package/lib/module/particles.js +4 -0
  122. package/lib/module/particles.js.map +1 -0
  123. package/lib/module/react/GameButtonPad.js +344 -0
  124. package/lib/module/react/GameButtonPad.js.map +1 -0
  125. package/lib/module/react/GamePointerInput.js +74 -16
  126. package/lib/module/react/GamePointerInput.js.map +1 -1
  127. package/lib/module/react/GameView.js +139 -60
  128. package/lib/module/react/GameView.js.map +1 -1
  129. package/lib/module/react/assets/createGameAssetStore.js +145 -95
  130. package/lib/module/react/assets/createGameAssetStore.js.map +1 -1
  131. package/lib/module/react/assets/useGameAssets.js +60 -35
  132. package/lib/module/react/assets/useGameAssets.js.map +1 -1
  133. package/lib/module/react/bindAppLifecycle.js +46 -17
  134. package/lib/module/react/bindAppLifecycle.js.map +1 -1
  135. package/lib/module/react/bindGameSession.js +13 -2
  136. package/lib/module/react/bindGameSession.js.map +1 -1
  137. package/lib/module/react/camera2d/GameLayer2D.js +50 -0
  138. package/lib/module/react/camera2d/GameLayer2D.js.map +1 -0
  139. package/lib/module/react/camera2d/defineGameCamera2D.js +30 -0
  140. package/lib/module/react/camera2d/defineGameCamera2D.js.map +1 -0
  141. package/lib/module/react/camera2d/usePresentedCameraBinding.js +177 -0
  142. package/lib/module/react/camera2d/usePresentedCameraBinding.js.map +1 -0
  143. package/lib/module/react/cleanupList.js +38 -0
  144. package/lib/module/react/cleanupList.js.map +1 -0
  145. package/lib/module/react/lifecycleSource.js +49 -0
  146. package/lib/module/react/lifecycleSource.js.map +1 -0
  147. package/lib/module/react/particles/ParticleView.js +308 -0
  148. package/lib/module/react/particles/ParticleView.js.map +1 -0
  149. package/lib/module/react/particles/culling.js +115 -0
  150. package/lib/module/react/particles/culling.js.map +1 -0
  151. package/lib/module/react/particles/index.js +7 -0
  152. package/lib/module/react/particles/index.js.map +1 -0
  153. package/lib/module/react/particles/spriteXForm.js +45 -0
  154. package/lib/module/react/particles/spriteXForm.js.map +1 -0
  155. package/lib/module/react/particles/useParticlePresentation.js +204 -0
  156. package/lib/module/react/particles/useParticlePresentation.js.map +1 -0
  157. package/lib/module/react/pointerBinding.js +55 -17
  158. package/lib/module/react/pointerBinding.js.map +1 -1
  159. package/lib/module/react/pointerCamera.js +28 -0
  160. package/lib/module/react/pointerCamera.js.map +1 -0
  161. package/lib/module/react/pointerCoalescer.js +16 -9
  162. package/lib/module/react/pointerCoalescer.js.map +1 -1
  163. package/lib/module/react/sprites/GameSprite.js +5 -17
  164. package/lib/module/react/sprites/GameSprite.js.map +1 -1
  165. package/lib/module/react/sprites/GameWorld2D.js +112 -9
  166. package/lib/module/react/sprites/GameWorld2D.js.map +1 -1
  167. package/lib/module/react/sprites/Sprite.js +48 -63
  168. package/lib/module/react/sprites/Sprite.js.map +1 -1
  169. package/lib/module/react/sprites/SpriteBatch.js +53 -28
  170. package/lib/module/react/sprites/SpriteBatch.js.map +1 -1
  171. package/lib/module/react/sprites/batchVisibility.js +58 -0
  172. package/lib/module/react/sprites/batchVisibility.js.map +1 -0
  173. package/lib/module/react/sprites/spriteSelection.js +103 -0
  174. package/lib/module/react/sprites/spriteSelection.js.map +1 -0
  175. package/lib/module/react/sprites/spriteTransform.js +46 -25
  176. package/lib/module/react/sprites/spriteTransform.js.map +1 -1
  177. package/lib/module/react/tilemap/TileMapLayer2D.js +217 -0
  178. package/lib/module/react/tilemap/TileMapLayer2D.js.map +1 -0
  179. package/lib/module/react/tilemap/tilePresentation.js +374 -0
  180. package/lib/module/react/tilemap/tilePresentation.js.map +1 -0
  181. package/lib/module/react/useGameSession.js +70 -0
  182. package/lib/module/react/useGameSession.js.map +1 -0
  183. package/lib/module/react/useGameSessionStatus.js +46 -0
  184. package/lib/module/react/useGameSessionStatus.js.map +1 -0
  185. package/lib/module/react/viewportBinding.js +5 -1
  186. package/lib/module/react/viewportBinding.js.map +1 -1
  187. package/lib/module/react.js +12 -1
  188. package/lib/module/react.js.map +1 -1
  189. package/lib/module/scene/defineScene.js +17 -0
  190. package/lib/module/scene/defineScene.js.map +1 -1
  191. package/lib/module/sprites/sampleSpriteClip.js +66 -6
  192. package/lib/module/sprites/sampleSpriteClip.js.map +1 -1
  193. package/lib/module/sprites/spriteAnimationState.js +10 -20
  194. package/lib/module/sprites/spriteAnimationState.js.map +1 -1
  195. package/lib/module/sprites.js +11 -0
  196. package/lib/module/sprites.js.map +1 -0
  197. package/lib/module/storage/adapters/asyncStorage.js +57 -0
  198. package/lib/module/storage/adapters/asyncStorage.js.map +1 -0
  199. package/lib/module/storage/adapters/memory.js +50 -0
  200. package/lib/module/storage/adapters/memory.js.map +1 -0
  201. package/lib/module/storage/errors.js +34 -0
  202. package/lib/module/storage/errors.js.map +1 -0
  203. package/lib/module/storage/index.js +11 -0
  204. package/lib/module/storage/index.js.map +1 -0
  205. package/lib/module/storage/schema.js +151 -0
  206. package/lib/module/storage/schema.js.map +1 -0
  207. package/lib/module/storage/serialization.js +249 -0
  208. package/lib/module/storage/serialization.js.map +1 -0
  209. package/lib/module/storage/store.js +387 -0
  210. package/lib/module/storage/store.js.map +1 -0
  211. package/lib/module/storage/types.js +16 -0
  212. package/lib/module/storage/types.js.map +1 -0
  213. package/lib/module/storage/validation.js +111 -0
  214. package/lib/module/storage/validation.js.map +1 -0
  215. package/lib/module/storage.js +4 -0
  216. package/lib/module/storage.js.map +1 -0
  217. package/lib/module/testing.js +4 -0
  218. package/lib/module/testing.js.map +1 -1
  219. package/lib/module/tilemap/chunkStats.js +27 -0
  220. package/lib/module/tilemap/chunkStats.js.map +1 -0
  221. package/lib/module/tilemap/definitions.js +308 -0
  222. package/lib/module/tilemap/definitions.js.map +1 -0
  223. package/lib/module/tilemap/errors.js +13 -0
  224. package/lib/module/tilemap/errors.js.map +1 -0
  225. package/lib/module/tilemap/index.js +10 -0
  226. package/lib/module/tilemap/index.js.map +1 -0
  227. package/lib/module/tilemap/movement.js +379 -0
  228. package/lib/module/tilemap/movement.js.map +1 -0
  229. package/lib/module/tilemap/queries.js +114 -0
  230. package/lib/module/tilemap/queries.js.map +1 -0
  231. package/lib/module/tilemap/tiledAdapter.js +141 -0
  232. package/lib/module/tilemap/tiledAdapter.js.map +1 -0
  233. package/lib/module/tilemap/types.js +4 -0
  234. package/lib/module/tilemap/types.js.map +1 -0
  235. package/lib/module/tilemap.js +4 -0
  236. package/lib/module/tilemap.js.map +1 -0
  237. package/lib/typescript/src/assets/defineAssets.d.ts +1 -1
  238. package/lib/typescript/src/assets/defineAssets.d.ts.map +1 -1
  239. package/lib/typescript/src/assets.d.ts +11 -0
  240. package/lib/typescript/src/assets.d.ts.map +1 -0
  241. package/lib/typescript/src/audio/createGameAudio.d.ts +5 -0
  242. package/lib/typescript/src/audio/createGameAudio.d.ts.map +1 -0
  243. package/lib/typescript/src/audio/errors.d.ts +6 -0
  244. package/lib/typescript/src/audio/errors.d.ts.map +1 -0
  245. package/lib/typescript/src/audio/index.d.ts +4 -0
  246. package/lib/typescript/src/audio/index.d.ts.map +1 -0
  247. package/lib/typescript/src/audio/resolver.d.ts +44 -0
  248. package/lib/typescript/src/audio/resolver.d.ts.map +1 -0
  249. package/lib/typescript/src/audio/types.d.ts +42 -0
  250. package/lib/typescript/src/audio/types.d.ts.map +1 -0
  251. package/lib/typescript/src/audio.d.ts +8 -0
  252. package/lib/typescript/src/audio.d.ts.map +1 -0
  253. package/lib/typescript/src/camera2d/bounds.d.ts +25 -0
  254. package/lib/typescript/src/camera2d/bounds.d.ts.map +1 -0
  255. package/lib/typescript/src/camera2d/extents.d.ts +17 -0
  256. package/lib/typescript/src/camera2d/extents.d.ts.map +1 -0
  257. package/lib/typescript/src/camera2d/follow.d.ts +24 -0
  258. package/lib/typescript/src/camera2d/follow.d.ts.map +1 -0
  259. package/lib/typescript/src/camera2d/index.d.ts +19 -0
  260. package/lib/typescript/src/camera2d/index.d.ts.map +1 -0
  261. package/lib/typescript/src/camera2d/interpolation.d.ts +17 -0
  262. package/lib/typescript/src/camera2d/interpolation.d.ts.map +1 -0
  263. package/lib/typescript/src/camera2d/shake.d.ts +20 -0
  264. package/lib/typescript/src/camera2d/shake.d.ts.map +1 -0
  265. package/lib/typescript/src/camera2d/transform.d.ts +44 -0
  266. package/lib/typescript/src/camera2d/transform.d.ts.map +1 -0
  267. package/lib/typescript/src/camera2d/types.d.ts +74 -0
  268. package/lib/typescript/src/camera2d/types.d.ts.map +1 -0
  269. package/lib/typescript/src/camera2d/validation.d.ts +30 -0
  270. package/lib/typescript/src/camera2d/validation.d.ts.map +1 -0
  271. package/lib/typescript/src/camera2d/visibility.d.ts +47 -0
  272. package/lib/typescript/src/camera2d/visibility.d.ts.map +1 -0
  273. package/lib/typescript/src/camera2d.d.ts +7 -0
  274. package/lib/typescript/src/camera2d.d.ts.map +1 -0
  275. package/lib/typescript/src/collision2d/colliders.d.ts +120 -0
  276. package/lib/typescript/src/collision2d/colliders.d.ts.map +1 -0
  277. package/lib/typescript/src/collision2d/debug.d.ts +67 -0
  278. package/lib/typescript/src/collision2d/debug.d.ts.map +1 -0
  279. package/lib/typescript/src/collision2d/filters.d.ts +28 -0
  280. package/lib/typescript/src/collision2d/filters.d.ts.map +1 -0
  281. package/lib/typescript/src/collision2d/index.d.ts +17 -0
  282. package/lib/typescript/src/collision2d/index.d.ts.map +1 -0
  283. package/lib/typescript/src/collision2d/intersections.d.ts +24 -0
  284. package/lib/typescript/src/collision2d/intersections.d.ts.map +1 -0
  285. package/lib/typescript/src/collision2d/manifolds.d.ts +39 -0
  286. package/lib/typescript/src/collision2d/manifolds.d.ts.map +1 -0
  287. package/lib/typescript/src/collision2d/segments.d.ts +24 -0
  288. package/lib/typescript/src/collision2d/segments.d.ts.map +1 -0
  289. package/lib/typescript/src/collision2d/spatialHash.d.ts +50 -0
  290. package/lib/typescript/src/collision2d/spatialHash.d.ts.map +1 -0
  291. package/lib/typescript/src/collision2d/sweeps.d.ts +60 -0
  292. package/lib/typescript/src/collision2d/sweeps.d.ts.map +1 -0
  293. package/lib/typescript/src/collision2d.d.ts +7 -0
  294. package/lib/typescript/src/collision2d.d.ts.map +1 -0
  295. package/lib/typescript/src/core/input/buttonPad.d.ts +59 -0
  296. package/lib/typescript/src/core/input/buttonPad.d.ts.map +1 -0
  297. package/lib/typescript/src/core/input/createInputBuffer.d.ts +1 -1
  298. package/lib/typescript/src/core/input/createInputBuffer.d.ts.map +1 -1
  299. package/lib/typescript/src/core/input/types.d.ts +7 -0
  300. package/lib/typescript/src/core/input/types.d.ts.map +1 -1
  301. package/lib/typescript/src/core/session/createGameSession.d.ts +4 -2
  302. package/lib/typescript/src/core/session/createGameSession.d.ts.map +1 -1
  303. package/lib/typescript/src/core/session/deepFreeze.d.ts +21 -1
  304. package/lib/typescript/src/core/session/deepFreeze.d.ts.map +1 -1
  305. package/lib/typescript/src/core/session/diagnostics.d.ts +2 -0
  306. package/lib/typescript/src/core/session/diagnostics.d.ts.map +1 -1
  307. package/lib/typescript/src/core/session/types.d.ts +69 -4
  308. package/lib/typescript/src/core/session/types.d.ts.map +1 -1
  309. package/lib/typescript/src/definition/defineGame.d.ts +12 -1
  310. package/lib/typescript/src/definition/defineGame.d.ts.map +1 -1
  311. package/lib/typescript/src/definition/types.d.ts +10 -1
  312. package/lib/typescript/src/definition/types.d.ts.map +1 -1
  313. package/lib/typescript/src/events/defineGameEvents.d.ts +26 -0
  314. package/lib/typescript/src/events/defineGameEvents.d.ts.map +1 -0
  315. package/lib/typescript/src/events/errors.d.ts +12 -0
  316. package/lib/typescript/src/events/errors.d.ts.map +1 -0
  317. package/lib/typescript/src/events/index.d.ts +6 -0
  318. package/lib/typescript/src/events/index.d.ts.map +1 -0
  319. package/lib/typescript/src/events/payload.d.ts +21 -0
  320. package/lib/typescript/src/events/payload.d.ts.map +1 -0
  321. package/lib/typescript/src/events/seed.d.ts +3 -0
  322. package/lib/typescript/src/events/seed.d.ts.map +1 -0
  323. package/lib/typescript/src/events/types.d.ts +42 -0
  324. package/lib/typescript/src/events/types.d.ts.map +1 -0
  325. package/lib/typescript/src/events.d.ts +12 -0
  326. package/lib/typescript/src/events.d.ts.map +1 -0
  327. package/lib/typescript/src/geometry/helpers.d.ts +35 -0
  328. package/lib/typescript/src/geometry/helpers.d.ts.map +1 -0
  329. package/lib/typescript/src/geometry/index.d.ts +4 -0
  330. package/lib/typescript/src/geometry/index.d.ts.map +1 -0
  331. package/lib/typescript/src/geometry/types.d.ts +49 -0
  332. package/lib/typescript/src/geometry/types.d.ts.map +1 -1
  333. package/lib/typescript/src/geometry/validation.d.ts +44 -0
  334. package/lib/typescript/src/geometry/validation.d.ts.map +1 -0
  335. package/lib/typescript/src/geometry.d.ts +7 -0
  336. package/lib/typescript/src/geometry.d.ts.map +1 -0
  337. package/lib/typescript/src/haptics/createGameHaptics.d.ts +3 -0
  338. package/lib/typescript/src/haptics/createGameHaptics.d.ts.map +1 -0
  339. package/lib/typescript/src/haptics/errors.d.ts +6 -0
  340. package/lib/typescript/src/haptics/errors.d.ts.map +1 -0
  341. package/lib/typescript/src/haptics/index.d.ts +4 -0
  342. package/lib/typescript/src/haptics/index.d.ts.map +1 -0
  343. package/lib/typescript/src/haptics/resolver.d.ts +22 -0
  344. package/lib/typescript/src/haptics/resolver.d.ts.map +1 -0
  345. package/lib/typescript/src/haptics/types.d.ts +37 -0
  346. package/lib/typescript/src/haptics/types.d.ts.map +1 -0
  347. package/lib/typescript/src/haptics.d.ts +8 -0
  348. package/lib/typescript/src/haptics.d.ts.map +1 -0
  349. package/lib/typescript/src/index.d.ts +10 -2
  350. package/lib/typescript/src/index.d.ts.map +1 -1
  351. package/lib/typescript/src/particles/createParticleSystem.d.ts +5 -0
  352. package/lib/typescript/src/particles/createParticleSystem.d.ts.map +1 -0
  353. package/lib/typescript/src/particles/defineParticleEffect.d.ts +3 -0
  354. package/lib/typescript/src/particles/defineParticleEffect.d.ts.map +1 -0
  355. package/lib/typescript/src/particles/errors.d.ts +5 -0
  356. package/lib/typescript/src/particles/errors.d.ts.map +1 -0
  357. package/lib/typescript/src/particles/index.d.ts +6 -0
  358. package/lib/typescript/src/particles/index.d.ts.map +1 -0
  359. package/lib/typescript/src/particles/sampling.d.ts +54 -0
  360. package/lib/typescript/src/particles/sampling.d.ts.map +1 -0
  361. package/lib/typescript/src/particles/types.d.ts +292 -0
  362. package/lib/typescript/src/particles/types.d.ts.map +1 -0
  363. package/lib/typescript/src/particles.d.ts +2 -0
  364. package/lib/typescript/src/particles.d.ts.map +1 -0
  365. package/lib/typescript/src/react/GameButtonPad.d.ts +84 -0
  366. package/lib/typescript/src/react/GameButtonPad.d.ts.map +1 -0
  367. package/lib/typescript/src/react/GamePointerInput.d.ts.map +1 -1
  368. package/lib/typescript/src/react/GameView.d.ts +27 -1
  369. package/lib/typescript/src/react/GameView.d.ts.map +1 -1
  370. package/lib/typescript/src/react/assets/createGameAssetStore.d.ts.map +1 -1
  371. package/lib/typescript/src/react/assets/useGameAssets.d.ts.map +1 -1
  372. package/lib/typescript/src/react/bindAppLifecycle.d.ts +7 -1
  373. package/lib/typescript/src/react/bindAppLifecycle.d.ts.map +1 -1
  374. package/lib/typescript/src/react/bindGameSession.d.ts.map +1 -1
  375. package/lib/typescript/src/react/camera2d/GameLayer2D.d.ts +24 -0
  376. package/lib/typescript/src/react/camera2d/GameLayer2D.d.ts.map +1 -0
  377. package/lib/typescript/src/react/camera2d/defineGameCamera2D.d.ts +44 -0
  378. package/lib/typescript/src/react/camera2d/defineGameCamera2D.d.ts.map +1 -0
  379. package/lib/typescript/src/react/camera2d/usePresentedCameraBinding.d.ts +22 -0
  380. package/lib/typescript/src/react/camera2d/usePresentedCameraBinding.d.ts.map +1 -0
  381. package/lib/typescript/src/react/cleanupList.d.ts +21 -0
  382. package/lib/typescript/src/react/cleanupList.d.ts.map +1 -0
  383. package/lib/typescript/src/react/instrumentation.d.ts +33 -3
  384. package/lib/typescript/src/react/instrumentation.d.ts.map +1 -1
  385. package/lib/typescript/src/react/lifecycleSource.d.ts +21 -0
  386. package/lib/typescript/src/react/lifecycleSource.d.ts.map +1 -0
  387. package/lib/typescript/src/react/particles/ParticleView.d.ts +65 -0
  388. package/lib/typescript/src/react/particles/ParticleView.d.ts.map +1 -0
  389. package/lib/typescript/src/react/particles/culling.d.ts +70 -0
  390. package/lib/typescript/src/react/particles/culling.d.ts.map +1 -0
  391. package/lib/typescript/src/react/particles/index.d.ts +7 -0
  392. package/lib/typescript/src/react/particles/index.d.ts.map +1 -0
  393. package/lib/typescript/src/react/particles/spriteXForm.d.ts +28 -0
  394. package/lib/typescript/src/react/particles/spriteXForm.d.ts.map +1 -0
  395. package/lib/typescript/src/react/particles/useParticlePresentation.d.ts +48 -0
  396. package/lib/typescript/src/react/particles/useParticlePresentation.d.ts.map +1 -0
  397. package/lib/typescript/src/react/pointerBinding.d.ts +38 -8
  398. package/lib/typescript/src/react/pointerBinding.d.ts.map +1 -1
  399. package/lib/typescript/src/react/pointerCamera.d.ts +20 -0
  400. package/lib/typescript/src/react/pointerCamera.d.ts.map +1 -0
  401. package/lib/typescript/src/react/pointerCoalescer.d.ts +17 -1
  402. package/lib/typescript/src/react/pointerCoalescer.d.ts.map +1 -1
  403. package/lib/typescript/src/react/sprites/GameSprite.d.ts +3 -10
  404. package/lib/typescript/src/react/sprites/GameSprite.d.ts.map +1 -1
  405. package/lib/typescript/src/react/sprites/GameWorld2D.d.ts +51 -6
  406. package/lib/typescript/src/react/sprites/GameWorld2D.d.ts.map +1 -1
  407. package/lib/typescript/src/react/sprites/Sprite.d.ts.map +1 -1
  408. package/lib/typescript/src/react/sprites/SpriteBatch.d.ts +22 -1
  409. package/lib/typescript/src/react/sprites/SpriteBatch.d.ts.map +1 -1
  410. package/lib/typescript/src/react/sprites/batchVisibility.d.ts +28 -0
  411. package/lib/typescript/src/react/sprites/batchVisibility.d.ts.map +1 -0
  412. package/lib/typescript/src/react/sprites/spriteSelection.d.ts +58 -0
  413. package/lib/typescript/src/react/sprites/spriteSelection.d.ts.map +1 -0
  414. package/lib/typescript/src/react/sprites/spriteTransform.d.ts +27 -12
  415. package/lib/typescript/src/react/sprites/spriteTransform.d.ts.map +1 -1
  416. package/lib/typescript/src/react/tilemap/TileMapLayer2D.d.ts +69 -0
  417. package/lib/typescript/src/react/tilemap/TileMapLayer2D.d.ts.map +1 -0
  418. package/lib/typescript/src/react/tilemap/tilePresentation.d.ts +217 -0
  419. package/lib/typescript/src/react/tilemap/tilePresentation.d.ts.map +1 -0
  420. package/lib/typescript/src/react/useGameSession.d.ts +48 -0
  421. package/lib/typescript/src/react/useGameSession.d.ts.map +1 -0
  422. package/lib/typescript/src/react/useGameSessionStatus.d.ts +23 -0
  423. package/lib/typescript/src/react/useGameSessionStatus.d.ts.map +1 -0
  424. package/lib/typescript/src/react/viewportBinding.d.ts +5 -1
  425. package/lib/typescript/src/react/viewportBinding.d.ts.map +1 -1
  426. package/lib/typescript/src/react.d.ts +18 -1
  427. package/lib/typescript/src/react.d.ts.map +1 -1
  428. package/lib/typescript/src/scene/defineScene.d.ts +22 -2
  429. package/lib/typescript/src/scene/defineScene.d.ts.map +1 -1
  430. package/lib/typescript/src/scene/types.d.ts +24 -4
  431. package/lib/typescript/src/scene/types.d.ts.map +1 -1
  432. package/lib/typescript/src/sprites/sampleSpriteClip.d.ts +26 -2
  433. package/lib/typescript/src/sprites/sampleSpriteClip.d.ts.map +1 -1
  434. package/lib/typescript/src/sprites/spriteAnimationState.d.ts +6 -7
  435. package/lib/typescript/src/sprites/spriteAnimationState.d.ts.map +1 -1
  436. package/lib/typescript/src/sprites.d.ts +10 -0
  437. package/lib/typescript/src/sprites.d.ts.map +1 -0
  438. package/lib/typescript/src/storage/adapters/asyncStorage.d.ts +18 -0
  439. package/lib/typescript/src/storage/adapters/asyncStorage.d.ts.map +1 -0
  440. package/lib/typescript/src/storage/adapters/memory.d.ts +16 -0
  441. package/lib/typescript/src/storage/adapters/memory.d.ts.map +1 -0
  442. package/lib/typescript/src/storage/errors.d.ts +37 -0
  443. package/lib/typescript/src/storage/errors.d.ts.map +1 -0
  444. package/lib/typescript/src/storage/index.d.ts +11 -0
  445. package/lib/typescript/src/storage/index.d.ts.map +1 -0
  446. package/lib/typescript/src/storage/schema.d.ts +22 -0
  447. package/lib/typescript/src/storage/schema.d.ts.map +1 -0
  448. package/lib/typescript/src/storage/serialization.d.ts +23 -0
  449. package/lib/typescript/src/storage/serialization.d.ts.map +1 -0
  450. package/lib/typescript/src/storage/store.d.ts +3 -0
  451. package/lib/typescript/src/storage/store.d.ts.map +1 -0
  452. package/lib/typescript/src/storage/types.d.ts +69 -0
  453. package/lib/typescript/src/storage/types.d.ts.map +1 -0
  454. package/lib/typescript/src/storage/validation.d.ts +24 -0
  455. package/lib/typescript/src/storage/validation.d.ts.map +1 -0
  456. package/lib/typescript/src/storage.d.ts +2 -0
  457. package/lib/typescript/src/storage.d.ts.map +1 -0
  458. package/lib/typescript/src/testing.d.ts +1 -0
  459. package/lib/typescript/src/testing.d.ts.map +1 -1
  460. package/lib/typescript/src/tilemap/chunkStats.d.ts +14 -0
  461. package/lib/typescript/src/tilemap/chunkStats.d.ts.map +1 -0
  462. package/lib/typescript/src/tilemap/definitions.d.ts +38 -0
  463. package/lib/typescript/src/tilemap/definitions.d.ts.map +1 -0
  464. package/lib/typescript/src/tilemap/errors.d.ts +7 -0
  465. package/lib/typescript/src/tilemap/errors.d.ts.map +1 -0
  466. package/lib/typescript/src/tilemap/index.d.ts +8 -0
  467. package/lib/typescript/src/tilemap/index.d.ts.map +1 -0
  468. package/lib/typescript/src/tilemap/movement.d.ts +52 -0
  469. package/lib/typescript/src/tilemap/movement.d.ts.map +1 -0
  470. package/lib/typescript/src/tilemap/queries.d.ts +21 -0
  471. package/lib/typescript/src/tilemap/queries.d.ts.map +1 -0
  472. package/lib/typescript/src/tilemap/tiledAdapter.d.ts +32 -0
  473. package/lib/typescript/src/tilemap/tiledAdapter.d.ts.map +1 -0
  474. package/lib/typescript/src/tilemap/types.d.ts +127 -0
  475. package/lib/typescript/src/tilemap/types.d.ts.map +1 -0
  476. package/lib/typescript/src/tilemap.d.ts +2 -0
  477. package/lib/typescript/src/tilemap.d.ts.map +1 -0
  478. package/package.json +94 -4
  479. package/src/assets/defineAssets.ts +31 -5
  480. package/src/assets.ts +27 -0
  481. package/src/audio/createGameAudio.ts +749 -0
  482. package/src/audio/errors.ts +12 -0
  483. package/src/audio/index.ts +9 -0
  484. package/src/audio/resolver.ts +74 -0
  485. package/src/audio/types.ts +47 -0
  486. package/src/audio.ts +13 -0
  487. package/src/camera2d/bounds.ts +69 -0
  488. package/src/camera2d/extents.ts +25 -0
  489. package/src/camera2d/follow.ts +165 -0
  490. package/src/camera2d/index.ts +29 -0
  491. package/src/camera2d/interpolation.ts +113 -0
  492. package/src/camera2d/shake.ts +90 -0
  493. package/src/camera2d/transform.ts +148 -0
  494. package/src/camera2d/types.ts +73 -0
  495. package/src/camera2d/validation.ts +126 -0
  496. package/src/camera2d/visibility.ts +181 -0
  497. package/src/camera2d.ts +6 -0
  498. package/src/collision2d/colliders.ts +292 -0
  499. package/src/collision2d/debug.ts +133 -0
  500. package/src/collision2d/filters.ts +48 -0
  501. package/src/collision2d/index.ts +74 -0
  502. package/src/collision2d/intersections.ts +82 -0
  503. package/src/collision2d/manifolds.ts +191 -0
  504. package/src/collision2d/segments.ts +176 -0
  505. package/src/collision2d/spatialHash.ts +211 -0
  506. package/src/collision2d/sweeps.ts +269 -0
  507. package/src/collision2d.ts +6 -0
  508. package/src/core/input/buttonPad.ts +235 -0
  509. package/src/core/input/createInputBuffer.ts +95 -14
  510. package/src/core/input/types.ts +7 -0
  511. package/src/core/session/createGameSession.ts +480 -53
  512. package/src/core/session/deepFreeze.ts +104 -3
  513. package/src/core/session/diagnostics.ts +2 -0
  514. package/src/core/session/types.ts +77 -4
  515. package/src/definition/defineGame.ts +61 -3
  516. package/src/definition/types.ts +10 -0
  517. package/src/events/defineGameEvents.ts +46 -0
  518. package/src/events/errors.ts +14 -0
  519. package/src/events/index.ts +14 -0
  520. package/src/events/payload.ts +234 -0
  521. package/src/events/seed.ts +33 -0
  522. package/src/events/types.ts +53 -0
  523. package/src/events.ts +20 -0
  524. package/src/geometry/helpers.ts +136 -0
  525. package/src/geometry/index.ts +14 -0
  526. package/src/geometry/types.ts +54 -0
  527. package/src/geometry/validation.ts +131 -0
  528. package/src/geometry.ts +6 -0
  529. package/src/haptics/createGameHaptics.ts +214 -0
  530. package/src/haptics/errors.ts +12 -0
  531. package/src/haptics/index.ts +3 -0
  532. package/src/haptics/resolver.ts +58 -0
  533. package/src/haptics/types.ts +48 -0
  534. package/src/haptics.ts +7 -0
  535. package/src/index.ts +37 -1
  536. package/src/particles/createParticleSystem.ts +505 -0
  537. package/src/particles/defineParticleEffect.ts +164 -0
  538. package/src/particles/errors.ts +6 -0
  539. package/src/particles/index.ts +5 -0
  540. package/src/particles/sampling.ts +141 -0
  541. package/src/particles/types.ts +327 -0
  542. package/src/particles.ts +1 -0
  543. package/src/react/GameButtonPad.tsx +436 -0
  544. package/src/react/GamePointerInput.tsx +73 -8
  545. package/src/react/GameView.tsx +160 -61
  546. package/src/react/assets/createGameAssetStore.ts +140 -107
  547. package/src/react/assets/useGameAssets.ts +63 -31
  548. package/src/react/bindAppLifecycle.ts +55 -19
  549. package/src/react/bindGameSession.ts +12 -2
  550. package/src/react/camera2d/GameLayer2D.tsx +43 -0
  551. package/src/react/camera2d/defineGameCamera2D.ts +59 -0
  552. package/src/react/camera2d/usePresentedCameraBinding.ts +185 -0
  553. package/src/react/cleanupList.ts +48 -0
  554. package/src/react/instrumentation.ts +31 -3
  555. package/src/react/lifecycleSource.ts +58 -0
  556. package/src/react/particles/ParticleView.tsx +358 -0
  557. package/src/react/particles/culling.ts +145 -0
  558. package/src/react/particles/index.ts +6 -0
  559. package/src/react/particles/spriteXForm.ts +72 -0
  560. package/src/react/particles/useParticlePresentation.ts +261 -0
  561. package/src/react/pointerBinding.ts +74 -16
  562. package/src/react/pointerCamera.ts +33 -0
  563. package/src/react/pointerCoalescer.ts +36 -10
  564. package/src/react/sprites/GameSprite.tsx +4 -33
  565. package/src/react/sprites/GameWorld2D.tsx +113 -7
  566. package/src/react/sprites/Sprite.tsx +51 -72
  567. package/src/react/sprites/SpriteBatch.tsx +74 -22
  568. package/src/react/sprites/batchVisibility.ts +76 -0
  569. package/src/react/sprites/spriteSelection.ts +133 -0
  570. package/src/react/sprites/spriteTransform.ts +46 -26
  571. package/src/react/tilemap/TileMapLayer2D.tsx +274 -0
  572. package/src/react/tilemap/tilePresentation.ts +491 -0
  573. package/src/react/useGameSession.ts +90 -0
  574. package/src/react/useGameSessionStatus.ts +53 -0
  575. package/src/react/viewportBinding.ts +5 -1
  576. package/src/react.ts +18 -1
  577. package/src/scene/defineScene.ts +47 -5
  578. package/src/scene/types.ts +37 -3
  579. package/src/sprites/sampleSpriteClip.ts +82 -14
  580. package/src/sprites/spriteAnimationState.ts +29 -25
  581. package/src/sprites.ts +22 -0
  582. package/src/storage/adapters/asyncStorage.ts +77 -0
  583. package/src/storage/adapters/memory.ts +58 -0
  584. package/src/storage/errors.ts +88 -0
  585. package/src/storage/index.ts +18 -0
  586. package/src/storage/schema.ts +147 -0
  587. package/src/storage/serialization.ts +248 -0
  588. package/src/storage/store.ts +380 -0
  589. package/src/storage/types.ts +76 -0
  590. package/src/storage/validation.ts +102 -0
  591. package/src/storage.ts +1 -0
  592. package/src/testing.ts +4 -0
  593. package/src/tilemap/chunkStats.ts +24 -0
  594. package/src/tilemap/definitions.ts +327 -0
  595. package/src/tilemap/errors.ts +11 -0
  596. package/src/tilemap/index.ts +10 -0
  597. package/src/tilemap/movement.ts +368 -0
  598. package/src/tilemap/queries.ts +136 -0
  599. package/src/tilemap/tiledAdapter.ts +165 -0
  600. package/src/tilemap/types.ts +119 -0
  601. package/src/tilemap.ts +1 -0
@@ -0,0 +1,219 @@
1
+ "use strict";
2
+
3
+ import { GameEventError } from "./errors.js";
4
+ const MAX_PAYLOAD_NODES = 512;
5
+ const MAX_PAYLOAD_DEPTH = 10;
6
+ const MAX_PAYLOAD_STRING_LENGTH = 4096;
7
+ const MAX_PAYLOAD_ARRAY_LENGTH = 256;
8
+
9
+ /**
10
+ * Validate, clone, and deeply freeze a payload.
11
+ *
12
+ * Accepted: finite numbers, strings, booleans, `null`, `undefined` (as an
13
+ * optional property value), arrays, and plain records (`Object.prototype`
14
+ * or `Object.create(null)`). Rejected: functions, symbols, bigints,
15
+ * promises/thenables, sparse arrays, class instances, unsafe prototypes,
16
+ * native handles, React elements (`$$typeof`), cycles, accessors,
17
+ * non-enumerable properties, and non-finite numbers. Errors are reported
18
+ * with `Event "<name>" payload invalid at <path>`.
19
+ *
20
+ * The clone is frozen deeply so callers cannot mutate the staged envelope.
21
+ */
22
+ export function cloneAndValidatePayload(payload, eventName, basePath = 'payload') {
23
+ let nodeCount = 0;
24
+ // Ancestry set — only the current recursion stack, not the entire visited graph.
25
+ // Shared acyclic references are allowed; true cycles are rejected.
26
+ const ancestry = new WeakSet();
27
+ const fail = (path, reason) => {
28
+ throw new GameEventError(`Event "${eventName}" payload invalid at ${path}: ${reason}`);
29
+ };
30
+ const isPlainRecord = value => {
31
+ const proto = Object.getPrototypeOf(value);
32
+ return proto === Object.prototype || proto === null;
33
+ };
34
+ const isReactElement = value => {
35
+ // Use descriptor to avoid invoking a getter for $$typeof.
36
+ const desc = Object.getOwnPropertyDescriptor(value, '$$typeof');
37
+ if (desc !== undefined) {
38
+ return true;
39
+ }
40
+ // Also check prototype chain via `in` without invoking getter? `in` can invoke proxy traps but not getters.
41
+ // For safety, also check `Object.prototype.hasOwnProperty` on the object and its prototype chain via `in`.
42
+ // If the object has a getter for $$typeof on its prototype, `in` will not invoke it, but `'$$typeof' in value` will still
43
+ // check presence without invoking. We use `in` as a fallback that does not execute the getter.
44
+ return '$$typeof' in value;
45
+ };
46
+ const clone = (value, path, depth) => {
47
+ if (depth > MAX_PAYLOAD_DEPTH) {
48
+ fail(path, `exceeds maximum depth of ${MAX_PAYLOAD_DEPTH}`);
49
+ }
50
+ nodeCount += 1;
51
+ if (nodeCount > MAX_PAYLOAD_NODES) {
52
+ fail(path, `exceeds maximum payload size of ${MAX_PAYLOAD_NODES} nodes`);
53
+ }
54
+ if (value === null || value === undefined) {
55
+ return value;
56
+ }
57
+ const type = typeof value;
58
+ if (type === 'string') {
59
+ const str = value;
60
+ if (str.length > MAX_PAYLOAD_STRING_LENGTH) {
61
+ fail(path, `string exceeds maximum length of ${MAX_PAYLOAD_STRING_LENGTH}`);
62
+ }
63
+ return str;
64
+ }
65
+ if (type === 'boolean') {
66
+ return value;
67
+ }
68
+ if (type === 'number') {
69
+ const num = value;
70
+ if (!Number.isFinite(num)) {
71
+ fail(path, 'number must be finite');
72
+ }
73
+ return num;
74
+ }
75
+ if (type === 'bigint') {
76
+ fail(path, 'bigint is not a supported payload type');
77
+ }
78
+ if (type === 'symbol') {
79
+ fail(path, 'symbol is not a supported payload type');
80
+ }
81
+ if (type === 'function') {
82
+ fail(path, 'function is not a supported payload type');
83
+ }
84
+ if (type !== 'object') {
85
+ fail(path, `unsupported payload type "${type}"`);
86
+ }
87
+ const obj = value;
88
+ if (ancestry.has(obj)) {
89
+ fail(path, 'cycle detected in payload');
90
+ }
91
+ ancestry.add(obj);
92
+
93
+ // Use try/finally to ensure ancestry is cleaned even when we throw.
94
+ try {
95
+ // GS-EVENT-03: thenables are rejected without invoking any user code.
96
+ // Only safe operations run here (instanceof, getPrototypeOf, own
97
+ // descriptors). A Promise fails with its useful path; every other
98
+ // non-plain object fails at the array/record branches below — the
99
+ // preliminary inherited `.then` read that could execute a getter is
100
+ // gone. Own `then` functions are rejected later as function values.
101
+ if (obj instanceof Promise) {
102
+ fail(path, 'promise/thenable is not a supported payload type');
103
+ }
104
+ if (isReactElement(obj)) {
105
+ fail(path, 'React element is not a supported payload type');
106
+ }
107
+ if (Array.isArray(obj)) {
108
+ const arr = obj;
109
+ if (Object.getPrototypeOf(arr) !== Array.prototype) {
110
+ fail(path, 'array subclass is not a supported payload type');
111
+ }
112
+ if (arr.length > MAX_PAYLOAD_ARRAY_LENGTH) {
113
+ fail(path, `array exceeds maximum length of ${MAX_PAYLOAD_ARRAY_LENGTH}`);
114
+ }
115
+
116
+ // Use descriptors to avoid invoking getters and to detect sparse holes.
117
+ const descs = Object.getOwnPropertyDescriptors(arr);
118
+ // Sparse check: every index < length must have an own descriptor.
119
+ for (let index = 0; index < arr.length; index += 1) {
120
+ const key = String(index);
121
+ if (!(key in descs)) {
122
+ fail(`${path}[${index}]`, 'sparse array holes are not supported');
123
+ }
124
+ const d = descs[key];
125
+ if (d.get !== undefined || d.set !== undefined) {
126
+ fail(`${path}[${index}]`, 'accessor property is not supported');
127
+ }
128
+ if (d.enumerable === false) {
129
+ fail(`${path}[${index}]`, 'non-enumerable property is not supported');
130
+ }
131
+ }
132
+
133
+ // Clone indices via descriptors to avoid getter invocation.
134
+ const cloned = new Array(arr.length);
135
+ for (let index = 0; index < arr.length; index += 1) {
136
+ const key = String(index);
137
+ const d = descs[key];
138
+ cloned[index] = clone(d.value, `${path}[${index}]`, depth + 1);
139
+ }
140
+
141
+ // Check for non-index own properties (including symbols).
142
+ for (const key of Reflect.ownKeys(descs)) {
143
+ if (typeof key === 'symbol') {
144
+ fail(`${path}[Symbol(${String(key).slice(7, -1)})]`, 'symbol-keyed property is not supported');
145
+ }
146
+ const k = key;
147
+ if (k === 'length') {
148
+ continue;
149
+ }
150
+ // Indices already handled.
151
+ if (/^(0|[1-9]\d*)$/.test(k)) {
152
+ const idx = Number(k);
153
+ if (idx < arr.length && String(idx) === k) {
154
+ continue;
155
+ }
156
+ }
157
+ if (k === '__proto__' || k === 'constructor' || k === 'prototype') {
158
+ fail(`${path}.${k}`, 'unsafe prototype key is not supported');
159
+ }
160
+ const d = descs[k];
161
+ if (d.get !== undefined || d.set !== undefined) {
162
+ fail(`${path}.${k}`, 'accessor property is not supported');
163
+ }
164
+ if (d.enumerable === false) {
165
+ fail(`${path}.${k}`, 'non-enumerable property is not supported');
166
+ }
167
+ fail(`${path}.${k}`, 'array extra property is not a supported payload member');
168
+ }
169
+ Object.freeze(cloned);
170
+ return cloned;
171
+ }
172
+
173
+ // Plain record
174
+ if (!isPlainRecord(obj)) {
175
+ fail(path, 'only plain records and arrays are supported (class instance, Map, Set, Date, etc. are rejected)');
176
+ }
177
+ const proto = Object.getPrototypeOf(obj);
178
+ const descs = Object.getOwnPropertyDescriptors(obj);
179
+ // Check for symbol keys and unsafe keys, and validate descriptors.
180
+ for (const key of Reflect.ownKeys(descs)) {
181
+ if (typeof key === 'symbol') {
182
+ fail(`${path}[Symbol(${String(key).slice(7, -1)})]`, 'symbol-keyed property is not supported');
183
+ }
184
+ const k = key;
185
+ if (k === '__proto__' || k === 'constructor' || k === 'prototype') {
186
+ fail(`${path}.${k}`, 'unsafe prototype key is not supported');
187
+ }
188
+ const d = descs[k];
189
+ if (d.get !== undefined || d.set !== undefined) {
190
+ fail(`${path}.${k}`, 'accessor property is not supported');
191
+ }
192
+ if (d.enumerable === false) {
193
+ fail(`${path}.${k}`, 'non-enumerable property is not supported');
194
+ }
195
+ }
196
+ const cloned = proto === null ? Object.create(null) : {};
197
+ for (const key of Object.keys(descs)) {
198
+ // `Object.keys` already filters to enumerable string keys, but we have already validated
199
+ // via `getOwnPropertyDescriptors` that all own keys are enumerable data properties.
200
+ // Use descriptor value without invoking getter (we already checked it's a data descriptor).
201
+ const d = descs[key];
202
+ cloned[key] = clone(d.value, `${path}.${key}`, depth + 1);
203
+ }
204
+ Object.freeze(cloned);
205
+ return cloned;
206
+ } finally {
207
+ ancestry.delete(obj);
208
+ }
209
+ };
210
+ const result = clone(payload, basePath, 0);
211
+ return result;
212
+ }
213
+ export const PAYLOAD_LIMITS = {
214
+ MAX_PAYLOAD_NODES,
215
+ MAX_PAYLOAD_DEPTH,
216
+ MAX_PAYLOAD_STRING_LENGTH,
217
+ MAX_PAYLOAD_ARRAY_LENGTH
218
+ };
219
+ //# sourceMappingURL=payload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["GameEventError","MAX_PAYLOAD_NODES","MAX_PAYLOAD_DEPTH","MAX_PAYLOAD_STRING_LENGTH","MAX_PAYLOAD_ARRAY_LENGTH","cloneAndValidatePayload","payload","eventName","basePath","nodeCount","ancestry","WeakSet","fail","path","reason","isPlainRecord","value","proto","Object","getPrototypeOf","prototype","isReactElement","desc","getOwnPropertyDescriptor","undefined","clone","depth","type","str","length","num","Number","isFinite","obj","has","add","Promise","Array","isArray","arr","descs","getOwnPropertyDescriptors","index","key","String","d","get","set","enumerable","cloned","Reflect","ownKeys","slice","k","test","idx","freeze","create","keys","delete","result","PAYLOAD_LIMITS"],"sourceRoot":"../../../src","sources":["events/payload.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Derive a deterministic seed from a committed event envelope.
5
+ *
6
+ * The seed is stable within a session and across replays because it
7
+ * depends only on the envelope's identity `(tick, ordinal)` and name,
8
+ * never on wall time, React renders, or display frames.
9
+ *
10
+ * `seedGameEvent` is suitable for seeding seeded visual effects,
11
+ * particles, or audio variations that must replay identically.
12
+ */
13
+ function hashString(value) {
14
+ let hash = 2166136261;
15
+ for (let index = 0; index < value.length; index += 1) {
16
+ hash ^= value.charCodeAt(index);
17
+ hash = Math.imul(hash, 16777619);
18
+ }
19
+ return hash >>> 0;
20
+ }
21
+ export function seedGameEvent(event) {
22
+ const nameHash = hashString(event.name);
23
+ // Deterministic mixing of tick, ordinal, and name hash — the documented
24
+ // stable identity (tick, ordinal, name). sceneTick is intentionally
25
+ // excluded; it is presentation-local and would make the seed disagree
26
+ // with its contract.
27
+ let seed = 17;
28
+ seed = Math.imul(seed, 31) + event.tick;
29
+ seed = Math.imul(seed, 31) + event.ordinal;
30
+ seed = Math.imul(seed, 31) + nameHash;
31
+ return seed >>> 0;
32
+ }
33
+ //# sourceMappingURL=seed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["hashString","value","hash","index","length","charCodeAt","Math","imul","seedGameEvent","event","nameHash","name","seed","tick","ordinal"],"sourceRoot":"../../../src","sources":["events/seed.ts"],"mappings":";;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,UAAUA,CAACC,KAAa,EAAU;EACzC,IAAIC,IAAI,GAAG,UAAU;EACrB,KAAK,IAAIC,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGF,KAAK,CAACG,MAAM,EAAED,KAAK,IAAI,CAAC,EAAE;IACpDD,IAAI,IAAID,KAAK,CAACI,UAAU,CAACF,KAAK,CAAC;IAC/BD,IAAI,GAAGI,IAAI,CAACC,IAAI,CAACL,IAAI,EAAE,QAAQ,CAAC;EAClC;EACA,OAAOA,IAAI,KAAK,CAAC;AACnB;AAEA,OAAO,SAASM,aAAaA,CAACC,KAA2B,EAAU;EACjE,MAAMC,QAAQ,GAAGV,UAAU,CAACS,KAAK,CAACE,IAAI,CAAC;EACvC;EACA;EACA;EACA;EACA,IAAIC,IAAI,GAAG,EAAE;EACbA,IAAI,GAAGN,IAAI,CAACC,IAAI,CAACK,IAAI,EAAE,EAAE,CAAC,GAAGH,KAAK,CAACI,IAAI;EACvCD,IAAI,GAAGN,IAAI,CAACC,IAAI,CAACK,IAAI,EAAE,EAAE,CAAC,GAAGH,KAAK,CAACK,OAAO;EAC1CF,IAAI,GAAGN,IAAI,CAACC,IAAI,CAACK,IAAI,EAAE,EAAE,CAAC,GAAGF,QAAQ;EACrC,OAAOE,IAAI,KAAK,CAAC;AACnB","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export {};
4
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../../src","sources":["events/types.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Subpath entry for `rn-gamekit/events`.
5
+ *
6
+ * Typed event definitions, envelopes, payload limits, seeding, and errors.
7
+ * Does not expose internal validation helpers or effect consumers.
8
+ */
9
+ export { GameEventError } from "./events/errors.js";
10
+ export { defineGameEvents, gameEvent } from "./events/defineGameEvents.js";
11
+ export { seedGameEvent } from "./events/seed.js";
12
+ export { PAYLOAD_LIMITS } from "./events/payload.js";
13
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["GameEventError","defineGameEvents","gameEvent","seedGameEvent","PAYLOAD_LIMITS"],"sourceRoot":"../../src","sources":["events.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,cAAc,QAAQ,oBAAiB;AAChD,SAASC,gBAAgB,EAAEC,SAAS,QAAQ,8BAA2B;AACvE,SAASC,aAAa,QAAQ,kBAAe;AAC7C,SAASC,cAAc,QAAQ,qBAAkB","ignoreList":[]}
@@ -0,0 +1,140 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Pure geometry helpers (T11.1): AABB centers, translation, expansion, and
5
+ * union, plus vector arithmetic. All functions validate their inputs,
6
+ * preserve them untouched, and return fresh immutable values.
7
+ */
8
+
9
+ import { assertValidAabb2D, assertValidPoint2D, assertValidVector2D, GeometryError } from "./validation.js";
10
+
11
+ /** Center of an AABB. */
12
+ export function aabbCenter2D(aabb) {
13
+ assertValidAabb2D(aabb);
14
+ return Object.freeze({
15
+ x: aabb.x + aabb.width / 2,
16
+ y: aabb.y + aabb.height / 2
17
+ });
18
+ }
19
+
20
+ /** Translate an AABB by a delta vector, returning a new AABB. */
21
+ export function translateAabb2D(aabb, delta) {
22
+ assertValidAabb2D(aabb);
23
+ assertValidVector2D(delta, 'delta');
24
+ return Object.freeze({
25
+ x: aabb.x + delta.x,
26
+ y: aabb.y + delta.y,
27
+ width: aabb.width,
28
+ height: aabb.height
29
+ });
30
+ }
31
+
32
+ /**
33
+ * Expand an AABB symmetrically (or per-axis) by the given amounts.
34
+ *
35
+ * A negative inset shrinks the AABB. The expanded result keeps the same
36
+ * width/height semantics; `inset` is the margin added on each side.
37
+ */
38
+ export function expandAabb2D(aabb, inset) {
39
+ assertValidAabb2D(aabb);
40
+ const x = typeof inset === 'number' ? inset : inset.x;
41
+ const y = typeof inset === 'number' ? inset : inset.y;
42
+ assertFiniteInset(x, 'inset.x');
43
+ assertFiniteInset(y, 'inset.y');
44
+ const expanded = Object.freeze({
45
+ x: aabb.x - x,
46
+ y: aabb.y - y,
47
+ width: aabb.width + x * 2,
48
+ height: aabb.height + y * 2
49
+ });
50
+ // A negative inset may legitimately shrink the shape, but never into a
51
+ // malformed (negative-size) result.
52
+ assertValidAabb2D(expanded, 'expanded');
53
+ return expanded;
54
+ }
55
+ function assertFiniteInset(value, field) {
56
+ if (!Number.isFinite(value)) {
57
+ throw new GeometryError('GEOMETRY_INVALID_NUMBER', field, `expected a finite inset, got ${String(value)}`);
58
+ }
59
+ }
60
+
61
+ /** The smallest AABB containing both inputs (bounding union). */
62
+ export function unionAabb2D(first, second) {
63
+ assertValidAabb2D(first, 'first');
64
+ assertValidAabb2D(second, 'second');
65
+ const minX = Math.min(first.x, second.x);
66
+ const minY = Math.min(first.y, second.y);
67
+ const maxX = Math.max(first.x + first.width, second.x + second.width);
68
+ const maxY = Math.max(first.y + first.height, second.y + second.height);
69
+ return Object.freeze({
70
+ x: minX,
71
+ y: minY,
72
+ width: maxX - minX,
73
+ height: maxY - minY
74
+ });
75
+ }
76
+
77
+ /** Component-wise vector addition. */
78
+ export function addVector2D(first, second) {
79
+ assertValidVector2D(first, 'first');
80
+ assertValidVector2D(second, 'second');
81
+ return Object.freeze({
82
+ x: first.x + second.x,
83
+ y: first.y + second.y
84
+ });
85
+ }
86
+
87
+ /** Component-wise vector subtraction (`first - second`). */
88
+ export function subtractVector2D(first, second) {
89
+ assertValidVector2D(first, 'first');
90
+ assertValidVector2D(second, 'second');
91
+ return Object.freeze({
92
+ x: first.x - second.x,
93
+ y: first.y - second.y
94
+ });
95
+ }
96
+
97
+ /** Scale a vector by a finite scalar. */
98
+ export function scaleVector2D(vector, scalar) {
99
+ assertValidVector2D(vector);
100
+ if (!Number.isFinite(scalar)) {
101
+ throw new GeometryError('GEOMETRY_INVALID_NUMBER', 'scalar', `expected a finite number, got ${String(scalar)}`);
102
+ }
103
+ return Object.freeze({
104
+ x: vector.x * scalar,
105
+ y: vector.y * scalar
106
+ });
107
+ }
108
+
109
+ /** Euclidean length of a vector. */
110
+ export function lengthVector2D(vector) {
111
+ assertValidVector2D(vector);
112
+ return Math.hypot(vector.x, vector.y);
113
+ }
114
+
115
+ /**
116
+ * Normalize a vector to unit length. The zero vector is returned unchanged
117
+ * (never NaN); callers that need a fallback direction choose it explicitly.
118
+ */
119
+ export function normalizeVector2D(vector) {
120
+ assertValidVector2D(vector);
121
+ const length = Math.hypot(vector.x, vector.y);
122
+ if (length === 0) {
123
+ return Object.freeze({
124
+ x: 0,
125
+ y: 0
126
+ });
127
+ }
128
+ return Object.freeze({
129
+ x: vector.x / length,
130
+ y: vector.y / length
131
+ });
132
+ }
133
+
134
+ /** Euclidean distance between two points. */
135
+ export function distancePoint2D(first, second) {
136
+ assertValidPoint2D(first, 'first');
137
+ assertValidPoint2D(second, 'second');
138
+ return Math.hypot(second.x - first.x, second.y - first.y);
139
+ }
140
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["assertValidAabb2D","assertValidPoint2D","assertValidVector2D","GeometryError","aabbCenter2D","aabb","Object","freeze","x","width","y","height","translateAabb2D","delta","expandAabb2D","inset","assertFiniteInset","expanded","value","field","Number","isFinite","String","unionAabb2D","first","second","minX","Math","min","minY","maxX","max","maxY","addVector2D","subtractVector2D","scaleVector2D","vector","scalar","lengthVector2D","hypot","normalizeVector2D","length","distancePoint2D"],"sourceRoot":"../../../src","sources":["geometry/helpers.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ export { GeometryError } from "./validation.js";
4
+ export { aabbCenter2D, addVector2D, distancePoint2D, expandAabb2D, lengthVector2D, normalizeVector2D, scaleVector2D, subtractVector2D, translateAabb2D, unionAabb2D } from "./helpers.js";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["GeometryError","aabbCenter2D","addVector2D","distancePoint2D","expandAabb2D","lengthVector2D","normalizeVector2D","scaleVector2D","subtractVector2D","translateAabb2D","unionAabb2D"],"sourceRoot":"../../../src","sources":["geometry/index.ts"],"mappings":";;AACA,SAASA,aAAa,QAAgC,iBAAc;AACpE,SACEC,YAAY,EACZC,WAAW,EACXC,eAAe,EACfC,YAAY,EACZC,cAAc,EACdC,iBAAiB,EACjBC,aAAa,EACbC,gBAAgB,EAChBC,eAAe,EACfC,WAAW,QACN,cAAW","ignoreList":[]}
@@ -0,0 +1,104 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Geometry validation and structured errors (T11.1).
5
+ *
6
+ * Mirrors the package's structured-error style (`GameAssetError`): a stable
7
+ * machine-readable code plus the offending field. Validation happens at
8
+ * public operation boundaries; helpers never coerce or reorder malformed
9
+ * values into valid shapes.
10
+ *
11
+ * Numeric policy (GS-GEOMETRY-01): validators require the declared
12
+ * structural shape (a null/array/scalar argument fails with
13
+ * GEOMETRY_INVALID_SHAPE, never a TypeError) and finite components within
14
+ * ordinary game-world magnitudes. Derived-value overflow from extreme
15
+ * finite inputs is out of contract: helpers do not re-validate results,
16
+ * and zero-length normalization of an overflowing length stays a zero
17
+ * vector by the existing defined behavior.
18
+ */
19
+
20
+ /** Stable error codes for geometry and collision input. */
21
+
22
+ /** A structured geometry or collision input failure. */
23
+ export class GeometryError extends Error {
24
+ /** Stable machine-readable code. */
25
+
26
+ /** Field path within the value that caused the failure. */
27
+
28
+ constructor(code, field, message) {
29
+ super(`${code} at ${field}: ${message}`);
30
+ this.name = 'GeometryError';
31
+ this.code = code;
32
+ this.field = field;
33
+ }
34
+ }
35
+
36
+ /** Assert a finite number (rejects NaN and ±Infinity). */
37
+ export function assertFiniteNumber(value, field) {
38
+ if (!Number.isFinite(value)) {
39
+ throw new GeometryError('GEOMETRY_INVALID_NUMBER', field, `expected a finite number, got ${String(value)}`);
40
+ }
41
+ }
42
+
43
+ /** Assert a finite, nonnegative size (width, height, radius). */
44
+ export function assertNonnegativeSize(value, field) {
45
+ assertFiniteNumber(value, field);
46
+ if (value < 0) {
47
+ throw new GeometryError('GEOMETRY_INVALID_SIZE', field, `expected a nonnegative size, got ${value}`);
48
+ }
49
+ }
50
+
51
+ /** Assert an unsigned 32-bit integer (collision filters and bit masks). */
52
+ export function assertUnsigned32Bits(value, field) {
53
+ if (!Number.isInteger(value) || value < 0 || value > 0xffffffff) {
54
+ throw new GeometryError('GEOMETRY_INVALID_BITS', field, `expected an unsigned 32-bit integer, got ${String(value)}`);
55
+ }
56
+ }
57
+
58
+ /** Assert a value is a plain record before reading fields (GS-GEOMETRY-01). */
59
+ function assertRecordShape(value, name) {
60
+ if (value === null || typeof value !== 'object' || Array.isArray(value)) {
61
+ throw new GeometryError('GEOMETRY_INVALID_SHAPE', name, `expected an object with numeric fields, got ${Array.isArray(value) ? 'an array' : String(value)}`);
62
+ }
63
+ }
64
+
65
+ /** Validate a point or vector component pair. */
66
+ export function assertValidPoint2D(point, name = 'point') {
67
+ assertRecordShape(point, name);
68
+ assertFiniteNumber(point.x, `${name}.x`);
69
+ assertFiniteNumber(point.y, `${name}.y`);
70
+ }
71
+
72
+ /** Validate a vector (same shape as a point, distinct naming). */
73
+ export function assertValidVector2D(vector, name = 'vector') {
74
+ assertRecordShape(vector, name);
75
+ assertFiniteNumber(vector.x, `${name}.x`);
76
+ assertFiniteNumber(vector.y, `${name}.y`);
77
+ }
78
+
79
+ /** Validate an AABB: finite corner, finite nonnegative size. */
80
+ export function assertValidAabb2D(aabb, name = 'aabb') {
81
+ assertRecordShape(aabb, name);
82
+ assertFiniteNumber(aabb.x, `${name}.x`);
83
+ assertFiniteNumber(aabb.y, `${name}.y`);
84
+ assertNonnegativeSize(aabb.width, `${name}.width`);
85
+ assertNonnegativeSize(aabb.height, `${name}.height`);
86
+ }
87
+
88
+ /** Validate a circle: finite center, finite nonnegative radius. */
89
+ export function assertValidCircle2D(circle, name = 'circle') {
90
+ assertRecordShape(circle, name);
91
+ assertFiniteNumber(circle.x, `${name}.x`);
92
+ assertFiniteNumber(circle.y, `${name}.y`);
93
+ assertNonnegativeSize(circle.radius, `${name}.radius`);
94
+ }
95
+ /** Validate a segment: finite endpoints that are not both degenerate checks. */
96
+ export function assertValidSegment2D(segment, name = 'segment') {
97
+ assertRecordShape(segment, name);
98
+ assertValidPoint2D(segment.start, `${name}.start`);
99
+ assertValidPoint2D(segment.end, `${name}.end`);
100
+ if (segment.start.x === segment.end.x && segment.start.y === segment.end.y) {
101
+ throw new GeometryError('GEOMETRY_INVALID_SEGMENT', name, 'expected distinct endpoints, got a zero-length segment');
102
+ }
103
+ }
104
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["GeometryError","Error","constructor","code","field","message","name","assertFiniteNumber","value","Number","isFinite","String","assertNonnegativeSize","assertUnsigned32Bits","isInteger","assertRecordShape","Array","isArray","assertValidPoint2D","point","x","y","assertValidVector2D","vector","assertValidAabb2D","aabb","width","height","assertValidCircle2D","circle","radius","assertValidSegment2D","segment","start","end"],"sourceRoot":"../../../src","sources":["geometry/validation.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Subpath entry for `rn-gamekit/geometry`.
5
+ *
6
+ * Headless geometry primitives — no React, React Native, Skia, or native peers.
7
+ */
8
+ export * from "./geometry/index.js";
9
+ //# sourceMappingURL=geometry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../src","sources":["geometry.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA,cAAc,qBAAkB","ignoreList":[]}