/**
 * Minified by jsDelivr using Terser v5.39.0.
 * Original file: /npm/druxt@0.24.0/dist/druxt.ssr.js
 *
 * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
 */
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});const chalk=require("chalk"),drupalJsonapiParams=require("drupal-jsonapi-params"),path=require("path"),axios=require("axios"),querystring=require("querystring"),consola=require("consola"),merge=require("deepmerge"),md5=require("md5"),Vue=require("vue");function _interopDefaultLegacy(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}const chalk__default=_interopDefaultLegacy(chalk),axios__default=_interopDefaultLegacy(axios),consola__default=_interopDefaultLegacy(consola),merge__default=_interopDefaultLegacy(merge),md5__default=_interopDefaultLegacy(md5),Vue__default=_interopDefaultLegacy(Vue);class DruxtClient{constructor(e,t={}){if(this.log=consola__default.default.create({defaults:{tag:"DruxtClient"}}),!e)throw new Error("The 'baseUrl' parameter is required.");if(this.axios={},"function"==typeof t.axios?this.axios=t.axios:this.axios=axios__default.default.create({...t.axios||{},baseURL:e&&!(t.proxy||{}).api?e:void 0}),t.debug){const e=this.log;this.axios.interceptors.request.use((t=>(e.info(t.url),t)),(t=>(e.error(t),Promise.reject(t))))}this.options={endpoint:"/jsonapi",jsonapiResourceConfig:"jsonapi_resource_config--jsonapi_resource_config",...t},this.index={}}addHeaders(e){if(void 0===e)return!1;for(const t in e)this.axios.defaults.headers.common[t]=e[t]}buildQueryUrl(e,t){return t?"string"==typeof t?"?"===t.charAt(0)?e+t:[e,t].join("?"):"object"==typeof t&&"function"==typeof t.getQueryString&&(t=t.getQueryString())?[e,t].join("?"):"object"==typeof t&&Object.keys(t).length?[e,querystring.stringify(t)].join("?"):e:e}checkPermissions(e){if(e.data.meta&&e.data.meta.omitted){const t={};delete e.data.meta.omitted.links.help;for(const s in e.data.meta.omitted.links){const i=e.data.meta.omitted.links[s].meta.detail.match(/'(.*?)'/);i&&i[1]&&(t[i[1]]=!0)}if(Object.keys(t).length){throw{response:{statusText:e.data.meta.omitted.detail,data:{errors:[{detail:`Required permissions:\n - ${Object.keys(t).join("\n - ")}`}]}}}}}}async createResource(e,t=""){if(e.id)return this.updateResource(e,t);const{href:s}=await this.getIndex(e.type,t);if(!s)return!1;let i;try{i=await this.axios.post(s,{data:e},{headers:{"Content-Type":"application/vnd.api+json"}})}catch(e){this.error(e,{url:s})}return i}error(e,t={}){let{url:s}=t;!s&&((e.response||{}).config||{}).url&&(s=e.response.config.url);const i=[(e.response||{}).status,(e.response||{}).statusText||e.message].filter((e=>e)).join(": "),r={url:s&&[this.options.baseUrl,s].join("")};let o=[i];Object.values(r).filter((e=>e)).length&&o.push(Object.entries(r).filter((([,e])=>e)).map((([e,t])=>`${e.toUpperCase()}: ${t}`)).join("\n")),((((e.response||{}).data||{}).errors||[])[0]||{}).detail&&o.push(e.response.data.errors[0].detail);const a=Error(o.join("\n\n"));throw a.response=e.response,a.druxt=t,a}async get(e,t){try{return await this.axios.get(e,t)}catch(t){this.error(t,{url:e})}}async getCollection(e,t,s){const{href:i}=await this.getIndex(e,s);if(!i)return!1;const r=this.buildQueryUrl(i,t),{data:o}=await this.get(r);return o}async getCollectionAll(e,t,s){const i=[];let r=await this.getCollection(e,t,s);for(i.push(r);((r.links||{}).next||{}).href;)t=r.links.next.href.split("?")[1],r=await this.getCollection(e,t,s),i.push(r);return i}async getIndex(e,t){if((this.index||{})[t]&&!e)return this.index[t];if((this.index||{})[t]&&e)return!!this.index[t][e]&&this.index[t][e];const s=[t,this.options.endpoint].join(""),{data:i}=await this.get(s);let r=i.links;if("object"!=typeof r){const e={response:{statusText:"Invalid JSON:API endpoint"}};this.error(e,{url:s})}const o=this.options.baseUrl;if(r=Object.fromEntries(Object.entries(r).map((([e,t])=>(t.href=t.href.replace(o,""),[e,t])))),r[this.options.jsonapiResourceConfig]){let e=[];try{e=(await this.get(r[this.options.jsonapiResourceConfig].href)).data.data}catch(e){this.log.warn(e.message)}for(const t in e){const s=e[t],i=s.attributes.drupal_internal__id.split("--"),o={resourceType:s.attributes.resourceType,entityType:i[0],bundle:i[1],resourceFields:s.attributes.resourceFields},a=[o.entityType,o.bundle].join("--");r[a]={...o,...r[a]}}}return this.index[t]=r,e?this.index[t][e]||!1:this.index[t]}async getRelated(e,t,s,i,r=""){if(!t||!e||!s)return!1;let{href:o}=await this.getIndex(e,r);o||(o=this.options.endpoint+"/"+e.replace("--","/"));const a=this.buildQueryUrl(`${o}/${t}/${s}`,i),{data:n}=await this.get(a);return n}async getResource(e,t,s,i){if(!t||!e)return!1;let{href:r}=await this.getIndex(e,i);r||(r=this.options.endpoint+"/"+e.replace("--","/"));const o=this.buildQueryUrl([r,t].join("/"),s),{data:a}=await this.get(o);return a}async updateResource(e,t){const{href:s}=await this.getIndex(e.type,t);if(!s)return!1;const i=[s,e.id].join("/");let r;try{r=await this.axios.patch(i,{data:e},{headers:{"Content-Type":"application/vnd.api+json"}})}catch(e){this.error(e)}return r}}var name="druxt",version="0.24.0",description="The Fully Decoupled Drupal Framework for Nuxt.js.",keywords=["cms","decoupled","drupal","druxt","headless","jsonapi","json:api","nuxt","module","vue"],homepage="https://druxtjs.org",bugs={url:"https://github.com/druxt/druxt.js/issues"},repository={type:"git",url:"git+https://github.com/druxt/druxt.js"},license="MIT",exports$1={".":{require:"./dist/druxt.ssr.js",import:"./dist/druxt.esm.js"},"./components/*":"./dist/components/*","./plugins/*":"./dist/plugins/*","./server-middleware/*":"./dist/server-middleware/*","./dist/server-middleware/template.mjs":"./dist/server-middleware/template.mjs"},main="dist/druxt.ssr.js",module$1="dist/druxt.esm.js",files=["dist","templates"],dependencies={"@nuxtjs/axios":"^5.13.6","@nuxtjs/proxy":"^2.1.0","@vue/devtools-api":"^6.5.0",chalk:"^4.1.2",deepmerge:"^4.3.1","drupal-jsonapi-params":"^2.2.0","express-rate-limit":"^6.7.0","launch-editor":"^2.6.0",md5:"^2.3.0",querystring:"^0.2.1",scule:"^0.3.2"},devDependencies={"@storybook/addon-docs":"^6.5.16"},peerDependencies={axios:"*",consola:"*"},optionalDependencies={"core-js":"^3.31.0",vue:"^2.7.14",vuex:"^3.6.2"},publishConfig={access:"public"};const meta={name:name,version:version,description:description,keywords:keywords,homepage:homepage,bugs:bugs,repository:repository,license:license,exports:exports$1,main:main,module:module$1,files:files,dependencies:dependencies,devDependencies:devDependencies,peerDependencies:peerDependencies,optionalDependencies:optionalDependencies,publishConfig:publishConfig},DruxtNuxtModule=async function(e={}){var t;const s={endpoint:"/jsonapi",...e,...(this.options||{}).druxt};this.options.baseUrl=s.baseUrl=s.baseUrl.endsWith("/")?s.baseUrl.slice(0,-1):s.baseUrl,this.options.endpoint=s.endpoint=s.endpoint.startsWith("/")?s.endpoint:`/${s.endpoint}`;const i=new DruxtClient(s.baseUrl,{...s,proxy:{...s.proxy||{},api:!1}});if(s.proxy){const e={};if((s.proxy||{}).api){e[s.endpoint]=s.baseUrl;const t="configurable_language--configurable_language";if((await i.getIndex(t)||{}).href){const r=(new drupalJsonapiParams.DrupalJsonApiParams).addFields(t,["drupal_internal__id"]),o=(await i.getCollectionAll(t,r)||[]).map((e=>e.data)).flat().filter((e=>!["und","zxx"].includes(((e||{}).attributes||{}).drupal_internal__id))).map((e=>e.attributes.drupal_internal__id));for(const t of o)e[`/${t}${s.endpoint}`]=s.baseUrl}e["/router/translate-path"]=s.baseUrl}if((s.proxy||{}).files){e[`/sites/${"string"==typeof s.proxy.files?s.proxy.files:"default"}/files`]=s.baseUrl}this.options.proxy?Array.isArray(this.options.proxy)?this.options.proxy=[...this.options.proxy,...Object.keys(e).map((e=>`${s.baseUrl}${e}`))]:this.options.proxy={...this.options.proxy,...e}:this.options.proxy=e,this.addModule("@nuxtjs/proxy")}s.axios||(this.options.axios={baseURL:s.baseUrl,proxy:!!(s.proxy||{}).api,...this.options.axios},this.addModule("@nuxtjs/axios")),this.nuxt.hook("components:dirs",(e=>{e.push({path:path.join(__dirname,"components")})})),this.addPlugin({src:path.resolve(__dirname,"../templates/plugin.js"),fileName:"druxt.js",options:s});const r=this.options.extendPlugins;this.options.extendPlugins=e=>{const t=(e="function"==typeof r?r(e):e).findIndex((({src:e})=>e===path.normalize(`${this.options.buildDir}/axios.js`))),s=e[t];e.splice(t,1);const i=e.findIndex((({src:e})=>e===path.normalize(`${this.options.buildDir}/druxt.js`))),o=e[i];return e.splice(i,1),e=[s,o,...e]},this.addPlugin({src:path.resolve(__dirname,"../templates/store.js"),fileName:"store/druxt.js",options:s}),this.options.store=!0,this.options.components=null==(t=this.options.components)||t,this.options.cli.badgeMessages.push(`${chalk__default.default.blue.bold("Druxt")} @ v${meta.version}`),this.options.cli.badgeMessages.push(`${chalk__default.default.bold("API:")} ${chalk__default.default.blue.underline(s.baseUrl+s.endpoint)}`),this.options.dev&&(this.addServerMiddleware({path:"/_druxt/template",handler:"druxt/dist/server-middleware/template.mjs"}),this.addPlugin({src:path.resolve(__dirname,"../dist/plugins/devtools.mjs"),fileName:"druxt-devtools.js"}));const o=this;this.nuxt.hook("storybook:config",(async({stories:e})=>{o.addTemplate({src:path.resolve(__dirname,"../templates/stories/README.stories.mdx"),fileName:"stories/druxt-README.stories.mdx"}),e.push(path.resolve(o.options.buildDir,"./stories/druxt-README.stories.mdx")),o.addTemplate({src:path.resolve(__dirname,"../templates/stories/druxt-module.stories.mdx"),fileName:"stories/druxt-module.stories.mdx"}),e.push(path.resolve(o.options.buildDir,"./stories/druxt-module.stories.mdx")),o.addTemplate({src:path.resolve(__dirname,"../templates/stories/druxt-debug.stories.js"),fileName:"stories/druxt-debug.stories.js"}),e.push(path.resolve(o.options.buildDir,"./stories/druxt-debug.stories.js"))}))},getDrupalJsonApiParams=e=>(new drupalJsonapiParams.DrupalJsonApiParams).initialize(e),dehydrateResources=({commit:e,queryObject:t,resources:s,prefix:i})=>(s||[]).map((s=>{const r=decodeURI(((s.links||{}).self||{}).href||""),o="string"==typeof(t.fields||{})[s.type]?[r.split("?")[0],`fields[${s.type}]=${t.fields[s.type]}`].join("?"):r;return e("druxt/addResource",{prefix:i,resource:{data:s,links:{self:{href:o}}}}),{id:s.id,type:s.type}})),DruxtStore=({store:e})=>{if(void 0===e)throw new TypeError("Vuex store not found.");const t="druxt",s={namespaced:!0,state:()=>({collections:{},resources:{}}),mutations:{addCollection(e,{collection:t,type:s,hash:i,prefix:r}){e.collections[s]||Vue__default.default.set(e.collections,s,{}),e.collections[s][i]||Vue__default.default.set(e.collections[s],i,{});const o=decodeURI((((t||{}).links||{}).self||{}).href||"").split("?")[1]||"",a=getDrupalJsonApiParams(o).getQueryObject();t.data=dehydrateResources({commit:this.commit,prefix:r,queryObject:a,resources:t.data}),t.included&&(t.included=dehydrateResources({commit:this.commit,prefix:r,queryObject:a,resources:t.included}),delete t.included),t=merge__default.default(e.collections[s][i][r]||{},t,{arrayMerge:(e,t)=>t}),Vue__default.default.set(e.collections[s][i],r,t)},addResource(e,{prefix:t,resource:s,hash:i}){i&&console.warn("[druxt] The `hash` argument for `druxt/addResource` has been deprecated, see https://druxtjs.org/guide/deprecations.html#druxtstore-addresource-hash");const{id:r,type:o}=(s||{}).data||{};if(!r||!o)return;const a=decodeURI((((s||{}).links||{}).self||{}).href||"").split("?")[1]||"",n=getDrupalJsonApiParams(a).getQueryObject();s["string"==typeof(n.fields||{})[((s||{}).data||{}).type]?"_druxt_partial":"_druxt_full"]=Date.now(),e.resources[o]||Vue__default.default.set(e.resources,o,{}),e.resources[o][r]||Vue__default.default.set(e.resources[o],r,{}),s.included&&(dehydrateResources({commit:this.commit,prefix:t,queryObject:n,resources:s.included}),delete s.included),s=merge__default.default(e.resources[o][r][t]||{},s,{arrayMerge:(e,t)=>t}),Vue__default.default.set(e.resources[o][r],t,s)},flushCollection(e,{type:t,hash:s,prefix:i}){t?!t||s||i?t&&s&&!i?Vue__default.default.set(e.collections[t],s,{}):t&&s&&i&&Vue__default.default.set(e.collections[t][s],i,{}):Vue__default.default.set(e.collections,t,{}):Vue__default.default.set(e,"collections",{})},flushResource(e,{type:t,id:s,prefix:i}){t?!t||s||i?t&&s&&!i?Vue__default.default.set(e.resources[t],s,{}):t&&s&&i&&Vue__default.default.set(e.resources[t][s],i,{}):Vue__default.default.set(e.resources,t,{}):Vue__default.default.set(e,"resources",{})}},actions:{async getCollection({commit:e,state:t},{type:s,query:i,prefix:r,bypassCache:o=!1}){const a=getDrupalJsonApiParams(i).getQueryObject(),n=i?md5__default.default(JSON.stringify({...a,fields:{},include:[]})):"_default";if(!o&&((t.collections[s]||{})[n]||{})[r])return{...t.collections[s][n][r],data:t.collections[s][n][r].data.map((e=>((t.resources[e.type][e.id]||{})[r]||{}).data))};const l=await this.$druxt.getCollection(s,i,r);return e("addCollection",{collection:{...l},type:s,hash:n,prefix:r}),l},async getResource({commit:e,dispatch:t,state:s},{type:i,id:r,query:o,prefix:a,bypassCache:n=!1}){const l=((s.resources[i]||{})[r]||{})[a]?{...s.resources[i][r][a]}:null,d=getDrupalJsonApiParams(o).getQueryObject();if(d.include=Array.isArray(d.include)?d.include.join(","):d.include,d.include&&"string"==typeof(d.fields||{})[i]){const e=d.fields[i].split(",").filter((e=>e)),t=d.include.split(",").filter((e=>e&&!e.includes(".")));d.fields[i]=Array.from(new Set([...e,...t])).filter((e=>e)).join(",")}let u=[];if(d.include&&l){const e=await Promise.all(d.include.split(",").filter((e=>Object.keys(l.data.relationships||{}).includes(e))).map((e=>{let{data:s}=l.data.relationships[e];s=Array.isArray(s)?s:[s];const i=d.include.split(",").filter((t=>t.startsWith(`${e}.`))).map((t=>t.slice(e.length+1))).join(",");return s.filter((e=>"object"==typeof e&&e)).map((e=>t("getResource",{id:e.id,prefix:a,type:e.type,query:{...d,include:i}})))})).flat());for(const t of e)u=[...u,t.data,...t.included||[]];l.included=u}if(!n&&(l||{})._druxt_full)return l;const p="string"!=typeof(d.fields||{})[i];let c,f=!!p||(d.fields||{})[i];if(l&&!p&&f){const e=f.split(","),t=[...Object.keys(((l||{}).data||{}).attributes||{}),...Object.keys(((l||{}).data||{}).relationships||{})],s=e.filter((e=>!t.includes(e)));f=!!s.length,d.fields[i]=(s||[]).join(",")||void 0}if(n||!l||f)try{c=await this.$druxt.getResource(i,r,getDrupalJsonApiParams(d),a),e("addResource",{prefix:a,resource:{...c}})}catch(e){}const h={...((s.resources[i]||{})[r]||{})[a]};return d.include&&((c||{}).included||(l||{}).included)&&(u=[...(c||{}).included||[],...(l||{}).included||[]],h.included=Array.from(new Set(u.filter((e=>(e||{}).id)).map((e=>e.id)))).map((e=>u.find((t=>t.id===e))))),h}}};e.registerModule(t,s,{preserveState:Boolean(e.state[t])})};class DruxtClass{constructor(){}getComponents(e,t,s=!1,i){const r=[],o={};return t.filter((e=>Array.isArray(e))).map((t=>{const s=[];t.map((t=>{const r=s.length?[...s[0].parts]:[];r.push(t);const o=[...r];"string"==typeof i||!1===i&&void 0!==i||!((e||{}).$options||{}).name||(i=e.$options.name.match(/[A-Z][a-z]+/g).map((e=>e.toLowerCase())).join("-")),i&&o.unshift(i);const a=o.map((e=>e.toLowerCase().replace(/--|_/g,"-"))).join("-"),n=a.replace(/((\b|[^a-zA-Z0-9]+)[a-zA-Z0-9])/gi,((e,t,s)=>e.toUpperCase().replace(s,"")));let l=!1;for(const t of[a,n])if(void 0!==(((e||{}).$options||{}).components||{})[t]){l=!0;break}s.unshift({global:l,kebab:a,parts:r,pascal:n,prefix:i})})),s.map((e=>{o[e.pascal]||(o[e.pascal]=!0,r.push(e))}))})),r.filter((e=>e.global||!!s)).sort(((e,t)=>t.parts.length-e.parts.length))}async getModuleData(e){if("function"!=typeof((e||{}).$options||{}).druxt)return!1;const t=await e.$options.druxt({vm:e});return(e.$options||{}).name&&(t.name=e.$options.name.match(/[A-Z][a-z]+/g).map((e=>e.toLowerCase())).join("-")),t}}DruxtNuxtModule.meta=require("../package.json"),exports.DruxtClass=DruxtClass,exports.DruxtClient=DruxtClient,exports.DruxtStore=DruxtStore,exports.default=DruxtNuxtModule;
//# sourceMappingURL=/sm/ee4785d01559cec169dd8e2e4aaf023c414ba503b616324d4723bc949124b0d2.map