@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,8 @@
1
+ export * from './Button';
2
+ export * from './FlexContainer';
3
+ export * from './Input';
4
+ export * from './Joystick';
5
+ export * from './Popup';
6
+ export * from './Toast';
7
+ export * from './Toaster';
8
+ export * from './UICanvas';
@@ -0,0 +1,24 @@
1
+ import { intBetween } from './random';
2
+
3
+ /**
4
+ * Shuffle an array.
5
+ * @param array
6
+ */
7
+ export function shuffle<T>(array: T[]): void {
8
+ let temp: T;
9
+ let index: number;
10
+ for (let i = 0; i < array.length; ++i) {
11
+ index = intBetween(0, array.length);
12
+ temp = array[i];
13
+ array[i] = array[index];
14
+ array[index] = temp;
15
+ }
16
+ }
17
+
18
+ /**
19
+ * Get a random array element.
20
+ * @param array
21
+ */
22
+ export function getRandomElement<T>(array: T[]): T {
23
+ return array[intBetween(0, array.length)];
24
+ }
@@ -0,0 +1,79 @@
1
+ type MethodNames = {
2
+ [key: string]: any;
3
+ };
4
+
5
+ /**
6
+ * Binds the provided methods to the provided instance.
7
+ * @param instance - The instance to which the methods should be bound.
8
+ * @param methodNames - The names of the methods to bind.
9
+ */
10
+ export function bindMethods(instance: unknown, ...methodNames: string[]) {
11
+ methodNames.forEach((methodName) => {
12
+ const method = (instance as MethodNames)[methodName];
13
+ if (typeof method === 'function') {
14
+ (instance as MethodNames)[methodName] = method.bind(instance);
15
+ }
16
+ });
17
+ }
18
+
19
+ /**
20
+ * Retrieves the names of all methods in an instance's prototype chain.
21
+ * @param instance - The instance from which to retrieve method names.
22
+ * @param excludePrefixes - An array of prefixes to exclude from the method names.
23
+ * @param excludeMethodNames - An array of method names to exclude.
24
+ * @returns An array of method names.
25
+ */
26
+ function getInstanceMethodNames(
27
+ instance: any,
28
+ excludePrefixes: string[] = [],
29
+ excludeMethodNames: string[] = [],
30
+ ): string[] {
31
+ let prototype = Object.getPrototypeOf(instance);
32
+ const methodNames: string[] = [];
33
+
34
+ while (prototype) {
35
+ const filteredMethodNames = Object.getOwnPropertyNames(prototype).filter((propertyName) => {
36
+ const ownDescriptor = Object.getOwnPropertyDescriptor(prototype, propertyName);
37
+ return (
38
+ typeof ownDescriptor?.value === 'function' &&
39
+ propertyName !== 'constructor' &&
40
+ !excludePrefixes.some((prefix) => propertyName.startsWith(prefix)) &&
41
+ !excludeMethodNames.includes(propertyName)
42
+ );
43
+ });
44
+
45
+ methodNames.push(...filteredMethodNames);
46
+
47
+ if (prototype === Object.prototype || Object.prototype.hasOwnProperty.call(prototype.constructor, '__caper_method_binding_root')) {
48
+ break;
49
+ }
50
+
51
+ prototype = Object.getPrototypeOf(prototype);
52
+ }
53
+
54
+ return methodNames;
55
+ }
56
+
57
+ /**
58
+ * Binds all methods of an instance to the instance.
59
+ * @param instance - The instance to which the methods should be bound.
60
+ * @param excludePrefixes - An array of prefixes to exclude from the method names.
61
+ * @param excludeMethodNames - An array of method names to exclude.
62
+ */
63
+ export function bindAllMethods(instance: any, excludePrefixes: string[] = [], excludeMethodNames: string[] = []) {
64
+ getInstanceMethodNames(instance, excludePrefixes, excludeMethodNames).forEach((methodName) => {
65
+ instance[methodName] = instance[methodName].bind(instance);
66
+ });
67
+ }
68
+
69
+ /**
70
+ * Checks if a method exists on an object and, if it does, invokes it with the provided arguments.
71
+ * @param obj - The object on which to check for the method.
72
+ * @param methodName - The name of the method to check for and invoke.
73
+ * @param methodArgs - The arguments to pass to the method.
74
+ */
75
+ export function checkAndInvokeMethod(obj: any, methodName: string, ...methodArgs: any[]): void {
76
+ if (typeof obj[methodName] === 'function') {
77
+ obj[methodName](...methodArgs);
78
+ }
79
+ }
@@ -0,0 +1,26 @@
1
+ export function destroyCanvas(canvas: HTMLCanvasElement | OffscreenCanvas) {
2
+ const gl = canvas.getContext('webgl');
3
+ if (gl) {
4
+ const extension = gl.getExtension('WEBGL_lose_context');
5
+ if (extension) {
6
+ extension.loseContext();
7
+ }
8
+ }
9
+ // If you are using a 2D context, there's no direct resource release method,
10
+ // but you should ensure all operations are complete before nullifying the canvas
11
+ const ctx = canvas.getContext('2d');
12
+ if (ctx) {
13
+ // Perform any necessary cleanup tasks for 2D context
14
+ ctx.clearRect(0, 0, canvas.width, canvas.height);
15
+ }
16
+ if (!(canvas instanceof OffscreenCanvas)) {
17
+ if (canvas.parentNode) {
18
+ canvas.parentNode.removeChild(canvas);
19
+ }
20
+ }
21
+ canvas.width = 0;
22
+ canvas.height = 0;
23
+
24
+ // @ts-expect-error canvas can't be null;
25
+ canvas = null;
26
+ }
@@ -0,0 +1,126 @@
1
+ export function toHex(color: number): string {
2
+ return `#${color.toString(16)}`;
3
+ }
4
+
5
+ // return a uint color from a hex string
6
+ export function toRgb(hex: string): number {
7
+ return parseInt(hex.replace(/^#/, ''), 16);
8
+ }
9
+
10
+ export class Color {
11
+ public static readonly WHITE: Color = new Color(255, 255, 255);
12
+ public static readonly BLACK: Color = new Color(0, 0, 0);
13
+ public static readonly GREY: Color = new Color(127, 127, 127);
14
+ public static readonly RED: Color = new Color(255, 0, 0);
15
+ public static readonly GREEN: Color = new Color(0, 255, 0);
16
+ public static readonly BLUE: Color = new Color(0, 0, 255);
17
+ public static readonly YELLOW: Color = new Color(255, 255, 0);
18
+ public static readonly MAGENTA: Color = new Color(255, 0, 255);
19
+ public static readonly CYAN: Color = new Color(0, 255, 255);
20
+
21
+ public r: number;
22
+ public g: number;
23
+ public b: number;
24
+
25
+ /**
26
+ * A Color reresented by a red, green and blue component.
27
+ * @param r The red component of the Color OR the full Color in HEX.
28
+ * @param g The green component of the Color.
29
+ * @param b The blue component of the Color.
30
+ */
31
+ constructor(r?: number, g?: number, b?: number) {
32
+ if (r !== undefined && g === undefined) {
33
+ // tslint:disable-next-line no-bitwise
34
+ this.r = (r & (255 << 16)) >> 16;
35
+ // tslint:disable-next-line no-bitwise
36
+ this.g = (r & (255 << 8)) >> 8;
37
+ // tslint:disable-next-line no-bitwise
38
+ this.b = r & 255;
39
+ } else {
40
+ this.r = r || 0;
41
+ this.g = g || 0;
42
+ this.b = b || 0;
43
+ }
44
+ }
45
+
46
+ /**
47
+ * Creates a random Color.
48
+ * @returns The new Color.
49
+ */
50
+ public static random(): Color {
51
+ return new Color(Math.random() * 255, Math.random() * 255, Math.random() * 255);
52
+ }
53
+
54
+ /**
55
+ * Converts the rgb values passed in to hex.
56
+ * @param r The red component to convert.
57
+ * @param g The green component to convert.
58
+ * @param b The blue component to convert.
59
+ * @returns The hex value.
60
+ */
61
+ public static rgbToHex(r: number, g: number, b: number): number {
62
+ // tslint:disable-next-line no-bitwise
63
+ return (r << 16) | (g << 8) | b;
64
+ }
65
+
66
+ public static rgbToHexString(pNumber: number): string {
67
+ let hex = Number(pNumber).toString(16);
68
+ if (hex.length < 2) {
69
+ hex = '0' + hex;
70
+ }
71
+
72
+ return hex;
73
+ }
74
+
75
+ public static rgbToFullHexString(r: number, g: number, b: number): string {
76
+ const rStr: string = Color.rgbToHexString(r);
77
+ const gStr: string = Color.rgbToHexString(g);
78
+ const bStr: string = Color.rgbToHexString(b);
79
+
80
+ return rStr + gStr + bStr;
81
+ }
82
+
83
+ /**
84
+ * Creates a new Color that is linearly interpolated from pA to b .
85
+ * @param pA The start Color.
86
+ * @param b The end Color.
87
+ * @param pPerc The percentage on the path from pA to b .
88
+ * @returns The new Color.
89
+ */
90
+ public static lerp(pA: Color, b: Color, pPerc: number): Color {
91
+ return new Color(pA.r + pPerc * (b.r - pA.r), pA.g + pPerc * (b.g - pA.g), pA.b + pPerc * (b.b - pA.b));
92
+ }
93
+
94
+ /**
95
+ * Creates a new hex Color that is linearly interpolated from pA to b .
96
+ * @param pA The first Color hex.
97
+ * @param b The second Color hex.
98
+ * @param pPerc The percentage along the path from pA to b .
99
+ * @returns The new hex Color.
100
+ */
101
+ public static lerpHex(pA: number, b: number, pPerc: number): number {
102
+ const colorA: Color = new Color(pA);
103
+ const colorB: Color = new Color(b);
104
+ return Color.lerp(colorA, colorB, pPerc).toHex();
105
+ }
106
+
107
+ /**
108
+ * Convert this Color to hex.
109
+ * @returns The Color in hex format.
110
+ */
111
+ public toHex(): number {
112
+ return Color.rgbToHex(this.r, this.g, this.b);
113
+ }
114
+
115
+ public toHexString(): string {
116
+ return Color.rgbToFullHexString(this.r, this.g, this.b);
117
+ }
118
+
119
+ /**
120
+ * Converts the Color components to the 0...1 range.
121
+ * @returns The new Color.
122
+ */
123
+ public toWebGL(): number[] {
124
+ return [this.r / 255, this.g / 255, this.b / 255];
125
+ }
126
+ }
@@ -0,0 +1,86 @@
1
+ import { isDev } from '../env';
2
+ import { capitalize } from '../string';
3
+
4
+ const colors = {
5
+ log: 'background: #74b64c; color: black;',
6
+ warn: 'background: yellow; color: black;',
7
+ error: 'background: red; color: white;',
8
+ };
9
+ const lifecycleColor = 'background: #1f2937; color: #74b64c;';
10
+
11
+ export type LoggerMode = 'development' | 'default' | 'disabled';
12
+
13
+ export class Logger {
14
+ private static _instance: Logger | null = null;
15
+
16
+ private constructor(mode?: LoggerMode) {
17
+ Logger._instance = this;
18
+ Logger.mode = mode !== undefined ? mode : isDev ? 'development' : 'default';
19
+ // check if mode is one of the valid modes
20
+ if (!['development', 'default', 'disabled'].includes(Logger.mode)) {
21
+ Logger.mode = 'default';
22
+ }
23
+ }
24
+
25
+ private static _mode: LoggerMode = 'disabled';
26
+
27
+ static get mode(): LoggerMode {
28
+ return Logger._mode;
29
+ }
30
+
31
+ static set mode(mode: LoggerMode) {
32
+ Logger._mode = mode;
33
+ }
34
+
35
+ public static initialize(mode?: LoggerMode) {
36
+ if (Logger._instance) {
37
+ throw new Error('Logger has already been instantiated.');
38
+ }
39
+ Logger._instance = new Logger(mode);
40
+ }
41
+
42
+ public static log(...args: any) {
43
+ Logger.trace('log', ...args);
44
+ }
45
+
46
+ public static warn(...args: any) {
47
+ Logger.trace('warn', ...args);
48
+ }
49
+
50
+ public static error(...args: any) {
51
+ Logger.trace('error', ...args);
52
+ }
53
+
54
+ public static lifecycle(subject: string, phase: 'init' | 'destroy' = 'init', ...args: any[]) {
55
+ if (Logger.mode === 'disabled') {
56
+ return;
57
+ }
58
+
59
+ const message = `${subject} ${phase}`;
60
+
61
+ if (Logger.mode === 'default') {
62
+ return console.log(`%c ${capitalize(phase)} `, lifecycleColor, message, ...args);
63
+ }
64
+
65
+ console.groupCollapsed(`%c ${capitalize(phase)} `, lifecycleColor, message, ...args);
66
+ console.trace(`%c Stack `, lifecycleColor);
67
+ console.groupEnd();
68
+ }
69
+
70
+ public static trace(type: 'log' | 'warn' | 'error' = 'log', ...args: any[]) {
71
+ if (Logger.mode === 'disabled') {
72
+ return;
73
+ }
74
+ if (type === 'error') {
75
+ // Never collapse errors: console.error keeps them visible and renders
76
+ // Error objects with proper source-mapped stacks.
77
+ return console.error(`%c ${capitalize(type)} `, colors[type], ...args);
78
+ }
79
+ if (Logger.mode === 'default') {
80
+ return console.log(`%c ${capitalize(type)} `, colors[type], ...args);
81
+ }
82
+ console.groupCollapsed(`%c ${capitalize(type)} `, colors[type], ...args);
83
+ console.trace(`%c Stack `, colors[type]);
84
+ console.groupEnd();
85
+ }
86
+ }
@@ -0,0 +1 @@
1
+ export * from './Logger';
@@ -0,0 +1,69 @@
1
+ import { Graphics, Text } from 'pixi.js';
2
+
3
+ // --- Color palette ---
4
+ export const DebugColors = {
5
+ bounds: 0x00ffff, // cyan — container bounds
6
+ innerBounds: 0x00ff00, // green — content/child bounds
7
+ outerBounds: 0xff0000, // red — outer/padding bounds
8
+ direction: 0xffff00, // yellow — flow direction indicators
9
+ gap: 0xff00ff, // magenta — gap/spacing fills
10
+ region: 0x0078ff, // blue — grid regions
11
+ } as const;
12
+
13
+ export const DebugAlpha = {
14
+ stroke: 0.6,
15
+ fill: 0.1,
16
+ fillActive: 0.2,
17
+ crosshair: 0.5,
18
+ } as const;
19
+
20
+ /**
21
+ * Creates a Graphics object pre-configured for debug overlays.
22
+ * Non-interactive, excluded from layout, labeled for identification.
23
+ */
24
+ export function createDebugGraphics(label?: string): Graphics {
25
+ const g = new Graphics();
26
+ g.eventMode = 'none';
27
+ g.interactiveChildren = false;
28
+ g.layout = false;
29
+ g.label = label ?? 'DebugGraphics';
30
+ return g;
31
+ }
32
+
33
+ /**
34
+ * Creates a small monospace Text label for debug overlays.
35
+ * Dark stroke ensures readability over any background.
36
+ */
37
+ export function createDebugLabel(text: string, color: number = DebugColors.bounds): Text {
38
+ const label = new Text({
39
+ text,
40
+ style: {
41
+ fontFamily: 'monospace',
42
+ fontSize: 10,
43
+ fill: color,
44
+ stroke: { color: 0x000000, width: 2 },
45
+ },
46
+ });
47
+ label.eventMode = 'none';
48
+ label.layout = false;
49
+ label.label = 'DebugLabel';
50
+ return label;
51
+ }
52
+
53
+ // --- Registry ---
54
+ // Tracks active debug items. A future DebugPanel can iterate
55
+ // getDebugRegistry() to render a color → label legend.
56
+ type DebugEntry = { label: string; color: number };
57
+ const _registry = new Map<string, DebugEntry>();
58
+
59
+ export function registerDebug(id: string, label: string, color: number): void {
60
+ _registry.set(id, { label, color });
61
+ }
62
+
63
+ export function unregisterDebug(id: string): void {
64
+ _registry.delete(id);
65
+ }
66
+
67
+ export function getDebugRegistry(): ReadonlyMap<string, DebugEntry> {
68
+ return _registry;
69
+ }
@@ -0,0 +1,120 @@
1
+ import type { SceneAssets, SceneDebug, ScenePlugins } from '../display/Scene';
2
+ import type { AppTypeOverrides } from './types';
3
+
4
+ type AppPluginId = AppTypeOverrides['Plugins'];
5
+
6
+ /**
7
+ * Runtime-free helpers that give scene/plugin/popup/entity config files
8
+ * strong type inference without forcing users to extend base classes or
9
+ * hand-type every file-level export.
10
+ *
11
+ * They are all typed identity functions (`(config) => config`), following
12
+ * the Vite / Rollup / Playwright `defineConfig` pattern. No runtime cost:
13
+ * the vite-plugin-caper-config scanner reads the call's object
14
+ * argument via AST just like it reads individual `export const` forms.
15
+ *
16
+ * Example:
17
+ *
18
+ * // src/scenes/MenuScene.ts
19
+ * import { defineScene, Scene } from '@caperjs/core';
20
+ * export const scene = defineScene({
21
+ * id: 'menu',
22
+ * assets: { preload: { bundles: ['menu'] } },
23
+ * plugins: ['google-analytics'],
24
+ * });
25
+ * export default class MenuScene extends Scene { ... }
26
+ */
27
+
28
+ /**
29
+ * Scene metadata accepted by `defineScene`. Mirrors the runtime
30
+ * `SceneConfig` in `display/Scene.ts` — reuses the canonical `SceneAssets`
31
+ * / `ScenePlugins` / `SceneDebug` types so there's one source of truth.
32
+ *
33
+ * `id` is required here (unlike the runtime `SceneConfig` where it's
34
+ * optional, because the scene class itself may carry the id).
35
+ */
36
+ export interface SceneConfigInput {
37
+ /** Unique scene ID used in `app.scenes.loadScene()`. */
38
+ id: string;
39
+ /** Defaults to `true`. Set `false` to hide from discovery without deleting the file. */
40
+ active?: boolean;
41
+ /** Defaults to `true` (code-split). Set `false` to force a static import. */
42
+ dynamic?: boolean;
43
+ /**
44
+ * Asset load configuration. Uses the canonical `SceneAssets` shape:
45
+ *
46
+ * { preload: { bundles: [...] }, background: { bundles: [...] }, autoUnload: true }
47
+ */
48
+ assets?: SceneAssets;
49
+ /** Plugin IDs this scene requires. Loaded lazily on scene load. */
50
+ plugins?: ScenePlugins;
51
+ /** Labels used by the debug UI scene picker. */
52
+ debug?: SceneDebug;
53
+ }
54
+
55
+ export interface PluginConfigInput {
56
+ /** Unique plugin ID used in `app.getPlugin(id)`. */
57
+ id: string;
58
+ /** Defaults to `true`. Set `false` to hide from discovery without deleting the file. */
59
+ active?: boolean;
60
+ /** Defaults to `true` (code-split). Set `false` to force a static import. */
61
+ dynamic?: boolean;
62
+ /**
63
+ * Plugin IDs that must be initialized before this one. The framework
64
+ * topologically sorts plugins by `requires` at bootstrap, so the order
65
+ * in `caper.config.ts` doesn't matter — required deps will always
66
+ * `initialize()` (and `postInitialize()`) before any plugin that
67
+ * requires them.
68
+ *
69
+ * Bootstrap fails loudly if a required plugin id isn't registered in
70
+ * `caper.config.ts plugins[]`, or if there's a dependency cycle. The
71
+ * error message includes the fix.
72
+ *
73
+ * Build-time validation also checks `requires` against discovered
74
+ * plugin IDs and warns on typos before you ever run the app.
75
+ */
76
+ requires?: AppPluginId[];
77
+ }
78
+
79
+ export interface PopupConfigInput {
80
+ /** Unique popup ID used in `app.popups.show(id)`. */
81
+ id: string;
82
+ active?: boolean;
83
+ dynamic?: boolean;
84
+ }
85
+
86
+ export interface EntityConfigInput {
87
+ /** Unique entity ID used in `app.entities.create(id)`. */
88
+ id: string;
89
+ active?: boolean;
90
+ dynamic?: boolean;
91
+ }
92
+
93
+ export interface UIConfigInput {
94
+ /** Unique UI element ID used in `this.add.ui(id)`. */
95
+ id: string;
96
+ /** Defaults to `true`. Set `false` to hide from discovery without deleting the file. */
97
+ active?: boolean;
98
+ /** Defaults to `false` (static import). Set `true` to code-split. */
99
+ dynamic?: boolean;
100
+ }
101
+
102
+ export function defineScene<T extends SceneConfigInput>(config: T): T {
103
+ return config;
104
+ }
105
+
106
+ export function definePlugin<T extends PluginConfigInput>(config: T): T {
107
+ return config;
108
+ }
109
+
110
+ export function definePopup<T extends PopupConfigInput>(config: T): T {
111
+ return config;
112
+ }
113
+
114
+ export function defineEntity<T extends EntityConfigInput>(config: T): T {
115
+ return config;
116
+ }
117
+
118
+ export function defineUI<T extends UIConfigInput>(config: T): T {
119
+ return config;
120
+ }
@@ -0,0 +1,3 @@
1
+ export const env = process.env.NODE_ENV;
2
+ export const isDev = env === 'development';
3
+ export const isProduction = env === 'production';
@@ -0,0 +1,10 @@
1
+ export enum CaperEvent {
2
+ REQUIRED_ASSETS_START = 'caper-required-assets-start',
3
+ REQUIRED_ASSETS_PROGRESS = 'caper-required-assets-progress',
4
+ REQUIRED_ASSETS_COMPLETE = 'caper-required-assets-complete',
5
+ ASSETS_START = 'caper-assets-start',
6
+ ASSETS_PROGRESS = 'caper-assets-progress',
7
+ ASSETS_COMPLETE = 'caper-assets-complete',
8
+ }
9
+
10
+ export type CaperProgressEvent = CustomEvent<{ progress: number }>;
@@ -0,0 +1,45 @@
1
+ import {isPromise} from './promise';
2
+ import {Constructor, ImportListItem, ImportListItemModule} from './types';
3
+
4
+ /**
5
+ * Checks if the given value is a class.
6
+ * @param {any} value The value to check.
7
+ * @returns {boolean} True if the value is a class, false otherwise.
8
+ */
9
+ function isClass(value: any): boolean {
10
+ return typeof value === 'function' && /^class\s/.test(Function.prototype.toString.call(value));
11
+ }
12
+
13
+ /**
14
+ * Retrieves the constructor of the module from the given import list item.
15
+ * If the module is a promise, it waits for it to resolve.
16
+ * If the module is a class, it returns it directly.
17
+ * If the module has a named export specified in the item, it returns that.
18
+ * Otherwise, it returns the default export of the module.
19
+ * @param {ImportListItem<T>} item The import list item to get the module from.
20
+ * @returns {Promise<Constructor<T>>} A promise that resolves to the constructor of the module.
21
+ */
22
+ export async function getDynamicModuleFromImportListItem<T = any>(
23
+ item: ImportListItem<T>,
24
+ ): Promise<ImportListItemModule<T>> {
25
+ let module;
26
+ let ctor: ImportListItemModule<T>;
27
+
28
+ if (isPromise(item.module)) {
29
+ module = await item.module;
30
+ ctor = item?.namedExport ? module[item.namedExport] : module.default;
31
+ } else if (typeof item.module === 'function') {
32
+ if (isClass(item.module)) {
33
+ module = item.module;
34
+ ctor = module as Constructor<T>;
35
+ } else {
36
+ module = await (item.module as () => Promise<any>)();
37
+ ctor = item?.namedExport ? module[item.namedExport] : module.default;
38
+ }
39
+ } else {
40
+ module = item.module;
41
+ ctor = module;
42
+ }
43
+
44
+ return ctor;
45
+ }
@@ -0,0 +1,27 @@
1
+ export * from './array';
2
+ export * from './bind';
3
+ export * from './canvas';
4
+ export * from './color';
5
+ export * from './console';
6
+ export * from './debug';
7
+ export * from './define';
8
+ export * from './env';
9
+ export * from './events';
10
+ export * from './framework';
11
+ export * from './map';
12
+ export * from './math';
13
+ export * from './misc';
14
+ export * from './number';
15
+ export * from './object';
16
+ export * from './padding';
17
+ export * from './pixi';
18
+ export * from './platform';
19
+ export * from './point';
20
+ export * from './promise';
21
+ export * from './random';
22
+ export * from './rect';
23
+ export * from './set';
24
+ export * from './string';
25
+ export * from './text';
26
+ export * from './types';
27
+ export * from './web';