@faststore/api 1.5.7 → 1.5.11

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/CHANGELOG.md CHANGED
@@ -3,6 +3,47 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## 1.5.11 (2022-02-18)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * **gatsby-plugin-nginx:** remove trailing slash from incoming requests ([#1145](https://github.com/vtex/faststore/issues/1145)) ([db6f1e1](https://github.com/vtex/faststore/commit/db6f1e173ec43747bf9cfa244b81d86db8a25ce3))
12
+
13
+
14
+
15
+
16
+
17
+ ## 1.5.10 (2022-02-17)
18
+
19
+
20
+ ### Features
21
+
22
+ * **api:** Add additional property ([#1107](https://github.com/vtex/faststore/issues/1107)) ([bbcfc4a](https://github.com/vtex/faststore/commit/bbcfc4af68148adb54d66a3f1d28a9817ad2956c))
23
+
24
+
25
+
26
+
27
+
28
+ ## 1.5.9 (2022-02-16)
29
+
30
+ **Note:** Version bump only for package @faststore/api
31
+
32
+
33
+
34
+
35
+
36
+ ## 1.5.8 (2022-02-15)
37
+
38
+
39
+ ### Bug Fixes
40
+
41
+ * **api:** PDP and PLP breadcrumb list item's URL paths ([#1148](https://github.com/vtex/faststore/issues/1148)) ([ea1790a](https://github.com/vtex/faststore/commit/ea1790a0069b5e19f656d7df0051f391c3c3c611))
42
+
43
+
44
+
45
+
46
+
6
47
  ## 1.5.7 (2022-02-15)
7
48
 
8
49
  **Note:** Version bump only for package @faststore/api
@@ -215,6 +215,7 @@ export declare type StorePageInfo = {
215
215
  };
216
216
  export declare type StoreProduct = {
217
217
  __typename?: 'StoreProduct';
218
+ additionalProperty: Array<StorePropertyValue>;
218
219
  aggregateRating: StoreAggregateRating;
219
220
  brand: StoreBrand;
220
221
  breadcrumbList: StoreBreadcrumbList;
@@ -242,10 +243,16 @@ export declare type StoreProductEdge = {
242
243
  };
243
244
  export declare type StoreProductGroup = {
244
245
  __typename?: 'StoreProductGroup';
246
+ additionalProperty: Array<StorePropertyValue>;
245
247
  hasVariant: Array<StoreProduct>;
246
248
  name: Scalars['String'];
247
249
  productGroupID: Scalars['String'];
248
250
  };
251
+ export declare type StorePropertyValue = {
252
+ __typename?: 'StorePropertyValue';
253
+ name: Scalars['String'];
254
+ value: Scalars['String'];
255
+ };
249
256
  export declare type StoreReview = {
250
257
  __typename?: 'StoreReview';
251
258
  author: StoreAuthor;
@@ -355,7 +355,7 @@ const StoreCollection = {
355
355
  const pageTypes = await Promise.all(slugs.map(s => commerce.catalog.portal.pagetype(s)));
356
356
  return {
357
357
  itemListElement: pageTypes.map((pageType, index) => ({
358
- item: new URL(`https://${pageType.url}`).pathname,
358
+ item: new URL(`https://${pageType.url}`).pathname.toLowerCase(),
359
359
  name: pageType.name,
360
360
  position: index + 1
361
361
  })),
@@ -650,7 +650,7 @@ const StoreProduct = {
650
650
  categoryNames
651
651
  }, index) => ({
652
652
  name: categoryNames[categoryNames.length - 1],
653
- item: `/${categoryNames.join('/').toLowerCase()}`,
653
+ item: `/${categoryNames.map(categoryName => slugify(categoryName)).join('/')}`,
654
654
  position: index + 1
655
655
  })), {
656
656
  name,
@@ -720,7 +720,13 @@ const StoreProduct = {
720
720
  },
721
721
  isVariantOf: ({
722
722
  isVariantOf
723
- }) => isVariantOf
723
+ }) => isVariantOf,
724
+ additionalProperty: ({
725
+ attributes = []
726
+ }) => attributes.map(attribute => ({
727
+ name: attribute.key,
728
+ value: attribute.value
729
+ }))
724
730
  };
725
731
 
726
732
  const StoreProductGroup = {
@@ -730,7 +736,17 @@ const StoreProductGroup = {
730
736
  }) => product,
731
737
  name: ({
732
738
  name
733
- }) => name
739
+ }) => name,
740
+ additionalProperty: ({
741
+ textAttributes = [],
742
+ productSpecifications = []
743
+ }) => {
744
+ const specs = new Set(productSpecifications);
745
+ return textAttributes.filter(attribute => specs.has(attribute.labelKey)).map(attribute => ({
746
+ name: attribute.labelKey,
747
+ value: attribute.labelValue
748
+ }));
749
+ }
734
750
  };
735
751
 
736
752
  const getIdFromSlug = slug => {
@@ -1040,11 +1056,11 @@ var doc$b = {"kind":"Document","definitions":[{"kind":"ObjectTypeDefinition","na
1040
1056
  var doc$c = {"kind":"Document","definitions":[{"kind":"ObjectTypeDefinition","name":{"kind":"Name","value":"StorePageInfo"},"interfaces":[],"directives":[],"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"hasNextPage"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Boolean"}}},"directives":[]},{"kind":"FieldDefinition","name":{"kind":"Name","value":"hasPreviousPage"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Boolean"}}},"directives":[]},{"kind":"FieldDefinition","name":{"kind":"Name","value":"startCursor"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},"directives":[]},{"kind":"FieldDefinition","name":{"kind":"Name","value":"endCursor"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},"directives":[]},{"kind":"FieldDefinition","name":{"kind":"Name","value":"totalCount"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}},"directives":[]}]}],"loc":{"start":0,"end":197}};
1041
1057
  doc$c.loc.source = {"body":"type StorePageInfo {\n hasNextPage: Boolean!\n hasPreviousPage: Boolean!\n startCursor: String!\n endCursor: String!\n # Total number of items(products/collections), not pages\n totalCount: Int!\n}\n","name":"GraphQL request","locationOffset":{"line":1,"column":1}};
1042
1058
 
1043
- var doc$d = {"kind":"Document","definitions":[{"kind":"ObjectTypeDefinition","name":{"kind":"Name","value":"StoreProduct"},"interfaces":[],"directives":[],"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"seo"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"StoreSeo"}}},"directives":[]},{"kind":"FieldDefinition","name":{"kind":"Name","value":"breadcrumbList"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"StoreBreadcrumbList"}}},"directives":[]},{"kind":"FieldDefinition","name":{"kind":"Name","value":"slug"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},"directives":[]},{"kind":"FieldDefinition","name":{"kind":"Name","value":"name"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},"directives":[]},{"kind":"FieldDefinition","name":{"kind":"Name","value":"productID"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},"directives":[]},{"kind":"FieldDefinition","name":{"kind":"Name","value":"brand"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"StoreBrand"}}},"directives":[]},{"kind":"FieldDefinition","name":{"kind":"Name","value":"description"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},"directives":[]},{"kind":"FieldDefinition","name":{"kind":"Name","value":"image"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"StoreImage"}}}}},"directives":[]},{"kind":"FieldDefinition","name":{"kind":"Name","value":"offers"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"StoreAggregateOffer"}}},"directives":[]},{"kind":"FieldDefinition","name":{"kind":"Name","value":"sku"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},"directives":[]},{"kind":"FieldDefinition","name":{"kind":"Name","value":"gtin"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},"directives":[]},{"kind":"FieldDefinition","name":{"kind":"Name","value":"review"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"StoreReview"}}}}},"directives":[]},{"kind":"FieldDefinition","name":{"kind":"Name","value":"aggregateRating"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"StoreAggregateRating"}}},"directives":[]},{"kind":"FieldDefinition","name":{"kind":"Name","value":"isVariantOf"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"StoreProductGroup"}}},"directives":[]}]},{"kind":"InputObjectTypeDefinition","name":{"kind":"Name","value":"IStoreProduct"},"directives":[],"fields":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"sku"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},"directives":[]},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"name"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},"directives":[]},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"image"},"type":{"kind":"NonNullType","type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"IStoreImage"}}}}},"directives":[]}]}],"loc":{"start":0,"end":528}};
1044
- doc$d.loc.source = {"body":"type StoreProduct {\n # Meta tag data\n seo: StoreSeo!\n # Location for structured data\n breadcrumbList: StoreBreadcrumbList!\n # Where to retrieve this entity\n slug: String!\n name: String!\n productID: String!\n brand: StoreBrand!\n description: String!\n image: [StoreImage!]!\n offers: StoreAggregateOffer!\n sku: String!\n gtin: String!\n review: [StoreReview!]!\n aggregateRating: StoreAggregateRating!\n isVariantOf: StoreProductGroup!\n}\n\ninput IStoreProduct {\n sku: String!\n name: String!\n image: [IStoreImage!]!\n}\n","name":"GraphQL request","locationOffset":{"line":1,"column":1}};
1059
+ var doc$d = {"kind":"Document","definitions":[{"kind":"ObjectTypeDefinition","name":{"kind":"Name","value":"StoreProduct"},"interfaces":[],"directives":[],"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"seo"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"StoreSeo"}}},"directives":[]},{"kind":"FieldDefinition","name":{"kind":"Name","value":"breadcrumbList"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"StoreBreadcrumbList"}}},"directives":[]},{"kind":"FieldDefinition","name":{"kind":"Name","value":"slug"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},"directives":[]},{"kind":"FieldDefinition","name":{"kind":"Name","value":"name"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},"directives":[]},{"kind":"FieldDefinition","name":{"kind":"Name","value":"productID"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},"directives":[]},{"kind":"FieldDefinition","name":{"kind":"Name","value":"brand"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"StoreBrand"}}},"directives":[]},{"kind":"FieldDefinition","name":{"kind":"Name","value":"description"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},"directives":[]},{"kind":"FieldDefinition","name":{"kind":"Name","value":"image"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"StoreImage"}}}}},"directives":[]},{"kind":"FieldDefinition","name":{"kind":"Name","value":"offers"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"StoreAggregateOffer"}}},"directives":[]},{"kind":"FieldDefinition","name":{"kind":"Name","value":"sku"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},"directives":[]},{"kind":"FieldDefinition","name":{"kind":"Name","value":"gtin"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},"directives":[]},{"kind":"FieldDefinition","name":{"kind":"Name","value":"review"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"StoreReview"}}}}},"directives":[]},{"kind":"FieldDefinition","name":{"kind":"Name","value":"aggregateRating"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"StoreAggregateRating"}}},"directives":[]},{"kind":"FieldDefinition","name":{"kind":"Name","value":"isVariantOf"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"StoreProductGroup"}}},"directives":[]},{"kind":"FieldDefinition","name":{"kind":"Name","value":"additionalProperty"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"StorePropertyValue"}}}}},"directives":[]}]},{"kind":"InputObjectTypeDefinition","name":{"kind":"Name","value":"IStoreProduct"},"directives":[],"fields":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"sku"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},"directives":[]},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"name"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},"directives":[]},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"image"},"type":{"kind":"NonNullType","type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"IStoreImage"}}}}},"directives":[]}]}],"loc":{"start":0,"end":573}};
1060
+ doc$d.loc.source = {"body":"type StoreProduct {\n # Meta tag data\n seo: StoreSeo!\n # Location for structured data\n breadcrumbList: StoreBreadcrumbList!\n # Where to retrieve this entity\n slug: String!\n name: String!\n productID: String!\n brand: StoreBrand!\n description: String!\n image: [StoreImage!]!\n offers: StoreAggregateOffer!\n sku: String!\n gtin: String!\n review: [StoreReview!]!\n aggregateRating: StoreAggregateRating!\n isVariantOf: StoreProductGroup!\n additionalProperty: [StorePropertyValue!]!\n}\n\ninput IStoreProduct {\n sku: String!\n name: String!\n image: [IStoreImage!]!\n}\n","name":"GraphQL request","locationOffset":{"line":1,"column":1}};
1045
1061
 
1046
- var doc$e = {"kind":"Document","definitions":[{"kind":"ObjectTypeDefinition","name":{"kind":"Name","value":"StoreProductGroup"},"interfaces":[],"directives":[],"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"hasVariant"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"StoreProduct"}}}}},"directives":[]},{"kind":"FieldDefinition","name":{"kind":"Name","value":"productGroupID"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},"directives":[]},{"kind":"FieldDefinition","name":{"kind":"Name","value":"name"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},"directives":[]}]}],"loc":{"start":0,"end":100}};
1047
- doc$e.loc.source = {"body":"type StoreProductGroup {\n hasVariant: [StoreProduct!]!\n productGroupID: String!\n name: String!\n}\n","name":"GraphQL request","locationOffset":{"line":1,"column":1}};
1062
+ var doc$e = {"kind":"Document","definitions":[{"kind":"ObjectTypeDefinition","name":{"kind":"Name","value":"StoreProductGroup"},"interfaces":[],"directives":[],"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"hasVariant"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"StoreProduct"}}}}},"directives":[]},{"kind":"FieldDefinition","name":{"kind":"Name","value":"productGroupID"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},"directives":[]},{"kind":"FieldDefinition","name":{"kind":"Name","value":"name"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},"directives":[]},{"kind":"FieldDefinition","name":{"kind":"Name","value":"additionalProperty"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"StorePropertyValue"}}}}},"directives":[]}]}],"loc":{"start":0,"end":145}};
1063
+ doc$e.loc.source = {"body":"type StoreProductGroup {\n hasVariant: [StoreProduct!]!\n productGroupID: String!\n name: String!\n additionalProperty: [StorePropertyValue!]!\n}\n","name":"GraphQL request","locationOffset":{"line":1,"column":1}};
1048
1064
 
1049
1065
  var doc$f = {"kind":"Document","definitions":[{"kind":"ObjectTypeDefinition","name":{"kind":"Name","value":"StoreProductEdge"},"interfaces":[],"directives":[],"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"node"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"StoreProduct"}}},"directives":[]},{"kind":"FieldDefinition","name":{"kind":"Name","value":"cursor"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},"directives":[]}]},{"kind":"ObjectTypeDefinition","name":{"kind":"Name","value":"StoreProductConnection"},"interfaces":[],"directives":[],"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"pageInfo"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"StorePageInfo"}}},"directives":[]},{"kind":"FieldDefinition","name":{"kind":"Name","value":"edges"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"StoreProductEdge"}}}}},"directives":[]}]},{"kind":"ObjectTypeDefinition","name":{"kind":"Name","value":"StoreCollectionEdge"},"interfaces":[],"directives":[],"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"node"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"StoreCollection"}}},"directives":[]},{"kind":"FieldDefinition","name":{"kind":"Name","value":"cursor"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},"directives":[]}]},{"kind":"ObjectTypeDefinition","name":{"kind":"Name","value":"StoreCollectionConnection"},"interfaces":[],"directives":[],"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"pageInfo"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"StorePageInfo"}}},"directives":[]},{"kind":"FieldDefinition","name":{"kind":"Name","value":"edges"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"StoreCollectionEdge"}}}}},"directives":[]}]},{"kind":"EnumTypeDefinition","name":{"kind":"Name","value":"StoreSort"},"directives":[],"values":[{"kind":"EnumValueDefinition","name":{"kind":"Name","value":"price_desc"},"directives":[]},{"kind":"EnumValueDefinition","name":{"kind":"Name","value":"price_asc"},"directives":[]},{"kind":"EnumValueDefinition","name":{"kind":"Name","value":"orders_desc"},"directives":[]},{"kind":"EnumValueDefinition","name":{"kind":"Name","value":"name_desc"},"directives":[]},{"kind":"EnumValueDefinition","name":{"kind":"Name","value":"name_asc"},"directives":[]},{"kind":"EnumValueDefinition","name":{"kind":"Name","value":"release_desc"},"directives":[]},{"kind":"EnumValueDefinition","name":{"kind":"Name","value":"discount_desc"},"directives":[]},{"kind":"EnumValueDefinition","name":{"kind":"Name","value":"score_desc"},"directives":[]}]},{"kind":"InputObjectTypeDefinition","name":{"kind":"Name","value":"IStoreSelectedFacet"},"directives":[],"fields":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"key"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},"directives":[]},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"value"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},"directives":[]}]},{"kind":"EnumTypeDefinition","name":{"kind":"Name","value":"StoreFacetType"},"directives":[],"values":[{"kind":"EnumValueDefinition","name":{"kind":"Name","value":"BOOLEAN"},"directives":[]},{"kind":"EnumValueDefinition","name":{"kind":"Name","value":"RANGE"},"directives":[]}]},{"kind":"ObjectTypeDefinition","name":{"kind":"Name","value":"StoreSearchResult"},"interfaces":[],"directives":[],"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"products"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"StoreProductConnection"}}},"directives":[]},{"kind":"FieldDefinition","name":{"kind":"Name","value":"facets"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"StoreFacet"}}}}},"directives":[]}]},{"kind":"ObjectTypeDefinition","name":{"kind":"Name","value":"Query"},"interfaces":[],"directives":[],"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"product"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"locator"},"type":{"kind":"NonNullType","type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"IStoreSelectedFacet"}}}}},"directives":[]}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"StoreProduct"}}},"directives":[]},{"kind":"FieldDefinition","name":{"kind":"Name","value":"collection"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"slug"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},"directives":[]}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"StoreCollection"}}},"directives":[]},{"kind":"FieldDefinition","name":{"kind":"Name","value":"search"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"first"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}},"directives":[]},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"after"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}},"directives":[]},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"sort"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"StoreSort"}},"defaultValue":{"kind":"EnumValue","value":"score_desc"},"directives":[]},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"term"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}},"defaultValue":{"kind":"StringValue","value":"","block":false},"directives":[]},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"selectedFacets"},"type":{"kind":"ListType","type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"IStoreSelectedFacet"}}}},"directives":[]}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"StoreSearchResult"}}},"directives":[]},{"kind":"FieldDefinition","name":{"kind":"Name","value":"allProducts"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"first"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}},"directives":[]},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"after"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}},"directives":[]}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"StoreProductConnection"}}},"directives":[]},{"kind":"FieldDefinition","name":{"kind":"Name","value":"allCollections"},"arguments":[{"kind":"InputValueDefinition","name":{"kind":"Name","value":"first"},"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Int"}}},"directives":[]},{"kind":"InputValueDefinition","name":{"kind":"Name","value":"after"},"type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}},"directives":[]}],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"StoreCollectionConnection"}}},"directives":[]}]}],"loc":{"start":0,"end":1077}};
1050
1066
  doc$f.loc.source = {"body":"type StoreProductEdge {\n node: StoreProduct!\n cursor: String!\n}\n\ntype StoreProductConnection {\n pageInfo: StorePageInfo!\n edges: [StoreProductEdge!]!\n}\n\ntype StoreCollectionEdge {\n node: StoreCollection!\n cursor: String!\n}\n\ntype StoreCollectionConnection {\n pageInfo: StorePageInfo!\n edges: [StoreCollectionEdge!]!\n}\n\nenum StoreSort {\n price_desc\n price_asc\n orders_desc\n name_desc\n name_asc\n release_desc\n discount_desc\n score_desc\n}\n\ninput IStoreSelectedFacet {\n key: String!\n value: String!\n}\n\nenum StoreFacetType {\n BOOLEAN\n RANGE\n}\n\ntype StoreSearchResult {\n products: StoreProductConnection!\n facets: [StoreFacet!]!\n}\n\ntype Query {\n product(locator: [IStoreSelectedFacet!]!): StoreProduct!\n\n collection(slug: String!): StoreCollection!\n\n search(\n first: Int!\n after: String\n sort: StoreSort = score_desc\n term: String = \"\"\n selectedFacets: [IStoreSelectedFacet!]\n ): StoreSearchResult!\n\n allProducts(first: Int!, after: String): StoreProductConnection!\n\n allCollections(first: Int!, after: String): StoreCollectionConnection!\n}\n","name":"GraphQL request","locationOffset":{"line":1,"column":1}};
@@ -1061,7 +1077,10 @@ var doc$i = {"kind":"Document","definitions":[{"kind":"ObjectTypeDefinition","na
1061
1077
  var doc$j = {"kind":"Document","definitions":[{"kind":"EnumTypeDefinition","name":{"kind":"Name","value":"StoreStatus"},"directives":[],"values":[{"kind":"EnumValueDefinition","name":{"kind":"Name","value":"INFO"},"directives":[]},{"kind":"EnumValueDefinition","name":{"kind":"Name","value":"WARNING"},"directives":[]},{"kind":"EnumValueDefinition","name":{"kind":"Name","value":"ERROR"},"directives":[]}]}],"loc":{"start":0,"end":46}};
1062
1078
  doc$j.loc.source = {"body":"enum StoreStatus {\n INFO\n WARNING\n ERROR\n}\n","name":"GraphQL request","locationOffset":{"line":1,"column":1}};
1063
1079
 
1064
- const typeDefs = /*#__PURE__*/[doc$f, doc$8, doc$3, doc$4, doc$5, doc$6, doc$7, doc$c, doc$d, doc$h, doc$9, doc$1, doc$g, doc$2, doc$e, doc$b, doc, doc$a, doc$i, doc$j].map(graphql.print).join('\n');
1080
+ var doc$k = {"kind":"Document","definitions":[{"kind":"ObjectTypeDefinition","name":{"kind":"Name","value":"StorePropertyValue"},"interfaces":[],"directives":[],"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"value"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},"directives":[]},{"kind":"FieldDefinition","name":{"kind":"Name","value":"name"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"String"}}},"directives":[]}]}],"loc":{"start":0,"end":61}};
1081
+ doc$k.loc.source = {"body":"type StorePropertyValue {\n value: String!\n name: String!\n}\n","name":"GraphQL request","locationOffset":{"line":1,"column":1}};
1082
+
1083
+ const typeDefs = /*#__PURE__*/[doc$f, doc$8, doc$3, doc$4, doc$5, doc$6, doc$7, doc$c, doc$d, doc$h, doc$9, doc$1, doc$g, doc$2, doc$e, doc$b, doc, doc$a, doc$i, doc$j, doc$k].map(graphql.print).join('\n');
1065
1084
 
1066
1085
  const platforms = {
1067
1086
  vtex: {
@@ -1 +1 @@
1
- {"version":3,"file":"api.cjs.development.js","sources":["../src/platforms/vtex/clients/fetch.ts","../src/platforms/vtex/clients/commerce/index.ts","../src/platforms/vtex/clients/search/index.ts","../src/platforms/vtex/clients/index.ts","../src/platforms/vtex/loaders/simulation.ts","../src/platforms/vtex/utils/errors.ts","../src/platforms/vtex/utils/enhanceSku.ts","../src/platforms/vtex/loaders/sku.ts","../src/platforms/vtex/loaders/index.ts","../src/platforms/vtex/resolvers/aggregateOffer.ts","../src/platforms/vtex/resolvers/aggregateRating.ts","../src/platforms/vtex/utils/slugify.ts","../src/platforms/vtex/resolvers/collection.ts","../src/platforms/vtex/resolvers/facet.ts","../src/platforms/vtex/resolvers/facetValue.ts","../src/platforms/vtex/resolvers/validateCart.ts","../src/platforms/vtex/resolvers/mutation.ts","../src/platforms/vtex/resolvers/offer.ts","../src/platforms/vtex/resolvers/product.ts","../src/platforms/vtex/resolvers/productGroup.ts","../src/platforms/vtex/utils/facets.ts","../src/platforms/vtex/utils/sort.ts","../src/platforms/vtex/resolvers/query.ts","../src/platforms/vtex/resolvers/review.ts","../src/platforms/vtex/resolvers/searchResult.ts","../src/platforms/vtex/resolvers/seo.ts","../src/platforms/vtex/index.ts","../src/typeDefs/index.ts","../src/index.ts"],"sourcesContent":["import fetch from 'isomorphic-unfetch'\n\nexport const fetchAPI = async (info: RequestInfo, init?: RequestInit) => {\n const response = await fetch(info, init)\n\n if (response.ok) {\n return response.json()\n }\n\n const text = await response.text()\n\n throw new Error(text)\n}\n","import type { Context, Options } from '../../index'\nimport { fetchAPI } from '../fetch'\nimport type { Brand } from './types/Brand'\nimport type { CategoryTree } from './types/CategoryTree'\nimport type { OrderForm, OrderFormInputItem } from './types/OrderForm'\nimport type { PortalPagetype } from './types/Portal'\nimport type {\n Simulation,\n SimulationArgs,\n SimulationOptions,\n} from './types/Simulation'\n\nconst BASE_INIT = {\n method: 'POST',\n headers: {\n 'content-type': 'application/json',\n },\n}\n\nexport const VtexCommerce = (\n { account, environment }: Options,\n ctx: Context\n) => {\n const base = `http://${account}.${environment}.com.br`\n\n return {\n catalog: {\n brand: {\n list: (): Promise<Brand[]> =>\n fetchAPI(`${base}/api/catalog_system/pub/brand/list`),\n },\n category: {\n tree: (depth = 3): Promise<CategoryTree[]> =>\n fetchAPI(`${base}/api/catalog_system/pub/category/tree/${depth}`),\n },\n portal: {\n pagetype: (slug: string): Promise<PortalPagetype> =>\n fetchAPI(`${base}/api/catalog_system/pub/portal/pagetype/${slug}`),\n },\n },\n checkout: {\n simulation: (\n args: SimulationArgs,\n { salesChannel }: SimulationOptions = {\n salesChannel: ctx.storage.channel,\n }\n ): Promise<Simulation> => {\n const params = new URLSearchParams({\n sc: salesChannel,\n })\n\n return fetchAPI(\n `${base}/api/checkout/pub/orderForms/simulation?${params.toString()}`,\n {\n ...BASE_INIT,\n body: JSON.stringify(args),\n }\n )\n },\n orderForm: ({\n id,\n refreshOutdatedData = true,\n salesChannel = ctx.storage.channel,\n }: {\n id: string\n refreshOutdatedData?: boolean\n salesChannel?: string\n }): Promise<OrderForm> => {\n const params = new URLSearchParams({\n refreshOutdatedData: refreshOutdatedData.toString(),\n sc: salesChannel,\n })\n\n return fetchAPI(\n `${base}/api/checkout/pub/orderForm/${id}?${params.toString()}`,\n BASE_INIT\n )\n },\n updateOrderFormItems: ({\n id,\n orderItems,\n allowOutdatedData = 'paymentData',\n salesChannel = ctx.storage.channel,\n }: {\n id: string\n orderItems: OrderFormInputItem[]\n allowOutdatedData?: 'paymentData'\n salesChannel?: string\n }): Promise<OrderForm> => {\n const params = new URLSearchParams({\n allowOutdatedData,\n sc: salesChannel,\n })\n\n return fetchAPI(\n `${base}/api/checkout/pub/orderForm/${id}/items?${params}`,\n {\n ...BASE_INIT,\n body: JSON.stringify({ orderItems }),\n method: 'PATCH',\n }\n )\n },\n },\n }\n}\n","import type { Context, Options } from '../../index'\nimport { fetchAPI } from '../fetch'\nimport type { SelectedFacet } from '../../utils/facets'\nimport type { ProductSearchResult } from './types/ProductSearchResult'\nimport type { AttributeSearchResult } from './types/AttributeSearchResult'\n\nexport type Sort =\n | 'price:desc'\n | 'price:asc'\n | 'orders:desc'\n | 'name:desc'\n | 'name:asc'\n | 'release:desc'\n | 'discount:desc'\n | ''\n\nexport interface SearchArgs {\n query?: string\n page: number\n count: number\n type: 'product_search' | 'attribute_search'\n sort?: Sort\n selectedFacets?: SelectedFacet[]\n fuzzy?: '0' | '1'\n}\n\nexport interface ProductLocator {\n field: 'id' | 'slug'\n value: string\n}\n\nexport const IntelligentSearch = (\n { account, environment }: Options,\n ctx: Context\n) => {\n const base = `http://portal.${environment}.com.br/search-api/v1/${account}`\n const policyFacet = { key: 'trade-policy', value: ctx.storage.channel }\n\n const addDefaultFacets = (facets: SelectedFacet[]) => {\n const facet = facets.find(({ key }) => key === policyFacet.key)\n\n if (facet === undefined) {\n return [...facets, policyFacet]\n }\n\n return facets\n }\n\n const search = <T>({\n query = '',\n page,\n count,\n sort = '',\n selectedFacets = [],\n type,\n fuzzy = '0',\n }: SearchArgs): Promise<T> => {\n const params = new URLSearchParams({\n page: (page + 1).toString(),\n count: count.toString(),\n query,\n sort,\n fuzzy,\n })\n\n const pathname = addDefaultFacets(selectedFacets)\n .map(({ key, value }) => `${key}/${value}`)\n .join('/')\n\n return fetchAPI(\n `${base}/api/split/${type}/${pathname}?${params.toString()}`\n )\n }\n\n const products = (args: Omit<SearchArgs, 'type'>) =>\n search<ProductSearchResult>({ ...args, type: 'product_search' })\n\n const facets = (args: Omit<SearchArgs, 'type'>) =>\n search<AttributeSearchResult>({ ...args, type: 'attribute_search' })\n\n return {\n facets,\n products,\n }\n}\n","import { VtexCommerce } from './commerce'\nimport { IntelligentSearch } from './search'\nimport type { Context, Options } from '..'\n\nexport type Clients = ReturnType<typeof getClients>\n\nexport const getClients = (options: Options, ctx: Context) => {\n const search = IntelligentSearch(options, ctx)\n const commerce = VtexCommerce(options, ctx)\n\n return {\n search,\n commerce,\n }\n}\n","import DataLoader from 'dataloader'\n\nimport type {\n PayloadItem,\n Simulation,\n} from '../clients/commerce/types/Simulation'\nimport type { Options } from '..'\nimport type { Clients } from '../clients'\n\nexport const getSimulationLoader = (_: Options, clients: Clients) => {\n const loader = async (allItems: readonly PayloadItem[][]) => {\n const items = [...allItems.flat()]\n const simulation = await clients.commerce.checkout.simulation({\n items,\n })\n\n // Sort and filter simulation since Checkout API may return\n // items that we didn't ask for\n const simulated = simulation.items.reduce((acc, item) => {\n const index = item.requestIndex\n\n if (typeof index === 'number' && index < acc.length) {\n acc[index] = item\n }\n\n return acc\n }, Array(items.length).fill(null) as Simulation['items'])\n\n const itemsIndices = allItems.reduce(\n (acc, curr) => [...acc, curr.length + acc[acc.length - 1]],\n [0]\n )\n\n return allItems.map((__, index) => ({\n ...simulation,\n items: simulated\n .slice(itemsIndices[index], itemsIndices[index + 1])\n .filter((item) => Boolean(item)),\n }))\n }\n\n return new DataLoader<PayloadItem[], Simulation>(loader, {\n maxBatchSize: 20,\n })\n}\n","export class BadRequestError extends Error {\n constructor(message: string) {\n super(message)\n this.name = 'BadRequestError'\n }\n}\n\nexport class NotFoundError extends Error {\n constructor(message: string) {\n super(message)\n this.name = 'NotFoundError'\n }\n}\n","import type { Product, Sku } from '../clients/search/types/ProductSearchResult'\n\nexport type EnhancedSku = Sku & { isVariantOf: Product }\n\nexport const enhanceSku = (sku: Sku, product: Product): EnhancedSku => ({\n ...sku,\n isVariantOf: product,\n})\n","import DataLoader from 'dataloader'\n\nimport { BadRequestError } from '../utils/errors'\nimport { enhanceSku } from '../utils/enhanceSku'\nimport type { EnhancedSku } from '../utils/enhanceSku'\nimport type { Options } from '..'\nimport type { Clients } from '../clients'\nimport type { SelectedFacet } from '../utils/facets'\n\nexport const getSkuLoader = (_: Options, clients: Clients) => {\n const loader = async (facetsList: readonly SelectedFacet[][]) => {\n const skuIds = facetsList.map((facets) => {\n const maybeFacet = facets.find(({ key }) => key === 'id')\n\n if (!maybeFacet) {\n throw new BadRequestError(\n 'Error while loading SKU. Needs to pass an id to selected facets'\n )\n }\n\n return maybeFacet.value\n })\n\n const { products } = await clients.search.products({\n query: `sku:${skuIds.join(';')}`,\n page: 0,\n count: skuIds.length,\n })\n\n const skuBySkuId = products.reduce((acc, product) => {\n for (const sku of product.skus) {\n acc[sku.id] = enhanceSku(sku, product)\n }\n\n return acc\n }, {} as Record<string, EnhancedSku>)\n\n const skus = skuIds.map((skuId) => skuBySkuId[skuId])\n const missingSkus = skus.filter((sku) => !sku)\n\n if (missingSkus.length > 0) {\n throw new Error(\n `Search API did not return the following skus: ${missingSkus.join(',')}`\n )\n }\n\n return skus\n }\n\n return new DataLoader<SelectedFacet[], EnhancedSku>(loader, {\n maxBatchSize: 99, // Max allowed batch size of Search API\n })\n}\n","import { getSimulationLoader } from './simulation'\nimport { getSkuLoader } from './sku'\nimport type { Context, Options } from '..'\n\nexport type Loaders = ReturnType<typeof getLoaders>\n\nexport const getLoaders = (options: Options, { clients }: Context) => {\n const skuLoader = getSkuLoader(options, clients)\n const simulationLoader = getSimulationLoader(options, clients)\n\n return {\n skuLoader,\n simulationLoader,\n }\n}\n","import type { EnhancedSku } from '../utils/enhanceSku'\nimport type { Simulation } from '../clients/commerce/types/Simulation'\n\ntype Resolvers = (root: Simulation & { product: EnhancedSku }) => unknown\n\nexport const StoreAggregateOffer: Record<string, Resolvers> = {\n highPrice: ({ items }) =>\n items.reduce(\n (acc, curr) => (acc > curr.sellingPrice ? acc : curr.sellingPrice),\n items[0]?.sellingPrice ?? 0\n ) / 1e2,\n lowPrice: ({ items }) =>\n items.reduce(\n (acc, curr) => (acc < curr.sellingPrice ? acc : curr.sellingPrice),\n items[0]?.sellingPrice ?? 0\n ) / 1e2,\n offerCount: ({ items }) => items.length,\n priceCurrency: () => '',\n offers: ({ items, product }) => items.map((item) => ({ ...item, product })),\n}\n","import type { Resolver } from '..'\n\n// TODO: Add a review system integration\nexport const StoreAggregateRating: Record<string, Resolver> = {\n ratingValue: () => 5,\n reviewCount: () => 0,\n}\n","import rawSlugify from '@sindresorhus/slugify'\n\nexport const slugify = (path: string) =>\n rawSlugify(path, { separator: '-', lowercase: true })\n","import { slugify as baseSlugify } from '../utils/slugify'\nimport type { Resolver } from '..'\nimport type { Brand } from '../clients/commerce/types/Brand'\nimport type { CategoryTree } from '../clients/commerce/types/CategoryTree'\nimport type { PortalPagetype } from '../clients/commerce/types/Portal'\n\ntype Root = Brand | (CategoryTree & { level: number }) | PortalPagetype\n\nconst isBrand = (x: any): x is Brand => x.type === 'brand'\n\nconst isPortalPageType = (x: any): x is PortalPagetype =>\n typeof x.pageType === 'string'\n\nconst slugify = (root: Root) => {\n if (isBrand(root)) {\n return baseSlugify(root.name)\n }\n\n if (isPortalPageType(root)) {\n return new URL(`https://${root.url}`).pathname.slice(1)\n }\n\n return new URL(root.url).pathname.slice(1)\n}\n\nexport const StoreCollection: Record<string, Resolver<Root>> = {\n id: ({ id }) => id.toString(),\n slug: (root) => slugify(root),\n seo: (root) =>\n isBrand(root) || isPortalPageType(root)\n ? {\n title: root.title,\n description: root.metaTagDescription,\n }\n : {\n title: root.Title,\n description: root.MetaTagDescription,\n },\n type: (root) =>\n isBrand(root)\n ? 'Brand'\n : isPortalPageType(root)\n ? root.pageType\n : root.level === 0\n ? 'Department'\n : 'Category',\n meta: (root) =>\n isBrand(root)\n ? {\n selectedFacets: [{ key: 'brand', value: baseSlugify(root.name) }],\n }\n : {\n selectedFacets: new URL(\n isPortalPageType(root) ? `https://${root.url}` : root.url\n ).pathname\n .slice(1)\n .split('/')\n .map((segment, index) => ({\n key: `category-${index + 1}`,\n value: baseSlugify(segment),\n })),\n },\n breadcrumbList: async (root, _, ctx) => {\n const {\n clients: { commerce },\n } = ctx\n\n const slug = slugify(root)\n\n /**\n * Split slug into segments so we fetch all data for\n * the breadcrumb. For instance, if we get `/foo/bar`\n * we need all metadata for both `/foo` and `/bar` and\n * thus we need to fetch pageType for `/foo` and `/bar`\n */\n const segments = slug.split('/').filter((segment) => Boolean(segment))\n const slugs = segments.map((__, index) =>\n segments.slice(0, index + 1).join('/')\n )\n\n const pageTypes = await Promise.all(\n slugs.map((s) => commerce.catalog.portal.pagetype(s))\n )\n\n return {\n itemListElement: pageTypes.map((pageType, index) => ({\n item: new URL(`https://${pageType.url}`).pathname,\n name: pageType.name,\n position: index + 1,\n })),\n numberOfItems: pageTypes.length,\n }\n },\n}\n","import type { Resolver } from '..'\nimport type { Attribute } from '../clients/search/types/AttributeSearchResult'\n\ntype Root = Attribute\n\nexport const StoreFacet: Record<string, Resolver<Root>> = {\n key: ({ key }) => key,\n label: ({ label }) => label,\n values: ({ values }) => values,\n type: ({ type }) => (type === 'text' ? 'BOOLEAN' : 'RANGE'),\n}\n","import type { Resolver } from '..'\nimport type { Value } from '../clients/search/types/AttributeSearchResult'\n\ntype Root = Value\n\nexport const StoreFacetValue: Record<string, Resolver<Root>> = {\n value: ({ key, from, to }) => key ?? `${from}-to-${to}`,\n label: ({ label }) => label ?? 'unknown',\n selected: ({ active }) => active,\n quantity: ({ count }) => count,\n}\n","import deepEquals from 'fast-deep-equal'\n\nimport type { IStoreCart, IStoreOffer } from '../../../__generated__/schema'\nimport type {\n OrderForm,\n OrderFormItem,\n OrderFormInputItem,\n} from '../clients/commerce/types/OrderForm'\nimport type { Context } from '..'\n\ntype Indexed<T> = T & { index?: number }\n\nconst getId = (item: IStoreOffer) =>\n [item.itemOffered.sku, item.seller.identifier, item.price].join('::')\n\nconst orderFormItemToOffer = (\n item: OrderFormItem,\n index?: number\n): Indexed<IStoreOffer> => ({\n listPrice: item.listPrice / 100,\n price: item.sellingPrice / 100,\n quantity: item.quantity,\n seller: { identifier: item.seller },\n itemOffered: {\n sku: item.id,\n image: [],\n name: item.name,\n },\n index,\n})\n\nconst offerToOrderItemInput = (\n offer: Indexed<IStoreOffer>\n): OrderFormInputItem => ({\n quantity: offer.quantity,\n seller: offer.seller.identifier,\n id: offer.itemOffered.sku,\n index: offer.index,\n})\n\nconst groupById = (offers: IStoreOffer[]): Map<string, IStoreOffer> =>\n offers.reduce((acc, item) => {\n const id = getId(item)\n\n acc.set(id, acc.get(id) ?? item)\n\n return acc\n }, new Map<string, IStoreOffer>())\n\nconst equals = (of1: OrderForm, of2: OrderForm) => {\n const pick = ({ orderFormId, messages, items, salesChannel }: OrderForm) => ({\n orderFormId,\n messages,\n salesChannel,\n items: items.map(\n ({ uniqueId, quantity, seller, sellingPrice, availability }) => ({\n uniqueId,\n quantity,\n seller,\n sellingPrice,\n availability,\n })\n ),\n })\n\n return deepEquals(pick(of1), pick(of2))\n}\n\n/**\n * This resolver implements the optimistic cart behavior. The main idea in here\n * is that we receive a cart from the UI (as query params) and we validate it with\n * the commerce platform. If the cart is valid, we return null, if the cart is\n * invalid according to the commerce platform, we return the new cart the UI should use\n * instead\n *\n * The algoritm is something like:\n * 1. Fetch orderForm from VTEX\n * 2. Compute delta changes between the orderForm and the UI's cart\n * 3. Update the orderForm in VTEX platform accordingly\n * 4. If any chages were made, send to the UI the new cart. Null otherwise\n */\nexport const validateCart = async (\n _: unknown,\n {\n cart: {\n order: { orderNumber, acceptedOffer },\n },\n }: { cart: IStoreCart },\n ctx: Context\n) => {\n const {\n clients: { commerce },\n loaders: { skuLoader },\n } = ctx\n\n // Step1: Get OrderForm from VTEX Commerce\n const orderForm = await commerce.checkout.orderForm({\n id: orderNumber,\n })\n\n // Step2: Process items from both browser and checkout so they have the same shape\n const browserItemsById = groupById(acceptedOffer)\n const originItemsById = groupById(orderForm.items.map(orderFormItemToOffer))\n const browserItems = Array.from(browserItemsById.values()) // items on the user's browser\n const originItems = Array.from(originItemsById.values()) // items on the VTEX platform backend\n\n // Step3: Compute delta changes\n const { itemsToAdd, itemsToUpdate } = browserItems.reduce(\n (acc, item) => {\n const maybeOriginItem = originItemsById.get(getId(item))\n\n if (!maybeOriginItem) {\n acc.itemsToAdd.push(item)\n } else {\n acc.itemsToUpdate.push({\n ...maybeOriginItem,\n quantity: item.quantity,\n })\n }\n\n return acc\n },\n {\n itemsToAdd: [] as IStoreOffer[],\n itemsToUpdate: [] as IStoreOffer[],\n }\n )\n\n const itemsToDelete = originItems\n .filter((item) => !browserItemsById.has(getId(item)))\n .map((item) => ({ ...item, quantity: 0 }))\n\n const changes = [...itemsToAdd, ...itemsToUpdate, ...itemsToDelete].map(\n offerToOrderItemInput\n )\n\n if (changes.length === 0) {\n return null\n }\n\n // Step4: Apply delta changes to order form\n const updatedOrderForm = await commerce.checkout.updateOrderFormItems({\n id: orderForm.orderFormId,\n orderItems: changes,\n })\n\n // Step5: If no changes detected before/after updating orderForm, the order is validated\n if (equals(orderForm, updatedOrderForm)) {\n return null\n }\n\n // Step6: There were changes, convert orderForm to StoreOrder\n return {\n order: {\n orderNumber: updatedOrderForm.orderFormId,\n acceptedOffer: updatedOrderForm.items.map((item) => ({\n ...item,\n product: skuLoader.load([{ key: 'id', value: item.id }]), // TODO: add channel\n })),\n },\n messages: updatedOrderForm.messages.map(({ text, status }) => ({\n text,\n status: status.toUpperCase(),\n })),\n }\n}\n","import { validateCart } from './validateCart'\n\nexport const Mutation = {\n validateCart,\n}\n","import type { EnhancedSku } from '../utils/enhanceSku'\nimport type { Resolver } from '..'\nimport type { Item } from '../clients/commerce/types/Simulation'\nimport type { OrderFormItem } from '../clients/commerce/types/OrderForm'\n\ntype Root =\n | (Item & { product: EnhancedSku }) // when querying search/product\n | (OrderFormItem & { product: Promise<EnhancedSku> }) // when querying order\n\nexport const StoreOffer: Record<string, Resolver<Root>> = {\n priceCurrency: () => '',\n priceValidUntil: ({ priceValidUntil }) => priceValidUntil ?? '',\n itemCondition: () => 'https://schema.org/NewCondition',\n availability: ({ availability }) =>\n availability === 'available'\n ? 'https://schema.org/InStock'\n : 'https://schema.org/OutOfStock',\n seller: ({ seller }) => ({\n identifier: seller,\n }),\n price: ({ sellingPrice }) => sellingPrice / 1e2, // TODO add spot price calculation\n sellingPrice: ({ sellingPrice }) => sellingPrice / 1e2,\n listPrice: ({ listPrice }) => listPrice / 1e2,\n itemOffered: ({ product }) => product,\n quantity: ({ quantity }) => quantity,\n}\n","import type { Resolver } from '..'\nimport type { EnhancedSku } from '../utils/enhanceSku'\n\ntype Root = EnhancedSku\n\nconst DEFAULT_IMAGE = {\n name: 'image',\n value:\n 'https://storecomponents.vtexassets.com/assets/faststore/images/image___117a6d3e229a96ad0e0d0876352566e2.svg',\n}\n\nconst getSlug = (link: string, id: string) => `${link}-${id}`\nconst getPath = (link: string, id: string) => `/${getSlug(link, id)}/p`\nconst nonEmptyArray = <T>(array: T[] | null | undefined) =>\n Array.isArray(array) && array.length > 0 ? array : null\n\nexport const StoreProduct: Record<string, Resolver<Root>> = {\n productID: ({ id }) => id,\n name: ({ isVariantOf, name }) => name ?? isVariantOf.name,\n slug: ({ isVariantOf: { link }, id }) => getSlug(link, id),\n description: ({ isVariantOf: { description } }) => description,\n seo: ({ isVariantOf: { name, description } }) => ({\n title: name,\n description,\n }),\n brand: ({ isVariantOf: { brand } }) => ({ name: brand }),\n breadcrumbList: ({ isVariantOf: { categoryTrees, name, link }, id }) => ({\n itemListElement: [\n ...categoryTrees.reverse().map(({ categoryNames }, index) => ({\n name: categoryNames[categoryNames.length - 1],\n item: `/${categoryNames.join('/').toLowerCase()}`,\n position: index + 1,\n })),\n {\n name,\n item: getPath(link, id),\n position: categoryTrees.length + 1,\n },\n ],\n numberOfItems: categoryTrees.length,\n }),\n image: ({ isVariantOf, images }) =>\n (\n nonEmptyArray(images) ??\n nonEmptyArray(isVariantOf.images) ?? [DEFAULT_IMAGE]\n ).map(({ name, value }) => ({\n alternateName: name ?? '',\n url: value.replace('vteximg.com.br', 'vtexassets.com'),\n })),\n sku: ({\n isVariantOf: {\n skus: [sku],\n },\n }) => sku.id,\n gtin: ({ reference }) => reference ?? '',\n review: () => [],\n aggregateRating: () => ({}),\n offers: async (product, _, ctx) => {\n const {\n loaders: { simulationLoader },\n storage: { channel },\n } = ctx\n\n const { id, policies } = product\n const sellers = policies.find((policy) => policy.id === channel)?.sellers\n\n if (sellers == null) {\n // This error will likely happen when you forget to forward the channel somewhere in your code.\n // Make sure all queries that lead to a product are forwarding the channel in context corectly\n throw new Error(\n `Product with id ${id} has no sellers for channel ${channel}.`\n )\n }\n\n // Unique seller ids\n const sellerIds = sellers.map((seller) => seller.id)\n const items = Array.from(new Set(sellerIds)).map((seller) => ({\n quantity: 1,\n seller,\n id,\n }))\n\n const simulation = await simulationLoader.load(items)\n\n return { ...simulation, product }\n },\n isVariantOf: ({ isVariantOf }) => isVariantOf,\n}\n","import { enhanceSku } from '../utils/enhanceSku'\nimport type { Product } from '../clients/search/types/ProductSearchResult'\nimport type { Resolver } from '..'\n\nexport const StoreProductGroup: Record<string, Resolver<Product>> = {\n hasVariant: (root) => root.skus.map((sku) => enhanceSku(sku, root)),\n productGroupID: ({ product }) => product,\n name: ({ name }) => name,\n}\n","import { BadRequestError } from './errors'\n\nexport interface SelectedFacet {\n key: string\n value: string\n}\n\nconst getIdFromSlug = (slug: string) => {\n const id = slug.split('-').pop()\n\n if (id == null) {\n throw new BadRequestError('Error while extracting sku id from product slug')\n }\n\n return id\n}\n\n/**\n * Transform facets from the store to VTEX platform facets.\n * For instance, the channel in Store becames trade-policy in VTEX's realm\n * */\nexport const transformSelectedFacet = ({ key, value }: SelectedFacet) => {\n switch (key) {\n case 'channel':\n return { key: 'trade-policy', value }\n\n case 'slug':\n return { key: 'id', value: getIdFromSlug(value) }\n\n default:\n return { key, value }\n }\n}\n","export const SORT_MAP = {\n price_desc: 'price:desc',\n price_asc: 'price:asc',\n orders_desc: 'orders:desc',\n name_desc: 'name:desc',\n name_asc: 'name:asc',\n release_desc: 'release:desc',\n discount_desc: 'discount:desc',\n score_desc: '',\n} as const\n","import { enhanceSku } from '../utils/enhanceSku'\nimport { NotFoundError } from '../utils/errors'\nimport { transformSelectedFacet } from '../utils/facets'\nimport { SORT_MAP } from '../utils/sort'\nimport { StoreCollection } from './collection'\nimport type {\n QueryProductArgs,\n QueryAllCollectionsArgs,\n QueryAllProductsArgs,\n QuerySearchArgs,\n QueryCollectionArgs,\n} from '../../../__generated__/schema'\nimport type { CategoryTree } from '../clients/commerce/types/CategoryTree'\nimport type { Context } from '../index'\n\nexport const Query = {\n product: async (_: unknown, { locator }: QueryProductArgs, ctx: Context) => {\n // Insert channel in context for later usage\n ctx.storage = {\n ...ctx.storage,\n channel:\n locator.find((facet) => facet.key === 'channel')?.value ??\n ctx.storage.channel,\n }\n\n const {\n loaders: { skuLoader },\n } = ctx\n\n return skuLoader.load(locator.map(transformSelectedFacet))\n },\n collection: async (\n _: unknown,\n { slug }: QueryCollectionArgs,\n ctx: Context\n ) => {\n const {\n clients: { commerce },\n } = ctx\n\n const result = await commerce.catalog.portal.pagetype(slug)\n\n const whitelist = ['Brand', 'Category', 'Department', 'Subcategory']\n\n if (whitelist.includes(result.pageType)) {\n return result\n }\n\n throw new NotFoundError(`Not Found: ${slug}`)\n },\n search: async (\n _: unknown,\n { first, after: maybeAfter, sort, term, selectedFacets }: QuerySearchArgs,\n ctx: Context\n ) => {\n // Insert channel in context for later usage\n ctx.storage = {\n ...ctx.storage,\n channel:\n selectedFacets?.find((facet) => facet.key === 'channel')?.value ??\n ctx.storage.channel,\n }\n\n const after = maybeAfter ? Number(maybeAfter) : 0\n const searchArgs = {\n page: Math.ceil(after / first),\n count: first,\n query: term,\n sort: SORT_MAP[sort ?? 'score_desc'],\n selectedFacets: selectedFacets?.map(transformSelectedFacet) ?? [],\n }\n\n return searchArgs\n },\n allProducts: async (\n _: unknown,\n { first, after: maybeAfter }: QueryAllProductsArgs,\n ctx: Context\n ) => {\n const {\n clients: { search },\n } = ctx\n\n const after = maybeAfter ? Number(maybeAfter) : 0\n const products = await search.products({\n page: Math.ceil(after / first),\n count: first,\n })\n\n const skus = products.products\n .map((product) => product.skus.map((sku) => enhanceSku(sku, product)))\n .flat()\n .filter((sku) => sku.sellers.length > 0)\n\n return {\n pageInfo: {\n hasNextPage: products.pagination.after.length > 0,\n hasPreviousPage: products.pagination.before.length > 0,\n startCursor: '0',\n endCursor: products.total.toString(),\n totalCount: products.total,\n },\n edges: skus.map((sku, index) => ({\n node: sku,\n cursor: (after + index).toString(),\n })),\n }\n },\n allCollections: async (\n _: unknown,\n { first, after: maybeAfter }: QueryAllCollectionsArgs,\n ctx: Context\n ) => {\n const {\n clients: { commerce },\n } = ctx\n\n const after = maybeAfter ? Number(maybeAfter) : 0\n\n const [brands, tree] = await Promise.all([\n commerce.catalog.brand.list(),\n commerce.catalog.category.tree(),\n ])\n\n const categories: Array<CategoryTree & { level: number }> = []\n const dfs = (node: CategoryTree, level: number) => {\n categories.push({ ...node, level })\n\n for (const child of node.children) {\n dfs(child, level + 1)\n }\n }\n\n for (const node of tree) {\n dfs(node, 0)\n }\n\n const collections = [\n ...brands.map((x) => ({ ...x, type: 'brand' })),\n ...categories,\n ]\n\n return {\n pageInfo: {\n hasNextPage: false,\n hasPreviousPage: false,\n startCursor: '0',\n endCursor: '0',\n },\n edges: collections\n // Nullable slugs may cause one route to override the other\n .filter((node) => Boolean(StoreCollection.slug(node, null, ctx, null)))\n .slice(after, first)\n .map((node, index) => ({\n node,\n cursor: index.toString(),\n })),\n }\n },\n}\n","import type { Resolver } from '..'\n\nexport const StoreReview: Record<string, Resolver> = {\n reviewRating: () => ({\n ratingValue: 5,\n bestRating: 5,\n }),\n author: () => ({\n name: '',\n }),\n}\n","import { enhanceSku } from '../utils/enhanceSku'\nimport type { Resolver } from '..'\nimport type { SearchArgs } from '../clients/search'\n\ntype Root = Omit<SearchArgs, 'type'>\n\nexport const StoreSearchResult: Record<string, Resolver<Root>> = {\n products: async (searchArgs, _, ctx) => {\n const {\n clients: { search },\n } = ctx\n\n const products = await search.products(searchArgs)\n\n const skus = products.products\n .map((product) => {\n const maybeSku = product.skus.find((x) => x.sellers.length > 0)\n\n return maybeSku && enhanceSku(maybeSku, product)\n })\n .filter((sku) => !!sku)\n\n return {\n pageInfo: {\n hasNextPage: products.pagination.after.length > 0,\n hasPreviousPage: products.pagination.before.length > 0,\n startCursor: '0',\n endCursor: products.total.toString(),\n totalCount: products.total,\n },\n edges: skus.map((sku, index) => ({\n node: sku,\n cursor: index.toString(),\n })),\n }\n },\n facets: async (searchArgs, _, ctx) => {\n const {\n clients: { search: is },\n } = ctx\n\n const facets = await is.facets(searchArgs)\n\n return facets.attributes ?? []\n },\n}\n","import type { Resolver } from '..'\n\ntype Root = { title?: string; description?: string }\n\nexport const StoreSeo: Record<string, Resolver<Root>> = {\n title: ({ title }) => title ?? '',\n description: ({ description }) => description ?? '',\n titleTemplate: () => '',\n canonical: () => '',\n}\n","import { getClients } from './clients'\nimport { getLoaders } from './loaders'\nimport { StoreAggregateOffer } from './resolvers/aggregateOffer'\nimport { StoreAggregateRating } from './resolvers/aggregateRating'\nimport { StoreCollection } from './resolvers/collection'\nimport { StoreFacet } from './resolvers/facet'\nimport { StoreFacetValue } from './resolvers/facetValue'\nimport { Mutation } from './resolvers/mutation'\nimport { StoreOffer } from './resolvers/offer'\nimport { StoreProduct } from './resolvers/product'\nimport { StoreProductGroup } from './resolvers/productGroup'\nimport { Query } from './resolvers/query'\nimport { StoreReview } from './resolvers/review'\nimport { StoreSearchResult } from './resolvers/searchResult'\nimport { StoreSeo } from './resolvers/seo'\nimport type { Loaders } from './loaders'\nimport type { Clients } from './clients'\n\nexport interface Options {\n platform: 'vtex'\n account: string\n environment: 'vtexcommercestable' | 'vtexcommercebeta'\n // Default sales channel to use for fetching products\n channel: string\n}\n\nexport interface Context {\n clients: Clients\n loaders: Loaders\n /**\n * @description Storage updated at each request.\n *\n * Use this datastructure to store and share small values in the context.\n * Use it with caution since dependecy injection leads to a more complex code\n * */\n storage: {\n channel: string\n }\n}\n\nexport type Resolver<R = unknown, A = unknown> = (\n root: R,\n args: A,\n ctx: Context,\n info: any\n) => any\n\nconst Resolvers = {\n StoreCollection,\n StoreAggregateOffer,\n StoreProduct,\n StoreSeo,\n StoreFacet,\n StoreFacetValue,\n StoreOffer,\n StoreAggregateRating,\n StoreReview,\n StoreProductGroup,\n StoreSearchResult,\n Query,\n Mutation,\n}\n\nexport const getContextFactory = (options: Options) => (ctx: any) => {\n ctx.storage = {\n channel: options.channel,\n }\n ctx.clients = getClients(options, ctx)\n ctx.loaders = getLoaders(options, ctx)\n\n return ctx\n}\n\nexport const getResolvers = (_: Options) => Resolvers\n","import { print } from 'graphql'\n\nimport AggregateOffer from './aggregateOffer.graphql'\nimport AggregateRating from './aggregateRating.graphql'\nimport Author from './author.graphql'\nimport Brand from './brand.graphql'\nimport Breadcrumb from './breadcrumb.graphql'\nimport Collection from './collection.graphql'\nimport Facet from './facet.graphql'\nimport Image from './image.graphql'\nimport Mutation from './mutation.graphql'\nimport Offer from './offer.graphql'\nimport Order from './order.graphql'\nimport Organization from './organization.graphql'\nimport PageInfo from './pageInfo.graphql'\nimport Product from './product.graphql'\nimport ProductGroup from './productGroup.graphql'\nimport Query from './query.graphql'\nimport Review from './review.graphql'\nimport Seo from './seo.graphql'\nimport Cart from './cart.graphql'\nimport Status from './status.graphql'\n\nexport const typeDefs = [\n Query,\n Mutation,\n Brand,\n Breadcrumb,\n Collection,\n Facet,\n Image,\n PageInfo,\n Product,\n Seo,\n Offer,\n AggregateRating,\n Review,\n Author,\n ProductGroup,\n Organization,\n AggregateOffer,\n Order,\n Cart,\n Status,\n]\n .map(print)\n .join('\\n')\n","import { makeExecutableSchema } from '@graphql-tools/schema'\n\nimport {\n getContextFactory as getContextFactoryVTEX,\n getResolvers as getResolversVTEX,\n} from './platforms/vtex'\nimport { typeDefs } from './typeDefs'\nimport type { Options as OptionsVTEX } from './platforms/vtex'\n\nexport * from './__generated__/schema'\n\nexport type Options = OptionsVTEX\n\nconst platforms = {\n vtex: {\n getResolvers: getResolversVTEX,\n getContextFactory: getContextFactoryVTEX,\n },\n}\n\nexport const getTypeDefs = () => typeDefs\n\nexport const getResolvers = (options: Options) =>\n platforms[options.platform].getResolvers(options)\n\nexport const getContextFactory = (options: Options) =>\n platforms[options.platform].getContextFactory(options)\n\nexport const getSchema = async (options: Options) =>\n makeExecutableSchema({\n resolvers: getResolvers(options),\n typeDefs: getTypeDefs(),\n })\n"],"names":["fetchAPI","info","init","response","fetch","ok","json","text","Error","BASE_INIT","method","headers","VtexCommerce","account","environment","ctx","base","catalog","brand","list","category","tree","depth","portal","pagetype","slug","checkout","simulation","args","salesChannel","storage","channel","params","URLSearchParams","sc","toString","body","JSON","stringify","orderForm","id","refreshOutdatedData","updateOrderFormItems","orderItems","allowOutdatedData","IntelligentSearch","policyFacet","key","value","addDefaultFacets","facets","facet","find","undefined","search","query","page","count","sort","selectedFacets","type","fuzzy","pathname","map","join","products","getClients","options","commerce","getSimulationLoader","_","clients","loader","allItems","items","flat","simulated","reduce","acc","item","index","requestIndex","length","Array","fill","itemsIndices","curr","__","slice","filter","Boolean","DataLoader","maxBatchSize","BadRequestError","constructor","message","name","NotFoundError","enhanceSku","sku","product","isVariantOf","getSkuLoader","facetsList","skuIds","maybeFacet","skuBySkuId","skus","skuId","missingSkus","getLoaders","skuLoader","simulationLoader","StoreAggregateOffer","highPrice","sellingPrice","lowPrice","offerCount","priceCurrency","offers","StoreAggregateRating","ratingValue","reviewCount","slugify","path","rawSlugify","separator","lowercase","isBrand","x","isPortalPageType","pageType","root","baseSlugify","URL","url","StoreCollection","seo","title","description","metaTagDescription","Title","MetaTagDescription","level","meta","split","segment","breadcrumbList","segments","slugs","pageTypes","Promise","all","s","itemListElement","position","numberOfItems","StoreFacet","label","values","StoreFacetValue","from","to","selected","active","quantity","getId","itemOffered","seller","identifier","price","orderFormItemToOffer","listPrice","image","offerToOrderItemInput","offer","groupById","set","get","Map","equals","of1","of2","pick","orderFormId","messages","uniqueId","availability","deepEquals","validateCart","cart","order","orderNumber","acceptedOffer","loaders","browserItemsById","originItemsById","browserItems","originItems","itemsToAdd","itemsToUpdate","maybeOriginItem","push","itemsToDelete","has","changes","updatedOrderForm","load","status","toUpperCase","Mutation","StoreOffer","priceValidUntil","itemCondition","DEFAULT_IMAGE","getSlug","link","getPath","nonEmptyArray","array","isArray","StoreProduct","productID","categoryTrees","reverse","categoryNames","toLowerCase","images","alternateName","replace","gtin","reference","review","aggregateRating","policies","sellers","policy","sellerIds","Set","StoreProductGroup","hasVariant","productGroupID","getIdFromSlug","pop","transformSelectedFacet","SORT_MAP","price_desc","price_asc","orders_desc","name_desc","name_asc","release_desc","discount_desc","score_desc","Query","locator","collection","result","whitelist","includes","first","after","maybeAfter","term","Number","searchArgs","Math","ceil","allProducts","pageInfo","hasNextPage","pagination","hasPreviousPage","before","startCursor","endCursor","total","totalCount","edges","node","cursor","allCollections","brands","categories","dfs","child","children","collections","StoreReview","reviewRating","bestRating","author","StoreSearchResult","maybeSku","is","attributes","StoreSeo","titleTemplate","canonical","Resolvers","getContextFactory","getResolvers","typeDefs","Brand","Breadcrumb","Collection","Facet","Image","PageInfo","Product","Seo","Offer","AggregateRating","Review","Author","ProductGroup","Organization","AggregateOffer","Order","Cart","Status","print","platforms","vtex","getResolversVTEX","getContextFactoryVTEX","getTypeDefs","platform","getSchema","makeExecutableSchema","resolvers"],"mappings":"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"}
1
+ {"version":3,"file":"api.cjs.development.js","sources":["../src/platforms/vtex/clients/fetch.ts","../src/platforms/vtex/clients/commerce/index.ts","../src/platforms/vtex/clients/search/index.ts","../src/platforms/vtex/clients/index.ts","../src/platforms/vtex/loaders/simulation.ts","../src/platforms/vtex/utils/errors.ts","../src/platforms/vtex/utils/enhanceSku.ts","../src/platforms/vtex/loaders/sku.ts","../src/platforms/vtex/loaders/index.ts","../src/platforms/vtex/resolvers/aggregateOffer.ts","../src/platforms/vtex/resolvers/aggregateRating.ts","../src/platforms/vtex/utils/slugify.ts","../src/platforms/vtex/resolvers/collection.ts","../src/platforms/vtex/resolvers/facet.ts","../src/platforms/vtex/resolvers/facetValue.ts","../src/platforms/vtex/resolvers/validateCart.ts","../src/platforms/vtex/resolvers/mutation.ts","../src/platforms/vtex/resolvers/offer.ts","../src/platforms/vtex/resolvers/product.ts","../src/platforms/vtex/resolvers/productGroup.ts","../src/platforms/vtex/utils/facets.ts","../src/platforms/vtex/utils/sort.ts","../src/platforms/vtex/resolvers/query.ts","../src/platforms/vtex/resolvers/review.ts","../src/platforms/vtex/resolvers/searchResult.ts","../src/platforms/vtex/resolvers/seo.ts","../src/platforms/vtex/index.ts","../src/typeDefs/index.ts","../src/index.ts"],"sourcesContent":["import fetch from 'isomorphic-unfetch'\n\nexport const fetchAPI = async (info: RequestInfo, init?: RequestInit) => {\n const response = await fetch(info, init)\n\n if (response.ok) {\n return response.json()\n }\n\n const text = await response.text()\n\n throw new Error(text)\n}\n","import type { Context, Options } from '../../index'\nimport { fetchAPI } from '../fetch'\nimport type { Brand } from './types/Brand'\nimport type { CategoryTree } from './types/CategoryTree'\nimport type { OrderForm, OrderFormInputItem } from './types/OrderForm'\nimport type { PortalPagetype } from './types/Portal'\nimport type {\n Simulation,\n SimulationArgs,\n SimulationOptions,\n} from './types/Simulation'\n\nconst BASE_INIT = {\n method: 'POST',\n headers: {\n 'content-type': 'application/json',\n },\n}\n\nexport const VtexCommerce = (\n { account, environment }: Options,\n ctx: Context\n) => {\n const base = `http://${account}.${environment}.com.br`\n\n return {\n catalog: {\n brand: {\n list: (): Promise<Brand[]> =>\n fetchAPI(`${base}/api/catalog_system/pub/brand/list`),\n },\n category: {\n tree: (depth = 3): Promise<CategoryTree[]> =>\n fetchAPI(`${base}/api/catalog_system/pub/category/tree/${depth}`),\n },\n portal: {\n pagetype: (slug: string): Promise<PortalPagetype> =>\n fetchAPI(`${base}/api/catalog_system/pub/portal/pagetype/${slug}`),\n },\n },\n checkout: {\n simulation: (\n args: SimulationArgs,\n { salesChannel }: SimulationOptions = {\n salesChannel: ctx.storage.channel,\n }\n ): Promise<Simulation> => {\n const params = new URLSearchParams({\n sc: salesChannel,\n })\n\n return fetchAPI(\n `${base}/api/checkout/pub/orderForms/simulation?${params.toString()}`,\n {\n ...BASE_INIT,\n body: JSON.stringify(args),\n }\n )\n },\n orderForm: ({\n id,\n refreshOutdatedData = true,\n salesChannel = ctx.storage.channel,\n }: {\n id: string\n refreshOutdatedData?: boolean\n salesChannel?: string\n }): Promise<OrderForm> => {\n const params = new URLSearchParams({\n refreshOutdatedData: refreshOutdatedData.toString(),\n sc: salesChannel,\n })\n\n return fetchAPI(\n `${base}/api/checkout/pub/orderForm/${id}?${params.toString()}`,\n BASE_INIT\n )\n },\n updateOrderFormItems: ({\n id,\n orderItems,\n allowOutdatedData = 'paymentData',\n salesChannel = ctx.storage.channel,\n }: {\n id: string\n orderItems: OrderFormInputItem[]\n allowOutdatedData?: 'paymentData'\n salesChannel?: string\n }): Promise<OrderForm> => {\n const params = new URLSearchParams({\n allowOutdatedData,\n sc: salesChannel,\n })\n\n return fetchAPI(\n `${base}/api/checkout/pub/orderForm/${id}/items?${params}`,\n {\n ...BASE_INIT,\n body: JSON.stringify({ orderItems }),\n method: 'PATCH',\n }\n )\n },\n },\n }\n}\n","import type { Context, Options } from '../../index'\nimport { fetchAPI } from '../fetch'\nimport type { SelectedFacet } from '../../utils/facets'\nimport type { ProductSearchResult } from './types/ProductSearchResult'\nimport type { AttributeSearchResult } from './types/AttributeSearchResult'\n\nexport type Sort =\n | 'price:desc'\n | 'price:asc'\n | 'orders:desc'\n | 'name:desc'\n | 'name:asc'\n | 'release:desc'\n | 'discount:desc'\n | ''\n\nexport interface SearchArgs {\n query?: string\n page: number\n count: number\n type: 'product_search' | 'attribute_search'\n sort?: Sort\n selectedFacets?: SelectedFacet[]\n fuzzy?: '0' | '1'\n}\n\nexport interface ProductLocator {\n field: 'id' | 'slug'\n value: string\n}\n\nexport const IntelligentSearch = (\n { account, environment }: Options,\n ctx: Context\n) => {\n const base = `http://portal.${environment}.com.br/search-api/v1/${account}`\n const policyFacet = { key: 'trade-policy', value: ctx.storage.channel }\n\n const addDefaultFacets = (facets: SelectedFacet[]) => {\n const facet = facets.find(({ key }) => key === policyFacet.key)\n\n if (facet === undefined) {\n return [...facets, policyFacet]\n }\n\n return facets\n }\n\n const search = <T>({\n query = '',\n page,\n count,\n sort = '',\n selectedFacets = [],\n type,\n fuzzy = '0',\n }: SearchArgs): Promise<T> => {\n const params = new URLSearchParams({\n page: (page + 1).toString(),\n count: count.toString(),\n query,\n sort,\n fuzzy,\n })\n\n const pathname = addDefaultFacets(selectedFacets)\n .map(({ key, value }) => `${key}/${value}`)\n .join('/')\n\n return fetchAPI(\n `${base}/api/split/${type}/${pathname}?${params.toString()}`\n )\n }\n\n const products = (args: Omit<SearchArgs, 'type'>) =>\n search<ProductSearchResult>({ ...args, type: 'product_search' })\n\n const facets = (args: Omit<SearchArgs, 'type'>) =>\n search<AttributeSearchResult>({ ...args, type: 'attribute_search' })\n\n return {\n facets,\n products,\n }\n}\n","import { VtexCommerce } from './commerce'\nimport { IntelligentSearch } from './search'\nimport type { Context, Options } from '..'\n\nexport type Clients = ReturnType<typeof getClients>\n\nexport const getClients = (options: Options, ctx: Context) => {\n const search = IntelligentSearch(options, ctx)\n const commerce = VtexCommerce(options, ctx)\n\n return {\n search,\n commerce,\n }\n}\n","import DataLoader from 'dataloader'\n\nimport type {\n PayloadItem,\n Simulation,\n} from '../clients/commerce/types/Simulation'\nimport type { Options } from '..'\nimport type { Clients } from '../clients'\n\nexport const getSimulationLoader = (_: Options, clients: Clients) => {\n const loader = async (allItems: readonly PayloadItem[][]) => {\n const items = [...allItems.flat()]\n const simulation = await clients.commerce.checkout.simulation({\n items,\n })\n\n // Sort and filter simulation since Checkout API may return\n // items that we didn't ask for\n const simulated = simulation.items.reduce((acc, item) => {\n const index = item.requestIndex\n\n if (typeof index === 'number' && index < acc.length) {\n acc[index] = item\n }\n\n return acc\n }, Array(items.length).fill(null) as Simulation['items'])\n\n const itemsIndices = allItems.reduce(\n (acc, curr) => [...acc, curr.length + acc[acc.length - 1]],\n [0]\n )\n\n return allItems.map((__, index) => ({\n ...simulation,\n items: simulated\n .slice(itemsIndices[index], itemsIndices[index + 1])\n .filter((item) => Boolean(item)),\n }))\n }\n\n return new DataLoader<PayloadItem[], Simulation>(loader, {\n maxBatchSize: 20,\n })\n}\n","export class BadRequestError extends Error {\n constructor(message: string) {\n super(message)\n this.name = 'BadRequestError'\n }\n}\n\nexport class NotFoundError extends Error {\n constructor(message: string) {\n super(message)\n this.name = 'NotFoundError'\n }\n}\n","import type { Product, Sku } from '../clients/search/types/ProductSearchResult'\n\nexport type EnhancedSku = Sku & { isVariantOf: Product }\n\nexport const enhanceSku = (sku: Sku, product: Product): EnhancedSku => ({\n ...sku,\n isVariantOf: product,\n})\n","import DataLoader from 'dataloader'\n\nimport { BadRequestError } from '../utils/errors'\nimport { enhanceSku } from '../utils/enhanceSku'\nimport type { EnhancedSku } from '../utils/enhanceSku'\nimport type { Options } from '..'\nimport type { Clients } from '../clients'\nimport type { SelectedFacet } from '../utils/facets'\n\nexport const getSkuLoader = (_: Options, clients: Clients) => {\n const loader = async (facetsList: readonly SelectedFacet[][]) => {\n const skuIds = facetsList.map((facets) => {\n const maybeFacet = facets.find(({ key }) => key === 'id')\n\n if (!maybeFacet) {\n throw new BadRequestError(\n 'Error while loading SKU. Needs to pass an id to selected facets'\n )\n }\n\n return maybeFacet.value\n })\n\n const { products } = await clients.search.products({\n query: `sku:${skuIds.join(';')}`,\n page: 0,\n count: skuIds.length,\n })\n\n const skuBySkuId = products.reduce((acc, product) => {\n for (const sku of product.skus) {\n acc[sku.id] = enhanceSku(sku, product)\n }\n\n return acc\n }, {} as Record<string, EnhancedSku>)\n\n const skus = skuIds.map((skuId) => skuBySkuId[skuId])\n const missingSkus = skus.filter((sku) => !sku)\n\n if (missingSkus.length > 0) {\n throw new Error(\n `Search API did not return the following skus: ${missingSkus.join(',')}`\n )\n }\n\n return skus\n }\n\n return new DataLoader<SelectedFacet[], EnhancedSku>(loader, {\n maxBatchSize: 99, // Max allowed batch size of Search API\n })\n}\n","import { getSimulationLoader } from './simulation'\nimport { getSkuLoader } from './sku'\nimport type { Context, Options } from '..'\n\nexport type Loaders = ReturnType<typeof getLoaders>\n\nexport const getLoaders = (options: Options, { clients }: Context) => {\n const skuLoader = getSkuLoader(options, clients)\n const simulationLoader = getSimulationLoader(options, clients)\n\n return {\n skuLoader,\n simulationLoader,\n }\n}\n","import type { EnhancedSku } from '../utils/enhanceSku'\nimport type { Simulation } from '../clients/commerce/types/Simulation'\n\ntype Resolvers = (root: Simulation & { product: EnhancedSku }) => unknown\n\nexport const StoreAggregateOffer: Record<string, Resolvers> = {\n highPrice: ({ items }) =>\n items.reduce(\n (acc, curr) => (acc > curr.sellingPrice ? acc : curr.sellingPrice),\n items[0]?.sellingPrice ?? 0\n ) / 1e2,\n lowPrice: ({ items }) =>\n items.reduce(\n (acc, curr) => (acc < curr.sellingPrice ? acc : curr.sellingPrice),\n items[0]?.sellingPrice ?? 0\n ) / 1e2,\n offerCount: ({ items }) => items.length,\n priceCurrency: () => '',\n offers: ({ items, product }) => items.map((item) => ({ ...item, product })),\n}\n","import type { Resolver } from '..'\n\n// TODO: Add a review system integration\nexport const StoreAggregateRating: Record<string, Resolver> = {\n ratingValue: () => 5,\n reviewCount: () => 0,\n}\n","import rawSlugify from '@sindresorhus/slugify'\n\nexport const slugify = (path: string) =>\n rawSlugify(path, { separator: '-', lowercase: true })\n","import { slugify as baseSlugify } from '../utils/slugify'\nimport type { Resolver } from '..'\nimport type { Brand } from '../clients/commerce/types/Brand'\nimport type { CategoryTree } from '../clients/commerce/types/CategoryTree'\nimport type { PortalPagetype } from '../clients/commerce/types/Portal'\n\ntype Root = Brand | (CategoryTree & { level: number }) | PortalPagetype\n\nconst isBrand = (x: any): x is Brand => x.type === 'brand'\n\nconst isPortalPageType = (x: any): x is PortalPagetype =>\n typeof x.pageType === 'string'\n\nconst slugify = (root: Root) => {\n if (isBrand(root)) {\n return baseSlugify(root.name)\n }\n\n if (isPortalPageType(root)) {\n return new URL(`https://${root.url}`).pathname.slice(1)\n }\n\n return new URL(root.url).pathname.slice(1)\n}\n\nexport const StoreCollection: Record<string, Resolver<Root>> = {\n id: ({ id }) => id.toString(),\n slug: (root) => slugify(root),\n seo: (root) =>\n isBrand(root) || isPortalPageType(root)\n ? {\n title: root.title,\n description: root.metaTagDescription,\n }\n : {\n title: root.Title,\n description: root.MetaTagDescription,\n },\n type: (root) =>\n isBrand(root)\n ? 'Brand'\n : isPortalPageType(root)\n ? root.pageType\n : root.level === 0\n ? 'Department'\n : 'Category',\n meta: (root) =>\n isBrand(root)\n ? {\n selectedFacets: [{ key: 'brand', value: baseSlugify(root.name) }],\n }\n : {\n selectedFacets: new URL(\n isPortalPageType(root) ? `https://${root.url}` : root.url\n ).pathname\n .slice(1)\n .split('/')\n .map((segment, index) => ({\n key: `category-${index + 1}`,\n value: baseSlugify(segment),\n })),\n },\n breadcrumbList: async (root, _, ctx) => {\n const {\n clients: { commerce },\n } = ctx\n\n const slug = slugify(root)\n\n /**\n * Split slug into segments so we fetch all data for\n * the breadcrumb. For instance, if we get `/foo/bar`\n * we need all metadata for both `/foo` and `/bar` and\n * thus we need to fetch pageType for `/foo` and `/bar`\n */\n const segments = slug.split('/').filter((segment) => Boolean(segment))\n const slugs = segments.map((__, index) =>\n segments.slice(0, index + 1).join('/')\n )\n\n const pageTypes = await Promise.all(\n slugs.map((s) => commerce.catalog.portal.pagetype(s))\n )\n\n return {\n itemListElement: pageTypes.map((pageType, index) => ({\n item: new URL(`https://${pageType.url}`).pathname.toLowerCase(),\n name: pageType.name,\n position: index + 1,\n })),\n numberOfItems: pageTypes.length,\n }\n },\n}\n","import type { Resolver } from '..'\nimport type { Attribute } from '../clients/search/types/AttributeSearchResult'\n\ntype Root = Attribute\n\nexport const StoreFacet: Record<string, Resolver<Root>> = {\n key: ({ key }) => key,\n label: ({ label }) => label,\n values: ({ values }) => values,\n type: ({ type }) => (type === 'text' ? 'BOOLEAN' : 'RANGE'),\n}\n","import type { Resolver } from '..'\nimport type { Value } from '../clients/search/types/AttributeSearchResult'\n\ntype Root = Value\n\nexport const StoreFacetValue: Record<string, Resolver<Root>> = {\n value: ({ key, from, to }) => key ?? `${from}-to-${to}`,\n label: ({ label }) => label ?? 'unknown',\n selected: ({ active }) => active,\n quantity: ({ count }) => count,\n}\n","import deepEquals from 'fast-deep-equal'\n\nimport type { IStoreCart, IStoreOffer } from '../../../__generated__/schema'\nimport type {\n OrderForm,\n OrderFormItem,\n OrderFormInputItem,\n} from '../clients/commerce/types/OrderForm'\nimport type { Context } from '..'\n\ntype Indexed<T> = T & { index?: number }\n\nconst getId = (item: IStoreOffer) =>\n [item.itemOffered.sku, item.seller.identifier, item.price].join('::')\n\nconst orderFormItemToOffer = (\n item: OrderFormItem,\n index?: number\n): Indexed<IStoreOffer> => ({\n listPrice: item.listPrice / 100,\n price: item.sellingPrice / 100,\n quantity: item.quantity,\n seller: { identifier: item.seller },\n itemOffered: {\n sku: item.id,\n image: [],\n name: item.name,\n },\n index,\n})\n\nconst offerToOrderItemInput = (\n offer: Indexed<IStoreOffer>\n): OrderFormInputItem => ({\n quantity: offer.quantity,\n seller: offer.seller.identifier,\n id: offer.itemOffered.sku,\n index: offer.index,\n})\n\nconst groupById = (offers: IStoreOffer[]): Map<string, IStoreOffer> =>\n offers.reduce((acc, item) => {\n const id = getId(item)\n\n acc.set(id, acc.get(id) ?? item)\n\n return acc\n }, new Map<string, IStoreOffer>())\n\nconst equals = (of1: OrderForm, of2: OrderForm) => {\n const pick = ({ orderFormId, messages, items, salesChannel }: OrderForm) => ({\n orderFormId,\n messages,\n salesChannel,\n items: items.map(\n ({ uniqueId, quantity, seller, sellingPrice, availability }) => ({\n uniqueId,\n quantity,\n seller,\n sellingPrice,\n availability,\n })\n ),\n })\n\n return deepEquals(pick(of1), pick(of2))\n}\n\n/**\n * This resolver implements the optimistic cart behavior. The main idea in here\n * is that we receive a cart from the UI (as query params) and we validate it with\n * the commerce platform. If the cart is valid, we return null, if the cart is\n * invalid according to the commerce platform, we return the new cart the UI should use\n * instead\n *\n * The algoritm is something like:\n * 1. Fetch orderForm from VTEX\n * 2. Compute delta changes between the orderForm and the UI's cart\n * 3. Update the orderForm in VTEX platform accordingly\n * 4. If any chages were made, send to the UI the new cart. Null otherwise\n */\nexport const validateCart = async (\n _: unknown,\n {\n cart: {\n order: { orderNumber, acceptedOffer },\n },\n }: { cart: IStoreCart },\n ctx: Context\n) => {\n const {\n clients: { commerce },\n loaders: { skuLoader },\n } = ctx\n\n // Step1: Get OrderForm from VTEX Commerce\n const orderForm = await commerce.checkout.orderForm({\n id: orderNumber,\n })\n\n // Step2: Process items from both browser and checkout so they have the same shape\n const browserItemsById = groupById(acceptedOffer)\n const originItemsById = groupById(orderForm.items.map(orderFormItemToOffer))\n const browserItems = Array.from(browserItemsById.values()) // items on the user's browser\n const originItems = Array.from(originItemsById.values()) // items on the VTEX platform backend\n\n // Step3: Compute delta changes\n const { itemsToAdd, itemsToUpdate } = browserItems.reduce(\n (acc, item) => {\n const maybeOriginItem = originItemsById.get(getId(item))\n\n if (!maybeOriginItem) {\n acc.itemsToAdd.push(item)\n } else {\n acc.itemsToUpdate.push({\n ...maybeOriginItem,\n quantity: item.quantity,\n })\n }\n\n return acc\n },\n {\n itemsToAdd: [] as IStoreOffer[],\n itemsToUpdate: [] as IStoreOffer[],\n }\n )\n\n const itemsToDelete = originItems\n .filter((item) => !browserItemsById.has(getId(item)))\n .map((item) => ({ ...item, quantity: 0 }))\n\n const changes = [...itemsToAdd, ...itemsToUpdate, ...itemsToDelete].map(\n offerToOrderItemInput\n )\n\n if (changes.length === 0) {\n return null\n }\n\n // Step4: Apply delta changes to order form\n const updatedOrderForm = await commerce.checkout.updateOrderFormItems({\n id: orderForm.orderFormId,\n orderItems: changes,\n })\n\n // Step5: If no changes detected before/after updating orderForm, the order is validated\n if (equals(orderForm, updatedOrderForm)) {\n return null\n }\n\n // Step6: There were changes, convert orderForm to StoreOrder\n return {\n order: {\n orderNumber: updatedOrderForm.orderFormId,\n acceptedOffer: updatedOrderForm.items.map((item) => ({\n ...item,\n product: skuLoader.load([{ key: 'id', value: item.id }]), // TODO: add channel\n })),\n },\n messages: updatedOrderForm.messages.map(({ text, status }) => ({\n text,\n status: status.toUpperCase(),\n })),\n }\n}\n","import { validateCart } from './validateCart'\n\nexport const Mutation = {\n validateCart,\n}\n","import type { EnhancedSku } from '../utils/enhanceSku'\nimport type { Resolver } from '..'\nimport type { Item } from '../clients/commerce/types/Simulation'\nimport type { OrderFormItem } from '../clients/commerce/types/OrderForm'\n\ntype Root =\n | (Item & { product: EnhancedSku }) // when querying search/product\n | (OrderFormItem & { product: Promise<EnhancedSku> }) // when querying order\n\nexport const StoreOffer: Record<string, Resolver<Root>> = {\n priceCurrency: () => '',\n priceValidUntil: ({ priceValidUntil }) => priceValidUntil ?? '',\n itemCondition: () => 'https://schema.org/NewCondition',\n availability: ({ availability }) =>\n availability === 'available'\n ? 'https://schema.org/InStock'\n : 'https://schema.org/OutOfStock',\n seller: ({ seller }) => ({\n identifier: seller,\n }),\n price: ({ sellingPrice }) => sellingPrice / 1e2, // TODO add spot price calculation\n sellingPrice: ({ sellingPrice }) => sellingPrice / 1e2,\n listPrice: ({ listPrice }) => listPrice / 1e2,\n itemOffered: ({ product }) => product,\n quantity: ({ quantity }) => quantity,\n}\n","import type { Resolver } from '..'\nimport type { EnhancedSku } from '../utils/enhanceSku'\nimport { slugify } from '../utils/slugify'\n\ntype Root = EnhancedSku\n\nconst DEFAULT_IMAGE = {\n name: 'image',\n value:\n 'https://storecomponents.vtexassets.com/assets/faststore/images/image___117a6d3e229a96ad0e0d0876352566e2.svg',\n}\n\nconst getSlug = (link: string, id: string) => `${link}-${id}`\nconst getPath = (link: string, id: string) => `/${getSlug(link, id)}/p`\nconst nonEmptyArray = <T>(array: T[] | null | undefined) =>\n Array.isArray(array) && array.length > 0 ? array : null\n\nexport const StoreProduct: Record<string, Resolver<Root>> = {\n productID: ({ id }) => id,\n name: ({ isVariantOf, name }) => name ?? isVariantOf.name,\n slug: ({ isVariantOf: { link }, id }) => getSlug(link, id),\n description: ({ isVariantOf: { description } }) => description,\n seo: ({ isVariantOf: { name, description } }) => ({\n title: name,\n description,\n }),\n brand: ({ isVariantOf: { brand } }) => ({ name: brand }),\n breadcrumbList: ({ isVariantOf: { categoryTrees, name, link }, id }) => ({\n itemListElement: [\n ...categoryTrees.reverse().map(({ categoryNames }, index) => ({\n name: categoryNames[categoryNames.length - 1],\n item: `/${categoryNames\n .map((categoryName) => slugify(categoryName))\n .join('/')}`,\n position: index + 1,\n })),\n {\n name,\n item: getPath(link, id),\n position: categoryTrees.length + 1,\n },\n ],\n numberOfItems: categoryTrees.length,\n }),\n image: ({ isVariantOf, images }) =>\n (\n nonEmptyArray(images) ??\n nonEmptyArray(isVariantOf.images) ?? [DEFAULT_IMAGE]\n ).map(({ name, value }) => ({\n alternateName: name ?? '',\n url: value.replace('vteximg.com.br', 'vtexassets.com'),\n })),\n sku: ({\n isVariantOf: {\n skus: [sku],\n },\n }) => sku.id,\n gtin: ({ reference }) => reference ?? '',\n review: () => [],\n aggregateRating: () => ({}),\n offers: async (product, _, ctx) => {\n const {\n loaders: { simulationLoader },\n storage: { channel },\n } = ctx\n\n const { id, policies } = product\n const sellers = policies.find((policy) => policy.id === channel)?.sellers\n\n if (sellers == null) {\n // This error will likely happen when you forget to forward the channel somewhere in your code.\n // Make sure all queries that lead to a product are forwarding the channel in context corectly\n throw new Error(\n `Product with id ${id} has no sellers for channel ${channel}.`\n )\n }\n\n // Unique seller ids\n const sellerIds = sellers.map((seller) => seller.id)\n const items = Array.from(new Set(sellerIds)).map((seller) => ({\n quantity: 1,\n seller,\n id,\n }))\n\n const simulation = await simulationLoader.load(items)\n\n return { ...simulation, product }\n },\n isVariantOf: ({ isVariantOf }) => isVariantOf,\n additionalProperty: ({ attributes = [] }) =>\n attributes.map((attribute) => ({\n name: attribute.key,\n value: attribute.value,\n })),\n}\n","import { enhanceSku } from '../utils/enhanceSku'\nimport type { Product } from '../clients/search/types/ProductSearchResult'\nimport type { Resolver } from '..'\n\nexport const StoreProductGroup: Record<string, Resolver<Product>> = {\n hasVariant: (root) => root.skus.map((sku) => enhanceSku(sku, root)),\n productGroupID: ({ product }) => product,\n name: ({ name }) => name,\n additionalProperty: ({ textAttributes = [], productSpecifications = [] }) => {\n const specs = new Set(productSpecifications)\n\n return textAttributes\n .filter((attribute) => specs.has(attribute.labelKey))\n .map((attribute) => ({\n name: attribute.labelKey,\n value: attribute.labelValue,\n }))\n },\n}\n","import { BadRequestError } from './errors'\n\nexport interface SelectedFacet {\n key: string\n value: string\n}\n\nconst getIdFromSlug = (slug: string) => {\n const id = slug.split('-').pop()\n\n if (id == null) {\n throw new BadRequestError('Error while extracting sku id from product slug')\n }\n\n return id\n}\n\n/**\n * Transform facets from the store to VTEX platform facets.\n * For instance, the channel in Store becames trade-policy in VTEX's realm\n * */\nexport const transformSelectedFacet = ({ key, value }: SelectedFacet) => {\n switch (key) {\n case 'channel':\n return { key: 'trade-policy', value }\n\n case 'slug':\n return { key: 'id', value: getIdFromSlug(value) }\n\n default:\n return { key, value }\n }\n}\n","export const SORT_MAP = {\n price_desc: 'price:desc',\n price_asc: 'price:asc',\n orders_desc: 'orders:desc',\n name_desc: 'name:desc',\n name_asc: 'name:asc',\n release_desc: 'release:desc',\n discount_desc: 'discount:desc',\n score_desc: '',\n} as const\n","import { enhanceSku } from '../utils/enhanceSku'\nimport { NotFoundError } from '../utils/errors'\nimport { transformSelectedFacet } from '../utils/facets'\nimport { SORT_MAP } from '../utils/sort'\nimport { StoreCollection } from './collection'\nimport type {\n QueryProductArgs,\n QueryAllCollectionsArgs,\n QueryAllProductsArgs,\n QuerySearchArgs,\n QueryCollectionArgs,\n} from '../../../__generated__/schema'\nimport type { CategoryTree } from '../clients/commerce/types/CategoryTree'\nimport type { Context } from '../index'\n\nexport const Query = {\n product: async (_: unknown, { locator }: QueryProductArgs, ctx: Context) => {\n // Insert channel in context for later usage\n ctx.storage = {\n ...ctx.storage,\n channel:\n locator.find((facet) => facet.key === 'channel')?.value ??\n ctx.storage.channel,\n }\n\n const {\n loaders: { skuLoader },\n } = ctx\n\n return skuLoader.load(locator.map(transformSelectedFacet))\n },\n collection: async (\n _: unknown,\n { slug }: QueryCollectionArgs,\n ctx: Context\n ) => {\n const {\n clients: { commerce },\n } = ctx\n\n const result = await commerce.catalog.portal.pagetype(slug)\n\n const whitelist = ['Brand', 'Category', 'Department', 'Subcategory']\n\n if (whitelist.includes(result.pageType)) {\n return result\n }\n\n throw new NotFoundError(`Not Found: ${slug}`)\n },\n search: async (\n _: unknown,\n { first, after: maybeAfter, sort, term, selectedFacets }: QuerySearchArgs,\n ctx: Context\n ) => {\n // Insert channel in context for later usage\n ctx.storage = {\n ...ctx.storage,\n channel:\n selectedFacets?.find((facet) => facet.key === 'channel')?.value ??\n ctx.storage.channel,\n }\n\n const after = maybeAfter ? Number(maybeAfter) : 0\n const searchArgs = {\n page: Math.ceil(after / first),\n count: first,\n query: term,\n sort: SORT_MAP[sort ?? 'score_desc'],\n selectedFacets: selectedFacets?.map(transformSelectedFacet) ?? [],\n }\n\n return searchArgs\n },\n allProducts: async (\n _: unknown,\n { first, after: maybeAfter }: QueryAllProductsArgs,\n ctx: Context\n ) => {\n const {\n clients: { search },\n } = ctx\n\n const after = maybeAfter ? Number(maybeAfter) : 0\n const products = await search.products({\n page: Math.ceil(after / first),\n count: first,\n })\n\n const skus = products.products\n .map((product) => product.skus.map((sku) => enhanceSku(sku, product)))\n .flat()\n .filter((sku) => sku.sellers.length > 0)\n\n return {\n pageInfo: {\n hasNextPage: products.pagination.after.length > 0,\n hasPreviousPage: products.pagination.before.length > 0,\n startCursor: '0',\n endCursor: products.total.toString(),\n totalCount: products.total,\n },\n edges: skus.map((sku, index) => ({\n node: sku,\n cursor: (after + index).toString(),\n })),\n }\n },\n allCollections: async (\n _: unknown,\n { first, after: maybeAfter }: QueryAllCollectionsArgs,\n ctx: Context\n ) => {\n const {\n clients: { commerce },\n } = ctx\n\n const after = maybeAfter ? Number(maybeAfter) : 0\n\n const [brands, tree] = await Promise.all([\n commerce.catalog.brand.list(),\n commerce.catalog.category.tree(),\n ])\n\n const categories: Array<CategoryTree & { level: number }> = []\n const dfs = (node: CategoryTree, level: number) => {\n categories.push({ ...node, level })\n\n for (const child of node.children) {\n dfs(child, level + 1)\n }\n }\n\n for (const node of tree) {\n dfs(node, 0)\n }\n\n const collections = [\n ...brands.map((x) => ({ ...x, type: 'brand' })),\n ...categories,\n ]\n\n return {\n pageInfo: {\n hasNextPage: false,\n hasPreviousPage: false,\n startCursor: '0',\n endCursor: '0',\n },\n edges: collections\n // Nullable slugs may cause one route to override the other\n .filter((node) => Boolean(StoreCollection.slug(node, null, ctx, null)))\n .slice(after, first)\n .map((node, index) => ({\n node,\n cursor: index.toString(),\n })),\n }\n },\n}\n","import type { Resolver } from '..'\n\nexport const StoreReview: Record<string, Resolver> = {\n reviewRating: () => ({\n ratingValue: 5,\n bestRating: 5,\n }),\n author: () => ({\n name: '',\n }),\n}\n","import { enhanceSku } from '../utils/enhanceSku'\nimport type { Resolver } from '..'\nimport type { SearchArgs } from '../clients/search'\n\ntype Root = Omit<SearchArgs, 'type'>\n\nexport const StoreSearchResult: Record<string, Resolver<Root>> = {\n products: async (searchArgs, _, ctx) => {\n const {\n clients: { search },\n } = ctx\n\n const products = await search.products(searchArgs)\n\n const skus = products.products\n .map((product) => {\n const maybeSku = product.skus.find((x) => x.sellers.length > 0)\n\n return maybeSku && enhanceSku(maybeSku, product)\n })\n .filter((sku) => !!sku)\n\n return {\n pageInfo: {\n hasNextPage: products.pagination.after.length > 0,\n hasPreviousPage: products.pagination.before.length > 0,\n startCursor: '0',\n endCursor: products.total.toString(),\n totalCount: products.total,\n },\n edges: skus.map((sku, index) => ({\n node: sku,\n cursor: index.toString(),\n })),\n }\n },\n facets: async (searchArgs, _, ctx) => {\n const {\n clients: { search: is },\n } = ctx\n\n const facets = await is.facets(searchArgs)\n\n return facets.attributes ?? []\n },\n}\n","import type { Resolver } from '..'\n\ntype Root = { title?: string; description?: string }\n\nexport const StoreSeo: Record<string, Resolver<Root>> = {\n title: ({ title }) => title ?? '',\n description: ({ description }) => description ?? '',\n titleTemplate: () => '',\n canonical: () => '',\n}\n","import { getClients } from './clients'\nimport { getLoaders } from './loaders'\nimport { StoreAggregateOffer } from './resolvers/aggregateOffer'\nimport { StoreAggregateRating } from './resolvers/aggregateRating'\nimport { StoreCollection } from './resolvers/collection'\nimport { StoreFacet } from './resolvers/facet'\nimport { StoreFacetValue } from './resolvers/facetValue'\nimport { Mutation } from './resolvers/mutation'\nimport { StoreOffer } from './resolvers/offer'\nimport { StoreProduct } from './resolvers/product'\nimport { StoreProductGroup } from './resolvers/productGroup'\nimport { Query } from './resolvers/query'\nimport { StoreReview } from './resolvers/review'\nimport { StoreSearchResult } from './resolvers/searchResult'\nimport { StoreSeo } from './resolvers/seo'\nimport type { Loaders } from './loaders'\nimport type { Clients } from './clients'\n\nexport interface Options {\n platform: 'vtex'\n account: string\n environment: 'vtexcommercestable' | 'vtexcommercebeta'\n // Default sales channel to use for fetching products\n channel: string\n}\n\nexport interface Context {\n clients: Clients\n loaders: Loaders\n /**\n * @description Storage updated at each request.\n *\n * Use this datastructure to store and share small values in the context.\n * Use it with caution since dependecy injection leads to a more complex code\n * */\n storage: {\n channel: string\n }\n}\n\nexport type Resolver<R = unknown, A = unknown> = (\n root: R,\n args: A,\n ctx: Context,\n info: any\n) => any\n\nconst Resolvers = {\n StoreCollection,\n StoreAggregateOffer,\n StoreProduct,\n StoreSeo,\n StoreFacet,\n StoreFacetValue,\n StoreOffer,\n StoreAggregateRating,\n StoreReview,\n StoreProductGroup,\n StoreSearchResult,\n Query,\n Mutation,\n}\n\nexport const getContextFactory = (options: Options) => (ctx: any) => {\n ctx.storage = {\n channel: options.channel,\n }\n ctx.clients = getClients(options, ctx)\n ctx.loaders = getLoaders(options, ctx)\n\n return ctx\n}\n\nexport const getResolvers = (_: Options) => Resolvers\n","import { print } from 'graphql'\n\nimport AggregateOffer from './aggregateOffer.graphql'\nimport AggregateRating from './aggregateRating.graphql'\nimport Author from './author.graphql'\nimport Brand from './brand.graphql'\nimport Breadcrumb from './breadcrumb.graphql'\nimport Collection from './collection.graphql'\nimport Facet from './facet.graphql'\nimport Image from './image.graphql'\nimport Mutation from './mutation.graphql'\nimport Offer from './offer.graphql'\nimport Order from './order.graphql'\nimport Organization from './organization.graphql'\nimport PageInfo from './pageInfo.graphql'\nimport Product from './product.graphql'\nimport ProductGroup from './productGroup.graphql'\nimport Query from './query.graphql'\nimport Review from './review.graphql'\nimport Seo from './seo.graphql'\nimport Cart from './cart.graphql'\nimport Status from './status.graphql'\nimport PropertyValue from './propertyValue.graphql'\n\nexport const typeDefs = [\n Query,\n Mutation,\n Brand,\n Breadcrumb,\n Collection,\n Facet,\n Image,\n PageInfo,\n Product,\n Seo,\n Offer,\n AggregateRating,\n Review,\n Author,\n ProductGroup,\n Organization,\n AggregateOffer,\n Order,\n Cart,\n Status,\n PropertyValue,\n]\n .map(print)\n .join('\\n')\n","import { makeExecutableSchema } from '@graphql-tools/schema'\n\nimport {\n getContextFactory as getContextFactoryVTEX,\n getResolvers as getResolversVTEX,\n} from './platforms/vtex'\nimport { typeDefs } from './typeDefs'\nimport type { Options as OptionsVTEX } from './platforms/vtex'\n\nexport * from './__generated__/schema'\n\nexport type Options = OptionsVTEX\n\nconst platforms = {\n vtex: {\n getResolvers: getResolversVTEX,\n getContextFactory: getContextFactoryVTEX,\n },\n}\n\nexport const getTypeDefs = () => typeDefs\n\nexport const getResolvers = (options: Options) =>\n platforms[options.platform].getResolvers(options)\n\nexport const getContextFactory = (options: Options) =>\n platforms[options.platform].getContextFactory(options)\n\nexport const getSchema = async (options: Options) =>\n makeExecutableSchema({\n resolvers: getResolvers(options),\n typeDefs: getTypeDefs(),\n })\n"],"names":["fetchAPI","info","init","response","fetch","ok","json","text","Error","BASE_INIT","method","headers","VtexCommerce","account","environment","ctx","base","catalog","brand","list","category","tree","depth","portal","pagetype","slug","checkout","simulation","args","salesChannel","storage","channel","params","URLSearchParams","sc","toString","body","JSON","stringify","orderForm","id","refreshOutdatedData","updateOrderFormItems","orderItems","allowOutdatedData","IntelligentSearch","policyFacet","key","value","addDefaultFacets","facets","facet","find","undefined","search","query","page","count","sort","selectedFacets","type","fuzzy","pathname","map","join","products","getClients","options","commerce","getSimulationLoader","_","clients","loader","allItems","items","flat","simulated","reduce","acc","item","index","requestIndex","length","Array","fill","itemsIndices","curr","__","slice","filter","Boolean","DataLoader","maxBatchSize","BadRequestError","constructor","message","name","NotFoundError","enhanceSku","sku","product","isVariantOf","getSkuLoader","facetsList","skuIds","maybeFacet","skuBySkuId","skus","skuId","missingSkus","getLoaders","skuLoader","simulationLoader","StoreAggregateOffer","highPrice","sellingPrice","lowPrice","offerCount","priceCurrency","offers","StoreAggregateRating","ratingValue","reviewCount","slugify","path","rawSlugify","separator","lowercase","isBrand","x","isPortalPageType","pageType","root","baseSlugify","URL","url","StoreCollection","seo","title","description","metaTagDescription","Title","MetaTagDescription","level","meta","split","segment","breadcrumbList","segments","slugs","pageTypes","Promise","all","s","itemListElement","toLowerCase","position","numberOfItems","StoreFacet","label","values","StoreFacetValue","from","to","selected","active","quantity","getId","itemOffered","seller","identifier","price","orderFormItemToOffer","listPrice","image","offerToOrderItemInput","offer","groupById","set","get","Map","equals","of1","of2","pick","orderFormId","messages","uniqueId","availability","deepEquals","validateCart","cart","order","orderNumber","acceptedOffer","loaders","browserItemsById","originItemsById","browserItems","originItems","itemsToAdd","itemsToUpdate","maybeOriginItem","push","itemsToDelete","has","changes","updatedOrderForm","load","status","toUpperCase","Mutation","StoreOffer","priceValidUntil","itemCondition","DEFAULT_IMAGE","getSlug","link","getPath","nonEmptyArray","array","isArray","StoreProduct","productID","categoryTrees","reverse","categoryNames","categoryName","images","alternateName","replace","gtin","reference","review","aggregateRating","policies","sellers","policy","sellerIds","Set","additionalProperty","attributes","attribute","StoreProductGroup","hasVariant","productGroupID","textAttributes","productSpecifications","specs","labelKey","labelValue","getIdFromSlug","pop","transformSelectedFacet","SORT_MAP","price_desc","price_asc","orders_desc","name_desc","name_asc","release_desc","discount_desc","score_desc","Query","locator","collection","result","whitelist","includes","first","after","maybeAfter","term","Number","searchArgs","Math","ceil","allProducts","pageInfo","hasNextPage","pagination","hasPreviousPage","before","startCursor","endCursor","total","totalCount","edges","node","cursor","allCollections","brands","categories","dfs","child","children","collections","StoreReview","reviewRating","bestRating","author","StoreSearchResult","maybeSku","is","StoreSeo","titleTemplate","canonical","Resolvers","getContextFactory","getResolvers","typeDefs","Brand","Breadcrumb","Collection","Facet","Image","PageInfo","Product","Seo","Offer","AggregateRating","Review","Author","ProductGroup","Organization","AggregateOffer","Order","Cart","Status","PropertyValue","print","platforms","vtex","getResolversVTEX","getContextFactoryVTEX","getTypeDefs","platform","getSchema","makeExecutableSchema","resolvers"],"mappings":"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"}