@occluze/tether 0.9.0 → 0.9.1
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/README.md +1 -1
- package/dist/esm/astro.js +1 -1
- package/dist/esm/chunks/{account-FKLGF264.js → account-LCMJ7QU5.js} +1 -1
- package/dist/esm/chunks/{account-pages-PNORWX72.js → account-pages-3C5KTPQV.js} +1 -1
- package/dist/esm/chunks/{analytics-V24XX2J7.js → analytics-VWSZOX2D.js} +1 -1
- package/dist/esm/chunks/{chunk-GOKJQGLG.js → chunk-2A2GN3Z7.js} +1 -1
- package/dist/esm/chunks/{chunk-YWQWLKFW.js → chunk-2IGCUTG5.js} +1 -1
- package/dist/esm/chunks/{chunk-F5CLIGSC.js → chunk-3UCVDDK6.js} +1 -1
- package/dist/esm/chunks/chunk-D3MRWOFI.js +1 -0
- package/dist/esm/chunks/{chunk-2X5U24IC.js → chunk-EUCFOBIT.js} +1 -1
- package/dist/esm/chunks/{chunk-2NV5PSJ2.js → chunk-F2BYVA7V.js} +1 -1
- package/dist/esm/chunks/{chunk-VKKKH75V.js → chunk-HROQXZYN.js} +1 -1
- package/dist/esm/chunks/{chunk-E3JL6WS3.js → chunk-MJNPD6LB.js} +1 -1
- package/dist/esm/chunks/{chunk-CR5IGHCO.js → chunk-OURC3H6L.js} +1 -1
- package/dist/esm/chunks/{chunk-RW23CJDZ.js → chunk-P6DV24RG.js} +1 -1
- package/dist/esm/chunks/chunk-P73VN3B6.js +1 -0
- package/dist/esm/chunks/{chunk-2LYWZ72A.js → chunk-S5BUUIB6.js} +1 -1
- package/dist/esm/chunks/chunk-SOFWDTR7.js +1 -0
- package/dist/esm/chunks/{chunk-2IHA3PVC.js → chunk-XU27NSXT.js} +1 -1
- package/dist/esm/chunks/chunk-YJC3CSEG.js +1 -0
- package/dist/esm/chunks/{chunk-6ZIOAYKF.js → chunk-ZBV2JSHE.js} +1 -1
- package/dist/esm/chunks/{diagnose-3RTKEBNW.js → diagnose-TE72GNOO.js} +1 -1
- package/dist/esm/chunks/{extras-O54VUXK6.js → extras-7GTMJMOZ.js} +1 -1
- package/dist/esm/chunks/{lists-MRTI5RXY.js → lists-ZMVRGD6L.js} +1 -1
- package/dist/esm/chunks/{markets-ui-P7G33T6Y.js → markets-ui-AAQM4PEE.js} +1 -1
- package/dist/esm/chunks/{search-YSRDFVD7.js → search-PWF4YZQO.js} +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/server.js +1 -1
- package/dist/tether.js +14 -5
- package/dist/tether.min.js +1 -1
- package/dist/tether.min.js.map +3 -3
- package/dist/types/src/version.d.ts +1 -1
- package/package.json +4 -3
- package/dist/esm/chunks/chunk-5B36ISJF.js +0 -1
- package/dist/esm/chunks/chunk-6WE7XCHH.js +0 -1
- package/dist/esm/chunks/chunk-TW34GYSL.js +0 -1
- package/dist/esm/chunks/chunk-YYNBHXQF.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const VERSION = "0.9.
|
|
1
|
+
export declare const VERSION = "0.9.1";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@occluze/tether",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.1",
|
|
4
4
|
"description": "Free, open-source alternative to Smootify and Storesynk (Shopyflow): Shopify products, cart and subscriptions in Webflow with HTML attributes. Optional Shopify to Webflow CMS sync.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/esm/index.js",
|
|
@@ -41,16 +41,17 @@
|
|
|
41
41
|
"deps": "depcruise --config .config/dependency-cruiser.cjs src server/src server/bin server/scripts scripts",
|
|
42
42
|
"check": "npm run format:check && npm run lint && npm run typecheck && npm run knip && npm run deps && npm test",
|
|
43
43
|
"prepare": "lefthook install",
|
|
44
|
-
"test": "node --experimental-strip-types --import ./scripts/test-leaks.ts --test --test-timeout=
|
|
44
|
+
"test": "node --experimental-strip-types --import ./scripts/test-leaks.ts --test --test-timeout=300000 --test-force-exit --test-reporter=spec --test-reporter-destination=stdout --test-reporter=./scripts/test-leaks.ts --test-reporter-destination=stderr test/*.test.js server/test/*.test.js && npm run test:types",
|
|
45
45
|
"test:types": "tsc -p test/types/tsconfig.json",
|
|
46
46
|
"smoke": "node --experimental-strip-types scripts/smoke.ts",
|
|
47
47
|
"pretest": "node --experimental-strip-types scripts/build.ts --out .test-dist",
|
|
48
48
|
"presmoke": "node --experimental-strip-types scripts/build.ts",
|
|
49
49
|
"release": "node --experimental-strip-types scripts/release.ts",
|
|
50
|
-
"e2e:build": "npm run build &&
|
|
50
|
+
"e2e:build": "npm run build && node --experimental-strip-types scripts/e2e-build.ts && cd examples/astro && npm install --no-save --no-audit --no-fund --ignore-scripts ../.. && npx astro build",
|
|
51
51
|
"e2e": "npm run e2e:build && playwright test -c test/e2e/playwright.config.js"
|
|
52
52
|
},
|
|
53
53
|
"devDependencies": {
|
|
54
|
+
"@eslint-community/eslint-plugin-eslint-comments": "4.8.1",
|
|
54
55
|
"@eslint/js": "10.0.1",
|
|
55
56
|
"@playwright/test": "1.64.1",
|
|
56
57
|
"@tsconfig/strictest": "2.0.8",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var e={diagnose:()=>import("./diagnose-3RTKEBNW.js"),markets:()=>import("./markets-ui-P7G33T6Y.js"),search:()=>import("./search-YSRDFVD7.js"),lists:()=>import("./lists-MRTI5RXY.js"),extras:()=>import("./extras-O54VUXK6.js"),account:()=>import("./account-FKLGF264.js"),"account-pages":()=>import("./account-pages-PNORWX72.js"),analytics:()=>import("./analytics-V24XX2J7.js")},a=t=>e[t](),o=void 0;export{a,o as b};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as n}from"./chunk-5B36ISJF.js";import{g as r}from"./chunk-YWQWLKFW.js";import{m as e}from"./chunk-TW34GYSL.js";import{z as i}from"./chunk-YYNBHXQF.js";var d=()=>`${e("collection")},${e("products")},${e("recommendations")}`;function a(t){return r(t,"loading"),{root:t,load:()=>n("lists").then(o=>o.loadList(t)).catch(o=>{r(t,"error",o),i(o,"lists")})}}export{d as a,a as b};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{A as j,E as q,F as Q,b as T,d as E,e as x,o as V,p as G,r as c,x as O,y as S,z as b}from"./chunk-YYNBHXQF.js";var g=class extends Error{constructor(r,{status:n,errors:o,userErrors:i,code:s}={}){super(r);T(this,"name","TetherError");T(this,"code");T(this,"status");T(this,"errors");T(this,"userErrors");this.code=s??(n?`HTTP_${n}`:"ERROR"),this.status=n,this.errors=o,this.userErrors=i}};function v(t,e){return typeof e=="function"?e(t):typeof e=="string"?e==="object"?E(t):typeof t===e:Et(e)?Array.isArray(t)&&t.every(r=>v(r,e[0])):E(t)&&Object.entries(e).every(([r,n])=>n===void 0||v(t[r],n))}var Et=t=>Array.isArray(t),_e=t=>e=>e===null||v(e,t),Ue=t=>e=>v(e,t);function Tt(t=c){return`https://${t.domain}/api/${t.apiVersion}/graphql.json`}var Y=/"(?:\\.|[^"\\\n])*"|#[^\n]*/g,bt=/^\s*(?:query|mutation)(?:\s+\w+)?\s*(?:\([^)]*\))?/;function wt(t){return/\bmutation\b/.test(t.replace(Y,""))?"mutation":"query"}function J(t,{country:e,language:r}){let n=[];if(e&&n.push(`country: ${e}`),r&&n.push(`language: ${r}`),!n.length)return t;let o=`@inContext(${n.join(", ")})`,i=t.replace(Y,p=>" ".repeat(p.length)),s=i.indexOf("{");if(i.slice(0,s).includes("@inContext"))return t;if(i.trimStart().startsWith("{"))return`query ${o} ${t.slice(s)}`;let a=bt.exec(i);if(!a)return t;let l=a[0].length;return`${t.slice(0,l).trimEnd()} ${o} ${t.slice(l).trimStart()}`}function He(t,e=c){let r=V(e.country)??void 0,n=G(e.language)??void 0;return J(t,{country:r,language:n})}var N=300,St=500,W=430,At=1e3,C="quantityAvailable",B=new Set,xt=t=>`${t.domain} ${t.apiVersion} ${t.token}`;function vt(t,e,r,{context:n,operation:o}){let i=typeof e=="string"?e:e(r),s=n?J(i,t):i;return t.maxAge<=0||o==="mutation"?s:`${s} #${Math.floor(Date.now()/(t.maxAge*At))}`}var kt=t=>new Promise(e=>setTimeout(e,t));function I(t,e){if(t===401||t===403){let r=e.token.startsWith("shpat_")?", not an Admin API token (shpat_\u2026)":"";return`Shopify rejected the Storefront token for ${e.domain} (${t}): use the public Storefront API token (Headless channel)${r}`}return t===404?`Store or API version not found (404): check domain ${e.domain} and apiVersion ${e.apiVersion}`:`HTTP ${t} from ${e.domain}`}function Rt(t){let e=x(t,"message"),r=x(x(t,"extensions"),"code"),n=typeof e=="string"?e:"";return typeof r=="string"?{message:n,extensions:{code:r}}:{message:n}}function Ot(t){if(!E(t))return null;let{data:e,errors:r}=t;return r==null?{data:e}:Array.isArray(r)?{data:e,errors:r.map(Rt)}:null}function L(t,e){return t.ok?new g(`Invalid response (${t.status})`,{code:"INVALID_RESPONSE",status:t.status}):new g(I(t.status,e),{status:t.status})}function K(t,e,r,n){let o=e.map(s=>s.message).filter(Boolean).join(" | "),i=o||"Storefront API error";return t.ok||(i=t.status===401||t.status===403||!o?I(t.status,r):o),new g(i,{status:t.status,errors:e,code:n})}function z(t,e){if(e==="any")return{kind:"retry",backoffMs:N};throw new g(`Network error: ${j(t)}`,{code:"NETWORK"})}function Lt(t,e,r,n,o,i,s){if(r.includes(C)&&n.some(d=>d.message.includes(C)))return{kind:"inventory-refused",error:K(t,n,e)};let a=n.map(d=>d.extensions?.code);if(i!=="none"&&a.includes("THROTTLED"))return{kind:"retry",backoffMs:St};let l=a.includes("INTERNAL_SERVER_ERROR");if(i==="any"&&l)return{kind:"retry",backoffMs:N};let p=t.ok&&(l||s==="mutation"&&o==null);throw K(t,n,e,p?"SERVER_ERROR":void 0)}async function Ct(t,e){if(!t)return e(null);let r=new AbortController,n=setTimeout(()=>{r.abort(new DOMException("signal timed out","TimeoutError"))},t);try{return await e(r.signal)}finally{clearTimeout(n)}}async function Nt(t,e,r,n,o,i,s){let a;try{a=await(t.fetch??fetch)(Tt(t),{method:"POST",headers:{"Content-Type":"application/json","X-Shopify-Storefront-Access-Token":t.token},body:JSON.stringify({query:e,variables:r}),signal:s})}catch(f){return z(f,o)}if(a.status===W)throw new g("Shopify security rejection (430)",{status:W});if(o!=="none"&&a.status===429||o==="any"&&a.status>=500)return{kind:"retry",backoffMs:N};let l;try{l=await a.json()}catch(f){if(f instanceof SyntaxError)throw L(a,t);return z(f,o)}let p=Ot(l);if(!p)throw L(a,t);let{data:d,errors:h=[]}=p;if(h.length)return Lt(a,t,e,h,d,o,i);if(!a.ok)throw new g(I(a.status,t),{status:a.status});if(!n(d))throw L(a,t);return{kind:"data",data:d}}async function X(t,e,r,n,{context:o=!0,operation:i="query"}={}){if(!t.domain||!t.token)throw new g("Tether is not configured: domain and token are required",{code:"NOT_CONFIGURED"});let s=xt(t),a=i==="mutation"?"not-run":"any",l=0;for(;;){let p={inventory:!B.has(s)},d=vt(t,e,p,{context:o,operation:i}),h=l<t.retries?a:"none",f=await Ct(t.requestTimeout,w=>Nt(t,d,r,n,h,i,w));switch(f.kind){case"data":return f.data;case"inventory-refused":if(typeof e=="string"||!p.inventory)throw f.error;O(`the token can't read inventory: ${C} is left out from now on`),B.add(s);break;case"retry":await kt(f.backoffMs*2**l),l+=1,O("retry",l);break}}}function $e(t,e,r,n){return X(c,t,e,r,n)}var It=t=>typeof t=="object"&&t!==null;function Pt(t,e,r={},n){return X(t,e,r,It,{...n,operation:wt(e)})}function De(t,e,r){return Pt(c,t,e,r)}function Fe(t,e){if(!t)throw new g(`${e}: empty response`);let r=t.userErrors??[];if(r.length)throw new g(r.map(n=>n.message).join(" | "),{userErrors:r});return t}var m=t=>`${c.prefix}-${t}`,Mt=(t,e)=>e===void 0?`[${m(t)}]`:`[${m(t)}="${e}"]`,P=(t,e)=>t.getAttribute(m(e)),_t=(t,e)=>t.hasAttribute(m(e));function Z(t,e){return t?[...t.querySelectorAll(e)]:[]}var Ut=(t,e,r)=>Z(t,e).filter(n=>n.closest(r)===t),Ht=["product-ready","list-ready","cart-updated","cart-toggled","checkout","search"],tt=new WeakMap;function et(t,e){let r=new CustomEvent(`${c.prefix}:${t}`,{detail:e,bubbles:!0});return tt.set(r,t),r}function $t(t,e){return tt.get(t)===e}function M(t,e,r=document){r.dispatchEvent(et(t,e))}function nt(t,{width:e,height:r,crop:n}={}){if(!t)return t;let o;try{o=new URL(t)}catch(i){if(i instanceof TypeError)return t;throw i}return e&&o.searchParams.set("width",String(e)),r&&o.searchParams.set("height",String(r)),n&&o.searchParams.set("crop",n),o.toString()}function _(t,e){return t.getAttribute(e)??t.getAttribute(m(e))??t.getAttribute(`data-${e}`)}function ot(t,e){if(!t||!e)return t;let r=_(e,"max-width"),n=_(e,"max-height");return nt(t,{width:r,height:n,crop:r||n?_(e,"crop"):null})}var rt=t=>t.replace(/\?.*$/,"");function it(t,e){return!t||!e?!1:rt(t)===rt(e)}function Dt(t){return/^\s*[a-z][a-z0-9+.-]*:/i.test(t)&&!/^\s*(https?:|data:image\/)/i.test(t)?"none":`url("${t.replace(/["\\\n\r\f]/g,n=>`\\${n.charCodeAt(0).toString(16)} `)}")`}function Ft(t,e,r){if(!e)return;let n=ot(e,t);if(t.tagName!=="IMG"){t.style.backgroundImage=Dt(n);return}if(it(t.getAttribute("src"),n)){r!=null&&!t.getAttribute("alt")&&t.setAttribute("alt",r);return}t.removeAttribute("srcset"),t.removeAttribute("sizes"),t.setAttribute("src",n),r!=null&&t.setAttribute("alt",r),t.getAttribute("loading")||t.setAttribute("loading","lazy")}var U=new WeakMap,Vt=t=>!!U.get(t),H=t=>t.cloneNode(!0);function st(t){let e=U.get(t);if(e!==void 0)return e;let r=t.firstElementChild,n=r?H(r):null;return U.set(t,n),t.replaceChildren(),n}function Gt(t,e,r){let n=st(t);if(!n){e.length&&S("repeater without a template child",t);return}t.replaceChildren(),e.forEach((o,i)=>{let s=H(n);r(s,o,i),t.appendChild(s)})}function jt(t,e){let r=()=>{t.remove()};if(!e){r();return}try{e(t,r)}catch(n){b(n,"repeater onLeave"),r()}}function qt(t,e,r,n){e.forEach((o,i)=>{if(!r.has(o))return;let s=e[i-1];if(s?.parentNode===t?s.after(o):t.prepend(o),!!n)try{n(o)}catch(a){b(a,"repeater onEnter")}})}function Qt(t,e,r,n,{onEnter:o,onLeave:i}={}){let s=st(t);if(!s){S("repeater without a template child",t);return}let a=`data-${c.prefix}-key`,l=`data-${c.prefix}-leaving`,p=()=>[...t.children].filter(u=>u.hasAttribute(a)&&!u.hasAttribute(l)),d=new Map(p().map(u=>[u.getAttribute(a),u])),h=[],f=new Set;e.forEach((u,A)=>{let R=String(r(u,A)),y=d.get(R);y?d.delete(R):(y=H(s),y.setAttribute(a,R),f.add(y)),n(y,u,A,f.has(y)),h.push(y)});let w=h.filter(u=>!f.has(u)),F=p().filter(u=>w.includes(u));if(!(F.length===w.length&&F.every((u,A)=>u===w[A]))){d.forEach(u=>{u.remove()}),h.forEach(u=>t.appendChild(u));return}qt(t,h,f,o),d.forEach(u=>{u.setAttribute(l,""),u.removeAttribute(a),u.style.pointerEvents="none",u.inert=!0,jt(u,i)})}var Wt="http://www.w3.org/1999/xhtml",Bt=new Set(["h1","h2","h3","h4","h5","h6","p","span","div","br","hr","blockquote","code","pre","strong","em","b","i","u","s","small","sub","sup","ul","ol","li","dl","dt","dd","table","caption","colgroup","col","thead","tbody","tfoot","tr","th","td","a","img","picture","source","video","figure","figcaption","iframe"]),Kt=new Set(["script","style","template","noscript","textarea","select","title"]),zt=new Set(["style","title","lang","dir","role","align","width","height"]),Yt=new Map([["a",new Set(["href","target","rel","hreflang"])],["img",new Set(["src","srcset","sizes","alt","loading","decoding"])],["source",new Set(["src","srcset","sizes","type","media"])],["video",new Set(["src","poster","controls","autoplay","muted","loop","playsinline","preload"])],["iframe",new Set(["src","allow","allowfullscreen","frameborder","loading"])],["blockquote",new Set(["cite"])],["ol",new Set(["start","type","reversed"])],["li",new Set(["value"])],["table",new Set(["border","cellpadding","cellspacing","summary"])],["col",new Set(["span"])],["colgroup",new Set(["span"])],["th",new Set(["colspan","rowspan","headers","scope","valign"])],["td",new Set(["colspan","rowspan","headers","valign"])]]),Jt=new Set(["href","src","poster","cite"]),Xt=/^(javascript|vbscript|data):/i,Zt=/^data:image\/(png|gif|jpeg|webp|avif);/i,te=new Set(["position","top","right","bottom","left","z-index","-webkit-box-reflect"]),ee=["inset","transform","translate","rotate","scale","offset"],re=/\d(?:[sld]?v|cq)(?:w|h|i|b|min|max)\b/i,ne=/^(?:outline|box-shadow|text-shadow|filter|text-decoration|text-underline-offset|text-stroke)|^(?:border-image|mask-border|mask-box-image)(?:-outset)?$/,at=40,oe=new Map([["letter-spacing",{px:4,em:.25}],["word-spacing",{px:4,em:.25}],["text-indent",{px:at}]]),ut=/(?<![\w#.-])[+-]?(?:\d+\.?\d*|\.\d+)(?:e[+-]?\d+)?(%|[a-z]+)?/gi,ie=/(?<![\w-])(?!drop-shadow\(|blur\()[\w-]+\([^()]*\)/g,ct=/(?:var|calc|min|max|clamp|env|attr)\(/i,se=/url\(|expression\(|@import/i,ae=/[\u0000- ]/g,ue="allow-scripts allow-same-origin allow-popups allow-presentation",ce=new Set(["autoplay","encrypted-media","picture-in-picture","fullscreen","clipboard-write","accelerometer","gyroscope","web-share"]),le="strict-origin-when-cross-origin",de=["https://www.youtube.com","https://www.youtube-nocookie.com","https://player.vimeo.com","https://www.loom.com","https://fast.wistia.net"];function fe(t,e){return zt.has(e)||e.startsWith("aria-")||(Yt.get(t)?.has(e)??!1)}function pe(t,e,r){let n=r.replace(ae,"");return Xt.test(n)?t==="img"&&e==="src"&&Zt.test(n):!0}function lt(t,e){try{return new URL(t,e)}catch{return null}}function ge(t,e,r){let n=t.baseURI,o=lt(n)?.origin??"null";return{origin:o==="null"?null:o,baseUrl:n,styleParser:e,embedOrigins:new Set([...de,...r])}}function me(t,e){let r=lt(t.trim(),e.baseUrl);return r!==null&&r.origin!==e.origin&&e.embedOrigins.has(r.origin)}function he(t){let e=t.split(";").map(r=>r.trim().split(/\s+/)[0]?.toLowerCase()??"");return[...new Set(e.filter(r=>ce.has(r)))].join("; ")}function ye(t,e){if(te.has(t)||ee.some(n=>t.startsWith(n))||re.test(e))return!0;let r=oe.get(t);return r?ct.test(e)||Ee(e,r):t.startsWith("margin")&&e.includes("-")}function Ee(t,e){return[...t.matchAll(ut)].some(([r="",n=""])=>{let o=parseFloat(r);if(o>=0)return!1;let i=e[n.toLowerCase()];return i===void 0||-o>i})}function Te(t,e){return ne.test(t.replace(/^-webkit-/,""))?ct.test(e)?!0:[...e.replace(ie,"").matchAll(ut)].some(([r="",n=""])=>{let o=Math.abs(parseFloat(r));return o!==0&&(n.toLowerCase()!=="px"||o>at)}):!1}function be(t,e){let r=e.style;r.cssText=t;let n=Array.from({length:r.length},(i,s)=>r.item(s));for(let i of n){let s=r.getPropertyValue(i);(ye(i,s)||Te(i,s)||se.test(s))&&r.removeProperty(i)}let o=r.cssText;return e.removeAttribute("style"),o}function we(t,e){let r=t.localName;for(let i of[...t.attributes]){let s=i.name.toLowerCase(),a=Jt.has(s);fe(r,s)&&(!a||pe(r,s,i.value))||t.removeAttribute(i.name)}let n=t.getAttribute("style");if(n===null)return;let o=be(n,e.styleParser);o===""?t.removeAttribute("style"):t.setAttribute("style",o)}function Se(t){if(t.localName==="iframe"){let r=he(t.getAttribute("allow")??"");r===""?t.removeAttribute("allow"):t.setAttribute("allow",r),t.setAttribute("sandbox",ue),t.setAttribute("referrerpolicy",le);return}if(t.localName!=="a"||t.getAttribute("target")?.toLowerCase()!=="_blank")return;let e=new Set((t.getAttribute("rel")??"").split(/\s+/).filter(Boolean));e.add("noopener"),e.add("noreferrer"),t.setAttribute("rel",[...e].join(" "))}function Ae(t,e){let r=t.localName,n=t.namespaceURI===Wt;if(n&&Kt.has(r)){t.remove();return}if(!n||!Bt.has(r)){t.replaceWith(...t.childNodes);return}if(r==="iframe"&&!me(t.getAttribute("src")??"",e)){t.remove();return}we(t,e),Se(t)}function dt(t,e=globalThis.document,r=[]){let n=e.createElement("template");n.innerHTML=t??"";let o=ge(e,n,r);for(let i of[...n.content.querySelectorAll("*")])Ae(i,o);return n.content}var ft="data-tether-seen",D="data-tether-shown",k="data-tether-prev-display",xe=120;function er(t,e){return Q(c.productPath||"/product",t,e)}function ht(t,e){try{return t()}catch(r){if(r instanceof RangeError)return e;throw r}}function rr(t,e=c.locale){return t?ht(()=>new Intl.NumberFormat(e||void 0,{style:"percent",maximumFractionDigits:0}).format(t/100),`${t}%`):""}function nr(t){return t?c.formatMoney?c.formatMoney(t,c.locale):q(t,c.locale):""}function or(t){return t?ht(()=>new Date(t).toLocaleDateString(c.locale||void 0),""):""}function ir(t,e){t.replaceChildren(dt(e,t.ownerDocument,c.embedOrigins))}var yt=t=>t.tagName==="INPUT"||t.tagName==="TEXTAREA",pt=t=>t.tagName==="INPUT";function ve(t,e){let r=e==null?"":String(e);yt(t)?t.value=r:t.textContent=r}var gt=t=>yt(t)?t.value:t.textContent;function sr(t,e){let r=gt(t);if(ve(t,e),r!==gt(t)&&t.hasAttribute(ft)&&c.onValueChange)try{c.onValueChange(t,r)}catch(n){b(n,"onValueChange")}t.setAttribute(ft,"1")}function ke(t){if(t.hasAttribute(D))return;t.setAttribute(D,""),t.removeAttribute("hidden");let e=t.getAttribute(k);e!==null?(t.style.display=e,t.removeAttribute(k)):t.style.display==="none"&&(t.style.display=""),typeof getComputedStyle=="function"&&getComputedStyle(t).display==="none"&&(t.style.display=t.getAttribute(m("display"))||"block")}function ar(t,e){if(e){ke(t);return}t.removeAttribute(D),!t.hasAttribute(k)&&t.style.display!=="none"&&t.setAttribute(k,t.style.display),t.style.display="none"}function ur(t,e){t.classList.toggle("is-selected",e),t.setAttribute("aria-pressed",e?"true":"false"),pt(t)&&(t.type==="radio"||t.type==="checkbox")&&(t.checked=e);let r=t.querySelector('input[type="radio"],input[type="checkbox"]');r&&pt(r)&&(r.checked=e)}var mt,Re=t=>Reflect.get(window,t);function Oe(){let t=Re("ScrollTrigger");if(typeof t!="function")return;let e=Reflect.get(t,"refresh");typeof e=="function"&&Reflect.apply(e,t,[])}function Le(t){clearTimeout(mt),mt=setTimeout(()=>{try{c.onLayoutChange?c.onLayoutChange(t):Oe()}catch(e){b(e,"layout-changed")}M("layout-changed",{reason:t})},xe)}function cr(t,e){let r=[...t.querySelectorAll("img")].filter(i=>!i.complete),n=r.length,o=()=>{n-=1,n===0&&Le(`${e}:images`)};r.forEach(i=>{i.addEventListener("load",o,{once:!0}),i.addEventListener("error",o,{once:!0})})}function lr(t,e){return t.getAttribute("aria-busy")==="true"?Promise.resolve(void 0):(t.setAttribute("aria-busy","true"),Promise.resolve().then(e).finally(()=>{t.removeAttribute("aria-busy")}))}function dr(t,e){let r=t?P(t,e):null;if(!r)return null;try{return JSON.parse(r)}catch{return S(`invalid JSON in ${m(e)}`,t),null}}function $(t){return t==null?"":typeof t=="string"?t:typeof t=="number"||typeof t=="boolean"?String(t):JSON.stringify(t)}function fr(t){return Array.isArray(t)?t.filter(E).map(r=>({key:$(r.key),value:$(r.value)})):E(t)?Object.entries(t).map(([e,r])=>({key:e,value:$(r)})):[]}function pr(t){return t?Array.isArray(t)?t.map(e=>({key:String(e.key),value:String(e.value??"")})):Object.entries(t).map(([e,r])=>({key:e,value:String(r??"")})):[]}export{g as a,v as b,_e as c,Ue as d,Tt as e,He as f,X as g,$e as h,Pt as i,De as j,Fe as k,m as l,Mt as m,P as n,_t as o,Z as p,Ut as q,Ht as r,$t as s,M as t,nt as u,it as v,Ft as w,Vt as x,Gt as y,Qt as z,er as A,rr as B,nr as C,or as D,ir as E,ve as F,sr as G,ar as H,ur as I,Re as J,Le as K,cr as L,lr as M,dr as N,fr as O,pr as P};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var b=Object.defineProperty;var Y=(n,e,t)=>e in n?b(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t;var Un=(n,e)=>{for(var t in e)b(n,t,{get:e[t],enumerable:!0})};var Fn=(n,e,t)=>Y(n,typeof e!="symbol"?e+"":e,t);var G=/^(\d{4})-(01|04|07|10)$/;function T(n){let e=G.exec(typeof n=="string"?n:"");return e?{year:Number(e[1]),month:Number(e[2])}:null}var A=n=>T(n)!==null,z=(n,e)=>`${n}-${String(e).padStart(2,"0")}`;function S(n,e=1){let t=T(n);if(!t)throw new Error(`not a quarterly Shopify API version: ${n}`);let o=t.year*4+(t.month-1)/3+e;return z(Math.floor(o/4),o%4*3+1)}function Vn(n,e=new Date){if(n==="unstable")return{version:n,ok:!1,note:'"unstable" changes without notice: pin a dated version such as 2026-07'};let t=T(n);if(!t)return{version:n,ok:!1,note:"not a quarterly version (YYYY-01, -04, -07 or -10)"};let o=new Date(Date.UTC(t.year,t.month-1,1)),r=new Date(Date.UTC(t.year,t.month-1+12,1)),i=(r.getTime()-e.getTime())/2630016e3,f=o<=e,u=`supported until about ${r.toISOString().slice(0,7)}`;return f?i<=0?u="no longer supported: Shopify falls back to the oldest supported version. Upgrade (see docs/reference.md)":i<3&&(u=`${u}: plan the upgrade to ${S(n)} or later (see docs/reference.md)`):u="not released yet (release candidate at best)",{version:n,ok:f&&i>0,monthsLeft:Math.round(i),next:S(n),note:u}}function O(n){return n!==null&&typeof n=="object"&&!Array.isArray(n)}function j(n,e){return O(n)?n[e]:void 0}function v(n){return Array.isArray(n)?n:[]}function Q(n){return typeof n=="string"&&n!==""?n:null}var Z=n=>typeof n=="number"&&Number.isFinite(n)?n:null,Hn=n=>Z(n)??0,x=(n,e)=>v(n).map(t=>e(t)),Kn=(n,e)=>({nodes:x(j(n,"nodes"),e)}),Yn=n=>x(n,Q).filter(e=>e!==null);var B=/^[A-Z]{2}$/,q=new Set(["XX","T1"]),W=new Set(["PT_BR","PT_PT","ZH_CN","ZH_TW"]),X=/^[A-Z]{2,3}$/;function k(n){let e=(typeof n=="string"?n:"").trim().toUpperCase();return!B.test(e)||q.has(e)?null:e}function h(n){let e=(typeof n=="string"?n:"").trim().replace("-","_").toUpperCase();if(W.has(e))return e;let t=e.split("_")[0]??"";return X.test(t)?t:null}var E="2026-07";var J=/^[A-Za-z0-9_.-]+$/,nn=/^(\$app(:[A-Za-z0-9_-]+)?|[A-Za-z0-9_.-]+)$/,en=/^[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i,tn=/^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/,on=/^[A-Za-z_$][\w$]*$/,R="https://site.invalid",rn=new Set(["localhost","127.0.0.1","[::1]"]),N=["saved","server","webflow"],sn=["no-banner","default-banner","custom-banner"],y=n=>typeof n=="string"&&n!=="",an=n=>typeof n=="function";function P(n,e){if(typeof n!="string"||!n)return"";let t=n.replace(/^https?:\/\//,"").replace(/\/.*$/,"");return fn(t)?t:(e("domain",n),"")}function M(n){if(!y(n))return!1;try{let e=new URL(n,`${R}/`);return e.origin===R?!0:e.protocol==="https:"||e.protocol==="http:"&&rn.has(e.hostname)}catch{return!1}}function I(n,e){return n==null||n===""?null:typeof n=="string"&&(M(n)||un(n))?n:(e("partsUrl",n),null)}function un(n){if(typeof location>"u")return!1;try{return new URL(n).origin===location.origin}catch{return!1}}function cn(n){if(typeof n!="string")return null;try{let e=new URL(n);return e.protocol==="https:"&&e.href===new URL(e.origin).href?e.origin:null}catch{return null}}function L(n,e){if(!Array.isArray(n))return e("embedOrigins",n),[];let t=[],o=n;for(let r of o){let i=cn(r);i?t.push(i):e("embedOrigin",r)}return t}function ln(n){let e,t;if(typeof n=="string"){let o=n.indexOf(".");e=o>0?n.slice(0,o):"",t=n.slice(o+1)}else typeof n=="object"&&n!==null&&(e=Reflect.get(n,"namespace"),t=Reflect.get(n,"key"));return typeof e!="string"||typeof t!="string"?null:nn.test(e)&&J.test(t)?{namespace:e,key:t}:null}function U(n,e){if(!Array.isArray(n))return e("metafields",n),[];let t=[],o=n;for(let r of o){let i=ln(r);i?t.push(typeof r=="string"?r:i):e("metafield",r)}return t}var d=n=>e=>n(e)?e:void 0,fn=n=>y(n)&&en.test(n),dn=n=>y(n)&&tn.test(n),pn=n=>typeof n=="boolean"||y(n)&&on.test(n),g=d(M),C=d(y),_=d(n=>typeof n=="boolean"),F=d(an);function m(n,e,t,o){if(e==null)return null;if(!O(e))return o(n,e),null;let r={};for(let i in t){let f=e[i];if(f===void 0)continue;let u=t[i](f);u===void 0?o(`${n}.${i}`,f):r[i]=u}return r}var gn={server:g,orderUrl:g,subscriptionsUrl:g,paymentUrl:g,logoutUrl:g,locale:C,navigate:F},yn="customer accounts need the Worker since 0.7.0: set account.server",mn={country:C,language:C,locale:C},On={detect:n=>{if(typeof n=="boolean")return n;let e=Array.isArray(n)?n:[n];return typeof n=="string"||Array.isArray(n)?N.filter(t=>e.includes(t)):void 0},locales:n=>{if(!O(n))return;let e={};for(let[t,o]of Object.entries(n)){let r=m(`markets.locales.${t}`,o,mn,()=>{});r&&(e[t]=r)}return e},cookie:d(dn),remember:_,strict:_},Cn={consent:n=>sn.find(e=>e===n),proxy:n=>n!==void 0&&!!n},Tn={dataLayer:d(pn),shopify:n=>typeof n=="boolean"?n:m("analytics.shopify",n,Cn,()=>{})??void 0,onEvent:F};function $(n,e,t){let o=m("account",n,gn,e);if(o===null)return null;let{server:r}=o;return r===void 0?(t(yn),null):{...o,server:r}}var w=(n,e)=>m("markets",n,On,e),V=(n,e)=>m("analytics",n,Tn,e);var c={domain:"",token:"",apiVersion:E,country:void 0,language:void 0,locale:void 0,markets:null,prefix:"tether",productPath:"/product",collectionPath:"/collection",metafields:[],embedOrigins:[],imagesFirst:25,variantsFirst:100,sellingPlanGroupsFirst:10,sellingPlansFirst:25,collectionFirst:24,retries:2,requestTimeout:15e3,revalidate:!0,storageKey:"",cartDrawerOpenClass:"is-open",openCartOnAdd:!0,cartFocus:!0,checkoutTarget:"_self",defaultPurchase:"one-time",variantUrl:!1,maxAge:60,lowStock:5,searchDelay:150,autoMount:!0,observe:!1,astro:!0,partsUrl:null,analytics:null,account:null,warningText:null,formatMoney:null,onLayoutChange:null,onCartOpen:null,onCartClose:null,onLineEnter:null,onLineLeave:null,onValueChange:null,onError:null,debug:!1},a={...c};function K(n){let e=t=>(l(`Tether.config is read-only (${String(t)}): pass options to Tether.init() instead`),!1);return new Proxy(n,{get(t,o){let r=Reflect.get(t,o);return typeof r=="object"&&r!==null?K(r):r},set:(t,o)=>e(o),deleteProperty:(t,o)=>e(o),defineProperty:(t,o)=>e(o)})}var ne=K(a),kn=/^[a-z][a-z0-9-]*$/,hn=["revalidate","openCartOnAdd","cartFocus","variantUrl","autoMount","observe","astro","debug"],wn=["token","productPath","collectionPath","cartDrawerOpenClass"],bn=["imagesFirst","variantsFirst","sellingPlanGroupsFirst","sellingPlansFirst","collectionFirst","retries","requestTimeout","maxAge","lowStock","searchDelay"],Sn=["warningText","formatMoney","onLayoutChange","onCartOpen","onCartClose","onLineEnter","onLineLeave","onValueChange","onError"];function p(n,e,t){return e!==void 0&&l(`invalid ${n} ${JSON.stringify(e)}: using ${JSON.stringify(t)}`),t}function s(n,e){l(`invalid ${n} ${JSON.stringify(e)}: ignored`)}function An(n){for(let e of Object.keys(n))e in c||l(`unknown option ${JSON.stringify(e)}: ignored`)}function xn(n,e,t){typeof t=="function"?n[e]=t:t!=null&&s(e,t)}var En=new Set(["requestTimeout","searchDelay"]),Rn=2147483647;function _n(n,e){let t=En.has(n)?Rn:Number.POSITIVE_INFINITY;return typeof e=="number"&&Number.isInteger(e)&&e>=0&&e<=t?e:p(n,e,c[n])}function Nn(n,e){return typeof e=="boolean"?e:p(n,e,c[n])}function Pn(n,e){return typeof e=="string"?e:p(n,e,c[n])}function Mn(n){if(!(n==null||n==="")){try{if(typeof n=="string"&&Intl.getCanonicalLocales(n).length)return n}catch{}s("locale",n)}}function D(n,e,t){return t.find(o=>o===e)??p(n,e,t[0])}function In(n){return n==="unstable"?(l('apiVersion "unstable" changes without notice. Pin a dated version (e.g. 2026-07).'),n):A(n)?n:p("apiVersion",n,c.apiVersion)}function H(n,e,t){if(e==null||e==="")return;let o=t(e);if(o!==null)return o;s(n,e)}function Ln(n){An(n);let e=P(n.domain,s),t=typeof n.prefix=="string"&&kn.test(n.prefix)?n.prefix:p("prefix",n.prefix,c.prefix),o={...c,domain:e,apiVersion:In(n.apiVersion),country:H("country",n.country,k),locale:Mn(n.locale),partsUrl:I(n.partsUrl,s),language:H("language",n.language,h),markets:w(n.markets,s),analytics:V(n.analytics,s),account:$(n.account,s,l),prefix:t,storageKey:typeof n.storageKey=="string"&&n.storageKey?n.storageKey:`${t}:cart:${e}`,metafields:U(n.metafields??[],s),embedOrigins:L(n.embedOrigins??[],s),checkoutTarget:D("checkoutTarget",n.checkoutTarget,["_self","_blank"]),defaultPurchase:D("defaultPurchase",n.defaultPurchase,["one-time","subscription"])};for(let r of bn)o[r]=_n(r,n[r]);for(let r of hn)o[r]=Nn(r,n[r]);for(let r of wn)o[r]=Pn(r,n[r]);for(let r of Sn)xn(o,r,n[r]);return o}var ee=n=>w(n,s);function te(n={}){let e=Ln(n);for(let t of Object.keys(a))t in e||Reflect.deleteProperty(a,t);return Object.assign(a,e)}var oe=()=>!!(a.domain&&a.token);function re(...n){a.debug&&console.log(`[${a.prefix}]`,...n)}function l(...n){console.warn(`[${a.prefix}]`,...n)}function ie(n,e){if(l(e,n instanceof Error&&n.message?n.message:n),!!a.onError)try{a.onError(n,e)}catch(t){l("onError threw",t)}}function ue(n){return n instanceof Error?n.message:String(n)}var le={domain:["PUBLIC_SHOPIFY_DOMAIN","PUBLIC_SHOPIFY_STORE_DOMAIN","SHOPIFY_DOMAIN"],token:["PUBLIC_SHOPIFY_STOREFRONT_TOKEN","PUBLIC_SHOPIFY_STOREFRONT_ACCESS_TOKEN","SHOPIFY_STOREFRONT_TOKEN"]};function fe(n){if(typeof n!="string")return!1;try{return new URL(n).protocol==="https:"}catch{return!1}}function de(n){return/^shp[a-z]{2}_/.test(n.trim())}function pe(n,e){if(!n)return"";let t=parseFloat(n.amount);if(Number.isNaN(t))return"";try{return new Intl.NumberFormat(e||void 0,{style:"currency",currency:n.currencyCode}).format(t)}catch{return`${n.currencyCode} ${t.toFixed(2)}`}}function ge(n,e,t){if(!/\{(handle|id)\}/.test(n))return e?`${n.replace(/\/$/,"")}/${encodeURIComponent(e)}`:null;let o=t?t.split("/").at(-1)??"":"";return n.includes("{handle}")&&!e||n.includes("{id}")&&!o?null:n.replace(/\{handle\}/g,encodeURIComponent(e??"")).replace(/\{id\}/g,encodeURIComponent(o))}function ye(n){let e=String(n??"").trim();return e?e.startsWith("gid://")?e:/^\d+$/.test(e)?`gid://shopify/Product/${e}`:/\/products\/([^/?#]+)/.exec(e)?.[1]??e:null}export{Un as a,Fn as b,Vn as c,O as d,j as e,v as f,Q as g,Z as h,Hn as i,x as j,Kn as k,Yn as l,N as m,ln as n,k as o,h as p,c as q,a as r,ne as s,Ln as t,ee as u,te as v,oe as w,re as x,l as y,ie as z,ue as A,le as B,fe as C,de as D,pe as E,ge as F,ye as G};
|