From 59f7897d8e61af972d4cbee4a072f2acc4ba9a6f Mon Sep 17 00:00:00 2001 From: baldo Date: Tue, 22 Feb 2022 15:39:39 +0100 Subject: [PATCH] Initial setup for new frontend. --- frontend/.eslintrc.cjs | 15 + frontend/.gitignore | 28 + frontend/README.md | 52 + frontend/env.d.ts | 1 + frontend/index.html | 17 + frontend/package.json | 36 + frontend/public/apple-touch-icon.png | Bin 0 -> 18199 bytes frontend/public/favicon.ico | Bin 0 -> 4286 bytes frontend/public/icon-192.png | Bin 0 -> 19533 bytes frontend/public/icon-512.png | Bin 0 -> 56618 bytes frontend/public/icon.svg | 197 +++ frontend/public/manifest.webmanifest | 6 + frontend/src/App.vue | 17 + frontend/src/components/PageFooter.vue | 19 + frontend/src/components/PageHeader.vue | 15 + frontend/src/main.ts | 12 + frontend/src/router/index.ts | 21 + frontend/src/stores/statistics.ts | 29 + frontend/src/stores/version.ts | 38 + frontend/src/types/index.ts | 1 + frontend/src/types/shared.ts | 1 + frontend/src/utils/Api.ts | 37 + frontend/src/views/AdminDashboardView.vue | 30 + frontend/src/views/HomeView.vue | 8 + frontend/tsconfig.json | 20 + frontend/tsconfig.vite-config.json | 8 + frontend/tsconfig.vitest.json | 8 + frontend/vite.config.ts | 24 + frontend/yarn.lock | 1907 +++++++++++++++++++++ server/types/config.ts | 2 - server/types/index.ts | 11 +- server/types/shared.ts | 45 + shell.nix | 1 + 33 files changed, 2594 insertions(+), 12 deletions(-) create mode 100644 frontend/.eslintrc.cjs create mode 100644 frontend/.gitignore create mode 100644 frontend/README.md create mode 100644 frontend/env.d.ts create mode 100644 frontend/index.html create mode 100644 frontend/package.json create mode 100644 frontend/public/apple-touch-icon.png create mode 100644 frontend/public/favicon.ico create mode 100644 frontend/public/icon-192.png create mode 100644 frontend/public/icon-512.png create mode 100644 frontend/public/icon.svg create mode 100644 frontend/public/manifest.webmanifest create mode 100644 frontend/src/App.vue create mode 100644 frontend/src/components/PageFooter.vue create mode 100644 frontend/src/components/PageHeader.vue create mode 100644 frontend/src/main.ts create mode 100644 frontend/src/router/index.ts create mode 100644 frontend/src/stores/statistics.ts create mode 100644 frontend/src/stores/version.ts create mode 100644 frontend/src/types/index.ts create mode 120000 frontend/src/types/shared.ts create mode 100644 frontend/src/utils/Api.ts create mode 100644 frontend/src/views/AdminDashboardView.vue create mode 100644 frontend/src/views/HomeView.vue create mode 100644 frontend/tsconfig.json create mode 100644 frontend/tsconfig.vite-config.json create mode 100644 frontend/tsconfig.vitest.json create mode 100644 frontend/vite.config.ts create mode 100644 frontend/yarn.lock create mode 100644 server/types/shared.ts diff --git a/frontend/.eslintrc.cjs b/frontend/.eslintrc.cjs new file mode 100644 index 0000000..6809be8 --- /dev/null +++ b/frontend/.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/frontend/.gitignore b/frontend/.gitignore new file mode 100644 index 0000000..38adffa --- /dev/null +++ b/frontend/.gitignore @@ -0,0 +1,28 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +.DS_Store +dist +dist-ssr +coverage +*.local + +/cypress/videos/ +/cypress/screenshots/ + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/frontend/README.md b/frontend/README.md new file mode 100644 index 0000000..eef843c --- /dev/null +++ b/frontend/README.md @@ -0,0 +1,52 @@ +# frontend + +This template should help get you started developing with Vue 3 in Vite. + +## Recommended IDE Setup + +[VSCode](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=johnsoncodehk.volar) (and disable Vetur) + [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=johnsoncodehk.vscode-typescript-vue-plugin). + +## Type Support for `.vue` Imports in TS + +TypeScript cannot handle type information for `.vue` imports by default, so we replace the `tsc` CLI with `vue-tsc` for type checking. In editors, we need [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=johnsoncodehk.vscode-typescript-vue-plugin) to make the TypeScript language service aware of `.vue` types. + +If the standalone TypeScript plugin doesn't feel fast enough to you, Volar has also implemented a [Take Over Mode](https://github.com/johnsoncodehk/volar/discussions/471#discussioncomment-1361669) that is more performant. You can enable it by the following steps: + +1. Disable the built-in TypeScript Extension + 1) Run `Extensions: Show Built-in Extensions` from VSCode's command palette + 2) Find `TypeScript and JavaScript Language Features`, right click and select `Disable (Workspace)` +2. Reload the VSCode window by running `Developer: Reload Window` from the command palette. + +## Customize configuration + +See [Vite Configuration Reference](https://vitejs.dev/config/). + +## Project Setup + +```sh +yarn install +``` + +### Compile and Hot-Reload for Development + +```sh +yarn run dev +``` + +### Type-Check, Compile and Minify for Production + +```sh +yarn run build +``` + +### Run Unit Tests with [Vitest](https://vitest.dev/) + +```sh +yarn run test:unit +``` + +### Lint with [ESLint](https://eslint.org/) + +```sh +yarn run lint +``` diff --git a/frontend/env.d.ts b/frontend/env.d.ts new file mode 100644 index 0000000..11f02fe --- /dev/null +++ b/frontend/env.d.ts @@ -0,0 +1 @@ +/// diff --git a/frontend/index.html b/frontend/index.html new file mode 100644 index 0000000..1e112f4 --- /dev/null +++ b/frontend/index.html @@ -0,0 +1,17 @@ + + + + + + + + + + + Vite App + + +
+ + + diff --git a/frontend/package.json b/frontend/package.json new file mode 100644 index 0000000..3c7b4d3 --- /dev/null +++ b/frontend/package.json @@ -0,0 +1,36 @@ +{ + "name": "ffffng-frontend", + "version": "0.0.0", + "scripts": { + "dev": "vite", + "build": "vue-tsc --noEmit && vite build", + "preview": "vite preview --port 5050", + "test:unit": "vitest --environment jsdom", + "typecheck": "vue-tsc --noEmit", + "lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix --ignore-path .gitignore" + }, + "dependencies": { + "pinia": "^2.0.14", + "vue": "^3.2.34", + "vue-router": "^4.0.15" + }, + "devDependencies": { + "@rushstack/eslint-patch": "^1.1.3", + "@types/jsdom": "^16.2.14", + "@types/node": "^17.0.34", + "@vitejs/plugin-vue": "^2.3.3", + "@vue/eslint-config-prettier": "^7.0.0", + "@vue/eslint-config-typescript": "^10.0.0", + "@vue/test-utils": "^2.0.0-rc.21", + "@vue/tsconfig": "^0.1.3", + "eslint": "^8.15.0", + "eslint-plugin-vue": "^9.0.1", + "jsdom": "^19.0.0", + "prettier": "^2.6.2", + "sass": "^1.51.0", + "typescript": "~4.6.4", + "vite": "^2.9.9", + "vitest": "^0.12.6", + "vue-tsc": "^0.34.15" + } +} diff --git a/frontend/public/apple-touch-icon.png b/frontend/public/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..32d01f0f95e54c2831ab02bb76cdcda2b973fb8b GIT binary patch literal 18199 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 literal 0 HcmV?d00001 diff --git a/frontend/public/icon-512.png b/frontend/public/icon-512.png new file mode 100644 index 0000000000000000000000000000000000000000..fd0cffa3139ea40db12bba22fff443265365c150 GIT binary patch literal 56618 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + diff --git a/frontend/public/manifest.webmanifest b/frontend/public/manifest.webmanifest new file mode 100644 index 0000000..a893e5b --- /dev/null +++ b/frontend/public/manifest.webmanifest @@ -0,0 +1,6 @@ +{ + "icons": [ + { "src": "/icon-192.png", "type": "image/png", "sizes": "192x192" }, + { "src": "/icon-512.png", "type": "image/png", "sizes": "512x512" } + ] +} diff --git a/frontend/src/App.vue b/frontend/src/App.vue new file mode 100644 index 0000000..0d53028 --- /dev/null +++ b/frontend/src/App.vue @@ -0,0 +1,17 @@ + + + + + diff --git a/frontend/src/components/PageFooter.vue b/frontend/src/components/PageFooter.vue new file mode 100644 index 0000000..d0d5efe --- /dev/null +++ b/frontend/src/components/PageFooter.vue @@ -0,0 +1,19 @@ + + + + + diff --git a/frontend/src/components/PageHeader.vue b/frontend/src/components/PageHeader.vue new file mode 100644 index 0000000..a1a5eeb --- /dev/null +++ b/frontend/src/components/PageHeader.vue @@ -0,0 +1,15 @@ + + + + + diff --git a/frontend/src/main.ts b/frontend/src/main.ts new file mode 100644 index 0000000..786af44 --- /dev/null +++ b/frontend/src/main.ts @@ -0,0 +1,12 @@ +import { createApp } from "vue"; +import { createPinia } from "pinia"; + +import App from "./App.vue"; +import router from "./router"; + +const app = createApp(App); + +app.use(createPinia()); +app.use(router); + +app.mount("#app"); diff --git a/frontend/src/router/index.ts b/frontend/src/router/index.ts new file mode 100644 index 0000000..ea1ac7c --- /dev/null +++ b/frontend/src/router/index.ts @@ -0,0 +1,21 @@ +import { createRouter, createWebHistory } from "vue-router"; +import AdminDashboardView from "@/views/AdminDashboardView.vue"; +import HomeView from "@/views/HomeView.vue"; + +const router = createRouter({ + history: createWebHistory(import.meta.env.BASE_URL), + routes: [ + { + path: "/", + name: "home", + component: HomeView, + }, + { + path: "/admin", + name: "admin", + component: AdminDashboardView, + }, + ], +}); + +export default router; diff --git a/frontend/src/stores/statistics.ts b/frontend/src/stores/statistics.ts new file mode 100644 index 0000000..4d92cea --- /dev/null +++ b/frontend/src/stores/statistics.ts @@ -0,0 +1,29 @@ +import { defineStore } from "pinia"; +import { isStatistics, type Statistics } from "@/types"; +import { internalApi } from "@/utils/Api"; + +interface StatisticsStoreState { + statistics: Statistics | null; +} + +export const useStatisticsStore = defineStore({ + id: "statistics", + state(): StatisticsStoreState { + return { + statistics: null, + }; + }, + getters: { + getStatistics(state: StatisticsStoreState): Statistics | null { + return state.statistics; + }, + }, + actions: { + async refresh(): Promise { + this.statistics = await internalApi.get( + "statistics", + isStatistics + ); + }, + }, +}); diff --git a/frontend/src/stores/version.ts b/frontend/src/stores/version.ts new file mode 100644 index 0000000..6ff5674 --- /dev/null +++ b/frontend/src/stores/version.ts @@ -0,0 +1,38 @@ +import { defineStore } from "pinia"; +import { isObject, isVersion, type Version } from "@/types"; +import { api } from "@/utils/Api"; + +interface VersionResponse { + version: Version; +} + +function isVersionResponse(arg: unknown): arg is VersionResponse { + return isObject(arg) && isVersion((arg as VersionResponse).version); +} + +interface VersionStoreState { + version: Version | null; +} + +export const useVersionStore = defineStore({ + id: "version", + state(): VersionStoreState { + return { + version: null, + }; + }, + getters: { + getVersion(state: VersionStoreState): Version | null { + return state.version; + }, + }, + actions: { + async refresh(): Promise { + const response = await api.get( + "version", + isVersionResponse + ); + this.version = response.version; + }, + }, +}); diff --git a/frontend/src/types/index.ts b/frontend/src/types/index.ts new file mode 100644 index 0000000..2ee5f15 --- /dev/null +++ b/frontend/src/types/index.ts @@ -0,0 +1 @@ +export * from "./shared"; diff --git a/frontend/src/types/shared.ts b/frontend/src/types/shared.ts new file mode 120000 index 0000000..eecbe49 --- /dev/null +++ b/frontend/src/types/shared.ts @@ -0,0 +1 @@ +../../../server/types/shared.ts \ No newline at end of file diff --git a/frontend/src/utils/Api.ts b/frontend/src/utils/Api.ts new file mode 100644 index 0000000..282e44c --- /dev/null +++ b/frontend/src/utils/Api.ts @@ -0,0 +1,37 @@ +class Api { + private baseURL: string = import.meta.env.BASE_URL; + private apiPrefix = "api/"; + + constructor(apiPrefix?: string) { + if (apiPrefix) { + this.apiPrefix = apiPrefix; + } + } + + private toURL(path: string): string { + return this.baseURL + this.apiPrefix + path; + } + + async get(path: string, isT: (arg: unknown) => arg is T): Promise { + const url = this.toURL(path); + const result = await fetch(url); + const json = await result.json(); + + if (!isT(json)) { + console.log(json); + throw new Error(`API get result has wrong type. ${url} => ${json}`); + } + + return json; + } +} + +export const api = new Api(); + +class InternalApi extends Api { + constructor() { + super("internal/api/"); + } +} + +export const internalApi = new InternalApi(); diff --git a/frontend/src/views/AdminDashboardView.vue b/frontend/src/views/AdminDashboardView.vue new file mode 100644 index 0000000..8bccad8 --- /dev/null +++ b/frontend/src/views/AdminDashboardView.vue @@ -0,0 +1,30 @@ + + + + + diff --git a/frontend/src/views/HomeView.vue b/frontend/src/views/HomeView.vue new file mode 100644 index 0000000..cd9b7b1 --- /dev/null +++ b/frontend/src/views/HomeView.vue @@ -0,0 +1,8 @@ + + + + + diff --git a/frontend/tsconfig.json b/frontend/tsconfig.json new file mode 100644 index 0000000..2551bf2 --- /dev/null +++ b/frontend/tsconfig.json @@ -0,0 +1,20 @@ +{ + "extends": "@vue/tsconfig/tsconfig.web.json", + "include": ["env.d.ts", "src/**/*", "src/**/*.vue"], + "exclude": ["src/**/__tests__/*"], + "compilerOptions": { + "baseUrl": ".", + "paths": { + "@/*": ["./src/*"] + } + }, + + "references": [ + { + "path": "./tsconfig.vite-config.json" + }, + { + "path": "./tsconfig.vitest.json" + } + ] +} diff --git a/frontend/tsconfig.vite-config.json b/frontend/tsconfig.vite-config.json new file mode 100644 index 0000000..d20d872 --- /dev/null +++ b/frontend/tsconfig.vite-config.json @@ -0,0 +1,8 @@ +{ + "extends": "@vue/tsconfig/tsconfig.node.json", + "include": ["vite.config.*"], + "compilerOptions": { + "composite": true, + "types": ["node", "vitest"] + } +} diff --git a/frontend/tsconfig.vitest.json b/frontend/tsconfig.vitest.json new file mode 100644 index 0000000..f70b052 --- /dev/null +++ b/frontend/tsconfig.vitest.json @@ -0,0 +1,8 @@ +{ + "extends": "@vue/tsconfig/tsconfig.node.json", + "include": ["src/**/__tests__/*"], + "compilerOptions": { + "composite": true, + "types": ["node", "jsdom"] + } +} diff --git a/frontend/vite.config.ts b/frontend/vite.config.ts new file mode 100644 index 0000000..3c2176e --- /dev/null +++ b/frontend/vite.config.ts @@ -0,0 +1,24 @@ +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)), + }, + }, + server: { + proxy: { + "/api/": { + target: "http://localhost:8080", + }, + "/internal/api/": { + target: "http://localhost:8080", + }, + }, + }, +}); diff --git a/frontend/yarn.lock b/frontend/yarn.lock new file mode 100644 index 0000000..34238c6 --- /dev/null +++ b/frontend/yarn.lock @@ -0,0 +1,1907 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/parser@^7.16.4": + version "7.17.12" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.12.tgz#36c2ed06944e3691ba82735fc4cf62d12d491a23" + integrity sha512-FLzHmN9V3AJIrWfOpvRlZCeVg/WLdicSnTMsLur6uDj9TT8ymUlG9XxURdW/XvuygK+2CW0poOJABdA4m/YKxA== + +"@eslint/eslintrc@^1.2.3": + version "1.2.3" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.2.3.tgz#fcaa2bcef39e13d6e9e7f6271f4cc7cae1174886" + integrity sha512-uGo44hIwoLGNyduRpjdEpovcbMdd+Nv7amtmJxnKmI8xj6yd5LncmSwDa5NgX/41lIFJtkjD6YdVfgEzPfJ5UA== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^9.3.2" + globals "^13.9.0" + ignore "^5.2.0" + import-fresh "^3.2.1" + js-yaml "^4.1.0" + minimatch "^3.1.2" + strip-json-comments "^3.1.1" + +"@humanwhocodes/config-array@^0.9.2": + version "0.9.5" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.9.5.tgz#2cbaf9a89460da24b5ca6531b8bbfc23e1df50c7" + integrity sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw== + dependencies: + "@humanwhocodes/object-schema" "^1.2.1" + debug "^4.1.1" + minimatch "^3.0.4" + +"@humanwhocodes/object-schema@^1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" + integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@rushstack/eslint-patch@^1.1.3": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.1.3.tgz#6801033be7ff87a6b7cadaf5b337c9f366a3c4b0" + integrity sha512-WiBSI6JBIhC6LRIsB2Kwh8DsGTlbBU+mLRxJmAe3LjHTdkDpwIbEOZgoXBbZilk/vlfjK8i6nKRAvIRn1XaIMw== + +"@tootallnate/once@2": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" + integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== + +"@types/chai-subset@^1.3.3": + version "1.3.3" + resolved "https://registry.yarnpkg.com/@types/chai-subset/-/chai-subset-1.3.3.tgz#97893814e92abd2c534de422cb377e0e0bdaac94" + integrity sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw== + dependencies: + "@types/chai" "*" + +"@types/chai@*", "@types/chai@^4.3.1": + version "4.3.1" + resolved "https://registry.yarnpkg.com/@types/chai/-/chai-4.3.1.tgz#e2c6e73e0bdeb2521d00756d099218e9f5d90a04" + integrity sha512-/zPMqDkzSZ8t3VtxOa4KPq7uzzW978M9Tvh+j7GHKuo6k6GTLxPJ4J5gE5cjfJ26pnXst0N5Hax8Sr0T2Mi9zQ== + +"@types/jsdom@^16.2.14": + version "16.2.14" + resolved "https://registry.yarnpkg.com/@types/jsdom/-/jsdom-16.2.14.tgz#26fe9da6a8870715b154bb84cd3b2e53433d8720" + integrity sha512-6BAy1xXEmMuHeAJ4Fv4yXKwBDTGTOseExKE3OaHiNycdHdZw59KfYzrt0DkDluvwmik1HRt6QS7bImxUmpSy+w== + dependencies: + "@types/node" "*" + "@types/parse5" "*" + "@types/tough-cookie" "*" + +"@types/json-schema@^7.0.9": + version "7.0.11" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3" + integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ== + +"@types/node@*", "@types/node@^17.0.34": + version "17.0.34" + resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.34.tgz#3b0b6a50ff797280b8d000c6281d229f9c538cef" + integrity sha512-XImEz7XwTvDBtzlTnm8YvMqGW/ErMWBsKZ+hMTvnDIjGCKxwK5Xpc+c/oQjOauwq8M4OS11hEkpjX8rrI/eEgA== + +"@types/parse5@*": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@types/parse5/-/parse5-6.0.3.tgz#705bb349e789efa06f43f128cef51240753424cb" + integrity sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g== + +"@types/tough-cookie@*": + version "4.0.2" + resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-4.0.2.tgz#6286b4c7228d58ab7866d19716f3696e03a09397" + integrity sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw== + +"@typescript-eslint/eslint-plugin@^5.0.0": + version "5.25.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.25.0.tgz#e8ce050990e4d36cc200f2de71ca0d3eb5e77a31" + integrity sha512-icYrFnUzvm+LhW0QeJNKkezBu6tJs9p/53dpPLFH8zoM9w1tfaKzVurkPotEpAqQ8Vf8uaFyL5jHd0Vs6Z0ZQg== + dependencies: + "@typescript-eslint/scope-manager" "5.25.0" + "@typescript-eslint/type-utils" "5.25.0" + "@typescript-eslint/utils" "5.25.0" + debug "^4.3.4" + functional-red-black-tree "^1.0.1" + ignore "^5.2.0" + regexpp "^3.2.0" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/parser@^5.0.0": + version "5.25.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.25.0.tgz#fb533487147b4b9efd999a4d2da0b6c263b64f7f" + integrity sha512-r3hwrOWYbNKP1nTcIw/aZoH+8bBnh/Lh1iDHoFpyG4DnCpvEdctrSl6LOo19fZbzypjQMHdajolxs6VpYoChgA== + dependencies: + "@typescript-eslint/scope-manager" "5.25.0" + "@typescript-eslint/types" "5.25.0" + "@typescript-eslint/typescript-estree" "5.25.0" + debug "^4.3.4" + +"@typescript-eslint/scope-manager@5.25.0": + version "5.25.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.25.0.tgz#e78f1484bca7e484c48782075219c82c6b77a09f" + integrity sha512-p4SKTFWj+2VpreUZ5xMQsBMDdQ9XdRvODKXN4EksyBjFp2YvQdLkyHqOffakYZPuWJUDNu3jVXtHALDyTv3cww== + dependencies: + "@typescript-eslint/types" "5.25.0" + "@typescript-eslint/visitor-keys" "5.25.0" + +"@typescript-eslint/type-utils@5.25.0": + version "5.25.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.25.0.tgz#5750d26a5db4c4d68d511611e0ada04e56f613bc" + integrity sha512-B6nb3GK3Gv1Rsb2pqalebe/RyQoyG/WDy9yhj8EE0Ikds4Xa8RR28nHz+wlt4tMZk5bnAr0f3oC8TuDAd5CPrw== + dependencies: + "@typescript-eslint/utils" "5.25.0" + debug "^4.3.4" + tsutils "^3.21.0" + +"@typescript-eslint/types@5.25.0": + version "5.25.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.25.0.tgz#dee51b1855788b24a2eceeae54e4adb89b088dd8" + integrity sha512-7fWqfxr0KNHj75PFqlGX24gWjdV/FDBABXL5dyvBOWHpACGyveok8Uj4ipPX/1fGU63fBkzSIycEje4XsOxUFA== + +"@typescript-eslint/typescript-estree@5.25.0": + version "5.25.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.25.0.tgz#a7ab40d32eb944e3fb5b4e3646e81b1bcdd63e00" + integrity sha512-MrPODKDych/oWs/71LCnuO7NyR681HuBly2uLnX3r5i4ME7q/yBqC4hW33kmxtuauLTM0OuBOhhkFaxCCOjEEw== + dependencies: + "@typescript-eslint/types" "5.25.0" + "@typescript-eslint/visitor-keys" "5.25.0" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/utils@5.25.0": + version "5.25.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.25.0.tgz#272751fd737733294b4ab95e16c7f2d4a75c2049" + integrity sha512-qNC9bhnz/n9Kba3yI6HQgQdBLuxDoMgdjzdhSInZh6NaDnFpTUlwNGxplUFWfY260Ya0TRPvkg9dd57qxrJI9g== + dependencies: + "@types/json-schema" "^7.0.9" + "@typescript-eslint/scope-manager" "5.25.0" + "@typescript-eslint/types" "5.25.0" + "@typescript-eslint/typescript-estree" "5.25.0" + eslint-scope "^5.1.1" + eslint-utils "^3.0.0" + +"@typescript-eslint/visitor-keys@5.25.0": + version "5.25.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.25.0.tgz#33aa5fdcc5cedb9f4c8828c6a019d58548d4474b" + integrity sha512-yd26vFgMsC4h2dgX4+LR+GeicSKIfUvZREFLf3DDjZPtqgLx5AJZr6TetMNwFP9hcKreTTeztQYBTNbNoOycwA== + dependencies: + "@typescript-eslint/types" "5.25.0" + eslint-visitor-keys "^3.3.0" + +"@vitejs/plugin-vue@^2.3.3": + version "2.3.3" + resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-2.3.3.tgz#fbf80cc039b82ac21a1acb0f0478de8f61fbf600" + integrity sha512-SmQLDyhz+6lGJhPELsBdzXGc+AcaT8stgkbiTFGpXPe8Tl1tJaBw1A6pxDqDuRsVkD8uscrkx3hA7QDOoKYtyw== + +"@volar/code-gen@0.34.15": + version "0.34.15" + resolved "https://registry.yarnpkg.com/@volar/code-gen/-/code-gen-0.34.15.tgz#fd41f7fe0702b3f03f6ba1bd9e7ec7b51ab4f28a" + integrity sha512-g30glPo5N9bJocf1NBt802UcmqgZ3UtPst9b/Tangj+zR+K2RV5S2Un/suR6ZRiETXtg3nmrUcCgsTSJ6PC29A== + dependencies: + "@volar/source-map" "0.34.15" + +"@volar/source-map@0.34.15": + version "0.34.15" + resolved "https://registry.yarnpkg.com/@volar/source-map/-/source-map-0.34.15.tgz#f7adc70887e6f4dca3621ac6a54fda94f30c943d" + integrity sha512-Y3sENK/kqsgD7Vtve6gq6/Dor6JuoJWR+s9iwHcHTcA4VDkJnJRGHcvP8S3SVBsWl7T9qtlnvH3WCbFj7WlXrw== + +"@volar/vue-code-gen@0.34.15": + version "0.34.15" + resolved "https://registry.yarnpkg.com/@volar/vue-code-gen/-/vue-code-gen-0.34.15.tgz#d20c08d6bdf02041fa124426a4551163fc889488" + integrity sha512-GglGsHxPPb7mW2v//5MUrkzxAO68YEIL5bRwpZD0Cp9np34keQdd1SHB5DXdoyU38cnfHJWjBlqCYpTnz2CR/w== + dependencies: + "@volar/code-gen" "0.34.15" + "@volar/source-map" "0.34.15" + "@vue/compiler-core" "^3.2.31" + "@vue/compiler-dom" "^3.2.31" + "@vue/shared" "^3.2.31" + +"@volar/vue-typescript@0.34.15": + version "0.34.15" + resolved "https://registry.yarnpkg.com/@volar/vue-typescript/-/vue-typescript-0.34.15.tgz#24448e07de9c736f0154afb4f294a62925f99704" + 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.31" + "@vue/reactivity" "^3.2.31" + +"@vue/compiler-core@3.2.34", "@vue/compiler-core@^3.2.31": + version "3.2.34" + resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.2.34.tgz#e28fe9d2b22dcb60274daea6df07e653d8a3ecbe" + integrity sha512-Y53lv04ZhDfqflhk4yEgBZrCL1RipbxqmqJFfl1PRkjOzt0bvJpf1sCNN81QNfXohVwFGf+Hng2ztwLwOZgbuA== + dependencies: + "@babel/parser" "^7.16.4" + "@vue/shared" "3.2.34" + estree-walker "^2.0.2" + source-map "^0.6.1" + +"@vue/compiler-dom@3.2.34", "@vue/compiler-dom@^3.2.31": + version "3.2.34" + resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.2.34.tgz#3aadd83fd789c7feaa56f838e86c5c7146395579" + integrity sha512-MFLUYDgy0aES9x1goU/pgxpzgT9IZOndO8qwQVSyVfUvl/CywEBtfBi5+8fsiBDhoGIT7g8qcsUUF1NYViU2vQ== + dependencies: + "@vue/compiler-core" "3.2.34" + "@vue/shared" "3.2.34" + +"@vue/compiler-sfc@3.2.34", "@vue/compiler-sfc@^3.2.31": + version "3.2.34" + resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.2.34.tgz#3c02b261e631f20587b31e2b9ddc5596cd36c9da" + integrity sha512-I+vT4soKJtdsoREBDYAcz56+yGpZ5T3GUigvBFgC2yTeTtBtREOPzYw8kZyMuD2ZlryPYBkbV8D9xxcvU0j/aw== + dependencies: + "@babel/parser" "^7.16.4" + "@vue/compiler-core" "3.2.34" + "@vue/compiler-dom" "3.2.34" + "@vue/compiler-ssr" "3.2.34" + "@vue/reactivity-transform" "3.2.34" + "@vue/shared" "3.2.34" + estree-walker "^2.0.2" + magic-string "^0.25.7" + postcss "^8.1.10" + source-map "^0.6.1" + +"@vue/compiler-ssr@3.2.34": + version "3.2.34" + resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.2.34.tgz#5e2acc9c051cf877e6a5da20ffd4ff0257d9f4c5" + integrity sha512-zyaMdGJhxoA34ibWsXF7VH1PO5yrNB1MZg/ByRfXGM8JefGQaz+PpHvBy/5OI0ehEyhAyCb7279JdhYHacMZbw== + dependencies: + "@vue/compiler-dom" "3.2.34" + "@vue/shared" "3.2.34" + +"@vue/devtools-api@^6.0.0", "@vue/devtools-api@^6.1.4": + version "6.1.4" + resolved "https://registry.yarnpkg.com/@vue/devtools-api/-/devtools-api-6.1.4.tgz#b4aec2f4b4599e11ba774a50c67fa378c9824e53" + integrity sha512-IiA0SvDrJEgXvVxjNkHPFfDx6SXw0b/TUkqMcDZWNg9fnCAHbTpoo59YfJ9QLFkwa3raau5vSlRVzMSLDnfdtQ== + +"@vue/eslint-config-prettier@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/@vue/eslint-config-prettier/-/eslint-config-prettier-7.0.0.tgz#44ab55ca22401102b57795c59428e9dade72be34" + integrity sha512-/CTc6ML3Wta1tCe1gUeO0EYnVXfo3nJXsIhZ8WJr3sov+cGASr6yuiibJTL6lmIBm7GobopToOuB3B6AWyV0Iw== + dependencies: + eslint-config-prettier "^8.3.0" + eslint-plugin-prettier "^4.0.0" + +"@vue/eslint-config-typescript@^10.0.0": + version "10.0.0" + resolved "https://registry.yarnpkg.com/@vue/eslint-config-typescript/-/eslint-config-typescript-10.0.0.tgz#3b63c8cf276962cb89414857581b9b424acf2820" + integrity sha512-F94cL8ug3FaYXlCfU5/wiGjk1qeadmoBpRGAOBq+qre3Smdupa59dd6ZJrsfRODpsMPyTG7330juMDsUvpZ3Rw== + dependencies: + "@typescript-eslint/eslint-plugin" "^5.0.0" + "@typescript-eslint/parser" "^5.0.0" + vue-eslint-parser "^8.0.0" + +"@vue/reactivity-transform@3.2.34": + version "3.2.34" + resolved "https://registry.yarnpkg.com/@vue/reactivity-transform/-/reactivity-transform-3.2.34.tgz#852894181ce70a09a2a4c7605d31ad8b8d068d87" + integrity sha512-OtsrL4/i6Md279pMhZ8wRijeDhPSdnXrH9wmqAcKDhVcp1L2kSWlgVVLa1jGIyyFYE806YiJNJiGBvXPGXMzxw== + dependencies: + "@babel/parser" "^7.16.4" + "@vue/compiler-core" "3.2.34" + "@vue/shared" "3.2.34" + estree-walker "^2.0.2" + magic-string "^0.25.7" + +"@vue/reactivity@3.2.34", "@vue/reactivity@^3.2.31": + version "3.2.34" + resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.2.34.tgz#660e7217a529d788326d22ff89473cdd101ce1ad" + integrity sha512-xbRIOPqxdNOr0zS47moRS6zf4BKd0z+55R85UJlo4r5ezqCktk6fYy1atY4tGzo7Maqh6QoKw3LtIKvpz8d7WA== + dependencies: + "@vue/shared" "3.2.34" + +"@vue/runtime-core@3.2.34": + version "3.2.34" + resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.2.34.tgz#98cb706de9762485a81561329f70b740386f9f7b" + integrity sha512-GtaHqYiuEb56OA0cbMh20UPpDiXGRX+NS1buKif4OL341JJ3NtmNOIchCzknaN76oN6KqrLiO82/+TEZXl2Xtw== + dependencies: + "@vue/reactivity" "3.2.34" + "@vue/shared" "3.2.34" + +"@vue/runtime-dom@3.2.34": + version "3.2.34" + resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.2.34.tgz#747acc8a41410f59ecff97ef01cd2a665e6b1101" + integrity sha512-uqizbaJqmNH3O4TRr+8cM1tid5ODWHyQYZ3CLWcjn3dLkf0N7wvNuhUELQUZU/wQLvVMhJUQNrmOqckHLm6Xpw== + dependencies: + "@vue/runtime-core" "3.2.34" + "@vue/shared" "3.2.34" + csstype "^2.6.8" + +"@vue/server-renderer@3.2.34": + version "3.2.34" + resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.2.34.tgz#3efac854311cf13754734b3bae2829946f665f60" + integrity sha512-PMnBAq1BexPFXBxuLngp4lQvc0XQD1CBDIHtEsG0pRusGWVJddBUKlR/EnnSvGaJ34YmKkAl9kdvczOz0kddew== + dependencies: + "@vue/compiler-ssr" "3.2.34" + "@vue/shared" "3.2.34" + +"@vue/shared@3.2.34", "@vue/shared@^3.2.31": + version "3.2.34" + resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.2.34.tgz#b71750d05120feb644102088a09be64518cd3a86" + integrity sha512-zhEeB8TrFmTXmTXmu/wcjEhgrjO4xqdDQrCdPhjX7NxfoLqoBVKguOm8qyihWNLbP+41svYY4za9mqXyqFLzNg== + +"@vue/test-utils@^2.0.0-rc.21": + version "2.0.0-rc.21" + resolved "https://registry.yarnpkg.com/@vue/test-utils/-/test-utils-2.0.0-rc.21.tgz#9ebb0029bafa94ee55e90a6b4eab6d1e7b7a3152" + integrity sha512-wIJR4e/jISBKVKfiod3DV32BlDsoD744WVCuCaGtaSKvhvTL9gI5vl2AYSy00V51YaM8dCOFi3zcpCON8G1WqA== + +"@vue/tsconfig@^0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@vue/tsconfig/-/tsconfig-0.1.3.tgz#4a61dbd29783d01ddab504276dcf0c2b6988654f" + integrity sha512-kQVsh8yyWPvHpb8gIc9l/HIDiiVUy1amynLNpCy8p+FoCiZXCo6fQos5/097MmnNZc9AtseDsCrfkhqCrJ8Olg== + +abab@^2.0.5, abab@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" + integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== + +acorn-globals@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" + integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== + dependencies: + acorn "^7.1.1" + acorn-walk "^7.1.1" + +acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn-walk@^7.1.1: + version "7.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" + integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== + +acorn@^7.1.1: + version "7.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" + integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== + +acorn@^8.5.0, acorn@^8.7.1: + version "8.7.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.1.tgz#0197122c843d1bf6d0a5e83220a788f278f63c30" + integrity sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A== + +agent-base@6: + version "6.0.2" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== + dependencies: + debug "4" + +ajv@^6.10.0, ajv@^6.12.4: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +anymatch@~3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" + integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +assertion-error@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" + integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + +boolbase@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +braces@^3.0.2, braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + +browser-process-hrtime@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" + integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +chai@^4.3.6: + version "4.3.6" + resolved "https://registry.yarnpkg.com/chai/-/chai-4.3.6.tgz#ffe4ba2d9fa9d6680cc0b370adae709ec9011e9c" + integrity sha512-bbcp3YfHCUzMOvKqsztczerVgBKSsEijCySNlHHbX3VG1nskvqjz5Rfso1gGwD6w6oOV3eI60pKuMOV5MV7p3Q== + dependencies: + assertion-error "^1.1.0" + check-error "^1.0.2" + deep-eql "^3.0.1" + get-func-name "^2.0.0" + loupe "^2.3.1" + pathval "^1.1.1" + type-detect "^4.0.5" + +chalk@^4.0.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +check-error@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" + integrity sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA== + +"chokidar@>=3.0.0 <4.0.0": + version "3.5.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +combined-stream@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +cross-spawn@^7.0.2: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +cssom@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.5.0.tgz#d254fa92cd8b6fbd83811b9fbaed34663cc17c36" + integrity sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw== + +cssom@~0.3.6: + version "0.3.8" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" + integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== + +cssstyle@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" + integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== + dependencies: + cssom "~0.3.6" + +csstype@^2.6.8: + version "2.6.20" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.20.tgz#9229c65ea0b260cf4d3d997cb06288e36a8d6dda" + integrity sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA== + +data-urls@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-3.0.2.tgz#9cf24a477ae22bcef5cd5f6f0bfbc1d2d3be9143" + integrity sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ== + dependencies: + abab "^2.0.6" + whatwg-mimetype "^3.0.0" + whatwg-url "^11.0.0" + +debug@4, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +decimal.js@^10.3.1: + version "10.3.1" + resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.3.1.tgz#d8c3a444a9c6774ba60ca6ad7261c3a94fd5e783" + integrity sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ== + +deep-eql@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-3.0.1.tgz#dfc9404400ad1c8fe023e7da1df1c147c4b444df" + integrity sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw== + dependencies: + type-detect "^4.0.0" + +deep-is@^0.1.3, deep-is@~0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +domexception@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/domexception/-/domexception-4.0.0.tgz#4ad1be56ccadc86fc76d033353999a8037d03673" + integrity sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw== + dependencies: + webidl-conversions "^7.0.0" + +esbuild-android-64@0.14.39: + version "0.14.39" + resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.14.39.tgz#09f12a372eed9743fd77ff6d889ac14f7b340c21" + integrity sha512-EJOu04p9WgZk0UoKTqLId9VnIsotmI/Z98EXrKURGb3LPNunkeffqQIkjS2cAvidh+OK5uVrXaIP229zK6GvhQ== + +esbuild-android-arm64@0.14.39: + version "0.14.39" + resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.14.39.tgz#f608d00ea03fe26f3b1ab92a30f99220390f3071" + integrity sha512-+twajJqO7n3MrCz9e+2lVOnFplRsaGRwsq1KL/uOy7xK7QdRSprRQcObGDeDZUZsacD5gUkk6OiHiYp6RzU3CA== + +esbuild-darwin-64@0.14.39: + version "0.14.39" + resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.14.39.tgz#31528daa75b4c9317721ede344195163fae3e041" + integrity sha512-ImT6eUw3kcGcHoUxEcdBpi6LfTRWaV6+qf32iYYAfwOeV+XaQ/Xp5XQIBiijLeo+LpGci9M0FVec09nUw41a5g== + +esbuild-darwin-arm64@0.14.39: + version "0.14.39" + resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.39.tgz#247f770d86d90a215fa194f24f90e30a0bd97245" + integrity sha512-/fcQ5UhE05OiT+bW5v7/up1bDsnvaRZPJxXwzXsMRrr7rZqPa85vayrD723oWMT64dhrgWeA3FIneF8yER0XTw== + +esbuild-freebsd-64@0.14.39: + version "0.14.39" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.39.tgz#479414d294905055eb396ebe455ed42213284ee0" + integrity sha512-oMNH8lJI4wtgN5oxuFP7BQ22vgB/e3Tl5Woehcd6i2r6F3TszpCnNl8wo2d/KvyQ4zvLvCWAlRciumhQg88+kQ== + +esbuild-freebsd-arm64@0.14.39: + version "0.14.39" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.39.tgz#cedeb10357c88533615921ae767a67dc870a474c" + integrity sha512-1GHK7kwk57ukY2yI4ILWKJXaxfr+8HcM/r/JKCGCPziIVlL+Wi7RbJ2OzMcTKZ1HpvEqCTBT/J6cO4ZEwW4Ypg== + +esbuild-linux-32@0.14.39: + version "0.14.39" + resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.14.39.tgz#d9f008c4322d771f3958f59c1eee5a05cdf92485" + integrity sha512-g97Sbb6g4zfRLIxHgW2pc393DjnkTRMeq3N1rmjDUABxpx8SjocK4jLen+/mq55G46eE2TA0MkJ4R3SpKMu7dg== + +esbuild-linux-64@0.14.39: + version "0.14.39" + resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.14.39.tgz#ba58d7f66858913aeb1ab5c6bde1bbd824731795" + integrity sha512-4tcgFDYWdI+UbNMGlua9u1Zhu0N5R6u9tl5WOM8aVnNX143JZoBZLpCuUr5lCKhnD0SCO+5gUyMfupGrHtfggQ== + +esbuild-linux-arm64@0.14.39: + version "0.14.39" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.39.tgz#708785a30072702b5b1c16b65cf9c25c51202529" + integrity sha512-23pc8MlD2D6Px1mV8GMglZlKgwgNKAO8gsgsLLcXWSs9lQsCYkIlMo/2Ycfo5JrDIbLdwgP8D2vpfH2KcBqrDQ== + +esbuild-linux-arm@0.14.39: + version "0.14.39" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.14.39.tgz#4e8b5deaa7ab60d0d28fab131244ef82b40684f4" + integrity sha512-t0Hn1kWVx5UpCzAJkKRfHeYOLyFnXwYynIkK54/h3tbMweGI7dj400D1k0Vvtj2u1P+JTRT9tx3AjtLEMmfVBQ== + +esbuild-linux-mips64le@0.14.39: + version "0.14.39" + resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.39.tgz#6f3bf3023f711084e5a1e8190487d2020f39f0f7" + integrity sha512-epwlYgVdbmkuRr5n4es3B+yDI0I2e/nxhKejT9H0OLxFAlMkeQZxSpxATpDc9m8NqRci6Kwyb/SfmD1koG2Zuw== + +esbuild-linux-ppc64le@0.14.39: + version "0.14.39" + resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.39.tgz#900e718a4ea3f6aedde8424828eeefdd4b48d4b9" + integrity sha512-W/5ezaq+rQiQBThIjLMNjsuhPHg+ApVAdTz2LvcuesZFMsJoQAW2hutoyg47XxpWi7aEjJGrkS26qCJKhRn3QQ== + +esbuild-linux-riscv64@0.14.39: + version "0.14.39" + resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.39.tgz#dcbff622fa37047a75d2ff7a1d8d2949d80277e4" + integrity sha512-IS48xeokcCTKeQIOke2O0t9t14HPvwnZcy+5baG13Z1wxs9ZrC5ig5ypEQQh4QMKxURD5TpCLHw2W42CLuVZaA== + +esbuild-linux-s390x@0.14.39: + version "0.14.39" + resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.39.tgz#3f725a7945b419406c99d93744b28552561dcdfd" + integrity sha512-zEfunpqR8sMomqXhNTFEKDs+ik7HC01m3M60MsEjZOqaywHu5e5682fMsqOlZbesEAAaO9aAtRBsU7CHnSZWyA== + +esbuild-netbsd-64@0.14.39: + version "0.14.39" + resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.39.tgz#e10e40b6a765798b90d4eb85901cc85c8b7ff85e" + integrity sha512-Uo2suJBSIlrZCe4E0k75VDIFJWfZy+bOV6ih3T4MVMRJh1lHJ2UyGoaX4bOxomYN3t+IakHPyEoln1+qJ1qYaA== + +esbuild-openbsd-64@0.14.39: + version "0.14.39" + resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.39.tgz#935ec143f75ce10bd9cdb1c87fee00287eb0edbc" + integrity sha512-secQU+EpgUPpYjJe3OecoeGKVvRMLeKUxSMGHnK+aK5uQM3n1FPXNJzyz1LHFOo0WOyw+uoCxBYdM4O10oaCAA== + +esbuild-sunos-64@0.14.39: + version "0.14.39" + resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.39.tgz#0e7aa82b022a2e6d55b0646738b2582c2d72c3c0" + integrity sha512-qHq0t5gePEDm2nqZLb+35p/qkaXVS7oIe32R0ECh2HOdiXXkj/1uQI9IRogGqKkK+QjDG+DhwiUw7QoHur/Rwg== + +esbuild-windows-32@0.14.39: + version "0.14.39" + resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.14.39.tgz#3f1538241f31b538545f4b5841b248cac260fa35" + integrity sha512-XPjwp2OgtEX0JnOlTgT6E5txbRp6Uw54Isorm3CwOtloJazeIWXuiwK0ONJBVb/CGbiCpS7iP2UahGgd2p1x+Q== + +esbuild-windows-64@0.14.39: + version "0.14.39" + resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.14.39.tgz#b100c59f96d3c2da2e796e42fee4900d755d3e03" + integrity sha512-E2wm+5FwCcLpKsBHRw28bSYQw0Ikxb7zIMxw3OPAkiaQhLVr3dnVO8DofmbWhhf6b97bWzg37iSZ45ZDpLw7Ow== + +esbuild-windows-arm64@0.14.39: + version "0.14.39" + resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.39.tgz#00268517e665b33c89778d61f144e4256b39f631" + integrity sha512-sBZQz5D+Gd0EQ09tZRnz/PpVdLwvp/ufMtJ1iDFYddDaPpZXKqPyaxfYBLs3ueiaksQ26GGa7sci0OqFzNs7KA== + +esbuild@^0.14.27: + version "0.14.39" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.14.39.tgz#c926b2259fe6f6d3a94f528fb42e103c5a6d909a" + integrity sha512-2kKujuzvRWYtwvNjYDY444LQIA3TyJhJIX3Yo4+qkFlDDtGlSicWgeHVJqMUP/2sSfH10PGwfsj+O2ro1m10xQ== + 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" + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +escodegen@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.0.0.tgz#5e32b12833e8aa8fa35e1bf0befa89380484c7dd" + integrity sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw== + dependencies: + esprima "^4.0.1" + estraverse "^5.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + +eslint-config-prettier@^8.3.0: + version "8.5.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz#5a81680ec934beca02c7b1a61cf8ca34b66feab1" + integrity sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q== + +eslint-plugin-prettier@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-4.0.0.tgz#8b99d1e4b8b24a762472b4567992023619cb98e0" + integrity sha512-98MqmCJ7vJodoQK359bqQWaxOE0CS8paAz/GgjaZLyex4TTk3g9HugoO89EqWCrFiOqn9EVvcoo7gZzONCWVwQ== + dependencies: + prettier-linter-helpers "^1.0.0" + +eslint-plugin-vue@^9.0.1: + version "9.0.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-9.0.1.tgz#66ba4a6e4085a26a724adcde06eaf72b178285c9" + integrity sha512-/w/9/vzz+4bSYtp5UqXgJ0CfycXTMtpp6lkz7/fMp0CcJxPWyRP6Pr88ihhrsNEcVt2ZweMupWRNYa+5Md41LQ== + dependencies: + eslint-utils "^3.0.0" + natural-compare "^1.4.0" + nth-check "^2.0.1" + postcss-selector-parser "^6.0.9" + semver "^7.3.5" + vue-eslint-parser "^9.0.1" + xml-name-validator "^4.0.0" + +eslint-scope@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + +eslint-scope@^7.0.0, eslint-scope@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642" + integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + +eslint-utils@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" + integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== + dependencies: + eslint-visitor-keys "^2.0.0" + +eslint-visitor-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" + integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== + +eslint-visitor-keys@^3.1.0, eslint-visitor-keys@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" + integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== + +eslint@^8.15.0: + version "8.15.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.15.0.tgz#fea1d55a7062da48d82600d2e0974c55612a11e9" + integrity sha512-GG5USZ1jhCu8HJkzGgeK8/+RGnHaNYZGrGDzUtigK3BsGESW/rs2az23XqE0WVwDxy1VRvvjSSGu5nB0Bu+6SA== + dependencies: + "@eslint/eslintrc" "^1.2.3" + "@humanwhocodes/config-array" "^0.9.2" + ajv "^6.10.0" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.3.2" + doctrine "^3.0.0" + escape-string-regexp "^4.0.0" + eslint-scope "^7.1.1" + eslint-utils "^3.0.0" + eslint-visitor-keys "^3.3.0" + espree "^9.3.2" + esquery "^1.4.0" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + functional-red-black-tree "^1.0.1" + glob-parent "^6.0.1" + globals "^13.6.0" + ignore "^5.2.0" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + js-yaml "^4.1.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.1.2" + natural-compare "^1.4.0" + optionator "^0.9.1" + regexpp "^3.2.0" + strip-ansi "^6.0.1" + strip-json-comments "^3.1.0" + text-table "^0.2.0" + v8-compile-cache "^2.0.3" + +espree@^9.0.0, espree@^9.3.1, espree@^9.3.2: + version "9.3.2" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.3.2.tgz#f58f77bd334731182801ced3380a8cc859091596" + integrity sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA== + dependencies: + acorn "^8.7.1" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.3.0" + +esprima@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esquery@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" + integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.1.0, estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +estree-walker@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" + integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-diff@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" + integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== + +fast-glob@^3.2.9: + version "3.2.11" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.11.tgz#a1172ad95ceb8a16e20caa5c5e56480e5129c1d9" + integrity sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + +fastq@^1.6.0: + version "1.13.0" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.13.0.tgz#616760f88a7526bdfc596b7cab8c18938c36b98c" + integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw== + dependencies: + reusify "^1.0.4" + +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + +flat-cache@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" + integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== + dependencies: + flatted "^3.1.0" + rimraf "^3.0.2" + +flatted@^3.1.0: + version "3.2.5" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.5.tgz#76c8584f4fc843db64702a6bd04ab7a8bd666da3" + integrity sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg== + +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +fsevents@~2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= + +get-func-name@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.0.tgz#ead774abee72e20409433a066366023dd6887a41" + integrity sha1-6td0q+5y4gQJQzoGY2YCPdaIekE= + +glob-parent@^5.1.2, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-parent@^6.0.1: + version "6.0.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + +glob@^7.1.3: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^13.6.0, globals@^13.9.0: + version "13.15.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.15.0.tgz#38113218c907d2f7e98658af246cef8b77e90bac" + integrity sha512-bpzcOlgDhMG070Av0Vy5Owklpv1I6+j96GhUI7Rh7IzDCKLzboflLrrfqMu8NquDbiR4EOQk7XzJwqVJxicxog== + dependencies: + type-fest "^0.20.2" + +globby@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +html-encoding-sniffer@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz#2cb1a8cf0db52414776e5b2a7a04d5dd98158de9" + integrity sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA== + dependencies: + whatwg-encoding "^2.0.0" + +http-proxy-agent@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43" + integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w== + dependencies: + "@tootallnate/once" "2" + agent-base "6" + debug "4" + +https-proxy-agent@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== + dependencies: + agent-base "6" + debug "4" + +iconv-lite@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + +ignore@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" + integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== + +immutable@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.0.0.tgz#b86f78de6adef3608395efb269a91462797e2c23" + integrity sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw== + +import-fresh@^3.0.0, import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-core-module@^2.8.1: + version "2.9.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.9.0.tgz#e1c34429cd51c6dd9e09e0799e396e27b19a9c69" + integrity sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A== + dependencies: + has "^1.0.3" + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-potential-custom-element-name@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" + integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +jsdom@^19.0.0: + version "19.0.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-19.0.0.tgz#93e67c149fe26816d38a849ea30ac93677e16b6a" + integrity sha512-RYAyjCbxy/vri/CfnjUWJQQtZ3LKlLnDqj+9XLNnJPgEGeirZs3hllKR20re8LUZ6o1b1X4Jat+Qd26zmP41+A== + dependencies: + abab "^2.0.5" + acorn "^8.5.0" + acorn-globals "^6.0.0" + cssom "^0.5.0" + cssstyle "^2.3.0" + data-urls "^3.0.1" + decimal.js "^10.3.1" + domexception "^4.0.0" + escodegen "^2.0.0" + form-data "^4.0.0" + html-encoding-sniffer "^3.0.0" + http-proxy-agent "^5.0.0" + https-proxy-agent "^5.0.0" + is-potential-custom-element-name "^1.0.1" + nwsapi "^2.2.0" + parse5 "6.0.1" + saxes "^5.0.1" + symbol-tree "^3.2.4" + tough-cookie "^4.0.0" + w3c-hr-time "^1.0.2" + w3c-xmlserializer "^3.0.0" + webidl-conversions "^7.0.0" + whatwg-encoding "^2.0.0" + whatwg-mimetype "^3.0.0" + whatwg-url "^10.0.0" + ws "^8.2.3" + xml-name-validator "^4.0.0" + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +local-pkg@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/local-pkg/-/local-pkg-0.4.1.tgz#e7b0d7aa0b9c498a1110a5ac5b00ba66ef38cfff" + integrity sha512-lL87ytIGP2FU5PWwNDo0w3WhIo2gopIAxPg9RxDYF7m4rr5ahuZxP22xnJHIvaLTe4Z9P6uKKY2UHiwyB4pcrw== + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +loupe@^2.3.1: + version "2.3.4" + resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.4.tgz#7e0b9bffc76f148f9be769cb1321d3dcf3cb25f3" + integrity sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ== + dependencies: + get-func-name "^2.0.0" + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +magic-string@^0.25.7: + version "0.25.9" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.9.tgz#de7f9faf91ef8a1c91d02c2e5314c8277dbcdd1c" + integrity sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ== + dependencies: + sourcemap-codec "^1.4.8" + +merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +micromatch@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +mime-types@^2.1.12: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +minimatch@^3.0.4, minimatch@^3.1.1, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +nanoid@^3.3.4: + version "3.3.4" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" + integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +nth-check@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.0.1.tgz#2efe162f5c3da06a28959fbd3db75dbeea9f0fc2" + integrity sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w== + dependencies: + boolbase "^1.0.0" + +nwsapi@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.0.tgz#204879a9e3d068ff2a55139c2c772780681a38b7" + integrity sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ== + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +optionator@^0.8.1: + version "0.8.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" + integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.6" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + word-wrap "~1.2.3" + +optionator@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" + integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.3" + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse5@6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" + integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +pathval@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" + integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== + +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pinia@^2.0.14: + version "2.0.14" + resolved "https://registry.yarnpkg.com/pinia/-/pinia-2.0.14.tgz#0837898c20291ebac982bbfca95c8d3c6099925f" + integrity sha512-0nPuZR4TetT/WcLN+feMSjWJku3SQU7dBbXC6uw+R6FLQJCsg+/0pzXyD82T1FmAYe0lsx+jnEDQ1BLgkRKlxA== + dependencies: + "@vue/devtools-api" "^6.1.4" + vue-demi "*" + +postcss-selector-parser@^6.0.9: + version "6.0.10" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz#79b61e2c0d1bfc2602d549e11d0876256f8df88d" + integrity sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + +postcss@^8.1.10, postcss@^8.4.13: + version "8.4.14" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.14.tgz#ee9274d5622b4858c1007a74d76e42e56fd21caf" + integrity sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig== + dependencies: + nanoid "^3.3.4" + picocolors "^1.0.0" + source-map-js "^1.0.2" + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= + +prettier-linter-helpers@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" + integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== + dependencies: + fast-diff "^1.1.2" + +prettier@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.6.2.tgz#e26d71a18a74c3d0f0597f55f01fb6c06c206032" + integrity sha512-PkUpF+qoXTqhOeWL9fu7As8LXsIUZ1WYaJiY/a7McAQzxjk82OF0tibkFXVCDImZtWxbvojFjerkiLb0/q8mew== + +psl@^1.1.33: + version "1.8.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" + integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== + +punycode@^2.1.0, punycode@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +regexpp@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" + integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve@^1.22.0: + version "1.22.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.0.tgz#5e0b8c67c15df57a89bdbabe603a002f21731198" + integrity sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw== + dependencies: + is-core-module "^2.8.1" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +rollup@^2.59.0: + version "2.74.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.74.0.tgz#4f460e7979b8ed1f3aa0489059480a504de28b4a" + integrity sha512-RRwXTX5+ObPJhcMV6zP3RdHvy90/lBOUfbzL7IKkFjMJGAqeBGZiv9nZWm/DoTESaTE3GBkkzbU9QVN2AuCkjw== + optionalDependencies: + fsevents "~2.3.2" + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +"safer-buffer@>= 2.1.2 < 3.0.0": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sass@^1.51.0: + version "1.51.0" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.51.0.tgz#25ea36cf819581fe1fe8329e8c3a4eaaf70d2845" + integrity sha512-haGdpTgywJTvHC2b91GSq+clTKGbtkkZmVAb82jZQN/wTy6qs8DdFm2lhEQbEwrY0QDRgSQ3xDurqM977C3noA== + dependencies: + chokidar ">=3.0.0 <4.0.0" + immutable "^4.0.0" + source-map-js ">=0.6.2 <2.0.0" + +saxes@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" + integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== + dependencies: + xmlchars "^2.2.0" + +semver@^7.3.5, semver@^7.3.6, semver@^7.3.7: + version "7.3.7" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" + integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== + dependencies: + lru-cache "^6.0.0" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" + integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== + +source-map@^0.6.1, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +sourcemap-codec@^1.4.8: + version "1.4.8" + resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" + integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== + +strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +symbol-tree@^3.2.4: + version "3.2.4" + resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" + integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= + +tinypool@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/tinypool/-/tinypool-0.1.3.tgz#b5570b364a1775fd403de5e7660b325308fee26b" + integrity sha512-2IfcQh7CP46XGWGGbdyO4pjcKqsmVqFAPcXfPxcPXmOWt9cYkTP9HcDmGgsfijYoAEc4z9qcpM/BaBz46Y9/CQ== + +tinyspy@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/tinyspy/-/tinyspy-0.3.2.tgz#2f95cb14c38089ca690385f339781cd35faae566" + integrity sha512-2+40EP4D3sFYy42UkgkFFB+kiX2Tg3URG/lVvAZFfLxgGpnWl5qQJuBw1gaLttq8UOS+2p3C0WrhJnQigLTT2Q== + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +tough-cookie@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4" + integrity sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg== + dependencies: + psl "^1.1.33" + punycode "^2.1.1" + universalify "^0.1.2" + +tr46@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-3.0.0.tgz#555c4e297a950617e8eeddef633c87d4d9d6cbf9" + integrity sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA== + dependencies: + punycode "^2.1.1" + +tslib@^1.8.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tsutils@^3.21.0: + version "3.21.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" + integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== + dependencies: + tslib "^1.8.1" + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= + dependencies: + prelude-ls "~1.1.2" + +type-detect@^4.0.0, type-detect@^4.0.5: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +typescript@~4.6.4: + version "4.6.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.6.4.tgz#caa78bbc3a59e6a5c510d35703f6a09877ce45e9" + integrity sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg== + +universalify@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +util-deprecate@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + +v8-compile-cache@^2.0.3: + version "2.3.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" + integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== + +vite@^2.9.8, vite@^2.9.9: + version "2.9.9" + resolved "https://registry.yarnpkg.com/vite/-/vite-2.9.9.tgz#8b558987db5e60fedec2f4b003b73164cb081c5e" + integrity sha512-ffaam+NgHfbEmfw/Vuh6BHKKlI/XIAhxE5QSS7gFLIngxg171mg1P3a4LSRME0z2ZU1ScxoKzphkipcYwSD5Ew== + dependencies: + esbuild "^0.14.27" + postcss "^8.4.13" + resolve "^1.22.0" + rollup "^2.59.0" + optionalDependencies: + fsevents "~2.3.2" + +vitest@^0.12.6: + version "0.12.6" + resolved "https://registry.yarnpkg.com/vitest/-/vitest-0.12.6.tgz#9de2cca78e97effe5395230486ebd3830d0721dd" + integrity sha512-YWbCTv0XKBuBw5YtuW/iufuguoi8QhGpYyi2g57Oo7akpscMkkWTAaZGgY0ux1oJJtO/pc/8GFt0EF32WFBUUQ== + dependencies: + "@types/chai" "^4.3.1" + "@types/chai-subset" "^1.3.3" + chai "^4.3.6" + local-pkg "^0.4.1" + tinypool "^0.1.3" + tinyspy "^0.3.2" + vite "^2.9.8" + +vue-demi@*: + version "0.12.5" + resolved "https://registry.yarnpkg.com/vue-demi/-/vue-demi-0.12.5.tgz#8eeed566a7d86eb090209a11723f887d28aeb2d1" + integrity sha512-BREuTgTYlUr0zw0EZn3hnhC3I6gPWv+Kwh4MCih6QcAeaTlaIX0DwOVN0wHej7hSvDPecz4jygy/idsgKfW58Q== + +vue-eslint-parser@^8.0.0: + version "8.3.0" + resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-8.3.0.tgz#5d31129a1b3dd89c0069ca0a1c88f970c360bd0d" + integrity sha512-dzHGG3+sYwSf6zFBa0Gi9ZDshD7+ad14DGOdTLjruRVgZXe2J+DcZ9iUhyR48z5g1PqRa20yt3Njna/veLJL/g== + dependencies: + debug "^4.3.2" + eslint-scope "^7.0.0" + eslint-visitor-keys "^3.1.0" + espree "^9.0.0" + esquery "^1.4.0" + lodash "^4.17.21" + semver "^7.3.5" + +vue-eslint-parser@^9.0.1: + version "9.0.2" + resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-9.0.2.tgz#d2535516f3f55adb387939427fe741065eb7948a" + integrity sha512-uCPQwTGjOtAYrwnU+76pYxalhjsh7iFBsHwBqDHiOPTxtICDaraO4Szw54WFTNZTAEsgHHzqFOu1mmnBOBRzDA== + dependencies: + debug "^4.3.4" + 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.6" + +vue-router@^4.0.15: + version "4.0.15" + resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-4.0.15.tgz#b4a0661efe197f8c724e0f233308f8776e2c3667" + integrity sha512-xa+pIN9ZqORdIW1MkN2+d9Ui2pCM1b/UMgwYUCZOiFYHAvz/slKKBDha8DLrh5aCG/RibtrpyhKjKOZ85tYyWg== + dependencies: + "@vue/devtools-api" "^6.0.0" + +vue-tsc@^0.34.15: + version "0.34.15" + resolved "https://registry.yarnpkg.com/vue-tsc/-/vue-tsc-0.34.15.tgz#fd34d7257860477b501c9e60fb5549f2733e91a8" + integrity sha512-xRNaOpg/UCHnRcz9vOdbIjB7uCQ0mifHpqNaejAho7em4WLOzNdJx4R9HMJrqWek44keg7AblIiwM+86QfXx9g== + dependencies: + "@volar/vue-typescript" "0.34.15" + +vue@^3.2.34: + version "3.2.34" + resolved "https://registry.yarnpkg.com/vue/-/vue-3.2.34.tgz#4d42a929398a8a2e1dff25ceddd4451b3add841c" + integrity sha512-gXRg5v8OSmGT4ZiQ/X/Pcz6Fr2igHQx/wvRH/pLnt0VvjfGGqrwhnwjYZilLP4HBcO211rMD9PpU6lfWfIv3wg== + dependencies: + "@vue/compiler-dom" "3.2.34" + "@vue/compiler-sfc" "3.2.34" + "@vue/runtime-dom" "3.2.34" + "@vue/server-renderer" "3.2.34" + "@vue/shared" "3.2.34" + +w3c-hr-time@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" + integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== + dependencies: + browser-process-hrtime "^1.0.0" + +w3c-xmlserializer@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-3.0.0.tgz#06cdc3eefb7e4d0b20a560a5a3aeb0d2d9a65923" + integrity sha512-3WFqGEgSXIyGhOmAFtlicJNMjEps8b1MG31NCA0/vOF9+nKMUW1ckhi9cnNHmf88Rzw5V+dwIwsm2C7X8k9aQg== + dependencies: + xml-name-validator "^4.0.0" + +webidl-conversions@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a" + integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== + +whatwg-encoding@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz#e7635f597fd87020858626805a2729fa7698ac53" + integrity sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg== + dependencies: + iconv-lite "0.6.3" + +whatwg-mimetype@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz#5fa1a7623867ff1af6ca3dc72ad6b8a4208beba7" + integrity sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q== + +whatwg-url@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-10.0.0.tgz#37264f720b575b4a311bd4094ed8c760caaa05da" + integrity sha512-CLxxCmdUby142H5FZzn4D8ikO1cmypvXVQktsgosNy4a4BHrDHeciBBGZhb0bNoR5/MltoCatso+vFjjGx8t0w== + dependencies: + tr46 "^3.0.0" + webidl-conversions "^7.0.0" + +whatwg-url@^11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-11.0.0.tgz#0a849eebb5faf2119b901bb76fd795c2848d4018" + integrity sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ== + dependencies: + tr46 "^3.0.0" + webidl-conversions "^7.0.0" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +word-wrap@^1.2.3, word-wrap@~1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +ws@^8.2.3: + version "8.6.0" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.6.0.tgz#e5e9f1d9e7ff88083d0c0dd8281ea662a42c9c23" + integrity sha512-AzmM3aH3gk0aX7/rZLYvjdvZooofDu3fFOzGqcSnQ1tOcTWwhM/o+q++E8mAyVVIyUdajrkzWUGftaVSDLn1bw== + +xml-name-validator@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz#79a006e2e63149a8600f15430f0a4725d1524835" + integrity sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw== + +xmlchars@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" + integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== diff --git a/server/types/config.ts b/server/types/config.ts index acebb9c..f369ccb 100644 --- a/server/types/config.ts +++ b/server/types/config.ts @@ -1,7 +1,5 @@ import {ArrayField, Field, RawJsonField} from "sparkson" -export type Version = string; - // TODO: Replace string types by more specific types like URL, Password, etc. export class LoggingConfig { diff --git a/server/types/index.ts b/server/types/index.ts index 8b27f9d..bc0e85e 100644 --- a/server/types/index.ts +++ b/server/types/index.ts @@ -1,5 +1,6 @@ export * from "./config"; export * from "./logger"; +export * from "./shared"; // TODO: Token type. export type Token = string; @@ -48,16 +49,6 @@ export type NodeSecrets = { monitoringToken?: MonitoringToken, }; -export type NodeStatistics = { - registered: number, - withVPN: number, - withCoords: number, - monitoring: { - active: number, - pending: number - } -}; - export type MailId = string; export type MailData = any; export type MailType = string; diff --git a/server/types/shared.ts b/server/types/shared.ts new file mode 100644 index 0000000..4d143bd --- /dev/null +++ b/server/types/shared.ts @@ -0,0 +1,45 @@ +// Types shared with the client. + +export function isObject(arg: unknown): arg is object { + return arg !== null && typeof arg === "object"; +} + +export type Version = string; + +export function isVersion(arg: unknown): arg is Version { + // Should be good enough for now. + return typeof arg === "string"; +} + +export type NodeStatistics = { + registered: number; + withVPN: number; + withCoords: number; + monitoring: { + active: number; + pending: number; + }; +}; + +export function isNodeStatistics(arg: unknown): arg is NodeStatistics { + if (!isObject(arg)) { + return false; + } + const stats = arg as NodeStatistics; + return ( + typeof stats.registered === "number" && + typeof stats.withVPN === "number" && + typeof stats.withCoords === "number" && + typeof stats.monitoring === "object" && + typeof stats.monitoring.active === "number" && + typeof stats.monitoring.pending === "number" + ); +} + +export interface Statistics { + nodes: NodeStatistics; +} + +export function isStatistics(arg: unknown): arg is Statistics { + return isObject(arg) && isNodeStatistics((arg as Statistics).nodes); +} diff --git a/shell.nix b/shell.nix index 6934ce6..96db906 100644 --- a/shell.nix +++ b/shell.nix @@ -11,6 +11,7 @@ stdenv.mkDerivation rec { nasm nodejs-16_x rsync + sass sqlite yarn zlib