@swell/apps-sdk 1.0.116 → 1.0.117
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 +1 -1
- package/dist/index.cjs.map +2 -2
- package/dist/index.js +1 -1
- package/dist/index.js.map +2 -2
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +2 -2
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -945,6 +945,6 @@ Shopify.routes = Shopify.routes || {};
|
|
|
945
945
|
Shopify.routes.root = "/";
|
|
946
946
|
${o.join(`
|
|
947
947
|
`)}<\/script>`}getMenuData(e){return a5(this,e)}getFontData(e){return s5(this,e)}getFormData(e){return l5(this,e)}getFontFromShopifySetting(e){return X2(e)}getThemeConfig(e){return W2(e)}getPresetsConfig(e){return J2(e)}getEditorConfig(e){let{locale:t}=this.swell.getStorefrontLocalization();return z2(e,t)}getSectionConfigSchema(e){let{locale:t}=this.swell.getStorefrontLocalization();return Y2(e,t)}getSectionGroup(e){let{locale:t}=this.swell.getStorefrontLocalization();return Q2(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,L4.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,L4.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 v3(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=k4[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=k4[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,""");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,A3.cloneDeep)(e),(0,A3.cloneDeep)(t),(0,A3.cloneDeep)(i));case"toString":{if(t)return()=>e[t];break}default:break}return a[o]instanceof u3?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({})}},u3=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=A3.noop,e}).then(e=>(e=e!==void 0?e:null,this.result=e,e))),this.result}};function w(n){return new u3(n)}function Ti(n){return x(n)&&(v(n)||typeof n._resolve=="function")}function rt(n){return x(n)&&typeof n._resolve=="function"}async function _i(n){return Array.isArray(n)?Promise.all(n.map(e=>rt(e)?e._resolve():e)):rt(n)?n._resolve():n}async function ot(n,e){return _i(n).then(t=>Array.isArray(n)&&Array.isArray(t)?e(...t.map(i=>i||{})):Ti(t)?ot(t,e):e(t||{})).catch(t=>(console.log(t),null))}function d(n,e){return new u3(()=>ot(n,e))}function N4(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 Mi=j(S("json5"),1);function q3(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 G(n,e,t){if(t===void 0)return null;switch(n?.find(r=>r.id===e)?.type){default:return t}}function Pi(n,e){return e?.reduce((t,i)=>{for(let r of i.fields||[])r?.id&&(t[r.id]=n[r.id]);return t},{})}function Ei(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 O3(n){return n&&n.replace(/\./g,"\xB7")}function at(n){return n&&n.replace(/·/g,".")}function a3(n){var e="0123456789abcdef";function t(b){var L,M="";for(L=0;L<=3;L++)M+=e.charAt(b>>L*8+4&15)+e.charAt(b>>L*8&15);return M}function i(b,L){var M=(b&65535)+(L&65535),E=(b>>16)+(L>>16)+(M>>16);return E<<16|M&65535}function r(b,L){return b<<L|b>>>32-L}function o(b,L,M,E,O,V){return i(r(i(i(L,b),i(E,V)),O),M)}function a(b,L,M,E,O,V,n3){return o(L&M|~L&E,b,L,O,V,n3)}function s(b,L,M,E,O,V,n3){return o(L&E|M&~E,b,L,O,V,n3)}function l(b,L,M,E,O,V,n3){return o(L^M^E,b,L,O,V,n3)}function h(b,L,M,E,O,V,n3){return o(M^(L|~E),b,L,O,V,n3)}function u(b){var L,M=(b.length+8>>6)+1,E=new Array(M*16);for(L=0;L<M*16;L++)E[L]=0;for(L=0;L<b.length;L++)E[L>>2]|=b.charCodeAt(L)<<L%4*8;return E[L>>2]|=128<<L%4*8,E[M*16-2]=b.length*8,E}var c,C=u(""+n),m=1732584193,f=-271733879,p=-1732584194,g=271733878,q,i3,m3,p5;for(c=0;c<C.length;c+=16)q=m,i3=f,m3=p,p5=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,q),f=i(f,i3),p=i(p,m3),g=i(g,p5);return t(m)+t(f)+t(p)+t(g)}function vi(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 V2(n,e){let t=[];for(let i of n.values())if(vi(i,n)){let r=await e(i);r&&t.push({...r,id:String(i.name||"").split(".").pop()??"",...r&&{presets:Ri(r)}})}return t}function Ri(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 U2(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=ct.default.parse(a.file_data)}catch(l){console.warn(l)}if(s?.type){let l=await Je(s,r);o.push({...s,id:String(a.name||"").split(".").pop(),sectionConfigs:l})}}return o}async function Je(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 jl(n){return String(n)==="[object Array]"}function D(n){let e=typeof n;return n!==null&&(e==="object"||e==="function")}function ht(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 H2(n,e="id"){return(0,b4.reduce)(n,(t,i)=>(t[String(i[e])]=i,t),{})}function z5(n){let e=n.split(/-|_/),t=e.pop()?.toUpperCase(),i=e.join("-");return(t||P5[i]||"").toLowerCase()}function W5(n){return D(n)&&Object.hasOwn(n,"code")&&Object.hasOwn(n,"name")&&Object.hasOwn(n,"fallback")}function dt(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&&dt(i,e)}function Zl(n){let e=new Set;return dt(n,(t,i)=>{if(typeof i=="object"&&i!==null){if(e.has(i))return!1;e.add(i)}return!0}),Array.from(e)}function Fl(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 Di(n){if(!(typeof n!="object"||n===null))for(let[e,t]of Object.entries(n))e==="_swell"&&"_swell"in n?n[e]=void 0:Di(t)}function st(n){if(n!==void 0)return n instanceof A?"SwellStorefrontCollection":n instanceof T?"SwellStorefrontRecord":n instanceof y?"ShopifyResource":n instanceof P?"StorefrontResource":"promise"}async function U(n,e=!0,t=!1){let i=n,r=e;try{if(v(n)&&(r=!1,i=await n),n instanceof P&&(r=!1,i=await U(n.resolve(),e,t)),Array.isArray(i)){let o=await Promise.all(i.map(a=>U(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 P||s instanceof y)){o[a]={_type:st(s),...t?{value:await U(s,r,t)}:void 0};continue}if(s instanceof P&&t){o[a]={_type:st(s),value:await U(s,r,t)};continue}o[a]=await U(s,r,t)}return!e&&Object.keys(o).length===0?void 0:o}}catch(o){return console.error(o),n}return i}function W(n){return lt.default.stringify({...n,sections:void 0,section_id:void 0},{encodeValuesOnly:!0,arrayFormat:"repeat"})}function $2(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 Z3(n,e){return Object.entries(n).reduce((t,[i,r])=>(r?.value!==null&&r?.value!==void 0&&(t[at(i)]=r?.value),t),(0,b4.cloneDeep)(e))}var f4="ContentSections";function b3(n){return`SectionGroup_${n}`}var xi="THEME",ji=5*1e3,Zi=1e3*60*60*24*7,Fi=Object.freeze({ttl:ji}),ut="__NULL__",K=class{client;constructor(e){e=e||{},e.stores=e.stores||Ni(e.kvStore),this.client=(0,mt.createCache)({...Fi,...e})}async fetch(e,t){return this.client.wrap(e,t)}async fetchSWR(e,t,i=Zi){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 U(s);return console.log("Cache.fetchSWR result",{key:e,value:!!s,valueResolved:!!h}),await this.client.set(e,l?ut:h,i),s});return r!==null?r===ut?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 Ni(n){let e=[];return n?e.push(new d5.Keyv({namespace:xi,store:new K3(n)})):e.push(new d5.Keyv),e}var V3=class extends K{constructor(e){super({...e})}};var pt=S("keyv");var U3=class extends K{constructor(e){super({stores:Ii(),...e})}};function Ii(){return[new pt.Keyv({serialize:void 0,deserialize:void 0})]}var Hi=90*24*60*60*1e3,x3=class extends K{constructor(e){super({ttl:Hi,...e})}};var Ct="https://api.schema.io",ft=new Map,gt=new Map,wt=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 u5({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=kt.default.parse(e.toString()):e&&(t=e),t}async getCachedResource(e,t,i){let r=yt(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||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)}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=St.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(yt("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=ft.get(this.instanceId);return e||(e=new U3({kvStore:this.workerEnv?.THEME}),ft.set(this.instanceId,e)),e}getRequestCache(){let e=gt.get(this.instanceId);return e||(e=new V3({kvStore:this.workerEnv?.THEME}),gt.set(this.instanceId,e)),e}};function yt(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 u5=class{apiHost=Ct;apiAuth="";constructor({storeId:e,accessToken:t,apiHost:i}){this.apiHost=i||Ct,this.apiAuth=ht(`${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 A4(u,{status:l.status,method:e,endpointUrl:a});if(e!=="GET"&&u?.errors)throw new A4(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)}},A4=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,A3.cloneDeep)(e),(0,A3.cloneDeep)(t),(0,A3.cloneDeep)(i));case"toString":{if(t)return()=>e[t];break}default:break}return a[o]instanceof u3?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({})}},u3=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=A3.noop,e}).then(e=>(e=e!==void 0?e:null,this.result=e,e))),this.result}};function w(n){return new u3(n)}function Ti(n){return x(n)&&(v(n)||typeof n._resolve=="function")}function rt(n){return x(n)&&typeof n._resolve=="function"}async function _i(n){return Array.isArray(n)?Promise.all(n.map(e=>rt(e)?e._resolve():e)):rt(n)?n._resolve():n}async function ot(n,e){return _i(n).then(t=>Array.isArray(n)&&Array.isArray(t)?e(...t.map(i=>i||{})):Ti(t)?ot(t,e):e(t||{})).catch(t=>(console.log(t),null))}function d(n,e){return new u3(()=>ot(n,e))}function N4(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 Mi=j(S("json5"),1);function q3(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 G(n,e,t){if(t===void 0)return null;switch(n?.find(r=>r.id===e)?.type){default:return t}}function Pi(n,e){return e?.reduce((t,i)=>{for(let r of i.fields||[])r?.id&&(t[r.id]=n[r.id]);return t},{})}function Ei(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 O3(n){return n&&n.replace(/\./g,"\xB7")}function at(n){return n&&n.replace(/·/g,".")}function a3(n){var e="0123456789abcdef";function t(b){var L,M="";for(L=0;L<=3;L++)M+=e.charAt(b>>L*8+4&15)+e.charAt(b>>L*8&15);return M}function i(b,L){var M=(b&65535)+(L&65535),E=(b>>16)+(L>>16)+(M>>16);return E<<16|M&65535}function r(b,L){return b<<L|b>>>32-L}function o(b,L,M,E,O,V){return i(r(i(i(L,b),i(E,V)),O),M)}function a(b,L,M,E,O,V,n3){return o(L&M|~L&E,b,L,O,V,n3)}function s(b,L,M,E,O,V,n3){return o(L&E|M&~E,b,L,O,V,n3)}function l(b,L,M,E,O,V,n3){return o(L^M^E,b,L,O,V,n3)}function h(b,L,M,E,O,V,n3){return o(M^(L|~E),b,L,O,V,n3)}function u(b){var L,M=(b.length+8>>6)+1,E=new Array(M*16);for(L=0;L<M*16;L++)E[L]=0;for(L=0;L<b.length;L++)E[L>>2]|=b.charCodeAt(L)<<L%4*8;return E[L>>2]|=128<<L%4*8,E[M*16-2]=b.length*8,E}var c,C=u(""+n),m=1732584193,f=-271733879,p=-1732584194,g=271733878,q,i3,m3,p5;for(c=0;c<C.length;c+=16)q=m,i3=f,m3=p,p5=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,q),f=i(f,i3),p=i(p,m3),g=i(g,p5);return t(m)+t(f)+t(p)+t(g)}function vi(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 V2(n,e){let t=[];for(let i of n.values())if(vi(i,n)){let r=await e(i);r&&t.push({...r,id:String(i.name||"").split(".").pop()??"",...r&&{presets:Ri(r)}})}return t}function Ri(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 U2(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=ct.default.parse(a.file_data)}catch(l){console.warn(l)}if(s?.type){let l=await Je(s,r);o.push({...s,id:String(a.name||"").split(".").pop(),sectionConfigs:l})}}return o}async function Je(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 jl(n){return String(n)==="[object Array]"}function D(n){let e=typeof n;return n!==null&&(e==="object"||e==="function")}function ht(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 H2(n,e="id"){return(0,b4.reduce)(n,(t,i)=>(t[String(i[e])]=i,t),{})}function z5(n){let e=n.split(/-|_/),t=e.pop()?.toUpperCase(),i=e.join("-");return(t||P5[i]||"").toLowerCase()}function W5(n){return D(n)&&Object.hasOwn(n,"code")&&Object.hasOwn(n,"name")&&Object.hasOwn(n,"fallback")}function dt(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&&dt(i,e)}function Zl(n){let e=new Set;return dt(n,(t,i)=>{if(typeof i=="object"&&i!==null){if(e.has(i))return!1;e.add(i)}return!0}),Array.from(e)}function Fl(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 Di(n){if(!(typeof n!="object"||n===null))for(let[e,t]of Object.entries(n))e==="_swell"&&"_swell"in n?n[e]=void 0:Di(t)}function st(n){if(n!==void 0)return n instanceof A?"SwellStorefrontCollection":n instanceof T?"SwellStorefrontRecord":n instanceof y?"ShopifyResource":n instanceof P?"StorefrontResource":"promise"}async function U(n,e=!0,t=!1){let i=n,r=e;try{if(v(n)&&(r=!1,i=await n),n instanceof P&&(r=!1,i=await U(n.resolve(),e,t)),Array.isArray(i)){let o=await Promise.all(i.map(a=>U(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 P||s instanceof y)){o[a]={_type:st(s),...t?{value:await U(s,r,t)}:void 0};continue}if(s instanceof P&&t){o[a]={_type:st(s),value:await U(s,r,t)};continue}o[a]=await U(s,r,t)}return!e&&Object.keys(o).length===0?void 0:o}}catch(o){return console.error(o),n}return i}function W(n){return lt.default.stringify({...n,sections:void 0,section_id:void 0},{encodeValuesOnly:!0,arrayFormat:"repeat"})}function $2(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 Z3(n,e){return Object.entries(n).reduce((t,[i,r])=>(r?.value!==null&&r?.value!==void 0&&(t[at(i)]=r?.value),t),(0,b4.cloneDeep)(e))}var f4="ContentSections";function b3(n){return`SectionGroup_${n}`}var xi="THEME",ji=5*1e3,Zi=1e3*60*60*24*7,Fi=Object.freeze({ttl:ji}),ut="__NULL__",K=class{client;constructor(e){e=e||{},e.stores=e.stores||Ni(e.kvStore),this.client=(0,mt.createCache)({...Fi,...e})}async fetch(e,t){return this.client.wrap(e,t)}async fetchSWR(e,t,i=Zi){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 U(s);return console.log("Cache.fetchSWR result",{key:e,value:!!s,valueResolved:h}),await this.client.set(e,l?ut:h,i),s});return r!==null?r===ut?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 Ni(n){let e=[];return n?e.push(new d5.Keyv({namespace:xi,store:new K3(n)})):e.push(new d5.Keyv),e}var V3=class extends K{constructor(e){super({...e})}};var pt=S("keyv");var U3=class extends K{constructor(e){super({stores:Ii(),...e})}};function Ii(){return[new pt.Keyv({serialize:void 0,deserialize:void 0})]}var Hi=90*24*60*60*1e3,x3=class extends K{constructor(e){super({ttl:Hi,...e})}};var Ct="https://api.schema.io",ft=new Map,gt=new Map,wt=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 u5({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=kt.default.parse(e.toString()):e&&(t=e),t}async getCachedResource(e,t,i){let r=yt(e,[this.instanceId,t]);return this.getResourceCache().fetch(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||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)}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=St.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(yt("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=ft.get(this.instanceId);return e||(e=new U3({kvStore:this.workerEnv?.THEME}),ft.set(this.instanceId,e)),e}getRequestCache(){let e=gt.get(this.instanceId);return e||(e=new V3({kvStore:this.workerEnv?.THEME}),gt.set(this.instanceId,e)),e}};function yt(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 u5=class{apiHost=Ct;apiAuth="";constructor({storeId:e,accessToken:t,apiHost:i}){this.apiHost=i||Ct,this.apiAuth=ht(`${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 A4(u,{status:l.status,method:e,endpointUrl:a});if(e!=="GET"&&u?.errors)throw new A4(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)}},A4=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 Lt(n,e){return new A(n,"products",e)}function lc(n,e,t){return new T(n,"products",e,t)}function cc(n,{search:e,filter:t,sort:i}){return new A(n,"products",{search:e,filter:t,sort:i})}function pc(n,e){return new A(n,"categories",e)}function Bi(n,e,t){return new T(n,"categories",e,t)}async function Cc(n,e,t){let i=Bi(n,e,t),r=await i.id;return i.products=Lt(n,{category:r}),i}function yc(n,e){return n.getCachedResource(`content-model-${e}`,[],()=>n.get("/:content/{name}",{name:e,public:!0,"storefront.enabled":!0}))}async function Gi(n,e,t){return new A(n,`content/${e}`,t)}async function bt(n,e,t,i){return new T(n,`content/${e}`,t,i)}async function Sc(n,e,t){return bt(n,"pages",e,t)}async function kc(n,e){return Gi(n,"blogs",e)}async function Lc(n,e,t){return bt(n,"blogs",e,t)}var Tt=j(S("json5"),1),z=S("lodash-es");var T4=!0;async function _c(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 Tt.default.parse(t.file_data)}catch{return t.file_data}}}function qi(n,e){return n.reduce((t,i)=>(i.enabled_on?_4(i.enabled_on,"groups",e)&&t.push(String(i.id)):i.disabled_on?_4(i.disabled_on,"groups",e)||t.push(String(i.id)):i.id===e&&t.push(String(i.id)),t),[])}function Oi(n,e){return e.map(t=>({prop:b3(t.id),type:"component-collection",label:t.label,required:!0,noInline:T4,accepts:qi(n,t.type)}))}function _4(n,e,t){return!!(n.templates==="*"||n[e]?.includes(t))}function Vi(n,e,t){return n.reduce((i,r)=>(r.enabled_on?_4(r.enabled_on,"templates",t)&&i.push(String(r.id)):r.disabled_on?_4(r.disabled_on,"templates",t)||i.push(String(r.id)):e.some(({type:o})=>o===r.id)||i.push(String(r.id)),i),[])}function Ui(n){return(n?.configs?.editor?.settings??[]).reduce((e,t)=>{for(let i of t.fields||[])e.push({prop:O3(i.id),label:i.label,optional:!0,group:t.label,...q3(i)});return e},[])}function $i(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:O3(o.id),label:o.label,optional:!0,...q3(o)}),r),[]),...i?[{prop:"Blocks",type:"component-collection",required:!0,noInline:T4,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,c)=>(c.id&&(u[c.id]=G(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:O3(a.id),label:a.label,optional:!0,...q3(a)}),o),[{prop:"$locale",type:"swell_locale",isLabelHidden:!0}]),styles:()=>({styled:{Root:{}}})})))}return e}function Ki(n){return n?.configs?.editor?.settings?.reduce((e,t)=>{for(let i of t.fields||[])i?.id&&(e[i.id]=G(t.fields,i.id,n?.configs?.theme?.[i.id]));return e},{})}function zi(n){return n.reduce((e,t)=>(e[b3(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]=G(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]=G(o?.blocks?.find(({type:u})=>u===a.type)?.fields,h,l),s),{})}))}:void 0})),e),{})}function Wi(n){return(n||"").replaceAll("/","_")}function Ji(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]=G(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]=G(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&&(r[o.id]=G(i.fields,o.id,o.default)),r),{})}})));return e.filter(t=>Object.keys(t.entry).some(i=>i!=="_id"&&i!=="_component"))}function Mc(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:T4},{prop:"$locale",type:"swell_locale",isLabelHidden:!0},...Ui(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:f4,type:"component-collection",required:!0,noInline:T4,accepts:Vi(e,i,r),placeholderAppearance:{height:250,label:"Add section",aspectRatio:1}},...Oi(e,i)],allowSave:!0,styles:()=>({styled:{Root:{}}})},s=[o,a,...$i(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:O3(m.id),label:m.label,optional:!0,...q3({...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",...Ki(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:Wi(c.id),_component:c.type,custom_css:C?.section?.custom_css||"",disabled:C?.section?.disabled||!1,$locale:C?.section?.settings?.$locale,...(0,z.reduce)(m?.fields,(f,p)=>(p?.id&&(f[p.id]=G(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,z.reduce)(p.settings,(g,q,i3)=>(g[i3]=G(m?.blocks?.find(({type:m3})=>m3===p.type)?.fields,i3,q),g),{})}))}:void 0})),...zi(i)}]}},{id:"swell_page",entry:{_id:"swell_page",_component:"swell_page"}},...Ji(e)];return{easyblocksConfig:{components:s,templates:u,backend:Yi(),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 Pc(n,e,t){let i=n.reduce((a,s)=>(a[`${s.id}`]=t("pageSection",s),a),{}),r=e.reduce((a,s)=>(a[b3(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 Yi(){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 M4(n,e){let i=n?.storefront?.options?.getCookie;return typeof i=="function"&&i(e)||""}var _t=class extends T{constructor(e,t,i={}){super(e,"",t,i,async function(){let r=await Pt(e,this._resourceName,t,i);return $3(this._resourceName,r,e,"",t,i)})}},Mt=class extends o3{constructor(e,t,i={}){super(e,"",async function(){let r=await Pt(e,this._resourceName,t,i);return $3(this._resourceName,r,e,"",t,i)})}};async function Pt(n,e,t,i){let r=new URLSearchParams({...t&&{slug:t},...i&&{query:JSON.stringify(i)}}),o=r.size>0?`?${r}`:"",a=M4(n,"swell-session"),s=M4(n,"swell-data")||{};return(await fetch(`${n.storefront_url}/resources/${e}.json/${o}`,{headers:{"X-Session":a,"Swell-Data":JSON.stringify(s)}})).json()}function $3(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=e6;break;case"SwellStorefrontRecord":u=Xi;break;case"createStorefrontResource":u=Qi;break;default:break}a[s]=u?u(n,t,h,r,o):l}return a}function Qi(n,e,t,i,r){return new P(async function(){let o=await m5(e,n,t,i,r);return $3(n,o,e,t,i,r)})}function Xi(n,e,t,i,r){let o=Et(i,r);return new T(e,n,t,o,async function(){let a=await m5(e,n,t,i,r);return $3(n,a,e,t,i,r)})}function e6(n,e,t,i,r){let o=Et(i,r);return new A(e,n,o,async function(){let a=await m5(e,n,t,i,r);return $3(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=M4(n,"swell-session"),l=M4(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}}})();
|
|
950
950
|
//# sourceMappingURL=index.js.map
|