@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.
- package/LICENSE +22 -0
- package/README.md +62 -0
- package/cli/add.mjs +197 -0
- package/cli/audio/cc.mjs +128 -0
- package/cli/audio/index.mjs +42 -0
- package/cli/audio/utils.mjs +56 -0
- package/cli/create-caper.mjs +8 -0
- package/cli/create.mjs +351 -0
- package/cli/install-peerdeps.mjs +57 -0
- package/cli/update.mjs +9 -0
- package/cli/utils.mjs +81 -0
- package/cli/vite.mjs +55 -0
- package/cli/voiceover/generateVoiceoverCSV.mjs +158 -0
- package/cli/voiceover/index.mjs +1 -0
- package/cli.mjs +157 -0
- package/client.d.ts +7 -0
- package/config/assetpack.mjs +212 -0
- package/config/tsconfig.base.json +28 -0
- package/config/vite.mjs +2464 -0
- package/extras/css/accessibility.css +9 -0
- package/extras/css/fullscreen.css +28 -0
- package/extras/css/loader.css +67 -0
- package/extras/llms.txt +1602 -0
- package/lib/CaptionsPlugin-Dc8fIrjy.js +277 -0
- package/lib/CaptionsPlugin-Dc8fIrjy.js.map +1 -0
- package/lib/DataAdapter-BY2114sp.js +84 -0
- package/lib/DataAdapter-BY2114sp.js.map +1 -0
- package/lib/DebugRenderer-BJMLILqI.js +1385 -0
- package/lib/DebugRenderer-BJMLILqI.js.map +1 -0
- package/lib/DevToolsPlugin-wQ5rOkn0.js +31 -0
- package/lib/DevToolsPlugin-wQ5rOkn0.js.map +1 -0
- package/lib/GSAPPlugin-DHhSZKv8.js +350 -0
- package/lib/GSAPPlugin-DHhSZKv8.js.map +1 -0
- package/lib/LayoutPlugin-B-DF9SYM.js +1271 -0
- package/lib/LayoutPlugin-B-DF9SYM.js.map +1 -0
- package/lib/SpinePlugin-Dz_3dljz.js +6077 -0
- package/lib/SpinePlugin-Dz_3dljz.js.map +1 -0
- package/lib/StatsPlugin-Cg82JMBD.js +70 -0
- package/lib/StatsPlugin-Cg82JMBD.js.map +1 -0
- package/lib/VoiceOverPlugin-BR3ImT8C.js +114 -0
- package/lib/VoiceOverPlugin-BR3ImT8C.js.map +1 -0
- package/lib/caper.mjs +1233 -0
- package/lib/caper.mjs.map +1 -0
- package/lib/core/Application.d.ts +268 -0
- package/lib/core/Application.d.ts.map +1 -0
- package/lib/core/config.d.ts +39 -0
- package/lib/core/config.d.ts.map +1 -0
- package/lib/core/create.d.ts +41 -0
- package/lib/core/create.d.ts.map +1 -0
- package/lib/core/globals.d.ts +51 -0
- package/lib/core/globals.d.ts.map +1 -0
- package/lib/core/index.d.ts +7 -0
- package/lib/core/index.d.ts.map +1 -0
- package/lib/core/interfaces/IApplication.d.ts +566 -0
- package/lib/core/interfaces/IApplication.d.ts.map +1 -0
- package/lib/core/interfaces/IApplicationOptions.d.ts +65 -0
- package/lib/core/interfaces/IApplicationOptions.d.ts.map +1 -0
- package/lib/core/interfaces/ICoreFunctions.d.ts +49 -0
- package/lib/core/interfaces/ICoreFunctions.d.ts.map +1 -0
- package/lib/core/interfaces/ICoreSignals.d.ts +57 -0
- package/lib/core/interfaces/ICoreSignals.d.ts.map +1 -0
- package/lib/core/interfaces/IStorageCapability.d.ts +20 -0
- package/lib/core/interfaces/IStorageCapability.d.ts.map +1 -0
- package/lib/core/interfaces/IStorageCapability.test.d.ts +2 -0
- package/lib/core/interfaces/IStorageCapability.test.d.ts.map +1 -0
- package/lib/core/interfaces/index.d.ts +7 -0
- package/lib/core/interfaces/index.d.ts.map +1 -0
- package/lib/core/registries.d.ts +8 -0
- package/lib/core/registries.d.ts.map +1 -0
- package/lib/core/types.d.ts +12 -0
- package/lib/core/types.d.ts.map +1 -0
- package/lib/display/AnimatedSprite.d.ts +40 -0
- package/lib/display/AnimatedSprite.d.ts.map +1 -0
- package/lib/display/Camera.d.ts +102 -0
- package/lib/display/Camera.d.ts.map +1 -0
- package/lib/display/Container.d.ts +115 -0
- package/lib/display/Container.d.ts.map +1 -0
- package/lib/display/Entity.d.ts +46 -0
- package/lib/display/Entity.d.ts.map +1 -0
- package/lib/display/ParticleContainer.d.ts +58 -0
- package/lib/display/ParticleContainer.d.ts.map +1 -0
- package/lib/display/Scene.d.ts +250 -0
- package/lib/display/Scene.d.ts.map +1 -0
- package/lib/display/SceneTransition.d.ts +41 -0
- package/lib/display/SceneTransition.d.ts.map +1 -0
- package/lib/display/SpineAnimation.d.ts +76 -0
- package/lib/display/SpineAnimation.d.ts.map +1 -0
- package/lib/display/Svg.d.ts +5 -0
- package/lib/display/Svg.d.ts.map +1 -0
- package/lib/display/index.d.ts +10 -0
- package/lib/display/index.d.ts.map +1 -0
- package/lib/env.d.ts +6 -0
- package/lib/hello.d.ts +2 -0
- package/lib/hello.d.ts.map +1 -0
- package/lib/index.d.ts +15 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/mixins/animated.d.ts +53 -0
- package/lib/mixins/animated.d.ts.map +1 -0
- package/lib/mixins/factory/Factory.d.ts +8 -0
- package/lib/mixins/factory/Factory.d.ts.map +1 -0
- package/lib/mixins/factory/const.d.ts +67 -0
- package/lib/mixins/factory/const.d.ts.map +1 -0
- package/lib/mixins/factory/index.d.ts +8 -0
- package/lib/mixins/factory/index.d.ts.map +1 -0
- package/lib/mixins/factory/methods.d.ts +3 -0
- package/lib/mixins/factory/methods.d.ts.map +1 -0
- package/lib/mixins/factory/props.d.ts +160 -0
- package/lib/mixins/factory/props.d.ts.map +1 -0
- package/lib/mixins/factory/registry.d.ts +27 -0
- package/lib/mixins/factory/registry.d.ts.map +1 -0
- package/lib/mixins/factory/registry.test.d.ts +2 -0
- package/lib/mixins/factory/registry.test.d.ts.map +1 -0
- package/lib/mixins/factory/schema.d.ts +71 -0
- package/lib/mixins/factory/schema.d.ts.map +1 -0
- package/lib/mixins/factory/ui-registry.d.ts +20 -0
- package/lib/mixins/factory/ui-registry.d.ts.map +1 -0
- package/lib/mixins/factory/utils.d.ts +11 -0
- package/lib/mixins/factory/utils.d.ts.map +1 -0
- package/lib/mixins/focus.d.ts +15 -0
- package/lib/mixins/focus.d.ts.map +1 -0
- package/lib/mixins/index.d.ts +6 -0
- package/lib/mixins/index.d.ts.map +1 -0
- package/lib/mixins/interaction.d.ts +20 -0
- package/lib/mixins/interaction.d.ts.map +1 -0
- package/lib/mixins/signals.d.ts +15 -0
- package/lib/mixins/signals.d.ts.map +1 -0
- package/lib/plugins/AssetsPlugin.d.ts +79 -0
- package/lib/plugins/AssetsPlugin.d.ts.map +1 -0
- package/lib/plugins/DataAdapter.d.ts +95 -0
- package/lib/plugins/DataAdapter.d.ts.map +1 -0
- package/lib/plugins/DevToolsPlugin.d.ts +97 -0
- package/lib/plugins/DevToolsPlugin.d.ts.map +1 -0
- package/lib/plugins/FullScreenPlugin.d.ts +240 -0
- package/lib/plugins/FullScreenPlugin.d.ts.map +1 -0
- package/lib/plugins/GSAPPlugin.d.ts +634 -0
- package/lib/plugins/GSAPPlugin.d.ts.map +1 -0
- package/lib/plugins/KeyboardPlugin.d.ts +53 -0
- package/lib/plugins/KeyboardPlugin.d.ts.map +1 -0
- package/lib/plugins/LayoutPlugin.d.ts +100 -0
- package/lib/plugins/LayoutPlugin.d.ts.map +1 -0
- package/lib/plugins/LookupPlugin.d.ts +223 -0
- package/lib/plugins/LookupPlugin.d.ts.map +1 -0
- package/lib/plugins/Plugin.d.ts +132 -0
- package/lib/plugins/Plugin.d.ts.map +1 -0
- package/lib/plugins/Plugin.test.d.ts +2 -0
- package/lib/plugins/Plugin.test.d.ts.map +1 -0
- package/lib/plugins/PopupManagerPlugin.d.ts +108 -0
- package/lib/plugins/PopupManagerPlugin.d.ts.map +1 -0
- package/lib/plugins/ResizerPlugin.d.ts +62 -0
- package/lib/plugins/ResizerPlugin.d.ts.map +1 -0
- package/lib/plugins/SceneManagerPlugin.d.ts +122 -0
- package/lib/plugins/SceneManagerPlugin.d.ts.map +1 -0
- package/lib/plugins/StatsPlugin.d.ts +8 -0
- package/lib/plugins/StatsPlugin.d.ts.map +1 -0
- package/lib/plugins/TimerPlugin.d.ts +401 -0
- package/lib/plugins/TimerPlugin.d.ts.map +1 -0
- package/lib/plugins/WebEventsPlugin.d.ts +60 -0
- package/lib/plugins/WebEventsPlugin.d.ts.map +1 -0
- package/lib/plugins/actions/ActionsPlugin.d.ts +39 -0
- package/lib/plugins/actions/ActionsPlugin.d.ts.map +1 -0
- package/lib/plugins/actions/constants.d.ts +52 -0
- package/lib/plugins/actions/constants.d.ts.map +1 -0
- package/lib/plugins/actions/index.d.ts +5 -0
- package/lib/plugins/actions/index.d.ts.map +1 -0
- package/lib/plugins/actions/methods.d.ts +11 -0
- package/lib/plugins/actions/methods.d.ts.map +1 -0
- package/lib/plugins/actions/types.d.ts +25 -0
- package/lib/plugins/actions/types.d.ts.map +1 -0
- package/lib/plugins/audio/AudioChannel.d.ts +46 -0
- package/lib/plugins/audio/AudioChannel.d.ts.map +1 -0
- package/lib/plugins/audio/AudioChannel.test.d.ts +2 -0
- package/lib/plugins/audio/AudioChannel.test.d.ts.map +1 -0
- package/lib/plugins/audio/AudioInstance.d.ts +79 -0
- package/lib/plugins/audio/AudioInstance.d.ts.map +1 -0
- package/lib/plugins/audio/AudioManagerPlugin.d.ts +323 -0
- package/lib/plugins/audio/AudioManagerPlugin.d.ts.map +1 -0
- package/lib/plugins/audio/VoiceOverPlugin.d.ts +69 -0
- package/lib/plugins/audio/VoiceOverPlugin.d.ts.map +1 -0
- package/lib/plugins/audio/index.d.ts +4 -0
- package/lib/plugins/audio/index.d.ts.map +1 -0
- package/lib/plugins/breakpoints/BreakpointPlugin.d.ts +109 -0
- package/lib/plugins/breakpoints/BreakpointPlugin.d.ts.map +1 -0
- package/lib/plugins/breakpoints/BreakpointPlugin.test.d.ts +2 -0
- package/lib/plugins/breakpoints/BreakpointPlugin.test.d.ts.map +1 -0
- package/lib/plugins/breakpoints/evaluate.d.ts +53 -0
- package/lib/plugins/breakpoints/evaluate.d.ts.map +1 -0
- package/lib/plugins/breakpoints/evaluate.test.d.ts +2 -0
- package/lib/plugins/breakpoints/evaluate.test.d.ts.map +1 -0
- package/lib/plugins/breakpoints/index.d.ts +4 -0
- package/lib/plugins/breakpoints/index.d.ts.map +1 -0
- package/lib/plugins/breakpoints/methods.d.ts +23 -0
- package/lib/plugins/breakpoints/methods.d.ts.map +1 -0
- package/lib/plugins/breakpoints/types.d.ts +70 -0
- package/lib/plugins/breakpoints/types.d.ts.map +1 -0
- package/lib/plugins/captions/CaptionsPlugin.d.ts +150 -0
- package/lib/plugins/captions/CaptionsPlugin.d.ts.map +1 -0
- package/lib/plugins/captions/CaptionsRenderer.d.ts +37 -0
- package/lib/plugins/captions/CaptionsRenderer.d.ts.map +1 -0
- package/lib/plugins/captions/index.d.ts +3 -0
- package/lib/plugins/captions/index.d.ts.map +1 -0
- package/lib/plugins/defaults.d.ts +4 -0
- package/lib/plugins/defaults.d.ts.map +1 -0
- package/lib/plugins/focus/FocusManagerPlugin.d.ts +148 -0
- package/lib/plugins/focus/FocusManagerPlugin.d.ts.map +1 -0
- package/lib/plugins/focus/FocusOutliner.d.ts +32 -0
- package/lib/plugins/focus/FocusOutliner.d.ts.map +1 -0
- package/lib/plugins/focus/index.d.ts +3 -0
- package/lib/plugins/focus/index.d.ts.map +1 -0
- package/lib/plugins/i18nPlugin.d.ts +128 -0
- package/lib/plugins/i18nPlugin.d.ts.map +1 -0
- package/lib/plugins/index.d.ts +18 -0
- package/lib/plugins/index.d.ts.map +1 -0
- package/lib/plugins/input/AbstractControls.d.ts +8 -0
- package/lib/plugins/input/AbstractControls.d.ts.map +1 -0
- package/lib/plugins/input/Controls.d.ts +16 -0
- package/lib/plugins/input/Controls.d.ts.map +1 -0
- package/lib/plugins/input/InputPlugin.d.ts +52 -0
- package/lib/plugins/input/InputPlugin.d.ts.map +1 -0
- package/lib/plugins/input/constants.d.ts +8 -0
- package/lib/plugins/input/constants.d.ts.map +1 -0
- package/lib/plugins/input/index.d.ts +10 -0
- package/lib/plugins/input/index.d.ts.map +1 -0
- package/lib/plugins/input/interfaces.d.ts +30 -0
- package/lib/plugins/input/interfaces.d.ts.map +1 -0
- package/lib/plugins/input/keyboard/KeyboardContols.d.ts +28 -0
- package/lib/plugins/input/keyboard/KeyboardContols.d.ts.map +1 -0
- package/lib/plugins/input/keyboard/index.d.ts +3 -0
- package/lib/plugins/input/keyboard/index.d.ts.map +1 -0
- package/lib/plugins/input/keyboard/interfaces.d.ts +18 -0
- package/lib/plugins/input/keyboard/interfaces.d.ts.map +1 -0
- package/lib/plugins/input/methods.d.ts +4 -0
- package/lib/plugins/input/methods.d.ts.map +1 -0
- package/lib/plugins/input/touch/TouchControls.d.ts +35 -0
- package/lib/plugins/input/touch/TouchControls.d.ts.map +1 -0
- package/lib/plugins/input/touch/constants.d.ts +14 -0
- package/lib/plugins/input/touch/constants.d.ts.map +1 -0
- package/lib/plugins/input/touch/index.d.ts +4 -0
- package/lib/plugins/input/touch/index.d.ts.map +1 -0
- package/lib/plugins/input/touch/interfaces.d.ts +15 -0
- package/lib/plugins/input/touch/interfaces.d.ts.map +1 -0
- package/lib/plugins/input/types.d.ts +32 -0
- package/lib/plugins/input/types.d.ts.map +1 -0
- package/lib/plugins/input/utils.d.ts +23 -0
- package/lib/plugins/input/utils.d.ts.map +1 -0
- package/lib/plugins/spine/SpinePlugin.d.ts +6 -0
- package/lib/plugins/spine/SpinePlugin.d.ts.map +1 -0
- package/lib/plugins/spine/pixi-spine/BatchableSpineSlot.d.ts +31 -0
- package/lib/plugins/spine/pixi-spine/BatchableSpineSlot.d.ts.map +1 -0
- package/lib/plugins/spine/pixi-spine/Spine.d.ts +211 -0
- package/lib/plugins/spine/pixi-spine/Spine.d.ts.map +1 -0
- package/lib/plugins/spine/pixi-spine/SpineDebugRenderer.d.ts +81 -0
- package/lib/plugins/spine/pixi-spine/SpineDebugRenderer.d.ts.map +1 -0
- package/lib/plugins/spine/pixi-spine/SpinePipe.d.ts +21 -0
- package/lib/plugins/spine/pixi-spine/SpinePipe.d.ts.map +1 -0
- package/lib/plugins/spine/pixi-spine/SpineTexture.d.ts +16 -0
- package/lib/plugins/spine/pixi-spine/SpineTexture.d.ts.map +1 -0
- package/lib/plugins/spine/pixi-spine/assets/atlasLoader.d.ts +10 -0
- package/lib/plugins/spine/pixi-spine/assets/atlasLoader.d.ts.map +1 -0
- package/lib/plugins/spine/pixi-spine/assets/skeletonLoader.d.ts +6 -0
- package/lib/plugins/spine/pixi-spine/assets/skeletonLoader.d.ts.map +1 -0
- package/lib/plugins/spine/pixi-spine/darktint/DarkTintBatchGeometry.d.ts +5 -0
- package/lib/plugins/spine/pixi-spine/darktint/DarkTintBatchGeometry.d.ts.map +1 -0
- package/lib/plugins/spine/pixi-spine/darktint/DarkTintBatcher.d.ts +22 -0
- package/lib/plugins/spine/pixi-spine/darktint/DarkTintBatcher.d.ts.map +1 -0
- package/lib/plugins/spine/pixi-spine/darktint/DarkTintShader.d.ts +5 -0
- package/lib/plugins/spine/pixi-spine/darktint/DarkTintShader.d.ts.map +1 -0
- package/lib/plugins/spine/pixi-spine/darktint/darkTintBit.d.ts +51 -0
- package/lib/plugins/spine/pixi-spine/darktint/darkTintBit.d.ts.map +1 -0
- package/lib/plugins/spine/pixi-spine/index.d.ts +9 -0
- package/lib/plugins/spine/pixi-spine/index.d.ts.map +1 -0
- package/lib/plugins/spine/pixi-spine/require-shim.d.ts +34 -0
- package/lib/plugins/spine/pixi-spine/require-shim.d.ts.map +1 -0
- package/lib/registries-CYCaYKZI.js +6885 -0
- package/lib/registries-CYCaYKZI.js.map +1 -0
- package/lib/signals/Signal.d.ts +16 -0
- package/lib/signals/Signal.d.ts.map +1 -0
- package/lib/signals/Signal.test.d.ts +2 -0
- package/lib/signals/Signal.test.d.ts.map +1 -0
- package/lib/signals/index.d.ts +3 -0
- package/lib/signals/index.d.ts.map +1 -0
- package/lib/store/Store.d.ts +56 -0
- package/lib/store/Store.d.ts.map +1 -0
- package/lib/store/Store.test.d.ts +2 -0
- package/lib/store/Store.test.d.ts.map +1 -0
- package/lib/store/index.d.ts +2 -0
- package/lib/store/index.d.ts.map +1 -0
- package/lib/types/framework.d.ts +46 -0
- package/lib/types/gsap.d.ts +23 -0
- package/lib/ui/Button.d.ts +162 -0
- package/lib/ui/Button.d.ts.map +1 -0
- package/lib/ui/FlexContainer.d.ts +109 -0
- package/lib/ui/FlexContainer.d.ts.map +1 -0
- package/lib/ui/Input.d.ts +384 -0
- package/lib/ui/Input.d.ts.map +1 -0
- package/lib/ui/Joystick.d.ts +61 -0
- package/lib/ui/Joystick.d.ts.map +1 -0
- package/lib/ui/Popup.d.ts +109 -0
- package/lib/ui/Popup.d.ts.map +1 -0
- package/lib/ui/Toast.d.ts +131 -0
- package/lib/ui/Toast.d.ts.map +1 -0
- package/lib/ui/Toaster.d.ts +188 -0
- package/lib/ui/Toaster.d.ts.map +1 -0
- package/lib/ui/UICanvas.d.ts +155 -0
- package/lib/ui/UICanvas.d.ts.map +1 -0
- package/lib/ui/index.d.ts +9 -0
- package/lib/ui/index.d.ts.map +1 -0
- package/lib/utils/array.d.ts +11 -0
- package/lib/utils/array.d.ts.map +1 -0
- package/lib/utils/bind.d.ts +21 -0
- package/lib/utils/bind.d.ts.map +1 -0
- package/lib/utils/canvas.d.ts +2 -0
- package/lib/utils/canvas.d.ts.map +1 -0
- package/lib/utils/color.d.ts +66 -0
- package/lib/utils/color.d.ts.map +1 -0
- package/lib/utils/console/Logger.d.ts +15 -0
- package/lib/utils/console/Logger.d.ts.map +1 -0
- package/lib/utils/console/index.d.ts +2 -0
- package/lib/utils/console/index.d.ts.map +1 -0
- package/lib/utils/debug.d.ts +34 -0
- package/lib/utils/debug.d.ts.map +1 -0
- package/lib/utils/define.d.ts +100 -0
- package/lib/utils/define.d.ts.map +1 -0
- package/lib/utils/env.d.ts +4 -0
- package/lib/utils/env.d.ts.map +1 -0
- package/lib/utils/events.d.ts +12 -0
- package/lib/utils/events.d.ts.map +1 -0
- package/lib/utils/framework.d.ts +12 -0
- package/lib/utils/framework.d.ts.map +1 -0
- package/lib/utils/index.d.ts +28 -0
- package/lib/utils/index.d.ts.map +1 -0
- package/lib/utils/map.d.ts +31 -0
- package/lib/utils/map.d.ts.map +1 -0
- package/lib/utils/math.d.ts +15 -0
- package/lib/utils/math.d.ts.map +1 -0
- package/lib/utils/misc.d.ts +13 -0
- package/lib/utils/misc.d.ts.map +1 -0
- package/lib/utils/number.d.ts +2 -0
- package/lib/utils/number.d.ts.map +1 -0
- package/lib/utils/object.d.ts +21 -0
- package/lib/utils/object.d.ts.map +1 -0
- package/lib/utils/padding.d.ts +4 -0
- package/lib/utils/padding.d.ts.map +1 -0
- package/lib/utils/pixi.d.ts +42 -0
- package/lib/utils/pixi.d.ts.map +1 -0
- package/lib/utils/platform.d.ts +20 -0
- package/lib/utils/platform.d.ts.map +1 -0
- package/lib/utils/point.d.ts +66 -0
- package/lib/utils/point.d.ts.map +1 -0
- package/lib/utils/promise/Queue.d.ts +60 -0
- package/lib/utils/promise/Queue.d.ts.map +1 -0
- package/lib/utils/promise/functions.d.ts +14 -0
- package/lib/utils/promise/functions.d.ts.map +1 -0
- package/lib/utils/promise/index.d.ts +3 -0
- package/lib/utils/promise/index.d.ts.map +1 -0
- package/lib/utils/random.d.ts +42 -0
- package/lib/utils/random.d.ts.map +1 -0
- package/lib/utils/rect.d.ts +26 -0
- package/lib/utils/rect.d.ts.map +1 -0
- package/lib/utils/set.d.ts +15 -0
- package/lib/utils/set.d.ts.map +1 -0
- package/lib/utils/string.d.ts +3 -0
- package/lib/utils/string.d.ts.map +1 -0
- package/lib/utils/text.d.ts +3 -0
- package/lib/utils/text.d.ts.map +1 -0
- package/lib/utils/typefilters.d.ts +4 -0
- package/lib/utils/typefilters.d.ts.map +1 -0
- package/lib/utils/types.d.ts +209 -0
- package/lib/utils/types.d.ts.map +1 -0
- package/lib/utils/vite.d.ts +25 -0
- package/lib/utils/vite.d.ts.map +1 -0
- package/lib/utils/web.d.ts +3 -0
- package/lib/utils/web.d.ts.map +1 -0
- package/lib/version.d.ts +3 -0
- package/lib/version.d.ts.map +1 -0
- package/lib/webgl-check.d.ts +2 -0
- package/lib/webgl-check.d.ts.map +1 -0
- package/package.json +138 -0
- package/src/core/Application.ts +1091 -0
- package/src/core/config.ts +168 -0
- package/src/core/create.ts +186 -0
- package/src/core/globals.ts +299 -0
- package/src/core/index.ts +6 -0
- package/src/core/interfaces/IApplication.ts +628 -0
- package/src/core/interfaces/IApplicationOptions.ts +81 -0
- package/src/core/interfaces/ICoreFunctions.ts +86 -0
- package/src/core/interfaces/ICoreSignals.ts +77 -0
- package/src/core/interfaces/IStorageCapability.test.ts +27 -0
- package/src/core/interfaces/IStorageCapability.ts +26 -0
- package/src/core/interfaces/index.ts +6 -0
- package/src/core/registries.ts +7 -0
- package/src/core/types.ts +13 -0
- package/src/display/AnimatedSprite.ts +227 -0
- package/src/display/Camera.ts +371 -0
- package/src/display/Container.ts +240 -0
- package/src/display/Entity.ts +50 -0
- package/src/display/ParticleContainer.ts +107 -0
- package/src/display/Scene.ts +305 -0
- package/src/display/SceneTransition.ts +108 -0
- package/src/display/SpineAnimation.ts +170 -0
- package/src/display/Svg.ts +9 -0
- package/src/display/index.ts +11 -0
- package/src/env.d.ts +6 -0
- package/src/hello.ts +20 -0
- package/src/index.ts +17 -0
- package/src/mixins/animated.ts +340 -0
- package/src/mixins/factory/Factory.ts +24 -0
- package/src/mixins/factory/const.ts +363 -0
- package/src/mixins/factory/index.ts +7 -0
- package/src/mixins/factory/methods.ts +21 -0
- package/src/mixins/factory/props.ts +207 -0
- package/src/mixins/factory/registry.test.ts +83 -0
- package/src/mixins/factory/registry.ts +61 -0
- package/src/mixins/factory/schema.ts +153 -0
- package/src/mixins/factory/ui-registry.ts +54 -0
- package/src/mixins/factory/utils.ts +130 -0
- package/src/mixins/focus.ts +124 -0
- package/src/mixins/index.ts +5 -0
- package/src/mixins/interaction.ts +74 -0
- package/src/mixins/signals.ts +49 -0
- package/src/plugins/AssetsPlugin.ts +407 -0
- package/src/plugins/DataAdapter.ts +259 -0
- package/src/plugins/DevToolsPlugin.ts +103 -0
- package/src/plugins/FullScreenPlugin.ts +359 -0
- package/src/plugins/GSAPPlugin.ts +811 -0
- package/src/plugins/KeyboardPlugin.ts +160 -0
- package/src/plugins/LayoutPlugin.ts +127 -0
- package/src/plugins/LookupPlugin.ts +308 -0
- package/src/plugins/Plugin.test.ts +73 -0
- package/src/plugins/Plugin.ts +200 -0
- package/src/plugins/PopupManagerPlugin.ts +263 -0
- package/src/plugins/ResizerPlugin.ts +220 -0
- package/src/plugins/SceneManagerPlugin.ts +669 -0
- package/src/plugins/StatsPlugin.ts +24 -0
- package/src/plugins/TimerPlugin.ts +841 -0
- package/src/plugins/WebEventsPlugin.ts +132 -0
- package/src/plugins/actions/ActionsPlugin.ts +113 -0
- package/src/plugins/actions/constants.ts +45 -0
- package/src/plugins/actions/index.ts +4 -0
- package/src/plugins/actions/methods.ts +28 -0
- package/src/plugins/actions/types.ts +47 -0
- package/src/plugins/audio/AudioChannel.test.ts +101 -0
- package/src/plugins/audio/AudioChannel.ts +164 -0
- package/src/plugins/audio/AudioInstance.ts +228 -0
- package/src/plugins/audio/AudioManagerPlugin.ts +903 -0
- package/src/plugins/audio/VoiceOverPlugin.ts +354 -0
- package/src/plugins/audio/index.ts +3 -0
- package/src/plugins/breakpoints/BreakpointPlugin.test.ts +228 -0
- package/src/plugins/breakpoints/BreakpointPlugin.ts +293 -0
- package/src/plugins/breakpoints/evaluate.test.ts +239 -0
- package/src/plugins/breakpoints/evaluate.ts +201 -0
- package/src/plugins/breakpoints/index.ts +3 -0
- package/src/plugins/breakpoints/methods.ts +22 -0
- package/src/plugins/breakpoints/types.ts +86 -0
- package/src/plugins/captions/CaptionsPlugin.ts +468 -0
- package/src/plugins/captions/CaptionsRenderer.ts +184 -0
- package/src/plugins/captions/font/Sans.fnt +116 -0
- package/src/plugins/captions/font/Sans.png +0 -0
- package/src/plugins/captions/index.ts +2 -0
- package/src/plugins/defaults.ts +95 -0
- package/src/plugins/focus/FocusManagerPlugin.ts +773 -0
- package/src/plugins/focus/FocusOutliner.ts +111 -0
- package/src/plugins/focus/index.ts +2 -0
- package/src/plugins/i18nPlugin.ts +284 -0
- package/src/plugins/index.ts +17 -0
- package/src/plugins/input/AbstractControls.ts +15 -0
- package/src/plugins/input/Controls.ts +55 -0
- package/src/plugins/input/InputPlugin.ts +168 -0
- package/src/plugins/input/constants.ts +12 -0
- package/src/plugins/input/index.ts +9 -0
- package/src/plugins/input/interfaces.ts +37 -0
- package/src/plugins/input/keyboard/KeyboardContols.ts +182 -0
- package/src/plugins/input/keyboard/index.ts +2 -0
- package/src/plugins/input/keyboard/interfaces.ts +21 -0
- package/src/plugins/input/methods.ts +9 -0
- package/src/plugins/input/touch/TouchControls.ts +237 -0
- package/src/plugins/input/touch/constants.ts +34 -0
- package/src/plugins/input/touch/index.ts +3 -0
- package/src/plugins/input/touch/interfaces.ts +15 -0
- package/src/plugins/input/types.ts +41 -0
- package/src/plugins/input/utils.ts +10 -0
- package/src/plugins/spine/SpinePlugin.ts +14 -0
- package/src/plugins/spine/pixi-spine/BatchableSpineSlot.ts +138 -0
- package/src/plugins/spine/pixi-spine/Spine.ts +897 -0
- package/src/plugins/spine/pixi-spine/SpineDebugRenderer.ts +615 -0
- package/src/plugins/spine/pixi-spine/SpinePipe.ts +197 -0
- package/src/plugins/spine/pixi-spine/SpineTexture.ts +143 -0
- package/src/plugins/spine/pixi-spine/assets/atlasLoader.ts +156 -0
- package/src/plugins/spine/pixi-spine/assets/skeletonLoader.ts +80 -0
- package/src/plugins/spine/pixi-spine/darktint/DarkTintBatchGeometry.ts +92 -0
- package/src/plugins/spine/pixi-spine/darktint/DarkTintBatcher.ts +186 -0
- package/src/plugins/spine/pixi-spine/darktint/DarkTintShader.ts +74 -0
- package/src/plugins/spine/pixi-spine/darktint/darkTintBit.ts +77 -0
- package/src/plugins/spine/pixi-spine/index.ts +43 -0
- package/src/plugins/spine/pixi-spine/require-shim.ts +43 -0
- package/src/signals/Signal.test.ts +54 -0
- package/src/signals/Signal.ts +68 -0
- package/src/signals/index.ts +10 -0
- package/src/store/Store.test.ts +146 -0
- package/src/store/Store.ts +192 -0
- package/src/store/index.ts +1 -0
- package/src/types/framework.d.ts +47 -0
- package/src/types/gsap.d.ts +26 -0
- package/src/ui/Button.ts +454 -0
- package/src/ui/FlexContainer.ts +526 -0
- package/src/ui/Input.ts +1274 -0
- package/src/ui/Joystick.ts +288 -0
- package/src/ui/Popup.ts +242 -0
- package/src/ui/Toast.ts +399 -0
- package/src/ui/Toaster.ts +409 -0
- package/src/ui/UICanvas.ts +812 -0
- package/src/ui/index.ts +8 -0
- package/src/utils/array.ts +24 -0
- package/src/utils/bind.ts +79 -0
- package/src/utils/canvas.ts +26 -0
- package/src/utils/color.ts +126 -0
- package/src/utils/console/Logger.ts +86 -0
- package/src/utils/console/index.ts +1 -0
- package/src/utils/debug.ts +69 -0
- package/src/utils/define.ts +120 -0
- package/src/utils/env.ts +3 -0
- package/src/utils/events.ts +10 -0
- package/src/utils/framework.ts +45 -0
- package/src/utils/index.ts +27 -0
- package/src/utils/map.ts +59 -0
- package/src/utils/math.ts +19 -0
- package/src/utils/misc.ts +45 -0
- package/src/utils/number.ts +3 -0
- package/src/utils/object.ts +43 -0
- package/src/utils/padding.ts +43 -0
- package/src/utils/pixi.ts +116 -0
- package/src/utils/platform.ts +33 -0
- package/src/utils/point.ts +123 -0
- package/src/utils/promise/Queue.ts +125 -0
- package/src/utils/promise/functions.ts +16 -0
- package/src/utils/promise/index.ts +2 -0
- package/src/utils/random.ts +69 -0
- package/src/utils/rect.ts +50 -0
- package/src/utils/set.ts +32 -0
- package/src/utils/string.ts +9 -0
- package/src/utils/text.ts +30 -0
- package/src/utils/typefilters.ts +29 -0
- package/src/utils/types.ts +426 -0
- package/src/utils/vite.ts +41 -0
- package/src/utils/web.ts +7 -0
- package/src/version.ts +3 -0
- package/src/webgl-check.ts +12 -0
- package/templates/app/default/.eslintrc.json +21 -0
- package/templates/app/default/.meta.json +4 -0
- package/templates/app/default/.nvmrc +1 -0
- package/templates/app/default/.prettierrc.json +7 -0
- package/templates/app/default/README.md +8 -0
- package/templates/app/default/assets/audio{m}/music/Cheerful Annoyance.ogg +0 -0
- package/templates/app/default/assets/audio{m}/music/Drumming Sticks.ogg +0 -0
- package/templates/app/default/assets/audio{m}/music/Game Over.ogg +0 -0
- package/templates/app/default/assets/audio{m}/music/Mishief Stroll.ogg +0 -0
- package/templates/app/default/assets/audio{m}/music/Night at the Beach.ogg +0 -0
- package/templates/app/default/assets/audio{m}/sfx/click.ogg +0 -0
- package/templates/app/default/assets/audio{m}/sfx/hover.ogg +0 -0
- package/templates/app/default/assets/required{m}/caper.png +0 -0
- package/templates/app/default/assets/required{m}/fonts{fix}/SpaceGrotesk-Bold{family=Space Grotesk}{wf}.ttf +0 -0
- package/templates/app/default/assets/required{m}/fonts{fix}/SpaceGrotesk-Medium{family=Space Grotesk}{wf}.ttf +0 -0
- package/templates/app/default/assets/required{m}/fonts{fix}/SpaceGrotesk-Regular{family=Space Grotesk}{wf}.ttf +0 -0
- package/templates/app/default/assets/required{m}/fonts{fix}/Syncopate-Bold{family=Syncopate}{wf}.ttf +0 -0
- package/templates/app/default/assets/required{m}/ui{tps}/btn/blue.png +0 -0
- package/templates/app/default/assets/required{m}/ui{tps}/btn/green.png +0 -0
- package/templates/app/default/assets/required{m}/ui{tps}/btn/grey.png +0 -0
- package/templates/app/default/assets/required{m}/ui{tps}/btn/orange.png +0 -0
- package/templates/app/default/assets/required{m}/ui{tps}/btn/purple.png +0 -0
- package/templates/app/default/assets/required{m}/ui{tps}/btn/red.png +0 -0
- package/templates/app/default/assets/required{m}/ui{tps}/btn/yellow.png +0 -0
- package/templates/app/default/assets/required{m}/ui{tps}/btn_a/down.png +0 -0
- package/templates/app/default/assets/required{m}/ui{tps}/btn_a/over.png +0 -0
- package/templates/app/default/assets/required{m}/ui{tps}/btn_a/up.png +0 -0
- package/templates/app/default/assets/required{m}/ui{tps}/btn_b/down.png +0 -0
- package/templates/app/default/assets/required{m}/ui{tps}/btn_b/over.png +0 -0
- package/templates/app/default/assets/required{m}/ui{tps}/btn_b/up.png +0 -0
- package/templates/app/default/assets/required{m}/ui{tps}/joystick/base.png +0 -0
- package/templates/app/default/assets/required{m}/ui{tps}/joystick/handle.png +0 -0
- package/templates/app/default/assets/required{m}/wordmark.svg +1 -0
- package/templates/app/default/assets/spine{m}/spineboy-pro.png +0 -0
- package/templates/app/default/assets/spine{m}/spineboy-pro.skel +0 -0
- package/templates/app/default/assets/spine{m}/spineboy-pro{fix}.atlas +94 -0
- package/templates/app/default/caper.config.ts +60 -0
- package/templates/app/default/index.html +23 -0
- package/templates/app/default/package.template.json +17 -0
- package/templates/app/default/public/favicon.ico +0 -0
- package/templates/app/default/src/__APPLICATION_NAME__.ts +3 -0
- package/templates/app/default/src/main.ts +9 -0
- package/templates/app/default/src/scenes/Base.ts +39 -0
- package/templates/app/default/src/scenes/Game.ts +34 -0
- package/templates/app/default/src/scenes/Splash.ts +70 -0
- package/templates/app/default/src/scenes/Start.ts +90 -0
- package/templates/app/default/src/utils/Constants.ts +3 -0
- package/templates/app/default/tsconfig.json +1 -0
- package/templates/plugin/package.template.json +33 -0
- package/templates/plugin/src/Plugin.template.ts +24 -0
- package/templates/plugin/src/index.template.ts +3 -0
- package/templates/plugin/tsconfig.template.json +43 -0
- package/templates/plugin/vite-env.template.d.ts +16 -0
- 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
|
+
}
|
package/src/utils/set.ts
ADDED
|
@@ -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
|
+
}
|