@shopify/hydrogen 2023.7.13 → 2023.7.15
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/development/index.cjs +18 -3
- package/dist/development/index.cjs.map +1 -1
- package/dist/development/index.js +18 -3
- package/dist/development/index.js.map +1 -1
- package/dist/production/index.cjs +37 -37
- package/dist/production/index.cjs.map +1 -1
- package/dist/production/index.js +20 -20
- package/dist/production/index.js.map +1 -1
- package/package.json +1 -1
package/dist/production/index.js
CHANGED
|
@@ -4,10 +4,10 @@ import { redirect } from '@remix-run/server-runtime';
|
|
|
4
4
|
import { lazy, createContext, forwardRef, useMemo, createElement, Suspense, Fragment, useState, useRef, useEffect, useContext } from 'react';
|
|
5
5
|
import { useMatches, useLocation, useNavigation, Link, useNavigate, useFetcher, useFetchers } from '@remix-run/react';
|
|
6
6
|
import { jsx, jsxs, Fragment as Fragment$1 } from 'react/jsx-runtime';
|
|
7
|
-
import
|
|
7
|
+
import br from 'content-security-policy-builder';
|
|
8
8
|
|
|
9
|
-
function De(e){let t=Array.isArray(e)?e:[e],r="";for(let a of t)a!=null&&(typeof a=="object"?a.body&&typeof a.body=="string"?r+=a.body:r+=JSON.stringify(a):r+=a);return encodeURIComponent(r)}var V="public",
|
|
10
|
-
`))||`API response error: ${e.status}`;throw new o(`[h2:error:storefront.${r}] `+
|
|
9
|
+
function De(e){let t=Array.isArray(e)?e:[e],r="";for(let a of t)a!=null&&(typeof a=="object"?a.body&&typeof a.body=="string"?r+=a.body:r+=JSON.stringify(a):r+=a);return encodeURIComponent(r)}var V="public",ut="private",B="no-store",be={maxAge:"max-age",staleWhileRevalidate:"stale-while-revalidate",sMaxAge:"s-maxage",staleIfError:"stale-if-error"};function P(e){let t=[];return Object.keys(e).forEach(r=>{r==="mode"?t.push(e[r]):be[r]&&t.push(`${be[r]}=${e[r]}`);}),t.join(", ")}function W(){return {mode:B}}function Ee(e){if(e?.mode&&e?.mode!==V&&e?.mode!==ut)throw Error("'mode' must be either 'public' or 'private'")}function x(e){return Ee(e),{mode:V,maxAge:1,staleWhileRevalidate:9,...e}}function j(e){return Ee(e),{mode:V,maxAge:3600,staleWhileRevalidate:82800,...e}}function K(e){return e}function v(e){return String(e).includes("__proto__")?JSON.parse(e,pt):JSON.parse(e)}function pt(e,t){if(e!=="__proto__")return t}function L(e,t){return e&&t?{...e,...t}:e||x()}function J(e){return P(L(e))}async function ct(e,t){if(!e)return;let r=await e.match(t);if(!r){return}return r}async function dt(e,t,r,a){if(!e)return;let n=L(a),o=J(L(n,{maxAge:(n.maxAge||0)+(n.staleWhileRevalidate||0)})),s=J(L(n));r.headers.set("cache-control",o),r.headers.set("real-cache-control",s),r.headers.set("cache-put-date",new Date().toUTCString()),await e.put(t,r);}async function lt(e,t){e&&await e.delete(t);}function ft(e,t){let r=e.headers.get("real-cache-control"),a=0;if(r){let o=r.match(/max-age=(\d*)/);o&&o.length>1&&(a=parseFloat(o[1]));}return [(new Date().valueOf()-new Date(t).valueOf())/1e3,a]}function yt(e,t){let r=t.headers.get("cache-put-date");if(!r)return !1;let[a,n]=ft(t,r),o=a>n;return o}var N={get:ct,set:dt,delete:lt,generateDefaultCacheControlHeader:J,isStale:yt};function z(e){return `https://shopify.dev/?${e}`}function gt(e){return e||x()}async function Ue(e,t){if(!e)return;let r=z(t),a=new Request(r),n=await N.get(e,a);if(!n)return;let o=await n.text();try{return [v(o),n]}catch{return [o,n]}}async function X(e,t,r,a){if(!e)return;let n=z(t),o=new Request(n),s=new Response(JSON.stringify(r));await N.set(e,o,s,gt(a));}function we(e,t){return N.isStale(new Request(z(e)),t)}function mt(e,t){return [e,{status:t.status,statusText:t.statusText,headers:Array.from(t.headers.entries())}]}function Me([e,t]){return [e,new Response(e,t)]}var ve=(e,t)=>!e?.errors&&t.status<400,Y=new Set;async function Z(e,t,{strategy:r=x(),cacheInstance:a,shouldCacheResult:n=()=>!0,waitUntil:o,debugInfo:s}){let u=De([...typeof e=="string"?[e]:e]),d=void 0;if(!a||!r||r.mode===B){let y=await t();return y}let p=await Ue(a,u);if(p){let[y,C]=p,h=we(u,C)?"STALE":"HIT";if(!Y.has(u)&&h==="STALE"){Y.add(u);let l=Promise.resolve().then(async()=>{let I=Date.now();try{let f=await t();n(f)&&(await X(a,u,f,r),d?.("PUT",I));}catch(f){f.message&&(f.message="SWR in sub-request failed: "+f.message),console.error(f);}finally{Y.delete(u);}});o?.(l);}return y}let c=await t();if(n(c)){let y=Promise.resolve().then(async()=>{await X(a,u,c,r);});o?.(y);}return c}async function Le(e,t,{cacheInstance:r,cache:a,cacheKey:n=[e,t],shouldCacheResponse:o=()=>!0,waitUntil:s,returnType:i="json",debugInfo:u}={}){return !a&&(!t.method||t.method==="GET")&&(a=x()),Z(n,async()=>{let d=await fetch(e,t),p;try{p=await d[i]();}catch{try{p=await d.text();}catch{throw new Error(`Storefront API response code: ${d.status} (Request Id: ${d.headers.get("x-request-id")})`)}}return mt(p,d)},{cacheInstance:r,waitUntil:s,strategy:a??null,debugInfo:u,shouldCacheResult:d=>o(...Me(d))}).then(Me)}var ee="Custom-Storefront-Request-Group-ID",te="X-Shopify-Storefront-Access-Token",re="X-SDK-Variant",ae="X-SDK-Variant-Source",ne="X-SDK-Version";function Ne(){return typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():`weak-${Math.random().toString(16).substring(2)}`}var oe="2023.7.15";var ke=class extends Error{},Tt=e=>e instanceof ke,xt=/(^|}\s)query[\s({]/im,At=/(^|}\s)mutation[\s({]/im;function qe(e){return e.replace(/\s*#.*$/gm,"").replace(/\s+/gm," ").trim()}var Ot={language:"EN",country:"US"};function la(e){let {storefrontHeaders:t,cache:r,waitUntil:a,buyerIp:n,i18n:o,requestGroupId:s,storefrontId:i,...u}=e,{getPublicTokenHeaders:p,getPrivateTokenHeaders:c,getStorefrontApiUrl:y,getShopifyDomain:C}=createStorefrontClient(u),l=(u.privateStorefrontToken?c:p)({contentType:"json",buyerIp:t?.buyerIp||n});if(l[ee]=t?.requestGroupId||s||Ne(),i&&(l[SHOPIFY_STOREFRONT_ID_HEADER]=i),(l["user-agent"]=`Hydrogen ${oe}`),t&&t.cookie){let f=getShopifyCookies(t.cookie??"");f[SHOPIFY_Y]&&(l[SHOPIFY_STOREFRONT_Y_HEADER]=f[SHOPIFY_Y]),f[SHOPIFY_S]&&(l[SHOPIFY_STOREFRONT_S_HEADER]=f[SHOPIFY_S]);}async function I({query:f,mutation:T,variables:R,cache:U,headers:O=[],storefrontApiVersion:nt}){let ot=O instanceof Headers?Object.fromEntries(O.entries()):Array.isArray(O)?Object.fromEntries(O):O;f=f??T;let w={...R};o&&(!R?.country&&/\$country/.test(f)&&(w.country=o.country),!R?.language&&/\$language/.test(f)&&(w.language=o.language));let Te=y({storefrontApiVersion:nt}),xe=JSON.stringify({query:f,variables:w}),M={method:"POST",headers:{...l,...ot},body:xe},st=[Te,{method:M.method,headers:{"content-type":l["content-type"],"user-agent":l["user-agent"],[re]:l[re],[ae]:l[ae],[ne]:l[ne],[te]:l[te]},body:M.body}],[Q,Ae]=await Le(Te,M,{cacheInstance:T?void 0:r,cache:U||x(),cacheKey:st,shouldCacheResponse:ve,waitUntil:a,debugInfo:{graphql:xe,requestId:M.headers[ee],purpose:t?.purpose}}),Oe={response:Ae,type:T?"mutation":"query",query:f,queryVariables:w,errors:void 0};if(!Ae.ok){let G;try{G=v(Q);}catch{G=[{message:Q}];}$e({...Oe,errors:G});}let{data:it,errors:Pe}=Q;return Pe?.length&&$e({...Oe,errors:Pe,ErrorConstructor:ke}),it}return {storefront:{query:(f,T)=>{if(f=qe(f),At.test(f))throw new Error("[h2:error:storefront.query] Cannot execute mutations");let R=I({...T,query:f});return R.catch(()=>{}),R},mutate:(f,T)=>{if(f=qe(f),xt.test(f))throw new Error("[h2:error:storefront.mutate] Cannot execute queries");let R=I({...T,mutation:f});return R.catch(()=>{}),R},cache:r,CacheNone:W,CacheLong:j,CacheShort:x,CacheCustom:K,generateCacheControlHeader:P,getPublicTokenHeaders:p,getPrivateTokenHeaders:c,getShopifyDomain:C,getApiUrl:y,isApiError:Tt,i18n:o??Ot}}}function $e({response:e,errors:t,type:r,query:a,queryVariables:n,ErrorConstructor:o=Error}){let s=e.headers.get("x-request-id"),i=(typeof t=="string"?t:t?.map?.(u=>u.message).join(`
|
|
10
|
+
`))||`API response error: ${e.status}`;throw new o(`[h2:error:storefront.${r}] `+i+(s?` - Request ID: ${s}`:""),{cause:JSON.stringify({errors:t,requestId:s})})}function He(e,t){let r=e.headers?.get?.(t)??e.headers?.[t];return typeof r=="string"?r:null}function Qe(e){return e?{requestId:He(e,"request-id"),purpose:He(e,"purpose")}:{}}function ha({cache:e,waitUntil:t,request:r}){return function(n,o,s){return Z(n,s,{strategy:o,cacheInstance:e,waitUntil:t,debugInfo:Qe(r)})}}var se=class{#e;constructor(){this.#e=new Map;}add(t){throw new Error("Method not implemented. Use `put` instead.")}addAll(t){throw new Error("Method not implemented. Use `put` instead.")}matchAll(t,r){throw new Error("Method not implemented. Use `match` instead.")}async put(t,r){if(t.method!=="GET")throw new TypeError("Cannot cache response to non-GET request.");if(r.status===206)throw new TypeError("Cannot cache response to a range request (206 Partial Content).");if(r.headers.get("vary")?.includes("*"))throw new TypeError("Cannot cache response with 'Vary: *' header.");this.#e.set(t.url,{body:new Uint8Array(await r.arrayBuffer()),status:r.status,headers:[...r.headers],timestamp:Date.now()});}async match(t){if(t.method!=="GET")return;let r=this.#e.get(t.url);if(!r)return;let{body:a,timestamp:n,...o}=r,s=new Headers(o.headers),i=s.get("cache-control")||s.get("real-cache-control")||"",u=parseInt(i.match(/max-age=(\d+)/)?.[1]||"0",10),d=parseInt(i.match(/stale-while-revalidate=(\d+)/)?.[1]||"0",10),p=(Date.now()-n)/1e3;if(p>u+d){this.#e.delete(t.url);return}let y=p>u;return s.set("cache",y?"STALE":"HIT"),s.set("date",new Date(n).toUTCString()),new Response(a,{status:o.status??200,headers:s})}async delete(t){return this.#e.has(t.url)?(this.#e.delete(t.url),!0):!1}keys(t){let r=[];for(let a of this.#e.keys())(!t||t.url===a)&&r.push(new Request(a));return Promise.resolve(r)}};async function Pt(e){let{storefront:t,request:r,noAdminRedirect:a,response:n=new Response("Not Found",{status:404})}=e,{pathname:o,search:s}=new URL(r.url),i=o+s;if(o==="/admin"&&!a)return redirect(`${t.getShopifyDomain()}/admin`);try{let{urlRedirects:u}=await t.query(bt,{variables:{query:"path:"+i}}),d=u?.edges?.[0]?.node?.target;if(d)return new Response(null,{status:301,headers:{location:d}});let p=new URLSearchParams(s),c=p.get("return_to")||p.get("redirect");if(c){if(Dt(c))return redirect(c);console.warn(`Cross-domain redirects are not supported. Tried to redirect from ${i} to ${c}`);}}catch(u){console.error(`Failed to fetch redirects from Storefront API for route ${i}`,u);}return n}function Dt(e){return !/^(([a-z+-]+:)?\/\/|[a-z+-]+:)/i.test(e.trim())}var bt=`#graphql
|
|
11
11
|
query redirects($query: String) {
|
|
12
12
|
urlRedirects(first: 1, query: $query) {
|
|
13
13
|
edges {
|
|
@@ -17,7 +17,7 @@ function De(e){let t=Array.isArray(e)?e:[e],r="";for(let a of t)a!=null&&(typeof
|
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
|
-
`;var
|
|
20
|
+
`;var Et=async function({context:t}){let r=t?.storefront;if(!r)throw new Error("GraphiQL: Hydrogen's storefront client must be injected in the loader context.");let a=r.getApiUrl(),n=r.getPublicTokenHeaders()["X-Shopify-Storefront-Access-Token"],o="https://avatars.githubusercontent.com/u/12972006?s=48&v=4";return new Response(`
|
|
21
21
|
<!DOCTYPE html>
|
|
22
22
|
<html lang="en">
|
|
23
23
|
<head>
|
|
@@ -85,7 +85,7 @@ function De(e){let t=Array.isArray(e)?e:[e],r="";for(let a of t)a!=null&&(typeof
|
|
|
85
85
|
</script>
|
|
86
86
|
</body>
|
|
87
87
|
</html>
|
|
88
|
-
`,{status:200,headers:{"content-type":"text/html"}})};var A="Error in SEO input: ",F={title:{validate:e=>{if(typeof e!="string")throw new Error(A.concat("`title` should be a string"));if(typeof e=="string"&&e.length>120)throw new Error(A.concat("`title` should not be longer than 120 characters"));return e}},description:{validate:e=>{if(typeof e!="string")throw new Error(A.concat("`description` should be a string"));if(typeof e=="string"&&e.length>155)throw new Error(A.concat("`description` should not be longer than 155 characters"));return e}},url:{validate:e=>{if(typeof e!="string")throw new Error(A.concat("`url` should be a string"));if(typeof e=="string"&&!e.startsWith("http"))throw new Error(A.concat("`url` should be a valid URL"));return e}},handle:{validate:e=>{if(typeof e!="string")throw new Error(A.concat("`handle` should be a string"));if(typeof e=="string"&&!e.startsWith("@"))throw new Error(A.concat("`handle` should start with `@`"));return e}}};function
|
|
88
|
+
`,{status:200,headers:{"content-type":"text/html"}})};var Ut={"&":"\\u0026",">":"\\u003e","<":"\\u003c","\u2028":"\\u2028","\u2029":"\\u2029"},wt=/[&><\u2028\u2029]/g;function Ve(e){return e.replace(wt,t=>Ut[t])}var A="Error in SEO input: ",F={title:{validate:e=>{if(typeof e!="string")throw new Error(A.concat("`title` should be a string"));if(typeof e=="string"&&e.length>120)throw new Error(A.concat("`title` should not be longer than 120 characters"));return e}},description:{validate:e=>{if(typeof e!="string")throw new Error(A.concat("`description` should be a string"));if(typeof e=="string"&&e.length>155)throw new Error(A.concat("`description` should not be longer than 155 characters"));return e}},url:{validate:e=>{if(typeof e!="string")throw new Error(A.concat("`url` should be a string"));if(typeof e=="string"&&!e.startsWith("http"))throw new Error(A.concat("`url` should be a valid URL"));return e}},handle:{validate:e=>{if(typeof e!="string")throw new Error(A.concat("`handle` should be a string"));if(typeof e=="string"&&!e.startsWith("@"))throw new Error(A.concat("`handle` should start with `@`"));return e}}};function Be(e){let t=[];for(let r of Object.keys(e))switch(r){case"title":{let a=_(F.title,e.title),n=Mt(e?.titleTemplate,a);if(!n)break;t.push(S("title",{title:n}),S("meta",{property:"og:title",content:n}),S("meta",{name:"twitter:title",content:n}));break}case"description":{let a=_(F.description,e.description);if(!a)break;t.push(S("meta",{name:"description",content:a}),S("meta",{property:"og:description",content:a}),S("meta",{name:"twitter:description",content:a}));break}case"url":{let a=_(F.url,e.url);if(!a)break;t.push(S("link",{rel:"canonical",href:a}),S("meta",{property:"og:url",content:a}));break}case"handle":{let a=_(F.handle,e.handle);if(!a)break;t.push(S("meta",{name:"twitter:site",content:a}),S("meta",{name:"twitter:creator",content:a}));break}case"media":{let a,n=ue(e.media);for(let o of n)if(typeof o=="string"&&t.push(S("meta",{name:"og:image",content:o})),o&&typeof o=="object"){let s=o.type||"image",i=o?{url:o?.url,secure_url:o?.url,type:vt(o.url),width:o?.width,height:o?.height,alt:o?.altText}:{};for(let u of Object.keys(i))i[u]&&(a=i[u],t.push(S("meta",{property:`og:${s}:${u}`,content:a},i.url)));}break}case"jsonLd":{let a=ue(e.jsonLd),n=0;for(let o of a){if(typeof o!="object")continue;let s=S("script",{type:"application/ld+json",children:JSON.stringify(o,(i,u)=>typeof u=="string"?Ve(u):u)},`json-ld-${o?.["@type"]||o?.name||n++}`);t.push(s);}break}case"alternates":{let a=ue(e.alternates);for(let n of a){if(!n)continue;let{language:o,url:s,default:i}=n,u=o?`${o}${i?"-default":""}`:void 0;t.push(S("link",{rel:"alternate",hrefLang:u,href:s}));}break}case"robots":{if(!e.robots)break;let{maxImagePreview:a,maxSnippet:n,maxVideoPreview:o,noArchive:s,noFollow:i,noImageIndex:u,noIndex:d,noSnippet:p,noTranslate:c,unavailableAfter:y}=e.robots,C=[s&&"noarchive",u&&"noimageindex",p&&"nosnippet",c&&"notranslate",a&&`max-image-preview:${a}`,n&&`max-snippet:${n}`,o&&`max-video-preview:${o}`,y&&`unavailable_after:${y}`],h=(d?"noindex":"index")+","+(i?"nofollow":"follow");for(let l of C)l&&(h+=`,${l}`);t.push(S("meta",{name:"robots",content:h}));break}}return t.flat().sort((r,a)=>r.key.localeCompare(a.key))}function S(e,t,r){let a={tag:e,props:{},key:""};return e==="title"?(a.children=t.title,a.key=ie(a),a):e==="script"?(a.children=typeof t.children=="string"?t.children:"",a.key=ie(a,r),delete t.children,a.props=t,a):(a.props=t,Object.keys(a.props).forEach(n=>!a.props[n]&&delete a.props[n]),a.key=ie(a,r),a)}function ie(e,t){let{tag:r,props:a}=e;if(r==="title")return "0-title";if(r==="meta"){let n=a.content===t&&typeof a.property=="string"&&!a.property.endsWith("secure_url")&&"0";return [r,...[t,n],a.property||a.name].filter(s=>s).join("-")}return r==="link"?[r,a.rel,a.hrefLang||a.media].filter(o=>o).join("-").replace(/\s+/g,"-"):r==="script"?`${r}-${t}`:`${r}-${a.type}`}function Mt(e,t){if(t)return e?typeof e=="function"?e(t):e.replace("%s",t??""):t}function vt(e){switch(e&&e.split(".").pop()){case"svg":return "image/svg+xml";case"png":return "image/png";case"gif":return "image/gif";case"swf":return "application/x-shockwave-flash";case"mp3":return "audio/mpeg";case"jpg":case"jpeg":default:return "image/jpeg"}}function ue(e){return Array.isArray(e)?e:[e]}function _(e,t){try{return e.validate(t)}catch(r){return console.warn(r.message),t}}var $t=lazy(()=>import('./log-seo-tags-TY72EQWZ.js'));function kt({debug:e}){let t=useMatches(),r=useLocation(),a=useMemo(()=>t.flatMap(s=>{let{handle:i,...u}=s,d={...u,...r},p=i?.seo,c=u?.data?.seo;return !p&&!c?[]:p?q(i.seo,d):[c]}).reduce((s,i)=>{Object.keys(i).forEach(d=>!i[d]&&delete i[d]);let{jsonLd:u}=i;return u?s?.jsonLd?Array.isArray(u)?{...s,...i,jsonLd:[...s.jsonLd,...u]}:{...s,...i,jsonLd:[...s.jsonLd,u]}:{...s,...i,jsonLd:[u]}:{...s,...i}},{}),[t,r]),{html:n,loggerMarkup:o}=useMemo(()=>{let s=Be(a),i=s.map(d=>d.tag==="script"?createElement(d.tag,{...d.props,key:d.key,dangerouslySetInnerHTML:{__html:d.children}}):createElement(d.tag,{...d.props,key:d.key},d.children)),u=createElement(Suspense,{fallback:null},createElement($t,{headTags:s}));return {html:i,loggerMarkup:u}},[a]);return createElement(Fragment,null,n,e&&o)}function q(e,...t){if(e instanceof Function)return q(e(...t),...t);let r={};return Array.isArray(e)?(r=e.reduce((a,n)=>[...a,q(n)],[]),r):e instanceof Object?(Object.entries(e).forEach(([n,o])=>{r[n]=q(o,...t);}),r):e}function Wt({connection:e,children:t=()=>(console.warn("<Pagination> requires children to work properly"),null)}){let a=useNavigation().state==="loading",{endCursor:n,hasNextPage:o,hasPreviousPage:s,nextPageUrl:i,nodes:u,previousPageUrl:d,startCursor:p}=jt(e),c=useMemo(()=>({pageInfo:{endCursor:n,hasPreviousPage:s,startCursor:p},nodes:u}),[n,s,p,u]),y=useMemo(()=>forwardRef(function(l,I){return o?createElement(Link,{preventScrollReset:!0,...l,to:i,state:c,replace:!0,ref:I}):null}),[o,i,c]),C=useMemo(()=>forwardRef(function(l,I){return s?createElement(Link,{preventScrollReset:!0,...l,to:d,state:c,replace:!0,ref:I}):null}),[s,d,c]);return t({state:c,hasNextPage:o,hasPreviousPage:s,isLoading:a,nextPageUrl:i,nodes:u,previousPageUrl:d,NextLink:y,PreviousLink:C})}function k(e){let t=new URLSearchParams(e);return t.delete("cursor"),t.delete("direction"),t.toString()}function b(e){throw new Error(`The Pagination component requires ${"`"+e+"`"} to be a part of your query. See the guide on how to setup your query to include ${"`"+e+"`"}: https://shopify.dev/docs/custom-storefronts/hydrogen/data-fetching/pagination#setup-the-paginated-query`)}function jt(e){e.pageInfo||b("pageInfo"),typeof e.pageInfo.startCursor>"u"&&b("pageInfo.startCursor"),typeof e.pageInfo.endCursor>"u"&&b("pageInfo.endCursor"),typeof e.pageInfo.hasNextPage>"u"&&b("pageInfo.hasNextPage"),typeof e.pageInfo.hasPreviousPage>"u"&&b("pageInfo.hasPreviousPage");let t=useNavigate(),{state:r,search:a,pathname:n}=useLocation(),i=new URLSearchParams(a).get("direction")==="previous",[u,d]=useState(flattenConnection(e)),[p,c]=useState({startCursor:e.pageInfo.startCursor,endCursor:e.pageInfo.endCursor,hasPreviousPage:e.pageInfo.hasPreviousPage,hasNextPage:e.pageInfo.hasNextPage}),y=useRef({params:k(a),pathname:n});useEffect(()=>{if(k(a)!==y.current.params||n!==y.current.pathname)y.current={pathname:n,params:k(a)},t(`${n}?${k(a)}`,{replace:!0,preventScrollReset:!0,state:{nodes:void 0,pageInfo:void 0}});else if(r?.nodes){if(d(i?[...flattenConnection(e),...r.nodes]:[...r.nodes,...flattenConnection(e)]),r?.pageInfo){let l=r?.pageInfo?.startCursor===void 0?e.pageInfo.startCursor:r.pageInfo.startCursor,I=r?.pageInfo?.endCursor===void 0?e.pageInfo.endCursor:r.pageInfo.endCursor,f=r?.pageInfo?.hasPreviousPage===void 0?e.pageInfo.hasPreviousPage:r.pageInfo.hasPreviousPage,T=r?.pageInfo?.hasNextPage===void 0?e.pageInfo.hasNextPage:r.pageInfo.hasNextPage;i?(l=e.pageInfo.startCursor,f=e.pageInfo.hasPreviousPage):(I=e.pageInfo.endCursor,T=e.pageInfo.hasNextPage),c({startCursor:l,endCursor:I,hasPreviousPage:f,hasNextPage:T});}}else d(flattenConnection(e)),c({startCursor:e.pageInfo.startCursor,endCursor:e.pageInfo.endCursor,hasPreviousPage:e.pageInfo.hasPreviousPage,hasNextPage:e.pageInfo.hasNextPage});},[r,e,i,a,t,n]);let C=useMemo(()=>{let l=new URLSearchParams(a);return l.set("direction","previous"),p.startCursor&&l.set("cursor",p.startCursor),`?${l.toString()}`},[a,p.startCursor]),h=useMemo(()=>{let l=new URLSearchParams(a);return l.set("direction","next"),p.endCursor&&l.set("cursor",p.endCursor),`?${l.toString()}`},[a,p.endCursor]);return {...p,previousPageUrl:C,nextPageUrl:h,nodes:u}}function Kt(e,t={pageBy:20}){if(typeof e?.url>"u")throw new Error("getPaginationVariables must be called with the Request object passed to your loader function");let{pageBy:r}=t,a=new URLSearchParams(new URL(e.url).search),n=a.get("cursor")??void 0;return (a.get("direction")==="previous"?"previous":"next")==="previous"?{last:r,startCursor:n??null}:{first:r,endCursor:n??null}}var Xe="cartFormInput";function H({children:e,action:t,inputs:r,route:a}){let n=useFetcher();return jsxs(n.Form,{action:a||"",method:"post",children:[(t||r)&&jsx("input",{type:"hidden",name:Xe,value:JSON.stringify({action:t,inputs:r})}),typeof e=="function"?e(n):e]})}H.INPUT_NAME=Xe;H.ACTIONS={AttributesUpdateInput:"AttributesUpdateInput",BuyerIdentityUpdate:"BuyerIdentityUpdate",Create:"Create",DiscountCodesUpdate:"DiscountCodesUpdate",LinesAdd:"LinesAdd",LinesRemove:"LinesRemove",LinesUpdate:"LinesUpdate",NoteUpdate:"NoteUpdate",SelectedDeliveryOptionsUpdate:"SelectedDeliveryOptionsUpdate",MetafieldsSet:"MetafieldsSet",MetafieldDelete:"MetafieldDelete"};function zt(e){let t={};for(let s of e.entries()){let i=s[0],u=e.getAll(i);t[i]=u.length>1?u:s[1];}let{cartFormInput:r,...a}=t,{action:n,inputs:o}=r?JSON.parse(String(r)):{};return {action:n,inputs:{...o,...a}}}H.getFormInput=zt;var g=`#graphql
|
|
89
89
|
fragment CartApiError on CartUserError {
|
|
90
90
|
message
|
|
91
91
|
field
|
|
@@ -96,7 +96,7 @@ function De(e){let t=Array.isArray(e)?e:[e],r="";for(let a of t)a!=null&&(typeof
|
|
|
96
96
|
id
|
|
97
97
|
totalQuantity
|
|
98
98
|
}
|
|
99
|
-
`;function pe(e){return async(t,r)=>{let{cartId:a,...n}=r||{},{cartCreate:o}=await e.storefront.mutate(
|
|
99
|
+
`;function pe(e){return async(t,r)=>{let{cartId:a,...n}=r||{},{cartCreate:o}=await e.storefront.mutate(Zt(e.cartFragment),{variables:{input:t,...n}});return o}}var Zt=(e=m)=>`#graphql
|
|
100
100
|
mutation cartCreate(
|
|
101
101
|
$input: CartInput!
|
|
102
102
|
$country: CountryCode = ZZ
|
|
@@ -114,7 +114,7 @@ function De(e){let t=Array.isArray(e)?e:[e],r="";for(let a of t)a!=null&&(typeof
|
|
|
114
114
|
}
|
|
115
115
|
${e}
|
|
116
116
|
${g}
|
|
117
|
-
`;function ce(e){return async t=>{let r=e.getCartId();if(!r)return null;let{cart:a}=await e.storefront.query(
|
|
117
|
+
`;function ce(e){return async t=>{let r=e.getCartId();if(!r)return null;let{cart:a}=await e.storefront.query(er(e.cartFragment),{variables:{cartId:r,...t},cache:e.storefront.CacheNone()});return a}}var er=(e=tr)=>`#graphql
|
|
118
118
|
query CartQuery(
|
|
119
119
|
$cartId: ID!
|
|
120
120
|
$numCartLines: Int = 100
|
|
@@ -127,7 +127,7 @@ function De(e){let t=Array.isArray(e)?e:[e],r="";for(let a of t)a!=null&&(typeof
|
|
|
127
127
|
}
|
|
128
128
|
|
|
129
129
|
${e}
|
|
130
|
-
`,
|
|
130
|
+
`,tr=`#graphql
|
|
131
131
|
fragment CartApiQuery on Cart {
|
|
132
132
|
id
|
|
133
133
|
checkoutUrl
|
|
@@ -233,7 +233,7 @@ function De(e){let t=Array.isArray(e)?e:[e],r="";for(let a of t)a!=null&&(typeof
|
|
|
233
233
|
width
|
|
234
234
|
height
|
|
235
235
|
}
|
|
236
|
-
`;function de(e){return async(t,r)=>{let{cartLinesAdd:a}=await e.storefront.mutate(
|
|
236
|
+
`;function de(e){return async(t,r)=>{let{cartLinesAdd:a}=await e.storefront.mutate(rr(e.cartFragment),{variables:{cartId:e.getCartId(),lines:t,...r}});return a}}var rr=(e=m)=>`#graphql
|
|
237
237
|
mutation cartLinesAdd(
|
|
238
238
|
$cartId: ID!
|
|
239
239
|
$lines: [CartLineInput!]!
|
|
@@ -252,7 +252,7 @@ function De(e){let t=Array.isArray(e)?e:[e],r="";for(let a of t)a!=null&&(typeof
|
|
|
252
252
|
|
|
253
253
|
${e}
|
|
254
254
|
${g}
|
|
255
|
-
`;function le(e){return async(t,r)=>{let{cartLinesUpdate:a}=await e.storefront.mutate(
|
|
255
|
+
`;function le(e){return async(t,r)=>{let{cartLinesUpdate:a}=await e.storefront.mutate(ar(e.cartFragment),{variables:{cartId:e.getCartId(),lines:t,...r}});return a}}var ar=(e=m)=>`#graphql
|
|
256
256
|
mutation cartLinesUpdate(
|
|
257
257
|
$cartId: ID!
|
|
258
258
|
$lines: [CartLineUpdateInput!]!
|
|
@@ -271,7 +271,7 @@ function De(e){let t=Array.isArray(e)?e:[e],r="";for(let a of t)a!=null&&(typeof
|
|
|
271
271
|
|
|
272
272
|
${e}
|
|
273
273
|
${g}
|
|
274
|
-
`;function fe(e){return async(t,r)=>{let{cartLinesRemove:a}=await e.storefront.mutate(
|
|
274
|
+
`;function fe(e){return async(t,r)=>{let{cartLinesRemove:a}=await e.storefront.mutate(nr(e.cartFragment),{variables:{cartId:e.getCartId(),lineIds:t,...r}});return a}}var nr=(e=m)=>`#graphql
|
|
275
275
|
mutation cartLinesRemove(
|
|
276
276
|
$cartId: ID!
|
|
277
277
|
$lineIds: [ID!]!
|
|
@@ -290,7 +290,7 @@ function De(e){let t=Array.isArray(e)?e:[e],r="";for(let a of t)a!=null&&(typeof
|
|
|
290
290
|
|
|
291
291
|
${e}
|
|
292
292
|
${g}
|
|
293
|
-
`;function ye(e){return async(t,r)=>{let a=t.filter((o,i
|
|
293
|
+
`;function ye(e){return async(t,r)=>{let a=t.filter((o,s,i)=>i.indexOf(o)===s),{cartDiscountCodesUpdate:n}=await e.storefront.mutate(or(e.cartFragment),{variables:{cartId:e.getCartId(),discountCodes:a,...r}});return n}}var or=(e=m)=>`#graphql
|
|
294
294
|
mutation cartDiscountCodesUpdate(
|
|
295
295
|
$cartId: ID!
|
|
296
296
|
$discountCodes: [String!]
|
|
@@ -308,7 +308,7 @@ function De(e){let t=Array.isArray(e)?e:[e],r="";for(let a of t)a!=null&&(typeof
|
|
|
308
308
|
}
|
|
309
309
|
${e}
|
|
310
310
|
${g}
|
|
311
|
-
`;function ge(e){return async(t,r)=>{let{cartBuyerIdentityUpdate:a}=await e.storefront.mutate(
|
|
311
|
+
`;function ge(e){return async(t,r)=>{let{cartBuyerIdentityUpdate:a}=await e.storefront.mutate(sr(e.cartFragment),{variables:{cartId:e.getCartId(),buyerIdentity:t,...r}});return a}}var sr=(e=m)=>`#graphql
|
|
312
312
|
mutation cartBuyerIdentityUpdate(
|
|
313
313
|
$cartId: ID!
|
|
314
314
|
$buyerIdentity: CartBuyerIdentityInput!
|
|
@@ -326,7 +326,7 @@ function De(e){let t=Array.isArray(e)?e:[e],r="";for(let a of t)a!=null&&(typeof
|
|
|
326
326
|
}
|
|
327
327
|
${e}
|
|
328
328
|
${g}
|
|
329
|
-
`;function me(e){return async(t,r)=>{let{cartNoteUpdate:a}=await e.storefront.mutate(
|
|
329
|
+
`;function me(e){return async(t,r)=>{let{cartNoteUpdate:a}=await e.storefront.mutate(ir(e.cartFragment),{variables:{cartId:e.getCartId(),note:t,...r}});return a}}var ir=(e=m)=>`#graphql
|
|
330
330
|
mutation cartNoteUpdate(
|
|
331
331
|
$cartId: ID!
|
|
332
332
|
$note: String
|
|
@@ -344,7 +344,7 @@ function De(e){let t=Array.isArray(e)?e:[e],r="";for(let a of t)a!=null&&(typeof
|
|
|
344
344
|
}
|
|
345
345
|
${e}
|
|
346
346
|
${g}
|
|
347
|
-
`;function Ce(e){return async(t,r)=>{let{cartSelectedDeliveryOptionsUpdate:a}=await e.storefront.mutate(
|
|
347
|
+
`;function Ce(e){return async(t,r)=>{let{cartSelectedDeliveryOptionsUpdate:a}=await e.storefront.mutate(ur(e.cartFragment),{variables:{cartId:e.getCartId(),selectedDeliveryOptions:t,...r}});return a}}var ur=(e=m)=>`#graphql
|
|
348
348
|
mutation cartSelectedDeliveryOptionsUpdate(
|
|
349
349
|
$cartId: ID!
|
|
350
350
|
$selectedDeliveryOptions: [CartSelectedDeliveryOptionInput!]!
|
|
@@ -362,7 +362,7 @@ function De(e){let t=Array.isArray(e)?e:[e],r="";for(let a of t)a!=null&&(typeof
|
|
|
362
362
|
}
|
|
363
363
|
${e}
|
|
364
364
|
${g}
|
|
365
|
-
`;function he(e){return async(t,r)=>{let{cartAttributesUpdate:a}=await e.storefront.mutate(
|
|
365
|
+
`;function he(e){return async(t,r)=>{let{cartAttributesUpdate:a}=await e.storefront.mutate(pr(e.cartFragment),{variables:{cartId:r?.cartId||e.getCartId(),attributes:t}});return a}}var pr=(e=m)=>`#graphql
|
|
366
366
|
mutation cartAttributesUpdate(
|
|
367
367
|
$cartId: ID!
|
|
368
368
|
$attributes: [AttributeInput!]!
|
|
@@ -378,7 +378,7 @@ function De(e){let t=Array.isArray(e)?e:[e],r="";for(let a of t)a!=null&&(typeof
|
|
|
378
378
|
}
|
|
379
379
|
${e}
|
|
380
380
|
${g}
|
|
381
|
-
`;function Se(e){return async(t,r)=>{let a=r?.cartId||e.getCartId(),n=t.map(
|
|
381
|
+
`;function Se(e){return async(t,r)=>{let a=r?.cartId||e.getCartId(),n=t.map(s=>({...s,ownerId:a})),{cartMetafieldsSet:o}=await e.storefront.mutate(cr(),{variables:{metafields:n}});return {cart:{id:a},errors:o.errors}}}var cr=()=>`#graphql
|
|
382
382
|
mutation cartMetafieldsSet(
|
|
383
383
|
$metafields: [CartMetafieldsSetInput!]!
|
|
384
384
|
$language: LanguageCode
|
|
@@ -393,7 +393,7 @@ function De(e){let t=Array.isArray(e)?e:[e],r="";for(let a of t)a!=null&&(typeof
|
|
|
393
393
|
}
|
|
394
394
|
}
|
|
395
395
|
}
|
|
396
|
-
`;function Ie(e){return async(t,r)=>{let a=r?.cartId||e.getCartId(),{cartMetafieldDelete:n}=await e.storefront.mutate(
|
|
396
|
+
`;function Ie(e){return async(t,r)=>{let a=r?.cartId||e.getCartId(),{cartMetafieldDelete:n}=await e.storefront.mutate(dr(),{variables:{input:{ownerId:a,key:t}}});return {cart:{id:a},errors:n.errors}}}var dr=()=>`#graphql
|
|
397
397
|
mutation cartMetafieldDelete(
|
|
398
398
|
$input: CartMetafieldDeleteInput!
|
|
399
399
|
) {
|
|
@@ -405,7 +405,7 @@ function De(e){let t=Array.isArray(e)?e:[e],r="";for(let a of t)a!=null&&(typeof
|
|
|
405
405
|
}
|
|
406
406
|
}
|
|
407
407
|
}
|
|
408
|
-
`;var
|
|
408
|
+
`;var lr=new Set(["domain","path","max-age","expires","samesite","secure","httponly"]);function Ye(e){let t={},r,a,n=0,o=e.split(/;\s*/g),s,i;for(;n<o.length;n++)if(a=o[n],r=a.indexOf("="),~r){if(s=a.substring(0,r++).trim(),i=a.substring(r).trim(),i[0]==='"'&&(i=i.substring(1,i.length-1)),~i.indexOf("%"))try{i=decodeURIComponent(i);}catch{}lr.has(a=s.toLowerCase())?a==="expires"?t.expires=new Date(i):a==="max-age"?t.maxage=+i:t[a]=i:t[s]=i;}else (s=a.trim().toLowerCase())&&(s==="httponly"||s==="secure")&&(t[s]=!0);return t}function Ze(e,t,r={}){let a=e+"="+encodeURIComponent(t);return r.expires&&(a+="; Expires="+new Date(r.expires).toUTCString()),r.maxage!=null&&r.maxage>=0&&(a+="; Max-Age="+(r.maxage|0)),r.domain&&(a+="; Domain="+r.domain),r.path&&(a+="; Path="+r.path),r.samesite&&(a+="; SameSite="+r.samesite),(r.secure||r.samesite==="None")&&(a+="; Secure"),r.httponly&&(a+="; HttpOnly"),a}var fr=e=>{let t=Ye(e.get("Cookie")||"");return ()=>t.cart?`gid://shopify/Cart/${t.cart}`:void 0};var yr=e=>t=>{let r=new Headers;return r.append("Set-Cookie",Ze("cart",t.split("/").pop()||"",{path:"/",...e})),r};function gr(e){let{getCartId:t,setCartId:r,storefront:a,cartQueryFragment:n,cartMutateFragment:o}=e,s={storefront:a,getCartId:t,cartFragment:o},i=t(),u=pe(s),d={get:ce({storefront:a,getCartId:t,cartFragment:n}),getCartId:t,setCartId:r,create:u,addLines:async(p,c)=>i||c?.cartId?await de(s)(p,c):await u({lines:p},c),updateLines:le(s),removeLines:fe(s),updateDiscountCodes:async(p,c)=>i||c?.cartId?await ye(s)(p,c):await u({discountCodes:p},c),updateBuyerIdentity:async(p,c)=>i||c?.cartId?await ge(s)(p,c):await u({buyerIdentity:p},c),updateNote:async(p,c)=>i||c?.cartId?await me(s)(p,c):await u({note:p},c),updateSelectedDeliveryOption:Ce(s),updateAttributes:async(p,c)=>i||c?.cartId?await he(s)(p,c):await u({attributes:p},c),setMetafields:async(p,c)=>i||c?.cartId?await Se(s)(p,c):await u({metafields:p},c),deleteMetafield:Ie(s)};return "customMethods__unstable"in e?{...d,...e.customMethods__unstable??{}}:d}function Ir({handle:e,options:t=[],variants:r=[],productPath:a="products",children:n}){let o=r instanceof Array?r:flattenConnection(r),{searchParams:s,path:i,alreadyOnProductPage:u}=Tr(e,a),d=t.filter(p=>p?.values?.length===1);return createElement(Fragment,null,...useMemo(()=>t.filter(p=>p?.values?.length>1).map(p=>{let c,y=[];for(let C of p.values){let h=new URLSearchParams(u?s:void 0);h.set(p.name,C),d.forEach(R=>{h.set(R.name,R.values[0]);});let l=o.find(R=>R?.selectedOptions?.every(U=>h.get(U?.name)===U?.value)),I=s.get(p.name),f=I?I===C:!1;f&&(c=C);let T="?"+h.toString();y.push({value:C,isAvailable:l?l.availableForSale:!0,to:i+T,search:T,isActive:f});}return n({option:{name:p.name,value:c,values:y}})}),[t,o,n]))}var Rr=e=>{if(typeof e?.url>"u")throw new TypeError(`Expected a Request instance, got ${typeof e}`);let t=new URL(e.url).searchParams,r=[];return t.forEach((a,n)=>{r.push({name:n,value:a});}),r};function Tr(e,t){let{pathname:r,search:a}=useLocation();return useMemo(()=>{let n=/(\/[a-zA-Z]{2}-[a-zA-Z]{2}\/)/g.exec(r),o=n&&n.length>0;t=t.startsWith("/")?t.substring(1):t;let s=o?`${n[0]}${t}/${e}`:`/${t}/${e}`;return {searchParams:new URLSearchParams(a),alreadyOnProductPage:s===r,path:s}},[r,a,e,t])}function tt(){return Ar(xr())}function xr(){try{return crypto.getRandomValues(new Uint8Array(16))}catch{return new Uint8Array(16).map(()=>Math.random()*255|0)}}function Ar(e){return Array.from(e,function(t){return ("0"+(t&255).toString(16)).slice(-2)}).join("")}var rt=createContext(void 0),Er=rt.Provider,Re=()=>useContext(rt);function Ur(e={}){let t=tt(),r=wr(t,e);return {nonce:t,header:r,NonceProvider:({children:n})=>createElement(Er,{value:t},n)}}function wr(e,t={}){let r=`'nonce-${e}'`,n=Object.assign({},{baseUri:["'self'"],defaultSrc:["'self'",r,"https://cdn.shopify.com","https://shopify.com"],frameAncestors:["none"],styleSrc:["'self'","'unsafe-inline'","https://cdn.shopify.com"],connectSrc:["'self'","https://monorail-edge.shopifysvc.com"]},t);return n.scriptSrc instanceof Array&&!n.scriptSrc.includes(r)?n.scriptSrc.push(r):n.defaultSrc instanceof Array&&!n.defaultSrc.includes(r)&&n.defaultSrc.push(r),br({directives:n})}var vr=forwardRef((e,t)=>{let r=Re();return jsx("script",{suppressHydrationWarning:!0,...e,nonce:r,ref:t})});function Fr(e){let t=useFetchers(),r={};for(let a of t){let n=a.submission?.formData;if(n&&n.get("optimistic-identifier")===e)try{if(n.has("optimistic-data")){let o=JSON.parse(String(n.get("optimistic-data")));Object.assign(r,o);}}catch{}}return r}function _r({id:e,data:t}){return jsxs(Fragment$1,{children:[jsx("input",{type:"hidden",name:"optimistic-identifier",value:e}),jsx("input",{type:"hidden",name:"optimistic-data",value:JSON.stringify(t)})]})}//! @see: https://shopify.dev/docs/api/storefront/latest/mutations/cartCreate
|
|
409
409
|
//! @see https://shopify.dev/docs/api/storefront/latest/queries/cart
|
|
410
410
|
//! @see: https://shopify.dev/docs/api/storefront/latest/mutations/cartLinesAdd
|
|
411
411
|
//! @see: https://shopify.dev/docs/api/storefront/latest/mutations/cartLinesUpdate
|
|
@@ -417,6 +417,6 @@ function De(e){let t=Array.isArray(e)?e:[e],r="";for(let a of t)a!=null&&(typeof
|
|
|
417
417
|
//! @see https://shopify.dev/docs/api/storefront/latest/mutations/cartMetafieldsSet
|
|
418
418
|
//! @see https://shopify.dev/docs/api/storefront/2023-07/mutations/cartMetafieldDelete
|
|
419
419
|
|
|
420
|
-
export { K as CacheCustom, j as CacheLong, W as CacheNone, x as CacheShort, H as CartForm,
|
|
420
|
+
export { K as CacheCustom, j as CacheLong, W as CacheNone, x as CacheShort, H as CartForm, se as InMemoryCache, _r as OptimisticInput, Wt as Pagination, vr as Script, kt as Seo, ke as StorefrontApiError, Ir as VariantSelector, he as cartAttributesUpdateDefault, ge as cartBuyerIdentityUpdateDefault, pe as cartCreateDefault, ye as cartDiscountCodesUpdateDefault, ce as cartGetDefault, fr as cartGetIdDefault, de as cartLinesAddDefault, fe as cartLinesRemoveDefault, le as cartLinesUpdateDefault, Ie as cartMetafieldDeleteDefault, Se as cartMetafieldsSetDefault, me as cartNoteUpdateDefault, Ce as cartSelectedDeliveryOptionsUpdateDefault, yr as cartSetIdDefault, gr as createCartHandler, Ur as createContentSecurityPolicy, la as createStorefrontClient, ha as createWithCache, P as generateCacheControlHeader, Kt as getPaginationVariables, Rr as getSelectedProductOptions, Et as graphiqlLoader, Tt as isStorefrontApiError, Pt as storefrontRedirect, Re as useNonce, Fr as useOptimisticData };
|
|
421
421
|
//# sourceMappingURL=out.js.map
|
|
422
422
|
//# sourceMappingURL=index.js.map
|