@faststore/api 1.2.35 → 1.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/api.esm.js CHANGED
@@ -34,6 +34,9 @@ const VtexCommerce = ({
34
34
  },
35
35
  category: {
36
36
  tree: (depth = 3) => fetchAPI(`${base}/api/catalog_system/pub/category/tree/${depth}`)
37
+ },
38
+ portal: {
39
+ pagetype: slug => fetchAPI(`${base}/api/catalog_system/pub/portal/pagetype/${slug}`)
37
40
  }
38
41
  },
39
42
  checkout: {
@@ -82,22 +85,25 @@ const VtexCommerce = ({
82
85
  };
83
86
 
84
87
  const IntelligentSearch = ({
85
- account
88
+ account,
89
+ environment
86
90
  }, ctx) => {
87
- const base = `http://search.biggylabs.com.br/search-api/v1/${account}`;
91
+ const base = `http://portal.${environment}.com.br/search-api/v1/${account}`;
92
+ const policyFacet = {
93
+ key: 'trade-policy',
94
+ value: ctx.storage.channel
95
+ };
88
96
 
89
97
  const addDefaultFacets = facets => {
90
- const facetsObj = Object.fromEntries(facets.map(({
91
- key,
92
- value
93
- }) => [key, value]));
94
- return Object.entries({
95
- 'trade-policy': ctx.storage.channel,
96
- ...facetsObj
97
- }).map(([key, value]) => ({
98
- key,
99
- value
100
- }));
98
+ const facet = facets.find(({
99
+ key
100
+ }) => key === policyFacet.key);
101
+
102
+ if (facet === undefined) {
103
+ return [...facets, policyFacet];
104
+ }
105
+
106
+ return facets;
101
107
  };
102
108
 
103
109
  const search = ({
@@ -278,6 +284,8 @@ const slugify = path => rawSlugify(path, {
278
284
 
279
285
  const isBrand = x => x.type === 'brand';
280
286
 
287
+ const isPortalPageType = x => typeof x.pageType === 'string';
288
+
281
289
  const StoreCollection = {
282
290
  id: ({
283
291
  id
@@ -285,21 +293,21 @@ const StoreCollection = {
285
293
  slug: ({
286
294
  name
287
295
  }) => slugify(name),
288
- seo: root => isBrand(root) ? {
296
+ seo: root => isBrand(root) || isPortalPageType(root) ? {
289
297
  title: root.title,
290
298
  description: root.metaTagDescription
291
299
  } : {
292
300
  title: root.Title,
293
301
  description: root.MetaTagDescription
294
302
  },
295
- type: root => isBrand(root) ? 'Brand' : root.level === 0 ? 'Department' : 'Category',
303
+ type: root => isBrand(root) ? 'Brand' : isPortalPageType(root) ? root.pageType : root.level === 0 ? 'Department' : 'Category',
296
304
  meta: root => isBrand(root) ? {
297
305
  selectedFacets: [{
298
306
  key: 'brand',
299
307
  value: slugify(root.name)
300
308
  }]
301
309
  } : {
302
- selectedFacets: new URL(root.url).pathname.slice(1).split('/').map((segment, index) => ({
310
+ selectedFacets: new URL(isPortalPageType(root) ? `https://${root.url}` : root.url).pathname.slice(1).split('/').map((segment, index) => ({
303
311
  key: `category-${index + 1}`,
304
312
  value: slugify(segment)
305
313
  }))
@@ -747,6 +755,16 @@ const Query = {
747
755
  } = ctx;
748
756
  return skuLoader.load(locator.map(transformSelectedFacet));
749
757
  },
758
+ collection: async (_, {
759
+ slug
760
+ }, ctx) => {
761
+ const {
762
+ clients: {
763
+ commerce
764
+ }
765
+ } = ctx;
766
+ return commerce.catalog.portal.pagetype(slug);
767
+ },
750
768
  search: async (_, {
751
769
  first,
752
770
  after: maybeAfter,
@@ -969,8 +987,8 @@ var doc$d = {"kind":"Document","definitions":[{"kind":"ObjectTypeDefinition","na
969
987
  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}};
970
988
  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}};
971
989
 
972
- 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":"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":1214}};
973
- 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\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 search(\n # Relay style pagination args. To know more: https://relay.dev/graphql/connections.htm\n first: Int!\n # Relay style pagination args. To know more: https://relay.dev/graphql/connections.htm\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}};
990
+ 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}};
991
+ 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}};
974
992
 
975
993
  var doc$g = {"kind":"Document","definitions":[{"kind":"ObjectTypeDefinition","name":{"kind":"Name","value":"StoreReviewRating"},"interfaces":[],"directives":[],"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"ratingValue"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Float"}}},"directives":[]},{"kind":"FieldDefinition","name":{"kind":"Name","value":"bestRating"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"Float"}}},"directives":[]}]},{"kind":"ObjectTypeDefinition","name":{"kind":"Name","value":"StoreReview"},"interfaces":[],"directives":[],"fields":[{"kind":"FieldDefinition","name":{"kind":"Name","value":"reviewRating"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"StoreReviewRating"}}},"directives":[]},{"kind":"FieldDefinition","name":{"kind":"Name","value":"author"},"arguments":[],"type":{"kind":"NonNullType","type":{"kind":"NamedType","name":{"kind":"Name","value":"StoreAuthor"}}},"directives":[]}]}],"loc":{"start":0,"end":150}};
976
994
  doc$g.loc.source = {"body":"type StoreReviewRating {\n ratingValue: Float!\n bestRating: Float!\n}\n\ntype StoreReview {\n reviewRating: StoreReviewRating!\n author: StoreAuthor!\n}\n","name":"GraphQL request","locationOffset":{"line":1,"column":1}};
@@ -1 +1 @@
1
- {"version":3,"file":"api.esm.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/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 {\n Simulation,\n SimulationArgs,\n SimulationOptions,\n} from './types/Simulation'\nimport type { CategoryTree } from './types/CategoryTree'\nimport type { Brand } from './types/Brand'\nimport type { OrderForm, OrderFormInputItem } from './types/OrderForm'\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 },\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 = ({ account }: Options, ctx: Context) => {\n const base = `http://search.biggylabs.com.br/search-api/v1/${account}`\n\n const addDefaultFacets = (facets: SelectedFacet[]) => {\n const facetsObj = Object.fromEntries(\n facets.map(({ key, value }) => [key, value])\n )\n\n return Object.entries({\n 'trade-policy': ctx.storage.channel,\n ...facetsObj,\n }).map(([key, value]) => ({ key, value }))\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","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 { 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 Error(\n 'Error while loading SKU. Needs to pass an id to selected facets'\n )\n }\n\n return maybeFacet.value\n })\n\n const indexById = skuIds.reduce(\n (acc, id, index) => ({ ...acc, [id]: index }),\n {} as Record<string, number>\n )\n\n const { products } = await clients.search.products({\n query: `sku:${skuIds.join(';')}`,\n page: 0,\n count: skuIds.length,\n })\n\n if (products.length !== skuIds.length) {\n throw new Error(\n `Sku batching went wrong. Asked for ${skuIds.length} sku(s) but search api returned ${products.length} sku(s)`\n )\n }\n\n const sorted = new Array<EnhancedSku>(products.length)\n\n // O(n*m) sort, where n = skuIds.length and m is the number of skus per product\n for (const product of products) {\n const sku = product.skus.find((item) => indexById[item.id] != null)\n\n if (sku == null) {\n throw new Error(`Could not find sku for product ${product.id}`)\n }\n\n const index = indexById[sku.id]\n\n sorted[index] = enhanceSku(sku, product)\n }\n\n return sorted\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 } from '../utils/slugify'\nimport type { Resolver } from '..'\nimport type { Brand } from '../clients/commerce/types/Brand'\nimport type { CategoryTree } from '../clients/commerce/types/CategoryTree'\n\ntype Root = Brand | (CategoryTree & { level: number })\n\nconst isBrand = (x: any): x is Brand => x.type === 'brand'\n\nexport const StoreCollection: Record<string, Resolver<Root>> = {\n id: ({ id }) => id.toString(),\n slug: ({ name }) => slugify(name),\n seo: (root) =>\n isBrand(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) ? 'Brand' : root.level === 0 ? 'Department' : 'Category',\n meta: (root) =>\n isBrand(root)\n ? {\n selectedFacets: [{ key: 'brand', value: slugify(root.name) }],\n }\n : {\n selectedFacets: new URL(root.url).pathname\n .slice(1)\n .split('/')\n .map((segment, index) => ({\n key: `category-${index + 1}`,\n value: slugify(segment),\n })),\n },\n breadcrumbList: () => ({\n itemListElement: [],\n numberOfItems: 0,\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.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","export 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 Error('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 { 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} 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 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 __: QueryAllCollectionsArgs,\n ctx: Context\n ) => {\n const {\n clients: { commerce },\n } = ctx\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 .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","checkout","simulation","args","salesChannel","storage","channel","params","URLSearchParams","sc","toString","body","JSON","stringify","orderForm","id","refreshOutdatedData","updateOrderFormItems","orderItems","allowOutdatedData","IntelligentSearch","addDefaultFacets","facets","facetsObj","Object","fromEntries","map","key","value","entries","search","query","page","count","sort","selectedFacets","type","fuzzy","pathname","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","enhanceSku","sku","product","isVariantOf","getSkuLoader","facetsList","skuIds","maybeFacet","find","indexById","sorted","skus","getLoaders","skuLoader","simulationLoader","StoreAggregateOffer","highPrice","sellingPrice","lowPrice","offerCount","priceCurrency","offers","StoreAggregateRating","ratingValue","reviewCount","slugify","path","rawSlugify","separator","lowercase","isBrand","x","StoreCollection","slug","name","seo","root","title","description","metaTagDescription","Title","MetaTagDescription","level","meta","URL","url","split","segment","breadcrumbList","itemListElement","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","categoryNames","toLowerCase","position","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","facet","first","after","maybeAfter","term","Number","searchArgs","Math","ceil","allProducts","pageInfo","hasNextPage","pagination","hasPreviousPage","before","startCursor","endCursor","total","totalCount","edges","node","cursor","allCollections","brands","Promise","all","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.esm.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/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","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 { 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 Error(\n 'Error while loading SKU. Needs to pass an id to selected facets'\n )\n }\n\n return maybeFacet.value\n })\n\n const indexById = skuIds.reduce(\n (acc, id, index) => ({ ...acc, [id]: index }),\n {} as Record<string, number>\n )\n\n const { products } = await clients.search.products({\n query: `sku:${skuIds.join(';')}`,\n page: 0,\n count: skuIds.length,\n })\n\n if (products.length !== skuIds.length) {\n throw new Error(\n `Sku batching went wrong. Asked for ${skuIds.length} sku(s) but search api returned ${products.length} sku(s)`\n )\n }\n\n const sorted = new Array<EnhancedSku>(products.length)\n\n // O(n*m) sort, where n = skuIds.length and m is the number of skus per product\n for (const product of products) {\n const sku = product.skus.find((item) => indexById[item.id] != null)\n\n if (sku == null) {\n throw new Error(`Could not find sku for product ${product.id}`)\n }\n\n const index = indexById[sku.id]\n\n sorted[index] = enhanceSku(sku, product)\n }\n\n return sorted\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 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'\nimport { slugify } from '../utils/slugify'\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\nexport const StoreCollection: Record<string, Resolver<Root>> = {\n id: ({ id }) => id.toString(),\n slug: ({ name }) => slugify(name),\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: slugify(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: slugify(segment),\n })),\n },\n breadcrumbList: () => ({\n itemListElement: [],\n numberOfItems: 0,\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.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","export 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 Error('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 { 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 return commerce.catalog.portal.pagetype(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 __: QueryAllCollectionsArgs,\n ctx: Context\n ) => {\n const {\n clients: { commerce },\n } = ctx\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 .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","enhanceSku","sku","product","isVariantOf","getSkuLoader","facetsList","skuIds","maybeFacet","indexById","sorted","skus","getLoaders","skuLoader","simulationLoader","StoreAggregateOffer","highPrice","sellingPrice","lowPrice","offerCount","priceCurrency","offers","StoreAggregateRating","ratingValue","reviewCount","slugify","path","rawSlugify","separator","lowercase","isBrand","x","isPortalPageType","pageType","StoreCollection","name","seo","root","title","description","metaTagDescription","Title","MetaTagDescription","level","meta","URL","url","split","segment","breadcrumbList","itemListElement","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","categoryNames","toLowerCase","position","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","first","after","maybeAfter","term","Number","searchArgs","Math","ceil","allProducts","pageInfo","hasNextPage","pagination","hasPreviousPage","before","startCursor","endCursor","total","totalCount","edges","node","cursor","allCollections","brands","Promise","all","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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"}
package/dist/index.d.ts CHANGED
@@ -5,7 +5,7 @@ export declare const getTypeDefs: () => string;
5
5
  export declare const getResolvers: (options: Options) => {
6
6
  StoreCollection: Record<string, import("./platforms/vtex").Resolver<import("./platforms/vtex/clients/commerce/types/Brand").Brand | (import("./platforms/vtex/clients/commerce/types/CategoryTree").CategoryTree & {
7
7
  level: number;
8
- }), unknown>>;
8
+ }) | import("./platforms/vtex/clients/commerce/types/Portal").PortalPagetype, unknown>>;
9
9
  StoreAggregateOffer: Record<string, (root: import("./platforms/vtex/clients/commerce/types/Simulation").Simulation & {
10
10
  product: import("./platforms/vtex/utils/enhanceSku").EnhancedSku;
11
11
  }) => unknown>;
@@ -27,6 +27,7 @@ export declare const getResolvers: (options: Options) => {
27
27
  StoreSearchResult: Record<string, import("./platforms/vtex").Resolver<Pick<import("./platforms/vtex/clients/search").SearchArgs, "query" | "page" | "count" | "sort" | "selectedFacets" | "fuzzy">, unknown>>;
28
28
  Query: {
29
29
  product: (_: unknown, { locator }: import("./__generated__/schema").QueryProductArgs, ctx: import("./platforms/vtex").Context) => Promise<import("./platforms/vtex/utils/enhanceSku").EnhancedSku>;
30
+ collection: (_: unknown, { slug }: import("./__generated__/schema").QueryCollectionArgs, ctx: import("./platforms/vtex").Context) => Promise<import("./platforms/vtex/clients/commerce/types/Portal").PortalPagetype>;
30
31
  search: (_: unknown, { first, after: maybeAfter, sort, term, selectedFacets }: import("./__generated__/schema").QuerySearchArgs, ctx: import("./platforms/vtex").Context) => Promise<{
31
32
  page: number;
32
33
  count: number;
@@ -1,8 +1,9 @@
1
1
  import type { Context, Options } from '../../index';
2
- import type { Simulation, SimulationArgs, SimulationOptions } from './types/Simulation';
3
- import type { CategoryTree } from './types/CategoryTree';
4
2
  import type { Brand } from './types/Brand';
3
+ import type { CategoryTree } from './types/CategoryTree';
5
4
  import type { OrderForm, OrderFormInputItem } from './types/OrderForm';
5
+ import type { PortalPagetype } from './types/Portal';
6
+ import type { Simulation, SimulationArgs, SimulationOptions } from './types/Simulation';
6
7
  export declare const VtexCommerce: ({ account, environment }: Options, ctx: Context) => {
7
8
  catalog: {
8
9
  brand: {
@@ -11,6 +12,9 @@ export declare const VtexCommerce: ({ account, environment }: Options, ctx: Cont
11
12
  category: {
12
13
  tree: (depth?: number) => Promise<CategoryTree[]>;
13
14
  };
15
+ portal: {
16
+ pagetype: (slug: string) => Promise<PortalPagetype>;
17
+ };
14
18
  };
15
19
  checkout: {
16
20
  simulation: (args: SimulationArgs, { salesChannel }?: SimulationOptions) => Promise<Simulation>;
@@ -0,0 +1,8 @@
1
+ export interface PortalPagetype {
2
+ id: number;
3
+ name: string;
4
+ url: string;
5
+ title: string;
6
+ metaTagDescription: string;
7
+ pageType: 'Brand' | 'Category' | 'Department' | 'Subcategory' | 'FullText';
8
+ }
@@ -13,6 +13,9 @@ export declare const getClients: (options: Options, ctx: Context) => {
13
13
  category: {
14
14
  tree: (depth?: number) => Promise<import("./commerce/types/CategoryTree").CategoryTree[]>;
15
15
  };
16
+ portal: {
17
+ pagetype: (slug: string) => Promise<import("./commerce/types/Portal").PortalPagetype>;
18
+ };
16
19
  };
17
20
  checkout: {
18
21
  simulation: (args: import("./commerce/types/Simulation").SimulationArgs, { salesChannel }?: import("./commerce/types/Simulation").SimulationOptions) => Promise<import("./commerce/types/Simulation").Simulation>;
@@ -16,7 +16,7 @@ export interface ProductLocator {
16
16
  field: 'id' | 'slug';
17
17
  value: string;
18
18
  }
19
- export declare const IntelligentSearch: ({ account }: Options, ctx: Context) => {
19
+ export declare const IntelligentSearch: ({ account, environment }: Options, ctx: Context) => {
20
20
  facets: (args: Omit<SearchArgs, 'type'>) => Promise<AttributeSearchResult>;
21
21
  products: (args: Omit<SearchArgs, 'type'>) => Promise<ProductSearchResult>;
22
22
  };