{"version":3,"file":"module.mjs","sources":["../src/module.ts"],"sourcesContent":["import {\r\n  addImports,\r\n  addPlugin,\r\n  createResolver,\r\n  defineNuxtModule,\r\n} from \"@nuxt/kit\";\r\nimport { defu } from \"defu\";\r\n\r\nexport interface ModuleOptions {\r\n  permissions?: string[];\r\n  developmentMode?: boolean;\r\n  fetchPermissions?: string | (() => Promise<string[]>);\r\n  persist?: boolean;\r\n}\r\n\r\nexport default defineNuxtModule<ModuleOptions>({\r\n  meta: {\r\n    name: \"vue-nuxt-permission\",\r\n    configKey: \"permission\",\r\n    compatibility: {\r\n      // Supports Nuxt 3.x and Nuxt 4.x.\r\n      // The module uses only stable @nuxt/kit APIs (addPlugin, addImports,\r\n      // runtimeConfig) and the runtime plugin uses defineNuxtPlugin from\r\n      // #app — both unchanged in Nuxt 4.\r\n      nuxt: \">=3.0.0\",\r\n    },\r\n  },\r\n\r\n  defaults: {\r\n    permissions: [],\r\n    developmentMode: false,\r\n    persist: true,\r\n  },\r\n\r\n  setup(options, nuxt) {\r\n    // Validate options early\r\n    if (options.permissions && !Array.isArray(options.permissions)) {\r\n      throw new TypeError(\"[vue-nuxt-permission] permissions must be an array\");\r\n    }\r\n\r\n    if (\r\n      options.fetchPermissions &&\r\n      typeof options.fetchPermissions !== \"string\" &&\r\n      typeof options.fetchPermissions !== \"function\"\r\n    ) {\r\n      throw new TypeError(\r\n        \"[vue-nuxt-permission] fetchPermissions must be a URL string or async function\",\r\n      );\r\n    }\r\n\r\n    const resolver = createResolver(import.meta.url);\r\n\r\n    // Register runtime plugin\r\n    addPlugin(resolver.resolve(\"./runtime/plugin\"));\r\n\r\n    // Auto-import usePermission composable\r\n    addImports({\r\n      name: \"usePermission\",\r\n      from: \"vue-nuxt-permission\",\r\n    });\r\n\r\n    // Expose options to runtime via runtimeConfig (merge, don't overwrite)\r\n    nuxt.options.runtimeConfig.public.permission = defu(\r\n      nuxt.options.runtimeConfig.public.permission as Record<string, unknown>,\r\n      {\r\n        permissions: options.permissions,\r\n        developmentMode: options.developmentMode,\r\n        persist: options.persist,\r\n        // Functions can't be serialized to runtimeConfig — only pass URL strings\r\n        fetchPermissions:\r\n          typeof options.fetchPermissions === \"string\"\r\n            ? options.fetchPermissions\r\n            : undefined,\r\n      },\r\n    );\r\n  },\r\n});\r\n"],"names":["module","defineNuxtModule","options","nuxt","resolver","createResolver","addPlugin","addImports","defu"],"mappings":";;;AAeA,MAAAA,IAAeC,EAAgC;AAAA,EAC7C,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,WAAW;AAAA,IACX,eAAe;AAAA;AAAA;AAAA;AAAA;AAAA,MAKb,MAAM;AAAA,IAAA;AAAA,EACR;AAAA,EAGF,UAAU;AAAA,IACR,aAAa,CAAA;AAAA,IACb,iBAAiB;AAAA,IACjB,SAAS;AAAA,EAAA;AAAA,EAGX,MAAMC,GAASC,GAAM;AAEnB,QAAID,EAAQ,eAAe,CAAC,MAAM,QAAQA,EAAQ,WAAW;AAC3D,YAAM,IAAI,UAAU,oDAAoD;AAG1E,QACEA,EAAQ,oBACR,OAAOA,EAAQ,oBAAqB,YACpC,OAAOA,EAAQ,oBAAqB;AAEpC,YAAM,IAAI;AAAA,QACR;AAAA,MAAA;AAIJ,UAAME,IAAWC,EAAe,YAAY,GAAG;AAG/C,IAAAC,EAAUF,EAAS,QAAQ,kBAAkB,CAAC,GAG9CG,EAAW;AAAA,MACT,MAAM;AAAA,MACN,MAAM;AAAA,IAAA,CACP,GAGDJ,EAAK,QAAQ,cAAc,OAAO,aAAaK;AAAA,MAC7CL,EAAK,QAAQ,cAAc,OAAO;AAAA,MAClC;AAAA,QACE,aAAaD,EAAQ;AAAA,QACrB,iBAAiBA,EAAQ;AAAA,QACzB,SAASA,EAAQ;AAAA;AAAA,QAEjB,kBACE,OAAOA,EAAQ,oBAAqB,WAChCA,EAAQ,mBACR;AAAA,MAAA;AAAA,IACR;AAAA,EAEJ;AACF,CAAC;"}