diff --git a/package.json b/package.json index 368075c..44f0c36 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,6 @@ "dependencies": { "@primevue/themes": "4.2.5", "axios": "1.7.9", - "firebase": "11.3.0", "pinia": "2.3.1", "primeflex": "3.3.1", "primeicons": "7.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d8b69c0..2ec8f39 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -14,9 +14,6 @@ importers: axios: specifier: 1.7.9 version: 1.7.9 - firebase: - specifier: 11.3.0 - version: 11.3.0 pinia: specifier: 2.3.1 version: 2.3.1(typescript@5.7.3)(vue@3.5.13(typescript@5.7.3)) @@ -68,225 +65,6 @@ packages: resolution: {integrity: sha512-eUuWapzEGWFEpHFxgEaBG8e3n6S8L3MSu0oda755rOfabWPnh0Our1AozNFVUxGFIhbKgd1ksprsoDGMinTOTA==} engines: {node: '>=6.9.0'} - '@firebase/analytics-compat@0.2.17': - resolution: {integrity: sha512-SJNVOeTvzdqZQvXFzj7yAirXnYcLDxh57wBFROfeowq/kRN1AqOw1tG6U4OiFOEhqi7s3xLze/LMkZatk2IEww==} - peerDependencies: - '@firebase/app-compat': 0.x - - '@firebase/analytics-types@0.8.3': - resolution: {integrity: sha512-VrIp/d8iq2g501qO46uGz3hjbDb8xzYMrbu8Tp0ovzIzrvJZ2fvmj649gTjge/b7cCCcjT0H37g1gVtlNhnkbg==} - - '@firebase/analytics@0.10.11': - resolution: {integrity: sha512-zwuPiRE0+hgcS95JZbJ6DFQN4xYFO8IyGxpeePTV51YJMwCf3lkBa6FnZ/iXIqDKcBPMgMuuEZozI0BJWaLEYg==} - peerDependencies: - '@firebase/app': 0.x - - '@firebase/app-check-compat@0.3.18': - resolution: {integrity: sha512-qjozwnwYmAIdrsVGrJk+hnF1WBois54IhZR6gO0wtZQoTvWL/GtiA2F31TIgAhF0ayUiZhztOv1RfC7YyrZGDQ==} - engines: {node: '>=18.0.0'} - peerDependencies: - '@firebase/app-compat': 0.x - - '@firebase/app-check-interop-types@0.3.3': - resolution: {integrity: sha512-gAlxfPLT2j8bTI/qfe3ahl2I2YcBQ8cFIBdhAQA4I2f3TndcO+22YizyGYuttLHPQEpWkhmpFW60VCFEPg4g5A==} - - '@firebase/app-check-types@0.5.3': - resolution: {integrity: sha512-hyl5rKSj0QmwPdsAxrI5x1otDlByQ7bvNvVt8G/XPO2CSwE++rmSVf3VEhaeOR4J8ZFaF0Z0NDSmLejPweZ3ng==} - - '@firebase/app-check@0.8.11': - resolution: {integrity: sha512-42zIfRI08/7bQqczAy7sY2JqZYEv3a1eNa4fLFdtJ54vNevbBIRSEA3fZgRqWFNHalh5ohsBXdrYgFqaRIuCcQ==} - engines: {node: '>=18.0.0'} - peerDependencies: - '@firebase/app': 0.x - - '@firebase/app-compat@0.2.49': - resolution: {integrity: sha512-vf838b9WrHs2GH6NfsvA27a3ngDzCnR7oxmc5LJHaJ7mWSCuce1iDRJ2B6raJ6SH9592XXvtW+kzRcPYhC/LoA==} - engines: {node: '>=18.0.0'} - - '@firebase/app-types@0.9.3': - resolution: {integrity: sha512-kRVpIl4vVGJ4baogMDINbyrIOtOxqhkZQg4jTq3l8Lw6WSk0xfpEYzezFu+Kl4ve4fbPl79dvwRtaFqAC/ucCw==} - - '@firebase/app@0.11.0': - resolution: {integrity: sha512-FaPl2RB2iClQK4IIAN4ruhzyGNRcvAwXk0Ltqdt55RiTmQ4aM2EAJicgI8QNQd2JIkeCT1K8JKsEba3T1/J7FA==} - engines: {node: '>=18.0.0'} - - '@firebase/auth-compat@0.5.18': - resolution: {integrity: sha512-dFBev8AMNb2AgIt9afwf/Ku4/0Wq9R9OFSeBB/xjyJt+RfQ9PnNWqU2oFphews23byLg6jle8twRA7iOYfRGRw==} - engines: {node: '>=18.0.0'} - peerDependencies: - '@firebase/app-compat': 0.x - - '@firebase/auth-interop-types@0.2.4': - resolution: {integrity: sha512-JPgcXKCuO+CWqGDnigBtvo09HeBs5u/Ktc2GaFj2m01hLarbxthLNm7Fk8iOP1aqAtXV+fnnGj7U28xmk7IwVA==} - - '@firebase/auth-types@0.13.0': - resolution: {integrity: sha512-S/PuIjni0AQRLF+l9ck0YpsMOdE8GO2KU6ubmBB7P+7TJUCQDa3R1dlgYm9UzGbbePMZsp0xzB93f2b/CgxMOg==} - peerDependencies: - '@firebase/app-types': 0.x - '@firebase/util': 1.x - - '@firebase/auth@1.9.0': - resolution: {integrity: sha512-Xz2mbEYauF689qXG/4HppS2+/yGo9R7B6eNUBh3H2+XpAZTGdx8d8TFsW/BMTAK9Q95NB0pb1Bbvfx0lwofq8Q==} - engines: {node: '>=18.0.0'} - peerDependencies: - '@firebase/app': 0.x - '@react-native-async-storage/async-storage': ^1.18.1 - peerDependenciesMeta: - '@react-native-async-storage/async-storage': - optional: true - - '@firebase/component@0.6.12': - resolution: {integrity: sha512-YnxqjtohLbnb7raXt2YuA44cC1wA9GiehM/cmxrsoxKlFxBLy2V0OkRSj9gpngAE0UoJ421Wlav9ycO7lTPAUw==} - engines: {node: '>=18.0.0'} - - '@firebase/data-connect@0.3.0': - resolution: {integrity: sha512-inbLq0JyQD/d02Al3Lso0Hc8z1BVpB3dYSMFcQkeKhYyjn5bspLczLdasPbCOEUp8MOkLblLZhJuRs7Q/spFnw==} - peerDependencies: - '@firebase/app': 0.x - - '@firebase/database-compat@2.0.3': - resolution: {integrity: sha512-uHGQrSUeJvsDfA+IyHW5O4vdRPsCksEzv4T4Jins+bmQgYy20ZESU4x01xrQCn/nzqKHuQMEW99CoCO7D+5NiQ==} - engines: {node: '>=18.0.0'} - - '@firebase/database-types@1.0.8': - resolution: {integrity: sha512-6lPWIGeufhUq1heofZULyVvWFhD01TUrkkB9vyhmksjZ4XF7NaivQp9rICMk7QNhqwa+uDCaj4j+Q8qqcSVZ9g==} - - '@firebase/database@1.0.12': - resolution: {integrity: sha512-psFl5t6rSFHq3i3fnU1QQlc4BB9Hnhh8TgEqvQlPPm8kDLw8gYxvjqYw3c5CZW0+zKR837nwT6im/wtJUivMKw==} - engines: {node: '>=18.0.0'} - - '@firebase/firestore-compat@0.3.42': - resolution: {integrity: sha512-L/JqnVw7Bf+2jcCmW1nCiknkIVVM5RIR4rHE1UrtInAvP9vo8pUhFEZVzbwX71SuCoHOwjiaPDvVSeOFachokg==} - engines: {node: '>=18.0.0'} - peerDependencies: - '@firebase/app-compat': 0.x - - '@firebase/firestore-types@3.0.3': - resolution: {integrity: sha512-hD2jGdiWRxB/eZWF89xcK9gF8wvENDJkzpVFb4aGkzfEaKxVRD1kjz1t1Wj8VZEp2LCB53Yx1zD8mrhQu87R6Q==} - peerDependencies: - '@firebase/app-types': 0.x - '@firebase/util': 1.x - - '@firebase/firestore@4.7.7': - resolution: {integrity: sha512-DDYBjqSyd2vD3SjfRqI2Q9Ua1N0URP+1P0/SnNdVSp0/S5mkbaklIX/eU+199ze0XXnC61RYLqi6KYTYtGoz2A==} - engines: {node: '>=18.0.0'} - peerDependencies: - '@firebase/app': 0.x - - '@firebase/functions-compat@0.3.19': - resolution: {integrity: sha512-uw4tR8NcJCDu86UD63Za8A8SgFgmAVFb1XsGlkuBY7gpLyZWEFavWnwRkZ/8cUwpqUhp/SptXFZ1WFJSnOokLw==} - engines: {node: '>=18.0.0'} - peerDependencies: - '@firebase/app-compat': 0.x - - '@firebase/functions-types@0.6.3': - resolution: {integrity: sha512-EZoDKQLUHFKNx6VLipQwrSMh01A1SaL3Wg6Hpi//x6/fJ6Ee4hrAeswK99I5Ht8roiniKHw4iO0B1Oxj5I4plg==} - - '@firebase/functions@0.12.2': - resolution: {integrity: sha512-iKpFDoCYk/Qm+Qwv5ynRb9/yq64QOt0A0+t9NuekyAZnSoV56kSNq/PmsVmBauar5SlmEjhHk6QKdMBP9S0gXA==} - engines: {node: '>=18.0.0'} - peerDependencies: - '@firebase/app': 0.x - - '@firebase/installations-compat@0.2.12': - resolution: {integrity: sha512-RhcGknkxmFu92F6Jb3rXxv6a4sytPjJGifRZj8MSURPuv2Xu+/AispCXEfY1ZraobhEHTG5HLGsP6R4l9qB5aA==} - peerDependencies: - '@firebase/app-compat': 0.x - - '@firebase/installations-types@0.5.3': - resolution: {integrity: sha512-2FJI7gkLqIE0iYsNQ1P751lO3hER+Umykel+TkLwHj6plzWVxqvfclPUZhcKFVQObqloEBTmpi2Ozn7EkCABAA==} - peerDependencies: - '@firebase/app-types': 0.x - - '@firebase/installations@0.6.12': - resolution: {integrity: sha512-ES/WpuAV2k2YtBTvdaknEo7IY8vaGjIjS3zhnHSAIvY9KwTR8XZFXOJoZ3nSkjN1A5R4MtEh+07drnzPDg9vaw==} - peerDependencies: - '@firebase/app': 0.x - - '@firebase/logger@0.4.4': - resolution: {integrity: sha512-mH0PEh1zoXGnaR8gD1DeGeNZtWFKbnz9hDO91dIml3iou1gpOnLqXQ2dJfB71dj6dpmUjcQ6phY3ZZJbjErr9g==} - engines: {node: '>=18.0.0'} - - '@firebase/messaging-compat@0.2.16': - resolution: {integrity: sha512-9HZZ88Ig3zQ0ok/Pwt4gQcNsOhoEy8hDHoGsV1am6ulgMuGuDVD2gl11Lere2ksL+msM12Lddi2x/7TCqmODZw==} - peerDependencies: - '@firebase/app-compat': 0.x - - '@firebase/messaging-interop-types@0.2.3': - resolution: {integrity: sha512-xfzFaJpzcmtDjycpDeCUj0Ge10ATFi/VHVIvEEjDNc3hodVBQADZ7BWQU7CuFpjSHE+eLuBI13z5F/9xOoGX8Q==} - - '@firebase/messaging@0.12.16': - resolution: {integrity: sha512-VJ8sCEIeP3+XkfbJA7410WhYGHdloYFZXoHe/vt+vNVDGw8JQPTQSVTRvjrUprEf5I4Tbcnpr2H34lS6zhCHSA==} - peerDependencies: - '@firebase/app': 0.x - - '@firebase/performance-compat@0.2.13': - resolution: {integrity: sha512-pB0SMQj2TLQ6roDcX0YQDWvUnVgsVOl0VnUvyT/VBdCUuQYDHobZsPEuQsoEqmPA44KS/Gl0oyKqf+I8UPtRgw==} - peerDependencies: - '@firebase/app-compat': 0.x - - '@firebase/performance-types@0.2.3': - resolution: {integrity: sha512-IgkyTz6QZVPAq8GSkLYJvwSLr3LS9+V6vNPQr0x4YozZJiLF5jYixj0amDtATf1X0EtYHqoPO48a9ija8GocxQ==} - - '@firebase/performance@0.7.0': - resolution: {integrity: sha512-L91PwYuiJdKXKSRqsWNicvTppAJVzKjye03UlegeD6TkpKjb93T8AmJ9B0Mt0bcWHCNtnnRBCdSCvD2U9GZDjw==} - peerDependencies: - '@firebase/app': 0.x - - '@firebase/remote-config-compat@0.2.12': - resolution: {integrity: sha512-91jLWPtubIuPBngg9SzwvNCWzhMLcyBccmt7TNZP+y1cuYFNOWWHKUXQ3IrxCLB7WwLqQaEu7fTDAjHsTyBsSw==} - peerDependencies: - '@firebase/app-compat': 0.x - - '@firebase/remote-config-types@0.4.0': - resolution: {integrity: sha512-7p3mRE/ldCNYt8fmWMQ/MSGRmXYlJ15Rvs9Rk17t8p0WwZDbeK7eRmoI1tvCPaDzn9Oqh+yD6Lw+sGLsLg4kKg==} - - '@firebase/remote-config@0.5.0': - resolution: {integrity: sha512-weiEbpBp5PBJTHUWR4GwI7ZacaAg68BKha5QnZ8Go65W4oQjEWqCW/rfskABI/OkrGijlL3CUmCB/SA6mVo0qA==} - peerDependencies: - '@firebase/app': 0.x - - '@firebase/storage-compat@0.3.16': - resolution: {integrity: sha512-EeMuok/s0r938lEomia8XILEqSYULm7HcYZ/GTZLDWur0kMf2ktuPVZiTdRiwEV3Iki7FtQO5txrQ/0pLRVLAw==} - engines: {node: '>=18.0.0'} - peerDependencies: - '@firebase/app-compat': 0.x - - '@firebase/storage-types@0.8.3': - resolution: {integrity: sha512-+Muk7g9uwngTpd8xn9OdF/D48uiQ7I1Fae7ULsWPuKoCH3HU7bfFPhxtJYzyhjdniowhuDpQcfPmuNRAqZEfvg==} - peerDependencies: - '@firebase/app-types': 0.x - '@firebase/util': 1.x - - '@firebase/storage@0.13.6': - resolution: {integrity: sha512-BEJLYQzVgAoglRl5VRIRZ91RRBZgS/O37/PSGQJBYNuoLmFZUrtwrlLTOAwG776NlO9VQR+K2j15/36Lr2EqHA==} - engines: {node: '>=18.0.0'} - peerDependencies: - '@firebase/app': 0.x - - '@firebase/util@1.10.3': - resolution: {integrity: sha512-wfoF5LTy0m2ufUapV0ZnpcGQvuavTbJ5Qr1Ze9OJGL70cSMvhDyjS4w2121XdA3lGZSTOsDOyGhpoDtYwck85A==} - engines: {node: '>=18.0.0'} - - '@firebase/vertexai@1.0.4': - resolution: {integrity: sha512-Nkf/r4u166b4Id6zrrW0Qtg1KyZpQvvYchtkebamnHtIfY+Qnt51I/sx4Saos/WrmO8SnrSU850LfmJ7pehYXg==} - engines: {node: '>=18.0.0'} - peerDependencies: - '@firebase/app': 0.x - '@firebase/app-types': 0.x - - '@firebase/webchannel-wrapper@1.0.3': - resolution: {integrity: sha512-2xCRM9q9FlzGZCdgDMJwc0gyUkWFtkosy7Xxr6sFgQwn+wMNIWd7xIvYNauU1r64B5L5rsGKy/n9TKJ0aAFeqQ==} - - '@grpc/grpc-js@1.9.15': - resolution: {integrity: sha512-nqE7Hc0AzI+euzUwDAy0aY5hCp10r734gMGRdU+qOPX0XSceI2ULrcXB5U2xSc5VkWwalCj4M7GzCAygZl2KoQ==} - engines: {node: ^8.13.0 || >=10.10.0} - - '@grpc/proto-loader@0.7.13': - resolution: {integrity: sha512-AiXO/bfe9bmxBjxxtYxFAXGZvMaN5s8kO+jBHAJCON8rJoB5YS/D6X7ZNc6XQkuHNmyl4CYaMI1fJ/Gn27RGGw==} - engines: {node: '>=6'} - hasBin: true - '@jridgewell/gen-mapping@0.3.8': resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==} engines: {node: '>=6.0.0'} @@ -345,36 +123,6 @@ packages: resolution: {integrity: sha512-8F7yA36xYIKtNuAuyBdZZEks/bKDwlhH5WjpqGGB0FdwfAEoBYsynQ5sdqcT2Lb/NsajHmS5lc++Ttlvr1g1Lw==} engines: {node: '>=12.11.0'} - '@protobufjs/aspromise@1.1.2': - resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} - - '@protobufjs/base64@1.1.2': - resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==} - - '@protobufjs/codegen@2.0.4': - resolution: {integrity: sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==} - - '@protobufjs/eventemitter@1.1.0': - resolution: {integrity: sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==} - - '@protobufjs/fetch@1.1.0': - resolution: {integrity: sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==} - - '@protobufjs/float@1.0.2': - resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==} - - '@protobufjs/inquire@1.1.0': - resolution: {integrity: sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==} - - '@protobufjs/path@1.1.2': - resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==} - - '@protobufjs/pool@1.1.0': - resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==} - - '@protobufjs/utf8@1.1.0': - resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} - '@rsbuild/core@1.2.5': resolution: {integrity: sha512-k9JFE613b0X0WUaqfp6CIh2sS+jpzx30cCqe8wPIaQ/tVfUc1kr7gfR3dwcdiE68+WVnFHGm1JqMdeOZogjsJQ==} engines: {node: '>=16.7.0'} @@ -579,10 +327,6 @@ packages: ajv@8.17.1: resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} - ansi-regex@5.0.1: - resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} - engines: {node: '>=8'} - ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} @@ -612,10 +356,6 @@ packages: resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} engines: {node: '>=6.0'} - cliui@8.0.1: - resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} - engines: {node: '>=12'} - color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} @@ -643,9 +383,6 @@ packages: electron-to-chromium@1.5.97: resolution: {integrity: sha512-HKLtaH02augM7ZOdYRuO19rWDeY+QSJ1VxnXFa/XDFLf07HvM90pALIJFgrO+UVaajI3+aJMMpojoUTLZyQ7JQ==} - emoji-regex@8.0.0: - resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - enhanced-resolve@5.18.1: resolution: {integrity: sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==} engines: {node: '>=10.13.0'} @@ -693,13 +430,6 @@ packages: fast-uri@3.0.6: resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==} - faye-websocket@0.11.4: - resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==} - engines: {node: '>=0.8.0'} - - firebase@11.3.0: - resolution: {integrity: sha512-wLuBsWqg/M3pay2qOOLLKjTQxPUO2yrJgZLt4TKUwA3c3lrFNM2zc40uzD9LQdUk6H9HEK6bXjGPFrpwmu7HzA==} - follow-redirects@1.15.9: resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} engines: {node: '>=4.0'} @@ -713,10 +443,6 @@ packages: resolution: {integrity: sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==} engines: {node: '>= 6'} - get-caller-file@2.0.5: - resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} - engines: {node: 6.* || 8.* || >= 10.*} - glob-to-regexp@0.4.1: resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} @@ -730,16 +456,6 @@ packages: hash-sum@2.0.0: resolution: {integrity: sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==} - http-parser-js@0.5.9: - resolution: {integrity: sha512-n1XsPy3rXVxlqxVioEWdC+0+M+SQw0DpJynwtOPo1X+ZlvdzTLtDBIJJlDQTnwZIFJrZSzSGmIOUdP8tu+SgLw==} - - idb@7.1.1: - resolution: {integrity: sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==} - - is-fullwidth-code-point@3.0.0: - resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} - engines: {node: '>=8'} - isomorphic-rslog@0.0.6: resolution: {integrity: sha512-HM0q6XqQ93psDlqvuViNs/Ea3hAyGDkIdVAHlrEocjjAwGrs1fZ+EdQjS9eUPacnYB7Y8SoDdSY3H8p3ce205A==} engines: {node: '>=14.17.6'} @@ -761,12 +477,6 @@ packages: resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} engines: {node: '>=6.11.5'} - lodash.camelcase@4.3.0: - resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} - - long@5.3.0: - resolution: {integrity: sha512-5vvY5yF1zF/kXk+L94FRiTDa1Znom46UjPCH6/XbSvS8zBKMFBHTJk8KDMqJ+2J6QezQFi7k1k8v21ClJYHPaw==} - magic-string@0.30.17: resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==} @@ -818,10 +528,6 @@ packages: resolution: {integrity: sha512-7UMOIJvdFz4jQyhC76yhNdSlHtXvVpmE2JSo2ndUTBWjWJOkYyT562rQ4ayO+bMdJLtzBGqgY64I9ZfEvNd7vQ==} engines: {node: '>=12.11.0'} - protobufjs@7.4.0: - resolution: {integrity: sha512-mRUWCc3KUU4w1jU8sGxICXH/gNS94DvI1gxqDvBzhj1JpcsimQkYiOJfwsPUykUI5ZaspFbSgmBLER8IrQ3tqw==} - engines: {node: '>=12.0.0'} - proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} @@ -832,10 +538,6 @@ packages: randombytes@2.1.0: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} - require-directory@2.1.1: - resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} - engines: {node: '>=0.10.0'} - require-from-string@2.0.2: resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} engines: {node: '>=0.10.0'} @@ -865,14 +567,6 @@ packages: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} - string-width@4.2.3: - resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} - engines: {node: '>=8'} - - strip-ansi@6.0.1: - resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} - engines: {node: '>=8'} - supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} @@ -966,9 +660,6 @@ packages: resolution: {integrity: sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==} engines: {node: '>=10.13.0'} - web-vitals@4.2.4: - resolution: {integrity: sha512-r4DIlprAGwJ7YM11VZp4R884m0Vmgr6EAKe3P+kO0PPj3Unqyvv59rczf6UiGcb9Z8QxZVcqKNwv/g0WNdWwsw==} - webpack-sources@3.2.3: resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} engines: {node: '>=10.13.0'} @@ -983,30 +674,6 @@ packages: webpack-cli: optional: true - websocket-driver@0.7.4: - resolution: {integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==} - engines: {node: '>=0.8.0'} - - websocket-extensions@0.1.4: - resolution: {integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==} - engines: {node: '>=0.8.0'} - - wrap-ansi@7.0.0: - resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} - engines: {node: '>=10'} - - y18n@5.0.8: - resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} - engines: {node: '>=10'} - - yargs-parser@21.1.1: - resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} - engines: {node: '>=12'} - - yargs@17.7.2: - resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} - engines: {node: '>=12'} - snapshots: '@babel/helper-string-parser@7.25.9': {} @@ -1022,336 +689,6 @@ snapshots: '@babel/helper-string-parser': 7.25.9 '@babel/helper-validator-identifier': 7.25.9 - '@firebase/analytics-compat@0.2.17(@firebase/app-compat@0.2.49)(@firebase/app@0.11.0)': - dependencies: - '@firebase/analytics': 0.10.11(@firebase/app@0.11.0) - '@firebase/analytics-types': 0.8.3 - '@firebase/app-compat': 0.2.49 - '@firebase/component': 0.6.12 - '@firebase/util': 1.10.3 - tslib: 2.8.1 - transitivePeerDependencies: - - '@firebase/app' - - '@firebase/analytics-types@0.8.3': {} - - '@firebase/analytics@0.10.11(@firebase/app@0.11.0)': - dependencies: - '@firebase/app': 0.11.0 - '@firebase/component': 0.6.12 - '@firebase/installations': 0.6.12(@firebase/app@0.11.0) - '@firebase/logger': 0.4.4 - '@firebase/util': 1.10.3 - tslib: 2.8.1 - - '@firebase/app-check-compat@0.3.18(@firebase/app-compat@0.2.49)(@firebase/app@0.11.0)': - dependencies: - '@firebase/app-check': 0.8.11(@firebase/app@0.11.0) - '@firebase/app-check-types': 0.5.3 - '@firebase/app-compat': 0.2.49 - '@firebase/component': 0.6.12 - '@firebase/logger': 0.4.4 - '@firebase/util': 1.10.3 - tslib: 2.8.1 - transitivePeerDependencies: - - '@firebase/app' - - '@firebase/app-check-interop-types@0.3.3': {} - - '@firebase/app-check-types@0.5.3': {} - - '@firebase/app-check@0.8.11(@firebase/app@0.11.0)': - dependencies: - '@firebase/app': 0.11.0 - '@firebase/component': 0.6.12 - '@firebase/logger': 0.4.4 - '@firebase/util': 1.10.3 - tslib: 2.8.1 - - '@firebase/app-compat@0.2.49': - dependencies: - '@firebase/app': 0.11.0 - '@firebase/component': 0.6.12 - '@firebase/logger': 0.4.4 - '@firebase/util': 1.10.3 - tslib: 2.8.1 - - '@firebase/app-types@0.9.3': {} - - '@firebase/app@0.11.0': - dependencies: - '@firebase/component': 0.6.12 - '@firebase/logger': 0.4.4 - '@firebase/util': 1.10.3 - idb: 7.1.1 - tslib: 2.8.1 - - '@firebase/auth-compat@0.5.18(@firebase/app-compat@0.2.49)(@firebase/app-types@0.9.3)(@firebase/app@0.11.0)': - dependencies: - '@firebase/app-compat': 0.2.49 - '@firebase/auth': 1.9.0(@firebase/app@0.11.0) - '@firebase/auth-types': 0.13.0(@firebase/app-types@0.9.3)(@firebase/util@1.10.3) - '@firebase/component': 0.6.12 - '@firebase/util': 1.10.3 - tslib: 2.8.1 - transitivePeerDependencies: - - '@firebase/app' - - '@firebase/app-types' - - '@react-native-async-storage/async-storage' - - '@firebase/auth-interop-types@0.2.4': {} - - '@firebase/auth-types@0.13.0(@firebase/app-types@0.9.3)(@firebase/util@1.10.3)': - dependencies: - '@firebase/app-types': 0.9.3 - '@firebase/util': 1.10.3 - - '@firebase/auth@1.9.0(@firebase/app@0.11.0)': - dependencies: - '@firebase/app': 0.11.0 - '@firebase/component': 0.6.12 - '@firebase/logger': 0.4.4 - '@firebase/util': 1.10.3 - tslib: 2.8.1 - - '@firebase/component@0.6.12': - dependencies: - '@firebase/util': 1.10.3 - tslib: 2.8.1 - - '@firebase/data-connect@0.3.0(@firebase/app@0.11.0)': - dependencies: - '@firebase/app': 0.11.0 - '@firebase/auth-interop-types': 0.2.4 - '@firebase/component': 0.6.12 - '@firebase/logger': 0.4.4 - '@firebase/util': 1.10.3 - tslib: 2.8.1 - - '@firebase/database-compat@2.0.3': - dependencies: - '@firebase/component': 0.6.12 - '@firebase/database': 1.0.12 - '@firebase/database-types': 1.0.8 - '@firebase/logger': 0.4.4 - '@firebase/util': 1.10.3 - tslib: 2.8.1 - - '@firebase/database-types@1.0.8': - dependencies: - '@firebase/app-types': 0.9.3 - '@firebase/util': 1.10.3 - - '@firebase/database@1.0.12': - dependencies: - '@firebase/app-check-interop-types': 0.3.3 - '@firebase/auth-interop-types': 0.2.4 - '@firebase/component': 0.6.12 - '@firebase/logger': 0.4.4 - '@firebase/util': 1.10.3 - faye-websocket: 0.11.4 - tslib: 2.8.1 - - '@firebase/firestore-compat@0.3.42(@firebase/app-compat@0.2.49)(@firebase/app-types@0.9.3)(@firebase/app@0.11.0)': - dependencies: - '@firebase/app-compat': 0.2.49 - '@firebase/component': 0.6.12 - '@firebase/firestore': 4.7.7(@firebase/app@0.11.0) - '@firebase/firestore-types': 3.0.3(@firebase/app-types@0.9.3)(@firebase/util@1.10.3) - '@firebase/util': 1.10.3 - tslib: 2.8.1 - transitivePeerDependencies: - - '@firebase/app' - - '@firebase/app-types' - - '@firebase/firestore-types@3.0.3(@firebase/app-types@0.9.3)(@firebase/util@1.10.3)': - dependencies: - '@firebase/app-types': 0.9.3 - '@firebase/util': 1.10.3 - - '@firebase/firestore@4.7.7(@firebase/app@0.11.0)': - dependencies: - '@firebase/app': 0.11.0 - '@firebase/component': 0.6.12 - '@firebase/logger': 0.4.4 - '@firebase/util': 1.10.3 - '@firebase/webchannel-wrapper': 1.0.3 - '@grpc/grpc-js': 1.9.15 - '@grpc/proto-loader': 0.7.13 - tslib: 2.8.1 - - '@firebase/functions-compat@0.3.19(@firebase/app-compat@0.2.49)(@firebase/app@0.11.0)': - dependencies: - '@firebase/app-compat': 0.2.49 - '@firebase/component': 0.6.12 - '@firebase/functions': 0.12.2(@firebase/app@0.11.0) - '@firebase/functions-types': 0.6.3 - '@firebase/util': 1.10.3 - tslib: 2.8.1 - transitivePeerDependencies: - - '@firebase/app' - - '@firebase/functions-types@0.6.3': {} - - '@firebase/functions@0.12.2(@firebase/app@0.11.0)': - dependencies: - '@firebase/app': 0.11.0 - '@firebase/app-check-interop-types': 0.3.3 - '@firebase/auth-interop-types': 0.2.4 - '@firebase/component': 0.6.12 - '@firebase/messaging-interop-types': 0.2.3 - '@firebase/util': 1.10.3 - tslib: 2.8.1 - - '@firebase/installations-compat@0.2.12(@firebase/app-compat@0.2.49)(@firebase/app-types@0.9.3)(@firebase/app@0.11.0)': - dependencies: - '@firebase/app-compat': 0.2.49 - '@firebase/component': 0.6.12 - '@firebase/installations': 0.6.12(@firebase/app@0.11.0) - '@firebase/installations-types': 0.5.3(@firebase/app-types@0.9.3) - '@firebase/util': 1.10.3 - tslib: 2.8.1 - transitivePeerDependencies: - - '@firebase/app' - - '@firebase/app-types' - - '@firebase/installations-types@0.5.3(@firebase/app-types@0.9.3)': - dependencies: - '@firebase/app-types': 0.9.3 - - '@firebase/installations@0.6.12(@firebase/app@0.11.0)': - dependencies: - '@firebase/app': 0.11.0 - '@firebase/component': 0.6.12 - '@firebase/util': 1.10.3 - idb: 7.1.1 - tslib: 2.8.1 - - '@firebase/logger@0.4.4': - dependencies: - tslib: 2.8.1 - - '@firebase/messaging-compat@0.2.16(@firebase/app-compat@0.2.49)(@firebase/app@0.11.0)': - dependencies: - '@firebase/app-compat': 0.2.49 - '@firebase/component': 0.6.12 - '@firebase/messaging': 0.12.16(@firebase/app@0.11.0) - '@firebase/util': 1.10.3 - tslib: 2.8.1 - transitivePeerDependencies: - - '@firebase/app' - - '@firebase/messaging-interop-types@0.2.3': {} - - '@firebase/messaging@0.12.16(@firebase/app@0.11.0)': - dependencies: - '@firebase/app': 0.11.0 - '@firebase/component': 0.6.12 - '@firebase/installations': 0.6.12(@firebase/app@0.11.0) - '@firebase/messaging-interop-types': 0.2.3 - '@firebase/util': 1.10.3 - idb: 7.1.1 - tslib: 2.8.1 - - '@firebase/performance-compat@0.2.13(@firebase/app-compat@0.2.49)(@firebase/app@0.11.0)': - dependencies: - '@firebase/app-compat': 0.2.49 - '@firebase/component': 0.6.12 - '@firebase/logger': 0.4.4 - '@firebase/performance': 0.7.0(@firebase/app@0.11.0) - '@firebase/performance-types': 0.2.3 - '@firebase/util': 1.10.3 - tslib: 2.8.1 - transitivePeerDependencies: - - '@firebase/app' - - '@firebase/performance-types@0.2.3': {} - - '@firebase/performance@0.7.0(@firebase/app@0.11.0)': - dependencies: - '@firebase/app': 0.11.0 - '@firebase/component': 0.6.12 - '@firebase/installations': 0.6.12(@firebase/app@0.11.0) - '@firebase/logger': 0.4.4 - '@firebase/util': 1.10.3 - tslib: 2.8.1 - web-vitals: 4.2.4 - - '@firebase/remote-config-compat@0.2.12(@firebase/app-compat@0.2.49)(@firebase/app@0.11.0)': - dependencies: - '@firebase/app-compat': 0.2.49 - '@firebase/component': 0.6.12 - '@firebase/logger': 0.4.4 - '@firebase/remote-config': 0.5.0(@firebase/app@0.11.0) - '@firebase/remote-config-types': 0.4.0 - '@firebase/util': 1.10.3 - tslib: 2.8.1 - transitivePeerDependencies: - - '@firebase/app' - - '@firebase/remote-config-types@0.4.0': {} - - '@firebase/remote-config@0.5.0(@firebase/app@0.11.0)': - dependencies: - '@firebase/app': 0.11.0 - '@firebase/component': 0.6.12 - '@firebase/installations': 0.6.12(@firebase/app@0.11.0) - '@firebase/logger': 0.4.4 - '@firebase/util': 1.10.3 - tslib: 2.8.1 - - '@firebase/storage-compat@0.3.16(@firebase/app-compat@0.2.49)(@firebase/app-types@0.9.3)(@firebase/app@0.11.0)': - dependencies: - '@firebase/app-compat': 0.2.49 - '@firebase/component': 0.6.12 - '@firebase/storage': 0.13.6(@firebase/app@0.11.0) - '@firebase/storage-types': 0.8.3(@firebase/app-types@0.9.3)(@firebase/util@1.10.3) - '@firebase/util': 1.10.3 - tslib: 2.8.1 - transitivePeerDependencies: - - '@firebase/app' - - '@firebase/app-types' - - '@firebase/storage-types@0.8.3(@firebase/app-types@0.9.3)(@firebase/util@1.10.3)': - dependencies: - '@firebase/app-types': 0.9.3 - '@firebase/util': 1.10.3 - - '@firebase/storage@0.13.6(@firebase/app@0.11.0)': - dependencies: - '@firebase/app': 0.11.0 - '@firebase/component': 0.6.12 - '@firebase/util': 1.10.3 - tslib: 2.8.1 - - '@firebase/util@1.10.3': - dependencies: - tslib: 2.8.1 - - '@firebase/vertexai@1.0.4(@firebase/app-types@0.9.3)(@firebase/app@0.11.0)': - dependencies: - '@firebase/app': 0.11.0 - '@firebase/app-check-interop-types': 0.3.3 - '@firebase/app-types': 0.9.3 - '@firebase/component': 0.6.12 - '@firebase/logger': 0.4.4 - '@firebase/util': 1.10.3 - tslib: 2.8.1 - - '@firebase/webchannel-wrapper@1.0.3': {} - - '@grpc/grpc-js@1.9.15': - dependencies: - '@grpc/proto-loader': 0.7.13 - '@types/node': 22.13.1 - - '@grpc/proto-loader@0.7.13': - dependencies: - lodash.camelcase: 4.3.0 - long: 5.3.0 - protobufjs: 7.4.0 - yargs: 17.7.2 - '@jridgewell/gen-mapping@0.3.8': dependencies: '@jridgewell/set-array': 1.2.1 @@ -1418,29 +755,6 @@ snapshots: dependencies: '@primeuix/styled': 0.3.2 - '@protobufjs/aspromise@1.1.2': {} - - '@protobufjs/base64@1.1.2': {} - - '@protobufjs/codegen@2.0.4': {} - - '@protobufjs/eventemitter@1.1.0': {} - - '@protobufjs/fetch@1.1.0': - dependencies: - '@protobufjs/aspromise': 1.1.2 - '@protobufjs/inquire': 1.1.0 - - '@protobufjs/float@1.0.2': {} - - '@protobufjs/inquire@1.1.0': {} - - '@protobufjs/path@1.1.2': {} - - '@protobufjs/pool@1.1.0': {} - - '@protobufjs/utf8@1.1.0': {} - '@rsbuild/core@1.2.5': dependencies: '@rspack/core': 1.2.2(@swc/helpers@0.5.15) @@ -1700,8 +1014,6 @@ snapshots: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 - ansi-regex@5.0.1: {} - ansi-styles@4.3.0: dependencies: color-convert: 2.0.1 @@ -1734,12 +1046,6 @@ snapshots: chrome-trace-event@1.0.4: {} - cliui@8.0.1: - dependencies: - string-width: 4.2.3 - strip-ansi: 6.0.1 - wrap-ansi: 7.0.0 - color-convert@2.0.1: dependencies: color-name: 1.1.4 @@ -1760,8 +1066,6 @@ snapshots: electron-to-chromium@1.5.97: {} - emoji-regex@8.0.0: {} - enhanced-resolve@5.18.1: dependencies: graceful-fs: 4.2.11 @@ -1796,43 +1100,6 @@ snapshots: fast-uri@3.0.6: {} - faye-websocket@0.11.4: - dependencies: - websocket-driver: 0.7.4 - - firebase@11.3.0: - dependencies: - '@firebase/analytics': 0.10.11(@firebase/app@0.11.0) - '@firebase/analytics-compat': 0.2.17(@firebase/app-compat@0.2.49)(@firebase/app@0.11.0) - '@firebase/app': 0.11.0 - '@firebase/app-check': 0.8.11(@firebase/app@0.11.0) - '@firebase/app-check-compat': 0.3.18(@firebase/app-compat@0.2.49)(@firebase/app@0.11.0) - '@firebase/app-compat': 0.2.49 - '@firebase/app-types': 0.9.3 - '@firebase/auth': 1.9.0(@firebase/app@0.11.0) - '@firebase/auth-compat': 0.5.18(@firebase/app-compat@0.2.49)(@firebase/app-types@0.9.3)(@firebase/app@0.11.0) - '@firebase/data-connect': 0.3.0(@firebase/app@0.11.0) - '@firebase/database': 1.0.12 - '@firebase/database-compat': 2.0.3 - '@firebase/firestore': 4.7.7(@firebase/app@0.11.0) - '@firebase/firestore-compat': 0.3.42(@firebase/app-compat@0.2.49)(@firebase/app-types@0.9.3)(@firebase/app@0.11.0) - '@firebase/functions': 0.12.2(@firebase/app@0.11.0) - '@firebase/functions-compat': 0.3.19(@firebase/app-compat@0.2.49)(@firebase/app@0.11.0) - '@firebase/installations': 0.6.12(@firebase/app@0.11.0) - '@firebase/installations-compat': 0.2.12(@firebase/app-compat@0.2.49)(@firebase/app-types@0.9.3)(@firebase/app@0.11.0) - '@firebase/messaging': 0.12.16(@firebase/app@0.11.0) - '@firebase/messaging-compat': 0.2.16(@firebase/app-compat@0.2.49)(@firebase/app@0.11.0) - '@firebase/performance': 0.7.0(@firebase/app@0.11.0) - '@firebase/performance-compat': 0.2.13(@firebase/app-compat@0.2.49)(@firebase/app@0.11.0) - '@firebase/remote-config': 0.5.0(@firebase/app@0.11.0) - '@firebase/remote-config-compat': 0.2.12(@firebase/app-compat@0.2.49)(@firebase/app@0.11.0) - '@firebase/storage': 0.13.6(@firebase/app@0.11.0) - '@firebase/storage-compat': 0.3.16(@firebase/app-compat@0.2.49)(@firebase/app-types@0.9.3)(@firebase/app@0.11.0) - '@firebase/util': 1.10.3 - '@firebase/vertexai': 1.0.4(@firebase/app-types@0.9.3)(@firebase/app@0.11.0) - transitivePeerDependencies: - - '@react-native-async-storage/async-storage' - follow-redirects@1.15.9: {} form-data@4.0.1: @@ -1841,8 +1108,6 @@ snapshots: combined-stream: 1.0.8 mime-types: 2.1.35 - get-caller-file@2.0.5: {} - glob-to-regexp@0.4.1: {} graceful-fs@4.2.11: {} @@ -1851,12 +1116,6 @@ snapshots: hash-sum@2.0.0: {} - http-parser-js@0.5.9: {} - - idb@7.1.1: {} - - is-fullwidth-code-point@3.0.0: {} - isomorphic-rslog@0.0.6: {} jest-worker@27.5.1: @@ -1873,10 +1132,6 @@ snapshots: loader-runner@4.3.0: {} - lodash.camelcase@4.3.0: {} - - long@5.3.0: {} - magic-string@0.30.17: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 @@ -1926,21 +1181,6 @@ snapshots: transitivePeerDependencies: - vue - protobufjs@7.4.0: - dependencies: - '@protobufjs/aspromise': 1.1.2 - '@protobufjs/base64': 1.1.2 - '@protobufjs/codegen': 2.0.4 - '@protobufjs/eventemitter': 1.1.0 - '@protobufjs/fetch': 1.1.0 - '@protobufjs/float': 1.0.2 - '@protobufjs/inquire': 1.1.0 - '@protobufjs/path': 1.1.2 - '@protobufjs/pool': 1.1.0 - '@protobufjs/utf8': 1.1.0 - '@types/node': 22.13.1 - long: 5.3.0 - proxy-from-env@1.1.0: {} punycode@2.3.1: {} @@ -1949,8 +1189,6 @@ snapshots: dependencies: safe-buffer: 5.2.1 - require-directory@2.1.1: {} - require-from-string@2.0.2: {} safe-buffer@5.2.1: {} @@ -1981,16 +1219,6 @@ snapshots: source-map@0.6.1: {} - string-width@4.2.3: - dependencies: - emoji-regex: 8.0.0 - is-fullwidth-code-point: 3.0.0 - strip-ansi: 6.0.1 - - strip-ansi@6.0.1: - dependencies: - ansi-regex: 5.0.1 - supports-color@7.2.0: dependencies: has-flag: 4.0.0 @@ -2066,8 +1294,6 @@ snapshots: glob-to-regexp: 0.4.1 graceful-fs: 4.2.11 - web-vitals@4.2.4: {} - webpack-sources@3.2.3: {} webpack@5.97.1: @@ -2099,31 +1325,3 @@ snapshots: - '@swc/core' - esbuild - uglify-js - - websocket-driver@0.7.4: - dependencies: - http-parser-js: 0.5.9 - safe-buffer: 5.2.1 - websocket-extensions: 0.1.4 - - websocket-extensions@0.1.4: {} - - wrap-ansi@7.0.0: - dependencies: - ansi-styles: 4.3.0 - string-width: 4.2.3 - strip-ansi: 6.0.1 - - y18n@5.0.8: {} - - yargs-parser@21.1.1: {} - - yargs@17.7.2: - dependencies: - cliui: 8.0.1 - escalade: 3.2.0 - get-caller-file: 2.0.5 - require-directory: 2.1.1 - string-width: 4.2.3 - y18n: 5.0.8 - yargs-parser: 21.1.1 diff --git a/rsbuild.config.ts b/rsbuild.config.ts index 0e63ab0..55d1952 100644 --- a/rsbuild.config.ts +++ b/rsbuild.config.ts @@ -4,6 +4,7 @@ import { pluginVue } from '@rsbuild/plugin-vue'; export default defineConfig({ plugins: [pluginVue()], html: { + title: 'Firebase Auth Vue', favicon: 'https://www.gstatic.com/devrel-devsite/prod/v9d8458b4d932582248eb0dcdffdc6a8fe4b6994060b14993d6b364721b7e870f/firebase/images/favicon.png', }, source: { diff --git a/src/App.vue b/src/App.vue index 7f5aed2..96ff863 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,13 +1,82 @@ + + diff --git a/src/firebase/index.ts b/src/firebase/index.ts deleted file mode 100644 index 3fbfec6..0000000 --- a/src/firebase/index.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { initializeApp } from "firebase/app"; - -const firebaseConfig = { - apiKey: process.env.FIREBASE_API_KEY, - authDomain: process.env.FIREBASE_AUTH_DOMAIN, - projectId: process.env.FIREBASE_PROJECT_ID, - storageBucket: process.env.FIREBASE_STORAGE_BUCKET, - messagingSenderId: process.env.FIREBASE_MESSAGING_SENDER_ID, - appId: process.env.FIREBASE_APP_ID, -}; - -export const firebaseApp = initializeApp(firebaseConfig); diff --git a/src/index.ts b/src/index.ts index d3d8a50..7906b62 100644 --- a/src/index.ts +++ b/src/index.ts @@ -2,7 +2,6 @@ import { createApp } from 'vue'; import App from './App.vue'; import router from './router'; import pinia from './store'; -import './firebase'; import Aura from '@primevue/themes/lara'; import PrimeVue from 'primevue/config'; import 'primeicons/primeicons.css' diff --git a/src/pages/AboutPage.vue b/src/pages/AboutPage.vue new file mode 100644 index 0000000..552dd3a --- /dev/null +++ b/src/pages/AboutPage.vue @@ -0,0 +1,5 @@ + diff --git a/src/router/index.ts b/src/router/index.ts index cd29631..f8d72ea 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -1,5 +1,5 @@ import { createRouter, createWebHistory } from 'vue-router' - +import {useAuthStore} from '../store/auth'; const router = createRouter({ history: createWebHistory(), @@ -7,19 +7,50 @@ const router = createRouter({ { path: '/sign-up', name: 'SignUp', - component: () => import('../pages/SignUp.vue') + component: () => import('../pages/SignUp.vue'), + meta: { + auth: false + }, }, { path: '/sign-in', name: 'SignIn', - component: () => import('../pages/SignIn.vue') + component: () => import('../pages/SignIn.vue'), + meta: { + auth: false + } }, { path: '/cars', + alias: '/', name: 'Cars', - component: () => import('../pages/CarsPage.vue') + component: () => import('../pages/CarsPage.vue'), + meta: { + auth: true + } + }, + { + path: '/about', + name: 'About', + component: () => import('../pages/AboutPage.vue'), } ] }) +router.beforeEach((to, from, next) => { + const store = useAuthStore(); + const needAuth = to.meta.auth; + if (needAuth && !store.userInfo.token) { + next('/sign-in'); + return + } + + if (needAuth === false && store.userInfo.token) { + next('/cars'); + return + } + + next(); +}); + export default router; diff --git a/src/store/auth.ts b/src/store/auth.ts index 59cc59b..a324beb 100644 --- a/src/store/auth.ts +++ b/src/store/auth.ts @@ -44,13 +44,20 @@ export const useAuthStore = defineStore('auth', () => { returnSecureToken: true }) - userInfo.value = { + const userData = { email: data.email, expiresIn: data.expiresIn, refreshToken: data.refreshToken, userId: data.localId, token: data.idToken, - } + }; + userInfo.value = userData; + + localStorage.setItem('userToken', JSON.stringify({ + expiresIn: userData.expiresIn, + refreshToken: userData.refreshToken, + token: userData.token, + })) } catch (e) { if (e instanceof AxiosError){ switch (e?.response?.data?.error?.message) { @@ -92,10 +99,33 @@ export const useAuthStore = defineStore('auth', () => { } }; + const logout = () => { + userInfo.value = { + token: '', + email: '', + userId: '', + refreshToken: '', + expiresIn: '', + } + localStorage.removeItem('userToken'); + } + + const updateTokens = (accessToken: string, refreshToken: string) => { + userInfo.value.token = accessToken; + userInfo.value.refreshToken = refreshToken; + + localStorage.setItem('userToken', JSON.stringify({ + token: accessToken, + refreshToken, + })) + } + return { auth, userInfo, error, loading, + logout, + updateTokens, } }) diff --git a/src/utils/api.ts b/src/utils/api.ts index 531ca7b..5c92db8 100644 --- a/src/utils/api.ts +++ b/src/utils/api.ts @@ -7,6 +7,10 @@ const api = axios.create({ }); api.interceptors.request.use((config) => { + if (config.url.includes('signInWithPassword') || config.url.includes('signUp')) { + return config; + } + const authStore = useAuthStore(); let params = new URLSearchParams(); params.append('auth', authStore.userInfo.token); @@ -15,11 +19,30 @@ api.interceptors.request.use((config) => { return config }) -api.interceptors.response.use(null, (response) => { - if (response.status === 401) { - router.push('/sign-in') +api.interceptors.response.use(null, async (error) => { + const authStore = useAuthStore(); + const originalRequest = error.config + + if (error.status === 401 && !originalRequest._retry) { + originalRequest._retry = true; + + try { + const { data: newTokens } = await axios.post( + `https://identitytoolkit.googleapis.com/v1/token?key=${process.env.FIREBASE_API_KEY}`, { + grant_type: 'refresh_token', + refresh_token: JSON.parse(localStorage.getItem('userToken')).refreshToken + } + ) + authStore.updateTokens(newTokens.access_token, newTokens.refresh_token); + originalRequest.params.set('auth', newTokens.access_token) + return axios(originalRequest); + } catch (e) { + authStore.logout(); + await router.push('/sign-in') + } } - return response; + + return error; }) export default api;