├── .gitignore ├── LICENSE ├── README.md ├── index.html ├── package-lock.json ├── package.json ├── public └── vite.svg ├── src ├── App.vue ├── components │ ├── Game.vue │ └── PhaserContainer.vue ├── game │ ├── assets │ │ ├── bomb.png │ │ ├── sky.png │ │ └── thud.mp3 │ ├── game.ts │ └── scenes │ │ ├── BootScene.ts │ │ └── PlayScene.ts ├── main.ts └── vite-env.d.ts ├── tsconfig.app.json ├── tsconfig.json ├── tsconfig.node.json └── vite.config.ts /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | pnpm-debug.log* 8 | lerna-debug.log* 9 | 10 | node_modules 11 | dist 12 | dist-ssr 13 | *.local 14 | 15 | # Editor directories and files 16 | .vscode/* 17 | .idea 18 | .DS_Store 19 | *.suo 20 | *.ntvs* 21 | *.njsproj 22 | *.sln 23 | *.sw? 24 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2025 Markus Appel 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # vue-phaser-vite 2 | 3 | #### Vite boilerplate that integrates Phaser 3 into a Vue 3 project. 4 | 5 | This project template has been set up using **Vite** and includes: 6 | * *Typescript* 7 | * *Code Splitting* 8 | * *Source Minification* 9 | * *CSS Postprocessing* 10 | 11 | ## Build Setup 12 | 13 | ``` bash 14 | # install dependencies 15 | npm install 16 | 17 | # serve with live reloading on localhost 18 | npm run dev 19 | 20 | # build for production 21 | npm run build 22 | 23 | # serve your production build on localhost 24 | npm run preview 25 | ``` 26 | 27 | ## Extending the project to your needs 28 | 29 | If you want to add more features like *linting*, *unit testing* or *SCSS* to 30 | your own project, you can do so quite easily with Vite. Read the 31 | documentation to get 32 | familiar with the tool. Also take a look at 33 | 34 | awesome-vite for plugins and more. 35 | 36 | ## Converting into your own repository 37 | 38 | If you want to maintain your own repo based on this boilerplate, you first need 39 | to detach it from this repo. Here is what you need to do: 40 | 41 | 1. edit these files and enter your own project info 42 | * *package.json* 43 | * *README.md* 44 | * *index.html* 45 | 46 | 2. delete *LICENSE* (and perhaps add your own) 47 | 48 | 3. reinitialize git 49 |
rm -rf .git
50 | git init
51 | git add .
52 | git commit -m "Initial commit"
53 | 
54 | 55 | ## Sharing data between Vue and Phaser 56 | 57 | You might want to expose some game state that lives inside of your Phaser code 58 | to your Vue components and vice versa, for example a highscore. Here are two 59 | ways you can achieve sharing state between the frameworks. 60 | 61 | * Import a Phaser EventEmitter instance in 62 | both your Vue components and Phaser modules. Both sides can then listen to and 63 | emit events on that emitter. 64 | 65 | * Have both sides share a 66 | Pinia store instance. It works like an event emitter, but can also hold 67 | state. The Pinia store is nicely integrated into your Vue components and is easily 68 | accessible on the Phaser side by applying the *useStore* hook. 69 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Vue + Phaser + Vite 8 | 9 | 10 |
11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vue-phaser-vite", 3 | "version": "1.1.0", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "vue-phaser-vite", 9 | "version": "1.1.0", 10 | "license": "MIT", 11 | "dependencies": { 12 | "phaser": "^3.88.2", 13 | "vue": "^3.5.13" 14 | }, 15 | "devDependencies": { 16 | "@types/node": "^22.13.5", 17 | "@vitejs/plugin-vue": "^5.2.1", 18 | "@vue/tsconfig": "^0.7.0", 19 | "typescript": "~5.7.2", 20 | "vite": "^6.2.0", 21 | "vue-tsc": "^2.2.4" 22 | } 23 | }, 24 | "node_modules/@babel/helper-string-parser": { 25 | "version": "7.25.9", 26 | "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", 27 | "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", 28 | "license": "MIT", 29 | "engines": { 30 | "node": ">=6.9.0" 31 | } 32 | }, 33 | "node_modules/@babel/helper-validator-identifier": { 34 | "version": "7.25.9", 35 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", 36 | "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", 37 | "license": "MIT", 38 | "engines": { 39 | "node": ">=6.9.0" 40 | } 41 | }, 42 | "node_modules/@babel/parser": { 43 | "version": "7.26.9", 44 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.9.tgz", 45 | "integrity": "sha512-81NWa1njQblgZbQHxWHpxxCzNsa3ZwvFqpUg7P+NNUU6f3UU2jBEg4OlF/J6rl8+PQGh1q6/zWScd001YwcA5A==", 46 | "license": "MIT", 47 | "dependencies": { 48 | "@babel/types": "^7.26.9" 49 | }, 50 | "bin": { 51 | "parser": "bin/babel-parser.js" 52 | }, 53 | "engines": { 54 | "node": ">=6.0.0" 55 | } 56 | }, 57 | "node_modules/@babel/types": { 58 | "version": "7.26.9", 59 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.9.tgz", 60 | "integrity": "sha512-Y3IR1cRnOxOCDvMmNiym7XpXQ93iGDDPHx+Zj+NM+rg0fBaShfQLkg+hKPaZCEvg5N/LeCo4+Rj/i3FuJsIQaw==", 61 | "license": "MIT", 62 | "dependencies": { 63 | "@babel/helper-string-parser": "^7.25.9", 64 | "@babel/helper-validator-identifier": "^7.25.9" 65 | }, 66 | "engines": { 67 | "node": ">=6.9.0" 68 | } 69 | }, 70 | "node_modules/@esbuild/aix-ppc64": { 71 | "version": "0.25.0", 72 | "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.0.tgz", 73 | "integrity": "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==", 74 | "cpu": [ 75 | "ppc64" 76 | ], 77 | "dev": true, 78 | "license": "MIT", 79 | "optional": true, 80 | "os": [ 81 | "aix" 82 | ], 83 | "engines": { 84 | "node": ">=18" 85 | } 86 | }, 87 | "node_modules/@esbuild/android-arm": { 88 | "version": "0.25.0", 89 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.0.tgz", 90 | "integrity": "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==", 91 | "cpu": [ 92 | "arm" 93 | ], 94 | "dev": true, 95 | "license": "MIT", 96 | "optional": true, 97 | "os": [ 98 | "android" 99 | ], 100 | "engines": { 101 | "node": ">=18" 102 | } 103 | }, 104 | "node_modules/@esbuild/android-arm64": { 105 | "version": "0.25.0", 106 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.0.tgz", 107 | "integrity": "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==", 108 | "cpu": [ 109 | "arm64" 110 | ], 111 | "dev": true, 112 | "license": "MIT", 113 | "optional": true, 114 | "os": [ 115 | "android" 116 | ], 117 | "engines": { 118 | "node": ">=18" 119 | } 120 | }, 121 | "node_modules/@esbuild/android-x64": { 122 | "version": "0.25.0", 123 | "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.0.tgz", 124 | "integrity": "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==", 125 | "cpu": [ 126 | "x64" 127 | ], 128 | "dev": true, 129 | "license": "MIT", 130 | "optional": true, 131 | "os": [ 132 | "android" 133 | ], 134 | "engines": { 135 | "node": ">=18" 136 | } 137 | }, 138 | "node_modules/@esbuild/darwin-arm64": { 139 | "version": "0.25.0", 140 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.0.tgz", 141 | "integrity": "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==", 142 | "cpu": [ 143 | "arm64" 144 | ], 145 | "dev": true, 146 | "license": "MIT", 147 | "optional": true, 148 | "os": [ 149 | "darwin" 150 | ], 151 | "engines": { 152 | "node": ">=18" 153 | } 154 | }, 155 | "node_modules/@esbuild/darwin-x64": { 156 | "version": "0.25.0", 157 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.0.tgz", 158 | "integrity": "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==", 159 | "cpu": [ 160 | "x64" 161 | ], 162 | "dev": true, 163 | "license": "MIT", 164 | "optional": true, 165 | "os": [ 166 | "darwin" 167 | ], 168 | "engines": { 169 | "node": ">=18" 170 | } 171 | }, 172 | "node_modules/@esbuild/freebsd-arm64": { 173 | "version": "0.25.0", 174 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.0.tgz", 175 | "integrity": "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==", 176 | "cpu": [ 177 | "arm64" 178 | ], 179 | "dev": true, 180 | "license": "MIT", 181 | "optional": true, 182 | "os": [ 183 | "freebsd" 184 | ], 185 | "engines": { 186 | "node": ">=18" 187 | } 188 | }, 189 | "node_modules/@esbuild/freebsd-x64": { 190 | "version": "0.25.0", 191 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.0.tgz", 192 | "integrity": "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==", 193 | "cpu": [ 194 | "x64" 195 | ], 196 | "dev": true, 197 | "license": "MIT", 198 | "optional": true, 199 | "os": [ 200 | "freebsd" 201 | ], 202 | "engines": { 203 | "node": ">=18" 204 | } 205 | }, 206 | "node_modules/@esbuild/linux-arm": { 207 | "version": "0.25.0", 208 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.0.tgz", 209 | "integrity": "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==", 210 | "cpu": [ 211 | "arm" 212 | ], 213 | "dev": true, 214 | "license": "MIT", 215 | "optional": true, 216 | "os": [ 217 | "linux" 218 | ], 219 | "engines": { 220 | "node": ">=18" 221 | } 222 | }, 223 | "node_modules/@esbuild/linux-arm64": { 224 | "version": "0.25.0", 225 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.0.tgz", 226 | "integrity": "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==", 227 | "cpu": [ 228 | "arm64" 229 | ], 230 | "dev": true, 231 | "license": "MIT", 232 | "optional": true, 233 | "os": [ 234 | "linux" 235 | ], 236 | "engines": { 237 | "node": ">=18" 238 | } 239 | }, 240 | "node_modules/@esbuild/linux-ia32": { 241 | "version": "0.25.0", 242 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.0.tgz", 243 | "integrity": "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==", 244 | "cpu": [ 245 | "ia32" 246 | ], 247 | "dev": true, 248 | "license": "MIT", 249 | "optional": true, 250 | "os": [ 251 | "linux" 252 | ], 253 | "engines": { 254 | "node": ">=18" 255 | } 256 | }, 257 | "node_modules/@esbuild/linux-loong64": { 258 | "version": "0.25.0", 259 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.0.tgz", 260 | "integrity": "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==", 261 | "cpu": [ 262 | "loong64" 263 | ], 264 | "dev": true, 265 | "license": "MIT", 266 | "optional": true, 267 | "os": [ 268 | "linux" 269 | ], 270 | "engines": { 271 | "node": ">=18" 272 | } 273 | }, 274 | "node_modules/@esbuild/linux-mips64el": { 275 | "version": "0.25.0", 276 | "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.0.tgz", 277 | "integrity": "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==", 278 | "cpu": [ 279 | "mips64el" 280 | ], 281 | "dev": true, 282 | "license": "MIT", 283 | "optional": true, 284 | "os": [ 285 | "linux" 286 | ], 287 | "engines": { 288 | "node": ">=18" 289 | } 290 | }, 291 | "node_modules/@esbuild/linux-ppc64": { 292 | "version": "0.25.0", 293 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.0.tgz", 294 | "integrity": "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==", 295 | "cpu": [ 296 | "ppc64" 297 | ], 298 | "dev": true, 299 | "license": "MIT", 300 | "optional": true, 301 | "os": [ 302 | "linux" 303 | ], 304 | "engines": { 305 | "node": ">=18" 306 | } 307 | }, 308 | "node_modules/@esbuild/linux-riscv64": { 309 | "version": "0.25.0", 310 | "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.0.tgz", 311 | "integrity": "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==", 312 | "cpu": [ 313 | "riscv64" 314 | ], 315 | "dev": true, 316 | "license": "MIT", 317 | "optional": true, 318 | "os": [ 319 | "linux" 320 | ], 321 | "engines": { 322 | "node": ">=18" 323 | } 324 | }, 325 | "node_modules/@esbuild/linux-s390x": { 326 | "version": "0.25.0", 327 | "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.0.tgz", 328 | "integrity": "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==", 329 | "cpu": [ 330 | "s390x" 331 | ], 332 | "dev": true, 333 | "license": "MIT", 334 | "optional": true, 335 | "os": [ 336 | "linux" 337 | ], 338 | "engines": { 339 | "node": ">=18" 340 | } 341 | }, 342 | "node_modules/@esbuild/linux-x64": { 343 | "version": "0.25.0", 344 | "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.0.tgz", 345 | "integrity": "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==", 346 | "cpu": [ 347 | "x64" 348 | ], 349 | "dev": true, 350 | "license": "MIT", 351 | "optional": true, 352 | "os": [ 353 | "linux" 354 | ], 355 | "engines": { 356 | "node": ">=18" 357 | } 358 | }, 359 | "node_modules/@esbuild/netbsd-arm64": { 360 | "version": "0.25.0", 361 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.0.tgz", 362 | "integrity": "sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==", 363 | "cpu": [ 364 | "arm64" 365 | ], 366 | "dev": true, 367 | "license": "MIT", 368 | "optional": true, 369 | "os": [ 370 | "netbsd" 371 | ], 372 | "engines": { 373 | "node": ">=18" 374 | } 375 | }, 376 | "node_modules/@esbuild/netbsd-x64": { 377 | "version": "0.25.0", 378 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.0.tgz", 379 | "integrity": "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==", 380 | "cpu": [ 381 | "x64" 382 | ], 383 | "dev": true, 384 | "license": "MIT", 385 | "optional": true, 386 | "os": [ 387 | "netbsd" 388 | ], 389 | "engines": { 390 | "node": ">=18" 391 | } 392 | }, 393 | "node_modules/@esbuild/openbsd-arm64": { 394 | "version": "0.25.0", 395 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.0.tgz", 396 | "integrity": "sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==", 397 | "cpu": [ 398 | "arm64" 399 | ], 400 | "dev": true, 401 | "license": "MIT", 402 | "optional": true, 403 | "os": [ 404 | "openbsd" 405 | ], 406 | "engines": { 407 | "node": ">=18" 408 | } 409 | }, 410 | "node_modules/@esbuild/openbsd-x64": { 411 | "version": "0.25.0", 412 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.0.tgz", 413 | "integrity": "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==", 414 | "cpu": [ 415 | "x64" 416 | ], 417 | "dev": true, 418 | "license": "MIT", 419 | "optional": true, 420 | "os": [ 421 | "openbsd" 422 | ], 423 | "engines": { 424 | "node": ">=18" 425 | } 426 | }, 427 | "node_modules/@esbuild/sunos-x64": { 428 | "version": "0.25.0", 429 | "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.0.tgz", 430 | "integrity": "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==", 431 | "cpu": [ 432 | "x64" 433 | ], 434 | "dev": true, 435 | "license": "MIT", 436 | "optional": true, 437 | "os": [ 438 | "sunos" 439 | ], 440 | "engines": { 441 | "node": ">=18" 442 | } 443 | }, 444 | "node_modules/@esbuild/win32-arm64": { 445 | "version": "0.25.0", 446 | "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.0.tgz", 447 | "integrity": "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==", 448 | "cpu": [ 449 | "arm64" 450 | ], 451 | "dev": true, 452 | "license": "MIT", 453 | "optional": true, 454 | "os": [ 455 | "win32" 456 | ], 457 | "engines": { 458 | "node": ">=18" 459 | } 460 | }, 461 | "node_modules/@esbuild/win32-ia32": { 462 | "version": "0.25.0", 463 | "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.0.tgz", 464 | "integrity": "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==", 465 | "cpu": [ 466 | "ia32" 467 | ], 468 | "dev": true, 469 | "license": "MIT", 470 | "optional": true, 471 | "os": [ 472 | "win32" 473 | ], 474 | "engines": { 475 | "node": ">=18" 476 | } 477 | }, 478 | "node_modules/@esbuild/win32-x64": { 479 | "version": "0.25.0", 480 | "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.0.tgz", 481 | "integrity": "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==", 482 | "cpu": [ 483 | "x64" 484 | ], 485 | "dev": true, 486 | "license": "MIT", 487 | "optional": true, 488 | "os": [ 489 | "win32" 490 | ], 491 | "engines": { 492 | "node": ">=18" 493 | } 494 | }, 495 | "node_modules/@jridgewell/sourcemap-codec": { 496 | "version": "1.5.0", 497 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", 498 | "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", 499 | "license": "MIT" 500 | }, 501 | "node_modules/@rollup/rollup-android-arm-eabi": { 502 | "version": "4.34.8", 503 | "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.34.8.tgz", 504 | "integrity": "sha512-q217OSE8DTp8AFHuNHXo0Y86e1wtlfVrXiAlwkIvGRQv9zbc6mE3sjIVfwI8sYUyNxwOg0j/Vm1RKM04JcWLJw==", 505 | "cpu": [ 506 | "arm" 507 | ], 508 | "dev": true, 509 | "license": "MIT", 510 | "optional": true, 511 | "os": [ 512 | "android" 513 | ] 514 | }, 515 | "node_modules/@rollup/rollup-android-arm64": { 516 | "version": "4.34.8", 517 | "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.34.8.tgz", 518 | "integrity": "sha512-Gigjz7mNWaOL9wCggvoK3jEIUUbGul656opstjaUSGC3eT0BM7PofdAJaBfPFWWkXNVAXbaQtC99OCg4sJv70Q==", 519 | "cpu": [ 520 | "arm64" 521 | ], 522 | "dev": true, 523 | "license": "MIT", 524 | "optional": true, 525 | "os": [ 526 | "android" 527 | ] 528 | }, 529 | "node_modules/@rollup/rollup-darwin-arm64": { 530 | "version": "4.34.8", 531 | "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.8.tgz", 532 | "integrity": "sha512-02rVdZ5tgdUNRxIUrFdcMBZQoaPMrxtwSb+/hOfBdqkatYHR3lZ2A2EGyHq2sGOd0Owk80oV3snlDASC24He3Q==", 533 | "cpu": [ 534 | "arm64" 535 | ], 536 | "dev": true, 537 | "license": "MIT", 538 | "optional": true, 539 | "os": [ 540 | "darwin" 541 | ] 542 | }, 543 | "node_modules/@rollup/rollup-darwin-x64": { 544 | "version": "4.34.8", 545 | "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.8.tgz", 546 | "integrity": "sha512-qIP/elwR/tq/dYRx3lgwK31jkZvMiD6qUtOycLhTzCvrjbZ3LjQnEM9rNhSGpbLXVJYQ3rq39A6Re0h9tU2ynw==", 547 | "cpu": [ 548 | "x64" 549 | ], 550 | "dev": true, 551 | "license": "MIT", 552 | "optional": true, 553 | "os": [ 554 | "darwin" 555 | ] 556 | }, 557 | "node_modules/@rollup/rollup-freebsd-arm64": { 558 | "version": "4.34.8", 559 | "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.34.8.tgz", 560 | "integrity": "sha512-IQNVXL9iY6NniYbTaOKdrlVP3XIqazBgJOVkddzJlqnCpRi/yAeSOa8PLcECFSQochzqApIOE1GHNu3pCz+BDA==", 561 | "cpu": [ 562 | "arm64" 563 | ], 564 | "dev": true, 565 | "license": "MIT", 566 | "optional": true, 567 | "os": [ 568 | "freebsd" 569 | ] 570 | }, 571 | "node_modules/@rollup/rollup-freebsd-x64": { 572 | "version": "4.34.8", 573 | "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.34.8.tgz", 574 | "integrity": "sha512-TYXcHghgnCqYFiE3FT5QwXtOZqDj5GmaFNTNt3jNC+vh22dc/ukG2cG+pi75QO4kACohZzidsq7yKTKwq/Jq7Q==", 575 | "cpu": [ 576 | "x64" 577 | ], 578 | "dev": true, 579 | "license": "MIT", 580 | "optional": true, 581 | "os": [ 582 | "freebsd" 583 | ] 584 | }, 585 | "node_modules/@rollup/rollup-linux-arm-gnueabihf": { 586 | "version": "4.34.8", 587 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.34.8.tgz", 588 | "integrity": "sha512-A4iphFGNkWRd+5m3VIGuqHnG3MVnqKe7Al57u9mwgbyZ2/xF9Jio72MaY7xxh+Y87VAHmGQr73qoKL9HPbXj1g==", 589 | "cpu": [ 590 | "arm" 591 | ], 592 | "dev": true, 593 | "license": "MIT", 594 | "optional": true, 595 | "os": [ 596 | "linux" 597 | ] 598 | }, 599 | "node_modules/@rollup/rollup-linux-arm-musleabihf": { 600 | "version": "4.34.8", 601 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.34.8.tgz", 602 | "integrity": "sha512-S0lqKLfTm5u+QTxlFiAnb2J/2dgQqRy/XvziPtDd1rKZFXHTyYLoVL58M/XFwDI01AQCDIevGLbQrMAtdyanpA==", 603 | "cpu": [ 604 | "arm" 605 | ], 606 | "dev": true, 607 | "license": "MIT", 608 | "optional": true, 609 | "os": [ 610 | "linux" 611 | ] 612 | }, 613 | "node_modules/@rollup/rollup-linux-arm64-gnu": { 614 | "version": "4.34.8", 615 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.8.tgz", 616 | "integrity": "sha512-jpz9YOuPiSkL4G4pqKrus0pn9aYwpImGkosRKwNi+sJSkz+WU3anZe6hi73StLOQdfXYXC7hUfsQlTnjMd3s1A==", 617 | "cpu": [ 618 | "arm64" 619 | ], 620 | "dev": true, 621 | "license": "MIT", 622 | "optional": true, 623 | "os": [ 624 | "linux" 625 | ] 626 | }, 627 | "node_modules/@rollup/rollup-linux-arm64-musl": { 628 | "version": "4.34.8", 629 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.8.tgz", 630 | "integrity": "sha512-KdSfaROOUJXgTVxJNAZ3KwkRc5nggDk+06P6lgi1HLv1hskgvxHUKZ4xtwHkVYJ1Rep4GNo+uEfycCRRxht7+Q==", 631 | "cpu": [ 632 | "arm64" 633 | ], 634 | "dev": true, 635 | "license": "MIT", 636 | "optional": true, 637 | "os": [ 638 | "linux" 639 | ] 640 | }, 641 | "node_modules/@rollup/rollup-linux-loongarch64-gnu": { 642 | "version": "4.34.8", 643 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.34.8.tgz", 644 | "integrity": "sha512-NyF4gcxwkMFRjgXBM6g2lkT58OWztZvw5KkV2K0qqSnUEqCVcqdh2jN4gQrTn/YUpAcNKyFHfoOZEer9nwo6uQ==", 645 | "cpu": [ 646 | "loong64" 647 | ], 648 | "dev": true, 649 | "license": "MIT", 650 | "optional": true, 651 | "os": [ 652 | "linux" 653 | ] 654 | }, 655 | "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { 656 | "version": "4.34.8", 657 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.34.8.tgz", 658 | "integrity": "sha512-LMJc999GkhGvktHU85zNTDImZVUCJ1z/MbAJTnviiWmmjyckP5aQsHtcujMjpNdMZPT2rQEDBlJfubhs3jsMfw==", 659 | "cpu": [ 660 | "ppc64" 661 | ], 662 | "dev": true, 663 | "license": "MIT", 664 | "optional": true, 665 | "os": [ 666 | "linux" 667 | ] 668 | }, 669 | "node_modules/@rollup/rollup-linux-riscv64-gnu": { 670 | "version": "4.34.8", 671 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.34.8.tgz", 672 | "integrity": "sha512-xAQCAHPj8nJq1PI3z8CIZzXuXCstquz7cIOL73HHdXiRcKk8Ywwqtx2wrIy23EcTn4aZ2fLJNBB8d0tQENPCmw==", 673 | "cpu": [ 674 | "riscv64" 675 | ], 676 | "dev": true, 677 | "license": "MIT", 678 | "optional": true, 679 | "os": [ 680 | "linux" 681 | ] 682 | }, 683 | "node_modules/@rollup/rollup-linux-s390x-gnu": { 684 | "version": "4.34.8", 685 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.34.8.tgz", 686 | "integrity": "sha512-DdePVk1NDEuc3fOe3dPPTb+rjMtuFw89gw6gVWxQFAuEqqSdDKnrwzZHrUYdac7A7dXl9Q2Vflxpme15gUWQFA==", 687 | "cpu": [ 688 | "s390x" 689 | ], 690 | "dev": true, 691 | "license": "MIT", 692 | "optional": true, 693 | "os": [ 694 | "linux" 695 | ] 696 | }, 697 | "node_modules/@rollup/rollup-linux-x64-gnu": { 698 | "version": "4.34.8", 699 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.8.tgz", 700 | "integrity": "sha512-8y7ED8gjxITUltTUEJLQdgpbPh1sUQ0kMTmufRF/Ns5tI9TNMNlhWtmPKKHCU0SilX+3MJkZ0zERYYGIVBYHIA==", 701 | "cpu": [ 702 | "x64" 703 | ], 704 | "dev": true, 705 | "license": "MIT", 706 | "optional": true, 707 | "os": [ 708 | "linux" 709 | ] 710 | }, 711 | "node_modules/@rollup/rollup-linux-x64-musl": { 712 | "version": "4.34.8", 713 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.8.tgz", 714 | "integrity": "sha512-SCXcP0ZpGFIe7Ge+McxY5zKxiEI5ra+GT3QRxL0pMMtxPfpyLAKleZODi1zdRHkz5/BhueUrYtYVgubqe9JBNQ==", 715 | "cpu": [ 716 | "x64" 717 | ], 718 | "dev": true, 719 | "license": "MIT", 720 | "optional": true, 721 | "os": [ 722 | "linux" 723 | ] 724 | }, 725 | "node_modules/@rollup/rollup-win32-arm64-msvc": { 726 | "version": "4.34.8", 727 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.8.tgz", 728 | "integrity": "sha512-YHYsgzZgFJzTRbth4h7Or0m5O74Yda+hLin0irAIobkLQFRQd1qWmnoVfwmKm9TXIZVAD0nZ+GEb2ICicLyCnQ==", 729 | "cpu": [ 730 | "arm64" 731 | ], 732 | "dev": true, 733 | "license": "MIT", 734 | "optional": true, 735 | "os": [ 736 | "win32" 737 | ] 738 | }, 739 | "node_modules/@rollup/rollup-win32-ia32-msvc": { 740 | "version": "4.34.8", 741 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.34.8.tgz", 742 | "integrity": "sha512-r3NRQrXkHr4uWy5TOjTpTYojR9XmF0j/RYgKCef+Ag46FWUTltm5ziticv8LdNsDMehjJ543x/+TJAek/xBA2w==", 743 | "cpu": [ 744 | "ia32" 745 | ], 746 | "dev": true, 747 | "license": "MIT", 748 | "optional": true, 749 | "os": [ 750 | "win32" 751 | ] 752 | }, 753 | "node_modules/@rollup/rollup-win32-x64-msvc": { 754 | "version": "4.34.8", 755 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.8.tgz", 756 | "integrity": "sha512-U0FaE5O1BCpZSeE6gBl3c5ObhePQSfk9vDRToMmTkbhCOgW4jqvtS5LGyQ76L1fH8sM0keRp4uDTsbjiUyjk0g==", 757 | "cpu": [ 758 | "x64" 759 | ], 760 | "dev": true, 761 | "license": "MIT", 762 | "optional": true, 763 | "os": [ 764 | "win32" 765 | ] 766 | }, 767 | "node_modules/@types/estree": { 768 | "version": "1.0.6", 769 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", 770 | "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", 771 | "dev": true, 772 | "license": "MIT" 773 | }, 774 | "node_modules/@types/node": { 775 | "version": "22.13.5", 776 | "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.5.tgz", 777 | "integrity": "sha512-+lTU0PxZXn0Dr1NBtC7Y8cR21AJr87dLLU953CWA6pMxxv/UDc7jYAY90upcrie1nRcD6XNG5HOYEDtgW5TxAg==", 778 | "dev": true, 779 | "license": "MIT", 780 | "dependencies": { 781 | "undici-types": "~6.20.0" 782 | } 783 | }, 784 | "node_modules/@vitejs/plugin-vue": { 785 | "version": "5.2.1", 786 | "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.2.1.tgz", 787 | "integrity": "sha512-cxh314tzaWwOLqVes2gnnCtvBDcM1UMdn+iFR+UjAn411dPT3tOmqrJjbMd7koZpMAmBM/GqeV4n9ge7JSiJJQ==", 788 | "dev": true, 789 | "license": "MIT", 790 | "engines": { 791 | "node": "^18.0.0 || >=20.0.0" 792 | }, 793 | "peerDependencies": { 794 | "vite": "^5.0.0 || ^6.0.0", 795 | "vue": "^3.2.25" 796 | } 797 | }, 798 | "node_modules/@volar/language-core": { 799 | "version": "2.4.11", 800 | "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.11.tgz", 801 | "integrity": "sha512-lN2C1+ByfW9/JRPpqScuZt/4OrUUse57GLI6TbLgTIqBVemdl1wNcZ1qYGEo2+Gw8coYLgCy7SuKqn6IrQcQgg==", 802 | "dev": true, 803 | "license": "MIT", 804 | "dependencies": { 805 | "@volar/source-map": "2.4.11" 806 | } 807 | }, 808 | "node_modules/@volar/source-map": { 809 | "version": "2.4.11", 810 | "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.11.tgz", 811 | "integrity": "sha512-ZQpmafIGvaZMn/8iuvCFGrW3smeqkq/IIh9F1SdSx9aUl0J4Iurzd6/FhmjNO5g2ejF3rT45dKskgXWiofqlZQ==", 812 | "dev": true, 813 | "license": "MIT" 814 | }, 815 | "node_modules/@volar/typescript": { 816 | "version": "2.4.11", 817 | "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.4.11.tgz", 818 | "integrity": "sha512-2DT+Tdh88Spp5PyPbqhyoYavYCPDsqbHLFwcUI9K1NlY1YgUJvujGdrqUp0zWxnW7KWNTr3xSpMuv2WnaTKDAw==", 819 | "dev": true, 820 | "license": "MIT", 821 | "dependencies": { 822 | "@volar/language-core": "2.4.11", 823 | "path-browserify": "^1.0.1", 824 | "vscode-uri": "^3.0.8" 825 | } 826 | }, 827 | "node_modules/@vue/compiler-core": { 828 | "version": "3.5.13", 829 | "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.13.tgz", 830 | "integrity": "sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==", 831 | "license": "MIT", 832 | "dependencies": { 833 | "@babel/parser": "^7.25.3", 834 | "@vue/shared": "3.5.13", 835 | "entities": "^4.5.0", 836 | "estree-walker": "^2.0.2", 837 | "source-map-js": "^1.2.0" 838 | } 839 | }, 840 | "node_modules/@vue/compiler-dom": { 841 | "version": "3.5.13", 842 | "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.13.tgz", 843 | "integrity": "sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==", 844 | "license": "MIT", 845 | "dependencies": { 846 | "@vue/compiler-core": "3.5.13", 847 | "@vue/shared": "3.5.13" 848 | } 849 | }, 850 | "node_modules/@vue/compiler-sfc": { 851 | "version": "3.5.13", 852 | "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.13.tgz", 853 | "integrity": "sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==", 854 | "license": "MIT", 855 | "dependencies": { 856 | "@babel/parser": "^7.25.3", 857 | "@vue/compiler-core": "3.5.13", 858 | "@vue/compiler-dom": "3.5.13", 859 | "@vue/compiler-ssr": "3.5.13", 860 | "@vue/shared": "3.5.13", 861 | "estree-walker": "^2.0.2", 862 | "magic-string": "^0.30.11", 863 | "postcss": "^8.4.48", 864 | "source-map-js": "^1.2.0" 865 | } 866 | }, 867 | "node_modules/@vue/compiler-ssr": { 868 | "version": "3.5.13", 869 | "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.13.tgz", 870 | "integrity": "sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==", 871 | "license": "MIT", 872 | "dependencies": { 873 | "@vue/compiler-dom": "3.5.13", 874 | "@vue/shared": "3.5.13" 875 | } 876 | }, 877 | "node_modules/@vue/compiler-vue2": { 878 | "version": "2.7.16", 879 | "resolved": "https://registry.npmjs.org/@vue/compiler-vue2/-/compiler-vue2-2.7.16.tgz", 880 | "integrity": "sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==", 881 | "dev": true, 882 | "license": "MIT", 883 | "dependencies": { 884 | "de-indent": "^1.0.2", 885 | "he": "^1.2.0" 886 | } 887 | }, 888 | "node_modules/@vue/language-core": { 889 | "version": "2.2.4", 890 | "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-2.2.4.tgz", 891 | "integrity": "sha512-eGGdw7eWUwdIn9Fy/irJ7uavCGfgemuHQABgJ/hU1UgZFnbTg9VWeXvHQdhY+2SPQZWJqWXvRWIg67t4iWEa+Q==", 892 | "dev": true, 893 | "license": "MIT", 894 | "dependencies": { 895 | "@volar/language-core": "~2.4.11", 896 | "@vue/compiler-dom": "^3.5.0", 897 | "@vue/compiler-vue2": "^2.7.16", 898 | "@vue/shared": "^3.5.0", 899 | "alien-signals": "^1.0.3", 900 | "minimatch": "^9.0.3", 901 | "muggle-string": "^0.4.1", 902 | "path-browserify": "^1.0.1" 903 | }, 904 | "peerDependencies": { 905 | "typescript": "*" 906 | }, 907 | "peerDependenciesMeta": { 908 | "typescript": { 909 | "optional": true 910 | } 911 | } 912 | }, 913 | "node_modules/@vue/reactivity": { 914 | "version": "3.5.13", 915 | "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.13.tgz", 916 | "integrity": "sha512-NaCwtw8o48B9I6L1zl2p41OHo/2Z4wqYGGIK1Khu5T7yxrn+ATOixn/Udn2m+6kZKB/J7cuT9DbWWhRxqixACg==", 917 | "license": "MIT", 918 | "dependencies": { 919 | "@vue/shared": "3.5.13" 920 | } 921 | }, 922 | "node_modules/@vue/runtime-core": { 923 | "version": "3.5.13", 924 | "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.13.tgz", 925 | "integrity": "sha512-Fj4YRQ3Az0WTZw1sFe+QDb0aXCerigEpw418pw1HBUKFtnQHWzwojaukAs2X/c9DQz4MQ4bsXTGlcpGxU/RCIw==", 926 | "license": "MIT", 927 | "dependencies": { 928 | "@vue/reactivity": "3.5.13", 929 | "@vue/shared": "3.5.13" 930 | } 931 | }, 932 | "node_modules/@vue/runtime-dom": { 933 | "version": "3.5.13", 934 | "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.13.tgz", 935 | "integrity": "sha512-dLaj94s93NYLqjLiyFzVs9X6dWhTdAlEAciC3Moq7gzAc13VJUdCnjjRurNM6uTLFATRHexHCTu/Xp3eW6yoog==", 936 | "license": "MIT", 937 | "dependencies": { 938 | "@vue/reactivity": "3.5.13", 939 | "@vue/runtime-core": "3.5.13", 940 | "@vue/shared": "3.5.13", 941 | "csstype": "^3.1.3" 942 | } 943 | }, 944 | "node_modules/@vue/server-renderer": { 945 | "version": "3.5.13", 946 | "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.13.tgz", 947 | "integrity": "sha512-wAi4IRJV/2SAW3htkTlB+dHeRmpTiVIK1OGLWV1yeStVSebSQQOwGwIq0D3ZIoBj2C2qpgz5+vX9iEBkTdk5YA==", 948 | "license": "MIT", 949 | "dependencies": { 950 | "@vue/compiler-ssr": "3.5.13", 951 | "@vue/shared": "3.5.13" 952 | }, 953 | "peerDependencies": { 954 | "vue": "3.5.13" 955 | } 956 | }, 957 | "node_modules/@vue/shared": { 958 | "version": "3.5.13", 959 | "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.13.tgz", 960 | "integrity": "sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==", 961 | "license": "MIT" 962 | }, 963 | "node_modules/@vue/tsconfig": { 964 | "version": "0.7.0", 965 | "resolved": "https://registry.npmjs.org/@vue/tsconfig/-/tsconfig-0.7.0.tgz", 966 | "integrity": "sha512-ku2uNz5MaZ9IerPPUyOHzyjhXoX2kVJaVf7hL315DC17vS6IiZRmmCPfggNbU16QTvM80+uYYy3eYJB59WCtvg==", 967 | "dev": true, 968 | "license": "MIT", 969 | "peerDependencies": { 970 | "typescript": "5.x", 971 | "vue": "^3.4.0" 972 | }, 973 | "peerDependenciesMeta": { 974 | "typescript": { 975 | "optional": true 976 | }, 977 | "vue": { 978 | "optional": true 979 | } 980 | } 981 | }, 982 | "node_modules/alien-signals": { 983 | "version": "1.0.4", 984 | "resolved": "https://registry.npmjs.org/alien-signals/-/alien-signals-1.0.4.tgz", 985 | "integrity": "sha512-DJqqQD3XcsaQcQ1s+iE2jDUZmmQpXwHiR6fCAim/w87luaW+vmLY8fMlrdkmRwzaFXhkxf3rqPCR59tKVv1MDw==", 986 | "dev": true, 987 | "license": "MIT" 988 | }, 989 | "node_modules/balanced-match": { 990 | "version": "1.0.2", 991 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 992 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", 993 | "dev": true, 994 | "license": "MIT" 995 | }, 996 | "node_modules/brace-expansion": { 997 | "version": "2.0.1", 998 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", 999 | "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", 1000 | "dev": true, 1001 | "license": "MIT", 1002 | "dependencies": { 1003 | "balanced-match": "^1.0.0" 1004 | } 1005 | }, 1006 | "node_modules/csstype": { 1007 | "version": "3.1.3", 1008 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", 1009 | "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", 1010 | "license": "MIT" 1011 | }, 1012 | "node_modules/de-indent": { 1013 | "version": "1.0.2", 1014 | "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", 1015 | "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", 1016 | "dev": true, 1017 | "license": "MIT" 1018 | }, 1019 | "node_modules/entities": { 1020 | "version": "4.5.0", 1021 | "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", 1022 | "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", 1023 | "license": "BSD-2-Clause", 1024 | "engines": { 1025 | "node": ">=0.12" 1026 | }, 1027 | "funding": { 1028 | "url": "https://github.com/fb55/entities?sponsor=1" 1029 | } 1030 | }, 1031 | "node_modules/esbuild": { 1032 | "version": "0.25.0", 1033 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.0.tgz", 1034 | "integrity": "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==", 1035 | "dev": true, 1036 | "hasInstallScript": true, 1037 | "license": "MIT", 1038 | "bin": { 1039 | "esbuild": "bin/esbuild" 1040 | }, 1041 | "engines": { 1042 | "node": ">=18" 1043 | }, 1044 | "optionalDependencies": { 1045 | "@esbuild/aix-ppc64": "0.25.0", 1046 | "@esbuild/android-arm": "0.25.0", 1047 | "@esbuild/android-arm64": "0.25.0", 1048 | "@esbuild/android-x64": "0.25.0", 1049 | "@esbuild/darwin-arm64": "0.25.0", 1050 | "@esbuild/darwin-x64": "0.25.0", 1051 | "@esbuild/freebsd-arm64": "0.25.0", 1052 | "@esbuild/freebsd-x64": "0.25.0", 1053 | "@esbuild/linux-arm": "0.25.0", 1054 | "@esbuild/linux-arm64": "0.25.0", 1055 | "@esbuild/linux-ia32": "0.25.0", 1056 | "@esbuild/linux-loong64": "0.25.0", 1057 | "@esbuild/linux-mips64el": "0.25.0", 1058 | "@esbuild/linux-ppc64": "0.25.0", 1059 | "@esbuild/linux-riscv64": "0.25.0", 1060 | "@esbuild/linux-s390x": "0.25.0", 1061 | "@esbuild/linux-x64": "0.25.0", 1062 | "@esbuild/netbsd-arm64": "0.25.0", 1063 | "@esbuild/netbsd-x64": "0.25.0", 1064 | "@esbuild/openbsd-arm64": "0.25.0", 1065 | "@esbuild/openbsd-x64": "0.25.0", 1066 | "@esbuild/sunos-x64": "0.25.0", 1067 | "@esbuild/win32-arm64": "0.25.0", 1068 | "@esbuild/win32-ia32": "0.25.0", 1069 | "@esbuild/win32-x64": "0.25.0" 1070 | } 1071 | }, 1072 | "node_modules/estree-walker": { 1073 | "version": "2.0.2", 1074 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", 1075 | "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", 1076 | "license": "MIT" 1077 | }, 1078 | "node_modules/eventemitter3": { 1079 | "version": "5.0.1", 1080 | "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", 1081 | "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", 1082 | "license": "MIT" 1083 | }, 1084 | "node_modules/fsevents": { 1085 | "version": "2.3.3", 1086 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", 1087 | "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", 1088 | "dev": true, 1089 | "hasInstallScript": true, 1090 | "license": "MIT", 1091 | "optional": true, 1092 | "os": [ 1093 | "darwin" 1094 | ], 1095 | "engines": { 1096 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 1097 | } 1098 | }, 1099 | "node_modules/he": { 1100 | "version": "1.2.0", 1101 | "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", 1102 | "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", 1103 | "dev": true, 1104 | "license": "MIT", 1105 | "bin": { 1106 | "he": "bin/he" 1107 | } 1108 | }, 1109 | "node_modules/magic-string": { 1110 | "version": "0.30.17", 1111 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", 1112 | "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", 1113 | "license": "MIT", 1114 | "dependencies": { 1115 | "@jridgewell/sourcemap-codec": "^1.5.0" 1116 | } 1117 | }, 1118 | "node_modules/minimatch": { 1119 | "version": "9.0.5", 1120 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", 1121 | "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", 1122 | "dev": true, 1123 | "license": "ISC", 1124 | "dependencies": { 1125 | "brace-expansion": "^2.0.1" 1126 | }, 1127 | "engines": { 1128 | "node": ">=16 || 14 >=14.17" 1129 | }, 1130 | "funding": { 1131 | "url": "https://github.com/sponsors/isaacs" 1132 | } 1133 | }, 1134 | "node_modules/muggle-string": { 1135 | "version": "0.4.1", 1136 | "resolved": "https://registry.npmjs.org/muggle-string/-/muggle-string-0.4.1.tgz", 1137 | "integrity": "sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==", 1138 | "dev": true, 1139 | "license": "MIT" 1140 | }, 1141 | "node_modules/nanoid": { 1142 | "version": "3.3.8", 1143 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", 1144 | "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", 1145 | "funding": [ 1146 | { 1147 | "type": "github", 1148 | "url": "https://github.com/sponsors/ai" 1149 | } 1150 | ], 1151 | "license": "MIT", 1152 | "bin": { 1153 | "nanoid": "bin/nanoid.cjs" 1154 | }, 1155 | "engines": { 1156 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 1157 | } 1158 | }, 1159 | "node_modules/path-browserify": { 1160 | "version": "1.0.1", 1161 | "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", 1162 | "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", 1163 | "dev": true, 1164 | "license": "MIT" 1165 | }, 1166 | "node_modules/phaser": { 1167 | "version": "3.88.2", 1168 | "resolved": "https://registry.npmjs.org/phaser/-/phaser-3.88.2.tgz", 1169 | "integrity": "sha512-UBgd2sAFuRJbF2xKaQ5jpMWB8oETncChLnymLGHcrnT53vaqiGrQWbUKUDBawKLm24sghjKo4Bf+/xfv8espZQ==", 1170 | "license": "MIT", 1171 | "dependencies": { 1172 | "eventemitter3": "^5.0.1" 1173 | } 1174 | }, 1175 | "node_modules/picocolors": { 1176 | "version": "1.1.1", 1177 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", 1178 | "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", 1179 | "license": "ISC" 1180 | }, 1181 | "node_modules/postcss": { 1182 | "version": "8.5.3", 1183 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", 1184 | "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", 1185 | "funding": [ 1186 | { 1187 | "type": "opencollective", 1188 | "url": "https://opencollective.com/postcss/" 1189 | }, 1190 | { 1191 | "type": "tidelift", 1192 | "url": "https://tidelift.com/funding/github/npm/postcss" 1193 | }, 1194 | { 1195 | "type": "github", 1196 | "url": "https://github.com/sponsors/ai" 1197 | } 1198 | ], 1199 | "license": "MIT", 1200 | "dependencies": { 1201 | "nanoid": "^3.3.8", 1202 | "picocolors": "^1.1.1", 1203 | "source-map-js": "^1.2.1" 1204 | }, 1205 | "engines": { 1206 | "node": "^10 || ^12 || >=14" 1207 | } 1208 | }, 1209 | "node_modules/rollup": { 1210 | "version": "4.34.8", 1211 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.34.8.tgz", 1212 | "integrity": "sha512-489gTVMzAYdiZHFVA/ig/iYFllCcWFHMvUHI1rpFmkoUtRlQxqh6/yiNqnYibjMZ2b/+FUQwldG+aLsEt6bglQ==", 1213 | "dev": true, 1214 | "license": "MIT", 1215 | "dependencies": { 1216 | "@types/estree": "1.0.6" 1217 | }, 1218 | "bin": { 1219 | "rollup": "dist/bin/rollup" 1220 | }, 1221 | "engines": { 1222 | "node": ">=18.0.0", 1223 | "npm": ">=8.0.0" 1224 | }, 1225 | "optionalDependencies": { 1226 | "@rollup/rollup-android-arm-eabi": "4.34.8", 1227 | "@rollup/rollup-android-arm64": "4.34.8", 1228 | "@rollup/rollup-darwin-arm64": "4.34.8", 1229 | "@rollup/rollup-darwin-x64": "4.34.8", 1230 | "@rollup/rollup-freebsd-arm64": "4.34.8", 1231 | "@rollup/rollup-freebsd-x64": "4.34.8", 1232 | "@rollup/rollup-linux-arm-gnueabihf": "4.34.8", 1233 | "@rollup/rollup-linux-arm-musleabihf": "4.34.8", 1234 | "@rollup/rollup-linux-arm64-gnu": "4.34.8", 1235 | "@rollup/rollup-linux-arm64-musl": "4.34.8", 1236 | "@rollup/rollup-linux-loongarch64-gnu": "4.34.8", 1237 | "@rollup/rollup-linux-powerpc64le-gnu": "4.34.8", 1238 | "@rollup/rollup-linux-riscv64-gnu": "4.34.8", 1239 | "@rollup/rollup-linux-s390x-gnu": "4.34.8", 1240 | "@rollup/rollup-linux-x64-gnu": "4.34.8", 1241 | "@rollup/rollup-linux-x64-musl": "4.34.8", 1242 | "@rollup/rollup-win32-arm64-msvc": "4.34.8", 1243 | "@rollup/rollup-win32-ia32-msvc": "4.34.8", 1244 | "@rollup/rollup-win32-x64-msvc": "4.34.8", 1245 | "fsevents": "~2.3.2" 1246 | } 1247 | }, 1248 | "node_modules/source-map-js": { 1249 | "version": "1.2.1", 1250 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", 1251 | "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", 1252 | "license": "BSD-3-Clause", 1253 | "engines": { 1254 | "node": ">=0.10.0" 1255 | } 1256 | }, 1257 | "node_modules/typescript": { 1258 | "version": "5.7.3", 1259 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", 1260 | "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", 1261 | "devOptional": true, 1262 | "license": "Apache-2.0", 1263 | "bin": { 1264 | "tsc": "bin/tsc", 1265 | "tsserver": "bin/tsserver" 1266 | }, 1267 | "engines": { 1268 | "node": ">=14.17" 1269 | } 1270 | }, 1271 | "node_modules/undici-types": { 1272 | "version": "6.20.0", 1273 | "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", 1274 | "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", 1275 | "dev": true, 1276 | "license": "MIT" 1277 | }, 1278 | "node_modules/vite": { 1279 | "version": "6.2.0", 1280 | "resolved": "https://registry.npmjs.org/vite/-/vite-6.2.0.tgz", 1281 | "integrity": "sha512-7dPxoo+WsT/64rDcwoOjk76XHj+TqNTIvHKcuMQ1k4/SeHDaQt5GFAeLYzrimZrMpn/O6DtdI03WUjdxuPM0oQ==", 1282 | "dev": true, 1283 | "license": "MIT", 1284 | "dependencies": { 1285 | "esbuild": "^0.25.0", 1286 | "postcss": "^8.5.3", 1287 | "rollup": "^4.30.1" 1288 | }, 1289 | "bin": { 1290 | "vite": "bin/vite.js" 1291 | }, 1292 | "engines": { 1293 | "node": "^18.0.0 || ^20.0.0 || >=22.0.0" 1294 | }, 1295 | "funding": { 1296 | "url": "https://github.com/vitejs/vite?sponsor=1" 1297 | }, 1298 | "optionalDependencies": { 1299 | "fsevents": "~2.3.3" 1300 | }, 1301 | "peerDependencies": { 1302 | "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", 1303 | "jiti": ">=1.21.0", 1304 | "less": "*", 1305 | "lightningcss": "^1.21.0", 1306 | "sass": "*", 1307 | "sass-embedded": "*", 1308 | "stylus": "*", 1309 | "sugarss": "*", 1310 | "terser": "^5.16.0", 1311 | "tsx": "^4.8.1", 1312 | "yaml": "^2.4.2" 1313 | }, 1314 | "peerDependenciesMeta": { 1315 | "@types/node": { 1316 | "optional": true 1317 | }, 1318 | "jiti": { 1319 | "optional": true 1320 | }, 1321 | "less": { 1322 | "optional": true 1323 | }, 1324 | "lightningcss": { 1325 | "optional": true 1326 | }, 1327 | "sass": { 1328 | "optional": true 1329 | }, 1330 | "sass-embedded": { 1331 | "optional": true 1332 | }, 1333 | "stylus": { 1334 | "optional": true 1335 | }, 1336 | "sugarss": { 1337 | "optional": true 1338 | }, 1339 | "terser": { 1340 | "optional": true 1341 | }, 1342 | "tsx": { 1343 | "optional": true 1344 | }, 1345 | "yaml": { 1346 | "optional": true 1347 | } 1348 | } 1349 | }, 1350 | "node_modules/vscode-uri": { 1351 | "version": "3.1.0", 1352 | "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.1.0.tgz", 1353 | "integrity": "sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==", 1354 | "dev": true, 1355 | "license": "MIT" 1356 | }, 1357 | "node_modules/vue": { 1358 | "version": "3.5.13", 1359 | "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.13.tgz", 1360 | "integrity": "sha512-wmeiSMxkZCSc+PM2w2VRsOYAZC8GdipNFRTsLSfodVqI9mbejKeXEGr8SckuLnrQPGe3oJN5c3K0vpoU9q/wCQ==", 1361 | "license": "MIT", 1362 | "dependencies": { 1363 | "@vue/compiler-dom": "3.5.13", 1364 | "@vue/compiler-sfc": "3.5.13", 1365 | "@vue/runtime-dom": "3.5.13", 1366 | "@vue/server-renderer": "3.5.13", 1367 | "@vue/shared": "3.5.13" 1368 | }, 1369 | "peerDependencies": { 1370 | "typescript": "*" 1371 | }, 1372 | "peerDependenciesMeta": { 1373 | "typescript": { 1374 | "optional": true 1375 | } 1376 | } 1377 | }, 1378 | "node_modules/vue-tsc": { 1379 | "version": "2.2.4", 1380 | "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-2.2.4.tgz", 1381 | "integrity": "sha512-3EVHlxtpMXcb5bCaK7QDFTbEkMusDfVk0HVRrkv5hEb+Clpu9a96lKUXJAeD/akRlkoA4H8MCHgBDN19S6FnzA==", 1382 | "dev": true, 1383 | "license": "MIT", 1384 | "dependencies": { 1385 | "@volar/typescript": "~2.4.11", 1386 | "@vue/language-core": "2.2.4" 1387 | }, 1388 | "bin": { 1389 | "vue-tsc": "bin/vue-tsc.js" 1390 | }, 1391 | "peerDependencies": { 1392 | "typescript": ">=5.0.0" 1393 | } 1394 | } 1395 | } 1396 | } 1397 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vue-phaser-vite", 3 | "version": "1.1.0", 4 | "author": "Markus Appel ", 5 | "description": "Template for working with Phaser in a Vue project based on Vite", 6 | "keywords": [ 7 | "vue", 8 | "phaser", 9 | "vite", 10 | "boilerplate", 11 | "template" 12 | ], 13 | "license": "MIT", 14 | "repository": { 15 | "type": "git", 16 | "url": "https://github.com/Sun0fABeach/vue-phaser-vite.git" 17 | }, 18 | "type": "module", 19 | "scripts": { 20 | "dev": "vite", 21 | "build": "vue-tsc -b && vite build", 22 | "preview": "vite preview" 23 | }, 24 | "dependencies": { 25 | "phaser": "^3.88.2", 26 | "vue": "^3.5.13" 27 | }, 28 | "devDependencies": { 29 | "@types/node": "^22.13.5", 30 | "@vitejs/plugin-vue": "^5.2.1", 31 | "@vue/tsconfig": "^0.7.0", 32 | "typescript": "~5.7.2", 33 | "vite": "^6.2.0", 34 | "vue-tsc": "^2.2.4" 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /public/vite.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/App.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 8 | 9 | 18 | -------------------------------------------------------------------------------- /src/components/Game.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 16 | 17 | 23 | -------------------------------------------------------------------------------- /src/components/PhaserContainer.vue: -------------------------------------------------------------------------------- 1 | 17 | 18 | 21 | -------------------------------------------------------------------------------- /src/game/assets/bomb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sun0fABeach/vue-phaser-vite/62ef8afe67f1c62ac4adccf78f687c21aeb96eae/src/game/assets/bomb.png -------------------------------------------------------------------------------- /src/game/assets/sky.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sun0fABeach/vue-phaser-vite/62ef8afe67f1c62ac4adccf78f687c21aeb96eae/src/game/assets/sky.png -------------------------------------------------------------------------------- /src/game/assets/thud.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sun0fABeach/vue-phaser-vite/62ef8afe67f1c62ac4adccf78f687c21aeb96eae/src/game/assets/thud.mp3 -------------------------------------------------------------------------------- /src/game/game.ts: -------------------------------------------------------------------------------- 1 | import Phaser from 'phaser' 2 | import BootScene from '@/game/scenes/BootScene' 3 | import PlayScene from '@/game/scenes/PlayScene' 4 | 5 | function launch(containerId: string) { 6 | return new Phaser.Game({ 7 | type: Phaser.AUTO, 8 | width: 800, 9 | height: 600, 10 | parent: containerId, 11 | physics: { 12 | default: 'arcade', 13 | arcade: { 14 | gravity: { x: 0, y: 300 }, 15 | debug: false 16 | } 17 | }, 18 | scene: [BootScene, PlayScene] 19 | }) 20 | } 21 | 22 | export default launch 23 | export { launch } 24 | -------------------------------------------------------------------------------- /src/game/scenes/BootScene.ts: -------------------------------------------------------------------------------- 1 | import { Scene } from 'phaser' 2 | import sky from '@/game/assets/sky.png' 3 | import bomb from '@/game/assets/bomb.png' 4 | import thud from '@/game/assets/thud.mp3' 5 | 6 | export default class BootScene extends Scene { 7 | constructor () { 8 | super({ key: 'BootScene' }) 9 | } 10 | 11 | preload () { 12 | this.load.image('sky', sky) 13 | this.load.image('bomb', bomb) 14 | this.load.audio('thud', thud) 15 | } 16 | 17 | create () { 18 | this.scene.start('PlayScene') 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/game/scenes/PlayScene.ts: -------------------------------------------------------------------------------- 1 | import { Scene } from 'phaser' 2 | 3 | export default class PlayScene extends Scene { 4 | constructor () { 5 | super({ key: 'PlayScene' }) 6 | } 7 | 8 | create () { 9 | this.add.image(400, 300, 'sky') 10 | 11 | const bomb = this.physics.add.image(400, 200, 'bomb') 12 | bomb.setCollideWorldBounds(true) 13 | bomb.body.onWorldBounds = true // enable worldbounds collision event 14 | bomb.setBounce(1) 15 | bomb.setVelocity(200, 20) 16 | 17 | this.sound.add('thud') 18 | this.physics.world.on('worldbounds', () => { 19 | this.sound.play('thud', { volume: 0.75 }) 20 | }) 21 | } 22 | 23 | update () { 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /src/main.ts: -------------------------------------------------------------------------------- 1 | import { createApp } from 'vue' 2 | import App from './App.vue' 3 | 4 | createApp(App).mount('#app') 5 | -------------------------------------------------------------------------------- /src/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /tsconfig.app.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@vue/tsconfig/tsconfig.dom.json", 3 | "compilerOptions": { 4 | "paths": { 5 | "@/*": ["./src/*"], 6 | }, 7 | 8 | "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", 9 | 10 | /* Linting */ 11 | "strict": true, 12 | "noUnusedLocals": true, 13 | "noUnusedParameters": true, 14 | "noFallthroughCasesInSwitch": true, 15 | "noUncheckedSideEffectImports": true 16 | }, 17 | "include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.vue"] 18 | } 19 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "files": [], 3 | "references": [ 4 | { "path": "./tsconfig.app.json" }, 5 | { "path": "./tsconfig.node.json" } 6 | ] 7 | } 8 | -------------------------------------------------------------------------------- /tsconfig.node.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", 4 | "target": "ES2022", 5 | "lib": ["ES2023"], 6 | "module": "ESNext", 7 | "skipLibCheck": true, 8 | 9 | /* Bundler mode */ 10 | "moduleResolution": "bundler", 11 | "allowImportingTsExtensions": true, 12 | "isolatedModules": true, 13 | "moduleDetection": "force", 14 | "noEmit": true, 15 | 16 | /* Linting */ 17 | "strict": true, 18 | "noUnusedLocals": true, 19 | "noUnusedParameters": true, 20 | "noFallthroughCasesInSwitch": true, 21 | "noUncheckedSideEffectImports": true 22 | }, 23 | "include": ["vite.config.ts"] 24 | } 25 | -------------------------------------------------------------------------------- /vite.config.ts: -------------------------------------------------------------------------------- 1 | import { fileURLToPath, URL } from 'node:url' 2 | import { defineConfig } from 'vite' 3 | import vue from '@vitejs/plugin-vue' 4 | 5 | // https://vitejs.dev/config/ 6 | export default defineConfig({ 7 | plugins: [vue()], 8 | resolve: { 9 | alias: { 10 | '@': fileURLToPath(new URL('./src', import.meta.url)) 11 | } 12 | } 13 | }) 14 | --------------------------------------------------------------------------------