├── .gitattributes ├── .gitignore ├── .npmrc ├── README.md ├── package-lock.json ├── package.json ├── src ├── app.html ├── components │ ├── Authenticate.svelte │ └── TodoItem.svelte ├── lib │ └── firebase │ │ └── firebase.js ├── routes │ ├── +layout.svelte │ ├── +page.svelte │ └── dashboard │ │ └── +page.svelte └── store │ └── store.js ├── static └── favicon.png ├── svelte.config.js └── vite.config.js /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /build 4 | /.svelte-kit 5 | /package 6 | .env 7 | .env.* 8 | !.env.example 9 | vite.config.js.timestamp-* 10 | vite.config.ts.timestamp-* 11 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | engine-strict=true 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # sveltekit-fullstack-crud 2 | Sveltekit + Firebase full stack CRUD app tutorial 3 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "sveltekit-fullstack-crud", 3 | "version": "0.0.1", 4 | "lockfileVersion": 3, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "sveltekit-fullstack-crud", 9 | "version": "0.0.1", 10 | "dependencies": { 11 | "firebase": "^9.17.2" 12 | }, 13 | "devDependencies": { 14 | "@sveltejs/adapter-auto": "^2.0.0", 15 | "@sveltejs/kit": "^1.5.0", 16 | "svelte": "^3.54.0", 17 | "vite": "^4.0.0" 18 | } 19 | }, 20 | "node_modules/@esbuild/android-arm": { 21 | "version": "0.16.17", 22 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.17.tgz", 23 | "integrity": "sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==", 24 | "cpu": [ 25 | "arm" 26 | ], 27 | "dev": true, 28 | "optional": true, 29 | "os": [ 30 | "android" 31 | ], 32 | "engines": { 33 | "node": ">=12" 34 | } 35 | }, 36 | "node_modules/@esbuild/android-arm64": { 37 | "version": "0.16.17", 38 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.17.tgz", 39 | "integrity": "sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==", 40 | "cpu": [ 41 | "arm64" 42 | ], 43 | "dev": true, 44 | "optional": true, 45 | "os": [ 46 | "android" 47 | ], 48 | "engines": { 49 | "node": ">=12" 50 | } 51 | }, 52 | "node_modules/@esbuild/android-x64": { 53 | "version": "0.16.17", 54 | "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.17.tgz", 55 | "integrity": "sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==", 56 | "cpu": [ 57 | "x64" 58 | ], 59 | "dev": true, 60 | "optional": true, 61 | "os": [ 62 | "android" 63 | ], 64 | "engines": { 65 | "node": ">=12" 66 | } 67 | }, 68 | "node_modules/@esbuild/darwin-arm64": { 69 | "version": "0.16.17", 70 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.17.tgz", 71 | "integrity": "sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==", 72 | "cpu": [ 73 | "arm64" 74 | ], 75 | "dev": true, 76 | "optional": true, 77 | "os": [ 78 | "darwin" 79 | ], 80 | "engines": { 81 | "node": ">=12" 82 | } 83 | }, 84 | "node_modules/@esbuild/darwin-x64": { 85 | "version": "0.16.17", 86 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.17.tgz", 87 | "integrity": "sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==", 88 | "cpu": [ 89 | "x64" 90 | ], 91 | "dev": true, 92 | "optional": true, 93 | "os": [ 94 | "darwin" 95 | ], 96 | "engines": { 97 | "node": ">=12" 98 | } 99 | }, 100 | "node_modules/@esbuild/freebsd-arm64": { 101 | "version": "0.16.17", 102 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.17.tgz", 103 | "integrity": "sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==", 104 | "cpu": [ 105 | "arm64" 106 | ], 107 | "dev": true, 108 | "optional": true, 109 | "os": [ 110 | "freebsd" 111 | ], 112 | "engines": { 113 | "node": ">=12" 114 | } 115 | }, 116 | "node_modules/@esbuild/freebsd-x64": { 117 | "version": "0.16.17", 118 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.17.tgz", 119 | "integrity": "sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==", 120 | "cpu": [ 121 | "x64" 122 | ], 123 | "dev": true, 124 | "optional": true, 125 | "os": [ 126 | "freebsd" 127 | ], 128 | "engines": { 129 | "node": ">=12" 130 | } 131 | }, 132 | "node_modules/@esbuild/linux-arm": { 133 | "version": "0.16.17", 134 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.17.tgz", 135 | "integrity": "sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==", 136 | "cpu": [ 137 | "arm" 138 | ], 139 | "dev": true, 140 | "optional": true, 141 | "os": [ 142 | "linux" 143 | ], 144 | "engines": { 145 | "node": ">=12" 146 | } 147 | }, 148 | "node_modules/@esbuild/linux-arm64": { 149 | "version": "0.16.17", 150 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.17.tgz", 151 | "integrity": "sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==", 152 | "cpu": [ 153 | "arm64" 154 | ], 155 | "dev": true, 156 | "optional": true, 157 | "os": [ 158 | "linux" 159 | ], 160 | "engines": { 161 | "node": ">=12" 162 | } 163 | }, 164 | "node_modules/@esbuild/linux-ia32": { 165 | "version": "0.16.17", 166 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.17.tgz", 167 | "integrity": "sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==", 168 | "cpu": [ 169 | "ia32" 170 | ], 171 | "dev": true, 172 | "optional": true, 173 | "os": [ 174 | "linux" 175 | ], 176 | "engines": { 177 | "node": ">=12" 178 | } 179 | }, 180 | "node_modules/@esbuild/linux-loong64": { 181 | "version": "0.16.17", 182 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz", 183 | "integrity": "sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==", 184 | "cpu": [ 185 | "loong64" 186 | ], 187 | "dev": true, 188 | "optional": true, 189 | "os": [ 190 | "linux" 191 | ], 192 | "engines": { 193 | "node": ">=12" 194 | } 195 | }, 196 | "node_modules/@esbuild/linux-mips64el": { 197 | "version": "0.16.17", 198 | "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.17.tgz", 199 | "integrity": "sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==", 200 | "cpu": [ 201 | "mips64el" 202 | ], 203 | "dev": true, 204 | "optional": true, 205 | "os": [ 206 | "linux" 207 | ], 208 | "engines": { 209 | "node": ">=12" 210 | } 211 | }, 212 | "node_modules/@esbuild/linux-ppc64": { 213 | "version": "0.16.17", 214 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.17.tgz", 215 | "integrity": "sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==", 216 | "cpu": [ 217 | "ppc64" 218 | ], 219 | "dev": true, 220 | "optional": true, 221 | "os": [ 222 | "linux" 223 | ], 224 | "engines": { 225 | "node": ">=12" 226 | } 227 | }, 228 | "node_modules/@esbuild/linux-riscv64": { 229 | "version": "0.16.17", 230 | "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.17.tgz", 231 | "integrity": "sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==", 232 | "cpu": [ 233 | "riscv64" 234 | ], 235 | "dev": true, 236 | "optional": true, 237 | "os": [ 238 | "linux" 239 | ], 240 | "engines": { 241 | "node": ">=12" 242 | } 243 | }, 244 | "node_modules/@esbuild/linux-s390x": { 245 | "version": "0.16.17", 246 | "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.17.tgz", 247 | "integrity": "sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==", 248 | "cpu": [ 249 | "s390x" 250 | ], 251 | "dev": true, 252 | "optional": true, 253 | "os": [ 254 | "linux" 255 | ], 256 | "engines": { 257 | "node": ">=12" 258 | } 259 | }, 260 | "node_modules/@esbuild/linux-x64": { 261 | "version": "0.16.17", 262 | "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.17.tgz", 263 | "integrity": "sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==", 264 | "cpu": [ 265 | "x64" 266 | ], 267 | "dev": true, 268 | "optional": true, 269 | "os": [ 270 | "linux" 271 | ], 272 | "engines": { 273 | "node": ">=12" 274 | } 275 | }, 276 | "node_modules/@esbuild/netbsd-x64": { 277 | "version": "0.16.17", 278 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.17.tgz", 279 | "integrity": "sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==", 280 | "cpu": [ 281 | "x64" 282 | ], 283 | "dev": true, 284 | "optional": true, 285 | "os": [ 286 | "netbsd" 287 | ], 288 | "engines": { 289 | "node": ">=12" 290 | } 291 | }, 292 | "node_modules/@esbuild/openbsd-x64": { 293 | "version": "0.16.17", 294 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.17.tgz", 295 | "integrity": "sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==", 296 | "cpu": [ 297 | "x64" 298 | ], 299 | "dev": true, 300 | "optional": true, 301 | "os": [ 302 | "openbsd" 303 | ], 304 | "engines": { 305 | "node": ">=12" 306 | } 307 | }, 308 | "node_modules/@esbuild/sunos-x64": { 309 | "version": "0.16.17", 310 | "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.17.tgz", 311 | "integrity": "sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==", 312 | "cpu": [ 313 | "x64" 314 | ], 315 | "dev": true, 316 | "optional": true, 317 | "os": [ 318 | "sunos" 319 | ], 320 | "engines": { 321 | "node": ">=12" 322 | } 323 | }, 324 | "node_modules/@esbuild/win32-arm64": { 325 | "version": "0.16.17", 326 | "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.17.tgz", 327 | "integrity": "sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==", 328 | "cpu": [ 329 | "arm64" 330 | ], 331 | "dev": true, 332 | "optional": true, 333 | "os": [ 334 | "win32" 335 | ], 336 | "engines": { 337 | "node": ">=12" 338 | } 339 | }, 340 | "node_modules/@esbuild/win32-ia32": { 341 | "version": "0.16.17", 342 | "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.17.tgz", 343 | "integrity": "sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==", 344 | "cpu": [ 345 | "ia32" 346 | ], 347 | "dev": true, 348 | "optional": true, 349 | "os": [ 350 | "win32" 351 | ], 352 | "engines": { 353 | "node": ">=12" 354 | } 355 | }, 356 | "node_modules/@esbuild/win32-x64": { 357 | "version": "0.16.17", 358 | "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.17.tgz", 359 | "integrity": "sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==", 360 | "cpu": [ 361 | "x64" 362 | ], 363 | "dev": true, 364 | "optional": true, 365 | "os": [ 366 | "win32" 367 | ], 368 | "engines": { 369 | "node": ">=12" 370 | } 371 | }, 372 | "node_modules/@firebase/analytics": { 373 | "version": "0.9.4", 374 | "resolved": "https://registry.npmjs.org/@firebase/analytics/-/analytics-0.9.4.tgz", 375 | "integrity": "sha512-Mb2UaD0cyJ9DrTk4Okz8wqpjZuVRVXHZOjhbQcmGb8VtibXY1+jm/k3eJ21r7NqUKnjWejYM2EX+hI9+dtXGkQ==", 376 | "dependencies": { 377 | "@firebase/component": "0.6.4", 378 | "@firebase/installations": "0.6.4", 379 | "@firebase/logger": "0.4.0", 380 | "@firebase/util": "1.9.3", 381 | "tslib": "^2.1.0" 382 | }, 383 | "peerDependencies": { 384 | "@firebase/app": "0.x" 385 | } 386 | }, 387 | "node_modules/@firebase/analytics-compat": { 388 | "version": "0.2.4", 389 | "resolved": "https://registry.npmjs.org/@firebase/analytics-compat/-/analytics-compat-0.2.4.tgz", 390 | "integrity": "sha512-ZN4K49QwOR8EWIUTV03VBdcVkz8sVsfJmve4g2+FEIj0kyTK0MdoVTWNOwWj9TVi2p/7FvKRKkpWxkydmi9x7g==", 391 | "dependencies": { 392 | "@firebase/analytics": "0.9.4", 393 | "@firebase/analytics-types": "0.8.0", 394 | "@firebase/component": "0.6.4", 395 | "@firebase/util": "1.9.3", 396 | "tslib": "^2.1.0" 397 | }, 398 | "peerDependencies": { 399 | "@firebase/app-compat": "0.x" 400 | } 401 | }, 402 | "node_modules/@firebase/analytics-types": { 403 | "version": "0.8.0", 404 | "resolved": "https://registry.npmjs.org/@firebase/analytics-types/-/analytics-types-0.8.0.tgz", 405 | "integrity": "sha512-iRP+QKI2+oz3UAh4nPEq14CsEjrjD6a5+fuypjScisAh9kXKFvdJOZJDwk7kikLvWVLGEs9+kIUS4LPQV7VZVw==" 406 | }, 407 | "node_modules/@firebase/app": { 408 | "version": "0.9.4", 409 | "resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.9.4.tgz", 410 | "integrity": "sha512-xX8I6pNqUxhxhaghy9fbjOWOP9ndx5UeN5F0V/PWD2u7xRg88YkzZrDocTAIU17y82UPZ1x1E5n15CsXGcxaOg==", 411 | "dependencies": { 412 | "@firebase/component": "0.6.4", 413 | "@firebase/logger": "0.4.0", 414 | "@firebase/util": "1.9.3", 415 | "idb": "7.0.1", 416 | "tslib": "^2.1.0" 417 | } 418 | }, 419 | "node_modules/@firebase/app-check": { 420 | "version": "0.6.4", 421 | "resolved": "https://registry.npmjs.org/@firebase/app-check/-/app-check-0.6.4.tgz", 422 | "integrity": "sha512-M9qyVTWkEkHXmgwGtObvXQqKcOe9iKAOPqm0pCe74mzgKVTNq157ff39+fxHPb4nFbipToY+GuvtabLUzkHehQ==", 423 | "dependencies": { 424 | "@firebase/component": "0.6.4", 425 | "@firebase/logger": "0.4.0", 426 | "@firebase/util": "1.9.3", 427 | "tslib": "^2.1.0" 428 | }, 429 | "peerDependencies": { 430 | "@firebase/app": "0.x" 431 | } 432 | }, 433 | "node_modules/@firebase/app-check-compat": { 434 | "version": "0.3.4", 435 | "resolved": "https://registry.npmjs.org/@firebase/app-check-compat/-/app-check-compat-0.3.4.tgz", 436 | "integrity": "sha512-s6ON0ixPKe99M1DNYMI2eR5aLwQZgy0z8fuW1tnEbzg5p/N/GKFmqiIHSV4gfp8+X7Fw5NLm7qMfh4xrcPgQCw==", 437 | "dependencies": { 438 | "@firebase/app-check": "0.6.4", 439 | "@firebase/app-check-types": "0.5.0", 440 | "@firebase/component": "0.6.4", 441 | "@firebase/logger": "0.4.0", 442 | "@firebase/util": "1.9.3", 443 | "tslib": "^2.1.0" 444 | }, 445 | "peerDependencies": { 446 | "@firebase/app-compat": "0.x" 447 | } 448 | }, 449 | "node_modules/@firebase/app-check-interop-types": { 450 | "version": "0.2.0", 451 | "resolved": "https://registry.npmjs.org/@firebase/app-check-interop-types/-/app-check-interop-types-0.2.0.tgz", 452 | "integrity": "sha512-+3PQIeX6/eiVK+x/yg8r6xTNR97fN7MahFDm+jiQmDjcyvSefoGuTTNQuuMScGyx3vYUBeZn+Cp9kC0yY/9uxQ==" 453 | }, 454 | "node_modules/@firebase/app-check-types": { 455 | "version": "0.5.0", 456 | "resolved": "https://registry.npmjs.org/@firebase/app-check-types/-/app-check-types-0.5.0.tgz", 457 | "integrity": "sha512-uwSUj32Mlubybw7tedRzR24RP8M8JUVR3NPiMk3/Z4bCmgEKTlQBwMXrehDAZ2wF+TsBq0SN1c6ema71U/JPyQ==" 458 | }, 459 | "node_modules/@firebase/app-compat": { 460 | "version": "0.2.4", 461 | "resolved": "https://registry.npmjs.org/@firebase/app-compat/-/app-compat-0.2.4.tgz", 462 | "integrity": "sha512-eYKtxMrzi+icZ6dFeJEoEpxu3aq1jp2PeL5vPIOAavJpdgRWFmSGmw3a46Hkay+GGGX4fkJG3vCfuoQsf5ksjA==", 463 | "dependencies": { 464 | "@firebase/app": "0.9.4", 465 | "@firebase/component": "0.6.4", 466 | "@firebase/logger": "0.4.0", 467 | "@firebase/util": "1.9.3", 468 | "tslib": "^2.1.0" 469 | } 470 | }, 471 | "node_modules/@firebase/app-types": { 472 | "version": "0.9.0", 473 | "resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.9.0.tgz", 474 | "integrity": "sha512-AeweANOIo0Mb8GiYm3xhTEBVCmPwTYAu9Hcd2qSkLuga/6+j9b1Jskl5bpiSQWy9eJ/j5pavxj6eYogmnuzm+Q==" 475 | }, 476 | "node_modules/@firebase/auth": { 477 | "version": "0.21.4", 478 | "resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-0.21.4.tgz", 479 | "integrity": "sha512-yZrs1F8sTt8IMCJl29gaxokDZSLjO08r2bL2PNKV1Duz2vJ67ZtVcgHAidyf8BFak9uS8mepd9KlYFDfwUO60Q==", 480 | "dependencies": { 481 | "@firebase/component": "0.6.4", 482 | "@firebase/logger": "0.4.0", 483 | "@firebase/util": "1.9.3", 484 | "node-fetch": "2.6.7", 485 | "tslib": "^2.1.0" 486 | }, 487 | "peerDependencies": { 488 | "@firebase/app": "0.x" 489 | } 490 | }, 491 | "node_modules/@firebase/auth-compat": { 492 | "version": "0.3.4", 493 | "resolved": "https://registry.npmjs.org/@firebase/auth-compat/-/auth-compat-0.3.4.tgz", 494 | "integrity": "sha512-AVNZ4pwLV063ngPKU+8tykQ6v+fRlKfBWEp1W+JU1pEJI+GK0thOPrCn22lWyI8LYiDrh3MLIiBJCv7fsyQajw==", 495 | "dependencies": { 496 | "@firebase/auth": "0.21.4", 497 | "@firebase/auth-types": "0.12.0", 498 | "@firebase/component": "0.6.4", 499 | "@firebase/util": "1.9.3", 500 | "node-fetch": "2.6.7", 501 | "tslib": "^2.1.0" 502 | }, 503 | "peerDependencies": { 504 | "@firebase/app-compat": "0.x" 505 | } 506 | }, 507 | "node_modules/@firebase/auth-interop-types": { 508 | "version": "0.2.1", 509 | "resolved": "https://registry.npmjs.org/@firebase/auth-interop-types/-/auth-interop-types-0.2.1.tgz", 510 | "integrity": "sha512-VOaGzKp65MY6P5FI84TfYKBXEPi6LmOCSMMzys6o2BN2LOsqy7pCuZCup7NYnfbk5OkkQKzvIfHOzTm0UDpkyg==" 511 | }, 512 | "node_modules/@firebase/auth-types": { 513 | "version": "0.12.0", 514 | "resolved": "https://registry.npmjs.org/@firebase/auth-types/-/auth-types-0.12.0.tgz", 515 | "integrity": "sha512-pPwaZt+SPOshK8xNoiQlK5XIrS97kFYc3Rc7xmy373QsOJ9MmqXxLaYssP5Kcds4wd2qK//amx/c+A8O2fVeZA==", 516 | "peerDependencies": { 517 | "@firebase/app-types": "0.x", 518 | "@firebase/util": "1.x" 519 | } 520 | }, 521 | "node_modules/@firebase/component": { 522 | "version": "0.6.4", 523 | "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.6.4.tgz", 524 | "integrity": "sha512-rLMyrXuO9jcAUCaQXCMjCMUsWrba5fzHlNK24xz5j2W6A/SRmK8mZJ/hn7V0fViLbxC0lPMtrK1eYzk6Fg03jA==", 525 | "dependencies": { 526 | "@firebase/util": "1.9.3", 527 | "tslib": "^2.1.0" 528 | } 529 | }, 530 | "node_modules/@firebase/database": { 531 | "version": "0.14.4", 532 | "resolved": "https://registry.npmjs.org/@firebase/database/-/database-0.14.4.tgz", 533 | "integrity": "sha512-+Ea/IKGwh42jwdjCyzTmeZeLM3oy1h0mFPsTy6OqCWzcu/KFqRAr5Tt1HRCOBlNOdbh84JPZC47WLU18n2VbxQ==", 534 | "dependencies": { 535 | "@firebase/auth-interop-types": "0.2.1", 536 | "@firebase/component": "0.6.4", 537 | "@firebase/logger": "0.4.0", 538 | "@firebase/util": "1.9.3", 539 | "faye-websocket": "0.11.4", 540 | "tslib": "^2.1.0" 541 | } 542 | }, 543 | "node_modules/@firebase/database-compat": { 544 | "version": "0.3.4", 545 | "resolved": "https://registry.npmjs.org/@firebase/database-compat/-/database-compat-0.3.4.tgz", 546 | "integrity": "sha512-kuAW+l+sLMUKBThnvxvUZ+Q1ZrF/vFJ58iUY9kAcbX48U03nVzIF6Tmkf0p3WVQwMqiXguSgtOPIB6ZCeF+5Gg==", 547 | "dependencies": { 548 | "@firebase/component": "0.6.4", 549 | "@firebase/database": "0.14.4", 550 | "@firebase/database-types": "0.10.4", 551 | "@firebase/logger": "0.4.0", 552 | "@firebase/util": "1.9.3", 553 | "tslib": "^2.1.0" 554 | } 555 | }, 556 | "node_modules/@firebase/database-types": { 557 | "version": "0.10.4", 558 | "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-0.10.4.tgz", 559 | "integrity": "sha512-dPySn0vJ/89ZeBac70T+2tWWPiJXWbmRygYv0smT5TfE3hDrQ09eKMF3Y+vMlTdrMWq7mUdYW5REWPSGH4kAZQ==", 560 | "dependencies": { 561 | "@firebase/app-types": "0.9.0", 562 | "@firebase/util": "1.9.3" 563 | } 564 | }, 565 | "node_modules/@firebase/firestore": { 566 | "version": "3.8.4", 567 | "resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-3.8.4.tgz", 568 | "integrity": "sha512-sNLT4vGBSrx75Q2yLzCHL/1LDS7+UG8gaIohox/GpKYGxt4r8/AsUOmjN4llDqdnFSgY5ePYp2+nHArFXHyZjA==", 569 | "dependencies": { 570 | "@firebase/component": "0.6.4", 571 | "@firebase/logger": "0.4.0", 572 | "@firebase/util": "1.9.3", 573 | "@firebase/webchannel-wrapper": "0.9.0", 574 | "@grpc/grpc-js": "~1.7.0", 575 | "@grpc/proto-loader": "^0.6.13", 576 | "node-fetch": "2.6.7", 577 | "tslib": "^2.1.0" 578 | }, 579 | "engines": { 580 | "node": ">=10.10.0" 581 | }, 582 | "peerDependencies": { 583 | "@firebase/app": "0.x" 584 | } 585 | }, 586 | "node_modules/@firebase/firestore-compat": { 587 | "version": "0.3.4", 588 | "resolved": "https://registry.npmjs.org/@firebase/firestore-compat/-/firestore-compat-0.3.4.tgz", 589 | "integrity": "sha512-xUzz1V53vA1R8S5QQbQ33zqNv0bV+dZpeQKqMXt6HNWa1yiX7lUooGYRws825F+QBOadW1teav1ttXnGZAsgUw==", 590 | "dependencies": { 591 | "@firebase/component": "0.6.4", 592 | "@firebase/firestore": "3.8.4", 593 | "@firebase/firestore-types": "2.5.1", 594 | "@firebase/util": "1.9.3", 595 | "tslib": "^2.1.0" 596 | }, 597 | "peerDependencies": { 598 | "@firebase/app-compat": "0.x" 599 | } 600 | }, 601 | "node_modules/@firebase/firestore-types": { 602 | "version": "2.5.1", 603 | "resolved": "https://registry.npmjs.org/@firebase/firestore-types/-/firestore-types-2.5.1.tgz", 604 | "integrity": "sha512-xG0CA6EMfYo8YeUxC8FeDzf6W3FX1cLlcAGBYV6Cku12sZRI81oWcu61RSKM66K6kUENP+78Qm8mvroBcm1whw==", 605 | "peerDependencies": { 606 | "@firebase/app-types": "0.x", 607 | "@firebase/util": "1.x" 608 | } 609 | }, 610 | "node_modules/@firebase/functions": { 611 | "version": "0.9.4", 612 | "resolved": "https://registry.npmjs.org/@firebase/functions/-/functions-0.9.4.tgz", 613 | "integrity": "sha512-3H2qh6U+q+nepO5Hds+Ddl6J0pS+zisuBLqqQMRBHv9XpWfu0PnDHklNmE8rZ+ccTEXvBj6zjkPfdxt6NisvlQ==", 614 | "dependencies": { 615 | "@firebase/app-check-interop-types": "0.2.0", 616 | "@firebase/auth-interop-types": "0.2.1", 617 | "@firebase/component": "0.6.4", 618 | "@firebase/messaging-interop-types": "0.2.0", 619 | "@firebase/util": "1.9.3", 620 | "node-fetch": "2.6.7", 621 | "tslib": "^2.1.0" 622 | }, 623 | "peerDependencies": { 624 | "@firebase/app": "0.x" 625 | } 626 | }, 627 | "node_modules/@firebase/functions-compat": { 628 | "version": "0.3.4", 629 | "resolved": "https://registry.npmjs.org/@firebase/functions-compat/-/functions-compat-0.3.4.tgz", 630 | "integrity": "sha512-kxVxTGyLV1MBR3sp3mI+eQ6JBqz0G5bk310F8eX4HzDFk4xjk5xY0KdHktMH+edM2xs1BOg0vwvvsAHczIjB+w==", 631 | "dependencies": { 632 | "@firebase/component": "0.6.4", 633 | "@firebase/functions": "0.9.4", 634 | "@firebase/functions-types": "0.6.0", 635 | "@firebase/util": "1.9.3", 636 | "tslib": "^2.1.0" 637 | }, 638 | "peerDependencies": { 639 | "@firebase/app-compat": "0.x" 640 | } 641 | }, 642 | "node_modules/@firebase/functions-types": { 643 | "version": "0.6.0", 644 | "resolved": "https://registry.npmjs.org/@firebase/functions-types/-/functions-types-0.6.0.tgz", 645 | "integrity": "sha512-hfEw5VJtgWXIRf92ImLkgENqpL6IWpYaXVYiRkFY1jJ9+6tIhWM7IzzwbevwIIud/jaxKVdRzD7QBWfPmkwCYw==" 646 | }, 647 | "node_modules/@firebase/installations": { 648 | "version": "0.6.4", 649 | "resolved": "https://registry.npmjs.org/@firebase/installations/-/installations-0.6.4.tgz", 650 | "integrity": "sha512-u5y88rtsp7NYkCHC3ElbFBrPtieUybZluXyzl7+4BsIz4sqb4vSAuwHEUgCgCeaQhvsnxDEU6icly8U9zsJigA==", 651 | "dependencies": { 652 | "@firebase/component": "0.6.4", 653 | "@firebase/util": "1.9.3", 654 | "idb": "7.0.1", 655 | "tslib": "^2.1.0" 656 | }, 657 | "peerDependencies": { 658 | "@firebase/app": "0.x" 659 | } 660 | }, 661 | "node_modules/@firebase/installations-compat": { 662 | "version": "0.2.4", 663 | "resolved": "https://registry.npmjs.org/@firebase/installations-compat/-/installations-compat-0.2.4.tgz", 664 | "integrity": "sha512-LI9dYjp0aT9Njkn9U4JRrDqQ6KXeAmFbRC0E7jI7+hxl5YmRWysq5qgQl22hcWpTk+cm3es66d/apoDU/A9n6Q==", 665 | "dependencies": { 666 | "@firebase/component": "0.6.4", 667 | "@firebase/installations": "0.6.4", 668 | "@firebase/installations-types": "0.5.0", 669 | "@firebase/util": "1.9.3", 670 | "tslib": "^2.1.0" 671 | }, 672 | "peerDependencies": { 673 | "@firebase/app-compat": "0.x" 674 | } 675 | }, 676 | "node_modules/@firebase/installations-types": { 677 | "version": "0.5.0", 678 | "resolved": "https://registry.npmjs.org/@firebase/installations-types/-/installations-types-0.5.0.tgz", 679 | "integrity": "sha512-9DP+RGfzoI2jH7gY4SlzqvZ+hr7gYzPODrbzVD82Y12kScZ6ZpRg/i3j6rleto8vTFC8n6Len4560FnV1w2IRg==", 680 | "peerDependencies": { 681 | "@firebase/app-types": "0.x" 682 | } 683 | }, 684 | "node_modules/@firebase/logger": { 685 | "version": "0.4.0", 686 | "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.4.0.tgz", 687 | "integrity": "sha512-eRKSeykumZ5+cJPdxxJRgAC3G5NknY2GwEbKfymdnXtnT0Ucm4pspfR6GT4MUQEDuJwRVbVcSx85kgJulMoFFA==", 688 | "dependencies": { 689 | "tslib": "^2.1.0" 690 | } 691 | }, 692 | "node_modules/@firebase/messaging": { 693 | "version": "0.12.4", 694 | "resolved": "https://registry.npmjs.org/@firebase/messaging/-/messaging-0.12.4.tgz", 695 | "integrity": "sha512-6JLZct6zUaex4g7HI3QbzeUrg9xcnmDAPTWpkoMpd/GoSVWH98zDoWXMGrcvHeCAIsLpFMe4MPoZkJbrPhaASw==", 696 | "dependencies": { 697 | "@firebase/component": "0.6.4", 698 | "@firebase/installations": "0.6.4", 699 | "@firebase/messaging-interop-types": "0.2.0", 700 | "@firebase/util": "1.9.3", 701 | "idb": "7.0.1", 702 | "tslib": "^2.1.0" 703 | }, 704 | "peerDependencies": { 705 | "@firebase/app": "0.x" 706 | } 707 | }, 708 | "node_modules/@firebase/messaging-compat": { 709 | "version": "0.2.4", 710 | "resolved": "https://registry.npmjs.org/@firebase/messaging-compat/-/messaging-compat-0.2.4.tgz", 711 | "integrity": "sha512-lyFjeUhIsPRYDPNIkYX1LcZMpoVbBWXX4rPl7c/rqc7G+EUea7IEtSt4MxTvh6fDfPuzLn7+FZADfscC+tNMfg==", 712 | "dependencies": { 713 | "@firebase/component": "0.6.4", 714 | "@firebase/messaging": "0.12.4", 715 | "@firebase/util": "1.9.3", 716 | "tslib": "^2.1.0" 717 | }, 718 | "peerDependencies": { 719 | "@firebase/app-compat": "0.x" 720 | } 721 | }, 722 | "node_modules/@firebase/messaging-interop-types": { 723 | "version": "0.2.0", 724 | "resolved": "https://registry.npmjs.org/@firebase/messaging-interop-types/-/messaging-interop-types-0.2.0.tgz", 725 | "integrity": "sha512-ujA8dcRuVeBixGR9CtegfpU4YmZf3Lt7QYkcj693FFannwNuZgfAYaTmbJ40dtjB81SAu6tbFPL9YLNT15KmOQ==" 726 | }, 727 | "node_modules/@firebase/performance": { 728 | "version": "0.6.4", 729 | "resolved": "https://registry.npmjs.org/@firebase/performance/-/performance-0.6.4.tgz", 730 | "integrity": "sha512-HfTn/bd8mfy/61vEqaBelNiNnvAbUtME2S25A67Nb34zVuCSCRIX4SseXY6zBnOFj3oLisaEqhVcJmVPAej67g==", 731 | "dependencies": { 732 | "@firebase/component": "0.6.4", 733 | "@firebase/installations": "0.6.4", 734 | "@firebase/logger": "0.4.0", 735 | "@firebase/util": "1.9.3", 736 | "tslib": "^2.1.0" 737 | }, 738 | "peerDependencies": { 739 | "@firebase/app": "0.x" 740 | } 741 | }, 742 | "node_modules/@firebase/performance-compat": { 743 | "version": "0.2.4", 744 | "resolved": "https://registry.npmjs.org/@firebase/performance-compat/-/performance-compat-0.2.4.tgz", 745 | "integrity": "sha512-nnHUb8uP9G8islzcld/k6Bg5RhX62VpbAb/Anj7IXs/hp32Eb2LqFPZK4sy3pKkBUO5wcrlRWQa6wKOxqlUqsg==", 746 | "dependencies": { 747 | "@firebase/component": "0.6.4", 748 | "@firebase/logger": "0.4.0", 749 | "@firebase/performance": "0.6.4", 750 | "@firebase/performance-types": "0.2.0", 751 | "@firebase/util": "1.9.3", 752 | "tslib": "^2.1.0" 753 | }, 754 | "peerDependencies": { 755 | "@firebase/app-compat": "0.x" 756 | } 757 | }, 758 | "node_modules/@firebase/performance-types": { 759 | "version": "0.2.0", 760 | "resolved": "https://registry.npmjs.org/@firebase/performance-types/-/performance-types-0.2.0.tgz", 761 | "integrity": "sha512-kYrbr8e/CYr1KLrLYZZt2noNnf+pRwDq2KK9Au9jHrBMnb0/C9X9yWSXmZkFt4UIdsQknBq8uBB7fsybZdOBTA==" 762 | }, 763 | "node_modules/@firebase/remote-config": { 764 | "version": "0.4.4", 765 | "resolved": "https://registry.npmjs.org/@firebase/remote-config/-/remote-config-0.4.4.tgz", 766 | "integrity": "sha512-x1ioTHGX8ZwDSTOVp8PBLv2/wfwKzb4pxi0gFezS5GCJwbLlloUH4YYZHHS83IPxnua8b6l0IXUaWd0RgbWwzQ==", 767 | "dependencies": { 768 | "@firebase/component": "0.6.4", 769 | "@firebase/installations": "0.6.4", 770 | "@firebase/logger": "0.4.0", 771 | "@firebase/util": "1.9.3", 772 | "tslib": "^2.1.0" 773 | }, 774 | "peerDependencies": { 775 | "@firebase/app": "0.x" 776 | } 777 | }, 778 | "node_modules/@firebase/remote-config-compat": { 779 | "version": "0.2.4", 780 | "resolved": "https://registry.npmjs.org/@firebase/remote-config-compat/-/remote-config-compat-0.2.4.tgz", 781 | "integrity": "sha512-FKiki53jZirrDFkBHglB3C07j5wBpitAaj8kLME6g8Mx+aq7u9P7qfmuSRytiOItADhWUj7O1JIv7n9q87SuwA==", 782 | "dependencies": { 783 | "@firebase/component": "0.6.4", 784 | "@firebase/logger": "0.4.0", 785 | "@firebase/remote-config": "0.4.4", 786 | "@firebase/remote-config-types": "0.3.0", 787 | "@firebase/util": "1.9.3", 788 | "tslib": "^2.1.0" 789 | }, 790 | "peerDependencies": { 791 | "@firebase/app-compat": "0.x" 792 | } 793 | }, 794 | "node_modules/@firebase/remote-config-types": { 795 | "version": "0.3.0", 796 | "resolved": "https://registry.npmjs.org/@firebase/remote-config-types/-/remote-config-types-0.3.0.tgz", 797 | "integrity": "sha512-RtEH4vdcbXZuZWRZbIRmQVBNsE7VDQpet2qFvq6vwKLBIQRQR5Kh58M4ok3A3US8Sr3rubYnaGqZSurCwI8uMA==" 798 | }, 799 | "node_modules/@firebase/storage": { 800 | "version": "0.11.2", 801 | "resolved": "https://registry.npmjs.org/@firebase/storage/-/storage-0.11.2.tgz", 802 | "integrity": "sha512-CtvoFaBI4hGXlXbaCHf8humajkbXhs39Nbh6MbNxtwJiCqxPy9iH3D3CCfXAvP0QvAAwmJUTK3+z9a++Kc4nkA==", 803 | "dependencies": { 804 | "@firebase/component": "0.6.4", 805 | "@firebase/util": "1.9.3", 806 | "node-fetch": "2.6.7", 807 | "tslib": "^2.1.0" 808 | }, 809 | "peerDependencies": { 810 | "@firebase/app": "0.x" 811 | } 812 | }, 813 | "node_modules/@firebase/storage-compat": { 814 | "version": "0.3.2", 815 | "resolved": "https://registry.npmjs.org/@firebase/storage-compat/-/storage-compat-0.3.2.tgz", 816 | "integrity": "sha512-wvsXlLa9DVOMQJckbDNhXKKxRNNewyUhhbXev3t8kSgoCotd1v3MmqhKKz93ePhDnhHnDs7bYHy+Qa8dRY6BXw==", 817 | "dependencies": { 818 | "@firebase/component": "0.6.4", 819 | "@firebase/storage": "0.11.2", 820 | "@firebase/storage-types": "0.8.0", 821 | "@firebase/util": "1.9.3", 822 | "tslib": "^2.1.0" 823 | }, 824 | "peerDependencies": { 825 | "@firebase/app-compat": "0.x" 826 | } 827 | }, 828 | "node_modules/@firebase/storage-types": { 829 | "version": "0.8.0", 830 | "resolved": "https://registry.npmjs.org/@firebase/storage-types/-/storage-types-0.8.0.tgz", 831 | "integrity": "sha512-isRHcGrTs9kITJC0AVehHfpraWFui39MPaU7Eo8QfWlqW7YPymBmRgjDrlOgFdURh6Cdeg07zmkLP5tzTKRSpg==", 832 | "peerDependencies": { 833 | "@firebase/app-types": "0.x", 834 | "@firebase/util": "1.x" 835 | } 836 | }, 837 | "node_modules/@firebase/util": { 838 | "version": "1.9.3", 839 | "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.9.3.tgz", 840 | "integrity": "sha512-DY02CRhOZwpzO36fHpuVysz6JZrscPiBXD0fXp6qSrL9oNOx5KWICKdR95C0lSITzxp0TZosVyHqzatE8JbcjA==", 841 | "dependencies": { 842 | "tslib": "^2.1.0" 843 | } 844 | }, 845 | "node_modules/@firebase/webchannel-wrapper": { 846 | "version": "0.9.0", 847 | "resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.9.0.tgz", 848 | "integrity": "sha512-BpiZLBWdLFw+qFel9p3Zs1jD6QmH7Ii4aTDu6+vx8ShdidChZUXqDhYJly4ZjSgQh54miXbBgBrk0S+jTIh/Qg==" 849 | }, 850 | "node_modules/@grpc/grpc-js": { 851 | "version": "1.7.3", 852 | "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.7.3.tgz", 853 | "integrity": "sha512-H9l79u4kJ2PVSxUNA08HMYAnUBLj9v6KjYQ7SQ71hOZcEXhShE/y5iQCesP8+6/Ik/7i2O0a10bPquIcYfufog==", 854 | "dependencies": { 855 | "@grpc/proto-loader": "^0.7.0", 856 | "@types/node": ">=12.12.47" 857 | }, 858 | "engines": { 859 | "node": "^8.13.0 || >=10.10.0" 860 | } 861 | }, 862 | "node_modules/@grpc/grpc-js/node_modules/@grpc/proto-loader": { 863 | "version": "0.7.5", 864 | "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.5.tgz", 865 | "integrity": "sha512-mfcTuMbFowq1wh/Rn5KQl6qb95M21Prej3bewD9dUQMurYGVckGO/Pbe2Ocwto6sD05b/mxZLspvqwx60xO2Rg==", 866 | "dependencies": { 867 | "@types/long": "^4.0.1", 868 | "lodash.camelcase": "^4.3.0", 869 | "long": "^4.0.0", 870 | "protobufjs": "^7.0.0", 871 | "yargs": "^16.2.0" 872 | }, 873 | "bin": { 874 | "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" 875 | }, 876 | "engines": { 877 | "node": ">=6" 878 | } 879 | }, 880 | "node_modules/@grpc/grpc-js/node_modules/protobufjs": { 881 | "version": "7.2.2", 882 | "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.2.tgz", 883 | "integrity": "sha512-++PrQIjrom+bFDPpfmqXfAGSQs40116JRrqqyf53dymUMvvb5d/LMRyicRoF1AUKoXVS1/IgJXlEgcpr4gTF3Q==", 884 | "hasInstallScript": true, 885 | "dependencies": { 886 | "@protobufjs/aspromise": "^1.1.2", 887 | "@protobufjs/base64": "^1.1.2", 888 | "@protobufjs/codegen": "^2.0.4", 889 | "@protobufjs/eventemitter": "^1.1.0", 890 | "@protobufjs/fetch": "^1.1.0", 891 | "@protobufjs/float": "^1.0.2", 892 | "@protobufjs/inquire": "^1.1.0", 893 | "@protobufjs/path": "^1.1.2", 894 | "@protobufjs/pool": "^1.1.0", 895 | "@protobufjs/utf8": "^1.1.0", 896 | "@types/node": ">=13.7.0", 897 | "long": "^5.0.0" 898 | }, 899 | "engines": { 900 | "node": ">=12.0.0" 901 | } 902 | }, 903 | "node_modules/@grpc/grpc-js/node_modules/protobufjs/node_modules/long": { 904 | "version": "5.2.1", 905 | "resolved": "https://registry.npmjs.org/long/-/long-5.2.1.tgz", 906 | "integrity": "sha512-GKSNGeNAtw8IryjjkhZxuKB3JzlcLTwjtiQCHKvqQet81I93kXslhDQruGI/QsddO83mcDToBVy7GqGS/zYf/A==" 907 | }, 908 | "node_modules/@grpc/proto-loader": { 909 | "version": "0.6.13", 910 | "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.6.13.tgz", 911 | "integrity": "sha512-FjxPYDRTn6Ec3V0arm1FtSpmP6V50wuph2yILpyvTKzjc76oDdoihXqM1DzOW5ubvCC8GivfCnNtfaRE8myJ7g==", 912 | "dependencies": { 913 | "@types/long": "^4.0.1", 914 | "lodash.camelcase": "^4.3.0", 915 | "long": "^4.0.0", 916 | "protobufjs": "^6.11.3", 917 | "yargs": "^16.2.0" 918 | }, 919 | "bin": { 920 | "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" 921 | }, 922 | "engines": { 923 | "node": ">=6" 924 | } 925 | }, 926 | "node_modules/@jridgewell/sourcemap-codec": { 927 | "version": "1.4.14", 928 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", 929 | "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", 930 | "dev": true 931 | }, 932 | "node_modules/@polka/url": { 933 | "version": "1.0.0-next.21", 934 | "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.21.tgz", 935 | "integrity": "sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==", 936 | "dev": true 937 | }, 938 | "node_modules/@protobufjs/aspromise": { 939 | "version": "1.1.2", 940 | "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", 941 | "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" 942 | }, 943 | "node_modules/@protobufjs/base64": { 944 | "version": "1.1.2", 945 | "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", 946 | "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" 947 | }, 948 | "node_modules/@protobufjs/codegen": { 949 | "version": "2.0.4", 950 | "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", 951 | "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" 952 | }, 953 | "node_modules/@protobufjs/eventemitter": { 954 | "version": "1.1.0", 955 | "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", 956 | "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" 957 | }, 958 | "node_modules/@protobufjs/fetch": { 959 | "version": "1.1.0", 960 | "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", 961 | "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", 962 | "dependencies": { 963 | "@protobufjs/aspromise": "^1.1.1", 964 | "@protobufjs/inquire": "^1.1.0" 965 | } 966 | }, 967 | "node_modules/@protobufjs/float": { 968 | "version": "1.0.2", 969 | "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", 970 | "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" 971 | }, 972 | "node_modules/@protobufjs/inquire": { 973 | "version": "1.1.0", 974 | "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", 975 | "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" 976 | }, 977 | "node_modules/@protobufjs/path": { 978 | "version": "1.1.2", 979 | "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", 980 | "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" 981 | }, 982 | "node_modules/@protobufjs/pool": { 983 | "version": "1.1.0", 984 | "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", 985 | "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" 986 | }, 987 | "node_modules/@protobufjs/utf8": { 988 | "version": "1.1.0", 989 | "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", 990 | "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" 991 | }, 992 | "node_modules/@sveltejs/adapter-auto": { 993 | "version": "2.0.0", 994 | "resolved": "https://registry.npmjs.org/@sveltejs/adapter-auto/-/adapter-auto-2.0.0.tgz", 995 | "integrity": "sha512-b+gkHFZgD771kgV3aO4avHFd7y1zhmMYy9i6xOK7m/rwmwaRO8gnF5zBc0Rgca80B2PMU1bKNxyBTHA14OzUAQ==", 996 | "dev": true, 997 | "dependencies": { 998 | "import-meta-resolve": "^2.2.0" 999 | }, 1000 | "peerDependencies": { 1001 | "@sveltejs/kit": "^1.0.0" 1002 | } 1003 | }, 1004 | "node_modules/@sveltejs/kit": { 1005 | "version": "1.11.0", 1006 | "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-1.11.0.tgz", 1007 | "integrity": "sha512-PwViZcMoLgEU/jhLoSyjf5hSrHS67wvSm0ifBo4prP9irpGa5HuPOZeVDTL5tPDSBoKxtdYi1zlGdoiJfO86jA==", 1008 | "dev": true, 1009 | "hasInstallScript": true, 1010 | "dependencies": { 1011 | "@sveltejs/vite-plugin-svelte": "^2.0.0", 1012 | "@types/cookie": "^0.5.1", 1013 | "cookie": "^0.5.0", 1014 | "devalue": "^4.3.0", 1015 | "esm-env": "^1.0.0", 1016 | "kleur": "^4.1.5", 1017 | "magic-string": "^0.30.0", 1018 | "mime": "^3.0.0", 1019 | "sade": "^1.8.1", 1020 | "set-cookie-parser": "^2.5.1", 1021 | "sirv": "^2.0.2", 1022 | "tiny-glob": "^0.2.9", 1023 | "undici": "5.20.0" 1024 | }, 1025 | "bin": { 1026 | "svelte-kit": "svelte-kit.js" 1027 | }, 1028 | "engines": { 1029 | "node": "^16.14 || >=18" 1030 | }, 1031 | "peerDependencies": { 1032 | "svelte": "^3.54.0", 1033 | "vite": "^4.0.0" 1034 | } 1035 | }, 1036 | "node_modules/@sveltejs/vite-plugin-svelte": { 1037 | "version": "2.0.3", 1038 | "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-2.0.3.tgz", 1039 | "integrity": "sha512-o+cguBFdwIGtRbNkYOyqTM7KvRUffxh5bfK4oJsWKG2obu+v/cbpT03tJrGl58C7tRXo/aEC0/axN5FVHBj0nA==", 1040 | "dev": true, 1041 | "dependencies": { 1042 | "debug": "^4.3.4", 1043 | "deepmerge": "^4.3.0", 1044 | "kleur": "^4.1.5", 1045 | "magic-string": "^0.29.0", 1046 | "svelte-hmr": "^0.15.1", 1047 | "vitefu": "^0.2.4" 1048 | }, 1049 | "engines": { 1050 | "node": "^14.18.0 || >= 16" 1051 | }, 1052 | "peerDependencies": { 1053 | "svelte": "^3.54.0", 1054 | "vite": "^4.0.0" 1055 | } 1056 | }, 1057 | "node_modules/@sveltejs/vite-plugin-svelte/node_modules/magic-string": { 1058 | "version": "0.29.0", 1059 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.29.0.tgz", 1060 | "integrity": "sha512-WcfidHrDjMY+eLjlU+8OvwREqHwpgCeKVBUpQ3OhYYuvfaYCUgcbuBzappNzZvg/v8onU3oQj+BYpkOJe9Iw4Q==", 1061 | "dev": true, 1062 | "dependencies": { 1063 | "@jridgewell/sourcemap-codec": "^1.4.13" 1064 | }, 1065 | "engines": { 1066 | "node": ">=12" 1067 | } 1068 | }, 1069 | "node_modules/@types/cookie": { 1070 | "version": "0.5.1", 1071 | "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.5.1.tgz", 1072 | "integrity": "sha512-COUnqfB2+ckwXXSFInsFdOAWQzCCx+a5hq2ruyj+Vjund94RJQd4LG2u9hnvJrTgunKAaax7ancBYlDrNYxA0g==", 1073 | "dev": true 1074 | }, 1075 | "node_modules/@types/long": { 1076 | "version": "4.0.2", 1077 | "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", 1078 | "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==" 1079 | }, 1080 | "node_modules/@types/node": { 1081 | "version": "18.15.1", 1082 | "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.1.tgz", 1083 | "integrity": "sha512-U2TWca8AeHSmbpi314QBESRk7oPjSZjDsR+c+H4ECC1l+kFgpZf8Ydhv3SJpPy51VyZHHqxlb6mTTqYNNRVAIw==" 1084 | }, 1085 | "node_modules/ansi-regex": { 1086 | "version": "5.0.1", 1087 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", 1088 | "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", 1089 | "engines": { 1090 | "node": ">=8" 1091 | } 1092 | }, 1093 | "node_modules/ansi-styles": { 1094 | "version": "4.3.0", 1095 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 1096 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 1097 | "dependencies": { 1098 | "color-convert": "^2.0.1" 1099 | }, 1100 | "engines": { 1101 | "node": ">=8" 1102 | }, 1103 | "funding": { 1104 | "url": "https://github.com/chalk/ansi-styles?sponsor=1" 1105 | } 1106 | }, 1107 | "node_modules/busboy": { 1108 | "version": "1.6.0", 1109 | "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", 1110 | "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", 1111 | "dev": true, 1112 | "dependencies": { 1113 | "streamsearch": "^1.1.0" 1114 | }, 1115 | "engines": { 1116 | "node": ">=10.16.0" 1117 | } 1118 | }, 1119 | "node_modules/cliui": { 1120 | "version": "7.0.4", 1121 | "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", 1122 | "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", 1123 | "dependencies": { 1124 | "string-width": "^4.2.0", 1125 | "strip-ansi": "^6.0.0", 1126 | "wrap-ansi": "^7.0.0" 1127 | } 1128 | }, 1129 | "node_modules/color-convert": { 1130 | "version": "2.0.1", 1131 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 1132 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 1133 | "dependencies": { 1134 | "color-name": "~1.1.4" 1135 | }, 1136 | "engines": { 1137 | "node": ">=7.0.0" 1138 | } 1139 | }, 1140 | "node_modules/color-name": { 1141 | "version": "1.1.4", 1142 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 1143 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" 1144 | }, 1145 | "node_modules/cookie": { 1146 | "version": "0.5.0", 1147 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", 1148 | "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", 1149 | "dev": true, 1150 | "engines": { 1151 | "node": ">= 0.6" 1152 | } 1153 | }, 1154 | "node_modules/debug": { 1155 | "version": "4.3.4", 1156 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 1157 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 1158 | "dev": true, 1159 | "dependencies": { 1160 | "ms": "2.1.2" 1161 | }, 1162 | "engines": { 1163 | "node": ">=6.0" 1164 | }, 1165 | "peerDependenciesMeta": { 1166 | "supports-color": { 1167 | "optional": true 1168 | } 1169 | } 1170 | }, 1171 | "node_modules/deepmerge": { 1172 | "version": "4.3.0", 1173 | "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.0.tgz", 1174 | "integrity": "sha512-z2wJZXrmeHdvYJp/Ux55wIjqo81G5Bp4c+oELTW+7ar6SogWHajt5a9gO3s3IDaGSAXjDk0vlQKN3rms8ab3og==", 1175 | "dev": true, 1176 | "engines": { 1177 | "node": ">=0.10.0" 1178 | } 1179 | }, 1180 | "node_modules/devalue": { 1181 | "version": "4.3.0", 1182 | "resolved": "https://registry.npmjs.org/devalue/-/devalue-4.3.0.tgz", 1183 | "integrity": "sha512-n94yQo4LI3w7erwf84mhRUkUJfhLoCZiLyoOZ/QFsDbcWNZePrLwbQpvZBUG2TNxwV3VjCKPxkiiQA6pe3TrTA==", 1184 | "dev": true 1185 | }, 1186 | "node_modules/emoji-regex": { 1187 | "version": "8.0.0", 1188 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", 1189 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" 1190 | }, 1191 | "node_modules/esbuild": { 1192 | "version": "0.16.17", 1193 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.17.tgz", 1194 | "integrity": "sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==", 1195 | "dev": true, 1196 | "hasInstallScript": true, 1197 | "bin": { 1198 | "esbuild": "bin/esbuild" 1199 | }, 1200 | "engines": { 1201 | "node": ">=12" 1202 | }, 1203 | "optionalDependencies": { 1204 | "@esbuild/android-arm": "0.16.17", 1205 | "@esbuild/android-arm64": "0.16.17", 1206 | "@esbuild/android-x64": "0.16.17", 1207 | "@esbuild/darwin-arm64": "0.16.17", 1208 | "@esbuild/darwin-x64": "0.16.17", 1209 | "@esbuild/freebsd-arm64": "0.16.17", 1210 | "@esbuild/freebsd-x64": "0.16.17", 1211 | "@esbuild/linux-arm": "0.16.17", 1212 | "@esbuild/linux-arm64": "0.16.17", 1213 | "@esbuild/linux-ia32": "0.16.17", 1214 | "@esbuild/linux-loong64": "0.16.17", 1215 | "@esbuild/linux-mips64el": "0.16.17", 1216 | "@esbuild/linux-ppc64": "0.16.17", 1217 | "@esbuild/linux-riscv64": "0.16.17", 1218 | "@esbuild/linux-s390x": "0.16.17", 1219 | "@esbuild/linux-x64": "0.16.17", 1220 | "@esbuild/netbsd-x64": "0.16.17", 1221 | "@esbuild/openbsd-x64": "0.16.17", 1222 | "@esbuild/sunos-x64": "0.16.17", 1223 | "@esbuild/win32-arm64": "0.16.17", 1224 | "@esbuild/win32-ia32": "0.16.17", 1225 | "@esbuild/win32-x64": "0.16.17" 1226 | } 1227 | }, 1228 | "node_modules/escalade": { 1229 | "version": "3.1.1", 1230 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", 1231 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", 1232 | "engines": { 1233 | "node": ">=6" 1234 | } 1235 | }, 1236 | "node_modules/esm-env": { 1237 | "version": "1.0.0", 1238 | "resolved": "https://registry.npmjs.org/esm-env/-/esm-env-1.0.0.tgz", 1239 | "integrity": "sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==", 1240 | "dev": true 1241 | }, 1242 | "node_modules/faye-websocket": { 1243 | "version": "0.11.4", 1244 | "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", 1245 | "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", 1246 | "dependencies": { 1247 | "websocket-driver": ">=0.5.1" 1248 | }, 1249 | "engines": { 1250 | "node": ">=0.8.0" 1251 | } 1252 | }, 1253 | "node_modules/firebase": { 1254 | "version": "9.17.2", 1255 | "resolved": "https://registry.npmjs.org/firebase/-/firebase-9.17.2.tgz", 1256 | "integrity": "sha512-2V95/evwB3zsi6RYHCvPXfkiQrSepFQJohv3YGoQVhS0bvXuYXmkLtrCVGShxneB/5t9HE5C9q9C8XPnK4APBw==", 1257 | "dependencies": { 1258 | "@firebase/analytics": "0.9.4", 1259 | "@firebase/analytics-compat": "0.2.4", 1260 | "@firebase/app": "0.9.4", 1261 | "@firebase/app-check": "0.6.4", 1262 | "@firebase/app-check-compat": "0.3.4", 1263 | "@firebase/app-compat": "0.2.4", 1264 | "@firebase/app-types": "0.9.0", 1265 | "@firebase/auth": "0.21.4", 1266 | "@firebase/auth-compat": "0.3.4", 1267 | "@firebase/database": "0.14.4", 1268 | "@firebase/database-compat": "0.3.4", 1269 | "@firebase/firestore": "3.8.4", 1270 | "@firebase/firestore-compat": "0.3.4", 1271 | "@firebase/functions": "0.9.4", 1272 | "@firebase/functions-compat": "0.3.4", 1273 | "@firebase/installations": "0.6.4", 1274 | "@firebase/installations-compat": "0.2.4", 1275 | "@firebase/messaging": "0.12.4", 1276 | "@firebase/messaging-compat": "0.2.4", 1277 | "@firebase/performance": "0.6.4", 1278 | "@firebase/performance-compat": "0.2.4", 1279 | "@firebase/remote-config": "0.4.4", 1280 | "@firebase/remote-config-compat": "0.2.4", 1281 | "@firebase/storage": "0.11.2", 1282 | "@firebase/storage-compat": "0.3.2", 1283 | "@firebase/util": "1.9.3" 1284 | } 1285 | }, 1286 | "node_modules/fsevents": { 1287 | "version": "2.3.2", 1288 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 1289 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 1290 | "dev": true, 1291 | "hasInstallScript": true, 1292 | "optional": true, 1293 | "os": [ 1294 | "darwin" 1295 | ], 1296 | "engines": { 1297 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 1298 | } 1299 | }, 1300 | "node_modules/function-bind": { 1301 | "version": "1.1.1", 1302 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 1303 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 1304 | "dev": true 1305 | }, 1306 | "node_modules/get-caller-file": { 1307 | "version": "2.0.5", 1308 | "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", 1309 | "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", 1310 | "engines": { 1311 | "node": "6.* || 8.* || >= 10.*" 1312 | } 1313 | }, 1314 | "node_modules/globalyzer": { 1315 | "version": "0.1.0", 1316 | "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", 1317 | "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==", 1318 | "dev": true 1319 | }, 1320 | "node_modules/globrex": { 1321 | "version": "0.1.2", 1322 | "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", 1323 | "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==", 1324 | "dev": true 1325 | }, 1326 | "node_modules/has": { 1327 | "version": "1.0.3", 1328 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 1329 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 1330 | "dev": true, 1331 | "dependencies": { 1332 | "function-bind": "^1.1.1" 1333 | }, 1334 | "engines": { 1335 | "node": ">= 0.4.0" 1336 | } 1337 | }, 1338 | "node_modules/http-parser-js": { 1339 | "version": "0.5.8", 1340 | "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", 1341 | "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==" 1342 | }, 1343 | "node_modules/idb": { 1344 | "version": "7.0.1", 1345 | "resolved": "https://registry.npmjs.org/idb/-/idb-7.0.1.tgz", 1346 | "integrity": "sha512-UUxlE7vGWK5RfB/fDwEGgRf84DY/ieqNha6msMV99UsEMQhJ1RwbCd8AYBj3QMgnE3VZnfQvm4oKVCJTYlqIgg==" 1347 | }, 1348 | "node_modules/import-meta-resolve": { 1349 | "version": "2.2.1", 1350 | "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-2.2.1.tgz", 1351 | "integrity": "sha512-C6lLL7EJPY44kBvA80gq4uMsVFw5x3oSKfuMl1cuZ2RkI5+UJqQXgn+6hlUew0y4ig7Ypt4CObAAIzU53Nfpuw==", 1352 | "dev": true, 1353 | "funding": { 1354 | "type": "github", 1355 | "url": "https://github.com/sponsors/wooorm" 1356 | } 1357 | }, 1358 | "node_modules/is-core-module": { 1359 | "version": "2.11.0", 1360 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", 1361 | "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", 1362 | "dev": true, 1363 | "dependencies": { 1364 | "has": "^1.0.3" 1365 | }, 1366 | "funding": { 1367 | "url": "https://github.com/sponsors/ljharb" 1368 | } 1369 | }, 1370 | "node_modules/is-fullwidth-code-point": { 1371 | "version": "3.0.0", 1372 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", 1373 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", 1374 | "engines": { 1375 | "node": ">=8" 1376 | } 1377 | }, 1378 | "node_modules/kleur": { 1379 | "version": "4.1.5", 1380 | "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", 1381 | "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", 1382 | "dev": true, 1383 | "engines": { 1384 | "node": ">=6" 1385 | } 1386 | }, 1387 | "node_modules/lodash.camelcase": { 1388 | "version": "4.3.0", 1389 | "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", 1390 | "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==" 1391 | }, 1392 | "node_modules/long": { 1393 | "version": "4.0.0", 1394 | "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", 1395 | "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==" 1396 | }, 1397 | "node_modules/magic-string": { 1398 | "version": "0.30.0", 1399 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.0.tgz", 1400 | "integrity": "sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==", 1401 | "dev": true, 1402 | "dependencies": { 1403 | "@jridgewell/sourcemap-codec": "^1.4.13" 1404 | }, 1405 | "engines": { 1406 | "node": ">=12" 1407 | } 1408 | }, 1409 | "node_modules/mime": { 1410 | "version": "3.0.0", 1411 | "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", 1412 | "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", 1413 | "dev": true, 1414 | "bin": { 1415 | "mime": "cli.js" 1416 | }, 1417 | "engines": { 1418 | "node": ">=10.0.0" 1419 | } 1420 | }, 1421 | "node_modules/mri": { 1422 | "version": "1.2.0", 1423 | "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", 1424 | "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", 1425 | "dev": true, 1426 | "engines": { 1427 | "node": ">=4" 1428 | } 1429 | }, 1430 | "node_modules/mrmime": { 1431 | "version": "1.0.1", 1432 | "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz", 1433 | "integrity": "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==", 1434 | "dev": true, 1435 | "engines": { 1436 | "node": ">=10" 1437 | } 1438 | }, 1439 | "node_modules/ms": { 1440 | "version": "2.1.2", 1441 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1442 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 1443 | "dev": true 1444 | }, 1445 | "node_modules/nanoid": { 1446 | "version": "3.3.4", 1447 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", 1448 | "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", 1449 | "dev": true, 1450 | "bin": { 1451 | "nanoid": "bin/nanoid.cjs" 1452 | }, 1453 | "engines": { 1454 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 1455 | } 1456 | }, 1457 | "node_modules/node-fetch": { 1458 | "version": "2.6.7", 1459 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", 1460 | "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", 1461 | "dependencies": { 1462 | "whatwg-url": "^5.0.0" 1463 | }, 1464 | "engines": { 1465 | "node": "4.x || >=6.0.0" 1466 | }, 1467 | "peerDependencies": { 1468 | "encoding": "^0.1.0" 1469 | }, 1470 | "peerDependenciesMeta": { 1471 | "encoding": { 1472 | "optional": true 1473 | } 1474 | } 1475 | }, 1476 | "node_modules/path-parse": { 1477 | "version": "1.0.7", 1478 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 1479 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 1480 | "dev": true 1481 | }, 1482 | "node_modules/picocolors": { 1483 | "version": "1.0.0", 1484 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 1485 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", 1486 | "dev": true 1487 | }, 1488 | "node_modules/postcss": { 1489 | "version": "8.4.21", 1490 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", 1491 | "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", 1492 | "dev": true, 1493 | "funding": [ 1494 | { 1495 | "type": "opencollective", 1496 | "url": "https://opencollective.com/postcss/" 1497 | }, 1498 | { 1499 | "type": "tidelift", 1500 | "url": "https://tidelift.com/funding/github/npm/postcss" 1501 | } 1502 | ], 1503 | "dependencies": { 1504 | "nanoid": "^3.3.4", 1505 | "picocolors": "^1.0.0", 1506 | "source-map-js": "^1.0.2" 1507 | }, 1508 | "engines": { 1509 | "node": "^10 || ^12 || >=14" 1510 | } 1511 | }, 1512 | "node_modules/protobufjs": { 1513 | "version": "6.11.3", 1514 | "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.3.tgz", 1515 | "integrity": "sha512-xL96WDdCZYdU7Slin569tFX712BxsxslWwAfAhCYjQKGTq7dAU91Lomy6nLLhh/dyGhk/YH4TwTSRxTzhuHyZg==", 1516 | "hasInstallScript": true, 1517 | "dependencies": { 1518 | "@protobufjs/aspromise": "^1.1.2", 1519 | "@protobufjs/base64": "^1.1.2", 1520 | "@protobufjs/codegen": "^2.0.4", 1521 | "@protobufjs/eventemitter": "^1.1.0", 1522 | "@protobufjs/fetch": "^1.1.0", 1523 | "@protobufjs/float": "^1.0.2", 1524 | "@protobufjs/inquire": "^1.1.0", 1525 | "@protobufjs/path": "^1.1.2", 1526 | "@protobufjs/pool": "^1.1.0", 1527 | "@protobufjs/utf8": "^1.1.0", 1528 | "@types/long": "^4.0.1", 1529 | "@types/node": ">=13.7.0", 1530 | "long": "^4.0.0" 1531 | }, 1532 | "bin": { 1533 | "pbjs": "bin/pbjs", 1534 | "pbts": "bin/pbts" 1535 | } 1536 | }, 1537 | "node_modules/require-directory": { 1538 | "version": "2.1.1", 1539 | "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", 1540 | "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", 1541 | "engines": { 1542 | "node": ">=0.10.0" 1543 | } 1544 | }, 1545 | "node_modules/resolve": { 1546 | "version": "1.22.1", 1547 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", 1548 | "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", 1549 | "dev": true, 1550 | "dependencies": { 1551 | "is-core-module": "^2.9.0", 1552 | "path-parse": "^1.0.7", 1553 | "supports-preserve-symlinks-flag": "^1.0.0" 1554 | }, 1555 | "bin": { 1556 | "resolve": "bin/resolve" 1557 | }, 1558 | "funding": { 1559 | "url": "https://github.com/sponsors/ljharb" 1560 | } 1561 | }, 1562 | "node_modules/rollup": { 1563 | "version": "3.19.1", 1564 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.19.1.tgz", 1565 | "integrity": "sha512-lAbrdN7neYCg/8WaoWn/ckzCtz+jr70GFfYdlf50OF7387HTg+wiuiqJRFYawwSPpqfqDNYqK7smY/ks2iAudg==", 1566 | "dev": true, 1567 | "bin": { 1568 | "rollup": "dist/bin/rollup" 1569 | }, 1570 | "engines": { 1571 | "node": ">=14.18.0", 1572 | "npm": ">=8.0.0" 1573 | }, 1574 | "optionalDependencies": { 1575 | "fsevents": "~2.3.2" 1576 | } 1577 | }, 1578 | "node_modules/sade": { 1579 | "version": "1.8.1", 1580 | "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", 1581 | "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", 1582 | "dev": true, 1583 | "dependencies": { 1584 | "mri": "^1.1.0" 1585 | }, 1586 | "engines": { 1587 | "node": ">=6" 1588 | } 1589 | }, 1590 | "node_modules/safe-buffer": { 1591 | "version": "5.2.1", 1592 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 1593 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", 1594 | "funding": [ 1595 | { 1596 | "type": "github", 1597 | "url": "https://github.com/sponsors/feross" 1598 | }, 1599 | { 1600 | "type": "patreon", 1601 | "url": "https://www.patreon.com/feross" 1602 | }, 1603 | { 1604 | "type": "consulting", 1605 | "url": "https://feross.org/support" 1606 | } 1607 | ] 1608 | }, 1609 | "node_modules/set-cookie-parser": { 1610 | "version": "2.5.1", 1611 | "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.5.1.tgz", 1612 | "integrity": "sha512-1jeBGaKNGdEq4FgIrORu/N570dwoPYio8lSoYLWmX7sQ//0JY08Xh9o5pBcgmHQ/MbsYp/aZnOe1s1lIsbLprQ==", 1613 | "dev": true 1614 | }, 1615 | "node_modules/sirv": { 1616 | "version": "2.0.2", 1617 | "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.2.tgz", 1618 | "integrity": "sha512-4Qog6aE29nIjAOKe/wowFTxOdmbEZKb+3tsLljaBRzJwtqto0BChD2zzH0LhgCSXiI+V7X+Y45v14wBZQ1TK3w==", 1619 | "dev": true, 1620 | "dependencies": { 1621 | "@polka/url": "^1.0.0-next.20", 1622 | "mrmime": "^1.0.0", 1623 | "totalist": "^3.0.0" 1624 | }, 1625 | "engines": { 1626 | "node": ">= 10" 1627 | } 1628 | }, 1629 | "node_modules/source-map-js": { 1630 | "version": "1.0.2", 1631 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", 1632 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", 1633 | "dev": true, 1634 | "engines": { 1635 | "node": ">=0.10.0" 1636 | } 1637 | }, 1638 | "node_modules/streamsearch": { 1639 | "version": "1.1.0", 1640 | "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", 1641 | "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", 1642 | "dev": true, 1643 | "engines": { 1644 | "node": ">=10.0.0" 1645 | } 1646 | }, 1647 | "node_modules/string-width": { 1648 | "version": "4.2.3", 1649 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", 1650 | "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", 1651 | "dependencies": { 1652 | "emoji-regex": "^8.0.0", 1653 | "is-fullwidth-code-point": "^3.0.0", 1654 | "strip-ansi": "^6.0.1" 1655 | }, 1656 | "engines": { 1657 | "node": ">=8" 1658 | } 1659 | }, 1660 | "node_modules/strip-ansi": { 1661 | "version": "6.0.1", 1662 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", 1663 | "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", 1664 | "dependencies": { 1665 | "ansi-regex": "^5.0.1" 1666 | }, 1667 | "engines": { 1668 | "node": ">=8" 1669 | } 1670 | }, 1671 | "node_modules/supports-preserve-symlinks-flag": { 1672 | "version": "1.0.0", 1673 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", 1674 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", 1675 | "dev": true, 1676 | "engines": { 1677 | "node": ">= 0.4" 1678 | }, 1679 | "funding": { 1680 | "url": "https://github.com/sponsors/ljharb" 1681 | } 1682 | }, 1683 | "node_modules/svelte": { 1684 | "version": "3.56.0", 1685 | "resolved": "https://registry.npmjs.org/svelte/-/svelte-3.56.0.tgz", 1686 | "integrity": "sha512-LvXiJbjdvJKwB/0CQyYpDX0q+hFqCyWmybzC2G6eK1tJJA/RSRCytTfNmjHv+RHlLuA70vWG7nXp6gbeErYvRA==", 1687 | "dev": true, 1688 | "engines": { 1689 | "node": ">= 8" 1690 | } 1691 | }, 1692 | "node_modules/svelte-hmr": { 1693 | "version": "0.15.1", 1694 | "resolved": "https://registry.npmjs.org/svelte-hmr/-/svelte-hmr-0.15.1.tgz", 1695 | "integrity": "sha512-BiKB4RZ8YSwRKCNVdNxK/GfY+r4Kjgp9jCLEy0DuqAKfmQtpL38cQK3afdpjw4sqSs4PLi3jIPJIFp259NkZtA==", 1696 | "dev": true, 1697 | "engines": { 1698 | "node": "^12.20 || ^14.13.1 || >= 16" 1699 | }, 1700 | "peerDependencies": { 1701 | "svelte": ">=3.19.0" 1702 | } 1703 | }, 1704 | "node_modules/tiny-glob": { 1705 | "version": "0.2.9", 1706 | "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", 1707 | "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==", 1708 | "dev": true, 1709 | "dependencies": { 1710 | "globalyzer": "0.1.0", 1711 | "globrex": "^0.1.2" 1712 | } 1713 | }, 1714 | "node_modules/totalist": { 1715 | "version": "3.0.0", 1716 | "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.0.tgz", 1717 | "integrity": "sha512-eM+pCBxXO/njtF7vdFsHuqb+ElbxqtI4r5EAvk6grfAFyJ6IvWlSkfZ5T9ozC6xWw3Fj1fGoSmrl0gUs46JVIw==", 1718 | "dev": true, 1719 | "engines": { 1720 | "node": ">=6" 1721 | } 1722 | }, 1723 | "node_modules/tr46": { 1724 | "version": "0.0.3", 1725 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", 1726 | "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" 1727 | }, 1728 | "node_modules/tslib": { 1729 | "version": "2.5.0", 1730 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", 1731 | "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==" 1732 | }, 1733 | "node_modules/undici": { 1734 | "version": "5.20.0", 1735 | "resolved": "https://registry.npmjs.org/undici/-/undici-5.20.0.tgz", 1736 | "integrity": "sha512-J3j60dYzuo6Eevbawwp1sdg16k5Tf768bxYK4TUJRH7cBM4kFCbf3mOnM/0E3vQYXvpxITbbWmBafaDbxLDz3g==", 1737 | "dev": true, 1738 | "dependencies": { 1739 | "busboy": "^1.6.0" 1740 | }, 1741 | "engines": { 1742 | "node": ">=12.18" 1743 | } 1744 | }, 1745 | "node_modules/vite": { 1746 | "version": "4.1.4", 1747 | "resolved": "https://registry.npmjs.org/vite/-/vite-4.1.4.tgz", 1748 | "integrity": "sha512-3knk/HsbSTKEin43zHu7jTwYWv81f8kgAL99G5NWBcA1LKvtvcVAC4JjBH1arBunO9kQka+1oGbrMKOjk4ZrBg==", 1749 | "dev": true, 1750 | "dependencies": { 1751 | "esbuild": "^0.16.14", 1752 | "postcss": "^8.4.21", 1753 | "resolve": "^1.22.1", 1754 | "rollup": "^3.10.0" 1755 | }, 1756 | "bin": { 1757 | "vite": "bin/vite.js" 1758 | }, 1759 | "engines": { 1760 | "node": "^14.18.0 || >=16.0.0" 1761 | }, 1762 | "optionalDependencies": { 1763 | "fsevents": "~2.3.2" 1764 | }, 1765 | "peerDependencies": { 1766 | "@types/node": ">= 14", 1767 | "less": "*", 1768 | "sass": "*", 1769 | "stylus": "*", 1770 | "sugarss": "*", 1771 | "terser": "^5.4.0" 1772 | }, 1773 | "peerDependenciesMeta": { 1774 | "@types/node": { 1775 | "optional": true 1776 | }, 1777 | "less": { 1778 | "optional": true 1779 | }, 1780 | "sass": { 1781 | "optional": true 1782 | }, 1783 | "stylus": { 1784 | "optional": true 1785 | }, 1786 | "sugarss": { 1787 | "optional": true 1788 | }, 1789 | "terser": { 1790 | "optional": true 1791 | } 1792 | } 1793 | }, 1794 | "node_modules/vitefu": { 1795 | "version": "0.2.4", 1796 | "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.4.tgz", 1797 | "integrity": "sha512-fanAXjSaf9xXtOOeno8wZXIhgia+CZury481LsDaV++lSvcU2R9Ch2bPh3PYFyoHW+w9LqAeYRISVQjUIew14g==", 1798 | "dev": true, 1799 | "peerDependencies": { 1800 | "vite": "^3.0.0 || ^4.0.0" 1801 | }, 1802 | "peerDependenciesMeta": { 1803 | "vite": { 1804 | "optional": true 1805 | } 1806 | } 1807 | }, 1808 | "node_modules/webidl-conversions": { 1809 | "version": "3.0.1", 1810 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", 1811 | "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" 1812 | }, 1813 | "node_modules/websocket-driver": { 1814 | "version": "0.7.4", 1815 | "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", 1816 | "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", 1817 | "dependencies": { 1818 | "http-parser-js": ">=0.5.1", 1819 | "safe-buffer": ">=5.1.0", 1820 | "websocket-extensions": ">=0.1.1" 1821 | }, 1822 | "engines": { 1823 | "node": ">=0.8.0" 1824 | } 1825 | }, 1826 | "node_modules/websocket-extensions": { 1827 | "version": "0.1.4", 1828 | "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", 1829 | "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", 1830 | "engines": { 1831 | "node": ">=0.8.0" 1832 | } 1833 | }, 1834 | "node_modules/whatwg-url": { 1835 | "version": "5.0.0", 1836 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", 1837 | "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", 1838 | "dependencies": { 1839 | "tr46": "~0.0.3", 1840 | "webidl-conversions": "^3.0.0" 1841 | } 1842 | }, 1843 | "node_modules/wrap-ansi": { 1844 | "version": "7.0.0", 1845 | "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", 1846 | "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", 1847 | "dependencies": { 1848 | "ansi-styles": "^4.0.0", 1849 | "string-width": "^4.1.0", 1850 | "strip-ansi": "^6.0.0" 1851 | }, 1852 | "engines": { 1853 | "node": ">=10" 1854 | }, 1855 | "funding": { 1856 | "url": "https://github.com/chalk/wrap-ansi?sponsor=1" 1857 | } 1858 | }, 1859 | "node_modules/y18n": { 1860 | "version": "5.0.8", 1861 | "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", 1862 | "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", 1863 | "engines": { 1864 | "node": ">=10" 1865 | } 1866 | }, 1867 | "node_modules/yargs": { 1868 | "version": "16.2.0", 1869 | "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", 1870 | "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", 1871 | "dependencies": { 1872 | "cliui": "^7.0.2", 1873 | "escalade": "^3.1.1", 1874 | "get-caller-file": "^2.0.5", 1875 | "require-directory": "^2.1.1", 1876 | "string-width": "^4.2.0", 1877 | "y18n": "^5.0.5", 1878 | "yargs-parser": "^20.2.2" 1879 | }, 1880 | "engines": { 1881 | "node": ">=10" 1882 | } 1883 | }, 1884 | "node_modules/yargs-parser": { 1885 | "version": "20.2.9", 1886 | "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", 1887 | "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", 1888 | "engines": { 1889 | "node": ">=10" 1890 | } 1891 | } 1892 | } 1893 | } 1894 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "sveltekit-fullstack-crud", 3 | "version": "0.0.1", 4 | "private": true, 5 | "scripts": { 6 | "dev": "vite dev", 7 | "build": "vite build", 8 | "preview": "vite preview" 9 | }, 10 | "devDependencies": { 11 | "@sveltejs/adapter-auto": "^2.0.0", 12 | "@sveltejs/kit": "^1.5.0", 13 | "svelte": "^3.54.0", 14 | "vite": "^4.0.0" 15 | }, 16 | "type": "module", 17 | "dependencies": { 18 | "firebase": "^9.17.2" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/app.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | %sveltekit.head% 9 | 10 | 11 | 12 | 13 | 15 | 16 | 19 | 20 | 32 | 33 | 34 | 35 |
%sveltekit.body%
36 | 37 | 38 | -------------------------------------------------------------------------------- /src/components/Authenticate.svelte: -------------------------------------------------------------------------------- 1 | 38 | 39 |
40 |
41 |

{register ? "Register" : "Login"}

42 | {#if error} 43 |

The information you have entered is not correct

44 | {/if} 45 | 49 | 57 | {#if register} 58 | 68 | {/if} 69 | 70 | 77 | 78 |
79 |

Or

80 | {#if register} 81 |
82 |

Already have an account?

83 |

{}}>Login

84 |
85 | {:else} 86 |
87 |

Don't have an account?

88 |

{}}>Register

89 |
90 | {/if} 91 |
92 |
93 | 94 | 257 | -------------------------------------------------------------------------------- /src/components/TodoItem.svelte: -------------------------------------------------------------------------------- 1 | 7 | 8 |
9 |

10 | {index + 1}. {todo} 11 |

12 |
13 | { 15 | editTodo(index); 16 | }} 17 | on:keydown={() => {}} 18 | class="fa-regular fa-pen-to-square" 19 | /> 20 | { 22 | removeTodo(index); 23 | }} 24 | on:keydown={() => {}} 25 | class="fa-regular fa-trash-can" 26 | /> 27 |
28 |
29 | 30 | 54 | -------------------------------------------------------------------------------- /src/lib/firebase/firebase.js: -------------------------------------------------------------------------------- 1 | // Import the functions you need from the SDKs you need 2 | import { deleteApp, getApp, getApps, initializeApp } from "firebase/app"; 3 | import { getFirestore } from 'firebase/firestore' 4 | import { getAuth } from 'firebase/auth' 5 | // TODO: Add SDKs for Firebase products that you want to use 6 | // https://firebase.google.com/docs/web/setup#available-libraries 7 | 8 | // Your web app's Firebase configuration 9 | const firebaseConfig = { 10 | apiKey: import.meta.env.VITE_APIKEY, 11 | authDomain: import.meta.env.VITE_AUTH_DOMAIN, 12 | projectId: import.meta.env.VITE_PROJECT_ID, 13 | storageBucket: import.meta.env.VITE_STORAGE_BUCKET, 14 | messagingSenderId: import.meta.env.VITE_MESSAGING_SENDER_ID, 15 | appId: import.meta.env.VITE_APP_ID 16 | }; 17 | 18 | // Initialize Firebase 19 | let firebaseApp; 20 | if (!getApps().length) { 21 | firebaseApp = initializeApp(firebaseConfig) 22 | } else { 23 | firebaseApp = getApp() 24 | deleteApp(firebaseApp) 25 | firebaseApp = initializeApp(firebaseConfig) 26 | } 27 | 28 | export const db = getFirestore(firebaseApp) 29 | export const auth = getAuth(firebaseApp) -------------------------------------------------------------------------------- /src/routes/+layout.svelte: -------------------------------------------------------------------------------- 1 | 57 | 58 |
59 | 60 |
61 | 62 | 72 | -------------------------------------------------------------------------------- /src/routes/+page.svelte: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /src/routes/dashboard/+page.svelte: -------------------------------------------------------------------------------- 1 | 56 | 57 | {#if !$authStore.loading} 58 |
59 |
60 |

Todo List

61 |
62 | 66 | 70 |
71 |
72 |
73 | {#if todoList.length === 0} 74 |

You have nothing to do!

75 | {/if} 76 | {#each todoList as todo, index} 77 | 78 | {/each} 79 |
80 |
81 | 82 | 83 |
84 |
85 | {/if} 86 | 87 | 176 | -------------------------------------------------------------------------------- /src/store/store.js: -------------------------------------------------------------------------------- 1 | import { createUserWithEmailAndPassword, signInWithEmailAndPassword, signOut } from "firebase/auth"; 2 | import { writable } from "svelte/store"; 3 | import { auth } from "../lib/firebase/firebase"; 4 | 5 | export const authStore = writable({ 6 | user: null, 7 | loading: true, 8 | data: {} 9 | }) 10 | 11 | export const authHandlers = { 12 | signup: async (email, pass) => { 13 | await createUserWithEmailAndPassword(auth, email, pass) 14 | }, 15 | login: async (email, pass) => { 16 | await signInWithEmailAndPassword(auth, email, pass) 17 | }, 18 | logout: async () => { 19 | await signOut(auth) 20 | } 21 | } -------------------------------------------------------------------------------- /static/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jamezmca/sveltekit-fullstack-crud/15d3c9873bbfb995ff822dcc38add2b966c10847/static/favicon.png -------------------------------------------------------------------------------- /svelte.config.js: -------------------------------------------------------------------------------- 1 | import adapter from '@sveltejs/adapter-auto'; 2 | 3 | /** @type {import('@sveltejs/kit').Config} */ 4 | const config = { 5 | kit: { 6 | // adapter-auto only supports some environments, see https://kit.svelte.dev/docs/adapter-auto for a list. 7 | // If your environment is not supported or you settled on a specific environment, switch out the adapter. 8 | // See https://kit.svelte.dev/docs/adapters for more information about adapters. 9 | adapter: adapter() 10 | } 11 | }; 12 | 13 | export default config; 14 | -------------------------------------------------------------------------------- /vite.config.js: -------------------------------------------------------------------------------- 1 | import { sveltekit } from '@sveltejs/kit/vite'; 2 | import { defineConfig } from 'vite'; 3 | 4 | export default defineConfig({ 5 | plugins: [sveltekit()] 6 | }); 7 | --------------------------------------------------------------------------------