@swell/apps-sdk 1.0.114 → 1.0.115

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 x4(this,e)}getFontData(e){return j4(this,e)}getFormData(e){return Z4(this,e)}getFontFromShopifySetting(e){return dt(e)}getThemeConfig(e){return st(e)}getPresetsConfig(e){return lt(e)}getEditorConfig(e){let{locale:t}=this.swell.getStorefrontLocalization();return at(e,t)}getSectionConfigSchema(e){let{locale:t}=this.swell.getStorefrontLocalization();return ct(e,t)}getSectionGroup(e){let{locale:t}=this.swell.getStorefrontLocalization();return ht(e,t)}async getEditorLocaleConfig(e,t){if(this.editorLocaleConfig?.[t])return this.editorLocaleConfig[t];let i=await e.getLocaleConfig(t,".schema.json");return this.editorLocaleConfig={[t]:i},i}async renderSchemaTranslations(e,t,i="en"){if(!(0,N4.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,N4.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 _3(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,c]=s.join(".").split("/");switch(l==="js"&&(i="json"),h){case"account":switch(u){case"order":t="account/order",r.id=c;break;case"register":t="account/login";break;default:break}break;case"blog":u&&(t="blogs/category",r.category=u),c&&(t="blogs/blog",r.slug=c);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 C=this.getPageRouteUrl(t);if(C)return C.replace(/:(\w+)/g,(f,p)=>r[p])+(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=F4[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=F4[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,D3.cloneDeep)(e),(0,D3.cloneDeep)(t),(0,D3.cloneDeep)(i));case"toString":{if(t)return()=>e[t];break}default:break}return a[o]instanceof o3?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({})}},o3=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=D3.noop,e}).then(e=>(e=e!==void 0?e:null,this.result=e,e))),this.result}};function w(n){return new o3(n)}function Di(n){return D(n)&&(E(n)||typeof n._resolve=="function")}function ft(n){return D(n)&&typeof n._resolve=="function"}async function xi(n){return Array.isArray(n)?Promise.all(n.map(e=>ft(e)?e._resolve():e)):ft(n)?n._resolve():n}async function gt(n,e){return xi(n).then(t=>Array.isArray(n)&&Array.isArray(t)?e(...t.map(i=>i||{})):Di(t)?gt(t,e):e(t||{})).catch(t=>(console.log(t),null))}function d(n,e){return new o3(()=>gt(n,e))}function Y4(n,e,t,i,r){return d(e,o=>o[t]?._cloneWithCompatibilityResult(a=>({results:a?.results?.map(s=>{let l=i(n,s);return r&&r(l,s),l})}))||[])}var ji=j(require("json5"),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_text_pre_heading":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:null};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 wt(n,e){return e?.reduce((t,i)=>{for(let r of i.fields||[])r?.id&&(t[r.id]=n[r.id]);return t},{})}function yt(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})||{}}})}}function W3(n){return n&&n.replace(/\./g,"\xB7")}function St(n){return n&&n.replace(/·/g,".")}function Y(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),P=(b>>16)+(k>>16)+(M>>16);return P<<16|M&65535}function r(b,k){return b<<k|b>>>32-k}function o(b,k,M,P,V,U){return i(r(i(i(k,b),i(P,U)),V),M)}function a(b,k,M,P,V,U,s3){return o(k&M|~k&P,b,k,V,U,s3)}function s(b,k,M,P,V,U,s3){return o(k&P|M&~P,b,k,V,U,s3)}function l(b,k,M,P,V,U,s3){return o(k^M^P,b,k,V,U,s3)}function h(b,k,M,P,V,U,s3){return o(M^(k|~P),b,k,V,U,s3)}function u(b){var k,M=(b.length+8>>6)+1,P=new Array(M*16);for(k=0;k<M*16;k++)P[k]=0;for(k=0;k<b.length;k++)P[k>>2]|=b.charCodeAt(k)<<k%4*8;return P[k>>2]|=128<<k%4*8,P[M*16-2]=b.length*8,P}var c,C=u(""+n),m=1732584193,f=-271733879,p=-1732584194,g=271733878,O,a3,f3,Z5;for(c=0;c<C.length;c+=16)O=m,a3=f,f3=p,Z5=g,m=a(m,f,p,g,C[c+0],7,-680876936),g=a(g,m,f,p,C[c+1],12,-389564586),p=a(p,g,m,f,C[c+2],17,606105819),f=a(f,p,g,m,C[c+3],22,-1044525330),m=a(m,f,p,g,C[c+4],7,-176418897),g=a(g,m,f,p,C[c+5],12,1200080426),p=a(p,g,m,f,C[c+6],17,-1473231341),f=a(f,p,g,m,C[c+7],22,-45705983),m=a(m,f,p,g,C[c+8],7,1770035416),g=a(g,m,f,p,C[c+9],12,-1958414417),p=a(p,g,m,f,C[c+10],17,-42063),f=a(f,p,g,m,C[c+11],22,-1990404162),m=a(m,f,p,g,C[c+12],7,1804603682),g=a(g,m,f,p,C[c+13],12,-40341101),p=a(p,g,m,f,C[c+14],17,-1502002290),f=a(f,p,g,m,C[c+15],22,1236535329),m=s(m,f,p,g,C[c+1],5,-165796510),g=s(g,m,f,p,C[c+6],9,-1069501632),p=s(p,g,m,f,C[c+11],14,643717713),f=s(f,p,g,m,C[c+0],20,-373897302),m=s(m,f,p,g,C[c+5],5,-701558691),g=s(g,m,f,p,C[c+10],9,38016083),p=s(p,g,m,f,C[c+15],14,-660478335),f=s(f,p,g,m,C[c+4],20,-405537848),m=s(m,f,p,g,C[c+9],5,568446438),g=s(g,m,f,p,C[c+14],9,-1019803690),p=s(p,g,m,f,C[c+3],14,-187363961),f=s(f,p,g,m,C[c+8],20,1163531501),m=s(m,f,p,g,C[c+13],5,-1444681467),g=s(g,m,f,p,C[c+2],9,-51403784),p=s(p,g,m,f,C[c+7],14,1735328473),f=s(f,p,g,m,C[c+12],20,-1926607734),m=l(m,f,p,g,C[c+5],4,-378558),g=l(g,m,f,p,C[c+8],11,-2022574463),p=l(p,g,m,f,C[c+11],16,1839030562),f=l(f,p,g,m,C[c+14],23,-35309556),m=l(m,f,p,g,C[c+1],4,-1530992060),g=l(g,m,f,p,C[c+4],11,1272893353),p=l(p,g,m,f,C[c+7],16,-155497632),f=l(f,p,g,m,C[c+10],23,-1094730640),m=l(m,f,p,g,C[c+13],4,681279174),g=l(g,m,f,p,C[c+0],11,-358537222),p=l(p,g,m,f,C[c+3],16,-722521979),f=l(f,p,g,m,C[c+6],23,76029189),m=l(m,f,p,g,C[c+9],4,-640364487),g=l(g,m,f,p,C[c+12],11,-421815835),p=l(p,g,m,f,C[c+15],16,530742520),f=l(f,p,g,m,C[c+2],23,-995338651),m=h(m,f,p,g,C[c+0],6,-198630844),g=h(g,m,f,p,C[c+7],10,1126891415),p=h(p,g,m,f,C[c+14],15,-1416354905),f=h(f,p,g,m,C[c+5],21,-57434055),m=h(m,f,p,g,C[c+12],6,1700485571),g=h(g,m,f,p,C[c+3],10,-1894986606),p=h(p,g,m,f,C[c+10],15,-1051523),f=h(f,p,g,m,C[c+1],21,-2054922799),m=h(m,f,p,g,C[c+8],6,1873313359),g=h(g,m,f,p,C[c+15],10,-30611744),p=h(p,g,m,f,C[c+6],15,-1560198380),f=h(f,p,g,m,C[c+13],21,1309151649),m=h(m,f,p,g,C[c+4],6,-145523070),g=h(g,m,f,p,C[c+11],10,-1120210379),p=h(p,g,m,f,C[c+2],15,718787259),f=h(f,p,g,m,C[c+9],21,-343485551),m=i(m,O),f=i(f,a3),p=i(p,f3),g=i(g,Z5);return t(m)+t(f)+t(p)+t(g)}function Zi(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 w5(n,e){let t=[];for(let i of n.values())if(Zi(i,n)){let r=await e(i);r&&t.push({...r,id:String(i.name||"").split(".").pop()??"",...r&&{presets:Fi(r)}})}return t}function Fi(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 y5(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=bt.default.parse(a.file_data)}catch(l){console.warn(l)}if(s?.type){let l=await b4(s,r);o.push({...s,id:String(a.name||"").split(".").pop(),sectionConfigs:l})}}return o}async function b4(n,e){let t=Array.isArray(n?.order)&&n.order.length>0?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(c=>o.blocks?.[c]).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 Ni(n){return String(n)==="[object Array]"}function R(n){let e=typeof n;return n!==null&&(e==="object"||e==="function")}function _5(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 p5(n,e="id"){return(0,I4.reduce)(n,(t,i)=>(t[String(i[e])]=i,t),{})}function qe(n){let e=n.split(/-|_/),t=e.pop()?.toUpperCase(),i=e.join("-");return(t||X4[i]||"").toLowerCase()}function Oe(n){return R(n)&&Object.hasOwn(n,"code")&&Object.hasOwn(n,"name")&&Object.hasOwn(n,"fallback")}function M5(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&&M5(i,e)}function Ii(n){let e=new Set;return M5(n,(t,i)=>{if(typeof i=="object"&&i!==null){if(e.has(i))return!1;e.add(i)}return!0}),Array.from(e)}function Hi(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 At(n){if(!(typeof n!="object"||n===null))for(let[e,t]of Object.entries(n))e==="_swell"&&"_swell"in n?n[e]=void 0:At(t)}function kt(n){if(n!==void 0)return n instanceof L?"SwellStorefrontCollection":n instanceof A?"SwellStorefrontRecord":n instanceof y?"ShopifyResource":n instanceof T?"StorefrontResource":"promise"}async function H(n,e=!0,t=!1){let i=n,r=e;try{if(E(n)&&(r=!1,i=await n),n instanceof T&&(r=!1,i=await H(n.resolve(),e,t)),Array.isArray(i)){let o=await Promise.all(i.map(a=>H(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&&(E(s)||s instanceof T||s instanceof y)){o[a]={_type:kt(s),...t?{value:await H(s,r,t)}:void 0};continue}if(s instanceof T&&t){o[a]={_type:kt(s),value:await H(s,r,t)};continue}o[a]=await H(s,r,t)}return!e&&Object.keys(o).length===0?void 0:o}}catch(o){return console.error(o),n}return i}function $(n){return Lt.default.stringify({...n,sections:void 0,section_id:void 0},{encodeValuesOnly:!0,arrayFormat:"repeat"})}function S5(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 P3(n,e){return Object.entries(n).reduce((t,[i,r])=>(r?.value!==null&&r?.value!==void 0&&(t[St(i)]=r?.value),t),(0,I4.cloneDeep)(e))}var O3="ContentSections";function p3(n){return`SectionGroup_${n}`}var Bi="THEME",Gi=5*1e3,qi=1e3*60*60*24*7,Oi=Object.freeze({ttl:Gi}),Tt="__NULL__",z=class{client;constructor(e){e=e||{},e.stores=e.stores||Vi(e.kvStore),this.client=(0,_t.createCache)({...Oi,...e})}async fetch(e,t){return this.client.wrap(e,t)}async fetchSWR(e,t,i=qi){let r=await this.client.get(e),o=Promise.resolve().then(()=>t()).then(async s=>{let l=s==null,h=await H(s);return await this.client.set(e,l?Tt:h,i),s});return r!==null?r===Tt?null:r:await o}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 Vi(n){let e=[];return n?e.push(new P5.Keyv({namespace:Bi,store:new t4(n)})):e.push(new P5.Keyv),e}var J3=class extends z{constructor(e){super({...e})}};var Mt=require("keyv");var Y3=class extends z{constructor(e){super({stores:Ui(),...e})}};function Ui(){return[new Mt.Keyv({serialize:void 0,deserialize:void 0})]}var $i=90*24*60*60*1e3,H3=class extends z{constructor(e){super({ttl:$i,...e})}};var Pt="https://api.schema.io",Et=new Map,vt=new Map,E5=class n{url;headers;swellHeaders;queryParams;workerEnv;config;shopifyCompatibilityConfig;backend;storefront;storefrontContext;instanceId="";isPreview=!1;isEditor=!1;sentResponse=!1;storefront_url;resourceLoadingIndicator;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,this.resourceLoadingIndicator=e.resourceLoadingIndicator,console.log(`KV cache: ${this.workerEnv?.THEME?"enabled":"disabled"}`),s){let{headers:c,swellHeaders:C}=n.formatHeaders(s);this.headers=c,this.swellHeaders=C,this.backend=new H4({storeId:C["store-id"],accessToken:C["access-token"],apiHost:C["api-host"]}),this.storefront=this.getStorefrontInstance({...e,headers:c,swellHeaders:C}),this.instanceId=["store-id","environment-id","deployment-mode","theme-id","theme-branch-id"].map(m=>C[m]||"0").join(":"),this.isEditor=u.isEditor??C["deployment-mode"]==="editor",this.isPreview=this.isEditor||C["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=xt.default.parse(e.toString()):e&&(t=e),t}async getCachedResource(e,t,i){let r=Rt(e,[this.instanceId,t]);return this.getResourceCache().fetchSWR(r,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||E(e)?[]:e}getStorefrontLocalization(){let e=this.storefront.locale.selected(),t=this.storefront.currency.selected();return!e||E(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)}isLoading(e=!0){this.resourceLoadingIndicator&&this.resourceLoadingIndicator(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=Dt.default.create(a,s,{url:t["admin-url"],vaultUrl:t["vault-url"],getCookie:i,setCookie:r&&((h,u,c)=>r(h,u,c,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(Rt("request",[this.instanceId,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=Et.get(this.instanceId);return e||(e=new Y3({kvStore:this.workerEnv?.THEME}),Et.set(this.instanceId,e)),e}getRequestCache(){let e=vt.get(this.instanceId);return e||(e=new J3({kvStore:this.workerEnv?.THEME}),vt.set(this.instanceId,e)),e}};function Rt(n,e){let t=n;return Array.isArray(e)&&e.length>0&&(t+=`_${JSON.stringify(e)}`),t.length>512&&(t=`${t.slice(0,480)}${Y(t)}`),t}var H4=class{apiHost=Pt;apiAuth="";constructor({storeId:e,accessToken:t,apiHost:i}){this.apiHost=i||Pt,this.apiAuth=_5(`${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 Q3(u,{status:l.status,method:e,endpointUrl:a});if(e!=="GET"&&u?.errors)throw new Q3(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)}},Q3=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,D3.cloneDeep)(e),(0,D3.cloneDeep)(t),(0,D3.cloneDeep)(i));case"toString":{if(t)return()=>e[t];break}default:break}return a[o]instanceof o3?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({})}},o3=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=D3.noop,e}).then(e=>(e=e!==void 0?e:null,this.result=e,e))),this.result}};function w(n){return new o3(n)}function Di(n){return D(n)&&(E(n)||typeof n._resolve=="function")}function ft(n){return D(n)&&typeof n._resolve=="function"}async function xi(n){return Array.isArray(n)?Promise.all(n.map(e=>ft(e)?e._resolve():e)):ft(n)?n._resolve():n}async function gt(n,e){return xi(n).then(t=>Array.isArray(n)&&Array.isArray(t)?e(...t.map(i=>i||{})):Di(t)?gt(t,e):e(t||{})).catch(t=>(console.log(t),null))}function d(n,e){return new o3(()=>gt(n,e))}function Y4(n,e,t,i,r){return d(e,o=>o[t]?._cloneWithCompatibilityResult(a=>({results:a?.results?.map(s=>{let l=i(n,s);return r&&r(l,s),l})}))||[])}var ji=j(require("json5"),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_text_pre_heading":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:null};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 wt(n,e){return e?.reduce((t,i)=>{for(let r of i.fields||[])r?.id&&(t[r.id]=n[r.id]);return t},{})}function yt(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})||{}}})}}function W3(n){return n&&n.replace(/\./g,"\xB7")}function St(n){return n&&n.replace(/·/g,".")}function Y(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),P=(b>>16)+(k>>16)+(M>>16);return P<<16|M&65535}function r(b,k){return b<<k|b>>>32-k}function o(b,k,M,P,V,U){return i(r(i(i(k,b),i(P,U)),V),M)}function a(b,k,M,P,V,U,s3){return o(k&M|~k&P,b,k,V,U,s3)}function s(b,k,M,P,V,U,s3){return o(k&P|M&~P,b,k,V,U,s3)}function l(b,k,M,P,V,U,s3){return o(k^M^P,b,k,V,U,s3)}function h(b,k,M,P,V,U,s3){return o(M^(k|~P),b,k,V,U,s3)}function u(b){var k,M=(b.length+8>>6)+1,P=new Array(M*16);for(k=0;k<M*16;k++)P[k]=0;for(k=0;k<b.length;k++)P[k>>2]|=b.charCodeAt(k)<<k%4*8;return P[k>>2]|=128<<k%4*8,P[M*16-2]=b.length*8,P}var c,C=u(""+n),m=1732584193,f=-271733879,p=-1732584194,g=271733878,O,a3,f3,Z5;for(c=0;c<C.length;c+=16)O=m,a3=f,f3=p,Z5=g,m=a(m,f,p,g,C[c+0],7,-680876936),g=a(g,m,f,p,C[c+1],12,-389564586),p=a(p,g,m,f,C[c+2],17,606105819),f=a(f,p,g,m,C[c+3],22,-1044525330),m=a(m,f,p,g,C[c+4],7,-176418897),g=a(g,m,f,p,C[c+5],12,1200080426),p=a(p,g,m,f,C[c+6],17,-1473231341),f=a(f,p,g,m,C[c+7],22,-45705983),m=a(m,f,p,g,C[c+8],7,1770035416),g=a(g,m,f,p,C[c+9],12,-1958414417),p=a(p,g,m,f,C[c+10],17,-42063),f=a(f,p,g,m,C[c+11],22,-1990404162),m=a(m,f,p,g,C[c+12],7,1804603682),g=a(g,m,f,p,C[c+13],12,-40341101),p=a(p,g,m,f,C[c+14],17,-1502002290),f=a(f,p,g,m,C[c+15],22,1236535329),m=s(m,f,p,g,C[c+1],5,-165796510),g=s(g,m,f,p,C[c+6],9,-1069501632),p=s(p,g,m,f,C[c+11],14,643717713),f=s(f,p,g,m,C[c+0],20,-373897302),m=s(m,f,p,g,C[c+5],5,-701558691),g=s(g,m,f,p,C[c+10],9,38016083),p=s(p,g,m,f,C[c+15],14,-660478335),f=s(f,p,g,m,C[c+4],20,-405537848),m=s(m,f,p,g,C[c+9],5,568446438),g=s(g,m,f,p,C[c+14],9,-1019803690),p=s(p,g,m,f,C[c+3],14,-187363961),f=s(f,p,g,m,C[c+8],20,1163531501),m=s(m,f,p,g,C[c+13],5,-1444681467),g=s(g,m,f,p,C[c+2],9,-51403784),p=s(p,g,m,f,C[c+7],14,1735328473),f=s(f,p,g,m,C[c+12],20,-1926607734),m=l(m,f,p,g,C[c+5],4,-378558),g=l(g,m,f,p,C[c+8],11,-2022574463),p=l(p,g,m,f,C[c+11],16,1839030562),f=l(f,p,g,m,C[c+14],23,-35309556),m=l(m,f,p,g,C[c+1],4,-1530992060),g=l(g,m,f,p,C[c+4],11,1272893353),p=l(p,g,m,f,C[c+7],16,-155497632),f=l(f,p,g,m,C[c+10],23,-1094730640),m=l(m,f,p,g,C[c+13],4,681279174),g=l(g,m,f,p,C[c+0],11,-358537222),p=l(p,g,m,f,C[c+3],16,-722521979),f=l(f,p,g,m,C[c+6],23,76029189),m=l(m,f,p,g,C[c+9],4,-640364487),g=l(g,m,f,p,C[c+12],11,-421815835),p=l(p,g,m,f,C[c+15],16,530742520),f=l(f,p,g,m,C[c+2],23,-995338651),m=h(m,f,p,g,C[c+0],6,-198630844),g=h(g,m,f,p,C[c+7],10,1126891415),p=h(p,g,m,f,C[c+14],15,-1416354905),f=h(f,p,g,m,C[c+5],21,-57434055),m=h(m,f,p,g,C[c+12],6,1700485571),g=h(g,m,f,p,C[c+3],10,-1894986606),p=h(p,g,m,f,C[c+10],15,-1051523),f=h(f,p,g,m,C[c+1],21,-2054922799),m=h(m,f,p,g,C[c+8],6,1873313359),g=h(g,m,f,p,C[c+15],10,-30611744),p=h(p,g,m,f,C[c+6],15,-1560198380),f=h(f,p,g,m,C[c+13],21,1309151649),m=h(m,f,p,g,C[c+4],6,-145523070),g=h(g,m,f,p,C[c+11],10,-1120210379),p=h(p,g,m,f,C[c+2],15,718787259),f=h(f,p,g,m,C[c+9],21,-343485551),m=i(m,O),f=i(f,a3),p=i(p,f3),g=i(g,Z5);return t(m)+t(f)+t(p)+t(g)}function Zi(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 w5(n,e){let t=[];for(let i of n.values())if(Zi(i,n)){let r=await e(i);r&&t.push({...r,id:String(i.name||"").split(".").pop()??"",...r&&{presets:Fi(r)}})}return t}function Fi(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 y5(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=bt.default.parse(a.file_data)}catch(l){console.warn(l)}if(s?.type){let l=await b4(s,r);o.push({...s,id:String(a.name||"").split(".").pop(),sectionConfigs:l})}}return o}async function b4(n,e){let t=Array.isArray(n?.order)&&n.order.length>0?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(c=>o.blocks?.[c]).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 Ni(n){return String(n)==="[object Array]"}function R(n){let e=typeof n;return n!==null&&(e==="object"||e==="function")}function _5(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 p5(n,e="id"){return(0,I4.reduce)(n,(t,i)=>(t[String(i[e])]=i,t),{})}function qe(n){let e=n.split(/-|_/),t=e.pop()?.toUpperCase(),i=e.join("-");return(t||X4[i]||"").toLowerCase()}function Oe(n){return R(n)&&Object.hasOwn(n,"code")&&Object.hasOwn(n,"name")&&Object.hasOwn(n,"fallback")}function M5(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&&M5(i,e)}function Ii(n){let e=new Set;return M5(n,(t,i)=>{if(typeof i=="object"&&i!==null){if(e.has(i))return!1;e.add(i)}return!0}),Array.from(e)}function Hi(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 At(n){if(!(typeof n!="object"||n===null))for(let[e,t]of Object.entries(n))e==="_swell"&&"_swell"in n?n[e]=void 0:At(t)}function kt(n){if(n!==void 0)return n instanceof L?"SwellStorefrontCollection":n instanceof A?"SwellStorefrontRecord":n instanceof y?"ShopifyResource":n instanceof T?"StorefrontResource":"promise"}async function H(n,e=!0,t=!1){let i=n,r=e;try{if(E(n)&&(r=!1,i=await n),n instanceof T&&(r=!1,i=await H(n.resolve(),e,t)),Array.isArray(i)){let o=await Promise.all(i.map(a=>H(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&&(E(s)||s instanceof T||s instanceof y)){o[a]={_type:kt(s),...t?{value:await H(s,r,t)}:void 0};continue}if(s instanceof T&&t){o[a]={_type:kt(s),value:await H(s,r,t)};continue}o[a]=await H(s,r,t)}return!e&&Object.keys(o).length===0?void 0:o}}catch(o){return console.error(o),n}return i}function $(n){return Lt.default.stringify({...n,sections:void 0,section_id:void 0},{encodeValuesOnly:!0,arrayFormat:"repeat"})}function S5(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 P3(n,e){return Object.entries(n).reduce((t,[i,r])=>(r?.value!==null&&r?.value!==void 0&&(t[St(i)]=r?.value),t),(0,I4.cloneDeep)(e))}var O3="ContentSections";function p3(n){return`SectionGroup_${n}`}var Bi="THEME",Gi=5*1e3,qi=1e3*60*60*24*7,Oi=Object.freeze({ttl:Gi}),Tt="__NULL__",z=class{client;constructor(e){e=e||{},e.stores=e.stores||Vi(e.kvStore),this.client=(0,_t.createCache)({...Oi,...e})}async fetch(e,t){return this.client.wrap(e,t)}async fetchSWR(e,t,i=qi){let r=await this.client.get(e);console.log("Cache.fetchSWR",{key:e,ttl:i,cacheValue:!!r});let o=Promise.resolve().then(()=>t()).then(async s=>{let l=s==null,h=await H(s);return await this.client.set(e,l?Tt:h,i),s});return r!==null?r===Tt?null:r:await o}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 Vi(n){let e=[];return n?e.push(new P5.Keyv({namespace:Bi,store:new t4(n)})):e.push(new P5.Keyv),e}var J3=class extends z{constructor(e){super({...e})}};var Mt=require("keyv");var Y3=class extends z{constructor(e){super({stores:Ui(),...e})}};function Ui(){return[new Mt.Keyv({serialize:void 0,deserialize:void 0})]}var $i=90*24*60*60*1e3,H3=class extends z{constructor(e){super({ttl:$i,...e})}};var Pt="https://api.schema.io",Et=new Map,vt=new Map,E5=class n{url;headers;swellHeaders;queryParams;workerEnv;config;shopifyCompatibilityConfig;backend;storefront;storefrontContext;instanceId="";isPreview=!1;isEditor=!1;sentResponse=!1;storefront_url;resourceLoadingIndicator;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,this.resourceLoadingIndicator=e.resourceLoadingIndicator,console.log(`KV cache: ${this.workerEnv?.THEME?"enabled":"disabled"}`),s){let{headers:c,swellHeaders:C}=n.formatHeaders(s);this.headers=c,this.swellHeaders=C,this.backend=new H4({storeId:C["store-id"],accessToken:C["access-token"],apiHost:C["api-host"]}),this.storefront=this.getStorefrontInstance({...e,headers:c,swellHeaders:C}),this.instanceId=["store-id","environment-id","deployment-mode","theme-id","theme-branch-id"].map(m=>C[m]||"0").join(":"),this.isEditor=u.isEditor??C["deployment-mode"]==="editor",this.isPreview=this.isEditor||C["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=xt.default.parse(e.toString()):e&&(t=e),t}async getCachedResource(e,t,i){let r=Rt(e,[this.instanceId,t]);return this.getResourceCache().fetchSWR(r,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||E(e)?[]:e}getStorefrontLocalization(){let e=this.storefront.locale.selected(),t=this.storefront.currency.selected();return!e||E(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)}isLoading(e=!0){this.resourceLoadingIndicator&&this.resourceLoadingIndicator(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=Dt.default.create(a,s,{url:t["admin-url"],vaultUrl:t["vault-url"],getCookie:i,setCookie:r&&((h,u,c)=>r(h,u,c,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(Rt("request",[this.instanceId,i,r,o,a,s]),()=>(console.log("Storefront request",{method:i,url:r,id:o,data:a}),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=Et.get(this.instanceId);return e||(e=new Y3({kvStore:this.workerEnv?.THEME}),Et.set(this.instanceId,e)),e}getRequestCache(){let e=vt.get(this.instanceId);return e||(e=new J3({kvStore:this.workerEnv?.THEME}),vt.set(this.instanceId,e)),e}};function Rt(n,e){let t=n;return Array.isArray(e)&&e.length>0&&(t+=`_${JSON.stringify(e)}`),t.length>512&&(t=`${t.slice(0,480)}${Y(t)}`),t}var H4=class{apiHost=Pt;apiAuth="";constructor({storeId:e,accessToken:t,apiHost:i}){this.apiHost=i||Pt,this.apiAuth=_5(`${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 Q3(u,{status:l.status,method:e,endpointUrl:a});if(e!=="GET"&&u?.errors)throw new Q3(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)}},Q3=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 v5(n,e){return new L(n,"products",e)}function Ki(n,e,t){return new A(n,"products",e,t)}function zi(n,{search:e,filter:t,sort:i}){return new L(n,"products",{search:e,filter:t,sort:i})}function Wi(n,e){return new L(n,"categories",e)}function jt(n,e,t){return new A(n,"categories",e,t)}async function Ji(n,e,t){let i=jt(n,e,t),r=await i.id;return i.products=v5(n,{category:r}),i}function Yi(n,e){return n.getCachedResource(`content-model-${e}`,[],()=>n.get("/:content/{name}",{name:e,public:!0,"storefront.enabled":!0}))}async function Zt(n,e,t){return new L(n,`content/${e}`,t)}async function R5(n,e,t,i){return new A(n,`content/${e}`,t,i)}async function Qi(n,e,t){return R5(n,"pages",e,t)}async function Xi(n,e){return Zt(n,"blogs",e)}async function e6(n,e,t){return R5(n,"blogs",e,t)}var Nt=j(require("json5"),1),W=require("lodash-es");var B4=!0;async function t6(n,e){let t=null;if(t=await n.getThemeTemplateConfigByType("templates",e),t){if(t.file_path.endsWith(".liquid"))return t.file_data;try{return Nt.default.parse(t.file_data)}catch{return t.file_data}}}function i6(n,e){return n.reduce((t,i)=>(i.enabled_on?G4(i.enabled_on,"groups",e)&&t.push(String(i.id)):i.disabled_on?G4(i.disabled_on,"groups",e)||t.push(String(i.id)):i.id===e&&t.push(String(i.id)),t),[])}function n6(n,e){return e.map(t=>({prop:p3(t.id),type:"component-collection",label:t.label,required:!0,noInline:B4,accepts:i6(n,t.type)}))}function G4(n,e,t){return!!(n.templates==="*"||n[e]?.includes(t))}function r6(n,e,t){return n.reduce((i,r)=>(r.enabled_on?G4(r.enabled_on,"templates",t)&&i.push(String(r.id)):r.disabled_on?G4(r.disabled_on,"templates",t)||i.push(String(r.id)):e.some(({type:o})=>o===r.id)||i.push(String(r.id)),i),[])}function o6(n){return(n?.configs?.editor?.settings??[]).reduce((e,t)=>{for(let i of t.fields||[])e.push({prop:W3(i.id),label:i.label,optional:!0,group:t.label,...z3(i)});return e},[])}function a6(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:W3(o.id),label:o.label,optional:!0,...z3(o)}),r),[]),...i?[{prop:"Blocks",type:"component-collection",required:!0,noInline:B4,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,W.reduce)(h.fields,(u,c)=>(c.id&&(u[c.id]=q(h.fields,c.id,c.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:W3(a.id),label:a.label,optional:!0,...z3(a)}),o),[{prop:"$locale",type:"swell_locale",isLabelHidden:!0}]),styles:()=>({styled:{Root:{}}})})))}return e}function s6(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 l6(n){return n.reduce((e,t)=>(e[p3(t.id)]=t.sectionConfigs.map(({section:i,settings:r,schema:o})=>({_id:`SectionGroup__${i.type}_${Ft()}`,_component:i.type,...(0,W.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}_${Ft()}`,_component:`Block__${i.type}__${a.type}`,...(0,W.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 c6(n){return(n||"").replaceAll("/","_")}function h6(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,W.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,W.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,W.reduce)(i.fields,(r,o)=>(o.id&&(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 d6(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:B4},{prop:"$locale",type:"swell_locale",isLabelHidden:!0},...o6(n)],groups:(n?.configs?.editor?.settings??[]).map(c=>({key:c.label,label:c.label,collapsable:!0,collapsed:!0})),styles:()=>({styled:{Root:{}}})},a={id:"swell_page",label:"Page settings",schema:[{prop:O3,type:"component-collection",required:!0,noInline:B4,accepts:r6(e,i,r),placeholderAppearance:{height:250,label:"Add section",aspectRatio:1}},...n6(e,i)],allowSave:!0,styles:()=>({styled:{Root:{}}})},s=[o,a,...a6(e)],l=o.schema.find(c=>c.prop==="color_schemes");if(l){let c=l.params,{fields:C=[]}=c;s.push({id:"swell_color_scheme_group",label:"Swell color scheme",schema:C.map(m=>({prop:W3(m.id),label:m.label,optional:!0,...z3({...m,type:m.id==="background_gradient"?"text":m.type})})),styles(){return{styled:{Root:{}}}}})}let h=new Set;for(let c of s)h.add(c.id);let u=[{id:"swell_global",entry:{_id:"swell_global",_component:"swell_global",...s6(n),$locale:n?.configs?.theme?.$locale,swell_page:[{_id:"swell_page",_component:"swell_page",ContentSections:t.filter(c=>h.has(c.section.type)).map(({section:c,settings:C,schema:m})=>({_id:c6(c.id),_component:c.type,custom_css:C?.section?.custom_css||"",disabled:C?.section?.disabled||!1,$locale:C?.section?.settings?.$locale,...(0,W.reduce)(m?.fields,(f,p)=>(p?.id&&(f[p.id]=q(m?.fields,p.id,C?.section?.settings?.[p.id])),f),{}),...c?.blocks?{Blocks:Object.entries(c.blocks).map(([f,p])=>({_id:`Block__${f}__${p.type}_${Math.random()}`,_component:`Block__${c.type}__${p.type}`,disabled:p.disabled||!1,...(0,W.reduce)(p.settings,(g,O,a3)=>(g[a3]=q(m?.blocks?.find(({type:f3})=>f3===p.type)?.fields,a3,O),g),{})}))}:void 0})),...l6(i)}]}},{id:"swell_page",entry:{_id:"swell_page",_component:"swell_page"}},...h6(e)];return{easyblocksConfig:{components:s,templates:u,backend:It(),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 u6(n,e,t){let i=n.reduce((a,s)=>(a[`${s.id}`]=t("pageSection",s),a),{}),r=e.reduce((a,s)=>(a[p3(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 It(){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 Ft(){return(Math.random()+1).toString(36).substring(7)}function q4(n,e){let i=n?.storefront?.options?.getCookie;return typeof i=="function"&&i(e)||""}var D5=class extends A{constructor(e,t,i={}){super(e,"",t,i,async function(){let r=await Ht(e,this._resourceName,t,i);return X3(this._resourceName,r,e,"",t,i)})}},x5=class extends J{constructor(e,t,i={}){super(e,"",async function(){let r=await Ht(e,this._resourceName,t,i);return X3(this._resourceName,r,e,"",t,i)})}};async function Ht(n,e,t,i){let r=new URLSearchParams({...t&&{slug:t},...i&&{query:JSON.stringify(i)}}),o=r.size>0?`?${r}`:"",a=q4(n,"swell-session"),s=q4(n,"swell-data")||{};return(await fetch(`${n.storefront_url}/resources/${e}.json/${o}`,{headers:{"X-Session":a,"Swell-Data":JSON.stringify(s)}})).json()}function X3(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=C6;break;case"SwellStorefrontRecord":u=p6;break;case"createStorefrontResource":u=m6;break;default:break}a[s]=u?u(n,t,h,r,o):l}return a}function m6(n,e,t,i,r){return new T(async function(){let o=await j5(e,n,t,i,r);return X3(n,o,e,t,i,r)})}function p6(n,e,t,i,r){let o=Bt(i,r);return new A(e,n,t,o,async function(){let a=await j5(e,n,t,i,r);return X3(n,a,e,t,i,r)})}function C6(n,e,t,i,r){let o=Bt(i,r);return new L(e,n,o,async function(){let a=await j5(e,n,t,i,r);return X3(n,a,e,t,i,r)})}async function j5(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=q4(n,"swell-session"),l=q4(n,"swell-data")||{};return(await fetch(`${n.storefront_url}/resources/${e}.json${a}`,{headers:{"X-Session":s,"Swell-Data":JSON.stringify(l)}})).json()}function Bt(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,getLayoutSectionGroups,getMenuItemStorefrontUrl,getMenuItemUrlAndResource,getMenuItemValueId,getPage,getPageSections,getProduct,getProducts,getProductsFiltered,getSectionGroupProp,getSectionSettingsFromProps,getThemeSettingsFromProps,isArray,isLikeSwellLocale,isObject,md5,removeCircularReferences,resolveAsyncResources,resolveLookupCollection,resolveMenuItemUrlAndResource,resolveMenuItems,resolveMenuSettings,resolveSectionSettings,resolveThemeSettings,scopeCustomCSS,stringifyQueryParams,systemFonts,toBase64});
950
950
  //# sourceMappingURL=index.cjs.map