hydrogen-sfdgspsdmq-test1 0.0.1-security → 2024.1.12
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of hydrogen-sfdgspsdmq-test1 might be problematic. Click here for more details.
- package/LICENSE.md +7 -0
- package/README.md +20 -3
- package/dist/customer-account-api-types.d.ts +9675 -0
- package/dist/customer-account.schema.json +1 -0
- package/dist/development/build.js +1 -0
- package/dist/development/index.cjs +3708 -0
- package/dist/development/index.cjs.map +1 -0
- package/dist/development/index.js +3491 -0
- package/dist/development/index.js.map +1 -0
- package/dist/development/log-seo-tags-IG37ONQ2.js +74 -0
- package/dist/development/log-seo-tags-IG37ONQ2.js.map +1 -0
- package/dist/index.cjs +1 -0
- package/dist/production/index.cjs +754 -0
- package/dist/production/index.cjs.map +1 -0
- package/dist/production/index.d.cts +1515 -0
- package/dist/production/index.d.ts +1515 -0
- package/dist/production/index.js +626 -0
- package/dist/production/index.js.map +1 -0
- package/dist/production/log-seo-tags-TY72EQWZ.js +5 -0
- package/dist/production/log-seo-tags-TY72EQWZ.js.map +1 -0
- package/dist/storefront-api-types.d.ts +7986 -0
- package/dist/storefront.schema.json +1 -0
- package/package.json +78 -3
@@ -0,0 +1,626 @@
|
|
1
|
+
import { createStorefrontClient, SHOPIFY_STOREFRONT_ID_HEADER, getShopifyCookies, SHOPIFY_Y, SHOPIFY_STOREFRONT_Y_HEADER, SHOPIFY_S, SHOPIFY_STOREFRONT_S_HEADER, flattenConnection, ShopPayButton } from '@shopify/hydrogen-react';
|
2
|
+
export { AnalyticsEventName, AnalyticsPageType, ExternalVideo, IMAGE_FRAGMENT, Image, MediaFile, ModelViewer, Money, ShopifySalesChannel, Video, customerAccountApiCustomScalars, flattenConnection, getClientBrowserParameters, getShopifyCookies, parseGid, parseMetafield, sendShopifyAnalytics, storefrontApiCustomScalars, useLoadScript, useMoney, useShopifyCookies } from '@shopify/hydrogen-react';
|
3
|
+
import { lazy, createContext, forwardRef, useMemo, createElement, Suspense, Fragment, useRef, useEffect, useContext } from 'react';
|
4
|
+
import { useMatches, useLocation, useNavigation, Link, useNavigate, useFetcher, useFetchers } from '@remix-run/react';
|
5
|
+
import { jsx, jsxs, Fragment as Fragment$1 } from 'react/jsx-runtime';
|
6
|
+
import ln from 'content-security-policy-builder';
|
7
|
+
|
8
|
+
function at(e){let t=Array.isArray(e)?e:[e],r="";for(let n of t)n!=null&&(typeof n=="object"?r+=JSON.stringify(n):r+=n.toString());return encodeURIComponent(r)}var ie="public",Ft="private",Ae="no-store",ot={maxAge:"max-age",staleWhileRevalidate:"stale-while-revalidate",sMaxAge:"s-maxage",staleIfError:"stale-if-error"};function Z(e){let t=[];return Object.keys(e).forEach(r=>{r==="mode"?t.push(e[r]):ot[r]&&t.push(`${ot[r]}=${e[r]}`);}),t.join(", ")}function xe(){return {mode:Ae}}function Ee(e){if(e?.mode&&e?.mode!==ie&&e?.mode!==Ft)throw Error("'mode' must be either 'public' or 'private'")}function G(e){return Ee(e),{mode:ie,maxAge:1,staleWhileRevalidate:9,...e}}function be(e){return Ee(e),{mode:ie,maxAge:3600,staleWhileRevalidate:82800,...e}}function V(e){return Ee(e),{mode:ie,maxAge:1,staleWhileRevalidate:86399,...e}}function Pe(e){return e}function $(e){return String(e).includes("__proto__")?JSON.parse(e,$t):JSON.parse(e)}function $t(e,t){if(e!=="__proto__")return t}function ce(e,t){return e&&t?{...e,...t}:e||V()}function Oe(e){return Z(ce(e))}async function qt(e,t){if(!e)return;let r=await e.match(t);if(!r){return}return r}async function Ht(e,t,r,n){if(!e)return;let a=ce(n),o=Oe(ce(a,{maxAge:(a.maxAge||0)+(a.staleWhileRevalidate||0)})),s=Oe(ce(a));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 Qt(e,t){e&&await e.delete(t);}function Gt(e,t){let r=e.headers.get("real-cache-control"),n=0;if(r){let o=r.match(/max-age=(\d*)/);o&&o.length>1&&(n=parseFloat(o[1]));}return [(new Date().valueOf()-new Date(t).valueOf())/1e3,n]}function Vt(e,t){let r=t.headers.get("cache-put-date");if(!r)return !1;let[n,a]=Gt(t,r),o=n>a;return o}var ue={get:qt,set:Ht,delete:Qt,generateDefaultCacheControlHeader:Oe,isStale:Vt};function we(e){return `https://shopify.dev/?${e}`}function Bt(e){return e||V()}async function st(e,t){if(!e)return;let r=we(t),n=new Request(r),a=await ue.get(e,n);if(!a)return;let o=await a.text();try{return [$(o),a]}catch{return [o,a]}}async function De(e,t,r,n){if(!e)return;let a=we(t),o=new Request(a),s=new Response(JSON.stringify(r));await ue.set(e,o,s,Bt(n));}function it(e,t){return ue.isStale(new Request(we(e)),t)}function ct(e,t){return [e,{status:t.status,statusText:t.statusText,headers:Array.from(t.headers.entries())}]}function ut([e,t]){return [e,new Response(e,t)]}var pt=(e,t)=>!e?.errors&&t.status<400,Ue=new Set;async function Le(e,t,{strategy:r=G(),cacheInstance:n,shouldCacheResult:a=()=>!0,waitUntil:o,debugInfo:s}){let c=at([...typeof e=="string"?[e]:e]),l=m=>{({displayName:m.displayName,url:m.response?.url,responseInit:{status:m.response?.status||0,statusText:m.response?.statusText||"",headers:Array.from(m.response?.headers.entries()||[])}});},p=void 0;if(!n||!r||r.mode===Ae){let m=await t({addDebugData:l});return m}let f=await st(n,c);if(f){let[m,C]=f,S=it(c,C)?"STALE":"HIT";if(!Ue.has(c)&&S==="STALE"){Ue.add(c);let g=Promise.resolve().then(async()=>{let b=Date.now();try{let d=await t({addDebugData:l});a(d)&&(await De(n,c,d,r),p?.({result:d,cacheStatus:"PUT",overrideStartTime:b}));}catch(d){d.message&&(d.message="SWR in sub-request failed: "+d.message),console.error(d);}finally{Ue.delete(c);}});o?.(g);}return m}let y=await t({addDebugData:l});if(a(y)){let m=Promise.resolve().then(async()=>{await De(n,c,y,r);});o?.(m);}return y}async function dt(e,t,{cacheInstance:r,cache:n,cacheKey:a=[e,t],shouldCacheResponse:o=()=>!0,waitUntil:s,returnType:i="json",debugInfo:c}={}){return !n&&(!t.method||t.method==="GET")&&(n=G()),Le(a,async()=>{let u=await fetch(e,t),l;try{l=await u[i]();}catch{try{l=await u.text();}catch{return ct("",u)}}return ct(l,u)},{cacheInstance:r,waitUntil:s,strategy:n??null,debugInfo:c,shouldCacheResult:u=>o(...ut(u))}).then(ut)}var ve="Custom-Storefront-Request-Group-ID",ke="X-Shopify-Storefront-Access-Token",Ne="X-SDK-Variant",_e="X-SDK-Variant-Source",Me="X-SDK-Version";function lt(){return typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():`weak-${Math.random().toString(16).substring(2)}`}var ee="2024.1.6";function B(e){return e.replace(/\s*#.*$/gm,"").replace(/\s+/gm," ").trim()}var Wt=/(^|}\s)query[\s({]/im,jt=/(^|}\s)mutation[\s({]/im;function pe(e,t){if(!Wt.test(e))throw new Error(`[h2:error:${t}] Can only execute queries`)}function de(e,t){if(!jt.test(e))throw new Error(`[h2:error:${t}] Can only execute mutations`)}var q=class extends Error{locations;path;extensions;constructor(t,r={}){let a=(r.clientOperation?`[h2:error:${r.clientOperation}] `:"")+t+(r.requestId?` - Request ID: ${r.requestId}`:"");super(a),this.name="GraphQLError",this.extensions=r.extensions,this.locations=r.locations,this.path=r.path,this.stack=r.stack||void 0;try{this.cause=JSON.stringify({...typeof r.cause=="object"?r.cause:{},requestId:r.requestId});}catch{r.cause&&(this.cause=r.cause);}}get[Symbol.toStringTag](){return this.name}toString(){let t=`${this.name}: ${this.message}`;if(this.path)try{t+=` | path: ${JSON.stringify(this.path)}`;}catch{}if(this.extensions)try{t+=` | extensions: ${JSON.stringify(this.extensions)}`;}catch{}return t+=`
|
9
|
+
`,this.stack&&(t+=`${this.stack.slice(this.stack.indexOf(`
|
10
|
+
`)+1)}
|
11
|
+
`),t}toJSON(){return {name:"Error",message:""}}};function te({url:e,response:t,errors:r,type:n,query:a,queryVariables:o,ErrorConstructor:s=Error,client:i="storefront"}){let c=(typeof r=="string"?r:r?.map?.(l=>l.message).join(`
|
12
|
+
`))||`URL: ${e}
|
13
|
+
API response error: ${t.status}`,u=new q(c,{query:a,queryVariables:o,cause:{errors:r},clientOperation:`${i}.${n}`,requestId:t.headers.get("x-request-id")});throw new s(u.message,{cause:u.cause})}function W(e,t={}){let r=new Error,n=(a,o="Error")=>{let s=(r.stack??"").split(`
|
14
|
+
`).slice(3+(t.stackOffset??0)).join(`
|
15
|
+
`).replace(/ at loader(\d+) \(/,(i,c)=>i.replace(c,""));return `${o}: ${a}
|
16
|
+
`+s};return e.then(a=>{if(a?.errors&&Array.isArray(a.errors)){let o=typeof t.logErrors=="function"?t.logErrors:()=>t.logErrors??!1;a.errors.forEach(s=>{s&&(s.stack=n(s.message,s.name),o(s)&&console.error(s));});}return a}).catch(a=>{throw a&&(a.stack=n(a.message,a.name)),a})}var k=void 0;var Zt={language:"EN",country:"US"};function aa(e){let {storefrontHeaders:t,cache:r,waitUntil:n,i18n:a,storefrontId:o,logErrors:s=!0,...i}=e,{getPublicTokenHeaders:u,getPrivateTokenHeaders:l,getStorefrontApiUrl:p,getShopifyDomain:f}=createStorefrontClient(i),m=(i.privateStorefrontToken?l:u)({contentType:"json",buyerIp:t?.buyerIp||""});if(m[ve]=t?.requestGroupId||lt(),o&&(m[SHOPIFY_STOREFRONT_ID_HEADER]=o),(m["user-agent"]=`Hydrogen ${ee}`),t&&t.cookie){let g=getShopifyCookies(t.cookie??"");g[SHOPIFY_Y]&&(m[SHOPIFY_STOREFRONT_Y_HEADER]=g[SHOPIFY_Y]),g[SHOPIFY_S]&&(m[SHOPIFY_STOREFRONT_S_HEADER]=g[SHOPIFY_S]);}let C=JSON.stringify({"content-type":m["content-type"],"user-agent":m["user-agent"],[Ne]:m[Ne],[_e]:m[_e],[Me]:m[Me],[ke]:m[ke]});async function S({query:g,mutation:b,variables:d,cache:I,headers:R=[],storefrontApiVersion:x,displayName:N,stackInfo:J}){let L=R instanceof Headers?Object.fromEntries(R.entries()):Array.isArray(R)?Object.fromEntries(R):R;g=g??b;let D={...d};a&&(!d?.country&&/\$country/.test(g)&&(D.country=a.country),!d?.language&&/\$language/.test(g)&&(D.language=a.language));let v=p({storefrontApiVersion:x}),E=JSON.stringify({query:g,variables:D}),w={method:"POST",headers:{...m,...L},body:E},z=[v,w.method,C,w.body],[_,F]=await dt(v,w,{cacheInstance:b?void 0:r,cache:I||V(),cacheKey:z,shouldCacheResponse:pt,waitUntil:n,debugInfo:{url:v,graphql:E,requestId:w.headers[ve],purpose:t?.purpose,stackInfo:J,displayName:N}}),Y={url:v,response:F,type:b?"mutation":"query",query:g,queryVariables:D,errors:void 0};if(!F.ok){let X;try{X=$(_);}catch{X=[{message:_}];}te({...Y,errors:X});}let{data:se,errors:Re}=_,Te=Re?.map(({message:X,...nt})=>new q(X,{...nt,clientOperation:`storefront.${Y.type}`,requestId:F.headers.get("x-request-id"),queryVariables:D,query:g}));return h(se,Te)}return {storefront:{query(g,b){g=B(g),pe(g,"storefront.query");let d=gt?.(g);return W(S({...b,query:g,stackInfo:k?.(d)}),{stackOffset:d,logErrors:s})},mutate(g,b){g=B(g),de(g,"storefront.mutate");let d=gt?.(g);return W(S({...b,mutation:g,stackInfo:k?.(d)}),{stackOffset:d,logErrors:s})},cache:r,CacheNone:xe,CacheLong:be,CacheShort:G,CacheCustom:Pe,generateCacheControlHeader:Z,getPublicTokenHeaders:u,getPrivateTokenHeaders:l,getShopifyDomain:f,getApiUrl:p,isApiError:g=>!1,i18n:a??Zt}}}var gt=void 0;function h(e,t){return {...e,...t&&{errors:t}}}function le(e,t){let r=e.headers?.get?.(t)??e.headers?.[t];return typeof r=="string"?r:null}function H(e){return {requestId:e?le(e,"request-id"):void 0,purpose:e?le(e,"purpose"):void 0}}function pa({cache:e,waitUntil:t,request:r}){return function(a,o,s){return Le(a,s,{strategy:o,cacheInstance:e,waitUntil:t,debugInfo:{...H(r),stackInfo:k?.()}})}}var Fe=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:n,timestamp:a,...o}=r,s=new Headers(o.headers),i=s.get("cache-control")||s.get("real-cache-control")||"",c=parseInt(i.match(/max-age=(\d+)/)?.[1]||"0",10),u=parseInt(i.match(/stale-while-revalidate=(\d+)/)?.[1]||"0",10),l=(Date.now()-a)/1e3;if(l>c+u){this.#e.delete(t.url);return}let f=l>c;return s.set("cache",f?"STALE":"HIT"),s.set("date",new Date(a).toUTCString()),new Response(n,{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 n of this.#e.keys())(!t||t.url===n)&&r.push(new Request(n));return Promise.resolve(r)}};function fe(e){if(!e)return;let{pathname:t,search:r}=new URL(e),n=t+r,a=new URLSearchParams(r),o=a.get("return_to")||a.get("redirect");if(o){if(er(e,o))return o;console.warn(`Cross-domain redirects are not supported. Tried to redirect from ${n} to ${o}`);}}function er(e,t){try{return new URL(e).origin===new URL(t,e).origin}catch{return !1}}async function tr(e){let{storefront:t,request:r,noAdminRedirect:n,response:a=new Response("Not Found",{status:404})}=e,o=new URL(r.url),s=o.searchParams.has("_data");o.searchParams.delete("_data");let i=o.toString().replace(o.origin,"");if(o.pathname==="/admin"&&!n)return $e(`${t.getShopifyDomain()}/admin`,s);try{let{urlRedirects:c}=await t.query(rr,{variables:{query:"path:"+i}}),u=c?.edges?.[0]?.node?.target;if(u)return $e(u,s);let l=fe(r.url);if(l)return $e(l,s)}catch(c){console.error(`Failed to fetch redirects from Storefront API for route ${i}`,c);}return a}function $e(e,t){return t?new Response(null,{status:200,headers:{"X-Remix-Redirect":e,"X-Remix-Status":"302"}}):new Response(null,{status:302,headers:{location:e}})}var rr=`#graphql
|
17
|
+
query redirects($query: String) {
|
18
|
+
urlRedirects(first: 1, query: $query) {
|
19
|
+
edges {
|
20
|
+
node {
|
21
|
+
target
|
22
|
+
}
|
23
|
+
}
|
24
|
+
}
|
25
|
+
}
|
26
|
+
`;var nr=async function({request:t,context:r}){let n=r.storefront,a=r.customerAccount,o=new URL(t.url);if(!n)throw new Error("GraphiQL: Hydrogen's storefront client must be injected in the loader context.");let s={};if(n){let u="X-Shopify-Storefront-Access-Token";s.storefront={name:"Storefront API",authHeader:u,accessToken:n.getPublicTokenHeaders()[u],apiUrl:n.getApiUrl(),icon:"SF"};}if(a){let u=await(await fetch(o.origin+"/graphiql/customer-account.schema.json")).json(),l=await a.getAccessToken();u&&(s["customer-account"]={name:"Customer Account API",value:u,authHeader:"Authorization",accessToken:l,apiUrl:a.getApiUrl(),icon:"CA"});}let i="https://avatars.githubusercontent.com/u/12972006?s=48&v=4",c=String.raw;return new Response(c`
|
27
|
+
<!DOCTYPE html>
|
28
|
+
<html lang="en">
|
29
|
+
<head>
|
30
|
+
<title>GraphiQL</title>
|
31
|
+
<link rel="icon" type="image/x-icon" href="${i}" />
|
32
|
+
<style>
|
33
|
+
body {
|
34
|
+
height: 100%;
|
35
|
+
margin: 0;
|
36
|
+
width: 100%;
|
37
|
+
overflow: hidden;
|
38
|
+
background-color: hsl(219, 29%, 18%);
|
39
|
+
}
|
40
|
+
|
41
|
+
#graphiql {
|
42
|
+
height: 100vh;
|
43
|
+
}
|
44
|
+
|
45
|
+
#graphiql > .placeholder {
|
46
|
+
color: slategray;
|
47
|
+
width: fit-content;
|
48
|
+
margin: 40px auto;
|
49
|
+
font-family: Arial;
|
50
|
+
}
|
51
|
+
|
52
|
+
.graphiql-api-toolbar-label {
|
53
|
+
position: absolute;
|
54
|
+
bottom: -6px;
|
55
|
+
right: -4px;
|
56
|
+
font-size: 8px;
|
57
|
+
}
|
58
|
+
</style>
|
59
|
+
|
60
|
+
<script
|
61
|
+
crossorigin
|
62
|
+
src="https://unpkg.com/react@18/umd/react.development.js"
|
63
|
+
></script>
|
64
|
+
<script
|
65
|
+
crossorigin
|
66
|
+
src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"
|
67
|
+
></script>
|
68
|
+
<link
|
69
|
+
rel="stylesheet"
|
70
|
+
href="https://unpkg.com/graphiql@3/graphiql.min.css"
|
71
|
+
/>
|
72
|
+
<link
|
73
|
+
rel="stylesheet"
|
74
|
+
href="https://unpkg.com/@graphiql/plugin-explorer/dist/style.css"
|
75
|
+
/>
|
76
|
+
</head>
|
77
|
+
|
78
|
+
<body>
|
79
|
+
<div id="graphiql">
|
80
|
+
<div class="placeholder">Loading GraphiQL...</div>
|
81
|
+
</div>
|
82
|
+
|
83
|
+
<script
|
84
|
+
src="https://unpkg.com/graphiql@3/graphiql.min.js"
|
85
|
+
type="application/javascript"
|
86
|
+
crossorigin="anonymous"
|
87
|
+
></script>
|
88
|
+
<script
|
89
|
+
src="https://unpkg.com/@graphiql/plugin-explorer/dist/index.umd.js"
|
90
|
+
type="application/javascript"
|
91
|
+
crossorigin="anonymous"
|
92
|
+
></script>
|
93
|
+
|
94
|
+
<script>
|
95
|
+
const windowUrl = new URL(document.URL);
|
96
|
+
const startingSchemaKey =
|
97
|
+
windowUrl.searchParams.get('schema') || 'storefront';
|
98
|
+
|
99
|
+
let query = '{ shop { name } }';
|
100
|
+
if (windowUrl.searchParams.has('query')) {
|
101
|
+
query = decodeURIComponent(
|
102
|
+
windowUrl.searchParams.get('query') ?? query,
|
103
|
+
);
|
104
|
+
}
|
105
|
+
|
106
|
+
// Prettify query
|
107
|
+
query = GraphiQL.GraphQL.print(GraphiQL.GraphQL.parse(query));
|
108
|
+
|
109
|
+
let variables;
|
110
|
+
if (windowUrl.searchParams.has('variables')) {
|
111
|
+
variables = decodeURIComponent(
|
112
|
+
windowUrl.searchParams.get('variables') ?? '',
|
113
|
+
);
|
114
|
+
}
|
115
|
+
|
116
|
+
// Prettify variables
|
117
|
+
if (variables) {
|
118
|
+
variables = JSON.stringify(JSON.parse(variables), null, 2);
|
119
|
+
}
|
120
|
+
|
121
|
+
const schemas = ${JSON.stringify(s)};
|
122
|
+
let lastActiveTabIndex = -1;
|
123
|
+
let lastTabAmount = -1;
|
124
|
+
|
125
|
+
const root = ReactDOM.createRoot(
|
126
|
+
document.getElementById('graphiql'),
|
127
|
+
);
|
128
|
+
|
129
|
+
root.render(React.createElement(RootWrapper));
|
130
|
+
|
131
|
+
const TAB_STATE_KEY = 'graphiql:tabState';
|
132
|
+
const storage = {
|
133
|
+
getTabState: () =>
|
134
|
+
JSON.parse(localStorage.getItem(TAB_STATE_KEY)),
|
135
|
+
setTabState: (state) =>
|
136
|
+
localStorage.setItem(TAB_STATE_KEY, JSON.stringify(state)),
|
137
|
+
};
|
138
|
+
|
139
|
+
let nextSchemaKey;
|
140
|
+
|
141
|
+
function RootWrapper() {
|
142
|
+
const [activeSchema, setActiveSchema] =
|
143
|
+
React.useState(startingSchemaKey);
|
144
|
+
|
145
|
+
const schema = schemas[activeSchema];
|
146
|
+
if (!schema) {
|
147
|
+
throw new Error('No schema found for ' + activeSchema);
|
148
|
+
}
|
149
|
+
|
150
|
+
const keys = Object.keys(schemas);
|
151
|
+
|
152
|
+
return React.createElement(
|
153
|
+
GraphiQL,
|
154
|
+
{
|
155
|
+
fetcher: GraphiQL.createFetcher({
|
156
|
+
url: schema.apiUrl,
|
157
|
+
headers: {[schema.authHeader]: schema.accessToken},
|
158
|
+
}),
|
159
|
+
defaultEditorToolsVisibility: true,
|
160
|
+
query,
|
161
|
+
variables,
|
162
|
+
schema: schema.value,
|
163
|
+
plugins: [GraphiQLPluginExplorer.explorerPlugin()],
|
164
|
+
onTabChange: (state) => {
|
165
|
+
const {activeTabIndex, tabs} = state;
|
166
|
+
const activeTab = tabs[activeTabIndex];
|
167
|
+
|
168
|
+
if (
|
169
|
+
activeTabIndex === lastActiveTabIndex &&
|
170
|
+
lastTabAmount === tabs.length
|
171
|
+
) {
|
172
|
+
if (
|
173
|
+
nextSchemaKey &&
|
174
|
+
activeTab &&
|
175
|
+
activeTab.schemaKey !== nextSchemaKey
|
176
|
+
) {
|
177
|
+
activeTab.schemaKey = nextSchemaKey;
|
178
|
+
nextSchemaKey = undefined;
|
179
|
+
|
180
|
+
// Sync state to localStorage. GraphiQL resets the state
|
181
|
+
// asynchronously, so we need to do it in a timeout.
|
182
|
+
storage.setTabState(state);
|
183
|
+
setTimeout(() => storage.setTabState(state), 500);
|
184
|
+
}
|
185
|
+
|
186
|
+
// React rerrendering, skip
|
187
|
+
return;
|
188
|
+
}
|
189
|
+
|
190
|
+
if (activeTab) {
|
191
|
+
if (!activeTab.schemaKey) {
|
192
|
+
// Creating a new tab
|
193
|
+
if (lastTabAmount < tabs.length) {
|
194
|
+
activeTab.schemaKey = activeSchema;
|
195
|
+
storage.setTabState(state);
|
196
|
+
}
|
197
|
+
}
|
198
|
+
|
199
|
+
const nextSchema = activeTab.schemaKey || 'storefront';
|
200
|
+
|
201
|
+
if (nextSchema !== activeSchema) {
|
202
|
+
setActiveSchema(nextSchema);
|
203
|
+
}
|
204
|
+
}
|
205
|
+
|
206
|
+
lastActiveTabIndex = activeTabIndex;
|
207
|
+
lastTabAmount = tabs.length;
|
208
|
+
},
|
209
|
+
toolbar: {
|
210
|
+
additionalComponent: function () {
|
211
|
+
const schema = schemas[activeSchema];
|
212
|
+
|
213
|
+
return React.createElement(
|
214
|
+
GraphiQL.React.ToolbarButton,
|
215
|
+
{
|
216
|
+
onClick: () => {
|
217
|
+
const activeKeyIndex = keys.indexOf(activeSchema);
|
218
|
+
nextSchemaKey =
|
219
|
+
keys[(activeKeyIndex + 1) % keys.length];
|
220
|
+
|
221
|
+
// This triggers onTabChange
|
222
|
+
if (nextSchemaKey) setActiveSchema(nextSchemaKey);
|
223
|
+
},
|
224
|
+
label: 'Toggle between different API schemas',
|
225
|
+
},
|
226
|
+
React.createElement(
|
227
|
+
'div',
|
228
|
+
{
|
229
|
+
key: 'api-wrapper',
|
230
|
+
className: 'graphiql-toolbar-icon',
|
231
|
+
style: {position: 'relative', fontWeight: 'bolder'},
|
232
|
+
},
|
233
|
+
[
|
234
|
+
React.createElement(
|
235
|
+
'div',
|
236
|
+
{key: 'icon', style: {textAlign: 'center'}},
|
237
|
+
[
|
238
|
+
schema.icon,
|
239
|
+
React.createElement(
|
240
|
+
'div',
|
241
|
+
{
|
242
|
+
key: 'icon-label',
|
243
|
+
className: 'graphiql-api-toolbar-label',
|
244
|
+
},
|
245
|
+
'API',
|
246
|
+
),
|
247
|
+
],
|
248
|
+
),
|
249
|
+
],
|
250
|
+
),
|
251
|
+
);
|
252
|
+
},
|
253
|
+
},
|
254
|
+
},
|
255
|
+
[
|
256
|
+
React.createElement(
|
257
|
+
GraphiQL.Logo,
|
258
|
+
{
|
259
|
+
key: 'Logo replacement',
|
260
|
+
},
|
261
|
+
[
|
262
|
+
React.createElement(
|
263
|
+
'div',
|
264
|
+
{
|
265
|
+
key: 'Logo wrapper',
|
266
|
+
style: {display: 'flex', alignItems: 'center'},
|
267
|
+
},
|
268
|
+
[
|
269
|
+
React.createElement(
|
270
|
+
'div',
|
271
|
+
{
|
272
|
+
key: 'api',
|
273
|
+
className: 'graphiql-logo',
|
274
|
+
style: {
|
275
|
+
paddingRight: 0,
|
276
|
+
whiteSpace: 'nowrap',
|
277
|
+
},
|
278
|
+
},
|
279
|
+
[schema.name],
|
280
|
+
),
|
281
|
+
React.createElement(GraphiQL.Logo, {key: 'logo'}),
|
282
|
+
],
|
283
|
+
),
|
284
|
+
],
|
285
|
+
),
|
286
|
+
],
|
287
|
+
);
|
288
|
+
}
|
289
|
+
</script>
|
290
|
+
</body>
|
291
|
+
</html>
|
292
|
+
`,{status:200,headers:{"content-type":"text/html"}})};var ar={"&":"\\u0026",">":"\\u003e","<":"\\u003c","\u2028":"\\u2028","\u2029":"\\u2029"},or=/[&><\u2028\u2029]/g;function yt(e){return e.replace(or,t=>ar[t])}var M="Error in SEO input: ",me={title:{validate:e=>{if(typeof e!="string")throw new Error(M.concat("`title` should be a string"));if(typeof e=="string"&&e.length>120)throw new Error(M.concat("`title` should not be longer than 120 characters"));return e}},description:{validate:e=>{if(typeof e!="string")throw new Error(M.concat("`description` should be a string"));if(typeof e=="string"&&e.length>155)throw new Error(M.concat("`description` should not be longer than 155 characters"));return e}},url:{validate:e=>{if(typeof e!="string")throw new Error(M.concat("`url` should be a string"));if(typeof e=="string"&&!e.startsWith("http"))throw new Error(M.concat("`url` should be a valid URL"));return e}},handle:{validate:e=>{if(typeof e!="string")throw new Error(M.concat("`handle` should be a string"));if(typeof e=="string"&&!e.startsWith("@"))throw new Error(M.concat("`handle` should start with `@`"));return e}}};function ht(e){let t=[];for(let r of Object.keys(e))switch(r){case"title":{let n=ge(me.title,e.title),a=sr(e?.titleTemplate,n);if(!a)break;t.push(P("title",{title:a}),P("meta",{property:"og:title",content:a}),P("meta",{name:"twitter:title",content:a}));break}case"description":{let n=ge(me.description,e.description);if(!n)break;t.push(P("meta",{name:"description",content:n}),P("meta",{property:"og:description",content:n}),P("meta",{name:"twitter:description",content:n}));break}case"url":{let n=ge(me.url,e.url);if(!n)break;let o=n.split("?")[0].replace(/\/$/,"");t.push(P("link",{rel:"canonical",href:o}),P("meta",{property:"og:url",content:o}));break}case"handle":{let n=ge(me.handle,e.handle);if(!n)break;t.push(P("meta",{name:"twitter:site",content:n}),P("meta",{name:"twitter:creator",content:n}));break}case"media":{let n,a=He(e.media);for(let o of a)if(typeof o=="string"&&t.push(P("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:ir(o.url),width:o?.width,height:o?.height,alt:o?.altText}:{};for(let c of Object.keys(i))i[c]&&(n=i[c],t.push(P("meta",{property:`og:${s}:${c}`,content:n},i.url)));}break}case"jsonLd":{let n=He(e.jsonLd),a=0;for(let o of n){if(typeof o!="object")continue;let s=P("script",{type:"application/ld+json",children:JSON.stringify(o,(i,c)=>typeof c=="string"?yt(c):c)},`json-ld-${o?.["@type"]||o?.name||a++}`);t.push(s);}break}case"alternates":{let n=He(e.alternates);for(let a of n){if(!a)continue;let{language:o,url:s,default:i}=a,c=o?`${o}${i?"-default":""}`:void 0;t.push(P("link",{rel:"alternate",hrefLang:c,href:s}));}break}case"robots":{if(!e.robots)break;let{maxImagePreview:n,maxSnippet:a,maxVideoPreview:o,noArchive:s,noFollow:i,noImageIndex:c,noIndex:u,noSnippet:l,noTranslate:p,unavailableAfter:f}=e.robots,y=[s&&"noarchive",c&&"noimageindex",l&&"nosnippet",p&&"notranslate",n&&`max-image-preview:${n}`,a&&`max-snippet:${a}`,o&&`max-video-preview:${o}`,f&&`unavailable_after:${f}`],m=(u?"noindex":"index")+","+(i?"nofollow":"follow");for(let C of y)C&&(m+=`,${C}`);t.push(P("meta",{name:"robots",content:m}));break}}return t.flat().sort((r,n)=>r.key.localeCompare(n.key))}function P(e,t,r){let n={tag:e,props:{},key:""};return e==="title"?(n.children=t.title,n.key=qe(n),n):e==="script"?(n.children=typeof t.children=="string"?t.children:"",n.key=qe(n,r),delete t.children,n.props=t,n):(n.props=t,Object.keys(n.props).forEach(a=>!n.props[a]&&delete n.props[a]),n.key=qe(n,r),n)}function qe(e,t){let{tag:r,props:n}=e;if(r==="title")return "0-title";if(r==="meta"){let a=n.content===t&&typeof n.property=="string"&&!n.property.endsWith("secure_url")&&"0";return [r,...[t,a],n.property||n.name].filter(s=>s).join("-")}return r==="link"?[r,n.rel,n.hrefLang||n.media].filter(o=>o).join("-").replace(/\s+/g,"-"):r==="script"?`${r}-${t}`:`${r}-${n.type}`}function sr(e,t){if(t)return e?typeof e=="function"?e(t):e.replace("%s",t??""):t}function ir(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 He(e){return Array.isArray(e)?e:[e]}function ge(e,t){try{return e.validate(t)}catch(r){return console.warn(r.message),t}}var fr=lazy(()=>import('./log-seo-tags-TY72EQWZ.js'));function mr({debug:e}){let t=useMatches(),r=useLocation(),n=useMemo(()=>t.flatMap(s=>{let{handle:i,...c}=s,u={...c,...r},l=i?.seo,p=c?.data?.seo;return !l&&!p?[]:l?ye(l,u):[p]}).reduce((s,i)=>{Object.keys(i).forEach(u=>!i[u]&&delete i[u]);let{jsonLd:c}=i;return c?s?.jsonLd?Array.isArray(c)?{...s,...i,jsonLd:[...s.jsonLd,...c]}:{...s,...i,jsonLd:[...s.jsonLd,c]}:{...s,...i,jsonLd:[c]}:{...s,...i}},{}),[t,r]),{html:a,loggerMarkup:o}=useMemo(()=>{let s=ht(n),i=s.map(u=>u.tag==="script"?createElement(u.tag,{...u.props,key:u.key,dangerouslySetInnerHTML:{__html:u.children}}):createElement(u.tag,{...u.props,key:u.key},u.children)),c=createElement(Suspense,{fallback:null},createElement(fr,{headTags:s}));return {html:i,loggerMarkup:c}},[n]);return createElement(Fragment,null,a,e&&o)}function ye(e,...t){if(e instanceof Function)return ye(e(...t),...t);let r={};return Array.isArray(e)?(r=e.reduce((n,a)=>[...n,ye(a)],[]),r):e instanceof Object?(Object.entries(e).forEach(([a,o])=>{r[a]=ye(o,...t);}),r):e}function Sr({connection:e,children:t=()=>(console.warn("<Pagination> requires children to work properly"),null)}){let n=useNavigation().state==="loading",{endCursor:a,hasNextPage:o,hasPreviousPage:s,nextPageUrl:i,nodes:c,previousPageUrl:u,startCursor:l}=Ir(e),p=useMemo(()=>({pageInfo:{endCursor:a,hasPreviousPage:s,hasNextPage:o,startCursor:l},nodes:c}),[a,o,s,l,c]),f=useMemo(()=>forwardRef(function(C,S){return o?createElement(Link,{preventScrollReset:!0,...C,to:i,state:p,replace:!0,ref:S}):null}),[o,i,p]),y=useMemo(()=>forwardRef(function(C,S){return s?createElement(Link,{preventScrollReset:!0,...C,to:u,state:p,replace:!0,ref:S}):null}),[s,u,p]);return t({state:p,hasNextPage:o,hasPreviousPage:s,isLoading:n,nextPageUrl:i,nodes:c,previousPageUrl:u,NextLink:f,PreviousLink:y})}function he(e){let t=new URLSearchParams(e);return t.delete("cursor"),t.delete("direction"),t.toString()}function ne(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 Ir(e){e.pageInfo||ne("pageInfo"),typeof e.pageInfo.startCursor>"u"&&ne("pageInfo.startCursor"),typeof e.pageInfo.endCursor>"u"&&ne("pageInfo.endCursor"),typeof e.pageInfo.hasNextPage>"u"&&ne("pageInfo.hasNextPage"),typeof e.pageInfo.hasPreviousPage>"u"&&ne("pageInfo.hasPreviousPage");let t=useNavigate(),{state:r,search:n,pathname:a}=useLocation(),i=new URLSearchParams(n).get("direction")==="previous",c=useMemo(()=>!globalThis?.window?.__hydrogenHydrated||!r||!r?.nodes?flattenConnection(e):i?[...flattenConnection(e),...r.nodes]:[...r.nodes,...flattenConnection(e)],[r,e]),u=useMemo(()=>{let y=globalThis?.window?.__hydrogenHydrated,m=!y||r?.pageInfo?.startCursor===void 0?e.pageInfo.startCursor:r.pageInfo.startCursor,C=!y||r?.pageInfo?.endCursor===void 0?e.pageInfo.endCursor:r.pageInfo.endCursor,S=!y||r?.pageInfo?.hasPreviousPage===void 0?e.pageInfo.hasPreviousPage:r.pageInfo.hasPreviousPage,g=!y||r?.pageInfo?.hasNextPage===void 0?e.pageInfo.hasNextPage:r.pageInfo.hasNextPage;return r?.nodes&&(i?(m=e.pageInfo.startCursor,S=e.pageInfo.hasPreviousPage):(C=e.pageInfo.endCursor,g=e.pageInfo.hasNextPage)),{startCursor:m,endCursor:C,hasPreviousPage:S,hasNextPage:g}},[i,r,e.pageInfo.hasNextPage,e.pageInfo.hasPreviousPage,e.pageInfo.startCursor,e.pageInfo.endCursor]),l=useRef({params:he(n),pathname:a});useEffect(()=>{window.__hydrogenHydrated=!0;},[]),useEffect(()=>{(he(n)!==l.current.params||a!==l.current.pathname)&&(l.current={pathname:a,params:he(n)},t(`${a}?${he(n)}`,{replace:!0,preventScrollReset:!0,state:{nodes:void 0,pageInfo:void 0}}));},[a,n]);let p=useMemo(()=>{let y=new URLSearchParams(n);return y.set("direction","previous"),u.startCursor&&y.set("cursor",u.startCursor),`?${y.toString()}`},[n,u.startCursor]),f=useMemo(()=>{let y=new URLSearchParams(n);return y.set("direction","next"),u.endCursor&&y.set("cursor",u.endCursor),`?${y.toString()}`},[n,u.endCursor]);return {...u,previousPageUrl:p,nextPageUrl:f,nodes:c}}function Rr(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,n=new URLSearchParams(new URL(e.url).search),a=n.get("cursor")??void 0;return (n.get("direction")==="previous"?"previous":"next")==="previous"?{last:r,startCursor:a??null}:{first:r,endCursor:a??null}}var Ce="2024-01",j=`Shopify Hydrogen ${ee}`,At="30243aa5-17c1-465a-8493-944bcc4e88aa",O="customerAccount";var U=class extends Response{constructor(t,r,n){super(`Bad request: ${t}`,{status:400,headers:n});}};function oe(e,t={}){let r=t.headers?new Headers(t.headers):new Headers({});return r.set("location",e),new Response(null,{status:t.status||302,headers:r})}async function Tr({session:e,customerAccountId:t,customerAccountUrl:r,origin:n,debugInfo:a}){let o=new URLSearchParams,i=e.get(O)?.refreshToken;if(!i)throw new U("Unauthorized","No refreshToken found in the session. Make sure your session is configured correctly and passed to `createCustomerAccountClient`.");o.append("grant_type","refresh_token"),o.append("refresh_token",i),o.append("client_id",t);let c={"content-type":"application/x-www-form-urlencoded","User-Agent":j,Origin:n};new Date().getTime();let l=`${r}/auth/oauth/token`,p=await fetch(l,{method:"POST",headers:c,body:o});if(!p.ok){let g=await p.text();throw new Response(g,{status:p.status,headers:{"Content-Type":"text/html; charset=utf-8"}})}let{access_token:f,expires_in:y,id_token:m,refresh_token:C}=await p.json(),S=await Ge(f,t,r,n);e.set(O,{accessToken:S,expiresAt:new Date(new Date().getTime()+(y-120)*1e3).getTime()+"",refreshToken:C,idToken:m});}function K(e){e.unset(O);}async function xt({locks:e,expiresAt:t,session:r,customerAccountId:n,customerAccountUrl:a,origin:o,debugInfo:s}){if(parseInt(t,10)-1e3<new Date().getTime())try{e.refresh||(e.refresh=Tr({session:r,customerAccountId:n,customerAccountUrl:a,origin:o,debugInfo:s})),await e.refresh,delete e.refresh;}catch(i){throw K(r),i&&i.status!==401?i:new U("Unauthorized","Login before querying the Customer Account API.",{"Set-Cookie":await r.commit()})}}async function Et(){let e=Ar();return Pt(e)}async function bt(e){let t=await crypto.subtle.digest({name:"SHA-256"},new TextEncoder().encode(e)),r=xr(t);return Pt(r)}function Ar(){let e=new Uint8Array(32);return crypto.getRandomValues(e),String.fromCharCode.apply(null,Array.from(e))}function Pt(e){return btoa(e).replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,"")}function xr(e){let t=new Uint8Array(e),r=Array.from(t);return String.fromCharCode(...r)}async function Ot(){let e=Date.now().toString(),t=Math.random().toString(36).substring(2);return e+t}async function Ge(e,t,r,n,a){let o=t;if(!e)throw new U("Unauthorized","oAuth access token was not provided during token exchange.");let s=new URLSearchParams;s.append("grant_type","urn:ietf:params:oauth:grant-type:token-exchange"),s.append("client_id",o),s.append("audience",At),s.append("subject_token",e),s.append("subject_token_type","urn:ietf:params:oauth:token-type:access_token"),s.append("scopes","https://api.customers.com/auth/customer.graphql");let i={"content-type":"application/x-www-form-urlencoded","User-Agent":j,Origin:n};new Date().getTime();let u=`${r}/auth/oauth/token`,l=await fetch(u,{method:"POST",headers:i,body:s});let p=await l.json();if(p.error)throw new U(p.error_description);return p.access_token}function wt(e){return Er(e).payload.nonce}function Er(e){let[t,r,n]=e.split("."),a=JSON.parse(atob(t)),o=JSON.parse(atob(r));return {header:a,payload:o,signature:n}}function Se(){return Pr(br())}function br(){try{return crypto.getRandomValues(new Uint8Array(16))}catch{return new Uint8Array(16).map(()=>Math.random()*255|0)}}function Pr(e){return Array.from(e,function(t){return ("0"+(t&255).toString(16)).slice(-2)}).join("")}var Dt="/account/login",Or="/account/authorize",Ut="/account";function wr(e){if(!e.url)return Dt;let{pathname:t}=new URL(e.url),r=Dt+`?${new URLSearchParams({return_to:t}).toString()}`;return oe(r)}function Dr({session:e,customerAccountId:t,customerAccountUrl:r,customerApiVersion:n=Ce,request:a,waitUntil:o,authUrl:s=Or,customAuthStatusHandler:i,logErrors:c=!0}){if(n!==Ce&&console.warn(`[h2:warn:createCustomerAccountClient] You are using Customer Account API version ${n} when this version of Hydrogen was built for ${Ce}.`),(!t||!r)&&console.warn("[h2:warn:createCustomerAccountClient] `customerAccountId` and `customerAccountUrl` need to be provided to use Customer Account API. Mock.shop doesn't automatically supply these variables.\nUse `npx shopify hydrogen env pull` to link your store credentials."),!a?.url)throw new Error("[h2:error:createCustomerAccountClient] The request object does not contain a URL.");let u=i||(()=>wr(a)),l=new URL(a.url),p=l.protocol==="http:"?l.origin.replace("http","https"):l.origin,f=s.startsWith("/")?p+s:s,y=`${r}/account/customer/api/${n}/graphql`,m={};async function C({query:d,type:I,variables:R={}}){let x=await b();if(!x)throw u();new Date().getTime();let L=await fetch(y,{method:"POST",headers:{"Content-Type":"application/json","User-Agent":j,Origin:p,Authorization:x},body:JSON.stringify({query:d,variables:R})});let D=await L.text(),v={url:y,response:L,type:I,query:d,queryVariables:R,errors:void 0,client:"customer"};if(!L.ok){if(L.status===401){K(e);let w=u();throw w instanceof Response&&w.headers.set("Set-Cookie",await e.commit()),w}let E;try{E=$(D);}catch{E=[{message:D}];}te({...v,errors:E});}try{let E=$(D),{errors:w}=E,z=w?.map(({message:_,...F})=>new q(_,{...F,clientOperation:`customerAccount.${v.type}`,requestId:L.headers.get("x-request-id"),queryVariables:R,query:d}));return {...E,...w&&{errors:z}}}catch{te({...v,errors:[{message:D}]});}}async function S(){let d=e.get(O),I=d?.accessToken,R=d?.expiresAt;if(!I||!R)return !1;let x=k?.();try{await xt({locks:m,expiresAt:R,session:e,customerAccountId:t,customerAccountUrl:r,origin:p,debugInfo:{waitUntil:o,stackInfo:x,...H(a)}});}catch{return !1}return !0}async function g(){if(!await S())throw u()}async function b(){if(await S())return e.get(O)?.accessToken}return {login:async()=>{let d=new URL(r+"/auth/oauth/authorize"),I=await Ot(),R=await Se();d.searchParams.set("client_id",t),d.searchParams.set("scope","openid email"),d.searchParams.append("response_type","code"),d.searchParams.append("redirect_uri",f),d.searchParams.set("scope","openid email https://api.customers.com/auth/customer.graphql"),d.searchParams.append("state",I),d.searchParams.append("nonce",R);let x=await Et(),N=await bt(x);return e.set(O,{...e.get(O),codeVerifier:x,state:I,nonce:R,redirectPath:fe(a.url)||le(a,"Referer")||Ut}),d.searchParams.append("code_challenge",N),d.searchParams.append("code_challenge_method","S256"),oe(d.toString(),{headers:{"Set-Cookie":await e.commit()}})},logout:async()=>{let d=e.get(O)?.idToken;return K(e),oe(`${r}/auth/logout?id_token_hint=${d}`,{status:302,headers:{"Set-Cookie":await e.commit()}})},isLoggedIn:S,handleAuthStatus:g,getAccessToken:b,getApiUrl:()=>y,mutate(d,I){return d=B(d),de(d,"customer.mutate"),W(C({query:d,type:"mutation",...I}),{logErrors:c})},query(d,I){return d=B(d),pe(d,"customer.query"),W(C({query:d,type:"query",...I}),{logErrors:c})},authorize:async()=>{let d=l.searchParams.get("code"),I=l.searchParams.get("state");if(!d||!I)throw K(e),new U("Unauthorized","No code or state parameter found in the redirect URL.",{"Set-Cookie":await e.commit()});if(e.get(O)?.state!==I)throw K(e),new U("Unauthorized","The session state does not match the state parameter. Make sure that the session is configured correctly and passed to `createCustomerAccountClient`.",{"Set-Cookie":await e.commit()});let R=t,x=new URLSearchParams;x.append("grant_type","authorization_code"),x.append("client_id",R),x.append("redirect_uri",f),x.append("code",d);let N=e.get(O)?.codeVerifier;if(!N)throw new U("Unauthorized","No code verifier found in the session. Make sure that the session is configured correctly and passed to `createCustomerAccountClient`.");x.append("code_verifier",N);let J={"content-type":"application/x-www-form-urlencoded","User-Agent":j,Origin:p},L=k?.();new Date().getTime();let v=`${r}/auth/oauth/token`,E=await fetch(v,{method:"POST",headers:J,body:x});if(!E.ok)throw new Response(await E.text(),{status:E.status,headers:{"Content-Type":"text/html; charset=utf-8"}});let{access_token:w,expires_in:z,id_token:_,refresh_token:F}=await E.json(),Y=e.get(O)?.nonce,se=await wt(_);if(Y!==se)throw new U("Unauthorized",`Returned nonce does not match: ${Y} !== ${se}`);let Re=await Ge(w,t,r,p,{waitUntil:o,stackInfo:L,...H(a)}),Te=e.get(O)?.redirectPath;return e.set(O,{accessToken:Re,expiresAt:new Date(new Date().getTime()+(z-120)*1e3).getTime()+"",refreshToken:F,idToken:_,redirectPath:void 0}),oe(Te||Ut,{headers:{"Set-Cookie":await e.commit()}})}}}var Ur="https://raw.githubusercontent.com/Shopify/hydrogen/main/docs/changelog.json";async function Lr({request:e,changelogUrl:t}){new URL(e.url).searchParams;return fetch(t||Ur)}var Lt="cartFormInput";function Ie({children:e,action:t,inputs:r,route:n,fetcherKey:a}){let o=useFetcher({key:a});return jsxs(o.Form,{action:n||"",method:"post",children:[(t||r)&&jsx("input",{type:"hidden",name:Lt,value:JSON.stringify({action:t,inputs:r})}),typeof e=="function"?e(o):e]})}Ie.INPUT_NAME=Lt;Ie.ACTIONS={AttributesUpdateInput:"AttributesUpdateInput",BuyerIdentityUpdate:"BuyerIdentityUpdate",Create:"Create",DiscountCodesUpdate:"DiscountCodesUpdate",LinesAdd:"LinesAdd",LinesRemove:"LinesRemove",LinesUpdate:"LinesUpdate",NoteUpdate:"NoteUpdate",SelectedDeliveryOptionsUpdate:"SelectedDeliveryOptionsUpdate",MetafieldsSet:"MetafieldsSet",MetafieldDelete:"MetafieldDelete"};function kr(e){let t={};for(let s of e.entries()){let i=s[0],c=e.getAll(i);t[i]=c.length>1?c:s[1];}let{cartFormInput:r,...n}=t,{action:a,inputs:o}=r?JSON.parse(String(r)):{};return {action:a,inputs:{...o,...n}}}Ie.getFormInput=kr;var T=`#graphql
|
293
|
+
fragment CartApiError on CartUserError {
|
294
|
+
message
|
295
|
+
field
|
296
|
+
code
|
297
|
+
}
|
298
|
+
`,A=`#graphql
|
299
|
+
fragment CartApiMutation on Cart {
|
300
|
+
id
|
301
|
+
totalQuantity
|
302
|
+
}
|
303
|
+
`;function Ve(e){return async(t,r)=>{let{cartId:n,...a}=r||{},{cartCreate:o,errors:s}=await e.storefront.mutate(Mr(e.cartFragment),{variables:{input:t,...a}});return h(o,s)}}var Mr=(e=A)=>`#graphql
|
304
|
+
mutation cartCreate(
|
305
|
+
$input: CartInput!
|
306
|
+
$country: CountryCode = ZZ
|
307
|
+
$language: LanguageCode
|
308
|
+
) @inContext(country: $country, language: $language) {
|
309
|
+
cartCreate(input: $input) {
|
310
|
+
cart {
|
311
|
+
...CartApiMutation
|
312
|
+
checkoutUrl
|
313
|
+
}
|
314
|
+
userErrors {
|
315
|
+
...CartApiError
|
316
|
+
}
|
317
|
+
}
|
318
|
+
}
|
319
|
+
${e}
|
320
|
+
${T}
|
321
|
+
`;function Be({storefront:e,customerAccount:t,getCartId:r,cartFragment:n}){return async a=>{let o=r();if(!o)return null;let[s,{cart:i,errors:c}]=await Promise.all([t?t.isLoggedIn():!1,e.query($r(n),{variables:{cartId:o,...a},cache:e.CacheNone()})]);return h(Fr(s,i),c)}}function Fr(e,t){if(e&&t&&t.checkoutUrl){let r=new URL(t.checkoutUrl);r.searchParams.set("logged_in","true"),t.checkoutUrl=r.toString();}return t}var $r=(e=qr)=>`#graphql
|
322
|
+
query CartQuery(
|
323
|
+
$cartId: ID!
|
324
|
+
$numCartLines: Int = 100
|
325
|
+
$country: CountryCode = ZZ
|
326
|
+
$language: LanguageCode
|
327
|
+
) @inContext(country: $country, language: $language) {
|
328
|
+
cart(id: $cartId) {
|
329
|
+
...CartApiQuery
|
330
|
+
}
|
331
|
+
}
|
332
|
+
|
333
|
+
${e}
|
334
|
+
`,qr=`#graphql
|
335
|
+
fragment CartApiQuery on Cart {
|
336
|
+
id
|
337
|
+
checkoutUrl
|
338
|
+
totalQuantity
|
339
|
+
buyerIdentity {
|
340
|
+
countryCode
|
341
|
+
customer {
|
342
|
+
id
|
343
|
+
email
|
344
|
+
firstName
|
345
|
+
lastName
|
346
|
+
displayName
|
347
|
+
}
|
348
|
+
email
|
349
|
+
phone
|
350
|
+
}
|
351
|
+
lines(first: $numCartLines) {
|
352
|
+
edges {
|
353
|
+
node {
|
354
|
+
id
|
355
|
+
quantity
|
356
|
+
attributes {
|
357
|
+
key
|
358
|
+
value
|
359
|
+
}
|
360
|
+
cost {
|
361
|
+
totalAmount {
|
362
|
+
amount
|
363
|
+
currencyCode
|
364
|
+
}
|
365
|
+
amountPerQuantity {
|
366
|
+
amount
|
367
|
+
currencyCode
|
368
|
+
}
|
369
|
+
compareAtAmountPerQuantity {
|
370
|
+
amount
|
371
|
+
currencyCode
|
372
|
+
}
|
373
|
+
}
|
374
|
+
merchandise {
|
375
|
+
... on ProductVariant {
|
376
|
+
id
|
377
|
+
availableForSale
|
378
|
+
compareAtPrice {
|
379
|
+
...CartApiMoney
|
380
|
+
}
|
381
|
+
price {
|
382
|
+
...CartApiMoney
|
383
|
+
}
|
384
|
+
requiresShipping
|
385
|
+
title
|
386
|
+
image {
|
387
|
+
...CartApiImage
|
388
|
+
}
|
389
|
+
product {
|
390
|
+
handle
|
391
|
+
title
|
392
|
+
id
|
393
|
+
}
|
394
|
+
selectedOptions {
|
395
|
+
name
|
396
|
+
value
|
397
|
+
}
|
398
|
+
}
|
399
|
+
}
|
400
|
+
}
|
401
|
+
}
|
402
|
+
}
|
403
|
+
cost {
|
404
|
+
subtotalAmount {
|
405
|
+
...CartApiMoney
|
406
|
+
}
|
407
|
+
totalAmount {
|
408
|
+
...CartApiMoney
|
409
|
+
}
|
410
|
+
totalDutyAmount {
|
411
|
+
...CartApiMoney
|
412
|
+
}
|
413
|
+
totalTaxAmount {
|
414
|
+
...CartApiMoney
|
415
|
+
}
|
416
|
+
}
|
417
|
+
note
|
418
|
+
attributes {
|
419
|
+
key
|
420
|
+
value
|
421
|
+
}
|
422
|
+
discountCodes {
|
423
|
+
applicable
|
424
|
+
code
|
425
|
+
}
|
426
|
+
}
|
427
|
+
|
428
|
+
fragment CartApiMoney on MoneyV2 {
|
429
|
+
currencyCode
|
430
|
+
amount
|
431
|
+
}
|
432
|
+
|
433
|
+
fragment CartApiImage on Image {
|
434
|
+
id
|
435
|
+
url
|
436
|
+
altText
|
437
|
+
width
|
438
|
+
height
|
439
|
+
}
|
440
|
+
`;function We(e){return async(t,r)=>{let{cartLinesAdd:n,errors:a}=await e.storefront.mutate(Hr(e.cartFragment),{variables:{cartId:e.getCartId(),lines:t,...r}});return h(n,a)}}var Hr=(e=A)=>`#graphql
|
441
|
+
mutation cartLinesAdd(
|
442
|
+
$cartId: ID!
|
443
|
+
$lines: [CartLineInput!]!
|
444
|
+
$country: CountryCode = ZZ
|
445
|
+
$language: LanguageCode
|
446
|
+
) @inContext(country: $country, language: $language) {
|
447
|
+
cartLinesAdd(cartId: $cartId, lines: $lines) {
|
448
|
+
cart {
|
449
|
+
...CartApiMutation
|
450
|
+
}
|
451
|
+
userErrors {
|
452
|
+
...CartApiError
|
453
|
+
}
|
454
|
+
}
|
455
|
+
}
|
456
|
+
|
457
|
+
${e}
|
458
|
+
${T}
|
459
|
+
`;function je(e){return async(t,r)=>{let{cartLinesUpdate:n,errors:a}=await e.storefront.mutate(Qr(e.cartFragment),{variables:{cartId:e.getCartId(),lines:t,...r}});return h(n,a)}}var Qr=(e=A)=>`#graphql
|
460
|
+
mutation cartLinesUpdate(
|
461
|
+
$cartId: ID!
|
462
|
+
$lines: [CartLineUpdateInput!]!
|
463
|
+
$language: LanguageCode
|
464
|
+
$country: CountryCode
|
465
|
+
) @inContext(country: $country, language: $language) {
|
466
|
+
cartLinesUpdate(cartId: $cartId, lines: $lines) {
|
467
|
+
cart {
|
468
|
+
...CartApiMutation
|
469
|
+
}
|
470
|
+
userErrors {
|
471
|
+
...CartApiError
|
472
|
+
}
|
473
|
+
}
|
474
|
+
}
|
475
|
+
|
476
|
+
${e}
|
477
|
+
${T}
|
478
|
+
`;function Ke(e){return async(t,r)=>{let{cartLinesRemove:n,errors:a}=await e.storefront.mutate(Gr(e.cartFragment),{variables:{cartId:e.getCartId(),lineIds:t,...r}});return h(n,a)}}var Gr=(e=A)=>`#graphql
|
479
|
+
mutation cartLinesRemove(
|
480
|
+
$cartId: ID!
|
481
|
+
$lineIds: [ID!]!
|
482
|
+
$language: LanguageCode
|
483
|
+
$country: CountryCode
|
484
|
+
) @inContext(country: $country, language: $language) {
|
485
|
+
cartLinesRemove(cartId: $cartId, lineIds: $lineIds) {
|
486
|
+
cart {
|
487
|
+
...CartApiMutation
|
488
|
+
}
|
489
|
+
userErrors {
|
490
|
+
...CartApiError
|
491
|
+
}
|
492
|
+
}
|
493
|
+
}
|
494
|
+
|
495
|
+
${e}
|
496
|
+
${T}
|
497
|
+
`;function Je(e){return async(t,r)=>{let n=t.filter((s,i,c)=>c.indexOf(s)===i),{cartDiscountCodesUpdate:a,errors:o}=await e.storefront.mutate(Vr(e.cartFragment),{variables:{cartId:e.getCartId(),discountCodes:n,...r}});return h(a,o)}}var Vr=(e=A)=>`#graphql
|
498
|
+
mutation cartDiscountCodesUpdate(
|
499
|
+
$cartId: ID!
|
500
|
+
$discountCodes: [String!]
|
501
|
+
$language: LanguageCode
|
502
|
+
$country: CountryCode
|
503
|
+
) @inContext(country: $country, language: $language) {
|
504
|
+
cartDiscountCodesUpdate(cartId: $cartId, discountCodes: $discountCodes) {
|
505
|
+
cart {
|
506
|
+
...CartApiMutation
|
507
|
+
}
|
508
|
+
userErrors {
|
509
|
+
...CartApiError
|
510
|
+
}
|
511
|
+
}
|
512
|
+
}
|
513
|
+
${e}
|
514
|
+
${T}
|
515
|
+
`;function ze(e){return async(t,r)=>{let{cartBuyerIdentityUpdate:n,errors:a}=await e.storefront.mutate(Br(e.cartFragment),{variables:{cartId:e.getCartId(),buyerIdentity:t,...r}});return h(n,a)}}var Br=(e=A)=>`#graphql
|
516
|
+
mutation cartBuyerIdentityUpdate(
|
517
|
+
$cartId: ID!
|
518
|
+
$buyerIdentity: CartBuyerIdentityInput!
|
519
|
+
$language: LanguageCode
|
520
|
+
$country: CountryCode
|
521
|
+
) @inContext(country: $country, language: $language) {
|
522
|
+
cartBuyerIdentityUpdate(cartId: $cartId, buyerIdentity: $buyerIdentity) {
|
523
|
+
cart {
|
524
|
+
...CartApiMutation
|
525
|
+
}
|
526
|
+
userErrors {
|
527
|
+
...CartApiError
|
528
|
+
}
|
529
|
+
}
|
530
|
+
}
|
531
|
+
${e}
|
532
|
+
${T}
|
533
|
+
`;function Ye(e){return async(t,r)=>{let{cartNoteUpdate:n,errors:a}=await e.storefront.mutate(Wr(e.cartFragment),{variables:{cartId:e.getCartId(),note:t,...r}});return h(n,a)}}var Wr=(e=A)=>`#graphql
|
534
|
+
mutation cartNoteUpdate(
|
535
|
+
$cartId: ID!
|
536
|
+
$note: String
|
537
|
+
$language: LanguageCode
|
538
|
+
$country: CountryCode
|
539
|
+
) @inContext(country: $country, language: $language) {
|
540
|
+
cartNoteUpdate(cartId: $cartId, note: $note) {
|
541
|
+
cart {
|
542
|
+
...CartApiMutation
|
543
|
+
}
|
544
|
+
userErrors {
|
545
|
+
...CartApiError
|
546
|
+
}
|
547
|
+
}
|
548
|
+
}
|
549
|
+
${e}
|
550
|
+
${T}
|
551
|
+
`;function Xe(e){return async(t,r)=>{let{cartSelectedDeliveryOptionsUpdate:n,errors:a}=await e.storefront.mutate(jr(e.cartFragment),{variables:{cartId:e.getCartId(),selectedDeliveryOptions:t,...r}});return h(n,a)}}var jr=(e=A)=>`#graphql
|
552
|
+
mutation cartSelectedDeliveryOptionsUpdate(
|
553
|
+
$cartId: ID!
|
554
|
+
$selectedDeliveryOptions: [CartSelectedDeliveryOptionInput!]!
|
555
|
+
$language: LanguageCode
|
556
|
+
$country: CountryCode
|
557
|
+
) @inContext(country: $country, language: $language) {
|
558
|
+
cartSelectedDeliveryOptionsUpdate(cartId: $cartId, selectedDeliveryOptions: $selectedDeliveryOptions) {
|
559
|
+
cart {
|
560
|
+
...CartApiMutation
|
561
|
+
}
|
562
|
+
userErrors {
|
563
|
+
...CartApiError
|
564
|
+
}
|
565
|
+
}
|
566
|
+
}
|
567
|
+
${e}
|
568
|
+
${T}
|
569
|
+
`;function Ze(e){return async(t,r)=>{let{cartAttributesUpdate:n,errors:a}=await e.storefront.mutate(Kr(e.cartFragment),{variables:{cartId:r?.cartId||e.getCartId(),attributes:t}});return h(n,a)}}var Kr=(e=A)=>`#graphql
|
570
|
+
mutation cartAttributesUpdate(
|
571
|
+
$cartId: ID!
|
572
|
+
$attributes: [AttributeInput!]!
|
573
|
+
) {
|
574
|
+
cartAttributesUpdate(cartId: $cartId, attributes: $attributes) {
|
575
|
+
cart {
|
576
|
+
...CartApiMutation
|
577
|
+
}
|
578
|
+
userErrors {
|
579
|
+
...CartApiError
|
580
|
+
}
|
581
|
+
}
|
582
|
+
}
|
583
|
+
${e}
|
584
|
+
${T}
|
585
|
+
`;function et(e){return async(t,r)=>{let n=r?.cartId||e.getCartId(),a=t.map(i=>({...i,ownerId:n})),{cartMetafieldsSet:o,errors:s}=await e.storefront.mutate(Jr(),{variables:{metafields:a}});return h({cart:{id:n},...o},s)}}var Jr=()=>`#graphql
|
586
|
+
mutation cartMetafieldsSet(
|
587
|
+
$metafields: [CartMetafieldsSetInput!]!
|
588
|
+
$language: LanguageCode
|
589
|
+
$country: CountryCode
|
590
|
+
) @inContext(country: $country, language: $language) {
|
591
|
+
cartMetafieldsSet(metafields: $metafields) {
|
592
|
+
userErrors {
|
593
|
+
code
|
594
|
+
elementIndex
|
595
|
+
field
|
596
|
+
message
|
597
|
+
}
|
598
|
+
}
|
599
|
+
}
|
600
|
+
`;function tt(e){return async(t,r)=>{let n=r?.cartId||e.getCartId(),{cartMetafieldDelete:a,errors:o}=await e.storefront.mutate(zr(),{variables:{input:{ownerId:n,key:t}}});return h({cart:{id:n},...a},o)}}var zr=()=>`#graphql
|
601
|
+
mutation cartMetafieldDelete(
|
602
|
+
$input: CartMetafieldDeleteInput!
|
603
|
+
) {
|
604
|
+
cartMetafieldDelete(input: $input) {
|
605
|
+
userErrors {
|
606
|
+
code
|
607
|
+
field
|
608
|
+
message
|
609
|
+
}
|
610
|
+
}
|
611
|
+
}
|
612
|
+
`;var Yr=new Set(["domain","path","max-age","expires","samesite","secure","httponly"]);function vt(e){let t={},r,n,a=0,o=e.split(/;\s*/g),s,i;for(;a<o.length;a++)if(n=o[a],r=n.indexOf("="),~r){if(s=n.substring(0,r++).trim(),i=n.substring(r).trim(),i[0]==='"'&&(i=i.substring(1,i.length-1)),~i.indexOf("%"))try{i=decodeURIComponent(i);}catch{}Yr.has(n=s.toLowerCase())?n==="expires"?t.expires=new Date(i):n==="max-age"?t.maxage=+i:t[n]=i:t[s]=i;}else (s=n.trim().toLowerCase())&&(s==="httponly"||s==="secure")&&(t[s]=!0);return t}function kt(e,t,r={}){let n=e+"="+encodeURIComponent(t);return r.expires&&(n+="; Expires="+new Date(r.expires).toUTCString()),r.maxage!=null&&r.maxage>=0&&(n+="; Max-Age="+(r.maxage|0)),r.domain&&(n+="; Domain="+r.domain),r.path&&(n+="; Path="+r.path),r.samesite&&(n+="; SameSite="+r.samesite),(r.secure||r.samesite==="None")&&(n+="; Secure"),r.httponly&&(n+="; HttpOnly"),n}var Xr=e=>{let t=vt(e.get("Cookie")||"");return ()=>t.cart?`gid://shopify/Cart/${t.cart}`:void 0};var Zr=e=>t=>{let r=new Headers;return r.append("Set-Cookie",kt("cart",t.split("/").pop()||"",{path:"/",...e})),r};function en(e){let{getCartId:t,setCartId:r,storefront:n,customerAccount:a,cartQueryFragment:o,cartMutateFragment:s}=e,i={storefront:n,getCartId:t,cartFragment:s},c=t(),u=Ve(i),l={get:Be({storefront:n,customerAccount:a,getCartId:t,cartFragment:o}),getCartId:t,setCartId:r,create:u,addLines:async(p,f)=>c||f?.cartId?await We(i)(p,f):await u({lines:p},f),updateLines:je(i),removeLines:Ke(i),updateDiscountCodes:async(p,f)=>c||f?.cartId?await Je(i)(p,f):await u({discountCodes:p},f),updateBuyerIdentity:async(p,f)=>c||f?.cartId?await ze(i)(p,f):await u({buyerIdentity:p},f),updateNote:async(p,f)=>c||f?.cartId?await Ye(i)(p,f):await u({note:p},f),updateSelectedDeliveryOption:Xe(i),updateAttributes:async(p,f)=>c||f?.cartId?await Ze(i)(p,f):await u({attributes:p},f),setMetafields:async(p,f)=>c||f?.cartId?await et(i)(p,f):await u({metafields:p},f),deleteMetafield:tt(i)};return "customMethods"in e?{...l,...e.customMethods??{}}:l}function on({handle:e,options:t=[],variants:r=[],productPath:n="products",children:a}){let o=r instanceof Array?r:flattenConnection(r),{searchParams:s,path:i,alreadyOnProductPage:c}=cn(e,n),u=t.filter(l=>l?.values?.length===1);return createElement(Fragment,null,...useMemo(()=>t.filter(l=>l?.values?.length>1).map(l=>{let p,f=[];for(let y of l.values){let m=new URLSearchParams(c?s:void 0);m.set(l.name,y),u.forEach(d=>{m.set(d.name,d.values[0]);});let C=o.find(d=>d?.selectedOptions?.every(I=>m.get(I?.name)===I?.value)),S=s.get(l.name),g=S?S===y:!1;g&&(p=y);let b="?"+m.toString();f.push({value:y,isAvailable:C?C.availableForSale:!0,to:i+b,search:b,isActive:g});}return a({option:{name:l.name,value:p,values:f}})}),[t,o,a]))}var sn=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((n,a)=>{r.push({name:a,value:n});}),r};function cn(e,t){let{pathname:r,search:n}=useLocation();return useMemo(()=>{let a=/(\/[a-zA-Z]{2}-[a-zA-Z]{2}\/)/g.exec(r),o=a&&a.length>0;t=t.startsWith("/")?t.substring(1):t;let s=o?`${a[0]}${t}/${e}`:`/${t}/${e}`;return {searchParams:new URLSearchParams(n),alreadyOnProductPage:s===r,path:s}},[r,n,e,t])}var _t=createContext(void 0),fn=_t.Provider,rt=()=>useContext(_t);function mn(e={}){let t=Se(),r=gn(t,e);return {nonce:t,header:r,NonceProvider:({children:a})=>createElement(fn,{value:t},a)}}function gn(e,t={}){let r=`'nonce-${e}'`,s={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"]},i=Object.assign({},s,t);for(let c in s)t[c]&&(i[c]=yn(t[c],s[c]));return i.scriptSrc instanceof Array&&!i.scriptSrc.includes(r)?i.scriptSrc.push(r):i.defaultSrc instanceof Array&&!i.defaultSrc.includes(r)&&i.defaultSrc.push(r),ln({directives:i})}function yn(e,t){let r=typeof t=="string"?[t]:t,n=Array.isArray(e)?e:[String(e)];return Array.isArray(r)?[...n,...r]:r}var Cn=forwardRef((e,t)=>{let r=rt();return jsx("script",{suppressHydrationWarning:!0,...e,nonce:r,ref:t})});function Rn(e){let t=useFetchers(),r={};for(let{formData:n}of t)if(n?.get("optimistic-identifier")===e)try{if(n.has("optimistic-data")){let a=JSON.parse(String(n.get("optimistic-data")));Object.assign(r,a);}}catch{}return r}function Tn({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)})]})}function bn(e){return jsx(ShopPayButton,{channel:"hydrogen",...e})}//! @see: https://shopify.dev/docs/api/storefront/latest/mutations/cartCreate
|
613
|
+
//! @see https://shopify.dev/docs/api/storefront/latest/queries/cart
|
614
|
+
//! @see: https://shopify.dev/docs/api/storefront/latest/mutations/cartLinesAdd
|
615
|
+
//! @see: https://shopify.dev/docs/api/storefront/latest/mutations/cartLinesUpdate
|
616
|
+
//! @see: https://shopify.dev/docs/api/storefront/latest/mutations/cartLinesRemove
|
617
|
+
//! @see https://shopify.dev/docs/api/storefront/latest/mutations/cartDiscountCodesUpdate
|
618
|
+
//! @see https://shopify.dev/docs/api/storefront/latest/mutations/cartBuyerIdentityUpdate
|
619
|
+
//! @see https://shopify.dev/docs/api/storefront/latest/mutations/cartNoteUpdate
|
620
|
+
//! @see https://shopify.dev/docs/api/storefront/latest/mutations/cartSelectedDeliveryOptionsUpdate
|
621
|
+
//! @see https://shopify.dev/docs/api/storefront/latest/mutations/cartMetafieldsSet
|
622
|
+
//! @see https://shopify.dev/docs/api/storefront/2024-01/mutations/cartMetafieldDelete
|
623
|
+
|
624
|
+
export { Pe as CacheCustom, be as CacheLong, xe as CacheNone, G as CacheShort, Ie as CartForm, Fe as InMemoryCache, Tn as OptimisticInput, Sr as Pagination, Cn as Script, mr as Seo, bn as ShopPayButton, on as VariantSelector, Ze as cartAttributesUpdateDefault, ze as cartBuyerIdentityUpdateDefault, Ve as cartCreateDefault, Je as cartDiscountCodesUpdateDefault, Be as cartGetDefault, Xr as cartGetIdDefault, We as cartLinesAddDefault, Ke as cartLinesRemoveDefault, je as cartLinesUpdateDefault, tt as cartMetafieldDeleteDefault, et as cartMetafieldsSetDefault, Ye as cartNoteUpdateDefault, Xe as cartSelectedDeliveryOptionsUpdateDefault, Zr as cartSetIdDefault, Lr as changelogHandler, en as createCartHandler, mn as createContentSecurityPolicy, Dr as createCustomerAccountClient, aa as createStorefrontClient, pa as createWithCache, h as formatAPIResult, Z as generateCacheControlHeader, Rr as getPaginationVariables, sn as getSelectedProductOptions, nr as graphiqlLoader, tr as storefrontRedirect, rt as useNonce, Rn as useOptimisticData };
|
625
|
+
//# sourceMappingURL=out.js.map
|
626
|
+
//# sourceMappingURL=index.js.map
|