{"version":3,"file":"module.cjs","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$1","defineNuxtModule","options","nuxt","resolver","createResolver","addPlugin","addImports","defu"],"mappings":"4LAeA,MAAAA,EAAeC,mBAAgC,CAC7C,KAAM,CACJ,KAAM,sBACN,UAAW,aACX,cAAe,CAKb,KAAM,SAAA,CACR,EAGF,SAAU,CACR,YAAa,CAAA,EACb,gBAAiB,GACjB,QAAS,EAAA,EAGX,MAAMC,EAASC,EAAM,CAEnB,GAAID,EAAQ,aAAe,CAAC,MAAM,QAAQA,EAAQ,WAAW,EAC3D,MAAM,IAAI,UAAU,oDAAoD,EAG1E,GACEA,EAAQ,kBACR,OAAOA,EAAQ,kBAAqB,UACpC,OAAOA,EAAQ,kBAAqB,WAEpC,MAAM,IAAI,UACR,+EAAA,EAIJ,MAAME,EAAWC,EAAAA,0KAA8B,EAG/CC,EAAAA,UAAUF,EAAS,QAAQ,kBAAkB,CAAC,EAG9CG,aAAW,CACT,KAAM,gBACN,KAAM,qBAAA,CACP,EAGDJ,EAAK,QAAQ,cAAc,OAAO,WAAaK,EAAAA,KAC7CL,EAAK,QAAQ,cAAc,OAAO,WAClC,CACE,YAAaD,EAAQ,YACrB,gBAAiBA,EAAQ,gBACzB,QAASA,EAAQ,QAEjB,iBACE,OAAOA,EAAQ,kBAAqB,SAChCA,EAAQ,iBACR,MAAA,CACR,CAEJ,CACF,CAAC"}