/**
 * Minified by jsDelivr using Terser v5.39.0.
 * Original file: /npm/@cwa/nuxt-edge@1.0.0-29524156.cef23b2/dist/module.mjs
 *
 * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
 */
import{join}from"path";import path from"node:path";import{readFileSync,statSync}from"node:fs";import mergeWith from"lodash-es/mergeWith";import isArray from"lodash-es/isArray";import{defineNuxtModule,useLogger,createResolver,extendRouteRules,addImportsDir,extendPages,addTemplate,addTypeTemplate,addPlugin,addServerTemplate,addServerHandler,addServerPlugin,updateTemplates,resolveAlias}from"@nuxt/kit";import{defaultSiteConfig}from"../dist/runtime/composables/useCwaSiteConfig.js";function createDefaultCwaPages(e,t,o,n){e.push(function e(i){const s=function(e){return{name:`cwaPage${e}`,path:0===e?"/":`:cwaPage${e}`,file:t,meta:{cwa:{disabled:!1},layout:n||"cwa-root-layout"},children:[]}}(i);if(i<o){const t=e(++i);s.children=[t]}return s}(0))}const NAME="@cwa/nuxt",module$1=defineNuxtModule({moduleDependencies:{"@pinia/nuxt":{version:"^0.11.2",optional:!1},"@nuxtjs/robots":{version:"^5.5"},"@nuxtjs/sitemap":{version:"^7.4",optional:!1,defaults:{sitemaps:{cwa:{sources:["/__sitemap__/cwa-urls"],chunks:!0}}}},"nuxt-link-checker":{version:"^4.3"},"nuxt-og-image":{version:"^5.1"},"nuxt-schema-org":{version:"^5.0"},"nuxt-seo-utils":{version:"^7.0"},"nuxt-site-config":{version:"^3.2"}},meta:{name:NAME,configKey:"cwa",compatibility:{nuxt:">=3.16"}},defaults:{storeName:"cwa",resources:{ComponentPosition:{name:"Position",description:"<p>Dynamic components can be used on dynamic pages to specify what component should be displayed from a data page in any given location.</p><p>You must select the reference from the data page to load into this position below.</p>",instantAdd:!0},ComponentGroup:{name:"Group"}},siteConfig:defaultSiteConfig},async setup(e,t){const o=useLogger(NAME),{resolve:n}=createResolver(import.meta.url),{version:i,name:s}=JSON.parse(readFileSync(n("../package.json"),"utf8"));o.info(`Adding ${NAME} module (${s}@${i})...`),t.options.alias["#cwa"]=n("./runtime"),t.options.alias["#cwa-layer"]=n("./layer");const a=n(`${t.options.dir.app}`);extendRouteRules("/_cwa/**",{ssr:!1,robots:!1});const r=n("./runtime");t.options.build.transpile.push(r),o.info("Configuring auto-imports for CWA composables..."),addImportsDir(n("./runtime/composables")),addImportsDir(n("./runtime/composables/component")),o.info("Configuring CWA default pages and components...");const p=n("./runtime/templates");extendPages((t=>{createDefaultCwaPages(t,n(p,"cwa-page.vue"),e.pagesDepth||4,e.layoutName)}));const c=join(p,"components");o.info("Registering user components for CWA...");const u=join(a,"cwa","components");t.options.alias["#cwaComponents"]=u,t.hook("modules:done",(()=>{o.info(`Configuring template to propagate module options and adding plugin for ${NAME} module...`),delete e.pagesDepth,addTemplate({filename:"cwa-options.ts",getContents:({app:t})=>`import type { CwaModuleOptions } from '#cwa/types';\nexport const options:CwaModuleOptions = ${JSON.stringify(function(t){const o={},i=/^(?!.+\/(admin|ui)\/).+.vue$/,s=t.filter((({filePath:e})=>e.startsWith(u))),a=s.reduce(((e,t)=>({...e,[t.filePath]:t})),{}),r=s.filter((({filePath:e})=>i.test(e)));for(const e of r){const t=e=>{try{return statSync(e).isDirectory()}catch(e){return!1}},i=e=>{const o=[];return t(e)&&Object.keys(a).filter((t=>t.startsWith(e))).forEach((e=>{a[e]&&a[e].global&&o.push(a[e].pascalName)})),o},s=i(resolveAlias(n(path.dirname(e.filePath),"admin"))),r=i(resolveAlias(n(path.dirname(e.filePath),"ui"))),p=e.pascalName.replace(/^CwaComponent/,"");o[p]={name:p.replace(/(?!^)([A-Z])/g," $1"),managerTabs:s,ui:r}}const p=mergeWith({},o,e.resources,((e,t)=>{if(isArray(e))return t.concat(e)}));return{...e,resources:p}}(t.components),void 0,2)}\nexport const currentModulePackageInfo:{ version: string, name: string } = ${JSON.stringify({version:i,name:s},void 0,2)}\n`}),addTypeTemplate({filename:"types/cwa.d.ts",write:!0,getContents:()=>"interface CwaRouteMeta {\n  admin?: boolean\n  disabled?: boolean\n  staticLayout?: GlobalComponentNames\n  fetch?: {\n    iri: string\n    manifestPath?: string\n  }\n}\nexport * from 'vue-router'\ndeclare module 'vue-router' {\n  interface RouteMeta {\n    cwa?: CwaRouteMeta\n  }\n}"}),addPlugin({src:n("./runtime/plugin")}),addServerTemplate({filename:"#cwa/server-options.ts",getContents:()=>{const t={siteConfig:e.siteConfig};return`export const options = ${JSON.stringify(t,void 0,2)}\n`}}),addServerHandler({handler:n("./runtime/server/server-middleware")}),addServerPlugin(n("./runtime/server/server-plugin")),addServerHandler({route:"/__sitemap__/cwa-urls",handler:n("./runtime/server/cwa-urls.get")}),addServerHandler({route:"/__sitemap__/cwa-custom.xml",handler:n("./runtime/server/cwa-custom-sitemap.get")}),addServerHandler({route:"/_cwa/healthcheck",handler:n("./runtime/server/cwa-healthcheck.get")})})),t.hook("components:dirs",(e=>{o.info(`Configuring component directories for ${NAME} module...`),e.unshift({path:join(c,"main"),prefix:"Cwa",ignore:["**/_*/*","**/*.spec.{cts,mts,ts}"]}),e.unshift({path:join(c,"ui"),prefix:"CwaUi",ignore:["**/*.spec.{cts,mts,ts}"]}),e.unshift({path:join(a,"cwa","layouts"),prefix:"CwaLayout",global:!0,ignore:["**/*.spec.{cts,mts,ts}"]}),e.unshift({path:join(a,"cwa","pages"),prefix:"CwaPage",global:!0,ignore:["**/admin/*","**/*.spec.{cts,mts,ts}"]}),e.unshift({path:u,prefix:"CwaComponent",global:!0,ignore:["**/*.spec.{cts,mts,ts}"]})})),t.hook("builder:watch",(async(e,t)=>{if(!["add","unlink"].includes(e))return;o.info(`File added or removed - updating options for ${NAME} module...`);const i=n(a,t);[u].some((e=>e===i||i.startsWith(e+"/")))&&await updateTemplates({filter:e=>["cwa-options.ts","#cwa/server-options.ts"].includes(e.filename)})})),t.hook("vite:extendConfig",(e=>{o.info(`Extending Vite optimizeDeps config for ${NAME} module dependencies...`),e.optimizeDeps=e.optimizeDeps||{},e.optimizeDeps.include=e.optimizeDeps.include||[],e.optimizeDeps.exclude=e.optimizeDeps.exclude||[];const t=["slugify","dayjs","cookie","set-cookie-parser"];for(const o of t){const t=e.optimizeDeps.exclude.indexOf(o);t>-1&&e.optimizeDeps.exclude.splice(t,1),e.optimizeDeps.include.includes(o)||e.optimizeDeps.include.push(o)}})),o.success(`Added ${NAME} module successfully.`)}});export{NAME,module$1 as default};
//# sourceMappingURL=/sm/8fcf799e6467418438ec5f88f405a8c853b0cbb650d45dc405464855f6878d1b.map