vue-nuxt-permission
Version:
A unified permission system for Vue 3 and Nuxt 3 / Nuxt 4 with directives, guards, and async support.
48 lines (47 loc) • 1.68 kB
JavaScript
import { defineNuxtModule as r, createResolver as n, addPlugin as o, addImports as m } from "@nuxt/kit";
import { defu as t } from "defu";
/*! vue-nuxt-permission v2.2.1 | (c) 2026 Kerolos Zakaria | MIT License */
const f = r({
meta: {
name: "vue-nuxt-permission",
configKey: "permission",
compatibility: {
// Supports Nuxt 3.x and Nuxt 4.x.
// The module uses only stable @nuxt/kit APIs (addPlugin, addImports,
// runtimeConfig) and the runtime plugin uses defineNuxtPlugin from
// #app — both unchanged in Nuxt 4.
nuxt: ">=3.0.0"
}
},
defaults: {
permissions: [],
developmentMode: !1,
persist: !0
},
setup(e, s) {
if (e.permissions && !Array.isArray(e.permissions))
throw new TypeError("[vue-nuxt-permission] permissions must be an array");
if (e.fetchPermissions && typeof e.fetchPermissions != "string" && typeof e.fetchPermissions != "function")
throw new TypeError(
"[vue-nuxt-permission] fetchPermissions must be a URL string or async function"
);
const i = n(import.meta.url);
o(i.resolve("./runtime/plugin")), m({
name: "usePermission",
from: "vue-nuxt-permission"
}), s.options.runtimeConfig.public.permission = t(
s.options.runtimeConfig.public.permission,
{
permissions: e.permissions,
developmentMode: e.developmentMode,
persist: e.persist,
// Functions can't be serialized to runtimeConfig — only pass URL strings
fetchPermissions: typeof e.fetchPermissions == "string" ? e.fetchPermissions : void 0
}
);
}
});
export {
f as default
};
//# sourceMappingURL=module.mjs.map