diff --git a/frontend/.github/workflows/ci.yml b/.github/workflows/ci.yml similarity index 93% rename from frontend/.github/workflows/ci.yml rename to .github/workflows/ci.yml index 95f9a39ea0ee..86fc537d81f5 100644 --- a/frontend/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -3,12 +3,12 @@ name: ci on: push: branches: - - main - - master + - mealie-next + - mealie-next pull_request: branches: - - main - - master + - mealie-next + - mealie-next jobs: ci: @@ -47,4 +47,3 @@ jobs: - name: Run linter 👀 run: yarn lint - diff --git a/frontend/.github/dependabot.yml b/.github/workflows/dependabot.yml similarity index 100% rename from frontend/.github/dependabot.yml rename to .github/workflows/dependabot.yml diff --git a/frontend/.github/semantic.yml b/.github/workflows/semantic.yml similarity index 100% rename from frontend/.github/semantic.yml rename to .github/workflows/semantic.yml diff --git a/.vscode/settings.json b/.vscode/settings.json index b0dfef42d8b3..b230ec29274f 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -15,5 +15,6 @@ "i18n-ally.keystyle": "nested", "cSpell.words": ["compression", "hkotel", "performant", "postgres", "webp"], "search.mode": "reuseEditor", - "python.linting.flake8Enabled": true + "python.linting.flake8Enabled": true, + "conventionalCommits.scopes": ["frontend"] } diff --git a/frontend/.eslintrc.js b/frontend/.eslintrc.js index ce8400ebd8e7..62d3de7aaa52 100644 --- a/frontend/.eslintrc.js +++ b/frontend/.eslintrc.js @@ -2,15 +2,24 @@ module.exports = { root: true, env: { browser: true, - node: true + node: true, }, - extends: [ - '@nuxtjs/eslint-config-typescript', - 'plugin:nuxt/recommended', - 'prettier' - ], - plugins: [ - ], + parserOptions: { + parser: "@typescript-eslint/parser", + requireConfigFile: false, + }, + extends: ["@nuxtjs/eslint-config-typescript", "plugin:nuxt/recommended", "prettier"], + plugins: ["prettier"], // add your custom rules here - rules: {} -} + rules: { + "no-console": process.env.NODE_ENV === "production" ? "warn" : "off", + "no-debugger": process.env.NODE_ENV === "production" ? "warn" : "off", + quotes: ["error", "double"], + "vue/component-name-in-template-casing": ["error", "PascalCase"], + camelcase: 0, + "vue/singleline-html-element-content-newline": "off", + "vue/multiline-html-element-content-newline": "off", + "vue/no-mutating-props": "off", + "vue/no-v-for-template-key-on-child": "off", + }, +}; diff --git a/frontend/.husky/pre-commit b/frontend/.husky/pre-commit deleted file mode 100755 index eb6e8c1c015b..000000000000 --- a/frontend/.husky/pre-commit +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh -. "$(dirname "$0")/_/husky.sh" -. "$(dirname "$0")/common.sh" - -yarn lint-staged diff --git a/frontend/.prettierrc b/frontend/.prettierrc index b2095be81e4e..9aa275fe6bf5 100644 --- a/frontend/.prettierrc +++ b/frontend/.prettierrc @@ -1,4 +1,9 @@ { - "semi": false, - "singleQuote": true -} + "trailingComma": "es5", + "tabWidth": 2, + "semi": true, + "singleQuote": false, + "printWidth": 120, + "arrowParens": "always", + "eslintIntegration": true +} \ No newline at end of file diff --git a/frontend/api/index.ts b/frontend/api/index.ts new file mode 100644 index 000000000000..c61e743f6e35 --- /dev/null +++ b/frontend/api/index.ts @@ -0,0 +1,5 @@ + + + +export const api = {} + diff --git a/frontend/api/requests.ts b/frontend/api/requests.ts new file mode 100644 index 000000000000..f21a4bc4f82d --- /dev/null +++ b/frontend/api/requests.ts @@ -0,0 +1,49 @@ +import axios, { AxiosResponse } from "axios"; + +interface RequestResponse { + response: AxiosResponse | null; + data: T | null; + error: any; +} + +const request = { + async safe(funcCall: any, url: string, data: object = {}): Promise> { + const response = await funcCall(url, data).catch(function (error: object) { + console.log(error); + + // Insert Generic Error Handling Here + + return { response: null, error, data: null }; + }); + return { response, error: null, data: response.data }; + }, +}; + +export const requests = { + async get(url: string, queryParams = {}): Promise> { + let error = null; + const response = await axios.get(url, { params: { queryParams } }).catch((e) => { + error = e; + }); + if (response != null) { + return { response, error, data: response?.data }; + } + return { response: null, error, data: null }; + }, + + async post(url: string, data: object) { + return await request.safe(axios.post, url, data); + }, + + async put(url: string, data: object) { + return await request.safe(axios.put, url, data); + }, + + async patch(url: string, data: object) { + return await request.safe(axios.patch, url, data); + }, + + async delete(url: string) { + return await request.safe(axios.delete, url); + }, +}; diff --git a/frontend/assets/style-overrides.scss b/frontend/assets/style-overrides.scss new file mode 100644 index 000000000000..b901fb9abc3e --- /dev/null +++ b/frontend/assets/style-overrides.scss @@ -0,0 +1,7 @@ +.v-btn { + text-transform: none !important; +} + +.v-tab { + text-transform: none !important; +} diff --git a/frontend/components/Layout/AppFloatingButton.vue b/frontend/components/Layout/AppFloatingButton.vue new file mode 100644 index 000000000000..94c55f6db6e7 --- /dev/null +++ b/frontend/components/Layout/AppFloatingButton.vue @@ -0,0 +1,16 @@ + + + + + \ No newline at end of file diff --git a/frontend/components/Layout/AppFooter.vue b/frontend/components/Layout/AppFooter.vue new file mode 100644 index 000000000000..773194212d10 --- /dev/null +++ b/frontend/components/Layout/AppFooter.vue @@ -0,0 +1,16 @@ + + + + + \ No newline at end of file diff --git a/frontend/components/Layout/AppHeader.vue b/frontend/components/Layout/AppHeader.vue new file mode 100644 index 000000000000..65916aee7609 --- /dev/null +++ b/frontend/components/Layout/AppHeader.vue @@ -0,0 +1,16 @@ + + + + + \ No newline at end of file diff --git a/frontend/components/Layout/AppSidebar.vue b/frontend/components/Layout/AppSidebar.vue new file mode 100644 index 000000000000..53e9abb3c713 --- /dev/null +++ b/frontend/components/Layout/AppSidebar.vue @@ -0,0 +1,16 @@ + + + + + \ No newline at end of file diff --git a/frontend/components/NuxtLogo.vue b/frontend/components/NuxtLogo.vue deleted file mode 100644 index 970eba0eb6e8..000000000000 --- a/frontend/components/NuxtLogo.vue +++ /dev/null @@ -1,11 +0,0 @@ - - - diff --git a/frontend/components/README.md b/frontend/components/README.md new file mode 100644 index 000000000000..4bfe89c59c3c --- /dev/null +++ b/frontend/components/README.md @@ -0,0 +1,35 @@ +# Components Folder Guide + +## Domain Components +Domain Components are specific to the domain or section of a website. For example if you have an admin page and a user page that have specific, unshared elements. These can be placed in the Domain/Admin folder. + +**Rules** +- Components should be prefixed with their domain name + - Examples: AdminDashboard, AdminSettings, UserProfile + +## Global Components +This folder is for widely reused components that provide little functionality and are primarily used for styling or consistency. Primary examples are Card and Button components. + +**Rules** +- Global components cannot container a subfolder to be globally imported +- All elements should start with the 'Base' Prefix + - Examples: BaseButton, BaseCard, BaseTitleSection + +## Layout Components +The layout folder is for reusable components that are specifically **only** used in the layouts for the Nuxt Application. They may take props or may not. They should be larger layout style components that don't have wide the ability to be widely reused in the application. + +**Rules:** +- Layout folder should not have a subfolder +- If they take props they should start with a 'App' Prefix. + - Examples: AppSidebar, AppHeader, AppFooter. +- If they do not they should begin with the 'The' prefix + - Examples: TheSidebar, TheHeader, TheFooter. + +## Page Components +The Page folder is dedicated to 'single-use' component to break up large amounts on content in the pages themselves. A good examples of this is breaking your landing page into separate sections to make it more readable and less monolithic. Page components typically consume other components. + +**Rules:** +- These are *last resort* components. Only to be used when the page becomes unmanageable. +- Page components should be prefixed with their page name + - Examples: HomeAbout, HomeContact, ClientProfile + diff --git a/frontend/components/Tutorial.vue b/frontend/components/Tutorial.vue deleted file mode 100644 index 6440b8fbcf8e..000000000000 --- a/frontend/components/Tutorial.vue +++ /dev/null @@ -1,46 +0,0 @@ - - diff --git a/frontend/components/VuetifyLogo.vue b/frontend/components/VuetifyLogo.vue deleted file mode 100644 index 54aae8ce8d14..000000000000 --- a/frontend/components/VuetifyLogo.vue +++ /dev/null @@ -1,22 +0,0 @@ - - - diff --git a/frontend/components/global/BaseAutoForm.vue b/frontend/components/global/BaseAutoForm.vue new file mode 100644 index 000000000000..db5a3192b678 --- /dev/null +++ b/frontend/components/global/BaseAutoForm.vue @@ -0,0 +1,269 @@ + + + + + diff --git a/frontend/components/global/BaseButton.vue b/frontend/components/global/BaseButton.vue new file mode 100644 index 000000000000..e6b17062eba8 --- /dev/null +++ b/frontend/components/global/BaseButton.vue @@ -0,0 +1,164 @@ + + + diff --git a/frontend/components/global/BaseCardSectionTitle.vue b/frontend/components/global/BaseCardSectionTitle.vue new file mode 100644 index 000000000000..077beab91825 --- /dev/null +++ b/frontend/components/global/BaseCardSectionTitle.vue @@ -0,0 +1,19 @@ + + + diff --git a/frontend/components/global/BaseDivider.vue b/frontend/components/global/BaseDivider.vue new file mode 100644 index 000000000000..38be2e289edb --- /dev/null +++ b/frontend/components/global/BaseDivider.vue @@ -0,0 +1,22 @@ + + + diff --git a/frontend/composables/forms/index.ts b/frontend/composables/forms/index.ts new file mode 100644 index 000000000000..890f911ca18a --- /dev/null +++ b/frontend/composables/forms/index.ts @@ -0,0 +1 @@ +export { fieldTypes } from "./use-field-types"; diff --git a/frontend/composables/forms/use-field-types.ts b/frontend/composables/forms/use-field-types.ts new file mode 100644 index 000000000000..d74a006519bb --- /dev/null +++ b/frontend/composables/forms/use-field-types.ts @@ -0,0 +1,11 @@ +export const fieldTypes = { + TEXT: "text", + TEXT_AREA: "textarea", + LIST: "list", + SELECT: "select", + OBJECT: "object", + BOOLEAN: "boolean", + COLOR: "color", +}; + + diff --git a/frontend/composables/use-validators.ts b/frontend/composables/use-validators.ts new file mode 100644 index 000000000000..3e27ffeaa547 --- /dev/null +++ b/frontend/composables/use-validators.ts @@ -0,0 +1,8 @@ +const EMAIL_REGEX = + /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@(([[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/ + +export const validators = { + required: (v: string) => !!v || "This Field is Required", + email: (v: string) => !v || EMAIL_REGEX.test(v) || "Email Must Be Valid", + whitespace: (v: string) => !v || v.split(" ").length <= 1 || "No Whitespace Allowed" +} diff --git a/frontend/layouts/admin.vue b/frontend/layouts/admin.vue new file mode 100644 index 000000000000..e2288e4ace08 --- /dev/null +++ b/frontend/layouts/admin.vue @@ -0,0 +1,17 @@ + + + + + + \ No newline at end of file diff --git a/frontend/package.json b/frontend/package.json index 68a702982225..f4f7a083263e 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -17,6 +17,7 @@ "dependencies": { "@nuxtjs/axios": "^5.13.6", "@nuxtjs/pwa": "^3.3.5", + "@vueuse/core": "^5.2.0", "core-js": "^3.15.1", "nuxt": "^2.15.7", "vuetify": "^2.5.5" @@ -25,6 +26,7 @@ "@babel/eslint-parser": "^7.14.7", "@nuxt/types": "^2.15.7", "@nuxt/typescript-build": "^2.1.0", + "@nuxtjs/composition-api": "^0.26.0", "@nuxtjs/eslint-config-typescript": "^6.0.1", "@nuxtjs/eslint-module": "^3.0.2", "@nuxtjs/vuetify": "^1.12.1", @@ -36,4 +38,4 @@ "lint-staged": "^10.5.4", "prettier": "^2.3.2" } -} \ No newline at end of file +} diff --git a/frontend/pages/admin/about.vue b/frontend/pages/admin/about.vue new file mode 100644 index 000000000000..546e387fe497 --- /dev/null +++ b/frontend/pages/admin/about.vue @@ -0,0 +1,16 @@ + + + + + \ No newline at end of file diff --git a/frontend/pages/admin/dashboard.vue b/frontend/pages/admin/dashboard.vue new file mode 100644 index 000000000000..f65b2c8a525b --- /dev/null +++ b/frontend/pages/admin/dashboard.vue @@ -0,0 +1,16 @@ + + + + + \ No newline at end of file diff --git a/frontend/pages/admin/manage-users.vue b/frontend/pages/admin/manage-users.vue new file mode 100644 index 000000000000..f65b2c8a525b --- /dev/null +++ b/frontend/pages/admin/manage-users.vue @@ -0,0 +1,16 @@ + + + + + \ No newline at end of file diff --git a/frontend/pages/admin/migrations.vue b/frontend/pages/admin/migrations.vue new file mode 100644 index 000000000000..f65b2c8a525b --- /dev/null +++ b/frontend/pages/admin/migrations.vue @@ -0,0 +1,16 @@ + + + + + \ No newline at end of file diff --git a/frontend/pages/admin/site-settings.vue b/frontend/pages/admin/site-settings.vue new file mode 100644 index 000000000000..f65b2c8a525b --- /dev/null +++ b/frontend/pages/admin/site-settings.vue @@ -0,0 +1,16 @@ + + + + + \ No newline at end of file diff --git a/frontend/pages/admin/toolbox.vue b/frontend/pages/admin/toolbox.vue new file mode 100644 index 000000000000..d0cd7424ba9b --- /dev/null +++ b/frontend/pages/admin/toolbox.vue @@ -0,0 +1,16 @@ + + + + + \ No newline at end of file diff --git a/frontend/pages/inspire.vue b/frontend/pages/inspire.vue deleted file mode 100644 index 8516a1a46836..000000000000 --- a/frontend/pages/inspire.vue +++ /dev/null @@ -1,19 +0,0 @@ - diff --git a/frontend/pages/meal-plan/planner.vue b/frontend/pages/meal-plan/planner.vue new file mode 100644 index 000000000000..f65b2c8a525b --- /dev/null +++ b/frontend/pages/meal-plan/planner.vue @@ -0,0 +1,16 @@ + + + + + \ No newline at end of file diff --git a/frontend/pages/meal-plan/this-week.vue b/frontend/pages/meal-plan/this-week.vue new file mode 100644 index 000000000000..f65b2c8a525b --- /dev/null +++ b/frontend/pages/meal-plan/this-week.vue @@ -0,0 +1,16 @@ + + + + + \ No newline at end of file diff --git a/frontend/pages/recipe/_slug.vue b/frontend/pages/recipe/_slug.vue new file mode 100644 index 000000000000..d0cd7424ba9b --- /dev/null +++ b/frontend/pages/recipe/_slug.vue @@ -0,0 +1,16 @@ + + + + + \ No newline at end of file diff --git a/frontend/pages/recipes/all.vue b/frontend/pages/recipes/all.vue new file mode 100644 index 000000000000..f65b2c8a525b --- /dev/null +++ b/frontend/pages/recipes/all.vue @@ -0,0 +1,16 @@ + + + + + \ No newline at end of file diff --git a/frontend/pages/recipes/category.vue b/frontend/pages/recipes/category.vue new file mode 100644 index 000000000000..f65b2c8a525b --- /dev/null +++ b/frontend/pages/recipes/category.vue @@ -0,0 +1,16 @@ + + + + + \ No newline at end of file diff --git a/frontend/pages/recipes/tag.vue b/frontend/pages/recipes/tag.vue new file mode 100644 index 000000000000..f65b2c8a525b --- /dev/null +++ b/frontend/pages/recipes/tag.vue @@ -0,0 +1,16 @@ + + + + + \ No newline at end of file diff --git a/frontend/.husky/common.sh b/frontend/pages/search.vue similarity index 100% rename from frontend/.husky/common.sh rename to frontend/pages/search.vue diff --git a/frontend/pages/shopping-list/_id.vue b/frontend/pages/shopping-list/_id.vue new file mode 100644 index 000000000000..f65b2c8a525b --- /dev/null +++ b/frontend/pages/shopping-list/_id.vue @@ -0,0 +1,16 @@ + + + + + \ No newline at end of file diff --git a/frontend/pages/shopping-list/index.vue b/frontend/pages/shopping-list/index.vue new file mode 100644 index 000000000000..f65b2c8a525b --- /dev/null +++ b/frontend/pages/shopping-list/index.vue @@ -0,0 +1,16 @@ + + + + + \ No newline at end of file diff --git a/frontend/pages/user/_id/favorites.vue b/frontend/pages/user/_id/favorites.vue new file mode 100644 index 000000000000..f65b2c8a525b --- /dev/null +++ b/frontend/pages/user/_id/favorites.vue @@ -0,0 +1,16 @@ + + + + + \ No newline at end of file diff --git a/frontend/pages/user/_id/profile.vue b/frontend/pages/user/_id/profile.vue new file mode 100644 index 000000000000..d0cd7424ba9b --- /dev/null +++ b/frontend/pages/user/_id/profile.vue @@ -0,0 +1,16 @@ + + + + + \ No newline at end of file diff --git a/frontend/tsconfig.json b/frontend/tsconfig.json index c26c9fe72f7f..896590d01fc6 100644 --- a/frontend/tsconfig.json +++ b/frontend/tsconfig.json @@ -3,11 +3,7 @@ "target": "ES2018", "module": "ESNext", "moduleResolution": "Node", - "lib": [ - "ESNext", - "ESNext.AsyncIterable", - "DOM" - ], + "lib": ["ESNext", "ESNext.AsyncIterable", "DOM"], "esModuleInterop": true, "allowJs": true, "sourceMap": true, @@ -16,22 +12,10 @@ "experimentalDecorators": true, "baseUrl": ".", "paths": { - "~/*": [ - "./*" - ], - "@/*": [ - "./*" - ] + "~/*": ["./*"], + "@/*": ["./*"] }, - "types": [ - "@nuxt/types", - "@nuxtjs/axios", - "@types/node" - ] + "types": ["@nuxt/types", "@nuxtjs/axios", "@nuxt/content", "@types/node"] }, - "exclude": [ - "node_modules", - ".nuxt", - "dist" - ] + "exclude": ["node_modules", ".nuxt", "dist"] } diff --git a/frontend/yarn.lock b/frontend/yarn.lock index 5548d689c312..46324b261a8b 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -1345,6 +1345,19 @@ consola "^2.15.3" defu "^5.0.0" +"@nuxtjs/composition-api@^0.26.0": + version "0.26.0" + resolved "https://registry.yarnpkg.com/@nuxtjs/composition-api/-/composition-api-0.26.0.tgz#0fbda4fc942ca1e346b7c6d55a1fb331ff931a2a" + integrity sha512-+4L9YDEN5h/vBY6xbBKPMIhgxbPv7psE4IVgKlF+QIekou6oN8m0T+QR2JLE0dHKwzicUbZLCr1v2Qw5T7L48A== + dependencies: + "@vue/composition-api" "^1.0.4" + defu "^5.0.0" + estree-walker "^2.0.2" + fs-extra "^9.1.0" + magic-string "^0.25.7" + ufo "^0.7.7" + upath "^2.0.1" + "@nuxtjs/eslint-config-typescript@^6.0.1": version "6.0.1" resolved "https://registry.yarnpkg.com/@nuxtjs/eslint-config-typescript/-/eslint-config-typescript-6.0.1.tgz#11e91a5e25aca6855ec7525080da694c4b3cd4d4" @@ -1934,6 +1947,28 @@ optionalDependencies: prettier "^1.18.2" +"@vue/composition-api@^1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@vue/composition-api/-/composition-api-1.0.4.tgz#6162b3ba306a8995afdce969a66e168e6743718d" + integrity sha512-3OzvW8RS7/7kxE+SDXm8zSLZRy9GtCYwyLYdnGtIsqXRSt5nWkA7zu80Cw8Vg+67jglrpMdVBBy7AUXAB34ZSw== + dependencies: + tslib "^2.3.0" + +"@vueuse/core@^5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@vueuse/core/-/core-5.2.0.tgz#c2c0b89d9506fdfca41cd3056e38478226bc5e31" + integrity sha512-IS2QnVZ4lTlRUtgPHJ4ttTatXGWRZuvj/GJDVp8FRlUjzKXD0YjZtx0280FCg7y3YejXV2QGhY+/YrXybMjpPw== + dependencies: + "@vueuse/shared" "5.2.0" + vue-demi "*" + +"@vueuse/shared@5.2.0": + version "5.2.0" + resolved "https://registry.yarnpkg.com/@vueuse/shared/-/shared-5.2.0.tgz#894921cf5e5fc7f9afa7d7870800b0c9cd265e0c" + integrity sha512-PD2PBaEcdl+pXXeKjhU+LZqQuA9xX/6mtVGIYG29xsjH7W3IjU164nwCAfDe2Lsy8rMaYmVqVSB6PHtiZZyDSg== + dependencies: + vue-demi "*" + "@webassemblyjs/ast@1.9.0": version "1.9.0" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.0.tgz#bd850604b4042459a5a41cd7d338cbed695ed964" @@ -4160,6 +4195,11 @@ estraverse@^5.1.0, estraverse@^5.2.0: resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== +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" @@ -5803,6 +5843,13 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" +magic-string@^0.25.7: + version "0.25.7" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" + integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== + dependencies: + sourcemap-codec "^1.4.4" + make-dir@^1.0.0: version "1.3.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" @@ -8316,6 +8363,11 @@ source-map@^0.7.3, source-map@~0.7.2: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== +sourcemap-codec@^1.4.4: + version "1.4.8" + resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" + integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== + spdx-correct@^3.0.0: version "3.1.1" resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" @@ -8843,7 +8895,7 @@ tslib@^1.8.1, tslib@^1.9.0: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== -tslib@^2.0.3: +tslib@^2.0.3, tslib@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.0.tgz#803b8cdab3e12ba581a4ca41c8839bbb0dacb09e" integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg== @@ -8902,7 +8954,7 @@ ua-parser-js@^0.7.28: resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.28.tgz#8ba04e653f35ce210239c64661685bf9121dec31" integrity sha512-6Gurc1n//gjp9eQNXjD9O3M/sMwVtN5S8Lv9bvOYBfKfDNiIIhqiyi01vMBO45u4zkDE420w/e0se7Vs+sIg+g== -ufo@^0.7.4: +ufo@^0.7.4, ufo@^0.7.7: version "0.7.7" resolved "https://registry.yarnpkg.com/ufo/-/ufo-0.7.7.tgz#0062f9e5e790819b0fb23ca24d7c63a4011c036a" integrity sha512-N25aY3HBkJBnahm+2l4JRBBrX5I+JPakF/tDHYDTjd3wUR7iFLdyiPhj8mBwBz21v728BKwM9L9tgBfCntgdlw== @@ -9141,6 +9193,11 @@ vue-client-only@^2.0.0: resolved "https://registry.yarnpkg.com/vue-client-only/-/vue-client-only-2.1.0.tgz#1a67a47b8ecacfa86d75830173fffee3bf8a4ee3" integrity sha512-vKl1skEKn8EK9f8P2ZzhRnuaRHLHrlt1sbRmazlvsx6EiC3A8oWF8YCBrMJzoN+W3OnElwIGbVjsx6/xelY1AA== +vue-demi@*: + version "0.11.2" + resolved "https://registry.yarnpkg.com/vue-demi/-/vue-demi-0.11.2.tgz#faa06da53887c493a695b997f4fcb4784a667990" + integrity sha512-J+X8Au6BhQdcej6LY4O986634hZLu55L0ewU2j8my7WIKlu8cK0dqmdUxqVHHMd/cMrKKZ9SywB/id6aLhwCtA== + vue-eslint-parser@^7.1.1, vue-eslint-parser@^7.10.0: version "7.10.0" resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-7.10.0.tgz#ea4e4b10fd10aa35c8a79ac783488d8abcd29be8"