@swell/apps-sdk 1.0.104 → 1.0.105

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -945,6 +945,6 @@ Shopify.routes = Shopify.routes || {};
945
945
  Shopify.routes.root = "/";
946
946
  ${o.join(`
947
947
  `)}</script>`}getMenuData(e){return P4(this,e)}getFontData(e){return v4(this,e)}getFormData(e){return R4(this,e)}getFontFromShopifySetting(e){return z2(e)}getThemeConfig(e){return $2(e)}getPresetsConfig(e){return U2(e)}getEditorConfig(e){let{locale:t}=this.swell.getStorefrontLocalization();return O2(e,t)}getSectionConfigSchema(e){let{locale:t}=this.swell.getStorefrontLocalization();return K2(e,t)}async getLocaleConfig(e,t="en",i=".json"){let r=await e.getThemeConfigsByPath("theme/locales/",i),o=r.get(`theme/locales/${t}${i}`)??null;if(!o){let a=t.split("-")[0];if(o=r.get(`theme/locales/${a}${i}`)??null,!o){let s=`.default${i}`;for(let l of r.values())if(l?.file_path?.endsWith(s)){o=l;break}}}if(o){o=await e.getThemeConfig(o.file_path);try{return JSON.parse(o?.file_data||"")}catch{}}return{}}async getEditorLocaleConfig(e,t){if(this.editorLocaleConfig?.[t])return this.editorLocaleConfig[t];let i=await this.getLocaleConfig(e,t,".schema.json");return this.editorLocaleConfig={[t]:i},i}async renderSchemaTranslations(e,t,i="en"){if(!(0,x4.isObject)(t))return t;let r=await this.getEditorLocaleConfig(e,i);return this.renderSchemaTranslationValue(e,t,i,r)}async renderSchemaTranslationValue(e,t,i,r){switch(typeof t){case"string":{if(t.startsWith("t:")){let o=t.slice(2),a=o?.split("."),s=a.pop()||"",l=a.join(".");return(0,x4.get)(r,l)?.[s]??o}break}case"object":{if(Array.isArray(t)){let o=[];for(let a of t)o.push(await this.renderSchemaTranslationValue(e,a,i,r));return o}if(t!==null){let o={...t};for(let[a,s]of Object.entries(t))o[a]=await this.renderSchemaTranslationValue(e,s,i,r);return o}break}default:break}return t}getPageType(e){return this.shopifyCompatibilityConfig?.page_types?.[e]||e}getPageRouteUrl(e){return this.theme.props.pages?.find(t=>t.id===e)?.url||e}getPageRoutes(){let e={account_addresses_url:this.getPageRouteUrl("account/addresses"),account_login_url:this.getPageRouteUrl("account/login"),account_logout_url:this.getPageRouteUrl("account/logout"),account_recover_url:this.getPageRouteUrl("account/recover"),account_register_url:this.getPageRouteUrl("account/signup"),account_url:this.getPageRouteUrl("account/index"),all_products_collection_url:this.getPageRouteUrl("products/index"),cart_add_url:this.getPageRouteUrl("cart/add"),cart_change_url:this.getPageRouteUrl("cart/change"),cart_clear_url:this.getPageRouteUrl("cart/clear"),cart_update_url:this.getPageRouteUrl("cart/update"),cart_url:this.getPageRouteUrl("cart/index"),collections_url:this.getPageRouteUrl("categories/index"),predictive_search_url:this.getPageRouteUrl("search/suggest"),product_recommendations_url:this.getPageRouteUrl("products/index"),root_url:this.getPageRouteUrl("index"),search_url:this.getPageRouteUrl("search")};if(this.shopifyCompatibilityConfig?.page_routes)for(let[t,i]of Object.entries(this.shopifyCompatibilityConfig.page_routes))i&&typeof i=="object"&&i.page_id?e[t]=this.getPageRouteUrl(i.page_id):typeof i=="string"&&(e[t]=i);return e}getLocalizationObject(e,t){return E3(this,e,t)}getAdaptedPageUrl(e){if(!e)return;let t,i,r={},[o,a]=e.split("?"),s=o.split("."),l=s[1]?s.pop():null,[,h,u,d]=s.join(".").split("/");switch(l==="js"&&(i="json"),h){case"account":switch(u){case"order":t="account/order",r.id=d;break;case"register":t="account/login";break;default:break}break;case"blog":u&&(t="blogs/category",r.category=u),d&&(t="blogs/blog",r.slug=d);break;case"collections":u?u==="all"?t="products/index":(t="categories/category",r.slug=u):t="categories/index";break;case"gift_card":u&&(t="gift-card",r.code=u);break}if(t){let m=this.getPageRouteUrl(t);if(m)return m.replace(/:(\w+)/g,(g,C)=>r[C])+(l?`.${l}`:"")+(a?`?${a}`:"")}else if(i)return o.replace(new RegExp(`.${l}$`),`.${i}`)+(a?`?${a}`:"")}getThemeFilePath(e,t){switch(e){case"assets":return`assets/${t}`;case"components":return`snippets/${t}`;case"config":return`config/${t}`;case"layouts":return`layout/${t}`;case"templates":return`templates/${this.getPageType(t)}`;case"sections":return`sections/${t}`;default:throw new Error(`Theme file type not supported: ${e}`)}}getPageResourceMap(){return this.shopifyCompatibilityConfig?.page_resources?this.shopifyCompatibilityConfig.page_resources.reduce((e,t)=>e.set(t.page,{page:t.page,resources:t.resources.map(({from:i,to:r,object:o})=>{let a=D4[o];if(!a)throw new Error(`ShopifyObject for '${o}' not found.`);return{from:i,to:r,object:a}})}),new Map):new Map}getObjectResourceMap(){return this.shopifyCompatibilityConfig?.object_resources?this.shopifyCompatibilityConfig.object_resources.reduce((e,t)=>{let i=D4[t.object];if(!i)throw new Error(`ShopifyObject for '${t.object}' not found.`);return e.set(t.from,{from:t.from,object:i})},new Map):new Map}getFormResourceMap(){return this.shopifyCompatibilityConfig?.forms?this.shopifyCompatibilityConfig.forms.map(e=>({shopifyType:e.shopify_type,type:e.id})):[]}getQueryParamsMap(){return[{from:"sort_by",to:"sort"},{from(e){return e.startsWith("filter.v.")},to(e,t){let i=e.split("filter.v.")[1],r=t;return{[i]:r}}}]}getAllCountryOptionTags(e){return e?e.countries?.map(t=>{if(!t)return"";let i=(e.states||[]).filter(o=>o.country===t.id).map(o=>[o.id,o.name]),r=JSON.stringify(i).replace(/"/g,"&quot;");return`<option value="${t.id}" data-provinces="${r}">${t.name}</option>`}).filter(Boolean).join(`
948
- `):""}isScriptFormActionUrl(e){if(!e)return!1;let t=this.shopifyCompatibilityConfig?.editor_configs?.script_actions_routes||{};for(let i of Object.values(t))if(e===i)return!0;return!1}isScriptUrl(e){if(!e)return!1;let t=this.shopifyCompatibilityConfig?.editor_configs?.script_routes||{};for(let i of Object.values(t))if(e.startsWith(i))return!0;return!1}needRedirectToPageStart(e){return e?(this.shopifyCompatibilityConfig?.editor_configs?.redirect_to_page_start_forms||[]).includes(e):!1}isCheckoutForm(e){return e?this.shopifyCompatibilityConfig?.editor_configs?.checkout_form===e:!1}};var y=class n{props;stringProp;linkProps;constructor(e,t,i){return this.props=e,this.stringProp=t,this.linkProps=i,new Proxy(e,{get(r,o){let a=r;switch(o){case"toJSON":return e;case"clone":return()=>new n((0,P3.cloneDeep)(e),(0,P3.cloneDeep)(t),(0,P3.cloneDeep)(i));case"toString":{if(t)return()=>e[t];break}default:break}return a[o]instanceof i3?a[o].resolve().then(s=>(a[o]=s,s),s=>(console.log(s),a[o]=null,null)):a[o]},getPrototypeOf(){return n.prototype}})}valueOf(){return this.stringProp?this.props[this.stringProp]:this}clone(){return new n({})}},i3=class{handler;result;constructor(e){this.result=void 0,this.handler=e}async resolve(){return this.result===void 0&&(this.result=Promise.resolve().then(()=>{let e=this.handler();return this.handler=P3.noop,e}).then(e=>(e=e!==void 0?e:null,this.result=e,e))),this.result}};function w(n){return new i3(n)}function C6(n){return R(n)&&(v(n)||typeof n._resolve=="function")}function nt(n){return R(n)&&typeof n._resolve=="function"}async function g6(n){return Array.isArray(n)?Promise.all(n.map(e=>nt(e)?e._resolve():e)):nt(n)?n._resolve():n}async function rt(n,e){return g6(n).then(t=>Array.isArray(n)&&Array.isArray(t)?e(...t.map(i=>i||{})):C6(t)?rt(t,e):e(t||{})).catch(t=>(console.log(t),null))}function c(n,e){return new i3(()=>rt(n,e))}function K4(n,e,t,i,r){return c(e,o=>o[t]?._cloneWithCompatibilityResult(a=>({results:a?.results?.map(s=>{let l=i(n,s);return r&&r(l,s),l})}))||[])}function a3(n){var e="0123456789abcdef";function t(b){var k,M="";for(k=0;k<=3;k++)M+=e.charAt(b>>k*8+4&15)+e.charAt(b>>k*8&15);return M}function i(b,k){var M=(b&65535)+(k&65535),E=(b>>16)+(k>>16)+(M>>16);return E<<16|M&65535}function r(b,k){return b<<k|b>>>32-k}function o(b,k,M,E,G,V){return i(r(i(i(k,b),i(E,V)),G),M)}function a(b,k,M,E,G,V,n3){return o(k&M|~k&E,b,k,G,V,n3)}function s(b,k,M,E,G,V,n3){return o(k&E|M&~E,b,k,G,V,n3)}function l(b,k,M,E,G,V,n3){return o(k^M^E,b,k,G,V,n3)}function h(b,k,M,E,G,V,n3){return o(M^(k|~E),b,k,G,V,n3)}function u(b){var k,M=(b.length+8>>6)+1,E=new Array(M*16);for(k=0;k<M*16;k++)E[k]=0;for(k=0;k<b.length;k++)E[k>>2]|=b.charCodeAt(k)<<k%4*8;return E[k>>2]|=128<<k%4*8,E[M*16-2]=b.length*8,E}var d,m=u(""+n),p=1732584193,g=-271733879,C=-1732584194,f=271733878,F,p3,J3,E5;for(d=0;d<m.length;d+=16)F=p,p3=g,J3=C,E5=f,p=a(p,g,C,f,m[d+0],7,-680876936),f=a(f,p,g,C,m[d+1],12,-389564586),C=a(C,f,p,g,m[d+2],17,606105819),g=a(g,C,f,p,m[d+3],22,-1044525330),p=a(p,g,C,f,m[d+4],7,-176418897),f=a(f,p,g,C,m[d+5],12,1200080426),C=a(C,f,p,g,m[d+6],17,-1473231341),g=a(g,C,f,p,m[d+7],22,-45705983),p=a(p,g,C,f,m[d+8],7,1770035416),f=a(f,p,g,C,m[d+9],12,-1958414417),C=a(C,f,p,g,m[d+10],17,-42063),g=a(g,C,f,p,m[d+11],22,-1990404162),p=a(p,g,C,f,m[d+12],7,1804603682),f=a(f,p,g,C,m[d+13],12,-40341101),C=a(C,f,p,g,m[d+14],17,-1502002290),g=a(g,C,f,p,m[d+15],22,1236535329),p=s(p,g,C,f,m[d+1],5,-165796510),f=s(f,p,g,C,m[d+6],9,-1069501632),C=s(C,f,p,g,m[d+11],14,643717713),g=s(g,C,f,p,m[d+0],20,-373897302),p=s(p,g,C,f,m[d+5],5,-701558691),f=s(f,p,g,C,m[d+10],9,38016083),C=s(C,f,p,g,m[d+15],14,-660478335),g=s(g,C,f,p,m[d+4],20,-405537848),p=s(p,g,C,f,m[d+9],5,568446438),f=s(f,p,g,C,m[d+14],9,-1019803690),C=s(C,f,p,g,m[d+3],14,-187363961),g=s(g,C,f,p,m[d+8],20,1163531501),p=s(p,g,C,f,m[d+13],5,-1444681467),f=s(f,p,g,C,m[d+2],9,-51403784),C=s(C,f,p,g,m[d+7],14,1735328473),g=s(g,C,f,p,m[d+12],20,-1926607734),p=l(p,g,C,f,m[d+5],4,-378558),f=l(f,p,g,C,m[d+8],11,-2022574463),C=l(C,f,p,g,m[d+11],16,1839030562),g=l(g,C,f,p,m[d+14],23,-35309556),p=l(p,g,C,f,m[d+1],4,-1530992060),f=l(f,p,g,C,m[d+4],11,1272893353),C=l(C,f,p,g,m[d+7],16,-155497632),g=l(g,C,f,p,m[d+10],23,-1094730640),p=l(p,g,C,f,m[d+13],4,681279174),f=l(f,p,g,C,m[d+0],11,-358537222),C=l(C,f,p,g,m[d+3],16,-722521979),g=l(g,C,f,p,m[d+6],23,76029189),p=l(p,g,C,f,m[d+9],4,-640364487),f=l(f,p,g,C,m[d+12],11,-421815835),C=l(C,f,p,g,m[d+15],16,530742520),g=l(g,C,f,p,m[d+2],23,-995338651),p=h(p,g,C,f,m[d+0],6,-198630844),f=h(f,p,g,C,m[d+7],10,1126891415),C=h(C,f,p,g,m[d+14],15,-1416354905),g=h(g,C,f,p,m[d+5],21,-57434055),p=h(p,g,C,f,m[d+12],6,1700485571),f=h(f,p,g,C,m[d+3],10,-1894986606),C=h(C,f,p,g,m[d+10],15,-1051523),g=h(g,C,f,p,m[d+1],21,-2054922799),p=h(p,g,C,f,m[d+8],6,1873313359),f=h(f,p,g,C,m[d+15],10,-30611744),C=h(C,f,p,g,m[d+6],15,-1560198380),g=h(g,C,f,p,m[d+13],21,1309151649),p=h(p,g,C,f,m[d+4],6,-145523070),f=h(f,p,g,C,m[d+11],10,-1120210379),C=h(C,f,p,g,m[d+2],15,718787259),g=h(g,C,f,p,m[d+9],21,-343485551),p=i(p,F),g=i(g,p3),C=i(C,J3),f=i(f,E5);return t(p)+t(g)+t(C)+t(f)}function f6(n,e){if(!n.file_path.startsWith("theme/sections/"))return!1;if(n.file_path.endsWith(".liquid")){if(!e.get(n.file_path.replace(/\.liquid$/,".json")))return!0}else if(n.file_path.endsWith(".json"))return!0;return!1}async function d5(n,e){let t=[];for(let i of n.values())if(f6(i,n)){let r=await e(i);r&&t.push({...r,id:String(i.name||"").split(".").pop()??"",...r&&{presets:w6(r)}})}return t}function w6(n){return Array.isArray(n?.presets)?n.presets.map(e=>({label:e.label,settings:{...n.fields?.reduce((t,i)=>(i.id&&i.default!==void 0&&(t[i.id]=i.default),t),{}),...e.settings||void 0},blocks:e.blocks?.map(t=>{let i=n.blocks?.find(r=>r.type===t.type);return i?{...t,settings:{...i.fields.reduce((r,o)=>(o.id&&o.default!==void 0&&(r[o.id]=o.default),r),{}),...t.settings||void 0}}:t})})):[]}async function h5(n,e){let t=Array.from(n.values()),i=t.filter(a=>a.file_path.endsWith(".json")&&!n.has(a.file_path.replace(/\.json$/,".liquid"))),r=async a=>{let s=t.find(h=>{if(!h.file_path.endsWith(`/${a}.json`)&&!h.file_path.endsWith(`/${a}.liquid`))return!1;if(h.file_path.endsWith(".liquid")){if(!n.get(h.file_path.replace(/\.liquid$/,".json")))return!0}else if(h.file_path.endsWith(".json"))return!0;return!1});return s?{...await e(s),id:String(s.name||"").split(".").pop()}:void 0},o=[];for(let a of i){let s;try{s=JSON.parse(a.file_data),s?.name&&(s.label=s.name,delete s.name)}catch{}if(s?.type){let l=await y4(s,r);o.push({...s,id:String(a.name||"").split(".").pop(),sectionConfigs:l})}}return o}async function y4(n,e){let t=Array.isArray(n?.order)?n.order:Object.keys(n?.sections||{}),i=[];for(let r of t){let o=n.sections[r];if(!o)continue;let a=await e(o.type)||{id:o.type,label:o.type,tag:"div",class:"",fields:[],blocks:[]},s=n.id?`page__${n.id}__${r}`:a.id,h=(Array.isArray(o.block_order)?o.block_order:Object.keys(o.blocks||{})).map(d=>o.blocks?.[d]).filter(Boolean),u={section:{id:s,...o,blocks:h}};i.push({id:s,section:{id:s,...o},schema:a,settings:u,tag:a.tag||"div",class:a.class})}return i}function y6(n){return String(n)==="[object Array]"}function U(n){let e=typeof n;return n!==null&&(e==="object"||e==="function")}function f5(n){let e=new TextEncoder().encode(n),t="";for(let i=0;i<e.length;i+=3){let r=Array.from(e.slice(i,i+3));t+=btoa(String.fromCharCode(...r))}return t}function r5(n,e="id"){return(0,j4.reduce)(n,(t,i)=>(t[String(i[e])]=i,t),{})}function S6(n){let e=n.toUpperCase().split(/-|_/),t=e.shift(),i=e.pop(),r="";return i&&(r=i),i||(r=W4[t.toLowerCase()]||""),r.toLowerCase()}function w5(n,e){if(!(typeof n!="object"||n===null))for(let[t,i]of Object.entries(n))e(t,n)!==!1&&typeof i=="object"&&i!==null&&w5(i,e)}function k6(n){let e=new Set;return w5(n,(t,i)=>{if(typeof i=="object"&&i!==null){if(e.has(i))return!1;e.add(i)}return!0}),Array.from(e)}function L6(n){if(!n)return n;let e=new WeakSet;return JSON.parse(JSON.stringify(n,(t,i)=>{if(typeof i=="object"&&i!==null){if(e.has(i))return JSON.parse(JSON.stringify(i));e.add(i)}return i}))}function st(n){if(!(typeof n!="object"||n===null))for(let[e,t]of Object.entries(n))e==="_swell"&&"_swell"in n?n[e]=void 0:st(t)}function ot(n){if(n!==void 0)return n instanceof L?"SwellStorefrontCollection":n instanceof A?"SwellStorefrontRecord":n instanceof y?"ShopifyResource":n instanceof _?"StorefrontResource":"promise"}async function I(n,e=!0,t=!1){let i=n,r=e;try{if(v(n)&&(r=!1,i=await n),n instanceof _&&(r=!1,i=await I(n.resolve(),e,t)),Array.isArray(i)){let o=await Promise.all(i.map(a=>I(a,e,t)));if(i=o,!o.some(a=>a!==void 0))return e?[]:void 0}else if(typeof i=="object"&&i!==null&&(!("_swell"in i)||!i._swell)){let o={};for(let[a,s]of Object.entries(i)){if(!e&&(v(s)||s instanceof _||s instanceof y)){o[a]={_type:ot(s),...t?{value:await I(s,r,t)}:void 0};continue}if(s instanceof _&&t){o[a]={_type:ot(s),value:await I(s,r,t)};continue}o[a]=await I(s,r,t)}return!e&&Object.keys(o).length===0?void 0:o}}catch(o){return console.error(o),n}return i}function O(n){return at.default.stringify({...n,sections:void 0,section_id:void 0},{encodeValuesOnly:!0,arrayFormat:"repeat"})}function c5(n,e){return n=Array.isArray(n)?n.join(" "):n,n.split("}").map(r=>{let[o,a]=r.split("{");return!o||!a?"":`${o.split(",").map(l=>`#${e} ${l.trim()}`).join(", ")} {${a}}`}).join(" ")}function A3(n,e){return Object.entries(n).reduce((t,[i,r])=>(r?.value!==null&&r?.value!==void 0&&(t[i]=r?.value),t),(0,j4.cloneDeep)(e))}var B3="ContentSections";function u3(n){return`SectionGroup_${n}`}var b6="THEME",A6=Object.freeze({ttl:1e3*60*60*24}),lt="__NULL__",K=class{client;constructor(e){e=e||{},e.stores=e.stores||T6(e.kvStore),this.client=(0,dt.createCache)({...A6,...e})}async fetch(e,t){return this.client.wrap(e,t)}async fetchSWR(e,t){let i=await this.client.get(e),r=Promise.resolve().then(()=>t()).then(async a=>{let s=a==null,l=await I(a);return await this.client.set(e,s?lt:l),a});return i!==null?i===lt?null:i:await r}async get(e){return this.client.get(e)}async set(e,t,i){return this.client.set(e,t,i)}async flush(e){await this.client.del(e)}async flushAll(){await this.client.clear()}};function T6(n){let e=[];return n?e.push(new y5.Keyv({namespace:b6,store:new Q3(n)})):e.push(new y5.Keyv),e}var _6=24*60*60*1e3,M6=30*1e3,$3=class extends K{constructor(e){super({ttl:e?.kvStore?_6:M6,...e})}};var ht=require("keyv");var E6=5*1e3,U3=class extends K{constructor(e){super({stores:P6(),ttl:E6,...e})}};function P6(){return[new ht.Keyv({serialize:void 0,deserialize:void 0})]}var v6=90*24*60*60*1e3,F3=class extends K{constructor(e){super({ttl:v6,...e})}};var ct="https://api.schema.io",ut=new Map,mt=new Map,S5=class n{url;headers;swellHeaders;queryParams;workerEnv;config;shopifyCompatibilityConfig;backend;storefront;storefrontContext;instanceId="";isPreview=!1;isEditor=!1;sentResponse=!1;storefront_url;constructor(e){let{url:t,config:i,shopifyCompatibilityConfig:r,headers:o,swellHeaders:a,serverHeaders:s,queryParams:l,workerEnv:h,...u}=e;if(this.url=t instanceof URL?t:new URL(t||""),this.config=i,this.shopifyCompatibilityConfig=r,this.queryParams=n.formatQueryParams(l||this.url.searchParams),this.workerEnv=h,console.log(`KV cache: ${this.workerEnv?.THEME?"enabled":"disabled"}`),s){let{headers:d,swellHeaders:m}=n.formatHeaders(s);this.headers=d,this.swellHeaders=m,this.backend=new Z4({storeId:m["store-id"],accessToken:m["access-token"],apiHost:m["api-host"]}),this.storefront=this.getStorefrontInstance({...e,headers:d,swellHeaders:m}),this.instanceId=["store-id","environment-id","deployment-mode","theme-id","theme-branch-id"].map(p=>m[p]||"0").join(":"),this.isEditor=u.isEditor??m["deployment-mode"]==="editor",this.isPreview=this.isEditor||m["deployment-mode"]==="preview"}else if(o&&a)Object.assign(this,u),this.headers=o,this.swellHeaders=a,this.storefront=this.getStorefrontInstance(e);else throw new Error("Swell client requires `serverHeaders` when initialized on the server-side, or `headers` and `swellHeaders` when initialized on the client-side.");this.storefrontContext=this.initStorefrontContext()}static formatHeaders(e){let t={},i={};e instanceof Headers?e.forEach((r,o)=>{t[o]=r}):e&&(t=e);for(let[r,o]of Object.entries(t))r.startsWith("swell-")&&o&&(i[r.replace("swell-","")]=o);return{headers:t,swellHeaders:i}}static formatQueryParams(e){let t={};return e instanceof URLSearchParams?t=gt.default.parse(e.toString()):e&&(t=e),t}async getCachedResource(e,t,i){let r=this.swellHeaders["request-id"],o=pt(e,[r,t]);return this.getResourceCache().fetch(o,i)}async getAppSettings(){return await this.get("/:storefronts/{id}/configs/settings/values",{id:this.swellHeaders["storefront-id"]})||{}}async getStorefrontSettings(e=!1){try{let{settings:t,menus:i,payments:r,subscriptions:o,session:a}=await this.storefront.request("get","/settings/all",void 0,void 0,{force:e}),s=this.storefront.settings;s.localizedState={},s.set({value:t}),s.set({model:"menus",value:i}),s.set({model:"payments",value:r}),s.set({model:"subscriptions",value:o}),s.set({model:"session",value:a})}catch(t){t instanceof Error&&(t.message=`Swell: unable to load settings (${t.message})`),console.error(t)}return this.storefront.settings.get()}getStorefrontMenus(){let e=this.storefront.settings.getState("/settings/menus","menuState");return!e||v(e)?[]:e}getStorefrontLocalization(){let e=this.storefront.locale.selected(),t=this.storefront.currency.selected();return!e||v(e)?{locale:"en-US",currency:"USD"}:{locale:e,currency:t}}async get(...e){return this.backend?.get(...e)}async put(...e){return this.backend?.put(...e)}async post(...e){return this.backend?.post(...e)}async delete(...e){return this.backend?.delete(...e)}getStorefrontInstance(e){let{swellHeaders:t,getCookie:i,setCookie:r,storefrontSettingStates:o}=e;if(!t)throw new Error("Swell headers are required");let a=t["store-id"],s=t["public-key"];if(!a||!s)throw new Error('Missing required headers: "swell-store-id" and "swell-public-key"');let l=Ct.default.create(a,s,{url:t["admin-url"],vaultUrl:t["vault-url"],getCookie:i,setCookie:r&&((h,u,d)=>r(h,u,d,this)),headers:{"Swell-Store-id":a,"Swell-Storefront-Id":t["storefront-id"]}});return o&&Object.assign(l.settings,o),l.request=this.getCacheableStorefrontRequestHandler(l),l}initStorefrontContext(){let e={};if(this.swellHeaders?.["storefront-context"])try{e=JSON.parse(this.swellHeaders["storefront-context"])}catch{console.error("Failed to parse swell-storefront-context. Ignoring...")}return e}isStorefrontRequestCacheable(e,t,i){if(i?.force)return!1;if(e==="get")switch(t.split("/")[1]){case"products":case"categories":case"content":case"settings":return!0;default:return!1}return!1}getCacheableStorefrontRequestHandler(e){let t=e.request;return(i,r,o,a,s)=>{if(this.isStorefrontRequestCacheable(i,r,s))return this.getRequestCache().fetchSWR(pt("request",[i,r,o,a,s]),()=>t(i,r,o,a,s));switch(i){case"delete":case"post":case"put":{let l=r.split("/")[1];delete this.storefrontContext[l];break}default:}return t(i,r,o,a,s)}}getResourceCache(){let e=ut.get(this.instanceId);return e||(e=new U3({kvStore:this.workerEnv?.THEME}),ut.set(this.instanceId,e)),e}getRequestCache(){let e=mt.get(this.instanceId);return e||(e=new $3({kvStore:this.workerEnv?.THEME}),mt.set(this.instanceId,e)),e}};function pt(n,e){let t=n;return Array.isArray(e)&&e.length>0&&(t+=`_${JSON.stringify(e)}`),t.length>512&&(t=`${t.slice(0,480)}${a3(t)}`),t}var Z4=class{apiHost=ct;apiAuth="";constructor({storeId:e,accessToken:t,apiHost:i}){this.apiHost=i||ct,this.apiAuth=f5(`${e}:${t}`)}async makeRequest(e,t,i){let r={method:e,headers:{Authorization:`Basic ${this.apiAuth}`,"User-Agent":"swell-functions/1.0","Content-Type":"application/json"}},o="";if(i)try{e==="GET"?o=`?${this.stringifyQuery(i)}`:(r.body=JSON.stringify(i),r.headers["Content-Length"]=String(r.body.length))}catch{throw new Error(`Error serializing data: ${i}`)}let a=String(t).startsWith("/")?t.substring(1):t,s=`${this.apiHost}/${a}${o}`,l=await fetch(s,r),h=await l.text(),u;try{u=JSON.parse(h)}catch{u=String(h||"").trim()}if(l.status>299)throw new K3(u,{status:l.status,method:e,endpointUrl:a});if(e!=="GET"&&u?.errors)throw new K3(u.errors,{status:400,method:e,endpointUrl:a});return u}stringifyQuery(e,t){let i=[];for(let[r,o]of Object.entries(e)){let a=t?`${t}[${r}]`:r,l=o!==null&&typeof o=="object"?this.stringifyQuery(o,a):`${encodeURIComponent(a)}=${o===null?"":encodeURIComponent(o)}`;i.push(l)}return i.join("&")}async get(e,t){return this.makeRequest("GET",e,t)}async put(e,t){return this.makeRequest("PUT",e,t)}async post(e,t){return this.makeRequest("POST",e,t)}async delete(e,t){return this.makeRequest("DELETE",e,t)}},K3=class extends Error{status=200;constructor(e,t={}){let i;typeof e=="string"?i=e:i=JSON.stringify(e,null,2),t.method&&t.endpointUrl&&(i=`${t.method} /${t.endpointUrl}
948
+ `):""}isScriptFormActionUrl(e){if(!e)return!1;let t=this.shopifyCompatibilityConfig?.editor_configs?.script_actions_routes||{};for(let i of Object.values(t))if(e===i)return!0;return!1}isScriptUrl(e){if(!e)return!1;let t=this.shopifyCompatibilityConfig?.editor_configs?.script_routes||{};for(let i of Object.values(t))if(e.startsWith(i))return!0;return!1}needRedirectToPageStart(e){return e?(this.shopifyCompatibilityConfig?.editor_configs?.redirect_to_page_start_forms||[]).includes(e):!1}isCheckoutForm(e){return e?this.shopifyCompatibilityConfig?.editor_configs?.checkout_form===e:!1}};var y=class n{props;stringProp;linkProps;constructor(e,t,i){return this.props=e,this.stringProp=t,this.linkProps=i,new Proxy(e,{get(r,o){let a=r;switch(o){case"toJSON":return e;case"clone":return()=>new n((0,P3.cloneDeep)(e),(0,P3.cloneDeep)(t),(0,P3.cloneDeep)(i));case"toString":{if(t)return()=>e[t];break}default:break}return a[o]instanceof i3?a[o].resolve().then(s=>(a[o]=s,s),s=>(console.log(s),a[o]=null,null)):a[o]},getPrototypeOf(){return n.prototype}})}valueOf(){return this.stringProp?this.props[this.stringProp]:this}clone(){return new n({})}},i3=class{handler;result;constructor(e){this.result=void 0,this.handler=e}async resolve(){return this.result===void 0&&(this.result=Promise.resolve().then(()=>{let e=this.handler();return this.handler=P3.noop,e}).then(e=>(e=e!==void 0?e:null,this.result=e,e))),this.result}};function w(n){return new i3(n)}function C6(n){return R(n)&&(v(n)||typeof n._resolve=="function")}function nt(n){return R(n)&&typeof n._resolve=="function"}async function g6(n){return Array.isArray(n)?Promise.all(n.map(e=>nt(e)?e._resolve():e)):nt(n)?n._resolve():n}async function rt(n,e){return g6(n).then(t=>Array.isArray(n)&&Array.isArray(t)?e(...t.map(i=>i||{})):C6(t)?rt(t,e):e(t||{})).catch(t=>(console.log(t),null))}function c(n,e){return new i3(()=>rt(n,e))}function K4(n,e,t,i,r){return c(e,o=>o[t]?._cloneWithCompatibilityResult(a=>({results:a?.results?.map(s=>{let l=i(n,s);return r&&r(l,s),l})}))||[])}function a3(n){var e="0123456789abcdef";function t(b){var k,M="";for(k=0;k<=3;k++)M+=e.charAt(b>>k*8+4&15)+e.charAt(b>>k*8&15);return M}function i(b,k){var M=(b&65535)+(k&65535),E=(b>>16)+(k>>16)+(M>>16);return E<<16|M&65535}function r(b,k){return b<<k|b>>>32-k}function o(b,k,M,E,G,V){return i(r(i(i(k,b),i(E,V)),G),M)}function a(b,k,M,E,G,V,n3){return o(k&M|~k&E,b,k,G,V,n3)}function s(b,k,M,E,G,V,n3){return o(k&E|M&~E,b,k,G,V,n3)}function l(b,k,M,E,G,V,n3){return o(k^M^E,b,k,G,V,n3)}function h(b,k,M,E,G,V,n3){return o(M^(k|~E),b,k,G,V,n3)}function u(b){var k,M=(b.length+8>>6)+1,E=new Array(M*16);for(k=0;k<M*16;k++)E[k]=0;for(k=0;k<b.length;k++)E[k>>2]|=b.charCodeAt(k)<<k%4*8;return E[k>>2]|=128<<k%4*8,E[M*16-2]=b.length*8,E}var d,m=u(""+n),p=1732584193,g=-271733879,C=-1732584194,f=271733878,F,p3,J3,E5;for(d=0;d<m.length;d+=16)F=p,p3=g,J3=C,E5=f,p=a(p,g,C,f,m[d+0],7,-680876936),f=a(f,p,g,C,m[d+1],12,-389564586),C=a(C,f,p,g,m[d+2],17,606105819),g=a(g,C,f,p,m[d+3],22,-1044525330),p=a(p,g,C,f,m[d+4],7,-176418897),f=a(f,p,g,C,m[d+5],12,1200080426),C=a(C,f,p,g,m[d+6],17,-1473231341),g=a(g,C,f,p,m[d+7],22,-45705983),p=a(p,g,C,f,m[d+8],7,1770035416),f=a(f,p,g,C,m[d+9],12,-1958414417),C=a(C,f,p,g,m[d+10],17,-42063),g=a(g,C,f,p,m[d+11],22,-1990404162),p=a(p,g,C,f,m[d+12],7,1804603682),f=a(f,p,g,C,m[d+13],12,-40341101),C=a(C,f,p,g,m[d+14],17,-1502002290),g=a(g,C,f,p,m[d+15],22,1236535329),p=s(p,g,C,f,m[d+1],5,-165796510),f=s(f,p,g,C,m[d+6],9,-1069501632),C=s(C,f,p,g,m[d+11],14,643717713),g=s(g,C,f,p,m[d+0],20,-373897302),p=s(p,g,C,f,m[d+5],5,-701558691),f=s(f,p,g,C,m[d+10],9,38016083),C=s(C,f,p,g,m[d+15],14,-660478335),g=s(g,C,f,p,m[d+4],20,-405537848),p=s(p,g,C,f,m[d+9],5,568446438),f=s(f,p,g,C,m[d+14],9,-1019803690),C=s(C,f,p,g,m[d+3],14,-187363961),g=s(g,C,f,p,m[d+8],20,1163531501),p=s(p,g,C,f,m[d+13],5,-1444681467),f=s(f,p,g,C,m[d+2],9,-51403784),C=s(C,f,p,g,m[d+7],14,1735328473),g=s(g,C,f,p,m[d+12],20,-1926607734),p=l(p,g,C,f,m[d+5],4,-378558),f=l(f,p,g,C,m[d+8],11,-2022574463),C=l(C,f,p,g,m[d+11],16,1839030562),g=l(g,C,f,p,m[d+14],23,-35309556),p=l(p,g,C,f,m[d+1],4,-1530992060),f=l(f,p,g,C,m[d+4],11,1272893353),C=l(C,f,p,g,m[d+7],16,-155497632),g=l(g,C,f,p,m[d+10],23,-1094730640),p=l(p,g,C,f,m[d+13],4,681279174),f=l(f,p,g,C,m[d+0],11,-358537222),C=l(C,f,p,g,m[d+3],16,-722521979),g=l(g,C,f,p,m[d+6],23,76029189),p=l(p,g,C,f,m[d+9],4,-640364487),f=l(f,p,g,C,m[d+12],11,-421815835),C=l(C,f,p,g,m[d+15],16,530742520),g=l(g,C,f,p,m[d+2],23,-995338651),p=h(p,g,C,f,m[d+0],6,-198630844),f=h(f,p,g,C,m[d+7],10,1126891415),C=h(C,f,p,g,m[d+14],15,-1416354905),g=h(g,C,f,p,m[d+5],21,-57434055),p=h(p,g,C,f,m[d+12],6,1700485571),f=h(f,p,g,C,m[d+3],10,-1894986606),C=h(C,f,p,g,m[d+10],15,-1051523),g=h(g,C,f,p,m[d+1],21,-2054922799),p=h(p,g,C,f,m[d+8],6,1873313359),f=h(f,p,g,C,m[d+15],10,-30611744),C=h(C,f,p,g,m[d+6],15,-1560198380),g=h(g,C,f,p,m[d+13],21,1309151649),p=h(p,g,C,f,m[d+4],6,-145523070),f=h(f,p,g,C,m[d+11],10,-1120210379),C=h(C,f,p,g,m[d+2],15,718787259),g=h(g,C,f,p,m[d+9],21,-343485551),p=i(p,F),g=i(g,p3),C=i(C,J3),f=i(f,E5);return t(p)+t(g)+t(C)+t(f)}function f6(n,e){if(!n.file_path.startsWith("theme/sections/"))return!1;if(n.file_path.endsWith(".liquid")){if(!e.get(n.file_path.replace(/\.liquid$/,".json")))return!0}else if(n.file_path.endsWith(".json"))return!0;return!1}async function d5(n,e){let t=[];for(let i of n.values())if(f6(i,n)){let r=await e(i);r&&t.push({...r,id:String(i.name||"").split(".").pop()??"",...r&&{presets:w6(r)}})}return t}function w6(n){return Array.isArray(n?.presets)?n.presets.map(e=>({label:e.label,settings:{...n.fields?.reduce((t,i)=>(i.id&&i.default!==void 0&&(t[i.id]=i.default),t),{}),...e.settings||void 0},blocks:e.blocks?.map(t=>{let i=n.blocks?.find(r=>r.type===t.type);return i?{...t,settings:{...i.fields.reduce((r,o)=>(o.id&&o.default!==void 0&&(r[o.id]=o.default),r),{}),...t.settings||void 0}}:t})})):[]}async function h5(n,e){let t=Array.from(n.values()),i=t.filter(a=>a.file_path.endsWith(".json")&&!n.has(a.file_path.replace(/\.json$/,".liquid"))),r=async a=>{let s=t.find(h=>{if(!h.file_path.endsWith(`/${a}.json`)&&!h.file_path.endsWith(`/${a}.liquid`))return!1;if(h.file_path.endsWith(".liquid")){if(!n.get(h.file_path.replace(/\.liquid$/,".json")))return!0}else if(h.file_path.endsWith(".json"))return!0;return!1});return s?{...await e(s),id:String(s.name||"").split(".").pop()}:void 0},o=[];for(let a of i){let s;try{s=JSON.parse(a.file_data),s?.name&&(s.label=s.name,delete s.name)}catch{}if(s?.type){let l=await y4(s,r);o.push({...s,id:String(a.name||"").split(".").pop(),sectionConfigs:l})}}return o}async function y4(n,e){let t=Array.isArray(n?.order)?n.order:Object.keys(n?.sections||{}),i=[];for(let r of t){let o=n.sections[r];if(!o)continue;let a=await e(o.type)||{id:o.type,label:o.type,tag:"div",class:"",fields:[],blocks:[]},s=n.id?`page__${n.id}__${r}`:a.id,h=(Array.isArray(o.block_order)?o.block_order:Object.keys(o.blocks||{})).map(d=>o.blocks?.[d]).filter(Boolean),u={section:{id:s,...o,blocks:h}};i.push({id:s,section:{id:s,...o},schema:a,settings:u,tag:a.tag||"div",class:a.class})}return i}function y6(n){return String(n)==="[object Array]"}function U(n){let e=typeof n;return n!==null&&(e==="object"||e==="function")}function f5(n){let e=new TextEncoder().encode(n),t="";for(let i=0;i<e.length;i+=3){let r=Array.from(e.slice(i,i+3));t+=btoa(String.fromCharCode(...r))}return t}function r5(n,e="id"){return(0,j4.reduce)(n,(t,i)=>(t[String(i[e])]=i,t),{})}function S6(n){let e=n.toUpperCase().split(/-|_/),t=e.shift(),i=e.pop(),r="";return i&&(r=i),i||(r=W4[t.toLowerCase()]||""),r.toLowerCase()}function w5(n,e){if(!(typeof n!="object"||n===null))for(let[t,i]of Object.entries(n))e(t,n)!==!1&&typeof i=="object"&&i!==null&&w5(i,e)}function k6(n){let e=new Set;return w5(n,(t,i)=>{if(typeof i=="object"&&i!==null){if(e.has(i))return!1;e.add(i)}return!0}),Array.from(e)}function L6(n){if(!n)return n;let e=new WeakSet;return JSON.parse(JSON.stringify(n,(t,i)=>{if(typeof i=="object"&&i!==null){if(e.has(i))return JSON.parse(JSON.stringify(i));e.add(i)}return i}))}function st(n){if(!(typeof n!="object"||n===null))for(let[e,t]of Object.entries(n))e==="_swell"&&"_swell"in n?n[e]=void 0:st(t)}function ot(n){if(n!==void 0)return n instanceof L?"SwellStorefrontCollection":n instanceof A?"SwellStorefrontRecord":n instanceof y?"ShopifyResource":n instanceof _?"StorefrontResource":"promise"}async function I(n,e=!0,t=!1){let i=n,r=e;try{if(v(n)&&(r=!1,i=await n),n instanceof _&&(r=!1,i=await I(n.resolve(),e,t)),Array.isArray(i)){let o=await Promise.all(i.map(a=>I(a,e,t)));if(i=o,!o.some(a=>a!==void 0))return e?[]:void 0}else if(typeof i=="object"&&i!==null&&(!("_swell"in i)||!i._swell)){let o={};for(let[a,s]of Object.entries(i)){if(!e&&(v(s)||s instanceof _||s instanceof y)){o[a]={_type:ot(s),...t?{value:await I(s,r,t)}:void 0};continue}if(s instanceof _&&t){o[a]={_type:ot(s),value:await I(s,r,t)};continue}o[a]=await I(s,r,t)}return!e&&Object.keys(o).length===0?void 0:o}}catch(o){return console.error(o),n}return i}function O(n){return at.default.stringify({...n,sections:void 0,section_id:void 0},{encodeValuesOnly:!0,arrayFormat:"repeat"})}function c5(n,e){return n=Array.isArray(n)?n.join(" "):n,n.split("}").map(r=>{let[o,a]=r.split("{");return!o||!a?"":`${o.split(",").map(l=>`#${e} ${l.trim()}`).join(", ")} {${a}}`}).join(" ")}function A3(n,e){return Object.entries(n).reduce((t,[i,r])=>(r?.value!==null&&r?.value!==void 0&&(t[i]=r?.value),t),(0,j4.cloneDeep)(e))}var B3="ContentSections";function u3(n){return`SectionGroup_${n}`}var b6="THEME",A6=Object.freeze({ttl:1e3*60*60*24}),lt="__NULL__",K=class{client;constructor(e){e=e||{},e.stores=e.stores||T6(e.kvStore),this.client=(0,dt.createCache)({...A6,...e})}async fetch(e,t){return this.client.wrap(e,t)}async fetchSWR(e,t){let i=await this.client.get(e),r=Promise.resolve().then(()=>t()).then(async a=>{let s=a==null,l=await I(a);return await this.client.set(e,s?lt:l),a});return i!==null?i===lt?null:i:await r}async get(e){return this.client.get(e)}async set(e,t,i){return this.client.set(e,t,i)}async flush(e){await this.client.del(e)}async flushAll(){await this.client.clear()}};function T6(n){let e=[];return n?e.push(new y5.Keyv({namespace:b6,store:new Q3(n)})):e.push(new y5.Keyv),e}var _6=24*60*60*1e3,M6=30*1e3,$3=class extends K{constructor(e){super({ttl:e?.kvStore?_6:M6,...e})}};var ht=require("keyv");var E6=5*1e3,U3=class extends K{constructor(e){super({stores:P6(),ttl:E6,...e})}};function P6(){return[new ht.Keyv({serialize:void 0,deserialize:void 0})]}var v6=90*24*60*60*1e3,F3=class extends K{constructor(e){super({ttl:v6,...e})}};var ct="https://api.schema.io",ut=new Map,mt=new Map,S5=class n{url;headers;swellHeaders;queryParams;workerEnv;config;shopifyCompatibilityConfig;backend;storefront;storefrontContext;instanceId="";isPreview=!1;isEditor=!1;sentResponse=!1;storefront_url;constructor(e){let{url:t,config:i,shopifyCompatibilityConfig:r,headers:o,swellHeaders:a,serverHeaders:s,queryParams:l,workerEnv:h,...u}=e;if(this.url=t instanceof URL?t:new URL(t||""),this.config=i,this.shopifyCompatibilityConfig=r,this.queryParams=n.formatQueryParams(l||this.url.searchParams),this.workerEnv=h,console.log(`KV cache: ${this.workerEnv?.THEME?"enabled":"disabled"}`),s){let{headers:d,swellHeaders:m}=n.formatHeaders(s);this.headers=d,this.swellHeaders=m,this.backend=new Z4({storeId:m["store-id"],accessToken:m["access-token"],apiHost:m["api-host"]}),this.storefront=this.getStorefrontInstance({...e,headers:d,swellHeaders:m}),this.instanceId=["store-id","environment-id","deployment-mode","theme-id","theme-branch-id"].map(p=>m[p]||"0").join(":"),this.isEditor=u.isEditor??m["deployment-mode"]==="editor",this.isPreview=this.isEditor||m["deployment-mode"]==="preview"}else if(o&&a)Object.assign(this,u),this.headers=o,this.swellHeaders=a,this.storefront=this.getStorefrontInstance(e);else throw new Error("Swell client requires `serverHeaders` when initialized on the server-side, or `headers` and `swellHeaders` when initialized on the client-side.");this.storefrontContext=this.initStorefrontContext()}static formatHeaders(e){let t={},i={};e instanceof Headers?e.forEach((r,o)=>{t[o]=r}):e&&(t=e);for(let[r,o]of Object.entries(t))r.startsWith("swell-")&&o&&(i[r.replace("swell-","")]=o);return{headers:t,swellHeaders:i}}static formatQueryParams(e){let t={};return e instanceof URLSearchParams?t=gt.default.parse(e.toString()):e&&(t=e),t}async getCachedResource(e,t,i){let r=this.swellHeaders["request-id"],o=pt(e,[r,t]);return this.getResourceCache().fetch(o,i)}async getAppSettings(){return await this.get("/:storefronts/{id}/configs/settings/values",{id:this.swellHeaders["storefront-id"]})||{}}async getStorefrontSettings(e=!1){try{let{settings:t,menus:i,payments:r,subscriptions:o,session:a}=await this.storefront.request("get","/settings/all",void 0,void 0,{force:e}),s=this.storefront.settings;s.localizedState={},s.set({value:t}),s.set({model:"menus",value:i}),s.set({model:"payments",value:r}),s.set({model:"subscriptions",value:o}),s.set({model:"session",value:a})}catch(t){t instanceof Error&&(t.message=`Swell: unable to load settings (${t.message})`),console.error(t)}return this.storefront.settings.get()}getStorefrontMenus(){let e=this.storefront.settings.getState("/settings/menus","menuState");return!e||v(e)?[]:e}getStorefrontLocalization(){let e=this.storefront.locale.selected(),t=this.storefront.currency.selected();return!e||v(e)?{locale:"en-US",currency:"USD"}:{locale:e,currency:t}}async get(...e){return this.backend?.get(...e)}async put(...e){return this.backend?.put(...e)}async post(...e){return this.backend?.post(...e)}async delete(...e){return this.backend?.delete(...e)}getStorefrontInstance(e){let{swellHeaders:t,getCookie:i,setCookie:r,storefrontSettingStates:o}=e;if(!t)throw new Error("Swell headers are required");let a=t["store-id"],s=t["public-key"];if(!a||!s)throw new Error('Missing required headers: "swell-store-id" and "swell-public-key"');let l=Ct.default.create(a,s,{url:t["admin-url"],vaultUrl:t["vault-url"],getCookie:i,setCookie:r&&((h,u,d)=>r(h,u,d,this)),headers:{"Swell-Store-id":a,"Swell-Storefront-Id":t["storefront-id"]}});return o&&Object.assign(l.settings,o),l.request=this.getCacheableStorefrontRequestHandler(l),l}initStorefrontContext(){let e={};if(this.swellHeaders?.["storefront-context"])try{e=JSON.parse(decodeURIComponent(this.swellHeaders["storefront-context"]))}catch{console.error("Failed to parse swell-storefront-context. Ignoring...")}return e}isStorefrontRequestCacheable(e,t,i){if(i?.force)return!1;if(e==="get")switch(t.split("/")[1]){case"products":case"categories":case"content":case"settings":return!0;default:return!1}return!1}getCacheableStorefrontRequestHandler(e){let t=e.request;return(i,r,o,a,s)=>{if(this.isStorefrontRequestCacheable(i,r,s))return this.getRequestCache().fetchSWR(pt("request",[i,r,o,a,s]),()=>t(i,r,o,a,s));switch(i){case"delete":case"post":case"put":{let l=r.split("/")[1];delete this.storefrontContext[l];break}default:}return t(i,r,o,a,s)}}getResourceCache(){let e=ut.get(this.instanceId);return e||(e=new U3({kvStore:this.workerEnv?.THEME}),ut.set(this.instanceId,e)),e}getRequestCache(){let e=mt.get(this.instanceId);return e||(e=new $3({kvStore:this.workerEnv?.THEME}),mt.set(this.instanceId,e)),e}};function pt(n,e){let t=n;return Array.isArray(e)&&e.length>0&&(t+=`_${JSON.stringify(e)}`),t.length>512&&(t=`${t.slice(0,480)}${a3(t)}`),t}var Z4=class{apiHost=ct;apiAuth="";constructor({storeId:e,accessToken:t,apiHost:i}){this.apiHost=i||ct,this.apiAuth=f5(`${e}:${t}`)}async makeRequest(e,t,i){let r={method:e,headers:{Authorization:`Basic ${this.apiAuth}`,"User-Agent":"swell-functions/1.0","Content-Type":"application/json"}},o="";if(i)try{e==="GET"?o=`?${this.stringifyQuery(i)}`:(r.body=JSON.stringify(i),r.headers["Content-Length"]=String(r.body.length))}catch{throw new Error(`Error serializing data: ${i}`)}let a=String(t).startsWith("/")?t.substring(1):t,s=`${this.apiHost}/${a}${o}`,l=await fetch(s,r),h=await l.text(),u;try{u=JSON.parse(h)}catch{u=String(h||"").trim()}if(l.status>299)throw new K3(u,{status:l.status,method:e,endpointUrl:a});if(e!=="GET"&&u?.errors)throw new K3(u.errors,{status:400,method:e,endpointUrl:a});return u}stringifyQuery(e,t){let i=[];for(let[r,o]of Object.entries(e)){let a=t?`${t}[${r}]`:r,l=o!==null&&typeof o=="object"?this.stringifyQuery(o,a):`${encodeURIComponent(a)}=${o===null?"":encodeURIComponent(o)}`;i.push(l)}return i.join("&")}async get(e,t){return this.makeRequest("GET",e,t)}async put(e,t){return this.makeRequest("PUT",e,t)}async post(e,t){return this.makeRequest("POST",e,t)}async delete(e,t){return this.makeRequest("DELETE",e,t)}},K3=class extends Error{status=200;constructor(e,t={}){let i;typeof e=="string"?i=e:i=JSON.stringify(e,null,2),t.method&&t.endpointUrl&&(i=`${t.method} /${t.endpointUrl}
949
949
  ${i}`),super(i),this.name="SwellError",this.status=t.status||500}};function k5(n,e){return new L(n,"products",e)}function R6(n,e,t){return new A(n,"products",e,t)}function D6(n,{search:e,filter:t,sort:i}){return new L(n,"products",{search:e,filter:t,sort:i})}function x6(n,e){return new L(n,"categories",e)}function ft(n,e,t){return new A(n,"categories",e,t)}async function j6(n,e,t){let i=ft(n,e,t),r=await i.id;return i.products=k5(n,{category:r}),i}function Z6(n,e){return n.getCachedResource(`content-model-${e}`,[],()=>n.get("/:content/{name}",{name:e,public:!0,"storefront.enabled":!0}))}async function wt(n,e,t){return new L(n,`content/${e}`,t)}async function L5(n,e,t,i){return new A(n,`content/${e}`,t,i)}async function F6(n,e,t){return L5(n,"pages",e,t)}async function N6(n,e){return wt(n,"blogs",e)}async function I6(n,e,t){return L5(n,"blogs",e,t)}var z=require("lodash-es");async function yt(n,e){let t=[];for(let i of e)if(B6(i,e)){let r=await A5(n,i);r&&t.push({...r,id:String(i.name||"").split(".").pop()})}return t}async function b5(n,e,t=H6){let i=Array.isArray(e.order)?e.order:Object.keys(e.sections||{}),r=[];for(let o of i){let a=e.sections[o],s=await t(n,a.type);if(!s)continue;let l={...s,id:o},h=e.id?`page__${e.id}__${o}`:l.id,d=(Array.isArray(a.block_order)?a.block_order:Object.keys(a.blocks||{})).map(p=>a.blocks?.[p]).filter(Boolean),m={section:{id:h,...a,blocks:d}};r.push({id:h,settings:m,section:{id:h,...a},tag:l.tag||"div",class:l.class,schema:l})}return r}async function St(n,e){let t=e.filter(o=>q6(o,e)),i=async(o,a)=>{let s=e.find(h=>G6(h,e,a)),l=await A5(o,s);if(l)return{...l,id:String(s?.name||"").split(".").pop()}},r=[];for(let o of t){let a;try{a=JSON.parse(o.file_data),a?.name&&(a.label=a.name,delete a.name)}catch{}if(a?.type){let s=await b5(n,a,i);r.push({...a,id:String(o.name||"").split(".").pop(),sectionConfigs:s})}}return r}async function H6(n,e){let t=await n.getThemeTemplateConfigByType("sections",e);return A5(n,t)}async function A5(n,e){let t;if(e?.file_path?.endsWith(".liquid")){if(n.shopifyCompatibility){n.liquidSwell.lastSchema=void 0,await n.renderTemplate(e);let i=n.liquidSwell.lastSchema;i&&(t=n.shopifyCompatibility.getSectionConfigSchema(i))}}else if(e?.file_data)try{t=JSON.parse(e?.file_data)||void 0}catch{}return t}function B6(n,e){return n.file_path.startsWith("theme/sections/")?kt(n,e):!1}function q6(n,e){if(!n.file_path.startsWith("theme/sections/")||!n.file_path.endsWith(".json"))return!1;let t=n.file_path.replace(/\.json$/,".liquid");return!e.some(i=>i.file_path===t)}function G6(n,e,t){return!n.file_path.endsWith(`/${t}.json`)&&!n.file_path.endsWith(`/${t}.liquid`)?!1:kt(n,e)}function kt(n,e){if(n.file_path.endsWith(".liquid")){let t=n.file_path.replace(/\.liquid$/,".json");if(!e.find(r=>r.file_path===t))return!0}else if(n.file_path.endsWith(".json"))return!0;return!1}function z3(n){let e={description:n.description,defaultValue:n.default,isLabelHidden:!0,layout:"column",params:n},t;switch(n?.type){case"text":case"short_text":t={type:"swell_short_text"};break;case"paragraph":t={type:"swell_paragraph"};break;case"textarea":case"long_text":case"liquid":t={type:"swell_long_text"};break;case"basic_html":case"rich_text":case"rich_html":case"markdown":t={type:"swell_editor"};break;case"number":t={type:"swell_number"};break;case"select":t={type:"swell_select"};break;case"radio":t={type:"swell_radio"};break;case"checkbox":t={type:"swell_boolean"};break;case"color":t={type:"swell_color"};break;case"color_scheme":t={type:"swell_color_scheme"};break;case"color_scheme_group":t={type:"swell_color_scheme_group"};break;case"font":t={type:"swell_font"};break;case"header":t={type:"swell_header"};break;case"icon":t={type:"swell_menu"};break;case"menu":t={type:"swell_menu"};break;case"url":t={type:"swell_url"};break;case"lookup":case"generic_lookup":case"product_lookup":case"category_lookup":case"customer_lookup":t={type:"swell_lookup"};break;case"image":t={type:"swell_image",defaultValue:""};break;case"asset":case"document":case"video":t={type:"swell_file"};break;default:t={type:"swell_short_text"};break}return{...e,...t}}function q(n,e,t){if(t===void 0)return null;switch(n?.find(r=>r.id===e)?.type){default:return t}}function Lt(n,e){return e?.reduce((t,i)=>{for(let r of i.fields||[])r?.id&&(t[r.id]=n[r.id]);return t},{})}function bt(n,e){if(e)return{settings:e.fields.reduce((t,i)=>(i?.id&&(t[i.id]=n[i.id]),t),{$locale:n.$locale}),id:e.id,blocks:n.Blocks?.filter(t=>!!t.props.compiled?._component).map(t=>{let i=t.props.compiled.props,r=t.props.compiled._component.split("__")[2],o=e.blocks?.find(a=>a.type===r);return{type:r,settings:o?.fields?.reduce((a,s)=>(s?.id&&(a[s.id]=i[s.id]),a),{$locale:i.$locale})||{}}})}}var F4=!0;async function V6(n,e,t){let i=await Tt(n,t),r=await yt(n,e),o=await b5(n,i),a=await St(n,e);return{pageTemplate:i,allSections:r,pageSections:o,layoutSectionGroups:a}}async function Tt(n,e){let t=null;if(t=await n.getThemeTemplateConfigByType("templates",e),t)return t.file_path.endsWith(".liquid")?t.file_data:JSON.parse(t.file_data)}function O6(n,e){return n.reduce((t,i)=>(i.enabled_on?N4(i.enabled_on,"groups",e)&&t.push(String(i.id)):i.disabled_on?N4(i.disabled_on,"groups",e)||t.push(String(i.id)):i.id===e&&t.push(String(i.id)),t),[])}function $6(n,e){return e.map(t=>({prop:u3(t.id),type:"component-collection",label:t.label,required:!0,noInline:F4,accepts:O6(n,t.type)}))}function N4(n,e,t){return!!(n.templates==="*"||n[e]?.includes(t))}function U6(n,e,t){return n.reduce((i,r)=>(r.enabled_on?N4(r.enabled_on,"templates",t)&&i.push(String(r.id)):r.disabled_on?N4(r.disabled_on,"templates",t)||i.push(String(r.id)):e.some(({type:o})=>o===r.id)||i.push(String(r.id)),i),[])}function K6(n){return(n?.configs?.editor?.settings??[]).reduce((e,t)=>{for(let i of t.fields||[])e.push({prop:i.id,label:i.label,optional:!0,group:t.label,...z3(i)});return e},[])}function z6(n){let e=[];for(let t of n){let i=Array.isArray(t.blocks)&&t.blocks.length>0;e.push({id:t.id,label:t.label,schema:[...(t.fields||[]).reduce((r,o)=>(o.id&&o.type&&r.push({prop:o.id,label:o.label,optional:!0,...z3(o)}),r),[]),...i?[{prop:"Blocks",type:"component-collection",required:!0,noInline:F4,accepts:(t.blocks||[]).map(r=>`Block__${t.id}__${r.type}`),defaultValue:t.presets?.reduce((r,o,a)=>o.blocks?o.blocks.reduce((s,l)=>{let h=t.blocks?.find(({type:u})=>u===l.type);return h&&s.push({_id:`Block__${t.id}__${l.type}__preset_${a}`,_component:`Block__${t.id}__${l.type}`,...(0,z.reduce)(h.fields,(u,d)=>(d.id&&(u[d.id]=q(h.fields,d.id,d.default)),u),{})}),s},r):r,[]),placeholderAppearance:{height:50,label:"Add block",aspectRatio:1}}]:[],{prop:"custom_css",type:"swell_css",label:"Custom CSS",description:"Add custom CSS for this section",layout:"column",isLabelHidden:!0,params:{rows:5,placeholder:"Enter custom CSS..."}},{prop:"$locale",type:"swell_locale",isLabelHidden:!0}],styles:()=>({styled:{Root:{}}})}),i&&e.push(...(t.blocks||[]).map(r=>({id:`Block__${t.id}__${r.type}`,label:r.label,schema:(r.fields||[]).reduce((o,a)=>(a.id&&a.type&&o.push({prop:a.id,label:a.label,optional:!0,...z3(a)}),o),[{prop:"$locale",type:"swell_locale",isLabelHidden:!0}]),styles:()=>({styled:{Root:{}}})})))}return e}function W6(n){return n?.configs?.editor?.settings?.reduce((e,t)=>{for(let i of t.fields||[])i?.id&&(e[i.id]=q(t.fields,i.id,n?.configs?.theme?.[i.id]));return e},{})}function J6(n){return n.reduce((e,t)=>(e[u3(t.id)]=t.sectionConfigs.map(({section:i,settings:r,schema:o})=>({_id:`SectionGroup__${i.type}_${At()}`,_component:`${i.type}`,...(0,z.reduce)(r?.section.settings,(a,s,l)=>(a[l]=q(o?.fields,l,s),a),{}),custom_css:r?.section.custom_css||"",...r?.section.blocks?{Blocks:r.section.blocks.map(a=>({_id:`Block__${i.type}__${a.type}_${At()}`,_component:`Block__${i.type}__${a.type}`,...(0,z.reduce)(a.settings,(s,l,h)=>(s[h]=q(o?.blocks?.find(({type:u})=>u===a.type)?.fields,h,l),s),{})}))}:void 0})),e),{})}function Y6(n){return(n||"").replaceAll("/","_")}function Q6(n){let e=[];for(let t of n)t.presets&&e.push(...t.presets.map((i,r)=>({id:`${t.id}__preset_${r}`,entry:{_id:`${t.id}__preset_${r}`,_component:t.id,custom_css:i.settings?.custom_css||"",...(0,z.reduce)(t.fields,(o,a)=>(a.id&&(o[a.id]=q(t.fields,a.id,i.settings?.[a.id])),o),{}),Blocks:i.blocks?.reduce((o,a)=>{let s=t.blocks?.find(({type:l})=>l===a.type);return s&&o.push({_id:`Block__${t.id}__${a.type}__preset_${r}`,_component:`Block__${t.id}__${a.type}`,...(0,z.reduce)(s.fields,(l,h)=>(h.id&&(l[h.id]=q(s.fields,h.id,a.settings?.[h.id])),l),{})}),o},[])}}))),t.blocks&&e.push(...t.blocks.map(i=>({id:`Block__${t.id}__${i.type}`,entry:{_id:`Block__${t.id}__${i.type}`,_component:`Block__${t.id}__${i.type}`,...(0,z.reduce)(i.fields,(r,o)=>(o.id&&o.default!==void 0&&(r[o.id]=q(i.fields,o.id,o.default)),r),{})}})));return e.filter(t=>Object.keys(t.entry).some(i=>i!=="_id"&&i!=="_component"))}function X6(n,e,t,i,r){let o={id:"swell_global",label:"Theme settings",schema:[{prop:"swell_page",type:"component",required:!0,accepts:["swell_page"],isNonChangable:!0,noInline:F4},{prop:"$locale",type:"swell_locale",isLabelHidden:!0},...K6(n)],groups:(n?.configs?.editor?.settings??[]).map(u=>({key:u.label,label:u.label,collapsable:!0,collapsed:!0})),styles:()=>({styled:{Root:{}}})},a={id:"swell_page",label:"Page settings",schema:[{prop:B3,type:"component-collection",required:!0,noInline:F4,accepts:U6(e,i,r),placeholderAppearance:{height:250,label:"Add section",aspectRatio:1}},...$6(e,i)],allowSave:!0,styles:()=>({styled:{Root:{}}})},s=[o,a,...z6(e)],l=o.schema.find(u=>u.prop==="color_schemes");if(l){let u=l.params,{fields:d=[]}=u;s.push({id:"swell_color_scheme_group",label:"Swell color scheme",schema:d.map(m=>({prop:m.id,label:m.label,optional:!0,...z3({...m,type:m.id==="background_gradient"?"text":m.type})})),styles(){return{styled:{Root:{}}}}})}let h=[{id:"swell_global",entry:{_id:"swell_global",_component:"swell_global",...W6(n),$locale:n?.configs?.theme?.$locale,swell_page:[{_id:"swell_page",_component:"swell_page",ContentSections:t.map(({section:u,settings:d,schema:m})=>({_id:Y6(u.id),_component:`${u.type}`,custom_css:d?.section?.custom_css||"",disabled:d?.section?.disabled||!1,$locale:d?.section?.settings?.$locale,...(0,z.reduce)(m?.fields,(p,g)=>(g?.id&&(p[g.id]=q(m?.fields,g.id,d?.section?.settings?.[g.id])),p),{}),...u?.blocks?{Blocks:Object.entries(u.blocks).map(([p,g])=>({_id:`Block__${p}__${g.type}_${Math.random()}`,_component:`Block__${u.type}__${g.type}`,disabled:g.disabled||!1,...(0,z.reduce)(g.settings,(C,f,F)=>(C[F]=q(m?.blocks?.find(({type:p3})=>p3===g.type)?.fields,F,f),C),{})}))}:void 0})),...J6(i)}]}},{id:"swell_page",entry:{_id:"swell_page",_component:"swell_page"}},...Q6(e)];return{easyblocksConfig:{components:s,templates:h,backend:_t(),hideCloseButton:!0,allowSave:!0,readOnly:!1,locales:[{code:"en-US",isDefault:!0}],types:{swell_css:{type:"inline",widget:{id:"SwellCSS"}},swell_locale:{type:"inline",widget:{id:"SwellLocale"}},swell_boolean:{type:"inline",widget:{id:"SwellBoolean"}},swell_color:{type:"inline",widget:{id:"SwellColor"}},swell_color_scheme:{type:"inline",widget:{id:"SwellColorScheme"}},swell_color_scheme_group:{type:"inline",widget:{id:"SwellColorSchemeGroup"}},swell_font:{type:"inline",widget:{id:"SwellFont"}},swell_header:{type:"inline",widget:{id:"SwellHeader"}},swell_icon:{type:"inline",widget:{id:"SwellIcon"}},swell_lookup:{type:"inline",widget:{id:"SwellLookup"}},swell_menu:{type:"inline",widget:{id:"SwellMenu"}},swell_url:{type:"inline",widget:{id:"SwellUrl"}},swell_number:{type:"inline",widget:{id:"SwellNumber"}},swell_select:{type:"inline",widget:{id:"SwellSelect"}},swell_radio:{type:"inline",widget:{id:"SwellRadio"}},swell_short_text:{type:"inline",widget:{id:"SwellText"}},swell_long_text:{type:"inline",widget:{id:"SwellTextarea"}},swell_paragraph:{type:"inline",widget:{id:"SwellParagraph"}},swell_editor:{type:"inline",widget:{id:"SwellEditor"}},swell_file:{type:"inline",widget:{id:"SwellFile"}},swell_image:{type:"inline",widget:{id:"SwellImage"}}},tokens:{colors:[],fonts:[]}}}}function ei(n,e,t){let i=n.reduce((a,s)=>(a[`${s.id}`]=t("pageSection",s),a),{}),r=e.reduce((a,s)=>(a[u3(s.id)]=t("layoutSectionGroup",s),a),{}),o=n.reduce((a,s)=>{if(s.blocks)for(let l of s.blocks){let h=`Block__${s.id}__${l.type}`;a[h]=t("block",{section:s,block:l})}return a},{});return{...i,...r,...o,swell_page:t("root"),swell_global:t("global")}}function _t(){return{documents:{get({id:e}){console.log("Easyblocks backend documents.get()",e);let t={id:e,version:1,entry:{_id:"page",_component:"swell_page"}};return Promise.resolve(t)},create(e){return console.log("Easyblocks backend documents.create()",e),Promise.resolve({})},update(e){return console.log("Easyblocks backend documents.update()",e),Promise.resolve({})}},templates:{get(e){return console.log("Easyblocks backend templates.get()",e),Promise.resolve({})},getAll(){return console.log("Easyblocks backend get templates.getAll()"),Promise.resolve([])},create(e){return console.log("Easyblocks backend get templates.create()",e),Promise.resolve({})},update(e){return console.log("Easyblocks backend get templates.update()",e),Promise.resolve({})},delete(e){return console.log("Easyblocks backend get templates.delete()",e),Promise.resolve()}}}}function At(){return(Math.random()+1).toString(36).substring(7)}function I4(n,e){let i=n?.storefront?.options?.getCookie;return typeof i=="function"&&i(e)||""}var T5=class extends A{constructor(e,t,i={}){super(e,"",t,i,async function(){let r=await Mt(e,this._resourceName,t,i);return W3(this._resourceName,r,e,"",t,i)})}},_5=class extends W{constructor(e,t,i={}){super(e,"",async function(){let r=await Mt(e,this._resourceName,t,i);return W3(this._resourceName,r,e,"",t,i)})}};async function Mt(n,e,t,i){let r=new URLSearchParams({...t&&{slug:t},...i&&{query:JSON.stringify(i)}}),o=r.size>0?`?${r}`:"",a=I4(n,"swell-session"),s=I4(n,"swell-data")||{};return(await fetch(`${n.storefront_url}/resources/${e}.json/${o}`,{headers:{"X-Session":a,"Swell-Data":JSON.stringify(s)}})).json()}function W3(n,e,t,i="",r,o){let a={};for(let[s,l]of Object.entries(e)){let h=i+`${i===""?"":"/"}${s}`,u;switch(l?._type){case"SwellStorefrontCollection":u=ni;break;case"SwellStorefrontRecord":u=ii;break;case"createStorefrontResource":u=ti;break;default:break}a[s]=u?u(n,t,h,r,o):l}return a}function ti(n,e,t,i,r){return new _(async function(){let o=await M5(e,n,t,i,r);return W3(n,o,e,t,i,r)})}function ii(n,e,t,i,r){let o=Et(i,r);return new A(e,n,t,o,async function(){let a=await M5(e,n,t,i,r);return W3(n,a,e,t,i,r)})}function ni(n,e,t,i,r){let o=Et(i,r);return new L(e,n,o,async function(){let a=await M5(e,n,t,i,r);return W3(n,a,e,t,i,r)})}async function M5(n,e,t,i,r){let o=new URLSearchParams({path:t,...i&&{slug:i},...r&&{query:JSON.stringify(r)}}),a=o.size>0?`?${o}`:"",s=I4(n,"swell-session"),l=I4(n,"swell-data")||{};return(await fetch(`${n.storefront_url}/resources/${e}.json${a}`,{headers:{"X-Session":s,"Swell-Data":JSON.stringify(l)}})).json()}function Et(n,e){return{...n&&{slug:n},...e}}0&&(module.exports={DEFAULT_QUERY_PAGE_LIMIT,DeferredShopifyResource,FILE_DATA_INCLUDE_QUERY,GEO_DATA,LANG_TO_COUNTRY_CODES,LiquidSwell,MAX_QUERY_PAGE_LIMIT,MockRecordResource,MockRecordSingleton,PageError,PageNotFound,SECTION_GROUP_CONTENT,ShopifyArticle,ShopifyBlog,ShopifyCart,ShopifyCollection,ShopifyCollections,ShopifyCompatibility,ShopifyCustomer,ShopifyFont,ShopifyForm,ShopifyLink,ShopifyLocalization,ShopifyOrder,ShopifyPage,ShopifyPaginate,ShopifyPredictiveSearch,ShopifyProduct,ShopifyRecommendations,ShopifyResource,ShopifySearch,ShopifyVariant,StorefrontResource,Swell,SwellBackendAPI,SwellError,SwellStorefrontCollection,SwellStorefrontPagination,SwellStorefrontRecord,SwellStorefrontResource,SwellStorefrontSingleton,SwellTheme,ThemeColor,ThemeFont,ThemeForm,ThemeFormErrors,adaptShopifyFontData,adaptShopifyFormData,adaptShopifyMenuData,arrayToObject,deferMenuItemUrlAndResource,dehydrateSwellRefsInStorefrontResources,extractSettingsFromForm,findCircularReferences,findEditorSetting,findThemeSettingsByType,fontMap,forEachKeyDeep,getAllSections,getBlog,getBlogs,getCategories,getCategory,getCategoryWithProducts,getContentEntry,getContentList,getContentModel,getCountryCodeFromLocale,getEasyblocksBackend,getEasyblocksComponentDefinitions,getEasyblocksPagePropsWithConfigs,getEasyblocksPageTemplate,getEasyblocksPropsFromThemeConfigs,getLayoutSectionGroups,getMenuItemStorefrontUrl,getMenuItemUrlAndResource,getMenuItemValueId,getPage,getPageSections,getProduct,getProducts,getProductsFiltered,getSectionGroupProp,getSectionSettingsFromProps,getThemeSettingsFromProps,isArray,isObject,md5,removeCircularReferences,resolveAsyncResources,resolveLookupCollection,resolveMenuItemUrlAndResource,resolveMenuItems,resolveMenuSettings,resolveSectionSettings,resolveThemeSettings,scopeCustomCSS,stringifyQueryParams,systemFonts,toBase64});
950
950
  //# sourceMappingURL=index.cjs.map