mirror of
https://github.com/TandoorRecipes/recipes.git
synced 2025-12-24 02:39:20 -05:00
plugin and hosted fixes
# Conflicts: # vue3/src/locales/de.json
This commit is contained in:
@@ -10,6 +10,7 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@types/luxon": "^3.7.1",
|
||||
"@types/sortablejs": "^1.15.8",
|
||||
"@vueform/multiselect": "^2.6.11",
|
||||
"@vueuse/core": "^13.6.0",
|
||||
"@vueuse/router": "^13.6.0",
|
||||
@@ -22,7 +23,6 @@
|
||||
"vue-router": "^4.5.0",
|
||||
"vue-simple-calendar": "7.1.0",
|
||||
"vuedraggable": "^4.1.0",
|
||||
"@types/sortablejs": "^1.15.8",
|
||||
"vuetify": "^3.9.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
@@ -32,20 +32,21 @@
|
||||
"@types/node": "^24.0.8",
|
||||
"@vitejs/plugin-vue": "^6.0.0",
|
||||
"@vue/tsconfig": "^0.7.0",
|
||||
"esbuild-register": "^3.6.0",
|
||||
"jsdom": "^26.1.0",
|
||||
"typescript": "^5.8.3",
|
||||
"vite": "6.3.5",
|
||||
"vite-plugin-pwa": "^1.0.2",
|
||||
"workbox-core": "^7.3.0",
|
||||
"workbox-build": "^7.3.0",
|
||||
"workbox-window": "^7.3.0",
|
||||
"vite-plugin-vuetify": "^2.1.1",
|
||||
"vue-tsc": "^2.2.8",
|
||||
"workbox-background-sync": "^7.3.0",
|
||||
"workbox-build": "^7.3.0",
|
||||
"workbox-core": "^7.3.0",
|
||||
"workbox-expiration": "^7.3.0",
|
||||
"workbox-navigation-preload": "^7.3.0",
|
||||
"workbox-precaching": "^7.3.0",
|
||||
"workbox-routing": "^7.3.0",
|
||||
"workbox-strategies": "^7.3.0",
|
||||
"vite-plugin-vuetify": "^2.1.1",
|
||||
"vue-tsc": "^2.2.8"
|
||||
"workbox-window": "^7.3.0"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -152,6 +152,7 @@
|
||||
"Log_Recipe_Cooking": "",
|
||||
"Make_Header": "",
|
||||
"Make_Ingredient": "",
|
||||
"ManageSubscription": "",
|
||||
"Manage_Books": "",
|
||||
"Meal_Plan": "",
|
||||
"Meal_Plan_Days": "",
|
||||
|
||||
@@ -147,6 +147,7 @@
|
||||
"Log_Recipe_Cooking": "Дневник на Рецепта за готвене",
|
||||
"Make_Header": "Направете заглавие",
|
||||
"Make_Ingredient": "Направете съставка",
|
||||
"ManageSubscription": "",
|
||||
"Manage_Books": "Управление на Книги",
|
||||
"Meal_Plan": "План на хранене",
|
||||
"Meal_Plan_Days": "Бъдещи планове за хранене",
|
||||
|
||||
@@ -202,6 +202,7 @@
|
||||
"Logo": "Logotip",
|
||||
"Make_Header": "Establiu capçalera",
|
||||
"Make_Ingredient": "Establiu ingredient",
|
||||
"ManageSubscription": "",
|
||||
"Manage_Books": "Gestioneu els llibres",
|
||||
"Manage_Emails": "Administrar correus",
|
||||
"Meal_Plan": "Pla d'àpats",
|
||||
|
||||
@@ -200,6 +200,7 @@
|
||||
"Logo": "Logo",
|
||||
"Make_Header": "Použij jako nadpis",
|
||||
"Make_Ingredient": "Použij jako ingredienci",
|
||||
"ManageSubscription": "",
|
||||
"Manage_Books": "Spravovat kuchařky",
|
||||
"Manage_Emails": "Spravovat emaily",
|
||||
"Meal_Plan": "Jídelníček",
|
||||
|
||||
@@ -202,6 +202,7 @@
|
||||
"Logo": "Logo",
|
||||
"Make_Header": "Opret rubrik",
|
||||
"Make_Ingredient": "Opret ingredient",
|
||||
"ManageSubscription": "",
|
||||
"Manage_Books": "Administrer bøger",
|
||||
"Manage_Emails": "Håndter Emails",
|
||||
"Meal_Plan": "Madplan",
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
"AI": "AI",
|
||||
"AIImportSubtitle": "Verwende AI um Fotos von Rezepten zu importieren.",
|
||||
"API": "API",
|
||||
"APIKey": "API Schlüssel",
|
||||
"Summary": "Zusammenfassung",
|
||||
"Structured": "Strukturiert",
|
||||
"API_Browser": "API Browser",
|
||||
@@ -284,7 +285,7 @@
|
||||
"Logout": "Ausloggen",
|
||||
"Make_Header": "In Überschrift wandeln",
|
||||
"Make_Ingredient": "In Zutat umwandeln",
|
||||
"ManageSubscription": "Tarfi verwalten",
|
||||
"ManageSubscription": "Tarif verwalten",
|
||||
"Manage_Books": "Bücher verwalten",
|
||||
"Manage_Emails": "E-Mails verwalten",
|
||||
"MealPlanHelp": "Ein Speiseplan ist ein Eintrag im Kalender zur Planung von Mahlzeiten. Er muss entweder ein Rezept oder einen Titel erhalten und kann mit der Einkaufsliste verknüpft werden. ",
|
||||
@@ -303,6 +304,7 @@
|
||||
"Miscellaneous": "Sonstige",
|
||||
"MissingConversion": "Fehlende Umrechnung",
|
||||
"MissingProperties": "Fehlende Eigenschaften",
|
||||
"Model": "Modell",
|
||||
"ModelSelectResultsHelp": "Für mehr Ergebnisse suchen",
|
||||
"Monday": "Montag",
|
||||
"Month": "Monat",
|
||||
@@ -513,10 +515,12 @@
|
||||
"Storage": "Externer Speicher",
|
||||
"StorageHelp": "Externe Speicherorte an denen Rezepte als Dateien (Foto/PDF) abgelegt und mit Tandor syncronisiert werden können.",
|
||||
"StoragePasswordTokenHelp": "Das hinterlegte Passwort/Token kann nicht angezeigt werden. Es wird nur aktualisiert wenn etwas neues in das Feld eingegeben wird. ",
|
||||
"Structured": "Strukturiert",
|
||||
"SubstituteOnHand": "Du hast eine Alternative vorrätig.",
|
||||
"Substitutes": "Alternativen",
|
||||
"Success": "Erfolgreich",
|
||||
"SuccessClipboard": "Einkaufsliste wurde in die Zwischenablage kopiert",
|
||||
"Summary": "Zusammenfassung",
|
||||
"Sunday": "Sonntag",
|
||||
"Supermarket": "Supermarkt",
|
||||
"SupermarketCategoriesOnly": "Nur Supermarktkategorien",
|
||||
|
||||
@@ -202,6 +202,7 @@
|
||||
"Logo": "Λογότυπο",
|
||||
"Make_Header": "Δημιουργία κεφαλίδας",
|
||||
"Make_Ingredient": "Δημιουργία υλικού",
|
||||
"ManageSubscription": "",
|
||||
"Manage_Books": "Διαχείριση βιβλίων",
|
||||
"Manage_Emails": "Διαχείριση email",
|
||||
"Meal_Plan": "Πρόγραμμα γευμάτων",
|
||||
|
||||
@@ -292,8 +292,6 @@
|
||||
"Meal_Type_Required": "Meal type is required",
|
||||
"Meal_Types": "Meal types",
|
||||
"Merge": "Merge",
|
||||
"Summary": "Summary",
|
||||
"Structured": "Structured",
|
||||
"MergeAutomateHelp": "Create an automation that replaces future objects of this type with the selected object.",
|
||||
"Merge_Keyword": "Merge Keyword",
|
||||
"Message": "Message",
|
||||
@@ -301,6 +299,7 @@
|
||||
"Miscellaneous": "Miscellaneous",
|
||||
"MissingConversion": "Missing Conversion",
|
||||
"MissingProperties": "Missing Properties",
|
||||
"Model": "Model",
|
||||
"ModelSelectResultsHelp": "Search for more results",
|
||||
"Monday": "Monday",
|
||||
"Month": "Month",
|
||||
@@ -511,10 +510,12 @@
|
||||
"Storage": "External Storage",
|
||||
"StorageHelp": "External storage locations where recipe files (image/pdf) can be stored and synced with Tandoor.",
|
||||
"StoragePasswordTokenHelp": "The stored password/token will never be displayed. It is only changed if something new is entered into the field. ",
|
||||
"Structured": "Structured",
|
||||
"SubstituteOnHand": "You have a substitute on hand.",
|
||||
"Substitutes": "Substitutes",
|
||||
"Success": "Success",
|
||||
"SuccessClipboard": "Shopping list copied to clipboard",
|
||||
"Summary": "Summary",
|
||||
"Sunday": "Sunday",
|
||||
"Supermarket": "Supermarket",
|
||||
"SupermarketCategoriesOnly": "Supermarket Categories Only",
|
||||
|
||||
@@ -196,6 +196,7 @@
|
||||
"Logo": "Logo",
|
||||
"Make_Header": "Valmista Otsikko",
|
||||
"Make_Ingredient": "Valmista Ainesosa",
|
||||
"ManageSubscription": "",
|
||||
"Manage_Books": "Hallinnoi kirjoja",
|
||||
"Manage_Emails": "Hallinnoi sähköposteja",
|
||||
"Meal_Plan": "Ateriasuunnitelma",
|
||||
|
||||
@@ -202,6 +202,7 @@
|
||||
"Logo": "לוגו",
|
||||
"Make_Header": "הפוך לכותרת",
|
||||
"Make_Ingredient": "הפוך למרכיב",
|
||||
"ManageSubscription": "",
|
||||
"Manage_Books": "נהל ספרים",
|
||||
"Manage_Emails": "נהל כתובות דואר אלקטרוני",
|
||||
"Meal_Plan": "תוכנית ארוחה",
|
||||
|
||||
@@ -202,6 +202,7 @@
|
||||
"Logo": "Logotip",
|
||||
"Make_Header": "Napravi zaglavlje",
|
||||
"Make_Ingredient": "Napravi sastojak",
|
||||
"ManageSubscription": "",
|
||||
"Manage_Books": "Upravljaj knjigama",
|
||||
"Manage_Emails": "Upravljanje e-poštom",
|
||||
"Meal_Plan": "Plan obroka",
|
||||
|
||||
@@ -183,6 +183,7 @@
|
||||
"Log_Recipe_Cooking": "Főzés naplózása",
|
||||
"Make_Header": "Átalakítás címsorra",
|
||||
"Make_Ingredient": "Összetevő létrehozása",
|
||||
"ManageSubscription": "",
|
||||
"Manage_Books": "Könyvek kezelése",
|
||||
"Manage_Emails": "Levelezés kezelése",
|
||||
"Meal_Plan": "Menüterv",
|
||||
|
||||
@@ -71,6 +71,7 @@
|
||||
"Load_More": "",
|
||||
"Log_Cooking": "Գրանցել եփելը",
|
||||
"Log_Recipe_Cooking": "Գրանցել բաղադրատոմսի օգտագործում",
|
||||
"ManageSubscription": "",
|
||||
"Manage_Books": "Կարգավորել Գրքերը",
|
||||
"Meal_Plan": "Ճաշացուցակ",
|
||||
"Merge": "Միացնել",
|
||||
|
||||
@@ -168,6 +168,7 @@
|
||||
"Log_Recipe_Cooking": "Log Resep Memasak",
|
||||
"Make_Header": "Buat Header",
|
||||
"Make_Ingredient": "Buat bahan",
|
||||
"ManageSubscription": "",
|
||||
"Manage_Books": "Kelola Buku",
|
||||
"Manage_Emails": "",
|
||||
"Meal_Plan": "rencana makan",
|
||||
|
||||
@@ -201,6 +201,7 @@
|
||||
"Logo": "",
|
||||
"Make_Header": "",
|
||||
"Make_Ingredient": "",
|
||||
"ManageSubscription": "",
|
||||
"Manage_Books": "",
|
||||
"Manage_Emails": "",
|
||||
"Meal_Plan": "",
|
||||
|
||||
@@ -185,6 +185,7 @@
|
||||
"Log_Recipe_Cooking": "Užregistruoti recepto pagaminimą",
|
||||
"Make_Header": "Padaryti antraštę",
|
||||
"Make_Ingredient": "Padaryti ingredientą",
|
||||
"ManageSubscription": "",
|
||||
"Manage_Books": "Tvarkyti knygas",
|
||||
"Manage_Emails": "",
|
||||
"Meal_Plan": "Maisto planas",
|
||||
|
||||
@@ -202,6 +202,7 @@
|
||||
"Logo": "",
|
||||
"Make_Header": "",
|
||||
"Make_Ingredient": "",
|
||||
"ManageSubscription": "",
|
||||
"Manage_Books": "",
|
||||
"Manage_Emails": "",
|
||||
"Meal_Plan": "",
|
||||
|
||||
@@ -192,6 +192,7 @@
|
||||
"Log_Recipe_Cooking": "Logg oppskriftsbruk",
|
||||
"Make_Header": "Bruk som overskrift",
|
||||
"Make_Ingredient": "Bruk som ingrediens",
|
||||
"ManageSubscription": "",
|
||||
"Manage_Books": "Administrer bøker",
|
||||
"Manage_Emails": "Administrer e-poster",
|
||||
"Meal_Plan": "Måltidsplan",
|
||||
|
||||
@@ -228,6 +228,7 @@
|
||||
"Logo": "Logo",
|
||||
"Make_Header": "Utwórz nagłówek",
|
||||
"Make_Ingredient": "Utwórz składnik",
|
||||
"ManageSubscription": "",
|
||||
"Manage_Books": "Zarządzaj książkami",
|
||||
"Manage_Emails": "Zarządzaj e-mailami",
|
||||
"Meal_Plan": "Plan posiłków",
|
||||
|
||||
@@ -159,6 +159,7 @@
|
||||
"Log_Recipe_Cooking": "Registrar Receitas de Culinária",
|
||||
"Make_Header": "Tornar cabeçalho",
|
||||
"Make_Ingredient": "Fazer ingrediente",
|
||||
"ManageSubscription": "",
|
||||
"Manage_Books": "Gerenciar Livros",
|
||||
"Meal_Plan": "Plano de Refeição",
|
||||
"Meal_Plan_Days": "Planos de alimentação futuros",
|
||||
|
||||
@@ -177,6 +177,7 @@
|
||||
"Log_Recipe_Cooking": "Jurnalul rețetelor de pregătire",
|
||||
"Make_Header": "Creare antet",
|
||||
"Make_Ingredient": "Create ingredient",
|
||||
"ManageSubscription": "",
|
||||
"Manage_Books": "Gestionarea cărților",
|
||||
"Manage_Emails": "Gestionarea e-mailurilor",
|
||||
"Meal_Plan": "Plan de alimentare",
|
||||
|
||||
@@ -239,6 +239,7 @@
|
||||
"Logo": "Logga",
|
||||
"Make_Header": "Skapa rubrik",
|
||||
"Make_Ingredient": "Skapa ingrediens",
|
||||
"ManageSubscription": "",
|
||||
"Manage_Books": "Hantera böcker",
|
||||
"Manage_Emails": "Hantera mejladresser",
|
||||
"Meal_Plan": "Måltidsplanering",
|
||||
|
||||
@@ -202,6 +202,7 @@
|
||||
"Logo": "Logo",
|
||||
"Make_Header": "Başlık Oluştur",
|
||||
"Make_Ingredient": "Malzeme Oluştur",
|
||||
"ManageSubscription": "",
|
||||
"Manage_Books": "Kitapları Yönet",
|
||||
"Manage_Emails": "E-postaları Yönet",
|
||||
"Meal_Plan": "Yemek Planı",
|
||||
|
||||
@@ -176,6 +176,7 @@
|
||||
"Log_Recipe_Cooking": "Журнал приготування",
|
||||
"Make_Header": "Створити Заголовок",
|
||||
"Make_Ingredient": "Створити Інгрідієнт",
|
||||
"ManageSubscription": "",
|
||||
"Manage_Books": "Управління Книжкою",
|
||||
"Meal_Plan": "План Харчування",
|
||||
"Meal_Plan_Days": "Майбутній план харчування",
|
||||
|
||||
@@ -202,6 +202,7 @@
|
||||
"Logo": "徽标",
|
||||
"Make_Header": "显示注意事项",
|
||||
"Make_Ingredient": "制作食材",
|
||||
"ManageSubscription": "",
|
||||
"Manage_Books": "烹饪手册管理",
|
||||
"Manage_Emails": "管理电子邮件",
|
||||
"Meal_Plan": "用餐计划",
|
||||
|
||||
@@ -12,11 +12,17 @@ export type TandoorPlugin = {
|
||||
bottomNavigation: any[],
|
||||
userNavigation: any[],
|
||||
|
||||
buildInputs?: string[],
|
||||
|
||||
databasePageComponent?: Component,
|
||||
|
||||
disabled?: boolean
|
||||
}
|
||||
|
||||
export type PluginModule = {
|
||||
plugin: TandoorPlugin
|
||||
}
|
||||
|
||||
const pluginModules = import.meta.glob('@/plugins/*/plugin.ts', { eager: true })
|
||||
export let TANDOOR_PLUGINS = [] as TandoorPlugin[]
|
||||
Object.values(pluginModules).forEach(module => {
|
||||
|
||||
@@ -1,12 +1,20 @@
|
||||
import {fileURLToPath, URL} from 'node:url'
|
||||
import {fileURLToPath, pathToFileURL, URL} from 'node:url'
|
||||
|
||||
import {readdirSync} from "fs"
|
||||
import {resolve, join} from "path"
|
||||
import 'esbuild-register/dist/node'
|
||||
|
||||
import {defineConfig} from 'vite'
|
||||
import vue from '@vitejs/plugin-vue'
|
||||
import vuetify, {transformAssetUrls} from 'vite-plugin-vuetify'
|
||||
import {VitePWA} from "vite-plugin-pwa";
|
||||
import {PluginModule} from "./src/types/Plugins";
|
||||
import {readFileSync} from "node:fs";
|
||||
|
||||
// https://vitejs.dev/config/
|
||||
export default defineConfig(({command, mode, isSsrBuild, isPreview}) => {
|
||||
export default defineConfig(async ({command, mode, isSsrBuild, isPreview}) => {
|
||||
const buildInputs = await collectBuildInputs()
|
||||
|
||||
return {
|
||||
base: mode == 'development' ? '/static/vue3/' : './',
|
||||
plugins: [
|
||||
@@ -40,7 +48,7 @@ export default defineConfig(({command, mode, isSsrBuild, isPreview}) => {
|
||||
// overwrite default .html entry
|
||||
input: [
|
||||
'src/apps/tandoor/main.ts',
|
||||
],
|
||||
].concat(buildInputs),
|
||||
},
|
||||
},
|
||||
server: {
|
||||
@@ -49,3 +57,33 @@ export default defineConfig(({command, mode, isSsrBuild, isPreview}) => {
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
/**
|
||||
* function to load plugin configs and find additional build inputs
|
||||
*/
|
||||
async function collectBuildInputs() {
|
||||
const pluginsDir = resolve(__dirname, "src/plugins")
|
||||
const buildInputs: string[] = []
|
||||
|
||||
for (const dir of readdirSync(pluginsDir, {withFileTypes: true})) {
|
||||
if (!dir.isDirectory() && !dir.isSymbolicLink()) continue
|
||||
|
||||
const pluginPath = join(pluginsDir, dir.name, "plugin.ts")
|
||||
try {
|
||||
const code = readFileSync(pluginPath, "utf-8")
|
||||
// Regex to capture buildInputs: [ ... ]
|
||||
const match = code.match(/buildInputs\s*:\s*(\[[^\]]*\])/s)
|
||||
if (match) {
|
||||
const arr = [eval][0](match[1]) as string[]
|
||||
buildInputs.push(...arr)
|
||||
}
|
||||
} catch (err) {
|
||||
console.warn(`Failed to parse plugin at ${pluginPath}:`, err)
|
||||
}
|
||||
}
|
||||
|
||||
console.log('Tandoor Plugin build inputs: ', buildInputs)
|
||||
return buildInputs
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1904,6 +1904,13 @@ es-to-primitive@^1.3.0:
|
||||
is-date-object "^1.0.5"
|
||||
is-symbol "^1.0.4"
|
||||
|
||||
esbuild-register@^3.6.0:
|
||||
version "3.6.0"
|
||||
resolved "https://registry.yarnpkg.com/esbuild-register/-/esbuild-register-3.6.0.tgz#cf270cfa677baebbc0010ac024b823cbf723a36d"
|
||||
integrity sha512-H2/S7Pm8a9CL1uhp9OvjwrBh5Pvx0H8qVOxNu8Wed9Y7qv56MPtq+GGM8RJpq6glYJn9Wspr8uw7l55uyinNeg==
|
||||
dependencies:
|
||||
debug "^4.3.4"
|
||||
|
||||
esbuild@^0.25.0:
|
||||
version "0.25.5"
|
||||
resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.25.5.tgz#71075054993fdfae76c66586f9b9c1f8d7edd430"
|
||||
|
||||
Reference in New Issue
Block a user