From 717e53b78a029de7a173ccb7f5b0ffa08445c95d Mon Sep 17 00:00:00 2001 From: Charles Zhao Date: Sun, 22 May 2022 13:04:54 +0800 Subject: [PATCH] feat(vue-sample): add vue sample project to demonstrate vue sdk --- packages/vue-sample/.eslintrc.cjs | 15 + packages/vue-sample/env.d.ts | 1 + packages/vue-sample/index.html | 13 + packages/vue-sample/package.json | 34 ++ packages/vue-sample/public/favicon.ico | Bin 0 -> 4286 bytes packages/vue-sample/src/App.vue | 22 + packages/vue-sample/src/consts/index.ts | 5 + packages/vue-sample/src/main.ts | 12 + packages/vue-sample/src/router/index.ts | 27 ++ packages/vue-sample/src/shims-vue.d.ts | 1 + .../vue-sample/src/views/CallbackView.vue | 16 + packages/vue-sample/src/views/HomeView.vue | 86 ++++ .../src/views/ProtectedResourceView.vue | 27 ++ packages/vue-sample/tsconfig.json | 16 + packages/vue-sample/tsconfig.vite-config.json | 8 + packages/vue-sample/vite.config.ts | 22 + pnpm-lock.yaml | 458 +++++++++++++++++- 17 files changed, 744 insertions(+), 19 deletions(-) create mode 100644 packages/vue-sample/.eslintrc.cjs create mode 100644 packages/vue-sample/env.d.ts create mode 100644 packages/vue-sample/index.html create mode 100644 packages/vue-sample/package.json create mode 100644 packages/vue-sample/public/favicon.ico create mode 100644 packages/vue-sample/src/App.vue create mode 100644 packages/vue-sample/src/consts/index.ts create mode 100644 packages/vue-sample/src/main.ts create mode 100644 packages/vue-sample/src/router/index.ts create mode 100644 packages/vue-sample/src/shims-vue.d.ts create mode 100644 packages/vue-sample/src/views/CallbackView.vue create mode 100644 packages/vue-sample/src/views/HomeView.vue create mode 100644 packages/vue-sample/src/views/ProtectedResourceView.vue create mode 100644 packages/vue-sample/tsconfig.json create mode 100644 packages/vue-sample/tsconfig.vite-config.json create mode 100644 packages/vue-sample/vite.config.ts diff --git a/packages/vue-sample/.eslintrc.cjs b/packages/vue-sample/.eslintrc.cjs new file mode 100644 index 000000000..6b7235fcc --- /dev/null +++ b/packages/vue-sample/.eslintrc.cjs @@ -0,0 +1,15 @@ +/* eslint-env node */ +require("@rushstack/eslint-patch/modern-module-resolution"); + +module.exports = { + root: true, + extends: [ + "plugin:vue/vue3-essential", + "eslint:recommended", + "@vue/eslint-config-typescript/recommended", + "@vue/eslint-config-prettier", + ], + env: { + "vue/setup-compiler-macros": true, + }, +}; diff --git a/packages/vue-sample/env.d.ts b/packages/vue-sample/env.d.ts new file mode 100644 index 000000000..11f02fe2a --- /dev/null +++ b/packages/vue-sample/env.d.ts @@ -0,0 +1 @@ +/// diff --git a/packages/vue-sample/index.html b/packages/vue-sample/index.html new file mode 100644 index 000000000..28dc413fa --- /dev/null +++ b/packages/vue-sample/index.html @@ -0,0 +1,13 @@ + + + + + + + Logto Vue Sample + + +
+ + + diff --git a/packages/vue-sample/package.json b/packages/vue-sample/package.json new file mode 100644 index 000000000..c33c82b96 --- /dev/null +++ b/packages/vue-sample/package.json @@ -0,0 +1,34 @@ +{ + "name": "@logto/vue-sample", + "version": "0.1.7", + "license": "MIT", + "private": true, + "scripts": { + "preinstall": "npx only-allow pnpm", + "precommit": "lint-staged", + "start": "vite", + "check": "vue-tsc --noEmit", + "build": "pnpm check && rm -rf dist && vite build", + "lint": "eslint --ext .vue,.ts src" + }, + "dependencies": { + "@logto/vue": "^0.1.7", + "vue": "^3.2.35", + "vue-router": "^4.0.14" + }, + "devDependencies": { + "@rushstack/eslint-patch": "^1.1.0", + "@types/node": "^16.11.27", + "@vitejs/plugin-vue": "^2.3.1", + "@vue/eslint-config-prettier": "^7.0.0", + "@vue/eslint-config-typescript": "^10.0.0", + "@vue/tsconfig": "^0.1.3", + "eslint": "^8.5.0", + "eslint-plugin-vue": "^8.2.0", + "lint-staged": "^12.3.4", + "prettier": "^2.5.1", + "typescript": "^4.6.2", + "vite": "^2.9.5", + "vue-tsc": "^0.34.7" + } +} diff --git a/packages/vue-sample/public/favicon.ico b/packages/vue-sample/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..df36fcfb72584e00488330b560ebcf34a41c64c2 GIT binary patch literal 4286 zcmds*O-Phc6o&64GDVCEQHxsW(p4>LW*W<827=Unuo8sGpRux(DN@jWP-e29Wl%wj zY84_aq9}^Am9-cWTD5GGEo#+5Fi2wX_P*bo+xO!)p*7B;iKlbFd(U~_d(U?#hLj56 zPhFkj-|A6~Qk#@g^#D^U0XT1cu=c-vu1+SElX9NR;kzAUV(q0|dl0|%h|dI$%VICy zJnu2^L*Te9JrJMGh%-P79CL0}dq92RGU6gI{v2~|)p}sG5x0U*z<8U;Ij*hB9z?ei z@g6Xq-pDoPl=MANPiR7%172VA%r)kevtV-_5H*QJKFmd;8yA$98zCxBZYXTNZ#QFk2(TX0;Y2dt&WitL#$96|gJY=3xX zpCoi|YNzgO3R`f@IiEeSmKrPSf#h#Qd<$%Ej^RIeeYfsxhPMOG`S`Pz8q``=511zm zAm)MX5AV^5xIWPyEu7u>qYs?pn$I4nL9J!=K=SGlKLXpE<5x+2cDTXq?brj?n6sp= zphe9;_JHf40^9~}9i08r{XM$7HB!`{Ys~TK0kx<}ZQng`UPvH*11|q7&l9?@FQz;8 zx!=3<4seY*%=OlbCbcae?5^V_}*K>Uo6ZWV8mTyE^B=DKy7-sdLYkR5Z?paTgK-zyIkKjIcpyO z{+uIt&YSa_$QnN_@t~L014dyK(fOOo+W*MIxbA6Ndgr=Y!f#Tokqv}n<7-9qfHkc3 z=>a|HWqcX8fzQCT=dqVbogRq!-S>H%yA{1w#2Pn;=e>JiEj7Hl;zdt-2f+j2%DeVD zsW0Ab)ZK@0cIW%W7z}H{&~yGhn~D;aiP4=;m-HCo`BEI+Kd6 z={Xwx{TKxD#iCLfl2vQGDitKtN>z|-AdCN|$jTFDg0m3O`WLD4_s#$S literal 0 HcmV?d00001 diff --git a/packages/vue-sample/src/App.vue b/packages/vue-sample/src/App.vue new file mode 100644 index 000000000..7307505c4 --- /dev/null +++ b/packages/vue-sample/src/App.vue @@ -0,0 +1,22 @@ + + + + + diff --git a/packages/vue-sample/src/consts/index.ts b/packages/vue-sample/src/consts/index.ts new file mode 100644 index 000000000..5f3379dbf --- /dev/null +++ b/packages/vue-sample/src/consts/index.ts @@ -0,0 +1,5 @@ +export const baseUrl = window.location.origin; +export const redirectUrl = `${baseUrl}/callback`; +export const appId = "foo"; + +export const endpoint = "https://logto.dev"; // OIDC domain diff --git a/packages/vue-sample/src/main.ts b/packages/vue-sample/src/main.ts new file mode 100644 index 000000000..7d458a2a8 --- /dev/null +++ b/packages/vue-sample/src/main.ts @@ -0,0 +1,12 @@ +import { createApp } from "vue"; +import App from "./App.vue"; +import router from "./router"; +import { createLogto } from "@logto/vue"; +import { appId, endpoint } from "./consts"; + +const app = createApp(App); + +app.use(createLogto, { appId, endpoint }); +app.use(router); + +app.mount("#app"); diff --git a/packages/vue-sample/src/router/index.ts b/packages/vue-sample/src/router/index.ts new file mode 100644 index 000000000..1ead2a58c --- /dev/null +++ b/packages/vue-sample/src/router/index.ts @@ -0,0 +1,27 @@ +import { createRouter, createWebHistory } from "vue-router"; + +import CallbackView from "../views/CallbackView.vue"; +import HomeView from "../views/HomeView.vue"; + +const router = createRouter({ + history: createWebHistory(), + routes: [ + { + path: "/", + name: "home", + component: HomeView, + }, + { + path: "/callback", + name: "callback", + component: CallbackView, + }, + { + path: "/protected-resource", + name: "protected-resource", + component: () => import("../views/ProtectedResourceView.vue"), + }, + ], +}); + +export default router; diff --git a/packages/vue-sample/src/shims-vue.d.ts b/packages/vue-sample/src/shims-vue.d.ts new file mode 100644 index 000000000..11a8c6e28 --- /dev/null +++ b/packages/vue-sample/src/shims-vue.d.ts @@ -0,0 +1 @@ +declare module "*.vue"; diff --git a/packages/vue-sample/src/views/CallbackView.vue b/packages/vue-sample/src/views/CallbackView.vue new file mode 100644 index 000000000..6dd7eaffb --- /dev/null +++ b/packages/vue-sample/src/views/CallbackView.vue @@ -0,0 +1,16 @@ + + diff --git a/packages/vue-sample/src/views/HomeView.vue b/packages/vue-sample/src/views/HomeView.vue new file mode 100644 index 000000000..aefb7d525 --- /dev/null +++ b/packages/vue-sample/src/views/HomeView.vue @@ -0,0 +1,86 @@ + + + diff --git a/packages/vue-sample/src/views/ProtectedResourceView.vue b/packages/vue-sample/src/views/ProtectedResourceView.vue new file mode 100644 index 000000000..dd179928b --- /dev/null +++ b/packages/vue-sample/src/views/ProtectedResourceView.vue @@ -0,0 +1,27 @@ + + diff --git a/packages/vue-sample/tsconfig.json b/packages/vue-sample/tsconfig.json new file mode 100644 index 000000000..61952eeb3 --- /dev/null +++ b/packages/vue-sample/tsconfig.json @@ -0,0 +1,16 @@ +{ + "extends": "@vue/tsconfig/tsconfig.web.json", + "include": ["env.d.ts", "src/**/*", "src/**/*.vue"], + "compilerOptions": { + "baseUrl": ".", + "paths": { + "@/*": ["./src/*"] + } + }, + + "references": [ + { + "path": "./tsconfig.vite-config.json" + } + ] +} diff --git a/packages/vue-sample/tsconfig.vite-config.json b/packages/vue-sample/tsconfig.vite-config.json new file mode 100644 index 000000000..93fe5846e --- /dev/null +++ b/packages/vue-sample/tsconfig.vite-config.json @@ -0,0 +1,8 @@ +{ + "extends": "@vue/tsconfig/tsconfig.node.json", + "include": ["vite.config.*"], + "compilerOptions": { + "composite": true, + "types": ["node"] + } +} diff --git a/packages/vue-sample/vite.config.ts b/packages/vue-sample/vite.config.ts new file mode 100644 index 000000000..68a1c91e4 --- /dev/null +++ b/packages/vue-sample/vite.config.ts @@ -0,0 +1,22 @@ +import { fileURLToPath, URL } from "url"; + +import { defineConfig } from "vite"; +import vue from "@vitejs/plugin-vue"; + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [vue()], + resolve: { + alias: { + "@": fileURLToPath(new URL("./src", import.meta.url)), + }, + }, + optimizeDeps: { + include: ["@logto/vue"], + }, + build: { + commonjsOptions: { + include: [/linked-dep/, /node_modules/], + }, + }, +}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 33c9aafe6..1f5d520ac 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -276,6 +276,43 @@ importers: typescript: 4.6.2 vue: 3.2.35 + packages/vue-sample: + specifiers: + '@logto/vue': ^0.1.7 + '@rushstack/eslint-patch': ^1.1.0 + '@types/node': ^16.11.27 + '@vitejs/plugin-vue': ^2.3.1 + '@vue/eslint-config-prettier': ^7.0.0 + '@vue/eslint-config-typescript': ^10.0.0 + '@vue/tsconfig': ^0.1.3 + eslint: ^8.5.0 + eslint-plugin-vue: ^8.2.0 + lint-staged: ^12.3.4 + prettier: ^2.5.1 + typescript: ^4.6.2 + vite: ^2.9.5 + vue: ^3.2.35 + vue-router: ^4.0.14 + vue-tsc: ^0.34.7 + dependencies: + '@logto/vue': link:../vue + vue: 3.2.35 + vue-router: 4.0.15_vue@3.2.35 + devDependencies: + '@rushstack/eslint-patch': 1.1.3 + '@types/node': 16.11.36 + '@vitejs/plugin-vue': 2.3.3_vite@2.9.9+vue@3.2.35 + '@vue/eslint-config-prettier': 7.0.0_o3yyxvqqntu2psyhklvnrymevm + '@vue/eslint-config-typescript': 10.0.0_fihdr5o2zeulrfyu6l2vncfo6u + '@vue/tsconfig': 0.1.3_@types+node@16.11.36 + eslint: 8.9.0 + eslint-plugin-vue: 8.7.1_eslint@8.9.0 + lint-staged: 12.3.4 + prettier: 2.5.1 + typescript: 4.6.2 + vite: 2.9.9 + vue-tsc: 0.34.15_typescript@4.6.2 + packages: /@ampproject/remapping/2.1.2: @@ -462,7 +499,6 @@ packages: resolution: {integrity: sha512-7yJPvPV+ESz2IUTPbOL+YkIGyCqOyNIzdguKQuJGnH7bg1WTIifuM21YqokFt/THWh1AkCRn9IgoykTRCBVpzA==} engines: {node: '>=6.0.0'} hasBin: true - dev: true /@babel/plugin-syntax-async-generators/7.8.4_@babel+core@7.17.5: resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} @@ -2632,6 +2668,10 @@ packages: webcrypto-core: 1.4.0 dev: true + /@rushstack/eslint-patch/1.1.3: + resolution: {integrity: sha512-WiBSI6JBIhC6LRIsB2Kwh8DsGTlbBU+mLRxJmAe3LjHTdkDpwIbEOZgoXBbZilk/vlfjK8i6nKRAvIRn1XaIMw==} + dev: true + /@silverhand/eslint-config-react/0.14.0_24uiwxvzusmeqbot4tdiltzkni: resolution: {integrity: sha512-7ylw/SFiYHbcCUNCki9Hv+zdMBIieW6AmNNmqjX3Orn8CvlN/yAUxN/hy9JPpuOCOXquz6mVMDYtmWFGndwy2Q==} peerDependencies: @@ -2972,6 +3012,10 @@ packages: resolution: {integrity: sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==} dev: true + /@types/node/16.11.36: + resolution: {integrity: sha512-FR5QJe+TaoZ2GsMHkjuwoNabr+UrJNRr2HNOo+r/7vhcuntM6Ee/pRPOnRhhL2XE9OOvX9VLEq+BcXl3VjNoWA==} + dev: true + /@types/node/17.0.19: resolution: {integrity: sha512-PfeQhvcMR4cPFVuYfBN4ifG7p9c+Dlh3yUZR6k+5yQK7wX3gDgVxBly4/WkBRs9x4dmcy1TVl08SY67wwtEvmA==} dev: true @@ -3270,6 +3314,47 @@ packages: eslint-visitor-keys: 3.3.0 dev: true + /@vitejs/plugin-vue/2.3.3_vite@2.9.9+vue@3.2.35: + resolution: {integrity: sha512-SmQLDyhz+6lGJhPELsBdzXGc+AcaT8stgkbiTFGpXPe8Tl1tJaBw1A6pxDqDuRsVkD8uscrkx3hA7QDOoKYtyw==} + engines: {node: '>=12.0.0'} + peerDependencies: + vite: ^2.5.10 + vue: ^3.2.25 + dependencies: + vite: 2.9.9 + vue: 3.2.35 + dev: true + + /@volar/code-gen/0.34.15: + resolution: {integrity: sha512-g30glPo5N9bJocf1NBt802UcmqgZ3UtPst9b/Tangj+zR+K2RV5S2Un/suR6ZRiETXtg3nmrUcCgsTSJ6PC29A==} + dependencies: + '@volar/source-map': 0.34.15 + dev: true + + /@volar/source-map/0.34.15: + resolution: {integrity: sha512-Y3sENK/kqsgD7Vtve6gq6/Dor6JuoJWR+s9iwHcHTcA4VDkJnJRGHcvP8S3SVBsWl7T9qtlnvH3WCbFj7WlXrw==} + dev: true + + /@volar/vue-code-gen/0.34.15: + resolution: {integrity: sha512-GglGsHxPPb7mW2v//5MUrkzxAO68YEIL5bRwpZD0Cp9np34keQdd1SHB5DXdoyU38cnfHJWjBlqCYpTnz2CR/w==} + dependencies: + '@volar/code-gen': 0.34.15 + '@volar/source-map': 0.34.15 + '@vue/compiler-core': 3.2.35 + '@vue/compiler-dom': 3.2.35 + '@vue/shared': 3.2.35 + dev: true + + /@volar/vue-typescript/0.34.15: + resolution: {integrity: sha512-7jwhYl1NQB0uYgTO74x+OBSD4SPF7bI3m1KFQ98Wt/NOTXr57YcUyOkDBImcTKRLX3PHG9ex6OfT7u3jiZ2Zzg==} + dependencies: + '@volar/code-gen': 0.34.15 + '@volar/source-map': 0.34.15 + '@volar/vue-code-gen': 0.34.15 + '@vue/compiler-sfc': 3.2.35 + '@vue/reactivity': 3.2.35 + dev: true + /@vue/compiler-core/3.2.35: resolution: {integrity: sha512-1Mtmh8ceVUoUsn/PME5oM+Dus648rCeV/fBaZ4ERLFbTHBJXj6QmDPrSn9mfEyPDXE0RYIwyJNn884NdWK+Yiw==} dependencies: @@ -3277,14 +3362,12 @@ packages: '@vue/shared': 3.2.35 estree-walker: 2.0.2 source-map: 0.6.1 - dev: true /@vue/compiler-dom/3.2.35: resolution: {integrity: sha512-I4bXB9MkRSTJ3gVXRQ4iaYJgABZGew+K/CCBoAh9fdLaeY7A7uUlS5nWGOlICSVfOH0/xk4QlcXeGZYCJkEleA==} dependencies: '@vue/compiler-core': 3.2.35 '@vue/shared': 3.2.35 - dev: true /@vue/compiler-sfc/3.2.35: resolution: {integrity: sha512-2wKQtnuHfwBFc7uV2Cmtms3Cc7u/u6kKJI3F+i0A+9xnuahK39cCMNJKHzI9x93Xai+uft64fDc5JSh8zDQBQA==} @@ -3299,13 +3382,44 @@ packages: magic-string: 0.25.9 postcss: 8.4.13 source-map: 0.6.1 - dev: true /@vue/compiler-ssr/3.2.35: resolution: {integrity: sha512-dJyqB8fZbvVQEnWl5VGxkWHTqx0ERnZXXqInFzyOX8FpTEidmQbUSmDrXidea7bZTdeg6ly94kZFGPYXT29mgQ==} dependencies: '@vue/compiler-dom': 3.2.35 '@vue/shared': 3.2.35 + + /@vue/devtools-api/6.1.4: + resolution: {integrity: sha512-IiA0SvDrJEgXvVxjNkHPFfDx6SXw0b/TUkqMcDZWNg9fnCAHbTpoo59YfJ9QLFkwa3raau5vSlRVzMSLDnfdtQ==} + dev: false + + /@vue/eslint-config-prettier/7.0.0_o3yyxvqqntu2psyhklvnrymevm: + resolution: {integrity: sha512-/CTc6ML3Wta1tCe1gUeO0EYnVXfo3nJXsIhZ8WJr3sov+cGASr6yuiibJTL6lmIBm7GobopToOuB3B6AWyV0Iw==} + peerDependencies: + eslint: '>= 7.28.0' + prettier: '>= 2.0.0' + dependencies: + eslint: 8.9.0 + eslint-config-prettier: 8.4.0_eslint@8.9.0 + eslint-plugin-prettier: 4.0.0_t5rlqxhdzybjjhn5fth7z27jl4 + prettier: 2.5.1 + dev: true + + /@vue/eslint-config-typescript/10.0.0_fihdr5o2zeulrfyu6l2vncfo6u: + resolution: {integrity: sha512-F94cL8ug3FaYXlCfU5/wiGjk1qeadmoBpRGAOBq+qre3Smdupa59dd6ZJrsfRODpsMPyTG7330juMDsUvpZ3Rw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 + eslint-plugin-vue: ^8.0.1 + dependencies: + '@typescript-eslint/eslint-plugin': 5.12.1_bsej5di4ktw753ws66fiwndpim + '@typescript-eslint/parser': 5.12.1_hhfj2cqslfove3mebc4baoycai + eslint: 8.9.0 + eslint-plugin-vue: 8.7.1_eslint@8.9.0 + vue-eslint-parser: 8.3.0_eslint@8.9.0 + transitivePeerDependencies: + - supports-color + - typescript dev: true /@vue/reactivity-transform/3.2.35: @@ -3316,20 +3430,17 @@ packages: '@vue/shared': 3.2.35 estree-walker: 2.0.2 magic-string: 0.25.9 - dev: true /@vue/reactivity/3.2.35: resolution: {integrity: sha512-6j9N9R1SwHVcJas4YqAzwdRS/cgmj3Z9aUert5Mv1jk5B9H9ivN/zot/fgMUbseWXigkkmX60OsfRbz49o8kCw==} dependencies: '@vue/shared': 3.2.35 - dev: true /@vue/runtime-core/3.2.35: resolution: {integrity: sha512-P8AeGPRGyIiYdOdvLc/7KR8VSdbUGG8Jxdx6Xlj5okEjyV9IYxeHRIQIoye85K0lZXBH4zuh1syD1mX+oZ0KqQ==} dependencies: '@vue/reactivity': 3.2.35 '@vue/shared': 3.2.35 - dev: true /@vue/runtime-dom/3.2.35: resolution: {integrity: sha512-M5xrVJ/b0KqssjPQMdpwLp3KwzG1Tn2w/IrOptVqGY5c9fEBluIbm18AeO4Fr3YxfeyaPWm1rY8POrEso0UE3w==} @@ -3337,7 +3448,6 @@ packages: '@vue/runtime-core': 3.2.35 '@vue/shared': 3.2.35 csstype: 2.6.20 - dev: true /@vue/server-renderer/3.2.35_vue@3.2.35: resolution: {integrity: sha512-ZMF8V+bZ0EIjSB7yzPEmDlxRDOIXj04iqG4Rw/H5rIuBCf0b7rNTleiOldlX5haG++zUq6uiL2AVp/A9uyz+cw==} @@ -3347,10 +3457,19 @@ packages: '@vue/compiler-ssr': 3.2.35 '@vue/shared': 3.2.35 vue: 3.2.35 - dev: true /@vue/shared/3.2.35: resolution: {integrity: sha512-/sxDqMcy0MsfQ3LQixKYDxIinDYNy1dXTsF2Am0pv0toImWabymFQ8cFmPJnPt+gh5ElKwwn7KzQcDbLHar60A==} + + /@vue/tsconfig/0.1.3_@types+node@16.11.36: + resolution: {integrity: sha512-kQVsh8yyWPvHpb8gIc9l/HIDiiVUy1amynLNpCy8p+FoCiZXCo6fQos5/097MmnNZc9AtseDsCrfkhqCrJ8Olg==} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true + dependencies: + '@types/node': 16.11.36 dev: true /JSONStream/1.3.5: @@ -4447,7 +4566,6 @@ packages: /csstype/2.6.20: resolution: {integrity: sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA==} - dev: true /csstype/3.0.10: resolution: {integrity: sha512-2u44ZG2OcNUO9HDp/Jl8C07x6pU/eTR3ncV91SiK3dhG9TWvRVsCoJw14Ckx5DgWkzGA3waZWO3d7pgqpUI/XA==} @@ -4818,6 +4936,214 @@ packages: is-symbol: 1.0.4 dev: true + /esbuild-android-64/0.14.39: + resolution: {integrity: sha512-EJOu04p9WgZk0UoKTqLId9VnIsotmI/Z98EXrKURGb3LPNunkeffqQIkjS2cAvidh+OK5uVrXaIP229zK6GvhQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /esbuild-android-arm64/0.14.39: + resolution: {integrity: sha512-+twajJqO7n3MrCz9e+2lVOnFplRsaGRwsq1KL/uOy7xK7QdRSprRQcObGDeDZUZsacD5gUkk6OiHiYp6RzU3CA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + dev: true + optional: true + + /esbuild-darwin-64/0.14.39: + resolution: {integrity: sha512-ImT6eUw3kcGcHoUxEcdBpi6LfTRWaV6+qf32iYYAfwOeV+XaQ/Xp5XQIBiijLeo+LpGci9M0FVec09nUw41a5g==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /esbuild-darwin-arm64/0.14.39: + resolution: {integrity: sha512-/fcQ5UhE05OiT+bW5v7/up1bDsnvaRZPJxXwzXsMRrr7rZqPa85vayrD723oWMT64dhrgWeA3FIneF8yER0XTw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: true + optional: true + + /esbuild-freebsd-64/0.14.39: + resolution: {integrity: sha512-oMNH8lJI4wtgN5oxuFP7BQ22vgB/e3Tl5Woehcd6i2r6F3TszpCnNl8wo2d/KvyQ4zvLvCWAlRciumhQg88+kQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-freebsd-arm64/0.14.39: + resolution: {integrity: sha512-1GHK7kwk57ukY2yI4ILWKJXaxfr+8HcM/r/JKCGCPziIVlL+Wi7RbJ2OzMcTKZ1HpvEqCTBT/J6cO4ZEwW4Ypg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-32/0.14.39: + resolution: {integrity: sha512-g97Sbb6g4zfRLIxHgW2pc393DjnkTRMeq3N1rmjDUABxpx8SjocK4jLen+/mq55G46eE2TA0MkJ4R3SpKMu7dg==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-64/0.14.39: + resolution: {integrity: sha512-4tcgFDYWdI+UbNMGlua9u1Zhu0N5R6u9tl5WOM8aVnNX143JZoBZLpCuUr5lCKhnD0SCO+5gUyMfupGrHtfggQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-arm/0.14.39: + resolution: {integrity: sha512-t0Hn1kWVx5UpCzAJkKRfHeYOLyFnXwYynIkK54/h3tbMweGI7dj400D1k0Vvtj2u1P+JTRT9tx3AjtLEMmfVBQ==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-arm64/0.14.39: + resolution: {integrity: sha512-23pc8MlD2D6Px1mV8GMglZlKgwgNKAO8gsgsLLcXWSs9lQsCYkIlMo/2Ycfo5JrDIbLdwgP8D2vpfH2KcBqrDQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-mips64le/0.14.39: + resolution: {integrity: sha512-epwlYgVdbmkuRr5n4es3B+yDI0I2e/nxhKejT9H0OLxFAlMkeQZxSpxATpDc9m8NqRci6Kwyb/SfmD1koG2Zuw==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-ppc64le/0.14.39: + resolution: {integrity: sha512-W/5ezaq+rQiQBThIjLMNjsuhPHg+ApVAdTz2LvcuesZFMsJoQAW2hutoyg47XxpWi7aEjJGrkS26qCJKhRn3QQ==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-riscv64/0.14.39: + resolution: {integrity: sha512-IS48xeokcCTKeQIOke2O0t9t14HPvwnZcy+5baG13Z1wxs9ZrC5ig5ypEQQh4QMKxURD5TpCLHw2W42CLuVZaA==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-linux-s390x/0.14.39: + resolution: {integrity: sha512-zEfunpqR8sMomqXhNTFEKDs+ik7HC01m3M60MsEjZOqaywHu5e5682fMsqOlZbesEAAaO9aAtRBsU7CHnSZWyA==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + dev: true + optional: true + + /esbuild-netbsd-64/0.14.39: + resolution: {integrity: sha512-Uo2suJBSIlrZCe4E0k75VDIFJWfZy+bOV6ih3T4MVMRJh1lHJ2UyGoaX4bOxomYN3t+IakHPyEoln1+qJ1qYaA==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-openbsd-64/0.14.39: + resolution: {integrity: sha512-secQU+EpgUPpYjJe3OecoeGKVvRMLeKUxSMGHnK+aK5uQM3n1FPXNJzyz1LHFOo0WOyw+uoCxBYdM4O10oaCAA==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /esbuild-sunos-64/0.14.39: + resolution: {integrity: sha512-qHq0t5gePEDm2nqZLb+35p/qkaXVS7oIe32R0ECh2HOdiXXkj/1uQI9IRogGqKkK+QjDG+DhwiUw7QoHur/Rwg==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + dev: true + optional: true + + /esbuild-windows-32/0.14.39: + resolution: {integrity: sha512-XPjwp2OgtEX0JnOlTgT6E5txbRp6Uw54Isorm3CwOtloJazeIWXuiwK0ONJBVb/CGbiCpS7iP2UahGgd2p1x+Q==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /esbuild-windows-64/0.14.39: + resolution: {integrity: sha512-E2wm+5FwCcLpKsBHRw28bSYQw0Ikxb7zIMxw3OPAkiaQhLVr3dnVO8DofmbWhhf6b97bWzg37iSZ45ZDpLw7Ow==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /esbuild-windows-arm64/0.14.39: + resolution: {integrity: sha512-sBZQz5D+Gd0EQ09tZRnz/PpVdLwvp/ufMtJ1iDFYddDaPpZXKqPyaxfYBLs3ueiaksQ26GGa7sci0OqFzNs7KA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: true + optional: true + + /esbuild/0.14.39: + resolution: {integrity: sha512-2kKujuzvRWYtwvNjYDY444LQIA3TyJhJIX3Yo4+qkFlDDtGlSicWgeHVJqMUP/2sSfH10PGwfsj+O2ro1m10xQ==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + esbuild-android-64: 0.14.39 + esbuild-android-arm64: 0.14.39 + esbuild-darwin-64: 0.14.39 + esbuild-darwin-arm64: 0.14.39 + esbuild-freebsd-64: 0.14.39 + esbuild-freebsd-arm64: 0.14.39 + esbuild-linux-32: 0.14.39 + esbuild-linux-64: 0.14.39 + esbuild-linux-arm: 0.14.39 + esbuild-linux-arm64: 0.14.39 + esbuild-linux-mips64le: 0.14.39 + esbuild-linux-ppc64le: 0.14.39 + esbuild-linux-riscv64: 0.14.39 + esbuild-linux-s390x: 0.14.39 + esbuild-netbsd-64: 0.14.39 + esbuild-openbsd-64: 0.14.39 + esbuild-sunos-64: 0.14.39 + esbuild-windows-32: 0.14.39 + esbuild-windows-64: 0.14.39 + esbuild-windows-arm64: 0.14.39 + dev: true + /escalade/3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} @@ -5046,6 +5372,23 @@ packages: prettier-linter-helpers: 1.0.0 dev: true + /eslint-plugin-prettier/4.0.0_t5rlqxhdzybjjhn5fth7z27jl4: + resolution: {integrity: sha512-98MqmCJ7vJodoQK359bqQWaxOE0CS8paAz/GgjaZLyex4TTk3g9HugoO89EqWCrFiOqn9EVvcoo7gZzONCWVwQ==} + engines: {node: '>=6.0.0'} + peerDependencies: + eslint: '>=7.28.0' + eslint-config-prettier: '*' + prettier: '>=2.0.0' + peerDependenciesMeta: + eslint-config-prettier: + optional: true + dependencies: + eslint: 8.9.0 + eslint-config-prettier: 8.4.0_eslint@8.9.0 + prettier: 2.5.1 + prettier-linter-helpers: 1.0.0 + dev: true + /eslint-plugin-promise/6.0.0_eslint@8.9.0: resolution: {integrity: sha512-7GPezalm5Bfi/E22PnQxDWH2iW9GTvAlUNTztemeHb6c1BniSyoeTrM87JkC0wYdi6aQrZX9p2qEiAno8aTcbw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -5129,6 +5472,23 @@ packages: - supports-color dev: true + /eslint-plugin-vue/8.7.1_eslint@8.9.0: + resolution: {integrity: sha512-28sbtm4l4cOzoO1LtzQPxfxhQABararUb1JtqusQqObJpWX2e/gmVyeYVfepizPFne0Q5cILkYGiBoV36L12Wg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 + dependencies: + eslint: 8.9.0 + eslint-utils: 3.0.0_eslint@8.9.0 + natural-compare: 1.4.0 + nth-check: 2.0.1 + postcss-selector-parser: 6.0.10 + semver: 7.3.5 + vue-eslint-parser: 8.3.0_eslint@8.9.0 + transitivePeerDependencies: + - supports-color + dev: true + /eslint-scope/5.1.1: resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} engines: {node: '>=8.0.0'} @@ -5277,7 +5637,6 @@ packages: /estree-walker/2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - dev: true /esutils/2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} @@ -7335,7 +7694,6 @@ packages: resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} dependencies: sourcemap-codec: 1.4.8 - dev: true /make-dir/2.1.0: resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==} @@ -7688,7 +8046,6 @@ packages: resolution: {integrity: sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - dev: true /natural-compare/1.4.0: resolution: {integrity: sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=} @@ -8341,7 +8698,6 @@ packages: /picocolors/1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} - dev: true /picomatch/2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} @@ -8793,7 +9149,6 @@ packages: nanoid: 3.3.4 picocolors: 1.0.0 source-map-js: 1.0.2 - dev: true /postcss/8.4.6: resolution: {integrity: sha512-OovjwIzs9Te46vlEx7+uXB0PLijpwjXGKXjVGGPIGubGpq7uh5Xgf6D6FiJ/SzJMBosHDp6a2hiXOS97iBXcaA==} @@ -9319,6 +9674,14 @@ packages: glob: 7.2.0 dev: true + /rollup/2.74.1: + resolution: {integrity: sha512-K2zW7kV8Voua5eGkbnBtWYfMIhYhT9Pel2uhBk2WO5eMee161nPze/XRfvEQPFYz7KgrCCnmh2Wy0AMFLGGmMA==} + engines: {node: '>=10.0.0'} + hasBin: true + optionalDependencies: + fsevents: 2.3.2 + dev: true + /run-async/2.4.1: resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} engines: {node: '>=0.12.0'} @@ -9533,7 +9896,6 @@ packages: /source-map-js/1.0.2: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} engines: {node: '>=0.10.0'} - dev: true /source-map-support/0.5.21: resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} @@ -9550,7 +9912,6 @@ packages: /source-map/0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} - dev: true /source-map/0.7.3: resolution: {integrity: sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==} @@ -9559,7 +9920,6 @@ packages: /sourcemap-codec/1.4.8: resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} - dev: true /spdx-correct/3.1.1: resolution: {integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==} @@ -10518,6 +10878,67 @@ packages: extsprintf: 1.3.0 dev: true + /vite/2.9.9: + resolution: {integrity: sha512-ffaam+NgHfbEmfw/Vuh6BHKKlI/XIAhxE5QSS7gFLIngxg171mg1P3a4LSRME0z2ZU1ScxoKzphkipcYwSD5Ew==} + engines: {node: '>=12.2.0'} + hasBin: true + peerDependencies: + less: '*' + sass: '*' + stylus: '*' + peerDependenciesMeta: + less: + optional: true + sass: + optional: true + stylus: + optional: true + dependencies: + esbuild: 0.14.39 + postcss: 8.4.13 + resolve: 1.22.0 + rollup: 2.74.1 + optionalDependencies: + fsevents: 2.3.2 + dev: true + + /vue-eslint-parser/8.3.0_eslint@8.9.0: + resolution: {integrity: sha512-dzHGG3+sYwSf6zFBa0Gi9ZDshD7+ad14DGOdTLjruRVgZXe2J+DcZ9iUhyR48z5g1PqRa20yt3Njna/veLJL/g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '>=6.0.0' + dependencies: + debug: 4.3.4 + eslint: 8.9.0 + eslint-scope: 7.1.1 + eslint-visitor-keys: 3.3.0 + espree: 9.3.1 + esquery: 1.4.0 + lodash: 4.17.21 + semver: 7.3.5 + transitivePeerDependencies: + - supports-color + dev: true + + /vue-router/4.0.15_vue@3.2.35: + resolution: {integrity: sha512-xa+pIN9ZqORdIW1MkN2+d9Ui2pCM1b/UMgwYUCZOiFYHAvz/slKKBDha8DLrh5aCG/RibtrpyhKjKOZ85tYyWg==} + peerDependencies: + vue: ^3.2.0 + dependencies: + '@vue/devtools-api': 6.1.4 + vue: 3.2.35 + dev: false + + /vue-tsc/0.34.15_typescript@4.6.2: + resolution: {integrity: sha512-xRNaOpg/UCHnRcz9vOdbIjB7uCQ0mifHpqNaejAho7em4WLOzNdJx4R9HMJrqWek44keg7AblIiwM+86QfXx9g==} + hasBin: true + peerDependencies: + typescript: '*' + dependencies: + '@volar/vue-typescript': 0.34.15 + typescript: 4.6.2 + dev: true + /vue/3.2.35: resolution: {integrity: sha512-mc/15B0Wjd/4JMMGOcXUQAeXfjyg8MImA2EVZucNdyDPJe1nXhMNbYXOEVPEGfk/mCeyszCzl44dSAhHhQVH8g==} dependencies: @@ -10526,7 +10947,6 @@ packages: '@vue/runtime-dom': 3.2.35 '@vue/server-renderer': 3.2.35_vue@3.2.35 '@vue/shared': 3.2.35 - dev: true /w3c-hr-time/1.0.2: resolution: {integrity: sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==}