diff --git a/packages/nuxt-layer/.editorconfig b/packages/nuxt-layer/.editorconfig new file mode 100644 index 00000000..007463b4 --- /dev/null +++ b/packages/nuxt-layer/.editorconfig @@ -0,0 +1,12 @@ +root = true + +[*] +indent_size = 2 +indent_style = space +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.md] +trim_trailing_whitespace = false diff --git a/packages/nuxt-layer/.eslintrc.cjs b/packages/nuxt-layer/.eslintrc.cjs new file mode 100644 index 00000000..774ebdad --- /dev/null +++ b/packages/nuxt-layer/.eslintrc.cjs @@ -0,0 +1,4 @@ +module.exports = { + root: true, + extends: ["@nuxt/eslint-config"], +}; diff --git a/packages/nuxt-layer/.gitignore b/packages/nuxt-layer/.gitignore new file mode 100644 index 00000000..2866c971 --- /dev/null +++ b/packages/nuxt-layer/.gitignore @@ -0,0 +1,21 @@ +node_modules +*.log +.nuxt +nuxt.d.ts +.output +.data +.env +package-lock.json +framework +dist +.DS_Store + +# Yarn +.yarn/cache +.yarn/*state* + +# Local History +.history + +# VSCode +.vscode/ diff --git a/packages/nuxt-layer/.nuxtrc b/packages/nuxt-layer/.nuxtrc new file mode 100644 index 00000000..9eb49a5d --- /dev/null +++ b/packages/nuxt-layer/.nuxtrc @@ -0,0 +1 @@ +typescript.includeWorkspace = true diff --git a/packages/nuxt-layer/README.md b/packages/nuxt-layer/README.md new file mode 100644 index 00000000..7ce15315 --- /dev/null +++ b/packages/nuxt-layer/README.md @@ -0,0 +1,73 @@ +# Nuxt Layer Starter + +Create Nuxt extendable layer with this GitHub template. + +## Setup + +Make sure to install the dependencies: + +```bash +pnpm install +``` + +## Working on your theme + +Your theme is at the root of this repository, it is exactly like a regular Nuxt project, except you can publish it on NPM. + +The `.playground` directory should help you on trying your theme during development. + +Running `pnpm dev` will prepare and boot `.playground` directory, which imports your theme itself. + +## Distributing your theme + +Your Nuxt layer is shaped exactly the same as any other Nuxt project, except you can publish it on NPM. + +To do so, you only have to check if `files` in `package.json` are valid, then run: + +```bash +npm publish --access public +``` + +Once done, your users will only have to run: + +```bash +npm install --save your-theme +``` + +Then add the dependency to their `extends` in `nuxt.config`: + +```ts +defineNuxtConfig({ + extends: 'your-theme' +}) +``` + +## Development Server + +Start the development server on http://localhost:3000 + +```bash +pnpm dev +``` + +## Production + +Build the application for production: + +```bash +pnpm build +``` + +Or statically generate it with: + +```bash +pnpm generate +``` + +Locally preview production build: + +```bash +pnpm preview +``` + +Checkout the [deployment documentation](https://nuxt.com/docs/getting-started/deployment) for more information. diff --git a/packages/nuxt-layer/app.config.ts b/packages/nuxt-layer/app.config.ts new file mode 100644 index 00000000..759c7c44 --- /dev/null +++ b/packages/nuxt-layer/app.config.ts @@ -0,0 +1,7 @@ +export default defineAppConfig({ +}) + +declare module '@nuxt/schema' { + interface AppConfigInput { + } +} diff --git a/packages/nuxt-layer/app.vue b/packages/nuxt-layer/app.vue new file mode 100644 index 00000000..336749fe --- /dev/null +++ b/packages/nuxt-layer/app.vue @@ -0,0 +1,3 @@ + diff --git a/packages/nuxt-layer/nuxt.config.ts b/packages/nuxt-layer/nuxt.config.ts new file mode 100644 index 00000000..be5dd300 --- /dev/null +++ b/packages/nuxt-layer/nuxt.config.ts @@ -0,0 +1,7 @@ +// https://nuxt.com/docs/api/configuration/nuxt-config +export default defineNuxtConfig({ + devtools: { enabled: true }, + build: { + transpile: ['tslib', '@apollo/client', '@apollo/client/core', '@vue/apollo-composable', '@vue/apollo-option', 'ts-invariant', 'vue-toastification', '@erpgap/odoo-sdk-api-client'] + }, +}) diff --git a/packages/nuxt-layer/package.json b/packages/nuxt-layer/package.json new file mode 100644 index 00000000..62df42e6 --- /dev/null +++ b/packages/nuxt-layer/package.json @@ -0,0 +1,24 @@ +{ + "name": "@erpgap/odoo-nuxt-layer", + "type": "module", + "version": "0.0.1", + "main": "./nuxt.config.ts", + "files": [ + "server" + ], + "scripts": { + "dev": "nuxi dev", + "build": "nuxt build", + "generate": "nuxt generate", + "preview": "nuxt preview", + "lint": "eslint .", + "postinstall": "nuxt prepare" + }, + "devDependencies": { + "@erpgap/odoo-sdk-api-client": "*", + "@nuxt/eslint-config": "^0.1.1", + "eslint": "^8.28.0", + "nuxt": "^3.8.0", + "typescript": "^4.9.3" + } +} \ No newline at end of file diff --git a/packages/nuxt-layer/server/api/odoo/mutation.post.ts b/packages/nuxt-layer/server/api/odoo/mutation.post.ts new file mode 100644 index 00000000..6ccc59e9 --- /dev/null +++ b/packages/nuxt-layer/server/api/odoo/mutation.post.ts @@ -0,0 +1,20 @@ +import { Endpoints } from '@erpgap/odoo-sdk-api-client'; + +export default defineEventHandler(async (event) => { + const body = await readBody(event); + + const api: Endpoints = event.context.apolloClient.api; + + const response = await api.mutation(body?.[0], body?.[1]); + + if ((response.data as any)?.cookie) { + appendResponseHeader(event, 'Set-cookie', (response.data as any)?.cookie); + } + + if (response.errors) { + throw createError({ statusCode: 400, data: response.errors }); + } + + return response.data; +}); + diff --git a/packages/nuxt-layer/server/api/odoo/query.post.ts b/packages/nuxt-layer/server/api/odoo/query.post.ts new file mode 100644 index 00000000..514e4e50 --- /dev/null +++ b/packages/nuxt-layer/server/api/odoo/query.post.ts @@ -0,0 +1,21 @@ +import { Endpoints } from '@erpgap/odoo-sdk-api-client'; +import { getCached } from '~/server/utils/getCached'; + +export default defineEventHandler(async (event) => { + const body = await readBody(event); + const api: Endpoints = event.context.apolloClient.api; + + // const data = await getCached(event, body); + const response = await api.query(body?.[0], body?.[1]); + + if ((response.data as any)?.cookie) { + appendResponseHeader(event, 'Set-cookie', (response.data as any)?.cookie); + } + + if (response.errors) { + throw createError(response.errors[0].message); + } + + return response.data; +}); + diff --git a/packages/nuxt-layer/server/middleware/apolloClient.ts b/packages/nuxt-layer/server/middleware/apolloClient.ts new file mode 100644 index 00000000..e0389f66 --- /dev/null +++ b/packages/nuxt-layer/server/middleware/apolloClient.ts @@ -0,0 +1,20 @@ +import { createApiClient, MiddlewareConfig } from '@erpgap/odoo-sdk-api-client/server'; +import { Queries } from '~/server/queries'; +import { Mutations } from '~/server/mutations'; + +export default defineEventHandler((event) => { + + const config : MiddlewareConfig = { + // https://odoo-cla.ce.promptequation.com/graphql/vsf + odooGraphqlUrl: `${process.env.ODOO_BASE_URL}graphql/vsf`, + queries: { ...Queries, ...Mutations }, + headers: { + 'REAL-IP': getRequestIP(event) || '', + Cookie: `session_id=${parseCookies(event).session_id}`, + 'resquest-host': getRequestHost(event) + } + }; + + event.context.apolloClient = createApiClient(config); +}); + diff --git a/packages/nuxt-layer/server/mutations/ChangePasswordMutation.ts b/packages/nuxt-layer/server/mutations/ChangePasswordMutation.ts new file mode 100644 index 00000000..bb58ef3e --- /dev/null +++ b/packages/nuxt-layer/server/mutations/ChangePasswordMutation.ts @@ -0,0 +1,10 @@ +import { gql } from '@apollo/client/core'; +export default gql` +mutation($newPassword: String!, $token: String!) { + changePassword(newPassword: $newPassword, token: $token) { + id + name + email + } + } +`; diff --git a/packages/nuxt-layer/server/mutations/CreateNewAccountMutation.ts b/packages/nuxt-layer/server/mutations/CreateNewAccountMutation.ts new file mode 100644 index 00000000..76aafe38 --- /dev/null +++ b/packages/nuxt-layer/server/mutations/CreateNewAccountMutation.ts @@ -0,0 +1,25 @@ +import { gql } from '@apollo/client/core'; + +export default gql` +mutation register($companyName: String!, $firstName: String!, $lastName: String!, $email: String!, $location : String!$password: String!, $phoneNumber: String!) { + register(companyName: $companyName, firstName: $firstName, lastName: $lastName, email: $email, location: $location, password: $password, phoneNumber: $phoneNumber) { + partner{ + id + name + street + street2 + city + state + { + id + } + country + { + id + } + email + phone + } + } + }`; + diff --git a/packages/nuxt-layer/server/mutations/LoginMutation.ts b/packages/nuxt-layer/server/mutations/LoginMutation.ts new file mode 100644 index 00000000..b76b450b --- /dev/null +++ b/packages/nuxt-layer/server/mutations/LoginMutation.ts @@ -0,0 +1,23 @@ +import { gql } from '@apollo/client/core'; +export default gql` +mutation($email: String!, $password: String!) { + login(email: $email, password: $password) { + partner{ + id + name + street + street2 + city + state + { + id + } + country + { + id + } + email + phone + } + } + }`; diff --git a/packages/nuxt-layer/server/mutations/LogoutMutation.ts b/packages/nuxt-layer/server/mutations/LogoutMutation.ts new file mode 100644 index 00000000..3f8eb4d4 --- /dev/null +++ b/packages/nuxt-layer/server/mutations/LogoutMutation.ts @@ -0,0 +1,6 @@ +import { gql } from '@apollo/client/core'; +export default gql` +mutation { + logout + } +`; diff --git a/packages/nuxt-layer/server/mutations/SendResetPasswordMutation.ts b/packages/nuxt-layer/server/mutations/SendResetPasswordMutation.ts new file mode 100644 index 00000000..28f67e1f --- /dev/null +++ b/packages/nuxt-layer/server/mutations/SendResetPasswordMutation.ts @@ -0,0 +1,10 @@ +import { gql } from '@apollo/client/core'; +export default gql` +mutation($email: String!) { + resetPassword(email: $email) { + id + name + email + } + } +`; diff --git a/packages/nuxt-layer/server/mutations/UpdatePasswordMutation.ts b/packages/nuxt-layer/server/mutations/UpdatePasswordMutation.ts new file mode 100644 index 00000000..7671f6d5 --- /dev/null +++ b/packages/nuxt-layer/server/mutations/UpdatePasswordMutation.ts @@ -0,0 +1,8 @@ +import { gql } from '@apollo/client/core'; +export default gql` +mutation($currentPassword: String!, $newPassword: String!){ + updatePassword(currentPassword: $currentPassword, newPassword: $newPassword) { + id + } + } +`; diff --git a/packages/nuxt-layer/server/mutations/index.ts b/packages/nuxt-layer/server/mutations/index.ts new file mode 100644 index 00000000..4e7d9ffd --- /dev/null +++ b/packages/nuxt-layer/server/mutations/index.ts @@ -0,0 +1,30 @@ +import { DocumentNode } from '@apollo/client'; +import LoginMutation from './LoginMutation'; +import LogoutMutation from './LogoutMutation'; +import CreateNewAccountMutation from './CreateNewAccountMutation'; +import SendResetPasswordMutation from './SendResetPasswordMutation'; +import UpdatePasswordMutation from './UpdatePasswordMutation'; +import ChangePasswordMutation from './ChangePasswordMutation'; + +enum MutationName { + LoginMutation = 'LoginMutation', + LogoutMutation = 'LogoutMutation', + CreateNewAccountMutation = 'CreateNewAccountMutation', + SendResetPasswordMutation = 'SendResetPasswordMutation', + UpdatePasswordMutation = 'UpdatePasswordMutation', + ChangePasswordMutation = 'ChangePasswordMutation' + } + +const Mutations : Record = { + LoginMutation, + LogoutMutation, + CreateNewAccountMutation, + SendResetPasswordMutation, + UpdatePasswordMutation, + ChangePasswordMutation +}; + +export { + Mutations, + MutationName +}; diff --git a/packages/nuxt-layer/server/queries/LoadUserQuery.ts b/packages/nuxt-layer/server/queries/LoadUserQuery.ts new file mode 100644 index 00000000..dd450a71 --- /dev/null +++ b/packages/nuxt-layer/server/queries/LoadUserQuery.ts @@ -0,0 +1,7 @@ +import { gql } from '@apollo/client/core'; +import {partnerFragment} from './fragments'; +export default gql` + query LoadUser { + ${partnerFragment} + } +`; diff --git a/packages/nuxt-layer/server/queries/ProductVariantQuery.ts b/packages/nuxt-layer/server/queries/ProductVariantQuery.ts new file mode 100644 index 00000000..1486d4d1 --- /dev/null +++ b/packages/nuxt-layer/server/queries/ProductVariantQuery.ts @@ -0,0 +1,29 @@ +import { gql } from '@apollo/client/core'; +export default gql` + query ProductVariant($productTemplateId: Int, $combinationId: [Int]) { + productVariant( productTemplateId: $productTemplateId combinationId: $combinationId) { + product { + id + image + variantPrice + variantPriceAfterDiscount + variantHasDiscountedPrice + alternativeProducts{ + id + typeId + visibility + status + name + displayName + sku + barcode + description + } + } + productTemplateId + displayName + price + listPrice + hasDiscountedPrice + } + }`; diff --git a/packages/nuxt-layer/server/queries/fragments/index.ts b/packages/nuxt-layer/server/queries/fragments/index.ts new file mode 100644 index 00000000..4d8bf006 --- /dev/null +++ b/packages/nuxt-layer/server/queries/fragments/index.ts @@ -0,0 +1 @@ +export { default as partnerFragment } from './partnerFragment'; diff --git a/packages/nuxt-layer/server/queries/fragments/partnerFragment.ts b/packages/nuxt-layer/server/queries/fragments/partnerFragment.ts new file mode 100644 index 00000000..2c31541f --- /dev/null +++ b/packages/nuxt-layer/server/queries/fragments/partnerFragment.ts @@ -0,0 +1,19 @@ +export default ` +partner{ + id + name + street + street2 + city + state + { + id + } + country + { + id + } + email + phone + } +`; diff --git a/packages/nuxt-layer/server/queries/index.ts b/packages/nuxt-layer/server/queries/index.ts new file mode 100644 index 00000000..883858d2 --- /dev/null +++ b/packages/nuxt-layer/server/queries/index.ts @@ -0,0 +1,18 @@ +import { DocumentNode } from '@apollo/client'; +import ProductVariantQuery from './ProductVariantQuery'; +import LoadUserQuery from './LoadUserQuery'; + +enum QueryName { + ProductVariantQuery = 'ProductVariantQuery', + LoadUserQuery = 'LoadUserQuery' + } + +const Queries : Record = { + ProductVariantQuery, + LoadUserQuery +}; + +export { + Queries, + QueryName +}; diff --git a/packages/nuxt-layer/server/tsconfig.json b/packages/nuxt-layer/server/tsconfig.json new file mode 100644 index 00000000..23082b8e --- /dev/null +++ b/packages/nuxt-layer/server/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "../.nuxt/tsconfig.server.json", + "compilerOptions": { + "esModuleInterop": true, + "allowSyntheticDefaultImports": true + } +} diff --git a/packages/nuxt-layer/server/utils/getCached.ts b/packages/nuxt-layer/server/utils/getCached.ts new file mode 100644 index 00000000..c27f5584 --- /dev/null +++ b/packages/nuxt-layer/server/utils/getCached.ts @@ -0,0 +1,10 @@ +import { Endpoints } from '@erpgap/odoo-sdk-api-client'; +import { H3Event } from 'h3'; + +export const getCached = cachedFunction(async (event: H3Event, body: any) => { + const api: Endpoints = event.context.apolloClient.api; + + return await api.query(body?.[0], body?.[1]); + +}, { swr: true, maxAge: 300 }); + diff --git a/packages/nuxt-layer/tsconfig.json b/packages/nuxt-layer/tsconfig.json new file mode 100644 index 00000000..1d746c1a --- /dev/null +++ b/packages/nuxt-layer/tsconfig.json @@ -0,0 +1,3 @@ +{ + "extends": "./.playground/.nuxt/tsconfig.json" +} diff --git a/playground-nuxt/app/pages/index.vue b/playground-nuxt/app/pages/index.vue index 6cfc83a0..98ec939d 100644 --- a/playground-nuxt/app/pages/index.vue +++ b/playground-nuxt/app/pages/index.vue @@ -5,22 +5,6 @@ import { MutationName } from '~/server/mutations'; const { $sdk } = useNuxtApp(); -const { } = await useFetch('/api/odoo/mutation', { - method: 'POST', - body: [ - { mutationName: MutationName.LoginMutation }, { - email: "ergap@odoo.com", - password: "123" - } - ] -}) -// await useFetch('/api/odoo/query', { -// method: 'POST', -// body: [ -// { queryName: QueryName.LoadUserQuery } -// ] -// }) - onMounted(async () => { const data = await $sdk().odoo.mutation({ mutationName: MutationName.LoginMutation }, { email: "ergap@odoo.com", diff --git a/playground-nuxt/app/server/api/odoo/mutation.post.ts b/playground-nuxt/app/server/api/odoo/mutation.post.ts index 3ee8365a..6ccc59e9 100644 --- a/playground-nuxt/app/server/api/odoo/mutation.post.ts +++ b/playground-nuxt/app/server/api/odoo/mutation.post.ts @@ -5,12 +5,16 @@ export default defineEventHandler(async (event) => { const api: Endpoints = event.context.apolloClient.api; - const data = await api.mutation(body?.[0], body?.[1]); + const response = await api.mutation(body?.[0], body?.[1]); - if ((data.data as any)?.cookie) { - appendResponseHeader(event, 'Set-cookie', (data.data as any)?.cookie); + if ((response.data as any)?.cookie) { + appendResponseHeader(event, 'Set-cookie', (response.data as any)?.cookie); } - return data; + if (response.errors) { + throw createError({ statusCode: 400, data: response.errors }); + } + + return response.data; }); diff --git a/playground-nuxt/app/server/api/odoo/query.post.ts b/playground-nuxt/app/server/api/odoo/query.post.ts index 90752871..514e4e50 100644 --- a/playground-nuxt/app/server/api/odoo/query.post.ts +++ b/playground-nuxt/app/server/api/odoo/query.post.ts @@ -1,15 +1,21 @@ import { Endpoints } from '@erpgap/odoo-sdk-api-client'; +import { getCached } from '~/server/utils/getCached'; export default defineEventHandler(async (event) => { const body = await readBody(event); const api: Endpoints = event.context.apolloClient.api; - const data = await api.query(body?.[0], body?.[1]); + // const data = await getCached(event, body); + const response = await api.query(body?.[0], body?.[1]); - if ((data.data as any)?.cookie) { - appendResponseHeader(event, 'Set-cookie', (data.data as any)?.cookie); + if ((response.data as any)?.cookie) { + appendResponseHeader(event, 'Set-cookie', (response.data as any)?.cookie); } - return data; + if (response.errors) { + throw createError(response.errors[0].message); + } + + return response.data; }); diff --git a/playground-nuxt/app/server/utils/getCached.ts b/playground-nuxt/app/server/utils/getCached.ts new file mode 100644 index 00000000..c27f5584 --- /dev/null +++ b/playground-nuxt/app/server/utils/getCached.ts @@ -0,0 +1,10 @@ +import { Endpoints } from '@erpgap/odoo-sdk-api-client'; +import { H3Event } from 'h3'; + +export const getCached = cachedFunction(async (event: H3Event, body: any) => { + const api: Endpoints = event.context.apolloClient.api; + + return await api.query(body?.[0], body?.[1]); + +}, { swr: true, maxAge: 300 }); + diff --git a/yarn.lock b/yarn.lock index ed62fdca..b9ccd7e8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1309,7 +1309,7 @@ dependencies: eslint-visitor-keys "^3.3.0" -"@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1": +"@eslint-community/regexpp@^4.4.0", "@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1": version "4.9.1" resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.9.1.tgz#449dfa81a57a1d755b09aa58d826c1262e4283b4" integrity sha512-Y27x+MBLjXa+0JWDhykM3+JE+il3kHKAEqabfEWq3SDhZjLYb6/BHL/JKFnH3fe207JaXkyDo685Oc2Glt6ifA== @@ -1334,6 +1334,11 @@ resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.51.0.tgz#6d419c240cfb2b66da37df230f7e7eef801c32fa" integrity sha512-HxjQ8Qn+4SI3/AFv6sOrDB+g6PpUTDwSJiQqOrnneEk8L71161srI9gjzzZvYVbzHiVg/BvcH95+cK/zfIt4pg== +"@eslint/js@8.52.0": + version "8.52.0" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.52.0.tgz#78fe5f117840f69dc4a353adf9b9cd926353378c" + integrity sha512-mjZVbpaeMZludF2fsWLD0Z9gCref1Tk4i9+wddjRvpUNqqcndPkBD09N/Mapey0b3jaXbLm2kICwFv2E64QinA== + "@fastify/busboy@^2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/@fastify/busboy/-/busboy-2.0.0.tgz#f22824caff3ae506b18207bad4126dbc6ccdb6b8" @@ -1902,7 +1907,7 @@ dependencies: "@hapi/hoek" "^9.0.0" -"@humanwhocodes/config-array@^0.11.11": +"@humanwhocodes/config-array@^0.11.11", "@humanwhocodes/config-array@^0.11.13": version "0.11.13" resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.13.tgz#075dc9684f40a531d9b26b0822153c1e832ee297" integrity sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ== @@ -3017,6 +3022,17 @@ which "^3.0.1" ws "^8.14.2" +"@nuxt/eslint-config@^0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@nuxt/eslint-config/-/eslint-config-0.1.1.tgz#99058b84f92aa2c67028a19e6c66cdf5beb9f5f6" + integrity sha512-znm1xlbhldUubB2XGx6Ca5uarwlIieKf0o8CtxtF6eEauDbpa3T2p3JnTcdguMW2nj1YPneoGmhshANfOlghiQ== + dependencies: + "@rushstack/eslint-patch" "^1.2.0" + "@typescript-eslint/eslint-plugin" "^5.45.1" + "@typescript-eslint/parser" "^5.45.1" + eslint-plugin-vue "^9.8.0" + typescript "^4.9.3" + "@nuxt/kit@3.8.0", "@nuxt/kit@^3.5.3", "@nuxt/kit@^3.6.5", "@nuxt/kit@^3.7.4": version "3.8.0" resolved "https://registry.yarnpkg.com/@nuxt/kit/-/kit-3.8.0.tgz#cd8a32981c2fe151e0acde7145f7e4ca38920f24" @@ -3804,6 +3820,11 @@ estree-walker "^2.0.2" picomatch "^2.3.1" +"@rushstack/eslint-patch@^1.2.0": + version "1.5.1" + resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.5.1.tgz#5f1b518ec5fa54437c0b7c4a821546c64fed6922" + integrity sha512-6i/8UoL0P5y4leBIGzvkZdS85RDMG9y1ihZzmTZQ5LdHUYmZ7pKFoj8X0236s3lusPs1Fa5HTQUpwI+UfTcmeA== + "@sideway/address@^4.1.3": version "4.1.4" resolved "https://registry.yarnpkg.com/@sideway/address/-/address-4.1.4.tgz#03dccebc6ea47fdc226f7d3d1ad512955d4783f0" @@ -4164,7 +4185,7 @@ resolved "https://registry.yarnpkg.com/@types/js-yaml/-/js-yaml-4.0.8.tgz#7574e422d70d4a1b41f517d1d9abc61be2299a97" integrity sha512-m6jnPk1VhlYRiLFm3f8X9Uep761f+CK8mHyS65LutH2OhmBF0BeMEjHgg05usH8PLZMWWc/BUR9RPmkvpWnyRA== -"@types/json-schema@^7.0.12", "@types/json-schema@^7.0.8": +"@types/json-schema@^7.0.12", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": version "7.0.14" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.14.tgz#74a97a5573980802f32c8e47b663530ab3b6b7d1" integrity sha512-U3PUjAudAdJBeC2pgN8uTIKgxrb4nlDF3SF0++EldXQvQBGkpFZMSnwQiIoDU77tv45VgNkl/L4ouD+rEomujw== @@ -4262,7 +4283,7 @@ dependencies: "@types/node" "*" -"@types/semver@^7.5.0": +"@types/semver@^7.3.12", "@types/semver@^7.5.0": version "7.5.4" resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.4.tgz#0a41252ad431c473158b22f9bfb9a63df7541cff" integrity sha512-MMzuxN3GdFwskAnb6fz0orFvhfqi752yjaXylr0Rp4oDg5H0Zn1IuyRhDVvYOwAXoJirx2xuS16I3WjxnAIHiQ== @@ -4338,6 +4359,22 @@ dependencies: "@types/yargs-parser" "*" +"@typescript-eslint/eslint-plugin@^5.45.1": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz#aeef0328d172b9e37d9bab6dbc13b87ed88977db" + integrity sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag== + dependencies: + "@eslint-community/regexpp" "^4.4.0" + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/type-utils" "5.62.0" + "@typescript-eslint/utils" "5.62.0" + debug "^4.3.4" + graphemer "^1.4.0" + ignore "^5.2.0" + natural-compare-lite "^1.4.0" + semver "^7.3.7" + tsutils "^3.21.0" + "@typescript-eslint/eslint-plugin@^6.1.0": version "6.8.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.8.0.tgz#06abe4265e7c82f20ade2dcc0e3403c32d4f148b" @@ -4355,6 +4392,24 @@ semver "^7.5.4" ts-api-utils "^1.0.1" +"@typescript-eslint/parser@^5.45.1": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.62.0.tgz#1b63d082d849a2fcae8a569248fbe2ee1b8a56c7" + integrity sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA== + dependencies: + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/typescript-estree" "5.62.0" + debug "^4.3.4" + +"@typescript-eslint/scope-manager@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz#d9457ccc6a0b8d6b37d0eb252a23022478c5460c" + integrity sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w== + dependencies: + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/visitor-keys" "5.62.0" + "@typescript-eslint/scope-manager@6.8.0": version "6.8.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-6.8.0.tgz#5cac7977385cde068ab30686889dd59879811efd" @@ -4363,6 +4418,16 @@ "@typescript-eslint/types" "6.8.0" "@typescript-eslint/visitor-keys" "6.8.0" +"@typescript-eslint/type-utils@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz#286f0389c41681376cdad96b309cedd17d70346a" + integrity sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew== + dependencies: + "@typescript-eslint/typescript-estree" "5.62.0" + "@typescript-eslint/utils" "5.62.0" + debug "^4.3.4" + tsutils "^3.21.0" + "@typescript-eslint/type-utils@6.8.0": version "6.8.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-6.8.0.tgz#50365e44918ca0fd159844b5d6ea96789731e11f" @@ -4373,11 +4438,29 @@ debug "^4.3.4" ts-api-utils "^1.0.1" +"@typescript-eslint/types@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" + integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== + "@typescript-eslint/types@6.8.0": version "6.8.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-6.8.0.tgz#1ab5d4fe1d613e3f65f6684026ade6b94f7e3ded" integrity sha512-p5qOxSum7W3k+llc7owEStXlGmSl8FcGvhYt8Vjy7FqEnmkCVlM3P57XQEGj58oqaBWDQXbJDZxwUWMS/EAPNQ== +"@typescript-eslint/typescript-estree@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b" + integrity sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA== + dependencies: + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/visitor-keys" "5.62.0" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.3.7" + tsutils "^3.21.0" + "@typescript-eslint/typescript-estree@6.8.0": version "6.8.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-6.8.0.tgz#9565f15e0cd12f55cf5aa0dfb130a6cb0d436ba1" @@ -4391,6 +4474,20 @@ semver "^7.5.4" ts-api-utils "^1.0.1" +"@typescript-eslint/utils@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.62.0.tgz#141e809c71636e4a75daa39faed2fb5f4b10df86" + integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@types/json-schema" "^7.0.9" + "@types/semver" "^7.3.12" + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/typescript-estree" "5.62.0" + eslint-scope "^5.1.1" + semver "^7.3.7" + "@typescript-eslint/utils@6.8.0": version "6.8.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-6.8.0.tgz#d42939c2074c6b59844d0982ce26a51d136c4029" @@ -4404,6 +4501,14 @@ "@typescript-eslint/typescript-estree" "6.8.0" semver "^7.5.4" +"@typescript-eslint/visitor-keys@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz#2174011917ce582875954ffe2f6912d5931e353e" + integrity sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw== + dependencies: + "@typescript-eslint/types" "5.62.0" + eslint-visitor-keys "^3.3.0" + "@typescript-eslint/visitor-keys@6.8.0": version "6.8.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-6.8.0.tgz#cffebed56ae99c45eba901c378a6447b06be58b8" @@ -4412,6 +4517,11 @@ "@typescript-eslint/types" "6.8.0" eslint-visitor-keys "^3.4.1" +"@ungap/structured-clone@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.2.0.tgz#756641adb587851b5ccb3e095daf27ae581c8406" + integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ== + "@unhead/dom@1.7.4", "@unhead/dom@^1.7.4": version "1.7.4" resolved "https://registry.yarnpkg.com/@unhead/dom/-/dom-1.7.4.tgz#d6d5899245a0b4e16b01d08553bcde570f8eb00a" @@ -7865,7 +7975,28 @@ escodegen@^2.0.0: optionalDependencies: source-map "~0.6.1" -eslint-scope@^7.2.2: +eslint-plugin-vue@^9.8.0: + version "9.17.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-vue/-/eslint-plugin-vue-9.17.0.tgz#4501547373f246547083482838b4c8f4b28e5932" + integrity sha512-r7Bp79pxQk9I5XDP0k2dpUC7Ots3OSWgvGZNu3BxmKK6Zg7NgVtcOB6OCna5Kb9oQwJPl5hq183WD0SY5tZtIQ== + dependencies: + "@eslint-community/eslint-utils" "^4.4.0" + natural-compare "^1.4.0" + nth-check "^2.1.1" + postcss-selector-parser "^6.0.13" + semver "^7.5.4" + vue-eslint-parser "^9.3.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.1.1, eslint-scope@^7.2.2: version "7.2.2" resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== @@ -7878,6 +8009,50 @@ eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4 resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== +eslint@^8.28.0: + version "8.52.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.52.0.tgz#d0cd4a1fac06427a61ef9242b9353f36ea7062fc" + integrity sha512-zh/JHnaixqHZsolRB/w9/02akBk9EPrOs9JwcTP2ek7yL5bVvXuRariiaAjjoJ5DvuwQ1WAE/HsMz+w17YgBCg== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.6.1" + "@eslint/eslintrc" "^2.1.2" + "@eslint/js" "8.52.0" + "@humanwhocodes/config-array" "^0.11.13" + "@humanwhocodes/module-importer" "^1.0.1" + "@nodelib/fs.walk" "^1.2.8" + "@ungap/structured-clone" "^1.2.0" + ajv "^6.12.4" + 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.2.2" + eslint-visitor-keys "^3.4.3" + espree "^9.6.1" + esquery "^1.4.2" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + find-up "^5.0.0" + glob-parent "^6.0.2" + globals "^13.19.0" + graphemer "^1.4.0" + ignore "^5.2.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + is-path-inside "^3.0.3" + 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.3" + strip-ansi "^6.0.1" + text-table "^0.2.0" + eslint@^8.45.0: version "8.51.0" resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.51.0.tgz#4a82dae60d209ac89a5cff1604fea978ba4950f3" @@ -7921,7 +8096,7 @@ eslint@^8.45.0: strip-ansi "^6.0.1" text-table "^0.2.0" -espree@^9.6.0, espree@^9.6.1: +espree@^9.3.1, espree@^9.6.0, espree@^9.6.1: version "9.6.1" resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== @@ -7935,7 +8110,7 @@ esprima@^4.0.0, esprima@^4.0.1, esprima@~4.0.0: resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -esquery@^1.4.2: +esquery@^1.4.0, esquery@^1.4.2: version "1.5.0" resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.5.0.tgz#6ce17738de8577694edd7361c57182ac8cb0db0b" integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg== @@ -7949,6 +8124,11 @@ esrecurse@^4.3.0: 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" @@ -12414,6 +12594,11 @@ napi-wasm@^1.1.0: resolved "https://registry.yarnpkg.com/napi-wasm/-/napi-wasm-1.1.0.tgz#bbe617823765ae9c1bc12ff5942370eae7b2ba4e" integrity sha512-lHwIAJbmLSjF9VDRm9GoVOy9AGp3aIvkjv+Kvz9h16QR3uSVYH78PNQUnT2U4X53mhlnV2M7wrhibQ3GHicDmg== +natural-compare-lite@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4" + integrity sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g== + natural-compare@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" @@ -12986,7 +13171,7 @@ npmlog@^7.0.1: gauge "^5.0.0" set-blocking "^2.0.0" -nth-check@^2.0.1: +nth-check@^2.0.1, nth-check@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== @@ -14194,7 +14379,7 @@ postcss-reduce-transforms@^6.0.0: dependencies: postcss-value-parser "^4.2.0" -postcss-selector-parser@^6.0.10, postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5: +postcss-selector-parser@^6.0.10, postcss-selector-parser@^6.0.11, postcss-selector-parser@^6.0.13, postcss-selector-parser@^6.0.2, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.5: version "6.0.13" resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz#d05d8d76b1e8e173257ef9d60b706a8e5e99bf1b" integrity sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ== @@ -15201,7 +15386,7 @@ semver@7.3.8: dependencies: lru-cache "^6.0.0" -semver@7.5.4, semver@7.x, semver@^7.0.0, semver@^7.1.1, semver@^7.1.3, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.7, semver@^7.3.8, semver@^7.5.0, semver@^7.5.3, semver@^7.5.4: +semver@7.5.4, semver@7.x, semver@^7.0.0, semver@^7.1.1, semver@^7.1.3, semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5, semver@^7.3.6, semver@^7.3.7, semver@^7.3.8, semver@^7.5.0, semver@^7.5.3, semver@^7.5.4: version "7.5.4" resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== @@ -16530,7 +16715,7 @@ tsconfig-paths@^4.1.2: minimist "^1.2.6" strip-bom "^3.0.0" -tslib@^1.9.0: +tslib@^1.8.1, tslib@^1.9.0: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== @@ -16555,6 +16740,13 @@ tsscmp@1.0.6: resolved "https://registry.yarnpkg.com/tsscmp/-/tsscmp-1.0.6.tgz#85b99583ac3589ec4bfef825b5000aa911d605eb" integrity sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA== +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" + tty-table@^4.1.5: version "4.2.2" resolved "https://registry.yarnpkg.com/tty-table/-/tty-table-4.2.2.tgz#2a548db0278be5023ed40280001e1908bb823463" @@ -16719,7 +16911,7 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== -"typescript@^3 || ^4", typescript@^4.2.2: +"typescript@^3 || ^4", typescript@^4.2.2, typescript@^4.9.3: version "4.9.5" resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== @@ -17329,6 +17521,19 @@ vue-devtools-stub@^0.1.0: resolved "https://registry.yarnpkg.com/vue-devtools-stub/-/vue-devtools-stub-0.1.0.tgz#a65b9485edecd4273cedcb8102c739b83add2c81" integrity sha512-RutnB7X8c5hjq39NceArgXg28WZtZpGc3+J16ljMiYnFhKvd8hITxSWQSQ5bvldxMDU6gG5mkxl1MTQLXckVSQ== +vue-eslint-parser@^9.3.1: + version "9.3.2" + resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-9.3.2.tgz#6f9638e55703f1c77875a19026347548d93fd499" + integrity sha512-q7tWyCVaV9f8iQyIA5Mkj/S6AoJ9KBN8IeUSf3XEmBrOtxOZnfTg5s4KClbZBCK3GtnT/+RyCLZyDHuZwTuBjg== + 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.2.5: version "4.2.5" resolved "https://registry.yarnpkg.com/vue-router/-/vue-router-4.2.5.tgz#b9e3e08f1bd9ea363fdd173032620bc50cf0e98a" @@ -17761,6 +17966,11 @@ xml-name-validator@^3.0.0: resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== +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== + xml2js@0.5.0: version "0.5.0" resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.5.0.tgz#d9440631fbb2ed800203fad106f2724f62c493b7"