From 684a1d76bfe60dda8f47053c9eedfc21533f4e68 Mon Sep 17 00:00:00 2001 From: Marco Crapts Date: Sat, 20 May 2023 04:05:36 +0200 Subject: [PATCH] add auth modal --- .env.example | 3 +- components.d.ts | 1 + package-lock.json | 354 +++++++++++++++++++++++++------------- package.json | 3 +- src/components/Auth.vue | 17 ++ src/components/Modal.vue | 8 +- src/components/TopBar.vue | 23 ++- src/main.ts | 1 + src/plugins/firebase.ts | 22 +++ src/utils/firebase.ts | 15 -- 10 files changed, 303 insertions(+), 144 deletions(-) create mode 100644 src/components/Auth.vue create mode 100644 src/plugins/firebase.ts delete mode 100644 src/utils/firebase.ts diff --git a/.env.example b/.env.example index 260b597..8321832 100644 --- a/.env.example +++ b/.env.example @@ -3,7 +3,6 @@ VITE_FIREBASE_AUTH_DOMAIN= VITE_FIREBASE_DATABASE_URL= VITE_FIREBASE_PROJECT_ID= VITE_FIREBASE_STORAGE_BUCKET= -VITE_FIREBASE_MESSAGE_SENDER_ID= +VITE_FIREBASE_MESSAGING_SENDER_ID= VITE_FIREBASE_APP_ID= VITE_FIREBASE_MEASUREMENT_ID= - diff --git a/components.d.ts b/components.d.ts index 0d0e58d..4c029be 100644 --- a/components.d.ts +++ b/components.d.ts @@ -9,6 +9,7 @@ export {} declare module '@vue/runtime-core' { export interface GlobalComponents { + Auth: typeof import('./src/components/Auth.vue')['default'] Autocomplete: typeof import('./src/components/Note/Autocomplete.vue')['default'] Hamburger: typeof import('./src/components/TopBar/Hamburger.vue')['default'] ListView: typeof import('./src/components/ViewModes/ListView.vue')['default'] diff --git a/package-lock.json b/package-lock.json index 125596c..3a2c8d6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -28,7 +28,8 @@ "daisyui": "^2.51.6", "date-fns": "^2.29.3", "dompurify": "^3.0.2", - "firebase": "^9.20.0", + "firebase": "^9.22.0", + "firebaseui": "^6.0.2", "hamburgers": "^1.2.1", "lodash-es": "^4.17.21", "marked": "^4.3.0", @@ -889,9 +890,9 @@ } }, "node_modules/@firebase/analytics": { - "version": "0.9.5", - "resolved": "https://registry.npmjs.org/@firebase/analytics/-/analytics-0.9.5.tgz", - "integrity": "sha512-hJTVs2jLxPXE7hs7D/jaEsgGivrm7tSEl65kb5NkDBWV7QQBUnRfVML/xra9nTFLLJhAdbExZPHg6HfIuMSYEQ==", + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@firebase/analytics/-/analytics-0.10.0.tgz", + "integrity": "sha512-Locv8gAqx0e+GX/0SI3dzmBY5e9kjVDtD+3zCFLJ0tH2hJwuCAiL+5WkHuxKj92rqQj/rvkBUCfA1ewlX2hehg==", "dependencies": { "@firebase/component": "0.6.4", "@firebase/installations": "0.6.4", @@ -904,11 +905,11 @@ } }, "node_modules/@firebase/analytics-compat": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/@firebase/analytics-compat/-/analytics-compat-0.2.5.tgz", - "integrity": "sha512-ohKUrwSoXvyUJdSLuDr82mOqrzgWKyHMUt9/TfYKkyDXnFjNlBcFBpkpl/UHMAOJe0M60YYXiVCZoGQYldCslA==", + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/@firebase/analytics-compat/-/analytics-compat-0.2.6.tgz", + "integrity": "sha512-4MqpVLFkGK7NJf/5wPEEP7ePBJatwYpyjgJ+wQHQGHfzaCDgntOnl9rL2vbVGGKCnRqWtZDIWhctB86UWXaX2Q==", "dependencies": { - "@firebase/analytics": "0.9.5", + "@firebase/analytics": "0.10.0", "@firebase/analytics-types": "0.8.0", "@firebase/component": "0.6.4", "@firebase/util": "1.9.3", @@ -924,21 +925,21 @@ "integrity": "sha512-iRP+QKI2+oz3UAh4nPEq14CsEjrjD6a5+fuypjScisAh9kXKFvdJOZJDwk7kikLvWVLGEs9+kIUS4LPQV7VZVw==" }, "node_modules/@firebase/app": { - "version": "0.9.8", - "resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.9.8.tgz", - "integrity": "sha512-mYoH/aT4Dx6szBBnO7qcEr5ieJRnWU9TENgPiZI5DtkrIDTpW9540KMn996176PkR4GbLKto6rtvUX5P7ii+KQ==", + "version": "0.9.10", + "resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.9.10.tgz", + "integrity": "sha512-2aLHuPLrjgxds95e2JpuAb29pBGArihHwjdJBUKtJnSxxEdwxAsGuXzSrOrmzYXlAwxUTZkOD6Cbl/dfTTwhKA==", "dependencies": { "@firebase/component": "0.6.4", "@firebase/logger": "0.4.0", "@firebase/util": "1.9.3", - "idb": "7.0.1", + "idb": "7.1.1", "tslib": "^2.1.0" } }, "node_modules/@firebase/app-check": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/@firebase/app-check/-/app-check-0.6.5.tgz", - "integrity": "sha512-TCHJ+kghqDiNWCXAsPnHaE98CxBfEW9D16CIC3gYVaXrh3w42UNWqbR+S+ggSc7xN+vP9QRhCOY5pvr7rBEEUg==", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@firebase/app-check/-/app-check-0.7.0.tgz", + "integrity": "sha512-y0raLJpEtiL+wonfInFMaSfBV/EDvr356ZHMWbpr5F7fR0/I3cC0h7U6SKpKhrbSHJ0fOYIe0xbih20KTlpcnA==", "dependencies": { "@firebase/component": "0.6.4", "@firebase/logger": "0.4.0", @@ -950,11 +951,11 @@ } }, "node_modules/@firebase/app-check-compat": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@firebase/app-check-compat/-/app-check-compat-0.3.5.tgz", - "integrity": "sha512-ji+LxuM2AyFCaJCBfJllnQ1OIedMq+iMwzABlfP9yVrhcR6ZSdCLLhDGMyoENyoPiZo6av+5b3acYUTYrffFeQ==", + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@firebase/app-check-compat/-/app-check-compat-0.3.6.tgz", + "integrity": "sha512-azHAeHi9igoaIo04E6Yfuc7aIbWoWuBXuqjyYyWbeCc8Zz/NfJvIAgmXugN4LdxsHJ7XGlZTvwJ6YaYROdSa7A==", "dependencies": { - "@firebase/app-check": "0.6.5", + "@firebase/app-check": "0.7.0", "@firebase/app-check-types": "0.5.0", "@firebase/component": "0.6.4", "@firebase/logger": "0.4.0", @@ -976,11 +977,11 @@ "integrity": "sha512-uwSUj32Mlubybw7tedRzR24RP8M8JUVR3NPiMk3/Z4bCmgEKTlQBwMXrehDAZ2wF+TsBq0SN1c6ema71U/JPyQ==" }, "node_modules/@firebase/app-compat": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/@firebase/app-compat/-/app-compat-0.2.8.tgz", - "integrity": "sha512-aG9juNXD+m8gWs6VnrLUWWV1LtJu8W0+uyX5u+Sz6YjDO69JN2jEaxCsb7Wr1egXKKJN1YrhoS+0kQqWakp61Q==", + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/@firebase/app-compat/-/app-compat-0.2.10.tgz", + "integrity": "sha512-kulrAW9JKkWeLeXKYjipCh60MmZcRC626NYpNWKxnjZ3YsVk6vgMuM+BHvhHQVp0fgfOq3hMNp5tyhlAB1Q1EQ==", "dependencies": { - "@firebase/app": "0.9.8", + "@firebase/app": "0.9.10", "@firebase/component": "0.6.4", "@firebase/logger": "0.4.0", "@firebase/util": "1.9.3", @@ -992,10 +993,15 @@ "resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.9.0.tgz", "integrity": "sha512-AeweANOIo0Mb8GiYm3xhTEBVCmPwTYAu9Hcd2qSkLuga/6+j9b1Jskl5bpiSQWy9eJ/j5pavxj6eYogmnuzm+Q==" }, + "node_modules/@firebase/app/node_modules/idb": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz", + "integrity": "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==" + }, "node_modules/@firebase/auth": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-0.23.0.tgz", - "integrity": "sha512-OzDs1osO8R/9BIgKLoJCRoDdR4sM/MUVu2mNhMya2qJVH00I1fYqrmGeV3jUH5vcy0MYkJvxa2J7oXetaoKcCg==", + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-0.23.2.tgz", + "integrity": "sha512-dM9iJ0R6tI1JczuGSxXmQbXAgtYie0K4WvKcuyuSTCu9V8eEDiz4tfa1sO3txsfvwg7nOY3AjoCyMYEdqZ8hdg==", "dependencies": { "@firebase/component": "0.6.4", "@firebase/logger": "0.4.0", @@ -1008,11 +1014,11 @@ } }, "node_modules/@firebase/auth-compat": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@firebase/auth-compat/-/auth-compat-0.4.0.tgz", - "integrity": "sha512-MS4S90rOjv9/DkumQkKbQs84YgRVHLFQKI+UI3PRdbPO+50Bl3MNXtTyGlLKSIdMjMISeX8IbyBmCdOOTQZmLw==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@firebase/auth-compat/-/auth-compat-0.4.2.tgz", + "integrity": "sha512-Q30e77DWXFmXEt5dg5JbqEDpjw9y3/PcP9LslDPR7fARmAOTIY9MM6HXzm9KC+dlrKH/+p6l8g9ifJiam9mc4A==", "dependencies": { - "@firebase/auth": "0.23.0", + "@firebase/auth": "0.23.2", "@firebase/auth-types": "0.12.0", "@firebase/component": "0.6.4", "@firebase/util": "1.9.3", @@ -1082,14 +1088,14 @@ } }, "node_modules/@firebase/firestore": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-3.10.1.tgz", - "integrity": "sha512-p+WQMLkuHECVjB6zoyZYF4OjudquW9IlHsBx7eIfyvOZyOtTEmbSmNrJaWsqCZ/9kDo94XYJx/eZQ2Y4WBAV4A==", + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-3.12.0.tgz", + "integrity": "sha512-mZdwIJBOIAdkaykqZqMYQZldSH19gf7u1Y77UVxh4igm1zaG8ZiGE8qYVXQ/vGc+BvvUZ8OpnqLI5Z0JSJtDIg==", "dependencies": { "@firebase/component": "0.6.4", "@firebase/logger": "0.4.0", "@firebase/util": "1.9.3", - "@firebase/webchannel-wrapper": "0.9.0", + "@firebase/webchannel-wrapper": "0.10.0", "@grpc/grpc-js": "~1.7.0", "@grpc/proto-loader": "^0.6.13", "node-fetch": "2.6.7", @@ -1103,12 +1109,12 @@ } }, "node_modules/@firebase/firestore-compat": { - "version": "0.3.7", - "resolved": "https://registry.npmjs.org/@firebase/firestore-compat/-/firestore-compat-0.3.7.tgz", - "integrity": "sha512-pwSEh75e0WIQjU6UdZJcdP0AO1Tj2P7r1aIWcBf7kdqTOwZmplxhJ/rXNL6IaKo2fP+/9osXaLZiBH6WWrSbfQ==", + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@firebase/firestore-compat/-/firestore-compat-0.3.9.tgz", + "integrity": "sha512-u4fGeuaDaMnAPp20PAm6vrhktVGCtfmC3iup5ymMkOUNIqbuQ/+WLL3zUlJi+Ytl4hX0vVNg4UQEh4vfMorc4Q==", "dependencies": { "@firebase/component": "0.6.4", - "@firebase/firestore": "3.10.1", + "@firebase/firestore": "3.12.0", "@firebase/firestore-types": "2.5.1", "@firebase/util": "1.9.3", "tslib": "^2.1.0" @@ -1362,9 +1368,9 @@ } }, "node_modules/@firebase/webchannel-wrapper": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.9.0.tgz", - "integrity": "sha512-BpiZLBWdLFw+qFel9p3Zs1jD6QmH7Ii4aTDu6+vx8ShdidChZUXqDhYJly4ZjSgQh54miXbBgBrk0S+jTIh/Qg==" + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.10.0.tgz", + "integrity": "sha512-2I8y+vJVrPfPFJrnRGpao1Qc2Gu7wmYoo5ed2s5zK/DUGgcyY1Yr/xC0YdnKM4pi7rG3HqwW9ehAKUXoTMLdoA==" }, "node_modules/@fontsource/source-sans-pro": { "version": "4.5.11", @@ -1544,15 +1550,15 @@ } }, "node_modules/@grpc/grpc-js/node_modules/@grpc/proto-loader": { - "version": "0.7.6", - "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.6.tgz", - "integrity": "sha512-QyAXR8Hyh7uMDmveWxDSUcJr9NAWaZ2I6IXgAYvQmfflwouTM+rArE2eEaCtLlRqO81j7pRLCt81IefUei6Zbw==", + "version": "0.7.7", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.7.tgz", + "integrity": "sha512-1TIeXOi8TuSCQprPItwoMymZXxWT0CPxUhkrkeCUH+D8U7QDwQ6b7SUz2MaLuWM2llT+J/TVFLmQI5KtML3BhQ==", "dependencies": { "@types/long": "^4.0.1", "lodash.camelcase": "^4.3.0", "long": "^4.0.0", "protobufjs": "^7.0.0", - "yargs": "^16.2.0" + "yargs": "^17.7.2" }, "bin": { "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" @@ -1561,6 +1567,19 @@ "node": ">=6" } }, + "node_modules/@grpc/grpc-js/node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/@grpc/grpc-js/node_modules/protobufjs": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.3.tgz", @@ -1589,6 +1608,31 @@ "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" }, + "node_modules/@grpc/grpc-js/node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@grpc/grpc-js/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "engines": { + "node": ">=12" + } + }, "node_modules/@grpc/proto-loader": { "version": "0.6.13", "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.6.13.tgz", @@ -4506,6 +4550,11 @@ "npm": "1.2.8000 || >= 1.4.16" } }, + "node_modules/dialog-polyfill": { + "version": "0.4.10", + "resolved": "https://registry.npmjs.org/dialog-polyfill/-/dialog-polyfill-0.4.10.tgz", + "integrity": "sha512-j5yGMkP8T00UFgyO+78OxiN5vC5dzRQF3BEio+LhNvDbyfxWBsi3sfPArDm54VloaJwy2hm3erEiDWqHRC8rzw==" + }, "node_modules/didyoumean": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", @@ -5651,23 +5700,23 @@ } }, "node_modules/firebase": { - "version": "9.20.0", - "resolved": "https://registry.npmjs.org/firebase/-/firebase-9.20.0.tgz", - "integrity": "sha512-qkSfdotdgZuMNCi4ddMLT+Pr18m021SkzImgplpihZOSx0utWdO39TgHivMfurlgp0fp4eQ2U4YEDPfP+Iq4bw==", + "version": "9.22.0", + "resolved": "https://registry.npmjs.org/firebase/-/firebase-9.22.0.tgz", + "integrity": "sha512-Ay1u8IOfhPh58RFAHF7A9cKHACCgV6uI2bhkzKdkjnV0n2AAxn4tDtdXvJ3BEbfhF4WWBC2dFcEXH8cd14ptaw==", "dependencies": { - "@firebase/analytics": "0.9.5", - "@firebase/analytics-compat": "0.2.5", - "@firebase/app": "0.9.8", - "@firebase/app-check": "0.6.5", - "@firebase/app-check-compat": "0.3.5", - "@firebase/app-compat": "0.2.8", + "@firebase/analytics": "0.10.0", + "@firebase/analytics-compat": "0.2.6", + "@firebase/app": "0.9.10", + "@firebase/app-check": "0.7.0", + "@firebase/app-check-compat": "0.3.6", + "@firebase/app-compat": "0.2.10", "@firebase/app-types": "0.9.0", - "@firebase/auth": "0.23.0", - "@firebase/auth-compat": "0.4.0", + "@firebase/auth": "0.23.2", + "@firebase/auth-compat": "0.4.2", "@firebase/database": "0.14.4", "@firebase/database-compat": "0.3.4", - "@firebase/firestore": "3.10.1", - "@firebase/firestore-compat": "0.3.7", + "@firebase/firestore": "3.12.0", + "@firebase/firestore-compat": "0.3.9", "@firebase/functions": "0.9.4", "@firebase/functions-compat": "0.3.4", "@firebase/installations": "0.6.4", @@ -5810,6 +5859,18 @@ "semver": "bin/semver" } }, + "node_modules/firebaseui": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/firebaseui/-/firebaseui-6.0.2.tgz", + "integrity": "sha512-Jwwn2I657loKrvedeCrwED9UibLFl8Cm0uH2ntDBSCpruWzG4HXlIWb35WsDdXMILRPQjJ1PwVwuRsrnsxcaXA==", + "dependencies": { + "dialog-polyfill": "^0.4.7", + "material-design-lite": "^1.2.0" + }, + "peerDependencies": { + "firebase": "^9.1.3" + } + }, "node_modules/flat-cache": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", @@ -8254,6 +8315,14 @@ "typescript": ">=4.7.0" } }, + "node_modules/material-design-lite": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/material-design-lite/-/material-design-lite-1.3.0.tgz", + "integrity": "sha512-ao76b0bqSTKcEMt7Pui+J/S3eVF0b3GWfuKUwfe2lP5DKlLZOwBq37e0/bXEzxrw7/SuHAuYAdoCwY6mAYhrsg==", + "engines": { + "node": ">=0.12.0" + } + }, "node_modules/mdurl": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", @@ -12856,9 +12925,9 @@ "dev": true }, "@firebase/analytics": { - "version": "0.9.5", - "resolved": "https://registry.npmjs.org/@firebase/analytics/-/analytics-0.9.5.tgz", - "integrity": "sha512-hJTVs2jLxPXE7hs7D/jaEsgGivrm7tSEl65kb5NkDBWV7QQBUnRfVML/xra9nTFLLJhAdbExZPHg6HfIuMSYEQ==", + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@firebase/analytics/-/analytics-0.10.0.tgz", + "integrity": "sha512-Locv8gAqx0e+GX/0SI3dzmBY5e9kjVDtD+3zCFLJ0tH2hJwuCAiL+5WkHuxKj92rqQj/rvkBUCfA1ewlX2hehg==", "requires": { "@firebase/component": "0.6.4", "@firebase/installations": "0.6.4", @@ -12868,11 +12937,11 @@ } }, "@firebase/analytics-compat": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/@firebase/analytics-compat/-/analytics-compat-0.2.5.tgz", - "integrity": "sha512-ohKUrwSoXvyUJdSLuDr82mOqrzgWKyHMUt9/TfYKkyDXnFjNlBcFBpkpl/UHMAOJe0M60YYXiVCZoGQYldCslA==", + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/@firebase/analytics-compat/-/analytics-compat-0.2.6.tgz", + "integrity": "sha512-4MqpVLFkGK7NJf/5wPEEP7ePBJatwYpyjgJ+wQHQGHfzaCDgntOnl9rL2vbVGGKCnRqWtZDIWhctB86UWXaX2Q==", "requires": { - "@firebase/analytics": "0.9.5", + "@firebase/analytics": "0.10.0", "@firebase/analytics-types": "0.8.0", "@firebase/component": "0.6.4", "@firebase/util": "1.9.3", @@ -12885,21 +12954,28 @@ "integrity": "sha512-iRP+QKI2+oz3UAh4nPEq14CsEjrjD6a5+fuypjScisAh9kXKFvdJOZJDwk7kikLvWVLGEs9+kIUS4LPQV7VZVw==" }, "@firebase/app": { - "version": "0.9.8", - "resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.9.8.tgz", - "integrity": "sha512-mYoH/aT4Dx6szBBnO7qcEr5ieJRnWU9TENgPiZI5DtkrIDTpW9540KMn996176PkR4GbLKto6rtvUX5P7ii+KQ==", + "version": "0.9.10", + "resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.9.10.tgz", + "integrity": "sha512-2aLHuPLrjgxds95e2JpuAb29pBGArihHwjdJBUKtJnSxxEdwxAsGuXzSrOrmzYXlAwxUTZkOD6Cbl/dfTTwhKA==", "requires": { "@firebase/component": "0.6.4", "@firebase/logger": "0.4.0", "@firebase/util": "1.9.3", - "idb": "7.0.1", + "idb": "7.1.1", "tslib": "^2.1.0" + }, + "dependencies": { + "idb": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/idb/-/idb-7.1.1.tgz", + "integrity": "sha512-gchesWBzyvGHRO9W8tzUWFDycow5gwjvFKfyV9FF32Y7F50yZMp7mP+T2mJIWFx49zicqyC4uefHM17o6xKIVQ==" + } } }, "@firebase/app-check": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/@firebase/app-check/-/app-check-0.6.5.tgz", - "integrity": "sha512-TCHJ+kghqDiNWCXAsPnHaE98CxBfEW9D16CIC3gYVaXrh3w42UNWqbR+S+ggSc7xN+vP9QRhCOY5pvr7rBEEUg==", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@firebase/app-check/-/app-check-0.7.0.tgz", + "integrity": "sha512-y0raLJpEtiL+wonfInFMaSfBV/EDvr356ZHMWbpr5F7fR0/I3cC0h7U6SKpKhrbSHJ0fOYIe0xbih20KTlpcnA==", "requires": { "@firebase/component": "0.6.4", "@firebase/logger": "0.4.0", @@ -12908,11 +12984,11 @@ } }, "@firebase/app-check-compat": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@firebase/app-check-compat/-/app-check-compat-0.3.5.tgz", - "integrity": "sha512-ji+LxuM2AyFCaJCBfJllnQ1OIedMq+iMwzABlfP9yVrhcR6ZSdCLLhDGMyoENyoPiZo6av+5b3acYUTYrffFeQ==", + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@firebase/app-check-compat/-/app-check-compat-0.3.6.tgz", + "integrity": "sha512-azHAeHi9igoaIo04E6Yfuc7aIbWoWuBXuqjyYyWbeCc8Zz/NfJvIAgmXugN4LdxsHJ7XGlZTvwJ6YaYROdSa7A==", "requires": { - "@firebase/app-check": "0.6.5", + "@firebase/app-check": "0.7.0", "@firebase/app-check-types": "0.5.0", "@firebase/component": "0.6.4", "@firebase/logger": "0.4.0", @@ -12931,11 +13007,11 @@ "integrity": "sha512-uwSUj32Mlubybw7tedRzR24RP8M8JUVR3NPiMk3/Z4bCmgEKTlQBwMXrehDAZ2wF+TsBq0SN1c6ema71U/JPyQ==" }, "@firebase/app-compat": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/@firebase/app-compat/-/app-compat-0.2.8.tgz", - "integrity": "sha512-aG9juNXD+m8gWs6VnrLUWWV1LtJu8W0+uyX5u+Sz6YjDO69JN2jEaxCsb7Wr1egXKKJN1YrhoS+0kQqWakp61Q==", + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/@firebase/app-compat/-/app-compat-0.2.10.tgz", + "integrity": "sha512-kulrAW9JKkWeLeXKYjipCh60MmZcRC626NYpNWKxnjZ3YsVk6vgMuM+BHvhHQVp0fgfOq3hMNp5tyhlAB1Q1EQ==", "requires": { - "@firebase/app": "0.9.8", + "@firebase/app": "0.9.10", "@firebase/component": "0.6.4", "@firebase/logger": "0.4.0", "@firebase/util": "1.9.3", @@ -12948,9 +13024,9 @@ "integrity": "sha512-AeweANOIo0Mb8GiYm3xhTEBVCmPwTYAu9Hcd2qSkLuga/6+j9b1Jskl5bpiSQWy9eJ/j5pavxj6eYogmnuzm+Q==" }, "@firebase/auth": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-0.23.0.tgz", - "integrity": "sha512-OzDs1osO8R/9BIgKLoJCRoDdR4sM/MUVu2mNhMya2qJVH00I1fYqrmGeV3jUH5vcy0MYkJvxa2J7oXetaoKcCg==", + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-0.23.2.tgz", + "integrity": "sha512-dM9iJ0R6tI1JczuGSxXmQbXAgtYie0K4WvKcuyuSTCu9V8eEDiz4tfa1sO3txsfvwg7nOY3AjoCyMYEdqZ8hdg==", "requires": { "@firebase/component": "0.6.4", "@firebase/logger": "0.4.0", @@ -12960,11 +13036,11 @@ } }, "@firebase/auth-compat": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@firebase/auth-compat/-/auth-compat-0.4.0.tgz", - "integrity": "sha512-MS4S90rOjv9/DkumQkKbQs84YgRVHLFQKI+UI3PRdbPO+50Bl3MNXtTyGlLKSIdMjMISeX8IbyBmCdOOTQZmLw==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@firebase/auth-compat/-/auth-compat-0.4.2.tgz", + "integrity": "sha512-Q30e77DWXFmXEt5dg5JbqEDpjw9y3/PcP9LslDPR7fARmAOTIY9MM6HXzm9KC+dlrKH/+p6l8g9ifJiam9mc4A==", "requires": { - "@firebase/auth": "0.23.0", + "@firebase/auth": "0.23.2", "@firebase/auth-types": "0.12.0", "@firebase/component": "0.6.4", "@firebase/util": "1.9.3", @@ -13028,14 +13104,14 @@ } }, "@firebase/firestore": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-3.10.1.tgz", - "integrity": "sha512-p+WQMLkuHECVjB6zoyZYF4OjudquW9IlHsBx7eIfyvOZyOtTEmbSmNrJaWsqCZ/9kDo94XYJx/eZQ2Y4WBAV4A==", + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-3.12.0.tgz", + "integrity": "sha512-mZdwIJBOIAdkaykqZqMYQZldSH19gf7u1Y77UVxh4igm1zaG8ZiGE8qYVXQ/vGc+BvvUZ8OpnqLI5Z0JSJtDIg==", "requires": { "@firebase/component": "0.6.4", "@firebase/logger": "0.4.0", "@firebase/util": "1.9.3", - "@firebase/webchannel-wrapper": "0.9.0", + "@firebase/webchannel-wrapper": "0.10.0", "@grpc/grpc-js": "~1.7.0", "@grpc/proto-loader": "^0.6.13", "node-fetch": "2.6.7", @@ -13043,12 +13119,12 @@ } }, "@firebase/firestore-compat": { - "version": "0.3.7", - "resolved": "https://registry.npmjs.org/@firebase/firestore-compat/-/firestore-compat-0.3.7.tgz", - "integrity": "sha512-pwSEh75e0WIQjU6UdZJcdP0AO1Tj2P7r1aIWcBf7kdqTOwZmplxhJ/rXNL6IaKo2fP+/9osXaLZiBH6WWrSbfQ==", + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@firebase/firestore-compat/-/firestore-compat-0.3.9.tgz", + "integrity": "sha512-u4fGeuaDaMnAPp20PAm6vrhktVGCtfmC3iup5ymMkOUNIqbuQ/+WLL3zUlJi+Ytl4hX0vVNg4UQEh4vfMorc4Q==", "requires": { "@firebase/component": "0.6.4", - "@firebase/firestore": "3.10.1", + "@firebase/firestore": "3.12.0", "@firebase/firestore-types": "2.5.1", "@firebase/util": "1.9.3", "tslib": "^2.1.0" @@ -13255,9 +13331,9 @@ } }, "@firebase/webchannel-wrapper": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.9.0.tgz", - "integrity": "sha512-BpiZLBWdLFw+qFel9p3Zs1jD6QmH7Ii4aTDu6+vx8ShdidChZUXqDhYJly4ZjSgQh54miXbBgBrk0S+jTIh/Qg==" + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.10.0.tgz", + "integrity": "sha512-2I8y+vJVrPfPFJrnRGpao1Qc2Gu7wmYoo5ed2s5zK/DUGgcyY1Yr/xC0YdnKM4pi7rG3HqwW9ehAKUXoTMLdoA==" }, "@fontsource/source-sans-pro": { "version": "4.5.11", @@ -13399,15 +13475,25 @@ }, "dependencies": { "@grpc/proto-loader": { - "version": "0.7.6", - "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.6.tgz", - "integrity": "sha512-QyAXR8Hyh7uMDmveWxDSUcJr9NAWaZ2I6IXgAYvQmfflwouTM+rArE2eEaCtLlRqO81j7pRLCt81IefUei6Zbw==", + "version": "0.7.7", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.7.tgz", + "integrity": "sha512-1TIeXOi8TuSCQprPItwoMymZXxWT0CPxUhkrkeCUH+D8U7QDwQ6b7SUz2MaLuWM2llT+J/TVFLmQI5KtML3BhQ==", "requires": { "@types/long": "^4.0.1", "lodash.camelcase": "^4.3.0", "long": "^4.0.0", "protobufjs": "^7.0.0", - "yargs": "^16.2.0" + "yargs": "^17.7.2" + } + }, + "cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" } }, "protobufjs": { @@ -13435,6 +13521,25 @@ "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==" } } + }, + "yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "requires": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + } + }, + "yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==" } } }, @@ -15648,6 +15753,11 @@ "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", "dev": true }, + "dialog-polyfill": { + "version": "0.4.10", + "resolved": "https://registry.npmjs.org/dialog-polyfill/-/dialog-polyfill-0.4.10.tgz", + "integrity": "sha512-j5yGMkP8T00UFgyO+78OxiN5vC5dzRQF3BEio+LhNvDbyfxWBsi3sfPArDm54VloaJwy2hm3erEiDWqHRC8rzw==" + }, "didyoumean": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", @@ -16575,23 +16685,23 @@ } }, "firebase": { - "version": "9.20.0", - "resolved": "https://registry.npmjs.org/firebase/-/firebase-9.20.0.tgz", - "integrity": "sha512-qkSfdotdgZuMNCi4ddMLT+Pr18m021SkzImgplpihZOSx0utWdO39TgHivMfurlgp0fp4eQ2U4YEDPfP+Iq4bw==", + "version": "9.22.0", + "resolved": "https://registry.npmjs.org/firebase/-/firebase-9.22.0.tgz", + "integrity": "sha512-Ay1u8IOfhPh58RFAHF7A9cKHACCgV6uI2bhkzKdkjnV0n2AAxn4tDtdXvJ3BEbfhF4WWBC2dFcEXH8cd14ptaw==", "requires": { - "@firebase/analytics": "0.9.5", - "@firebase/analytics-compat": "0.2.5", - "@firebase/app": "0.9.8", - "@firebase/app-check": "0.6.5", - "@firebase/app-check-compat": "0.3.5", - "@firebase/app-compat": "0.2.8", + "@firebase/analytics": "0.10.0", + "@firebase/analytics-compat": "0.2.6", + "@firebase/app": "0.9.10", + "@firebase/app-check": "0.7.0", + "@firebase/app-check-compat": "0.3.6", + "@firebase/app-compat": "0.2.10", "@firebase/app-types": "0.9.0", - "@firebase/auth": "0.23.0", - "@firebase/auth-compat": "0.4.0", + "@firebase/auth": "0.23.2", + "@firebase/auth-compat": "0.4.2", "@firebase/database": "0.14.4", "@firebase/database-compat": "0.3.4", - "@firebase/firestore": "3.10.1", - "@firebase/firestore-compat": "0.3.7", + "@firebase/firestore": "3.12.0", + "@firebase/firestore-compat": "0.3.9", "@firebase/functions": "0.9.4", "@firebase/functions-compat": "0.3.4", "@firebase/installations": "0.6.4", @@ -16721,6 +16831,15 @@ } } }, + "firebaseui": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/firebaseui/-/firebaseui-6.0.2.tgz", + "integrity": "sha512-Jwwn2I657loKrvedeCrwED9UibLFl8Cm0uH2ntDBSCpruWzG4HXlIWb35WsDdXMILRPQjJ1PwVwuRsrnsxcaXA==", + "requires": { + "dialog-polyfill": "^0.4.7", + "material-design-lite": "^1.2.0" + } + }, "flat-cache": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", @@ -18615,6 +18734,11 @@ } } }, + "material-design-lite": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/material-design-lite/-/material-design-lite-1.3.0.tgz", + "integrity": "sha512-ao76b0bqSTKcEMt7Pui+J/S3eVF0b3GWfuKUwfe2lP5DKlLZOwBq37e0/bXEzxrw7/SuHAuYAdoCwY6mAYhrsg==" + }, "mdurl": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", diff --git a/package.json b/package.json index 6188801..853d3e5 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,8 @@ "daisyui": "^2.51.6", "date-fns": "^2.29.3", "dompurify": "^3.0.2", - "firebase": "^9.20.0", + "firebase": "^9.22.0", + "firebaseui": "^6.0.2", "hamburgers": "^1.2.1", "lodash-es": "^4.17.21", "marked": "^4.3.0", diff --git a/src/components/Auth.vue b/src/components/Auth.vue new file mode 100644 index 0000000..f0f8125 --- /dev/null +++ b/src/components/Auth.vue @@ -0,0 +1,17 @@ + + diff --git a/src/components/Modal.vue b/src/components/Modal.vue index 6ac7f52..9cf95e0 100644 --- a/src/components/Modal.vue +++ b/src/components/Modal.vue @@ -6,14 +6,10 @@ const modalBox = ref(null) const show = ref(false) const open = () => (show.value = true) -const close = async () => { +const close = () => { return new Promise((resolve) => { modal.value?.addEventListener('transitionend', () => resolve(true)) show.value = false - // nextTick(() => { - // console.log('done!') - // resolve(true) - // }) }) } @@ -45,7 +41,7 @@ const onLeave = (el: Element, done: () => void): void => {

diff --git a/src/components/TopBar.vue b/src/components/TopBar.vue index 3c4361d..09523d8 100644 --- a/src/components/TopBar.vue +++ b/src/components/TopBar.vue @@ -1,5 +1,7 @@