@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/CHANGELOG.md +32 -0
- package/dist/__generated__/schema.d.ts +4 -0
- package/dist/api.cjs.development.js +36 -18
- package/dist/api.cjs.development.js.map +1 -1
- package/dist/api.cjs.production.min.js +1 -1
- package/dist/api.cjs.production.min.js.map +1 -1
- package/dist/api.esm.js +36 -18
- package/dist/api.esm.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/platforms/vtex/clients/commerce/index.d.ts +6 -2
- package/dist/platforms/vtex/clients/commerce/types/Portal.d.ts +8 -0
- package/dist/platforms/vtex/clients/index.d.ts +3 -0
- package/dist/platforms/vtex/clients/search/index.d.ts +1 -1
- package/dist/platforms/vtex/index.d.ts +8 -1
- package/dist/platforms/vtex/resolvers/collection.d.ts +2 -1
- package/dist/platforms/vtex/resolvers/query.d.ts +2 -1
- package/package.json +2 -2
- package/src/__generated__/schema.ts +6 -0
- package/src/platforms/vtex/clients/commerce/index.ts +8 -3
- package/src/platforms/vtex/clients/commerce/types/Portal.ts +8 -0
- package/src/platforms/vtex/clients/search/index.ts +12 -9
- package/src/platforms/vtex/resolvers/collection.ts +17 -5
- package/src/platforms/vtex/resolvers/query.ts +12 -0
- package/src/typeDefs/query.graphql +2 -3
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://
|
|
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
|
|
91
|
-
key
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
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":
|
|
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\
|
|
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}};
|
package/dist/api.esm.js.map
CHANGED
|
@@ -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":";;;;;;;AAEO,MAAMA,QAAQ,GAAG,OAAOC,IAAP,EAA0BC,IAA1B;AACtB,QAAMC,QAAQ,GAAG,MAAMC,KAAK,CAACH,IAAD,EAAOC,IAAP,CAA5B;;AAEA,MAAIC,QAAQ,CAACE,EAAb,EAAiB;AACf,WAAOF,QAAQ,CAACG,IAAT,EAAP;AACD;;AAED,QAAMC,IAAI,GAAG,MAAMJ,QAAQ,CAACI,IAAT,EAAnB;AAEA,QAAM,IAAIC,KAAJ,CAAUD,IAAV,CAAN;AACD,CAVM;;ACSP,MAAME,SAAS,GAAG;AAChBC,EAAAA,MAAM,EAAE,MADQ;AAEhBC,EAAAA,OAAO,EAAE;AACP,oBAAgB;AADT;AAFO,CAAlB;AAOA,AAAO,MAAMC,YAAY,GAAG,CAC1B;AAAEC,EAAAA,OAAF;AAAWC,EAAAA;AAAX,CAD0B,EAE1BC,GAF0B;AAI1B,QAAMC,IAAI,aAAaH,WAAWC,oBAAlC;AAEA,SAAO;AACLG,IAAAA,OAAO,EAAE;AACPC,MAAAA,KAAK,EAAE;AACLC,QAAAA,IAAI,EAAE,MACJnB,QAAQ,IAAIgB,wCAAJ;AAFL,OADA;AAKPI,MAAAA,QAAQ,EAAE;AACRC,QAAAA,IAAI,EAAE,CAACC,KAAK,GAAG,CAAT,KACJtB,QAAQ,IAAIgB,6CAA6CM,OAAjD;AAFF;AALH,KADJ;AAWLC,IAAAA,QAAQ,EAAE;AACRC,MAAAA,UAAU,EAAE,CACVC,IADU,EAEV;AAAEC,QAAAA;AAAF,UAAsC;AACpCA,QAAAA,YAAY,EAAEX,GAAG,CAACY,OAAJ,CAAYC;AADU,OAF5B;AAMV,cAAMC,MAAM,GAAG,IAAIC,eAAJ,CAAoB;AACjCC,UAAAA,EAAE,EAAEL;AAD6B,SAApB,CAAf;AAIA,eAAO1B,QAAQ,IACVgB,+CAA+Ca,MAAM,CAACG,QAAP,IADrC,EAEb,EACE,GAAGvB,SADL;AAEEwB,UAAAA,IAAI,EAAEC,IAAI,CAACC,SAAL,CAAeV,IAAf;AAFR,SAFa,CAAf;AAOD,OAlBO;AAmBRW,MAAAA,SAAS,EAAE,CAAC;AACVC,QAAAA,EADU;AAEVC,QAAAA,mBAAmB,GAAG,IAFZ;AAGVZ,QAAAA,YAAY,GAAGX,GAAG,CAACY,OAAJ,CAAYC;AAHjB,OAAD;AAST,cAAMC,MAAM,GAAG,IAAIC,eAAJ,CAAoB;AACjCQ,UAAAA,mBAAmB,EAAEA,mBAAmB,CAACN,QAApB,EADY;AAEjCD,UAAAA,EAAE,EAAEL;AAF6B,SAApB,CAAf;AAKA,eAAO1B,QAAQ,IACVgB,mCAAmCqB,MAAMR,MAAM,CAACG,QAAP,IAD/B,EAEbvB,SAFa,CAAf;AAID,OArCO;AAsCR8B,MAAAA,oBAAoB,EAAE,CAAC;AACrBF,QAAAA,EADqB;AAErBG,QAAAA,UAFqB;AAGrBC,QAAAA,iBAAiB,GAAG,aAHC;AAIrBf,QAAAA,YAAY,GAAGX,GAAG,CAACY,OAAJ,CAAYC;AAJN,OAAD;AAWpB,cAAMC,MAAM,GAAG,IAAIC,eAAJ,CAAoB;AACjCW,UAAAA,iBADiC;AAEjCV,UAAAA,EAAE,EAAEL;AAF6B,SAApB,CAAf;AAKA,eAAO1B,QAAQ,IACVgB,mCAAmCqB,YAAYR,QADrC,EAEb,EACE,GAAGpB,SADL;AAEEwB,UAAAA,IAAI,EAAEC,IAAI,CAACC,SAAL,CAAe;AAAEK,YAAAA;AAAF,WAAf,CAFR;AAGE9B,UAAAA,MAAM,EAAE;AAHV,SAFa,CAAf;AAQD;AA9DO;AAXL,GAAP;AA4ED,CAlFM;;ACaA,MAAMgC,iBAAiB,GAAG,CAAC;AAAE7B,EAAAA;AAAF,CAAD,EAAuBE,GAAvB;AAC/B,QAAMC,IAAI,mDAAmDH,SAA7D;;AAEA,QAAM8B,gBAAgB,GAAIC,MAAD;AACvB,UAAMC,SAAS,GAAGC,MAAM,CAACC,WAAP,CAChBH,MAAM,CAACI,GAAP,CAAW,CAAC;AAAEC,MAAAA,GAAF;AAAOC,MAAAA;AAAP,KAAD,KAAoB,CAACD,GAAD,EAAMC,KAAN,CAA/B,CADgB,CAAlB;AAIA,WAAOJ,MAAM,CAACK,OAAP,CAAe;AACpB,sBAAgBpC,GAAG,CAACY,OAAJ,CAAYC,OADR;AAEpB,SAAGiB;AAFiB,KAAf,EAGJG,GAHI,CAGA,CAAC,CAACC,GAAD,EAAMC,KAAN,CAAD,MAAmB;AAAED,MAAAA,GAAF;AAAOC,MAAAA;AAAP,KAAnB,CAHA,CAAP;AAID,GATD;;AAWA,QAAME,MAAM,GAAG,CAAI;AACjBC,IAAAA,KAAK,GAAG,EADS;AAEjBC,IAAAA,IAFiB;AAGjBC,IAAAA,KAHiB;AAIjBC,IAAAA,IAAI,GAAG,EAJU;AAKjBC,IAAAA,cAAc,GAAG,EALA;AAMjBC,IAAAA,IANiB;AAOjBC,IAAAA,KAAK,GAAG;AAPS,GAAJ;AASb,UAAM9B,MAAM,GAAG,IAAIC,eAAJ,CAAoB;AACjCwB,MAAAA,IAAI,EAAE,CAACA,IAAI,GAAG,CAAR,EAAWtB,QAAX,EAD2B;AAEjCuB,MAAAA,KAAK,EAAEA,KAAK,CAACvB,QAAN,EAF0B;AAGjCqB,MAAAA,KAHiC;AAIjCG,MAAAA,IAJiC;AAKjCG,MAAAA;AALiC,KAApB,CAAf;AAQA,UAAMC,QAAQ,GAAGjB,gBAAgB,CAACc,cAAD,CAAhB,CACdT,GADc,CACV,CAAC;AAAEC,MAAAA,GAAF;AAAOC,MAAAA;AAAP,KAAD,QAAuBD,OAAOC,OADpB,EAEdW,IAFc,CAET,GAFS,CAAjB;AAIA,WAAO7D,QAAQ,IACVgB,kBAAkB0C,QAAQE,YAAY/B,MAAM,CAACG,QAAP,IAD5B,CAAf;AAGD,GAxBD;;AA0BA,QAAM8B,QAAQ,GAAIrC,IAAD,IACf2B,MAAM,CAAsB,EAAE,GAAG3B,IAAL;AAAWiC,IAAAA,IAAI,EAAE;AAAjB,GAAtB,CADR;;AAGA,QAAMd,MAAM,GAAInB,IAAD,IACb2B,MAAM,CAAwB,EAAE,GAAG3B,IAAL;AAAWiC,IAAAA,IAAI,EAAE;AAAjB,GAAxB,CADR;;AAGA,SAAO;AACLd,IAAAA,MADK;AAELkB,IAAAA;AAFK,GAAP;AAID,CAlDM;;ACzBA,MAAMC,UAAU,GAAG,CAACC,OAAD,EAAmBjD,GAAnB;AACxB,QAAMqC,MAAM,GAAGV,iBAAiB,CAACsB,OAAD,EAAUjD,GAAV,CAAhC;AACA,QAAMkD,QAAQ,GAAGrD,YAAY,CAACoD,OAAD,EAAUjD,GAAV,CAA7B;AAEA,SAAO;AACLqC,IAAAA,MADK;AAELa,IAAAA;AAFK,GAAP;AAID,CARM;;ACGA,MAAMC,mBAAmB,GAAG,CAACC,CAAD,EAAaC,OAAb;AACjC,QAAMC,MAAM,GAAG,MAAOC,QAAP;AACb,UAAMC,KAAK,GAAG,CAAC,GAAGD,QAAQ,CAACE,IAAT,EAAJ,CAAd;AACA,UAAMhD,UAAU,GAAG,MAAM4C,OAAO,CAACH,QAAR,CAAiB1C,QAAjB,CAA0BC,UAA1B,CAAqC;AAC5D+C,MAAAA;AAD4D,KAArC,CAAzB;AAKA;;AACA,UAAME,SAAS,GAAGjD,UAAU,CAAC+C,KAAX,CAAiBG,MAAjB,CAAwB,CAACC,GAAD,EAAMC,IAAN;AACxC,YAAMC,KAAK,GAAGD,IAAI,CAACE,YAAnB;;AAEA,UAAI,OAAOD,KAAP,KAAiB,QAAjB,IAA6BA,KAAK,GAAGF,GAAG,CAACI,MAA7C,EAAqD;AACnDJ,QAAAA,GAAG,CAACE,KAAD,CAAH,GAAaD,IAAb;AACD;;AAED,aAAOD,GAAP;AACD,KARiB,EAQfK,KAAK,CAACT,KAAK,CAACQ,MAAP,CAAL,CAAoBE,IAApB,CAAyB,IAAzB,CARe,CAAlB;AAUA,UAAMC,YAAY,GAAGZ,QAAQ,CAACI,MAAT,CACnB,CAACC,GAAD,EAAMQ,IAAN,KAAe,CAAC,GAAGR,GAAJ,EAASQ,IAAI,CAACJ,MAAL,GAAcJ,GAAG,CAACA,GAAG,CAACI,MAAJ,GAAa,CAAd,CAA1B,CADI,EAEnB,CAAC,CAAD,CAFmB,CAArB;AAKA,WAAOT,QAAQ,CAACtB,GAAT,CAAa,CAACoC,EAAD,EAAKP,KAAL,MAAgB,EAClC,GAAGrD,UAD+B;AAElC+C,MAAAA,KAAK,EAAEE,SAAS,CACbY,KADI,CACEH,YAAY,CAACL,KAAD,CADd,EACuBK,YAAY,CAACL,KAAK,GAAG,CAAT,CADnC,EAEJS,MAFI,CAEIV,IAAD,IAAUW,OAAO,CAACX,IAAD,CAFpB;AAF2B,KAAhB,CAAb,CAAP;AAMD,GA7BD;;AA+BA,SAAO,IAAIY,UAAJ,CAA0CnB,MAA1C,EAAkD;AACvDoB,IAAAA,YAAY,EAAE;AADyC,GAAlD,CAAP;AAGD,CAnCM;;ACLA,MAAMC,UAAU,GAAG,CAACC,GAAD,EAAWC,OAAX,MAA8C,EACtE,GAAGD,GADmE;AAEtEE,EAAAA,WAAW,EAAED;AAFyD,CAA9C,CAAnB;;ACIA,MAAME,YAAY,GAAG,CAAC3B,CAAD,EAAaC,OAAb;AAC1B,QAAMC,MAAM,GAAG,MAAO0B,UAAP;AACb,UAAMC,MAAM,GAAGD,UAAU,CAAC/C,GAAX,CAAgBJ,MAAD;AAC5B,YAAMqD,UAAU,GAAGrD,MAAM,CAACsD,IAAP,CAAY,CAAC;AAAEjD,QAAAA;AAAF,OAAD,KAAaA,GAAG,KAAK,IAAjC,CAAnB;;AAEA,UAAI,CAACgD,UAAL,EAAiB;AACf,cAAM,IAAIzF,KAAJ,CACJ,iEADI,CAAN;AAGD;;AAED,aAAOyF,UAAU,CAAC/C,KAAlB;AACD,KAVc,CAAf;AAYA,UAAMiD,SAAS,GAAGH,MAAM,CAACtB,MAAP,CAChB,CAACC,GAAD,EAAMtC,EAAN,EAAUwC,KAAV,MAAqB,EAAE,GAAGF,GAAL;AAAU,OAACtC,EAAD,GAAMwC;AAAhB,KAArB,CADgB,EAEhB,EAFgB,CAAlB;AAKA,UAAM;AAAEf,MAAAA;AAAF,QAAe,MAAMM,OAAO,CAAChB,MAAR,CAAeU,QAAf,CAAwB;AACjDT,MAAAA,KAAK,SAAS2C,MAAM,CAACnC,IAAP,CAAY,GAAZ,GADmC;AAEjDP,MAAAA,IAAI,EAAE,CAF2C;AAGjDC,MAAAA,KAAK,EAAEyC,MAAM,CAACjB;AAHmC,KAAxB,CAA3B;;AAMA,QAAIjB,QAAQ,CAACiB,MAAT,KAAoBiB,MAAM,CAACjB,MAA/B,EAAuC;AACrC,YAAM,IAAIvE,KAAJ,uCACkCwF,MAAM,CAACjB,yCAAyCjB,QAAQ,CAACiB,eAD3F,CAAN;AAGD;;AAED,UAAMqB,MAAM,GAAG,IAAIpB,KAAJ,CAAuBlB,QAAQ,CAACiB,MAAhC,CAAf;;AAGA,SAAK,MAAMa,OAAX,IAAsB9B,QAAtB,EAAgC;AAC9B,YAAM6B,GAAG,GAAGC,OAAO,CAACS,IAAR,CAAaH,IAAb,CAAmBtB,IAAD,IAAUuB,SAAS,CAACvB,IAAI,CAACvC,EAAN,CAAT,IAAsB,IAAlD,CAAZ;;AAEA,UAAIsD,GAAG,IAAI,IAAX,EAAiB;AACf,cAAM,IAAInF,KAAJ,mCAA4CoF,OAAO,CAACvD,IAApD,CAAN;AACD;;AAED,YAAMwC,KAAK,GAAGsB,SAAS,CAACR,GAAG,CAACtD,EAAL,CAAvB;AAEA+D,MAAAA,MAAM,CAACvB,KAAD,CAAN,GAAgBa,UAAU,CAACC,GAAD,EAAMC,OAAN,CAA1B;AACD;;AAED,WAAOQ,MAAP;AACD,GA9CD;;AAgDA,SAAO,IAAIZ,UAAJ,CAA6CnB,MAA7C,EAAqD;AAC1DoB,IAAAA,YAAY,EAAE;AAD4C,GAArD,CAAP;AAGD,CApDM;;ACFA,MAAMa,UAAU,GAAG,CAACtC,OAAD,EAAmB;AAAEI,EAAAA;AAAF,CAAnB;AACxB,QAAMmC,SAAS,GAAGT,YAAY,CAAC9B,OAAD,EAAUI,OAAV,CAA9B;AACA,QAAMoC,gBAAgB,GAAGtC,mBAAmB,CAACF,OAAD,EAAUI,OAAV,CAA5C;AAEA,SAAO;AACLmC,IAAAA,SADK;AAELC,IAAAA;AAFK,GAAP;AAID,CARM;;ACDA,MAAMC,mBAAmB,GAA8B;AAC5DC,EAAAA,SAAS,EAAE,CAAC;AAAEnC,IAAAA;AAAF,GAAD;AAAA;;AAAA,WACTA,KAAK,CAACG,MAAN,CACE,CAACC,GAAD,EAAMQ,IAAN,KAAgBR,GAAG,GAAGQ,IAAI,CAACwB,YAAX,GAA0BhC,GAA1B,GAAgCQ,IAAI,CAACwB,YADvD,sCAEEpC,KAAK,CAAC,CAAD,CAFP,qBAEE,QAAUoC,YAFZ,oCAE4B,CAF5B,IAGI,GAJK;AAAA,GADiD;AAM5DC,EAAAA,QAAQ,EAAE,CAAC;AAAErC,IAAAA;AAAF,GAAD;AAAA;;AAAA,WACRA,KAAK,CAACG,MAAN,CACE,CAACC,GAAD,EAAMQ,IAAN,KAAgBR,GAAG,GAAGQ,IAAI,CAACwB,YAAX,GAA0BhC,GAA1B,GAAgCQ,IAAI,CAACwB,YADvD,wCAEEpC,KAAK,CAAC,CAAD,CAFP,qBAEE,SAAUoC,YAFZ,qCAE4B,CAF5B,IAGI,GAJI;AAAA,GANkD;AAW5DE,EAAAA,UAAU,EAAE,CAAC;AAAEtC,IAAAA;AAAF,GAAD,KAAeA,KAAK,CAACQ,MAX2B;AAY5D+B,EAAAA,aAAa,EAAE,MAAM,EAZuC;AAa5DC,EAAAA,MAAM,EAAE,CAAC;AAAExC,IAAAA,KAAF;AAASqB,IAAAA;AAAT,GAAD,KAAwBrB,KAAK,CAACvB,GAAN,CAAW4B,IAAD,KAAW,EAAE,GAAGA,IAAL;AAAWgB,IAAAA;AAAX,GAAX,CAAV;AAb4B,CAAvD;;ACHP;AACA,AAAO,MAAMoB,oBAAoB,GAA6B;AAC5DC,EAAAA,WAAW,EAAE,MAAM,CADyC;AAE5DC,EAAAA,WAAW,EAAE,MAAM;AAFyC,CAAvD;;ACDA,MAAMC,OAAO,GAAIC,IAAD,IACrBC,UAAU,CAACD,IAAD,EAAO;AAAEE,EAAAA,SAAS,EAAE,GAAb;AAAkBC,EAAAA,SAAS,EAAE;AAA7B,CAAP,CADL;;ACKP,MAAMC,OAAO,GAAIC,CAAD,IAAwBA,CAAC,CAAC/D,IAAF,KAAW,OAAnD;;AAEA,AAAO,MAAMgE,eAAe,GAAmC;AAC7DrF,EAAAA,EAAE,EAAE,CAAC;AAAEA,IAAAA;AAAF,GAAD,KAAYA,EAAE,CAACL,QAAH,EAD6C;AAE7D2F,EAAAA,IAAI,EAAE,CAAC;AAAEC,IAAAA;AAAF,GAAD,KAAcT,OAAO,CAACS,IAAD,CAFkC;AAG7DC,EAAAA,GAAG,EAAGC,IAAD,IACHN,OAAO,CAACM,IAAD,CAAP,GACI;AACEC,IAAAA,KAAK,EAAED,IAAI,CAACC,KADd;AAEEC,IAAAA,WAAW,EAAEF,IAAI,CAACG;AAFpB,GADJ,GAKI;AACEF,IAAAA,KAAK,EAAED,IAAI,CAACI,KADd;AAEEF,IAAAA,WAAW,EAAEF,IAAI,CAACK;AAFpB,GATuD;AAa7DzE,EAAAA,IAAI,EAAGoE,IAAD,IACJN,OAAO,CAACM,IAAD,CAAP,GAAgB,OAAhB,GAA0BA,IAAI,CAACM,KAAL,KAAe,CAAf,GAAmB,YAAnB,GAAkC,UAdD;AAe7DC,EAAAA,IAAI,EAAGP,IAAD,IACJN,OAAO,CAACM,IAAD,CAAP,GACI;AACErE,IAAAA,cAAc,EAAE,CAAC;AAAER,MAAAA,GAAG,EAAE,OAAP;AAAgBC,MAAAA,KAAK,EAAEiE,OAAO,CAACW,IAAI,CAACF,IAAN;AAA9B,KAAD;AADlB,GADJ,GAII;AACEnE,IAAAA,cAAc,EAAE,IAAI6E,GAAJ,CAAQR,IAAI,CAACS,GAAb,EAAkB3E,QAAlB,CACbyB,KADa,CACP,CADO,EAEbmD,KAFa,CAEP,GAFO,EAGbxF,GAHa,CAGT,CAACyF,OAAD,EAAU5D,KAAV,MAAqB;AACxB5B,MAAAA,GAAG,cAAc4B,KAAK,GAAG,GADD;AAExB3B,MAAAA,KAAK,EAAEiE,OAAO,CAACsB,OAAD;AAFU,KAArB,CAHS;AADlB,GApBuD;AA6B7DC,EAAAA,cAAc,EAAE,OAAO;AACrBC,IAAAA,eAAe,EAAE,EADI;AAErBC,IAAAA,aAAa,EAAE;AAFM,GAAP;AA7B6C,CAAxD;;ACJA,MAAMC,UAAU,GAAmC;AACxD5F,EAAAA,GAAG,EAAE,CAAC;AAAEA,IAAAA;AAAF,GAAD,KAAaA,GADsC;AAExD6F,EAAAA,KAAK,EAAE,CAAC;AAAEA,IAAAA;AAAF,GAAD,KAAeA,KAFkC;AAGxDC,EAAAA,MAAM,EAAE,CAAC;AAAEA,IAAAA;AAAF,GAAD,KAAgBA,MAHgC;AAIxDrF,EAAAA,IAAI,EAAE,CAAC;AAAEA,IAAAA;AAAF,GAAD,KAAeA,IAAI,KAAK,MAAT,GAAkB,SAAlB,GAA8B;AAJK,CAAnD;;ACAA,MAAMsF,eAAe,GAAmC;AAC7D9F,EAAAA,KAAK,EAAE,CAAC;AAAED,IAAAA,GAAF;AAAOgG,IAAAA,IAAP;AAAaC,IAAAA;AAAb,GAAD,KAAuBjG,GAAvB,WAAuBA,GAAvB,MAAiCgG,WAAWC,IADU;AAE7DJ,EAAAA,KAAK,EAAE,CAAC;AAAEA,IAAAA;AAAF,GAAD,KAAeA,KAAf,WAAeA,KAAf,GAAwB,SAF8B;AAG7DK,EAAAA,QAAQ,EAAE,CAAC;AAAEC,IAAAA;AAAF,GAAD,KAAgBA,MAHmC;AAI7DC,EAAAA,QAAQ,EAAE,CAAC;AAAE9F,IAAAA;AAAF,GAAD,KAAeA;AAJoC,CAAxD;;ACOP,MAAM+F,KAAK,GAAI1E,IAAD,IACZ,CAACA,IAAI,CAAC2E,WAAL,CAAiB5D,GAAlB,EAAuBf,IAAI,CAAC4E,MAAL,CAAYC,UAAnC,EAA+C7E,IAAI,CAAC8E,KAApD,EAA2D7F,IAA3D,CAAgE,IAAhE,CADF;;AAGA,MAAM8F,oBAAoB,GAAG,CAC3B/E,IAD2B,EAE3BC,KAF2B,MAGD;AAC1B+E,EAAAA,SAAS,EAAEhF,IAAI,CAACgF,SAAL,GAAiB,GADF;AAE1BF,EAAAA,KAAK,EAAE9E,IAAI,CAAC+B,YAAL,GAAoB,GAFD;AAG1B0C,EAAAA,QAAQ,EAAEzE,IAAI,CAACyE,QAHW;AAI1BG,EAAAA,MAAM,EAAE;AAAEC,IAAAA,UAAU,EAAE7E,IAAI,CAAC4E;AAAnB,GAJkB;AAK1BD,EAAAA,WAAW,EAAE;AACX5D,IAAAA,GAAG,EAAEf,IAAI,CAACvC,EADC;AAEXwH,IAAAA,KAAK,EAAE,EAFI;AAGXjC,IAAAA,IAAI,EAAEhD,IAAI,CAACgD;AAHA,GALa;AAU1B/C,EAAAA;AAV0B,CAHC,CAA7B;;AAgBA,MAAMiF,qBAAqB,GACzBC,KAD4B,KAEJ;AACxBV,EAAAA,QAAQ,EAAEU,KAAK,CAACV,QADQ;AAExBG,EAAAA,MAAM,EAAEO,KAAK,CAACP,MAAN,CAAaC,UAFG;AAGxBpH,EAAAA,EAAE,EAAE0H,KAAK,CAACR,WAAN,CAAkB5D,GAHE;AAIxBd,EAAAA,KAAK,EAAEkF,KAAK,CAAClF;AAJW,CAFI,CAA9B;;AASA,MAAMmF,SAAS,GAAIjD,MAAD,IAChBA,MAAM,CAACrC,MAAP,CAAc,CAACC,GAAD,EAAMC,IAAN;;;AACZ,QAAMvC,EAAE,GAAGiH,KAAK,CAAC1E,IAAD,CAAhB;AAEAD,EAAAA,GAAG,CAACsF,GAAJ,CAAQ5H,EAAR,cAAYsC,GAAG,CAACuF,GAAJ,CAAQ7H,EAAR,CAAZ,uBAA2BuC,IAA3B;AAEA,SAAOD,GAAP;AACD,CAND,EAMG,IAAIwF,GAAJ,EANH,CADF;;AASA,MAAMC,MAAM,GAAG,CAACC,GAAD,EAAiBC,GAAjB;AACb,QAAMC,IAAI,GAAG,CAAC;AAAEC,IAAAA,WAAF;AAAeC,IAAAA,QAAf;AAAyBlG,IAAAA,KAAzB;AAAgC7C,IAAAA;AAAhC,GAAD,MAAgE;AAC3E8I,IAAAA,WAD2E;AAE3EC,IAAAA,QAF2E;AAG3E/I,IAAAA,YAH2E;AAI3E6C,IAAAA,KAAK,EAAEA,KAAK,CAACvB,GAAN,CACL,CAAC;AAAE0H,MAAAA,QAAF;AAAYrB,MAAAA,QAAZ;AAAsBG,MAAAA,MAAtB;AAA8B7C,MAAAA,YAA9B;AAA4CgE,MAAAA;AAA5C,KAAD,MAAiE;AAC/DD,MAAAA,QAD+D;AAE/DrB,MAAAA,QAF+D;AAG/DG,MAAAA,MAH+D;AAI/D7C,MAAAA,YAJ+D;AAK/DgE,MAAAA;AAL+D,KAAjE,CADK;AAJoE,GAAhE,CAAb;;AAeA,SAAOC,UAAU,CAACL,IAAI,CAACF,GAAD,CAAL,EAAYE,IAAI,CAACD,GAAD,CAAhB,CAAjB;AACD,CAjBD;AAmBA;;;;;;;;;;;;;;;AAaA,AAAO,MAAMO,YAAY,GAAG,OAC1B1G,CAD0B,EAE1B;AACE2G,EAAAA,IAAI,EAAE;AACJC,IAAAA,KAAK,EAAE;AAAEC,MAAAA,WAAF;AAAeC,MAAAA;AAAf;AADH;AADR,CAF0B,EAO1BlK,GAP0B;AAS1B,QAAM;AACJqD,IAAAA,OAAO,EAAE;AAAEH,MAAAA;AAAF,KADL;AAEJiH,IAAAA,OAAO,EAAE;AAAE3E,MAAAA;AAAF;AAFL,MAGFxF,GAHJ;;AAMA,QAAMqB,SAAS,GAAG,MAAM6B,QAAQ,CAAC1C,QAAT,CAAkBa,SAAlB,CAA4B;AAClDC,IAAAA,EAAE,EAAE2I;AAD8C,GAA5B,CAAxB;;AAKA,QAAMG,gBAAgB,GAAGnB,SAAS,CAACiB,aAAD,CAAlC;AACA,QAAMG,eAAe,GAAGpB,SAAS,CAAC5H,SAAS,CAACmC,KAAV,CAAgBvB,GAAhB,CAAoB2G,oBAApB,CAAD,CAAjC;AACA,QAAM0B,YAAY,GAAGrG,KAAK,CAACiE,IAAN,CAAWkC,gBAAgB,CAACpC,MAAjB,EAAX,CAArB;;AACA,QAAMuC,WAAW,GAAGtG,KAAK,CAACiE,IAAN,CAAWmC,eAAe,CAACrC,MAAhB,EAAX,CAApB;AAEA;;AACA,QAAM;AAAEwC,IAAAA,UAAF;AAAcC,IAAAA;AAAd,MAAgCH,YAAY,CAAC3G,MAAb,CACpC,CAACC,GAAD,EAAMC,IAAN;AACE,UAAM6G,eAAe,GAAGL,eAAe,CAAClB,GAAhB,CAAoBZ,KAAK,CAAC1E,IAAD,CAAzB,CAAxB;;AAEA,QAAI,CAAC6G,eAAL,EAAsB;AACpB9G,MAAAA,GAAG,CAAC4G,UAAJ,CAAeG,IAAf,CAAoB9G,IAApB;AACD,KAFD,MAEO;AACLD,MAAAA,GAAG,CAAC6G,aAAJ,CAAkBE,IAAlB,CAAuB,EACrB,GAAGD,eADkB;AAErBpC,QAAAA,QAAQ,EAAEzE,IAAI,CAACyE;AAFM,OAAvB;AAID;;AAED,WAAO1E,GAAP;AACD,GAdmC,EAepC;AACE4G,IAAAA,UAAU,EAAE,EADd;AAEEC,IAAAA,aAAa,EAAE;AAFjB,GAfoC,CAAtC;AAqBA,QAAMG,aAAa,GAAGL,WAAW,CAC9BhG,MADmB,CACXV,IAAD,IAAU,CAACuG,gBAAgB,CAACS,GAAjB,CAAqBtC,KAAK,CAAC1E,IAAD,CAA1B,CADC,EAEnB5B,GAFmB,CAEd4B,IAAD,KAAW,EAAE,GAAGA,IAAL;AAAWyE,IAAAA,QAAQ,EAAE;AAArB,GAAX,CAFe,CAAtB;AAIA,QAAMwC,OAAO,GAAG,CAAC,GAAGN,UAAJ,EAAgB,GAAGC,aAAnB,EAAkC,GAAGG,aAArC,EAAoD3I,GAApD,CACd8G,qBADc,CAAhB;;AAIA,MAAI+B,OAAO,CAAC9G,MAAR,KAAmB,CAAvB,EAA0B;AACxB,WAAO,IAAP;AACD;;;AAGD,QAAM+G,gBAAgB,GAAG,MAAM7H,QAAQ,CAAC1C,QAAT,CAAkBgB,oBAAlB,CAAuC;AACpEF,IAAAA,EAAE,EAAED,SAAS,CAACoI,WADsD;AAEpEhI,IAAAA,UAAU,EAAEqJ;AAFwD,GAAvC,CAA/B;;AAMA,MAAIzB,MAAM,CAAChI,SAAD,EAAY0J,gBAAZ,CAAV,EAAyC;AACvC,WAAO,IAAP;AACD;;;AAGD,SAAO;AACLf,IAAAA,KAAK,EAAE;AACLC,MAAAA,WAAW,EAAEc,gBAAgB,CAACtB,WADzB;AAELS,MAAAA,aAAa,EAAEa,gBAAgB,CAACvH,KAAjB,CAAuBvB,GAAvB,CAA4B4B,IAAD,KAAW,EACnD,GAAGA,IADgD;AAEnDgB,QAAAA,OAAO,EAAEW,SAAS,CAACwF,IAAV,CAAe,CAAC;AAAE9I,UAAAA,GAAG,EAAE,IAAP;AAAaC,UAAAA,KAAK,EAAE0B,IAAI,CAACvC;AAAzB,SAAD,CAAf;AAF0C,OAAX,CAA3B;AAFV,KADF;AAQLoI,IAAAA,QAAQ,EAAEqB,gBAAgB,CAACrB,QAAjB,CAA0BzH,GAA1B,CAA8B,CAAC;AAAEzC,MAAAA,IAAF;AAAQyL,MAAAA;AAAR,KAAD,MAAuB;AAC7DzL,MAAAA,IAD6D;AAE7DyL,MAAAA,MAAM,EAAEA,MAAM,CAACC,WAAP;AAFqD,KAAvB,CAA9B;AARL,GAAP;AAaD,CApFM;;AC/EA,MAAMC,QAAQ,GAAG;AACtBrB,EAAAA;AADsB,CAAjB;;ACOA,MAAMsB,UAAU,GAAmC;AACxDrF,EAAAA,aAAa,EAAE,MAAM,EADmC;AAExDsF,EAAAA,eAAe,EAAE,CAAC;AAAEA,IAAAA;AAAF,GAAD,KAAyBA,eAAzB,WAAyBA,eAAzB,GAA4C,EAFL;AAGxDC,EAAAA,aAAa,EAAE,MAAM,iCAHmC;AAIxD1B,EAAAA,YAAY,EAAE,CAAC;AAAEA,IAAAA;AAAF,GAAD,KACZA,YAAY,KAAK,WAAjB,GACI,4BADJ,GAEI,+BAPkD;AAQxDnB,EAAAA,MAAM,EAAE,CAAC;AAAEA,IAAAA;AAAF,GAAD,MAAiB;AACvBC,IAAAA,UAAU,EAAED;AADW,GAAjB,CARgD;AAWxDE,EAAAA,KAAK,EAAE,CAAC;AAAE/C,IAAAA;AAAF,GAAD,KAAsBA,YAAY,GAAG,GAXY;AAYxDA,EAAAA,YAAY,EAAE,CAAC;AAAEA,IAAAA;AAAF,GAAD,KAAsBA,YAAY,GAAG,GAZK;AAaxDiD,EAAAA,SAAS,EAAE,CAAC;AAAEA,IAAAA;AAAF,GAAD,KAAmBA,SAAS,GAAG,GAbc;AAcxDL,EAAAA,WAAW,EAAE,CAAC;AAAE3D,IAAAA;AAAF,GAAD,KAAiBA,OAd0B;AAexDyD,EAAAA,QAAQ,EAAE,CAAC;AAAEA,IAAAA;AAAF,GAAD,KAAkBA;AAf4B,CAAnD;;ACJP,MAAMiD,aAAa,GAAG;AACpB1E,EAAAA,IAAI,EAAE,OADc;AAEpB1E,EAAAA,KAAK,EACH;AAHkB,CAAtB;;AAMA,MAAMqJ,OAAO,GAAG,CAACC,IAAD,EAAenK,EAAf,QAAiCmK,QAAQnK,IAAzD;;AACA,MAAMoK,OAAO,GAAG,CAACD,IAAD,EAAenK,EAAf,SAAkCkK,OAAO,CAACC,IAAD,EAAOnK,EAAP,KAAzD;;AACA,MAAMqK,aAAa,GAAOC,KAAJ,IACpB3H,KAAK,CAAC4H,OAAN,CAAcD,KAAd,KAAwBA,KAAK,CAAC5H,MAAN,GAAe,CAAvC,GAA2C4H,KAA3C,GAAmD,IADrD;;AAGA,AAAO,MAAME,YAAY,GAAmC;AAC1DC,EAAAA,SAAS,EAAE,CAAC;AAAEzK,IAAAA;AAAF,GAAD,KAAYA,EADmC;AAE1DuF,EAAAA,IAAI,EAAE,CAAC;AAAE/B,IAAAA,WAAF;AAAe+B,IAAAA;AAAf,GAAD,KAA2BA,IAA3B,WAA2BA,IAA3B,GAAmC/B,WAAW,CAAC+B,IAFK;AAG1DD,EAAAA,IAAI,EAAE,CAAC;AAAE9B,IAAAA,WAAW,EAAE;AAAE2G,MAAAA;AAAF,KAAf;AAAyBnK,IAAAA;AAAzB,GAAD,KAAmCkK,OAAO,CAACC,IAAD,EAAOnK,EAAP,CAHU;AAI1D2F,EAAAA,WAAW,EAAE,CAAC;AAAEnC,IAAAA,WAAW,EAAE;AAAEmC,MAAAA;AAAF;AAAf,GAAD,KAAsCA,WAJO;AAK1DH,EAAAA,GAAG,EAAE,CAAC;AAAEhC,IAAAA,WAAW,EAAE;AAAE+B,MAAAA,IAAF;AAAQI,MAAAA;AAAR;AAAf,GAAD,MAA6C;AAChDD,IAAAA,KAAK,EAAEH,IADyC;AAEhDI,IAAAA;AAFgD,GAA7C,CALqD;AAS1D9G,EAAAA,KAAK,EAAE,CAAC;AAAE2E,IAAAA,WAAW,EAAE;AAAE3E,MAAAA;AAAF;AAAf,GAAD,MAAiC;AAAE0G,IAAAA,IAAI,EAAE1G;AAAR,GAAjC,CATmD;AAU1DwH,EAAAA,cAAc,EAAE,CAAC;AAAE7C,IAAAA,WAAW,EAAE;AAAEkH,MAAAA,aAAF;AAAiBnF,MAAAA,IAAjB;AAAuB4E,MAAAA;AAAvB,KAAf;AAA8CnK,IAAAA;AAA9C,GAAD,MAAyD;AACvEsG,IAAAA,eAAe,EAAE,CACf,GAAGoE,aAAa,CAAC/J,GAAd,CAAkB,CAAC;AAAEgK,MAAAA;AAAF,KAAD,EAAoBnI,KAApB,MAA+B;AAClD+C,MAAAA,IAAI,EAAEoF,aAAa,CAACA,aAAa,CAACjI,MAAd,GAAuB,CAAxB,CAD+B;AAElDH,MAAAA,IAAI,MAAMoI,aAAa,CAACnJ,IAAd,CAAmB,GAAnB,EAAwBoJ,WAAxB,IAFwC;AAGlDC,MAAAA,QAAQ,EAAErI,KAAK,GAAG;AAHgC,KAA/B,CAAlB,CADY,EAMf;AACE+C,MAAAA,IADF;AAEEhD,MAAAA,IAAI,EAAE6H,OAAO,CAACD,IAAD,EAAOnK,EAAP,CAFf;AAGE6K,MAAAA,QAAQ,EAAEH,aAAa,CAAChI,MAAd,GAAuB;AAHnC,KANe,CADsD;AAavE6D,IAAAA,aAAa,EAAEmE,aAAa,CAAChI;AAb0C,GAAzD,CAV0C;AAyB1D8E,EAAAA,KAAK,EAAE,CAAC;AAAEhE,IAAAA,WAAF;AAAesH,IAAAA;AAAf,GAAD;AAAA;;AAAA,WACL,2BACET,aAAa,CAACS,MAAD,CADf,6BAEET,aAAa,CAAC7G,WAAW,CAACsH,MAAb,CAFf,mBAEuC,CAACb,aAAD,CAFvC,EAGEtJ,GAHF,CAGM,CAAC;AAAE4E,MAAAA,IAAF;AAAQ1E,MAAAA;AAAR,KAAD,MAAsB;AAC1BkK,MAAAA,aAAa,EAAExF,IAAF,WAAEA,IAAF,GAAU,EADG;AAE1BW,MAAAA,GAAG,EAAErF,KAAK,CAACmK,OAAN,CAAc,gBAAd,EAAgC,gBAAhC;AAFqB,KAAtB,CAHN,CADK;AAAA,GAzBmD;AAiC1D1H,EAAAA,GAAG,EAAE,CAAC;AACJE,IAAAA,WAAW,EAAE;AACXQ,MAAAA,IAAI,EAAE,CAACV,GAAD;AADK;AADT,GAAD,KAICA,GAAG,CAACtD,EArCgD;AAsC1DiL,EAAAA,IAAI,EAAE,CAAC;AAAEC,IAAAA;AAAF,GAAD,KAAmBA,SAAnB,WAAmBA,SAAnB,GAAgC,EAtCoB;AAuC1DC,EAAAA,MAAM,EAAE,MAAM,EAvC4C;AAwC1DC,EAAAA,eAAe,EAAE,OAAO,EAAP,CAxCyC;AAyC1D1G,EAAAA,MAAM,EAAE,OAAOnB,OAAP,EAAgBzB,CAAhB,EAAmBpD,GAAnB;;;AACN,UAAM;AACJmK,MAAAA,OAAO,EAAE;AAAE1E,QAAAA;AAAF,OADL;AAEJ7E,MAAAA,OAAO,EAAE;AAAEC,QAAAA;AAAF;AAFL,QAGFb,GAHJ;AAKA,UAAM;AAAEsB,MAAAA,EAAF;AAAMqL,MAAAA;AAAN,QAAmB9H,OAAzB;AACA,UAAM+H,OAAO,qBAAGD,QAAQ,CAACxH,IAAT,CAAe0H,MAAD,IAAYA,MAAM,CAACvL,EAAP,KAAcT,OAAxC,CAAH,qBAAG,eAAkD+L,OAAlE;;AAEA,QAAIA,OAAO,IAAI,IAAf,EAAqB;AACnB;AACA;AACA,YAAM,IAAInN,KAAJ,oBACe6B,iCAAiCT,UADhD,CAAN;AAGD;;;AAGD,UAAMiM,SAAS,GAAGF,OAAO,CAAC3K,GAAR,CAAawG,MAAD,IAAYA,MAAM,CAACnH,EAA/B,CAAlB;AACA,UAAMkC,KAAK,GAAGS,KAAK,CAACiE,IAAN,CAAW,IAAI6E,GAAJ,CAAQD,SAAR,CAAX,EAA+B7K,GAA/B,CAAoCwG,MAAD,KAAa;AAC5DH,MAAAA,QAAQ,EAAE,CADkD;AAE5DG,MAAAA,MAF4D;AAG5DnH,MAAAA;AAH4D,KAAb,CAAnC,CAAd;AAMA,UAAMb,UAAU,GAAG,MAAMgF,gBAAgB,CAACuF,IAAjB,CAAsBxH,KAAtB,CAAzB;AAEA,WAAO,EAAE,GAAG/C,UAAL;AAAiBoE,MAAAA;AAAjB,KAAP;AACD,GArEyD;AAsE1DC,EAAAA,WAAW,EAAE,CAAC;AAAEA,IAAAA;AAAF,GAAD,KAAqBA;AAtEwB,CAArD;;ACZA,MAAMkI,iBAAiB,GAAsC;AAClEC,EAAAA,UAAU,EAAGlG,IAAD,IAAUA,IAAI,CAACzB,IAAL,CAAUrD,GAAV,CAAe2C,GAAD,IAASD,UAAU,CAACC,GAAD,EAAMmC,IAAN,CAAjC,CAD4C;AAElEmG,EAAAA,cAAc,EAAE,CAAC;AAAErI,IAAAA;AAAF,GAAD,KAAiBA,OAFiC;AAGlEgC,EAAAA,IAAI,EAAE,CAAC;AAAEA,IAAAA;AAAF,GAAD,KAAcA;AAH8C,CAA7D;;ACCP,MAAMsG,aAAa,GAAIvG,IAAD;AACpB,QAAMtF,EAAE,GAAGsF,IAAI,CAACa,KAAL,CAAW,GAAX,EAAgB2F,GAAhB,EAAX;;AAEA,MAAI9L,EAAE,IAAI,IAAV,EAAgB;AACd,UAAM,IAAI7B,KAAJ,CAAU,iDAAV,CAAN;AACD;;AAED,SAAO6B,EAAP;AACD,CARD;AAUA;;;;;;AAIA,AAAO,MAAM+L,sBAAsB,GAAG,CAAC;AAAEnL,EAAAA,GAAF;AAAOC,EAAAA;AAAP,CAAD;AACpC,UAAQD,GAAR;AACE,SAAK,SAAL;AACE,aAAO;AAAEA,QAAAA,GAAG,EAAE,cAAP;AAAuBC,QAAAA;AAAvB,OAAP;;AAEF,SAAK,MAAL;AACE,aAAO;AAAED,QAAAA,GAAG,EAAE,IAAP;AAAaC,QAAAA,KAAK,EAAEgL,aAAa,CAAChL,KAAD;AAAjC,OAAP;;AAEF;AACE,aAAO;AAAED,QAAAA,GAAF;AAAOC,QAAAA;AAAP,OAAP;AARJ;AAUD,CAXM;;ACnBA,MAAMmL,QAAQ,GAAG;AACtBC,EAAAA,UAAU,EAAE,YADU;AAEtBC,EAAAA,SAAS,EAAE,WAFW;AAGtBC,EAAAA,WAAW,EAAE,aAHS;AAItBC,EAAAA,SAAS,EAAE,WAJW;AAKtBC,EAAAA,QAAQ,EAAE,UALY;AAMtBC,EAAAA,YAAY,EAAE,cANQ;AAOtBC,EAAAA,aAAa,EAAE,eAPO;AAQtBC,EAAAA,UAAU,EAAE;AARU,CAAjB;;ACaA,MAAMC,KAAK,GAAG;AACnBlJ,EAAAA,OAAO,EAAE,OAAOzB,CAAP,EAAmB;AAAE4K,IAAAA;AAAF,GAAnB,EAAkDhO,GAAlD;;;AACP;AACAA,IAAAA,GAAG,CAACY,OAAJ,GAAc,EACZ,GAAGZ,GAAG,CAACY,OADK;AAEZC,MAAAA,OAAO,0CACLmN,OAAO,CAAC7I,IAAR,CAAc8I,KAAD,IAAWA,KAAK,CAAC/L,GAAN,KAAc,SAAtC,CADK,qBACL,cAAkDC,KAD7C,kCAELnC,GAAG,CAACY,OAAJ,CAAYC;AAJF,KAAd;AAOA,UAAM;AACJsJ,MAAAA,OAAO,EAAE;AAAE3E,QAAAA;AAAF;AADL,QAEFxF,GAFJ;AAIA,WAAOwF,SAAS,CAACwF,IAAV,CAAegD,OAAO,CAAC/L,GAAR,CAAYoL,sBAAZ,CAAf,CAAP;AACD,GAfkB;AAgBnBhL,EAAAA,MAAM,EAAE,OACNe,CADM,EAEN;AAAE8K,IAAAA,KAAF;AAASC,IAAAA,KAAK,EAAEC,UAAhB;AAA4B3L,IAAAA,IAA5B;AAAkC4L,IAAAA,IAAlC;AAAwC3L,IAAAA;AAAxC,GAFM,EAGN1C,GAHM;;;AAKN;AACAA,IAAAA,GAAG,CAACY,OAAJ,GAAc,EACZ,GAAGZ,GAAG,CAACY,OADK;AAEZC,MAAAA,OAAO,2BACL6B,cADK,4CACLA,cAAc,CAAEyC,IAAhB,CAAsB8I,KAAD,IAAWA,KAAK,CAAC/L,GAAN,KAAc,SAA9C,CADK,qBACL,qBAA0DC,KADrD,oCAELnC,GAAG,CAACY,OAAJ,CAAYC;AAJF,KAAd;AAOA,UAAMsN,KAAK,GAAGC,UAAU,GAAGE,MAAM,CAACF,UAAD,CAAT,GAAwB,CAAhD;AACA,UAAMG,UAAU,GAAG;AACjBhM,MAAAA,IAAI,EAAEiM,IAAI,CAACC,IAAL,CAAUN,KAAK,GAAGD,KAAlB,CADW;AAEjB1L,MAAAA,KAAK,EAAE0L,KAFU;AAGjB5L,MAAAA,KAAK,EAAE+L,IAHU;AAIjB5L,MAAAA,IAAI,EAAE6K,QAAQ,CAAC7K,IAAD,WAACA,IAAD,GAAS,YAAT,CAJG;AAKjBC,MAAAA,cAAc,yBAAEA,cAAF,oBAAEA,cAAc,CAAET,GAAhB,CAAoBoL,sBAApB,CAAF,kCAAiD;AAL9C,KAAnB;AAQA,WAAOkB,UAAP;AACD,GAvCkB;AAwCnBG,EAAAA,WAAW,EAAE,OACXtL,CADW,EAEX;AAAE8K,IAAAA,KAAF;AAASC,IAAAA,KAAK,EAAEC;AAAhB,GAFW,EAGXpO,GAHW;AAKX,UAAM;AACJqD,MAAAA,OAAO,EAAE;AAAEhB,QAAAA;AAAF;AADL,QAEFrC,GAFJ;AAIA,UAAMmO,KAAK,GAAGC,UAAU,GAAGE,MAAM,CAACF,UAAD,CAAT,GAAwB,CAAhD;AACA,UAAMrL,QAAQ,GAAG,MAAMV,MAAM,CAACU,QAAP,CAAgB;AACrCR,MAAAA,IAAI,EAAEiM,IAAI,CAACC,IAAL,CAAUN,KAAK,GAAGD,KAAlB,CAD+B;AAErC1L,MAAAA,KAAK,EAAE0L;AAF8B,KAAhB,CAAvB;AAKA,UAAM5I,IAAI,GAAGvC,QAAQ,CAACA,QAAT,CACVd,GADU,CACL4C,OAAD,IAAaA,OAAO,CAACS,IAAR,CAAarD,GAAb,CAAkB2C,GAAD,IAASD,UAAU,CAACC,GAAD,EAAMC,OAAN,CAApC,CADP,EAEVpB,IAFU,GAGVc,MAHU,CAGFK,GAAD,IAASA,GAAG,CAACgI,OAAJ,CAAY5I,MAAZ,GAAqB,CAH3B,CAAb;AAKA,WAAO;AACL2K,MAAAA,QAAQ,EAAE;AACRC,QAAAA,WAAW,EAAE7L,QAAQ,CAAC8L,UAAT,CAAoBV,KAApB,CAA0BnK,MAA1B,GAAmC,CADxC;AAER8K,QAAAA,eAAe,EAAE/L,QAAQ,CAAC8L,UAAT,CAAoBE,MAApB,CAA2B/K,MAA3B,GAAoC,CAF7C;AAGRgL,QAAAA,WAAW,EAAE,GAHL;AAIRC,QAAAA,SAAS,EAAElM,QAAQ,CAACmM,KAAT,CAAejO,QAAf,EAJH;AAKRkO,QAAAA,UAAU,EAAEpM,QAAQ,CAACmM;AALb,OADL;AAQLE,MAAAA,KAAK,EAAE9J,IAAI,CAACrD,GAAL,CAAS,CAAC2C,GAAD,EAAMd,KAAN,MAAiB;AAC/BuL,QAAAA,IAAI,EAAEzK,GADyB;AAE/B0K,QAAAA,MAAM,EAAE,CAACnB,KAAK,GAAGrK,KAAT,EAAgB7C,QAAhB;AAFuB,OAAjB,CAAT;AARF,KAAP;AAaD,GAzEkB;AA0EnBsO,EAAAA,cAAc,EAAE,OACdnM,CADc,EAEdiB,EAFc,EAGdrE,GAHc;AAKd,UAAM;AACJqD,MAAAA,OAAO,EAAE;AAAEH,QAAAA;AAAF;AADL,QAEFlD,GAFJ;AAIA,UAAM,CAACwP,MAAD,EAASlP,IAAT,IAAiB,MAAMmP,OAAO,CAACC,GAAR,CAAY,CACvCxM,QAAQ,CAAChD,OAAT,CAAiBC,KAAjB,CAAuBC,IAAvB,EADuC,EAEvC8C,QAAQ,CAAChD,OAAT,CAAiBG,QAAjB,CAA0BC,IAA1B,EAFuC,CAAZ,CAA7B;AAKA,UAAMqP,UAAU,GAA4C,EAA5D;;AACA,UAAMC,GAAG,GAAG,CAACP,IAAD,EAAqBhI,KAArB;AACVsI,MAAAA,UAAU,CAAChF,IAAX,CAAgB,EAAE,GAAG0E,IAAL;AAAWhI,QAAAA;AAAX,OAAhB;;AAEA,WAAK,MAAMwI,KAAX,IAAoBR,IAAI,CAACS,QAAzB,EAAmC;AACjCF,QAAAA,GAAG,CAACC,KAAD,EAAQxI,KAAK,GAAG,CAAhB,CAAH;AACD;AACF,KAND;;AAQA,SAAK,MAAMgI,IAAX,IAAmB/O,IAAnB,EAAyB;AACvBsP,MAAAA,GAAG,CAACP,IAAD,EAAO,CAAP,CAAH;AACD;;AAED,UAAMU,WAAW,GAAG,CAClB,GAAGP,MAAM,CAACvN,GAAP,CAAYyE,CAAD,KAAQ,EAAE,GAAGA,CAAL;AAAQ/D,MAAAA,IAAI,EAAE;AAAd,KAAR,CAAX,CADe,EAElB,GAAGgN,UAFe,CAApB;AAKA,WAAO;AACLhB,MAAAA,QAAQ,EAAE;AACRC,QAAAA,WAAW,EAAE,KADL;AAERE,QAAAA,eAAe,EAAE,KAFT;AAGRE,QAAAA,WAAW,EAAE,GAHL;AAIRC,QAAAA,SAAS,EAAE;AAJH,OADL;AAOLG,MAAAA,KAAK,EAAEW,WAAW;AAAA,OAEfxL,MAFI,CAEI8K,IAAD,IAAU7K,OAAO,CAACmC,eAAe,CAACC,IAAhB,CAAqByI,IAArB,EAA2B,IAA3B,EAAiCrP,GAAjC,EAAsC,IAAtC,CAAD,CAFpB,EAGJiC,GAHI,CAGA,CAACoN,IAAD,EAAOvL,KAAP,MAAkB;AACrBuL,QAAAA,IADqB;AAErBC,QAAAA,MAAM,EAAExL,KAAK,CAAC7C,QAAN;AAFa,OAAlB,CAHA;AAPF,KAAP;AAeD;AAzHkB,CAAd;;ACXA,MAAM+O,WAAW,GAA6B;AACnDC,EAAAA,YAAY,EAAE,OAAO;AACnB/J,IAAAA,WAAW,EAAE,CADM;AAEnBgK,IAAAA,UAAU,EAAE;AAFO,GAAP,CADqC;AAKnDC,EAAAA,MAAM,EAAE,OAAO;AACbtJ,IAAAA,IAAI,EAAE;AADO,GAAP;AAL2C,CAA9C;;ACIA,MAAMuJ,iBAAiB,GAAmC;AAC/DrN,EAAAA,QAAQ,EAAE,OAAOwL,UAAP,EAAmBnL,CAAnB,EAAsBpD,GAAtB;AACR,UAAM;AACJqD,MAAAA,OAAO,EAAE;AAAEhB,QAAAA;AAAF;AADL,QAEFrC,GAFJ;AAIA,UAAM+C,QAAQ,GAAG,MAAMV,MAAM,CAACU,QAAP,CAAgBwL,UAAhB,CAAvB;AAEA,UAAMjJ,IAAI,GAAGvC,QAAQ,CAACA,QAAT,CACVd,GADU,CACL4C,OAAD;AACH,YAAMwL,QAAQ,GAAGxL,OAAO,CAACS,IAAR,CAAaH,IAAb,CAAmBuB,CAAD,IAAOA,CAAC,CAACkG,OAAF,CAAU5I,MAAV,GAAmB,CAA5C,CAAjB;AAEA,aAAOqM,QAAQ,IAAI1L,UAAU,CAAC0L,QAAD,EAAWxL,OAAX,CAA7B;AACD,KALU,EAMVN,MANU,CAMFK,GAAD,IAAS,CAAC,CAACA,GANR,CAAb;AAQA,WAAO;AACL+J,MAAAA,QAAQ,EAAE;AACRC,QAAAA,WAAW,EAAE7L,QAAQ,CAAC8L,UAAT,CAAoBV,KAApB,CAA0BnK,MAA1B,GAAmC,CADxC;AAER8K,QAAAA,eAAe,EAAE/L,QAAQ,CAAC8L,UAAT,CAAoBE,MAApB,CAA2B/K,MAA3B,GAAoC,CAF7C;AAGRgL,QAAAA,WAAW,EAAE,GAHL;AAIRC,QAAAA,SAAS,EAAElM,QAAQ,CAACmM,KAAT,CAAejO,QAAf,EAJH;AAKRkO,QAAAA,UAAU,EAAEpM,QAAQ,CAACmM;AALb,OADL;AAQLE,MAAAA,KAAK,EAAE9J,IAAI,CAACrD,GAAL,CAAS,CAAC2C,GAAD,EAAMd,KAAN,MAAiB;AAC/BuL,QAAAA,IAAI,EAAEzK,GADyB;AAE/B0K,QAAAA,MAAM,EAAExL,KAAK,CAAC7C,QAAN;AAFuB,OAAjB,CAAT;AARF,KAAP;AAaD,GA7B8D;AA8B/DY,EAAAA,MAAM,EAAE,OAAO0M,UAAP,EAAmBnL,CAAnB,EAAsBpD,GAAtB;AACN,UAAM;AACJqD,MAAAA,OAAO,EAAE;AAAEhB,QAAAA,MAAM,EAAEiO;AAAV;AADL,QAEFtQ,GAFJ;AAIA,UAAM6B,MAAM,GAAG,MAAMyO,EAAE,CAACzO,MAAH,CAAU0M,UAAV,CAArB;AAEA,WAAO1M,MAAM,CAAC0O,UAAd;AACD;AAtC8D,CAA1D;;ACFA,MAAMC,QAAQ,GAAmC;AACtDxJ,EAAAA,KAAK,EAAE,CAAC;AAAEA,IAAAA;AAAF,GAAD,KAAeA,KAAf,WAAeA,KAAf,GAAwB,EADuB;AAEtDC,EAAAA,WAAW,EAAE,CAAC;AAAEA,IAAAA;AAAF,GAAD,KAAqBA,WAArB,WAAqBA,WAArB,GAAoC,EAFK;AAGtDwJ,EAAAA,aAAa,EAAE,MAAM,EAHiC;AAItDC,EAAAA,SAAS,EAAE,MAAM;AAJqC,CAAjD;;AC2CP,MAAMC,SAAS,GAAG;AAChBhK,EAAAA,eADgB;AAEhBjB,EAAAA,mBAFgB;AAGhBoG,EAAAA,YAHgB;AAIhB0E,EAAAA,QAJgB;AAKhB1I,EAAAA,UALgB;AAMhBG,EAAAA,eANgB;AAOhBmD,EAAAA,UAPgB;AAQhBnF,EAAAA,oBARgB;AAShB+J,EAAAA,WATgB;AAUhBhD,EAAAA,iBAVgB;AAWhBoD,EAAAA,iBAXgB;AAYhBrC,EAAAA,KAZgB;AAahB5C,EAAAA;AAbgB,CAAlB;AAgBA,AAAO,MAAMyF,iBAAiB,GAAI3N,OAAD,IAAuBjD,GAAD;AACrDA,EAAAA,GAAG,CAACY,OAAJ,GAAc;AACZC,IAAAA,OAAO,EAAEoC,OAAO,CAACpC;AADL,GAAd;AAGAb,EAAAA,GAAG,CAACqD,OAAJ,GAAcL,UAAU,CAACC,OAAD,EAAUjD,GAAV,CAAxB;AACAA,EAAAA,GAAG,CAACmK,OAAJ,GAAc5E,UAAU,CAACtC,OAAD,EAAUjD,GAAV,CAAxB;AAEA,SAAOA,GAAP;AACD,CARM;AAUP,AAAO,MAAM6Q,YAAY,GAAIzN,CAAD,IAAgBuN,SAArC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClDA,MAAMG,QAAQ,gBAAG,CACtB/C,KADsB,EAEtB5C,KAFsB,EAGtB4F,KAHsB,EAItBC,KAJsB,EAKtBC,KALsB,EAMtBC,KANsB,EAOtBC,KAPsB,EAQtBC,KARsB,EAStBC,KATsB,EAUtBC,KAVsB,EAWtBC,KAXsB,EAYtBC,KAZsB,EAatBC,KAbsB,EActBC,KAdsB,EAetBC,KAfsB,EAgBtBC,KAhBsB,EAiBtBC,GAjBsB,EAkBtBC,KAlBsB,EAmBtBC,KAnBsB,EAoBtBC,KApBsB,EAsBrB/P,GAtBqB,CAsBjBgQ,KAtBiB,EAuBrBnP,IAvBqB,CAuBhB,IAvBgB,CAAjB;;ACVP,MAAMoP,SAAS,GAAG;AAChBC,EAAAA,IAAI,EAAE;AACJtB,IAAAA,YAAY,EAAEuB,YADV;AAEJxB,IAAAA,iBAAiB,EAAEyB;AAFf;AADU,CAAlB;AAOA,MAAaC,WAAW,GAAG,MAAMxB,QAA1B;AAEP,MAAaD,cAAY,GAAI5N,OAAD,IAC1BiP,SAAS,CAACjP,OAAO,CAACsP,QAAT,CAAT,CAA4B1B,YAA5B,CAAyC5N,OAAzC,CADK;AAGP,MAAa2N,mBAAiB,GAAI3N,OAAD,IAC/BiP,SAAS,CAACjP,OAAO,CAACsP,QAAT,CAAT,CAA4B3B,iBAA5B,CAA8C3N,OAA9C,CADK;AAGP,MAAauP,SAAS,GAAG,MAAOvP,OAAP,IACvBwP,oBAAoB,CAAC;AACnBC,EAAAA,SAAS,EAAE7B,cAAY,CAAC5N,OAAD,CADJ;AAEnB6N,EAAAA,QAAQ,EAAEwB,WAAW;AAFF,CAAD,CADf;;;;"}
|
|
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>;
|
|
@@ -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
|
};
|