@faststore/api 4.3.0-dev.4 → 4.3.0-dev.5
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/cjs/index.js +40 -40
- package/dist/cjs/index.js.map +1 -1
- package/dist/es/index.mjs +1008 -985
- package/dist/es/index.mjs.map +1 -1
- package/dist/src/platforms/vtex/clients/commerce/index.d.ts.map +1 -1
- package/dist/src/platforms/vtex/clients/index.d.ts.map +1 -1
- package/dist/src/platforms/vtex/index.d.ts.map +1 -1
- package/dist/src/platforms/vtex/resolvers/getOrderEntryOperation.d.ts.map +1 -1
- package/dist/src/platforms/vtex/resolvers/index.d.ts.map +1 -1
- package/dist/src/platforms/vtex/resolvers/query.d.ts.map +1 -1
- package/dist/src/platforms/vtex/utils/cookies.d.ts +0 -1
- package/dist/src/platforms/vtex/utils/cookies.d.ts.map +1 -1
- package/package.json +3 -3
- package/src/platforms/vtex/clients/commerce/index.ts +73 -35
- package/src/platforms/vtex/utils/cookies.ts +0 -19
package/dist/cjs/index.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const qe=require("@graphql-tools/merge"),xe=require("@graphql-tools/schema"),j=require("@graphql-tools/utils"),M=require("@faststore/diagnostics"),ee=require("graphql"),ae=require("cookie"),An=require("isomorphic-unfetch"),oe=require("dataloader"),je=require("p-limit"),Pn=require("sanitize-html"),be=require("fast-deep-equal"),En=require("node:crypto");var We=(e=>(e.Accepted="accepted",e.Denied="denied",e.Pending="pending",e))(We||{}),Ge=(e=>(e.Brand="Brand",e.Category="Category",e.Cluster="Cluster",e.Collection="Collection",e.Department="Department",e.SubCategory="SubCategory",e))(Ge||{}),He=(e=>(e.Boolean="BOOLEAN",e.Range="RANGE",e))(He||{}),Xe=(e=>(e.DiscountDesc="discount_desc",e.NameAsc="name_asc",e.NameDesc="name_desc",e.OrdersDesc="orders_desc",e.PriceAsc="price_asc",e.PriceDesc="price_desc",e.ReleaseDesc="release_desc",e.ScoreDesc="score_desc",e))(Xe||{}),Ye=(e=>(e.Error="ERROR",e.Info="INFO",e.Warning="WARNING",e))(Ye||{}),Je=(e=>(e.Input="Input",e.Output="Output",e))(Je||{});const Tn=()=>function(n={}){const t=process.env.FS_DISCOVERY_APP_KEY??"",r=process.env.FS_DISCOVERY_APP_TOKEN??"";if(!t||!r)throw new K("No authentication AppKey and AppToken passed.");return{...n,"X-VTEX-API-AppKey":t,"X-VTEX-API-AppToken":r}},_n=async e=>{const{clients:{commerce:n}}=e;try{if((await n.vtexid.validate())?.authStatus?.toLowerCase()!=="success")throw new J("Authentication required")}catch(t){const r=t.extensions?.status??t.status;throw r===401?new J("Authentication required"):r===403?new K("You are not allowed to access this resource"):new J("Authentication required")}},Un="auth",Ke={typeDefs:"directive @auth on FIELD_DEFINITION",transformer:e=>j.mapSchema(e,{[j.MapperKind.OBJECT_FIELD]:n=>{if(j.getDirective(e,n,Un)?.[0]){const r=n.resolve;n.resolve=async(i,a,o,s)=>(await _n(o),r?.(i,a,o,s))}return n}})},kn="cacheControl",Fn=(e,n)=>{const{scope:t="private",sMaxAge:r=0,staleWhileRevalidate:i=0}=e;return`${n?"private":t}, s-maxage=${r}, stale-while-revalidate=${i}`},De=(e,n)=>typeof e=="number"&&typeof n=="number"?e>n?n:e:typeof e=="number"?e:n,Nn=(e,n)=>typeof e=="string"&&typeof n=="string"?e==="public"&&n==="public"?"public":"private":e||n,Qe={typeDefs:"directive @cacheControl(sMaxAge: Int, staleWhileRevalidate: Int, scope: String) on FIELD_DEFINITION",transformer:e=>j.mapSchema(e,{[j.MapperKind.OBJECT_FIELD]:n=>{const t=j.getDirective(e,n,kn)?.[0];if(t){const{sMaxAge:r,staleWhileRevalidate:i,scope:a}=t,o=n.resolve;n.resolve=(s,c,u,g)=>(u.cacheControl={sMaxAge:De(u.cacheControl?.sMaxAge,r),staleWhileRevalidate:De(u.cacheControl?.staleWhileRevalidate,i),scope:Nn(u.cacheControl?.scope,a)},o?.(s,c,u,g))}return n}})},Ze=e=>(n,t)=>{const r=qe.mergeTypeDefs([...(e??[]).map(({typeDefs:i})=>i),t]);return(e??[]).reduce((i,{transformer:a})=>a?.(i)??i,xe.makeExecutableSchema({typeDefs:r,resolvers:n}))},le="@faststore/api",de="4.3.0-dev.3",Ae={name:le,version:de},Rn=(e,n)=>(t,r,i,a)=>{if((i?.OTEL?.enabled??!1)===!1)return e(t,r,i,a);const o=M.OTELAPI.trace.getTracer(le,de),s=M.OTELAPI.propagation.extract(M.OTELAPI.context.active(),i.OTEL);return M.OTELAPI.context.with(s,()=>{const c=o.startSpan(n??"Unknown Graphql Resolver",{startTime:Date.now(),kind:M.OTELAPI.SpanKind.INTERNAL,attributes:{timestamp:Date.now(),"@faststore_version":de,"@faststore_package_name":le,"@faststore_account_name":i.account,"@faststore_environment":process.env.NODE_ENV}});if(!c)return e(t,r,i,a);try{const u=e(t,r,i,a);return u instanceof Promise?u.then(g=>(c.end(),g)):(c.end(),u)}catch(u){throw c.end(),console.error(`Error when executing resolver: ${n}`,u),u}})};class H extends Error{constructor(n,t){super(t),this.extensions=n,this.name="FastStoreError"}}class k extends H{constructor(n){super({status:400,type:"BadRequestError"},n)}}class J extends H{constructor(n){super({status:401,type:"UnauthorizedError"},n)}}class K extends H{constructor(n){super({status:403,type:"ForbiddenError"},n)}}class B extends H{constructor(n){super({status:404,type:"NotFoundError"},n)}}const Ln=e=>e?.name==="FastStoreError",Mn=e=>e?.extensions?.type==="BadRequestError",Bn=e=>e?.extensions?.type==="UnauthorizedError",en=e=>e?.extensions?.type==="ForbiddenError",nn=e=>e?.extensions?.type==="NotFoundError",$n=`${Ae.name}@${Ae.version}`,I=async(e,n,t)=>{const r=await An(e,{...n,headers:{...n?.headers??{},"User-Agent":$n}});if(r.ok)return t?.storeCookies&&t.storeCookies(r.headers),r.status!==204?r.json():void 0;console.error(e,n,r);const i=await r.text();if(typeof r?.status=="number")switch(r.status){case 400:throw new k(i);case 401:throw new J(i);case 403:throw new K(i);case 404:throw new B(i);default:throw new H({status:r.status,type:"UnknownError"},i)}throw new Error(i)},tn=e=>{if(!e)return e;const n=new Map,t=e.split(";"),r=[];return t.forEach(i=>{const a=i.trim();if(a){const o=a.indexOf("=");if(o>0){const s=a.substring(0,o),c=a.substring(o+1);n.has(s)||r.push(s),n.set(s,c)}}}),r.map(i=>`${i}=${n.get(i)}`).join("; ")},zn=/^([^=]+)=([^;]*)/,Vn=(e,n)=>{const t=n.match(zn);if(t){const r=t[1],i=t[2];e.storage.cookies.set(r,{value:i,setCookie:n})}},qn=(e,n)=>{n.getSetCookie().forEach(t=>Vn(e,t))},xn=e=>n=>qn(e,n),jn=e=>{if(!e.headers?.cookie)return null;const n=tn(e.headers.cookie),t=Array.from(e.storage.cookies.entries());return t.length===0?n:t.reduce((r,[i,{value:a}])=>Gn(r,i,a),n)},we=e=>function(t){const r=jn(e);return r?{...t,cookie:r}:t},ne=(e,n)=>{const t=tn(e);return ae.parse(t)[`VtexIdclientAutCookie_${n}`]||""},Wn=e=>{const n=we(e);return function(r,i){const a=n({"content-type":"application/json","X-FORWARDED-HOST":r}),o=ne(e?.headers?.cookie??"",i);return a.VtexIdclientAutCookie=o,a}},Gn=(e,n,t)=>{const r=new RegExp(`(${n})=([^;]*)`),i=e.match(r);return i?e.replace(i[0],`${i[1]}=${t}`):`${e};${n}=${t}`};function te(e){return e?JSON.parse(Buffer.from(e.split(".")[1],"base64").toString()):null}const Y={method:"POST",headers:{"content-type":"application/json"}},Hn=({account:e,environment:n,incrementAddress:t,subDomainPrefix:r},i)=>{const a=`https://${e}.${n}.com.br`,o=xn(i),s=we(i),c=Wn(i),u=Tn(),g=new Headers(i.headers).get("x-forwarded-host")??i.headers?.host??"",m=r&&r.map(l=>l+".").find(l=>g.includes(l))||"",d=g.replace(m,"");return{catalog:{salesChannel:l=>I(`${a}/api/catalog_system/pub/saleschannel/${l}`,void 0,{storeCookies:o}),brand:{list:()=>I(`${a}/api/catalog_system/pub/brand/list`,void 0,{storeCookies:o})},category:{tree:(l=3)=>I(`${a}/api/catalog_system/pub/category/tree/${l}`,void 0,{storeCookies:o})},portal:{pagetype:l=>I(`${a}/api/catalog_system/pub/portal/pagetype/${l}`,void 0,{storeCookies:o})},products:{crossselling:({type:l,productId:p,groupByProduct:f=!0})=>{const S=new URLSearchParams({sc:i.storage.channel.salesChannel,groupByProduct:f.toString()});return I(`${a}/api/catalog_system/pub/products/crossselling/${l}/${p}?${S}`,void 0,{storeCookies:o})}}},checkout:{simulation:(l,{salesChannel:p}=i.storage.channel)=>{const f=new URLSearchParams({sc:p}),S=s({"content-type":"application/json","X-FORWARDED-HOST":d});return I(`${a}/api/checkout/pub/orderForms/simulation?${f.toString()}`,{...Y,headers:S,body:JSON.stringify(l)},{storeCookies:o})},shippingData:({id:l,index:p,deliveryMode:f,selectedAddresses:S},v)=>{const w=v?{startDateUtc:f?.deliveryWindow?.startDate,endDateUtc:f?.deliveryWindow?.endDate}:null,P={logisticsInfo:Array.from({length:p},(O,E)=>({itemIndex:E,selectedDeliveryChannel:f?.deliveryChannel||null,selectedSla:f?.deliveryMethod||null,deliveryWindow:w})),selectedAddresses:S,clearAddressIfPostalCodeNotFound:t},_=s({"content-type":"application/json","X-FORWARDED-HOST":d});return I(`${a}/api/checkout/pub/orderForm/${l}/attachments/shippingData`,{...Y,headers:_,body:JSON.stringify(P)},{storeCookies:o})},marketingData:({id:l,marketingData:p})=>{const f=s({"content-type":"application/json","X-FORWARDED-HOST":d});return I(`${a}/api/checkout/pub/orderForm/${l}/attachments/marketingData`,{headers:f,body:JSON.stringify(p),method:"POST"},{storeCookies:o})},clientPreferencesData:({id:l,clientPreferencesData:p})=>{const f=s({"content-type":"application/json","X-FORWARDED-HOST":d});return I(`${a}/api/checkout/pub/orderForm/${l}/attachments/clientPreferencesData`,{headers:f,body:JSON.stringify(p),method:"POST"},{storeCookies:o})},orderForm:({id:l,refreshOutdatedData:p=!0,channel:f=i.storage.channel})=>{const{salesChannel:S}=f,v=s({"content-type":"application/json","X-FORWARDED-HOST":d}),w=new URLSearchParams({sc:S});l&&w.set("refreshOutdatedData",p.toString());const P=`${a}/api/checkout/pub/orderForm${l?`/${l}`:""}?${w.toString()}`;return I(P,{...Y,headers:v,...l?{}:{body:"{}"}},{storeCookies:o})},clearOrderFormMessages:({id:l})=>{const p=s({"content-type":"application/json","X-FORWARDED-HOST":d});return I(`${a}/api/checkout/pub/orderForm/${l}/messages/clear`,{...Y,headers:p,body:"{}"})},updateOrderFormItems:({id:l,orderItems:p,allowOutdatedData:f="paymentData",salesChannel:S=i.storage.channel.salesChannel,shouldSplitItem:v=!0})=>{const w=new URLSearchParams({allowOutdatedData:f,sc:S}),P=s({"content-type":"application/json","X-FORWARDED-HOST":d});return I(`${a}/api/checkout/pub/orderForm/${l}/items?${w}`,{headers:P,body:JSON.stringify({orderItems:p,noSplitItem:!v}),method:"PATCH"},{storeCookies:o})},setCustomData:({id:l,appId:p,key:f,value:S})=>{const v=s({"content-type":"application/json","X-FORWARDED-HOST":d});return I(`${a}/api/checkout/pub/orderForm/${l}/customData/${p}/${f}`,{headers:v,body:JSON.stringify({value:S}),method:"PUT"})},region:async({postalCode:l,geoCoordinates:p,country:f,salesChannel:S})=>{const v=new URLSearchParams({country:f,sc:S??""});l?v.append("postalCode",l):v.append("geoCoordinates",`${p?.longitude};${p?.latitude}`);const w=`${a}/api/checkout/pub/regions/?${v.toString()}`,P=s({"content-type":"application/json","X-FORWARDED-HOST":d});return I(w,{headers:P},{storeCookies:o})},address:async({postalCode:l,country:p})=>{const f=s({"content-type":"application/json","X-FORWARDED-HOST":d});return I(`${a}/api/checkout/pub/postal-code/${p}/${l}`,{headers:f},{storeCookies:o})},cancelOrder:({orderId:l,customerEmail:p,reason:f})=>{const S=s({"content-type":"application/json","X-FORWARDED-HOST":d});return I(`${a}/api/checkout/pub/orders/${l}/user-cancel-request`,{method:"POST",headers:S,body:JSON.stringify({customerEmail:p,reason:f})},{})},pickupPoints:({geoCoordinates:l})=>{if(!l)throw new Error("Missing required parameter for listing pickup points.");const p=s({"content-type":"application/json","X-FORWARDED-HOST":d});return I(`${a}/api/logistics-shipping/pickuppoints/_search`,{method:"POST",headers:p,body:JSON.stringify({coordinate:l})},{storeCookies:o})}},session:l=>{const p=new URLSearchParams(l);p.set("items","profile.id,profile.email,profile.firstName,profile.lastName,profile.phone,shopper.firstName,shopper.lastName,shopper.organizationManager,store.channel,store.countryCode,store.cultureInfo,store.currencyCode,store.currencySymbol,authentication.customerId,authentication.storeUserId,authentication.storeUserEmail,authentication.unitId,authentication.unitName,checkout.regionId,public.postalCode");const f=s({"content-type":"application/json"}),S=ae.parse(i?.headers?.cookie??"")?.vtex_session;return I(`${a}/api/sessions?${p.toString()}`,{method:S?"PATCH":"POST",headers:f,body:"{}"},{storeCookies:o})},subscribeToNewsletter:l=>I(`${a}/api/dataentities/NL/documents/`,{...Y,body:JSON.stringify({...l,isNewsletterOptIn:!0}),method:"PATCH"},{storeCookies:o}),profile:{addresses:async l=>{const p=c(d,e);return I(`${a}/api/profile-system/pvt/profiles/${l}/addresses`,{headers:p},{storeCookies:o})}},oms:{userOrder:({orderId:l})=>{const p=c(d,e);return I(`${a}/api/oms/user/orders/${l}`,{method:"GET",headers:p},{storeCookies:o})},listUserOrders:({page:l,status:p,dateInitial:f,dateFinal:S,text:v,clientEmail:w,perPage:P,pendingMyApproval:_})=>{const O=new URLSearchParams;if(f){const h=new Date(f).setHours(0,0,0,0);f=new Date(h).toISOString()}if(S){const h=new Date(S).setHours(23,59,59,999);S=new Date(h).toISOString()}v&&O.append("text",v),p&&p.length>0&&O.append("status",p.filter(Boolean).join(",")),f&&S?O.append("creation_date",`creationDate:[${f} TO ${S}]`):f?O.append("creation_date",`creationDate:[${f} TO *]`):S&&O.append("creation_date",`creationDate:[* TO ${S}]`),w&&O.append("clientEmail",w),l&&O.append("page",l.toString()),P&&O.append("per_page",P.toString()),_&&O.append("my_pending_approvals",String(!0));const E=s({"content-type":"application/json","X-FORWARDED-HOST":d});return I(`${a}/api/oms/user/orders?${O.toString()}`,{method:"GET",headers:E},{storeCookies:o})},getCommercialAuthorizationsByOrderId:({orderId:l})=>{const p=c(d,e);return I(`${a}/${e}/commercial-authorizations/order/${l}`,{method:"GET",headers:p},{storeCookies:o})},processOrderAuthorization:async({orderAuthorizationId:l,dimensionId:p,ruleId:f,approved:S})=>{const v=c(d,e),_={params:{ruleId:f,dimensionId:p,score:S?100:0}};return I(`${a}/${e}/commercial-authorizations/${l}/callback`,{method:"POST",headers:v,body:JSON.stringify(_)},{storeCookies:o})}},units:{getUnitByUserId:({userId:l})=>{const p=c(d,e);return I(`${a}/api/units/v1/${l}/unit`,{method:"GET",headers:p},{})},getOrgUnitById:({orgUnitId:l})=>{const p=c(d,e);return I(`${a}/api/units/v1/${l}`,{method:"GET",headers:p},{})},getScopesByOrgUnit:({orgUnitId:l})=>{const p=c(d,e);return I(`${a}/api/units/v1/${l}/scopes`,{method:"GET",headers:p},{})}},licenseManager:{getUserById:({userId:l})=>{const p=c(d,e);return I(`${a}/api/license-manager/users/${l}`,{method:"GET",headers:p},{})},getUserByEmail:({email:l})=>{const p=c(d,e);return I(`${a}/api/license-manager/pvt/users/${l}`,{method:"GET",headers:p},{})},getUserRoles:({userId:l})=>{const p=c(d,e);return I(`${a}/api/license-manager/storefront/users/${l}/roles`,{method:"GET",headers:p},{})}},masterData:{getContractById:({contractId:l})=>{if(!l)throw new k("Missing contractId to fetch CL fields.");const p=u({Accept:"application/json","content-type":"application/json","X-FORWARDED-HOST":d});return I(`${a}/api/dataentities/CL/documents/${l}?_fields=_all`,{method:"GET",headers:p},{})},getShopperById:({userId:l})=>{if(!l)throw new k("Missing userId to fetch shopper name.");const p=u({Accept:"application/json","content-type":"application/json","X-FORWARDED-HOST":d}),f=l.replace(/-/g,"");return I(`${a}/api/dataentities/shopper/search?_where=(userId=${f} OR userId=${l})&_fields=_all&_schema=v1`,{method:"GET",headers:p},{})}},vtexid:{validate:()=>{const l=c(d,e);return I(`${a}/api/vtexid/credential/validate`,{headers:l,body:JSON.stringify({token:l.VtexIdclientAutCookie}),method:"POST"},{storeCookies:o})}},orderEntry:{uploadFile:({fileBuffer:l,fileName:p,mimeType:f})=>{const S=c(d,e),v=`----FastStoreUploadBoundary${Date.now()}`,w=`\r
|
|
2
|
-
`,_=/^[a-zA-Z0-9][a-zA-Z0-9!#$&\-.^_]*\/[a-zA-Z0-9][a-zA-Z0-9!#$&\-.^_+]*$/.test(f)?f:"application/octet-stream",O=p.replaceAll(/[\r\n"]/g,"_"),E=[`--${v}`,`Content-Disposition: form-data; name="file"; filename="${O}"`,`Content-Type: ${_}`,"",""].join(w),h=`${w}--${v}--${w}`,C=Buffer.from(E),b=Buffer.from(h),D=new Uint8Array(C.byteLength+l.byteLength+b.byteLength);let y=0;return D.set(C,y),y+=C.byteLength,D.set(l,y),y+=l.byteLength,D.set(b,y),I(`${a}/api/order-entry/upload?an=${e}`,{method:"POST",headers:{...S,"content-type":`multipart/form-data; boundary=${v}`},body:D.buffer},{})},startOperation:({objectKey:l,orderFormId:p,sessionToken:f})=>{const S=c(d,e),v=JSON.stringify({objectKey:l,orderFormId:p,operation:"CreateCart",...f?{sessionToken:f}:{}});return I(`${a}/api/order-entry/operation?an=${e}`,{method:"POST",headers:{...S,"Content-Type":"application/json"},body:v},{})},getOperation:({operationId:l})=>{const p=c(d,e);return I(`${a}/api/order-entry/operation/${l}?an=${e}`,{method:"GET",headers:p},{})},createOrderForm:()=>{const l=c(d,e);return I(`${a}/api/checkout/pub/orderForm?sc=${i.storage.channel.salesChannel}`,{method:"POST",headers:{...l,"Content-Type":"application/json","X-FORWARDED-HOST":d},body:"{}"},{})},getOrderFormItems:({orderFormId:l})=>{const p=c(d,e);return I(`${a}/api/checkout/pub/orderForm/${l}`,{method:"GET",headers:{...p,"Content-Type":"application/json","X-FORWARDED-HOST":d}},{})}}}},ue="trade-policy",pe="region-id",ge="fuzzy",me="operator",he="pickupPoint",rn="shipping",an="delivery-options",on="in-stock",Xn=new Set([ue,pe,ge,me,he,rn,an,on]),Yn=e=>e.key==="fuzzy"&&(e.value==="0"||e.value==="1"||e.value==="auto"),Jn=e=>e.key==="operator"&&(e.value==="and"||e.value==="or"),Kn=({account:e,environment:n,hideUnavailableItems:t,simulationBehavior:r,showSponsored:i,subDomainPrefix:a},o)=>{const s=`https://${e}.${n}.com.br/api/io`,c=we(o),u=new Headers(o.headers).get("x-forwarded-host")??o.headers?.host??"",g=a&&a.map(h=>h+".").find(h=>u.includes(h))||"",m=u.replace(g,""),d=c({"content-type":"application/json","X-FORWARDED-HOST":m}),l=()=>{const{salesChannel:h}=o.storage.channel;return h?{key:ue,value:h}:null},p=()=>{const{regionId:h,seller:C}=o.storage.channel,D=(C?Buffer.from(`SW#${C}`).toString("base64"):null)??h;return D?{key:pe,value:D}:null},f=h=>{const C=h.filter(({key:T})=>!Xn.has(T)),b=h.find(({key:T,value:F})=>T===rn&&F!=="all-delivery-methods")??null,D=h.find(({key:T,value:F})=>T===an&&F!=="all-delivery-options")??null,y=h.find(({key:T})=>T===ue)??l(),A=h.find(({key:T})=>T===pe)??p();return b!==null&&C.push(b),D!==null&&C.push(D),y!==null&&C.push(y),A!==null&&C.push(A),C},S=(h,C)=>{const b=h.find(({key:A})=>A===ge)??null,D=h.find(({key:A})=>A===me)??null,y=h.find(({key:A})=>A===he)??null;b&&Yn(b)&&C.append(ge,b.value),D&&Jn(D)&&C.append(me,D.value),y&&C.append(he,y.value)},v=({query:h="",page:C,count:b,sort:D="",selectedFacets:y=[],type:A,showInvisibleItems:T,sponsoredCount:F,hideUnavailableItems:U,allowRedirect:X=!1})=>{const N=new URLSearchParams({page:(C+1).toString(),count:b!==0?b.toString():"1",query:h,sort:D,locale:o.storage.locale});if(S(y,N),T&&N.append("show-invisible-items","true"),t!==void 0){const q=y.find(({key:Dn})=>Dn===on),se=q?q.value:U?.toString()??t.toString();N.append("hideUnavailableItems",se)}r!==void 0&&N.append("simulationBehavior",r.toString()),i!==void 0&&N.append("showSponsored",i.toString()),F!==void 0&&N.append("sponsoredCount",F.toString()),X!==void 0&&N.append("allowRedirect",X.toString());const z=f(y).map(({key:q,value:se})=>`${q}/${se}`).join("/");return I(`${s}/_v/api/intelligent-search/${A}/${z}?${N.toString()}`,{headers:d})};return{facets:h=>v({...h,type:"facets"}),products:h=>v({...h,type:"product_search"}),suggestedTerms:h=>{const C=new URLSearchParams({query:h.query?.toString()??"",locale:o.storage.locale});return I(`${s}/_v/api/intelligent-search/search_suggestions?${C.toString()}`,{headers:d})},topSearches:()=>{const h=new URLSearchParams({locale:o.storage.locale});return I(`${s}/_v/api/intelligent-search/top_searches?${h.toString()}`,{headers:d})},productCount:h=>{const C=new URLSearchParams;return h?.query&&C.append("query",h.query.toString()),I(`${s}/_v/api/intelligent-search/catalog_count?${C.toString()}`,{headers:d})}}},Qn=(e,n)=>{const t=Kn(e,n),r=Hn(e,n);return{search:t,commerce:r}},Zn=20,et=new Set(["brand","category","department","subcategory","collection","cluster"]),W=e=>typeof e.pageType=="string"&&et.has(e.pageType.toLowerCase()),nt=(e,n)=>{const t=je(Zn),r=async i=>Promise.all(i.map(a=>t(async()=>{const o=await n.commerce.catalog.portal.pagetype(a);if(W(o))return o;throw new B(`Catalog returned ${o.pageType} for slug: ${a}. This usually happens when there is more than one category with the same name in the same category tree level.`)})));return new oe(r,{batch:!1})},tt=(e,n)=>{const t=async r=>Promise.all(r.map(i=>n.commerce.catalog.salesChannel(i)));return new oe(t)},rt=1,it=(e,n)=>{const t=je(rt),r=async a=>{const o=a.reduce((m,{items:d})=>[...m,d],[]),s=[...o.flat()],c=await n.commerce.checkout.simulation({country:a[0].country,postalCode:a[0].postalCode,items:s}),u=c.items.reduce((m,d)=>{const l=d.requestIndex;return typeof l=="number"&&l<m.length&&(m[l]=d),m},Array(s.length).fill(null)),g=o.reduce((m,d)=>[...m,d.length+m[m.length-1]],[0]);return o.map((m,d)=>({...c,items:u.slice(g[d],g[d+1]).filter(l=>!!l)}))},i=async a=>t(r,a);return new oe(i,{maxBatchSize:50})},at=(e,n)=>Pn(e,n);function ot(e){return{...e,description:e.description?at(e.description):e.description}}const $=(e,n)=>({...e,isVariantOf:ot(n)}),st=({flags:e},n)=>{const t=async r=>{const i=r.map(g=>g.split("-")[0]),a=r.some(g=>g.split("-")[1]==="invisibleItems"),{products:o}=await n.search.products({query:`sku:${i.join(";")}`,page:0,count:i.length,showInvisibleItems:a,...e?.enableUnavailableItemsOnCart&&{hideUnavailableItems:!1}}),s=o.reduce((g,m)=>{for(const d of m.items)g[d.itemId]=$(d,m);return g},{}),c=i.map(g=>s[g]),u=i.filter(g=>!s[g]);if(u.length>0)throw new B(`Search API did not found the following skus: ${u.join(",")}`);return c};return new oe(t,{maxBatchSize:99})},ct=(e,{clients:n})=>{const t=st(e,n),r=it(e,n),i=nt(e,n),a=tt(e,n);return{skuLoader:t,simulationLoader:r,collectionLoader:i,salesChannelLoader:a}},V=e=>e.AvailableQuantity>0,G=e=>e.spotPrice??0,lt=e=>e.Price??0,Pe=e=>e?"https://schema.org/InStock":"https://schema.org/OutOfStock",sn=(e,n)=>V(e)&&!V(n)?-1:!V(e)&&V(n)?1:G(e)-G(n),dt=e=>e==="available",x=(e,n=0,t=1)=>{const r=n/t;return Math.round((e+r)*100)/100},ut=(e,n={includeTaxes:!1})=>{const t=e.filter(V),r=t[t.length-1],i=r?G(r):0;return n.includeTaxes?x(i,r?.Tax,r?.product?.unitMultiplier):i},Ee=(e,n={includeTaxes:!1})=>{const[t]=e.filter(V),r=t?G(t):0;return n.includeTaxes?x(r,t?.Tax,t?.product?.unitMultiplier):r},pt={highPrice:e=>ut(e),lowPrice:e=>Ee(e),lowPriceWithTaxes:e=>Ee(e,{includeTaxes:!0}),offerCount:e=>e.length,priceCurrency:async(e,n,t)=>{const{loaders:{salesChannelLoader:r},storage:{channel:i}}=t;return(await r.load(i.salesChannel)).CurrencyCode??""},offers:e=>e},gt={ratingValue:()=>5,reviewCount:()=>0},Te="ÁÄÂÀÃÅČÇĆĎÉĚËÈÊẼĔȆÍÌÎÏŇÑÓÖÒÔÕØŘŔŠŤÚŮÜÙÛÝŸŽáäâàãåčçćďéěëèêẽĕȇíìîïňñóöòôõøðřŕšťúůüùûýÿžþÞĐđ߯a",mt="AAAAAACCCDEEEEEEEEIIIINNOOOOOORRSTUUUUUYYZaaaaaacccdeeeeeeeeiiiinnooooooorrstuuuuuyyzbBDdBAa",ht=e=>{let n=e.slice(0);for(let t=0;t<Te.length;t++)n=n.replace(new RegExp(Te.charAt(t),"g"),mt.charAt(t));return n},ft=e=>e.replace(/[·/_,:]/,"-");function cn(e){const t=e.replace(/,/g,"").replace(/[*+~.()'"!:@&\[\]`/ %$#?{}><=_^]/g,"-");return ft(ht(t)).toLowerCase()}const Z=e=>e.type==="brand"||W(e)&&e.pageType.toLowerCase()==="brand",fe=e=>W(e)&&e.pageType.toLowerCase()==="collection",ce=e=>Z(e)||fe(e)?cn(e.name):W(e)?new URL(`https://${e.url}`).pathname.slice(1).toLowerCase():new URL(e.url).pathname.slice(1).toLowerCase(),ln={id:({id:e})=>e.toString(),slug:e=>ce(e),seo:e=>Z(e)||W(e)?{title:e.title??e.name,description:e.metaTagDescription}:{title:e.Title,description:e.MetaTagDescription},type:e=>Z(e)?"Brand":W(e)?e.pageType:e.level===0?"Department":"Category",meta:e=>{const n=ce(e);return Z(e)?{selectedFacets:[{key:"brand",value:n}]}:fe(e)?{selectedFacets:[{key:"productclusterids",value:e.id}]}:{selectedFacets:n.split("/").map((t,r)=>({key:`category-${r+1}`,value:t}))}},breadcrumbList:async(e,n,t)=>{const{loaders:{collectionLoader:r}}=t,a=ce(e).split("/").filter(c=>!!c),o=a.map((c,u)=>a.slice(0,u+1).join("/")),s=await Promise.all(o.map(async c=>{const u=await r.load(c);return{slug:c,...u}}));return{itemListElement:s.map((c,u)=>({item:fe(c)?`/${c.slug}`:new URL(`https://${c.url}`).pathname.toLowerCase(),name:c.name,position:u+1})),numberOfItems:s.length}}},dn={buy:"whoboughtalsobought",view:"whosawalsosaw",similars:"similars",viewAndBought:"whosawalsobought",accessories:"accessories",suggestions:"suggestions"},_e=({key:e,value:n})=>{switch(e){case"price":return{key:e,value:n.replace("-to-",":")};case"channel":case"locale":case"buy":case"view":case"similars":case"viewAndBought":case"accessories":case"suggestions":return[];default:return{key:e,value:n}}},Ue=e=>{const n=e.split(":").map(Number);return n.length!==2||Number.isNaN(n[0])||Number.isNaN(n[1])?null:n},St=e=>typeof dn[e]=="string",yt=e=>{const n=e?.filter(t=>St(t.key));if(Array.isArray(n)&&n.length>1)throw new k(`You passed ${n.length} cross selling facets but only one is allowed. Please leave one of the following facet: ${n.map(t=>t.key).join(",")}`);return n?.[0]??null},It=e=>e?.find(n=>n.key==="slug")?.value??null,vt=e=>e?.find(n=>n.key==="id")?.value??null,ke=e=>e?.find(n=>n.key==="locale")?.value??null,Fe=e=>e?.find(n=>n.key==="channel")?.value??null,Se=(e,n)=>{let t=0;for(let r=1;r<e.length;r++)n(e[t],e[r])>0&&(t=r);return e[t]},Ot={__resolveType:({type:e,values:n})=>e!=="TEXT"&&e!=="DELIVERY"?"StoreFacetRange":!n||n.length===0?"StoreFacetBoolean":n.every(t=>t.range)?"StoreFacetRange":"StoreFacetBoolean"},Ct={key:({key:e})=>e,label:({name:e})=>e,values:({values:e})=>e.sort((n,t)=>n.name.localeCompare(t.name))},bt={key:({key:e})=>e,label:({name:e})=>e,min:({values:e,key:n},t,{storage:{searchArgs:r}})=>{const i=Ue(r?.selectedFacets?.find(s=>s.key===n)?.value??""),o=Se(e,(s,c)=>s.range.from-c.range.from)?.range?.from??0;return{selected:i?.[0]??o,absolute:o}},max:({values:e,key:n},t,{storage:{searchArgs:r}})=>{const i=Ue(r?.selectedFacets?.find(s=>s.key===n)?.value??""),o=Se(e,(s,c)=>c.range.to-s.range.to)?.range?.to??0;return{selected:i?.[1]??o,absolute:o}}},wt={value:({value:e})=>e,label:({name:e})=>e||"unknown",selected:({selected:e})=>e,quantity:({quantity:e})=>e},Dt=async(e,{data:n},{clients:{commerce:t}})=>{if(!n?.orderId)throw new k("Missing orderId");return{data:(await t.checkout.cancelOrder(n))?.data}};function un(e){if(!e||e.status!=="pending")return null;for(const n of e.dimensionStatus){if(n.status!=="pending")continue;const t=n.ruleCollection.find(r=>r.status==="pending"&&r.isUserNextAuthorizer);if(t)return{rule:t,orderAuthorizationId:e.id,dimensionId:n.id}}return null}function At(e){if(!e||e.status!=="pending")return!1;const n=e.dimensionStatus.filter(t=>t.status==="pending").flatMap(t=>t.ruleCollection).filter(t=>t.status==="pending");return n.length===0?!1:n.every(t=>!t.isUserNextAuthorizer)}const Pt=async(e,{data:n},{clients:{commerce:t}})=>{const r=await t.oms.processOrderAuthorization(n),i=un(r);return{isPendingForOtherAuthorizer:!i&&At(r),ruleForAuthorization:i}},Et=async(e,{data:n},{clients:{commerce:t}})=>{if(!n?.objectKey)throw new k("Missing objectKey");const r=n.orderFormId||(await t.orderEntry.createOrderForm()).orderFormId;return t.orderEntry.startOperation({objectKey:n.objectKey,orderFormId:r,sessionToken:n.sessionToken??void 0})},Tt=async(e,{data:n},{clients:{commerce:t}})=>({id:(await t.subscribeToNewsletter(n))?.Id}),_t=async(e,{data:n},{clients:{commerce:t}})=>{const{fileContent:r,fileName:i,mimeType:a}=n;if(!r||!i||!a)throw new k("Missing required fields: fileContent, fileName, mimeType");const o=r.replaceAll(/\s/g,""),s=5*1024*1024;if(Math.floor(o.length*3/4)>s)throw new k("File exceeds maximum allowed size of 5MB");if(!/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(o))throw new k("Invalid Base64 fileContent");const g=Buffer.from(o,"base64");return await t.orderEntry.uploadFile({fileBuffer:g,fileName:i,mimeType:a})};class re{static parse(n){try{const t=JSON.parse(n);return{seller:t.seller??"",regionId:t.regionId??"",salesChannel:t.salesChannel??"",hasOnlyDefaultSalesChannel:t.hasOnlyDefaultSalesChannel??!0}}catch(t){throw console.error(t),new Error("Malformed channel string")}}static stringify(n){return JSON.stringify(n)}}const ye=(e,n)=>{e.storage.channel=re.parse(n)},Ie=(e,n)=>{e.storage.locale=n},pn=e=>En.createHash("md5").update(e).digest("hex"),Q={attachment:"ATTACHMENT",specification:"SPECIFICATION",attribute:"ATTRIBUTE"};function gn(e){return{name:e.name,value:e.content,valueReference:Q.attachment}}function Ut(e){return{propertyID:e.id,name:e.name,value:e.value,valueReference:{valueReference:Q.attribute,visible:e.visible}}}function mn(e){return pn(`${e.name}:${JSON.stringify(e.value)}:${e.valueReference}`)}const kt=e=>{const n=e.postalCode,t=e.geoCoordinates,r={addressType:e.addressType||null,postalCode:n||null,city:null,state:null,country:e.country||null,street:null,number:null,neighborhood:null,complement:null,reference:null,geoCoordinates:[]};if(t){const i=typeof t=="object"&&"latitude"in t?t.latitude:null,a=typeof t=="object"&&"longitude"in t?t.longitude:null;r.geoCoordinates=i!==null&&a!==null?[a,i]:[]}return[r]},Ft=(e,n,t)=>{const r=n.postalCode,i=n.geoCoordinates,a=e?.shippingData?.availableAddresses??[],o=e?.shippingData?.selectedAddresses??[];if(!t&&o.length>0)return[o[0]];if(t&&a.length>0)for(const s of a){if(r&&i&&(s.postalCode===r||s.geoCoordinates[0]===i.longitude&&s.geoCoordinates[1]===i.latitude))return[s];if(r&&!i&&s.postalCode===r)return[s];if(i&&!r&&s.geoCoordinates[0]===i.longitude&&s.geoCoordinates[1]===i.latitude)return[s]}return null},hn=(e,n)=>{if(!Nt(n))return{updateShipping:!1,addressChanged:!1};if(!Bt(e))return{updateShipping:!1,addressChanged:!1};const[t]=e?.shippingData?.selectedAddresses??[];if(Rt(t,n.postalCode)||Lt(t,n.geoCoordinates)||Mt(t,n.addressType))return{updateShipping:!0,addressChanged:!0};const{logisticsInfo:r}=e.shippingData;return $t(r,n)?{updateShipping:!0,addressChanged:!1}:{updateShipping:!1,addressChanged:!1}},Nt=e=>!!e.postalCode||e.geoCoordinates?.latitude&&e.geoCoordinates?.longitude,Rt=(e,n)=>typeof n=="string"&&e?.postalCode!==n,Lt=(e,n)=>typeof n?.latitude=="number"&&typeof n?.longitude=="number"&&(e?.geoCoordinates[0]!==n?.longitude||e?.geoCoordinates[1]!==n?.latitude),Mt=(e,n)=>typeof n=="string"&&e?.addressType!==n,Bt=e=>e.items.length!==0,$t=(e,n)=>{const t=n?.deliveryMode?.deliveryChannel,r=n?.deliveryMode?.deliveryMethod,{startDate:i,endDate:a}=n?.deliveryMode?.deliveryWindow||{};return e.some(({selectedDeliveryChannel:o,selectedSla:s,slas:c})=>{const u=t&&o!==t,g=r&&s!==r;return c?.some(m=>u&&m.deliveryChannel===t||g&&m.id===r?!0:i&&a&&m.deliveryChannel===t&&m.id===r&&(!m?.deliveryWindow||m?.deliveryWindow?.startDateUtc!==i||m?.deliveryWindow?.endDateUtc!==a)&&m.availableDeliveryWindows?.some(d=>d?.startDateUtc===i&&d?.endDateUtc===a))})},fn=e=>e.valueReference===Q.attachment,ve=e=>[e.itemOffered.sku,e.seller.identifier,e.price<.01?"Gift":void 0,e.itemOffered.additionalProperty?.filter(fn).map(mn).join("-")].filter(Boolean).join("::"),ie=(e,n)=>({listPrice:e.listPrice/100,price:e.sellingPrice/100,quantity:e.quantity,seller:{identifier:e.seller},itemOffered:{sku:e.id,image:[],name:e.name,additionalProperty:e.attachments.map(gn)},index:n}),zt=e=>({quantity:e.quantity,seller:e.seller.identifier,id:e.itemOffered.sku,index:e.index,attachments:(e.itemOffered.additionalProperty?.filter(fn)??[]).map(n=>({name:n.name,content:n.value}))}),Ne=e=>e.reduce((n,t)=>{const r=ve(t);return n.has(r)||n.set(r,[]),n.get(r)?.push(t),n},new Map),Vt=(e,n)=>{const t=(s,c)=>({...s,itemOffered:{sku:s.itemOffered.sku},index:c}),r=n.items.map(ie).map(t),i=e.acceptedOffer.map(t),a=e.orderNumber===n.orderFormId,o=be(r,i);return a&&o};function Sn(e,n){return e?.some(t=>t.parentItemIndex!==null&&t.parentItemIndex!==void 0&&e[t.parentItemIndex]?.id===n)}function yn(e,n){return e?.some(t=>t.id===n&&t.parentItemIndex!==null)}const Re=e=>{const n=e.items.reduce((t,r,i)=>{const a=yn(e.items,r.id)||Sn(e.items,r.id)?`${ve(ie(r))}::${i}`:ve(ie(r));return t[a]||(t[a]=[]),t[a].push(r),t},{});return{...e,items:Object.values(n).map(t=>{const[r]=t,i=t.reduce((o,s)=>o+s.quantity,0),a=t.reduce((o,s)=>o+(s?.priceDefinition?.total??(s?.quantity??0)*(s?.sellingPrice??0)),0);return{...r,quantity:i,sellingPrice:a/i}})}},Le=async(e,n,t)=>({order:{orderNumber:e.orderFormId,acceptedOffer:e.items.map(async r=>({...r,product:await n.load(`${r.id}-invisibleItems`)})),shouldSplitItem:t},messages:e.messages.map(({text:r,status:i})=>({text:r,status:i.toUpperCase()}))}),In=({items:e},n)=>{const t=e.map(r=>({id:r.id,quantity:r.quantity,seller:r.seller,attachments:r.attachments}));return pn(JSON.stringify({sessionId:n?.id??"",items:t}))},Me=async(e,n,t)=>{try{return await n.checkout.setCustomData({id:e.orderFormId,appId:"faststore",key:"cartEtag",value:In(e,t)})}catch(r){throw console.error(`Error while setting custom data to orderForm.
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const qn=require("@graphql-tools/merge"),xn=require("@graphql-tools/schema"),j=require("@graphql-tools/utils"),M=require("@faststore/diagnostics"),nn=require("graphql"),on=require("cookie"),Pe=require("isomorphic-unfetch"),sn=require("dataloader"),jn=require("p-limit"),Ee=require("sanitize-html"),Dn=require("fast-deep-equal"),Te=require("node:crypto");var Wn=(n=>(n.Accepted="accepted",n.Denied="denied",n.Pending="pending",n))(Wn||{}),Gn=(n=>(n.Brand="Brand",n.Category="Category",n.Cluster="Cluster",n.Collection="Collection",n.Department="Department",n.SubCategory="SubCategory",n))(Gn||{}),Hn=(n=>(n.Boolean="BOOLEAN",n.Range="RANGE",n))(Hn||{}),Xn=(n=>(n.DiscountDesc="discount_desc",n.NameAsc="name_asc",n.NameDesc="name_desc",n.OrdersDesc="orders_desc",n.PriceAsc="price_asc",n.PriceDesc="price_desc",n.ReleaseDesc="release_desc",n.ScoreDesc="score_desc",n))(Xn||{}),Yn=(n=>(n.Error="ERROR",n.Info="INFO",n.Warning="WARNING",n))(Yn||{}),Jn=(n=>(n.Input="Input",n.Output="Output",n))(Jn||{});const _e=()=>function(e={}){const t=process.env.FS_DISCOVERY_APP_KEY??"",r=process.env.FS_DISCOVERY_APP_TOKEN??"";if(!t||!r)throw new K("No authentication AppKey and AppToken passed.");return{...e,"X-VTEX-API-AppKey":t,"X-VTEX-API-AppToken":r}},Ue=async n=>{const{clients:{commerce:e}}=n;try{if((await e.vtexid.validate())?.authStatus?.toLowerCase()!=="success")throw new J("Authentication required")}catch(t){const r=t.extensions?.status??t.status;throw r===401?new J("Authentication required"):r===403?new K("You are not allowed to access this resource"):new J("Authentication required")}},ke="auth",Kn={typeDefs:"directive @auth on FIELD_DEFINITION",transformer:n=>j.mapSchema(n,{[j.MapperKind.OBJECT_FIELD]:e=>{if(j.getDirective(n,e,ke)?.[0]){const r=e.resolve;e.resolve=async(i,a,c,s)=>(await Ue(c),r?.(i,a,c,s))}return e}})},Fe="cacheControl",Ne=(n,e)=>{const{scope:t="private",sMaxAge:r=0,staleWhileRevalidate:i=0}=n;return`${e?"private":t}, s-maxage=${r}, stale-while-revalidate=${i}`},wn=(n,e)=>typeof n=="number"&&typeof e=="number"?n>e?e:n:typeof n=="number"?n:e,Re=(n,e)=>typeof n=="string"&&typeof e=="string"?n==="public"&&e==="public"?"public":"private":n||e,Qn={typeDefs:"directive @cacheControl(sMaxAge: Int, staleWhileRevalidate: Int, scope: String) on FIELD_DEFINITION",transformer:n=>j.mapSchema(n,{[j.MapperKind.OBJECT_FIELD]:e=>{const t=j.getDirective(n,e,Fe)?.[0];if(t){const{sMaxAge:r,staleWhileRevalidate:i,scope:a}=t,c=e.resolve;e.resolve=(s,l,d,g)=>(d.cacheControl={sMaxAge:wn(d.cacheControl?.sMaxAge,r),staleWhileRevalidate:wn(d.cacheControl?.staleWhileRevalidate,i),scope:Re(d.cacheControl?.scope,a)},c?.(s,l,d,g))}return e}})},Zn=n=>(e,t)=>{const r=qn.mergeTypeDefs([...(n??[]).map(({typeDefs:i})=>i),t]);return(n??[]).reduce((i,{transformer:a})=>a?.(i)??i,xn.makeExecutableSchema({typeDefs:r,resolvers:e}))},dn="@faststore/api",un="4.3.0-dev.4",An={name:dn,version:un},Le=(n,e)=>(t,r,i,a)=>{if((i?.OTEL?.enabled??!1)===!1)return n(t,r,i,a);const c=M.OTELAPI.trace.getTracer(dn,un),s=M.OTELAPI.propagation.extract(M.OTELAPI.context.active(),i.OTEL);return M.OTELAPI.context.with(s,()=>{const l=c.startSpan(e??"Unknown Graphql Resolver",{startTime:Date.now(),kind:M.OTELAPI.SpanKind.INTERNAL,attributes:{timestamp:Date.now(),"@faststore_version":un,"@faststore_package_name":dn,"@faststore_account_name":i.account,"@faststore_environment":process.env.NODE_ENV}});if(!l)return n(t,r,i,a);try{const d=n(t,r,i,a);return d instanceof Promise?d.then(g=>(l.end(),g)):(l.end(),d)}catch(d){throw l.end(),console.error(`Error when executing resolver: ${e}`,d),d}})};class H extends Error{constructor(e,t){super(t),this.extensions=e,this.name="FastStoreError"}}class k extends H{constructor(e){super({status:400,type:"BadRequestError"},e)}}class J extends H{constructor(e){super({status:401,type:"UnauthorizedError"},e)}}class K extends H{constructor(e){super({status:403,type:"ForbiddenError"},e)}}class B extends H{constructor(e){super({status:404,type:"NotFoundError"},e)}}const Me=n=>n?.name==="FastStoreError",Be=n=>n?.extensions?.type==="BadRequestError",$e=n=>n?.extensions?.type==="UnauthorizedError",ne=n=>n?.extensions?.type==="ForbiddenError",ee=n=>n?.extensions?.type==="NotFoundError",ze=`${An.name}@${An.version}`,S=async(n,e,t)=>{const r=await Pe(n,{...e,headers:{...e?.headers??{},"User-Agent":ze}});if(r.ok)return t?.storeCookies&&t.storeCookies(r.headers),r.status!==204?r.json():void 0;console.error(n,e,r);const i=await r.text();if(typeof r?.status=="number")switch(r.status){case 400:throw new k(i);case 401:throw new J(i);case 403:throw new K(i);case 404:throw new B(i);default:throw new H({status:r.status,type:"UnknownError"},i)}throw new Error(i)},te=n=>{if(!n)return n;const e=new Map,t=n.split(";"),r=[];return t.forEach(i=>{const a=i.trim();if(a){const c=a.indexOf("=");if(c>0){const s=a.substring(0,c),l=a.substring(c+1);e.has(s)||r.push(s),e.set(s,l)}}}),r.map(i=>`${i}=${e.get(i)}`).join("; ")},Ve=/^([^=]+)=([^;]*)/,qe=(n,e)=>{const t=e.match(Ve);if(t){const r=t[1],i=t[2];n.storage.cookies.set(r,{value:i,setCookie:e})}},xe=(n,e)=>{e.getSetCookie().forEach(t=>qe(n,t))},je=n=>e=>xe(n,e),re=n=>{if(!n.headers?.cookie)return null;const e=te(n.headers.cookie),t=Array.from(n.storage.cookies.entries());return t.length===0?e:t.reduce((r,[i,{value:a}])=>We(r,i,a),e)},ie=n=>function(t){const r=re(n);return r?{...t,cookie:r}:t},en=(n,e)=>{const t=te(n);return on.parse(t)[`VtexIdclientAutCookie_${e}`]||""},We=(n,e,t)=>{const r=new RegExp(`(${e})=([^;]*)`),i=n.match(r);return i?n.replace(i[0],`${i[1]}=${t}`):`${n};${e}=${t}`};function tn(n){return n?JSON.parse(Buffer.from(n.split(".")[1],"base64").toString()):null}const Y={method:"POST",headers:{"content-type":"application/json"}},Ge=({account:n,environment:e,incrementAddress:t,subDomainPrefix:r},i)=>{const a=`https://${n}.${e}.com.br`,c=je(i),s=ie(i),l=_e(),d=new Headers(i.headers).get("x-forwarded-host")??i.headers?.host??"",g=r&&r.map(o=>o+".").find(o=>d.includes(o))||"",u=d.replace(g,"");return{catalog:{salesChannel:o=>S(`${a}/api/catalog_system/pub/saleschannel/${o}`,void 0,{storeCookies:c}),brand:{list:()=>S(`${a}/api/catalog_system/pub/brand/list`,void 0,{storeCookies:c})},category:{tree:(o=3)=>S(`${a}/api/catalog_system/pub/category/tree/${o}`,void 0,{storeCookies:c})},portal:{pagetype:o=>S(`${a}/api/catalog_system/pub/portal/pagetype/${o}`,void 0,{storeCookies:c})},products:{crossselling:({type:o,productId:p,groupByProduct:m=!0})=>{const f=new URLSearchParams({sc:i.storage.channel.salesChannel,groupByProduct:m.toString()});return S(`${a}/api/catalog_system/pub/products/crossselling/${o}/${p}?${f}`,void 0,{storeCookies:c})}}},checkout:{simulation:(o,{salesChannel:p}=i.storage.channel)=>{const m=new URLSearchParams({sc:p}),f=s({"content-type":"application/json","X-FORWARDED-HOST":u});return S(`${a}/api/checkout/pub/orderForms/simulation?${m.toString()}`,{...Y,headers:f,body:JSON.stringify(o)},{storeCookies:c})},shippingData:({id:o,index:p,deliveryMode:m,selectedAddresses:f},I)=>{const v=I?{startDateUtc:m?.deliveryWindow?.startDate,endDateUtc:m?.deliveryWindow?.endDate}:null,w={logisticsInfo:Array.from({length:p},(P,b)=>({itemIndex:b,selectedDeliveryChannel:m?.deliveryChannel||null,selectedSla:m?.deliveryMethod||null,deliveryWindow:v})),selectedAddresses:f,clearAddressIfPostalCodeNotFound:t},_=s({"content-type":"application/json","X-FORWARDED-HOST":u});return S(`${a}/api/checkout/pub/orderForm/${o}/attachments/shippingData`,{...Y,headers:_,body:JSON.stringify(w)},{storeCookies:c})},marketingData:({id:o,marketingData:p})=>{const m=s({"content-type":"application/json","X-FORWARDED-HOST":u});return S(`${a}/api/checkout/pub/orderForm/${o}/attachments/marketingData`,{headers:m,body:JSON.stringify(p),method:"POST"},{storeCookies:c})},clientPreferencesData:({id:o,clientPreferencesData:p})=>{const m=s({"content-type":"application/json","X-FORWARDED-HOST":u});return S(`${a}/api/checkout/pub/orderForm/${o}/attachments/clientPreferencesData`,{headers:m,body:JSON.stringify(p),method:"POST"},{storeCookies:c})},orderForm:({id:o,refreshOutdatedData:p=!0,channel:m=i.storage.channel})=>{const{salesChannel:f}=m,I=s({"content-type":"application/json","X-FORWARDED-HOST":u}),v=new URLSearchParams({sc:f});o&&v.set("refreshOutdatedData",p.toString());const w=`${a}/api/checkout/pub/orderForm${o?`/${o}`:""}?${v.toString()}`;return S(w,{...Y,headers:I,...o?{}:{body:"{}"}},{storeCookies:c})},clearOrderFormMessages:({id:o})=>{const p=s({"content-type":"application/json","X-FORWARDED-HOST":u});return S(`${a}/api/checkout/pub/orderForm/${o}/messages/clear`,{...Y,headers:p,body:"{}"})},updateOrderFormItems:({id:o,orderItems:p,allowOutdatedData:m="paymentData",salesChannel:f=i.storage.channel.salesChannel,shouldSplitItem:I=!0})=>{const v=new URLSearchParams({allowOutdatedData:m,sc:f}),w=s({"content-type":"application/json","X-FORWARDED-HOST":u});return S(`${a}/api/checkout/pub/orderForm/${o}/items?${v}`,{headers:w,body:JSON.stringify({orderItems:p,noSplitItem:!I}),method:"PATCH"},{storeCookies:c})},setCustomData:({id:o,appId:p,key:m,value:f})=>{const I=s({"content-type":"application/json","X-FORWARDED-HOST":u});return S(`${a}/api/checkout/pub/orderForm/${o}/customData/${p}/${m}`,{headers:I,body:JSON.stringify({value:f}),method:"PUT"})},region:async({postalCode:o,geoCoordinates:p,country:m,salesChannel:f})=>{const I=new URLSearchParams({country:m,sc:f??""});o?I.append("postalCode",o):I.append("geoCoordinates",`${p?.longitude};${p?.latitude}`);const v=`${a}/api/checkout/pub/regions/?${I.toString()}`,w=s({"content-type":"application/json","X-FORWARDED-HOST":u});return S(v,{headers:w},{storeCookies:c})},address:async({postalCode:o,country:p})=>{const m=s({"content-type":"application/json","X-FORWARDED-HOST":u});return S(`${a}/api/checkout/pub/postal-code/${p}/${o}`,{headers:m},{storeCookies:c})},cancelOrder:({orderId:o,customerEmail:p,reason:m})=>{const f=s({"content-type":"application/json","X-FORWARDED-HOST":u});return S(`${a}/api/checkout/pub/orders/${o}/user-cancel-request`,{method:"POST",headers:f,body:JSON.stringify({customerEmail:p,reason:m})},{})},pickupPoints:({geoCoordinates:o})=>{if(!o)throw new Error("Missing required parameter for listing pickup points.");const p=s({"content-type":"application/json","X-FORWARDED-HOST":u});return S(`${a}/api/logistics-shipping/pickuppoints/_search`,{method:"POST",headers:p,body:JSON.stringify({coordinate:o})},{storeCookies:c})}},session:o=>{const p=new URLSearchParams(o);p.set("items","profile.id,profile.email,profile.firstName,profile.lastName,profile.phone,shopper.firstName,shopper.lastName,shopper.organizationManager,store.channel,store.countryCode,store.cultureInfo,store.currencyCode,store.currencySymbol,authentication.customerId,authentication.storeUserId,authentication.storeUserEmail,authentication.unitId,authentication.unitName,checkout.regionId,public.postalCode");const m=s({"content-type":"application/json"}),f=on.parse(i?.headers?.cookie??"")?.vtex_session;return S(`${a}/api/sessions?${p.toString()}`,{method:f?"PATCH":"POST",headers:m,body:"{}"},{storeCookies:c})},subscribeToNewsletter:o=>S(`${a}/api/dataentities/NL/documents/`,{...Y,body:JSON.stringify({...o,isNewsletterOptIn:!0}),method:"PATCH"},{storeCookies:c}),profile:{addresses:async o=>{const p=s({"content-type":"application/json","X-FORWARDED-HOST":u});return S(`${a}/api/profile-system/pvt/profiles/${o}/addresses`,{headers:p},{storeCookies:c})}},oms:{userOrder:({orderId:o})=>{const p=s({"content-type":"application/json","X-FORWARDED-HOST":u});return S(`${a}/api/oms/user/orders/${o}`,{method:"GET",headers:p},{storeCookies:c})},listUserOrders:({page:o,status:p,dateInitial:m,dateFinal:f,text:I,clientEmail:v,perPage:w,pendingMyApproval:_})=>{const P=new URLSearchParams;if(m){const E=new Date(m).setHours(0,0,0,0);m=new Date(E).toISOString()}if(f){const E=new Date(f).setHours(23,59,59,999);f=new Date(E).toISOString()}I&&P.append("text",I),p&&p.length>0&&P.append("status",p.filter(Boolean).join(",")),m&&f?P.append("creation_date",`creationDate:[${m} TO ${f}]`):m?P.append("creation_date",`creationDate:[${m} TO *]`):f&&P.append("creation_date",`creationDate:[* TO ${f}]`),v&&P.append("clientEmail",v),o&&P.append("page",o.toString()),w&&P.append("per_page",w.toString()),_&&P.append("my_pending_approvals",String(!0));const b=s({"content-type":"application/json","X-FORWARDED-HOST":u});return S(`${a}/api/oms/user/orders?${P.toString()}`,{method:"GET",headers:b},{storeCookies:c})},getCommercialAuthorizationsByOrderId:({orderId:o})=>{const p=s({"content-type":"application/json","X-FORWARDED-HOST":u});return S(`${a}/${n}/commercial-authorizations/order/${o}`,{method:"GET",headers:p},{storeCookies:c})},processOrderAuthorization:async({orderAuthorizationId:o,dimensionId:p,ruleId:m,approved:f})=>{const I=s({"content-type":"application/json","X-FORWARDED-HOST":u}),_={params:{ruleId:m,dimensionId:p,score:f?100:0}};return S(`${a}/${n}/commercial-authorizations/${o}/callback`,{method:"POST",headers:I,body:JSON.stringify(_)},{storeCookies:c})}},units:{getUnitByUserId:({userId:o})=>{const p=s({"content-type":"application/json","X-FORWARDED-HOST":u});return S(`${a}/api/units/v1/${o}/unit`,{method:"GET",headers:p},{})},getOrgUnitById:({orgUnitId:o})=>{const p=s({"content-type":"application/json","X-FORWARDED-HOST":u});return S(`${a}/api/units/v1/${o}`,{method:"GET",headers:p},{})},getScopesByOrgUnit:({orgUnitId:o})=>{const p=s({"content-type":"application/json","X-FORWARDED-HOST":u});return S(`${a}/api/units/v1/${o}/scopes`,{method:"GET",headers:p},{})}},licenseManager:{getUserById:({userId:o})=>{const p=s({"content-type":"application/json","X-FORWARDED-HOST":u});return S(`${a}/api/license-manager/users/${o}`,{method:"GET",headers:p},{})},getUserByEmail:({email:o})=>{const p=s({"content-type":"application/json","X-FORWARDED-HOST":u});return S(`${a}/api/license-manager/pvt/users/${o}`,{method:"GET",headers:p},{})},getUserRoles:({userId:o})=>{const p=s({"content-type":"application/json","X-FORWARDED-HOST":u});return S(`${a}/api/license-manager/storefront/users/${o}/roles`,{method:"GET",headers:p},{})}},masterData:{getContractById:({contractId:o})=>{if(!o)throw new k("Missing contractId to fetch CL fields.");const p=l({Accept:"application/json","content-type":"application/json","X-FORWARDED-HOST":u});return S(`${a}/api/dataentities/CL/documents/${o}?_fields=_all`,{method:"GET",headers:p},{})},getShopperById:({userId:o})=>{if(!o)throw new k("Missing userId to fetch shopper name.");const p=l({Accept:"application/json","content-type":"application/json","X-FORWARDED-HOST":u}),m=o.replace(/-/g,"");return S(`${a}/api/dataentities/shopper/search?_where=(userId=${m} OR userId=${o})&_fields=_all&_schema=v1`,{method:"GET",headers:p},{})}},vtexid:{validate:()=>{const o=s({"content-type":"application/json","X-FORWARDED-HOST":u}),p=en(re(i)??"",n);return S(`${a}/api/vtexid/credential/validate`,{headers:o,body:JSON.stringify({token:p}),method:"POST"},{storeCookies:c})}},orderEntry:{uploadFile:({fileBuffer:o,fileName:p,mimeType:m})=>{const f=s({"content-type":"application/json","X-FORWARDED-HOST":u}),I=`----FastStoreUploadBoundary${Date.now()}`,v=`\r
|
|
2
|
+
`,_=/^[a-zA-Z0-9][a-zA-Z0-9!#$&\-.^_]*\/[a-zA-Z0-9][a-zA-Z0-9!#$&\-.^_+]*$/.test(m)?m:"application/octet-stream",P=p.replaceAll(/[\r\n"]/g,"_"),b=[`--${I}`,`Content-Disposition: form-data; name="file"; filename="${P}"`,`Content-Type: ${_}`,"",""].join(v),E=`${v}--${I}--${v}`,h=Buffer.from(b),O=Buffer.from(E),C=new Uint8Array(h.byteLength+o.byteLength+O.byteLength);let D=0;return C.set(h,D),D+=h.byteLength,C.set(o,D),D+=o.byteLength,C.set(O,D),S(`${a}/api/order-entry/upload?an=${n}`,{method:"POST",headers:{...f,"content-type":`multipart/form-data; boundary=${I}`},body:C.buffer},{})},startOperation:({objectKey:o,orderFormId:p,sessionToken:m})=>{const f=s({"content-type":"application/json","X-FORWARDED-HOST":u}),I=JSON.stringify({objectKey:o,orderFormId:p,operation:"CreateCart",...m?{sessionToken:m}:{}});return S(`${a}/api/order-entry/operation?an=${n}`,{method:"POST",headers:f,body:I},{})},getOperation:({operationId:o})=>{const p=s({"content-type":"application/json","X-FORWARDED-HOST":u});return S(`${a}/api/order-entry/operation/${o}?an=${n}`,{method:"GET",headers:p},{})},createOrderForm:()=>{const o=s({"content-type":"application/json","X-FORWARDED-HOST":u});return S(`${a}/api/checkout/pub/orderForm?sc=${i.storage.channel.salesChannel}`,{method:"POST",headers:o,body:"{}"},{})},getOrderFormItems:({orderFormId:o})=>{const p=s({"content-type":"application/json","X-FORWARDED-HOST":u});return S(`${a}/api/checkout/pub/orderForm/${o}`,{method:"GET",headers:p},{})}}}},pn="trade-policy",gn="region-id",mn="fuzzy",hn="operator",Sn="pickupPoint",ae="shipping",oe="delivery-options",se="in-stock",He=new Set([pn,gn,mn,hn,Sn,ae,oe,se]),Xe=n=>n.key==="fuzzy"&&(n.value==="0"||n.value==="1"||n.value==="auto"),Ye=n=>n.key==="operator"&&(n.value==="and"||n.value==="or"),Je=({account:n,environment:e,hideUnavailableItems:t,simulationBehavior:r,showSponsored:i,subDomainPrefix:a},c)=>{const s=`https://${n}.${e}.com.br/api/io`,l=ie(c),d=new Headers(c.headers).get("x-forwarded-host")??c.headers?.host??"",g=a&&a.map(h=>h+".").find(h=>d.includes(h))||"",u=d.replace(g,""),o=l({"content-type":"application/json","X-FORWARDED-HOST":u}),p=()=>{const{salesChannel:h}=c.storage.channel;return h?{key:pn,value:h}:null},m=()=>{const{regionId:h,seller:O}=c.storage.channel,D=(O?Buffer.from(`SW#${O}`).toString("base64"):null)??h;return D?{key:gn,value:D}:null},f=h=>{const O=h.filter(({key:T})=>!He.has(T)),C=h.find(({key:T,value:F})=>T===ae&&F!=="all-delivery-methods")??null,D=h.find(({key:T,value:F})=>T===oe&&F!=="all-delivery-options")??null,y=h.find(({key:T})=>T===pn)??p(),A=h.find(({key:T})=>T===gn)??m();return C!==null&&O.push(C),D!==null&&O.push(D),y!==null&&O.push(y),A!==null&&O.push(A),O},I=(h,O)=>{const C=h.find(({key:A})=>A===mn)??null,D=h.find(({key:A})=>A===hn)??null,y=h.find(({key:A})=>A===Sn)??null;C&&Xe(C)&&O.append(mn,C.value),D&&Ye(D)&&O.append(hn,D.value),y&&O.append(Sn,y.value)},v=({query:h="",page:O,count:C,sort:D="",selectedFacets:y=[],type:A,showInvisibleItems:T,sponsoredCount:F,hideUnavailableItems:U,allowRedirect:X=!1})=>{const N=new URLSearchParams({page:(O+1).toString(),count:C!==0?C.toString():"1",query:h,sort:D,locale:c.storage.locale});if(I(y,N),T&&N.append("show-invisible-items","true"),t!==void 0){const q=y.find(({key:Ae})=>Ae===se),cn=q?q.value:U?.toString()??t.toString();N.append("hideUnavailableItems",cn)}r!==void 0&&N.append("simulationBehavior",r.toString()),i!==void 0&&N.append("showSponsored",i.toString()),F!==void 0&&N.append("sponsoredCount",F.toString()),X!==void 0&&N.append("allowRedirect",X.toString());const z=f(y).map(({key:q,value:cn})=>`${q}/${cn}`).join("/");return S(`${s}/_v/api/intelligent-search/${A}/${z}?${N.toString()}`,{headers:o})};return{facets:h=>v({...h,type:"facets"}),products:h=>v({...h,type:"product_search"}),suggestedTerms:h=>{const O=new URLSearchParams({query:h.query?.toString()??"",locale:c.storage.locale});return S(`${s}/_v/api/intelligent-search/search_suggestions?${O.toString()}`,{headers:o})},topSearches:()=>{const h=new URLSearchParams({locale:c.storage.locale});return S(`${s}/_v/api/intelligent-search/top_searches?${h.toString()}`,{headers:o})},productCount:h=>{const O=new URLSearchParams;return h?.query&&O.append("query",h.query.toString()),S(`${s}/_v/api/intelligent-search/catalog_count?${O.toString()}`,{headers:o})}}},Ke=(n,e)=>{const t=Je(n,e),r=Ge(n,e);return{search:t,commerce:r}},Qe=20,Ze=new Set(["brand","category","department","subcategory","collection","cluster"]),W=n=>typeof n.pageType=="string"&&Ze.has(n.pageType.toLowerCase()),nt=(n,e)=>{const t=jn(Qe),r=async i=>Promise.all(i.map(a=>t(async()=>{const c=await e.commerce.catalog.portal.pagetype(a);if(W(c))return c;throw new B(`Catalog returned ${c.pageType} for slug: ${a}. This usually happens when there is more than one category with the same name in the same category tree level.`)})));return new sn(r,{batch:!1})},et=(n,e)=>{const t=async r=>Promise.all(r.map(i=>e.commerce.catalog.salesChannel(i)));return new sn(t)},tt=1,rt=(n,e)=>{const t=jn(tt),r=async a=>{const c=a.reduce((u,{items:o})=>[...u,o],[]),s=[...c.flat()],l=await e.commerce.checkout.simulation({country:a[0].country,postalCode:a[0].postalCode,items:s}),d=l.items.reduce((u,o)=>{const p=o.requestIndex;return typeof p=="number"&&p<u.length&&(u[p]=o),u},Array(s.length).fill(null)),g=c.reduce((u,o)=>[...u,o.length+u[u.length-1]],[0]);return c.map((u,o)=>({...l,items:d.slice(g[o],g[o+1]).filter(p=>!!p)}))},i=async a=>t(r,a);return new sn(i,{maxBatchSize:50})},it=(n,e)=>Ee(n,e);function at(n){return{...n,description:n.description?it(n.description):n.description}}const $=(n,e)=>({...n,isVariantOf:at(e)}),ot=({flags:n},e)=>{const t=async r=>{const i=r.map(g=>g.split("-")[0]),a=r.some(g=>g.split("-")[1]==="invisibleItems"),{products:c}=await e.search.products({query:`sku:${i.join(";")}`,page:0,count:i.length,showInvisibleItems:a,...n?.enableUnavailableItemsOnCart&&{hideUnavailableItems:!1}}),s=c.reduce((g,u)=>{for(const o of u.items)g[o.itemId]=$(o,u);return g},{}),l=i.map(g=>s[g]),d=i.filter(g=>!s[g]);if(d.length>0)throw new B(`Search API did not found the following skus: ${d.join(",")}`);return l};return new sn(t,{maxBatchSize:99})},st=(n,{clients:e})=>{const t=ot(n,e),r=rt(n,e),i=nt(n,e),a=et(n,e);return{skuLoader:t,simulationLoader:r,collectionLoader:i,salesChannelLoader:a}},V=n=>n.AvailableQuantity>0,G=n=>n.spotPrice??0,ct=n=>n.Price??0,Pn=n=>n?"https://schema.org/InStock":"https://schema.org/OutOfStock",ce=(n,e)=>V(n)&&!V(e)?-1:!V(n)&&V(e)?1:G(n)-G(e),lt=n=>n==="available",x=(n,e=0,t=1)=>{const r=e/t;return Math.round((n+r)*100)/100},dt=(n,e={includeTaxes:!1})=>{const t=n.filter(V),r=t[t.length-1],i=r?G(r):0;return e.includeTaxes?x(i,r?.Tax,r?.product?.unitMultiplier):i},En=(n,e={includeTaxes:!1})=>{const[t]=n.filter(V),r=t?G(t):0;return e.includeTaxes?x(r,t?.Tax,t?.product?.unitMultiplier):r},ut={highPrice:n=>dt(n),lowPrice:n=>En(n),lowPriceWithTaxes:n=>En(n,{includeTaxes:!0}),offerCount:n=>n.length,priceCurrency:async(n,e,t)=>{const{loaders:{salesChannelLoader:r},storage:{channel:i}}=t;return(await r.load(i.salesChannel)).CurrencyCode??""},offers:n=>n},pt={ratingValue:()=>5,reviewCount:()=>0},Tn="ÁÄÂÀÃÅČÇĆĎÉĚËÈÊẼĔȆÍÌÎÏŇÑÓÖÒÔÕØŘŔŠŤÚŮÜÙÛÝŸŽáäâàãåčçćďéěëèêẽĕȇíìîïňñóöòôõøðřŕšťúůüùûýÿžþÞĐđ߯a",gt="AAAAAACCCDEEEEEEEEIIIINNOOOOOORRSTUUUUUYYZaaaaaacccdeeeeeeeeiiiinnooooooorrstuuuuuyyzbBDdBAa",mt=n=>{let e=n.slice(0);for(let t=0;t<Tn.length;t++)e=e.replace(new RegExp(Tn.charAt(t),"g"),gt.charAt(t));return e},ht=n=>n.replace(/[·/_,:]/,"-");function le(n){const t=n.replace(/,/g,"").replace(/[*+~.()'"!:@&\[\]`/ %$#?{}><=_^]/g,"-");return ht(mt(t)).toLowerCase()}const Z=n=>n.type==="brand"||W(n)&&n.pageType.toLowerCase()==="brand",fn=n=>W(n)&&n.pageType.toLowerCase()==="collection",ln=n=>Z(n)||fn(n)?le(n.name):W(n)?new URL(`https://${n.url}`).pathname.slice(1).toLowerCase():new URL(n.url).pathname.slice(1).toLowerCase(),de={id:({id:n})=>n.toString(),slug:n=>ln(n),seo:n=>Z(n)||W(n)?{title:n.title??n.name,description:n.metaTagDescription}:{title:n.Title,description:n.MetaTagDescription},type:n=>Z(n)?"Brand":W(n)?n.pageType:n.level===0?"Department":"Category",meta:n=>{const e=ln(n);return Z(n)?{selectedFacets:[{key:"brand",value:e}]}:fn(n)?{selectedFacets:[{key:"productclusterids",value:n.id}]}:{selectedFacets:e.split("/").map((t,r)=>({key:`category-${r+1}`,value:t}))}},breadcrumbList:async(n,e,t)=>{const{loaders:{collectionLoader:r}}=t,a=ln(n).split("/").filter(l=>!!l),c=a.map((l,d)=>a.slice(0,d+1).join("/")),s=await Promise.all(c.map(async l=>{const d=await r.load(l);return{slug:l,...d}}));return{itemListElement:s.map((l,d)=>({item:fn(l)?`/${l.slug}`:new URL(`https://${l.url}`).pathname.toLowerCase(),name:l.name,position:d+1})),numberOfItems:s.length}}},ue={buy:"whoboughtalsobought",view:"whosawalsosaw",similars:"similars",viewAndBought:"whosawalsobought",accessories:"accessories",suggestions:"suggestions"},_n=({key:n,value:e})=>{switch(n){case"price":return{key:n,value:e.replace("-to-",":")};case"channel":case"locale":case"buy":case"view":case"similars":case"viewAndBought":case"accessories":case"suggestions":return[];default:return{key:n,value:e}}},Un=n=>{const e=n.split(":").map(Number);return e.length!==2||Number.isNaN(e[0])||Number.isNaN(e[1])?null:e},St=n=>typeof ue[n]=="string",ft=n=>{const e=n?.filter(t=>St(t.key));if(Array.isArray(e)&&e.length>1)throw new k(`You passed ${e.length} cross selling facets but only one is allowed. Please leave one of the following facet: ${e.map(t=>t.key).join(",")}`);return e?.[0]??null},yt=n=>n?.find(e=>e.key==="slug")?.value??null,It=n=>n?.find(e=>e.key==="id")?.value??null,kn=n=>n?.find(e=>e.key==="locale")?.value??null,Fn=n=>n?.find(e=>e.key==="channel")?.value??null,yn=(n,e)=>{let t=0;for(let r=1;r<n.length;r++)e(n[t],n[r])>0&&(t=r);return n[t]},Ot={__resolveType:({type:n,values:e})=>n!=="TEXT"&&n!=="DELIVERY"?"StoreFacetRange":!e||e.length===0?"StoreFacetBoolean":e.every(t=>t.range)?"StoreFacetRange":"StoreFacetBoolean"},vt={key:({key:n})=>n,label:({name:n})=>n,values:({values:n})=>n.sort((e,t)=>e.name.localeCompare(t.name))},Ct={key:({key:n})=>n,label:({name:n})=>n,min:({values:n,key:e},t,{storage:{searchArgs:r}})=>{const i=Un(r?.selectedFacets?.find(s=>s.key===e)?.value??""),c=yn(n,(s,l)=>s.range.from-l.range.from)?.range?.from??0;return{selected:i?.[0]??c,absolute:c}},max:({values:n,key:e},t,{storage:{searchArgs:r}})=>{const i=Un(r?.selectedFacets?.find(s=>s.key===e)?.value??""),c=yn(n,(s,l)=>l.range.to-s.range.to)?.range?.to??0;return{selected:i?.[1]??c,absolute:c}}},bt={value:({value:n})=>n,label:({name:n})=>n||"unknown",selected:({selected:n})=>n,quantity:({quantity:n})=>n},Dt=async(n,{data:e},{clients:{commerce:t}})=>{if(!e?.orderId)throw new k("Missing orderId");return{data:(await t.checkout.cancelOrder(e))?.data}};function pe(n){if(!n||n.status!=="pending")return null;for(const e of n.dimensionStatus){if(e.status!=="pending")continue;const t=e.ruleCollection.find(r=>r.status==="pending"&&r.isUserNextAuthorizer);if(t)return{rule:t,orderAuthorizationId:n.id,dimensionId:e.id}}return null}function wt(n){if(!n||n.status!=="pending")return!1;const e=n.dimensionStatus.filter(t=>t.status==="pending").flatMap(t=>t.ruleCollection).filter(t=>t.status==="pending");return e.length===0?!1:e.every(t=>!t.isUserNextAuthorizer)}const At=async(n,{data:e},{clients:{commerce:t}})=>{const r=await t.oms.processOrderAuthorization(e),i=pe(r);return{isPendingForOtherAuthorizer:!i&&wt(r),ruleForAuthorization:i}},Pt=async(n,{data:e},{clients:{commerce:t}})=>{if(!e?.objectKey)throw new k("Missing objectKey");const r=e.orderFormId||(await t.orderEntry.createOrderForm()).orderFormId;return t.orderEntry.startOperation({objectKey:e.objectKey,orderFormId:r,sessionToken:e.sessionToken??void 0})},Et=async(n,{data:e},{clients:{commerce:t}})=>({id:(await t.subscribeToNewsletter(e))?.Id}),Tt=async(n,{data:e},{clients:{commerce:t}})=>{const{fileContent:r,fileName:i,mimeType:a}=e;if(!r||!i||!a)throw new k("Missing required fields: fileContent, fileName, mimeType");const c=r.replaceAll(/\s/g,""),s=5*1024*1024;if(Math.floor(c.length*3/4)>s)throw new k("File exceeds maximum allowed size of 5MB");if(!/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(c))throw new k("Invalid Base64 fileContent");const g=Buffer.from(c,"base64");return await t.orderEntry.uploadFile({fileBuffer:g,fileName:i,mimeType:a})};class rn{static parse(e){try{const t=JSON.parse(e);return{seller:t.seller??"",regionId:t.regionId??"",salesChannel:t.salesChannel??"",hasOnlyDefaultSalesChannel:t.hasOnlyDefaultSalesChannel??!0}}catch(t){throw console.error(t),new Error("Malformed channel string")}}static stringify(e){return JSON.stringify(e)}}const In=(n,e)=>{n.storage.channel=rn.parse(e)},On=(n,e)=>{n.storage.locale=e},ge=n=>Te.createHash("md5").update(n).digest("hex"),Q={attachment:"ATTACHMENT",specification:"SPECIFICATION",attribute:"ATTRIBUTE"};function me(n){return{name:n.name,value:n.content,valueReference:Q.attachment}}function _t(n){return{propertyID:n.id,name:n.name,value:n.value,valueReference:{valueReference:Q.attribute,visible:n.visible}}}function he(n){return ge(`${n.name}:${JSON.stringify(n.value)}:${n.valueReference}`)}const Ut=n=>{const e=n.postalCode,t=n.geoCoordinates,r={addressType:n.addressType||null,postalCode:e||null,city:null,state:null,country:n.country||null,street:null,number:null,neighborhood:null,complement:null,reference:null,geoCoordinates:[]};if(t){const i=typeof t=="object"&&"latitude"in t?t.latitude:null,a=typeof t=="object"&&"longitude"in t?t.longitude:null;r.geoCoordinates=i!==null&&a!==null?[a,i]:[]}return[r]},kt=(n,e,t)=>{const r=e.postalCode,i=e.geoCoordinates,a=n?.shippingData?.availableAddresses??[],c=n?.shippingData?.selectedAddresses??[];if(!t&&c.length>0)return[c[0]];if(t&&a.length>0)for(const s of a){if(r&&i&&(s.postalCode===r||s.geoCoordinates[0]===i.longitude&&s.geoCoordinates[1]===i.latitude))return[s];if(r&&!i&&s.postalCode===r)return[s];if(i&&!r&&s.geoCoordinates[0]===i.longitude&&s.geoCoordinates[1]===i.latitude)return[s]}return null},Se=(n,e)=>{if(!Ft(e))return{updateShipping:!1,addressChanged:!1};if(!Mt(n))return{updateShipping:!1,addressChanged:!1};const[t]=n?.shippingData?.selectedAddresses??[];if(Nt(t,e.postalCode)||Rt(t,e.geoCoordinates)||Lt(t,e.addressType))return{updateShipping:!0,addressChanged:!0};const{logisticsInfo:r}=n.shippingData;return Bt(r,e)?{updateShipping:!0,addressChanged:!1}:{updateShipping:!1,addressChanged:!1}},Ft=n=>!!n.postalCode||n.geoCoordinates?.latitude&&n.geoCoordinates?.longitude,Nt=(n,e)=>typeof e=="string"&&n?.postalCode!==e,Rt=(n,e)=>typeof e?.latitude=="number"&&typeof e?.longitude=="number"&&(n?.geoCoordinates[0]!==e?.longitude||n?.geoCoordinates[1]!==e?.latitude),Lt=(n,e)=>typeof e=="string"&&n?.addressType!==e,Mt=n=>n.items.length!==0,Bt=(n,e)=>{const t=e?.deliveryMode?.deliveryChannel,r=e?.deliveryMode?.deliveryMethod,{startDate:i,endDate:a}=e?.deliveryMode?.deliveryWindow||{};return n.some(({selectedDeliveryChannel:c,selectedSla:s,slas:l})=>{const d=t&&c!==t,g=r&&s!==r;return l?.some(u=>d&&u.deliveryChannel===t||g&&u.id===r?!0:i&&a&&u.deliveryChannel===t&&u.id===r&&(!u?.deliveryWindow||u?.deliveryWindow?.startDateUtc!==i||u?.deliveryWindow?.endDateUtc!==a)&&u.availableDeliveryWindows?.some(o=>o?.startDateUtc===i&&o?.endDateUtc===a))})},fe=n=>n.valueReference===Q.attachment,vn=n=>[n.itemOffered.sku,n.seller.identifier,n.price<.01?"Gift":void 0,n.itemOffered.additionalProperty?.filter(fe).map(he).join("-")].filter(Boolean).join("::"),an=(n,e)=>({listPrice:n.listPrice/100,price:n.sellingPrice/100,quantity:n.quantity,seller:{identifier:n.seller},itemOffered:{sku:n.id,image:[],name:n.name,additionalProperty:n.attachments.map(me)},index:e}),$t=n=>({quantity:n.quantity,seller:n.seller.identifier,id:n.itemOffered.sku,index:n.index,attachments:(n.itemOffered.additionalProperty?.filter(fe)??[]).map(e=>({name:e.name,content:e.value}))}),Nn=n=>n.reduce((e,t)=>{const r=vn(t);return e.has(r)||e.set(r,[]),e.get(r)?.push(t),e},new Map),zt=(n,e)=>{const t=(s,l)=>({...s,itemOffered:{sku:s.itemOffered.sku},index:l}),r=e.items.map(an).map(t),i=n.acceptedOffer.map(t),a=n.orderNumber===e.orderFormId,c=Dn(r,i);return a&&c};function ye(n,e){return n?.some(t=>t.parentItemIndex!==null&&t.parentItemIndex!==void 0&&n[t.parentItemIndex]?.id===e)}function Ie(n,e){return n?.some(t=>t.id===e&&t.parentItemIndex!==null)}const Rn=n=>{const e=n.items.reduce((t,r,i)=>{const a=Ie(n.items,r.id)||ye(n.items,r.id)?`${vn(an(r))}::${i}`:vn(an(r));return t[a]||(t[a]=[]),t[a].push(r),t},{});return{...n,items:Object.values(e).map(t=>{const[r]=t,i=t.reduce((c,s)=>c+s.quantity,0),a=t.reduce((c,s)=>c+(s?.priceDefinition?.total??(s?.quantity??0)*(s?.sellingPrice??0)),0);return{...r,quantity:i,sellingPrice:a/i}})}},Ln=async(n,e,t)=>({order:{orderNumber:n.orderFormId,acceptedOffer:n.items.map(async r=>({...r,product:await e.load(`${r.id}-invisibleItems`)})),shouldSplitItem:t},messages:n.messages.map(({text:r,status:i})=>({text:r,status:i.toUpperCase()}))}),Oe=({items:n},e)=>{const t=n.map(r=>({id:r.id,quantity:r.quantity,seller:r.seller,attachments:r.attachments}));return ge(JSON.stringify({sessionId:e?.id??"",items:t}))},Mn=async(n,e,t)=>{try{return await e.checkout.setCustomData({id:n.orderFormId,appId:"faststore",key:"cartEtag",value:Oe(n,t)})}catch(r){throw console.error(`Error while setting custom data to orderForm.
|
|
3
3
|
Make sure to add the following custom app to the orderForm:
|
|
4
4
|
{"fields":["cartEtag"],"id":"faststore","major":1}.
|
|
5
|
-
More info at: https://developers.vtex.com/vtex-rest-api/docs/customizable-fields-with-checkout-api`),r}},
|
|
6
|
-
`),r}}const
|
|
7
|
-
`)}let T;o.seller&&(s||g)&&(T=(await r.commerce.checkout.region({postalCode:s,geoCoordinates:g,country:c,salesChannel:l}))?.[0]?.sellers.find(N=>o.seller===N.id));const F={...n,currency:{code:C?.currencyCode?.value??n.currency.code,symbol:C?.currencySymbol?.value??n.currency.symbol},country:C?.countryCode?.value??c,channel:re.stringify({salesChannel:C?.channel?.value??o.salesChannel,regionId:D?.regionId?.value??o.regionId,seller:T?.id,hasOnlyDefaultSalesChannel:!C?.channel?.value}),b2b:w?{isRepresentative:w??!1,customerId:b?.customerId?.value??P??"",unitName:b?.unitName?.value??"",unitId:b?.unitId?.value??_??"",firstName:typeof h?.firstName?.value=="string"?h.firstName.value:"",lastName:typeof h?.lastName?.value=="string"?h.lastName.value:"",userName:`${typeof h?.firstName?.value=="string"?h.firstName.value:""} ${typeof h?.lastName?.value=="string"?h.lastName.value:""}`.trim(),userEmail:b?.storeUserEmail.value??"",savedPostalCode:y?.postalCode?.value??"",contractName:A?.corporateName??"",organizationManager:h?.organizationManager?.value??!1}:null,marketingData:f,person:E?.id?{id:E.id?.value??"",email:E.email?.value??"",givenName:E.firstName?.value??"",familyName:E.lastName?.value??""}:null,geoCoordinates:g?.latitude&&g?.longitude&&g||null,city:u};return be(n,F)?null:F},Xt={validateCart:Wt,validateSession:Ht,subscribeToNewsletter:Tt,cancelOrder:Dt,processOrderAuthorization:Pt,uploadFileToOrderEntry:_t,startOrderEntryOperation:Et};var Oe;(function(e){e.NAME="Name",e.DOCUMENT="Document",e.OPERATION_DEFINITION="OperationDefinition",e.VARIABLE_DEFINITION="VariableDefinition",e.SELECTION_SET="SelectionSet",e.FIELD="Field",e.ARGUMENT="Argument",e.FRAGMENT_SPREAD="FragmentSpread",e.INLINE_FRAGMENT="InlineFragment",e.FRAGMENT_DEFINITION="FragmentDefinition",e.VARIABLE="Variable",e.INT="IntValue",e.FLOAT="FloatValue",e.STRING="StringValue",e.BOOLEAN="BooleanValue",e.NULL="NullValue",e.ENUM="EnumValue",e.LIST="ListValue",e.OBJECT="ObjectValue",e.OBJECT_FIELD="ObjectField",e.DIRECTIVE="Directive",e.NAMED_TYPE="NamedType",e.LIST_TYPE="ListType",e.NON_NULL_TYPE="NonNullType",e.SCHEMA_DEFINITION="SchemaDefinition",e.OPERATION_TYPE_DEFINITION="OperationTypeDefinition",e.SCALAR_TYPE_DEFINITION="ScalarTypeDefinition",e.OBJECT_TYPE_DEFINITION="ObjectTypeDefinition",e.FIELD_DEFINITION="FieldDefinition",e.INPUT_VALUE_DEFINITION="InputValueDefinition",e.INTERFACE_TYPE_DEFINITION="InterfaceTypeDefinition",e.UNION_TYPE_DEFINITION="UnionTypeDefinition",e.ENUM_TYPE_DEFINITION="EnumTypeDefinition",e.ENUM_VALUE_DEFINITION="EnumValueDefinition",e.INPUT_OBJECT_TYPE_DEFINITION="InputObjectTypeDefinition",e.DIRECTIVE_DEFINITION="DirectiveDefinition",e.SCHEMA_EXTENSION="SchemaExtension",e.SCALAR_TYPE_EXTENSION="ScalarTypeExtension",e.OBJECT_TYPE_EXTENSION="ObjectTypeExtension",e.INTERFACE_TYPE_EXTENSION="InterfaceTypeExtension",e.UNION_TYPE_EXTENSION="UnionTypeExtension",e.ENUM_TYPE_EXTENSION="EnumTypeExtension",e.INPUT_OBJECT_TYPE_EXTENSION="InputObjectTypeExtension"})(Oe||(Oe={}));const Yt=e=>typeof e=="string"?vn(e):null;function vn(e){try{return JSON.parse(e)}catch{return e}}const Jt=e=>typeof e=="object"?JSON.stringify(e):typeof e=="string"?e:null,Kt=new ee.GraphQLScalarType({name:"ObjectOrString",description:"A string or the string representation of an object (a stringified object).",parseValue:Yt,serialize:Jt,parseLiteral(e){return e.kind===Oe.STRING?vn(e.value):null}}),L=e=>"Price"in e&&"seller"in e&&"product"in e,R=e=>"skuName"in e,Qt={priceCurrency:async(e,n,t)=>{const{loaders:{salesChannelLoader:r},storage:{channel:i}}=t;return(await r.load(i.salesChannel)).CurrencyCode??""},priceValidUntil:e=>L(e)?e.PriceValidUntil??"":R(e)?e.priceValidUntil??"":null,itemCondition:()=>"https://schema.org/NewCondition",availability:async e=>L(e)?Pe(V(e)):R(e)?Pe(dt(e.availability)):null,seller:(e,n,t)=>L(e)?{identifier:t.storage.channel?.seller||e.seller.sellerId||""}:R(e)?{identifier:e.seller}:null,price:e=>L(e)?G(e):R(e)?e.sellingPrice/100:null,priceWithTaxes:e=>L(e)?x(G(e),e?.Tax,e.product.unitMultiplier):R(e)?x(e.sellingPrice/100,e.tax/100,e.unitMultiplier):null,sellingPrice:e=>L(e)?lt(e):R(e)?e.sellingPrice/100:null,listPrice:e=>L(e)?e.ListPrice??0:R(e)?e.listPrice/100:null,listPriceWithTaxes:e=>L(e)?x(e.ListPrice??0,e?.Tax,e.product.unitMultiplier):R(e)?x(e.listPrice/100,e.tax/100,e.unitMultiplier):null,itemOffered:e=>L(e)?e.product:R(e)?{...e.product,attachmentsValues:e.attachments}:null,quantity:e=>L(e)?e.AvailableQuantity??0:R(e)?e.quantity:null,isGift:e=>R(e)?e.isGift??!1:null},Zt=({linkText:e})=>`/${e}/p`,er=({offer:e,seller:n,product:t})=>({...e,product:t,seller:n}),nr={imageText:"image",imageUrl:"https://storecomponents.vtexassets.com/assets/faststore/images/image___117a6d3e229a96ad0e0d0876352566e2.svg",imageLabel:"label"},On=(e,n)=>`${e}-${n}`,tr=(e,n)=>`/${On(e,n)}/p`,rr=e=>Array.isArray(e)&&e.length>0?e:null;function Cn(e){return e.replace(/^\/+|\/+$/g,"")}const ir=(e,n)=>{const t=e.findIndex(r=>Cn(r).split("/").at(-1)===n);return t<0?0:t},ar={productID:({itemId:e})=>e,name:({isVariantOf:e,name:n})=>n??e.productName,slug:({isVariantOf:{linkText:e},itemId:n})=>On(e,n),description:({isVariantOf:{description:e}})=>e,seo:({isVariantOf:e})=>({title:e.productTitle||e.productName,description:e.metaTagDescription||e.description,canonical:Zt(e)}),brand:({isVariantOf:{brand:e}})=>({name:e}),unitMultiplier:({unitMultiplier:e})=>e,breadcrumbList:({isVariantOf:{categories:e,productName:n,linkText:t,categoryId:r,categoriesIds:i},itemId:a})=>{const o=ir(i,r),s=e[o],c=Cn(s).split("/");return{itemListElement:[...c.map((u,g)=>{const m=`/${c.slice(0,g+1).map(cn).join("/")}/`;return{name:u,item:m,position:g+1}}),{name:n,item:tr(t,a),position:c.length+1}],numberOfItems:c.length}},image:({images:e},n)=>{const t=(rr(e)??[nr]).map(({imageUrl:s,imageText:c,imageLabel:u})=>({alternateName:c??"",url:s.replace("vteximg.com.br","vtexassets.com"),keywords:u}));if(typeof n!="object")return t;let{context:r,limit:i}=n;const a=r!=="generic";i=i||-1,i=i<=-1?void 0:i;let o=a?t.filter(({keywords:s})=>s===r):t;return o=o.length===0?t:o,o.slice(0,i)},sku:({itemId:e})=>e,gtin:({ean:e,referenceId:n})=>e||(n[0]?.Value??""),mpn:({isVariantOf:{manufacturerCode:e}})=>e??"",review:()=>[],aggregateRating:()=>({}),offers:e=>e.sellers.map(n=>er({offer:n.commertialOffer,seller:n,product:e})).sort(sn),isVariantOf:e=>e,additionalProperty:({variations:e=[],attachmentsValues:n=[],attributes:t=[]})=>{const r=e.flatMap(({name:o,values:s})=>s.map(c=>({name:o,value:c,valueReference:Q.specification}))),i=n.map(gn),a=t.map(Ut);return[...r,...i,...a]},hasSpecifications:({isVariantOf:e})=>!!e.skuSpecifications?.length,skuSpecifications:({isVariantOf:{skuSpecifications:e}})=>e??[],specificationGroups:({isVariantOf:{specificationGroups:e}})=>e,releaseDate:({isVariantOf:{releaseDate:e}})=>e??"",advertisement:({isVariantOf:{advertisement:e}})=>e,deliveryPromiseBadges:({isVariantOf:{deliveryPromisesBadges:e}})=>e},or=new Set(["allSpecifications"]),sr={hasVariant:e=>e.isVariantOf.items.map(n=>$(n,e.isVariantOf)),productGroupID:({isVariantOf:e})=>e.productId,name:e=>e.isVariantOf.productName,skuVariants:e=>e,additionalProperty:({isVariantOf:{specificationGroups:e}})=>e.filter(n=>!or.has(n.name)).flatMap(({specifications:n})=>n.flatMap(({name:t,values:r})=>r.map(i=>({name:t,value:i,valueReference:Q.specification}))))},cr={propertyID:e=>e.propertyID||mn(e),name:({name:e})=>e,value:({value:e})=>e,valueReference:({valueReference:e})=>e},lr=async(e,{operationId:n},{clients:{commerce:t}})=>{if(!n)throw new k("Missing operationId");return t.orderEntry.getOperation({operationId:n})},dr=async(e,{orderFormId:n},{clients:{commerce:t}})=>{if(!n)throw new k("Missing orderFormId");const{items:r}=await t.orderEntry.getOrderFormItems({orderFormId:n});return(r??[]).map(i=>({id:i.id,name:i.name,price:i.price,listPrice:i.listPrice,quantity:i.quantity,imageUrl:i.imageUrl??null,availability:i.availability,seller:i.seller,unitMultiplier:i.unitMultiplier??1}))},Ce=e=>{const n=e.flatMap(r=>r.sellers.map(i=>({offer:i.commertialOffer,sku:r}))),t=Se(n,({offer:r},{offer:i})=>sn(r,i));return t?t.sku:e[0]},ur=e=>e!==""&&!Number.isNaN(Number(e)),pr={price_desc:"price:desc",price_asc:"price:asc",orders_desc:"orders:desc",name_desc:"name:desc",name_asc:"name:asc",release_desc:"release:desc",discount_desc:"discount:desc",score_desc:""},gr={product:async(e,{locator:n},t)=>{const r=Fe(n),i=ke(n),a=vt(n),o=It(n);r&&ye(t,r),i&&Ie(t,i);const{loaders:{skuLoader:s},clients:{commerce:c,search:u}}=t;try{const g=a??o?.split("-").pop()??"";if(!ur(g))throw new Error("Invalid SkuId");const m=await s.load(g);if(o&&m.isVariantOf.linkText&&!o.startsWith(m.isVariantOf.linkText))throw new Error(`Slug was set but the fetched sku does not satisfy the slug condition. slug: ${o}, linkText: ${m.isVariantOf.linkText}`);return m}catch{if(o==null)throw new k("Missing slug or id");const m=await c.catalog.portal.pagetype(`${o}/p`);if(m.pageType!=="Product"||!m.id)throw new B(`No product found for slug ${o}`);const{products:[d]}=await u.products({page:0,count:1,query:`product:${m.id}`,hideUnavailableItems:!1});if(!d)throw new B(`No product found for id ${m.id}`);const l=Ce(d.items);return $(l,d)}},collection:(e,{slug:n},t)=>{const{loaders:{collectionLoader:r}}=t;return r.load(n)},search:async(e,{first:n,after:t,sort:r,term:i,selectedFacets:a,sponsoredCount:o},s)=>{const c=Fe(a),u=ke(a),g=yt(a);c&&ye(s,c),u&&Ie(s,u);let m=i;g&&(m=`product:${(await s.clients.commerce.catalog.products.crossselling({type:dn[g.key],productId:g.value})).map(S=>S.productId).slice(0,n).join(";")}`);const d=t?Number(t):0,l={page:Math.ceil(d/n)||0,count:n,query:m??void 0,sort:pr[r??"score_desc"],selectedFacets:a?.flatMap(_e)??[],sponsoredCount:o??void 0},p=s.clients.search.products(l);return{searchArgs:l,productSearchPromise:p}},allProducts:async(e,{first:n,after:t},r)=>{const{clients:{search:i}}=r,a=t?Number(t):0,o=await i.products({page:Math.ceil(a/n),count:n}),s=o.products.flatMap(c=>c.items.map(u=>$(u,c))).filter(c=>c.sellers.length>0);return{pageInfo:{hasNextPage:o.pagination.after.length>0,hasPreviousPage:o.pagination.before.length>0,startCursor:"0",endCursor:o.recordsFiltered.toString(),totalCount:o.recordsFiltered},edges:s.map((c,u)=>({node:c,cursor:(a+u).toString()}))}},products:async(e,{productIds:n},t)=>{const{clients:{search:r}}=t;if(!n.length)return[];const i=`id:${n.join(";")}`;return(await r.products({page:0,count:n.length,query:i})).products.flatMap(o=>o.items.map(s=>$(s,o))).filter(o=>n.includes(o.itemId)&&o.sellers.length>0)},allCollections:async(e,{first:n,after:t},r)=>{const{clients:{commerce:i}}=r,a=t?Number(t):0,[o,s]=await Promise.all([i.catalog.brand.list(),i.catalog.category.tree()]),c=[],u=(d,l)=>{c.push({...d,level:l});for(const p of d.children)u(p,l+1)};for(const d of s)u(d,0);const m=[...o.filter(d=>d.isActive).map(d=>({...d,type:"brand"})),...c].filter(d=>!!ln.slug(d,null,r,null));return{pageInfo:{hasNextPage:m.length-a>n,hasPreviousPage:a>0,startCursor:"0",endCursor:(Math.min(n,m.length-a)-1).toString(),totalCount:m.length},edges:m.slice(a,a+n).map((d,l)=>({node:d,cursor:(a+l).toString()}))}},shipping:async(e,{country:n,items:t,postalCode:r},i)=>{const{loaders:{simulationLoader:a},clients:{commerce:o}}=i,[s,c]=await Promise.all([a.load({country:n,items:t,postalCode:r}),o.checkout.address({postalCode:r,country:n})]);return{...s,address:c}},redirect:async(e,{term:n,selectedFacets:t},r)=>{if(!n&&(!t||!t.length))return null;const{redirect:i}=await r.clients.search.products({page:1,count:1,query:n??void 0,selectedFacets:t?.flatMap(_e)??[],allowRedirect:!0});return{url:i}},sellers:async(e,{postalCode:n,geoCoordinates:t,country:r,salesChannel:i},a)=>{const{clients:{commerce:o}}=a,c=(await o.checkout.region({postalCode:n,geoCoordinates:t,country:r,salesChannel:i}))?.[0],{id:u,sellers:g}=c;return{id:u,sellers:g}},profile:async(e,{id:n},t)=>{const{clients:{commerce:r}}=t,i=await r.profile.addresses(n);function a(s){return!s||Object.keys(s).length===0?[]:Object.values(s).map(c=>JSON.parse(c))}return{addresses:a(i)}},productCount:async(e,{term:n},t)=>{const{clients:{search:r}}=t;return await r.productCount({query:n??void 0})},userOrder:async(e,{orderId:n},t)=>{try{if(!n)throw new k("Missing orderId");const{clients:{commerce:r}}=t,i=await r.oms.userOrder({orderId:n});if(!i)throw new B(`No order found for id ${n}`);let a=null;try{const c=await r.oms.getCommercialAuthorizationsByOrderId({orderId:n});a=un(c)}catch{}const s=(await r.masterData.getShopperById({userId:i.purchaseAgentData?.purchaseAgents?.[0]?.userId??""})??[])[0]??{};return{orderId:i.orderId,creationDate:i.creationDate,totals:i.totals,items:i.items,shippingData:i.shippingData,paymentData:i.paymentData,customData:i.customData,status:i.status,statusDescription:i.statusDescription,allowCancellation:i.allowCancellation,storePreferencesData:i.storePreferencesData,clientProfileData:i.clientProfileData,canProcessOrderAuthorization:(i.status==="waiting-for-confirmation"||i.status==="waiting-for-authorization")&&!!a,ruleForAuthorization:a,shopper:{firstName:s?.firstName||"",lastName:s?.lastName||"",email:s?.email||"",phone:s?.phone||""},budgetData:i.budgetData??{budgets:[]}}}catch(r){const i=r.message;let a={};try{const s=JSON.parse(i);a=s.error||s}catch{a={message:i}}const o=a?.message||i;throw nn(r)?new B(`No order found for id ${n}. ${o}.`):en(r)?new K(`You are forbidden to interact with order with id ${n}. ${o}.`):r}},listUserOrders:async(e,n,t)=>{const{clients:{commerce:r}}=t,i=await r.oms.listUserOrders(n);return{list:i.list?.map(a=>({orderId:a.orderId,creationDate:a.creationDate,clientName:a.clientName,items:a.items,totalValue:a.totalValue,status:a.status,statusDescription:a.statusDescription,ShippingEstimatedDate:a.ShippingEstimatedDate,customFields:a.customFields,currencyCode:a.currencyCode})),paging:i.paging}},validateUser:async(e,n,t)=>({isValid:!0}),userDetails:async(e,n,t)=>{const{account:r,headers:i,clients:{commerce:a}}=t,s=te(ne(i?.cookie??"",r))?.userId??"",[c,u,g]=await Promise.all([a.session("").catch(()=>null),s?a.masterData.getShopperById({userId:s}).catch(()=>null):Promise.resolve(null),s?a.licenseManager.getUserRoles({userId:s}).catch(()=>null):Promise.resolve(null)]),m=u?.[0],d=c?.namespaces.authentication??null,l=`${(m?.firstName??"").trim()} ${(m?.lastName??"").trim()}`.trim();return{username:d?.storeUserEmail?.value??"",name:l,email:d?.storeUserEmail?.value??"",phone:m?.phone??"",role:g?.Roles?.map(p=>p.Name)??[],orgUnit:d?.unitName?.value??""}},accountProfile:async(e,n,t)=>{const{account:r,headers:i,clients:{commerce:a}}=t,o=te(ne(i?.cookie??"",r));if(!o?.userId)return null;if(o?.isRepresentative){const c=await a.session("").catch(()=>null);if(!c)return null;const u=c.namespaces.profile??null;return{name:((await a.masterData.getContractById({contractId:u?.id?.value??""}))?.corporateName??`${(u?.firstName?.value??"").trim()} ${(u?.lastName?.value??"").trim()}`.trim())||"",email:u?.email?.value||"",id:u?.id?.value||""}}const s=await a.licenseManager.getUserById({userId:o?.userId}).catch(()=>null);return{name:s?.name||"",email:s?.email||"",id:s?.id||""}},pickupPoints:async(e,{geoCoordinates:n},t)=>{const{clients:{commerce:r}}=t;return await r.checkout.pickupPoints({geoCoordinates:n})},orderEntryOperation:lr,orderFormItems:dr},mr={reviewRating:()=>({ratingValue:5,bestRating:5}),author:()=>({name:""})},hr=(e,n,t)=>n?e.key==="category-1":t?e.key==="brand":!1,fr={suggestions:async(e,n,t)=>{const{clients:{search:r}}=t,{searchArgs:i}=e;if(!i.query)return{terms:(await r.topSearches()).searches.map(m=>({value:m.term,count:m.count})),products:[]};const{productSearchPromise:a}=e,[o,s]=await Promise.all([r.suggestedTerms(i),a]),c=s.products.map(g=>{const m=Ce(g.items);return m&&$(m,g)}).filter(g=>!!g),{searches:u}=o;return{terms:u.map(g=>({value:g.term,count:g.count})),products:c}},products:async({productSearchPromise:e})=>{const n=await e,t=n.products.map(r=>{const i=Ce(r.items);return i&&$(i,r)}).filter(r=>!!r);return{pageInfo:{hasNextPage:n.pagination.after.length>0,hasPreviousPage:n.pagination.before.length>0,startCursor:"0",endCursor:n.recordsFiltered.toString(),totalCount:n.recordsFiltered},edges:t.map((r,i)=>({node:r,cursor:i.toString()}))}},facets:async({searchArgs:e},n,t)=>{const{clients:{search:r}}=t;t.storage.searchArgs=e;const{facets:i=[]}=await r.facets(e),a=!e.query,o=e.selectedFacets?.length?e.selectedFacets[0].key==="category-1":!1,s=e.selectedFacets?.length?e.selectedFacets[0].key==="brand":!1;return i.filter(u=>!a||!hr(u,o,s))},metadata:async({productSearchPromise:e})=>{const n=await e;return{isTermMisspelled:n.correction?.misspelled??!1,logicalOperator:n.operator,fuzzy:n.fuzzy}},searchId:async({productSearchPromise:e})=>(await e).searchId},Sr={title:({title:e})=>e??"",description:({description:e})=>e??"",canonical:({canonical:e})=>e??"",titleTemplate:()=>""},yr=["bd","d","h","m"],Ir=e=>yr.includes(e),vr={bd:{0:"Today",1:"In 1 business day",other:"Up to # business days"},d:{0:"Today",1:"In 1 day",other:"Up to # days"},h:{0:"Now",1:"In 1 hour",other:"Up to # hours"},m:{0:"Now",1:"In 1 minute",other:"Up to # minutes"}},bn=e=>{const[n,t]=[e.split(/\D+/)[0],e.split(/[0-9]+/)[1]],r=n!==""&&!Number.isNaN(Number(n)),i=Ir(t);if(!r||!i)return"";const a=Number(n)<2?Number(n):"other";return vr[t][a].replace("#",n)??""},Or={carrier:e=>e?.friendlyName??e?.name??"",price:e=>e?.price?e.price/100:e?.price,localizedEstimates:e=>e?.shippingEstimate?bn(e.shippingEstimate):""},$e="skuvariation";function ze(e,n){const t=`${$e}${n}`.toLowerCase(),r=e.find(a=>a.imageLabel===t);if(r)return r;const i=e.find(a=>a.imageLabel===$e);return i||e[0]}function Cr(e,n,t){const r={};return e.forEach(i=>{const a=i.variations;if(a.length===0)return;const o=`${n}-${a.find(c=>c.name===n)?.values[0]??""}`,s=a.reduce((c,u)=>u.name===n?c:c+`-${u.name}-${u.values[0]}`,o);r[s]=`${t}-${i.itemId}`}),r}function Ve(e){const n={};return e.forEach(t=>{n[t.name]=t.values[0]}),n}function br(e){const n={};return e?.forEach(t=>{n[t.field.originalName??t.field.name]=t.values.map(r=>r.originalName??r.name)}),n}function wr(e,n){return Number.isNaN(Number(e)-Number(n))?e<n?-1:e>n?1:0:Number(e)-Number(n)}function Dr(e){const n=e;for(const t in e)e[t].every(i=>!Number.isNaN(Number(i.value)))&&e[t].sort((i,a)=>wr(i.value,a.value));return n}function Ar(e,n,t){const r={},i=new Set;return e.forEach(a=>{if(a.variations.length===0)return;const o=a.variations.find(c=>c.name===n);if(!(o?.values[0]===t)){const c=`${n}-${o?.values[0]}`;if(!o||i.has(c))return;i.add(c);const u=ze(a.images,n),g={src:u.imageUrl,alt:u.imageLabel??"",label:`${n}: ${o.values[0]}`,value:o.values[0]};r[o.name]?r[o.name].push(g):r[o.name]=[g];return}a.variations.forEach(c=>{const u=`${c.name}-${c.values[0]}`;if(i.has(u))return;i.add(u);const g=ze(a.images,c.name),m={src:g.imageUrl,alt:g.imageText??"",label:`${c.name}: ${c.values[0]}`,value:c.values[0]};r[c.name]?r[c.name].push(m):r[c.name]=[m]})}),Dr(r)}const Pr={activeVariations:e=>Ve(e.variations),allVariantsByName:e=>br(e.isVariantOf.skuSpecifications),slugsMap:(e,n)=>Cr(e.isVariantOf.items,n.dominantVariantName??e.variations[0]?.name,e.isVariantOf.linkText),availableVariations:(e,n)=>{const t=n.dominantVariantName??e.variations[0]?.name,i=Ve(e.variations)[t];return Ar(e.isVariantOf.items,t,i)},allVariantProducts:e=>e.isVariantOf.items.map(n=>$(n,e.isVariantOf))},Er={"pickup-in-point":"Pickup",delivery:"Delivery",pickup:"Pickup","take-away":"Take away","":""},Tr={deliveryOptionsData:e=>{const{shippingData:n,items:t}=e,r=n?.logisticsInfo||[],i=n?.selectedAddresses||n?.availableAddresses||[n?.address],a=r.reduce((u,g)=>{const m=g?.selectedSla||"",d=g?.selectedDeliveryChannel||g?.deliveryChannel||"",l=g?.deliveryCompany||"",p=g?.deliveryWindow,f=g?.pickupStoreInfo,S=g?.shippingEstimate||"",v=g?.shippingEstimate?bn(g?.shippingEstimate):"",w=g?.shippingEstimateDate||"",P=g?.addressId||"",_=g?.itemIndex??0,O=t?.[_],E=O?.seller||"",h=`${m}|${d}|${l}|${E}|${S}|${w}|${P}|${p?.startDateUtc}|${p?.endDateUtc}`,C=i?.find(T=>T?.addressId===P),b=`${Er[d]||""} ${v} ${C?.neighborhood?`to ${C?.neighborhood}`:""}`.trim(),{taxPriceTagsTotal:D,taxPriceTags:y}=_r(O?.priceTags??[]),A=(O?.sellingPrice??0)*(O?.quantity??0)+(O?.tax??0)+(D??0);return u[h]||(u[h]={selectedSla:m,deliveryChannel:d,deliveryCompany:l,deliveryWindow:p,shippingEstimate:S,shippingEstimateDate:w,seller:E,friendlyShippingEstimate:v,friendlyDeliveryOptionName:b,address:C,pickupStoreInfo:f,quantityOfDifferentItems:0,total:0,items:[]}),u[h]&&(u[h].items?.push({id:O?.id||"",uniqueId:O?.uniqueId||"",name:O?.name||"",quantity:O?.quantity||0,price:O?.price||0,sellingPrice:O?.sellingPrice||0,imageUrl:O?.imageUrl||"",taxPriceTags:y??[],taxPriceTagsTotal:D??0,tax:O?.tax||0,total:A}),u[h].quantityOfDifferentItems=(u[h].quantityOfDifferentItems??0)+1,u[h].total=(u[h].total??0)+A),u},{}),o=Object.values(a),s=n?.contactInformation?.[0],c={name:`${s?.firstName??""} ${s?.lastName??""}`.trim()||o?.[0]?.address?.receiverName||"",email:s?.email||"",phone:s?.phone||""};return{deliveryOptions:o,contact:c}},customFields:e=>{const n=e?.customData?.customFields||[];return Object.values(n.reduce((t,r)=>{const i=r?.linkedEntity?.type||"",a=r?.linkedEntity?.id||"",o=`${i}|${a||""}`;return t[o]||(t[o]={type:i,id:a,fields:[]}),t[o].fields.push(...r?.fields||[]),t},{}))||[]}};function _r(e){const t=e.filter(i=>i?.name?.includes("TAX")),r=t.reduce((i,a)=>i+(a.rawValue?a.rawValue*100:0),0);return{taxPriceTags:t,taxPriceTagsTotal:r}}const Ur={StoreCollection:ln,StoreAggregateOffer:pt,StoreProduct:ar,StoreSeo:Sr,StoreFacet:Ot,StoreFacetBoolean:Ct,StoreFacetRange:bt,StoreFacetValueBoolean:wt,StoreOffer:Qt,StoreAggregateRating:gt,StoreReview:mr,StoreProductGroup:sr,StoreSearchResult:fr,StorePropertyValue:cr,SkuVariants:Pr,ShippingSLA:Or,UserOrderResult:Tr,ObjectOrString:Kt,Query:gr,Mutation:Xt},kr=()=>Ur,Fr=`"""
|
|
5
|
+
More info at: https://developers.vtex.com/vtex-rest-api/docs/customizable-fields-with-checkout-api`),r}},Vt=(n,e)=>{const r=n.customData?.customApps.find(a=>a.id==="faststore")?.fields?.cartEtag;return r==null?!0:Oe(n,e)!==r},qt=async(n,{clients:{commerce:e}})=>e.checkout.clearOrderFormMessages({id:n}),Bn=async(n,e,{clients:{commerce:t}})=>{if(!e)return n;const{updateShipping:r,addressChanged:i}=Se(n,e);if(r){const a=kt(n,e,i),s=a||Ut(e);return!!e.deliveryMode?.deliveryWindow&&await t.checkout.shippingData({id:n.orderFormId,index:n.items.length,deliveryMode:e.deliveryMode,selectedAddresses:s},!1),t.checkout.shippingData({id:n.orderFormId,index:n.items.length,deliveryMode:e.deliveryMode,selectedAddresses:s},!0)}return n},xt=(n,e)=>{if(!n)return"";const r=on.parse(n)[e];return r?r.split("=")[1]:""},jt=async(n,{cart:{order:e},session:t},r)=>{const i=xt(r.headers.cookie,"checkout.vtex.com"),{clients:{commerce:a},loaders:{skuLoader:c}}=r,s=t?.channel,l=t?.locale;s&&In(r,s),l&&On(r,l);const d=await a.checkout.orderForm({id:i||void 0,channel:r.storage.channel}),g=d.orderFormId;d.messages.length!==0&&await qt(g,r);const u=on.parse(r?.headers?.cookie??"")?.vtex_session,o=tn(u),{acceptedOffer:p,shouldSplitItem:m}=e;if(Vt(d,o)){const y=await Mn(d,a,o).then(Rn);if(g)return Ln(y,c,m)}const I=Nn(p),v=Nn(d.items.map(an)),w=Array.from(v.entries()),_=Array.from(I.entries()),{itemsToAdd:P,itemsToUpdate:b}=_.reduce((y,[A,T])=>{const F=v.get(A);if(!F)return T.forEach(z=>y.itemsToAdd.push(z)),y;const[U,...X]=F;if(Ie(d.items,U.itemOffered.sku)||ye(d.items,U.itemOffered.sku))return y.itemsToUpdate.push(U),y;const N=T.reduce((z,q)=>z+q.quantity,0);return y.itemsToUpdate.push({...U,quantity:N}),X.forEach(z=>y.itemsToUpdate.push({...z,quantity:0})),y},{itemsToAdd:[],itemsToUpdate:[]}),E=w.filter(([y])=>!I.has(y)).flatMap(([,y])=>y.map(A=>({...A,quantity:0}))),h=[...P,...b,...E].map($t),{updateShipping:O}=t?Se(d,t):{updateShipping:!1};if(h.length===0&&!O)return null;let C;h.length>0?C=await a.checkout.updateOrderFormItems({id:d.orderFormId,orderItems:h,shouldSplitItem:m}).then(y=>Bn(y,t,r)):C=await Bn(d,t,r),C=await Promise.resolve(C).then(y=>{if(t?.marketingData){const A={...y.marketingData,...t.marketingData};return a.checkout.marketingData({id:d.orderFormId,marketingData:A})}return y}).then(y=>l&&y.clientPreferencesData?.locale!==l?a.checkout.clientPreferencesData({id:y.orderFormId,clientPreferencesData:{...y.clientPreferencesData,locale:l}}):y).then(y=>Mn(y,a,o)).then(Rn);const D=Dn(d.messages,C.messages);return zt(e,C)&&D?null:Ln(C,c,m)};async function Wt(n,e,t){try{const r=await n.commerce.checkout.address({postalCode:t,country:e}),i=r.geoCoordinates?{latitude:r.geoCoordinates[1],longitude:r.geoCoordinates[0]}:null;return{city:r.city,geoCoordinates:i}}catch(r){throw console.error(`Error while getting geo coordinates for the current postal code (${t}) and country (${e}).
|
|
6
|
+
`),r}}const Gt=async(n,{session:e,search:t},{clients:r,headers:i,account:a})=>{const c=rn.parse(e.channel??""),s=String(e.postalCode??""),l=e.country??"";let d=e.city??null,g=e.geoCoordinates??null;if((!d||!g)&&s!==""&&l!==""){const U=await Wt(r,l,s);d=U.city,g=U.geoCoordinates}const o=new URLSearchParams(t);o.has("facets")&&o.delete("facets");const p=o.get("sc")??c.salesChannel;o.set("sc",p),s&&o.set("postalCode",s),l&&o.set("country",l),g&&o.set("geoCoordinates",`${g.longitude},${g.latitude}`),o.set("locale",e.locale);const{marketingData:m}=e,f={utmCampaign:o.get("utm_campaign")??m?.utmCampaign??"",utmMedium:o.get("utm_medium")??m?.utmMedium??"",utmSource:o.get("utm_source")??m?.utmSource??"",utmiCampaign:o.get("utmi_cp")??m?.utmiCampaign??"",utmiPage:o.get("utmi_p")??m?.utmiPage??"",utmiPart:o.get("utmi_pc")??m?.utmiPart??""},I=tn(en(i?.cookie??"",a));let v=!1;if(I)try{v=(await r.commerce.vtexid.validate())?.authStatus?.toLowerCase()==="success"}catch(U){console.warn("JWT validation failed:",U),v=!1}const w=v?I?.isRepresentative:!1,_=v?I?.customerId:void 0,P=v?I?.unitId:void 0,b=await r.commerce.session(o.toString()).catch(()=>null),E=b?.namespaces.profile??null,h=b?.namespaces.shopper??null,O=b?.namespaces.store??null,C=b?.namespaces.authentication??null,D=b?.namespaces.checkout??null,y=b?.namespaces.public??null;let A=null;if(w&&E?.id?.value)try{A=await r.commerce.masterData.getContractById({contractId:E.id.value})}catch{console.error(`Error while getting contract data for profile ID (${E.id.value}).
|
|
7
|
+
`)}let T;c.seller&&(s||g)&&(T=(await r.commerce.checkout.region({postalCode:s,geoCoordinates:g,country:l,salesChannel:p}))?.[0]?.sellers.find(N=>c.seller===N.id));const F={...e,currency:{code:O?.currencyCode?.value??e.currency.code,symbol:O?.currencySymbol?.value??e.currency.symbol},country:O?.countryCode?.value??l,channel:rn.stringify({salesChannel:O?.channel?.value??c.salesChannel,regionId:D?.regionId?.value??c.regionId,seller:T?.id,hasOnlyDefaultSalesChannel:!O?.channel?.value}),b2b:w?{isRepresentative:w??!1,customerId:C?.customerId?.value??_??"",unitName:C?.unitName?.value??"",unitId:C?.unitId?.value??P??"",firstName:typeof h?.firstName?.value=="string"?h.firstName.value:"",lastName:typeof h?.lastName?.value=="string"?h.lastName.value:"",userName:`${typeof h?.firstName?.value=="string"?h.firstName.value:""} ${typeof h?.lastName?.value=="string"?h.lastName.value:""}`.trim(),userEmail:C?.storeUserEmail.value??"",savedPostalCode:y?.postalCode?.value??"",contractName:A?.corporateName??"",organizationManager:h?.organizationManager?.value??!1}:null,marketingData:f,person:E?.id?{id:E.id?.value??"",email:E.email?.value??"",givenName:E.firstName?.value??"",familyName:E.lastName?.value??""}:null,geoCoordinates:g?.latitude&&g?.longitude&&g||null,city:d};return Dn(e,F)?null:F},Ht={validateCart:jt,validateSession:Gt,subscribeToNewsletter:Et,cancelOrder:Dt,processOrderAuthorization:At,uploadFileToOrderEntry:Tt,startOrderEntryOperation:Pt};var Cn;(function(n){n.NAME="Name",n.DOCUMENT="Document",n.OPERATION_DEFINITION="OperationDefinition",n.VARIABLE_DEFINITION="VariableDefinition",n.SELECTION_SET="SelectionSet",n.FIELD="Field",n.ARGUMENT="Argument",n.FRAGMENT_SPREAD="FragmentSpread",n.INLINE_FRAGMENT="InlineFragment",n.FRAGMENT_DEFINITION="FragmentDefinition",n.VARIABLE="Variable",n.INT="IntValue",n.FLOAT="FloatValue",n.STRING="StringValue",n.BOOLEAN="BooleanValue",n.NULL="NullValue",n.ENUM="EnumValue",n.LIST="ListValue",n.OBJECT="ObjectValue",n.OBJECT_FIELD="ObjectField",n.DIRECTIVE="Directive",n.NAMED_TYPE="NamedType",n.LIST_TYPE="ListType",n.NON_NULL_TYPE="NonNullType",n.SCHEMA_DEFINITION="SchemaDefinition",n.OPERATION_TYPE_DEFINITION="OperationTypeDefinition",n.SCALAR_TYPE_DEFINITION="ScalarTypeDefinition",n.OBJECT_TYPE_DEFINITION="ObjectTypeDefinition",n.FIELD_DEFINITION="FieldDefinition",n.INPUT_VALUE_DEFINITION="InputValueDefinition",n.INTERFACE_TYPE_DEFINITION="InterfaceTypeDefinition",n.UNION_TYPE_DEFINITION="UnionTypeDefinition",n.ENUM_TYPE_DEFINITION="EnumTypeDefinition",n.ENUM_VALUE_DEFINITION="EnumValueDefinition",n.INPUT_OBJECT_TYPE_DEFINITION="InputObjectTypeDefinition",n.DIRECTIVE_DEFINITION="DirectiveDefinition",n.SCHEMA_EXTENSION="SchemaExtension",n.SCALAR_TYPE_EXTENSION="ScalarTypeExtension",n.OBJECT_TYPE_EXTENSION="ObjectTypeExtension",n.INTERFACE_TYPE_EXTENSION="InterfaceTypeExtension",n.UNION_TYPE_EXTENSION="UnionTypeExtension",n.ENUM_TYPE_EXTENSION="EnumTypeExtension",n.INPUT_OBJECT_TYPE_EXTENSION="InputObjectTypeExtension"})(Cn||(Cn={}));const Xt=n=>typeof n=="string"?ve(n):null;function ve(n){try{return JSON.parse(n)}catch{return n}}const Yt=n=>typeof n=="object"?JSON.stringify(n):typeof n=="string"?n:null,Jt=new nn.GraphQLScalarType({name:"ObjectOrString",description:"A string or the string representation of an object (a stringified object).",parseValue:Xt,serialize:Yt,parseLiteral(n){return n.kind===Cn.STRING?ve(n.value):null}}),L=n=>"Price"in n&&"seller"in n&&"product"in n,R=n=>"skuName"in n,Kt={priceCurrency:async(n,e,t)=>{const{loaders:{salesChannelLoader:r},storage:{channel:i}}=t;return(await r.load(i.salesChannel)).CurrencyCode??""},priceValidUntil:n=>L(n)?n.PriceValidUntil??"":R(n)?n.priceValidUntil??"":null,itemCondition:()=>"https://schema.org/NewCondition",availability:async n=>L(n)?Pn(V(n)):R(n)?Pn(lt(n.availability)):null,seller:(n,e,t)=>L(n)?{identifier:t.storage.channel?.seller||n.seller.sellerId||""}:R(n)?{identifier:n.seller}:null,price:n=>L(n)?G(n):R(n)?n.sellingPrice/100:null,priceWithTaxes:n=>L(n)?x(G(n),n?.Tax,n.product.unitMultiplier):R(n)?x(n.sellingPrice/100,n.tax/100,n.unitMultiplier):null,sellingPrice:n=>L(n)?ct(n):R(n)?n.sellingPrice/100:null,listPrice:n=>L(n)?n.ListPrice??0:R(n)?n.listPrice/100:null,listPriceWithTaxes:n=>L(n)?x(n.ListPrice??0,n?.Tax,n.product.unitMultiplier):R(n)?x(n.listPrice/100,n.tax/100,n.unitMultiplier):null,itemOffered:n=>L(n)?n.product:R(n)?{...n.product,attachmentsValues:n.attachments}:null,quantity:n=>L(n)?n.AvailableQuantity??0:R(n)?n.quantity:null,isGift:n=>R(n)?n.isGift??!1:null},Qt=({linkText:n})=>`/${n}/p`,Zt=({offer:n,seller:e,product:t})=>({...n,product:t,seller:e}),nr={imageText:"image",imageUrl:"https://storecomponents.vtexassets.com/assets/faststore/images/image___117a6d3e229a96ad0e0d0876352566e2.svg",imageLabel:"label"},Ce=(n,e)=>`${n}-${e}`,er=(n,e)=>`/${Ce(n,e)}/p`,tr=n=>Array.isArray(n)&&n.length>0?n:null;function be(n){return n.replace(/^\/+|\/+$/g,"")}const rr=(n,e)=>{const t=n.findIndex(r=>be(r).split("/").at(-1)===e);return t<0?0:t},ir={productID:({itemId:n})=>n,name:({isVariantOf:n,name:e})=>e??n.productName,slug:({isVariantOf:{linkText:n},itemId:e})=>Ce(n,e),description:({isVariantOf:{description:n}})=>n,seo:({isVariantOf:n})=>({title:n.productTitle||n.productName,description:n.metaTagDescription||n.description,canonical:Qt(n)}),brand:({isVariantOf:{brand:n}})=>({name:n}),unitMultiplier:({unitMultiplier:n})=>n,breadcrumbList:({isVariantOf:{categories:n,productName:e,linkText:t,categoryId:r,categoriesIds:i},itemId:a})=>{const c=rr(i,r),s=n[c],l=be(s).split("/");return{itemListElement:[...l.map((d,g)=>{const u=`/${l.slice(0,g+1).map(le).join("/")}/`;return{name:d,item:u,position:g+1}}),{name:e,item:er(t,a),position:l.length+1}],numberOfItems:l.length}},image:({images:n},e)=>{const t=(tr(n)??[nr]).map(({imageUrl:s,imageText:l,imageLabel:d})=>({alternateName:l??"",url:s.replace("vteximg.com.br","vtexassets.com"),keywords:d}));if(typeof e!="object")return t;let{context:r,limit:i}=e;const a=r!=="generic";i=i||-1,i=i<=-1?void 0:i;let c=a?t.filter(({keywords:s})=>s===r):t;return c=c.length===0?t:c,c.slice(0,i)},sku:({itemId:n})=>n,gtin:({ean:n,referenceId:e})=>n||(e[0]?.Value??""),mpn:({isVariantOf:{manufacturerCode:n}})=>n??"",review:()=>[],aggregateRating:()=>({}),offers:n=>n.sellers.map(e=>Zt({offer:e.commertialOffer,seller:e,product:n})).sort(ce),isVariantOf:n=>n,additionalProperty:({variations:n=[],attachmentsValues:e=[],attributes:t=[]})=>{const r=n.flatMap(({name:c,values:s})=>s.map(l=>({name:c,value:l,valueReference:Q.specification}))),i=e.map(me),a=t.map(_t);return[...r,...i,...a]},hasSpecifications:({isVariantOf:n})=>!!n.skuSpecifications?.length,skuSpecifications:({isVariantOf:{skuSpecifications:n}})=>n??[],specificationGroups:({isVariantOf:{specificationGroups:n}})=>n,releaseDate:({isVariantOf:{releaseDate:n}})=>n??"",advertisement:({isVariantOf:{advertisement:n}})=>n,deliveryPromiseBadges:({isVariantOf:{deliveryPromisesBadges:n}})=>n},ar=new Set(["allSpecifications"]),or={hasVariant:n=>n.isVariantOf.items.map(e=>$(e,n.isVariantOf)),productGroupID:({isVariantOf:n})=>n.productId,name:n=>n.isVariantOf.productName,skuVariants:n=>n,additionalProperty:({isVariantOf:{specificationGroups:n}})=>n.filter(e=>!ar.has(e.name)).flatMap(({specifications:e})=>e.flatMap(({name:t,values:r})=>r.map(i=>({name:t,value:i,valueReference:Q.specification}))))},sr={propertyID:n=>n.propertyID||he(n),name:({name:n})=>n,value:({value:n})=>n,valueReference:({valueReference:n})=>n},cr=async(n,{operationId:e},{clients:{commerce:t}})=>{if(!e)throw new k("Missing operationId");return t.orderEntry.getOperation({operationId:e})},lr=async(n,{orderFormId:e},{clients:{commerce:t}})=>{if(!e)throw new k("Missing orderFormId");const{items:r}=await t.orderEntry.getOrderFormItems({orderFormId:e});return(r??[]).map(i=>({id:i.id,name:i.name,price:i.price,listPrice:i.listPrice,quantity:i.quantity,imageUrl:i.imageUrl??null,availability:i.availability,seller:i.seller,unitMultiplier:i.unitMultiplier??1}))},bn=n=>{const e=n.flatMap(r=>r.sellers.map(i=>({offer:i.commertialOffer,sku:r}))),t=yn(e,({offer:r},{offer:i})=>ce(r,i));return t?t.sku:n[0]},dr=n=>n!==""&&!Number.isNaN(Number(n)),ur={price_desc:"price:desc",price_asc:"price:asc",orders_desc:"orders:desc",name_desc:"name:desc",name_asc:"name:asc",release_desc:"release:desc",discount_desc:"discount:desc",score_desc:""},pr={product:async(n,{locator:e},t)=>{const r=Fn(e),i=kn(e),a=It(e),c=yt(e);r&&In(t,r),i&&On(t,i);const{loaders:{skuLoader:s},clients:{commerce:l,search:d}}=t;try{const g=a??c?.split("-").pop()??"";if(!dr(g))throw new Error("Invalid SkuId");const u=await s.load(g);if(c&&u.isVariantOf.linkText&&!c.startsWith(u.isVariantOf.linkText))throw new Error(`Slug was set but the fetched sku does not satisfy the slug condition. slug: ${c}, linkText: ${u.isVariantOf.linkText}`);return u}catch{if(c==null)throw new k("Missing slug or id");const u=await l.catalog.portal.pagetype(`${c}/p`);if(u.pageType!=="Product"||!u.id)throw new B(`No product found for slug ${c}`);const{products:[o]}=await d.products({page:0,count:1,query:`product:${u.id}`,hideUnavailableItems:!1});if(!o)throw new B(`No product found for id ${u.id}`);const p=bn(o.items);return $(p,o)}},collection:(n,{slug:e},t)=>{const{loaders:{collectionLoader:r}}=t;return r.load(e)},search:async(n,{first:e,after:t,sort:r,term:i,selectedFacets:a,sponsoredCount:c},s)=>{const l=Fn(a),d=kn(a),g=ft(a);l&&In(s,l),d&&On(s,d);let u=i;g&&(u=`product:${(await s.clients.commerce.catalog.products.crossselling({type:ue[g.key],productId:g.value})).map(I=>I.productId).slice(0,e).join(";")}`);const o=t?Number(t):0,p={page:Math.ceil(o/e)||0,count:e,query:u??void 0,sort:ur[r??"score_desc"],selectedFacets:a?.flatMap(_n)??[],sponsoredCount:c??void 0},m=s.clients.search.products(p);return{searchArgs:p,productSearchPromise:m}},allProducts:async(n,{first:e,after:t},r)=>{const{clients:{search:i}}=r,a=t?Number(t):0,c=await i.products({page:Math.ceil(a/e),count:e}),s=c.products.flatMap(l=>l.items.map(d=>$(d,l))).filter(l=>l.sellers.length>0);return{pageInfo:{hasNextPage:c.pagination.after.length>0,hasPreviousPage:c.pagination.before.length>0,startCursor:"0",endCursor:c.recordsFiltered.toString(),totalCount:c.recordsFiltered},edges:s.map((l,d)=>({node:l,cursor:(a+d).toString()}))}},products:async(n,{productIds:e},t)=>{const{clients:{search:r}}=t;if(!e.length)return[];const i=`id:${e.join(";")}`;return(await r.products({page:0,count:e.length,query:i})).products.flatMap(c=>c.items.map(s=>$(s,c))).filter(c=>e.includes(c.itemId)&&c.sellers.length>0)},allCollections:async(n,{first:e,after:t},r)=>{const{clients:{commerce:i}}=r,a=t?Number(t):0,[c,s]=await Promise.all([i.catalog.brand.list(),i.catalog.category.tree()]),l=[],d=(o,p)=>{l.push({...o,level:p});for(const m of o.children)d(m,p+1)};for(const o of s)d(o,0);const u=[...c.filter(o=>o.isActive).map(o=>({...o,type:"brand"})),...l].filter(o=>!!de.slug(o,null,r,null));return{pageInfo:{hasNextPage:u.length-a>e,hasPreviousPage:a>0,startCursor:"0",endCursor:(Math.min(e,u.length-a)-1).toString(),totalCount:u.length},edges:u.slice(a,a+e).map((o,p)=>({node:o,cursor:(a+p).toString()}))}},shipping:async(n,{country:e,items:t,postalCode:r},i)=>{const{loaders:{simulationLoader:a},clients:{commerce:c}}=i,[s,l]=await Promise.all([a.load({country:e,items:t,postalCode:r}),c.checkout.address({postalCode:r,country:e})]);return{...s,address:l}},redirect:async(n,{term:e,selectedFacets:t},r)=>{if(!e&&(!t||!t.length))return null;const{redirect:i}=await r.clients.search.products({page:1,count:1,query:e??void 0,selectedFacets:t?.flatMap(_n)??[],allowRedirect:!0});return{url:i}},sellers:async(n,{postalCode:e,geoCoordinates:t,country:r,salesChannel:i},a)=>{const{clients:{commerce:c}}=a,l=(await c.checkout.region({postalCode:e,geoCoordinates:t,country:r,salesChannel:i}))?.[0],{id:d,sellers:g}=l;return{id:d,sellers:g}},profile:async(n,{id:e},t)=>{const{clients:{commerce:r}}=t,i=await r.profile.addresses(e);function a(s){return!s||Object.keys(s).length===0?[]:Object.values(s).map(l=>JSON.parse(l))}return{addresses:a(i)}},productCount:async(n,{term:e},t)=>{const{clients:{search:r}}=t;return await r.productCount({query:e??void 0})},userOrder:async(n,{orderId:e},t)=>{try{if(!e)throw new k("Missing orderId");const{clients:{commerce:r}}=t,i=await r.oms.userOrder({orderId:e});if(!i)throw new B(`No order found for id ${e}`);let a=null;try{const l=await r.oms.getCommercialAuthorizationsByOrderId({orderId:e});a=pe(l)}catch{}const s=(await r.masterData.getShopperById({userId:i.purchaseAgentData?.purchaseAgents?.[0]?.userId??""})??[])[0]??{};return{orderId:i.orderId,creationDate:i.creationDate,totals:i.totals,items:i.items,shippingData:i.shippingData,paymentData:i.paymentData,customData:i.customData,status:i.status,statusDescription:i.statusDescription,allowCancellation:i.allowCancellation,storePreferencesData:i.storePreferencesData,clientProfileData:i.clientProfileData,canProcessOrderAuthorization:(i.status==="waiting-for-confirmation"||i.status==="waiting-for-authorization")&&!!a,ruleForAuthorization:a,shopper:{firstName:s?.firstName||"",lastName:s?.lastName||"",email:s?.email||"",phone:s?.phone||""},budgetData:i.budgetData??{budgets:[]}}}catch(r){const i=r.message;let a={};try{const s=JSON.parse(i);a=s.error||s}catch{a={message:i}}const c=a?.message||i;throw ee(r)?new B(`No order found for id ${e}. ${c}.`):ne(r)?new K(`You are forbidden to interact with order with id ${e}. ${c}.`):r}},listUserOrders:async(n,e,t)=>{const{clients:{commerce:r}}=t,i=await r.oms.listUserOrders(e);return{list:i.list?.map(a=>({orderId:a.orderId,creationDate:a.creationDate,clientName:a.clientName,items:a.items,totalValue:a.totalValue,status:a.status,statusDescription:a.statusDescription,ShippingEstimatedDate:a.ShippingEstimatedDate,customFields:a.customFields,currencyCode:a.currencyCode})),paging:i.paging}},validateUser:async(n,e,t)=>({isValid:!0}),userDetails:async(n,e,t)=>{const{account:r,headers:i,clients:{commerce:a}}=t,s=tn(en(i?.cookie??"",r))?.userId??"",[l,d,g]=await Promise.all([a.session("").catch(()=>null),s?a.masterData.getShopperById({userId:s}).catch(()=>null):Promise.resolve(null),s?a.licenseManager.getUserRoles({userId:s}).catch(()=>null):Promise.resolve(null)]),u=d?.[0],o=l?.namespaces.authentication??null,p=`${(u?.firstName??"").trim()} ${(u?.lastName??"").trim()}`.trim();return{username:o?.storeUserEmail?.value??"",name:p,email:o?.storeUserEmail?.value??"",phone:u?.phone??"",role:g?.Roles?.map(m=>m.Name)??[],orgUnit:o?.unitName?.value??""}},accountProfile:async(n,e,t)=>{const{account:r,headers:i,clients:{commerce:a}}=t,c=tn(en(i?.cookie??"",r));if(!c?.userId)return null;if(c?.isRepresentative){const l=await a.session("").catch(()=>null);if(!l)return null;const d=l.namespaces.profile??null;return{name:((await a.masterData.getContractById({contractId:d?.id?.value??""}))?.corporateName??`${(d?.firstName?.value??"").trim()} ${(d?.lastName?.value??"").trim()}`.trim())||"",email:d?.email?.value||"",id:d?.id?.value||""}}const s=await a.licenseManager.getUserById({userId:c?.userId}).catch(()=>null);return{name:s?.name||"",email:s?.email||"",id:s?.id||""}},pickupPoints:async(n,{geoCoordinates:e},t)=>{const{clients:{commerce:r}}=t;return await r.checkout.pickupPoints({geoCoordinates:e})},orderEntryOperation:cr,orderFormItems:lr},gr={reviewRating:()=>({ratingValue:5,bestRating:5}),author:()=>({name:""})},mr=(n,e,t)=>e?n.key==="category-1":t?n.key==="brand":!1,hr={suggestions:async(n,e,t)=>{const{clients:{search:r}}=t,{searchArgs:i}=n;if(!i.query)return{terms:(await r.topSearches()).searches.map(u=>({value:u.term,count:u.count})),products:[]};const{productSearchPromise:a}=n,[c,s]=await Promise.all([r.suggestedTerms(i),a]),l=s.products.map(g=>{const u=bn(g.items);return u&&$(u,g)}).filter(g=>!!g),{searches:d}=c;return{terms:d.map(g=>({value:g.term,count:g.count})),products:l}},products:async({productSearchPromise:n})=>{const e=await n,t=e.products.map(r=>{const i=bn(r.items);return i&&$(i,r)}).filter(r=>!!r);return{pageInfo:{hasNextPage:e.pagination.after.length>0,hasPreviousPage:e.pagination.before.length>0,startCursor:"0",endCursor:e.recordsFiltered.toString(),totalCount:e.recordsFiltered},edges:t.map((r,i)=>({node:r,cursor:i.toString()}))}},facets:async({searchArgs:n},e,t)=>{const{clients:{search:r}}=t;t.storage.searchArgs=n;const{facets:i=[]}=await r.facets(n),a=!n.query,c=n.selectedFacets?.length?n.selectedFacets[0].key==="category-1":!1,s=n.selectedFacets?.length?n.selectedFacets[0].key==="brand":!1;return i.filter(d=>!a||!mr(d,c,s))},metadata:async({productSearchPromise:n})=>{const e=await n;return{isTermMisspelled:e.correction?.misspelled??!1,logicalOperator:e.operator,fuzzy:e.fuzzy}},searchId:async({productSearchPromise:n})=>(await n).searchId},Sr={title:({title:n})=>n??"",description:({description:n})=>n??"",canonical:({canonical:n})=>n??"",titleTemplate:()=>""},fr=["bd","d","h","m"],yr=n=>fr.includes(n),Ir={bd:{0:"Today",1:"In 1 business day",other:"Up to # business days"},d:{0:"Today",1:"In 1 day",other:"Up to # days"},h:{0:"Now",1:"In 1 hour",other:"Up to # hours"},m:{0:"Now",1:"In 1 minute",other:"Up to # minutes"}},De=n=>{const[e,t]=[n.split(/\D+/)[0],n.split(/[0-9]+/)[1]],r=e!==""&&!Number.isNaN(Number(e)),i=yr(t);if(!r||!i)return"";const a=Number(e)<2?Number(e):"other";return Ir[t][a].replace("#",e)??""},Or={carrier:n=>n?.friendlyName??n?.name??"",price:n=>n?.price?n.price/100:n?.price,localizedEstimates:n=>n?.shippingEstimate?De(n.shippingEstimate):""},$n="skuvariation";function zn(n,e){const t=`${$n}${e}`.toLowerCase(),r=n.find(a=>a.imageLabel===t);if(r)return r;const i=n.find(a=>a.imageLabel===$n);return i||n[0]}function vr(n,e,t){const r={};return n.forEach(i=>{const a=i.variations;if(a.length===0)return;const c=`${e}-${a.find(l=>l.name===e)?.values[0]??""}`,s=a.reduce((l,d)=>d.name===e?l:l+`-${d.name}-${d.values[0]}`,c);r[s]=`${t}-${i.itemId}`}),r}function Vn(n){const e={};return n.forEach(t=>{e[t.name]=t.values[0]}),e}function Cr(n){const e={};return n?.forEach(t=>{e[t.field.originalName??t.field.name]=t.values.map(r=>r.originalName??r.name)}),e}function br(n,e){return Number.isNaN(Number(n)-Number(e))?n<e?-1:n>e?1:0:Number(n)-Number(e)}function Dr(n){const e=n;for(const t in n)n[t].every(i=>!Number.isNaN(Number(i.value)))&&n[t].sort((i,a)=>br(i.value,a.value));return e}function wr(n,e,t){const r={},i=new Set;return n.forEach(a=>{if(a.variations.length===0)return;const c=a.variations.find(l=>l.name===e);if(!(c?.values[0]===t)){const l=`${e}-${c?.values[0]}`;if(!c||i.has(l))return;i.add(l);const d=zn(a.images,e),g={src:d.imageUrl,alt:d.imageLabel??"",label:`${e}: ${c.values[0]}`,value:c.values[0]};r[c.name]?r[c.name].push(g):r[c.name]=[g];return}a.variations.forEach(l=>{const d=`${l.name}-${l.values[0]}`;if(i.has(d))return;i.add(d);const g=zn(a.images,l.name),u={src:g.imageUrl,alt:g.imageText??"",label:`${l.name}: ${l.values[0]}`,value:l.values[0]};r[l.name]?r[l.name].push(u):r[l.name]=[u]})}),Dr(r)}const Ar={activeVariations:n=>Vn(n.variations),allVariantsByName:n=>Cr(n.isVariantOf.skuSpecifications),slugsMap:(n,e)=>vr(n.isVariantOf.items,e.dominantVariantName??n.variations[0]?.name,n.isVariantOf.linkText),availableVariations:(n,e)=>{const t=e.dominantVariantName??n.variations[0]?.name,i=Vn(n.variations)[t];return wr(n.isVariantOf.items,t,i)},allVariantProducts:n=>n.isVariantOf.items.map(e=>$(e,n.isVariantOf))},Pr={"pickup-in-point":"Pickup",delivery:"Delivery",pickup:"Pickup","take-away":"Take away","":""},Er={deliveryOptionsData:n=>{const{shippingData:e,items:t}=n,r=e?.logisticsInfo||[],i=e?.selectedAddresses||e?.availableAddresses||[e?.address],a=r.reduce((d,g)=>{const u=g?.selectedSla||"",o=g?.selectedDeliveryChannel||g?.deliveryChannel||"",p=g?.deliveryCompany||"",m=g?.deliveryWindow,f=g?.pickupStoreInfo,I=g?.shippingEstimate||"",v=g?.shippingEstimate?De(g?.shippingEstimate):"",w=g?.shippingEstimateDate||"",_=g?.addressId||"",P=g?.itemIndex??0,b=t?.[P],E=b?.seller||"",h=`${u}|${o}|${p}|${E}|${I}|${w}|${_}|${m?.startDateUtc}|${m?.endDateUtc}`,O=i?.find(T=>T?.addressId===_),C=`${Pr[o]||""} ${v} ${O?.neighborhood?`to ${O?.neighborhood}`:""}`.trim(),{taxPriceTagsTotal:D,taxPriceTags:y}=Tr(b?.priceTags??[]),A=(b?.sellingPrice??0)*(b?.quantity??0)+(b?.tax??0)+(D??0);return d[h]||(d[h]={selectedSla:u,deliveryChannel:o,deliveryCompany:p,deliveryWindow:m,shippingEstimate:I,shippingEstimateDate:w,seller:E,friendlyShippingEstimate:v,friendlyDeliveryOptionName:C,address:O,pickupStoreInfo:f,quantityOfDifferentItems:0,total:0,items:[]}),d[h]&&(d[h].items?.push({id:b?.id||"",uniqueId:b?.uniqueId||"",name:b?.name||"",quantity:b?.quantity||0,price:b?.price||0,sellingPrice:b?.sellingPrice||0,imageUrl:b?.imageUrl||"",taxPriceTags:y??[],taxPriceTagsTotal:D??0,tax:b?.tax||0,total:A}),d[h].quantityOfDifferentItems=(d[h].quantityOfDifferentItems??0)+1,d[h].total=(d[h].total??0)+A),d},{}),c=Object.values(a),s=e?.contactInformation?.[0],l={name:`${s?.firstName??""} ${s?.lastName??""}`.trim()||c?.[0]?.address?.receiverName||"",email:s?.email||"",phone:s?.phone||""};return{deliveryOptions:c,contact:l}},customFields:n=>{const e=n?.customData?.customFields||[];return Object.values(e.reduce((t,r)=>{const i=r?.linkedEntity?.type||"",a=r?.linkedEntity?.id||"",c=`${i}|${a||""}`;return t[c]||(t[c]={type:i,id:a,fields:[]}),t[c].fields.push(...r?.fields||[]),t},{}))||[]}};function Tr(n){const t=n.filter(i=>i?.name?.includes("TAX")),r=t.reduce((i,a)=>i+(a.rawValue?a.rawValue*100:0),0);return{taxPriceTags:t,taxPriceTagsTotal:r}}const _r={StoreCollection:de,StoreAggregateOffer:ut,StoreProduct:ir,StoreSeo:Sr,StoreFacet:Ot,StoreFacetBoolean:vt,StoreFacetRange:Ct,StoreFacetValueBoolean:bt,StoreOffer:Kt,StoreAggregateRating:pt,StoreReview:gr,StoreProductGroup:or,StoreSearchResult:hr,StorePropertyValue:sr,SkuVariants:Ar,ShippingSLA:Or,UserOrderResult:Er,ObjectOrString:Jt,Query:pr,Mutation:Ht},Ur=()=>_r,kr=`"""
|
|
8
8
|
Address information.
|
|
9
9
|
"""
|
|
10
10
|
type Address {
|
|
@@ -49,7 +49,7 @@ type Address {
|
|
|
49
49
|
"""
|
|
50
50
|
geoCoordinates: [Float]
|
|
51
51
|
}
|
|
52
|
-
`,
|
|
52
|
+
`,Fr=`"""
|
|
53
53
|
Advertisement information about a specific product in a campaign
|
|
54
54
|
"""
|
|
55
55
|
type Advertisement {
|
|
@@ -74,7 +74,7 @@ type Advertisement {
|
|
|
74
74
|
"""
|
|
75
75
|
adResponseId: String!
|
|
76
76
|
}
|
|
77
|
-
`,
|
|
77
|
+
`,Nr=`"""
|
|
78
78
|
Aggregate offer information, for a given SKU that is available to be fulfilled by multiple sellers.
|
|
79
79
|
"""
|
|
80
80
|
type StoreAggregateOffer {
|
|
@@ -103,7 +103,7 @@ type StoreAggregateOffer {
|
|
|
103
103
|
"""
|
|
104
104
|
offers: [StoreOffer!]!
|
|
105
105
|
}
|
|
106
|
-
`,
|
|
106
|
+
`,Rr=`"""
|
|
107
107
|
Average rating, based on multiple ratings or reviews.
|
|
108
108
|
"""
|
|
109
109
|
type StoreAggregateRating {
|
|
@@ -116,7 +116,7 @@ type StoreAggregateRating {
|
|
|
116
116
|
"""
|
|
117
117
|
reviewCount: Int!
|
|
118
118
|
}
|
|
119
|
-
`,
|
|
119
|
+
`,Lr=`"""
|
|
120
120
|
information about the author of a product review or rating.
|
|
121
121
|
"""
|
|
122
122
|
type StoreAuthor {
|
|
@@ -125,7 +125,7 @@ type StoreAuthor {
|
|
|
125
125
|
"""
|
|
126
126
|
name: String!
|
|
127
127
|
}
|
|
128
|
-
`,
|
|
128
|
+
`,Mr=`"""
|
|
129
129
|
Brand of a given product.
|
|
130
130
|
"""
|
|
131
131
|
type StoreBrand {
|
|
@@ -134,7 +134,7 @@ type StoreBrand {
|
|
|
134
134
|
"""
|
|
135
135
|
name: String!
|
|
136
136
|
}
|
|
137
|
-
|
|
137
|
+
`,Br=`"""
|
|
138
138
|
Item of a list.
|
|
139
139
|
"""
|
|
140
140
|
type StoreListItem {
|
|
@@ -165,7 +165,7 @@ type StoreBreadcrumbList {
|
|
|
165
165
|
"""
|
|
166
166
|
numberOfItems: Int!
|
|
167
167
|
}
|
|
168
|
-
|
|
168
|
+
`,$r=`"""
|
|
169
169
|
Shopping cart message.
|
|
170
170
|
"""
|
|
171
171
|
type StoreCartMessage {
|
|
@@ -202,7 +202,7 @@ input IStoreCart {
|
|
|
202
202
|
"""
|
|
203
203
|
order: IStoreOrder!
|
|
204
204
|
}
|
|
205
|
-
`,
|
|
205
|
+
`,zr=`"""
|
|
206
206
|
Product collection type. Possible values are \`Department\`, \`Category\`, \`Brand\`, \`Cluster\`, \`SubCategory\` or \`Collection\`.
|
|
207
207
|
"""
|
|
208
208
|
enum StoreCollectionType {
|
|
@@ -285,7 +285,7 @@ type StoreCollection {
|
|
|
285
285
|
"""
|
|
286
286
|
type: StoreCollectionType!
|
|
287
287
|
}
|
|
288
|
-
`,
|
|
288
|
+
`,Vr=`"""
|
|
289
289
|
Delivery Promise badge.
|
|
290
290
|
"""
|
|
291
291
|
type DeliveryPromiseBadge {
|
|
@@ -294,7 +294,7 @@ type DeliveryPromiseBadge {
|
|
|
294
294
|
"""
|
|
295
295
|
typeName: String
|
|
296
296
|
}
|
|
297
|
-
`,
|
|
297
|
+
`,qr=`union StoreFacet = StoreFacetRange | StoreFacetBoolean
|
|
298
298
|
|
|
299
299
|
"""
|
|
300
300
|
Search facet range information.
|
|
@@ -371,7 +371,7 @@ type StoreFacetValueBoolean {
|
|
|
371
371
|
"""
|
|
372
372
|
quantity: Int
|
|
373
373
|
}
|
|
374
|
-
`,
|
|
374
|
+
`,xr=`"""
|
|
375
375
|
Image.
|
|
376
376
|
"""
|
|
377
377
|
type StoreImage {
|
|
@@ -398,7 +398,7 @@ input IStoreImage {
|
|
|
398
398
|
"""
|
|
399
399
|
alternateName: String!
|
|
400
400
|
}
|
|
401
|
-
`,
|
|
401
|
+
`,jr=`type Mutation {
|
|
402
402
|
"""
|
|
403
403
|
Checks for changes between the cart presented in the UI and the cart stored in the ecommerce platform. If changes are detected, it returns the cart stored on the platform. Otherwise, it returns \`null\`.
|
|
404
404
|
"""
|
|
@@ -436,7 +436,7 @@ input IStoreImage {
|
|
|
436
436
|
data: IOrderEntryOperation!
|
|
437
437
|
): StoreOrderEntryOperationResult @auth
|
|
438
438
|
}
|
|
439
|
-
`,
|
|
439
|
+
`,Wr=`"""
|
|
440
440
|
Newsletter information.
|
|
441
441
|
"""
|
|
442
442
|
type PersonNewsletter {
|
|
@@ -459,8 +459,8 @@ input IPersonNewsletter {
|
|
|
459
459
|
"""
|
|
460
460
|
email: String!
|
|
461
461
|
}
|
|
462
|
-
`,
|
|
463
|
-
`,
|
|
462
|
+
`,Gr=`scalar ObjectOrString
|
|
463
|
+
`,Hr=`"""
|
|
464
464
|
Offer information.
|
|
465
465
|
"""
|
|
466
466
|
type StoreOffer {
|
|
@@ -543,7 +543,7 @@ input IStoreOffer {
|
|
|
543
543
|
"""
|
|
544
544
|
quantity: Int!
|
|
545
545
|
}
|
|
546
|
-
`,
|
|
546
|
+
`,Xr=`"""
|
|
547
547
|
Information of a specific order.
|
|
548
548
|
"""
|
|
549
549
|
type StoreOrder {
|
|
@@ -578,7 +578,7 @@ input IStoreOrder {
|
|
|
578
578
|
"""
|
|
579
579
|
shouldSplitItem: Boolean
|
|
580
580
|
}
|
|
581
|
-
`,
|
|
581
|
+
`,Yr=`"""
|
|
582
582
|
Commercial Authorization response.
|
|
583
583
|
"""
|
|
584
584
|
type CommercialAuthorizationResponse {
|
|
@@ -977,7 +977,7 @@ type ProcessOrderAuthorizationRule {
|
|
|
977
977
|
"""
|
|
978
978
|
rule: CommercialAuthorizationRule!
|
|
979
979
|
}
|
|
980
|
-
`,
|
|
980
|
+
`,Jr=`"""
|
|
981
981
|
Input for uploading a file to the Order Entry Service.
|
|
982
982
|
The file is transmitted as a Base64-encoded string so it can travel
|
|
983
983
|
through the standard GraphQL JSON pipeline without multipart support.
|
|
@@ -1038,7 +1038,7 @@ type StoreOrderFormCartItem {
|
|
|
1038
1038
|
seller: String!
|
|
1039
1039
|
unitMultiplier: Float
|
|
1040
1040
|
}
|
|
1041
|
-
`,
|
|
1041
|
+
`,Kr=`"""
|
|
1042
1042
|
Organization.
|
|
1043
1043
|
"""
|
|
1044
1044
|
type StoreOrganization {
|
|
@@ -1057,7 +1057,7 @@ input IStoreOrganization {
|
|
|
1057
1057
|
"""
|
|
1058
1058
|
identifier: String!
|
|
1059
1059
|
}
|
|
1060
|
-
`,
|
|
1060
|
+
`,Qr=`"""
|
|
1061
1061
|
Whenever you make a query that allows for pagination, such as \`allProducts\` or \`allCollections\`, you can check \`StorePageInfo\` to learn more about the complete set of items and use it to paginate your queries.
|
|
1062
1062
|
"""
|
|
1063
1063
|
type StorePageInfo {
|
|
@@ -1082,7 +1082,7 @@ type StorePageInfo {
|
|
|
1082
1082
|
"""
|
|
1083
1083
|
totalCount: Int!
|
|
1084
1084
|
}
|
|
1085
|
-
`,
|
|
1085
|
+
`,Zr=`"""
|
|
1086
1086
|
Input type for setting a new password.
|
|
1087
1087
|
"""
|
|
1088
1088
|
input ISetPassword {
|
|
@@ -1168,7 +1168,7 @@ input IStorePerson {
|
|
|
1168
1168
|
"""
|
|
1169
1169
|
familyName: String!
|
|
1170
1170
|
}
|
|
1171
|
-
`,
|
|
1171
|
+
`,ei=`type PickupPointAddress {
|
|
1172
1172
|
"""
|
|
1173
1173
|
Address city.
|
|
1174
1174
|
"""
|
|
@@ -1247,7 +1247,7 @@ type PickupPoints {
|
|
|
1247
1247
|
"""
|
|
1248
1248
|
pickupPointsHash: String
|
|
1249
1249
|
}
|
|
1250
|
-
`,
|
|
1250
|
+
`,ti=`"""
|
|
1251
1251
|
Product information. Products are variants within product groups, equivalent to VTEX [SKUs](https://help.vtex.com/en/tutorial/what-is-an-sku--1K75s4RXAQyOuGUYKMM68u#). For example, you may have a **Shirt** product group with associated products such as **Blue shirt size L**, **Green shirt size XL** and so on.
|
|
1252
1252
|
"""
|
|
1253
1253
|
type StoreProduct {
|
|
@@ -1396,7 +1396,7 @@ input IStoreProduct {
|
|
|
1396
1396
|
"""
|
|
1397
1397
|
additionalProperty: [IStorePropertyValue!]
|
|
1398
1398
|
}
|
|
1399
|
-
`,
|
|
1399
|
+
`,ri=`"""
|
|
1400
1400
|
Product group information. Product groups are catalog entities that may contain variants. They are equivalent to VTEX [Products](https://help.vtex.com/en/tutorial/what-is-a-product--2zrB2gFCHyQokCKKE8kuAw#), whereas each variant is equivalent to a VTEX [SKU](https://help.vtex.com/en/tutorial/what-is-an-sku--1K75s4RXAQyOuGUYKMM68u#). For example, you may have a **Shirt** product group with associated products such as **Blue shirt size L**, **Green shirt size XL** and so on.
|
|
1401
1401
|
"""
|
|
1402
1402
|
type StoreProductGroup {
|
|
@@ -1423,7 +1423,7 @@ type StoreProductGroup {
|
|
|
1423
1423
|
"""
|
|
1424
1424
|
skuVariants: SkuVariants
|
|
1425
1425
|
}
|
|
1426
|
-
`,
|
|
1426
|
+
`,ii=`type Profile {
|
|
1427
1427
|
"""
|
|
1428
1428
|
Collection of user's address
|
|
1429
1429
|
"""
|
|
@@ -1484,7 +1484,7 @@ type ProfileAddress {
|
|
|
1484
1484
|
"""
|
|
1485
1485
|
geoCoordinate: [Float]
|
|
1486
1486
|
}
|
|
1487
|
-
`,
|
|
1487
|
+
`,ai=`"""
|
|
1488
1488
|
Properties that can be associated with products and products groups.
|
|
1489
1489
|
"""
|
|
1490
1490
|
type StorePropertyValue {
|
|
@@ -1524,7 +1524,7 @@ input IStorePropertyValue {
|
|
|
1524
1524
|
"""
|
|
1525
1525
|
valueReference: ObjectOrString!
|
|
1526
1526
|
}
|
|
1527
|
-
`,
|
|
1527
|
+
`,oi=`"""
|
|
1528
1528
|
Each product edge contains a \`node\`, with product information, and a \`cursor\`, that can be used as a reference for pagination.
|
|
1529
1529
|
"""
|
|
1530
1530
|
type StoreProductEdge {
|
|
@@ -2086,7 +2086,7 @@ type StoreAccountProfile {
|
|
|
2086
2086
|
email: String
|
|
2087
2087
|
id: String
|
|
2088
2088
|
}
|
|
2089
|
-
`,
|
|
2089
|
+
`,si=`"""
|
|
2090
2090
|
Information of a given review rating.
|
|
2091
2091
|
"""
|
|
2092
2092
|
type StoreReviewRating {
|
|
@@ -2113,7 +2113,7 @@ type StoreReview {
|
|
|
2113
2113
|
"""
|
|
2114
2114
|
author: StoreAuthor!
|
|
2115
2115
|
}
|
|
2116
|
-
`,
|
|
2116
|
+
`,ci=`"""
|
|
2117
2117
|
Search Engine Optimization (SEO) tags data.
|
|
2118
2118
|
"""
|
|
2119
2119
|
type StoreSeo {
|
|
@@ -2134,7 +2134,7 @@ type StoreSeo {
|
|
|
2134
2134
|
"""
|
|
2135
2135
|
canonical: String!
|
|
2136
2136
|
}
|
|
2137
|
-
`,
|
|
2137
|
+
`,li=`"""
|
|
2138
2138
|
Currency information.
|
|
2139
2139
|
"""
|
|
2140
2140
|
type StoreCurrency {
|
|
@@ -2409,7 +2409,7 @@ input IStoreSession {
|
|
|
2409
2409
|
"""
|
|
2410
2410
|
refreshAfter: String
|
|
2411
2411
|
}
|
|
2412
|
-
`,
|
|
2412
|
+
`,di=`"""
|
|
2413
2413
|
Shipping Simulation item input.
|
|
2414
2414
|
"""
|
|
2415
2415
|
input IShippingItem {
|
|
@@ -2740,7 +2740,7 @@ type MessageFields {
|
|
|
2740
2740
|
"""
|
|
2741
2741
|
skuName: String
|
|
2742
2742
|
}
|
|
2743
|
-
`,
|
|
2743
|
+
`,ui=`type SkuVariants {
|
|
2744
2744
|
"""
|
|
2745
2745
|
SKU property values for the current SKU.
|
|
2746
2746
|
"""
|
|
@@ -2835,7 +2835,7 @@ Example:
|
|
|
2835
2835
|
\`\`\`
|
|
2836
2836
|
"""
|
|
2837
2837
|
scalar FormattedVariants
|
|
2838
|
-
`,
|
|
2838
|
+
`,pi=`"""
|
|
2839
2839
|
Status used to indicate a message type. For instance, a shopping cart informative or error message.
|
|
2840
2840
|
"""
|
|
2841
2841
|
enum StoreStatus {
|
|
@@ -2843,7 +2843,7 @@ enum StoreStatus {
|
|
|
2843
2843
|
WARNING
|
|
2844
2844
|
ERROR
|
|
2845
2845
|
}
|
|
2846
|
-
`,
|
|
2846
|
+
`,gi=`scalar JSONObject
|
|
2847
2847
|
|
|
2848
2848
|
type UserOrder {
|
|
2849
2849
|
orderId: String
|
|
@@ -3667,4 +3667,4 @@ type UserOrderBudgetAllocationLinkedEntity {
|
|
|
3667
3667
|
type: String
|
|
3668
3668
|
id: String
|
|
3669
3669
|
}
|
|
3670
|
-
`,
|
|
3670
|
+
`,mi=Object.assign({"./address.graphql":kr,"./advertisement.graphql":Fr,"./aggregateOffer.graphql":Nr,"./aggregateRating.graphql":Rr,"./author.graphql":Lr,"./brand.graphql":Mr,"./breadcrumb.graphql":Br,"./cart.graphql":$r,"./collection.graphql":zr,"./deliveryPromisesBadge.graphql":Vr,"./facet.graphql":qr,"./image.graphql":xr,"./mutation.graphql":jr,"./newsletter.graphql":Wr,"./objectOrString.graphql":Gr,"./offer.graphql":Hr,"./order.graphql":Xr,"./orderCommercialAuthorizaton.graphql":Yr,"./orderEntry.graphql":Jr,"./organization.graphql":Kr,"./pageInfo.graphql":Qr,"./password.graphql":Zr,"./person.graphql":ni,"./pickupPoints.graphql":ei,"./product.graphql":ti,"./productGroup.graphql":ri,"./profile.graphql":ii,"./propertyValue.graphql":ai,"./query.graphql":oi,"./review.graphql":si,"./seo.graphql":ci,"./session.graphql":li,"./shipping.graphql":di,"./skuVariants.graphql":ui,"./status.graphql":pi,"./userOrder.graphql":gi}),hi=nn.print(Object.values(mi).map(n=>nn.parse(n)).reduce((n,e)=>qn.mergeTypeDefs([n,e],{sort:!0}))),we=hi,Si=async n=>M.OTELAPI.context.with(M.OTELAPI.propagation.extract(M.OTELAPI.context.active(),n.OTEL),()=>e=>(e.storage={channel:rn.parse(n.channel),flags:n.flags??{},locale:n.locale,cookies:new Map},e.clients=Ke(n,e),e.loaders=st(n,e),e.account=n.account,e.OTEL=n.OTEL,e.discoveryConfig=n.discoveryConfig,e));function fi(){const n=Ur(),e={};for(const[t,r]of Object.entries(n))e[t]=Object.fromEntries(Object.entries(r).map(([i,a])=>typeof a!="function"?[i,a]:[i,Le(a,`${t}(${i})`)]));return e}function yi(n){const t=Zn([Qn,Kn])(fi(),we);return n&&nn.isSchema(n)?xn.mergeSchemas({schemas:[t,n]}):t}exports.AuthDirective=Kn;exports.BadRequestError=k;exports.CacheControlDirective=Qn;exports.CommercialAuthorizationStatus=Wn;exports.FastStoreError=H;exports.ForbiddenError=K;exports.GraphqlVtexContextFactory=Si;exports.GraphqlVtexSchema=yi;exports.NotFoundError=B;exports.StoreCollectionType=Gn;exports.StoreFacetType=Hn;exports.StoreSort=Xn;exports.StoreStatus=Yn;exports.UnauthorizedError=J;exports.UserOrderInvoiceType=Jn;exports.isBadRequestError=Be;exports.isFastStoreError=Me;exports.isForbiddenError=ne;exports.isNotFoundError=ee;exports.isUnauthorizedError=$e;exports.stringifyCacheControl=Ne;exports.typeDefs=we;exports.withDirectives=Zn;
|