From 00a8fdda417a80065f89457bcd716c96c4c9215f Mon Sep 17 00:00:00 2001 From: hay-kot Date: Sun, 1 Aug 2021 19:24:47 -0800 Subject: [PATCH] reorganize all frontend items --- .../UI/Dialogs/ConfirmationDialog.vue | 137 ----- frontend/api/class-interfaces/_base.ts | 10 + frontend/api/class-interfaces/recipes.ts | 55 ++ frontend/api/index.ts | 17 +- frontend/api/requests.ts | 1 + frontend/assets/main.css | 8 + .../Domain/MealPlan/MealPlanCard.vue | 20 +- .../Domain/MealPlan/MealPlanEditor.vue | 2 +- .../Domain/MealPlan/MealPlanNew.vue | 88 ++-- .../Domain/Recipe/RecipeActionMenu.vue | 29 +- .../Domain/Recipe/RecipeAssets.vue | 34 +- .../Domain/Recipe/RecipeComments.vue | 10 +- .../Domain/Recipe/RecipeDialogBulkAdd.vue | 4 +- .../Recipe/RecipeDialogExtrasEditor.vue | 8 +- .../Domain/Recipe/RecipeImageUploadBtn.vue | 14 +- .../Domain/Recipe/RecipeIngredients.vue | 26 +- .../Domain/Recipe/RecipeInstructions.vue | 26 +- .../Domain/Recipe/RecipeNotes.vue | 10 +- .../Domain/Recipe/RecipeNutrition.vue | 2 +- .../Domain/Recipe/RecipePrintView.vue | 8 +- .../Domain/Recipe/RecipeSettingsMenu.vue | 4 +- .../Domain/Recipe/RecipeTimeCard.vue | 2 +- .../Domain/User/UserAvatar.vue | 2 +- .../Page/Recipe/RecipeEditor.vue | 32 +- .../Page/Recipe/RecipeViewer.vue | 19 +- .../components/Domain/Recipe/RecipeCard.vue | 60 ++- .../Domain/Recipe/RecipeCardImage.vue | 35 +- .../Domain/Recipe/RecipeCardMobile.vue | 53 +- .../Domain/Recipe/RecipeCardSection.vue | 60 ++- .../components/Domain/Recipe/RecipeChips.vue | 27 +- .../Domain/Recipe/RecipeContextMenu.vue | 26 +- .../Domain/Recipe/RecipeFavoriteBadge.vue | 9 +- .../components/Domain/Recipe/RecipeRating.vue | 25 +- .../components/Layout/AppFloatingButton.vue | 267 +++++++++- frontend/components/Layout/AppFooter.vue | 24 +- frontend/components/Layout/AppHeader.vue | 152 +++++- frontend/components/Layout/AppSidebar.vue | 120 ++++- .../components/global/AppLoader.vue | 0 frontend/components/global/AutoForm.vue | 264 ++++++++++ .../components/global}/BaseDialog.vue | 59 ++- frontend/composables/use-api.ts | 64 +++ .../lang}/dateTimeFormats/af-ZA.json | 0 .../lang}/dateTimeFormats/ar-SA.json | 0 .../lang}/dateTimeFormats/ca-ES.json | 0 .../lang}/dateTimeFormats/cs-CZ.json | 0 .../lang}/dateTimeFormats/da-DK.json | 0 .../lang}/dateTimeFormats/de-DE.json | 0 .../lang}/dateTimeFormats/el-GR.json | 0 .../lang}/dateTimeFormats/en-GB.json | 0 .../lang}/dateTimeFormats/en-US.json | 0 .../lang}/dateTimeFormats/es-ES.json | 0 .../lang}/dateTimeFormats/fi-FI.json | 0 .../lang}/dateTimeFormats/fr-FR.json | 0 .../lang}/dateTimeFormats/he-IL.json | 0 .../lang}/dateTimeFormats/hu-HU.json | 0 .../lang}/dateTimeFormats/it-IT.json | 0 .../lang}/dateTimeFormats/ja-JP.json | 0 .../lang}/dateTimeFormats/ko-KR.json | 0 .../lang}/dateTimeFormats/nl-NL.json | 0 .../lang}/dateTimeFormats/no-NO.json | 0 .../lang}/dateTimeFormats/pl-PL.json | 0 .../lang}/dateTimeFormats/pt-BR.json | 0 .../lang}/dateTimeFormats/pt-PT.json | 0 .../lang}/dateTimeFormats/ro-RO.json | 0 .../lang}/dateTimeFormats/ru-RU.json | 0 .../lang}/dateTimeFormats/sr-SP.json | 0 .../lang}/dateTimeFormats/sv-SE.json | 0 .../lang}/dateTimeFormats/tr-TR.json | 0 .../lang}/dateTimeFormats/uk-UA.json | 0 .../lang}/dateTimeFormats/vi-VN.json | 0 .../lang}/dateTimeFormats/zh-CN.json | 0 .../lang}/dateTimeFormats/zh-TW.json | 0 .../lang}/messages/af-ZA.json | 0 .../lang}/messages/ar-SA.json | 0 .../lang}/messages/ca-ES.json | 0 .../lang}/messages/cs-CZ.json | 0 .../lang}/messages/da-DK.json | 0 .../lang}/messages/de-DE.json | 0 .../lang}/messages/el-GR.json | 0 .../lang}/messages/en-GB.json | 0 frontend/lang/messages/en-US.js | 497 ++++++++++++++++++ .../lang}/messages/en-US.json | 0 .../lang}/messages/es-ES.json | 0 .../lang}/messages/fi-FI.json | 0 .../lang}/messages/fr-FR.json | 0 .../lang}/messages/he-IL.json | 0 .../lang}/messages/hu-HU.json | 0 .../lang}/messages/it-IT.json | 0 .../lang}/messages/ja-JP.json | 0 .../lang}/messages/ko-KR.json | 0 .../lang}/messages/nl-NL.json | 0 .../lang}/messages/no-NO.json | 0 .../lang}/messages/pl-PL.json | 0 .../lang}/messages/pt-BR.json | 0 .../lang}/messages/pt-PT.json | 0 .../lang}/messages/ro-RO.json | 0 .../lang}/messages/ru-RU.json | 0 .../lang}/messages/sr-SP.json | 0 .../lang}/messages/sv-SE.json | 0 .../lang}/messages/tr-TR.json | 0 .../lang}/messages/uk-UA.json | 0 .../lang}/messages/vi-VN.json | 0 .../lang}/messages/zh-CN.json | 0 .../lang}/messages/zh-TW.json | 0 frontend/layouts/admin.vue | 91 +++- frontend/layouts/basic.vue | 30 ++ frontend/layouts/default.vue | 158 ++---- frontend/layouts/error.vue | 31 +- frontend/nuxt.config.js | 146 +++-- frontend/package.json | 7 + frontend/pages/admin/about.vue | 9 +- frontend/pages/admin/dashboard.vue | 31 +- frontend/pages/admin/manage-users.vue | 31 +- frontend/pages/admin/migrations.vue | 31 +- frontend/pages/admin/site-settings.vue | 31 +- frontend/pages/admin/toolbox.vue | 17 +- frontend/pages/index.vue | 24 +- frontend/pages/meal-plan/planner.vue | 2 +- frontend/pages/meal-plan/this-week.vue | 2 +- frontend/pages/recipe/_slug.vue | 2 +- frontend/pages/recipes/all.vue | 2 +- frontend/pages/recipes/category.vue | 2 +- frontend/pages/recipes/tag.vue | 2 +- frontend/pages/shopping-list/index.vue | 2 +- frontend/pages/user/_id/profile.vue | 2 +- frontend/pages/user/login.vue | 221 +++++++- .../pages/user/{register.vue => profile.vue} | 1 + frontend/pages/user/sign-up.vue | 116 ++++ frontend/plugins/globals.js | 206 ++++++++ frontend/static/account.png | Bin 0 -> 675 bytes frontend/store/index.js | 0 frontend/tsconfig.json | 3 +- frontend/types/api-types/admin.ts | 253 +++++++++ frontend/types/api-types/events.ts | 60 +++ frontend/types/api-types/meal-plan.ts | 52 ++ frontend/types/api-types/recipe.ts | 141 +++++ frontend/types/api-types/user.ts | 166 ++++++ frontend/types/api.ts | 16 + frontend/types/application-types.ts | 9 + frontend/types/vue.d.ts | 14 + .../src => frontend}/utils/globals.js | 0 {frontend.old/src => frontend}/utils/index.js | 0 .../src => frontend}/utils/recipe.js | 0 frontend/yarn.lock | 316 ++++++++++- poetry.lock | 49 +- pyproject.toml | 1 + vetur.config.js | 1 + 147 files changed, 3845 insertions(+), 743 deletions(-) delete mode 100644 frontend.old/src/components/UI/Dialogs/ConfirmationDialog.vue create mode 100644 frontend/api/class-interfaces/_base.ts create mode 100644 frontend/api/class-interfaces/recipes.ts create mode 100644 frontend/assets/main.css rename frontend/{components => component-stagin}/Domain/MealPlan/MealPlanCard.vue (89%) rename frontend/{components => component-stagin}/Domain/MealPlan/MealPlanEditor.vue (95%) rename frontend/{components => component-stagin}/Domain/MealPlan/MealPlanNew.vue (91%) rename frontend/{components => component-stagin}/Domain/Recipe/RecipeActionMenu.vue (86%) rename frontend/{components => component-stagin}/Domain/Recipe/RecipeAssets.vue (81%) rename frontend/{components => component-stagin}/Domain/Recipe/RecipeComments.vue (93%) rename frontend/{components => component-stagin}/Domain/Recipe/RecipeDialogBulkAdd.vue (93%) rename frontend/{components => component-stagin}/Domain/Recipe/RecipeDialogExtrasEditor.vue (90%) rename frontend/{components => component-stagin}/Domain/Recipe/RecipeImageUploadBtn.vue (84%) rename frontend/{components => component-stagin}/Domain/Recipe/RecipeIngredients.vue (89%) rename frontend/{components => component-stagin}/Domain/Recipe/RecipeInstructions.vue (94%) rename frontend/{components => component-stagin}/Domain/Recipe/RecipeNotes.vue (76%) rename frontend/{components => component-stagin}/Domain/Recipe/RecipeNutrition.vue (97%) rename frontend/{components => component-stagin}/Domain/Recipe/RecipePrintView.vue (90%) rename frontend/{components => component-stagin}/Domain/Recipe/RecipeSettingsMenu.vue (96%) rename frontend/{components => component-stagin}/Domain/Recipe/RecipeTimeCard.vue (91%) rename frontend/{components => component-stagin}/Domain/User/UserAvatar.vue (96%) rename frontend/{components => component-stagin}/Page/Recipe/RecipeEditor.vue (77%) rename frontend/{components => component-stagin}/Page/Recipe/RecipeViewer.vue (89%) rename frontend.old/src/components/UI/CardSection.vue => frontend/components/Domain/Recipe/RecipeCardSection.vue (84%) rename frontend.old/src/components/UI/SiteLoader.vue => frontend/components/global/AppLoader.vue (100%) create mode 100644 frontend/components/global/AutoForm.vue rename {frontend.old/src/components/UI/Dialogs => frontend/components/global}/BaseDialog.vue (61%) create mode 100644 frontend/composables/use-api.ts rename {frontend.old/src/locales => frontend/lang}/dateTimeFormats/af-ZA.json (100%) rename {frontend.old/src/locales => frontend/lang}/dateTimeFormats/ar-SA.json (100%) rename {frontend.old/src/locales => frontend/lang}/dateTimeFormats/ca-ES.json (100%) rename {frontend.old/src/locales => frontend/lang}/dateTimeFormats/cs-CZ.json (100%) rename {frontend.old/src/locales => frontend/lang}/dateTimeFormats/da-DK.json (100%) rename {frontend.old/src/locales => frontend/lang}/dateTimeFormats/de-DE.json (100%) rename {frontend.old/src/locales => frontend/lang}/dateTimeFormats/el-GR.json (100%) rename {frontend.old/src/locales => frontend/lang}/dateTimeFormats/en-GB.json (100%) rename {frontend.old/src/locales => frontend/lang}/dateTimeFormats/en-US.json (100%) rename {frontend.old/src/locales => frontend/lang}/dateTimeFormats/es-ES.json (100%) rename {frontend.old/src/locales => frontend/lang}/dateTimeFormats/fi-FI.json (100%) rename {frontend.old/src/locales => frontend/lang}/dateTimeFormats/fr-FR.json (100%) rename {frontend.old/src/locales => frontend/lang}/dateTimeFormats/he-IL.json (100%) rename {frontend.old/src/locales => frontend/lang}/dateTimeFormats/hu-HU.json (100%) rename {frontend.old/src/locales => frontend/lang}/dateTimeFormats/it-IT.json (100%) rename {frontend.old/src/locales => frontend/lang}/dateTimeFormats/ja-JP.json (100%) rename {frontend.old/src/locales => frontend/lang}/dateTimeFormats/ko-KR.json (100%) rename {frontend.old/src/locales => frontend/lang}/dateTimeFormats/nl-NL.json (100%) rename {frontend.old/src/locales => frontend/lang}/dateTimeFormats/no-NO.json (100%) rename {frontend.old/src/locales => frontend/lang}/dateTimeFormats/pl-PL.json (100%) rename {frontend.old/src/locales => frontend/lang}/dateTimeFormats/pt-BR.json (100%) rename {frontend.old/src/locales => frontend/lang}/dateTimeFormats/pt-PT.json (100%) rename {frontend.old/src/locales => frontend/lang}/dateTimeFormats/ro-RO.json (100%) rename {frontend.old/src/locales => frontend/lang}/dateTimeFormats/ru-RU.json (100%) rename {frontend.old/src/locales => frontend/lang}/dateTimeFormats/sr-SP.json (100%) rename {frontend.old/src/locales => frontend/lang}/dateTimeFormats/sv-SE.json (100%) rename {frontend.old/src/locales => frontend/lang}/dateTimeFormats/tr-TR.json (100%) rename {frontend.old/src/locales => frontend/lang}/dateTimeFormats/uk-UA.json (100%) rename {frontend.old/src/locales => frontend/lang}/dateTimeFormats/vi-VN.json (100%) rename {frontend.old/src/locales => frontend/lang}/dateTimeFormats/zh-CN.json (100%) rename {frontend.old/src/locales => frontend/lang}/dateTimeFormats/zh-TW.json (100%) rename {frontend.old/src/locales => frontend/lang}/messages/af-ZA.json (100%) rename {frontend.old/src/locales => frontend/lang}/messages/ar-SA.json (100%) rename {frontend.old/src/locales => frontend/lang}/messages/ca-ES.json (100%) rename {frontend.old/src/locales => frontend/lang}/messages/cs-CZ.json (100%) rename {frontend.old/src/locales => frontend/lang}/messages/da-DK.json (100%) rename {frontend.old/src/locales => frontend/lang}/messages/de-DE.json (100%) rename {frontend.old/src/locales => frontend/lang}/messages/el-GR.json (100%) rename {frontend.old/src/locales => frontend/lang}/messages/en-GB.json (100%) create mode 100644 frontend/lang/messages/en-US.js rename {frontend.old/src/locales => frontend/lang}/messages/en-US.json (100%) rename {frontend.old/src/locales => frontend/lang}/messages/es-ES.json (100%) rename {frontend.old/src/locales => frontend/lang}/messages/fi-FI.json (100%) rename {frontend.old/src/locales => frontend/lang}/messages/fr-FR.json (100%) rename {frontend.old/src/locales => frontend/lang}/messages/he-IL.json (100%) rename {frontend.old/src/locales => frontend/lang}/messages/hu-HU.json (100%) rename {frontend.old/src/locales => frontend/lang}/messages/it-IT.json (100%) rename {frontend.old/src/locales => frontend/lang}/messages/ja-JP.json (100%) rename {frontend.old/src/locales => frontend/lang}/messages/ko-KR.json (100%) rename {frontend.old/src/locales => frontend/lang}/messages/nl-NL.json (100%) rename {frontend.old/src/locales => frontend/lang}/messages/no-NO.json (100%) rename {frontend.old/src/locales => frontend/lang}/messages/pl-PL.json (100%) rename {frontend.old/src/locales => frontend/lang}/messages/pt-BR.json (100%) rename {frontend.old/src/locales => frontend/lang}/messages/pt-PT.json (100%) rename {frontend.old/src/locales => frontend/lang}/messages/ro-RO.json (100%) rename {frontend.old/src/locales => frontend/lang}/messages/ru-RU.json (100%) rename {frontend.old/src/locales => frontend/lang}/messages/sr-SP.json (100%) rename {frontend.old/src/locales => frontend/lang}/messages/sv-SE.json (100%) rename {frontend.old/src/locales => frontend/lang}/messages/tr-TR.json (100%) rename {frontend.old/src/locales => frontend/lang}/messages/uk-UA.json (100%) rename {frontend.old/src/locales => frontend/lang}/messages/vi-VN.json (100%) rename {frontend.old/src/locales => frontend/lang}/messages/zh-CN.json (100%) rename {frontend.old/src/locales => frontend/lang}/messages/zh-TW.json (100%) create mode 100644 frontend/layouts/basic.vue rename frontend/pages/user/{register.vue => profile.vue} (92%) create mode 100644 frontend/pages/user/sign-up.vue create mode 100644 frontend/plugins/globals.js create mode 100644 frontend/static/account.png create mode 100644 frontend/store/index.js create mode 100644 frontend/types/api-types/admin.ts create mode 100644 frontend/types/api-types/events.ts create mode 100644 frontend/types/api-types/meal-plan.ts create mode 100644 frontend/types/api-types/recipe.ts create mode 100644 frontend/types/api-types/user.ts create mode 100644 frontend/types/api.ts create mode 100644 frontend/types/application-types.ts create mode 100644 frontend/types/vue.d.ts rename {frontend.old/src => frontend}/utils/globals.js (100%) rename {frontend.old/src => frontend}/utils/index.js (100%) rename {frontend.old/src => frontend}/utils/recipe.js (100%) diff --git a/frontend.old/src/components/UI/Dialogs/ConfirmationDialog.vue b/frontend.old/src/components/UI/Dialogs/ConfirmationDialog.vue deleted file mode 100644 index 7d7ea8ea574b..000000000000 --- a/frontend.old/src/components/UI/Dialogs/ConfirmationDialog.vue +++ /dev/null @@ -1,137 +0,0 @@ - - - - - diff --git a/frontend/api/class-interfaces/_base.ts b/frontend/api/class-interfaces/_base.ts new file mode 100644 index 000000000000..74ecc49cc84b --- /dev/null +++ b/frontend/api/class-interfaces/_base.ts @@ -0,0 +1,10 @@ +import { ApiRequestInstance } from "~/types/api"; + +export class BaseAPIClass { + requests: ApiRequestInstance + + constructor(requests: ApiRequestInstance) { + this.requests = requests; + } +} + diff --git a/frontend/api/class-interfaces/recipes.ts b/frontend/api/class-interfaces/recipes.ts new file mode 100644 index 000000000000..12ba427429d1 --- /dev/null +++ b/frontend/api/class-interfaces/recipes.ts @@ -0,0 +1,55 @@ +import { BaseAPIClass } from "./_base"; +import { Recipe } from "~/types/api-types/admin"; + +const prefix = "/api"; + +const routes = { + recipesCreate: `${prefix}/recipes/create`, + recipesBase: `${prefix}/recipes`, + recipesSummary: `${prefix}/recipes/summary`, + recipesTestScrapeUrl: `${prefix}/recipes/test-scrape-url`, + recipesCreateUrl: `${prefix}/recipes/create-url`, + recipesCreateFromZip: `${prefix}/recipes/create-from-zip`, + + recipesRecipeSlug: (recipe_slug: string) => `${prefix}/recipes/${recipe_slug}`, + recipesRecipeSlugZip: (recipe_slug: string) => `${prefix}/recipes/${recipe_slug}/zip`, + recipesRecipeSlugImage: (recipe_slug: string) => `${prefix}/recipes/${recipe_slug}/image`, + recipesRecipeSlugAssets: (recipe_slug: string) => `${prefix}/recipes/${recipe_slug}/assets`, +}; + +class RecipeAPI extends BaseAPIClass { + async getAll(start = 0, limit = 9999) { + return await this.requests.get(routes.recipesSummary, { + params: { start, limit }, + }); + } + + async getOne(slug: string) { + return await this.requests.get(routes.recipesRecipeSlug(slug)); + } + + async createOne(name: string) { + return await this.requests.post(routes.recipesBase, { name }); + } + + + + + recipeImage(recipeSlug: string, version = null, key = null) { + return `/api/media/recipes/${recipeSlug}/images/original.webp?&rnd=${key}&version=${version}`; + } + + recipeSmallImage(recipeSlug: string, version = null, key = null) { + return `/api/media/recipes/${recipeSlug}/images/min-original.webp?&rnd=${key}&version=${version}`; + } + + recipeTinyImage(recipeSlug: string, version = null, key = null) { + return `/api/media/recipes/${recipeSlug}/images/tiny-original.webp?&rnd=${key}&version=${version}`; + } + + recipeAssetPath(recipeSlug: string, assetName: string) { + return `/api/media/recipes/${recipeSlug}/assets/${assetName}`; + } +} + +export { RecipeAPI }; diff --git a/frontend/api/index.ts b/frontend/api/index.ts index c61e743f6e35..8c5ea3e2b7b5 100644 --- a/frontend/api/index.ts +++ b/frontend/api/index.ts @@ -1,5 +1,20 @@ +import { RecipeAPI } from "./class-interfaces/recipes"; +import { ApiRequestInstance } from "~/types/api"; +class Api { + private static instance: Api; + public recipes: RecipeAPI; + constructor(requests: ApiRequestInstance) { + if (Api.instance instanceof Api) { + return Api.instance; + } -export const api = {} + this.recipes = new RecipeAPI(requests); + Object.freeze(this); + Api.instance = this; + } +} + +export { Api }; diff --git a/frontend/api/requests.ts b/frontend/api/requests.ts index f21a4bc4f82d..544a99ca8e9e 100644 --- a/frontend/api/requests.ts +++ b/frontend/api/requests.ts @@ -1,5 +1,6 @@ import axios, { AxiosResponse } from "axios"; + interface RequestResponse { response: AxiosResponse | null; data: T | null; diff --git a/frontend/assets/main.css b/frontend/assets/main.css new file mode 100644 index 000000000000..b5ff067e6f6c --- /dev/null +++ b/frontend/assets/main.css @@ -0,0 +1,8 @@ +.layout-enter-active, +.layout-leave-active { + transition: opacity 0.2s; +} +.layout-enter, +.layout-leave-active { + opacity: 0; +} diff --git a/frontend/components/Domain/MealPlan/MealPlanCard.vue b/frontend/component-stagin/Domain/MealPlan/MealPlanCard.vue similarity index 89% rename from frontend/components/Domain/MealPlan/MealPlanCard.vue rename to frontend/component-stagin/Domain/MealPlan/MealPlanCard.vue index 13862cdd09d3..140e9872cb39 100644 --- a/frontend/components/Domain/MealPlan/MealPlanCard.vue +++ b/frontend/component-stagin/Domain/MealPlan/MealPlanCard.vue @@ -2,19 +2,19 @@ - + - + @@ -80,9 +80,9 @@ diff --git a/frontend.old/src/components/UI/CardSection.vue b/frontend/components/Domain/Recipe/RecipeCardSection.vue similarity index 84% rename from frontend.old/src/components/UI/CardSection.vue rename to frontend/components/Domain/Recipe/RecipeCardSection.vue index 35835b31c8e6..7f84c84a8cc7 100644 --- a/frontend.old/src/components/UI/CardSection.vue +++ b/frontend/components/Domain/Recipe/RecipeCardSection.vue @@ -1,7 +1,7 @@ + + + + \ No newline at end of file diff --git a/frontend/pages/admin/manage-users.vue b/frontend/pages/admin/manage-users.vue index f65b2c8a525b..a39f31c72bf6 100644 --- a/frontend/pages/admin/manage-users.vue +++ b/frontend/pages/admin/manage-users.vue @@ -1,16 +1,17 @@ - - - - \ No newline at end of file +
+ + + + + \ No newline at end of file diff --git a/frontend/pages/admin/migrations.vue b/frontend/pages/admin/migrations.vue index f65b2c8a525b..a39f31c72bf6 100644 --- a/frontend/pages/admin/migrations.vue +++ b/frontend/pages/admin/migrations.vue @@ -1,16 +1,17 @@ - - - - \ No newline at end of file +
+ + + + + \ No newline at end of file diff --git a/frontend/pages/admin/site-settings.vue b/frontend/pages/admin/site-settings.vue index f65b2c8a525b..a39f31c72bf6 100644 --- a/frontend/pages/admin/site-settings.vue +++ b/frontend/pages/admin/site-settings.vue @@ -1,16 +1,17 @@ - - - - \ No newline at end of file +
+ + + + + \ No newline at end of file diff --git a/frontend/pages/admin/toolbox.vue b/frontend/pages/admin/toolbox.vue index d0cd7424ba9b..a39f31c72bf6 100644 --- a/frontend/pages/admin/toolbox.vue +++ b/frontend/pages/admin/toolbox.vue @@ -1,16 +1,17 @@ - - - - \ No newline at end of file diff --git a/frontend/pages/index.vue b/frontend/pages/index.vue index 411c8fc22c68..3d3d96a42a34 100644 --- a/frontend/pages/index.vue +++ b/frontend/pages/index.vue @@ -1,16 +1,28 @@ - - \ No newline at end of file + \ No newline at end of file diff --git a/frontend/pages/meal-plan/planner.vue b/frontend/pages/meal-plan/planner.vue index f65b2c8a525b..bb6aebe3f129 100644 --- a/frontend/pages/meal-plan/planner.vue +++ b/frontend/pages/meal-plan/planner.vue @@ -3,7 +3,7 @@ - - \ No newline at end of file + \ No newline at end of file diff --git a/frontend/pages/user/register.vue b/frontend/pages/user/profile.vue similarity index 92% rename from frontend/pages/user/register.vue rename to frontend/pages/user/profile.vue index 7aa494406644..516e23df5228 100644 --- a/frontend/pages/user/register.vue +++ b/frontend/pages/user/profile.vue @@ -6,6 +6,7 @@ import { defineComponent } from "@nuxtjs/composition-api"; export default defineComponent({ + layout: "admin", setup() { return {}; }, diff --git a/frontend/pages/user/sign-up.vue b/frontend/pages/user/sign-up.vue new file mode 100644 index 000000000000..c234c6995a37 --- /dev/null +++ b/frontend/pages/user/sign-up.vue @@ -0,0 +1,116 @@ + + + + \ No newline at end of file diff --git a/frontend/plugins/globals.js b/frontend/plugins/globals.js new file mode 100644 index 000000000000..f0fd42ee3217 --- /dev/null +++ b/frontend/plugins/globals.js @@ -0,0 +1,206 @@ +import { + mdiAccount, + mdiSilverwareVariant, + mdiPlus, + mdiPlusCircle, + mdiDelete, + mdiContentSave, + mdiContentSaveEdit, + mdiSquareEditOutline, + mdiClose, + mdiTagMultipleOutline, + mdiBookOutline, + mdiAccountCog, + mdiAccountGroup, + mdiHome, + mdiMagnify, + mdiTranslate, + mdiClockTimeFourOutline, + mdiImport, + mdiEmail, + mdiLock, + mdiEye, + mdiEyeOff, + mdiCalendarMinus, + mdiCalendar, + mdiDiceMultiple, + mdiAlertCircle, + mdiDotsVertical, + mdiPrinter, + mdiShareVariant, + mdiHeart, + mdiHeartOutline, + mdiDotsHorizontal, + mdiCheckboxBlankOutline, + mdiCommentTextMultipleOutline, + mdiDownload, + mdiFile, + mdiFilePdfBox, + mdiFileImage, + mdiCodeJson, + mdiArrowUpDown, + mdiCog, + mdiSort, + mdiOrderAlphabeticalAscending, + mdiStar, + mdiNewBox, + mdiShuffleVariant, + mdiAlert, + mdiCheckboxMarkedCircle, + mdiInformation, + mdiBellAlert, + mdiRefreshCircle, + mdiMenu, + mdiWeatherSunny, + mdiWeatherNight, + mdiLink, + mdiRobot, + mdiLinkVariant, + mdiViewModule, + mdiViewDashboard, + mdiTools, + mdiCalendarWeek, + mdiCalendarToday, + mdiCalendarMultiselect, + mdiFormatListChecks, + mdiLogout, + mdiContentCopy, + mdiClipboardCheck, + mdiCloudUpload, + mdiDatabase, + mdiGithub, + mdiFolderOutline, + mdiApi, + mdiTestTube, + mdiDevTo, + mdiBackupRestore, + mdiNotificationClearAll, + mdiFood, + mdiWebhook, + mdiFilter, + mdiAccountPlusOutline, + mdiDesktopTowerMonitor, + mdiFormatColorFill, + mdiFormSelect, + mdiPageLayoutBody, + mdiCalendarWeekBegin, + mdiOpenInNew, + mdiCheck, + mdiBroom, + mdiCartCheck, + mdiArrowLeftBold, + mdiMinus, + mdiWindowClose, + mdiFolderZipOutline, +} from "@mdi/js"; + +const icons = { + // Primary + primary: mdiSilverwareVariant, + + // General + alert: mdiAlert, + alertCircle: mdiAlertCircle, + api: mdiApi, + arrowLeftBold: mdiArrowLeftBold, + arrowUpDown: mdiArrowUpDown, + backupRestore: mdiBackupRestore, + bellAlert: mdiBellAlert, + broom: mdiBroom, + calendar: mdiCalendar, + calendarMinus: mdiCalendarMinus, + calendarMultiselect: mdiCalendarMultiselect, + calendarToday: mdiCalendarToday, + calendarWeek: mdiCalendarWeek, + calendarWeekBegin: mdiCalendarWeekBegin, + cartCheck: mdiCartCheck, + check: mdiCheck, + checkboxBlankOutline: mdiCheckboxBlankOutline, + checkboxMarkedCircle: mdiCheckboxMarkedCircle, + clipboardCheck: mdiClipboardCheck, + clockOutline: mdiClockTimeFourOutline, + codeBraces: mdiCodeJson, + codeJson: mdiCodeJson, + cog: mdiCog, + commentTextMultipleOutline: mdiCommentTextMultipleOutline, + contentCopy: mdiContentCopy, + database: mdiDatabase, + desktopTowerMonitor: mdiDesktopTowerMonitor, + devTo: mdiDevTo, + diceMultiple: mdiDiceMultiple, + dotsHorizontal: mdiDotsHorizontal, + dotsVertical: mdiDotsVertical, + download: mdiDownload, + email: mdiEmail, + externalLink: mdiLinkVariant, + eye: mdiEye, + eyeOff: mdiEyeOff, + file: mdiFile, + fileImage: mdiFileImage, + filePDF: mdiFilePdfBox, + filter: mdiFilter, + folderOutline: mdiFolderOutline, + food: mdiFood, + formatColorFill: mdiFormatColorFill, + formatListCheck: mdiFormatListChecks, + formSelect: mdiFormSelect, + github: mdiGithub, + heart: mdiHeart, + heartOutline: mdiHeartOutline, + home: mdiHome, + import: mdiImport, + information: mdiInformation, + link: mdiLink, + lock: mdiLock, + logout: mdiLogout, + menu: mdiMenu, + newBox: mdiNewBox, + notificationClearAll: mdiNotificationClearAll, + openInNew: mdiOpenInNew, + orderAlphabeticalAscending: mdiOrderAlphabeticalAscending, + pageLayoutBody: mdiPageLayoutBody, + printer: mdiPrinter, + refreshCircle: mdiRefreshCircle, + robot: mdiRobot, + search: mdiMagnify, + shareVariant: mdiShareVariant, + shuffleVariant: mdiShuffleVariant, + sort: mdiSort, + star: mdiStar, + testTube: mdiTestTube, + tools: mdiTools, + translate: mdiTranslate, + upload: mdiCloudUpload, + viewDashboard: mdiViewDashboard, + viewModule: mdiViewModule, + weatherNight: mdiWeatherNight, + weatherSunny: mdiWeatherSunny, + webhook: mdiWebhook, + windowClose: mdiWindowClose, + zip: mdiFolderZipOutline, + + // Crud + createAlt: mdiPlus, + create: mdiPlusCircle, + delete: mdiDelete, + save: mdiContentSave, + update: mdiContentSaveEdit, + edit: mdiSquareEditOutline, + close: mdiClose, + minus: mdiMinus, + + // Organization + tags: mdiTagMultipleOutline, + pages: mdiBookOutline, + + // Admin + user: mdiAccount, + admin: mdiAccountCog, + group: mdiAccountGroup, + accountPlusOutline: mdiAccountPlusOutline, +}; + +export default ({ app }, inject) => { + // Inject $hello(msg) in Vue, context and store. + inject("globals", { icons }); +}; diff --git a/frontend/static/account.png b/frontend/static/account.png new file mode 100644 index 0000000000000000000000000000000000000000..28804298a32c9585b30baeb0bb0f2b6c07a7ac65 GIT binary patch literal 675 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTCmUKs7M+SzC{oH>NS%G|oWRD45dJguM!v-tY$DUh!@P+6=(yLU`z6LcLCBs@Y8vBJ&@uo z@Q5r1(g|SvA=~LZ0|VnyPZ!6KjC*gVpY?KblxVxJd1-;puFge9i>xyOOE@p?5-U~I z73w;&qWY!yuI7Lh+y3TsUlE)3amxn|#a9=N-Jc75KJez*?8>Xx7TX(*!&vht%BM88m465FZ*=;%el}+P7LX_C(Jc>e9Jqf-)+AK%Div8q@1z-HIC z!9q+i5m)9NH`p)hU}hn-SY|Qzy1%m({ghZv?EdyoT7fm@n_@j<&(3do;)?_}&3$E( zx9a4ie9lcAGK{VZgtjOZ%$Q;O{^K9zM?21>s;u>jnr5P(>37NJf?8AF{7Lsz_j*=M z`J(XB?^3VfGOI6F9N2C!=QY0Ps890U*JN1MET5$D$Z|oB;@wXE2Mirmru6$!BV}`|aJsUc~oARZ}<9 zeoe5xcEB`~AHs`lQ>^zo#4l~Zf{D$LK90Ao(I z#5JNMC9x#cD!C{XNHG{07#ZpsSm+uUh8P)J85mj_8E6|ASQ!}j+IfM}5<)|6eoAIq XC2kEi$)9!sH86O(`njxgN@xNA { + response: AxiosResponse | null; + data: T | null; + error: any; + } + +export interface ApiRequestInstance { + get(url: string, data?: object): Promise>; + post(url: string, data: object): Promise>; + put(url: string, data: object): Promise>; + patch(url: string, data: object): Promise>; + delete(url: string, data: object): Promise>; +} + diff --git a/frontend/types/application-types.ts b/frontend/types/application-types.ts new file mode 100644 index 000000000000..6a1d8ff96bfa --- /dev/null +++ b/frontend/types/application-types.ts @@ -0,0 +1,9 @@ +import { TranslateResult } from "vue-i18n"; + +export interface SideBarLink { + icon: string + to: string + title: TranslateResult +} + +export type SidebarLinks = Array \ No newline at end of file diff --git a/frontend/types/vue.d.ts b/frontend/types/vue.d.ts new file mode 100644 index 000000000000..291cda5b2acf --- /dev/null +++ b/frontend/types/vue.d.ts @@ -0,0 +1,14 @@ +import Vue from "vue"; + +declare module "vue/types/vue" { + + interface Vue { + $globals: any; + } +} + +declare module "vue/types/options" { + interface ComponentOptions { + $globals?: any; + } +} diff --git a/frontend.old/src/utils/globals.js b/frontend/utils/globals.js similarity index 100% rename from frontend.old/src/utils/globals.js rename to frontend/utils/globals.js diff --git a/frontend.old/src/utils/index.js b/frontend/utils/index.js similarity index 100% rename from frontend.old/src/utils/index.js rename to frontend/utils/index.js diff --git a/frontend.old/src/utils/recipe.js b/frontend/utils/recipe.js similarity index 100% rename from frontend.old/src/utils/recipe.js rename to frontend/utils/recipe.js diff --git a/frontend/yarn.lock b/frontend/yarn.lock index 46324b261a8b..75e9e06ac47e 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -2,6 +2,22 @@ # yarn lockfile v1 +"@adapttive/vue-markdown@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@adapttive/vue-markdown/-/vue-markdown-4.0.1.tgz#4912aa13482cb764bd7ef894f5e1f42e18a911c2" + integrity sha512-Qqs9zZ2PGaZQBycQnc1hfz4FyJxsmQNLXAYsGPkPipg+wnRIv7+m9cR6Maa4zJbHmGzZrwAMYFE5BMXEUDfh/g== + dependencies: + markdown-it "^12.0.3" + markdown-it-abbr "^1.0.4" + markdown-it-deflist "^2.1.0" + markdown-it-emoji "^2.0.0" + markdown-it-footnote "^3.0.2" + markdown-it-ins "^3.0.0" + markdown-it-mark "^3.0.0" + markdown-it-sub "^1.0.0" + markdown-it-sup "^1.0.0" + markdown-it-toc-and-anchor "^4.2.0" + "@babel/code-frame@7.12.11": version "7.12.11" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" @@ -267,7 +283,7 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.5", "@babel/parser@^7.14.8": +"@babel/parser@^7.1.0", "@babel/parser@^7.14.5", "@babel/parser@^7.14.7", "@babel/parser@^7.14.8", "@babel/parser@^7.9.6": version "7.14.8" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.14.8.tgz#66fd41666b2d7b840bd5ace7f7416d5ac60208d4" integrity sha512-syoCQFOoo/fzkWDeM0dLEZi5xqurb5vuyzwIMNZRNun+N/9A4cUZeQaE7dTrB8jGaKuJRBtEOajtnmw0I5hvvA== @@ -896,7 +912,7 @@ "@babel/parser" "^7.14.5" "@babel/types" "^7.14.5" -"@babel/traverse@^7.13.0", "@babel/traverse@^7.14.5", "@babel/traverse@^7.14.8": +"@babel/traverse@^7.13.0", "@babel/traverse@^7.14.5", "@babel/traverse@^7.14.7", "@babel/traverse@^7.14.8": version "7.14.8" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.14.8.tgz#c0253f02677c5de1a8ff9df6b0aacbec7da1a8ce" integrity sha512-kexHhzCljJcFNn1KYAQ6A5wxMRzq9ebYpEDV4+WdNyr3i7O44tanbDOR/xjiG2F3sllan+LgwK+7OMk0EmydHg== @@ -953,6 +969,32 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz#87de7af9c231826fdd68ac7258f77c429e0e5fcf" integrity sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w== +"@intlify/shared@^9.0.0": + version "9.1.7" + resolved "https://registry.yarnpkg.com/@intlify/shared/-/shared-9.1.7.tgz#e7d8bc90cb59dc17dd7b4c85a73db16fcb7891fc" + integrity sha512-zt0zlUdalumvT9AjQNxPXA36UgOndUyvBMplh8uRZU0fhWHAwhnJTcf0NaG9Qvr8I1n3HPSs96+kLb/YdwTavQ== + +"@intlify/vue-i18n-extensions@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@intlify/vue-i18n-extensions/-/vue-i18n-extensions-1.0.2.tgz#ab7f8507f7d423c368e44fa21d6dece700261fca" + integrity sha512-rnfA0ScyBXyp9xsSD4EAMGeOh1yv/AE7fhqdAdSOr5X8N39azz257umfRtzNT9sHXAKSSzpCVhIbMAkp5c/gjQ== + dependencies: + "@babel/parser" "^7.9.6" + +"@intlify/vue-i18n-loader@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@intlify/vue-i18n-loader/-/vue-i18n-loader-1.1.0.tgz#eecc6460823676f533784b3641665c5a609eccf0" + integrity sha512-9LXiztMtYKTE8t/hRwwGUp+ofrwU0sxLQLzFEOZ38zvn0DonUIQmZUj1cfz5p1Lu8BllxKbCrn6HnsRJ+LYA6g== + dependencies: + "@intlify/shared" "^9.0.0" + js-yaml "^3.13.1" + json5 "^2.1.1" + +"@mdi/js@^5.9.55": + version "5.9.55" + resolved "https://registry.yarnpkg.com/@mdi/js/-/js-5.9.55.tgz#8f5bc4d924c23f30dab20545ddc768e778bbc882" + integrity sha512-BbeHMgeK2/vjdJIRnx12wvQ6s8xAYfvMmEAVsUx9b+7GiQGQ9Za8jpwp17dMKr9CgKRvemlAM4S7S3QOtEbp4A== + "@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" @@ -1334,7 +1376,22 @@ webpack-node-externals "^3.0.0" webpackbar "^4.0.0" -"@nuxtjs/axios@^5.13.6": +"@nuxtjs/auth-next@5.0.0-1624817847.21691f1": + version "5.0.0-1624817847.21691f1" + resolved "https://registry.yarnpkg.com/@nuxtjs/auth-next/-/auth-next-5.0.0-1624817847.21691f1.tgz#28b92625ac5817d8083f8b42dd184a88caefbe96" + integrity sha512-PsHhLtzglMnwM2o16mgM7zQ3KwTI7AIg2ja3IFYujbs9s1w8HvnRD3byMRj1WZo0vXEBRh3u3nHxKEBIbFe1Xg== + dependencies: + "@nuxtjs/axios" "^5.13.0" + axios "^0.21.1" + body-parser "^1.19.0" + consola "^2.15.3" + cookie "^0.4.1" + defu "^3.2.2" + hasha "^5.2.2" + jwt-decode "^3.1.2" + requrl "^3.0.2" + +"@nuxtjs/axios@^5.13.0", "@nuxtjs/axios@^5.13.6": version "5.13.6" resolved "https://registry.yarnpkg.com/@nuxtjs/axios/-/axios-5.13.6.tgz#6f4bbd98a3a7799a5d2c0726c6ad2a98aa111881" integrity sha512-XS+pOE0xsDODs1zAIbo95A0LKlilvJi8YW0NoXYuq3/jjxGgWDxizZ6Yx0AIIjZOoGsXJOPc0/BcnSEUQ2mFBA== @@ -2296,6 +2353,11 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" +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== + arr-diff@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" @@ -2517,6 +2579,22 @@ bn.js@^5.0.0, bn.js@^5.1.1: resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.0.tgz#358860674396c6997771a9d051fcc1b57d4ae002" integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw== +body-parser@^1.19.0: + version "1.19.0" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" + integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== + dependencies: + bytes "3.1.0" + content-type "~1.0.4" + debug "2.6.9" + depd "~1.1.2" + http-errors "1.7.2" + iconv-lite "0.4.24" + on-finished "~2.3.0" + qs "6.7.0" + raw-body "2.4.0" + type-is "~1.6.17" + boolbase@^1.0.0, boolbase@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" @@ -2686,6 +2764,11 @@ bytes@3.0.0: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= +bytes@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" + integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== + cacache@^12.0.2: version "12.0.4" resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" @@ -2998,6 +3081,11 @@ clone-deep@^4.0.1: kind-of "^6.0.2" shallow-clone "^3.0.0" +clone@^2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" + integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= + coa@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/coa/-/coa-2.0.2.tgz#43f6c21151b4ef2bf57187db0d73de229e3e7ec3" @@ -3152,6 +3240,11 @@ constants-browserify@^1.0.0: resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= +content-type@~1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b" + integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA== + convert-source-map@^1.7.0: version "1.8.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" @@ -3164,6 +3257,11 @@ cookie@^0.3.1: resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" integrity sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s= +cookie@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.1.tgz#afd713fe26ebd21ba95ceb61f9a8116e50a537d1" + integrity sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA== + copy-concurrently@^1.0.0: version "1.0.5" resolved "https://registry.yarnpkg.com/copy-concurrently/-/copy-concurrently-1.0.5.tgz#92297398cae34937fcafd6ec8139c18051f0b5e0" @@ -3844,6 +3942,11 @@ entities@^2.0.0: resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== +entities@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5" + integrity sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w== + errno@^0.1.3, errno@~0.1.7: version "0.1.8" resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" @@ -4000,6 +4103,13 @@ eslint-plugin-nuxt@^2.0.0: semver "^7.3.2" vue-eslint-parser "^7.1.1" +eslint-plugin-prettier@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.4.0.tgz#cdbad3bf1dbd2b177e9825737fe63b476a08f0c7" + integrity sha512-UDK6rJT6INSfcOo545jiaOwB701uAIt2/dR7WnFQoGCVl1/EMqdANBmwUaqqQ45aXprsTGzSa39LI1PyuRBxxw== + dependencies: + prettier-linter-helpers "^1.0.0" + eslint-plugin-promise@^5.1.0: version "5.1.0" resolved "https://registry.yarnpkg.com/eslint-plugin-promise/-/eslint-plugin-promise-5.1.0.tgz#fb2188fb734e4557993733b41aa1a688f46c6f24" @@ -4334,6 +4444,11 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^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.1.1: version "3.2.7" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.7.tgz#fd6cb7a2d7e9aa7a7846111e85a196d6b2f766a1" @@ -4968,6 +5083,17 @@ htmlparser2@^6.1.0: domutils "^2.5.2" entities "^2.0.0" +http-errors@1.7.2: + version "1.7.2" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" + integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.1" + statuses ">= 1.5.0 < 2" + toidentifier "1.0.0" + http-errors@~1.7.2: version "1.7.3" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" @@ -5019,7 +5145,7 @@ husky@^6.0.0: resolved "https://registry.yarnpkg.com/husky/-/husky-6.0.0.tgz#810f11869adf51604c32ea577edbc377d7f9319e" integrity sha512-SQS2gDTB7tBN486QSoKPKQItZw97BMOd+Kdb6ghfpBc0yXyzrddI0oDV5MkDAbuB4X2mO3/nj60TRMcYxwzZeQ== -iconv-lite@^0.4.24: +iconv-lite@0.4.24, iconv-lite@^0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -5341,6 +5467,11 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: dependencies: is-extglob "^2.1.1" +is-https@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-https/-/is-https-4.0.0.tgz#9ee725a334fb517b988278d2674efc96e4f348ed" + integrity sha512-FeMLiqf8E5g6SdiVJsPcNZX8k4h2fBs1wp5Bb6uaNxn58ufK1axBqQZdmAQsqh0t9BuwFObybrdVJh6MKyPlyg== + is-negative-zero@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" @@ -5493,6 +5624,11 @@ jiti@^1.9.2: resolved "https://registry.yarnpkg.com/jiti/-/jiti-1.11.0.tgz#64120a30d97b9bf37b8b032cf4564dfadc28984c" integrity sha512-/2c7e61hxxTIN34UeHBB0LCJ5Tq64kgJDV7GR+++e8XRxCKRIKmB8tH6ww1W+Z6Kgd6By+C3RSCu1lXjbPT68A== +js-cookie@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/js-cookie/-/js-cookie-2.2.1.tgz#69e106dc5d5806894562902aa5baec3744e9b2b8" + integrity sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ== + js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -5548,7 +5684,7 @@ json5@^1.0.1: dependencies: minimist "^1.2.0" -json5@^2.1.2, json5@^2.2.0: +json5@^2.1.1, json5@^2.1.2, json5@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== @@ -5571,6 +5707,11 @@ jsonfile@^6.0.1: optionalDependencies: graceful-fs "^4.1.6" +jwt-decode@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/jwt-decode/-/jwt-decode-3.1.2.tgz#3fb319f3675a2df0c2895c8f5e9fa4b67b04ed59" + integrity sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A== + kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: version "3.2.2" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" @@ -5636,6 +5777,13 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= +linkify-it@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-3.0.2.tgz#f55eeb8bc1d3ae754049e124ab3bb56d97797fb8" + integrity sha512-gDBO4aHNZS6coiZCKVhSNh43F9ioIL4JwRjLZPkoLIY4yZFwg264Y5lu2x6rb1Js42Gh6Yqm2f6L2AJcnkzinQ== + dependencies: + uc.micro "^1.0.1" + lint-staged@^10.5.4: version "10.5.4" resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-10.5.4.tgz#cd153b5f0987d2371fc1d2847a409a2fe705b665" @@ -5891,6 +6039,65 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" +markdown-it-abbr@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/markdown-it-abbr/-/markdown-it-abbr-1.0.4.tgz#d66b5364521cbb3dd8aa59dadfba2fb6865c8fd8" + integrity sha1-1mtTZFIcuz3Yqlna37ovtoZcj9g= + +markdown-it-deflist@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/markdown-it-deflist/-/markdown-it-deflist-2.1.0.tgz#50d7a56b9544cd81252f7623bd785e28a8dcef5c" + integrity sha512-3OuqoRUlSxJiuQYu0cWTLHNhhq2xtoSFqsZK8plANg91+RJQU1ziQ6lA2LzmFAEes18uPBsHZpcX6We5l76Nzg== + +markdown-it-emoji@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/markdown-it-emoji/-/markdown-it-emoji-2.0.0.tgz#3164ad4c009efd946e98274f7562ad611089a231" + integrity sha512-39j7/9vP/CPCKbEI44oV8yoPJTpvfeReTn/COgRhSpNrjWF3PfP/JUxxB0hxV6ynOY8KH8Y8aX9NMDdo6z+6YQ== + +markdown-it-footnote@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/markdown-it-footnote/-/markdown-it-footnote-3.0.3.tgz#e0e4c0d67390a4c5f0c75f73be605c7c190ca4d8" + integrity sha512-YZMSuCGVZAjzKMn+xqIco9d1cLGxbELHZ9do/TSYVzraooV8ypsppKNmUJ0fVH5ljkCInQAtFpm8Rb3eXSrt5w== + +markdown-it-ins@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/markdown-it-ins/-/markdown-it-ins-3.0.1.tgz#c09356b917cf1dbf73add0b275d67ab8c73d4b4d" + integrity sha512-32SSfZqSzqyAmmQ4SHvhxbFqSzPDqsZgMHDwxqPzp+v+t8RsmqsBZRG+RfRQskJko9PfKC2/oxyOs4Yg/CfiRw== + +markdown-it-mark@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/markdown-it-mark/-/markdown-it-mark-3.0.1.tgz#51257db58787d78aaf46dc13418d99a9f3f0ebd3" + integrity sha512-HyxjAu6BRsdt6Xcv6TKVQnkz/E70TdGXEFHRYBGLncRE9lBFwDNLVtFojKxjJWgJ+5XxUwLaHXy+2sGBbDn+4A== + +markdown-it-sub@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/markdown-it-sub/-/markdown-it-sub-1.0.0.tgz#375fd6026eae7ddcb012497f6411195ea1e3afe8" + integrity sha1-N1/WAm6ufdywEkl/ZBEZXqHjr+g= + +markdown-it-sup@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/markdown-it-sup/-/markdown-it-sup-1.0.0.tgz#cb9c9ff91a5255ac08f3fd3d63286e15df0a1fc3" + integrity sha1-y5yf+RpSVawI8/09YyhuFd8KH8M= + +markdown-it-toc-and-anchor@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/markdown-it-toc-and-anchor/-/markdown-it-toc-and-anchor-4.2.0.tgz#d1613327cc63c61f82cd66cbac5564f4db12c0e9" + integrity sha512-DusSbKtg8CwZ92ztN7bOojDpP4h0+w7BVOPuA3PHDIaabMsERYpwsazLYSP/UlKedoQjOz21mwlai36TQ04EpA== + dependencies: + clone "^2.1.0" + uslug "^1.0.4" + +markdown-it@^12.0.3: + version "12.1.0" + resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-12.1.0.tgz#7ad572caddd336bd27a68d20e86bac1fafe8fb20" + integrity sha512-7temG6IFOOxfU0SgzhqR+vr2diuMhyO5uUIEZ3C5NbXhqC9uFUHoU41USYuDFoZRsaY7BEIEei874Z20VMLF6A== + dependencies: + argparse "^2.0.1" + entities "~2.1.0" + linkify-it "^3.0.1" + mdurl "^1.0.1" + uc.micro "^1.0.5" + md5.js@^1.3.4: version "1.3.5" resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" @@ -5910,6 +6117,16 @@ mdn-data@2.0.4: resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b" integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA== +mdurl@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" + integrity sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4= + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g= + mem@^8.1.1: version "8.1.1" resolved "https://registry.yarnpkg.com/mem/-/mem-8.1.1.tgz#cf118b357c65ab7b7e0817bdf00c8062297c0122" @@ -6359,6 +6576,24 @@ num2fraction@^1.2.2: resolved "https://registry.yarnpkg.com/num2fraction/-/num2fraction-1.2.2.tgz#6f682b6a027a4e9ddfa4564cd2589d1d4e669ede" integrity sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4= +nuxt-i18n@^6.28.0: + version "6.28.0" + resolved "https://registry.yarnpkg.com/nuxt-i18n/-/nuxt-i18n-6.28.0.tgz#05924b8cf4b12633041a547b39e43db2f1f852a8" + integrity sha512-8XT9UflwAlEDROMTZOwQKFrnM2+eqbHC8UJNlLCjODOCrmhMHGSfojxbFxs4W4+hKdDw4Gz30PHK6v6GIqIzMQ== + dependencies: + "@babel/parser" "^7.14.7" + "@babel/traverse" "^7.14.7" + "@intlify/vue-i18n-extensions" "^1.0.2" + "@intlify/vue-i18n-loader" "^1.1.0" + cookie "^0.4.1" + devalue "^2.0.1" + is-https "^4.0.0" + js-cookie "^2.2.1" + klona "^2.0.4" + lodash.merge "^4.6.2" + ufo "^0.7.7" + vue-i18n "^8.25.0" + nuxt@^2.15.7: version "2.15.7" resolved "https://registry.yarnpkg.com/nuxt/-/nuxt-2.15.7.tgz#45332e3b00ba5c1cf04688d42373c8ed7ef4dca7" @@ -7472,6 +7707,13 @@ prepend-http@^1.0.0: resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc" integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw= +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@^1.18.2: version "1.19.1" resolved "https://registry.yarnpkg.com/prettier/-/prettier-1.19.1.tgz#f7d7f5ff8a9cd872a7be4ca142095956a60797cb" @@ -7601,6 +7843,11 @@ q@^1.1.2: resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= +qs@6.7.0: + version "6.7.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" + integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== + qs@^6.9.4: version "6.10.1" resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.1.tgz#4931482fa8d647a5aab799c5271d2133b981fb6a" @@ -7666,6 +7913,16 @@ range-parser@^1.2.1, range-parser@~1.2.1: resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== +raw-body@2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" + integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== + dependencies: + bytes "3.1.0" + http-errors "1.7.2" + iconv-lite "0.4.24" + unpipe "1.0.0" + rc9@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/rc9/-/rc9-1.2.0.tgz#ef098181fdde714efc4c426383d6e46c14b1254a" @@ -7863,6 +8120,11 @@ requires-port@^1.0.0: resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= +requrl@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/requrl/-/requrl-3.0.2.tgz#d376104193b02a2d874dde68454c2db2dfeb0fac" + integrity sha512-f3gjR6d8MhOpn46PP+DSJywbmxi95fxQm3coXBFwognjFLla9X6tr8BdNyaIKNOEkaRbRcm0/zYAqN19N1oyhg== + reserved-words@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/reserved-words/-/reserved-words-0.1.2.tgz#00a0940f98cd501aeaaac316411d9adc52b31ab1" @@ -8314,6 +8576,11 @@ sort-keys@^2.0.0: dependencies: is-plain-obj "^1.0.0" +sortablejs@1.10.2: + version "1.10.2" + resolved "https://registry.yarnpkg.com/sortablejs/-/sortablejs-1.10.2.tgz#6e40364d913f98b85a14f6678f92b5c1221f5290" + integrity sha512-YkPGufevysvfwn5rfdlGyrGjt7/CRHwvRPogD/lC+TnvcN29jDpCifKP+rBqf+LRldfXSTh+0CGLcSg0VIxq3A== + source-list-map@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" @@ -8939,6 +9206,14 @@ type-fest@^0.8.0, type-fest@^0.8.1: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== +type-is@~1.6.17: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" @@ -8954,6 +9229,11 @@ 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== +uc.micro@^1.0.1, uc.micro@^1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac" + integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA== + ufo@^0.7.4, ufo@^0.7.7: version "0.7.7" resolved "https://registry.yarnpkg.com/ufo/-/ufo-0.7.7.tgz#0062f9e5e790819b0fb23ca24d7c63a4011c036a" @@ -9046,7 +9326,12 @@ universalify@^2.0.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== -unpipe@~1.0.0: +"unorm@>= 1.0.0": + version "1.6.0" + resolved "https://registry.yarnpkg.com/unorm/-/unorm-1.6.0.tgz#029b289661fba714f1a9af439eb51d9b16c205af" + integrity sha512-b2/KCUlYZUeA7JFUuRJZPUtr4gZvBh7tavtv4fvk4+KV9pfGiR6CQAQAWl49ZpR3ts2dk4FYkP7EIgDJoiOLDA== + +unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= @@ -9113,6 +9398,13 @@ use@^3.1.0: resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== +uslug@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/uslug/-/uslug-1.0.4.tgz#b9a22f0914e0a86140633dacc302e5f4fa450677" + integrity sha1-uaIvCRTgqGFAYz2swwLl9PpFBnc= + dependencies: + unorm ">= 1.0.0" + util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" @@ -9216,6 +9508,11 @@ vue-hot-reload-api@^2.3.0: resolved "https://registry.yarnpkg.com/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz#532955cc1eb208a3d990b3a9f9a70574657e08f2" integrity sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog== +vue-i18n@^8.25.0: + version "8.25.0" + resolved "https://registry.yarnpkg.com/vue-i18n/-/vue-i18n-8.25.0.tgz#1037d9295fa2845a230b771de473481edb2cfc4c" + integrity sha512-ynhcL+PmTxuuSE1T10htiSXzjBozxYIE3ffbM1RfgAkVbr/v1SP+9Mi/7/uv8ZVV1yGuKjFAYp9BXq+X7op6MQ== + vue-loader@^15.9.7: version "15.9.7" resolved "https://registry.yarnpkg.com/vue-loader/-/vue-loader-15.9.7.tgz#15b05775c3e0c38407679393c2ce6df673b01044" @@ -9284,6 +9581,13 @@ vue@^2.6.12: resolved "https://registry.yarnpkg.com/vue/-/vue-2.6.14.tgz#e51aa5250250d569a3fbad3a8a5a687d6036e235" integrity sha512-x2284lgYvjOMj3Za7kqzRcUSxBboHqtgRE2zlos1qWaOye5yUmHn42LB1250NJBLRwEcdrB0JRwyPTEPhfQjiQ== +vuedraggable@^2.24.3: + version "2.24.3" + resolved "https://registry.yarnpkg.com/vuedraggable/-/vuedraggable-2.24.3.tgz#43c93849b746a24ce503e123d5b259c701ba0d19" + integrity sha512-6/HDXi92GzB+Hcs9fC6PAAozK1RLt1ewPTLjK0anTYguXLAeySDmcnqE8IC0xa7shvSzRjQXq3/+dsZ7ETGF3g== + dependencies: + sortablejs "1.10.2" + vuetify-loader@^1.7.2: version "1.7.2" resolved "https://registry.yarnpkg.com/vuetify-loader/-/vuetify-loader-1.7.2.tgz#5cdc45309496cf3a5fe431fd7611706ffa4aa8c8" diff --git a/poetry.lock b/poetry.lock index 2a8a7e3b771f..3d0670dcf72d 100644 --- a/poetry.lock +++ b/poetry.lock @@ -173,7 +173,7 @@ pycparser = "*" [[package]] name = "charset-normalizer" -version = "2.0.3" +version = "2.0.4" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." category = "main" optional = false @@ -413,7 +413,7 @@ python-versions = ">=3.5" [[package]] name = "importlib-metadata" -version = "4.6.1" +version = "4.6.3" description = "Read metadata from Python packages" category = "dev" optional = false @@ -448,7 +448,7 @@ six = "*" [[package]] name = "isort" -version = "5.9.2" +version = "5.9.3" description = "A Python utility / library to sort Python imports." category = "dev" optional = false @@ -577,7 +577,7 @@ i18n = ["babel (>=2.9.0)"] [[package]] name = "mkdocs-material" -version = "7.2.0" +version = "7.2.2" description = "A Material Design theme for MkDocs" category = "dev" optional = false @@ -740,6 +740,18 @@ typing-extensions = ">=3.7.4.3" dotenv = ["python-dotenv (>=0.10.4)"] email = ["email-validator (>=1.0.3)"] +[[package]] +name = "pydantic-to-typescript" +version = "1.0.7" +description = "Convert pydantic models to typescript interfaces" +category = "dev" +optional = false +python-versions = "*" + +[package.dependencies] +click = "*" +pydantic = "*" + [[package]] name = "pyflakes" version = "2.3.1" @@ -766,7 +778,7 @@ python-versions = "*" [[package]] name = "pylint" -version = "2.9.5" +version = "2.9.6" description = "python code static checker" category = "dev" optional = false @@ -1282,7 +1294,7 @@ pgsql = ["psycopg2-binary"] [metadata] lock-version = "1.1" python-versions = "^3.9" -content-hash = "a06d6cf8970f370f05958cc8190a97c731dd586405d51ed11b828de842fbe1d2" +content-hash = "c5beb9d4a67cd02434b365bb0d6bec1a1d0688a2b2ff20acb991e103ee8ee8bf" [metadata.files] aiofiles = [ @@ -1386,8 +1398,8 @@ cffi = [ {file = "cffi-1.14.6.tar.gz", hash = "sha256:c9a875ce9d7fe32887784274dd533c57909b7b1dcadcc128a2ac21331a9765dd"}, ] charset-normalizer = [ - {file = "charset-normalizer-2.0.3.tar.gz", hash = "sha256:c46c3ace2d744cfbdebceaa3c19ae691f53ae621b39fd7570f59d14fb7f2fd12"}, - {file = "charset_normalizer-2.0.3-py3-none-any.whl", hash = "sha256:88fce3fa5b1a84fdcb3f603d889f723d1dd89b26059d0123ca435570e848d5e1"}, + {file = "charset-normalizer-2.0.4.tar.gz", hash = "sha256:f23667ebe1084be45f6ae0538e4a5a865206544097e4e8bbcacf42cd02a348f3"}, + {file = "charset_normalizer-2.0.4-py3-none-any.whl", hash = "sha256:0c8911edd15d19223366a194a513099a302055a962bca2cec0f54b8b63175d8b"}, ] click = [ {file = "click-7.1.2-py2.py3-none-any.whl", hash = "sha256:dacca89f4bfadd5de3d7489b7c8a566eee0d3676333fbb50030263894c38c0dc"}, @@ -1580,8 +1592,8 @@ idna = [ {file = "idna-3.2.tar.gz", hash = "sha256:467fbad99067910785144ce333826c71fb0e63a425657295239737f7ecd125f3"}, ] importlib-metadata = [ - {file = "importlib_metadata-4.6.1-py3-none-any.whl", hash = "sha256:9f55f560e116f8643ecf2922d9cd3e1c7e8d52e683178fecd9d08f6aa357e11e"}, - {file = "importlib_metadata-4.6.1.tar.gz", hash = "sha256:079ada16b7fc30dfbb5d13399a5113110dab1aa7c2bc62f66af75f0b717c8cac"}, + {file = "importlib_metadata-4.6.3-py3-none-any.whl", hash = "sha256:51c6635429c77cf1ae634c997ff9e53ca3438b495f10a55ba28594dd69764a8b"}, + {file = "importlib_metadata-4.6.3.tar.gz", hash = "sha256:0645585859e9a6689c523927a5032f2ba5919f1f7d0e84bd4533312320de1ff9"}, ] iniconfig = [ {file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"}, @@ -1592,8 +1604,8 @@ isodate = [ {file = "isodate-0.6.0.tar.gz", hash = "sha256:2e364a3d5759479cdb2d37cce6b9376ea504db2ff90252a2e5b7cc89cc9ff2d8"}, ] isort = [ - {file = "isort-5.9.2-py3-none-any.whl", hash = "sha256:eed17b53c3e7912425579853d078a0832820f023191561fcee9d7cae424e0813"}, - {file = "isort-5.9.2.tar.gz", hash = "sha256:f65ce5bd4cbc6abdfbe29afc2f0245538ab358c14590912df638033f157d555e"}, + {file = "isort-5.9.3-py3-none-any.whl", hash = "sha256:e17d6e2b81095c9db0a03a8025a957f334d6ea30b26f9ec70805411e5c7c81f2"}, + {file = "isort-5.9.3.tar.gz", hash = "sha256:9c2ea1e62d871267b78307fe511c0838ba0da28698c5732d54e2790bf3ba9899"}, ] jinja2 = [ {file = "Jinja2-2.11.3-py2.py3-none-any.whl", hash = "sha256:03e47ad063331dd6a3f04a43eddca8a966a26ba0c5b7207a9a9e4e08f1b29419"}, @@ -1721,8 +1733,8 @@ mkdocs = [ {file = "mkdocs-1.2.2.tar.gz", hash = "sha256:a334f5bd98ec960638511366eb8c5abc9c99b9083a0ed2401d8791b112d6b078"}, ] mkdocs-material = [ - {file = "mkdocs-material-7.2.0.tar.gz", hash = "sha256:9f43c5874e119b312a6f369ef363815c11f182b5cdeff4a3426615ebc4664ace"}, - {file = "mkdocs_material-7.2.0-py2.py3-none-any.whl", hash = "sha256:8b3750857e168a9ca20be34890791817090b016248a39be45069fab5343f1dc0"}, + {file = "mkdocs-material-7.2.2.tar.gz", hash = "sha256:4f501e139e2f8546653e7d8777c9b97ca639d03d8c86345a60609864cc5bbb03"}, + {file = "mkdocs_material-7.2.2-py2.py3-none-any.whl", hash = "sha256:76de22213f0e0319b9bddf1bfa86530e93efb4a604e9ddf8f8419f0438572523"}, ] mkdocs-material-extensions = [ {file = "mkdocs-material-extensions-1.0.1.tar.gz", hash = "sha256:6947fb7f5e4291e3c61405bad3539d81e0b3cd62ae0d66ced018128af509c68f"}, @@ -1879,6 +1891,11 @@ pydantic = [ {file = "pydantic-1.8.2-py3-none-any.whl", hash = "sha256:fec866a0b59f372b7e776f2d7308511784dace622e0992a0b59ea3ccee0ae833"}, {file = "pydantic-1.8.2.tar.gz", hash = "sha256:26464e57ccaafe72b7ad156fdaa4e9b9ef051f69e175dbbb463283000c05ab7b"}, ] +pydantic-to-typescript = [ + {file = "pydantic-to-typescript-1.0.7.tar.gz", hash = "sha256:dccf668e97626e616d20f2b1b99a568b5ac16344f3b2c850ebc463118b21a3d7"}, + {file = "pydantic_to_typescript-1.0.7-py3-none-any.whl", hash = "sha256:b3d093cbd15fd938faa09d1128621f27a9a93bef275eea5eb0912987d5d9d843"}, + {file = "pydantic_to_typescript-1.0.7-py3.8.egg", hash = "sha256:b4917453d74df1b401259b881117ae164bf1bac2cac849a88466badb43825e6d"}, +] pyflakes = [ {file = "pyflakes-2.3.1-py2.py3-none-any.whl", hash = "sha256:7893783d01b8a89811dd72d7dfd4d84ff098e5eed95cfa8905b22bbffe52efc3"}, {file = "pyflakes-2.3.1.tar.gz", hash = "sha256:f5bc8ecabc05bb9d291eb5203d6810b49040f6ff446a756326104746cc00c1db"}, @@ -1892,8 +1909,8 @@ pyhumps = [ {file = "pyhumps-3.0.2.tar.gz", hash = "sha256:042b4b6eec6c1f862f8310c0eebbae19293e9edab8cafb030ff78c890ef1aa34"}, ] pylint = [ - {file = "pylint-2.9.5-py3-none-any.whl", hash = "sha256:748f81e5776d6273a6619506e08f1b48ff9bcb8198366a56821cf11aac14fc87"}, - {file = "pylint-2.9.5.tar.gz", hash = "sha256:1f333dc72ef7f5ea166b3230936ebcfb1f3b722e76c980cb9fe6b9f95e8d3172"}, + {file = "pylint-2.9.6-py3-none-any.whl", hash = "sha256:2e1a0eb2e8ab41d6b5dbada87f066492bb1557b12b76c47c2ee8aa8a11186594"}, + {file = "pylint-2.9.6.tar.gz", hash = "sha256:8b838c8983ee1904b2de66cce9d0b96649a91901350e956d78f289c3bc87b48e"}, ] pymdown-extensions = [ {file = "pymdown-extensions-8.2.tar.gz", hash = "sha256:b6daa94aad9e1310f9c64c8b1f01e4ce82937ab7eb53bfc92876a97aca02a6f4"}, diff --git a/pyproject.toml b/pyproject.toml index 498735093a84..f672f7548e6b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -45,6 +45,7 @@ pytest-cov = "^2.11.0" mkdocs-material = "^7.0.2" flake8 = "^3.9.0" coverage = "^5.5" +pydantic-to-typescript = "^1.0.7" [build-system] requires = ["poetry-core>=1.0.0"] diff --git a/vetur.config.js b/vetur.config.js index a02a5672618b..e59ab1d60346 100644 --- a/vetur.config.js +++ b/vetur.config.js @@ -10,6 +10,7 @@ module.exports = { { root: "./frontend", package: "package.json", + tsconfig: "tsconfig.json", globalComponents: ["./src/components/**/*.vue"], }, ],