UNPKG

@pinia-orm/nuxt

Version:
54 lines (51 loc) 1.58 kB
import { defineNuxtModule, createResolver, addTemplate, addPlugin, isNuxt3, addImports } from '@nuxt/kit'; import { CONFIG_DEFAULTS } from 'pinia-orm'; const module = defineNuxtModule({ meta: { name: "pinia-orm", configKey: "piniaOrm" }, defaults: { autoImports: [], ...CONFIG_DEFAULTS }, setup(options, nuxt) { const resolver = createResolver(import.meta.url); nuxt.options.build.transpile.push(resolver.resolve("./runtime")); nuxt.hook("devtools:customTabs", (tabs) => { tabs.push({ name: "pinia-orm", title: "Pinia ORM", icon: "https://pinia-orm.codedredd.de/logo.svg", view: { type: "iframe", src: "https://pinia-orm.codedredd.de/api/composables/use-repo" } }); }); nuxt.hook("prepare:types", ({ references }) => { references.push({ types: "@pinia-orm/nuxt" }); }); addTemplate({ filename: "orm-options.mjs", getContents() { return ` export const ormOptions = ${JSON.stringify(options, null, 2)} `; } }); addPlugin(resolver.resolve("./runtime/plugin.vue" + (isNuxt3() ? "3" : "2")), { append: true }); if (options.autoImports) { const generateImports = [ { from: "pinia-orm", name: "useRepo" }, ...options.autoImports.map( (imports) => typeof imports === "string" ? { from: "pinia-orm", name: imports } : { from: "pinia-orm", name: imports[0], as: imports[1] } ) ]; addImports(generateImports); } } }); export { module as default };