@faststore/api 4.3.0-dev.2 → 4.3.0-dev.3

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 CHANGED
@@ -1,4 +1,4 @@
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.1",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
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.2",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
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.
3
3
  Make sure to add the following custom app to the orderForm:
4
4
  {"fields":["cartEtag"],"id":"faststore","major":1}.
package/dist/es/index.mjs CHANGED
@@ -80,7 +80,7 @@ const _e = () => function(e = {}) {
80
80
  resolvers: e
81
81
  })
82
82
  );
83
- }, cn = "@faststore/api", ln = "4.3.0-dev.1", Dn = {
83
+ }, cn = "@faststore/api", ln = "4.3.0-dev.2", Dn = {
84
84
  name: cn,
85
85
  version: ln
86
86
  }, Me = (n, e) => (t, r, i, a) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@faststore/api",
3
- "version": "4.3.0-dev.2",
3
+ "version": "4.3.0-dev.3",
4
4
  "license": "MIT",
5
5
  "main": "dist/cjs/index.js",
6
6
  "typings": "dist/src/index.d.ts",
@@ -58,11 +58,11 @@
58
58
  "vite": "7.1.5",
59
59
  "vite-plugin-dts": "4.5.4",
60
60
  "vitest": "^4.0.7",
61
- "@faststore/diagnostics": "^4.3.0-dev.2"
61
+ "@faststore/diagnostics": "^4.3.0-dev.3"
62
62
  },
63
63
  "peerDependencies": {
64
64
  "graphql": "16.11.0",
65
- "@faststore/diagnostics": "4.3.0-dev.2"
65
+ "@faststore/diagnostics": "4.3.0-dev.3"
66
66
  },
67
67
  "publishConfig": {
68
68
  "access": "public"