@faststore/api 4.3.0-dev.5 → 4.3.0-dev.6

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 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
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.5",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
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}.
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.4", Dn = {
83
+ }, cn = "@faststore/api", ln = "4.3.0-dev.5", Dn = {
84
84
  name: cn,
85
85
  version: ln
86
86
  }, Be = (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.5",
3
+ "version": "4.3.0-dev.6",
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.5"
61
+ "@faststore/diagnostics": "^4.3.0-dev.6"
62
62
  },
63
63
  "peerDependencies": {
64
64
  "graphql": "16.11.0",
65
- "@faststore/diagnostics": "4.3.0-dev.5"
65
+ "@faststore/diagnostics": "4.3.0-dev.6"
66
66
  },
67
67
  "publishConfig": {
68
68
  "access": "public"