@faststore/api 2.2.42 → 2.2.44
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/package.json +79 -0
- package/dist/{__generated__ → cjs/src/__generated__}/schema.d.ts +1045 -1045
- package/dist/cjs/src/__generated__/schema.js +7 -0
- package/dist/cjs/src/__generated__/schema.js.map +1 -0
- package/dist/{directives → cjs/src/directives}/cacheControl.d.ts +9 -9
- package/dist/cjs/src/directives/cacheControl.js +45 -0
- package/dist/cjs/src/directives/cacheControl.js.map +1 -0
- package/dist/{directives → cjs/src/directives}/index.d.ts +5 -5
- package/dist/cjs/src/directives/index.js +3 -0
- package/dist/cjs/src/directives/index.js.map +1 -0
- package/dist/{index.d.ts → cjs/src/index.d.ts} +163 -163
- package/dist/cjs/src/index.js +38 -0
- package/dist/cjs/src/index.js.map +1 -0
- package/dist/{platforms → cjs/src/platforms}/errors.d.ts +19 -19
- package/dist/cjs/src/platforms/errors.js +30 -0
- package/dist/cjs/src/platforms/errors.js.map +1 -0
- package/dist/{platforms → cjs/src/platforms}/vtex/clients/commerce/index.d.ts +75 -75
- package/dist/cjs/src/platforms/vtex/clients/commerce/index.js +165 -0
- package/dist/cjs/src/platforms/vtex/clients/commerce/index.js.map +1 -0
- package/dist/{platforms → cjs/src/platforms}/vtex/clients/commerce/types/Address.d.ts +16 -16
- package/dist/cjs/src/platforms/vtex/clients/commerce/types/Address.js +3 -0
- package/dist/cjs/src/platforms/vtex/clients/commerce/types/Address.js.map +1 -0
- package/dist/{platforms → cjs/src/platforms}/vtex/clients/commerce/types/Brand.d.ts +8 -8
- package/dist/cjs/src/platforms/vtex/clients/commerce/types/Brand.js +3 -0
- package/dist/cjs/src/platforms/vtex/clients/commerce/types/Brand.js.map +1 -0
- package/dist/{platforms → cjs/src/platforms}/vtex/clients/commerce/types/CategoryTree.d.ts +9 -9
- package/dist/cjs/src/platforms/vtex/clients/commerce/types/CategoryTree.js +3 -0
- package/dist/cjs/src/platforms/vtex/clients/commerce/types/CategoryTree.js.map +1 -0
- package/dist/{platforms → cjs/src/platforms}/vtex/clients/commerce/types/Newsletter.d.ts +4 -4
- package/dist/cjs/src/platforms/vtex/clients/commerce/types/Newsletter.js +3 -0
- package/dist/cjs/src/platforms/vtex/clients/commerce/types/Newsletter.js.map +1 -0
- package/dist/{platforms → cjs/src/platforms}/vtex/clients/commerce/types/OrderForm.d.ts +371 -371
- package/dist/cjs/src/platforms/vtex/clients/commerce/types/OrderForm.js +3 -0
- package/dist/cjs/src/platforms/vtex/clients/commerce/types/OrderForm.js.map +1 -0
- package/dist/{platforms → cjs/src/platforms}/vtex/clients/commerce/types/Portal.d.ts +17 -17
- package/dist/cjs/src/platforms/vtex/clients/commerce/types/Portal.js +3 -0
- package/dist/cjs/src/platforms/vtex/clients/commerce/types/Portal.js.map +1 -0
- package/dist/{platforms → cjs/src/platforms}/vtex/clients/commerce/types/Product.d.ts +174 -174
- package/dist/cjs/src/platforms/vtex/clients/commerce/types/Product.js +53 -0
- package/dist/cjs/src/platforms/vtex/clients/commerce/types/Product.js.map +1 -0
- package/dist/{platforms → cjs/src/platforms}/vtex/clients/commerce/types/Region.d.ts +19 -19
- package/dist/cjs/src/platforms/vtex/clients/commerce/types/Region.js +3 -0
- package/dist/cjs/src/platforms/vtex/clients/commerce/types/Region.js.map +1 -0
- package/dist/{platforms → cjs/src/platforms}/vtex/clients/commerce/types/SalesChannel.d.ts +24 -24
- package/dist/cjs/src/platforms/vtex/clients/commerce/types/SalesChannel.js +3 -0
- package/dist/cjs/src/platforms/vtex/clients/commerce/types/SalesChannel.js.map +1 -0
- package/dist/{platforms → cjs/src/platforms}/vtex/clients/commerce/types/Session.d.ts +33 -33
- package/dist/cjs/src/platforms/vtex/clients/commerce/types/Session.js +3 -0
- package/dist/cjs/src/platforms/vtex/clients/commerce/types/Session.js.map +1 -0
- package/dist/{platforms → cjs/src/platforms}/vtex/clients/commerce/types/ShippingData.d.ts +38 -38
- package/dist/cjs/src/platforms/vtex/clients/commerce/types/ShippingData.js +3 -0
- package/dist/cjs/src/platforms/vtex/clients/commerce/types/ShippingData.js.map +1 -0
- package/dist/{platforms → cjs/src/platforms}/vtex/clients/commerce/types/Simulation.d.ts +154 -154
- package/dist/cjs/src/platforms/vtex/clients/commerce/types/Simulation.js +3 -0
- package/dist/cjs/src/platforms/vtex/clients/commerce/types/Simulation.js.map +1 -0
- package/dist/{platforms → cjs/src/platforms}/vtex/clients/fetch.d.ts +1 -1
- package/dist/cjs/src/platforms/vtex/clients/fetch.js +24 -0
- package/dist/cjs/src/platforms/vtex/clients/fetch.js.map +1 -0
- package/dist/{platforms → cjs/src/platforms}/vtex/clients/index.d.ts +71 -71
- package/dist/cjs/src/platforms/vtex/clients/index.js +18 -0
- package/dist/cjs/src/platforms/vtex/clients/index.js.map +1 -0
- package/dist/{platforms → cjs/src/platforms}/vtex/clients/search/index.d.ts +26 -26
- package/dist/cjs/src/platforms/vtex/clients/search/index.js +88 -0
- package/dist/cjs/src/platforms/vtex/clients/search/index.js.map +1 -0
- package/dist/{platforms → cjs/src/platforms}/vtex/clients/search/types/AttributeSearchResult.d.ts +30 -30
- package/dist/cjs/src/platforms/vtex/clients/search/types/AttributeSearchResult.js +3 -0
- package/dist/cjs/src/platforms/vtex/clients/search/types/AttributeSearchResult.js.map +1 -0
- package/dist/{platforms → cjs/src/platforms}/vtex/clients/search/types/FacetSearchResult.d.ts +31 -31
- package/dist/cjs/src/platforms/vtex/clients/search/types/FacetSearchResult.js +3 -0
- package/dist/cjs/src/platforms/vtex/clients/search/types/FacetSearchResult.js.map +1 -0
- package/dist/{platforms → cjs/src/platforms}/vtex/clients/search/types/ProductSearchResult.d.ts +206 -206
- package/dist/cjs/src/platforms/vtex/clients/search/types/ProductSearchResult.js +3 -0
- package/dist/cjs/src/platforms/vtex/clients/search/types/ProductSearchResult.js.map +1 -0
- package/dist/{platforms → cjs/src/platforms}/vtex/clients/sp/index.d.ts +14 -14
- package/dist/cjs/src/platforms/vtex/clients/sp/index.js +49 -0
- package/dist/cjs/src/platforms/vtex/clients/sp/index.js.map +1 -0
- package/dist/{platforms → cjs/src/platforms}/vtex/index.d.ts +188 -188
- package/dist/cjs/src/platforms/vtex/index.js +59 -0
- package/dist/cjs/src/platforms/vtex/index.js.map +1 -0
- package/dist/{platforms → cjs/src/platforms}/vtex/loaders/collection.d.ts +6 -6
- package/dist/cjs/src/platforms/vtex/loaders/collection.js +38 -0
- package/dist/cjs/src/platforms/vtex/loaders/collection.js.map +1 -0
- package/dist/{platforms → cjs/src/platforms}/vtex/loaders/index.d.ts +8 -8
- package/dist/cjs/src/platforms/vtex/loaders/index.js +21 -0
- package/dist/cjs/src/platforms/vtex/loaders/index.js.map +1 -0
- package/dist/{platforms → cjs/src/platforms}/vtex/loaders/salesChannel.d.ts +5 -5
- package/dist/cjs/src/platforms/vtex/loaders/salesChannel.js +11 -0
- package/dist/cjs/src/platforms/vtex/loaders/salesChannel.js.map +1 -0
- package/dist/{platforms → cjs/src/platforms}/vtex/loaders/simulation.d.ts +5 -5
- package/dist/cjs/src/platforms/vtex/loaders/simulation.js +44 -0
- package/dist/cjs/src/platforms/vtex/loaders/simulation.js.map +1 -0
- package/dist/{platforms → cjs/src/platforms}/vtex/loaders/sku.d.ts +5 -5
- package/dist/cjs/src/platforms/vtex/loaders/sku.js +33 -0
- package/dist/cjs/src/platforms/vtex/loaders/sku.js.map +1 -0
- package/dist/{platforms → cjs/src/platforms}/vtex/resolvers/aggregateOffer.d.ts +7 -7
- package/dist/cjs/src/platforms/vtex/resolvers/aggregateOffer.js +23 -0
- package/dist/cjs/src/platforms/vtex/resolvers/aggregateOffer.js.map +1 -0
- package/dist/{platforms → cjs/src/platforms}/vtex/resolvers/aggregateRating.d.ts +2 -2
- package/dist/cjs/src/platforms/vtex/resolvers/aggregateRating.js +9 -0
- package/dist/cjs/src/platforms/vtex/resolvers/aggregateRating.js.map +1 -0
- package/dist/{platforms → cjs/src/platforms}/vtex/resolvers/collection.d.ts +8 -8
- package/dist/cjs/src/platforms/vtex/resolvers/collection.js +81 -0
- package/dist/cjs/src/platforms/vtex/resolvers/collection.js.map +1 -0
- package/dist/{platforms → cjs/src/platforms}/vtex/resolvers/faceValue.d.ts +3 -3
- package/dist/cjs/src/platforms/vtex/resolvers/faceValue.js +10 -0
- package/dist/cjs/src/platforms/vtex/resolvers/faceValue.js.map +1 -0
- package/dist/{platforms → cjs/src/platforms}/vtex/resolvers/facet.d.ts +6 -6
- package/dist/cjs/src/platforms/vtex/resolvers/facet.js +50 -0
- package/dist/cjs/src/platforms/vtex/resolvers/facet.js.map +1 -0
- package/dist/{platforms → cjs/src/platforms}/vtex/resolvers/mutation.d.ts +59 -59
- package/dist/cjs/src/platforms/vtex/resolvers/mutation.js +12 -0
- package/dist/cjs/src/platforms/vtex/resolvers/mutation.js.map +1 -0
- package/dist/{platforms → cjs/src/platforms}/vtex/resolvers/objectOrString.d.ts +2 -2
- package/dist/cjs/src/platforms/vtex/resolvers/objectOrString.js +41 -0
- package/dist/cjs/src/platforms/vtex/resolvers/objectOrString.js.map +1 -0
- package/dist/{platforms → cjs/src/platforms}/vtex/resolvers/offer.d.ts +12 -12
- package/dist/cjs/src/platforms/vtex/resolvers/offer.js +94 -0
- package/dist/cjs/src/platforms/vtex/resolvers/offer.js.map +1 -0
- package/dist/{platforms → cjs/src/platforms}/vtex/resolvers/organization.d.ts +5 -5
- package/dist/cjs/src/platforms/vtex/resolvers/organization.js +7 -0
- package/dist/cjs/src/platforms/vtex/resolvers/organization.js.map +1 -0
- package/dist/{platforms → cjs/src/platforms}/vtex/resolvers/product.d.ts +14 -14
- package/dist/cjs/src/platforms/vtex/resolvers/product.js +78 -0
- package/dist/cjs/src/platforms/vtex/resolvers/product.js.map +1 -0
- package/dist/{platforms → cjs/src/platforms}/vtex/resolvers/productGroup.d.ts +5 -5
- package/dist/cjs/src/platforms/vtex/resolvers/productGroup.js +22 -0
- package/dist/cjs/src/platforms/vtex/resolvers/productGroup.js.map +1 -0
- package/dist/{platforms → cjs/src/platforms}/vtex/resolvers/propertyValue.d.ts +4 -4
- package/dist/cjs/src/platforms/vtex/resolvers/propertyValue.js +11 -0
- package/dist/cjs/src/platforms/vtex/resolvers/propertyValue.js.map +1 -0
- package/dist/{platforms → cjs/src/platforms}/vtex/resolvers/query.d.ts +72 -72
- package/dist/cjs/src/platforms/vtex/resolvers/query.js +223 -0
- package/dist/cjs/src/platforms/vtex/resolvers/query.js.map +1 -0
- package/dist/{platforms → cjs/src/platforms}/vtex/resolvers/review.d.ts +2 -2
- package/dist/cjs/src/platforms/vtex/resolvers/review.js +13 -0
- package/dist/cjs/src/platforms/vtex/resolvers/review.js.map +1 -0
- package/dist/{platforms → cjs/src/platforms}/vtex/resolvers/root.d.ts +12 -12
- package/dist/cjs/src/platforms/vtex/resolvers/root.js +3 -0
- package/dist/cjs/src/platforms/vtex/resolvers/root.js.map +1 -0
- package/dist/{platforms → cjs/src/platforms}/vtex/resolvers/searchResult.d.ts +8 -8
- package/dist/cjs/src/platforms/vtex/resolvers/searchResult.js +97 -0
- package/dist/cjs/src/platforms/vtex/resolvers/searchResult.js.map +1 -0
- package/dist/{platforms → cjs/src/platforms}/vtex/resolvers/seo.d.ts +7 -7
- package/dist/cjs/src/platforms/vtex/resolvers/seo.js +10 -0
- package/dist/cjs/src/platforms/vtex/resolvers/seo.js.map +1 -0
- package/dist/{platforms → cjs/src/platforms}/vtex/resolvers/shippingSLA.d.ts +13 -13
- package/dist/cjs/src/platforms/vtex/resolvers/shippingSLA.js +48 -0
- package/dist/cjs/src/platforms/vtex/resolvers/shippingSLA.js.map +1 -0
- package/dist/{platforms → cjs/src/platforms}/vtex/resolvers/skuVariations.d.ts +5 -5
- package/dist/cjs/src/platforms/vtex/resolvers/skuVariations.js +17 -0
- package/dist/cjs/src/platforms/vtex/resolvers/skuVariations.js.map +1 -0
- package/dist/{platforms → cjs/src/platforms}/vtex/resolvers/subscribeToNewsletter.d.ts +3 -3
- package/dist/cjs/src/platforms/vtex/resolvers/subscribeToNewsletter.js +9 -0
- package/dist/cjs/src/platforms/vtex/resolvers/subscribeToNewsletter.js.map +1 -0
- package/dist/{platforms → cjs/src/platforms}/vtex/resolvers/validateCart.d.ts +70 -70
- package/dist/cjs/src/platforms/vtex/resolvers/validateCart.js +282 -0
- package/dist/cjs/src/platforms/vtex/resolvers/validateCart.js.map +1 -0
- package/dist/{platforms → cjs/src/platforms}/vtex/resolvers/validateSession.d.ts +3 -3
- package/dist/cjs/src/platforms/vtex/resolvers/validateSession.js +58 -0
- package/dist/cjs/src/platforms/vtex/resolvers/validateSession.js.map +1 -0
- package/dist/{platforms → cjs/src/platforms}/vtex/utils/canonical.d.ts +2 -2
- package/dist/cjs/src/platforms/vtex/utils/canonical.js +6 -0
- package/dist/cjs/src/platforms/vtex/utils/canonical.js.map +1 -0
- package/dist/{platforms → cjs/src/platforms}/vtex/utils/channel.d.ts +9 -9
- package/dist/cjs/src/platforms/vtex/utils/channel.js +23 -0
- package/dist/cjs/src/platforms/vtex/utils/channel.js.map +1 -0
- package/dist/{platforms → cjs/src/platforms}/vtex/utils/contex.d.ts +3 -3
- package/dist/cjs/src/platforms/vtex/utils/contex.js +14 -0
- package/dist/cjs/src/platforms/vtex/utils/contex.js.map +1 -0
- package/dist/{platforms → cjs/src/platforms}/vtex/utils/createNewAddress.d.ts +3 -3
- package/dist/cjs/src/platforms/vtex/utils/createNewAddress.js +34 -0
- package/dist/cjs/src/platforms/vtex/utils/createNewAddress.js.map +1 -0
- package/dist/{platforms → cjs/src/platforms}/vtex/utils/enhanceCommercialOffer.d.ts +10 -10
- package/dist/cjs/src/platforms/vtex/utils/enhanceCommercialOffer.js +10 -0
- package/dist/cjs/src/platforms/vtex/utils/enhanceCommercialOffer.js.map +1 -0
- package/dist/{platforms → cjs/src/platforms}/vtex/utils/enhanceSku.d.ts +5 -5
- package/dist/cjs/src/platforms/vtex/utils/enhanceSku.js +18 -0
- package/dist/cjs/src/platforms/vtex/utils/enhanceSku.js.map +1 -0
- package/dist/{platforms → cjs/src/platforms}/vtex/utils/facets.d.ts +32 -31
- package/dist/cjs/src/platforms/vtex/utils/facets.js +65 -0
- package/dist/cjs/src/platforms/vtex/utils/facets.js.map +1 -0
- package/dist/{platforms → cjs/src/platforms}/vtex/utils/getAddressOrderForm.d.ts +3 -3
- package/dist/cjs/src/platforms/vtex/utils/getAddressOrderForm.js +42 -0
- package/dist/cjs/src/platforms/vtex/utils/getAddressOrderForm.js.map +1 -0
- package/dist/{platforms → cjs/src/platforms}/vtex/utils/md5.d.ts +1 -1
- package/dist/cjs/src/platforms/vtex/utils/md5.js +8 -0
- package/dist/cjs/src/platforms/vtex/utils/md5.js.map +1 -0
- package/dist/{platforms → cjs/src/platforms}/vtex/utils/orderStatistics.d.ts +4 -4
- package/dist/cjs/src/platforms/vtex/utils/orderStatistics.js +18 -0
- package/dist/cjs/src/platforms/vtex/utils/orderStatistics.js.map +1 -0
- package/dist/{platforms → cjs/src/platforms}/vtex/utils/productStock.d.ts +7 -7
- package/dist/cjs/src/platforms/vtex/utils/productStock.js +25 -0
- package/dist/cjs/src/platforms/vtex/utils/productStock.js.map +1 -0
- package/dist/{platforms → cjs/src/platforms}/vtex/utils/propertyValue.d.ts +12 -12
- package/dist/cjs/src/platforms/vtex/utils/propertyValue.js +21 -0
- package/dist/cjs/src/platforms/vtex/utils/propertyValue.js.map +1 -0
- package/dist/{platforms → cjs/src/platforms}/vtex/utils/sanitizeHtml.d.ts +17 -17
- package/dist/cjs/src/platforms/vtex/utils/sanitizeHtml.js +23 -0
- package/dist/cjs/src/platforms/vtex/utils/sanitizeHtml.js.map +1 -0
- package/dist/{platforms → cjs/src/platforms}/vtex/utils/shouldUpdateShippingData.d.ts +6 -6
- package/dist/cjs/src/platforms/vtex/utils/shouldUpdateShippingData.js +72 -0
- package/dist/cjs/src/platforms/vtex/utils/shouldUpdateShippingData.js.map +1 -0
- package/dist/{platforms → cjs/src/platforms}/vtex/utils/sku.d.ts +8 -8
- package/dist/cjs/src/platforms/vtex/utils/sku.js +22 -0
- package/dist/cjs/src/platforms/vtex/utils/sku.js.map +1 -0
- package/dist/{platforms → cjs/src/platforms}/vtex/utils/skuVariants.d.ts +15 -15
- package/dist/cjs/src/platforms/vtex/utils/skuVariants.js +139 -0
- package/dist/cjs/src/platforms/vtex/utils/skuVariants.js.map +1 -0
- package/dist/{platforms → cjs/src/platforms}/vtex/utils/slugify.d.ts +1 -1
- package/dist/cjs/src/platforms/vtex/utils/slugify.js +43 -0
- package/dist/cjs/src/platforms/vtex/utils/slugify.js.map +1 -0
- package/dist/{platforms → cjs/src/platforms}/vtex/utils/sort.d.ts +10 -10
- package/dist/cjs/src/platforms/vtex/utils/sort.js +14 -0
- package/dist/cjs/src/platforms/vtex/utils/sort.js.map +1 -0
- package/dist/{telemetry → cjs/src/telemetry}/index.d.ts +8 -8
- package/dist/cjs/src/telemetry/index.js +77 -0
- package/dist/cjs/src/telemetry/index.js.map +1 -0
- package/dist/{telemetry → cjs/src/telemetry}/useFaststoreTelemetry.d.ts +24 -24
- package/dist/cjs/src/telemetry/useFaststoreTelemetry.js +174 -0
- package/dist/cjs/src/telemetry/useFaststoreTelemetry.js.map +1 -0
- package/dist/cjs/src/typeDefs/address.graphql +45 -0
- package/dist/cjs/src/typeDefs/aggregateOffer.graphql +25 -0
- package/dist/cjs/src/typeDefs/aggregateRating.graphql +13 -0
- package/dist/cjs/src/typeDefs/author.graphql +9 -0
- package/dist/cjs/src/typeDefs/brand.graphql +9 -0
- package/dist/cjs/src/typeDefs/breadcrumb.graphql +31 -0
- package/dist/cjs/src/typeDefs/cart.graphql +37 -0
- package/dist/cjs/src/typeDefs/collection.graphql +83 -0
- package/dist/cjs/src/typeDefs/facet.graphql +77 -0
- package/dist/cjs/src/typeDefs/image.graphql +27 -0
- package/dist/{typeDefs → cjs/src/typeDefs}/index.d.ts +1 -1
- package/dist/cjs/src/typeDefs/index.js +10 -0
- package/dist/cjs/src/typeDefs/index.js.map +1 -0
- package/dist/cjs/src/typeDefs/mutation.graphql +14 -0
- package/dist/cjs/src/typeDefs/newsletter.graphql +24 -0
- package/dist/cjs/src/typeDefs/objectOrString.graphql +1 -0
- package/dist/cjs/src/typeDefs/offer.graphql +71 -0
- package/dist/cjs/src/typeDefs/order.graphql +31 -0
- package/dist/cjs/src/typeDefs/organization.graphql +19 -0
- package/dist/cjs/src/typeDefs/pageInfo.graphql +25 -0
- package/dist/cjs/src/typeDefs/person.graphql +43 -0
- package/dist/cjs/src/typeDefs/product.graphql +91 -0
- package/dist/cjs/src/typeDefs/productGroup.graphql +27 -0
- package/dist/cjs/src/typeDefs/propertyValue.graphql +40 -0
- package/dist/cjs/src/typeDefs/query.graphql +377 -0
- package/dist/cjs/src/typeDefs/review.graphql +27 -0
- package/dist/cjs/src/typeDefs/seo.graphql +21 -0
- package/dist/cjs/src/typeDefs/session.graphql +194 -0
- package/dist/cjs/src/typeDefs/shipping.graphql +331 -0
- package/dist/cjs/src/typeDefs/skuVariants.graphql +90 -0
- package/dist/cjs/src/typeDefs/status.graphql +8 -0
- package/dist/cjs/src/typings/index.d.ts +3 -0
- package/dist/cjs/src/typings/index.js +3 -0
- package/dist/cjs/src/typings/index.js.map +1 -0
- package/dist/esm/package.json +79 -0
- package/dist/esm/src/__generated__/schema.d.ts +1045 -0
- package/dist/esm/src/__generated__/schema.js +6 -0
- package/dist/esm/src/__generated__/schema.js.map +1 -0
- package/dist/esm/src/directives/cacheControl.d.ts +9 -0
- package/dist/esm/src/directives/cacheControl.js +41 -0
- package/dist/esm/src/directives/cacheControl.js.map +1 -0
- package/dist/esm/src/directives/index.d.ts +5 -0
- package/dist/esm/src/directives/index.js +2 -0
- package/dist/esm/src/directives/index.js.map +1 -0
- package/dist/esm/src/index.d.ts +163 -0
- package/dist/esm/src/index.js +29 -0
- package/dist/esm/src/index.js.map +1 -0
- package/dist/esm/src/platforms/errors.d.ts +19 -0
- package/dist/esm/src/platforms/errors.js +22 -0
- package/dist/esm/src/platforms/errors.js.map +1 -0
- package/dist/esm/src/platforms/vtex/clients/commerce/index.d.ts +75 -0
- package/dist/esm/src/platforms/vtex/clients/commerce/index.js +161 -0
- package/dist/esm/src/platforms/vtex/clients/commerce/index.js.map +1 -0
- package/dist/esm/src/platforms/vtex/clients/commerce/types/Address.d.ts +16 -0
- package/dist/esm/src/platforms/vtex/clients/commerce/types/Address.js +2 -0
- package/dist/esm/src/platforms/vtex/clients/commerce/types/Address.js.map +1 -0
- package/dist/esm/src/platforms/vtex/clients/commerce/types/Brand.d.ts +8 -0
- package/dist/esm/src/platforms/vtex/clients/commerce/types/Brand.js +2 -0
- package/dist/esm/src/platforms/vtex/clients/commerce/types/Brand.js.map +1 -0
- package/dist/esm/src/platforms/vtex/clients/commerce/types/CategoryTree.d.ts +9 -0
- package/dist/esm/src/platforms/vtex/clients/commerce/types/CategoryTree.js +2 -0
- package/dist/esm/src/platforms/vtex/clients/commerce/types/CategoryTree.js.map +1 -0
- package/dist/esm/src/platforms/vtex/clients/commerce/types/Newsletter.d.ts +4 -0
- package/dist/esm/src/platforms/vtex/clients/commerce/types/Newsletter.js +2 -0
- package/dist/esm/src/platforms/vtex/clients/commerce/types/Newsletter.js.map +1 -0
- package/dist/esm/src/platforms/vtex/clients/commerce/types/OrderForm.d.ts +371 -0
- package/dist/esm/src/platforms/vtex/clients/commerce/types/OrderForm.js +2 -0
- package/dist/esm/src/platforms/vtex/clients/commerce/types/OrderForm.js.map +1 -0
- package/dist/esm/src/platforms/vtex/clients/commerce/types/Portal.d.ts +17 -0
- package/dist/esm/src/platforms/vtex/clients/commerce/types/Portal.js +2 -0
- package/dist/esm/src/platforms/vtex/clients/commerce/types/Portal.js.map +1 -0
- package/dist/esm/src/platforms/vtex/clients/commerce/types/Product.d.ts +174 -0
- package/dist/esm/src/platforms/vtex/clients/commerce/types/Product.js +52 -0
- package/dist/esm/src/platforms/vtex/clients/commerce/types/Product.js.map +1 -0
- package/dist/esm/src/platforms/vtex/clients/commerce/types/Region.d.ts +19 -0
- package/dist/esm/src/platforms/vtex/clients/commerce/types/Region.js +2 -0
- package/dist/esm/src/platforms/vtex/clients/commerce/types/Region.js.map +1 -0
- package/dist/esm/src/platforms/vtex/clients/commerce/types/SalesChannel.d.ts +24 -0
- package/dist/esm/src/platforms/vtex/clients/commerce/types/SalesChannel.js +2 -0
- package/dist/esm/src/platforms/vtex/clients/commerce/types/SalesChannel.js.map +1 -0
- package/dist/esm/src/platforms/vtex/clients/commerce/types/Session.d.ts +33 -0
- package/dist/esm/src/platforms/vtex/clients/commerce/types/Session.js +2 -0
- package/dist/esm/src/platforms/vtex/clients/commerce/types/Session.js.map +1 -0
- package/dist/esm/src/platforms/vtex/clients/commerce/types/ShippingData.d.ts +38 -0
- package/dist/esm/src/platforms/vtex/clients/commerce/types/ShippingData.js +2 -0
- package/dist/esm/src/platforms/vtex/clients/commerce/types/ShippingData.js.map +1 -0
- package/dist/esm/src/platforms/vtex/clients/commerce/types/Simulation.d.ts +154 -0
- package/dist/esm/src/platforms/vtex/clients/commerce/types/Simulation.js +2 -0
- package/dist/esm/src/platforms/vtex/clients/commerce/types/Simulation.js.map +1 -0
- package/dist/esm/src/platforms/vtex/clients/fetch.d.ts +1 -0
- package/dist/esm/src/platforms/vtex/clients/fetch.js +19 -0
- package/dist/esm/src/platforms/vtex/clients/fetch.js.map +1 -0
- package/dist/esm/src/platforms/vtex/clients/index.d.ts +71 -0
- package/dist/esm/src/platforms/vtex/clients/index.js +14 -0
- package/dist/esm/src/platforms/vtex/clients/index.js.map +1 -0
- package/dist/esm/src/platforms/vtex/clients/search/index.d.ts +26 -0
- package/dist/esm/src/platforms/vtex/clients/search/index.js +83 -0
- package/dist/esm/src/platforms/vtex/clients/search/index.js.map +1 -0
- package/dist/esm/src/platforms/vtex/clients/search/types/AttributeSearchResult.d.ts +30 -0
- package/dist/esm/src/platforms/vtex/clients/search/types/AttributeSearchResult.js +2 -0
- package/dist/esm/src/platforms/vtex/clients/search/types/AttributeSearchResult.js.map +1 -0
- package/dist/esm/src/platforms/vtex/clients/search/types/FacetSearchResult.d.ts +31 -0
- package/dist/esm/src/platforms/vtex/clients/search/types/FacetSearchResult.js +2 -0
- package/dist/esm/src/platforms/vtex/clients/search/types/FacetSearchResult.js.map +1 -0
- package/dist/esm/src/platforms/vtex/clients/search/types/ProductSearchResult.d.ts +206 -0
- package/dist/esm/src/platforms/vtex/clients/search/types/ProductSearchResult.js +2 -0
- package/dist/esm/src/platforms/vtex/clients/search/types/ProductSearchResult.js.map +1 -0
- package/dist/esm/src/platforms/vtex/clients/sp/index.d.ts +14 -0
- package/dist/esm/src/platforms/vtex/clients/sp/index.js +45 -0
- package/dist/esm/src/platforms/vtex/clients/sp/index.js.map +1 -0
- package/dist/esm/src/platforms/vtex/index.d.ts +188 -0
- package/dist/esm/src/platforms/vtex/index.js +53 -0
- package/dist/esm/src/platforms/vtex/index.js.map +1 -0
- package/dist/esm/src/platforms/vtex/loaders/collection.d.ts +6 -0
- package/dist/esm/src/platforms/vtex/loaders/collection.js +32 -0
- package/dist/esm/src/platforms/vtex/loaders/collection.js.map +1 -0
- package/dist/esm/src/platforms/vtex/loaders/index.d.ts +8 -0
- package/dist/esm/src/platforms/vtex/loaders/index.js +17 -0
- package/dist/esm/src/platforms/vtex/loaders/index.js.map +1 -0
- package/dist/esm/src/platforms/vtex/loaders/salesChannel.d.ts +5 -0
- package/dist/esm/src/platforms/vtex/loaders/salesChannel.js +6 -0
- package/dist/esm/src/platforms/vtex/loaders/salesChannel.js.map +1 -0
- package/dist/esm/src/platforms/vtex/loaders/simulation.d.ts +5 -0
- package/dist/esm/src/platforms/vtex/loaders/simulation.js +39 -0
- package/dist/esm/src/platforms/vtex/loaders/simulation.js.map +1 -0
- package/dist/esm/src/platforms/vtex/loaders/sku.d.ts +5 -0
- package/dist/esm/src/platforms/vtex/loaders/sku.js +28 -0
- package/dist/esm/src/platforms/vtex/loaders/sku.js.map +1 -0
- package/dist/esm/src/platforms/vtex/resolvers/aggregateOffer.d.ts +7 -0
- package/dist/esm/src/platforms/vtex/resolvers/aggregateOffer.js +20 -0
- package/dist/esm/src/platforms/vtex/resolvers/aggregateOffer.js.map +1 -0
- package/dist/esm/src/platforms/vtex/resolvers/aggregateRating.d.ts +2 -0
- package/dist/esm/src/platforms/vtex/resolvers/aggregateRating.js +6 -0
- package/dist/esm/src/platforms/vtex/resolvers/aggregateRating.js.map +1 -0
- package/dist/esm/src/platforms/vtex/resolvers/collection.d.ts +8 -0
- package/dist/esm/src/platforms/vtex/resolvers/collection.js +78 -0
- package/dist/esm/src/platforms/vtex/resolvers/collection.js.map +1 -0
- package/dist/esm/src/platforms/vtex/resolvers/faceValue.d.ts +3 -0
- package/dist/esm/src/platforms/vtex/resolvers/faceValue.js +7 -0
- package/dist/esm/src/platforms/vtex/resolvers/faceValue.js.map +1 -0
- package/dist/esm/src/platforms/vtex/resolvers/facet.d.ts +6 -0
- package/dist/esm/src/platforms/vtex/resolvers/facet.js +47 -0
- package/dist/esm/src/platforms/vtex/resolvers/facet.js.map +1 -0
- package/dist/esm/src/platforms/vtex/resolvers/mutation.d.ts +59 -0
- package/dist/esm/src/platforms/vtex/resolvers/mutation.js +9 -0
- package/dist/esm/src/platforms/vtex/resolvers/mutation.js.map +1 -0
- package/dist/esm/src/platforms/vtex/resolvers/objectOrString.d.ts +2 -0
- package/dist/esm/src/platforms/vtex/resolvers/objectOrString.js +38 -0
- package/dist/esm/src/platforms/vtex/resolvers/objectOrString.js.map +1 -0
- package/dist/esm/src/platforms/vtex/resolvers/offer.d.ts +12 -0
- package/dist/esm/src/platforms/vtex/resolvers/offer.js +91 -0
- package/dist/esm/src/platforms/vtex/resolvers/offer.js.map +1 -0
- package/dist/esm/src/platforms/vtex/resolvers/organization.d.ts +5 -0
- package/dist/esm/src/platforms/vtex/resolvers/organization.js +4 -0
- package/dist/esm/src/platforms/vtex/resolvers/organization.js.map +1 -0
- package/dist/esm/src/platforms/vtex/resolvers/product.d.ts +14 -0
- package/dist/esm/src/platforms/vtex/resolvers/product.js +75 -0
- package/dist/esm/src/platforms/vtex/resolvers/product.js.map +1 -0
- package/dist/esm/src/platforms/vtex/resolvers/productGroup.d.ts +5 -0
- package/dist/esm/src/platforms/vtex/resolvers/productGroup.js +19 -0
- package/dist/esm/src/platforms/vtex/resolvers/productGroup.js.map +1 -0
- package/dist/esm/src/platforms/vtex/resolvers/propertyValue.d.ts +4 -0
- package/dist/esm/src/platforms/vtex/resolvers/propertyValue.js +8 -0
- package/dist/esm/src/platforms/vtex/resolvers/propertyValue.js.map +1 -0
- package/dist/esm/src/platforms/vtex/resolvers/query.d.ts +72 -0
- package/dist/esm/src/platforms/vtex/resolvers/query.js +220 -0
- package/dist/esm/src/platforms/vtex/resolvers/query.js.map +1 -0
- package/dist/esm/src/platforms/vtex/resolvers/review.d.ts +2 -0
- package/dist/esm/src/platforms/vtex/resolvers/review.js +10 -0
- package/dist/esm/src/platforms/vtex/resolvers/review.js.map +1 -0
- package/dist/esm/src/platforms/vtex/resolvers/root.d.ts +12 -0
- package/dist/esm/src/platforms/vtex/resolvers/root.js +2 -0
- package/dist/esm/src/platforms/vtex/resolvers/root.js.map +1 -0
- package/dist/esm/src/platforms/vtex/resolvers/searchResult.d.ts +8 -0
- package/dist/esm/src/platforms/vtex/resolvers/searchResult.js +94 -0
- package/dist/esm/src/platforms/vtex/resolvers/searchResult.js.map +1 -0
- package/dist/esm/src/platforms/vtex/resolvers/seo.d.ts +7 -0
- package/dist/esm/src/platforms/vtex/resolvers/seo.js +7 -0
- package/dist/esm/src/platforms/vtex/resolvers/seo.js.map +1 -0
- package/dist/esm/src/platforms/vtex/resolvers/shippingSLA.d.ts +13 -0
- package/dist/esm/src/platforms/vtex/resolvers/shippingSLA.js +44 -0
- package/dist/esm/src/platforms/vtex/resolvers/shippingSLA.js.map +1 -0
- package/dist/esm/src/platforms/vtex/resolvers/skuVariations.d.ts +5 -0
- package/dist/esm/src/platforms/vtex/resolvers/skuVariations.js +14 -0
- package/dist/esm/src/platforms/vtex/resolvers/skuVariations.js.map +1 -0
- package/dist/esm/src/platforms/vtex/resolvers/subscribeToNewsletter.d.ts +3 -0
- package/dist/esm/src/platforms/vtex/resolvers/subscribeToNewsletter.js +5 -0
- package/dist/esm/src/platforms/vtex/resolvers/subscribeToNewsletter.js.map +1 -0
- package/dist/esm/src/platforms/vtex/resolvers/validateCart.d.ts +70 -0
- package/dist/esm/src/platforms/vtex/resolvers/validateCart.js +277 -0
- package/dist/esm/src/platforms/vtex/resolvers/validateCart.js.map +1 -0
- package/dist/esm/src/platforms/vtex/resolvers/validateSession.d.ts +3 -0
- package/dist/esm/src/platforms/vtex/resolvers/validateSession.js +53 -0
- package/dist/esm/src/platforms/vtex/resolvers/validateSession.js.map +1 -0
- package/dist/esm/src/platforms/vtex/utils/canonical.d.ts +2 -0
- package/dist/esm/src/platforms/vtex/utils/canonical.js +2 -0
- package/dist/esm/src/platforms/vtex/utils/canonical.js.map +1 -0
- package/dist/esm/src/platforms/vtex/utils/channel.d.ts +9 -0
- package/dist/esm/src/platforms/vtex/utils/channel.js +20 -0
- package/dist/esm/src/platforms/vtex/utils/channel.js.map +1 -0
- package/dist/esm/src/platforms/vtex/utils/contex.d.ts +3 -0
- package/dist/esm/src/platforms/vtex/utils/contex.js +8 -0
- package/dist/esm/src/platforms/vtex/utils/contex.js.map +1 -0
- package/dist/esm/src/platforms/vtex/utils/createNewAddress.d.ts +3 -0
- package/dist/esm/src/platforms/vtex/utils/createNewAddress.js +30 -0
- package/dist/esm/src/platforms/vtex/utils/createNewAddress.js.map +1 -0
- package/dist/esm/src/platforms/vtex/utils/enhanceCommercialOffer.d.ts +10 -0
- package/dist/esm/src/platforms/vtex/utils/enhanceCommercialOffer.js +6 -0
- package/dist/esm/src/platforms/vtex/utils/enhanceCommercialOffer.js.map +1 -0
- package/dist/esm/src/platforms/vtex/utils/enhanceSku.d.ts +5 -0
- package/dist/esm/src/platforms/vtex/utils/enhanceSku.js +14 -0
- package/dist/esm/src/platforms/vtex/utils/enhanceSku.js.map +1 -0
- package/dist/esm/src/platforms/vtex/utils/facets.d.ts +32 -0
- package/dist/esm/src/platforms/vtex/utils/facets.js +54 -0
- package/dist/esm/src/platforms/vtex/utils/facets.js.map +1 -0
- package/dist/esm/src/platforms/vtex/utils/getAddressOrderForm.d.ts +3 -0
- package/dist/esm/src/platforms/vtex/utils/getAddressOrderForm.js +38 -0
- package/dist/esm/src/platforms/vtex/utils/getAddressOrderForm.js.map +1 -0
- package/dist/esm/src/platforms/vtex/utils/md5.d.ts +1 -0
- package/dist/esm/src/platforms/vtex/utils/md5.js +3 -0
- package/dist/esm/src/platforms/vtex/utils/md5.js.map +1 -0
- package/dist/esm/src/platforms/vtex/utils/orderStatistics.d.ts +4 -0
- package/dist/esm/src/platforms/vtex/utils/orderStatistics.js +14 -0
- package/dist/esm/src/platforms/vtex/utils/orderStatistics.js.map +1 -0
- package/dist/esm/src/platforms/vtex/utils/productStock.d.ts +7 -0
- package/dist/esm/src/platforms/vtex/utils/productStock.js +16 -0
- package/dist/esm/src/platforms/vtex/utils/productStock.js.map +1 -0
- package/dist/esm/src/platforms/vtex/utils/propertyValue.d.ts +12 -0
- package/dist/esm/src/platforms/vtex/utils/propertyValue.js +16 -0
- package/dist/esm/src/platforms/vtex/utils/propertyValue.js.map +1 -0
- package/dist/esm/src/platforms/vtex/utils/sanitizeHtml.d.ts +17 -0
- package/dist/esm/src/platforms/vtex/utils/sanitizeHtml.js +18 -0
- package/dist/esm/src/platforms/vtex/utils/sanitizeHtml.js.map +1 -0
- package/dist/esm/src/platforms/vtex/utils/shouldUpdateShippingData.d.ts +6 -0
- package/dist/esm/src/platforms/vtex/utils/shouldUpdateShippingData.js +68 -0
- package/dist/esm/src/platforms/vtex/utils/shouldUpdateShippingData.js.map +1 -0
- package/dist/esm/src/platforms/vtex/utils/sku.d.ts +8 -0
- package/dist/esm/src/platforms/vtex/utils/sku.js +17 -0
- package/dist/esm/src/platforms/vtex/utils/sku.js.map +1 -0
- package/dist/esm/src/platforms/vtex/utils/skuVariants.d.ts +15 -0
- package/dist/esm/src/platforms/vtex/utils/skuVariants.js +132 -0
- package/dist/esm/src/platforms/vtex/utils/skuVariants.js.map +1 -0
- package/dist/esm/src/platforms/vtex/utils/slugify.d.ts +1 -0
- package/dist/esm/src/platforms/vtex/utils/slugify.js +39 -0
- package/dist/esm/src/platforms/vtex/utils/slugify.js.map +1 -0
- package/dist/esm/src/platforms/vtex/utils/sort.d.ts +10 -0
- package/dist/esm/src/platforms/vtex/utils/sort.js +11 -0
- package/dist/esm/src/platforms/vtex/utils/sort.js.map +1 -0
- package/dist/esm/src/telemetry/index.d.ts +8 -0
- package/dist/esm/src/telemetry/index.js +72 -0
- package/dist/esm/src/telemetry/index.js.map +1 -0
- package/dist/esm/src/telemetry/useFaststoreTelemetry.d.ts +24 -0
- package/dist/esm/src/telemetry/useFaststoreTelemetry.js +170 -0
- package/dist/esm/src/telemetry/useFaststoreTelemetry.js.map +1 -0
- package/dist/esm/src/typeDefs/address.graphql +45 -0
- package/dist/esm/src/typeDefs/aggregateOffer.graphql +25 -0
- package/dist/esm/src/typeDefs/aggregateRating.graphql +13 -0
- package/dist/esm/src/typeDefs/author.graphql +9 -0
- package/dist/esm/src/typeDefs/brand.graphql +9 -0
- package/dist/esm/src/typeDefs/breadcrumb.graphql +31 -0
- package/dist/esm/src/typeDefs/cart.graphql +37 -0
- package/dist/esm/src/typeDefs/collection.graphql +83 -0
- package/dist/esm/src/typeDefs/facet.graphql +77 -0
- package/dist/esm/src/typeDefs/image.graphql +27 -0
- package/dist/esm/src/typeDefs/index.d.ts +1 -0
- package/dist/esm/src/typeDefs/index.js +7 -0
- package/dist/esm/src/typeDefs/index.js.map +1 -0
- package/dist/esm/src/typeDefs/mutation.graphql +14 -0
- package/dist/esm/src/typeDefs/newsletter.graphql +24 -0
- package/dist/esm/src/typeDefs/objectOrString.graphql +1 -0
- package/dist/esm/src/typeDefs/offer.graphql +71 -0
- package/dist/esm/src/typeDefs/order.graphql +31 -0
- package/dist/esm/src/typeDefs/organization.graphql +19 -0
- package/dist/esm/src/typeDefs/pageInfo.graphql +25 -0
- package/dist/esm/src/typeDefs/person.graphql +43 -0
- package/dist/esm/src/typeDefs/product.graphql +91 -0
- package/dist/esm/src/typeDefs/productGroup.graphql +27 -0
- package/dist/esm/src/typeDefs/propertyValue.graphql +40 -0
- package/dist/esm/src/typeDefs/query.graphql +377 -0
- package/dist/esm/src/typeDefs/review.graphql +27 -0
- package/dist/esm/src/typeDefs/seo.graphql +21 -0
- package/dist/esm/src/typeDefs/session.graphql +194 -0
- package/dist/esm/src/typeDefs/shipping.graphql +331 -0
- package/dist/esm/src/typeDefs/skuVariants.graphql +90 -0
- package/dist/esm/src/typeDefs/status.graphql +8 -0
- package/dist/esm/src/typings/index.d.ts +3 -0
- package/dist/esm/src/typings/index.js +2 -0
- package/dist/esm/src/typings/index.js.map +1 -0
- package/package.json +34 -17
- package/src/index.ts +1 -1
- package/src/typeDefs/index.ts +3 -58
- package/dist/api.cjs.development.js +0 -2946
- package/dist/api.cjs.development.js.map +0 -1
- package/dist/api.cjs.production.min.js +0 -2
- package/dist/api.cjs.production.min.js.map +0 -1
- package/dist/api.esm.js +0 -2932
- package/dist/api.esm.js.map +0 -1
- package/dist/index.js +0 -8
- package/dist/typings/index.d.ts +0 -3
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isValidSkuId = exports.pickBestSku = void 0;
|
|
4
|
+
const orderStatistics_1 = require("./orderStatistics");
|
|
5
|
+
const productStock_1 = require("./productStock");
|
|
6
|
+
/**
|
|
7
|
+
* This function implements Portal heuristics for returning the best sku for a product.
|
|
8
|
+
*
|
|
9
|
+
* The best sku is the one with the best (cheapest available) offer
|
|
10
|
+
* */
|
|
11
|
+
const pickBestSku = (skus) => {
|
|
12
|
+
const offersBySku = skus.flatMap((sku) => sku.sellers.map((seller) => ({
|
|
13
|
+
offer: seller.commertialOffer,
|
|
14
|
+
sku,
|
|
15
|
+
})));
|
|
16
|
+
const best = (0, orderStatistics_1.min)(offersBySku, ({ offer: o1 }, { offer: o2 }) => (0, productStock_1.bestOfferFirst)(o1, o2));
|
|
17
|
+
return best ? best.sku : skus[0];
|
|
18
|
+
};
|
|
19
|
+
exports.pickBestSku = pickBestSku;
|
|
20
|
+
const isValidSkuId = (skuId) => skuId !== '' && !Number.isNaN(Number(skuId));
|
|
21
|
+
exports.isValidSkuId = isValidSkuId;
|
|
22
|
+
//# sourceMappingURL=sku.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sku.js","sourceRoot":"","sources":["../../../../../../src/platforms/vtex/utils/sku.ts"],"names":[],"mappings":";;;AAAA,uDAAuC;AACvC,iDAA+C;AAG/C;;;;KAIK;AACE,MAAM,WAAW,GAAG,CAAC,IAAY,EAAE,EAAE;IAC1C,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CACvC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC3B,KAAK,EAAE,MAAM,CAAC,eAAe;QAC7B,GAAG;KACJ,CAAC,CAAC,CACJ,CAAA;IAED,MAAM,IAAI,GAAG,IAAA,qBAAG,EAAC,WAAW,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,EAAE,CAC7D,IAAA,6BAAc,EAAC,EAAE,EAAE,EAAE,CAAC,CACvB,CAAA;IAED,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AAClC,CAAC,CAAA;AAbY,QAAA,WAAW,eAavB;AAEM,MAAM,YAAY,GAAG,CAAC,KAAa,EAAE,EAAE,CAC5C,KAAK,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;AADjC,QAAA,YAAY,gBACqB"}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { StoreProduct as StoreProductType } from '../../..';
|
|
2
|
-
import type { Product, Item } from '../clients/search/types/ProductSearchResult';
|
|
3
|
-
export
|
|
4
|
-
export
|
|
5
|
-
|
|
6
|
-
alt: string;
|
|
7
|
-
src: string;
|
|
8
|
-
label: string;
|
|
9
|
-
value: string;
|
|
10
|
-
};
|
|
11
|
-
export declare function createSlugsMap(variants: Item[], dominantVariantName: string, baseSlug: string): Record<string, string>;
|
|
12
|
-
export declare function getActiveSkuVariations(variations: Item['variations']): Record<string, string>;
|
|
13
|
-
export declare function getVariantsByName(skuSpecifications: Product['skuSpecifications']): Record<string, string[]>;
|
|
14
|
-
export declare function getFormattedVariations(variants: Item[], dominantVariantName: string, dominantVariantValue: string):
|
|
15
|
-
export {};
|
|
1
|
+
import { StoreProduct as StoreProductType } from '../../..';
|
|
2
|
+
import type { Product, Item } from '../clients/search/types/ProductSearchResult';
|
|
3
|
+
export type SkuVariants = StoreProductType[];
|
|
4
|
+
export type SkuVariantsByName = Record<string, Array<FormattedSkuVariant>>;
|
|
5
|
+
type FormattedSkuVariant = {
|
|
6
|
+
alt: string;
|
|
7
|
+
src: string;
|
|
8
|
+
label: string;
|
|
9
|
+
value: string;
|
|
10
|
+
};
|
|
11
|
+
export declare function createSlugsMap(variants: Item[], dominantVariantName: string, baseSlug: string): Record<string, string>;
|
|
12
|
+
export declare function getActiveSkuVariations(variations: Item['variations']): Record<string, string>;
|
|
13
|
+
export declare function getVariantsByName(skuSpecifications: Product['skuSpecifications']): Record<string, string[]>;
|
|
14
|
+
export declare function getFormattedVariations(variants: Item[], dominantVariantName: string, dominantVariantValue: string): SkuVariantsByName;
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getFormattedVariations = exports.getVariantsByName = exports.getActiveSkuVariations = exports.createSlugsMap = void 0;
|
|
4
|
+
function findSkuVariantImage(availableImages) {
|
|
5
|
+
return (availableImages.find((imageProperties) => imageProperties.imageLabel === 'skuvariation') ?? availableImages[0]);
|
|
6
|
+
}
|
|
7
|
+
function createSlugsMap(variants, dominantVariantName, baseSlug) {
|
|
8
|
+
/**
|
|
9
|
+
* Maps property value combinations to their respective SKU's slug. Enables
|
|
10
|
+
* us to retrieve the slug for the SKU that matches the currently selected
|
|
11
|
+
* variations in O(1) time.
|
|
12
|
+
*
|
|
13
|
+
* Example: `'Color-Red-Size-40': 'classic-shoes-37'`
|
|
14
|
+
*/
|
|
15
|
+
const slugsMap = {};
|
|
16
|
+
variants.forEach((variant) => {
|
|
17
|
+
const skuSpecificationProperties = variant.variations;
|
|
18
|
+
if (skuSpecificationProperties.length === 0) {
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
// Make sure that the 'name-value' pair for the dominant variation
|
|
22
|
+
// is always the first one.
|
|
23
|
+
const dominantNameValue = `${dominantVariantName}-${skuSpecificationProperties.find((variationDetails) => variationDetails.name === dominantVariantName)?.values[0] ?? ''}`;
|
|
24
|
+
const skuVariantKey = skuSpecificationProperties.reduce((acc, property) => {
|
|
25
|
+
const shouldIgnore = property.name === dominantVariantName;
|
|
26
|
+
if (shouldIgnore) {
|
|
27
|
+
return acc;
|
|
28
|
+
}
|
|
29
|
+
return acc + `-${property.name}-${property.values[0]}`;
|
|
30
|
+
}, dominantNameValue);
|
|
31
|
+
slugsMap[skuVariantKey] = `${baseSlug}-${variant.itemId}`;
|
|
32
|
+
});
|
|
33
|
+
return slugsMap;
|
|
34
|
+
}
|
|
35
|
+
exports.createSlugsMap = createSlugsMap;
|
|
36
|
+
function getActiveSkuVariations(variations) {
|
|
37
|
+
const activeVariations = {};
|
|
38
|
+
variations.forEach((variation) => {
|
|
39
|
+
activeVariations[variation.name] = variation.values[0];
|
|
40
|
+
});
|
|
41
|
+
return activeVariations;
|
|
42
|
+
}
|
|
43
|
+
exports.getActiveSkuVariations = getActiveSkuVariations;
|
|
44
|
+
function getVariantsByName(skuSpecifications) {
|
|
45
|
+
const variants = {};
|
|
46
|
+
skuSpecifications?.forEach((specification) => {
|
|
47
|
+
variants[specification.field.originalName ?? specification.field.name] =
|
|
48
|
+
specification.values.map((value) => value.originalName ?? value.name);
|
|
49
|
+
});
|
|
50
|
+
return variants;
|
|
51
|
+
}
|
|
52
|
+
exports.getVariantsByName = getVariantsByName;
|
|
53
|
+
function compare(a, b) {
|
|
54
|
+
// Values are always represented as Strings, so we need to handle numbers
|
|
55
|
+
// in this special case.
|
|
56
|
+
if (!Number.isNaN(Number(a) - Number(b))) {
|
|
57
|
+
return Number(a) - Number(b);
|
|
58
|
+
}
|
|
59
|
+
if (a < b) {
|
|
60
|
+
return -1;
|
|
61
|
+
}
|
|
62
|
+
if (a > b) {
|
|
63
|
+
return 1;
|
|
64
|
+
}
|
|
65
|
+
return 0;
|
|
66
|
+
}
|
|
67
|
+
function sortVariants(variantsByName) {
|
|
68
|
+
const sortedVariants = variantsByName;
|
|
69
|
+
for (const variantProperty in variantsByName) {
|
|
70
|
+
variantsByName[variantProperty].sort((a, b) => compare(a.value, b.value));
|
|
71
|
+
}
|
|
72
|
+
return sortedVariants;
|
|
73
|
+
}
|
|
74
|
+
function getFormattedVariations(variants, dominantVariantName, dominantVariantValue) {
|
|
75
|
+
/**
|
|
76
|
+
* SKU options already formatted and indexed by their property name.
|
|
77
|
+
*
|
|
78
|
+
* Ex: {
|
|
79
|
+
* `Size`: [
|
|
80
|
+
* { label: '42', value: '42' },
|
|
81
|
+
* { label: '41', value: '41' },
|
|
82
|
+
* { label: '39', value: '39' },
|
|
83
|
+
* ]
|
|
84
|
+
* }
|
|
85
|
+
*/
|
|
86
|
+
const variantsByName = {};
|
|
87
|
+
const previouslySeenPropertyValues = new Set();
|
|
88
|
+
variants.forEach((variant) => {
|
|
89
|
+
if (variant.variations.length === 0) {
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
const variantImageToUse = findSkuVariantImage(variant.images);
|
|
93
|
+
const dominantVariantEntry = variant.variations.find((variation) => variation.name === dominantVariantName);
|
|
94
|
+
const matchesDominantVariant = dominantVariantEntry?.values[0] === dominantVariantValue;
|
|
95
|
+
if (!matchesDominantVariant) {
|
|
96
|
+
const nameValueIdentifier = `${dominantVariantName}-${dominantVariantEntry?.values[0]}`;
|
|
97
|
+
if (!dominantVariantEntry ||
|
|
98
|
+
previouslySeenPropertyValues.has(nameValueIdentifier)) {
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
previouslySeenPropertyValues.add(nameValueIdentifier);
|
|
102
|
+
const formattedVariant = {
|
|
103
|
+
src: variantImageToUse.imageUrl,
|
|
104
|
+
alt: variantImageToUse.imageLabel ?? '',
|
|
105
|
+
label: `${dominantVariantName}: ${dominantVariantEntry.values[0]}`,
|
|
106
|
+
value: dominantVariantEntry.values[0],
|
|
107
|
+
};
|
|
108
|
+
if (variantsByName[dominantVariantEntry.name]) {
|
|
109
|
+
variantsByName[dominantVariantEntry.name].push(formattedVariant);
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
variantsByName[dominantVariantEntry.name] = [formattedVariant];
|
|
113
|
+
}
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
variant.variations.forEach((variationProperty) => {
|
|
117
|
+
const nameValueIdentifier = `${variationProperty.name}-${variationProperty.values[0]}`;
|
|
118
|
+
if (previouslySeenPropertyValues.has(nameValueIdentifier)) {
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
previouslySeenPropertyValues.add(nameValueIdentifier);
|
|
122
|
+
const formattedVariant = {
|
|
123
|
+
src: variantImageToUse.imageUrl,
|
|
124
|
+
alt: variantImageToUse.imageLabel ?? '',
|
|
125
|
+
label: `${variationProperty.name}: ${variationProperty.values[0]}`,
|
|
126
|
+
value: variationProperty.values[0],
|
|
127
|
+
};
|
|
128
|
+
if (variantsByName[variationProperty.name]) {
|
|
129
|
+
variantsByName[variationProperty.name].push(formattedVariant);
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
variantsByName[variationProperty.name] = [formattedVariant];
|
|
133
|
+
}
|
|
134
|
+
});
|
|
135
|
+
});
|
|
136
|
+
return sortVariants(variantsByName);
|
|
137
|
+
}
|
|
138
|
+
exports.getFormattedVariations = getFormattedVariations;
|
|
139
|
+
//# sourceMappingURL=skuVariants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skuVariants.js","sourceRoot":"","sources":["../../../../../../src/platforms/vtex/utils/skuVariants.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare function slugify(str: string): string;
|
|
1
|
+
export declare function slugify(str: string): string;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.slugify = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* VTEX catalog slugify function
|
|
6
|
+
*
|
|
7
|
+
* Copied from:
|
|
8
|
+
* https://github.com/vtex/rewriter/blob/1ce2010783e0586cab42534ce2fb7a983d8a3a84/node/clients/catalog.ts#L72
|
|
9
|
+
*
|
|
10
|
+
* Sometimes, we need to slugify strings for creating urls. An example is the
|
|
11
|
+
* brand urls, where we create them from the brand's name.
|
|
12
|
+
* This slugify function should match exactly what VTEX catalog generates. Any mismatch
|
|
13
|
+
* will lead to broken links.
|
|
14
|
+
* Hopefully, we had this function implemented on VTEX IO and we've been using it for
|
|
15
|
+
* years now. However, looking at the code, I think we can save lots of computing. I'm
|
|
16
|
+
* in a hurry for doing these tests now, so I'll leave a small TODO.
|
|
17
|
+
*
|
|
18
|
+
* TODO: Research for better ways of computing this slugify function. Things I'd try are:
|
|
19
|
+
* - Join those 3 regexs for special characters into a single one.
|
|
20
|
+
* - Replace the regexp of `removeDiacritics` function with a Map. We can make the complexity
|
|
21
|
+
* of this function be O(n) with n=string.length
|
|
22
|
+
*
|
|
23
|
+
*/
|
|
24
|
+
const from = 'ÁÄÂÀÃÅČÇĆĎÉĚËÈÊẼĔȆÍÌÎÏŇÑÓÖÒÔÕØŘŔŠŤÚŮÜÙÛÝŸŽáäâàãåčçćďéěëèêẽĕȇíìîïňñóöòôõøðřŕšťúůüùûýÿžþÞĐđ߯a';
|
|
25
|
+
const to = 'AAAAAACCCDEEEEEEEEIIIINNOOOOOORRSTUUUUUYYZaaaaaacccdeeeeeeeeiiiinnooooooorrstuuuuuyyzbBDdBAa';
|
|
26
|
+
const removeDiacritics = (str) => {
|
|
27
|
+
let newStr = str.slice(0);
|
|
28
|
+
for (let i = 0; i < from.length; i++) {
|
|
29
|
+
newStr = newStr.replace(new RegExp(from.charAt(i), 'g'), to.charAt(i));
|
|
30
|
+
}
|
|
31
|
+
return newStr;
|
|
32
|
+
};
|
|
33
|
+
const slugifySpecialCharacters = (str) => {
|
|
34
|
+
return str.replace(/[·/_,:]/, '-');
|
|
35
|
+
};
|
|
36
|
+
function slugify(str) {
|
|
37
|
+
const noCommas = str.replace(/,/g, '');
|
|
38
|
+
const replaced = noCommas.replace(/[*+~.()'"!:@&\[\]`/ %$#?{}|><=_^]/g, '-');
|
|
39
|
+
const slugified = slugifySpecialCharacters(removeDiacritics(replaced));
|
|
40
|
+
return slugified.toLowerCase();
|
|
41
|
+
}
|
|
42
|
+
exports.slugify = slugify;
|
|
43
|
+
//# sourceMappingURL=slugify.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slugify.js","sourceRoot":"","sources":["../../../../../../src/platforms/vtex/utils/slugify.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,IAAI,GACR,8FAA8F,CAAA;AAEhG,MAAM,EAAE,GACN,8FAA8F,CAAA;AAEhG,MAAM,gBAAgB,GAAG,CAAC,GAAW,EAAE,EAAE;IACvC,IAAI,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAEzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;IACxE,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AAED,MAAM,wBAAwB,GAAG,CAAC,GAAW,EAAE,EAAE;IAC/C,OAAO,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;AACpC,CAAC,CAAA;AAED,SAAgB,OAAO,CAAC,GAAW;IACjC,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;IACtC,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,oCAAoC,EAAE,GAAG,CAAC,CAAA;IAC5E,MAAM,SAAS,GAAG,wBAAwB,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEtE,OAAO,SAAS,CAAC,WAAW,EAAE,CAAA;AAChC,CAAC;AAND,0BAMC"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
export declare const SORT_MAP: {
|
|
2
|
-
readonly price_desc: "price:desc";
|
|
3
|
-
readonly price_asc: "price:asc";
|
|
4
|
-
readonly orders_desc: "orders:desc";
|
|
5
|
-
readonly name_desc: "name:desc";
|
|
6
|
-
readonly name_asc: "name:asc";
|
|
7
|
-
readonly release_desc: "release:desc";
|
|
8
|
-
readonly discount_desc: "discount:desc";
|
|
9
|
-
readonly score_desc: "";
|
|
10
|
-
};
|
|
1
|
+
export declare const SORT_MAP: {
|
|
2
|
+
readonly price_desc: "price:desc";
|
|
3
|
+
readonly price_asc: "price:asc";
|
|
4
|
+
readonly orders_desc: "orders:desc";
|
|
5
|
+
readonly name_desc: "name:desc";
|
|
6
|
+
readonly name_asc: "name:asc";
|
|
7
|
+
readonly release_desc: "release:desc";
|
|
8
|
+
readonly discount_desc: "discount:desc";
|
|
9
|
+
readonly score_desc: "";
|
|
10
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SORT_MAP = void 0;
|
|
4
|
+
exports.SORT_MAP = {
|
|
5
|
+
price_desc: 'price:desc',
|
|
6
|
+
price_asc: 'price:asc',
|
|
7
|
+
orders_desc: 'orders:desc',
|
|
8
|
+
name_desc: 'name:desc',
|
|
9
|
+
name_asc: 'name:asc',
|
|
10
|
+
release_desc: 'release:desc',
|
|
11
|
+
discount_desc: 'discount:desc',
|
|
12
|
+
score_desc: '',
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=sort.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sort.js","sourceRoot":"","sources":["../../../../../../src/platforms/vtex/utils/sort.ts"],"names":[],"mappings":";;;AAAa,QAAA,QAAQ,GAAG;IACtB,UAAU,EAAE,YAAY;IACxB,SAAS,EAAE,WAAW;IACtB,WAAW,EAAE,aAAa;IAC1B,SAAS,EAAE,WAAW;IACtB,QAAQ,EAAE,UAAU;IACpB,YAAY,EAAE,cAAc;IAC5B,aAAa,EAAE,eAAe;IAC9B,UAAU,EAAE,EAAE;CACN,CAAA"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import type { Options } from '../';
|
|
2
|
-
export
|
|
3
|
-
mode?: 'verbose' | 'dev';
|
|
4
|
-
experimentalSendLogs?: boolean;
|
|
5
|
-
};
|
|
6
|
-
export declare function getTelemetry(APIOptions: Options, telemetryOptions?: GetTelemetryOptions): {
|
|
7
|
-
useFaststoreTelemetry: () => import("@envelop/types").Plugin<import("./useFaststoreTelemetry").PluginContext>;
|
|
8
|
-
};
|
|
1
|
+
import type { Options } from '../';
|
|
2
|
+
export type GetTelemetryOptions = {
|
|
3
|
+
mode?: 'verbose' | 'dev';
|
|
4
|
+
experimentalSendLogs?: boolean;
|
|
5
|
+
};
|
|
6
|
+
export declare function getTelemetry(APIOptions: Options, telemetryOptions?: GetTelemetryOptions): {
|
|
7
|
+
useFaststoreTelemetry: () => import("@envelop/types").Plugin<import("./useFaststoreTelemetry").PluginContext>;
|
|
8
|
+
};
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getTelemetry = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const sdk_trace_base_1 = require("@opentelemetry/sdk-trace-base");
|
|
6
|
+
const resources_1 = require("@opentelemetry/resources");
|
|
7
|
+
const exporter_trace_otlp_grpc_1 = require("@opentelemetry/exporter-trace-otlp-grpc");
|
|
8
|
+
const sdk_logs_1 = require("@opentelemetry/sdk-logs");
|
|
9
|
+
const exporter_logs_otlp_grpc_1 = require("@opentelemetry/exporter-logs-otlp-grpc");
|
|
10
|
+
const useFaststoreTelemetry_1 = require("./useFaststoreTelemetry");
|
|
11
|
+
const package_json_1 = tslib_1.__importDefault(require("../../package.json"));
|
|
12
|
+
const FASTSTORE_API_VERSION = package_json_1.default.version;
|
|
13
|
+
// TODO: These urls are hardcoded for now, but they should be configurable via ENV variables
|
|
14
|
+
// They are only acessible from within the VTEX network, so they are not a security risk
|
|
15
|
+
const TRACE_COLLECTOR_URL = 'opentelemetry-collector.vtex.systems';
|
|
16
|
+
const TRACE_COLLECTOR_URL_DEV = 'opentelemetry-collector-beta.vtex.systems';
|
|
17
|
+
const LOG_COLLECTOR_URL = 'opentelemetry-collector.vtex.systems';
|
|
18
|
+
function getTelemetry(APIOptions, telemetryOptions) {
|
|
19
|
+
const honeycombCollectorOptions = {
|
|
20
|
+
url: telemetryOptions?.mode === 'dev'
|
|
21
|
+
? TRACE_COLLECTOR_URL_DEV
|
|
22
|
+
: TRACE_COLLECTOR_URL,
|
|
23
|
+
};
|
|
24
|
+
const openSearchCollectorOptions = {
|
|
25
|
+
url: LOG_COLLECTOR_URL,
|
|
26
|
+
};
|
|
27
|
+
// Create a new tracer provider
|
|
28
|
+
const tracerProvider = new sdk_trace_base_1.BasicTracerProvider({
|
|
29
|
+
resource: new resources_1.Resource({
|
|
30
|
+
'service.name': 'faststore-api',
|
|
31
|
+
'service.version': FASTSTORE_API_VERSION,
|
|
32
|
+
'service.name_and_version': `faststore-api@${FASTSTORE_API_VERSION}`,
|
|
33
|
+
platform: APIOptions.platform,
|
|
34
|
+
[`${APIOptions.platform}.account`]: APIOptions.account,
|
|
35
|
+
[`${APIOptions.platform}.environment`]: APIOptions.environment,
|
|
36
|
+
// TODO: include the following properties in the logs
|
|
37
|
+
// [`${APIOptions.platform}.options.hideUnavailableItems`]:
|
|
38
|
+
// APIOptions.hideUnavailableItems,
|
|
39
|
+
// [`${APIOptions.platform}.flags.enableOrderFormSync`]:
|
|
40
|
+
// APIOptions.flags?.enableOrderFormSync,
|
|
41
|
+
// channel: APIOptions.channel,
|
|
42
|
+
locale: APIOptions.locale,
|
|
43
|
+
}),
|
|
44
|
+
});
|
|
45
|
+
const loggerProvider = new sdk_logs_1.LoggerProvider();
|
|
46
|
+
// Create trace exporter
|
|
47
|
+
const honeycombExporter = new exporter_trace_otlp_grpc_1.OTLPTraceExporter(honeycombCollectorOptions);
|
|
48
|
+
// Create log exporter
|
|
49
|
+
const openSearchExporter = new exporter_logs_otlp_grpc_1.OTLPLogsExporter(openSearchCollectorOptions);
|
|
50
|
+
// Set up a span processor to export spans to Honeycomb
|
|
51
|
+
const honeyCombSpanProcessor = new sdk_trace_base_1.SimpleSpanProcessor(honeycombExporter);
|
|
52
|
+
// Set up a log record processor to export spans to OpenSearch
|
|
53
|
+
const openSearchLogProcessor = new sdk_logs_1.SimpleLogRecordProcessor(openSearchExporter);
|
|
54
|
+
// Register the span processor with the tracer provider
|
|
55
|
+
tracerProvider.addSpanProcessor(honeyCombSpanProcessor);
|
|
56
|
+
// Register the log record processor with the log provider
|
|
57
|
+
loggerProvider.addLogRecordProcessor(openSearchLogProcessor);
|
|
58
|
+
if (telemetryOptions?.mode === 'verbose' ||
|
|
59
|
+
telemetryOptions?.mode === 'dev') {
|
|
60
|
+
// Set up a console exporter for verbose mode
|
|
61
|
+
const consoleExporter = new sdk_trace_base_1.ConsoleSpanExporter();
|
|
62
|
+
const verboseTraceProcessor = new sdk_trace_base_1.SimpleSpanProcessor(consoleExporter);
|
|
63
|
+
// Set up processors for verbose mode
|
|
64
|
+
const consoleLogExporter = new sdk_logs_1.ConsoleLogRecordExporter();
|
|
65
|
+
const veboseLogRecordExporter = new sdk_logs_1.SimpleLogRecordProcessor(consoleLogExporter);
|
|
66
|
+
tracerProvider.addSpanProcessor(verboseTraceProcessor);
|
|
67
|
+
loggerProvider.addLogRecordProcessor(veboseLogRecordExporter);
|
|
68
|
+
}
|
|
69
|
+
const useFaststoreTelemetry = (0, useFaststoreTelemetry_1.getFaststoreTelemetryPlugin)(
|
|
70
|
+
// The @opentelemetry/sdk-trace-base was renamed from @opentelemetry/tracing but the
|
|
71
|
+
// envelop plugin doesn't support this change yet. This causes the class type to be incompatible,
|
|
72
|
+
// even if they are the same. https://github.com/n1ru4l/envelop/issues/1610
|
|
73
|
+
tracerProvider, loggerProvider, 'faststore-api', telemetryOptions?.experimentalSendLogs ?? false);
|
|
74
|
+
return { useFaststoreTelemetry };
|
|
75
|
+
}
|
|
76
|
+
exports.getTelemetry = getTelemetry;
|
|
77
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/telemetry/index.ts"],"names":[],"mappings":";;;;AAAA,kEAIsC;AACtC,wDAAmD;AACnD,sFAA2E;AAC3E,sDAIgC;AAChC,oFAAyE;AAGzE,mEAAqE;AACrE,8EAA4C;AAO5C,MAAM,qBAAqB,GAAG,sBAAW,CAAC,OAAO,CAAA;AAEjD,4FAA4F;AAC5F,wFAAwF;AACxF,MAAM,mBAAmB,GAAG,sCAAsC,CAAA;AAClE,MAAM,uBAAuB,GAAG,2CAA2C,CAAA;AAC3E,MAAM,iBAAiB,GAAG,sCAAsC,CAAA;AAEhE,SAAgB,YAAY,CAC1B,UAAmB,EACnB,gBAAsC;IAEtC,MAAM,yBAAyB,GAAG;QAChC,GAAG,EACD,gBAAgB,EAAE,IAAI,KAAK,KAAK;YAC9B,CAAC,CAAC,uBAAuB;YACzB,CAAC,CAAC,mBAAmB;KAC1B,CAAA;IAED,MAAM,0BAA0B,GAAG;QACjC,GAAG,EAAE,iBAAiB;KACvB,CAAA;IAED,+BAA+B;IAC/B,MAAM,cAAc,GAAG,IAAI,oCAAmB,CAAC;QAC7C,QAAQ,EAAE,IAAI,oBAAQ,CAAC;YACrB,cAAc,EAAE,eAAe;YAC/B,iBAAiB,EAAE,qBAAqB;YACxC,0BAA0B,EAAE,iBAAiB,qBAAqB,EAAE;YACpE,QAAQ,EAAE,UAAU,CAAC,QAAQ;YAC7B,CAAC,GAAG,UAAU,CAAC,QAAQ,UAAU,CAAC,EAAE,UAAU,CAAC,OAAO;YACtD,CAAC,GAAG,UAAU,CAAC,QAAQ,cAAc,CAAC,EAAE,UAAU,CAAC,WAAW;YAC9D,qDAAqD;YACrD,2DAA2D;YAC3D,qCAAqC;YACrC,wDAAwD;YACxD,2CAA2C;YAC3C,+BAA+B;YAC/B,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B,CAAC;KACH,CAAC,CAAA;IAEF,MAAM,cAAc,GAAG,IAAI,yBAAc,EAAE,CAAA;IAE3C,wBAAwB;IACxB,MAAM,iBAAiB,GAAG,IAAI,4CAAiB,CAAC,yBAAyB,CAAC,CAAA;IAE1E,sBAAsB;IACtB,MAAM,kBAAkB,GAAG,IAAI,0CAAgB,CAAC,0BAA0B,CAAC,CAAA;IAE3E,uDAAuD;IACvD,MAAM,sBAAsB,GAAG,IAAI,oCAAmB,CAAC,iBAAiB,CAAC,CAAA;IAEzE,8DAA8D;IAC9D,MAAM,sBAAsB,GAAG,IAAI,mCAAwB,CACzD,kBAAkB,CACnB,CAAA;IAED,uDAAuD;IACvD,cAAc,CAAC,gBAAgB,CAAC,sBAAsB,CAAC,CAAA;IAEvD,0DAA0D;IAC1D,cAAc,CAAC,qBAAqB,CAAC,sBAAsB,CAAC,CAAA;IAE5D,IACE,gBAAgB,EAAE,IAAI,KAAK,SAAS;QACpC,gBAAgB,EAAE,IAAI,KAAK,KAAK,EAChC,CAAC;QACD,6CAA6C;QAC7C,MAAM,eAAe,GAAG,IAAI,oCAAmB,EAAE,CAAA;QACjD,MAAM,qBAAqB,GAAG,IAAI,oCAAmB,CAAC,eAAe,CAAC,CAAA;QAEtE,qCAAqC;QACrC,MAAM,kBAAkB,GAAG,IAAI,mCAAwB,EAAE,CAAA;QACzD,MAAM,uBAAuB,GAAG,IAAI,mCAAwB,CAC1D,kBAAkB,CACnB,CAAA;QAED,cAAc,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,CAAA;QACtD,cAAc,CAAC,qBAAqB,CAAC,uBAAuB,CAAC,CAAA;IAC/D,CAAC;IAED,MAAM,qBAAqB,GAAG,IAAA,mDAA2B;IACvD,oFAAoF;IACpF,iGAAiG;IACjG,2EAA2E;IAC3E,cAAqB,EACrB,cAAc,EACd,eAAe,EACf,gBAAgB,EAAE,oBAAoB,IAAI,KAAK,CAChD,CAAA;IAED,OAAO,EAAE,qBAAqB,EAAE,CAAA;AAClC,CAAC;AArFD,oCAqFC"}
|
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
import type { Plugin } from '@envelop/core';
|
|
2
|
-
import { Span } from '@opentelemetry/api';
|
|
3
|
-
import type { BasicTracerProvider } from '@opentelemetry/sdk-trace-base';
|
|
4
|
-
import type { LoggerProvider } from '@opentelemetry/sdk-logs';
|
|
5
|
-
export declare enum AttributeName {
|
|
6
|
-
EXECUTION_ERROR = "graphql.error",
|
|
7
|
-
EXECUTION_RESULT = "graphql.result",
|
|
8
|
-
RESOLVER_EXECUTION_ERROR = "graphql.resolver.error",
|
|
9
|
-
RESOLVER_EXCEPTION = "graphql.resolver.exception",
|
|
10
|
-
RESOLVER_FIELD_NAME = "graphql.resolver.fieldName",
|
|
11
|
-
RESOLVER_TYPE_NAME = "graphql.resolver.typeName",
|
|
12
|
-
RESOLVER_RESULT_TYPE = "graphql.resolver.resultType",
|
|
13
|
-
RESOLVER_ARGS = "graphql.resolver.args",
|
|
14
|
-
EXECUTION_OPERATION_NAME = "graphql.operation.name",
|
|
15
|
-
EXECUTION_OPERATION_TYPE = "graphql.operation.type",
|
|
16
|
-
EXECUTION_OPERATION_DOCUMENT = "graphql.document",
|
|
17
|
-
EXECUTION_VARIABLES = "graphql.variables"
|
|
18
|
-
}
|
|
19
|
-
declare const tracingSpanSymbol: unique symbol;
|
|
20
|
-
export
|
|
21
|
-
[tracingSpanSymbol]: Span;
|
|
22
|
-
};
|
|
23
|
-
export declare const getFaststoreTelemetryPlugin: (tracingProvider: BasicTracerProvider, loggerProvider: LoggerProvider, serviceName: string, experimentalSendLogs: boolean) => (() => Plugin<PluginContext>);
|
|
24
|
-
export {};
|
|
1
|
+
import type { Plugin } from '@envelop/core';
|
|
2
|
+
import { Span } from '@opentelemetry/api';
|
|
3
|
+
import type { BasicTracerProvider } from '@opentelemetry/sdk-trace-base';
|
|
4
|
+
import type { LoggerProvider } from '@opentelemetry/sdk-logs';
|
|
5
|
+
export declare enum AttributeName {
|
|
6
|
+
EXECUTION_ERROR = "graphql.error",
|
|
7
|
+
EXECUTION_RESULT = "graphql.result",
|
|
8
|
+
RESOLVER_EXECUTION_ERROR = "graphql.resolver.error",
|
|
9
|
+
RESOLVER_EXCEPTION = "graphql.resolver.exception",
|
|
10
|
+
RESOLVER_FIELD_NAME = "graphql.resolver.fieldName",
|
|
11
|
+
RESOLVER_TYPE_NAME = "graphql.resolver.typeName",
|
|
12
|
+
RESOLVER_RESULT_TYPE = "graphql.resolver.resultType",
|
|
13
|
+
RESOLVER_ARGS = "graphql.resolver.args",
|
|
14
|
+
EXECUTION_OPERATION_NAME = "graphql.operation.name",
|
|
15
|
+
EXECUTION_OPERATION_TYPE = "graphql.operation.type",
|
|
16
|
+
EXECUTION_OPERATION_DOCUMENT = "graphql.document",
|
|
17
|
+
EXECUTION_VARIABLES = "graphql.variables"
|
|
18
|
+
}
|
|
19
|
+
declare const tracingSpanSymbol: unique symbol;
|
|
20
|
+
export type PluginContext = {
|
|
21
|
+
[tracingSpanSymbol]: Span;
|
|
22
|
+
};
|
|
23
|
+
export declare const getFaststoreTelemetryPlugin: (tracingProvider: BasicTracerProvider, loggerProvider: LoggerProvider, serviceName: string, experimentalSendLogs: boolean) => (() => Plugin<PluginContext>);
|
|
24
|
+
export {};
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getFaststoreTelemetryPlugin = exports.AttributeName = void 0;
|
|
4
|
+
const core_1 = require("@envelop/core");
|
|
5
|
+
const on_resolve_1 = require("@envelop/on-resolve");
|
|
6
|
+
const api_1 = require("@opentelemetry/api");
|
|
7
|
+
const api_2 = require("@opentelemetry/api");
|
|
8
|
+
const api_logs_1 = require("@opentelemetry/api-logs");
|
|
9
|
+
const graphql_1 = require("graphql");
|
|
10
|
+
var AttributeName;
|
|
11
|
+
(function (AttributeName) {
|
|
12
|
+
AttributeName["EXECUTION_ERROR"] = "graphql.error";
|
|
13
|
+
AttributeName["EXECUTION_RESULT"] = "graphql.result";
|
|
14
|
+
AttributeName["RESOLVER_EXECUTION_ERROR"] = "graphql.resolver.error";
|
|
15
|
+
AttributeName["RESOLVER_EXCEPTION"] = "graphql.resolver.exception";
|
|
16
|
+
AttributeName["RESOLVER_FIELD_NAME"] = "graphql.resolver.fieldName";
|
|
17
|
+
AttributeName["RESOLVER_TYPE_NAME"] = "graphql.resolver.typeName";
|
|
18
|
+
AttributeName["RESOLVER_RESULT_TYPE"] = "graphql.resolver.resultType";
|
|
19
|
+
AttributeName["RESOLVER_ARGS"] = "graphql.resolver.args";
|
|
20
|
+
AttributeName["EXECUTION_OPERATION_NAME"] = "graphql.operation.name";
|
|
21
|
+
AttributeName["EXECUTION_OPERATION_TYPE"] = "graphql.operation.type";
|
|
22
|
+
AttributeName["EXECUTION_OPERATION_DOCUMENT"] = "graphql.document";
|
|
23
|
+
AttributeName["EXECUTION_VARIABLES"] = "graphql.variables";
|
|
24
|
+
})(AttributeName || (exports.AttributeName = AttributeName = {}));
|
|
25
|
+
const tracingSpanSymbol = Symbol('OPEN_TELEMETRY_GRAPHQL');
|
|
26
|
+
function getResolverSpanKey(path) {
|
|
27
|
+
const nodes = [];
|
|
28
|
+
// If the first node (after reversed, it will be the last one) is an integer, that is, identifies a list,
|
|
29
|
+
// we don't want to include it in the key. Note that this will only happen when analysing .prev paths in
|
|
30
|
+
// a list of elements. We just want to remove the initial node that is a integer, not all of them.
|
|
31
|
+
//
|
|
32
|
+
// Nodes with keys 6bc73341b2a183fc::product::image::0::url would not be able to find
|
|
33
|
+
// parents with key 6bc73341b2a183fc::product::image because of the "0" list index -
|
|
34
|
+
// it would search for 6bc73341b2a183fc::product::image::0
|
|
35
|
+
let currentPath = nodes.length === 0 && Number.isInteger(path.key) ? path.prev : path;
|
|
36
|
+
while (currentPath) {
|
|
37
|
+
nodes.push(currentPath.key);
|
|
38
|
+
currentPath = currentPath.prev;
|
|
39
|
+
}
|
|
40
|
+
return [...nodes].reverse().join('.');
|
|
41
|
+
}
|
|
42
|
+
const getFaststoreTelemetryPlugin = (tracingProvider, loggerProvider, serviceName, experimentalSendLogs) => {
|
|
43
|
+
return function useFaststoreTelemetry() {
|
|
44
|
+
const tracer = tracingProvider.getTracer(serviceName);
|
|
45
|
+
const logger = loggerProvider.getLogger(serviceName);
|
|
46
|
+
const resolverContextsByRootSpans = {};
|
|
47
|
+
return {
|
|
48
|
+
onPluginInit({ addPlugin }) {
|
|
49
|
+
addPlugin(
|
|
50
|
+
// eslint-disable-next-line
|
|
51
|
+
(0, on_resolve_1.useOnResolve)(({ info, context }) => {
|
|
52
|
+
if (context &&
|
|
53
|
+
typeof context === 'object' &&
|
|
54
|
+
context[tracingSpanSymbol]) {
|
|
55
|
+
tracer.getActiveSpanProcessor();
|
|
56
|
+
const rootContextSpanId = context[tracingSpanSymbol].spanContext().spanId;
|
|
57
|
+
const { fieldName, returnType, parentType, path } = info;
|
|
58
|
+
const previousResolverSpanKey = path.prev && getResolverSpanKey(path.prev);
|
|
59
|
+
let ctx = null;
|
|
60
|
+
if (previousResolverSpanKey &&
|
|
61
|
+
resolverContextsByRootSpans[rootContextSpanId][previousResolverSpanKey]) {
|
|
62
|
+
ctx =
|
|
63
|
+
resolverContextsByRootSpans[rootContextSpanId][previousResolverSpanKey];
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
ctx = api_2.trace.setSpan(api_2.context.active(), context[tracingSpanSymbol]);
|
|
67
|
+
resolverContextsByRootSpans[rootContextSpanId] =
|
|
68
|
+
resolverContextsByRootSpans[rootContextSpanId] ?? {};
|
|
69
|
+
}
|
|
70
|
+
const resolverIndexInList = Number.isInteger(path.prev?.key)
|
|
71
|
+
? `[${path.prev?.key}]`
|
|
72
|
+
: '';
|
|
73
|
+
const resolverSpan = tracer.startSpan(`${parentType.toString()}.${fieldName}${resolverIndexInList}`, {
|
|
74
|
+
attributes: {
|
|
75
|
+
[AttributeName.RESOLVER_FIELD_NAME]: fieldName,
|
|
76
|
+
[AttributeName.RESOLVER_TYPE_NAME]: parentType.toString(),
|
|
77
|
+
[AttributeName.RESOLVER_RESULT_TYPE]: returnType.toString(),
|
|
78
|
+
'meta.span.path': getResolverSpanKey(path),
|
|
79
|
+
},
|
|
80
|
+
}, ctx);
|
|
81
|
+
const resolverCtx = api_2.trace.setSpan(ctx, resolverSpan);
|
|
82
|
+
resolverContextsByRootSpans[rootContextSpanId][getResolverSpanKey(path)] = resolverCtx;
|
|
83
|
+
return ({ result }) => {
|
|
84
|
+
if (result instanceof Error) {
|
|
85
|
+
resolverSpan.setAttributes({
|
|
86
|
+
error: true,
|
|
87
|
+
'exception.category': AttributeName.RESOLVER_EXECUTION_ERROR,
|
|
88
|
+
'exception.message': result.message,
|
|
89
|
+
'exception.type': result.name,
|
|
90
|
+
});
|
|
91
|
+
resolverSpan.recordException(result);
|
|
92
|
+
}
|
|
93
|
+
resolverSpan.end();
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
return () => { };
|
|
97
|
+
}));
|
|
98
|
+
},
|
|
99
|
+
onExecute({ args, extendContext }) {
|
|
100
|
+
const operationType = args.document.definitions
|
|
101
|
+
.filter((def) => def.kind === graphql_1.Kind.OPERATION_DEFINITION)
|
|
102
|
+
.map((def) => def.operation)?.[0];
|
|
103
|
+
// Span name according to Semantic Conventions
|
|
104
|
+
// https://github.com/open-telemetry/semantic-conventions
|
|
105
|
+
let spanName = 'GraphQL Operation';
|
|
106
|
+
if (operationType && args.operationName) {
|
|
107
|
+
spanName = `${operationType} ${args.operationName}`;
|
|
108
|
+
}
|
|
109
|
+
else if (operationType && !args.operationName) {
|
|
110
|
+
spanName = operationType;
|
|
111
|
+
}
|
|
112
|
+
const executionSpan = tracer.startSpan(spanName, {
|
|
113
|
+
kind: api_1.SpanKind.SERVER,
|
|
114
|
+
attributes: {
|
|
115
|
+
[AttributeName.EXECUTION_OPERATION_NAME]: args.operationName ?? undefined,
|
|
116
|
+
[AttributeName.EXECUTION_OPERATION_TYPE]: operationType ?? undefined,
|
|
117
|
+
[AttributeName.EXECUTION_OPERATION_DOCUMENT]: (0, graphql_1.print)(args.document),
|
|
118
|
+
},
|
|
119
|
+
});
|
|
120
|
+
const executeContext = api_2.context.active();
|
|
121
|
+
const resultCbs = {
|
|
122
|
+
onExecuteDone({ result }) {
|
|
123
|
+
if ((0, core_1.isAsyncIterable)(result)) {
|
|
124
|
+
executionSpan.end();
|
|
125
|
+
// eslint-disable-next-line no-console
|
|
126
|
+
console.warn(`Plugin "newrelic" encountered a AsyncIterator which is not supported yet, so tracing data is not available for the operation.`);
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
const logRecord = {
|
|
130
|
+
context: executeContext,
|
|
131
|
+
attributes: {
|
|
132
|
+
'service.name': 'faststore-api',
|
|
133
|
+
'service.version': '1.12.38',
|
|
134
|
+
'service.name_and_version': 'faststore-api@1.12.38',
|
|
135
|
+
'vtex.search_index': 'faststore_beta_api',
|
|
136
|
+
[AttributeName.EXECUTION_OPERATION_NAME]: args.operationName ?? undefined,
|
|
137
|
+
[AttributeName.EXECUTION_OPERATION_DOCUMENT]: (0, graphql_1.print)(args.document),
|
|
138
|
+
[AttributeName.EXECUTION_VARIABLES]: JSON.stringify(args.variableValues ?? {}),
|
|
139
|
+
},
|
|
140
|
+
};
|
|
141
|
+
if (typeof result.data !== 'undefined' &&
|
|
142
|
+
!(result.errors && result.errors.length > 0)) {
|
|
143
|
+
logRecord.severityNumber = api_logs_1.SeverityNumber.INFO;
|
|
144
|
+
logRecord.severityText = 'Info';
|
|
145
|
+
logRecord.attributes[AttributeName.EXECUTION_RESULT] =
|
|
146
|
+
JSON.stringify(result);
|
|
147
|
+
}
|
|
148
|
+
if (result.errors && result.errors.length > 0) {
|
|
149
|
+
logRecord.severityNumber = api_logs_1.SeverityNumber.ERROR;
|
|
150
|
+
logRecord.severityText = 'Error';
|
|
151
|
+
logRecord.attributes[AttributeName.EXECUTION_ERROR] =
|
|
152
|
+
JSON.stringify(result.errors);
|
|
153
|
+
executionSpan.setAttributes({
|
|
154
|
+
error: true,
|
|
155
|
+
'exception.category': AttributeName.EXECUTION_ERROR,
|
|
156
|
+
'exception.message': JSON.stringify(result.errors),
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
if (experimentalSendLogs) {
|
|
160
|
+
logger.emit(logRecord);
|
|
161
|
+
}
|
|
162
|
+
executionSpan.end();
|
|
163
|
+
},
|
|
164
|
+
};
|
|
165
|
+
extendContext({
|
|
166
|
+
[tracingSpanSymbol]: executionSpan,
|
|
167
|
+
});
|
|
168
|
+
return resultCbs;
|
|
169
|
+
},
|
|
170
|
+
};
|
|
171
|
+
};
|
|
172
|
+
};
|
|
173
|
+
exports.getFaststoreTelemetryPlugin = getFaststoreTelemetryPlugin;
|
|
174
|
+
//# sourceMappingURL=useFaststoreTelemetry.js.map
|