├── .gitignore ├── LICENSE ├── README.md ├── index.html ├── package-lock.json ├── package.json ├── public └── vite.svg ├── src ├── App.vue ├── Firebase.js ├── assets │ └── vue.svg ├── components │ ├── AddRoom.vue │ ├── Chat.vue │ ├── ChatRoom.vue │ ├── HelloWorld.vue │ ├── Login.vue │ └── RoomList.vue ├── main.js ├── router │ └── index.js └── style.css └── vite.config.js /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /dist 4 | 5 | # local env files 6 | .env.local 7 | .env.*.local 8 | 9 | # Log files 10 | npm-debug.log* 11 | yarn-debug.log* 12 | yarn-error.log* 13 | 14 | # Editor directories and files 15 | .idea 16 | .vscode 17 | *.suo 18 | *.ntvs* 19 | *.njsproj 20 | *.sln 21 | *.sw? 22 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2025 Didin Jamaludin 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. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Build a Real-Time Chat App with Vue 3, Vite, and Firebase Realtime Database 2 | 3 | Read full article [here](https://www.djamware.com/post/5d63586ee8e5fff670f31169/build-a-realtime-chat-app-with-vue-3-and-firebase-realtime-database). 4 | 5 | This template should help get you started developing with Vue 3 in Vite. The template uses Vue 3 ` 12 | 13 | 14 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vue3-firebase-chat", 3 | "version": "0.0.0", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "vue3-firebase-chat", 9 | "version": "0.0.0", 10 | "dependencies": { 11 | "firebase": "^9.23.0", 12 | "vue": "^3.5.13", 13 | "vue-router": "^4.5.1" 14 | }, 15 | "devDependencies": { 16 | "@vitejs/plugin-vue": "^5.2.3", 17 | "vite": "^6.3.5" 18 | } 19 | }, 20 | "node_modules/@babel/helper-string-parser": { 21 | "version": "7.27.1", 22 | "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", 23 | "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", 24 | "license": "MIT", 25 | "engines": { 26 | "node": ">=6.9.0" 27 | } 28 | }, 29 | "node_modules/@babel/helper-validator-identifier": { 30 | "version": "7.27.1", 31 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", 32 | "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", 33 | "license": "MIT", 34 | "engines": { 35 | "node": ">=6.9.0" 36 | } 37 | }, 38 | "node_modules/@babel/parser": { 39 | "version": "7.27.5", 40 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.5.tgz", 41 | "integrity": "sha512-OsQd175SxWkGlzbny8J3K8TnnDD0N3lrIUtB92xwyRpzaenGZhxDvxN/JgU00U3CDZNj9tPuDJ5H0WS4Nt3vKg==", 42 | "license": "MIT", 43 | "dependencies": { 44 | "@babel/types": "^7.27.3" 45 | }, 46 | "bin": { 47 | "parser": "bin/babel-parser.js" 48 | }, 49 | "engines": { 50 | "node": ">=6.0.0" 51 | } 52 | }, 53 | "node_modules/@babel/types": { 54 | "version": "7.27.6", 55 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.6.tgz", 56 | "integrity": "sha512-ETyHEk2VHHvl9b9jZP5IHPavHYk57EhanlRRuae9XCpb/j5bDCbPPMOBfCWhnl/7EDJz0jEMCi/RhccCE8r1+Q==", 57 | "license": "MIT", 58 | "dependencies": { 59 | "@babel/helper-string-parser": "^7.27.1", 60 | "@babel/helper-validator-identifier": "^7.27.1" 61 | }, 62 | "engines": { 63 | "node": ">=6.9.0" 64 | } 65 | }, 66 | "node_modules/@esbuild/aix-ppc64": { 67 | "version": "0.25.5", 68 | "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.5.tgz", 69 | "integrity": "sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==", 70 | "cpu": [ 71 | "ppc64" 72 | ], 73 | "dev": true, 74 | "license": "MIT", 75 | "optional": true, 76 | "os": [ 77 | "aix" 78 | ], 79 | "engines": { 80 | "node": ">=18" 81 | } 82 | }, 83 | "node_modules/@esbuild/android-arm": { 84 | "version": "0.25.5", 85 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.5.tgz", 86 | "integrity": "sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==", 87 | "cpu": [ 88 | "arm" 89 | ], 90 | "dev": true, 91 | "license": "MIT", 92 | "optional": true, 93 | "os": [ 94 | "android" 95 | ], 96 | "engines": { 97 | "node": ">=18" 98 | } 99 | }, 100 | "node_modules/@esbuild/android-arm64": { 101 | "version": "0.25.5", 102 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.5.tgz", 103 | "integrity": "sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==", 104 | "cpu": [ 105 | "arm64" 106 | ], 107 | "dev": true, 108 | "license": "MIT", 109 | "optional": true, 110 | "os": [ 111 | "android" 112 | ], 113 | "engines": { 114 | "node": ">=18" 115 | } 116 | }, 117 | "node_modules/@esbuild/android-x64": { 118 | "version": "0.25.5", 119 | "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.5.tgz", 120 | "integrity": "sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==", 121 | "cpu": [ 122 | "x64" 123 | ], 124 | "dev": true, 125 | "license": "MIT", 126 | "optional": true, 127 | "os": [ 128 | "android" 129 | ], 130 | "engines": { 131 | "node": ">=18" 132 | } 133 | }, 134 | "node_modules/@esbuild/darwin-arm64": { 135 | "version": "0.25.5", 136 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.5.tgz", 137 | "integrity": "sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==", 138 | "cpu": [ 139 | "arm64" 140 | ], 141 | "dev": true, 142 | "license": "MIT", 143 | "optional": true, 144 | "os": [ 145 | "darwin" 146 | ], 147 | "engines": { 148 | "node": ">=18" 149 | } 150 | }, 151 | "node_modules/@esbuild/darwin-x64": { 152 | "version": "0.25.5", 153 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.5.tgz", 154 | "integrity": "sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==", 155 | "cpu": [ 156 | "x64" 157 | ], 158 | "dev": true, 159 | "license": "MIT", 160 | "optional": true, 161 | "os": [ 162 | "darwin" 163 | ], 164 | "engines": { 165 | "node": ">=18" 166 | } 167 | }, 168 | "node_modules/@esbuild/freebsd-arm64": { 169 | "version": "0.25.5", 170 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.5.tgz", 171 | "integrity": "sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==", 172 | "cpu": [ 173 | "arm64" 174 | ], 175 | "dev": true, 176 | "license": "MIT", 177 | "optional": true, 178 | "os": [ 179 | "freebsd" 180 | ], 181 | "engines": { 182 | "node": ">=18" 183 | } 184 | }, 185 | "node_modules/@esbuild/freebsd-x64": { 186 | "version": "0.25.5", 187 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.5.tgz", 188 | "integrity": "sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==", 189 | "cpu": [ 190 | "x64" 191 | ], 192 | "dev": true, 193 | "license": "MIT", 194 | "optional": true, 195 | "os": [ 196 | "freebsd" 197 | ], 198 | "engines": { 199 | "node": ">=18" 200 | } 201 | }, 202 | "node_modules/@esbuild/linux-arm": { 203 | "version": "0.25.5", 204 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.5.tgz", 205 | "integrity": "sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==", 206 | "cpu": [ 207 | "arm" 208 | ], 209 | "dev": true, 210 | "license": "MIT", 211 | "optional": true, 212 | "os": [ 213 | "linux" 214 | ], 215 | "engines": { 216 | "node": ">=18" 217 | } 218 | }, 219 | "node_modules/@esbuild/linux-arm64": { 220 | "version": "0.25.5", 221 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.5.tgz", 222 | "integrity": "sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==", 223 | "cpu": [ 224 | "arm64" 225 | ], 226 | "dev": true, 227 | "license": "MIT", 228 | "optional": true, 229 | "os": [ 230 | "linux" 231 | ], 232 | "engines": { 233 | "node": ">=18" 234 | } 235 | }, 236 | "node_modules/@esbuild/linux-ia32": { 237 | "version": "0.25.5", 238 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.5.tgz", 239 | "integrity": "sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==", 240 | "cpu": [ 241 | "ia32" 242 | ], 243 | "dev": true, 244 | "license": "MIT", 245 | "optional": true, 246 | "os": [ 247 | "linux" 248 | ], 249 | "engines": { 250 | "node": ">=18" 251 | } 252 | }, 253 | "node_modules/@esbuild/linux-loong64": { 254 | "version": "0.25.5", 255 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.5.tgz", 256 | "integrity": "sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==", 257 | "cpu": [ 258 | "loong64" 259 | ], 260 | "dev": true, 261 | "license": "MIT", 262 | "optional": true, 263 | "os": [ 264 | "linux" 265 | ], 266 | "engines": { 267 | "node": ">=18" 268 | } 269 | }, 270 | "node_modules/@esbuild/linux-mips64el": { 271 | "version": "0.25.5", 272 | "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.5.tgz", 273 | "integrity": "sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==", 274 | "cpu": [ 275 | "mips64el" 276 | ], 277 | "dev": true, 278 | "license": "MIT", 279 | "optional": true, 280 | "os": [ 281 | "linux" 282 | ], 283 | "engines": { 284 | "node": ">=18" 285 | } 286 | }, 287 | "node_modules/@esbuild/linux-ppc64": { 288 | "version": "0.25.5", 289 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.5.tgz", 290 | "integrity": "sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==", 291 | "cpu": [ 292 | "ppc64" 293 | ], 294 | "dev": true, 295 | "license": "MIT", 296 | "optional": true, 297 | "os": [ 298 | "linux" 299 | ], 300 | "engines": { 301 | "node": ">=18" 302 | } 303 | }, 304 | "node_modules/@esbuild/linux-riscv64": { 305 | "version": "0.25.5", 306 | "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.5.tgz", 307 | "integrity": "sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==", 308 | "cpu": [ 309 | "riscv64" 310 | ], 311 | "dev": true, 312 | "license": "MIT", 313 | "optional": true, 314 | "os": [ 315 | "linux" 316 | ], 317 | "engines": { 318 | "node": ">=18" 319 | } 320 | }, 321 | "node_modules/@esbuild/linux-s390x": { 322 | "version": "0.25.5", 323 | "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.5.tgz", 324 | "integrity": "sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==", 325 | "cpu": [ 326 | "s390x" 327 | ], 328 | "dev": true, 329 | "license": "MIT", 330 | "optional": true, 331 | "os": [ 332 | "linux" 333 | ], 334 | "engines": { 335 | "node": ">=18" 336 | } 337 | }, 338 | "node_modules/@esbuild/linux-x64": { 339 | "version": "0.25.5", 340 | "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.5.tgz", 341 | "integrity": "sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==", 342 | "cpu": [ 343 | "x64" 344 | ], 345 | "dev": true, 346 | "license": "MIT", 347 | "optional": true, 348 | "os": [ 349 | "linux" 350 | ], 351 | "engines": { 352 | "node": ">=18" 353 | } 354 | }, 355 | "node_modules/@esbuild/netbsd-arm64": { 356 | "version": "0.25.5", 357 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.5.tgz", 358 | "integrity": "sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==", 359 | "cpu": [ 360 | "arm64" 361 | ], 362 | "dev": true, 363 | "license": "MIT", 364 | "optional": true, 365 | "os": [ 366 | "netbsd" 367 | ], 368 | "engines": { 369 | "node": ">=18" 370 | } 371 | }, 372 | "node_modules/@esbuild/netbsd-x64": { 373 | "version": "0.25.5", 374 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.5.tgz", 375 | "integrity": "sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==", 376 | "cpu": [ 377 | "x64" 378 | ], 379 | "dev": true, 380 | "license": "MIT", 381 | "optional": true, 382 | "os": [ 383 | "netbsd" 384 | ], 385 | "engines": { 386 | "node": ">=18" 387 | } 388 | }, 389 | "node_modules/@esbuild/openbsd-arm64": { 390 | "version": "0.25.5", 391 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.5.tgz", 392 | "integrity": "sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==", 393 | "cpu": [ 394 | "arm64" 395 | ], 396 | "dev": true, 397 | "license": "MIT", 398 | "optional": true, 399 | "os": [ 400 | "openbsd" 401 | ], 402 | "engines": { 403 | "node": ">=18" 404 | } 405 | }, 406 | "node_modules/@esbuild/openbsd-x64": { 407 | "version": "0.25.5", 408 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.5.tgz", 409 | "integrity": "sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==", 410 | "cpu": [ 411 | "x64" 412 | ], 413 | "dev": true, 414 | "license": "MIT", 415 | "optional": true, 416 | "os": [ 417 | "openbsd" 418 | ], 419 | "engines": { 420 | "node": ">=18" 421 | } 422 | }, 423 | "node_modules/@esbuild/sunos-x64": { 424 | "version": "0.25.5", 425 | "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.5.tgz", 426 | "integrity": "sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==", 427 | "cpu": [ 428 | "x64" 429 | ], 430 | "dev": true, 431 | "license": "MIT", 432 | "optional": true, 433 | "os": [ 434 | "sunos" 435 | ], 436 | "engines": { 437 | "node": ">=18" 438 | } 439 | }, 440 | "node_modules/@esbuild/win32-arm64": { 441 | "version": "0.25.5", 442 | "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.5.tgz", 443 | "integrity": "sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==", 444 | "cpu": [ 445 | "arm64" 446 | ], 447 | "dev": true, 448 | "license": "MIT", 449 | "optional": true, 450 | "os": [ 451 | "win32" 452 | ], 453 | "engines": { 454 | "node": ">=18" 455 | } 456 | }, 457 | "node_modules/@esbuild/win32-ia32": { 458 | "version": "0.25.5", 459 | "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.5.tgz", 460 | "integrity": "sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==", 461 | "cpu": [ 462 | "ia32" 463 | ], 464 | "dev": true, 465 | "license": "MIT", 466 | "optional": true, 467 | "os": [ 468 | "win32" 469 | ], 470 | "engines": { 471 | "node": ">=18" 472 | } 473 | }, 474 | "node_modules/@esbuild/win32-x64": { 475 | "version": "0.25.5", 476 | "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.5.tgz", 477 | "integrity": "sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==", 478 | "cpu": [ 479 | "x64" 480 | ], 481 | "dev": true, 482 | "license": "MIT", 483 | "optional": true, 484 | "os": [ 485 | "win32" 486 | ], 487 | "engines": { 488 | "node": ">=18" 489 | } 490 | }, 491 | "node_modules/@firebase/analytics": { 492 | "version": "0.10.0", 493 | "resolved": "https://registry.npmjs.org/@firebase/analytics/-/analytics-0.10.0.tgz", 494 | "integrity": "sha512-Locv8gAqx0e+GX/0SI3dzmBY5e9kjVDtD+3zCFLJ0tH2hJwuCAiL+5WkHuxKj92rqQj/rvkBUCfA1ewlX2hehg==", 495 | "license": "Apache-2.0", 496 | "dependencies": { 497 | "@firebase/component": "0.6.4", 498 | "@firebase/installations": "0.6.4", 499 | "@firebase/logger": "0.4.0", 500 | "@firebase/util": "1.9.3", 501 | "tslib": "^2.1.0" 502 | }, 503 | "peerDependencies": { 504 | "@firebase/app": "0.x" 505 | } 506 | }, 507 | "node_modules/@firebase/analytics-compat": { 508 | "version": "0.2.6", 509 | "resolved": "https://registry.npmjs.org/@firebase/analytics-compat/-/analytics-compat-0.2.6.tgz", 510 | "integrity": "sha512-4MqpVLFkGK7NJf/5wPEEP7ePBJatwYpyjgJ+wQHQGHfzaCDgntOnl9rL2vbVGGKCnRqWtZDIWhctB86UWXaX2Q==", 511 | "license": "Apache-2.0", 512 | "dependencies": { 513 | "@firebase/analytics": "0.10.0", 514 | "@firebase/analytics-types": "0.8.0", 515 | "@firebase/component": "0.6.4", 516 | "@firebase/util": "1.9.3", 517 | "tslib": "^2.1.0" 518 | }, 519 | "peerDependencies": { 520 | "@firebase/app-compat": "0.x" 521 | } 522 | }, 523 | "node_modules/@firebase/analytics-types": { 524 | "version": "0.8.0", 525 | "resolved": "https://registry.npmjs.org/@firebase/analytics-types/-/analytics-types-0.8.0.tgz", 526 | "integrity": "sha512-iRP+QKI2+oz3UAh4nPEq14CsEjrjD6a5+fuypjScisAh9kXKFvdJOZJDwk7kikLvWVLGEs9+kIUS4LPQV7VZVw==", 527 | "license": "Apache-2.0" 528 | }, 529 | "node_modules/@firebase/app": { 530 | "version": "0.9.13", 531 | "resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.9.13.tgz", 532 | "integrity": "sha512-GfiI1JxJ7ecluEmDjPzseRXk/PX31hS7+tjgBopL7XjB2hLUdR+0FTMXy2Q3/hXezypDvU6or7gVFizDESrkXw==", 533 | "license": "Apache-2.0", 534 | "dependencies": { 535 | "@firebase/component": "0.6.4", 536 | "@firebase/logger": "0.4.0", 537 | "@firebase/util": "1.9.3", 538 | "idb": "7.1.1", 539 | "tslib": "^2.1.0" 540 | } 541 | }, 542 | "node_modules/@firebase/app-check": { 543 | "version": "0.8.0", 544 | "resolved": "https://registry.npmjs.org/@firebase/app-check/-/app-check-0.8.0.tgz", 545 | "integrity": "sha512-dRDnhkcaC2FspMiRK/Vbp+PfsOAEP6ZElGm9iGFJ9fDqHoPs0HOPn7dwpJ51lCFi1+2/7n5pRPGhqF/F03I97g==", 546 | "license": "Apache-2.0", 547 | "dependencies": { 548 | "@firebase/component": "0.6.4", 549 | "@firebase/logger": "0.4.0", 550 | "@firebase/util": "1.9.3", 551 | "tslib": "^2.1.0" 552 | }, 553 | "peerDependencies": { 554 | "@firebase/app": "0.x" 555 | } 556 | }, 557 | "node_modules/@firebase/app-check-compat": { 558 | "version": "0.3.7", 559 | "resolved": "https://registry.npmjs.org/@firebase/app-check-compat/-/app-check-compat-0.3.7.tgz", 560 | "integrity": "sha512-cW682AxsyP1G+Z0/P7pO/WT2CzYlNxoNe5QejVarW2o5ZxeWSSPAiVEwpEpQR/bUlUmdeWThYTMvBWaopdBsqw==", 561 | "license": "Apache-2.0", 562 | "dependencies": { 563 | "@firebase/app-check": "0.8.0", 564 | "@firebase/app-check-types": "0.5.0", 565 | "@firebase/component": "0.6.4", 566 | "@firebase/logger": "0.4.0", 567 | "@firebase/util": "1.9.3", 568 | "tslib": "^2.1.0" 569 | }, 570 | "peerDependencies": { 571 | "@firebase/app-compat": "0.x" 572 | } 573 | }, 574 | "node_modules/@firebase/app-check-interop-types": { 575 | "version": "0.3.0", 576 | "resolved": "https://registry.npmjs.org/@firebase/app-check-interop-types/-/app-check-interop-types-0.3.0.tgz", 577 | "integrity": "sha512-xAxHPZPIgFXnI+vb4sbBjZcde7ZluzPPaSK7Lx3/nmuVk4TjZvnL8ONnkd4ERQKL8WePQySU+pRcWkh8rDf5Sg==", 578 | "license": "Apache-2.0" 579 | }, 580 | "node_modules/@firebase/app-check-types": { 581 | "version": "0.5.0", 582 | "resolved": "https://registry.npmjs.org/@firebase/app-check-types/-/app-check-types-0.5.0.tgz", 583 | "integrity": "sha512-uwSUj32Mlubybw7tedRzR24RP8M8JUVR3NPiMk3/Z4bCmgEKTlQBwMXrehDAZ2wF+TsBq0SN1c6ema71U/JPyQ==", 584 | "license": "Apache-2.0" 585 | }, 586 | "node_modules/@firebase/app-compat": { 587 | "version": "0.2.13", 588 | "resolved": "https://registry.npmjs.org/@firebase/app-compat/-/app-compat-0.2.13.tgz", 589 | "integrity": "sha512-j6ANZaWjeVy5zg6X7uiqh6lM6o3n3LD1+/SJFNs9V781xyryyZWXe+tmnWNWPkP086QfJoNkWN9pMQRqSG4vMg==", 590 | "license": "Apache-2.0", 591 | "dependencies": { 592 | "@firebase/app": "0.9.13", 593 | "@firebase/component": "0.6.4", 594 | "@firebase/logger": "0.4.0", 595 | "@firebase/util": "1.9.3", 596 | "tslib": "^2.1.0" 597 | } 598 | }, 599 | "node_modules/@firebase/app-types": { 600 | "version": "0.9.0", 601 | "resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.9.0.tgz", 602 | "integrity": "sha512-AeweANOIo0Mb8GiYm3xhTEBVCmPwTYAu9Hcd2qSkLuga/6+j9b1Jskl5bpiSQWy9eJ/j5pavxj6eYogmnuzm+Q==", 603 | "license": "Apache-2.0" 604 | }, 605 | "node_modules/@firebase/auth": { 606 | "version": "0.23.2", 607 | "resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-0.23.2.tgz", 608 | "integrity": "sha512-dM9iJ0R6tI1JczuGSxXmQbXAgtYie0K4WvKcuyuSTCu9V8eEDiz4tfa1sO3txsfvwg7nOY3AjoCyMYEdqZ8hdg==", 609 | "license": "Apache-2.0", 610 | "dependencies": { 611 | "@firebase/component": "0.6.4", 612 | "@firebase/logger": "0.4.0", 613 | "@firebase/util": "1.9.3", 614 | "node-fetch": "2.6.7", 615 | "tslib": "^2.1.0" 616 | }, 617 | "peerDependencies": { 618 | "@firebase/app": "0.x" 619 | } 620 | }, 621 | "node_modules/@firebase/auth-compat": { 622 | "version": "0.4.2", 623 | "resolved": "https://registry.npmjs.org/@firebase/auth-compat/-/auth-compat-0.4.2.tgz", 624 | "integrity": "sha512-Q30e77DWXFmXEt5dg5JbqEDpjw9y3/PcP9LslDPR7fARmAOTIY9MM6HXzm9KC+dlrKH/+p6l8g9ifJiam9mc4A==", 625 | "license": "Apache-2.0", 626 | "dependencies": { 627 | "@firebase/auth": "0.23.2", 628 | "@firebase/auth-types": "0.12.0", 629 | "@firebase/component": "0.6.4", 630 | "@firebase/util": "1.9.3", 631 | "node-fetch": "2.6.7", 632 | "tslib": "^2.1.0" 633 | }, 634 | "peerDependencies": { 635 | "@firebase/app-compat": "0.x" 636 | } 637 | }, 638 | "node_modules/@firebase/auth-interop-types": { 639 | "version": "0.2.1", 640 | "resolved": "https://registry.npmjs.org/@firebase/auth-interop-types/-/auth-interop-types-0.2.1.tgz", 641 | "integrity": "sha512-VOaGzKp65MY6P5FI84TfYKBXEPi6LmOCSMMzys6o2BN2LOsqy7pCuZCup7NYnfbk5OkkQKzvIfHOzTm0UDpkyg==", 642 | "license": "Apache-2.0" 643 | }, 644 | "node_modules/@firebase/auth-types": { 645 | "version": "0.12.0", 646 | "resolved": "https://registry.npmjs.org/@firebase/auth-types/-/auth-types-0.12.0.tgz", 647 | "integrity": "sha512-pPwaZt+SPOshK8xNoiQlK5XIrS97kFYc3Rc7xmy373QsOJ9MmqXxLaYssP5Kcds4wd2qK//amx/c+A8O2fVeZA==", 648 | "license": "Apache-2.0", 649 | "peerDependencies": { 650 | "@firebase/app-types": "0.x", 651 | "@firebase/util": "1.x" 652 | } 653 | }, 654 | "node_modules/@firebase/component": { 655 | "version": "0.6.4", 656 | "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.6.4.tgz", 657 | "integrity": "sha512-rLMyrXuO9jcAUCaQXCMjCMUsWrba5fzHlNK24xz5j2W6A/SRmK8mZJ/hn7V0fViLbxC0lPMtrK1eYzk6Fg03jA==", 658 | "license": "Apache-2.0", 659 | "dependencies": { 660 | "@firebase/util": "1.9.3", 661 | "tslib": "^2.1.0" 662 | } 663 | }, 664 | "node_modules/@firebase/database": { 665 | "version": "0.14.4", 666 | "resolved": "https://registry.npmjs.org/@firebase/database/-/database-0.14.4.tgz", 667 | "integrity": "sha512-+Ea/IKGwh42jwdjCyzTmeZeLM3oy1h0mFPsTy6OqCWzcu/KFqRAr5Tt1HRCOBlNOdbh84JPZC47WLU18n2VbxQ==", 668 | "license": "Apache-2.0", 669 | "dependencies": { 670 | "@firebase/auth-interop-types": "0.2.1", 671 | "@firebase/component": "0.6.4", 672 | "@firebase/logger": "0.4.0", 673 | "@firebase/util": "1.9.3", 674 | "faye-websocket": "0.11.4", 675 | "tslib": "^2.1.0" 676 | } 677 | }, 678 | "node_modules/@firebase/database-compat": { 679 | "version": "0.3.4", 680 | "resolved": "https://registry.npmjs.org/@firebase/database-compat/-/database-compat-0.3.4.tgz", 681 | "integrity": "sha512-kuAW+l+sLMUKBThnvxvUZ+Q1ZrF/vFJ58iUY9kAcbX48U03nVzIF6Tmkf0p3WVQwMqiXguSgtOPIB6ZCeF+5Gg==", 682 | "license": "Apache-2.0", 683 | "dependencies": { 684 | "@firebase/component": "0.6.4", 685 | "@firebase/database": "0.14.4", 686 | "@firebase/database-types": "0.10.4", 687 | "@firebase/logger": "0.4.0", 688 | "@firebase/util": "1.9.3", 689 | "tslib": "^2.1.0" 690 | } 691 | }, 692 | "node_modules/@firebase/database-types": { 693 | "version": "0.10.4", 694 | "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-0.10.4.tgz", 695 | "integrity": "sha512-dPySn0vJ/89ZeBac70T+2tWWPiJXWbmRygYv0smT5TfE3hDrQ09eKMF3Y+vMlTdrMWq7mUdYW5REWPSGH4kAZQ==", 696 | "license": "Apache-2.0", 697 | "dependencies": { 698 | "@firebase/app-types": "0.9.0", 699 | "@firebase/util": "1.9.3" 700 | } 701 | }, 702 | "node_modules/@firebase/firestore": { 703 | "version": "3.13.0", 704 | "resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-3.13.0.tgz", 705 | "integrity": "sha512-NwcnU+madJXQ4fbLkGx1bWvL612IJN/qO6bZ6dlPmyf7QRyu5azUosijdAN675r+bOOJxMtP1Bv981bHBXAbUg==", 706 | "license": "Apache-2.0", 707 | "dependencies": { 708 | "@firebase/component": "0.6.4", 709 | "@firebase/logger": "0.4.0", 710 | "@firebase/util": "1.9.3", 711 | "@firebase/webchannel-wrapper": "0.10.1", 712 | "@grpc/grpc-js": "~1.7.0", 713 | "@grpc/proto-loader": "^0.6.13", 714 | "node-fetch": "2.6.7", 715 | "tslib": "^2.1.0" 716 | }, 717 | "engines": { 718 | "node": ">=10.10.0" 719 | }, 720 | "peerDependencies": { 721 | "@firebase/app": "0.x" 722 | } 723 | }, 724 | "node_modules/@firebase/firestore-compat": { 725 | "version": "0.3.12", 726 | "resolved": "https://registry.npmjs.org/@firebase/firestore-compat/-/firestore-compat-0.3.12.tgz", 727 | "integrity": "sha512-mazuNGAx5Kt9Nph0pm6ULJFp/+j7GSsx+Ncw1GrnKl+ft1CQ4q2LcUssXnjqkX2Ry0fNGqUzC1mfIUrk9bYtjQ==", 728 | "license": "Apache-2.0", 729 | "dependencies": { 730 | "@firebase/component": "0.6.4", 731 | "@firebase/firestore": "3.13.0", 732 | "@firebase/firestore-types": "2.5.1", 733 | "@firebase/util": "1.9.3", 734 | "tslib": "^2.1.0" 735 | }, 736 | "peerDependencies": { 737 | "@firebase/app-compat": "0.x" 738 | } 739 | }, 740 | "node_modules/@firebase/firestore-types": { 741 | "version": "2.5.1", 742 | "resolved": "https://registry.npmjs.org/@firebase/firestore-types/-/firestore-types-2.5.1.tgz", 743 | "integrity": "sha512-xG0CA6EMfYo8YeUxC8FeDzf6W3FX1cLlcAGBYV6Cku12sZRI81oWcu61RSKM66K6kUENP+78Qm8mvroBcm1whw==", 744 | "license": "Apache-2.0", 745 | "peerDependencies": { 746 | "@firebase/app-types": "0.x", 747 | "@firebase/util": "1.x" 748 | } 749 | }, 750 | "node_modules/@firebase/functions": { 751 | "version": "0.10.0", 752 | "resolved": "https://registry.npmjs.org/@firebase/functions/-/functions-0.10.0.tgz", 753 | "integrity": "sha512-2U+fMNxTYhtwSpkkR6WbBcuNMOVaI7MaH3cZ6UAeNfj7AgEwHwMIFLPpC13YNZhno219F0lfxzTAA0N62ndWzA==", 754 | "license": "Apache-2.0", 755 | "dependencies": { 756 | "@firebase/app-check-interop-types": "0.3.0", 757 | "@firebase/auth-interop-types": "0.2.1", 758 | "@firebase/component": "0.6.4", 759 | "@firebase/messaging-interop-types": "0.2.0", 760 | "@firebase/util": "1.9.3", 761 | "node-fetch": "2.6.7", 762 | "tslib": "^2.1.0" 763 | }, 764 | "peerDependencies": { 765 | "@firebase/app": "0.x" 766 | } 767 | }, 768 | "node_modules/@firebase/functions-compat": { 769 | "version": "0.3.5", 770 | "resolved": "https://registry.npmjs.org/@firebase/functions-compat/-/functions-compat-0.3.5.tgz", 771 | "integrity": "sha512-uD4jwgwVqdWf6uc3NRKF8cSZ0JwGqSlyhPgackyUPe+GAtnERpS4+Vr66g0b3Gge0ezG4iyHo/EXW/Hjx7QhHw==", 772 | "license": "Apache-2.0", 773 | "dependencies": { 774 | "@firebase/component": "0.6.4", 775 | "@firebase/functions": "0.10.0", 776 | "@firebase/functions-types": "0.6.0", 777 | "@firebase/util": "1.9.3", 778 | "tslib": "^2.1.0" 779 | }, 780 | "peerDependencies": { 781 | "@firebase/app-compat": "0.x" 782 | } 783 | }, 784 | "node_modules/@firebase/functions-types": { 785 | "version": "0.6.0", 786 | "resolved": "https://registry.npmjs.org/@firebase/functions-types/-/functions-types-0.6.0.tgz", 787 | "integrity": "sha512-hfEw5VJtgWXIRf92ImLkgENqpL6IWpYaXVYiRkFY1jJ9+6tIhWM7IzzwbevwIIud/jaxKVdRzD7QBWfPmkwCYw==", 788 | "license": "Apache-2.0" 789 | }, 790 | "node_modules/@firebase/installations": { 791 | "version": "0.6.4", 792 | "resolved": "https://registry.npmjs.org/@firebase/installations/-/installations-0.6.4.tgz", 793 | "integrity": "sha512-u5y88rtsp7NYkCHC3ElbFBrPtieUybZluXyzl7+4BsIz4sqb4vSAuwHEUgCgCeaQhvsnxDEU6icly8U9zsJigA==", 794 | "license": "Apache-2.0", 795 | "dependencies": { 796 | "@firebase/component": "0.6.4", 797 | "@firebase/util": "1.9.3", 798 | "idb": "7.0.1", 799 | "tslib": "^2.1.0" 800 | }, 801 | "peerDependencies": { 802 | "@firebase/app": "0.x" 803 | } 804 | }, 805 | "node_modules/@firebase/installations-compat": { 806 | "version": "0.2.4", 807 | "resolved": "https://registry.npmjs.org/@firebase/installations-compat/-/installations-compat-0.2.4.tgz", 808 | "integrity": "sha512-LI9dYjp0aT9Njkn9U4JRrDqQ6KXeAmFbRC0E7jI7+hxl5YmRWysq5qgQl22hcWpTk+cm3es66d/apoDU/A9n6Q==", 809 | "license": "Apache-2.0", 810 | "dependencies": { 811 | "@firebase/component": "0.6.4", 812 | "@firebase/installations": "0.6.4", 813 | "@firebase/installations-types": "0.5.0", 814 | "@firebase/util": "1.9.3", 815 | "tslib": "^2.1.0" 816 | }, 817 | "peerDependencies": { 818 | "@firebase/app-compat": "0.x" 819 | } 820 | }, 821 | "node_modules/@firebase/installations-types": { 822 | "version": "0.5.0", 823 | "resolved": "https://registry.npmjs.org/@firebase/installations-types/-/installations-types-0.5.0.tgz", 824 | "integrity": "sha512-9DP+RGfzoI2jH7gY4SlzqvZ+hr7gYzPODrbzVD82Y12kScZ6ZpRg/i3j6rleto8vTFC8n6Len4560FnV1w2IRg==", 825 | "license": "Apache-2.0", 826 | "peerDependencies": { 827 | "@firebase/app-types": "0.x" 828 | } 829 | }, 830 | "node_modules/@firebase/installations/node_modules/idb": { 831 | "version": "7.0.1", 832 | "resolved": "https://registry.npmjs.org/idb/-/idb-7.0.1.tgz", 833 | "integrity": "sha512-UUxlE7vGWK5RfB/fDwEGgRf84DY/ieqNha6msMV99UsEMQhJ1RwbCd8AYBj3QMgnE3VZnfQvm4oKVCJTYlqIgg==", 834 | "license": "ISC" 835 | }, 836 | "node_modules/@firebase/logger": { 837 | "version": "0.4.0", 838 | "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.4.0.tgz", 839 | "integrity": "sha512-eRKSeykumZ5+cJPdxxJRgAC3G5NknY2GwEbKfymdnXtnT0Ucm4pspfR6GT4MUQEDuJwRVbVcSx85kgJulMoFFA==", 840 | "license": "Apache-2.0", 841 | "dependencies": { 842 | "tslib": "^2.1.0" 843 | } 844 | }, 845 | "node_modules/@firebase/messaging": { 846 | "version": "0.12.4", 847 | "resolved": "https://registry.npmjs.org/@firebase/messaging/-/messaging-0.12.4.tgz", 848 | "integrity": "sha512-6JLZct6zUaex4g7HI3QbzeUrg9xcnmDAPTWpkoMpd/GoSVWH98zDoWXMGrcvHeCAIsLpFMe4MPoZkJbrPhaASw==", 849 | "license": "Apache-2.0", 850 | "dependencies": { 851 | "@firebase/component": "0.6.4", 852 | "@firebase/installations": "0.6.4", 853 | "@firebase/messaging-interop-types": "0.2.0", 854 | "@firebase/util": "1.9.3", 855 | "idb": "7.0.1", 856 | "tslib": "^2.1.0" 857 | }, 858 | "peerDependencies": { 859 | "@firebase/app": "0.x" 860 | } 861 | }, 862 | "node_modules/@firebase/messaging-compat": { 863 | "version": "0.2.4", 864 | "resolved": "https://registry.npmjs.org/@firebase/messaging-compat/-/messaging-compat-0.2.4.tgz", 865 | "integrity": "sha512-lyFjeUhIsPRYDPNIkYX1LcZMpoVbBWXX4rPl7c/rqc7G+EUea7IEtSt4MxTvh6fDfPuzLn7+FZADfscC+tNMfg==", 866 | "license": "Apache-2.0", 867 | "dependencies": { 868 | "@firebase/component": "0.6.4", 869 | "@firebase/messaging": "0.12.4", 870 | "@firebase/util": "1.9.3", 871 | "tslib": "^2.1.0" 872 | }, 873 | "peerDependencies": { 874 | "@firebase/app-compat": "0.x" 875 | } 876 | }, 877 | "node_modules/@firebase/messaging-interop-types": { 878 | "version": "0.2.0", 879 | "resolved": "https://registry.npmjs.org/@firebase/messaging-interop-types/-/messaging-interop-types-0.2.0.tgz", 880 | "integrity": "sha512-ujA8dcRuVeBixGR9CtegfpU4YmZf3Lt7QYkcj693FFannwNuZgfAYaTmbJ40dtjB81SAu6tbFPL9YLNT15KmOQ==", 881 | "license": "Apache-2.0" 882 | }, 883 | "node_modules/@firebase/messaging/node_modules/idb": { 884 | "version": "7.0.1", 885 | "resolved": "https://registry.npmjs.org/idb/-/idb-7.0.1.tgz", 886 | "integrity": "sha512-UUxlE7vGWK5RfB/fDwEGgRf84DY/ieqNha6msMV99UsEMQhJ1RwbCd8AYBj3QMgnE3VZnfQvm4oKVCJTYlqIgg==", 887 | "license": "ISC" 888 | }, 889 | "node_modules/@firebase/performance": { 890 | "version": "0.6.4", 891 | "resolved": "https://registry.npmjs.org/@firebase/performance/-/performance-0.6.4.tgz", 892 | "integrity": "sha512-HfTn/bd8mfy/61vEqaBelNiNnvAbUtME2S25A67Nb34zVuCSCRIX4SseXY6zBnOFj3oLisaEqhVcJmVPAej67g==", 893 | "license": "Apache-2.0", 894 | "dependencies": { 895 | "@firebase/component": "0.6.4", 896 | "@firebase/installations": "0.6.4", 897 | "@firebase/logger": "0.4.0", 898 | "@firebase/util": "1.9.3", 899 | "tslib": "^2.1.0" 900 | }, 901 | "peerDependencies": { 902 | "@firebase/app": "0.x" 903 | } 904 | }, 905 | "node_modules/@firebase/performance-compat": { 906 | "version": "0.2.4", 907 | "resolved": "https://registry.npmjs.org/@firebase/performance-compat/-/performance-compat-0.2.4.tgz", 908 | "integrity": "sha512-nnHUb8uP9G8islzcld/k6Bg5RhX62VpbAb/Anj7IXs/hp32Eb2LqFPZK4sy3pKkBUO5wcrlRWQa6wKOxqlUqsg==", 909 | "license": "Apache-2.0", 910 | "dependencies": { 911 | "@firebase/component": "0.6.4", 912 | "@firebase/logger": "0.4.0", 913 | "@firebase/performance": "0.6.4", 914 | "@firebase/performance-types": "0.2.0", 915 | "@firebase/util": "1.9.3", 916 | "tslib": "^2.1.0" 917 | }, 918 | "peerDependencies": { 919 | "@firebase/app-compat": "0.x" 920 | } 921 | }, 922 | "node_modules/@firebase/performance-types": { 923 | "version": "0.2.0", 924 | "resolved": "https://registry.npmjs.org/@firebase/performance-types/-/performance-types-0.2.0.tgz", 925 | "integrity": "sha512-kYrbr8e/CYr1KLrLYZZt2noNnf+pRwDq2KK9Au9jHrBMnb0/C9X9yWSXmZkFt4UIdsQknBq8uBB7fsybZdOBTA==", 926 | "license": "Apache-2.0" 927 | }, 928 | "node_modules/@firebase/remote-config": { 929 | "version": "0.4.4", 930 | "resolved": "https://registry.npmjs.org/@firebase/remote-config/-/remote-config-0.4.4.tgz", 931 | "integrity": "sha512-x1ioTHGX8ZwDSTOVp8PBLv2/wfwKzb4pxi0gFezS5GCJwbLlloUH4YYZHHS83IPxnua8b6l0IXUaWd0RgbWwzQ==", 932 | "license": "Apache-2.0", 933 | "dependencies": { 934 | "@firebase/component": "0.6.4", 935 | "@firebase/installations": "0.6.4", 936 | "@firebase/logger": "0.4.0", 937 | "@firebase/util": "1.9.3", 938 | "tslib": "^2.1.0" 939 | }, 940 | "peerDependencies": { 941 | "@firebase/app": "0.x" 942 | } 943 | }, 944 | "node_modules/@firebase/remote-config-compat": { 945 | "version": "0.2.4", 946 | "resolved": "https://registry.npmjs.org/@firebase/remote-config-compat/-/remote-config-compat-0.2.4.tgz", 947 | "integrity": "sha512-FKiki53jZirrDFkBHglB3C07j5wBpitAaj8kLME6g8Mx+aq7u9P7qfmuSRytiOItADhWUj7O1JIv7n9q87SuwA==", 948 | "license": "Apache-2.0", 949 | "dependencies": { 950 | "@firebase/component": "0.6.4", 951 | "@firebase/logger": "0.4.0", 952 | "@firebase/remote-config": "0.4.4", 953 | "@firebase/remote-config-types": "0.3.0", 954 | "@firebase/util": "1.9.3", 955 | "tslib": "^2.1.0" 956 | }, 957 | "peerDependencies": { 958 | "@firebase/app-compat": "0.x" 959 | } 960 | }, 961 | "node_modules/@firebase/remote-config-types": { 962 | "version": "0.3.0", 963 | "resolved": "https://registry.npmjs.org/@firebase/remote-config-types/-/remote-config-types-0.3.0.tgz", 964 | "integrity": "sha512-RtEH4vdcbXZuZWRZbIRmQVBNsE7VDQpet2qFvq6vwKLBIQRQR5Kh58M4ok3A3US8Sr3rubYnaGqZSurCwI8uMA==", 965 | "license": "Apache-2.0" 966 | }, 967 | "node_modules/@firebase/storage": { 968 | "version": "0.11.2", 969 | "resolved": "https://registry.npmjs.org/@firebase/storage/-/storage-0.11.2.tgz", 970 | "integrity": "sha512-CtvoFaBI4hGXlXbaCHf8humajkbXhs39Nbh6MbNxtwJiCqxPy9iH3D3CCfXAvP0QvAAwmJUTK3+z9a++Kc4nkA==", 971 | "license": "Apache-2.0", 972 | "dependencies": { 973 | "@firebase/component": "0.6.4", 974 | "@firebase/util": "1.9.3", 975 | "node-fetch": "2.6.7", 976 | "tslib": "^2.1.0" 977 | }, 978 | "peerDependencies": { 979 | "@firebase/app": "0.x" 980 | } 981 | }, 982 | "node_modules/@firebase/storage-compat": { 983 | "version": "0.3.2", 984 | "resolved": "https://registry.npmjs.org/@firebase/storage-compat/-/storage-compat-0.3.2.tgz", 985 | "integrity": "sha512-wvsXlLa9DVOMQJckbDNhXKKxRNNewyUhhbXev3t8kSgoCotd1v3MmqhKKz93ePhDnhHnDs7bYHy+Qa8dRY6BXw==", 986 | "license": "Apache-2.0", 987 | "dependencies": { 988 | "@firebase/component": "0.6.4", 989 | "@firebase/storage": "0.11.2", 990 | "@firebase/storage-types": "0.8.0", 991 | "@firebase/util": "1.9.3", 992 | "tslib": "^2.1.0" 993 | }, 994 | "peerDependencies": { 995 | "@firebase/app-compat": "0.x" 996 | } 997 | }, 998 | "node_modules/@firebase/storage-types": { 999 | "version": "0.8.0", 1000 | "resolved": "https://registry.npmjs.org/@firebase/storage-types/-/storage-types-0.8.0.tgz", 1001 | "integrity": "sha512-isRHcGrTs9kITJC0AVehHfpraWFui39MPaU7Eo8QfWlqW7YPymBmRgjDrlOgFdURh6Cdeg07zmkLP5tzTKRSpg==", 1002 | "license": "Apache-2.0", 1003 | "peerDependencies": { 1004 | "@firebase/app-types": "0.x", 1005 | "@firebase/util": "1.x" 1006 | } 1007 | }, 1008 | "node_modules/@firebase/util": { 1009 | "version": "1.9.3", 1010 | "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.9.3.tgz", 1011 | "integrity": "sha512-DY02CRhOZwpzO36fHpuVysz6JZrscPiBXD0fXp6qSrL9oNOx5KWICKdR95C0lSITzxp0TZosVyHqzatE8JbcjA==", 1012 | "license": "Apache-2.0", 1013 | "dependencies": { 1014 | "tslib": "^2.1.0" 1015 | } 1016 | }, 1017 | "node_modules/@firebase/webchannel-wrapper": { 1018 | "version": "0.10.1", 1019 | "resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.10.1.tgz", 1020 | "integrity": "sha512-Dq5rYfEpdeel0bLVN+nfD1VWmzCkK+pJbSjIawGE+RY4+NIJqhbUDDQjvV0NUK84fMfwxvtFoCtEe70HfZjFcw==", 1021 | "license": "Apache-2.0" 1022 | }, 1023 | "node_modules/@grpc/grpc-js": { 1024 | "version": "1.7.3", 1025 | "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.7.3.tgz", 1026 | "integrity": "sha512-H9l79u4kJ2PVSxUNA08HMYAnUBLj9v6KjYQ7SQ71hOZcEXhShE/y5iQCesP8+6/Ik/7i2O0a10bPquIcYfufog==", 1027 | "license": "Apache-2.0", 1028 | "dependencies": { 1029 | "@grpc/proto-loader": "^0.7.0", 1030 | "@types/node": ">=12.12.47" 1031 | }, 1032 | "engines": { 1033 | "node": "^8.13.0 || >=10.10.0" 1034 | } 1035 | }, 1036 | "node_modules/@grpc/grpc-js/node_modules/@grpc/proto-loader": { 1037 | "version": "0.7.15", 1038 | "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.15.tgz", 1039 | "integrity": "sha512-tMXdRCfYVixjuFK+Hk0Q1s38gV9zDiDJfWL3h1rv4Qc39oILCu1TRTDt7+fGUI8K4G1Fj125Hx/ru3azECWTyQ==", 1040 | "license": "Apache-2.0", 1041 | "dependencies": { 1042 | "lodash.camelcase": "^4.3.0", 1043 | "long": "^5.0.0", 1044 | "protobufjs": "^7.2.5", 1045 | "yargs": "^17.7.2" 1046 | }, 1047 | "bin": { 1048 | "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" 1049 | }, 1050 | "engines": { 1051 | "node": ">=6" 1052 | } 1053 | }, 1054 | "node_modules/@grpc/grpc-js/node_modules/cliui": { 1055 | "version": "8.0.1", 1056 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", 1057 | "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", 1058 | "license": "ISC", 1059 | "dependencies": { 1060 | "string-width": "^4.2.0", 1061 | "strip-ansi": "^6.0.1", 1062 | "wrap-ansi": "^7.0.0" 1063 | }, 1064 | "engines": { 1065 | "node": ">=12" 1066 | } 1067 | }, 1068 | "node_modules/@grpc/grpc-js/node_modules/long": { 1069 | "version": "5.3.2", 1070 | "resolved": "https://registry.npmjs.org/long/-/long-5.3.2.tgz", 1071 | "integrity": "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==", 1072 | "license": "Apache-2.0" 1073 | }, 1074 | "node_modules/@grpc/grpc-js/node_modules/protobufjs": { 1075 | "version": "7.5.3", 1076 | "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.5.3.tgz", 1077 | "integrity": "sha512-sildjKwVqOI2kmFDiXQ6aEB0fjYTafpEvIBs8tOR8qI4spuL9OPROLVu2qZqi/xgCfsHIwVqlaF8JBjWFHnKbw==", 1078 | "hasInstallScript": true, 1079 | "license": "BSD-3-Clause", 1080 | "dependencies": { 1081 | "@protobufjs/aspromise": "^1.1.2", 1082 | "@protobufjs/base64": "^1.1.2", 1083 | "@protobufjs/codegen": "^2.0.4", 1084 | "@protobufjs/eventemitter": "^1.1.0", 1085 | "@protobufjs/fetch": "^1.1.0", 1086 | "@protobufjs/float": "^1.0.2", 1087 | "@protobufjs/inquire": "^1.1.0", 1088 | "@protobufjs/path": "^1.1.2", 1089 | "@protobufjs/pool": "^1.1.0", 1090 | "@protobufjs/utf8": "^1.1.0", 1091 | "@types/node": ">=13.7.0", 1092 | "long": "^5.0.0" 1093 | }, 1094 | "engines": { 1095 | "node": ">=12.0.0" 1096 | } 1097 | }, 1098 | "node_modules/@grpc/grpc-js/node_modules/yargs": { 1099 | "version": "17.7.2", 1100 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", 1101 | "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", 1102 | "license": "MIT", 1103 | "dependencies": { 1104 | "cliui": "^8.0.1", 1105 | "escalade": "^3.1.1", 1106 | "get-caller-file": "^2.0.5", 1107 | "require-directory": "^2.1.1", 1108 | "string-width": "^4.2.3", 1109 | "y18n": "^5.0.5", 1110 | "yargs-parser": "^21.1.1" 1111 | }, 1112 | "engines": { 1113 | "node": ">=12" 1114 | } 1115 | }, 1116 | "node_modules/@grpc/grpc-js/node_modules/yargs-parser": { 1117 | "version": "21.1.1", 1118 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", 1119 | "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", 1120 | "license": "ISC", 1121 | "engines": { 1122 | "node": ">=12" 1123 | } 1124 | }, 1125 | "node_modules/@grpc/proto-loader": { 1126 | "version": "0.6.13", 1127 | "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.6.13.tgz", 1128 | "integrity": "sha512-FjxPYDRTn6Ec3V0arm1FtSpmP6V50wuph2yILpyvTKzjc76oDdoihXqM1DzOW5ubvCC8GivfCnNtfaRE8myJ7g==", 1129 | "license": "Apache-2.0", 1130 | "dependencies": { 1131 | "@types/long": "^4.0.1", 1132 | "lodash.camelcase": "^4.3.0", 1133 | "long": "^4.0.0", 1134 | "protobufjs": "^6.11.3", 1135 | "yargs": "^16.2.0" 1136 | }, 1137 | "bin": { 1138 | "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" 1139 | }, 1140 | "engines": { 1141 | "node": ">=6" 1142 | } 1143 | }, 1144 | "node_modules/@jridgewell/sourcemap-codec": { 1145 | "version": "1.5.0", 1146 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", 1147 | "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", 1148 | "license": "MIT" 1149 | }, 1150 | "node_modules/@protobufjs/aspromise": { 1151 | "version": "1.1.2", 1152 | "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", 1153 | "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==", 1154 | "license": "BSD-3-Clause" 1155 | }, 1156 | "node_modules/@protobufjs/base64": { 1157 | "version": "1.1.2", 1158 | "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", 1159 | "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", 1160 | "license": "BSD-3-Clause" 1161 | }, 1162 | "node_modules/@protobufjs/codegen": { 1163 | "version": "2.0.4", 1164 | "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", 1165 | "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==", 1166 | "license": "BSD-3-Clause" 1167 | }, 1168 | "node_modules/@protobufjs/eventemitter": { 1169 | "version": "1.1.0", 1170 | "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", 1171 | "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==", 1172 | "license": "BSD-3-Clause" 1173 | }, 1174 | "node_modules/@protobufjs/fetch": { 1175 | "version": "1.1.0", 1176 | "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", 1177 | "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", 1178 | "license": "BSD-3-Clause", 1179 | "dependencies": { 1180 | "@protobufjs/aspromise": "^1.1.1", 1181 | "@protobufjs/inquire": "^1.1.0" 1182 | } 1183 | }, 1184 | "node_modules/@protobufjs/float": { 1185 | "version": "1.0.2", 1186 | "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", 1187 | "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==", 1188 | "license": "BSD-3-Clause" 1189 | }, 1190 | "node_modules/@protobufjs/inquire": { 1191 | "version": "1.1.0", 1192 | "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", 1193 | "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==", 1194 | "license": "BSD-3-Clause" 1195 | }, 1196 | "node_modules/@protobufjs/path": { 1197 | "version": "1.1.2", 1198 | "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", 1199 | "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==", 1200 | "license": "BSD-3-Clause" 1201 | }, 1202 | "node_modules/@protobufjs/pool": { 1203 | "version": "1.1.0", 1204 | "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", 1205 | "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==", 1206 | "license": "BSD-3-Clause" 1207 | }, 1208 | "node_modules/@protobufjs/utf8": { 1209 | "version": "1.1.0", 1210 | "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", 1211 | "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==", 1212 | "license": "BSD-3-Clause" 1213 | }, 1214 | "node_modules/@rollup/rollup-android-arm-eabi": { 1215 | "version": "4.42.0", 1216 | "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.42.0.tgz", 1217 | "integrity": "sha512-gldmAyS9hpj+H6LpRNlcjQWbuKUtb94lodB9uCz71Jm+7BxK1VIOo7y62tZZwxhA7j1ylv/yQz080L5WkS+LoQ==", 1218 | "cpu": [ 1219 | "arm" 1220 | ], 1221 | "dev": true, 1222 | "license": "MIT", 1223 | "optional": true, 1224 | "os": [ 1225 | "android" 1226 | ] 1227 | }, 1228 | "node_modules/@rollup/rollup-android-arm64": { 1229 | "version": "4.42.0", 1230 | "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.42.0.tgz", 1231 | "integrity": "sha512-bpRipfTgmGFdCZDFLRvIkSNO1/3RGS74aWkJJTFJBH7h3MRV4UijkaEUeOMbi9wxtxYmtAbVcnMtHTPBhLEkaw==", 1232 | "cpu": [ 1233 | "arm64" 1234 | ], 1235 | "dev": true, 1236 | "license": "MIT", 1237 | "optional": true, 1238 | "os": [ 1239 | "android" 1240 | ] 1241 | }, 1242 | "node_modules/@rollup/rollup-darwin-arm64": { 1243 | "version": "4.42.0", 1244 | "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.42.0.tgz", 1245 | "integrity": "sha512-JxHtA081izPBVCHLKnl6GEA0w3920mlJPLh89NojpU2GsBSB6ypu4erFg/Wx1qbpUbepn0jY4dVWMGZM8gplgA==", 1246 | "cpu": [ 1247 | "arm64" 1248 | ], 1249 | "dev": true, 1250 | "license": "MIT", 1251 | "optional": true, 1252 | "os": [ 1253 | "darwin" 1254 | ] 1255 | }, 1256 | "node_modules/@rollup/rollup-darwin-x64": { 1257 | "version": "4.42.0", 1258 | "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.42.0.tgz", 1259 | "integrity": "sha512-rv5UZaWVIJTDMyQ3dCEK+m0SAn6G7H3PRc2AZmExvbDvtaDc+qXkei0knQWcI3+c9tEs7iL/4I4pTQoPbNL2SA==", 1260 | "cpu": [ 1261 | "x64" 1262 | ], 1263 | "dev": true, 1264 | "license": "MIT", 1265 | "optional": true, 1266 | "os": [ 1267 | "darwin" 1268 | ] 1269 | }, 1270 | "node_modules/@rollup/rollup-freebsd-arm64": { 1271 | "version": "4.42.0", 1272 | "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.42.0.tgz", 1273 | "integrity": "sha512-fJcN4uSGPWdpVmvLuMtALUFwCHgb2XiQjuECkHT3lWLZhSQ3MBQ9pq+WoWeJq2PrNxr9rPM1Qx+IjyGj8/c6zQ==", 1274 | "cpu": [ 1275 | "arm64" 1276 | ], 1277 | "dev": true, 1278 | "license": "MIT", 1279 | "optional": true, 1280 | "os": [ 1281 | "freebsd" 1282 | ] 1283 | }, 1284 | "node_modules/@rollup/rollup-freebsd-x64": { 1285 | "version": "4.42.0", 1286 | "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.42.0.tgz", 1287 | "integrity": "sha512-CziHfyzpp8hJpCVE/ZdTizw58gr+m7Y2Xq5VOuCSrZR++th2xWAz4Nqk52MoIIrV3JHtVBhbBsJcAxs6NammOQ==", 1288 | "cpu": [ 1289 | "x64" 1290 | ], 1291 | "dev": true, 1292 | "license": "MIT", 1293 | "optional": true, 1294 | "os": [ 1295 | "freebsd" 1296 | ] 1297 | }, 1298 | "node_modules/@rollup/rollup-linux-arm-gnueabihf": { 1299 | "version": "4.42.0", 1300 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.42.0.tgz", 1301 | "integrity": "sha512-UsQD5fyLWm2Fe5CDM7VPYAo+UC7+2Px4Y+N3AcPh/LdZu23YcuGPegQly++XEVaC8XUTFVPscl5y5Cl1twEI4A==", 1302 | "cpu": [ 1303 | "arm" 1304 | ], 1305 | "dev": true, 1306 | "license": "MIT", 1307 | "optional": true, 1308 | "os": [ 1309 | "linux" 1310 | ] 1311 | }, 1312 | "node_modules/@rollup/rollup-linux-arm-musleabihf": { 1313 | "version": "4.42.0", 1314 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.42.0.tgz", 1315 | "integrity": "sha512-/i8NIrlgc/+4n1lnoWl1zgH7Uo0XK5xK3EDqVTf38KvyYgCU/Rm04+o1VvvzJZnVS5/cWSd07owkzcVasgfIkQ==", 1316 | "cpu": [ 1317 | "arm" 1318 | ], 1319 | "dev": true, 1320 | "license": "MIT", 1321 | "optional": true, 1322 | "os": [ 1323 | "linux" 1324 | ] 1325 | }, 1326 | "node_modules/@rollup/rollup-linux-arm64-gnu": { 1327 | "version": "4.42.0", 1328 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.42.0.tgz", 1329 | "integrity": "sha512-eoujJFOvoIBjZEi9hJnXAbWg+Vo1Ov8n/0IKZZcPZ7JhBzxh2A+2NFyeMZIRkY9iwBvSjloKgcvnjTbGKHE44Q==", 1330 | "cpu": [ 1331 | "arm64" 1332 | ], 1333 | "dev": true, 1334 | "license": "MIT", 1335 | "optional": true, 1336 | "os": [ 1337 | "linux" 1338 | ] 1339 | }, 1340 | "node_modules/@rollup/rollup-linux-arm64-musl": { 1341 | "version": "4.42.0", 1342 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.42.0.tgz", 1343 | "integrity": "sha512-/3NrcOWFSR7RQUQIuZQChLND36aTU9IYE4j+TB40VU78S+RA0IiqHR30oSh6P1S9f9/wVOenHQnacs/Byb824g==", 1344 | "cpu": [ 1345 | "arm64" 1346 | ], 1347 | "dev": true, 1348 | "license": "MIT", 1349 | "optional": true, 1350 | "os": [ 1351 | "linux" 1352 | ] 1353 | }, 1354 | "node_modules/@rollup/rollup-linux-loongarch64-gnu": { 1355 | "version": "4.42.0", 1356 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.42.0.tgz", 1357 | "integrity": "sha512-O8AplvIeavK5ABmZlKBq9/STdZlnQo7Sle0LLhVA7QT+CiGpNVe197/t8Aph9bhJqbDVGCHpY2i7QyfEDDStDg==", 1358 | "cpu": [ 1359 | "loong64" 1360 | ], 1361 | "dev": true, 1362 | "license": "MIT", 1363 | "optional": true, 1364 | "os": [ 1365 | "linux" 1366 | ] 1367 | }, 1368 | "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { 1369 | "version": "4.42.0", 1370 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.42.0.tgz", 1371 | "integrity": "sha512-6Qb66tbKVN7VyQrekhEzbHRxXXFFD8QKiFAwX5v9Xt6FiJ3BnCVBuyBxa2fkFGqxOCSGGYNejxd8ht+q5SnmtA==", 1372 | "cpu": [ 1373 | "ppc64" 1374 | ], 1375 | "dev": true, 1376 | "license": "MIT", 1377 | "optional": true, 1378 | "os": [ 1379 | "linux" 1380 | ] 1381 | }, 1382 | "node_modules/@rollup/rollup-linux-riscv64-gnu": { 1383 | "version": "4.42.0", 1384 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.42.0.tgz", 1385 | "integrity": "sha512-KQETDSEBamQFvg/d8jajtRwLNBlGc3aKpaGiP/LvEbnmVUKlFta1vqJqTrvPtsYsfbE/DLg5CC9zyXRX3fnBiA==", 1386 | "cpu": [ 1387 | "riscv64" 1388 | ], 1389 | "dev": true, 1390 | "license": "MIT", 1391 | "optional": true, 1392 | "os": [ 1393 | "linux" 1394 | ] 1395 | }, 1396 | "node_modules/@rollup/rollup-linux-riscv64-musl": { 1397 | "version": "4.42.0", 1398 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.42.0.tgz", 1399 | "integrity": "sha512-qMvnyjcU37sCo/tuC+JqeDKSuukGAd+pVlRl/oyDbkvPJ3awk6G6ua7tyum02O3lI+fio+eM5wsVd66X0jQtxw==", 1400 | "cpu": [ 1401 | "riscv64" 1402 | ], 1403 | "dev": true, 1404 | "license": "MIT", 1405 | "optional": true, 1406 | "os": [ 1407 | "linux" 1408 | ] 1409 | }, 1410 | "node_modules/@rollup/rollup-linux-s390x-gnu": { 1411 | "version": "4.42.0", 1412 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.42.0.tgz", 1413 | "integrity": "sha512-I2Y1ZUgTgU2RLddUHXTIgyrdOwljjkmcZ/VilvaEumtS3Fkuhbw4p4hgHc39Ypwvo2o7sBFNl2MquNvGCa55Iw==", 1414 | "cpu": [ 1415 | "s390x" 1416 | ], 1417 | "dev": true, 1418 | "license": "MIT", 1419 | "optional": true, 1420 | "os": [ 1421 | "linux" 1422 | ] 1423 | }, 1424 | "node_modules/@rollup/rollup-linux-x64-gnu": { 1425 | "version": "4.42.0", 1426 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.42.0.tgz", 1427 | "integrity": "sha512-Gfm6cV6mj3hCUY8TqWa63DB8Mx3NADoFwiJrMpoZ1uESbK8FQV3LXkhfry+8bOniq9pqY1OdsjFWNsSbfjPugw==", 1428 | "cpu": [ 1429 | "x64" 1430 | ], 1431 | "dev": true, 1432 | "license": "MIT", 1433 | "optional": true, 1434 | "os": [ 1435 | "linux" 1436 | ] 1437 | }, 1438 | "node_modules/@rollup/rollup-linux-x64-musl": { 1439 | "version": "4.42.0", 1440 | "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.42.0.tgz", 1441 | "integrity": "sha512-g86PF8YZ9GRqkdi0VoGlcDUb4rYtQKyTD1IVtxxN4Hpe7YqLBShA7oHMKU6oKTCi3uxwW4VkIGnOaH/El8de3w==", 1442 | "cpu": [ 1443 | "x64" 1444 | ], 1445 | "dev": true, 1446 | "license": "MIT", 1447 | "optional": true, 1448 | "os": [ 1449 | "linux" 1450 | ] 1451 | }, 1452 | "node_modules/@rollup/rollup-win32-arm64-msvc": { 1453 | "version": "4.42.0", 1454 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.42.0.tgz", 1455 | "integrity": "sha512-+axkdyDGSp6hjyzQ5m1pgcvQScfHnMCcsXkx8pTgy/6qBmWVhtRVlgxjWwDp67wEXXUr0x+vD6tp5W4x6V7u1A==", 1456 | "cpu": [ 1457 | "arm64" 1458 | ], 1459 | "dev": true, 1460 | "license": "MIT", 1461 | "optional": true, 1462 | "os": [ 1463 | "win32" 1464 | ] 1465 | }, 1466 | "node_modules/@rollup/rollup-win32-ia32-msvc": { 1467 | "version": "4.42.0", 1468 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.42.0.tgz", 1469 | "integrity": "sha512-F+5J9pelstXKwRSDq92J0TEBXn2nfUrQGg+HK1+Tk7VOL09e0gBqUHugZv7SW4MGrYj41oNCUe3IKCDGVlis2g==", 1470 | "cpu": [ 1471 | "ia32" 1472 | ], 1473 | "dev": true, 1474 | "license": "MIT", 1475 | "optional": true, 1476 | "os": [ 1477 | "win32" 1478 | ] 1479 | }, 1480 | "node_modules/@rollup/rollup-win32-x64-msvc": { 1481 | "version": "4.42.0", 1482 | "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.42.0.tgz", 1483 | "integrity": "sha512-LpHiJRwkaVz/LqjHjK8LCi8osq7elmpwujwbXKNW88bM8eeGxavJIKKjkjpMHAh/2xfnrt1ZSnhTv41WYUHYmA==", 1484 | "cpu": [ 1485 | "x64" 1486 | ], 1487 | "dev": true, 1488 | "license": "MIT", 1489 | "optional": true, 1490 | "os": [ 1491 | "win32" 1492 | ] 1493 | }, 1494 | "node_modules/@types/estree": { 1495 | "version": "1.0.7", 1496 | "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", 1497 | "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", 1498 | "dev": true, 1499 | "license": "MIT" 1500 | }, 1501 | "node_modules/@types/long": { 1502 | "version": "4.0.2", 1503 | "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", 1504 | "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==", 1505 | "license": "MIT" 1506 | }, 1507 | "node_modules/@types/node": { 1508 | "version": "22.15.30", 1509 | "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.30.tgz", 1510 | "integrity": "sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==", 1511 | "license": "MIT", 1512 | "dependencies": { 1513 | "undici-types": "~6.21.0" 1514 | } 1515 | }, 1516 | "node_modules/@vitejs/plugin-vue": { 1517 | "version": "5.2.4", 1518 | "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.2.4.tgz", 1519 | "integrity": "sha512-7Yx/SXSOcQq5HiiV3orevHUFn+pmMB4cgbEkDYgnkUWb0WfeQ/wa2yFv6D5ICiCQOVpjA7vYDXrC7AGO8yjDHA==", 1520 | "dev": true, 1521 | "license": "MIT", 1522 | "engines": { 1523 | "node": "^18.0.0 || >=20.0.0" 1524 | }, 1525 | "peerDependencies": { 1526 | "vite": "^5.0.0 || ^6.0.0", 1527 | "vue": "^3.2.25" 1528 | } 1529 | }, 1530 | "node_modules/@vue/compiler-core": { 1531 | "version": "3.5.16", 1532 | "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.16.tgz", 1533 | "integrity": "sha512-AOQS2eaQOaaZQoL1u+2rCJIKDruNXVBZSiUD3chnUrsoX5ZTQMaCvXlWNIfxBJuU15r1o7+mpo5223KVtIhAgQ==", 1534 | "license": "MIT", 1535 | "dependencies": { 1536 | "@babel/parser": "^7.27.2", 1537 | "@vue/shared": "3.5.16", 1538 | "entities": "^4.5.0", 1539 | "estree-walker": "^2.0.2", 1540 | "source-map-js": "^1.2.1" 1541 | } 1542 | }, 1543 | "node_modules/@vue/compiler-dom": { 1544 | "version": "3.5.16", 1545 | "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.16.tgz", 1546 | "integrity": "sha512-SSJIhBr/teipXiXjmWOVWLnxjNGo65Oj/8wTEQz0nqwQeP75jWZ0n4sF24Zxoht1cuJoWopwj0J0exYwCJ0dCQ==", 1547 | "license": "MIT", 1548 | "dependencies": { 1549 | "@vue/compiler-core": "3.5.16", 1550 | "@vue/shared": "3.5.16" 1551 | } 1552 | }, 1553 | "node_modules/@vue/compiler-sfc": { 1554 | "version": "3.5.16", 1555 | "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.16.tgz", 1556 | "integrity": "sha512-rQR6VSFNpiinDy/DVUE0vHoIDUF++6p910cgcZoaAUm3POxgNOOdS/xgoll3rNdKYTYPnnbARDCZOyZ+QSe6Pw==", 1557 | "license": "MIT", 1558 | "dependencies": { 1559 | "@babel/parser": "^7.27.2", 1560 | "@vue/compiler-core": "3.5.16", 1561 | "@vue/compiler-dom": "3.5.16", 1562 | "@vue/compiler-ssr": "3.5.16", 1563 | "@vue/shared": "3.5.16", 1564 | "estree-walker": "^2.0.2", 1565 | "magic-string": "^0.30.17", 1566 | "postcss": "^8.5.3", 1567 | "source-map-js": "^1.2.1" 1568 | } 1569 | }, 1570 | "node_modules/@vue/compiler-ssr": { 1571 | "version": "3.5.16", 1572 | "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.16.tgz", 1573 | "integrity": "sha512-d2V7kfxbdsjrDSGlJE7my1ZzCXViEcqN6w14DOsDrUCHEA6vbnVCpRFfrc4ryCP/lCKzX2eS1YtnLE/BuC9f/A==", 1574 | "license": "MIT", 1575 | "dependencies": { 1576 | "@vue/compiler-dom": "3.5.16", 1577 | "@vue/shared": "3.5.16" 1578 | } 1579 | }, 1580 | "node_modules/@vue/devtools-api": { 1581 | "version": "6.6.4", 1582 | "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.4.tgz", 1583 | "integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==", 1584 | "license": "MIT" 1585 | }, 1586 | "node_modules/@vue/reactivity": { 1587 | "version": "3.5.16", 1588 | "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.16.tgz", 1589 | "integrity": "sha512-FG5Q5ee/kxhIm1p2bykPpPwqiUBV3kFySsHEQha5BJvjXdZTUfmya7wP7zC39dFuZAcf/PD5S4Lni55vGLMhvA==", 1590 | "license": "MIT", 1591 | "dependencies": { 1592 | "@vue/shared": "3.5.16" 1593 | } 1594 | }, 1595 | "node_modules/@vue/runtime-core": { 1596 | "version": "3.5.16", 1597 | "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.16.tgz", 1598 | "integrity": "sha512-bw5Ykq6+JFHYxrQa7Tjr+VSzw7Dj4ldR/udyBZbq73fCdJmyy5MPIFR9IX/M5Qs+TtTjuyUTCnmK3lWWwpAcFQ==", 1599 | "license": "MIT", 1600 | "dependencies": { 1601 | "@vue/reactivity": "3.5.16", 1602 | "@vue/shared": "3.5.16" 1603 | } 1604 | }, 1605 | "node_modules/@vue/runtime-dom": { 1606 | "version": "3.5.16", 1607 | "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.16.tgz", 1608 | "integrity": "sha512-T1qqYJsG2xMGhImRUV9y/RseB9d0eCYZQ4CWca9ztCuiPj/XWNNN+lkNBuzVbia5z4/cgxdL28NoQCvC0Xcfww==", 1609 | "license": "MIT", 1610 | "dependencies": { 1611 | "@vue/reactivity": "3.5.16", 1612 | "@vue/runtime-core": "3.5.16", 1613 | "@vue/shared": "3.5.16", 1614 | "csstype": "^3.1.3" 1615 | } 1616 | }, 1617 | "node_modules/@vue/server-renderer": { 1618 | "version": "3.5.16", 1619 | "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.16.tgz", 1620 | "integrity": "sha512-BrX0qLiv/WugguGsnQUJiYOE0Fe5mZTwi6b7X/ybGB0vfrPH9z0gD/Y6WOR1sGCgX4gc25L1RYS5eYQKDMoNIg==", 1621 | "license": "MIT", 1622 | "dependencies": { 1623 | "@vue/compiler-ssr": "3.5.16", 1624 | "@vue/shared": "3.5.16" 1625 | }, 1626 | "peerDependencies": { 1627 | "vue": "3.5.16" 1628 | } 1629 | }, 1630 | "node_modules/@vue/shared": { 1631 | "version": "3.5.16", 1632 | "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.16.tgz", 1633 | "integrity": "sha512-c/0fWy3Jw6Z8L9FmTyYfkpM5zklnqqa9+a6dz3DvONRKW2NEbh46BP0FHuLFSWi2TnQEtp91Z6zOWNrU6QiyPg==", 1634 | "license": "MIT" 1635 | }, 1636 | "node_modules/ansi-regex": { 1637 | "version": "5.0.1", 1638 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 1639 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 1640 | "license": "MIT", 1641 | "engines": { 1642 | "node": ">=8" 1643 | } 1644 | }, 1645 | "node_modules/ansi-styles": { 1646 | "version": "4.3.0", 1647 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 1648 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 1649 | "license": "MIT", 1650 | "dependencies": { 1651 | "color-convert": "^2.0.1" 1652 | }, 1653 | "engines": { 1654 | "node": ">=8" 1655 | }, 1656 | "funding": { 1657 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 1658 | } 1659 | }, 1660 | "node_modules/cliui": { 1661 | "version": "7.0.4", 1662 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", 1663 | "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", 1664 | "license": "ISC", 1665 | "dependencies": { 1666 | "string-width": "^4.2.0", 1667 | "strip-ansi": "^6.0.0", 1668 | "wrap-ansi": "^7.0.0" 1669 | } 1670 | }, 1671 | "node_modules/color-convert": { 1672 | "version": "2.0.1", 1673 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 1674 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 1675 | "license": "MIT", 1676 | "dependencies": { 1677 | "color-name": "~1.1.4" 1678 | }, 1679 | "engines": { 1680 | "node": ">=7.0.0" 1681 | } 1682 | }, 1683 | "node_modules/color-name": { 1684 | "version": "1.1.4", 1685 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 1686 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", 1687 | "license": "MIT" 1688 | }, 1689 | "node_modules/csstype": { 1690 | "version": "3.1.3", 1691 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", 1692 | "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", 1693 | "license": "MIT" 1694 | }, 1695 | "node_modules/emoji-regex": { 1696 | "version": "8.0.0", 1697 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 1698 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", 1699 | "license": "MIT" 1700 | }, 1701 | "node_modules/entities": { 1702 | "version": "4.5.0", 1703 | "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", 1704 | "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", 1705 | "license": "BSD-2-Clause", 1706 | "engines": { 1707 | "node": ">=0.12" 1708 | }, 1709 | "funding": { 1710 | "url": "https://github.com/fb55/entities?sponsor=1" 1711 | } 1712 | }, 1713 | "node_modules/esbuild": { 1714 | "version": "0.25.5", 1715 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.5.tgz", 1716 | "integrity": "sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==", 1717 | "dev": true, 1718 | "hasInstallScript": true, 1719 | "license": "MIT", 1720 | "bin": { 1721 | "esbuild": "bin/esbuild" 1722 | }, 1723 | "engines": { 1724 | "node": ">=18" 1725 | }, 1726 | "optionalDependencies": { 1727 | "@esbuild/aix-ppc64": "0.25.5", 1728 | "@esbuild/android-arm": "0.25.5", 1729 | "@esbuild/android-arm64": "0.25.5", 1730 | "@esbuild/android-x64": "0.25.5", 1731 | "@esbuild/darwin-arm64": "0.25.5", 1732 | "@esbuild/darwin-x64": "0.25.5", 1733 | "@esbuild/freebsd-arm64": "0.25.5", 1734 | "@esbuild/freebsd-x64": "0.25.5", 1735 | "@esbuild/linux-arm": "0.25.5", 1736 | "@esbuild/linux-arm64": "0.25.5", 1737 | "@esbuild/linux-ia32": "0.25.5", 1738 | "@esbuild/linux-loong64": "0.25.5", 1739 | "@esbuild/linux-mips64el": "0.25.5", 1740 | "@esbuild/linux-ppc64": "0.25.5", 1741 | "@esbuild/linux-riscv64": "0.25.5", 1742 | "@esbuild/linux-s390x": "0.25.5", 1743 | "@esbuild/linux-x64": "0.25.5", 1744 | "@esbuild/netbsd-arm64": "0.25.5", 1745 | "@esbuild/netbsd-x64": "0.25.5", 1746 | "@esbuild/openbsd-arm64": "0.25.5", 1747 | "@esbuild/openbsd-x64": "0.25.5", 1748 | "@esbuild/sunos-x64": "0.25.5", 1749 | "@esbuild/win32-arm64": "0.25.5", 1750 | "@esbuild/win32-ia32": "0.25.5", 1751 | "@esbuild/win32-x64": "0.25.5" 1752 | } 1753 | }, 1754 | "node_modules/escalade": { 1755 | "version": "3.2.0", 1756 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", 1757 | "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", 1758 | "license": "MIT", 1759 | "engines": { 1760 | "node": ">=6" 1761 | } 1762 | }, 1763 | "node_modules/estree-walker": { 1764 | "version": "2.0.2", 1765 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", 1766 | "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", 1767 | "license": "MIT" 1768 | }, 1769 | "node_modules/faye-websocket": { 1770 | "version": "0.11.4", 1771 | "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", 1772 | "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", 1773 | "license": "Apache-2.0", 1774 | "dependencies": { 1775 | "websocket-driver": ">=0.5.1" 1776 | }, 1777 | "engines": { 1778 | "node": ">=0.8.0" 1779 | } 1780 | }, 1781 | "node_modules/fdir": { 1782 | "version": "6.4.5", 1783 | "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.5.tgz", 1784 | "integrity": "sha512-4BG7puHpVsIYxZUbiUE3RqGloLaSSwzYie5jvasC4LWuBWzZawynvYouhjbQKw2JuIGYdm0DzIxl8iVidKlUEw==", 1785 | "dev": true, 1786 | "license": "MIT", 1787 | "peerDependencies": { 1788 | "picomatch": "^3 || ^4" 1789 | }, 1790 | "peerDependenciesMeta": { 1791 | "picomatch": { 1792 | "optional": true 1793 | } 1794 | } 1795 | }, 1796 | "node_modules/firebase": { 1797 | "version": "9.23.0", 1798 | "resolved": "https://registry.npmjs.org/firebase/-/firebase-9.23.0.tgz", 1799 | "integrity": "sha512-/4lUVY0lUvBDIaeY1q6dUYhS8Sd18Qb9CgWkPZICUo9IXpJNCEagfNZXBBFCkMTTN5L5gx2Hjr27y21a9NzUcA==", 1800 | "license": "Apache-2.0", 1801 | "dependencies": { 1802 | "@firebase/analytics": "0.10.0", 1803 | "@firebase/analytics-compat": "0.2.6", 1804 | "@firebase/app": "0.9.13", 1805 | "@firebase/app-check": "0.8.0", 1806 | "@firebase/app-check-compat": "0.3.7", 1807 | "@firebase/app-compat": "0.2.13", 1808 | "@firebase/app-types": "0.9.0", 1809 | "@firebase/auth": "0.23.2", 1810 | "@firebase/auth-compat": "0.4.2", 1811 | "@firebase/database": "0.14.4", 1812 | "@firebase/database-compat": "0.3.4", 1813 | "@firebase/firestore": "3.13.0", 1814 | "@firebase/firestore-compat": "0.3.12", 1815 | "@firebase/functions": "0.10.0", 1816 | "@firebase/functions-compat": "0.3.5", 1817 | "@firebase/installations": "0.6.4", 1818 | "@firebase/installations-compat": "0.2.4", 1819 | "@firebase/messaging": "0.12.4", 1820 | "@firebase/messaging-compat": "0.2.4", 1821 | "@firebase/performance": "0.6.4", 1822 | "@firebase/performance-compat": "0.2.4", 1823 | "@firebase/remote-config": "0.4.4", 1824 | "@firebase/remote-config-compat": "0.2.4", 1825 | "@firebase/storage": "0.11.2", 1826 | "@firebase/storage-compat": "0.3.2", 1827 | "@firebase/util": "1.9.3" 1828 | } 1829 | }, 1830 | "node_modules/fsevents": { 1831 | "version": "2.3.3", 1832 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", 1833 | "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", 1834 | "dev": true, 1835 | "hasInstallScript": true, 1836 | "license": "MIT", 1837 | "optional": true, 1838 | "os": [ 1839 | "darwin" 1840 | ], 1841 | "engines": { 1842 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 1843 | } 1844 | }, 1845 | "node_modules/get-caller-file": { 1846 | "version": "2.0.5", 1847 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 1848 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", 1849 | "license": "ISC", 1850 | "engines": { 1851 | "node": "6.* || 8.* || >= 10.*" 1852 | } 1853 | }, 1854 | "node_modules/http-parser-js": { 1855 | "version": "0.5.10", 1856 | "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.10.tgz", 1857 | "integrity": "sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==", 1858 | "license": "MIT" 1859 | }, 1860 | "node_modules/idb": { 1861 | "version": "7.1.1", 1862 | "resolved": "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz", 1863 | "integrity": "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==", 1864 | "license": "ISC" 1865 | }, 1866 | "node_modules/is-fullwidth-code-point": { 1867 | "version": "3.0.0", 1868 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 1869 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 1870 | "license": "MIT", 1871 | "engines": { 1872 | "node": ">=8" 1873 | } 1874 | }, 1875 | "node_modules/lodash.camelcase": { 1876 | "version": "4.3.0", 1877 | "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", 1878 | "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", 1879 | "license": "MIT" 1880 | }, 1881 | "node_modules/long": { 1882 | "version": "4.0.0", 1883 | "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", 1884 | "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==", 1885 | "license": "Apache-2.0" 1886 | }, 1887 | "node_modules/magic-string": { 1888 | "version": "0.30.17", 1889 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", 1890 | "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", 1891 | "license": "MIT", 1892 | "dependencies": { 1893 | "@jridgewell/sourcemap-codec": "^1.5.0" 1894 | } 1895 | }, 1896 | "node_modules/nanoid": { 1897 | "version": "3.3.11", 1898 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", 1899 | "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", 1900 | "funding": [ 1901 | { 1902 | "type": "github", 1903 | "url": "https://github.com/sponsors/ai" 1904 | } 1905 | ], 1906 | "license": "MIT", 1907 | "bin": { 1908 | "nanoid": "bin/nanoid.cjs" 1909 | }, 1910 | "engines": { 1911 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 1912 | } 1913 | }, 1914 | "node_modules/node-fetch": { 1915 | "version": "2.6.7", 1916 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", 1917 | "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", 1918 | "license": "MIT", 1919 | "dependencies": { 1920 | "whatwg-url": "^5.0.0" 1921 | }, 1922 | "engines": { 1923 | "node": "4.x || >=6.0.0" 1924 | }, 1925 | "peerDependencies": { 1926 | "encoding": "^0.1.0" 1927 | }, 1928 | "peerDependenciesMeta": { 1929 | "encoding": { 1930 | "optional": true 1931 | } 1932 | } 1933 | }, 1934 | "node_modules/picocolors": { 1935 | "version": "1.1.1", 1936 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", 1937 | "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", 1938 | "license": "ISC" 1939 | }, 1940 | "node_modules/picomatch": { 1941 | "version": "4.0.2", 1942 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", 1943 | "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", 1944 | "dev": true, 1945 | "license": "MIT", 1946 | "engines": { 1947 | "node": ">=12" 1948 | }, 1949 | "funding": { 1950 | "url": "https://github.com/sponsors/jonschlinkert" 1951 | } 1952 | }, 1953 | "node_modules/postcss": { 1954 | "version": "8.5.4", 1955 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.4.tgz", 1956 | "integrity": "sha512-QSa9EBe+uwlGTFmHsPKokv3B/oEMQZxfqW0QqNCyhpa6mB1afzulwn8hihglqAb2pOw+BJgNlmXQ8la2VeHB7w==", 1957 | "funding": [ 1958 | { 1959 | "type": "opencollective", 1960 | "url": "https://opencollective.com/postcss/" 1961 | }, 1962 | { 1963 | "type": "tidelift", 1964 | "url": "https://tidelift.com/funding/github/npm/postcss" 1965 | }, 1966 | { 1967 | "type": "github", 1968 | "url": "https://github.com/sponsors/ai" 1969 | } 1970 | ], 1971 | "license": "MIT", 1972 | "dependencies": { 1973 | "nanoid": "^3.3.11", 1974 | "picocolors": "^1.1.1", 1975 | "source-map-js": "^1.2.1" 1976 | }, 1977 | "engines": { 1978 | "node": "^10 || ^12 || >=14" 1979 | } 1980 | }, 1981 | "node_modules/protobufjs": { 1982 | "version": "6.11.4", 1983 | "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.4.tgz", 1984 | "integrity": "sha512-5kQWPaJHi1WoCpjTGszzQ32PG2F4+wRY6BmAT4Vfw56Q2FZ4YZzK20xUYQH4YkfehY1e6QSICrJquM6xXZNcrw==", 1985 | "hasInstallScript": true, 1986 | "license": "BSD-3-Clause", 1987 | "dependencies": { 1988 | "@protobufjs/aspromise": "^1.1.2", 1989 | "@protobufjs/base64": "^1.1.2", 1990 | "@protobufjs/codegen": "^2.0.4", 1991 | "@protobufjs/eventemitter": "^1.1.0", 1992 | "@protobufjs/fetch": "^1.1.0", 1993 | "@protobufjs/float": "^1.0.2", 1994 | "@protobufjs/inquire": "^1.1.0", 1995 | "@protobufjs/path": "^1.1.2", 1996 | "@protobufjs/pool": "^1.1.0", 1997 | "@protobufjs/utf8": "^1.1.0", 1998 | "@types/long": "^4.0.1", 1999 | "@types/node": ">=13.7.0", 2000 | "long": "^4.0.0" 2001 | }, 2002 | "bin": { 2003 | "pbjs": "bin/pbjs", 2004 | "pbts": "bin/pbts" 2005 | } 2006 | }, 2007 | "node_modules/require-directory": { 2008 | "version": "2.1.1", 2009 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 2010 | "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", 2011 | "license": "MIT", 2012 | "engines": { 2013 | "node": ">=0.10.0" 2014 | } 2015 | }, 2016 | "node_modules/rollup": { 2017 | "version": "4.42.0", 2018 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.42.0.tgz", 2019 | "integrity": "sha512-LW+Vse3BJPyGJGAJt1j8pWDKPd73QM8cRXYK1IxOBgL2AGLu7Xd2YOW0M2sLUBCkF5MshXXtMApyEAEzMVMsnw==", 2020 | "dev": true, 2021 | "license": "MIT", 2022 | "dependencies": { 2023 | "@types/estree": "1.0.7" 2024 | }, 2025 | "bin": { 2026 | "rollup": "dist/bin/rollup" 2027 | }, 2028 | "engines": { 2029 | "node": ">=18.0.0", 2030 | "npm": ">=8.0.0" 2031 | }, 2032 | "optionalDependencies": { 2033 | "@rollup/rollup-android-arm-eabi": "4.42.0", 2034 | "@rollup/rollup-android-arm64": "4.42.0", 2035 | "@rollup/rollup-darwin-arm64": "4.42.0", 2036 | "@rollup/rollup-darwin-x64": "4.42.0", 2037 | "@rollup/rollup-freebsd-arm64": "4.42.0", 2038 | "@rollup/rollup-freebsd-x64": "4.42.0", 2039 | "@rollup/rollup-linux-arm-gnueabihf": "4.42.0", 2040 | "@rollup/rollup-linux-arm-musleabihf": "4.42.0", 2041 | "@rollup/rollup-linux-arm64-gnu": "4.42.0", 2042 | "@rollup/rollup-linux-arm64-musl": "4.42.0", 2043 | "@rollup/rollup-linux-loongarch64-gnu": "4.42.0", 2044 | "@rollup/rollup-linux-powerpc64le-gnu": "4.42.0", 2045 | "@rollup/rollup-linux-riscv64-gnu": "4.42.0", 2046 | "@rollup/rollup-linux-riscv64-musl": "4.42.0", 2047 | "@rollup/rollup-linux-s390x-gnu": "4.42.0", 2048 | "@rollup/rollup-linux-x64-gnu": "4.42.0", 2049 | "@rollup/rollup-linux-x64-musl": "4.42.0", 2050 | "@rollup/rollup-win32-arm64-msvc": "4.42.0", 2051 | "@rollup/rollup-win32-ia32-msvc": "4.42.0", 2052 | "@rollup/rollup-win32-x64-msvc": "4.42.0", 2053 | "fsevents": "~2.3.2" 2054 | } 2055 | }, 2056 | "node_modules/safe-buffer": { 2057 | "version": "5.2.1", 2058 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 2059 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 2060 | "funding": [ 2061 | { 2062 | "type": "github", 2063 | "url": "https://github.com/sponsors/feross" 2064 | }, 2065 | { 2066 | "type": "patreon", 2067 | "url": "https://www.patreon.com/feross" 2068 | }, 2069 | { 2070 | "type": "consulting", 2071 | "url": "https://feross.org/support" 2072 | } 2073 | ], 2074 | "license": "MIT" 2075 | }, 2076 | "node_modules/source-map-js": { 2077 | "version": "1.2.1", 2078 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", 2079 | "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", 2080 | "license": "BSD-3-Clause", 2081 | "engines": { 2082 | "node": ">=0.10.0" 2083 | } 2084 | }, 2085 | "node_modules/string-width": { 2086 | "version": "4.2.3", 2087 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 2088 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 2089 | "license": "MIT", 2090 | "dependencies": { 2091 | "emoji-regex": "^8.0.0", 2092 | "is-fullwidth-code-point": "^3.0.0", 2093 | "strip-ansi": "^6.0.1" 2094 | }, 2095 | "engines": { 2096 | "node": ">=8" 2097 | } 2098 | }, 2099 | "node_modules/strip-ansi": { 2100 | "version": "6.0.1", 2101 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 2102 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 2103 | "license": "MIT", 2104 | "dependencies": { 2105 | "ansi-regex": "^5.0.1" 2106 | }, 2107 | "engines": { 2108 | "node": ">=8" 2109 | } 2110 | }, 2111 | "node_modules/tinyglobby": { 2112 | "version": "0.2.14", 2113 | "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz", 2114 | "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==", 2115 | "dev": true, 2116 | "license": "MIT", 2117 | "dependencies": { 2118 | "fdir": "^6.4.4", 2119 | "picomatch": "^4.0.2" 2120 | }, 2121 | "engines": { 2122 | "node": ">=12.0.0" 2123 | }, 2124 | "funding": { 2125 | "url": "https://github.com/sponsors/SuperchupuDev" 2126 | } 2127 | }, 2128 | "node_modules/tr46": { 2129 | "version": "0.0.3", 2130 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", 2131 | "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", 2132 | "license": "MIT" 2133 | }, 2134 | "node_modules/tslib": { 2135 | "version": "2.8.1", 2136 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", 2137 | "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", 2138 | "license": "0BSD" 2139 | }, 2140 | "node_modules/undici-types": { 2141 | "version": "6.21.0", 2142 | "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", 2143 | "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", 2144 | "license": "MIT" 2145 | }, 2146 | "node_modules/vite": { 2147 | "version": "6.3.5", 2148 | "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.5.tgz", 2149 | "integrity": "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==", 2150 | "dev": true, 2151 | "license": "MIT", 2152 | "dependencies": { 2153 | "esbuild": "^0.25.0", 2154 | "fdir": "^6.4.4", 2155 | "picomatch": "^4.0.2", 2156 | "postcss": "^8.5.3", 2157 | "rollup": "^4.34.9", 2158 | "tinyglobby": "^0.2.13" 2159 | }, 2160 | "bin": { 2161 | "vite": "bin/vite.js" 2162 | }, 2163 | "engines": { 2164 | "node": "^18.0.0 || ^20.0.0 || >=22.0.0" 2165 | }, 2166 | "funding": { 2167 | "url": "https://github.com/vitejs/vite?sponsor=1" 2168 | }, 2169 | "optionalDependencies": { 2170 | "fsevents": "~2.3.3" 2171 | }, 2172 | "peerDependencies": { 2173 | "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", 2174 | "jiti": ">=1.21.0", 2175 | "less": "*", 2176 | "lightningcss": "^1.21.0", 2177 | "sass": "*", 2178 | "sass-embedded": "*", 2179 | "stylus": "*", 2180 | "sugarss": "*", 2181 | "terser": "^5.16.0", 2182 | "tsx": "^4.8.1", 2183 | "yaml": "^2.4.2" 2184 | }, 2185 | "peerDependenciesMeta": { 2186 | "@types/node": { 2187 | "optional": true 2188 | }, 2189 | "jiti": { 2190 | "optional": true 2191 | }, 2192 | "less": { 2193 | "optional": true 2194 | }, 2195 | "lightningcss": { 2196 | "optional": true 2197 | }, 2198 | "sass": { 2199 | "optional": true 2200 | }, 2201 | "sass-embedded": { 2202 | "optional": true 2203 | }, 2204 | "stylus": { 2205 | "optional": true 2206 | }, 2207 | "sugarss": { 2208 | "optional": true 2209 | }, 2210 | "terser": { 2211 | "optional": true 2212 | }, 2213 | "tsx": { 2214 | "optional": true 2215 | }, 2216 | "yaml": { 2217 | "optional": true 2218 | } 2219 | } 2220 | }, 2221 | "node_modules/vue": { 2222 | "version": "3.5.16", 2223 | "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.16.tgz", 2224 | "integrity": "sha512-rjOV2ecxMd5SiAmof2xzh2WxntRcigkX/He4YFJ6WdRvVUrbt6DxC1Iujh10XLl8xCDRDtGKMeO3D+pRQ1PP9w==", 2225 | "license": "MIT", 2226 | "dependencies": { 2227 | "@vue/compiler-dom": "3.5.16", 2228 | "@vue/compiler-sfc": "3.5.16", 2229 | "@vue/runtime-dom": "3.5.16", 2230 | "@vue/server-renderer": "3.5.16", 2231 | "@vue/shared": "3.5.16" 2232 | }, 2233 | "peerDependencies": { 2234 | "typescript": "*" 2235 | }, 2236 | "peerDependenciesMeta": { 2237 | "typescript": { 2238 | "optional": true 2239 | } 2240 | } 2241 | }, 2242 | "node_modules/vue-router": { 2243 | "version": "4.5.1", 2244 | "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.5.1.tgz", 2245 | "integrity": "sha512-ogAF3P97NPm8fJsE4by9dwSYtDwXIY1nFY9T6DyQnGHd1E2Da94w9JIolpe42LJGIl0DwOHBi8TcRPlPGwbTtw==", 2246 | "license": "MIT", 2247 | "dependencies": { 2248 | "@vue/devtools-api": "^6.6.4" 2249 | }, 2250 | "funding": { 2251 | "url": "https://github.com/sponsors/posva" 2252 | }, 2253 | "peerDependencies": { 2254 | "vue": "^3.2.0" 2255 | } 2256 | }, 2257 | "node_modules/webidl-conversions": { 2258 | "version": "3.0.1", 2259 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", 2260 | "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", 2261 | "license": "BSD-2-Clause" 2262 | }, 2263 | "node_modules/websocket-driver": { 2264 | "version": "0.7.4", 2265 | "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", 2266 | "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", 2267 | "license": "Apache-2.0", 2268 | "dependencies": { 2269 | "http-parser-js": ">=0.5.1", 2270 | "safe-buffer": ">=5.1.0", 2271 | "websocket-extensions": ">=0.1.1" 2272 | }, 2273 | "engines": { 2274 | "node": ">=0.8.0" 2275 | } 2276 | }, 2277 | "node_modules/websocket-extensions": { 2278 | "version": "0.1.4", 2279 | "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", 2280 | "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", 2281 | "license": "Apache-2.0", 2282 | "engines": { 2283 | "node": ">=0.8.0" 2284 | } 2285 | }, 2286 | "node_modules/whatwg-url": { 2287 | "version": "5.0.0", 2288 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", 2289 | "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", 2290 | "license": "MIT", 2291 | "dependencies": { 2292 | "tr46": "~0.0.3", 2293 | "webidl-conversions": "^3.0.0" 2294 | } 2295 | }, 2296 | "node_modules/wrap-ansi": { 2297 | "version": "7.0.0", 2298 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 2299 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 2300 | "license": "MIT", 2301 | "dependencies": { 2302 | "ansi-styles": "^4.0.0", 2303 | "string-width": "^4.1.0", 2304 | "strip-ansi": "^6.0.0" 2305 | }, 2306 | "engines": { 2307 | "node": ">=10" 2308 | }, 2309 | "funding": { 2310 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 2311 | } 2312 | }, 2313 | "node_modules/y18n": { 2314 | "version": "5.0.8", 2315 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", 2316 | "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", 2317 | "license": "ISC", 2318 | "engines": { 2319 | "node": ">=10" 2320 | } 2321 | }, 2322 | "node_modules/yargs": { 2323 | "version": "16.2.0", 2324 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", 2325 | "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", 2326 | "license": "MIT", 2327 | "dependencies": { 2328 | "cliui": "^7.0.2", 2329 | "escalade": "^3.1.1", 2330 | "get-caller-file": "^2.0.5", 2331 | "require-directory": "^2.1.1", 2332 | "string-width": "^4.2.0", 2333 | "y18n": "^5.0.5", 2334 | "yargs-parser": "^20.2.2" 2335 | }, 2336 | "engines": { 2337 | "node": ">=10" 2338 | } 2339 | }, 2340 | "node_modules/yargs-parser": { 2341 | "version": "20.2.9", 2342 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", 2343 | "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", 2344 | "license": "ISC", 2345 | "engines": { 2346 | "node": ">=10" 2347 | } 2348 | } 2349 | } 2350 | } 2351 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vue3-firebase-chat", 3 | "private": true, 4 | "version": "0.0.0", 5 | "type": "module", 6 | "scripts": { 7 | "dev": "vite", 8 | "build": "vite build", 9 | "preview": "vite preview" 10 | }, 11 | "dependencies": { 12 | "firebase": "^9.23.0", 13 | "vue": "^3.5.13", 14 | "vue-router": "^4.5.1" 15 | }, 16 | "devDependencies": { 17 | "@vitejs/plugin-vue": "^5.2.3", 18 | "vite": "^6.3.5" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /public/vite.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/App.vue: -------------------------------------------------------------------------------- 1 | 4 | 5 | 16 | 17 | 31 | -------------------------------------------------------------------------------- /src/Firebase.js: -------------------------------------------------------------------------------- 1 | import { initializeApp } from "firebase/app"; 2 | import { getDatabase } from "firebase/database"; 3 | 4 | const firebaseConfig = { 5 | /* your config */ 6 | }; 7 | const app = initializeApp(firebaseConfig); 8 | const db = getDatabase(app); 9 | 10 | export { db }; 11 | -------------------------------------------------------------------------------- /src/assets/vue.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/components/AddRoom.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 29 | 30 | 63 | -------------------------------------------------------------------------------- /src/components/Chat.vue: -------------------------------------------------------------------------------- 1 | 23 | 24 | 56 | 57 | 107 | -------------------------------------------------------------------------------- /src/components/ChatRoom.vue: -------------------------------------------------------------------------------- 1 | 16 | 17 | 56 | -------------------------------------------------------------------------------- /src/components/HelloWorld.vue: -------------------------------------------------------------------------------- 1 | 10 | 11 | 38 | 39 | 44 | -------------------------------------------------------------------------------- /src/components/Login.vue: -------------------------------------------------------------------------------- 1 | 8 | 9 | 30 | 31 | 64 | -------------------------------------------------------------------------------- /src/components/RoomList.vue: -------------------------------------------------------------------------------- 1 | 12 | 13 | 41 | 42 | 80 | -------------------------------------------------------------------------------- /src/main.js: -------------------------------------------------------------------------------- 1 | import { createApp } from "vue"; 2 | import App from "./App.vue"; 3 | import router from "./router"; 4 | import "./firebase"; // initialize 5 | 6 | createApp(App).use(router).mount("#app"); 7 | -------------------------------------------------------------------------------- /src/router/index.js: -------------------------------------------------------------------------------- 1 | import { createRouter, createWebHistory } from "vue-router"; 2 | import Login from "../components/Login.vue"; 3 | import RoomList from "../components/Room.vue"; 4 | import Chat from "../components/Chat.vue"; 5 | 6 | const routes = [ 7 | { path: "/", component: Login }, 8 | { path: "/rooms", component: RoomList }, 9 | { path: "/chat/:roomId", component: Chat, props: true } 10 | ]; 11 | 12 | const router = createRouter({ 13 | history: createWebHistory(), 14 | routes 15 | }); 16 | 17 | export default router; 18 | -------------------------------------------------------------------------------- /src/style.css: -------------------------------------------------------------------------------- 1 | :root { 2 | font-family: system-ui, Avenir, Helvetica, Arial, sans-serif; 3 | line-height: 1.5; 4 | font-weight: 400; 5 | 6 | color-scheme: light dark; 7 | color: rgba(255, 255, 255, 0.87); 8 | background-color: #242424; 9 | 10 | font-synthesis: none; 11 | text-rendering: optimizeLegibility; 12 | -webkit-font-smoothing: antialiased; 13 | -moz-osx-font-smoothing: grayscale; 14 | } 15 | 16 | a { 17 | font-weight: 500; 18 | color: #646cff; 19 | text-decoration: inherit; 20 | } 21 | a:hover { 22 | color: #535bf2; 23 | } 24 | 25 | body { 26 | margin: 0; 27 | display: flex; 28 | place-items: center; 29 | min-width: 320px; 30 | min-height: 100vh; 31 | } 32 | 33 | h1 { 34 | font-size: 3.2em; 35 | line-height: 1.1; 36 | } 37 | 38 | button { 39 | border-radius: 8px; 40 | border: 1px solid transparent; 41 | padding: 0.6em 1.2em; 42 | font-size: 1em; 43 | font-weight: 500; 44 | font-family: inherit; 45 | background-color: #1a1a1a; 46 | cursor: pointer; 47 | transition: border-color 0.25s; 48 | } 49 | button:hover { 50 | border-color: #646cff; 51 | } 52 | button:focus, 53 | button:focus-visible { 54 | outline: 4px auto -webkit-focus-ring-color; 55 | } 56 | 57 | .card { 58 | padding: 2em; 59 | } 60 | 61 | #app { 62 | max-width: 1280px; 63 | margin: 0 auto; 64 | padding: 2rem; 65 | text-align: center; 66 | } 67 | 68 | @media (prefers-color-scheme: light) { 69 | :root { 70 | color: #213547; 71 | background-color: #ffffff; 72 | } 73 | a:hover { 74 | color: #747bff; 75 | } 76 | button { 77 | background-color: #f9f9f9; 78 | } 79 | } 80 | -------------------------------------------------------------------------------- /vite.config.js: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite' 2 | import vue from '@vitejs/plugin-vue' 3 | 4 | // https://vite.dev/config/ 5 | export default defineConfig({ 6 | plugins: [vue()], 7 | }) 8 | --------------------------------------------------------------------------------