@faststore/api 4.10.2-dev.0 → 4.10.3-dev.0

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 In=require("@graphql-tools/merge"),vn=require("@graphql-tools/schema"),J=require("@graphql-tools/utils"),me=require("graphql"),V=require("@faststore/diagnostics"),St=require("isomorphic-unfetch"),se=require("cookie"),Ue=require("p-limit"),ye=require("dataloader"),yt=require("sanitize-html"),Re=require("fast-deep-equal"),It=require("node:crypto");var On=(e=>(e.Personal="personal",e.Shared="shared",e))(On||{}),Cn=(e=>(e.Accepted="accepted",e.Denied="denied",e.Pending="pending",e))(Cn||{}),bn=(e=>(e.Brand="Brand",e.Category="Category",e.Cluster="Cluster",e.Collection="Collection",e.Department="Department",e.SubCategory="SubCategory",e))(bn||{}),wn=(e=>(e.Boolean="BOOLEAN",e.Range="RANGE",e))(wn||{}),An=(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))(An||{}),Pn=(e=>(e.Error="ERROR",e.Info="INFO",e.Warning="WARNING",e))(Pn||{}),Dn=(e=>(e.Input="Input",e.Output="Output",e))(Dn||{});const vt=()=>function(n={}){const t=process.env.FS_DISCOVERY_APP_KEY??"",r=process.env.FS_DISCOVERY_APP_TOKEN??"";if(!t||!r)throw new Z("No authentication AppKey and AppToken passed.");return{...n,"X-VTEX-API-AppKey":t,"X-VTEX-API-AppToken":r}},En=async e=>{const{clients:{commerce:n}}=e;try{if((await n.vtexid.validate())?.authStatus?.toLowerCase()!=="success")throw new ie("Authentication required")}catch(t){const r=t.extensions?.status??t.status;throw r===401?new ie("Authentication required"):r===403?new Z("You are not allowed to access this resource"):new ie("Authentication required")}},Ot="auth",kn={typeDefs:"directive @auth on FIELD_DEFINITION",transformer:e=>J.mapSchema(e,{[J.MapperKind.OBJECT_FIELD]:n=>{if(J.getDirective(e,n,Ot)?.[0]){const r=n.resolve;n.resolve=async(i,a,o,s)=>(await En(o),r?.(i,a,o,s))}return n}})},Ct="cacheControl",bt=(e,n)=>{const{scope:t="private",sMaxAge:r=0,staleWhileRevalidate:i=0}=e;return`${n?"private":t}, s-maxage=${r}, stale-while-revalidate=${i}`},ze=(e,n)=>typeof e=="number"&&typeof n=="number"?e>n?n:e:typeof e=="number"?e:n,wt=(e,n)=>typeof e=="string"&&typeof n=="string"?e==="public"&&n==="public"?"public":"private":e||n,Tn={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,Ct)?.[0];if(t){const{sMaxAge:r,staleWhileRevalidate:i,scope:a}=t,o=n.resolve;n.resolve=(s,c,d,g)=>(d.cacheControl={sMaxAge:ze(d.cacheControl?.sMaxAge,r),staleWhileRevalidate:ze(d.cacheControl?.staleWhileRevalidate,i),scope:wt(d.cacheControl?.scope,a)},o?.(s,c,d,g))}return n}})},_n=e=>(n,t)=>{const r=In.mergeTypeDefs([...(e??[]).map(({typeDefs:i})=>i),t]);return(e??[]).reduce((i,{transformer:a})=>a?.(i)??i,vn.makeExecutableSchema({typeDefs:r,resolvers:n}))},Un="@faststore/api",Rn="4.10.1",Ve={name:Un,version:Rn},Ne=V.logger("@faststore/api"),At=(e,n="Unknown Graphql Resolver")=>(t,r,i,a)=>{if(!i?.OTEL_ENABLED)return e(t,r,i,a);const o=V.OTELAPI.trace.getTracer("Graphql").startSpan(n,{kind:V.OTELAPI.SpanKind.INTERNAL,attributes:{timestamp:Date.now(),"@faststore_version":Rn,"@faststore_package_name":Un,"@faststore_account_name":i.account,"@faststore_environment":process.env.NODE_ENV,"@faststore_resolver_parent_type":a?.parentType?.name,"@faststore_resolver_field_name":a?.fieldName}}),s=V.OTELAPI.trace.setSpan(V.OTELAPI.context.active(),o);try{const c=V.OTELAPI.context.with(s,()=>e(t,r,i,a));return c instanceof Promise?c.then(d=>(o.end(),d),d=>qe(d,o,n)):(o.end(),c)}catch(c){return qe(c,o,n)}};function qe(e,n,t){throw n.setStatus({code:V.OTELAPI.SpanStatusCode.ERROR}),n.recordException(e),n.end(),console.error(`Error at resolver: ${t}:
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const In=require("@graphql-tools/merge"),vn=require("@graphql-tools/schema"),J=require("@graphql-tools/utils"),me=require("graphql"),V=require("@faststore/diagnostics"),St=require("isomorphic-unfetch"),se=require("cookie"),Ue=require("p-limit"),ye=require("dataloader"),yt=require("sanitize-html"),Re=require("fast-deep-equal"),It=require("node:crypto");var On=(e=>(e.Personal="personal",e.Shared="shared",e))(On||{}),Cn=(e=>(e.Accepted="accepted",e.Denied="denied",e.Pending="pending",e))(Cn||{}),bn=(e=>(e.Brand="Brand",e.Category="Category",e.Cluster="Cluster",e.Collection="Collection",e.Department="Department",e.SubCategory="SubCategory",e))(bn||{}),wn=(e=>(e.Boolean="BOOLEAN",e.Range="RANGE",e))(wn||{}),An=(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))(An||{}),Pn=(e=>(e.Error="ERROR",e.Info="INFO",e.Warning="WARNING",e))(Pn||{}),Dn=(e=>(e.Input="Input",e.Output="Output",e))(Dn||{});const vt=()=>function(n={}){const t=process.env.FS_DISCOVERY_APP_KEY??"",r=process.env.FS_DISCOVERY_APP_TOKEN??"";if(!t||!r)throw new Z("No authentication AppKey and AppToken passed.");return{...n,"X-VTEX-API-AppKey":t,"X-VTEX-API-AppToken":r}},En=async e=>{const{clients:{commerce:n}}=e;try{if((await n.vtexid.validate())?.authStatus?.toLowerCase()!=="success")throw new ie("Authentication required")}catch(t){const r=t.extensions?.status??t.status;throw r===401?new ie("Authentication required"):r===403?new Z("You are not allowed to access this resource"):new ie("Authentication required")}},Ot="auth",kn={typeDefs:"directive @auth on FIELD_DEFINITION",transformer:e=>J.mapSchema(e,{[J.MapperKind.OBJECT_FIELD]:n=>{if(J.getDirective(e,n,Ot)?.[0]){const r=n.resolve;n.resolve=async(i,a,o,s)=>(await En(o),r?.(i,a,o,s))}return n}})},Ct="cacheControl",bt=(e,n)=>{const{scope:t="private",sMaxAge:r=0,staleWhileRevalidate:i=0}=e;return`${n?"private":t}, s-maxage=${r}, stale-while-revalidate=${i}`},ze=(e,n)=>typeof e=="number"&&typeof n=="number"?e>n?n:e:typeof e=="number"?e:n,wt=(e,n)=>typeof e=="string"&&typeof n=="string"?e==="public"&&n==="public"?"public":"private":e||n,Tn={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,Ct)?.[0];if(t){const{sMaxAge:r,staleWhileRevalidate:i,scope:a}=t,o=n.resolve;n.resolve=(s,c,d,g)=>(d.cacheControl={sMaxAge:ze(d.cacheControl?.sMaxAge,r),staleWhileRevalidate:ze(d.cacheControl?.staleWhileRevalidate,i),scope:wt(d.cacheControl?.scope,a)},o?.(s,c,d,g))}return n}})},_n=e=>(n,t)=>{const r=In.mergeTypeDefs([...(e??[]).map(({typeDefs:i})=>i),t]);return(e??[]).reduce((i,{transformer:a})=>a?.(i)??i,vn.makeExecutableSchema({typeDefs:r,resolvers:n}))},Un="@faststore/api",Rn="4.10.2",Ve={name:Un,version:Rn},Ne=V.logger("@faststore/api"),At=(e,n="Unknown Graphql Resolver")=>(t,r,i,a)=>{if(!i?.OTEL_ENABLED)return e(t,r,i,a);const o=V.OTELAPI.trace.getTracer("Graphql").startSpan(n,{kind:V.OTELAPI.SpanKind.INTERNAL,attributes:{timestamp:Date.now(),"@faststore_version":Rn,"@faststore_package_name":Un,"@faststore_account_name":i.account,"@faststore_environment":process.env.NODE_ENV,"@faststore_resolver_parent_type":a?.parentType?.name,"@faststore_resolver_field_name":a?.fieldName}}),s=V.OTELAPI.trace.setSpan(V.OTELAPI.context.active(),o);try{const c=V.OTELAPI.context.with(s,()=>e(t,r,i,a));return c instanceof Promise?c.then(d=>(o.end(),d),d=>qe(d,o,n)):(o.end(),c)}catch(c){return qe(c,o,n)}};function qe(e,n,t){throw n.setStatus({code:V.OTELAPI.SpanStatusCode.ERROR}),n.recordException(e),n.end(),console.error(`Error at resolver: ${t}:
2
2
  %o`,e),Ne("error",`Error at resolver: %s
3
3
  %o`,t,e),e}class j extends Error{constructor(n,t){super(t),this.extensions=n,this.name="FastStoreError"}}class k extends j{constructor(n){super({status:400,type:"BadRequestError"},n)}}class ie extends j{constructor(n){super({status:401,type:"UnauthorizedError"},n)}}class Z extends j{constructor(n){super({status:403,type:"ForbiddenError"},n)}}class L extends j{constructor(n){super({status:404,type:"NotFoundError"},n)}}const Pt=e=>e?.name==="FastStoreError",Dt=e=>e?.extensions?.type==="BadRequestError",Et=e=>e?.extensions?.type==="UnauthorizedError",Nn=e=>e?.extensions?.type==="ForbiddenError",x=e=>e?.extensions?.type==="NotFoundError",kt=`${Ve.name}@${Ve.version}`,Tt=/authorization|cookie|token|secret|api-?key|appkey/i,Fn="[redacted]",xe=e=>{if(!e)return;const n={},t=(r,i)=>{n[r]=Tt.test(r)?Fn:i};return Array.isArray(e)?e.forEach(([r,i])=>t(r,i)):typeof e.forEach=="function"?e.forEach((i,a)=>t(a,i)):Object.entries(e).forEach(([r,i])=>t(r,i)),n},y=async(e,n,t)=>{const r=await St(e,{...n,headers:{...n?.headers??{},"User-Agent":kt}});if(r.ok)return t?.storeCookies&&t.storeCookies(r.headers),r.status!==204?r.json():void 0;console.error(typeof e=="string"?e:e.url,n&&{...n,headers:xe(n.headers),body:n.body?Fn:void 0},{status:r.status,statusText:r.statusText,headers:xe(r.headers)});const i=await r.text();if(typeof r?.status=="number")switch(r.status){case 400:throw new k(i);case 401:throw new ie(i);case 403:throw new Z(i);case 404:throw new L(i);default:throw new j({status:r.status,type:"UnknownError"},i)}throw new Error(i)},_t=({account:e,environment:n})=>{const t=`https://${e}.${n}.com.br`;return{getLocalizedProduct:(r,i)=>y(`${t}/api/catalog-dataplane/product/${r}`,{method:"GET",headers:{"Accept-Language":i,"Content-Type":"application/json"}})}},Ln=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("; ")},Ut=/^([^=]+)=([^;]*)/,Rt=(e,n)=>{const t=n.match(Ut);if(t){const r=t[1],i=t[2];e.storage.cookies.set(r,{value:i,setCookie:n})}},Nt=(e,n)=>{n.getSetCookie().forEach(t=>Rt(e,t))},Ft=e=>n=>Nt(e,n),Oe=e=>{if(!e.headers?.cookie)return null;const n=Ln(e.headers.cookie),t=Array.from(e.storage.cookies.entries());return t.length===0?n:t.reduce((r,[i,{value:a}])=>Lt(r,i,a),n)},Bn=e=>function(t){const r=Oe(e);return r?{...t,cookie:r}:t},$=(e,n)=>{const t=Ln(e);return se.parse(t)[`VtexIdclientAutCookie_${n}`]||""},Lt=(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 Y(e){if(!e)return null;try{return JSON.parse(Buffer.from(e.split(".")[1],"base64").toString())}catch{return null}}const Bt="storefront/faststore.recommendation-shelf@v4",re={method:"POST",headers:{"content-type":"application/json"}},$t=100,le=new Set,Mt=e=>e.split("/").map(encodeURIComponent).join("/"),Ie=e=>e?{headers:{"Accept-Language":e}}:void 0,zt=/^\d{4}-\d{2}-\d{2}$/,Vt=new Set(["Draft","Requested","InReview","Reviewed","Approved","Declined","Expired","ConvertedToCart","ConvertedToOrder"]);function qt({page:e,perPage:n,status:t,createdAtFrom:r,createdAtTo:i,expiresAtFrom:a,expiresAtTo:o}){if(e!==void 0&&(!Number.isInteger(e)||e<1))throw new Error(`listUserQuotes: invalid page "${e}" — must be a positive integer`);if(n!==void 0&&(!Number.isInteger(n)||n<1))throw new Error(`listUserQuotes: invalid perPage "${n}" — must be a positive integer`);for(const[s,c]of[["createdAtFrom",r],["createdAtTo",i],["expiresAtFrom",a],["expiresAtTo",o]])if(c&&!zt.test(c))throw new Error(`listUserQuotes: invalid ${s} "${c}" — must be YYYY-MM-DD`);if(t&&t.length>0){const s=t.filter(c=>!Vt.has(c));if(s.length>0)throw new Error(`listUserQuotes: invalid status values: ${s.join(", ")}`)}}function xt({page:e,perPage:n,status:t,createdAtFrom:r,createdAtTo:i,expiresAtFrom:a,expiresAtTo:o,label:s}){const c=new URLSearchParams;return e&&c.append("pageNumber",e.toString()),n&&c.append("pageSize",n.toString()),t?.forEach(d=>c.append("status",d)),r&&c.append("createdAtFrom",r),i&&c.append("createdAtTo",i),a&&c.append("expiresAtFrom",a),o&&c.append("expiresAtTo",o),s?.trim()&&c.append("label",s.trim()),c}const jt=({account:e,environment:n,incrementAddress:t,subDomainPrefix:r},i)=>{const a=`https://${e}.${n}.com.br`,o=Ft(i),s=Bn(i),c=vt(),d=new Headers(i.headers).get("x-forwarded-host")??i.headers?.host??"",g=r&&r.map(l=>l+".").find(l=>d.includes(l))||"",u=d.replace(g,""),f=`${a}/api/recommend-bff/v2`,h=s({accept:"application/json","content-type":"application/json","x-vtex-rec-origin":`${e}/${Bt}`}),I=(l={})=>{const p=$(Oe(i)??"",e);return s({...l,"X-FORWARDED-HOST":u,...p?{[`VtexIdclientAutCookie_${e}`]:p}:{}})};return{catalog:{salesChannel:l=>y(`${a}/api/catalog_system/pub/saleschannel/${l}`,void 0,{storeCookies:o}),brand:{list:()=>y(`${a}/api/catalog_system/pub/brand/list`,void 0,{storeCookies:o})},category:{tree:(l=3)=>y(`${a}/api/catalog_system/pub/category/tree/${l}`,void 0,{storeCookies:o})},portal:{pagetype:l=>y(`${a}/api/catalog_system/pub/portal/pagetype/${l}`,void 0,{storeCookies:o})},byLinkId:{category:async(l,p)=>{try{return await y(`${a}/api/catalog_system/pub/category/by-linkid/${Mt(l)}`,Ie(p))}catch(m){if(x(m))return null;throw m}},brand:async(l,p)=>{try{return await y(`${a}/api/catalog_system/pub/brand/by-linkid/${encodeURIComponent(l)}`,Ie(p))}catch(m){if(x(m))return null;throw m}},collection:async(l,p)=>{try{return await y(`${a}/api/catalog_system/pub/collection/by-linkid/${encodeURIComponent(l)}`,Ie(p))}catch(m){if(x(m))return null;throw m}}},products:{crossselling:({type:l,productId:p,groupByProduct:m=!0})=>{const S=new URLSearchParams({sc:i.storage.channel.salesChannel,groupByProduct:m.toString()});return y(`${a}/api/catalog_system/pub/products/crossselling/${l}/${p}?${S}`,void 0,{storeCookies:o})}}},checkout:{simulation:(l,{salesChannel:p}=i.storage.channel)=>{const m=new URLSearchParams({sc:p}),S=s({"content-type":"application/json","X-FORWARDED-HOST":u});return y(`${a}/api/checkout/pub/orderForms/simulation?${m.toString()}`,{...re,headers:S,body:JSON.stringify(l)},{storeCookies:o})},shippingData:({id:l,index:p,deliveryMode:m,selectedAddresses:S},v)=>{const O=v?{startDateUtc:m?.deliveryWindow?.startDate,endDateUtc:m?.deliveryWindow?.endDate}:null,C={logisticsInfo:Array.from({length:p},(w,b)=>({itemIndex:b,selectedDeliveryChannel:m?.deliveryChannel||null,selectedSla:m?.deliveryMethod||null,deliveryWindow:O})),selectedAddresses:S,clearAddressIfPostalCodeNotFound:t},_=s({"content-type":"application/json","X-FORWARDED-HOST":u});return y(`${a}/api/checkout/pub/orderForm/${l}/attachments/shippingData`,{...re,headers:_,body:JSON.stringify(C)},{storeCookies:o})},marketingData:({id:l,marketingData:p})=>{const m=s({"content-type":"application/json","X-FORWARDED-HOST":u});return y(`${a}/api/checkout/pub/orderForm/${l}/attachments/marketingData`,{headers:m,body:JSON.stringify(p),method:"POST"},{storeCookies:o})},clientPreferencesData:({id:l,clientPreferencesData:p})=>{const m=s({"content-type":"application/json","X-FORWARDED-HOST":u});return y(`${a}/api/checkout/pub/orderForm/${l}/attachments/clientPreferencesData`,{headers:m,body:JSON.stringify(p),method:"POST"},{storeCookies:o})},orderForm:({id:l,refreshOutdatedData:p=!0,channel:m=i.storage.channel,preserveSalesChannel:S=!1})=>{const{salesChannel:v}=m,O=s({"content-type":"application/json","X-FORWARDED-HOST":u}),C=new URLSearchParams;(!S||!l)&&C.set("sc",v),l&&C.set("refreshOutdatedData",p.toString());const _=l?`/${l}`:"",w=`${a}/api/checkout/pub/orderForm${_}?${C}`;return y(w,{...re,headers:O,...l?{}:{body:"{}"}},{storeCookies:o})},clearOrderFormMessages:({id:l})=>{const p=s({"content-type":"application/json","X-FORWARDED-HOST":u});return y(`${a}/api/checkout/pub/orderForm/${l}/messages/clear`,{...re,headers:p,body:"{}"})},updateOrderFormItems:({id:l,orderItems:p,allowOutdatedData:m="paymentData",salesChannel:S=i.storage.channel.salesChannel,shouldSplitItem:v=!0})=>{const O=new URLSearchParams({allowOutdatedData:m,sc:S}),C=s({"content-type":"application/json","X-FORWARDED-HOST":u});return y(`${a}/api/checkout/pub/orderForm/${l}/items?${O}`,{headers:C,body:JSON.stringify({orderItems:p,noSplitItem:!v}),method:"PATCH"},{storeCookies:o})},setCustomData:({id:l,appId:p,key:m,value:S})=>{const v=s({"content-type":"application/json","X-FORWARDED-HOST":u});return y(`${a}/api/checkout/pub/orderForm/${l}/customData/${p}/${m}`,{headers:v,body:JSON.stringify({value:S}),method:"PUT"})},region:async({postalCode:l,geoCoordinates:p,country:m,salesChannel:S})=>{const v=new URLSearchParams({country:m,sc:S??""});l?v.append("postalCode",l):v.append("geoCoordinates",`${p?.longitude};${p?.latitude}`);const O=`${a}/api/checkout/pub/regions/?${v.toString()}`,C=s({"content-type":"application/json","X-FORWARDED-HOST":u});return y(O,{headers:C},{storeCookies:o})},address:async({postalCode:l,country:p})=>{const m=s({"content-type":"application/json","X-FORWARDED-HOST":u});return y(`${a}/api/checkout/pub/postal-code/${p}/${l}`,{headers:m},{storeCookies:o})},cancelOrder:({orderId:l,customerEmail:p,reason:m})=>{const S=s({"content-type":"application/json","X-FORWARDED-HOST":u});return y(`${a}/api/checkout/pub/orders/${l}/user-cancel-request`,{method:"POST",headers:S,body:JSON.stringify({customerEmail:p,reason:m})},{})}},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,shopper.availableContracts,shopper.activeContractId,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"}),S=se.parse(i?.headers?.cookie??"")?.vtex_session;return y(`${a}/api/sessions?${p.toString()}`,{method:S?"PATCH":"POST",headers:m,body:"{}"},{storeCookies:o})},storeFront:{attachedContracts:l=>{const p=s({"content-type":"application/json"});return y(`https://${e}.myvtex.com/_v/store-front/units/${encodeURIComponent(l)}/contracts/attached?details=true`,{headers:p},{storeCookies:o})}},subscribeToNewsletter:({name:l,email:p})=>{const m=JSON.stringify({...l?{name:l}:{},email:p,isNewsletterOptIn:!0}),S=process.env.FS_NEWSLETTER_APP_KEY,v=process.env.FS_NEWSLETTER_APP_TOKEN;if(S&&v)return y(`${a}/api/dataentities/NL/documents`,{method:"POST",headers:{"content-type":"application/json",accept:"application/json","X-VTEX-API-AppKey":S,"X-VTEX-API-AppToken":v},body:m});if(!le.has(e)){le.size>=$t&&le.clear(),le.add(e);const O=[!S&&"FS_NEWSLETTER_APP_KEY",!v&&"FS_NEWSLETTER_APP_TOKEN"].filter(Boolean),C=`[subscribeToNewsletter] ${O.join(" and ")} ${O.length>1?"are":"is"} not set. Falling back to an anonymous Master Data request, which requires public fields in the NL entity. Configure both credentials and make the NL fields private.`;console.warn(C),Ne("warn","%s",C)}return y(`${a}/api/dataentities/NL/documents/`,{...re,body:m,method:"PATCH"},{storeCookies:o})},profile:{addresses:async l=>{const p=s({"content-type":"application/json","X-FORWARDED-HOST":u});return y(`${a}/api/profile-system/pvt/profiles/${l}/addresses`,{headers:p},{storeCookies:o})}},oms:{userOrder:({orderId:l})=>{const p=s({"content-type":"application/json","X-FORWARDED-HOST":u});return y(`${a}/api/oms/user/orders/${l}`,{method:"GET",headers:p},{storeCookies:o})},listUserOrders:({page:l,status:p,dateInitial:m,dateFinal:S,text:v,clientEmail:O,perPage:C,pendingMyApproval:_})=>{const w=new URLSearchParams;if(m){const A=new Date(m).setHours(0,0,0,0);m=new Date(A).toISOString()}if(S){const A=new Date(S).setHours(23,59,59,999);S=new Date(A).toISOString()}v&&w.append("text",v),p&&p.length>0&&w.append("status",p.filter(Boolean).join(",")),m&&S?w.append("creation_date",`creationDate:[${m} TO ${S}]`):m?w.append("creation_date",`creationDate:[${m} TO *]`):S&&w.append("creation_date",`creationDate:[* TO ${S}]`),O&&w.append("clientEmail",O),l&&w.append("page",l.toString()),C&&w.append("per_page",C.toString()),_&&w.append("my_pending_approvals",String(!0));const b=s({"content-type":"application/json","X-FORWARDED-HOST":u});return y(`${a}/api/oms/user/orders?${w.toString()}`,{method:"GET",headers:b},{storeCookies:o})},getCommercialAuthorizationsByOrderId:({orderId:l})=>{const p=s({"content-type":"application/json","X-FORWARDED-HOST":u});return y(`${a}/${e}/commercial-authorizations/order/${l}`,{method:"GET",headers:p},{storeCookies:o})},processOrderAuthorization:async({orderAuthorizationId:l,dimensionId:p,ruleId:m,approved:S})=>{const v=s({"content-type":"application/json","X-FORWARDED-HOST":u}),_={params:{ruleId:m,dimensionId:p,score:S?100:0}};return y(`${a}/${e}/commercial-authorizations/${l}/callback`,{method:"POST",headers:v,body:JSON.stringify(_)},{storeCookies:o})}},savedCards:{listCreditCards:()=>{const l=s({"content-type":"application/json","X-FORWARDED-HOST":u});return y(`${a}/api/saved-cards/credit-card?an=${e}`,{method:"GET",headers:l},{storeCookies:o})}},units:{getUnitByUserId:({userId:l})=>{const p=s({"content-type":"application/json","X-FORWARDED-HOST":u});return y(`${a}/api/units/v1/${l}/unit`,{method:"GET",headers:p},{})},getOrgUnitById:({orgUnitId:l})=>{const p=s({"content-type":"application/json","X-FORWARDED-HOST":u});return y(`${a}/api/units/v1/${l}`,{method:"GET",headers:p},{})},getScopesByOrgUnit:({orgUnitId:l})=>{const p=s({"content-type":"application/json","X-FORWARDED-HOST":u});return y(`${a}/api/units/v1/${l}/scopes`,{method:"GET",headers:p},{})}},licenseManager:{getUserById:({userId:l})=>{const p=s({"content-type":"application/json","X-FORWARDED-HOST":u});return y(`${a}/api/license-manager/users/${l}`,{method:"GET",headers:p},{})},getUserByEmail:({email:l})=>{const p=s({"content-type":"application/json","X-FORWARDED-HOST":u});return y(`${a}/api/license-manager/pvt/users/${l}`,{method:"GET",headers:p},{})},getUserRoles:({userId:l})=>{const p=s({"content-type":"application/json","X-FORWARDED-HOST":u});return y(`${a}/api/license-manager/storefront/users/${l}/roles`,{method:"GET",headers:p},{})},isResourceGranted:({userId:l,resourceKey:p})=>{const m=s({"content-type":"application/json","X-FORWARDED-HOST":u});return y(`${a}/api/license-manager/storefront/bff/users/${l}/resources/${p}/granted?an=${e}`,{method:"GET",headers:m},{})}},masterData:{getContractById:({contractId:l})=>{if(!l)throw new k("Missing contractId to fetch CL fields.");const p=I({Accept:"application/json","content-type":"application/json"});return y(`${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=c({Accept:"application/json","content-type":"application/json","X-FORWARDED-HOST":u}),m=l.replace(/-/g,"");return y(`${a}/api/dataentities/shopper/search?_where=(userId=${m} OR userId=${l})&_fields=_all&_schema=v1`,{method:"GET",headers:p},{})}},quotes:{listUserQuotes:l=>{qt(l);const p=xt(l),m=s({"content-type":"application/json","X-FORWARDED-HOST":u});return y(`${a}/api/quoting/quotes?${p.toString()}`,{method:"GET",headers:m},{storeCookies:o})}},vtexid:{validate:()=>{const l=s({"content-type":"application/json","X-FORWARDED-HOST":u}),p=$(Oe(i)??"",e);return y(`${a}/api/vtexid/credential/validate`,{headers:l,body:JSON.stringify({token:p}),method:"POST"},{storeCookies:o})}},orderEntry:{uploadFile:({fileBuffer:l,fileName:p,mimeType:m})=>{const S=s({"content-type":"application/json","X-FORWARDED-HOST":u}),v=`----FastStoreUploadBoundary${Date.now()}`,O=`\r
4
4
  `,_=/^[a-zA-Z0-9][a-zA-Z0-9!#$&\-.^_]*\/[a-zA-Z0-9][a-zA-Z0-9!#$&\-.^_+]*$/.test(m)?m:"application/octet-stream",w=p.replaceAll(/[\r\n"]/g,"_"),b=[`--${v}`,`Content-Disposition: form-data; name="file"; filename="${w}"`,`Content-Type: ${_}`,"",""].join(O),A=`${O}--${v}--${O}`,E=Buffer.from(b),T=Buffer.from(A),D=new Uint8Array(E.byteLength+l.byteLength+T.byteLength);let U=0;return D.set(E,U),U+=E.byteLength,D.set(l,U),U+=l.byteLength,D.set(T,U),y(`${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:m})=>{const S=s({"content-type":"application/json","X-FORWARDED-HOST":u}),v=JSON.stringify({objectKey:l,orderFormId:p,operation:"CreateCart",...m?{sessionToken:m}:{}});return y(`${a}/api/order-entry/operation?an=${e}`,{method:"POST",headers:S,body:v},{})},getOperation:({operationId:l})=>{const p=s({"content-type":"application/json","X-FORWARDED-HOST":u});return y(`${a}/api/order-entry/operation/${l}?an=${e}`,{method:"GET",headers:p},{})},createOrderForm:()=>{const l=s({"content-type":"application/json","X-FORWARDED-HOST":u});return y(`${a}/api/checkout/pub/orderForm?sc=${i.storage.channel.salesChannel}`,{method:"POST",headers:l,body:"{}"},{})},getOrderFormItems:({orderFormId:l})=>{const p=s({"content-type":"application/json","X-FORWARDED-HOST":u});return y(`${a}/api/checkout/pub/orderForm/${l}`,{method:"GET",headers:p},{})}},recommendation:{recommendations:({campaignVrn:l,userId:p,products:m=[],salesChannel:S,locale:v})=>{const O=new URLSearchParams({an:e,campaignVrn:l});return p&&O.append("userId",p),m.length>0&&O.append("products",m.join(",")),S&&O.append("salesChannel",S),v&&O.append("locale",v),y(`${f}/recommendations?${O.toString()}`,{headers:h},{storeCookies:o})},startRecommendationSession:()=>{const l=new URLSearchParams({an:e});return y(`${f}/users/start-session?${l.toString()}`,{method:"POST",headers:h},{storeCookies:o})}}}},oe=e=>e.discoveryConfig?.localization??{},Q=e=>oe(e).enabled===!0,Wt=e=>Object.keys(oe(e).locales??{}),Ht=e=>oe(e).defaultLocale,$n=e=>Q(e)&&e.storage.locale||void 0,Ce="fuzzy",be="operator",we="pickupPoint",je="shipping",We="delivery-options",Gt="in-stock",Xt="trade-policy",Yt="region-id",Kt=new Set([Xt,Yt,Ce,be,we]),Jt=new Set(["zip-code","pickupPoint","country","coordinates","deliveryZonesHash","pickupPointsHash"]),He=e=>encodeURI(decodeURI(e)),Qt=e=>encodeURIComponent(decodeURIComponent(e).normalize("NFD").replaceAll(/[\u0300-\u036f]/g,"")),Zt=/^pickup-in-point-(.+)$/;function Fe(e){if(!e)return{};try{const t=se.parse(e).vtex_segment;if(!t)return{};const r=Buffer.from(t,"base64").toString("utf-8");return JSON.parse(r)}catch{return{}}}function er(e){const n={},t=[];for(const r of e.split(";")){const i=r.indexOf("=");if(i<0)continue;const a=r.slice(0,i),o=r.slice(i+1);!a||!o||(Jt.has(a)?n[a]=o:t.push({key:a,value:o}))}return{shipping:n,extraFacets:t}}function Mn(e){const n=typeof e.facets=="string"?e.facets:"",{shipping:t,extraFacets:r}=er(n);return{segmentParams:{sc:e.channel,regionId:e.regionId,country:e.countryCode??t.country,locale:e.cultureInfo,"zip-code":t["zip-code"],coordinates:t.coordinates,pickupPoint:t.pickupPoint,deliveryZonesHash:t.deliveryZonesHash,pickupPointHash:t.pickupPointsHash,utmSource:e.utm_source??void 0,utmCampaign:e.utm_campaign??void 0,utmiCampaign:e.utmi_campaign??void 0,campaigns:typeof e.campaigns=="string"?e.campaigns:void 0,priceTables:e.priceTables??void 0},extraFacets:r}}function nr(e){return Mn(e).extraFacets}function zn(e,n){const t=[["sc",n.sc],["regionId",n.regionId],["country",n.country],["locale",n.locale],["zip-code",n["zip-code"]],["coordinates",n.coordinates],["pickupPoint",n.pickupPoint],["deliveryZonesHash",n.deliveryZonesHash],["pickupPointHash",n.pickupPointHash],["utmSource",n.utmSource],["utmCampaign",n.utmCampaign],["utmiCampaign",n.utmiCampaign],["campaigns",n.campaigns],["priceTables",n.priceTables]];for(const[r,i]of t)i!=null&&i!==""&&e.append(r,String(i))}function Vn(e){return Zt.exec(e)?.[1]}function tr(e){const n=e.find(r=>r.key==="shipping"),t=n?Vn(n.value):void 0;if(t!==void 0)try{return decodeURIComponent(t)}catch{return t}}function rr(e,n){const t=tr(n);return t===void 0?e:{...e,pickupPoint:t}}function ir(e){return e.map(n=>n.key!=="shipping"||Vn(n.value)===void 0?n:{...n,value:"pickup-in-point"})}function ar(e,n){let t=[...e];const r=t.some(i=>i.key==="shipping");for(const i of n)(!r||i.key!=="shipping")&&t.push(i);return t.some(i=>i.key==="shipping"&&i.value==="ignore")&&(t=t.filter(i=>i.key!=="shipping")),ir(t)}function qn(e){return e.reduce((n,t)=>{let{key:r,value:i}=t;return r==="priceRange"&&(r="price",i=i.replace(" TO ",":")),r==="ft"?n:`${n}${He(r)}/${Qt(He(i)).replaceAll(/ |%20/g,"-")}/`},"")}const or=e=>e.key==="fuzzy"&&(e.value==="0"||e.value==="1"||e.value==="auto"),sr=e=>e.key==="operator"&&(e.value==="and"||e.value==="or");function cr(e,n){const{segmentParams:t,extraFacets:r}=Mn(e??{}),i=n?.salesChannel??t.sc,a=n?.regionId??t.regionId,o=n?.locale??t.locale??"";return{segmentParams:{...t,...i?{sc:i}:{},...a?{regionId:a}:{},locale:o},extraFacets:r}}function lr(e,n){const t=e.filter(({key:c})=>!Kt.has(c)),r=e.find(({key:c,value:d})=>c===je&&d!=="all-delivery-methods")??null,i=e.find(({key:c,value:d})=>c===We&&d!=="all-delivery-options")??null,a=[...t],o=a.some(({key:c})=>c===je),s=a.some(({key:c})=>c===We);return r!==null&&!o&&a.push(r),i!==null&&!s&&a.push(i),ar(a,n)}function dr(e,n){const t=e.find(({key:a})=>a===Ce)??null,r=e.find(({key:a})=>a===be)??null,i=e.find(({key:a})=>a===we)??null;t&&or(t)&&n.append(Ce,t.value),r&&sr(r)&&n.append(be,r.value),i&&n.append(we,i.value)}function Ge(e,n,t,r){const{query:i="",page:a,count:o,sort:s,selectedFacets:c=[],showInvisibleItems:d,sponsoredCount:g,hideUnavailableItems:u,allowRedirect:f=!1}=e,h=new URLSearchParams;if(r.includePagination&&a!==void 0&&o!==void 0){const p=a*o,m=o===0?p:p+o-1;h.append("from",p.toString()),h.append("to",m.toString())}i&&h.append("query",i),r.includeSort&&s&&h.append("sort",s);const I=rr(t.segmentParams,c);if(zn(h,I??t.segmentParams),dr(c,h),d&&h.append("show-invisible-items","true"),n?.hideUnavailableItems!==void 0){const p=c.find(({key:S})=>S===Gt),m=p?p.value:u?.toString()??n.hideUnavailableItems.toString();h.append("hideUnavailableItems",m)}n?.simulationBehavior!==void 0&&h.append("simulationBehavior",n.simulationBehavior.toString()),n?.showSponsored!==void 0&&h.append("showSponsored",n.showSponsored.toString()),g!==void 0&&h.append("sponsoredCount",g.toString()),f!==void 0&&h.append("allowRedirect",f.toString());const l=qn(lr(c,t.extraFacets));return{params:h,path:l}}function ur(e,n){const{field:t,value:r,hideUnavailableItems:i,showInvisibleItems:a}=e,o=new URLSearchParams({field:t??"",value:r??""});return zn(o,n),i&&o.append("hideUnavailableItems","true"),a&&o.append("show-invisible-items","true"),o}function de(e){return(e??"").replaceAll(/[\s-]/g,"").toUpperCase()}function pr(e,n){const{segmentParams:t,extraFacets:r}=n,{postalCode:i,country:a,coordinates:o}=e,s=!!i,c=a||t.country,d=s&&de(i)===de(t["zip-code"])&&de(c)===de(t.country),g=s?i:t["zip-code"],u=s?c:t.country,f=d?t.coordinates:void 0,h=s?o??f:o||t.coordinates,I=!s||d,l=!!(t.deliveryZonesHash&&t.pickupPointHash);if((!g||!u)&&!!!h&&!(I&&l))throw new Error("Missing delivery location for pickup point availability. Provide postalCode and country, coordinates, or a segment with zip-code.");const m=new URLSearchParams,S=(v,O)=>{O!=null&&String(O)!==""&&m.append(v,String(O))};return S("sc",t.sc),S("locale",t.locale),S("country",u),S("zip-code",g),S("coordinates",h),I&&(S("deliveryZonesHash",t.deliveryZonesHash),S("pickupPointsHash",t.pickupPointHash)),{params:m,path:qn(r)}}function H(e,n){return{path:e,params:n,toString(){const t=n.toString();return e?t?`${e}?${t}`:e:t?`?${t}`:""}}}function G(e){const{endpoint:n,segment:t,defaults:r,args:i={}}=e,a=cr(t,r);switch(n){case"product-search":case"facets":{const{params:o,path:s}=Ge(i,r,a,{includePagination:!0,includeSort:!0});return H(s,o)}case"catalog-count":{const{params:o,path:s}=Ge(i,r,a,{includePagination:!1,includeSort:!1});return H(s,o)}case"products":{const o=ur(i,a.segmentParams);return H("",o)}case"search-suggestions":{const o=new URLSearchParams({query:i.query?.toString()??"",locale:r?.locale??a.segmentParams.locale??""});return H("",o)}case"top-searches":{const o=new URLSearchParams({locale:r?.locale??a.segmentParams.locale??""});return H("",o)}case"pickup-point-availability":{const{params:o,path:s}=pr(i,a);return H(s,o)}default:{const o=n;throw new Error(`Unknown intelligent-search endpoint: ${o}`)}}}const gr=10;function mr(e){const{regionId:n,seller:t}=e.storage.channel;return(t?Buffer.from(`SW#${t}`).toString("base64"):void 0)??(n||void 0)}function hr(e){const t=Fe(e.headers?.cookie).cultureInfo||"";return Q(e)?e.storage.locale||t:t||e.storage.locale||""}const fr=({account:e,environment:n,hideUnavailableItems:t,simulationBehavior:r,showSponsored:i,subDomainPrefix:a},o)=>{const s=`https://${e}.${n}.com.br`,c=Bn(o),d=Fe(o.headers?.cookie),g=()=>({salesChannel:o.storage.channel.salesChannel,regionId:mr(o),locale:hr(o),hideUnavailableItems:t,simulationBehavior:r,showSponsored:i}),u=new Headers(o.headers).get("x-forwarded-host")??o.headers?.host??"",f=a&&a.map(b=>b+".").find(b=>u.includes(b))||"",h=u.replace(f,""),I=c({"content-type":"application/json","X-FORWARDED-HOST":h}),l=({type:b,...A})=>{const E=b==="facets"?"facets":"product-search",T=G({endpoint:E,segment:d,defaults:g(),args:A});return y(`${s}/api/intelligent-search/v1/${E}/${T.path}?${T.params.toString()}`,{headers:I})},p=b=>l({...b,type:"product_search"}),m=({field:b,value:A,hideUnavailableItems:E,showInvisibleItems:T})=>{const D=G({endpoint:"products",segment:d,defaults:g(),args:{field:b,value:A,hideUnavailableItems:E,showInvisibleItems:T}});return y(`${s}/api/intelligent-search/v1/products?${D.params.toString()}`,{headers:I})};return{facets:b=>l({...b,type:"facets"}),products:p,fetchProduct:m,productsByIdentifier:async({field:b,values:A,showInvisibleItems:E,hideUnavailableItems:T,throwOnUpstreamError:D=!1})=>{const U=Ue(gr);return(await Promise.all(A.map(R=>U(async()=>{try{return await m({field:b,value:R,hideUnavailableItems:T,showInvisibleItems:E})}catch(M){if(D&&!x(M))throw M;return null}})))).filter(R=>R!==null)},suggestedTerms:b=>{const A=G({endpoint:"search-suggestions",segment:d,defaults:g(),args:{query:b.query}});return y(`${s}/api/intelligent-search/v1/search-suggestions?${A.params.toString()}`,{headers:I})},topSearches:()=>{const b=G({endpoint:"top-searches",segment:d,defaults:g()});return y(`${s}/api/intelligent-search/v1/top-searches?${b.params.toString()}`,{headers:I})},productCount:b=>{const A=G({endpoint:"catalog-count",segment:d,defaults:g(),args:b});return y(`${s}/api/intelligent-search/v1/catalog-count/${A.path}?${A.params.toString()}`,{headers:I})},pickupPointAvailability:({postalCode:b,country:A,coordinates:E})=>{const T=G({endpoint:"pickup-point-availability",segment:d,defaults:g(),args:{postalCode:b,country:A,coordinates:E}}),D=T.path?`/${T.path}`:"";return y(`${s}/api/intelligent-search/v1/pickup-point-availability${D}?${T.params.toString()}`,{headers:I})}}},Sr=(e,n)=>{const t=fr(e,n),r=jt(e,n),i=_t(e);return{search:t,commerce:r,catalog:i}},yr=20,Ir=e=>e.entityType==="category",Ae=e=>e.entityType==="brand",Xe=e=>e.entityType==="collection",vr=(e,n)=>{const t=Ue(yr),r=async i=>Promise.all(i.map(a=>t(async()=>{const o=a.slug.toLowerCase(),s=a.locale,c=await n.commerce.catalog.byLinkId.category(o,s);if(c)return{...c,entityType:"category",slug:o};const d=await n.commerce.catalog.byLinkId.brand(o,s);if(d)return{...d,entityType:"brand"};const g=await n.commerce.catalog.byLinkId.collection(o,s);if(g)return{...g,entityType:"collection"};throw new L(`No catalog entity found for slug: ${a.slug}. Cascade exhausted (category → brand → collection).`)})));return new ye(r,{batch:!1,cacheKeyFn:({slug:i,locale:a})=>`${i.toLowerCase()}::${a??""}`})},Or=(e,n)=>{const t=async r=>Promise.all(r.map(i=>n.commerce.catalog.salesChannel(i)));return new ye(t)},Cr=1,br=(e,n)=>{const t=Ue(Cr),r=async a=>{const o=a.reduce((u,{items:f})=>[...u,f],[]),s=[...o.flat()],c=await n.commerce.checkout.simulation({country:a[0].country,postalCode:a[0].postalCode,items:s}),d=c.items.reduce((u,f)=>{const h=f.requestIndex;return typeof h=="number"&&h<u.length&&(u[h]=f),u},Array(s.length).fill(null)),g=o.reduce((u,f)=>[...u,f.length+u[u.length-1]],[0]);return o.map((u,f)=>({...c,items:d.slice(g[f],g[f+1]).filter(h=>!!h)}))},i=async a=>t(r,a);return new ye(i,{maxBatchSize:50})},wr=(e,n)=>yt(e,n);function Ar(e){return{...e,description:e.description?wr(e.description):e.description}}const B=(e,n)=>({...e,isVariantOf:Ar(n)}),Pr=({flags:e},n)=>{const t=async r=>{const i=r.map(g=>g.split("-")[0]),a=r.some(g=>g.split("-")[1]==="invisibleItems"),s=(await n.search.productsByIdentifier({field:"sku",values:i,showInvisibleItems:a,throwOnUpstreamError:!0,...e?.enableUnavailableItemsOnCart&&{hideUnavailableItems:!1}})).reduce((g,u)=>{for(const f of u.items)g[f.itemId]=B(f,u);return g},{}),c=i.map(g=>s[g]),d=i.filter(g=>!s[g]);if(d.length>0)throw new L(`Search API did not found the following skus: ${d.join(",")}`);return c};return new ye(t,{maxBatchSize:99})},Dr=(e,n)=>{const{clients:t}=n,r=Pr(e,t),i=br(e,t),a=vr(e,t),o=Or(e,t);return{skuLoader:r,simulationLoader:i,collectionLoader:a,salesChannelLoader:o}},q=e=>e.AvailableQuantity>0,ee=e=>e.spotPrice??0,Er=e=>e.Price??0,Ye=e=>e?"https://schema.org/InStock":"https://schema.org/OutOfStock",xn=(e,n)=>q(e)&&!q(n)?-1:!q(e)&&q(n)?1:ee(e)-ee(n),kr=e=>e==="available",K=(e,n=0,t=1)=>{const r=n/t;return Math.round((e+r)*100)/100},Tr=(e,n={includeTaxes:!1})=>{const t=e.filter(q),r=t[t.length-1],i=r?ee(r):0;return n.includeTaxes?K(i,r?.Tax,r?.product?.unitMultiplier):i},Ke=(e,n={includeTaxes:!1})=>{const[t]=e.filter(q),r=t?ee(t):0;return n.includeTaxes?K(r,t?.Tax,t?.product?.unitMultiplier):r},_r={highPrice:e=>Tr(e),lowPrice:e=>Ke(e),lowPriceWithTaxes:e=>Ke(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},Ur={ratingValue:()=>5,reviewCount:()=>0},Je="ÁÄÂÀÃÅČÇĆĎÉĚËÈÊẼĔȆÍÌÎÏŇÑÓÖÒÔÕØŘŔŠŤÚŮÜÙÛÝŸŽáäâàãåčçćďéěëèêẽĕȇíìîïňñóöòôõøðřŕšťúůüùûýÿžþÞĐđ߯a",Rr="AAAAAACCCDEEEEEEEEIIIINNOOOOOORRSTUUUUUYYZaaaaaacccdeeeeeeeeiiiinnooooooorrstuuuuuyyzbBDdBAa",Nr=e=>{let n=e.slice(0);for(let t=0;t<Je.length;t++)n=n.replace(new RegExp(Je.charAt(t),"g"),Rr.charAt(t));return n},Fr=e=>e.replace(/[·/_,:]/,"-");function he(e){const t=e.replace(/,/g,"").replace(/[*+~.()'"!:@&\[\]`/ %$#?{}><=_^]/g,"-");return Fr(Nr(t)).toLowerCase()}const ve=e=>e.toLowerCase(),ue=(e,n)=>{const t=n.split("/").filter(Boolean),{loaders:{collectionLoader:r}}=e;return Promise.all(t.map((i,a)=>r.load({slug:t.slice(0,a+1).join("/"),locale:$n(e)})))},X=e=>Ir(e)?e.slug:Ae(e)?e.linkId:e.linkId??he(e.name),jn={id:({id:e})=>e.toString(),slug:e=>X(e),seo:e=>({title:e.title??e.name,description:e.metaTagDescription??e.description}),type:e=>Ae(e)?"Brand":Xe(e)?"Collection":e.fatherCategoryId===null?"Department":"Category",meta:async(e,n,t)=>{const r=X(e);if(Ae(e))return{selectedFacets:[{key:"brand",value:r}]};if(Xe(e))return{selectedFacets:[{key:"productclusterids",value:e.id}]};const{defaultLocale:i}=oe(t);return{selectedFacets:(await ue(t,r)).map((o,s)=>({key:`category-${s+1}`,value:i&&o.availableLinkIds?.[i]||o.linkId}))}},breadcrumbList:async(e,n,t)=>{const r=await ue(t,X(e));return{itemListElement:r.map((i,a)=>({item:`/${X(i)}`,name:i.name,position:a+1})),numberOfItems:r.length}},otherLocales:async(e,n,t)=>{const r=oe(t);if(!r.enabled)return null;const i=Object.keys(r.locales??{});if(i.length===0)return null;const a=X(e);if(a.split("/").filter(Boolean).length===0)return null;let o;try{o=await ue(t,a)}catch(s){return console.warn("[otherLocales] failed to load collection entities:",s),null}return i.map(s=>{const c=[];for(const d of o){const g=d.availableLinkIds?.[s];if(!g)return null;c.push(g)}return c.length>0?{locale:s,slug:ve(c.join("/"))}:null}).filter(s=>s!==null)},canonicalSlug:async(e,n,t)=>{const r=X(e);if(r.split("/").filter(Boolean).length===0)return null;let i;try{i=await ue(t,r)}catch(o){return console.warn("[canonicalSlug] failed to load collection entities:",o),null}const a=i.map(o=>o.linkId);return a.every(o=>!!o)?ve(a.join("/")):ve(r)}},Wn={buy:"whoboughtalsobought",view:"whosawalsosaw",similars:"similars",viewAndBought:"whosawalsobought",accessories:"accessories",suggestions:"suggestions"},Qe=({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}}},Ze=e=>{const n=e.split(":").map(Number);return n.length!==2||Number.isNaN(n[0])||Number.isNaN(n[1])?null:n},Lr=e=>typeof Wn[e]=="string",Br=e=>{const n=e?.filter(t=>Lr(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},$r=e=>e?.find(n=>n.key==="slug")?.value??null,Mr=e=>e?.find(n=>n.key==="id")?.value??null,en=e=>e?.find(n=>n.key==="locale")?.value??null,nn=e=>e?.find(n=>n.key==="channel")?.value??null,Pe=(e,n)=>{let t=0;for(let r=1;r<e.length;r++)n(e[t],e[r])>0&&(t=r);return e[t]},zr={__resolveType:({type:e,values:n})=>e!=="TEXT"&&e!=="DELIVERY"?"StoreFacetRange":!n||n.length===0?"StoreFacetBoolean":n.every(t=>t.range)?"StoreFacetRange":"StoreFacetBoolean"},Vr={key:({key:e})=>e,label:({name:e})=>e,values:({values:e})=>e.sort((n,t)=>n.name.localeCompare(t.name))},qr={key:({key:e})=>e,label:({name:e})=>e,min:({values:e,key:n},t,{storage:{searchArgs:r}})=>{const i=Ze(r?.selectedFacets?.find(s=>s.key===n)?.value??""),o=Pe(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=Ze(r?.selectedFacets?.find(s=>s.key===n)?.value??""),o=Pe(e,(s,c)=>c.range.to-s.range.to)?.range?.to??0;return{selected:i?.[1]??o,absolute:o}}},xr={value:({value:e})=>e,label:({name:e})=>e||"unknown",selected:({selected:e})=>e,quantity:({quantity:e})=>e},jr=async(e,{data:n},{clients:{commerce:t}})=>{if(!n?.orderId)throw new k("Missing orderId");return{data:(await t.checkout.cancelOrder(n))?.data}};function Hn(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 Wr(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 Hr=async(e,{data:n},{clients:{commerce:t}})=>{const r=await t.oms.processOrderAuthorization(n),i=Hn(r);return{isPendingForOtherAuthorizer:!i&&Wr(r),ruleForAuthorization:i}},Gr=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})},Xr=async(e,n,t)=>{if(!(await t.clients.commerce.recommendation.startRecommendationSession())?.recommendationsUserId)throw new Error("Failed to start recommendation session: no session data returned");return!0},Yr=254,tn=100,Kr=/^[^\s@]+@[^\s@.]+(\.[^\s@.]+)+$/,Jr=async(e,{data:n},{clients:{commerce:t}})=>{const r=n.email?.trim().toLowerCase()??"",i=n.name?.trim()??"";if(r.length>Yr||!Kr.test(r))throw new k("Invalid email");if(i.length>tn)throw new k(`Invalid name: must have at most ${tn} characters`);return{id:(await t.subscribeToNewsletter({email:r,name:i||void 0}))?.Id}},Qr=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 ce{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)}}function Zr(e,n){return n==null||n===""||String(n)===String(e.salesChannel??"")?null:ce.stringify({...e,salesChannel:String(n),hasOnlyDefaultSalesChannel:!1})}function ei(e,n,t){return t!=null&&String(e.salesChannel??"")===t&&String(n??"")!==t?!1:e.items.length>0?!0:e.salesChannel==null||e.salesChannel===""?!1:String(e.salesChannel)===String(n??"")}const Gn=e=>{try{return JSON.parse(e??"")??{}}catch{return{}}};function Xn(e,{localizationEnabled:n=!0}={}){const t=Gn(e).salesChannelSource;return t==="url"?n?t:void 0:t==="orderForm"?t:void 0}const Yn=e=>!!e?.localization?.enabled;function Kn(e){const n=Gn(e).rejectedSalesChannel;return(typeof n=="string"||typeof n=="number")&&String(n)||void 0}function ni(e,n,t,r,i,a){const o=n??void 0,s=t??e.regionId,c=i?e.salesChannel||o:o??e.salesChannel,d=a!=null&&a!==String(c??"");return ce.stringify({salesChannel:c,regionId:s??void 0,seller:r,hasOnlyDefaultSalesChannel:!o,...i?{salesChannelSource:i}:{},...d?{rejectedSalesChannel:a}:{}})}const rn="1";function ti(e,n,t,r){const i=String(e.salesChannel??"");return n===void 0&&i===rn&&!!t&&t!==rn&&!new URLSearchParams(r).has("sc")?t:i}const ae=(e,n)=>{e.storage.channel=ce.parse(n)},De=(e,n)=>{e.storage.locale=n},Le=e=>It.createHash("md5").update(e).digest("hex"),W={attachment:"ATTACHMENT",specification:"SPECIFICATION",attribute:"ATTRIBUTE",service:"SERVICE"};function Jn(e){return{name:e.name,value:e.content,valueReference:W.attachment}}function ri(e){return{propertyID:e.id,name:e.name,value:e.value,valueReference:{valueReference:W.attribute,visible:e.visible}}}function Qn(e){return Le(`${e.name}:${JSON.stringify(e.value)}:${e.valueReference}`)}const Zn=(e,n)=>e<n?-1:e>n?1:0,ii=(e,n)=>Zn(e.name,n.name),ai=e=>[...e??[]].sort(ii),an=e=>e!==null&&typeof e=="object"&&!Array.isArray(e),oi=e=>an(e)&&typeof e.name=="string"&&an(e.content),si=e=>({name:e.name,content:Object.fromEntries(Object.keys(e.content).sort(Zn).map(n=>[n,e.content[n]]))}),et=(e,n)=>Le(`SERVICE:${e}:${JSON.stringify(ai((n??[]).filter(oi)).map(si))}`),ci="SERVICE:unreadable";function Be(e){const n=e.attachments??[];return{propertyID:et(e.id,n),name:e.name,value:{id:e.id,price:e.sellingPrice/100,attachments:n},valueReference:W.service}}const li=e=>{try{return JSON.parse(e)}catch{return null}},di=e=>{const n=typeof e=="string"?li(e):e;if(n===null||typeof n!="object")return null;const{id:t,attachments:r}=n;return typeof t!="string"&&typeof t!="number"?null:{id:String(t),attachments:r}};function ui(e){const n=di(e.value);return n?et(n.id,Array.isArray(n.attachments)?n.attachments:[]):ci}const pi=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]},gi=(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},nt=(e,n)=>{if(!mi(n))return{updateShipping:!1,addressChanged:!1};if(!yi(e))return{updateShipping:!1,addressChanged:!1};const[t]=e?.shippingData?.selectedAddresses??[];if(hi(t,n.postalCode)||fi(t,n.geoCoordinates)||Si(t,n.addressType))return{updateShipping:!0,addressChanged:!0};const{logisticsInfo:r}=e.shippingData;return Ii(r,n)?{updateShipping:!0,addressChanged:!1}:{updateShipping:!1,addressChanged:!1}},mi=e=>!!e.postalCode||e.geoCoordinates?.latitude&&e.geoCoordinates?.longitude,hi=(e,n)=>typeof n=="string"&&e?.postalCode!==n,fi=(e,n)=>typeof n?.latitude=="number"&&typeof n?.longitude=="number"&&(e?.geoCoordinates[0]!==n?.longitude||e?.geoCoordinates[1]!==n?.latitude),Si=(e,n)=>typeof n=="string"&&e?.addressType!==n,yi=e=>e.items.length!==0,Ii=(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 d=t&&o!==t,g=r&&s!==r;return c?.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(f=>f?.startDateUtc===i&&f?.endDateUtc===a))})},tt=e=>e.valueReference===W.attachment,vi=e=>e.valueReference===W.service,Oi=e=>(e.itemOffered.additionalProperty??[]).filter(vi).map(ui).sort((n,t)=>n.localeCompare(t)),rt=e=>{const n=Oi(e);return n.length>0?`services:${n.join("-")}`:void 0},Ee=e=>[e.itemOffered.sku,e.seller.identifier,e.price<.01?"Gift":void 0,e.itemOffered.additionalProperty?.filter(tt).map(Qn).join("-"),rt(e)].filter(Boolean).join("::"),fe=(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(Jn),...(e.bundleItems??[]).map(Be)]},index:n}),Ci=e=>({quantity:e.quantity,seller:e.seller.identifier,id:e.itemOffered.sku,index:e.index,attachments:(e.itemOffered.additionalProperty?.filter(tt)??[]).map(n=>({name:n.name,content:n.value})),...e.priceToken?{priceToken:e.priceToken}:{}}),on=e=>e.reduce((n,t)=>{const r=Ee(t);return n.has(r)||n.set(r,[]),n.get(r)?.push(t),n},new Map),bi=(e,n)=>{const t=({priceToken:s,...c},d)=>({...c,itemOffered:{sku:c.itemOffered.sku},services:rt(c),index:d}),r=n.items.map(fe).map(t),i=e.acceptedOffer.map(t),a=e.orderNumber===n.orderFormId,o=Re(r,i);return a&&o};function it(e,n){return e?.some(t=>t.parentItemIndex!==null&&t.parentItemIndex!==void 0&&e[t.parentItemIndex]?.id===n)}function at(e,n){return e?.some(t=>t.id===n&&t.parentItemIndex!==null)}const sn=e=>{const n=e.items.reduce((t,r,i)=>{const a=at(e.items,r.id)||it(e.items,r.id)?`${Ee(fe(r))}::${i}`:Ee(fe(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}})}},ke=async(e,n,t,r)=>({order:{orderNumber:e.orderFormId,acceptedOffer:e.items.map(async i=>({...i,product:await n.load(`${i.id}-invisibleItems`)})),shouldSplitItem:t,...r?{salesChannel:r}:{}},messages:e.messages.map(({text:i,status:a})=>({text:i,status:a.toUpperCase()}))}),ot=({items:e},n)=>{const t=e.map(r=>{const i=(r.bundleItems??[]).map(Be).map(({propertyID:a})=>a).sort((a,o)=>a.localeCompare(o));return{id:r.id,quantity:r.quantity,seller:r.seller,attachments:r.attachments,...i.length>0?{services:i}:{}}});return Le(JSON.stringify({sessionId:n?.id??"",items:t}))},cn=async(e,n,t)=>{try{return await n.checkout.setCustomData({id:e.orderFormId,appId:"faststore",key:"cartEtag",value:ot(e,t)})}catch(r){throw console.error(`Error while setting custom data to orderForm.
package/dist/es/index.mjs CHANGED
@@ -80,7 +80,7 @@ const Ot = () => function(n = {}) {
80
80
  resolvers: n
81
81
  })
82
82
  );
83
- }, On = "@faststore/api", Cn = "4.10.1", Me = {
83
+ }, On = "@faststore/api", Cn = "4.10.2", Me = {
84
84
  name: On,
85
85
  version: Cn
86
86
  }, Ue = dt("@faststore/api"), kt = (e, n = "Unknown Graphql Resolver") => (t, r, i, a) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@faststore/api",
3
- "version": "4.10.2-dev.0",
3
+ "version": "4.10.3-dev.0",
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.18",
61
- "@faststore/diagnostics": "^4.10.2-dev.0"
61
+ "@faststore/diagnostics": "^4.10.3-dev.0"
62
62
  },
63
63
  "peerDependencies": {
64
64
  "graphql": "16.11.0",
65
- "@faststore/diagnostics": "4.10.2-dev.0"
65
+ "@faststore/diagnostics": "4.10.3-dev.0"
66
66
  },
67
67
  "publishConfig": {
68
68
  "access": "public"