├── .gitignore ├── .gitattributes ├── public ├── google97652615ab1c0a78.html └── favicon.ico ├── src ├── assets │ └── logo.png ├── App.vue ├── index.css ├── main.js ├── components │ └── HelloWorld.vue └── plugins │ └── vue3-google-oauth2.js ├── vite.config.js ├── index.html ├── package.json ├── README.md ├── LICENSE └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .DS_Store 3 | dist 4 | *.local -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /public/google97652615ab1c0a78.html: -------------------------------------------------------------------------------- 1 | google-site-verification: google97652615ab1c0a78.html -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guruahn/vue3-google-oauth2-front-sample/HEAD/public/favicon.ico -------------------------------------------------------------------------------- /src/assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/guruahn/vue3-google-oauth2-front-sample/HEAD/src/assets/logo.png -------------------------------------------------------------------------------- /vite.config.js: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite' 2 | import vue from '@vitejs/plugin-vue' 3 | 4 | // https://vitejs.dev/config/ 5 | export default defineConfig({ 6 | plugins: [vue()] 7 | }) 8 | -------------------------------------------------------------------------------- /src/App.vue: -------------------------------------------------------------------------------- 1 | 5 | 6 | 9 | -------------------------------------------------------------------------------- /src/index.css: -------------------------------------------------------------------------------- 1 | #app { 2 | font-family: Avenir, Helvetica, Arial, sans-serif; 3 | -webkit-font-smoothing: antialiased; 4 | -moz-osx-font-smoothing: grayscale; 5 | text-align: center; 6 | color: #2c3e50; 7 | margin-top: 60px; 8 | } 9 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Vite App 8 | 9 | 10 |
11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vue3-google-oauth2-front-sample2", 3 | "version": "1.0.1", 4 | "scripts": { 5 | "dev": "vite", 6 | "build": "vite build", 7 | "preview": "vite preview" 8 | }, 9 | "dependencies": { 10 | "vue": "^3.2.25", 11 | "vue3-google-oauth2": "^1.0.6" 12 | }, 13 | "devDependencies": { 14 | "@vitejs/plugin-vue": "^2.0.0", 15 | "vite": "^2.7.2" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/main.js: -------------------------------------------------------------------------------- 1 | import { createApp } from 'vue' 2 | import App from './App.vue' 3 | import './index.css' 4 | import gAuthPlugin from 'vue3-google-oauth2'; 5 | const app = createApp(App) 6 | let gauthClientId = "768834812579-ivi0oopbkqe05cg6t41p83t7gteekut6.apps.googleusercontent.com"; 7 | app.use(gAuthPlugin, { clientId: gauthClientId, scope: 'email', prompt: 'consent', fetch_basic_profile: false }) 8 | 9 | app.mount('#app') 10 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # vue3-google-oauth2-front-sample 2 | > Sample project for [vue3-google-oauth2](https://github.com/guruahn/vue3-google-oauth2) plugin. 3 | > [Demo](https://boring-lamport-199b25.netlify.app/) 4 | ## Project setup 5 | 6 | ### 1. install 7 | ``` 8 | yarn install 9 | ``` 10 | ### 2. set your google clientId 11 | ```javascript 12 | app.use(gAuthPlugin, { clientId: '394838939483-rq7d2rfj39gkdfjd9jenu670ounoi01.apps.googleusercontent.com', scope: 'email', prompt: 'consent', fetch_basic_profile: false }) 13 | ``` 14 | 15 | ### Compiles and hot-reloads for development 16 | ``` 17 | yarn run dev 18 | ``` 19 | 20 | ### Compiles and minifies for production 21 | ``` 22 | yarn run build 23 | ``` -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Jeong woo Ahn 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /src/components/HelloWorld.vue: -------------------------------------------------------------------------------- 1 | 12 | 13 | 90 | 91 | 121 | -------------------------------------------------------------------------------- /src/plugins/vue3-google-oauth2.js: -------------------------------------------------------------------------------- 1 | import { reactive, readonly } from "vue"; 2 | let Vue3GoogleOauth; 3 | Vue3GoogleOauth = reactive({ 4 | isInit: false, 5 | isAuthorized: false, 6 | }) 7 | const googleAuth = (function () { 8 | 9 | function installClient() { 10 | const apiUrl = 'https://apis.google.com/js/api.js'; 11 | return new Promise((resolve) => { 12 | let script = document.createElement('script'); 13 | script.src = apiUrl; 14 | script.onreadystatechange = script.onload = function () { 15 | if (!script.readyState || /loaded|complete/.test(script.readyState)) { 16 | setTimeout(function () { 17 | resolve() 18 | }, 500) 19 | } 20 | } 21 | document.getElementsByTagName('head')[0].appendChild(script); 22 | }) 23 | } 24 | 25 | function initClient(config) { 26 | return new Promise((resolve, reject) => { 27 | window.gapi.load('auth2', () => { 28 | window.gapi.auth2.init(config) 29 | .then(() => { 30 | resolve(window.gapi); 31 | }).catch((error) => { 32 | reject(error); 33 | }) 34 | }) 35 | }) 36 | 37 | } 38 | 39 | function Auth() { 40 | if (!(this instanceof Auth)) 41 | return new Auth(); 42 | this.instance = null; /* window.gapi.auth2.getAuthInstance() */ 43 | this.load = (config) => { 44 | installClient() 45 | .then(() => { 46 | return initClient(config) 47 | }) 48 | .then((gapi) => { 49 | this.instance = gapi.auth2.getAuthInstance(); 50 | 51 | this.prompt = config.prompt; 52 | Vue3GoogleOauth.instance = gapi.auth2.getAuthInstance(); 53 | Vue3GoogleOauth.isInit = true; 54 | Vue3GoogleOauth.isAuthorized = this.instance.isSignedIn.get(); 55 | }).catch((error) => { 56 | console.error(error); 57 | }) 58 | }; 59 | 60 | this.signIn = () => { 61 | return new Promise((resolve, reject) => { 62 | if (!this.instance) { 63 | reject(false) 64 | return 65 | } 66 | this.instance.signIn() 67 | .then(googleUser => { 68 | Vue3GoogleOauth.isAuthorized = this.instance.isSignedIn.get(); 69 | resolve(googleUser); 70 | }) 71 | .catch(error => { 72 | reject(error); 73 | }) 74 | }) 75 | }; 76 | 77 | this.getAuthCode = () => { 78 | return new Promise((resolve, reject) => { 79 | if (!this.instance) { 80 | reject(false) 81 | return 82 | } 83 | this.instance.grantOfflineAccess({ prompt: this.prompt }) 84 | .then(function (resp) { 85 | resolve(resp.code) 86 | }) 87 | .catch(function (error) { 88 | reject(error) 89 | }) 90 | }) 91 | }; 92 | 93 | this.signOut = () => { 94 | return new Promise((resolve, reject) => { 95 | if (!this.instance) { 96 | reject(false) 97 | return 98 | } 99 | this.instance.signOut() 100 | .then(() => { 101 | Vue3GoogleOauth.isAuthorized = false; 102 | resolve(true) 103 | }) 104 | .catch(error => { 105 | reject(error) 106 | }) 107 | }) 108 | }; 109 | } 110 | 111 | return new Auth() 112 | })(); 113 | 114 | export default { 115 | install: (app, options) => { 116 | /* eslint-disable */ 117 | //set config 118 | let config = null 119 | let defaultConfig = { scope: 'profile email', prompt: 'select_account' }; 120 | if (typeof options === 'object') { 121 | config = Object.assign(defaultConfig, options); 122 | if (!options.clientId) { 123 | throw new Error('clientId is require'); 124 | } 125 | } else { 126 | throw new TypeError('invalid option type. Object type accepted only'); 127 | } 128 | 129 | //Install Vue plugin 130 | googleAuth.load(config); 131 | app.config.globalProperties.$gAuth = googleAuth; 132 | app.provide('Vue3GoogleOauth', readonly(Vue3GoogleOauth)); 133 | 134 | } 135 | } -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@babel/parser@^7.16.4": 6 | version "7.16.7" 7 | resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.16.7.tgz#d372dda9c89fcec340a82630a9f533f2fe15877e" 8 | integrity sha512-sR4eaSrnM7BV7QPzGfEX5paG/6wrZM3I0HDzfIAK06ESvo9oy3xBuVBxE3MbQaKNhvg8g/ixjMWo2CGpzpHsDA== 9 | 10 | "@vitejs/plugin-vue@^2.0.0": 11 | version "2.0.1" 12 | resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-2.0.1.tgz#db0e5eacf96358e04cc501c9008079b25a70a4ac" 13 | integrity sha512-wtdMnGVvys9K8tg+DxowU1ytTrdVveXr3LzdhaKakysgGXyrsfaeds2cDywtvujEASjWOwWL/OgWM+qoeM8Plg== 14 | 15 | "@vue/compiler-core@3.2.26": 16 | version "3.2.26" 17 | resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.2.26.tgz#9ab92ae624da51f7b6064f4679c2d4564f437cc8" 18 | integrity sha512-N5XNBobZbaASdzY9Lga2D9Lul5vdCIOXvUMd6ThcN8zgqQhPKfCV+wfAJNNJKQkSHudnYRO2gEB+lp0iN3g2Tw== 19 | dependencies: 20 | "@babel/parser" "^7.16.4" 21 | "@vue/shared" "3.2.26" 22 | estree-walker "^2.0.2" 23 | source-map "^0.6.1" 24 | 25 | "@vue/compiler-dom@3.2.26": 26 | version "3.2.26" 27 | resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.2.26.tgz#c7a7b55d50a7b7981dd44fc28211df1450482667" 28 | integrity sha512-smBfaOW6mQDxcT3p9TKT6mE22vjxjJL50GFVJiI0chXYGU/xzC05QRGrW3HHVuJrmLTLx5zBhsZ2dIATERbarg== 29 | dependencies: 30 | "@vue/compiler-core" "3.2.26" 31 | "@vue/shared" "3.2.26" 32 | 33 | "@vue/compiler-sfc@3.2.26": 34 | version "3.2.26" 35 | resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.2.26.tgz#3ce76677e4aa58311655a3bea9eb1cb804d2273f" 36 | integrity sha512-ePpnfktV90UcLdsDQUh2JdiTuhV0Skv2iYXxfNMOK/F3Q+2BO0AulcVcfoksOpTJGmhhfosWfMyEaEf0UaWpIw== 37 | dependencies: 38 | "@babel/parser" "^7.16.4" 39 | "@vue/compiler-core" "3.2.26" 40 | "@vue/compiler-dom" "3.2.26" 41 | "@vue/compiler-ssr" "3.2.26" 42 | "@vue/reactivity-transform" "3.2.26" 43 | "@vue/shared" "3.2.26" 44 | estree-walker "^2.0.2" 45 | magic-string "^0.25.7" 46 | postcss "^8.1.10" 47 | source-map "^0.6.1" 48 | 49 | "@vue/compiler-ssr@3.2.26": 50 | version "3.2.26" 51 | resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.2.26.tgz#fd049523341fbf4ab5e88e25eef566d862894ba7" 52 | integrity sha512-2mywLX0ODc4Zn8qBoA2PDCsLEZfpUGZcyoFRLSOjyGGK6wDy2/5kyDOWtf0S0UvtoyVq95OTSGIALjZ4k2q/ag== 53 | dependencies: 54 | "@vue/compiler-dom" "3.2.26" 55 | "@vue/shared" "3.2.26" 56 | 57 | "@vue/reactivity-transform@3.2.26": 58 | version "3.2.26" 59 | resolved "https://registry.yarnpkg.com/@vue/reactivity-transform/-/reactivity-transform-3.2.26.tgz#6d8f20a4aa2d19728f25de99962addbe7c4d03e9" 60 | integrity sha512-XKMyuCmzNA7nvFlYhdKwD78rcnmPb7q46uoR00zkX6yZrUmcCQ5OikiwUEVbvNhL5hBJuvbSO95jB5zkUon+eQ== 61 | dependencies: 62 | "@babel/parser" "^7.16.4" 63 | "@vue/compiler-core" "3.2.26" 64 | "@vue/shared" "3.2.26" 65 | estree-walker "^2.0.2" 66 | magic-string "^0.25.7" 67 | 68 | "@vue/reactivity@3.2.26": 69 | version "3.2.26" 70 | resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.2.26.tgz#d529191e581521c3c12e29ef986d4c8a933a0f83" 71 | integrity sha512-h38bxCZLW6oFJVDlCcAiUKFnXI8xP8d+eO0pcDxx+7dQfSPje2AO6M9S9QO6MrxQB7fGP0DH0dYQ8ksf6hrXKQ== 72 | dependencies: 73 | "@vue/shared" "3.2.26" 74 | 75 | "@vue/runtime-core@3.2.26": 76 | version "3.2.26" 77 | resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.2.26.tgz#5c59cc440ed7a39b6dbd4c02e2d21c8d1988f0de" 78 | integrity sha512-BcYi7qZ9Nn+CJDJrHQ6Zsmxei2hDW0L6AB4vPvUQGBm2fZyC0GXd/4nVbyA2ubmuhctD5RbYY8L+5GUJszv9mQ== 79 | dependencies: 80 | "@vue/reactivity" "3.2.26" 81 | "@vue/shared" "3.2.26" 82 | 83 | "@vue/runtime-dom@3.2.26": 84 | version "3.2.26" 85 | resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.2.26.tgz#84d3ae2584488747717c2e072d5d9112c0d2e6c2" 86 | integrity sha512-dY56UIiZI+gjc4e8JQBwAifljyexfVCkIAu/WX8snh8vSOt/gMSEGwPRcl2UpYpBYeyExV8WCbgvwWRNt9cHhQ== 87 | dependencies: 88 | "@vue/runtime-core" "3.2.26" 89 | "@vue/shared" "3.2.26" 90 | csstype "^2.6.8" 91 | 92 | "@vue/server-renderer@3.2.26": 93 | version "3.2.26" 94 | resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.2.26.tgz#f16a4b9fbcc917417b4cea70c99afce2701341cf" 95 | integrity sha512-Jp5SggDUvvUYSBIvYEhy76t4nr1vapY/FIFloWmQzn7UxqaHrrBpbxrqPcTrSgGrcaglj0VBp22BKJNre4aA1w== 96 | dependencies: 97 | "@vue/compiler-ssr" "3.2.26" 98 | "@vue/shared" "3.2.26" 99 | 100 | "@vue/shared@3.2.26": 101 | version "3.2.26" 102 | resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.2.26.tgz#7acd1621783571b9a82eca1f041b4a0a983481d9" 103 | integrity sha512-vPV6Cq+NIWbH5pZu+V+2QHE9y1qfuTq49uNWw4f7FDEeZaDU2H2cx5jcUZOAKW7qTrUS4k6qZPbMy1x4N96nbA== 104 | 105 | csstype@^2.6.8: 106 | version "2.6.19" 107 | resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.19.tgz#feeb5aae89020bb389e1f63669a5ed490e391caa" 108 | integrity sha512-ZVxXaNy28/k3kJg0Fou5MiYpp88j7H9hLZp8PDC3jV0WFjfH5E9xHb56L0W59cPbKbcHXeP4qyT8PrHp8t6LcQ== 109 | 110 | esbuild-android-arm64@0.13.15: 111 | version "0.13.15" 112 | resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.13.15.tgz#3fc3ff0bab76fe35dd237476b5d2b32bb20a3d44" 113 | integrity sha512-m602nft/XXeO8YQPUDVoHfjyRVPdPgjyyXOxZ44MK/agewFFkPa8tUo6lAzSWh5Ui5PB4KR9UIFTSBKh/RrCmg== 114 | 115 | esbuild-darwin-64@0.13.15: 116 | version "0.13.15" 117 | resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.13.15.tgz#8e9169c16baf444eacec60d09b24d11b255a8e72" 118 | integrity sha512-ihOQRGs2yyp7t5bArCwnvn2Atr6X4axqPpEdCFPVp7iUj4cVSdisgvEKdNR7yH3JDjW6aQDw40iQFoTqejqxvQ== 119 | 120 | esbuild-darwin-arm64@0.13.15: 121 | version "0.13.15" 122 | resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.13.15.tgz#1b07f893b632114f805e188ddfca41b2b778229a" 123 | integrity sha512-i1FZssTVxUqNlJ6cBTj5YQj4imWy3m49RZRnHhLpefFIh0To05ow9DTrXROTE1urGTQCloFUXTX8QfGJy1P8dQ== 124 | 125 | esbuild-freebsd-64@0.13.15: 126 | version "0.13.15" 127 | resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.13.15.tgz#0b8b7eca1690c8ec94c75680c38c07269c1f4a85" 128 | integrity sha512-G3dLBXUI6lC6Z09/x+WtXBXbOYQZ0E8TDBqvn7aMaOCzryJs8LyVXKY4CPnHFXZAbSwkCbqiPuSQ1+HhrNk7EA== 129 | 130 | esbuild-freebsd-arm64@0.13.15: 131 | version "0.13.15" 132 | resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.13.15.tgz#2e1a6c696bfdcd20a99578b76350b41db1934e52" 133 | integrity sha512-KJx0fzEDf1uhNOZQStV4ujg30WlnwqUASaGSFPhznLM/bbheu9HhqZ6mJJZM32lkyfGJikw0jg7v3S0oAvtvQQ== 134 | 135 | esbuild-linux-32@0.13.15: 136 | version "0.13.15" 137 | resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.13.15.tgz#6fd39f36fc66dd45b6b5f515728c7bbebc342a69" 138 | integrity sha512-ZvTBPk0YWCLMCXiFmD5EUtB30zIPvC5Itxz0mdTu/xZBbbHJftQgLWY49wEPSn2T/TxahYCRDWun5smRa0Tu+g== 139 | 140 | esbuild-linux-64@0.13.15: 141 | version "0.13.15" 142 | resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.13.15.tgz#9cb8e4bcd7574e67946e4ee5f1f1e12386bb6dd3" 143 | integrity sha512-eCKzkNSLywNeQTRBxJRQ0jxRCl2YWdMB3+PkWFo2BBQYC5mISLIVIjThNtn6HUNqua1pnvgP5xX0nHbZbPj5oA== 144 | 145 | esbuild-linux-arm64@0.13.15: 146 | version "0.13.15" 147 | resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.13.15.tgz#3891aa3704ec579a1b92d2a586122e5b6a2bfba1" 148 | integrity sha512-bYpuUlN6qYU9slzr/ltyLTR9YTBS7qUDymO8SV7kjeNext61OdmqFAzuVZom+OLW1HPHseBfJ/JfdSlx8oTUoA== 149 | 150 | esbuild-linux-arm@0.13.15: 151 | version "0.13.15" 152 | resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.13.15.tgz#8a00e99e6a0c6c9a6b7f334841364d8a2b4aecfe" 153 | integrity sha512-wUHttDi/ol0tD8ZgUMDH8Ef7IbDX+/UsWJOXaAyTdkT7Yy9ZBqPg8bgB/Dn3CZ9SBpNieozrPRHm0BGww7W/jA== 154 | 155 | esbuild-linux-mips64le@0.13.15: 156 | version "0.13.15" 157 | resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.13.15.tgz#36b07cc47c3d21e48db3bb1f4d9ef8f46aead4f7" 158 | integrity sha512-KlVjIG828uFPyJkO/8gKwy9RbXhCEUeFsCGOJBepUlpa7G8/SeZgncUEz/tOOUJTcWMTmFMtdd3GElGyAtbSWg== 159 | 160 | esbuild-linux-ppc64le@0.13.15: 161 | version "0.13.15" 162 | resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.13.15.tgz#f7e6bba40b9a11eb9dcae5b01550ea04670edad2" 163 | integrity sha512-h6gYF+OsaqEuBjeesTBtUPw0bmiDu7eAeuc2OEH9S6mV9/jPhPdhOWzdeshb0BskRZxPhxPOjqZ+/OqLcxQwEQ== 164 | 165 | esbuild-netbsd-64@0.13.15: 166 | version "0.13.15" 167 | resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.13.15.tgz#a2fedc549c2b629d580a732d840712b08d440038" 168 | integrity sha512-3+yE9emwoevLMyvu+iR3rsa+Xwhie7ZEHMGDQ6dkqP/ndFzRHkobHUKTe+NCApSqG5ce2z4rFu+NX/UHnxlh3w== 169 | 170 | esbuild-openbsd-64@0.13.15: 171 | version "0.13.15" 172 | resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.13.15.tgz#b22c0e5806d3a1fbf0325872037f885306b05cd7" 173 | integrity sha512-wTfvtwYJYAFL1fSs8yHIdf5GEE4NkbtbXtjLWjM3Cw8mmQKqsg8kTiqJ9NJQe5NX/5Qlo7Xd9r1yKMMkHllp5g== 174 | 175 | esbuild-sunos-64@0.13.15: 176 | version "0.13.15" 177 | resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.13.15.tgz#d0b6454a88375ee8d3964daeff55c85c91c7cef4" 178 | integrity sha512-lbivT9Bx3t1iWWrSnGyBP9ODriEvWDRiweAs69vI+miJoeKwHWOComSRukttbuzjZ8r1q0mQJ8Z7yUsDJ3hKdw== 179 | 180 | esbuild-windows-32@0.13.15: 181 | version "0.13.15" 182 | resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.13.15.tgz#c96d0b9bbb52f3303322582ef8e4847c5ad375a7" 183 | integrity sha512-fDMEf2g3SsJ599MBr50cY5ve5lP1wyVwTe6aLJsM01KtxyKkB4UT+fc5MXQFn3RLrAIAZOG+tHC+yXObpSn7Nw== 184 | 185 | esbuild-windows-64@0.13.15: 186 | version "0.13.15" 187 | resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.13.15.tgz#1f79cb9b1e1bb02fb25cd414cb90d4ea2892c294" 188 | integrity sha512-9aMsPRGDWCd3bGjUIKG/ZOJPKsiztlxl/Q3C1XDswO6eNX/Jtwu4M+jb6YDH9hRSUflQWX0XKAfWzgy5Wk54JQ== 189 | 190 | esbuild-windows-arm64@0.13.15: 191 | version "0.13.15" 192 | resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.13.15.tgz#482173070810df22a752c686509c370c3be3b3c3" 193 | integrity sha512-zzvyCVVpbwQQATaf3IG8mu1IwGEiDxKkYUdA4FpoCHi1KtPa13jeScYDjlW0Qh+ebWzpKfR2ZwvqAQkSWNcKjA== 194 | 195 | esbuild@^0.13.12: 196 | version "0.13.15" 197 | resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.13.15.tgz#db56a88166ee373f87dbb2d8798ff449e0450cdf" 198 | integrity sha512-raCxt02HBKv8RJxE8vkTSCXGIyKHdEdGfUmiYb8wnabnaEmHzyW7DCHb5tEN0xU8ryqg5xw54mcwnYkC4x3AIw== 199 | optionalDependencies: 200 | esbuild-android-arm64 "0.13.15" 201 | esbuild-darwin-64 "0.13.15" 202 | esbuild-darwin-arm64 "0.13.15" 203 | esbuild-freebsd-64 "0.13.15" 204 | esbuild-freebsd-arm64 "0.13.15" 205 | esbuild-linux-32 "0.13.15" 206 | esbuild-linux-64 "0.13.15" 207 | esbuild-linux-arm "0.13.15" 208 | esbuild-linux-arm64 "0.13.15" 209 | esbuild-linux-mips64le "0.13.15" 210 | esbuild-linux-ppc64le "0.13.15" 211 | esbuild-netbsd-64 "0.13.15" 212 | esbuild-openbsd-64 "0.13.15" 213 | esbuild-sunos-64 "0.13.15" 214 | esbuild-windows-32 "0.13.15" 215 | esbuild-windows-64 "0.13.15" 216 | esbuild-windows-arm64 "0.13.15" 217 | 218 | estree-walker@^2.0.2: 219 | version "2.0.2" 220 | resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" 221 | integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== 222 | 223 | fsevents@~2.3.2: 224 | version "2.3.2" 225 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" 226 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== 227 | 228 | function-bind@^1.1.1: 229 | version "1.1.1" 230 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 231 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 232 | 233 | has@^1.0.3: 234 | version "1.0.3" 235 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 236 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 237 | dependencies: 238 | function-bind "^1.1.1" 239 | 240 | is-core-module@^2.8.0: 241 | version "2.8.1" 242 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211" 243 | integrity sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA== 244 | dependencies: 245 | has "^1.0.3" 246 | 247 | magic-string@^0.25.7: 248 | version "0.25.7" 249 | resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" 250 | integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== 251 | dependencies: 252 | sourcemap-codec "^1.4.4" 253 | 254 | nanoid@^3.1.30: 255 | version "3.1.30" 256 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.30.tgz#63f93cc548d2a113dc5dfbc63bfa09e2b9b64362" 257 | integrity sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ== 258 | 259 | path-parse@^1.0.7: 260 | version "1.0.7" 261 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" 262 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== 263 | 264 | picocolors@^1.0.0: 265 | version "1.0.0" 266 | resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" 267 | integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== 268 | 269 | postcss@^8.1.10, postcss@^8.4.5: 270 | version "8.4.5" 271 | resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.5.tgz#bae665764dfd4c6fcc24dc0fdf7e7aa00cc77f95" 272 | integrity sha512-jBDboWM8qpaqwkMwItqTQTiFikhs/67OYVvblFFTM7MrZjt6yMKd6r2kgXizEbTTljacm4NldIlZnhbjr84QYg== 273 | dependencies: 274 | nanoid "^3.1.30" 275 | picocolors "^1.0.0" 276 | source-map-js "^1.0.1" 277 | 278 | resolve@^1.20.0: 279 | version "1.21.0" 280 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.21.0.tgz#b51adc97f3472e6a5cf4444d34bc9d6b9037591f" 281 | integrity sha512-3wCbTpk5WJlyE4mSOtDLhqQmGFi0/TD9VPwmiolnk8U0wRgMEktqCXd3vy5buTO3tljvalNvKrjHEfrd2WpEKA== 282 | dependencies: 283 | is-core-module "^2.8.0" 284 | path-parse "^1.0.7" 285 | supports-preserve-symlinks-flag "^1.0.0" 286 | 287 | rollup@^2.59.0: 288 | version "2.63.0" 289 | resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.63.0.tgz#fe2f7fec2133f3fab9e022b9ac245628d817c6bb" 290 | integrity sha512-nps0idjmD+NXl6OREfyYXMn/dar3WGcyKn+KBzPdaLecub3x/LrId0wUcthcr8oZUAcZAR8NKcfGGFlNgGL1kQ== 291 | optionalDependencies: 292 | fsevents "~2.3.2" 293 | 294 | source-map-js@^1.0.1: 295 | version "1.0.1" 296 | resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.1.tgz#a1741c131e3c77d048252adfa24e23b908670caf" 297 | integrity sha512-4+TN2b3tqOCd/kaGRJ/sTYA0tR0mdXx26ipdolxcwtJVqEnqNYvlCAt1q3ypy4QMlYus+Zh34RNtYLoq2oQ4IA== 298 | 299 | source-map@^0.6.1: 300 | version "0.6.1" 301 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 302 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== 303 | 304 | sourcemap-codec@^1.4.4: 305 | version "1.4.8" 306 | resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" 307 | integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== 308 | 309 | supports-preserve-symlinks-flag@^1.0.0: 310 | version "1.0.0" 311 | resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" 312 | integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== 313 | 314 | vite@^2.7.2: 315 | version "2.7.10" 316 | resolved "https://registry.yarnpkg.com/vite/-/vite-2.7.10.tgz#d12c4c10e56a0ecf7890cb529c15996c6111218f" 317 | integrity sha512-KEY96ntXUid1/xJihJbgmLZx7QSC2D4Tui0FdS0Old5OokYzFclcofhtxtjDdGOk/fFpPbHv9yw88+rB93Tb8w== 318 | dependencies: 319 | esbuild "^0.13.12" 320 | postcss "^8.4.5" 321 | resolve "^1.20.0" 322 | rollup "^2.59.0" 323 | optionalDependencies: 324 | fsevents "~2.3.2" 325 | 326 | vue3-google-oauth2@^1.0.6: 327 | version "1.0.6" 328 | resolved "https://registry.yarnpkg.com/vue3-google-oauth2/-/vue3-google-oauth2-1.0.6.tgz#bde2e17a565e83979d54f83e27bac8e7ced03b1a" 329 | integrity sha512-ebUW3V1jejImw2z9nggjczPj4jUnZArNq+kgTdLdGuf6k/zQDDCeGTLmTUiy5gSXMbzVz9PQWiVEj8eX6y/I0Q== 330 | 331 | vue@^3.2.25: 332 | version "3.2.26" 333 | resolved "https://registry.yarnpkg.com/vue/-/vue-3.2.26.tgz#5db575583ecae495c7caa5c12fd590dffcbb763e" 334 | integrity sha512-KD4lULmskL5cCsEkfhERVRIOEDrfEL9CwAsLYpzptOGjaGFNWo3BQ9g8MAb7RaIO71rmVOziZ/uEN/rHwcUIhg== 335 | dependencies: 336 | "@vue/compiler-dom" "3.2.26" 337 | "@vue/compiler-sfc" "3.2.26" 338 | "@vue/runtime-dom" "3.2.26" 339 | "@vue/server-renderer" "3.2.26" 340 | "@vue/shared" "3.2.26" 341 | --------------------------------------------------------------------------------