@shopify/hydrogen 2023.7.3 → 2023.7.4
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 +120 -40
- package/dist/development/index.cjs.map +1 -1
- package/dist/development/index.js +116 -43
- package/dist/development/index.js.map +1 -1
- package/dist/production/index.cjs +68 -60
- package/dist/production/index.cjs.map +1 -1
- package/dist/production/index.d.cts +22 -3
- package/dist/production/index.d.ts +22 -3
- package/dist/production/index.js +35 -34
- package/dist/production/index.js.map +1 -1
- package/dist/storefront-api-types.d.ts +18 -17
- package/dist/storefront.schema.json +1 -1
- package/package.json +4 -3
|
@@ -5,9 +5,14 @@ var serverRuntime = require('@remix-run/server-runtime');
|
|
|
5
5
|
var react = require('react');
|
|
6
6
|
var react$1 = require('@remix-run/react');
|
|
7
7
|
var jsxRuntime = require('react/jsx-runtime');
|
|
8
|
+
var Tr = require('content-security-policy-builder');
|
|
8
9
|
|
|
9
|
-
|
|
10
|
-
|
|
10
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
|
+
|
|
12
|
+
var Tr__default = /*#__PURE__*/_interopDefault(Tr);
|
|
13
|
+
|
|
14
|
+
var et=Object.defineProperty;var tt=(e,t)=>()=>(e&&(t=e(e=0)),t);var rt=(e,t)=>{for(var r in t)et(e,r,{get:t[r],enumerable:!0});};var $e={};rt($e,{default:()=>Ne,logSeoTags:()=>Fe});function Ne({headTags:e}){return Fe(e),null}function Fe(e){console.log(" "),console.log("%cSEO Meta Tags",`${Pt}`),console.log(" "),e.forEach(t=>{if(t.tag==="script"){if(console.log("%c\u2022 JSON LD ",ee),t.children)try{console.table(JSON.parse(t.children),["name","content"]);}catch{console.log(t.children);}}else {if(console.log(`%c\u2022 ${t.tag} `,ee),t.children)if(typeof t.children=="string")console.log(`\u21B3 ${t.children}`);else try{Object.entries(JSON.parse(t.children)).map(([r,a])=>console.log(`\u21B3 ${a}`));}catch{console.log(t.children);}if(t.props.property==="og:image:url"){let r=t.props.content;Dt(r).then(a=>{let n=`font-size: 400px; padding: 10px; background: white url(${a}) no-repeat center; background-size: contain;`;console.log("%c\u2022 Share image preview",ee),console.log("%c ",n),console.log(`\u21B3 ${r}`);}).catch(a=>{console.error(a);});}Object.entries(t.props).map(([r,a])=>{console.log(`\u21B3 ${r} \u2192 ${a}`);});}console.log(" ");});}async function Dt(e){let a=await(await(await fetch(e)).blob()).arrayBuffer();return `data:image/png;base64,${wt(a)}`}function wt(e){let t="",r=new Uint8Array(e),a=r.byteLength;for(let n=0;n<a;n++)t+=String.fromCharCode(r[n]);return btoa(t)}var ee,Pt,qe=tt(()=>{ee="text-transform: uppercase;",Pt="text-transform: uppercase; font-weight: bold; text-transform: uppercase;font-weight: bold";});function he(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 _="public",at="private",Q="no-store",Se={maxAge:"max-age",staleWhileRevalidate:"stale-while-revalidate",sMaxAge:"s-maxage",staleIfError:"stale-if-error"};function b(e){let t=[];return Object.keys(e).forEach(r=>{r==="mode"?t.push(e[r]):Se[r]&&t.push(`${Se[r]}=${e[r]}`);}),t.join(", ")}function H(){return {mode:Q}}function Ie(e){if(e?.mode&&e?.mode!==_&&e?.mode!==at)throw Error("'mode' must be either 'public' or 'private'")}function I(e){return Ie(e),{mode:_,maxAge:1,staleWhileRevalidate:9,...e}}function G(e){return Ie(e),{mode:_,maxAge:3600,staleWhileRevalidate:82800,...e}}function V(e){return e}function U(e){return String(e).includes("__proto__")?JSON.parse(e,nt):JSON.parse(e)}function nt(e,t){if(e!=="__proto__")return t}function E(e,t){return e&&t?{...e,...t}:e||I()}function B(e){return b(E(e))}async function ot(e,t){if(!e)return;let r=await e.match(t);if(!r){return}return r}async function it(e,t,r,a){if(!e)return;let n=E(a),i=B(E(n,{maxAge:(n.maxAge||0)+(n.staleWhileRevalidate||0)})),o=B(E(n));r.headers.set("cache-control",i),r.headers.set("real-cache-control",o),r.headers.set("cache-put-date",new Date().toUTCString()),await e.put(t,r);}async function st(e,t){e&&await e.delete(t);}function ct(e,t){let r=e.headers.get("real-cache-control"),a=0;if(r){let i=r.match(/max-age=(\d*)/);i&&i.length>1&&(a=parseFloat(i[1]));}return [(new Date().valueOf()-new Date(t).valueOf())/1e3,a]}function pt(e,t){let r=t.headers.get("cache-put-date");if(!r)return !1;let[a,n]=ct(t,r),i=a>n;return i}var v={get:ot,set:it,delete:st,generateDefaultCacheControlHeader:B,isStale:pt};function j(e){return `https://shopify.dev/?${e}`}function ut(e){return e||I()}async function Re(e,t){if(!e)return;let r=j(t),a=new Request(r),n=await v.get(e,a);if(!n)return;let i=await n.text();try{return [U(i),n]}catch{return [i,n]}}async function W(e,t,r,a){if(!e)return;let n=j(t),i=new Request(n),o=new Response(JSON.stringify(r));await v.set(e,i,o,ut(a));}function Te(e,t){return v.isStale(new Request(j(e)),t)}function dt(e,t){return [e,{status:t.status,statusText:t.statusText,headers:Array.from(t.headers.entries())}]}function xe([e,t]){return [e,new Response(e,t)]}var Ae=e=>!e?.errors,J=new Set;async function K(e,t,{strategy:r=I(),cacheInstance:a,shouldCacheResult:n=()=>!0,waitUntil:i}){if(!a||!r||r.mode===Q)return t();let o=he([...typeof e=="string"?[e]:e]),s=await Re(a,o);if(s){let[d,u]=s;if(!J.has(o)&&Te(o,u)){J.add(o);let p=Promise.resolve().then(async()=>{try{let l=await t();n(l)&&await W(a,o,l,r);}catch(l){l.message&&(l.message="SWR in sub-request failed: "+l.message),console.error(l);}finally{J.delete(o);}});i?.(p);}return d}let c=await t();if(n(c)){let d=W(a,o,c,r);i?.(d);}return c}async function Oe(e,t,{cacheInstance:r,cache:a,cacheKey:n=[e,t],shouldCacheResponse:i=()=>!0,waitUntil:o,returnType:s="json"}={}){return !a&&(!t.method||t.method==="GET")&&(a=I()),K(n,async()=>{let c=await fetch(e,t),d;try{d=await c[s]();}catch{try{d=await c.text();}catch{throw new Error(`Storefront API response code: ${c.status} (Request Id: ${c.headers.get("x-request-id")})`)}}return dt(d,c)},{cacheInstance:r,waitUntil:o,strategy:a??null,shouldCacheResult:c=>i(...xe(c))}).then(xe)}var be="Custom-Storefront-Request-Group-ID";function Pe(){return typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():`weak-${Math.random().toString(16).substring(2)}`}var z="2023.7.4";var Ee=class extends Error{},Ct=e=>e instanceof Ee,ht=/(^|}\s)query[\s({]/im,St=/(^|}\s)mutation[\s({]/im;function Me(e){return e.replace(/\s*#.*$/gm,"").replace(/\s+/gm," ").trim()}var It={language:"EN",country:"US"};function ta(e){let {storefrontHeaders:t,cache:r,waitUntil:a,buyerIp:n,i18n:i,requestGroupId:o,storefrontId:s,...c}=e,{getPublicTokenHeaders:u,getPrivateTokenHeaders:p,getStorefrontApiUrl:l,getShopifyDomain:h}=hydrogenReact.createStorefrontClient(c),y=(c.privateStorefrontToken?p:u)({contentType:"json",buyerIp:t?.buyerIp||n});if(y[be]=t?.requestGroupId||o||Pe(),s&&(y[hydrogenReact.SHOPIFY_STOREFRONT_ID_HEADER]=s),(y["user-agent"]=`Hydrogen ${z}`),t&&t.cookie){let f=hydrogenReact.getShopifyCookies(t.cookie??"");f[hydrogenReact.SHOPIFY_Y]&&(y[hydrogenReact.SHOPIFY_STOREFRONT_Y_HEADER]=f[hydrogenReact.SHOPIFY_Y]),f[hydrogenReact.SHOPIFY_S]&&(y[hydrogenReact.SHOPIFY_STOREFRONT_S_HEADER]=f[hydrogenReact.SHOPIFY_S]);}async function A({query:f,mutation:R,variables:T,cache:w,headers:O=[],storefrontApiVersion:Ke}){let ze=O instanceof Headers?Object.fromEntries(O.entries()):Array.isArray(O)?Object.fromEntries(O):O;f=f??R;let M={...T};i&&(!T?.country&&/\$country/.test(f)&&(M.country=i.country),!T?.language&&/\$language/.test(f)&&(M.language=i.language));let Ye=l({storefrontApiVersion:Ke}),Xe={method:"POST",headers:{...y,...ze},body:JSON.stringify({query:f,variables:M})},[q,ge]=await Oe(Ye,Xe,{cacheInstance:R?void 0:r,cache:w||I(),shouldCacheResponse:Ae,waitUntil:a}),me={response:ge,type:R?"mutation":"query",query:f,queryVariables:M,errors:void 0};if(!ge.ok){let k;try{k=U(q);}catch{k=[{message:q}];}Ue({...me,errors:k});}let{data:Ze,errors:Ce}=q;return Ce?.length&&Ue({...me,errors:Ce,ErrorConstructor:Ee}),Ze}return {storefront:{query:(f,R)=>{if(f=Me(f),St.test(f))throw new Error("[h2:error:storefront.query] Cannot execute mutations");return A({...R,query:f})},mutate:(f,R)=>{if(f=Me(f),ht.test(f))throw new Error("[h2:error:storefront.mutate] Cannot execute queries");return A({...R,mutation:f})},cache:r,CacheNone:H,CacheLong:G,CacheShort:I,CacheCustom:V,generateCacheControlHeader:b,getPublicTokenHeaders:u,getPrivateTokenHeaders:p,getShopifyDomain:h,getApiUrl:l,isApiError:Ct,i18n:i??It}}}function Ue({response:e,errors:t,type:r,query:a,queryVariables:n,ErrorConstructor:i=Error}){let o=e.headers.get("x-request-id"),s=(typeof t=="string"?t:t?.map?.(c=>c.message).join(`
|
|
15
|
+
`))||`API response error: ${e.status}`;throw new i(`[h2:error:storefront.${r}] `+s+(o?` - Request ID: ${o}`:""),{cause:{errors:t,requestId:o}})}function oa(e){let{cache:t,waitUntil:r}=e;return function(n,i,o){return K(n,o,{strategy:i,cacheInstance:t,waitUntil:r})}}var Y=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,...i}=r,o=new Headers(i.headers),s=o.get("cache-control")||o.get("real-cache-control")||"",c=parseInt(s.match(/max-age=(\d+)/)?.[1]||"0",10),d=parseInt(s.match(/stale-while-revalidate=(\d+)/)?.[1]||"0",10),u=(Date.now()-n)/1e3;if(u>c+d){this.#e.delete(t.url);return}let l=u>c;return o.set("cache",l?"STALE":"HIT"),o.set("date",new Date(n).toUTCString()),new Response(a,{status:i.status??200,headers:o})}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 Rt(e){let{storefront:t,request:r,noAdminRedirect:a,response:n=new Response("Not Found",{status:404})}=e,{pathname:i,search:o}=new URL(r.url),s=i+o;if(i==="/admin"&&!a)return serverRuntime.redirect(`${t.getShopifyDomain()}/admin`);try{let{urlRedirects:c}=await t.query(xt,{variables:{query:"path:"+s}}),d=c?.edges?.[0]?.node?.target;if(d)return new Response(null,{status:301,headers:{location:d}});let u=new URLSearchParams(o),p=u.get("return_to")||u.get("redirect");if(p){if(Tt(p))return serverRuntime.redirect(p);console.warn(`Cross-domain redirects are not supported. Tried to redirect from ${s} to ${p}`);}}catch(c){console.error(`Failed to fetch redirects from Storefront API for route ${s}`,c);}return n}function Tt(e){try{new URL(e);}catch{return !0}return !1}var xt=`#graphql
|
|
11
16
|
query redirects($query: String) {
|
|
12
17
|
urlRedirects(first: 1, query: $query) {
|
|
13
18
|
edges {
|
|
@@ -17,12 +22,12 @@ var ze=Object.defineProperty;var Ye=(e,t)=>()=>(e&&(t=e(e=0)),t);var Xe=(e,t)=>{
|
|
|
17
22
|
}
|
|
18
23
|
}
|
|
19
24
|
}
|
|
20
|
-
`;var
|
|
25
|
+
`;var At=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"],i="https://avatars.githubusercontent.com/u/12972006?s=48&v=4";return new Response(`
|
|
21
26
|
<!DOCTYPE html>
|
|
22
27
|
<html lang="en">
|
|
23
28
|
<head>
|
|
24
29
|
<title>GraphiQL</title>
|
|
25
|
-
<link rel="icon" type="image/x-icon" href="${
|
|
30
|
+
<link rel="icon" type="image/x-icon" href="${i}">
|
|
26
31
|
<style>
|
|
27
32
|
body {
|
|
28
33
|
height: 100%;
|
|
@@ -85,18 +90,18 @@ var ze=Object.defineProperty;var Ye=(e,t)=>()=>(e&&(t=e(e=0)),t);var Xe=(e,t)=>{
|
|
|
85
90
|
</script>
|
|
86
91
|
</body>
|
|
87
92
|
</html>
|
|
88
|
-
`,{status:200,headers:{"content-type":"text/html"}})};var
|
|
93
|
+
`,{status:200,headers:{"content-type":"text/html"}})};var x="Error in SEO input: ",L={title:{validate:e=>{if(typeof e!="string")throw new Error(x.concat("`title` should be a string"));if(typeof e=="string"&&e.length>120)throw new Error(x.concat("`title` should not be longer than 120 characters"));return e}},description:{validate:e=>{if(typeof e!="string")throw new Error(x.concat("`description` should be a string"));if(typeof e=="string"&&e.length>155)throw new Error(x.concat("`description` should not be longer than 155 characters"));return e}},url:{validate:e=>{if(typeof e!="string")throw new Error(x.concat("`url` should be a string"));if(typeof e=="string"&&!e.startsWith("http"))throw new Error(x.concat("`url` should be a valid URL"));return e}},handle:{validate:e=>{if(typeof e!="string")throw new Error(x.concat("`handle` should be a string"));if(typeof e=="string"&&!e.startsWith("@"))throw new Error(x.concat("`handle` should start with `@`"));return e}}};function Le(e){let t=[];for(let r of Object.keys(e))switch(r){case"title":{let a=N(L.title,e.title),n=Ot(e?.titleTemplate,a);if(!n)break;t.push(C("title",{title:n}),C("meta",{property:"og:title",content:n}),C("meta",{name:"twitter:title",content:n}));break}case"description":{let a=N(L.description,e.description);if(!a)break;t.push(C("meta",{name:"description",content:a}),C("meta",{property:"og:description",content:a}),C("meta",{name:"twitter:description",content:a}));break}case"url":{let a=N(L.url,e.url);if(!a)break;t.push(C("link",{rel:"canonical",href:a}),C("meta",{property:"og:url",content:a}));break}case"handle":{let a=N(L.handle,e.handle);if(!a)break;t.push(C("meta",{name:"twitter:site",content:a}),C("meta",{name:"twitter:creator",content:a}));break}case"media":{let a,n=Z(e.media);for(let i of n)if(typeof i=="string"&&t.push(C("meta",{name:"og:image",content:i})),i&&typeof i=="object"){let o=i.type||"image",s=i?{url:i?.url,secure_url:i?.url,type:bt(i.url),width:i?.width,height:i?.height,alt:i?.altText}:{};for(let c of Object.keys(s))s[c]&&(a=s[c],t.push(C("meta",{property:`og:${o}:${c}`,content:a},s.url)));}break}case"jsonLd":{let a=Z(e.jsonLd),n=0;for(let i of a){if(typeof i!="object")continue;let o=C("script",{type:"application/ld+json",children:JSON.stringify(i)},`json-ld-${i?.["@type"]||i?.name||n++}`);t.push(o);}break}case"alternates":{let a=Z(e.alternates);for(let n of a){if(!n)continue;let{language:i,url:o,default:s}=n,c=i?`${i}${s?"-default":""}`:void 0;t.push(C("link",{rel:"alternate",hrefLang:c,href:o}));}break}case"robots":{if(!e.robots)break;let{maxImagePreview:a,maxSnippet:n,maxVideoPreview:i,noArchive:o,noFollow:s,noImageIndex:c,noIndex:d,noSnippet:u,noTranslate:p,unavailableAfter:l}=e.robots,h=[o&&"noarchive",c&&"noimageindex",u&&"nosnippet",p&&"notranslate",a&&`max-image-preview:${a}`,n&&`max-snippet:${n}`,i&&`max-video-preview:${i}`,l&&`unavailable_after:${l}`],S=(d?"noindex":"index")+","+(s?"nofollow":"follow");for(let y of h)y&&(S+=`,${y}`);t.push(C("meta",{name:"robots",content:S}));break}}return t.flat().sort((r,a)=>r.key.localeCompare(a.key))}function C(e,t,r){let a={tag:e,props:{},key:""};return e==="title"?(a.children=t.title,a.key=X(a),a):e==="script"?(a.children=typeof t.children=="string"?t.children:"",a.key=X(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=X(a,r),a)}function X(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(o=>o).join("-")}return r==="link"?[r,a.rel,a.hrefLang||a.media].filter(i=>i).join("-").replace(/\s+/g,"-"):r==="script"?`${r}-${t}`:`${r}-${a.type}`}function Ot(e,t){if(t)return e?typeof e=="function"?e(t):e.replace("%s",t??""):t}function bt(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 Z(e){return Array.isArray(e)?e:[e]}function N(e,t){try{return e.validate(t)}catch(r){return console.warn(r.message),t}}var Nt=react.lazy(()=>Promise.resolve().then(()=>(qe(),$e)));function Ft({debug:e}){let t=react$1.useMatches(),r=react$1.useLocation(),a=react.useMemo(()=>t.flatMap(o=>{let{handle:s,...c}=o,d={...c,...r},u=s?.seo,p=c?.data?.seo;return !u&&!p?[]:u?F(s.seo,d):[p]}).reduce((o,s)=>{Object.keys(s).forEach(d=>!s[d]&&delete s[d]);let{jsonLd:c}=s;return c?o?.jsonLd?Array.isArray(c)?{...o,...s,jsonLd:[...o.jsonLd,...c]}:{...o,...s,jsonLd:[...o.jsonLd,c]}:{...o,...s,jsonLd:[c]}:{...o,...s}},{}),[t,r]),{html:n,loggerMarkup:i}=react.useMemo(()=>{let o=Le(a),s=o.map(d=>d.tag==="script"?react.createElement(d.tag,{...d.props,key:d.key,dangerouslySetInnerHTML:{__html:d.children}}):react.createElement(d.tag,{...d.props,key:d.key},d.children)),c=react.createElement(react.Suspense,{fallback:null},react.createElement(Nt,{headTags:o}));return {html:s,loggerMarkup:c}},[a]);return react.createElement(react.Fragment,null,n,e&&i)}function F(e,...t){if(e instanceof Function)return F(e(...t),...t);let r={};return Array.isArray(e)?(r=e.reduce((a,n)=>[...a,F(n)],[]),r):e instanceof Object?(Object.entries(e).forEach(([n,i])=>{r[n]=F(i,...t);}),r):e}function _t({connection:e,children:t=()=>(console.warn("<Pagination> requires children to work properly"),null)}){let a=react$1.useNavigation().state==="loading",{endCursor:n,hasNextPage:i,hasPreviousPage:o,nextPageUrl:s,nodes:c,previousPageUrl:d,startCursor:u}=Qt(e),p=react.useMemo(()=>({pageInfo:{endCursor:n,hasPreviousPage:o,startCursor:u},nodes:c}),[n,o,u,c]),l=react.useMemo(()=>function(y){return i?react.createElement(react$1.Link,{preventScrollReset:!0,...y,to:s,state:p,replace:!0}):null},[i,s,p]),h=react.useMemo(()=>function(y){return o?react.createElement(react$1.Link,{preventScrollReset:!0,...y,to:d,state:p,replace:!0}):null},[o,d,p]);return t({state:p,hasNextPage:i,hasPreviousPage:o,isLoading:a,nextPageUrl:s,nodes:c,previousPageUrl:d,NextLink:l,PreviousLink:h})}function Qt(e){let{state:t,search:r}=react$1.useLocation(),i=new URLSearchParams(r).get("direction")==="previous",[o,s]=react.useState(hydrogenReact.flattenConnection(e)),[c,d]=react.useState({startCursor:e.pageInfo.startCursor,endCursor:e.pageInfo.endCursor,hasPreviousPage:e.pageInfo.hasPreviousPage,hasNextPage:e.pageInfo.hasNextPage});react.useEffect(()=>{if(t?.nodes&&s(i?[...hydrogenReact.flattenConnection(e),...t.nodes]:[...t.nodes,...hydrogenReact.flattenConnection(e)]),t?.pageInfo){let l=t?.pageInfo?.startCursor===void 0?e.pageInfo.startCursor:t.pageInfo.startCursor,h=t?.pageInfo?.endCursor===void 0?e.pageInfo.endCursor:t.pageInfo.endCursor,S=t?.pageInfo?.hasPreviousPage===void 0?e.pageInfo.hasPreviousPage:t.pageInfo.hasPreviousPage,y=t?.pageInfo?.hasNextPage===void 0?e.pageInfo.hasNextPage:t.pageInfo.hasNextPage;t?.nodes&&(i?(l=e.pageInfo.startCursor,S=e.pageInfo.hasPreviousPage):(h=e.pageInfo.endCursor,y=e.pageInfo.hasNextPage)),d({startCursor:l,endCursor:h,hasPreviousPage:S,hasNextPage:y});}},[t,e]);let u=react.useMemo(()=>{let l=new URLSearchParams(r);return l.set("direction","previous"),c.startCursor&&l.set("cursor",c.startCursor),`?${l.toString()}`},[r,c.startCursor]),p=react.useMemo(()=>{let l=new URLSearchParams(r);return l.set("direction","next"),c.endCursor&&l.set("cursor",c.endCursor),`?${l.toString()}`},[r,c.endCursor]);return {...c,previousPageUrl:u,nextPageUrl:p,nodes:o}}function Ht(e,t={pageBy:20}){if(!(e instanceof Request))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 Ge="cartFormInput";function $({children:e,action:t,inputs:r,route:a}){let n=react$1.useFetcher();return jsxRuntime.jsxs(n.Form,{action:a||"",method:"post",children:[(t||r)&&jsxRuntime.jsx("input",{type:"hidden",name:Ge,value:JSON.stringify({action:t,inputs:r})}),typeof e=="function"?e(n):e]})}$.INPUT_NAME=Ge;$.ACTIONS={AttributesUpdateInput:"AttributesUpdateInput",BuyerIdentityUpdate:"BuyerIdentityUpdate",Create:"Create",DiscountCodesUpdate:"DiscountCodesUpdate",LinesAdd:"LinesAdd",LinesRemove:"LinesRemove",LinesUpdate:"LinesUpdate",NoteUpdate:"NoteUpdate",SelectedDeliveryOptionsUpdate:"SelectedDeliveryOptionsUpdate",MetafieldsSet:"MetafieldsSet",MetafieldDelete:"MetafieldDelete"};function Vt(e){let t={};for(let o of e.entries()){let s=o[0],c=e.getAll(s);t[s]=c.length>1?c:o[1];}let{cartFormInput:r,...a}=t,{action:n,inputs:i}=r?JSON.parse(String(r)):{};return {action:n,inputs:{...i,...a}}}$.getFormInput=Vt;var g=`#graphql
|
|
89
94
|
fragment CartApiError on CartUserError {
|
|
90
95
|
message
|
|
91
96
|
field
|
|
92
97
|
code
|
|
93
98
|
}
|
|
94
|
-
`,
|
|
99
|
+
`,m=`#graphql
|
|
95
100
|
fragment CartApiMutation on Cart {
|
|
96
101
|
id
|
|
97
102
|
totalQuantity
|
|
98
103
|
}
|
|
99
|
-
`;function
|
|
104
|
+
`;function re(e){return async(t,r)=>{let{cartId:a,...n}=r||{},{cartCreate:i}=await e.storefront.mutate(Wt(e.cartFragment),{variables:{input:t,...n}});return i}}var Wt=(e=m)=>`#graphql
|
|
100
105
|
mutation cartCreate(
|
|
101
106
|
$input: CartInput!
|
|
102
107
|
$country: CountryCode = ZZ
|
|
@@ -113,8 +118,8 @@ var ze=Object.defineProperty;var Ye=(e,t)=>()=>(e&&(t=e(e=0)),t);var Xe=(e,t)=>{
|
|
|
113
118
|
}
|
|
114
119
|
}
|
|
115
120
|
${e}
|
|
116
|
-
${
|
|
117
|
-
`;function
|
|
121
|
+
${g}
|
|
122
|
+
`;function ae(e){return async t=>{let r=e.getCartId();if(!r)return null;let{cart:a}=await e.storefront.query(Jt(e.cartFragment),{variables:{cartId:r,...t},cache:e.storefront.CacheNone()});return a}}var Jt=(e=Kt)=>`#graphql
|
|
118
123
|
query CartQuery(
|
|
119
124
|
$cartId: ID!
|
|
120
125
|
$numCartLines: Int = 100
|
|
@@ -127,7 +132,7 @@ var ze=Object.defineProperty;var Ye=(e,t)=>()=>(e&&(t=e(e=0)),t);var Xe=(e,t)=>{
|
|
|
127
132
|
}
|
|
128
133
|
|
|
129
134
|
${e}
|
|
130
|
-
`,
|
|
135
|
+
`,Kt=`#graphql
|
|
131
136
|
fragment CartApiQuery on Cart {
|
|
132
137
|
id
|
|
133
138
|
checkoutUrl
|
|
@@ -233,7 +238,7 @@ var ze=Object.defineProperty;var Ye=(e,t)=>()=>(e&&(t=e(e=0)),t);var Xe=(e,t)=>{
|
|
|
233
238
|
width
|
|
234
239
|
height
|
|
235
240
|
}
|
|
236
|
-
`;function
|
|
241
|
+
`;function ne(e){return async(t,r)=>{let{cartLinesAdd:a}=await e.storefront.mutate(zt(e.cartFragment),{variables:{cartId:e.getCartId(),lines:t,...r}});return a}}var zt=(e=m)=>`#graphql
|
|
237
242
|
mutation cartLinesAdd(
|
|
238
243
|
$cartId: ID!
|
|
239
244
|
$lines: [CartLineInput!]!
|
|
@@ -251,8 +256,8 @@ var ze=Object.defineProperty;var Ye=(e,t)=>()=>(e&&(t=e(e=0)),t);var Xe=(e,t)=>{
|
|
|
251
256
|
}
|
|
252
257
|
|
|
253
258
|
${e}
|
|
254
|
-
${
|
|
255
|
-
`;function
|
|
259
|
+
${g}
|
|
260
|
+
`;function oe(e){return async(t,r)=>{let{cartLinesUpdate:a}=await e.storefront.mutate(Yt(e.cartFragment),{variables:{cartId:e.getCartId(),lines:t,...r}});return a}}var Yt=(e=m)=>`#graphql
|
|
256
261
|
mutation cartLinesUpdate(
|
|
257
262
|
$cartId: ID!
|
|
258
263
|
$lines: [CartLineUpdateInput!]!
|
|
@@ -270,8 +275,8 @@ var ze=Object.defineProperty;var Ye=(e,t)=>()=>(e&&(t=e(e=0)),t);var Xe=(e,t)=>{
|
|
|
270
275
|
}
|
|
271
276
|
|
|
272
277
|
${e}
|
|
273
|
-
${
|
|
274
|
-
`;function
|
|
278
|
+
${g}
|
|
279
|
+
`;function ie(e){return async(t,r)=>{let{cartLinesRemove:a}=await e.storefront.mutate(Xt(e.cartFragment),{variables:{cartId:e.getCartId(),lineIds:t,...r}});return a}}var Xt=(e=m)=>`#graphql
|
|
275
280
|
mutation cartLinesRemove(
|
|
276
281
|
$cartId: ID!
|
|
277
282
|
$lineIds: [ID!]!
|
|
@@ -289,8 +294,8 @@ var ze=Object.defineProperty;var Ye=(e,t)=>()=>(e&&(t=e(e=0)),t);var Xe=(e,t)=>{
|
|
|
289
294
|
}
|
|
290
295
|
|
|
291
296
|
${e}
|
|
292
|
-
${
|
|
293
|
-
`;function
|
|
297
|
+
${g}
|
|
298
|
+
`;function se(e){return async(t,r)=>{let a=t.filter((i,o,s)=>s.indexOf(i)===o),{cartDiscountCodesUpdate:n}=await e.storefront.mutate(Zt(e.cartFragment),{variables:{cartId:e.getCartId(),discountCodes:a,...r}});return n}}var Zt=(e=m)=>`#graphql
|
|
294
299
|
mutation cartDiscountCodesUpdate(
|
|
295
300
|
$cartId: ID!
|
|
296
301
|
$discountCodes: [String!]
|
|
@@ -307,8 +312,8 @@ var ze=Object.defineProperty;var Ye=(e,t)=>()=>(e&&(t=e(e=0)),t);var Xe=(e,t)=>{
|
|
|
307
312
|
}
|
|
308
313
|
}
|
|
309
314
|
${e}
|
|
310
|
-
${
|
|
311
|
-
`;function
|
|
315
|
+
${g}
|
|
316
|
+
`;function ce(e){return async(t,r)=>{let{cartBuyerIdentityUpdate:a}=await e.storefront.mutate(er(e.cartFragment),{variables:{cartId:e.getCartId(),buyerIdentity:t,...r}});return a}}var er=(e=m)=>`#graphql
|
|
312
317
|
mutation cartBuyerIdentityUpdate(
|
|
313
318
|
$cartId: ID!
|
|
314
319
|
$buyerIdentity: CartBuyerIdentityInput!
|
|
@@ -325,8 +330,8 @@ var ze=Object.defineProperty;var Ye=(e,t)=>()=>(e&&(t=e(e=0)),t);var Xe=(e,t)=>{
|
|
|
325
330
|
}
|
|
326
331
|
}
|
|
327
332
|
${e}
|
|
328
|
-
${
|
|
329
|
-
`;function
|
|
333
|
+
${g}
|
|
334
|
+
`;function pe(e){return async(t,r)=>{let{cartNoteUpdate:a}=await e.storefront.mutate(tr(e.cartFragment),{variables:{cartId:e.getCartId(),note:t,...r}});return a}}var tr=(e=m)=>`#graphql
|
|
330
335
|
mutation cartNoteUpdate(
|
|
331
336
|
$cartId: ID!
|
|
332
337
|
$note: String
|
|
@@ -343,8 +348,8 @@ var ze=Object.defineProperty;var Ye=(e,t)=>()=>(e&&(t=e(e=0)),t);var Xe=(e,t)=>{
|
|
|
343
348
|
}
|
|
344
349
|
}
|
|
345
350
|
${e}
|
|
346
|
-
${
|
|
347
|
-
`;function
|
|
351
|
+
${g}
|
|
352
|
+
`;function ue(e){return async(t,r)=>{let{cartSelectedDeliveryOptionsUpdate:a}=await e.storefront.mutate(rr(e.cartFragment),{variables:{cartId:e.getCartId(),selectedDeliveryOptions:t,...r}});return a}}var rr=(e=m)=>`#graphql
|
|
348
353
|
mutation cartSelectedDeliveryOptionsUpdate(
|
|
349
354
|
$cartId: ID!
|
|
350
355
|
$selectedDeliveryOptions: [CartSelectedDeliveryOptionInput!]!
|
|
@@ -361,8 +366,8 @@ var ze=Object.defineProperty;var Ye=(e,t)=>()=>(e&&(t=e(e=0)),t);var Xe=(e,t)=>{
|
|
|
361
366
|
}
|
|
362
367
|
}
|
|
363
368
|
${e}
|
|
364
|
-
${
|
|
365
|
-
`;function
|
|
369
|
+
${g}
|
|
370
|
+
`;function de(e){return async(t,r)=>{let{cartAttributesUpdate:a}=await e.storefront.mutate(ar(e.cartFragment),{variables:{cartId:r?.cartId||e.getCartId(),attributes:t}});return a}}var ar=(e=m)=>`#graphql
|
|
366
371
|
mutation cartAttributesUpdate(
|
|
367
372
|
$cartId: ID!
|
|
368
373
|
$attributes: [AttributeInput!]!
|
|
@@ -377,8 +382,8 @@ var ze=Object.defineProperty;var Ye=(e,t)=>()=>(e&&(t=e(e=0)),t);var Xe=(e,t)=>{
|
|
|
377
382
|
}
|
|
378
383
|
}
|
|
379
384
|
${e}
|
|
380
|
-
${
|
|
381
|
-
`;function
|
|
385
|
+
${g}
|
|
386
|
+
`;function le(e){return async(t,r)=>{let a=r?.cartId||e.getCartId(),n=t.map(o=>({...o,ownerId:a})),{cartMetafieldsSet:i}=await e.storefront.mutate(nr(),{variables:{metafields:n}});return {cart:{id:a},errors:i.errors}}}var nr=()=>`#graphql
|
|
382
387
|
mutation cartMetafieldsSet(
|
|
383
388
|
$metafields: [CartMetafieldsSetInput!]!
|
|
384
389
|
$language: LanguageCode
|
|
@@ -393,7 +398,7 @@ var ze=Object.defineProperty;var Ye=(e,t)=>()=>(e&&(t=e(e=0)),t);var Xe=(e,t)=>{
|
|
|
393
398
|
}
|
|
394
399
|
}
|
|
395
400
|
}
|
|
396
|
-
`;function
|
|
401
|
+
`;function fe(e){return async(t,r)=>{let a=r?.cartId||e.getCartId(),{cartMetafieldDelete:n}=await e.storefront.mutate(or(),{variables:{input:{ownerId:a,key:t}}});return {cart:{id:a},errors:n.errors}}}var or=()=>`#graphql
|
|
397
402
|
mutation cartMetafieldDelete(
|
|
398
403
|
$input: CartMetafieldDeleteInput!
|
|
399
404
|
) {
|
|
@@ -405,7 +410,7 @@ var ze=Object.defineProperty;var Ye=(e,t)=>()=>(e&&(t=e(e=0)),t);var Xe=(e,t)=>{
|
|
|
405
410
|
}
|
|
406
411
|
}
|
|
407
412
|
}
|
|
408
|
-
`;var
|
|
413
|
+
`;var ir=new Set(["domain","path","max-age","expires","samesite","secure","httponly"]);function Ve(e){let t={},r,a,n=0,i=e.split(/;\s*/g),o,s;for(;n<i.length;n++)if(a=i[n],r=a.indexOf("="),~r){if(o=a.substring(0,r++).trim(),s=a.substring(r).trim(),s[0]==='"'&&(s=s.substring(1,s.length-1)),~s.indexOf("%"))try{s=decodeURIComponent(s);}catch{}ir.has(a=o.toLowerCase())?a==="expires"?t.expires=new Date(s):a==="max-age"?t.maxage=+s:t[a]=s:t[o]=s;}else (o=a.trim().toLowerCase())&&(o==="httponly"||o==="secure")&&(t[o]=!0);return t}function Be(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 sr=e=>{let t=Ve(e.get("Cookie")||"");return ()=>t.cart?`gid://shopify/Cart/${t.cart}`:void 0};var cr=e=>t=>{let r=new Headers;return r.append("Set-Cookie",Be("cart",t.split("/").pop()||"",{path:"/",...e})),r};function pr(e){let{getCartId:t,setCartId:r,storefront:a,cartQueryFragment:n,cartMutateFragment:i}=e,o={storefront:a,getCartId:t,cartFragment:i},s=t(),c=re(o),d={get:ae({storefront:a,getCartId:t,cartFragment:n}),getCartId:t,setCartId:r,create:c,addLines:async(u,p)=>s||p?.cartId?await ne(o)(u,p):await c({lines:u},p),updateLines:oe(o),removeLines:ie(o),updateDiscountCodes:async(u,p)=>s||p?.cartId?await se(o)(u,p):await c({discountCodes:u},p),updateBuyerIdentity:async(u,p)=>s||p?.cartId?await ce(o)(u,p):await c({buyerIdentity:u},p),updateNote:async(u,p)=>s||p?.cartId?await pe(o)(u,p):await c({note:u},p),updateSelectedDeliveryOption:ue(o),updateAttributes:async(u,p)=>s||p?.cartId?await de(o)(u,p):await c({attributes:u},p),setMetafields:async(u,p)=>s||p?.cartId?await le(o)(u,p):await c({metafields:u},p),deleteMetafield:fe(o)};return "customMethods__unstable"in e?{...d,...e.customMethods__unstable??{}}:d}function yr({handle:e,options:t=[],variants:r=[],productPath:a="products",children:n}){let i=r instanceof Array?r:hydrogenReact.flattenConnection(r),{searchParams:o,path:s,alreadyOnProductPage:c}=mr(e,a),d=t.filter(u=>u?.values?.length===1);return react.createElement(react.Fragment,null,...react.useMemo(()=>t.filter(u=>u?.values?.length>1).map(u=>{let p,l=[];for(let h of u.values){let S=new URLSearchParams(c?o:void 0);S.set(u.name,h),d.forEach(T=>{S.set(T.name,T.values[0]);});let y=i.find(T=>T?.selectedOptions?.every(w=>S.get(w?.name)===w?.value)),A=o.get(u.name),f=A?A===h:!1;f&&(p=h);let R="?"+S.toString();l.push({value:h,isAvailable:y?y.availableForSale:!0,to:s+R,search:R,isActive:f});}return n({option:{name:u.name,value:p,values:l}})}),[t,i,n]))}var gr=e=>{if(!(e instanceof Request))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 mr(e,t){let{pathname:r,search:a}=react$1.useLocation();return react.useMemo(()=>{let n=/(\/[a-zA-Z]{2}-[a-zA-Z]{2}\/)/g.exec(r),i=n&&n.length>0;t=t.startsWith("/")?t.substring(1):t;let o=i?`${n[0]}${t}/${e}`:`/${t}/${e}`;return {searchParams:new URLSearchParams(a),alreadyOnProductPage:o===r,path:o}},[r,a,e,t])}function We(){return hr(Cr())}function Cr(){try{return crypto.getRandomValues(new Uint8Array(16))}catch{return new Uint8Array(16).map(()=>Math.random()*255|0)}}function hr(e){return Array.from(e,function(t){return ("0"+(t&255).toString(16)).slice(-2)}).join("")}var Je=react.createContext(void 0),xr=Je.Provider,ye=()=>react.useContext(Je);function Ar(e={}){let t=We(),r=Or(t,e);return {nonce:t,header:r,NonceProvider:({children:n})=>react.createElement(xr,{value:t},n)}}function Or(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),Tr__default.default({directives:n})}var Pr=react.forwardRef((e,t)=>{let r=ye();return jsxRuntime.jsx("script",{...e,nonce:r,ref:t})});//! @see: https://shopify.dev/docs/api/storefront/latest/mutations/cartCreate
|
|
409
414
|
//! @see https://shopify.dev/docs/api/storefront/latest/queries/cart
|
|
410
415
|
//! @see: https://shopify.dev/docs/api/storefront/latest/mutations/cartLinesAdd
|
|
411
416
|
//! @see: https://shopify.dev/docs/api/storefront/latest/mutations/cartLinesUpdate
|
|
@@ -501,37 +506,40 @@ Object.defineProperty(exports, 'useShopifyCookies', {
|
|
|
501
506
|
enumerable: true,
|
|
502
507
|
get: function () { return hydrogenReact.useShopifyCookies; }
|
|
503
508
|
});
|
|
504
|
-
exports.CacheCustom =
|
|
505
|
-
exports.CacheLong =
|
|
506
|
-
exports.CacheNone =
|
|
509
|
+
exports.CacheCustom = V;
|
|
510
|
+
exports.CacheLong = G;
|
|
511
|
+
exports.CacheNone = H;
|
|
507
512
|
exports.CacheShort = I;
|
|
508
|
-
exports.CartForm =
|
|
509
|
-
exports.InMemoryCache =
|
|
510
|
-
exports.Pagination =
|
|
511
|
-
exports.
|
|
512
|
-
exports.
|
|
513
|
-
exports.
|
|
514
|
-
exports.
|
|
515
|
-
exports.
|
|
516
|
-
exports.
|
|
517
|
-
exports.
|
|
518
|
-
exports.
|
|
519
|
-
exports.
|
|
520
|
-
exports.
|
|
521
|
-
exports.
|
|
522
|
-
exports.
|
|
523
|
-
exports.
|
|
524
|
-
exports.
|
|
525
|
-
exports.
|
|
526
|
-
exports.
|
|
527
|
-
exports.
|
|
528
|
-
exports.
|
|
529
|
-
exports.
|
|
530
|
-
exports.
|
|
531
|
-
exports.
|
|
532
|
-
exports.
|
|
533
|
-
exports.
|
|
534
|
-
exports.
|
|
535
|
-
exports.
|
|
513
|
+
exports.CartForm = $;
|
|
514
|
+
exports.InMemoryCache = Y;
|
|
515
|
+
exports.Pagination = _t;
|
|
516
|
+
exports.Script = Pr;
|
|
517
|
+
exports.Seo = Ft;
|
|
518
|
+
exports.VariantSelector = yr;
|
|
519
|
+
exports.cartAttributesUpdateDefault = de;
|
|
520
|
+
exports.cartBuyerIdentityUpdateDefault = ce;
|
|
521
|
+
exports.cartCreateDefault = re;
|
|
522
|
+
exports.cartDiscountCodesUpdateDefault = se;
|
|
523
|
+
exports.cartGetDefault = ae;
|
|
524
|
+
exports.cartGetIdDefault = sr;
|
|
525
|
+
exports.cartLinesAddDefault = ne;
|
|
526
|
+
exports.cartLinesRemoveDefault = ie;
|
|
527
|
+
exports.cartLinesUpdateDefault = oe;
|
|
528
|
+
exports.cartMetafieldDeleteDefault = fe;
|
|
529
|
+
exports.cartMetafieldsSetDefault = le;
|
|
530
|
+
exports.cartNoteUpdateDefault = pe;
|
|
531
|
+
exports.cartSelectedDeliveryOptionsUpdateDefault = ue;
|
|
532
|
+
exports.cartSetIdDefault = cr;
|
|
533
|
+
exports.createCartHandler = pr;
|
|
534
|
+
exports.createContentSecurityPolicy = Ar;
|
|
535
|
+
exports.createStorefrontClient = ta;
|
|
536
|
+
exports.createWithCache = oa;
|
|
537
|
+
exports.generateCacheControlHeader = b;
|
|
538
|
+
exports.getPaginationVariables = Ht;
|
|
539
|
+
exports.getSelectedProductOptions = gr;
|
|
540
|
+
exports.graphiqlLoader = At;
|
|
541
|
+
exports.isStorefrontApiError = Ct;
|
|
542
|
+
exports.storefrontRedirect = Rt;
|
|
543
|
+
exports.useNonce = ye;
|
|
536
544
|
//# sourceMappingURL=out.js.map
|
|
537
545
|
//# sourceMappingURL=index.cjs.map
|