baked-recipe-admin
Version:
Baked is an opinionated framework for .NET in backend and Nuxt in frontend. This is a recipe package that brings together all the components one needs for an Admin UI.
51 lines (42 loc) • 1.52 kB
JavaScript
import { defineNuxtPlugin } from "#app";
export default defineNuxtPlugin({
name: "baked",
setup() {
const bakedComposables = import.meta.glob("../composables/*");
const projectComposables = import.meta.glob("@/composables/*");
const pages = import.meta.glob("@/.baked/**/*.page.json");
const layouts = import.meta.glob("@/.baked/**/*.layout.json");
return {
provide: {
composables: merge({
bakedImports: bakedComposables,
projectImports: projectComposables,
trimStart: "composables/",
trimEnd: "."
}),
pages: jsonFiles(pages, ".baked/", ".page.json"),
layouts: jsonFiles(layouts, ".baked/", ".layout.json")
}
};
}
});
function merge({ bakedImports, projectImports, trimStart, trimEnd }) {
return {
...Object.keys(bakedImports).reduce((result, path) => {
result[path.slice(path.indexOf(trimStart) + trimStart.length, path.lastIndexOf(trimEnd))] = bakedImports[path];
return result;
}, { }),
...Object.keys(projectImports).reduce((result, path) => {
result[path.slice(path.indexOf(trimStart) + trimStart.length, path.lastIndexOf(trimEnd))] = projectImports[path];
return result;
}, { })
};
}
function jsonFiles(imports, trimStart, trimEnd) {
return {
...Object.keys(imports).reduce((result, path) => {
result[path.slice(path.indexOf(trimStart) + trimStart.length, path.lastIndexOf(trimEnd))] = imports[path];
return result;
}, { })
};
}