From fcc5d99d400dd5128741d2c1e956e7ef6742494b Mon Sep 17 00:00:00 2001 From: Hayden <64056131+hay-kot@users.noreply.github.com> Date: Sat, 22 Oct 2022 11:51:07 -0800 Subject: [PATCH] chore: frontend testing setup (#1739) * add vitest * initialize lib w/ tests * move to dev dep * run tests in CI * update file names * move api folder to lib * move api and api types to same folder * update generator outpath * rm husky * i guess i _did_ need those types * reorg types * extract validators into testable components * (WIP) start composable testing * fix import type * fix linter complaint * simplify icon type def * fix linter errors (maybe?) * rename client file for sorting --- .github/workflows/partial-frontend.yml | 4 + .gitignore | 1 - dev/code-generation/gen_ts_types.py | 2 +- frontend/.husky/.gitignore | 1 - .../Domain/Group/GroupExportData.vue | 2 +- .../Domain/Group/GroupMealPlanRuleForm.vue | 2 +- .../Domain/Group/GroupWebhookEditor.vue | 2 +- .../Domain/Recipe/RecipeActionMenu.vue | 2 +- .../components/Domain/Recipe/RecipeAssets.vue | 2 +- .../Domain/Recipe/RecipeCardSection.vue | 10 +- .../components/Domain/Recipe/RecipeChips.vue | 2 +- .../Domain/Recipe/RecipeComments.vue | 2 +- .../Domain/Recipe/RecipeContextMenu.vue | 4 +- .../Domain/Recipe/RecipeDataTable.vue | 4 +- .../Domain/Recipe/RecipeDialogSearch.vue | 2 +- .../Domain/Recipe/RecipeDialogShare.vue | 2 +- .../Domain/Recipe/RecipeFavoriteBadge.vue | 2 +- .../Domain/Recipe/RecipeIngredientEditor.vue | 2 +- .../Domain/Recipe/RecipeIngredients.vue | 2 +- .../Domain/Recipe/RecipeInstructions.vue | 2 +- .../components/Domain/Recipe/RecipeList.vue | 4 +- .../components/Domain/Recipe/RecipeNotes.vue | 2 +- .../Domain/Recipe/RecipeNutrition.vue | 2 +- .../RecipeOcrEditorPage.vue | 6 +- .../RecipeOcrEditorPageCanvas.vue | 4 +- .../Domain/Recipe/RecipeOrganizerDialog.vue | 2 +- .../Domain/Recipe/RecipeOrganizerPage.vue | 2 +- .../Domain/Recipe/RecipeOrganizerSelector.vue | 6 +- .../Domain/Recipe/RecipePage/RecipePage.vue | 4 +- .../RecipePageParts/RecipePageComments.vue | 4 +- .../RecipePageEditorToolbar.vue | 4 +- .../RecipePageParts/RecipePageFooter.vue | 4 +- .../RecipePageParts/RecipePageHeader.vue | 4 +- .../RecipePageIngredientEditor.vue | 4 +- .../RecipePageIngredientToolsView.vue | 4 +- .../RecipePageInstructions.vue | 4 +- .../RecipePageParts/RecipePageOrganizers.vue | 4 +- .../RecipePageParts/RecipePageScale.vue | 4 +- .../RecipePageTitleContent.vue | 4 +- .../Domain/Recipe/RecipePrintView.vue | 9 +- .../Domain/Recipe/RecipeSettingsSwitches.vue | 2 +- .../components/Domain/Recipe/RecipeTools.vue | 2 +- .../Domain/ShoppingList/MultiPurposeLabel.vue | 2 +- .../Domain/ShoppingList/ShoppingListItem.vue | 6 +- .../ShoppingList/ShoppingListItemEditor.vue | 6 +- .../components/Domain/User/UserAvatar.vue | 4 +- frontend/components/global/InputLabelType.vue | 6 +- .../components/global/RecipeJsonEditor.vue | 1 - frontend/components/global/ReportTable.vue | 2 +- frontend/composables/api/api-client.ts | 9 +- frontend/composables/api/use-app-info.ts | 2 +- .../partials/use-actions-factory.ts | 2 +- .../composables/recipe-page/shared-state.ts | 2 +- .../recipes/use-recipe-ingredients.ts | 2 +- .../composables/recipes/use-recipe-meta.ts | 4 +- .../composables/recipes/use-recipe-search.ts | 2 +- .../composables/recipes/use-recipe-tools.ts | 2 +- frontend/composables/recipes/use-recipe.ts | 2 +- frontend/composables/recipes/use-recipes.ts | 13 +- .../composables/store/use-category-store.ts | 2 +- frontend/composables/store/use-food-store.ts | 2 +- frontend/composables/store/use-label-store.ts | 2 +- frontend/composables/store/use-tag-store.ts | 2 +- frontend/composables/store/use-tool-store.ts | 2 +- frontend/composables/store/use-unit-store.ts | 2 +- frontend/composables/use-backups.ts | 2 +- frontend/composables/use-display-text.ts | 2 +- frontend/composables/use-group-cookbooks.ts | 2 +- frontend/composables/use-group-mealplan.ts | 2 +- frontend/composables/use-group-webhooks.ts | 2 +- frontend/composables/use-groups.ts | 2 +- frontend/composables/use-passwords.test.ts | 32 ++ frontend/composables/use-passwords.ts | 41 +-- frontend/composables/use-user.ts | 2 +- frontend/composables/use-validators.ts | 22 +- frontend/{ => lib}/api/admin/admin-about.ts | 4 +- .../{ => lib}/api/admin/admin-analytics.ts | 4 +- frontend/{ => lib}/api/admin/admin-backups.ts | 6 +- frontend/{ => lib}/api/admin/admin-groups.ts | 6 +- .../{ => lib}/api/admin/admin-maintenance.ts | 6 +- frontend/{ => lib}/api/admin/admin-tasks.ts | 4 +- frontend/{ => lib}/api/admin/admin-users.ts | 4 +- .../_base.ts => lib/api/base/base-clients.ts} | 7 +- frontend/lib/api/base/index.ts | 1 + frontend/lib/api/base/route.ts | 38 +++ frontend/lib/api/base/routes.test.ts | 24 ++ .../admin-api.ts => lib/api/client-admin.ts} | 2 +- .../api/client-public.ts} | 2 +- .../{api/index.ts => lib/api/client-user.ts} | 59 ++-- frontend/{ => lib}/api/config.ts | 0 frontend/lib/api/index.ts | 3 + frontend/{ => lib}/api/public/explore.ts | 4 +- frontend/{ => lib}/api/public/shared.ts | 4 +- frontend/{ => lib}/api/public/validators.ts | 4 +- .../api-types => lib/api/types}/admin.ts | 0 .../api-types => lib/api/types}/analytics.ts | 0 .../api-types => lib/api/types}/cookbook.ts | 0 .../api-types => lib/api/types}/events.ts | 0 .../api-types => lib/api/types}/group.ts | 0 .../api-types => lib/api/types}/labels.ts | 0 .../api-types => lib/api/types}/meal-plan.ts | 0 .../api.ts => lib/api/types/non-generated.ts} | 8 + .../{types/api-types => lib/api/types}/ocr.ts | 0 .../api-types => lib/api/types}/recipe.ts | 0 .../api-types => lib/api/types}/reports.ts | 0 .../api-types => lib/api/types}/response.ts | 0 .../api-types => lib/api/types}/server.ts | 0 .../api-types => lib/api/types}/static.ts | 0 .../api-types => lib/api/types}/user.ts | 0 .../api/user}/backups.ts | 6 +- .../api/user}/email.ts | 8 +- .../api/user}/group-cookbooks.ts | 4 +- .../api/user}/group-event-notifier.ts | 10 +- .../api/user}/group-mealplan-rules.ts | 4 +- .../api/user}/group-mealplan.ts | 4 +- .../api/user}/group-migrations.ts | 6 +- .../user}/group-multiple-purpose-labels.ts | 10 +- .../api/user}/group-reports.ts | 4 +- .../api/user}/group-seeder.ts | 6 +- .../api/user}/group-shopping-lists.ts | 12 +- .../api/user}/group-tasks.ts | 4 +- .../api/user}/group-webhooks.ts | 4 +- .../api/user}/groups.ts | 15 +- .../class-interfaces => lib/api/user}/ocr.ts | 4 +- .../api/user}/organizer-categories.ts | 6 +- .../api/user}/organizer-tags.ts | 6 +- .../api/user}/organizer-tools.ts | 7 +- .../api/user}/recipe-bulk-actions.ts | 6 +- .../api/user}/recipe-foods.ts | 4 +- .../api/user}/recipe-units.ts | 4 +- .../api/user}/recipes/index.ts | 0 .../api/user}/recipes/recipe-comments.ts | 4 +- .../api/user}/recipes/recipe-share.ts | 4 +- .../api/user}/recipes/recipe.ts | 6 +- .../api/user}/upload.ts | 2 +- .../api/user}/user-registration.ts | 4 +- .../api/user}/users.ts | 4 +- .../api/user}/utils.ts | 4 +- frontend/lib/icons/icon-type.ts | 3 + frontend/{utils => lib}/icons/icons.ts | 0 frontend/{utils => lib}/icons/index.ts | 0 frontend/lib/validators/index.ts | 2 + frontend/lib/validators/inputs.test.ts | 70 +++++ frontend/lib/validators/inputs.ts | 28 ++ frontend/lib/validators/password.test.ts | 30 ++ frontend/lib/validators/password.ts | 45 +++ frontend/package.json | 5 +- frontend/pages/admin/analytics.vue | 2 +- frontend/pages/admin/background-tasks.vue | 2 +- frontend/pages/admin/backups.vue | 2 +- frontend/pages/admin/maintenance/index.vue | 2 +- frontend/pages/admin/manage/groups/_id.vue | 2 +- frontend/pages/admin/manage/groups/index.vue | 2 +- frontend/pages/admin/manage/users/_id.vue | 2 +- frontend/pages/admin/manage/users/index.vue | 2 +- frontend/pages/admin/parser.vue | 15 +- frontend/pages/admin/site-settings.vue | 4 +- frontend/pages/group/data/foods.vue | 2 +- frontend/pages/group/data/labels.vue | 2 +- frontend/pages/group/data/recipes.vue | 4 +- frontend/pages/group/data/units.vue | 2 +- frontend/pages/group/mealplan/planner.vue | 2 +- frontend/pages/group/mealplan/settings.vue | 2 +- frontend/pages/group/members.vue | 2 +- frontend/pages/group/migrations.vue | 7 +- frontend/pages/group/notifiers.vue | 2 +- frontend/pages/group/reports/_id.vue | 2 +- .../pages/recipe/_slug/ingredient-parser.vue | 6 +- frontend/pages/recipe/_slug/old.vue | 2 +- frontend/pages/recipe/create/bulk.vue | 2 +- frontend/pages/recipe/create/debug.vue | 2 +- frontend/pages/register/register.vue | 2 +- frontend/pages/search.vue | 4 +- frontend/pages/shopping-lists/_id.vue | 2 +- frontend/pages/user/profile/edit.vue | 2 +- frontend/plugins/globals.ts | 4 +- frontend/tsconfig.json | 7 +- frontend/types/ocr-types.ts | 4 +- frontend/types/recipe/organizers.ts | 7 - frontend/utils/icons/icon-type.ts | 135 --------- frontend/vitest.config.js | 14 + frontend/yarn.lock | 274 ++++++++++++++++++ 182 files changed, 902 insertions(+), 487 deletions(-) delete mode 100644 frontend/.husky/.gitignore create mode 100644 frontend/composables/use-passwords.test.ts rename frontend/{ => lib}/api/admin/admin-about.ts (92%) rename frontend/{ => lib}/api/admin/admin-analytics.ts (67%) rename frontend/{ => lib}/api/admin/admin-backups.ts (87%) rename frontend/{ => lib}/api/admin/admin-groups.ts (76%) rename frontend/{ => lib}/api/admin/admin-maintenance.ts (89%) rename frontend/{ => lib}/api/admin/admin-tasks.ts (75%) rename frontend/{ => lib}/api/admin/admin-users.ts (81%) rename frontend/{api/_base.ts => lib/api/base/base-clients.ts} (90%) create mode 100644 frontend/lib/api/base/index.ts create mode 100644 frontend/lib/api/base/route.ts create mode 100644 frontend/lib/api/base/routes.test.ts rename frontend/{api/admin-api.ts => lib/api/client-admin.ts} (94%) rename frontend/{api/public-api.ts => lib/api/client-public.ts} (87%) rename frontend/{api/index.ts => lib/api/client-user.ts} (55%) rename frontend/{ => lib}/api/config.ts (100%) create mode 100644 frontend/lib/api/index.ts rename frontend/{ => lib}/api/public/explore.ts (77%) rename frontend/{ => lib}/api/public/shared.ts (74%) rename frontend/{ => lib}/api/public/validators.ts (89%) rename frontend/{types/api-types => lib/api/types}/admin.ts (100%) rename frontend/{types/api-types => lib/api/types}/analytics.ts (100%) rename frontend/{types/api-types => lib/api/types}/cookbook.ts (100%) rename frontend/{types/api-types => lib/api/types}/events.ts (100%) rename frontend/{types/api-types => lib/api/types}/group.ts (100%) rename frontend/{types/api-types => lib/api/types}/labels.ts (100%) rename frontend/{types/api-types => lib/api/types}/meal-plan.ts (100%) rename frontend/{types/api.ts => lib/api/types/non-generated.ts} (83%) rename frontend/{types/api-types => lib/api/types}/ocr.ts (100%) rename frontend/{types/api-types => lib/api/types}/recipe.ts (100%) rename frontend/{types/api-types => lib/api/types}/reports.ts (100%) rename frontend/{types/api-types => lib/api/types}/response.ts (100%) rename frontend/{types/api-types => lib/api/types}/server.ts (100%) rename frontend/{types/api-types => lib/api/types}/static.ts (100%) rename frontend/{types/api-types => lib/api/types}/user.ts (100%) rename frontend/{api/class-interfaces => lib/api/user}/backups.ts (87%) rename frontend/{api/class-interfaces => lib/api/user}/email.ts (70%) rename frontend/{api/class-interfaces => lib/api/user}/group-cookbooks.ts (86%) rename frontend/{api/class-interfaces => lib/api/user}/group-event-notifier.ts (65%) rename frontend/{api/class-interfaces => lib/api/user}/group-mealplan-rules.ts (70%) rename frontend/{api/class-interfaces => lib/api/user}/group-mealplan.ts (85%) rename frontend/{api/class-interfaces => lib/api/user}/group-migrations.ts (78%) rename frontend/{api/class-interfaces => lib/api/user}/group-multiple-purpose-labels.ts (53%) rename frontend/{api/class-interfaces => lib/api/user}/group-reports.ts (81%) rename frontend/{api/class-interfaces => lib/api/user}/group-seeder.ts (78%) rename frontend/{api/class-interfaces => lib/api/user}/group-shopping-lists.ts (86%) rename frontend/{api/class-interfaces => lib/api/user}/group-tasks.ts (68%) rename frontend/{api/class-interfaces => lib/api/user}/group-webhooks.ts (71%) rename frontend/{api/class-interfaces => lib/api/user}/groups.ts (86%) rename frontend/{api/class-interfaces => lib/api/user}/ocr.ts (90%) rename frontend/{api/class-interfaces => lib/api/user}/organizer-categories.ts (76%) rename frontend/{api/class-interfaces => lib/api/user}/organizer-tags.ts (74%) rename frontend/{api/class-interfaces => lib/api/user}/organizer-tools.ts (82%) rename frontend/{api/class-interfaces => lib/api/user}/recipe-bulk-actions.ts (90%) rename frontend/{api/class-interfaces => lib/api/user}/recipe-foods.ts (78%) rename frontend/{api/class-interfaces => lib/api/user}/recipe-units.ts (78%) rename frontend/{api/class-interfaces => lib/api/user}/recipes/index.ts (100%) rename frontend/{api/class-interfaces => lib/api/user}/recipes/recipe-comments.ts (85%) rename frontend/{api/class-interfaces => lib/api/user}/recipes/recipe-share.ts (70%) rename frontend/{api/class-interfaces => lib/api/user}/recipes/recipe.ts (96%) rename frontend/{api/class-interfaces => lib/api/user}/upload.ts (75%) rename frontend/{api/class-interfaces => lib/api/user}/user-registration.ts (74%) rename frontend/{api/class-interfaces => lib/api/user}/users.ts (96%) rename frontend/{api/class-interfaces => lib/api/user}/utils.ts (78%) create mode 100644 frontend/lib/icons/icon-type.ts rename frontend/{utils => lib}/icons/icons.ts (100%) rename frontend/{utils => lib}/icons/index.ts (100%) create mode 100644 frontend/lib/validators/index.ts create mode 100644 frontend/lib/validators/inputs.test.ts create mode 100644 frontend/lib/validators/inputs.ts create mode 100644 frontend/lib/validators/password.test.ts create mode 100644 frontend/lib/validators/password.ts delete mode 100644 frontend/utils/icons/icon-type.ts create mode 100644 frontend/vitest.config.js diff --git a/.github/workflows/partial-frontend.yml b/.github/workflows/partial-frontend.yml index bdb8999a..ec16a53c 100644 --- a/.github/workflows/partial-frontend.yml +++ b/.github/workflows/partial-frontend.yml @@ -38,6 +38,10 @@ jobs: run: yarn lint working-directory: "frontend" + - name: Run tests 🧪 + run: yarn test:ci + working-directory: "frontend" + build: runs-on: ubuntu-latest diff --git a/.gitignore b/.gitignore index 231db452..164c8186 100644 --- a/.gitignore +++ b/.gitignore @@ -55,7 +55,6 @@ develop-eggs/ downloads/ eggs/ .eggs/ -lib/ lib64/ parts/ !frontend/src/components/Recipe/Parts/ diff --git a/dev/code-generation/gen_ts_types.py b/dev/code-generation/gen_ts_types.py index d1c319e8..96391dce 100644 --- a/dev/code-generation/gen_ts_types.py +++ b/dev/code-generation/gen_ts_types.py @@ -75,7 +75,7 @@ def generate_typescript_types() -> None: return str_path schema_path = PROJECT_DIR / "mealie" / "schema" - types_dir = PROJECT_DIR / "frontend" / "types" / "api-types" + types_dir = PROJECT_DIR / "frontend" / "lib" / "api" / "types" ignore_dirs = ["__pycache__", "static", "_mealie"] diff --git a/frontend/.husky/.gitignore b/frontend/.husky/.gitignore deleted file mode 100644 index 31354ec1..00000000 --- a/frontend/.husky/.gitignore +++ /dev/null @@ -1 +0,0 @@ -_ diff --git a/frontend/components/Domain/Group/GroupExportData.vue b/frontend/components/Domain/Group/GroupExportData.vue index b47d5935..64cf4efe 100644 --- a/frontend/components/Domain/Group/GroupExportData.vue +++ b/frontend/components/Domain/Group/GroupExportData.vue @@ -20,7 +20,7 @@ \ No newline at end of file + diff --git a/frontend/components/Domain/Recipe/RecipeNotes.vue b/frontend/components/Domain/Recipe/RecipeNotes.vue index db29f38d..f5edcaaf 100644 --- a/frontend/components/Domain/Recipe/RecipeNotes.vue +++ b/frontend/components/Domain/Recipe/RecipeNotes.vue @@ -31,7 +31,7 @@ \ No newline at end of file + diff --git a/frontend/components/global/RecipeJsonEditor.vue b/frontend/components/global/RecipeJsonEditor.vue index a3399dc1..99067f8e 100644 --- a/frontend/components/global/RecipeJsonEditor.vue +++ b/frontend/components/global/RecipeJsonEditor.vue @@ -27,4 +27,3 @@ export default defineComponent({ }, }); - diff --git a/frontend/components/global/ReportTable.vue b/frontend/components/global/ReportTable.vue index 22b305c8..cab54139 100644 --- a/frontend/components/global/ReportTable.vue +++ b/frontend/components/global/ReportTable.vue @@ -26,7 +26,7 @@ - + diff --git a/frontend/pages/admin/site-settings.vue b/frontend/pages/admin/site-settings.vue index cc2b0c57..0d61adf5 100644 --- a/frontend/pages/admin/site-settings.vue +++ b/frontend/pages/admin/site-settings.vue @@ -179,7 +179,7 @@ import { import { useAdminApi, useUserApi } from "~/composables/api"; import { validators } from "~/composables/use-validators"; import { useAsyncKey } from "~/composables/use-utils"; -import { CheckAppConfig } from "~/types/api-types/admin"; +import { CheckAppConfig } from "~/lib/api/types/admin"; enum DockerVolumeState { Unknown = "unknown", @@ -259,7 +259,7 @@ export default defineComponent({ const { data } = await adminApi.about.checkApp(); if (data) { - appConfig.value = { ...data, isSiteSecure: false}; + appConfig.value = { ...data, isSiteSecure: false }; } appConfig.value.isSiteSecure = isLocalHostOrHttps(); diff --git a/frontend/pages/group/data/foods.vue b/frontend/pages/group/data/foods.vue index 5dd8e510..f9d07800 100644 --- a/frontend/pages/group/data/foods.vue +++ b/frontend/pages/group/data/foods.vue @@ -159,7 +159,7 @@ import { computed } from "vue-demi"; import type { LocaleObject } from "@nuxtjs/i18n"; import { validators } from "~/composables/use-validators"; import { useUserApi } from "~/composables/api"; -import { CreateIngredientFood, IngredientFood } from "~/types/api-types/recipe"; +import { CreateIngredientFood, IngredientFood } from "~/lib/api/types/recipe"; import MultiPurposeLabel from "~/components/Domain/ShoppingList/MultiPurposeLabel.vue"; import { useLocales } from "~/composables/use-locales"; import { useFoodStore, useLabelStore } from "~/composables/store"; diff --git a/frontend/pages/group/data/labels.vue b/frontend/pages/group/data/labels.vue index e0990682..61423a09 100644 --- a/frontend/pages/group/data/labels.vue +++ b/frontend/pages/group/data/labels.vue @@ -116,7 +116,7 @@ import type { LocaleObject } from "@nuxtjs/i18n"; import { validators } from "~/composables/use-validators"; import { useUserApi } from "~/composables/api"; import MultiPurposeLabel from "~/components/Domain/ShoppingList/MultiPurposeLabel.vue"; -import { MultiPurposeLabelSummary } from "~/types/api-types/labels"; +import { MultiPurposeLabelSummary } from "~/lib/api/types/labels"; import { useLocales } from "~/composables/use-locales"; import { useLabelData, useLabelStore } from "~/composables/store"; diff --git a/frontend/pages/group/data/recipes.vue b/frontend/pages/group/data/recipes.vue index 1163422c..de05c439 100644 --- a/frontend/pages/group/data/recipes.vue +++ b/frontend/pages/group/data/recipes.vue @@ -162,9 +162,9 @@ import RecipeDataTable from "~/components/Domain/Recipe/RecipeDataTable.vue"; import RecipeOrganizerSelector from "~/components/Domain/Recipe/RecipeOrganizerSelector.vue"; import { useUserApi } from "~/composables/api"; import { useRecipes, allRecipes } from "~/composables/recipes"; -import { Recipe, RecipeSettings } from "~/types/api-types/recipe"; +import { Recipe, RecipeSettings } from "~/lib/api/types/recipe"; import GroupExportData from "~/components/Domain/Group/GroupExportData.vue"; -import { GroupDataExport } from "~/types/api-types/group"; +import { GroupDataExport } from "~/lib/api/types/group"; import { MenuItem } from "~/components/global/BaseOverflowButton.vue"; import RecipeSettingsSwitches from "~/components/Domain/Recipe/RecipeSettingsSwitches.vue"; diff --git a/frontend/pages/group/data/units.vue b/frontend/pages/group/data/units.vue index 5626bd33..96a23b42 100644 --- a/frontend/pages/group/data/units.vue +++ b/frontend/pages/group/data/units.vue @@ -159,7 +159,7 @@ import { computed, defineComponent, onMounted, ref } from "@nuxtjs/composition-a import type { LocaleObject } from "@nuxtjs/i18n"; import { validators } from "~/composables/use-validators"; import { useUserApi } from "~/composables/api"; -import { CreateIngredientUnit, IngredientUnit } from "~/types/api-types/recipe"; +import { CreateIngredientUnit, IngredientUnit } from "~/lib/api/types/recipe"; import { useLocales } from "~/composables/use-locales"; import { useUnitStore } from "~/composables/store"; import { VForm } from "~/types/vuetify"; diff --git a/frontend/pages/group/mealplan/planner.vue b/frontend/pages/group/mealplan/planner.vue index 6ef697dd..67500c18 100644 --- a/frontend/pages/group/mealplan/planner.vue +++ b/frontend/pages/group/mealplan/planner.vue @@ -271,7 +271,7 @@ import { useRecipes, allRecipes } from "~/composables/recipes"; import RecipeCardImage from "~/components/Domain/Recipe/RecipeCardImage.vue"; import RecipeCard from "~/components/Domain/Recipe/RecipeCard.vue"; import RecipeContextMenu from "~/components/Domain/Recipe/RecipeContextMenu.vue"; -import { PlanEntryType } from "~/types/api-types/meal-plan"; +import { PlanEntryType } from "~/lib/api/types/meal-plan"; import { useUserApi } from "~/composables/api"; export default defineComponent({ diff --git a/frontend/pages/group/mealplan/settings.vue b/frontend/pages/group/mealplan/settings.vue index 430612ed..cfa9c90f 100644 --- a/frontend/pages/group/mealplan/settings.vue +++ b/frontend/pages/group/mealplan/settings.vue @@ -93,7 +93,7 @@ - + diff --git a/frontend/pages/group/notifiers.vue b/frontend/pages/group/notifiers.vue index 14ab22ae..f5e532b1 100644 --- a/frontend/pages/group/notifiers.vue +++ b/frontend/pages/group/notifiers.vue @@ -106,7 +106,7 @@ import { defineComponent, useAsync, reactive, useContext, toRefs } from "@nuxtjs/composition-api"; import { useUserApi } from "~/composables/api"; import { useAsyncKey } from "~/composables/use-utils"; -import { GroupEventNotifierCreate, GroupEventNotifierOut } from "~/types/api-types/group"; +import { GroupEventNotifierCreate, GroupEventNotifierOut } from "~/lib/api/types/group"; interface OptionKey { text: string; diff --git a/frontend/pages/group/reports/_id.vue b/frontend/pages/group/reports/_id.vue index 6624791e..5724b3ac 100644 --- a/frontend/pages/group/reports/_id.vue +++ b/frontend/pages/group/reports/_id.vue @@ -31,7 +31,7 @@