@caperjs/core 0.1.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 (600) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +62 -0
  3. package/cli/add.mjs +197 -0
  4. package/cli/audio/cc.mjs +128 -0
  5. package/cli/audio/index.mjs +42 -0
  6. package/cli/audio/utils.mjs +56 -0
  7. package/cli/create-caper.mjs +8 -0
  8. package/cli/create.mjs +351 -0
  9. package/cli/install-peerdeps.mjs +57 -0
  10. package/cli/update.mjs +9 -0
  11. package/cli/utils.mjs +81 -0
  12. package/cli/vite.mjs +55 -0
  13. package/cli/voiceover/generateVoiceoverCSV.mjs +158 -0
  14. package/cli/voiceover/index.mjs +1 -0
  15. package/cli.mjs +157 -0
  16. package/client.d.ts +7 -0
  17. package/config/assetpack.mjs +212 -0
  18. package/config/tsconfig.base.json +28 -0
  19. package/config/vite.mjs +2464 -0
  20. package/extras/css/accessibility.css +9 -0
  21. package/extras/css/fullscreen.css +28 -0
  22. package/extras/css/loader.css +67 -0
  23. package/extras/llms.txt +1602 -0
  24. package/lib/CaptionsPlugin-Dc8fIrjy.js +277 -0
  25. package/lib/CaptionsPlugin-Dc8fIrjy.js.map +1 -0
  26. package/lib/DataAdapter-BY2114sp.js +84 -0
  27. package/lib/DataAdapter-BY2114sp.js.map +1 -0
  28. package/lib/DebugRenderer-BJMLILqI.js +1385 -0
  29. package/lib/DebugRenderer-BJMLILqI.js.map +1 -0
  30. package/lib/DevToolsPlugin-wQ5rOkn0.js +31 -0
  31. package/lib/DevToolsPlugin-wQ5rOkn0.js.map +1 -0
  32. package/lib/GSAPPlugin-DHhSZKv8.js +350 -0
  33. package/lib/GSAPPlugin-DHhSZKv8.js.map +1 -0
  34. package/lib/LayoutPlugin-B-DF9SYM.js +1271 -0
  35. package/lib/LayoutPlugin-B-DF9SYM.js.map +1 -0
  36. package/lib/SpinePlugin-Dz_3dljz.js +6077 -0
  37. package/lib/SpinePlugin-Dz_3dljz.js.map +1 -0
  38. package/lib/StatsPlugin-Cg82JMBD.js +70 -0
  39. package/lib/StatsPlugin-Cg82JMBD.js.map +1 -0
  40. package/lib/VoiceOverPlugin-BR3ImT8C.js +114 -0
  41. package/lib/VoiceOverPlugin-BR3ImT8C.js.map +1 -0
  42. package/lib/caper.mjs +1233 -0
  43. package/lib/caper.mjs.map +1 -0
  44. package/lib/core/Application.d.ts +268 -0
  45. package/lib/core/Application.d.ts.map +1 -0
  46. package/lib/core/config.d.ts +39 -0
  47. package/lib/core/config.d.ts.map +1 -0
  48. package/lib/core/create.d.ts +41 -0
  49. package/lib/core/create.d.ts.map +1 -0
  50. package/lib/core/globals.d.ts +51 -0
  51. package/lib/core/globals.d.ts.map +1 -0
  52. package/lib/core/index.d.ts +7 -0
  53. package/lib/core/index.d.ts.map +1 -0
  54. package/lib/core/interfaces/IApplication.d.ts +566 -0
  55. package/lib/core/interfaces/IApplication.d.ts.map +1 -0
  56. package/lib/core/interfaces/IApplicationOptions.d.ts +65 -0
  57. package/lib/core/interfaces/IApplicationOptions.d.ts.map +1 -0
  58. package/lib/core/interfaces/ICoreFunctions.d.ts +49 -0
  59. package/lib/core/interfaces/ICoreFunctions.d.ts.map +1 -0
  60. package/lib/core/interfaces/ICoreSignals.d.ts +57 -0
  61. package/lib/core/interfaces/ICoreSignals.d.ts.map +1 -0
  62. package/lib/core/interfaces/IStorageCapability.d.ts +20 -0
  63. package/lib/core/interfaces/IStorageCapability.d.ts.map +1 -0
  64. package/lib/core/interfaces/IStorageCapability.test.d.ts +2 -0
  65. package/lib/core/interfaces/IStorageCapability.test.d.ts.map +1 -0
  66. package/lib/core/interfaces/index.d.ts +7 -0
  67. package/lib/core/interfaces/index.d.ts.map +1 -0
  68. package/lib/core/registries.d.ts +8 -0
  69. package/lib/core/registries.d.ts.map +1 -0
  70. package/lib/core/types.d.ts +12 -0
  71. package/lib/core/types.d.ts.map +1 -0
  72. package/lib/display/AnimatedSprite.d.ts +40 -0
  73. package/lib/display/AnimatedSprite.d.ts.map +1 -0
  74. package/lib/display/Camera.d.ts +102 -0
  75. package/lib/display/Camera.d.ts.map +1 -0
  76. package/lib/display/Container.d.ts +115 -0
  77. package/lib/display/Container.d.ts.map +1 -0
  78. package/lib/display/Entity.d.ts +46 -0
  79. package/lib/display/Entity.d.ts.map +1 -0
  80. package/lib/display/ParticleContainer.d.ts +58 -0
  81. package/lib/display/ParticleContainer.d.ts.map +1 -0
  82. package/lib/display/Scene.d.ts +250 -0
  83. package/lib/display/Scene.d.ts.map +1 -0
  84. package/lib/display/SceneTransition.d.ts +41 -0
  85. package/lib/display/SceneTransition.d.ts.map +1 -0
  86. package/lib/display/SpineAnimation.d.ts +76 -0
  87. package/lib/display/SpineAnimation.d.ts.map +1 -0
  88. package/lib/display/Svg.d.ts +5 -0
  89. package/lib/display/Svg.d.ts.map +1 -0
  90. package/lib/display/index.d.ts +10 -0
  91. package/lib/display/index.d.ts.map +1 -0
  92. package/lib/env.d.ts +6 -0
  93. package/lib/hello.d.ts +2 -0
  94. package/lib/hello.d.ts.map +1 -0
  95. package/lib/index.d.ts +15 -0
  96. package/lib/index.d.ts.map +1 -0
  97. package/lib/mixins/animated.d.ts +53 -0
  98. package/lib/mixins/animated.d.ts.map +1 -0
  99. package/lib/mixins/factory/Factory.d.ts +8 -0
  100. package/lib/mixins/factory/Factory.d.ts.map +1 -0
  101. package/lib/mixins/factory/const.d.ts +67 -0
  102. package/lib/mixins/factory/const.d.ts.map +1 -0
  103. package/lib/mixins/factory/index.d.ts +8 -0
  104. package/lib/mixins/factory/index.d.ts.map +1 -0
  105. package/lib/mixins/factory/methods.d.ts +3 -0
  106. package/lib/mixins/factory/methods.d.ts.map +1 -0
  107. package/lib/mixins/factory/props.d.ts +160 -0
  108. package/lib/mixins/factory/props.d.ts.map +1 -0
  109. package/lib/mixins/factory/registry.d.ts +27 -0
  110. package/lib/mixins/factory/registry.d.ts.map +1 -0
  111. package/lib/mixins/factory/registry.test.d.ts +2 -0
  112. package/lib/mixins/factory/registry.test.d.ts.map +1 -0
  113. package/lib/mixins/factory/schema.d.ts +71 -0
  114. package/lib/mixins/factory/schema.d.ts.map +1 -0
  115. package/lib/mixins/factory/ui-registry.d.ts +20 -0
  116. package/lib/mixins/factory/ui-registry.d.ts.map +1 -0
  117. package/lib/mixins/factory/utils.d.ts +11 -0
  118. package/lib/mixins/factory/utils.d.ts.map +1 -0
  119. package/lib/mixins/focus.d.ts +15 -0
  120. package/lib/mixins/focus.d.ts.map +1 -0
  121. package/lib/mixins/index.d.ts +6 -0
  122. package/lib/mixins/index.d.ts.map +1 -0
  123. package/lib/mixins/interaction.d.ts +20 -0
  124. package/lib/mixins/interaction.d.ts.map +1 -0
  125. package/lib/mixins/signals.d.ts +15 -0
  126. package/lib/mixins/signals.d.ts.map +1 -0
  127. package/lib/plugins/AssetsPlugin.d.ts +79 -0
  128. package/lib/plugins/AssetsPlugin.d.ts.map +1 -0
  129. package/lib/plugins/DataAdapter.d.ts +95 -0
  130. package/lib/plugins/DataAdapter.d.ts.map +1 -0
  131. package/lib/plugins/DevToolsPlugin.d.ts +97 -0
  132. package/lib/plugins/DevToolsPlugin.d.ts.map +1 -0
  133. package/lib/plugins/FullScreenPlugin.d.ts +240 -0
  134. package/lib/plugins/FullScreenPlugin.d.ts.map +1 -0
  135. package/lib/plugins/GSAPPlugin.d.ts +634 -0
  136. package/lib/plugins/GSAPPlugin.d.ts.map +1 -0
  137. package/lib/plugins/KeyboardPlugin.d.ts +53 -0
  138. package/lib/plugins/KeyboardPlugin.d.ts.map +1 -0
  139. package/lib/plugins/LayoutPlugin.d.ts +100 -0
  140. package/lib/plugins/LayoutPlugin.d.ts.map +1 -0
  141. package/lib/plugins/LookupPlugin.d.ts +223 -0
  142. package/lib/plugins/LookupPlugin.d.ts.map +1 -0
  143. package/lib/plugins/Plugin.d.ts +132 -0
  144. package/lib/plugins/Plugin.d.ts.map +1 -0
  145. package/lib/plugins/Plugin.test.d.ts +2 -0
  146. package/lib/plugins/Plugin.test.d.ts.map +1 -0
  147. package/lib/plugins/PopupManagerPlugin.d.ts +108 -0
  148. package/lib/plugins/PopupManagerPlugin.d.ts.map +1 -0
  149. package/lib/plugins/ResizerPlugin.d.ts +62 -0
  150. package/lib/plugins/ResizerPlugin.d.ts.map +1 -0
  151. package/lib/plugins/SceneManagerPlugin.d.ts +122 -0
  152. package/lib/plugins/SceneManagerPlugin.d.ts.map +1 -0
  153. package/lib/plugins/StatsPlugin.d.ts +8 -0
  154. package/lib/plugins/StatsPlugin.d.ts.map +1 -0
  155. package/lib/plugins/TimerPlugin.d.ts +401 -0
  156. package/lib/plugins/TimerPlugin.d.ts.map +1 -0
  157. package/lib/plugins/WebEventsPlugin.d.ts +60 -0
  158. package/lib/plugins/WebEventsPlugin.d.ts.map +1 -0
  159. package/lib/plugins/actions/ActionsPlugin.d.ts +39 -0
  160. package/lib/plugins/actions/ActionsPlugin.d.ts.map +1 -0
  161. package/lib/plugins/actions/constants.d.ts +52 -0
  162. package/lib/plugins/actions/constants.d.ts.map +1 -0
  163. package/lib/plugins/actions/index.d.ts +5 -0
  164. package/lib/plugins/actions/index.d.ts.map +1 -0
  165. package/lib/plugins/actions/methods.d.ts +11 -0
  166. package/lib/plugins/actions/methods.d.ts.map +1 -0
  167. package/lib/plugins/actions/types.d.ts +25 -0
  168. package/lib/plugins/actions/types.d.ts.map +1 -0
  169. package/lib/plugins/audio/AudioChannel.d.ts +46 -0
  170. package/lib/plugins/audio/AudioChannel.d.ts.map +1 -0
  171. package/lib/plugins/audio/AudioChannel.test.d.ts +2 -0
  172. package/lib/plugins/audio/AudioChannel.test.d.ts.map +1 -0
  173. package/lib/plugins/audio/AudioInstance.d.ts +79 -0
  174. package/lib/plugins/audio/AudioInstance.d.ts.map +1 -0
  175. package/lib/plugins/audio/AudioManagerPlugin.d.ts +323 -0
  176. package/lib/plugins/audio/AudioManagerPlugin.d.ts.map +1 -0
  177. package/lib/plugins/audio/VoiceOverPlugin.d.ts +69 -0
  178. package/lib/plugins/audio/VoiceOverPlugin.d.ts.map +1 -0
  179. package/lib/plugins/audio/index.d.ts +4 -0
  180. package/lib/plugins/audio/index.d.ts.map +1 -0
  181. package/lib/plugins/breakpoints/BreakpointPlugin.d.ts +109 -0
  182. package/lib/plugins/breakpoints/BreakpointPlugin.d.ts.map +1 -0
  183. package/lib/plugins/breakpoints/BreakpointPlugin.test.d.ts +2 -0
  184. package/lib/plugins/breakpoints/BreakpointPlugin.test.d.ts.map +1 -0
  185. package/lib/plugins/breakpoints/evaluate.d.ts +53 -0
  186. package/lib/plugins/breakpoints/evaluate.d.ts.map +1 -0
  187. package/lib/plugins/breakpoints/evaluate.test.d.ts +2 -0
  188. package/lib/plugins/breakpoints/evaluate.test.d.ts.map +1 -0
  189. package/lib/plugins/breakpoints/index.d.ts +4 -0
  190. package/lib/plugins/breakpoints/index.d.ts.map +1 -0
  191. package/lib/plugins/breakpoints/methods.d.ts +23 -0
  192. package/lib/plugins/breakpoints/methods.d.ts.map +1 -0
  193. package/lib/plugins/breakpoints/types.d.ts +70 -0
  194. package/lib/plugins/breakpoints/types.d.ts.map +1 -0
  195. package/lib/plugins/captions/CaptionsPlugin.d.ts +150 -0
  196. package/lib/plugins/captions/CaptionsPlugin.d.ts.map +1 -0
  197. package/lib/plugins/captions/CaptionsRenderer.d.ts +37 -0
  198. package/lib/plugins/captions/CaptionsRenderer.d.ts.map +1 -0
  199. package/lib/plugins/captions/index.d.ts +3 -0
  200. package/lib/plugins/captions/index.d.ts.map +1 -0
  201. package/lib/plugins/defaults.d.ts +4 -0
  202. package/lib/plugins/defaults.d.ts.map +1 -0
  203. package/lib/plugins/focus/FocusManagerPlugin.d.ts +148 -0
  204. package/lib/plugins/focus/FocusManagerPlugin.d.ts.map +1 -0
  205. package/lib/plugins/focus/FocusOutliner.d.ts +32 -0
  206. package/lib/plugins/focus/FocusOutliner.d.ts.map +1 -0
  207. package/lib/plugins/focus/index.d.ts +3 -0
  208. package/lib/plugins/focus/index.d.ts.map +1 -0
  209. package/lib/plugins/i18nPlugin.d.ts +128 -0
  210. package/lib/plugins/i18nPlugin.d.ts.map +1 -0
  211. package/lib/plugins/index.d.ts +18 -0
  212. package/lib/plugins/index.d.ts.map +1 -0
  213. package/lib/plugins/input/AbstractControls.d.ts +8 -0
  214. package/lib/plugins/input/AbstractControls.d.ts.map +1 -0
  215. package/lib/plugins/input/Controls.d.ts +16 -0
  216. package/lib/plugins/input/Controls.d.ts.map +1 -0
  217. package/lib/plugins/input/InputPlugin.d.ts +52 -0
  218. package/lib/plugins/input/InputPlugin.d.ts.map +1 -0
  219. package/lib/plugins/input/constants.d.ts +8 -0
  220. package/lib/plugins/input/constants.d.ts.map +1 -0
  221. package/lib/plugins/input/index.d.ts +10 -0
  222. package/lib/plugins/input/index.d.ts.map +1 -0
  223. package/lib/plugins/input/interfaces.d.ts +30 -0
  224. package/lib/plugins/input/interfaces.d.ts.map +1 -0
  225. package/lib/plugins/input/keyboard/KeyboardContols.d.ts +28 -0
  226. package/lib/plugins/input/keyboard/KeyboardContols.d.ts.map +1 -0
  227. package/lib/plugins/input/keyboard/index.d.ts +3 -0
  228. package/lib/plugins/input/keyboard/index.d.ts.map +1 -0
  229. package/lib/plugins/input/keyboard/interfaces.d.ts +18 -0
  230. package/lib/plugins/input/keyboard/interfaces.d.ts.map +1 -0
  231. package/lib/plugins/input/methods.d.ts +4 -0
  232. package/lib/plugins/input/methods.d.ts.map +1 -0
  233. package/lib/plugins/input/touch/TouchControls.d.ts +35 -0
  234. package/lib/plugins/input/touch/TouchControls.d.ts.map +1 -0
  235. package/lib/plugins/input/touch/constants.d.ts +14 -0
  236. package/lib/plugins/input/touch/constants.d.ts.map +1 -0
  237. package/lib/plugins/input/touch/index.d.ts +4 -0
  238. package/lib/plugins/input/touch/index.d.ts.map +1 -0
  239. package/lib/plugins/input/touch/interfaces.d.ts +15 -0
  240. package/lib/plugins/input/touch/interfaces.d.ts.map +1 -0
  241. package/lib/plugins/input/types.d.ts +32 -0
  242. package/lib/plugins/input/types.d.ts.map +1 -0
  243. package/lib/plugins/input/utils.d.ts +23 -0
  244. package/lib/plugins/input/utils.d.ts.map +1 -0
  245. package/lib/plugins/spine/SpinePlugin.d.ts +6 -0
  246. package/lib/plugins/spine/SpinePlugin.d.ts.map +1 -0
  247. package/lib/plugins/spine/pixi-spine/BatchableSpineSlot.d.ts +31 -0
  248. package/lib/plugins/spine/pixi-spine/BatchableSpineSlot.d.ts.map +1 -0
  249. package/lib/plugins/spine/pixi-spine/Spine.d.ts +211 -0
  250. package/lib/plugins/spine/pixi-spine/Spine.d.ts.map +1 -0
  251. package/lib/plugins/spine/pixi-spine/SpineDebugRenderer.d.ts +81 -0
  252. package/lib/plugins/spine/pixi-spine/SpineDebugRenderer.d.ts.map +1 -0
  253. package/lib/plugins/spine/pixi-spine/SpinePipe.d.ts +21 -0
  254. package/lib/plugins/spine/pixi-spine/SpinePipe.d.ts.map +1 -0
  255. package/lib/plugins/spine/pixi-spine/SpineTexture.d.ts +16 -0
  256. package/lib/plugins/spine/pixi-spine/SpineTexture.d.ts.map +1 -0
  257. package/lib/plugins/spine/pixi-spine/assets/atlasLoader.d.ts +10 -0
  258. package/lib/plugins/spine/pixi-spine/assets/atlasLoader.d.ts.map +1 -0
  259. package/lib/plugins/spine/pixi-spine/assets/skeletonLoader.d.ts +6 -0
  260. package/lib/plugins/spine/pixi-spine/assets/skeletonLoader.d.ts.map +1 -0
  261. package/lib/plugins/spine/pixi-spine/darktint/DarkTintBatchGeometry.d.ts +5 -0
  262. package/lib/plugins/spine/pixi-spine/darktint/DarkTintBatchGeometry.d.ts.map +1 -0
  263. package/lib/plugins/spine/pixi-spine/darktint/DarkTintBatcher.d.ts +22 -0
  264. package/lib/plugins/spine/pixi-spine/darktint/DarkTintBatcher.d.ts.map +1 -0
  265. package/lib/plugins/spine/pixi-spine/darktint/DarkTintShader.d.ts +5 -0
  266. package/lib/plugins/spine/pixi-spine/darktint/DarkTintShader.d.ts.map +1 -0
  267. package/lib/plugins/spine/pixi-spine/darktint/darkTintBit.d.ts +51 -0
  268. package/lib/plugins/spine/pixi-spine/darktint/darkTintBit.d.ts.map +1 -0
  269. package/lib/plugins/spine/pixi-spine/index.d.ts +9 -0
  270. package/lib/plugins/spine/pixi-spine/index.d.ts.map +1 -0
  271. package/lib/plugins/spine/pixi-spine/require-shim.d.ts +34 -0
  272. package/lib/plugins/spine/pixi-spine/require-shim.d.ts.map +1 -0
  273. package/lib/registries-CYCaYKZI.js +6885 -0
  274. package/lib/registries-CYCaYKZI.js.map +1 -0
  275. package/lib/signals/Signal.d.ts +16 -0
  276. package/lib/signals/Signal.d.ts.map +1 -0
  277. package/lib/signals/Signal.test.d.ts +2 -0
  278. package/lib/signals/Signal.test.d.ts.map +1 -0
  279. package/lib/signals/index.d.ts +3 -0
  280. package/lib/signals/index.d.ts.map +1 -0
  281. package/lib/store/Store.d.ts +56 -0
  282. package/lib/store/Store.d.ts.map +1 -0
  283. package/lib/store/Store.test.d.ts +2 -0
  284. package/lib/store/Store.test.d.ts.map +1 -0
  285. package/lib/store/index.d.ts +2 -0
  286. package/lib/store/index.d.ts.map +1 -0
  287. package/lib/types/framework.d.ts +46 -0
  288. package/lib/types/gsap.d.ts +23 -0
  289. package/lib/ui/Button.d.ts +162 -0
  290. package/lib/ui/Button.d.ts.map +1 -0
  291. package/lib/ui/FlexContainer.d.ts +109 -0
  292. package/lib/ui/FlexContainer.d.ts.map +1 -0
  293. package/lib/ui/Input.d.ts +384 -0
  294. package/lib/ui/Input.d.ts.map +1 -0
  295. package/lib/ui/Joystick.d.ts +61 -0
  296. package/lib/ui/Joystick.d.ts.map +1 -0
  297. package/lib/ui/Popup.d.ts +109 -0
  298. package/lib/ui/Popup.d.ts.map +1 -0
  299. package/lib/ui/Toast.d.ts +131 -0
  300. package/lib/ui/Toast.d.ts.map +1 -0
  301. package/lib/ui/Toaster.d.ts +188 -0
  302. package/lib/ui/Toaster.d.ts.map +1 -0
  303. package/lib/ui/UICanvas.d.ts +155 -0
  304. package/lib/ui/UICanvas.d.ts.map +1 -0
  305. package/lib/ui/index.d.ts +9 -0
  306. package/lib/ui/index.d.ts.map +1 -0
  307. package/lib/utils/array.d.ts +11 -0
  308. package/lib/utils/array.d.ts.map +1 -0
  309. package/lib/utils/bind.d.ts +21 -0
  310. package/lib/utils/bind.d.ts.map +1 -0
  311. package/lib/utils/canvas.d.ts +2 -0
  312. package/lib/utils/canvas.d.ts.map +1 -0
  313. package/lib/utils/color.d.ts +66 -0
  314. package/lib/utils/color.d.ts.map +1 -0
  315. package/lib/utils/console/Logger.d.ts +15 -0
  316. package/lib/utils/console/Logger.d.ts.map +1 -0
  317. package/lib/utils/console/index.d.ts +2 -0
  318. package/lib/utils/console/index.d.ts.map +1 -0
  319. package/lib/utils/debug.d.ts +34 -0
  320. package/lib/utils/debug.d.ts.map +1 -0
  321. package/lib/utils/define.d.ts +100 -0
  322. package/lib/utils/define.d.ts.map +1 -0
  323. package/lib/utils/env.d.ts +4 -0
  324. package/lib/utils/env.d.ts.map +1 -0
  325. package/lib/utils/events.d.ts +12 -0
  326. package/lib/utils/events.d.ts.map +1 -0
  327. package/lib/utils/framework.d.ts +12 -0
  328. package/lib/utils/framework.d.ts.map +1 -0
  329. package/lib/utils/index.d.ts +28 -0
  330. package/lib/utils/index.d.ts.map +1 -0
  331. package/lib/utils/map.d.ts +31 -0
  332. package/lib/utils/map.d.ts.map +1 -0
  333. package/lib/utils/math.d.ts +15 -0
  334. package/lib/utils/math.d.ts.map +1 -0
  335. package/lib/utils/misc.d.ts +13 -0
  336. package/lib/utils/misc.d.ts.map +1 -0
  337. package/lib/utils/number.d.ts +2 -0
  338. package/lib/utils/number.d.ts.map +1 -0
  339. package/lib/utils/object.d.ts +21 -0
  340. package/lib/utils/object.d.ts.map +1 -0
  341. package/lib/utils/padding.d.ts +4 -0
  342. package/lib/utils/padding.d.ts.map +1 -0
  343. package/lib/utils/pixi.d.ts +42 -0
  344. package/lib/utils/pixi.d.ts.map +1 -0
  345. package/lib/utils/platform.d.ts +20 -0
  346. package/lib/utils/platform.d.ts.map +1 -0
  347. package/lib/utils/point.d.ts +66 -0
  348. package/lib/utils/point.d.ts.map +1 -0
  349. package/lib/utils/promise/Queue.d.ts +60 -0
  350. package/lib/utils/promise/Queue.d.ts.map +1 -0
  351. package/lib/utils/promise/functions.d.ts +14 -0
  352. package/lib/utils/promise/functions.d.ts.map +1 -0
  353. package/lib/utils/promise/index.d.ts +3 -0
  354. package/lib/utils/promise/index.d.ts.map +1 -0
  355. package/lib/utils/random.d.ts +42 -0
  356. package/lib/utils/random.d.ts.map +1 -0
  357. package/lib/utils/rect.d.ts +26 -0
  358. package/lib/utils/rect.d.ts.map +1 -0
  359. package/lib/utils/set.d.ts +15 -0
  360. package/lib/utils/set.d.ts.map +1 -0
  361. package/lib/utils/string.d.ts +3 -0
  362. package/lib/utils/string.d.ts.map +1 -0
  363. package/lib/utils/text.d.ts +3 -0
  364. package/lib/utils/text.d.ts.map +1 -0
  365. package/lib/utils/typefilters.d.ts +4 -0
  366. package/lib/utils/typefilters.d.ts.map +1 -0
  367. package/lib/utils/types.d.ts +209 -0
  368. package/lib/utils/types.d.ts.map +1 -0
  369. package/lib/utils/vite.d.ts +25 -0
  370. package/lib/utils/vite.d.ts.map +1 -0
  371. package/lib/utils/web.d.ts +3 -0
  372. package/lib/utils/web.d.ts.map +1 -0
  373. package/lib/version.d.ts +3 -0
  374. package/lib/version.d.ts.map +1 -0
  375. package/lib/webgl-check.d.ts +2 -0
  376. package/lib/webgl-check.d.ts.map +1 -0
  377. package/package.json +138 -0
  378. package/src/core/Application.ts +1091 -0
  379. package/src/core/config.ts +168 -0
  380. package/src/core/create.ts +186 -0
  381. package/src/core/globals.ts +299 -0
  382. package/src/core/index.ts +6 -0
  383. package/src/core/interfaces/IApplication.ts +628 -0
  384. package/src/core/interfaces/IApplicationOptions.ts +81 -0
  385. package/src/core/interfaces/ICoreFunctions.ts +86 -0
  386. package/src/core/interfaces/ICoreSignals.ts +77 -0
  387. package/src/core/interfaces/IStorageCapability.test.ts +27 -0
  388. package/src/core/interfaces/IStorageCapability.ts +26 -0
  389. package/src/core/interfaces/index.ts +6 -0
  390. package/src/core/registries.ts +7 -0
  391. package/src/core/types.ts +13 -0
  392. package/src/display/AnimatedSprite.ts +227 -0
  393. package/src/display/Camera.ts +371 -0
  394. package/src/display/Container.ts +240 -0
  395. package/src/display/Entity.ts +50 -0
  396. package/src/display/ParticleContainer.ts +107 -0
  397. package/src/display/Scene.ts +305 -0
  398. package/src/display/SceneTransition.ts +108 -0
  399. package/src/display/SpineAnimation.ts +170 -0
  400. package/src/display/Svg.ts +9 -0
  401. package/src/display/index.ts +11 -0
  402. package/src/env.d.ts +6 -0
  403. package/src/hello.ts +20 -0
  404. package/src/index.ts +17 -0
  405. package/src/mixins/animated.ts +340 -0
  406. package/src/mixins/factory/Factory.ts +24 -0
  407. package/src/mixins/factory/const.ts +363 -0
  408. package/src/mixins/factory/index.ts +7 -0
  409. package/src/mixins/factory/methods.ts +21 -0
  410. package/src/mixins/factory/props.ts +207 -0
  411. package/src/mixins/factory/registry.test.ts +83 -0
  412. package/src/mixins/factory/registry.ts +61 -0
  413. package/src/mixins/factory/schema.ts +153 -0
  414. package/src/mixins/factory/ui-registry.ts +54 -0
  415. package/src/mixins/factory/utils.ts +130 -0
  416. package/src/mixins/focus.ts +124 -0
  417. package/src/mixins/index.ts +5 -0
  418. package/src/mixins/interaction.ts +74 -0
  419. package/src/mixins/signals.ts +49 -0
  420. package/src/plugins/AssetsPlugin.ts +407 -0
  421. package/src/plugins/DataAdapter.ts +259 -0
  422. package/src/plugins/DevToolsPlugin.ts +103 -0
  423. package/src/plugins/FullScreenPlugin.ts +359 -0
  424. package/src/plugins/GSAPPlugin.ts +811 -0
  425. package/src/plugins/KeyboardPlugin.ts +160 -0
  426. package/src/plugins/LayoutPlugin.ts +127 -0
  427. package/src/plugins/LookupPlugin.ts +308 -0
  428. package/src/plugins/Plugin.test.ts +73 -0
  429. package/src/plugins/Plugin.ts +200 -0
  430. package/src/plugins/PopupManagerPlugin.ts +263 -0
  431. package/src/plugins/ResizerPlugin.ts +220 -0
  432. package/src/plugins/SceneManagerPlugin.ts +669 -0
  433. package/src/plugins/StatsPlugin.ts +24 -0
  434. package/src/plugins/TimerPlugin.ts +841 -0
  435. package/src/plugins/WebEventsPlugin.ts +132 -0
  436. package/src/plugins/actions/ActionsPlugin.ts +113 -0
  437. package/src/plugins/actions/constants.ts +45 -0
  438. package/src/plugins/actions/index.ts +4 -0
  439. package/src/plugins/actions/methods.ts +28 -0
  440. package/src/plugins/actions/types.ts +47 -0
  441. package/src/plugins/audio/AudioChannel.test.ts +101 -0
  442. package/src/plugins/audio/AudioChannel.ts +164 -0
  443. package/src/plugins/audio/AudioInstance.ts +228 -0
  444. package/src/plugins/audio/AudioManagerPlugin.ts +903 -0
  445. package/src/plugins/audio/VoiceOverPlugin.ts +354 -0
  446. package/src/plugins/audio/index.ts +3 -0
  447. package/src/plugins/breakpoints/BreakpointPlugin.test.ts +228 -0
  448. package/src/plugins/breakpoints/BreakpointPlugin.ts +293 -0
  449. package/src/plugins/breakpoints/evaluate.test.ts +239 -0
  450. package/src/plugins/breakpoints/evaluate.ts +201 -0
  451. package/src/plugins/breakpoints/index.ts +3 -0
  452. package/src/plugins/breakpoints/methods.ts +22 -0
  453. package/src/plugins/breakpoints/types.ts +86 -0
  454. package/src/plugins/captions/CaptionsPlugin.ts +468 -0
  455. package/src/plugins/captions/CaptionsRenderer.ts +184 -0
  456. package/src/plugins/captions/font/Sans.fnt +116 -0
  457. package/src/plugins/captions/font/Sans.png +0 -0
  458. package/src/plugins/captions/index.ts +2 -0
  459. package/src/plugins/defaults.ts +95 -0
  460. package/src/plugins/focus/FocusManagerPlugin.ts +773 -0
  461. package/src/plugins/focus/FocusOutliner.ts +111 -0
  462. package/src/plugins/focus/index.ts +2 -0
  463. package/src/plugins/i18nPlugin.ts +284 -0
  464. package/src/plugins/index.ts +17 -0
  465. package/src/plugins/input/AbstractControls.ts +15 -0
  466. package/src/plugins/input/Controls.ts +55 -0
  467. package/src/plugins/input/InputPlugin.ts +168 -0
  468. package/src/plugins/input/constants.ts +12 -0
  469. package/src/plugins/input/index.ts +9 -0
  470. package/src/plugins/input/interfaces.ts +37 -0
  471. package/src/plugins/input/keyboard/KeyboardContols.ts +182 -0
  472. package/src/plugins/input/keyboard/index.ts +2 -0
  473. package/src/plugins/input/keyboard/interfaces.ts +21 -0
  474. package/src/plugins/input/methods.ts +9 -0
  475. package/src/plugins/input/touch/TouchControls.ts +237 -0
  476. package/src/plugins/input/touch/constants.ts +34 -0
  477. package/src/plugins/input/touch/index.ts +3 -0
  478. package/src/plugins/input/touch/interfaces.ts +15 -0
  479. package/src/plugins/input/types.ts +41 -0
  480. package/src/plugins/input/utils.ts +10 -0
  481. package/src/plugins/spine/SpinePlugin.ts +14 -0
  482. package/src/plugins/spine/pixi-spine/BatchableSpineSlot.ts +138 -0
  483. package/src/plugins/spine/pixi-spine/Spine.ts +897 -0
  484. package/src/plugins/spine/pixi-spine/SpineDebugRenderer.ts +615 -0
  485. package/src/plugins/spine/pixi-spine/SpinePipe.ts +197 -0
  486. package/src/plugins/spine/pixi-spine/SpineTexture.ts +143 -0
  487. package/src/plugins/spine/pixi-spine/assets/atlasLoader.ts +156 -0
  488. package/src/plugins/spine/pixi-spine/assets/skeletonLoader.ts +80 -0
  489. package/src/plugins/spine/pixi-spine/darktint/DarkTintBatchGeometry.ts +92 -0
  490. package/src/plugins/spine/pixi-spine/darktint/DarkTintBatcher.ts +186 -0
  491. package/src/plugins/spine/pixi-spine/darktint/DarkTintShader.ts +74 -0
  492. package/src/plugins/spine/pixi-spine/darktint/darkTintBit.ts +77 -0
  493. package/src/plugins/spine/pixi-spine/index.ts +43 -0
  494. package/src/plugins/spine/pixi-spine/require-shim.ts +43 -0
  495. package/src/signals/Signal.test.ts +54 -0
  496. package/src/signals/Signal.ts +68 -0
  497. package/src/signals/index.ts +10 -0
  498. package/src/store/Store.test.ts +146 -0
  499. package/src/store/Store.ts +192 -0
  500. package/src/store/index.ts +1 -0
  501. package/src/types/framework.d.ts +47 -0
  502. package/src/types/gsap.d.ts +26 -0
  503. package/src/ui/Button.ts +454 -0
  504. package/src/ui/FlexContainer.ts +526 -0
  505. package/src/ui/Input.ts +1274 -0
  506. package/src/ui/Joystick.ts +288 -0
  507. package/src/ui/Popup.ts +242 -0
  508. package/src/ui/Toast.ts +399 -0
  509. package/src/ui/Toaster.ts +409 -0
  510. package/src/ui/UICanvas.ts +812 -0
  511. package/src/ui/index.ts +8 -0
  512. package/src/utils/array.ts +24 -0
  513. package/src/utils/bind.ts +79 -0
  514. package/src/utils/canvas.ts +26 -0
  515. package/src/utils/color.ts +126 -0
  516. package/src/utils/console/Logger.ts +86 -0
  517. package/src/utils/console/index.ts +1 -0
  518. package/src/utils/debug.ts +69 -0
  519. package/src/utils/define.ts +120 -0
  520. package/src/utils/env.ts +3 -0
  521. package/src/utils/events.ts +10 -0
  522. package/src/utils/framework.ts +45 -0
  523. package/src/utils/index.ts +27 -0
  524. package/src/utils/map.ts +59 -0
  525. package/src/utils/math.ts +19 -0
  526. package/src/utils/misc.ts +45 -0
  527. package/src/utils/number.ts +3 -0
  528. package/src/utils/object.ts +43 -0
  529. package/src/utils/padding.ts +43 -0
  530. package/src/utils/pixi.ts +116 -0
  531. package/src/utils/platform.ts +33 -0
  532. package/src/utils/point.ts +123 -0
  533. package/src/utils/promise/Queue.ts +125 -0
  534. package/src/utils/promise/functions.ts +16 -0
  535. package/src/utils/promise/index.ts +2 -0
  536. package/src/utils/random.ts +69 -0
  537. package/src/utils/rect.ts +50 -0
  538. package/src/utils/set.ts +32 -0
  539. package/src/utils/string.ts +9 -0
  540. package/src/utils/text.ts +30 -0
  541. package/src/utils/typefilters.ts +29 -0
  542. package/src/utils/types.ts +426 -0
  543. package/src/utils/vite.ts +41 -0
  544. package/src/utils/web.ts +7 -0
  545. package/src/version.ts +3 -0
  546. package/src/webgl-check.ts +12 -0
  547. package/templates/app/default/.eslintrc.json +21 -0
  548. package/templates/app/default/.meta.json +4 -0
  549. package/templates/app/default/.nvmrc +1 -0
  550. package/templates/app/default/.prettierrc.json +7 -0
  551. package/templates/app/default/README.md +8 -0
  552. package/templates/app/default/assets/audio{m}/music/Cheerful Annoyance.ogg +0 -0
  553. package/templates/app/default/assets/audio{m}/music/Drumming Sticks.ogg +0 -0
  554. package/templates/app/default/assets/audio{m}/music/Game Over.ogg +0 -0
  555. package/templates/app/default/assets/audio{m}/music/Mishief Stroll.ogg +0 -0
  556. package/templates/app/default/assets/audio{m}/music/Night at the Beach.ogg +0 -0
  557. package/templates/app/default/assets/audio{m}/sfx/click.ogg +0 -0
  558. package/templates/app/default/assets/audio{m}/sfx/hover.ogg +0 -0
  559. package/templates/app/default/assets/required{m}/caper.png +0 -0
  560. package/templates/app/default/assets/required{m}/fonts{fix}/SpaceGrotesk-Bold{family=Space Grotesk}{wf}.ttf +0 -0
  561. package/templates/app/default/assets/required{m}/fonts{fix}/SpaceGrotesk-Medium{family=Space Grotesk}{wf}.ttf +0 -0
  562. package/templates/app/default/assets/required{m}/fonts{fix}/SpaceGrotesk-Regular{family=Space Grotesk}{wf}.ttf +0 -0
  563. package/templates/app/default/assets/required{m}/fonts{fix}/Syncopate-Bold{family=Syncopate}{wf}.ttf +0 -0
  564. package/templates/app/default/assets/required{m}/ui{tps}/btn/blue.png +0 -0
  565. package/templates/app/default/assets/required{m}/ui{tps}/btn/green.png +0 -0
  566. package/templates/app/default/assets/required{m}/ui{tps}/btn/grey.png +0 -0
  567. package/templates/app/default/assets/required{m}/ui{tps}/btn/orange.png +0 -0
  568. package/templates/app/default/assets/required{m}/ui{tps}/btn/purple.png +0 -0
  569. package/templates/app/default/assets/required{m}/ui{tps}/btn/red.png +0 -0
  570. package/templates/app/default/assets/required{m}/ui{tps}/btn/yellow.png +0 -0
  571. package/templates/app/default/assets/required{m}/ui{tps}/btn_a/down.png +0 -0
  572. package/templates/app/default/assets/required{m}/ui{tps}/btn_a/over.png +0 -0
  573. package/templates/app/default/assets/required{m}/ui{tps}/btn_a/up.png +0 -0
  574. package/templates/app/default/assets/required{m}/ui{tps}/btn_b/down.png +0 -0
  575. package/templates/app/default/assets/required{m}/ui{tps}/btn_b/over.png +0 -0
  576. package/templates/app/default/assets/required{m}/ui{tps}/btn_b/up.png +0 -0
  577. package/templates/app/default/assets/required{m}/ui{tps}/joystick/base.png +0 -0
  578. package/templates/app/default/assets/required{m}/ui{tps}/joystick/handle.png +0 -0
  579. package/templates/app/default/assets/required{m}/wordmark.svg +1 -0
  580. package/templates/app/default/assets/spine{m}/spineboy-pro.png +0 -0
  581. package/templates/app/default/assets/spine{m}/spineboy-pro.skel +0 -0
  582. package/templates/app/default/assets/spine{m}/spineboy-pro{fix}.atlas +94 -0
  583. package/templates/app/default/caper.config.ts +60 -0
  584. package/templates/app/default/index.html +23 -0
  585. package/templates/app/default/package.template.json +17 -0
  586. package/templates/app/default/public/favicon.ico +0 -0
  587. package/templates/app/default/src/__APPLICATION_NAME__.ts +3 -0
  588. package/templates/app/default/src/main.ts +9 -0
  589. package/templates/app/default/src/scenes/Base.ts +39 -0
  590. package/templates/app/default/src/scenes/Game.ts +34 -0
  591. package/templates/app/default/src/scenes/Splash.ts +70 -0
  592. package/templates/app/default/src/scenes/Start.ts +90 -0
  593. package/templates/app/default/src/utils/Constants.ts +3 -0
  594. package/templates/app/default/tsconfig.json +1 -0
  595. package/templates/plugin/package.template.json +33 -0
  596. package/templates/plugin/src/Plugin.template.ts +24 -0
  597. package/templates/plugin/src/index.template.ts +3 -0
  598. package/templates/plugin/tsconfig.template.json +43 -0
  599. package/templates/plugin/vite-env.template.d.ts +16 -0
  600. package/templates/plugin/vite.config.template.ts +19 -0
@@ -0,0 +1,69 @@
1
+ import { Point } from 'pixi.js';
2
+
3
+ /**
4
+ * Generates a UUID v4 string
5
+ * @returns {string} A UUID v4 string
6
+ */
7
+ export function randomUUID(): string {
8
+ // Check if crypto.randomUUID is available
9
+ if (typeof crypto !== 'undefined' && crypto.randomUUID) {
10
+ return crypto.randomUUID();
11
+ }
12
+
13
+ // Fallback implementation of UUID v4
14
+ return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {
15
+ const r = (Math.random() * 16) | 0;
16
+ const v = c === 'x' ? r : (r & 0x3) | 0x8;
17
+ return v.toString(16);
18
+ });
19
+ }
20
+
21
+ /**
22
+ * Find a float between two numbers, inclusive of {@param min} and optionally inclusive of {@param max}.
23
+ * @param min The minimum value (inclusive)
24
+ * @param max The maximum value (exclusive by default)
25
+ * @param includeMax Whether the max value should be inclusive (default: false)
26
+ * @returns number
27
+ */
28
+ export function floatBetween(min: number, max: number, includeMax = false): number {
29
+ return min + Math.random() * (max - min + (includeMax ? 1 : 0));
30
+ }
31
+
32
+ /**
33
+ * Find a float between the x,y of a Point
34
+ * @param pt The point containing min (x) and max (y) values
35
+ * @param includeMax Whether the max value should be inclusive (default: false)
36
+ * @returns number
37
+ */
38
+ export function floatBetweenPoint(pt: Point, includeMax = false): number {
39
+ return floatBetween(pt.x, pt.y, includeMax);
40
+ }
41
+
42
+ /**
43
+ * Find an integer between two numbers, inclusive of {@param min} and optionally inclusive of {@param max}.
44
+ * @param min The minimum value (inclusive)
45
+ * @param max The maximum value (exclusive by default)
46
+ * @param includeMax Whether the max value should be inclusive (default: false)
47
+ * @returns number
48
+ */
49
+ export function intBetween(min: number, max: number, includeMax = false): number {
50
+ return Math.floor(floatBetween(min, max, includeMax));
51
+ }
52
+
53
+ /**
54
+ * Find an int between the x,y of a Point
55
+ * @param pt The point containing min (x) and max (y) values
56
+ * @param includeMax Whether the max value should be inclusive (default: false)
57
+ * @returns number
58
+ */
59
+ export function intBetweenPoint(pt: Point, includeMax = false): number {
60
+ return intBetween(pt.x, pt.y, includeMax);
61
+ }
62
+
63
+ /**
64
+ * Get a random boolean value
65
+ * @returns boolean
66
+ */
67
+ export function bool(): boolean {
68
+ return Math.random() < 0.5;
69
+ }
@@ -0,0 +1,50 @@
1
+ import { Point, PointLike, Rectangle } from 'pixi.js';
2
+ /**
3
+ *
4
+ * @param rect
5
+ * @param delta
6
+ */
7
+ export function offset(rect: Rectangle, delta: Point): Rectangle {
8
+ rect.x += delta.x;
9
+ rect.y += delta.y;
10
+ return rect;
11
+ }
12
+
13
+ /**
14
+ *
15
+ * @param rect
16
+ * @param output
17
+ */
18
+ export function center(rect: Rectangle, output?: Point): Point {
19
+ if (output === undefined) {
20
+ output = new Point();
21
+ }
22
+ output.set(rect.x + rect.width * 0.5, rect.y + rect.height * 0.5);
23
+ return output;
24
+ }
25
+
26
+ /**
27
+ * Scale a rectangle by a provided value
28
+ * @param rect
29
+ * @param scale
30
+ */
31
+ export function scale(rect: Rectangle, scale: number): Rectangle {
32
+ rect.x *= scale;
33
+ rect.y *= scale;
34
+ rect.width *= scale;
35
+ rect.height *= scale;
36
+ return rect;
37
+ }
38
+
39
+ /**
40
+ * Returns a `Point` representing the width and height of the input Rectangle
41
+ * @param rect
42
+ * @param output
43
+ */
44
+ export function size(rect: Rectangle, output?: Point): PointLike {
45
+ if (output === undefined) {
46
+ output = new Point();
47
+ }
48
+ output.set(rect.width, rect.height);
49
+ return output;
50
+ }
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Filters a Set based on the provided filter function.
3
+ * @param set The original Set to filter.
4
+ * @param filterFunction The function used to filter the Set.
5
+ * @returns A new Set containing only the elements that satisfy the filter function.
6
+ */
7
+ export function filterSet<T>(set: Set<T>, filterFunction: (item: T) => boolean): Set<T> {
8
+ const filteredSet = new Set<T>();
9
+ for (const item of set) {
10
+ if (filterFunction(item)) {
11
+ filteredSet.add(item);
12
+ }
13
+ }
14
+ return filteredSet;
15
+ }
16
+
17
+ export function firstFromSet<T = any>(set: Set<T>): T | undefined {
18
+ return set?.values().next().value;
19
+ }
20
+
21
+ /**
22
+ * Gets the last element of a Set.
23
+ * @param set The Set from which to retrieve the last element.
24
+ * @returns The last element of the Set, or undefined if the Set is empty.
25
+ */
26
+ export function lastFromSet<T>(set: Set<T>): T | undefined {
27
+ let lastElement: T | undefined = undefined;
28
+ for (const item of set) {
29
+ lastElement = item;
30
+ }
31
+ return lastElement;
32
+ }
@@ -0,0 +1,9 @@
1
+ export function capitalize(str: string): string {
2
+ if (!str) return '';
3
+ return str.charAt(0).toUpperCase() + str.slice(1);
4
+ }
5
+
6
+ export function capitalizeWords(str: string): string {
7
+ if (!str) return '';
8
+ return str.split(' ').map(capitalize).join(' ');
9
+ }
@@ -0,0 +1,30 @@
1
+ import { CanvasTextMetrics, FederatedEvent, Point, Text } from 'pixi.js';
2
+
3
+ export function getNearestCharacterIndex(text: Text, e: FederatedEvent): number {
4
+ const metrics = CanvasTextMetrics.measureText(text.text, text.style);
5
+ const lines = metrics.lines;
6
+ const lineHeight = metrics.lineHeight;
7
+ const position = text.toLocal(new Point(e.pageX, e.pageY));
8
+
9
+ let closestIndex = 0;
10
+ let minDistance = Infinity;
11
+
12
+ let currentIndex = 0;
13
+ for (let i = 0; i < lines.length; i++) {
14
+ const lineText = lines[i];
15
+ for (let j = 0; j <= lineText.length; j++) {
16
+ const subText = lineText.substring(0, j);
17
+ const lineMetrics = CanvasTextMetrics.measureText(subText, text.style);
18
+ const charX = lineMetrics.width;
19
+ const charY = i * lineHeight;
20
+ const distance = Math.hypot(charX - position.x, charY - position.y);
21
+ if (distance < minDistance) {
22
+ minDistance = distance;
23
+ closestIndex = currentIndex + j;
24
+ }
25
+ }
26
+ currentIndex += lineText.length;
27
+ }
28
+
29
+ return closestIndex;
30
+ }
@@ -0,0 +1,29 @@
1
+ export type FilterCleanAssetNames<T> = T extends string
2
+ ? T extends `${string}/${string}`
3
+ ? never // Remove anything with slashes
4
+ : T extends `${string}.${string}`
5
+ ? never // Remove anything with file extensions
6
+ : T // Keep clean names
7
+ : never;
8
+
9
+ export type FilterSpineAssetNames<T> = T extends string
10
+ ? T extends `${string}.skel`
11
+ ? T extends `${string}/${infer FileName}.skel`
12
+ ? `${FileName}.skel` // Remove path but keep filename.skel: 'spine/spineboy-pro.skel' → 'spineboy-pro.skel'
13
+ : T // Keep as is if no path: 'spineboy-pro.skel' → 'spineboy-pro.skel'
14
+ : never // Only keep .skel files, ignore .atlas files
15
+ : never;
16
+
17
+ export type FilterBitmapFontNames<T> = T extends string
18
+ ? T extends `${string}.fnt`
19
+ ? T extends `${string}/${infer FileName}`
20
+ ? FileName extends `${string}/${infer DeepFileName}`
21
+ ? FilterBitmapFontNames<DeepFileName> // Recursively handle nested paths
22
+ : FileName extends `${infer Name}.fnt`
23
+ ? Name // Extract name without .fnt extension
24
+ : never
25
+ : T extends `${infer Name}.fnt`
26
+ ? Name // Handle case with no path
27
+ : never
28
+ : never // Only keep .fnt files
29
+ : never;
@@ -0,0 +1,426 @@
1
+ import type { AssetInitOptions, AssetsManifest, AssetsPreferences, Texture, UnresolvedAsset } from 'pixi.js';
2
+ import { Point } from 'pixi.js';
3
+ import type { Scene } from '../display/Scene';
4
+ import { SceneAssets } from '../display';
5
+ import type { FilterBitmapFontNames, FilterCleanAssetNames, FilterSpineAssetNames } from './typefilters';
6
+
7
+ /**
8
+ * A generic constructor type.
9
+ * @template T The type of the instance that the constructor creates.
10
+ */
11
+ export type Constructor<T = NonNullable<unknown>> = new (...args: any[]) => T;
12
+
13
+ /**
14
+ * A type that requires certain properties of another type.
15
+ * @template T The original type.
16
+ * @template K The keys of the properties that should be required.
17
+ */
18
+ export type WithRequiredProps<T, K extends keyof T> = Partial<T> & Pick<T, K>;
19
+
20
+ /**
21
+ * A type that represents a size, with width and height properties.
22
+ */
23
+ export type Size = { width: number; height: number };
24
+
25
+ /**
26
+ * A type that represents a point, which can be a number, an object with x and y properties, an array of two numbers, or a Point instance.
27
+ */
28
+ export type PointLike = number | { x: number; y: number } | [number, number?] | [number] | number[] | Point;
29
+ export type Padding = { top: number; right: number; bottom: number; left: number };
30
+ export type SizeLike = PointLike | { width: number; height: number } | Size;
31
+
32
+ /**
33
+ * A type that represents a rectangle, with x, y, width, and height properties.
34
+ */
35
+ export type RectLike = Size & { x: number; y: number };
36
+
37
+ /**
38
+ * A type that maps keys to PointLike values.
39
+ * @template T The keys of the properties that should be PointLike.
40
+ */
41
+ export type WithPointLike<T extends keyof any> = { [P in T]: PointLike };
42
+
43
+ /**
44
+ * A type that represents a container, with position and getGlobalPosition properties, and x, y, width, and height properties.
45
+ */
46
+ export type ContainerLike = RectLike & { position: Point; getGlobalPosition: () => Point };
47
+
48
+ /**
49
+ * A type that represents a texture, which can be a string or a Texture instance.
50
+ */
51
+
52
+ export interface AssetTypeOverrides {}
53
+
54
+ export type ImportListItemModule<T> = (() => Promise<any>) | Promise<any> | Constructor<T> | T;
55
+
56
+ /**+
57
+ * A type that represents an item in an import list.
58
+ * @template T The type of the instance that the constructor creates.
59
+ */
60
+ export type ImportListItem<T = any> = {
61
+ id: string;
62
+ module: ImportListItemModule<T>;
63
+ namedExport?: string;
64
+ options?: any;
65
+ autoLoad?: boolean;
66
+ /** IDs this item must be initialized after. Used by plugin topo-sort. */
67
+ requires?: string[];
68
+ };
69
+
70
+ export type AssetExtension =
71
+ | 'png'
72
+ | 'jpg'
73
+ | 'jpeg'
74
+ | 'webp'
75
+ | 'gif'
76
+ | 'avif'
77
+ | 'svg'
78
+ | 'json'
79
+ | 'xml'
80
+ | 'txt'
81
+ | 'mp4'
82
+ | 'm4v'
83
+ | 'webm'
84
+ | 'ogg'
85
+ | 'wav'
86
+ | 'mp3'
87
+ | string;
88
+
89
+ export type AssetLike = {
90
+ alias?: string;
91
+ src: string | string[];
92
+ ext: AssetExtension;
93
+ };
94
+ export type BundleTypes =
95
+ | AssetTypeOverrides['Bundles']
96
+ | AssetTypeOverrides['Bundles'][]
97
+ | (string & {})
98
+ | (string & {})[];
99
+
100
+ export type AssetTypes = string | string[] | UnresolvedAsset | UnresolvedAsset[] | AssetLike | AssetLike[];
101
+
102
+ export type AssetLoadingOptions = {
103
+ manifest?: AssetsManifest | Promise<AssetsManifest> | string | (() => Promise<any>);
104
+ initOptions?: Partial<AssetInitOptions>;
105
+ assetPreferences?: Partial<AssetsPreferences>;
106
+ preload?: {
107
+ assets?: AssetTypes;
108
+ bundles?: BundleTypes;
109
+ };
110
+ background?: {
111
+ assets?: AssetTypes;
112
+ bundles?: BundleTypes;
113
+ };
114
+ };
115
+
116
+ type SceneItemOptions = {
117
+ active?: boolean;
118
+ debugLabel?: string;
119
+ debugGroup?: string;
120
+ debugOrder: number;
121
+ plugins?: string[];
122
+ assets?: SceneAssets;
123
+ autoUnloadAssets?: boolean;
124
+ };
125
+
126
+ export type SceneImportListItem<T> = ImportListItem<T> & Partial<SceneItemOptions>;
127
+
128
+ /**
129
+ * A type that represents an import list.
130
+ * @template T The type of the instance that the constructor creates.
131
+ */
132
+ export type ImportList<T> = ImportListItem<T>[];
133
+ export type SceneImportList<T> = SceneImportListItem<T>[];
134
+
135
+ export type AppSize = {
136
+ width: number;
137
+ height: number;
138
+ screenWidth: number;
139
+ screenHeight: number;
140
+ };
141
+
142
+ export type Eases<T extends string = string> = Record<T, gsap.EaseFunction>;
143
+
144
+ // from gsap
145
+ export type EaseString =
146
+ | 'none'
147
+ | 'power1'
148
+ | 'power1.in'
149
+ | 'power1.out'
150
+ | 'power1.inOut'
151
+ | 'power2'
152
+ | 'power2.in'
153
+ | 'power2.out'
154
+ | 'power2.inOut'
155
+ | 'power3'
156
+ | 'power3.in'
157
+ | 'power3.out'
158
+ | 'power3.inOut'
159
+ | 'power4'
160
+ | 'power4.in'
161
+ | 'power4.out'
162
+ | 'power4.inOut'
163
+ | 'back'
164
+ | 'back.in'
165
+ | 'back.out'
166
+ | 'back.inOut'
167
+ | 'bounce'
168
+ | 'bounce.in'
169
+ | 'bounce.out'
170
+ | 'bounce.inOut'
171
+ | 'circ'
172
+ | 'circ.in'
173
+ | 'circ.out'
174
+ | 'circ.inOut'
175
+ | 'elastic'
176
+ | 'elastic.in'
177
+ | 'elastic.out'
178
+ | 'elastic.inOut'
179
+ | 'expo'
180
+ | 'expo.in'
181
+ | 'expo.out'
182
+ | 'expo.inOut'
183
+ | 'sine'
184
+ | 'sine.in'
185
+ | 'sine.out'
186
+ | 'sine.inOut';
187
+
188
+ export type KeyboardKey =
189
+ | 'Backspace'
190
+ | 'Tab'
191
+ | 'Enter'
192
+ | 'Shift'
193
+ | 'Control'
194
+ | 'Alt'
195
+ | 'Pause'
196
+ | 'CapsLock'
197
+ | 'Escape'
198
+ | 'Space'
199
+ | 'PageUp'
200
+ | 'PageDown'
201
+ | 'End'
202
+ | 'Home'
203
+ | 'ArrowLeft'
204
+ | 'ArrowUp'
205
+ | 'ArrowRight'
206
+ | 'ArrowDown'
207
+ | 'PrintScreen'
208
+ | 'Insert'
209
+ | 'Delete'
210
+ | '0'
211
+ | '1'
212
+ | '2'
213
+ | '3'
214
+ | '4'
215
+ | '5'
216
+ | '6'
217
+ | '7'
218
+ | '8'
219
+ | '9'
220
+ | 'A'
221
+ | 'B'
222
+ | 'C'
223
+ | 'D'
224
+ | 'E'
225
+ | 'F'
226
+ | 'G'
227
+ | 'H'
228
+ | 'i'
229
+ | 'J'
230
+ | 'K'
231
+ | 'L'
232
+ | 'M'
233
+ | 'N'
234
+ | 'O'
235
+ | 'P'
236
+ | 'Q'
237
+ | 'R'
238
+ | 'S'
239
+ | 't'
240
+ | 'U'
241
+ | 'V'
242
+ | 'W'
243
+ | 'X'
244
+ | 'Y'
245
+ | 'Z'
246
+ | 'NumLock'
247
+ | 'NumpadDivide'
248
+ | 'NumpadMultiply'
249
+ | 'NumpadSubtract'
250
+ | 'NumpadAdd'
251
+ | 'NumpadEnter'
252
+ | 'Numpad0'
253
+ | 'Numpad1'
254
+ | 'Numpad2'
255
+ | 'Numpad3'
256
+ | 'Numpad4'
257
+ | 'Numpad5'
258
+ | 'Numpad6'
259
+ | 'Numpad7'
260
+ | 'Numpad8'
261
+ | 'Numpad9'
262
+ | 'NumpadDecimal'
263
+ | 'F1'
264
+ | 'F2'
265
+ | 'F3'
266
+ | 'F4'
267
+ | 'F5'
268
+ | 'F6'
269
+ | 'F7'
270
+ | 'F8'
271
+ | 'F9'
272
+ | 'F10'
273
+ | 'F11'
274
+ | 'F12'
275
+ | 'Semicolon'
276
+ | 'Equal'
277
+ | 'Comma'
278
+ | 'Minus'
279
+ | 'Period'
280
+ | 'Slash'
281
+ | 'Backquote'
282
+ | 'BracketLeft'
283
+ | 'Backslash'
284
+ | 'BracketRight'
285
+ | 'Quote'
286
+ | 'IntlBackslash'
287
+ | 'MetaLeft'
288
+ | 'MetaRight'
289
+ | 'ContextMenu';
290
+
291
+ export type { Spine } from '../plugins/spine/pixi-spine';
292
+
293
+ export type DeepPartial<T> = {
294
+ [P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P];
295
+ };
296
+
297
+
298
+ export interface AppTypeOverrides {}
299
+
300
+ // ============================================================================
301
+ // Typed factory helpers (entities / popups / scenes)
302
+ // ----------------------------------------------------------------------------
303
+ // The Vite plugin's `generateTypes()` emits `SceneClasses` / `PopupClasses` /
304
+ // `EntityClasses` into the `AppTypeOverrides` augmentation as keyed
305
+ // `{ [id]: typeof import('@/...').default }` maps. The helpers below pull
306
+ // constructor params and instance types out of those maps via plain
307
+ // TypeScript — no AST type extraction, full fidelity on generics and
308
+ // imports. If the generated maps are missing (framework built in isolation
309
+ // or no entities/popups discovered), the helpers degrade to `never`.
310
+ // ============================================================================
311
+
312
+ type _EntityClassMap = AppTypeOverrides extends { EntityClasses: infer E } ? E : {};
313
+ type _PopupClassMap = AppTypeOverrides extends { PopupClasses: infer P } ? P : {};
314
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
315
+ type _SceneClassMap = AppTypeOverrides extends { SceneClasses: infer S } ? S : {};
316
+
317
+ /** Any-constructor shape. */
318
+ type AnyCtor = abstract new (...args: any[]) => any;
319
+
320
+ type _UIClassMap = AppTypeOverrides extends { UIClasses: infer U } ? U : {};
321
+
322
+ /** Union of discovered entity IDs from `src/entities/`. */
323
+ export type EntityId = keyof _EntityClassMap & string;
324
+ /** Constructor type of the entity class registered under `K`. */
325
+ export type EntityCtor<K extends EntityId> = _EntityClassMap[K] extends AnyCtor
326
+ ? _EntityClassMap[K]
327
+ : never;
328
+ /**
329
+ * Props accepted by the entity's constructor — derived from the first
330
+ * parameter of its constructor signature. Enforces the single-options-object
331
+ * convention at the call site of `this.add.entity(id, props)`.
332
+ */
333
+ export type EntityProps<K extends EntityId> = EntityCtor<K> extends AnyCtor
334
+ ? ConstructorParameters<EntityCtor<K>>[0]
335
+ : never;
336
+ /** Instance type returned by `this.add.entity(id, props)`. */
337
+ export type EntityInstance<K extends EntityId> = EntityCtor<K> extends AnyCtor
338
+ ? InstanceType<EntityCtor<K>>
339
+ : never;
340
+
341
+ /** Union of discovered UI element IDs from `src/ui/`. */
342
+ export type UIId = keyof _UIClassMap & string;
343
+ /** Constructor type of the UI class registered under `K`. */
344
+ export type UICtor<K extends UIId> = _UIClassMap[K] extends AnyCtor ? _UIClassMap[K] : never;
345
+ /**
346
+ * Props accepted by the UI element's constructor — derived from the first
347
+ * parameter of its constructor signature.
348
+ */
349
+ export type UIProps<K extends UIId> = UICtor<K> extends AnyCtor
350
+ ? ConstructorParameters<UICtor<K>>[0]
351
+ : never;
352
+ /** Instance type returned by `this.add.ui(id, props)`. */
353
+ export type UIInstance<K extends UIId> = UICtor<K> extends AnyCtor
354
+ ? InstanceType<UICtor<K>>
355
+ : never;
356
+
357
+ /** Union of discovered popup IDs from `src/popups/`. */
358
+ export type PopupId = keyof _PopupClassMap & string;
359
+ /** Constructor type of the popup class registered under `K`. */
360
+ export type PopupCtor<K extends PopupId> = _PopupClassMap[K] extends AnyCtor
361
+ ? _PopupClassMap[K]
362
+ : never;
363
+ /**
364
+ * Config accepted by `app.popups.show(id, config)` — the second constructor
365
+ * parameter of the popup class. If the popup declares its data generic
366
+ * (e.g. `class Foo extends Popup<MyDataType>`), `config.data` narrows to
367
+ * that type at the call site.
368
+ */
369
+ export type PopupProps<K extends PopupId> = PopupCtor<K> extends abstract new (
370
+ id: any,
371
+ config?: infer C,
372
+ ) => any
373
+ ? C
374
+ : never;
375
+ /** Instance type returned by `app.popups.show(id, config)`. */
376
+ export type PopupInstance<K extends PopupId> = PopupCtor<K> extends AnyCtor
377
+ ? InstanceType<PopupCtor<K>>
378
+ : never;
379
+
380
+ /** Union of discovered scene IDs from `src/scenes/`. */
381
+ export type SceneId = keyof _SceneClassMap & string;
382
+ /** Constructor type of the scene class registered under `K`. */
383
+ export type SceneCtor<K extends SceneId> = _SceneClassMap[K] extends AnyCtor
384
+ ? _SceneClassMap[K]
385
+ : never;
386
+ /** Instance type returned by `app.scenes.load(id, props)`. */
387
+ export type SceneInstance<K extends SceneId> = SceneCtor<K> extends AnyCtor
388
+ ? InstanceType<SceneCtor<K>>
389
+ : never;
390
+ /**
391
+ * Props accepted by `app.scenes.load(id, props)`. Derived from the scene's
392
+ * `Scene<Props>` generic — scenes that don't declare a generic resolve to
393
+ * `void`, so callers don't pass a second argument. Scenes that declare
394
+ * `class LevelScene extends Scene<{ levelId: number }>` require the prop
395
+ * object at the call site.
396
+ */
397
+ export type SceneProps<K extends SceneId> = SceneInstance<K> extends Scene<infer P> ? P : void;
398
+ /**
399
+ * Tuple form of `SceneProps<K>` — `[]` when `void`, `[props: P]` otherwise.
400
+ * Used in overloaded `loadScene` signatures so unparameterized scenes keep
401
+ * the `load('menu')` shape without a second arg.
402
+ */
403
+ export type SceneLoadArgs<K extends SceneId> = SceneProps<K> extends void
404
+ ? []
405
+ : [props: SceneProps<K>];
406
+
407
+ export type TextureAsset =
408
+ | FilterCleanAssetNames<AssetTypeOverrides['Texture']>
409
+ | AssetTypeOverrides['TPSFrames']
410
+ | (string & {})
411
+ | Texture;
412
+
413
+ export type TPSFramesAsset = AssetTypeOverrides['TPSFrames'] & (string & {});
414
+
415
+ export type SpritesheetAsset = FilterCleanAssetNames<AssetTypeOverrides['SpriteSheet']> | (string & {});
416
+
417
+ export type AudioAsset = FilterCleanAssetNames<AssetTypeOverrides['Audio']> | (string & {});
418
+
419
+ export type FontFamilyAsset = FilterCleanAssetNames<AssetTypeOverrides['FontFamily']> | (string & {}) | (string[] & {});
420
+
421
+ export type BitmapFontFamilyAsset =
422
+ | FilterBitmapFontNames<AssetTypeOverrides['BitmapFontFamily']>
423
+ | (string & {})
424
+ | (string[] & {});
425
+
426
+ export type SpineAsset = FilterSpineAssetNames<AssetTypeOverrides['SpineData']> | (string & {});
@@ -0,0 +1,41 @@
1
+ import { Logger } from './console';
2
+
3
+ interface ViteError {
4
+ message: string;
5
+ stack?: string;
6
+ /**
7
+ * The file path that caused the error, e.g., /src/main.ts
8
+ */
9
+ id?: string;
10
+ /**
11
+ * The line number of the error
12
+ */
13
+ line?: number;
14
+ /**
15
+ * The column number of the error
16
+ */
17
+ column?: number;
18
+ }
19
+
20
+ /**
21
+ * Triggers the Vite error overlay with a custom error during development.
22
+ * This is a no-op in production builds.
23
+ *
24
+ * @param error The error object or a simple message string to display.
25
+ */
26
+ export function triggerViteError(error: ViteError | string): void {
27
+ // Only run in development mode
28
+
29
+ if (import.meta.env.DEV) {
30
+ const errorData = typeof error === 'string' ? { message: error } : error;
31
+
32
+ // Use Vite's HMR API to send a custom event to the server
33
+ if (import.meta.hot) {
34
+ import.meta.hot.send('caper:show-error', { error: errorData });
35
+ } else {
36
+ console.error('Vite HMR is not available. Could not show error overlay.', errorData);
37
+ }
38
+ }
39
+
40
+ Logger.error(error);
41
+ }
@@ -0,0 +1,7 @@
1
+ export type Orientation = 'portrait' | 'landscape';
2
+
3
+ export function getOrientation(): Orientation {
4
+ const width = window.innerWidth;
5
+ const height = window.innerHeight;
6
+ return width > height ? 'landscape' : 'portrait';
7
+ }