@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.
Files changed (519) hide show
  1. package/dist/cjs/package.json +79 -0
  2. package/dist/{__generated__ → cjs/src/__generated__}/schema.d.ts +1045 -1045
  3. package/dist/cjs/src/__generated__/schema.js +7 -0
  4. package/dist/cjs/src/__generated__/schema.js.map +1 -0
  5. package/dist/{directives → cjs/src/directives}/cacheControl.d.ts +9 -9
  6. package/dist/cjs/src/directives/cacheControl.js +45 -0
  7. package/dist/cjs/src/directives/cacheControl.js.map +1 -0
  8. package/dist/{directives → cjs/src/directives}/index.d.ts +5 -5
  9. package/dist/cjs/src/directives/index.js +3 -0
  10. package/dist/cjs/src/directives/index.js.map +1 -0
  11. package/dist/{index.d.ts → cjs/src/index.d.ts} +163 -163
  12. package/dist/cjs/src/index.js +38 -0
  13. package/dist/cjs/src/index.js.map +1 -0
  14. package/dist/{platforms → cjs/src/platforms}/errors.d.ts +19 -19
  15. package/dist/cjs/src/platforms/errors.js +30 -0
  16. package/dist/cjs/src/platforms/errors.js.map +1 -0
  17. package/dist/{platforms → cjs/src/platforms}/vtex/clients/commerce/index.d.ts +75 -75
  18. package/dist/cjs/src/platforms/vtex/clients/commerce/index.js +165 -0
  19. package/dist/cjs/src/platforms/vtex/clients/commerce/index.js.map +1 -0
  20. package/dist/{platforms → cjs/src/platforms}/vtex/clients/commerce/types/Address.d.ts +16 -16
  21. package/dist/cjs/src/platforms/vtex/clients/commerce/types/Address.js +3 -0
  22. package/dist/cjs/src/platforms/vtex/clients/commerce/types/Address.js.map +1 -0
  23. package/dist/{platforms → cjs/src/platforms}/vtex/clients/commerce/types/Brand.d.ts +8 -8
  24. package/dist/cjs/src/platforms/vtex/clients/commerce/types/Brand.js +3 -0
  25. package/dist/cjs/src/platforms/vtex/clients/commerce/types/Brand.js.map +1 -0
  26. package/dist/{platforms → cjs/src/platforms}/vtex/clients/commerce/types/CategoryTree.d.ts +9 -9
  27. package/dist/cjs/src/platforms/vtex/clients/commerce/types/CategoryTree.js +3 -0
  28. package/dist/cjs/src/platforms/vtex/clients/commerce/types/CategoryTree.js.map +1 -0
  29. package/dist/{platforms → cjs/src/platforms}/vtex/clients/commerce/types/Newsletter.d.ts +4 -4
  30. package/dist/cjs/src/platforms/vtex/clients/commerce/types/Newsletter.js +3 -0
  31. package/dist/cjs/src/platforms/vtex/clients/commerce/types/Newsletter.js.map +1 -0
  32. package/dist/{platforms → cjs/src/platforms}/vtex/clients/commerce/types/OrderForm.d.ts +371 -371
  33. package/dist/cjs/src/platforms/vtex/clients/commerce/types/OrderForm.js +3 -0
  34. package/dist/cjs/src/platforms/vtex/clients/commerce/types/OrderForm.js.map +1 -0
  35. package/dist/{platforms → cjs/src/platforms}/vtex/clients/commerce/types/Portal.d.ts +17 -17
  36. package/dist/cjs/src/platforms/vtex/clients/commerce/types/Portal.js +3 -0
  37. package/dist/cjs/src/platforms/vtex/clients/commerce/types/Portal.js.map +1 -0
  38. package/dist/{platforms → cjs/src/platforms}/vtex/clients/commerce/types/Product.d.ts +174 -174
  39. package/dist/cjs/src/platforms/vtex/clients/commerce/types/Product.js +53 -0
  40. package/dist/cjs/src/platforms/vtex/clients/commerce/types/Product.js.map +1 -0
  41. package/dist/{platforms → cjs/src/platforms}/vtex/clients/commerce/types/Region.d.ts +19 -19
  42. package/dist/cjs/src/platforms/vtex/clients/commerce/types/Region.js +3 -0
  43. package/dist/cjs/src/platforms/vtex/clients/commerce/types/Region.js.map +1 -0
  44. package/dist/{platforms → cjs/src/platforms}/vtex/clients/commerce/types/SalesChannel.d.ts +24 -24
  45. package/dist/cjs/src/platforms/vtex/clients/commerce/types/SalesChannel.js +3 -0
  46. package/dist/cjs/src/platforms/vtex/clients/commerce/types/SalesChannel.js.map +1 -0
  47. package/dist/{platforms → cjs/src/platforms}/vtex/clients/commerce/types/Session.d.ts +33 -33
  48. package/dist/cjs/src/platforms/vtex/clients/commerce/types/Session.js +3 -0
  49. package/dist/cjs/src/platforms/vtex/clients/commerce/types/Session.js.map +1 -0
  50. package/dist/{platforms → cjs/src/platforms}/vtex/clients/commerce/types/ShippingData.d.ts +38 -38
  51. package/dist/cjs/src/platforms/vtex/clients/commerce/types/ShippingData.js +3 -0
  52. package/dist/cjs/src/platforms/vtex/clients/commerce/types/ShippingData.js.map +1 -0
  53. package/dist/{platforms → cjs/src/platforms}/vtex/clients/commerce/types/Simulation.d.ts +154 -154
  54. package/dist/cjs/src/platforms/vtex/clients/commerce/types/Simulation.js +3 -0
  55. package/dist/cjs/src/platforms/vtex/clients/commerce/types/Simulation.js.map +1 -0
  56. package/dist/{platforms → cjs/src/platforms}/vtex/clients/fetch.d.ts +1 -1
  57. package/dist/cjs/src/platforms/vtex/clients/fetch.js +24 -0
  58. package/dist/cjs/src/platforms/vtex/clients/fetch.js.map +1 -0
  59. package/dist/{platforms → cjs/src/platforms}/vtex/clients/index.d.ts +71 -71
  60. package/dist/cjs/src/platforms/vtex/clients/index.js +18 -0
  61. package/dist/cjs/src/platforms/vtex/clients/index.js.map +1 -0
  62. package/dist/{platforms → cjs/src/platforms}/vtex/clients/search/index.d.ts +26 -26
  63. package/dist/cjs/src/platforms/vtex/clients/search/index.js +88 -0
  64. package/dist/cjs/src/platforms/vtex/clients/search/index.js.map +1 -0
  65. package/dist/{platforms → cjs/src/platforms}/vtex/clients/search/types/AttributeSearchResult.d.ts +30 -30
  66. package/dist/cjs/src/platforms/vtex/clients/search/types/AttributeSearchResult.js +3 -0
  67. package/dist/cjs/src/platforms/vtex/clients/search/types/AttributeSearchResult.js.map +1 -0
  68. package/dist/{platforms → cjs/src/platforms}/vtex/clients/search/types/FacetSearchResult.d.ts +31 -31
  69. package/dist/cjs/src/platforms/vtex/clients/search/types/FacetSearchResult.js +3 -0
  70. package/dist/cjs/src/platforms/vtex/clients/search/types/FacetSearchResult.js.map +1 -0
  71. package/dist/{platforms → cjs/src/platforms}/vtex/clients/search/types/ProductSearchResult.d.ts +206 -206
  72. package/dist/cjs/src/platforms/vtex/clients/search/types/ProductSearchResult.js +3 -0
  73. package/dist/cjs/src/platforms/vtex/clients/search/types/ProductSearchResult.js.map +1 -0
  74. package/dist/{platforms → cjs/src/platforms}/vtex/clients/sp/index.d.ts +14 -14
  75. package/dist/cjs/src/platforms/vtex/clients/sp/index.js +49 -0
  76. package/dist/cjs/src/platforms/vtex/clients/sp/index.js.map +1 -0
  77. package/dist/{platforms → cjs/src/platforms}/vtex/index.d.ts +188 -188
  78. package/dist/cjs/src/platforms/vtex/index.js +59 -0
  79. package/dist/cjs/src/platforms/vtex/index.js.map +1 -0
  80. package/dist/{platforms → cjs/src/platforms}/vtex/loaders/collection.d.ts +6 -6
  81. package/dist/cjs/src/platforms/vtex/loaders/collection.js +38 -0
  82. package/dist/cjs/src/platforms/vtex/loaders/collection.js.map +1 -0
  83. package/dist/{platforms → cjs/src/platforms}/vtex/loaders/index.d.ts +8 -8
  84. package/dist/cjs/src/platforms/vtex/loaders/index.js +21 -0
  85. package/dist/cjs/src/platforms/vtex/loaders/index.js.map +1 -0
  86. package/dist/{platforms → cjs/src/platforms}/vtex/loaders/salesChannel.d.ts +5 -5
  87. package/dist/cjs/src/platforms/vtex/loaders/salesChannel.js +11 -0
  88. package/dist/cjs/src/platforms/vtex/loaders/salesChannel.js.map +1 -0
  89. package/dist/{platforms → cjs/src/platforms}/vtex/loaders/simulation.d.ts +5 -5
  90. package/dist/cjs/src/platforms/vtex/loaders/simulation.js +44 -0
  91. package/dist/cjs/src/platforms/vtex/loaders/simulation.js.map +1 -0
  92. package/dist/{platforms → cjs/src/platforms}/vtex/loaders/sku.d.ts +5 -5
  93. package/dist/cjs/src/platforms/vtex/loaders/sku.js +33 -0
  94. package/dist/cjs/src/platforms/vtex/loaders/sku.js.map +1 -0
  95. package/dist/{platforms → cjs/src/platforms}/vtex/resolvers/aggregateOffer.d.ts +7 -7
  96. package/dist/cjs/src/platforms/vtex/resolvers/aggregateOffer.js +23 -0
  97. package/dist/cjs/src/platforms/vtex/resolvers/aggregateOffer.js.map +1 -0
  98. package/dist/{platforms → cjs/src/platforms}/vtex/resolvers/aggregateRating.d.ts +2 -2
  99. package/dist/cjs/src/platforms/vtex/resolvers/aggregateRating.js +9 -0
  100. package/dist/cjs/src/platforms/vtex/resolvers/aggregateRating.js.map +1 -0
  101. package/dist/{platforms → cjs/src/platforms}/vtex/resolvers/collection.d.ts +8 -8
  102. package/dist/cjs/src/platforms/vtex/resolvers/collection.js +81 -0
  103. package/dist/cjs/src/platforms/vtex/resolvers/collection.js.map +1 -0
  104. package/dist/{platforms → cjs/src/platforms}/vtex/resolvers/faceValue.d.ts +3 -3
  105. package/dist/cjs/src/platforms/vtex/resolvers/faceValue.js +10 -0
  106. package/dist/cjs/src/platforms/vtex/resolvers/faceValue.js.map +1 -0
  107. package/dist/{platforms → cjs/src/platforms}/vtex/resolvers/facet.d.ts +6 -6
  108. package/dist/cjs/src/platforms/vtex/resolvers/facet.js +50 -0
  109. package/dist/cjs/src/platforms/vtex/resolvers/facet.js.map +1 -0
  110. package/dist/{platforms → cjs/src/platforms}/vtex/resolvers/mutation.d.ts +59 -59
  111. package/dist/cjs/src/platforms/vtex/resolvers/mutation.js +12 -0
  112. package/dist/cjs/src/platforms/vtex/resolvers/mutation.js.map +1 -0
  113. package/dist/{platforms → cjs/src/platforms}/vtex/resolvers/objectOrString.d.ts +2 -2
  114. package/dist/cjs/src/platforms/vtex/resolvers/objectOrString.js +41 -0
  115. package/dist/cjs/src/platforms/vtex/resolvers/objectOrString.js.map +1 -0
  116. package/dist/{platforms → cjs/src/platforms}/vtex/resolvers/offer.d.ts +12 -12
  117. package/dist/cjs/src/platforms/vtex/resolvers/offer.js +94 -0
  118. package/dist/cjs/src/platforms/vtex/resolvers/offer.js.map +1 -0
  119. package/dist/{platforms → cjs/src/platforms}/vtex/resolvers/organization.d.ts +5 -5
  120. package/dist/cjs/src/platforms/vtex/resolvers/organization.js +7 -0
  121. package/dist/cjs/src/platforms/vtex/resolvers/organization.js.map +1 -0
  122. package/dist/{platforms → cjs/src/platforms}/vtex/resolvers/product.d.ts +14 -14
  123. package/dist/cjs/src/platforms/vtex/resolvers/product.js +78 -0
  124. package/dist/cjs/src/platforms/vtex/resolvers/product.js.map +1 -0
  125. package/dist/{platforms → cjs/src/platforms}/vtex/resolvers/productGroup.d.ts +5 -5
  126. package/dist/cjs/src/platforms/vtex/resolvers/productGroup.js +22 -0
  127. package/dist/cjs/src/platforms/vtex/resolvers/productGroup.js.map +1 -0
  128. package/dist/{platforms → cjs/src/platforms}/vtex/resolvers/propertyValue.d.ts +4 -4
  129. package/dist/cjs/src/platforms/vtex/resolvers/propertyValue.js +11 -0
  130. package/dist/cjs/src/platforms/vtex/resolvers/propertyValue.js.map +1 -0
  131. package/dist/{platforms → cjs/src/platforms}/vtex/resolvers/query.d.ts +72 -72
  132. package/dist/cjs/src/platforms/vtex/resolvers/query.js +223 -0
  133. package/dist/cjs/src/platforms/vtex/resolvers/query.js.map +1 -0
  134. package/dist/{platforms → cjs/src/platforms}/vtex/resolvers/review.d.ts +2 -2
  135. package/dist/cjs/src/platforms/vtex/resolvers/review.js +13 -0
  136. package/dist/cjs/src/platforms/vtex/resolvers/review.js.map +1 -0
  137. package/dist/{platforms → cjs/src/platforms}/vtex/resolvers/root.d.ts +12 -12
  138. package/dist/cjs/src/platforms/vtex/resolvers/root.js +3 -0
  139. package/dist/cjs/src/platforms/vtex/resolvers/root.js.map +1 -0
  140. package/dist/{platforms → cjs/src/platforms}/vtex/resolvers/searchResult.d.ts +8 -8
  141. package/dist/cjs/src/platforms/vtex/resolvers/searchResult.js +97 -0
  142. package/dist/cjs/src/platforms/vtex/resolvers/searchResult.js.map +1 -0
  143. package/dist/{platforms → cjs/src/platforms}/vtex/resolvers/seo.d.ts +7 -7
  144. package/dist/cjs/src/platforms/vtex/resolvers/seo.js +10 -0
  145. package/dist/cjs/src/platforms/vtex/resolvers/seo.js.map +1 -0
  146. package/dist/{platforms → cjs/src/platforms}/vtex/resolvers/shippingSLA.d.ts +13 -13
  147. package/dist/cjs/src/platforms/vtex/resolvers/shippingSLA.js +48 -0
  148. package/dist/cjs/src/platforms/vtex/resolvers/shippingSLA.js.map +1 -0
  149. package/dist/{platforms → cjs/src/platforms}/vtex/resolvers/skuVariations.d.ts +5 -5
  150. package/dist/cjs/src/platforms/vtex/resolvers/skuVariations.js +17 -0
  151. package/dist/cjs/src/platforms/vtex/resolvers/skuVariations.js.map +1 -0
  152. package/dist/{platforms → cjs/src/platforms}/vtex/resolvers/subscribeToNewsletter.d.ts +3 -3
  153. package/dist/cjs/src/platforms/vtex/resolvers/subscribeToNewsletter.js +9 -0
  154. package/dist/cjs/src/platforms/vtex/resolvers/subscribeToNewsletter.js.map +1 -0
  155. package/dist/{platforms → cjs/src/platforms}/vtex/resolvers/validateCart.d.ts +70 -70
  156. package/dist/cjs/src/platforms/vtex/resolvers/validateCart.js +282 -0
  157. package/dist/cjs/src/platforms/vtex/resolvers/validateCart.js.map +1 -0
  158. package/dist/{platforms → cjs/src/platforms}/vtex/resolvers/validateSession.d.ts +3 -3
  159. package/dist/cjs/src/platforms/vtex/resolvers/validateSession.js +58 -0
  160. package/dist/cjs/src/platforms/vtex/resolvers/validateSession.js.map +1 -0
  161. package/dist/{platforms → cjs/src/platforms}/vtex/utils/canonical.d.ts +2 -2
  162. package/dist/cjs/src/platforms/vtex/utils/canonical.js +6 -0
  163. package/dist/cjs/src/platforms/vtex/utils/canonical.js.map +1 -0
  164. package/dist/{platforms → cjs/src/platforms}/vtex/utils/channel.d.ts +9 -9
  165. package/dist/cjs/src/platforms/vtex/utils/channel.js +23 -0
  166. package/dist/cjs/src/platforms/vtex/utils/channel.js.map +1 -0
  167. package/dist/{platforms → cjs/src/platforms}/vtex/utils/contex.d.ts +3 -3
  168. package/dist/cjs/src/platforms/vtex/utils/contex.js +14 -0
  169. package/dist/cjs/src/platforms/vtex/utils/contex.js.map +1 -0
  170. package/dist/{platforms → cjs/src/platforms}/vtex/utils/createNewAddress.d.ts +3 -3
  171. package/dist/cjs/src/platforms/vtex/utils/createNewAddress.js +34 -0
  172. package/dist/cjs/src/platforms/vtex/utils/createNewAddress.js.map +1 -0
  173. package/dist/{platforms → cjs/src/platforms}/vtex/utils/enhanceCommercialOffer.d.ts +10 -10
  174. package/dist/cjs/src/platforms/vtex/utils/enhanceCommercialOffer.js +10 -0
  175. package/dist/cjs/src/platforms/vtex/utils/enhanceCommercialOffer.js.map +1 -0
  176. package/dist/{platforms → cjs/src/platforms}/vtex/utils/enhanceSku.d.ts +5 -5
  177. package/dist/cjs/src/platforms/vtex/utils/enhanceSku.js +18 -0
  178. package/dist/cjs/src/platforms/vtex/utils/enhanceSku.js.map +1 -0
  179. package/dist/{platforms → cjs/src/platforms}/vtex/utils/facets.d.ts +32 -31
  180. package/dist/cjs/src/platforms/vtex/utils/facets.js +65 -0
  181. package/dist/cjs/src/platforms/vtex/utils/facets.js.map +1 -0
  182. package/dist/{platforms → cjs/src/platforms}/vtex/utils/getAddressOrderForm.d.ts +3 -3
  183. package/dist/cjs/src/platforms/vtex/utils/getAddressOrderForm.js +42 -0
  184. package/dist/cjs/src/platforms/vtex/utils/getAddressOrderForm.js.map +1 -0
  185. package/dist/{platforms → cjs/src/platforms}/vtex/utils/md5.d.ts +1 -1
  186. package/dist/cjs/src/platforms/vtex/utils/md5.js +8 -0
  187. package/dist/cjs/src/platforms/vtex/utils/md5.js.map +1 -0
  188. package/dist/{platforms → cjs/src/platforms}/vtex/utils/orderStatistics.d.ts +4 -4
  189. package/dist/cjs/src/platforms/vtex/utils/orderStatistics.js +18 -0
  190. package/dist/cjs/src/platforms/vtex/utils/orderStatistics.js.map +1 -0
  191. package/dist/{platforms → cjs/src/platforms}/vtex/utils/productStock.d.ts +7 -7
  192. package/dist/cjs/src/platforms/vtex/utils/productStock.js +25 -0
  193. package/dist/cjs/src/platforms/vtex/utils/productStock.js.map +1 -0
  194. package/dist/{platforms → cjs/src/platforms}/vtex/utils/propertyValue.d.ts +12 -12
  195. package/dist/cjs/src/platforms/vtex/utils/propertyValue.js +21 -0
  196. package/dist/cjs/src/platforms/vtex/utils/propertyValue.js.map +1 -0
  197. package/dist/{platforms → cjs/src/platforms}/vtex/utils/sanitizeHtml.d.ts +17 -17
  198. package/dist/cjs/src/platforms/vtex/utils/sanitizeHtml.js +23 -0
  199. package/dist/cjs/src/platforms/vtex/utils/sanitizeHtml.js.map +1 -0
  200. package/dist/{platforms → cjs/src/platforms}/vtex/utils/shouldUpdateShippingData.d.ts +6 -6
  201. package/dist/cjs/src/platforms/vtex/utils/shouldUpdateShippingData.js +72 -0
  202. package/dist/cjs/src/platforms/vtex/utils/shouldUpdateShippingData.js.map +1 -0
  203. package/dist/{platforms → cjs/src/platforms}/vtex/utils/sku.d.ts +8 -8
  204. package/dist/cjs/src/platforms/vtex/utils/sku.js +22 -0
  205. package/dist/cjs/src/platforms/vtex/utils/sku.js.map +1 -0
  206. package/dist/{platforms → cjs/src/platforms}/vtex/utils/skuVariants.d.ts +15 -15
  207. package/dist/cjs/src/platforms/vtex/utils/skuVariants.js +139 -0
  208. package/dist/cjs/src/platforms/vtex/utils/skuVariants.js.map +1 -0
  209. package/dist/{platforms → cjs/src/platforms}/vtex/utils/slugify.d.ts +1 -1
  210. package/dist/cjs/src/platforms/vtex/utils/slugify.js +43 -0
  211. package/dist/cjs/src/platforms/vtex/utils/slugify.js.map +1 -0
  212. package/dist/{platforms → cjs/src/platforms}/vtex/utils/sort.d.ts +10 -10
  213. package/dist/cjs/src/platforms/vtex/utils/sort.js +14 -0
  214. package/dist/cjs/src/platforms/vtex/utils/sort.js.map +1 -0
  215. package/dist/{telemetry → cjs/src/telemetry}/index.d.ts +8 -8
  216. package/dist/cjs/src/telemetry/index.js +77 -0
  217. package/dist/cjs/src/telemetry/index.js.map +1 -0
  218. package/dist/{telemetry → cjs/src/telemetry}/useFaststoreTelemetry.d.ts +24 -24
  219. package/dist/cjs/src/telemetry/useFaststoreTelemetry.js +174 -0
  220. package/dist/cjs/src/telemetry/useFaststoreTelemetry.js.map +1 -0
  221. package/dist/cjs/src/typeDefs/address.graphql +45 -0
  222. package/dist/cjs/src/typeDefs/aggregateOffer.graphql +25 -0
  223. package/dist/cjs/src/typeDefs/aggregateRating.graphql +13 -0
  224. package/dist/cjs/src/typeDefs/author.graphql +9 -0
  225. package/dist/cjs/src/typeDefs/brand.graphql +9 -0
  226. package/dist/cjs/src/typeDefs/breadcrumb.graphql +31 -0
  227. package/dist/cjs/src/typeDefs/cart.graphql +37 -0
  228. package/dist/cjs/src/typeDefs/collection.graphql +83 -0
  229. package/dist/cjs/src/typeDefs/facet.graphql +77 -0
  230. package/dist/cjs/src/typeDefs/image.graphql +27 -0
  231. package/dist/{typeDefs → cjs/src/typeDefs}/index.d.ts +1 -1
  232. package/dist/cjs/src/typeDefs/index.js +10 -0
  233. package/dist/cjs/src/typeDefs/index.js.map +1 -0
  234. package/dist/cjs/src/typeDefs/mutation.graphql +14 -0
  235. package/dist/cjs/src/typeDefs/newsletter.graphql +24 -0
  236. package/dist/cjs/src/typeDefs/objectOrString.graphql +1 -0
  237. package/dist/cjs/src/typeDefs/offer.graphql +71 -0
  238. package/dist/cjs/src/typeDefs/order.graphql +31 -0
  239. package/dist/cjs/src/typeDefs/organization.graphql +19 -0
  240. package/dist/cjs/src/typeDefs/pageInfo.graphql +25 -0
  241. package/dist/cjs/src/typeDefs/person.graphql +43 -0
  242. package/dist/cjs/src/typeDefs/product.graphql +91 -0
  243. package/dist/cjs/src/typeDefs/productGroup.graphql +27 -0
  244. package/dist/cjs/src/typeDefs/propertyValue.graphql +40 -0
  245. package/dist/cjs/src/typeDefs/query.graphql +377 -0
  246. package/dist/cjs/src/typeDefs/review.graphql +27 -0
  247. package/dist/cjs/src/typeDefs/seo.graphql +21 -0
  248. package/dist/cjs/src/typeDefs/session.graphql +194 -0
  249. package/dist/cjs/src/typeDefs/shipping.graphql +331 -0
  250. package/dist/cjs/src/typeDefs/skuVariants.graphql +90 -0
  251. package/dist/cjs/src/typeDefs/status.graphql +8 -0
  252. package/dist/cjs/src/typings/index.d.ts +3 -0
  253. package/dist/cjs/src/typings/index.js +3 -0
  254. package/dist/cjs/src/typings/index.js.map +1 -0
  255. package/dist/esm/package.json +79 -0
  256. package/dist/esm/src/__generated__/schema.d.ts +1045 -0
  257. package/dist/esm/src/__generated__/schema.js +6 -0
  258. package/dist/esm/src/__generated__/schema.js.map +1 -0
  259. package/dist/esm/src/directives/cacheControl.d.ts +9 -0
  260. package/dist/esm/src/directives/cacheControl.js +41 -0
  261. package/dist/esm/src/directives/cacheControl.js.map +1 -0
  262. package/dist/esm/src/directives/index.d.ts +5 -0
  263. package/dist/esm/src/directives/index.js +2 -0
  264. package/dist/esm/src/directives/index.js.map +1 -0
  265. package/dist/esm/src/index.d.ts +163 -0
  266. package/dist/esm/src/index.js +29 -0
  267. package/dist/esm/src/index.js.map +1 -0
  268. package/dist/esm/src/platforms/errors.d.ts +19 -0
  269. package/dist/esm/src/platforms/errors.js +22 -0
  270. package/dist/esm/src/platforms/errors.js.map +1 -0
  271. package/dist/esm/src/platforms/vtex/clients/commerce/index.d.ts +75 -0
  272. package/dist/esm/src/platforms/vtex/clients/commerce/index.js +161 -0
  273. package/dist/esm/src/platforms/vtex/clients/commerce/index.js.map +1 -0
  274. package/dist/esm/src/platforms/vtex/clients/commerce/types/Address.d.ts +16 -0
  275. package/dist/esm/src/platforms/vtex/clients/commerce/types/Address.js +2 -0
  276. package/dist/esm/src/platforms/vtex/clients/commerce/types/Address.js.map +1 -0
  277. package/dist/esm/src/platforms/vtex/clients/commerce/types/Brand.d.ts +8 -0
  278. package/dist/esm/src/platforms/vtex/clients/commerce/types/Brand.js +2 -0
  279. package/dist/esm/src/platforms/vtex/clients/commerce/types/Brand.js.map +1 -0
  280. package/dist/esm/src/platforms/vtex/clients/commerce/types/CategoryTree.d.ts +9 -0
  281. package/dist/esm/src/platforms/vtex/clients/commerce/types/CategoryTree.js +2 -0
  282. package/dist/esm/src/platforms/vtex/clients/commerce/types/CategoryTree.js.map +1 -0
  283. package/dist/esm/src/platforms/vtex/clients/commerce/types/Newsletter.d.ts +4 -0
  284. package/dist/esm/src/platforms/vtex/clients/commerce/types/Newsletter.js +2 -0
  285. package/dist/esm/src/platforms/vtex/clients/commerce/types/Newsletter.js.map +1 -0
  286. package/dist/esm/src/platforms/vtex/clients/commerce/types/OrderForm.d.ts +371 -0
  287. package/dist/esm/src/platforms/vtex/clients/commerce/types/OrderForm.js +2 -0
  288. package/dist/esm/src/platforms/vtex/clients/commerce/types/OrderForm.js.map +1 -0
  289. package/dist/esm/src/platforms/vtex/clients/commerce/types/Portal.d.ts +17 -0
  290. package/dist/esm/src/platforms/vtex/clients/commerce/types/Portal.js +2 -0
  291. package/dist/esm/src/platforms/vtex/clients/commerce/types/Portal.js.map +1 -0
  292. package/dist/esm/src/platforms/vtex/clients/commerce/types/Product.d.ts +174 -0
  293. package/dist/esm/src/platforms/vtex/clients/commerce/types/Product.js +52 -0
  294. package/dist/esm/src/platforms/vtex/clients/commerce/types/Product.js.map +1 -0
  295. package/dist/esm/src/platforms/vtex/clients/commerce/types/Region.d.ts +19 -0
  296. package/dist/esm/src/platforms/vtex/clients/commerce/types/Region.js +2 -0
  297. package/dist/esm/src/platforms/vtex/clients/commerce/types/Region.js.map +1 -0
  298. package/dist/esm/src/platforms/vtex/clients/commerce/types/SalesChannel.d.ts +24 -0
  299. package/dist/esm/src/platforms/vtex/clients/commerce/types/SalesChannel.js +2 -0
  300. package/dist/esm/src/platforms/vtex/clients/commerce/types/SalesChannel.js.map +1 -0
  301. package/dist/esm/src/platforms/vtex/clients/commerce/types/Session.d.ts +33 -0
  302. package/dist/esm/src/platforms/vtex/clients/commerce/types/Session.js +2 -0
  303. package/dist/esm/src/platforms/vtex/clients/commerce/types/Session.js.map +1 -0
  304. package/dist/esm/src/platforms/vtex/clients/commerce/types/ShippingData.d.ts +38 -0
  305. package/dist/esm/src/platforms/vtex/clients/commerce/types/ShippingData.js +2 -0
  306. package/dist/esm/src/platforms/vtex/clients/commerce/types/ShippingData.js.map +1 -0
  307. package/dist/esm/src/platforms/vtex/clients/commerce/types/Simulation.d.ts +154 -0
  308. package/dist/esm/src/platforms/vtex/clients/commerce/types/Simulation.js +2 -0
  309. package/dist/esm/src/platforms/vtex/clients/commerce/types/Simulation.js.map +1 -0
  310. package/dist/esm/src/platforms/vtex/clients/fetch.d.ts +1 -0
  311. package/dist/esm/src/platforms/vtex/clients/fetch.js +19 -0
  312. package/dist/esm/src/platforms/vtex/clients/fetch.js.map +1 -0
  313. package/dist/esm/src/platforms/vtex/clients/index.d.ts +71 -0
  314. package/dist/esm/src/platforms/vtex/clients/index.js +14 -0
  315. package/dist/esm/src/platforms/vtex/clients/index.js.map +1 -0
  316. package/dist/esm/src/platforms/vtex/clients/search/index.d.ts +26 -0
  317. package/dist/esm/src/platforms/vtex/clients/search/index.js +83 -0
  318. package/dist/esm/src/platforms/vtex/clients/search/index.js.map +1 -0
  319. package/dist/esm/src/platforms/vtex/clients/search/types/AttributeSearchResult.d.ts +30 -0
  320. package/dist/esm/src/platforms/vtex/clients/search/types/AttributeSearchResult.js +2 -0
  321. package/dist/esm/src/platforms/vtex/clients/search/types/AttributeSearchResult.js.map +1 -0
  322. package/dist/esm/src/platforms/vtex/clients/search/types/FacetSearchResult.d.ts +31 -0
  323. package/dist/esm/src/platforms/vtex/clients/search/types/FacetSearchResult.js +2 -0
  324. package/dist/esm/src/platforms/vtex/clients/search/types/FacetSearchResult.js.map +1 -0
  325. package/dist/esm/src/platforms/vtex/clients/search/types/ProductSearchResult.d.ts +206 -0
  326. package/dist/esm/src/platforms/vtex/clients/search/types/ProductSearchResult.js +2 -0
  327. package/dist/esm/src/platforms/vtex/clients/search/types/ProductSearchResult.js.map +1 -0
  328. package/dist/esm/src/platforms/vtex/clients/sp/index.d.ts +14 -0
  329. package/dist/esm/src/platforms/vtex/clients/sp/index.js +45 -0
  330. package/dist/esm/src/platforms/vtex/clients/sp/index.js.map +1 -0
  331. package/dist/esm/src/platforms/vtex/index.d.ts +188 -0
  332. package/dist/esm/src/platforms/vtex/index.js +53 -0
  333. package/dist/esm/src/platforms/vtex/index.js.map +1 -0
  334. package/dist/esm/src/platforms/vtex/loaders/collection.d.ts +6 -0
  335. package/dist/esm/src/platforms/vtex/loaders/collection.js +32 -0
  336. package/dist/esm/src/platforms/vtex/loaders/collection.js.map +1 -0
  337. package/dist/esm/src/platforms/vtex/loaders/index.d.ts +8 -0
  338. package/dist/esm/src/platforms/vtex/loaders/index.js +17 -0
  339. package/dist/esm/src/platforms/vtex/loaders/index.js.map +1 -0
  340. package/dist/esm/src/platforms/vtex/loaders/salesChannel.d.ts +5 -0
  341. package/dist/esm/src/platforms/vtex/loaders/salesChannel.js +6 -0
  342. package/dist/esm/src/platforms/vtex/loaders/salesChannel.js.map +1 -0
  343. package/dist/esm/src/platforms/vtex/loaders/simulation.d.ts +5 -0
  344. package/dist/esm/src/platforms/vtex/loaders/simulation.js +39 -0
  345. package/dist/esm/src/platforms/vtex/loaders/simulation.js.map +1 -0
  346. package/dist/esm/src/platforms/vtex/loaders/sku.d.ts +5 -0
  347. package/dist/esm/src/platforms/vtex/loaders/sku.js +28 -0
  348. package/dist/esm/src/platforms/vtex/loaders/sku.js.map +1 -0
  349. package/dist/esm/src/platforms/vtex/resolvers/aggregateOffer.d.ts +7 -0
  350. package/dist/esm/src/platforms/vtex/resolvers/aggregateOffer.js +20 -0
  351. package/dist/esm/src/platforms/vtex/resolvers/aggregateOffer.js.map +1 -0
  352. package/dist/esm/src/platforms/vtex/resolvers/aggregateRating.d.ts +2 -0
  353. package/dist/esm/src/platforms/vtex/resolvers/aggregateRating.js +6 -0
  354. package/dist/esm/src/platforms/vtex/resolvers/aggregateRating.js.map +1 -0
  355. package/dist/esm/src/platforms/vtex/resolvers/collection.d.ts +8 -0
  356. package/dist/esm/src/platforms/vtex/resolvers/collection.js +78 -0
  357. package/dist/esm/src/platforms/vtex/resolvers/collection.js.map +1 -0
  358. package/dist/esm/src/platforms/vtex/resolvers/faceValue.d.ts +3 -0
  359. package/dist/esm/src/platforms/vtex/resolvers/faceValue.js +7 -0
  360. package/dist/esm/src/platforms/vtex/resolvers/faceValue.js.map +1 -0
  361. package/dist/esm/src/platforms/vtex/resolvers/facet.d.ts +6 -0
  362. package/dist/esm/src/platforms/vtex/resolvers/facet.js +47 -0
  363. package/dist/esm/src/platforms/vtex/resolvers/facet.js.map +1 -0
  364. package/dist/esm/src/platforms/vtex/resolvers/mutation.d.ts +59 -0
  365. package/dist/esm/src/platforms/vtex/resolvers/mutation.js +9 -0
  366. package/dist/esm/src/platforms/vtex/resolvers/mutation.js.map +1 -0
  367. package/dist/esm/src/platforms/vtex/resolvers/objectOrString.d.ts +2 -0
  368. package/dist/esm/src/platforms/vtex/resolvers/objectOrString.js +38 -0
  369. package/dist/esm/src/platforms/vtex/resolvers/objectOrString.js.map +1 -0
  370. package/dist/esm/src/platforms/vtex/resolvers/offer.d.ts +12 -0
  371. package/dist/esm/src/platforms/vtex/resolvers/offer.js +91 -0
  372. package/dist/esm/src/platforms/vtex/resolvers/offer.js.map +1 -0
  373. package/dist/esm/src/platforms/vtex/resolvers/organization.d.ts +5 -0
  374. package/dist/esm/src/platforms/vtex/resolvers/organization.js +4 -0
  375. package/dist/esm/src/platforms/vtex/resolvers/organization.js.map +1 -0
  376. package/dist/esm/src/platforms/vtex/resolvers/product.d.ts +14 -0
  377. package/dist/esm/src/platforms/vtex/resolvers/product.js +75 -0
  378. package/dist/esm/src/platforms/vtex/resolvers/product.js.map +1 -0
  379. package/dist/esm/src/platforms/vtex/resolvers/productGroup.d.ts +5 -0
  380. package/dist/esm/src/platforms/vtex/resolvers/productGroup.js +19 -0
  381. package/dist/esm/src/platforms/vtex/resolvers/productGroup.js.map +1 -0
  382. package/dist/esm/src/platforms/vtex/resolvers/propertyValue.d.ts +4 -0
  383. package/dist/esm/src/platforms/vtex/resolvers/propertyValue.js +8 -0
  384. package/dist/esm/src/platforms/vtex/resolvers/propertyValue.js.map +1 -0
  385. package/dist/esm/src/platforms/vtex/resolvers/query.d.ts +72 -0
  386. package/dist/esm/src/platforms/vtex/resolvers/query.js +220 -0
  387. package/dist/esm/src/platforms/vtex/resolvers/query.js.map +1 -0
  388. package/dist/esm/src/platforms/vtex/resolvers/review.d.ts +2 -0
  389. package/dist/esm/src/platforms/vtex/resolvers/review.js +10 -0
  390. package/dist/esm/src/platforms/vtex/resolvers/review.js.map +1 -0
  391. package/dist/esm/src/platforms/vtex/resolvers/root.d.ts +12 -0
  392. package/dist/esm/src/platforms/vtex/resolvers/root.js +2 -0
  393. package/dist/esm/src/platforms/vtex/resolvers/root.js.map +1 -0
  394. package/dist/esm/src/platforms/vtex/resolvers/searchResult.d.ts +8 -0
  395. package/dist/esm/src/platforms/vtex/resolvers/searchResult.js +94 -0
  396. package/dist/esm/src/platforms/vtex/resolvers/searchResult.js.map +1 -0
  397. package/dist/esm/src/platforms/vtex/resolvers/seo.d.ts +7 -0
  398. package/dist/esm/src/platforms/vtex/resolvers/seo.js +7 -0
  399. package/dist/esm/src/platforms/vtex/resolvers/seo.js.map +1 -0
  400. package/dist/esm/src/platforms/vtex/resolvers/shippingSLA.d.ts +13 -0
  401. package/dist/esm/src/platforms/vtex/resolvers/shippingSLA.js +44 -0
  402. package/dist/esm/src/platforms/vtex/resolvers/shippingSLA.js.map +1 -0
  403. package/dist/esm/src/platforms/vtex/resolvers/skuVariations.d.ts +5 -0
  404. package/dist/esm/src/platforms/vtex/resolvers/skuVariations.js +14 -0
  405. package/dist/esm/src/platforms/vtex/resolvers/skuVariations.js.map +1 -0
  406. package/dist/esm/src/platforms/vtex/resolvers/subscribeToNewsletter.d.ts +3 -0
  407. package/dist/esm/src/platforms/vtex/resolvers/subscribeToNewsletter.js +5 -0
  408. package/dist/esm/src/platforms/vtex/resolvers/subscribeToNewsletter.js.map +1 -0
  409. package/dist/esm/src/platforms/vtex/resolvers/validateCart.d.ts +70 -0
  410. package/dist/esm/src/platforms/vtex/resolvers/validateCart.js +277 -0
  411. package/dist/esm/src/platforms/vtex/resolvers/validateCart.js.map +1 -0
  412. package/dist/esm/src/platforms/vtex/resolvers/validateSession.d.ts +3 -0
  413. package/dist/esm/src/platforms/vtex/resolvers/validateSession.js +53 -0
  414. package/dist/esm/src/platforms/vtex/resolvers/validateSession.js.map +1 -0
  415. package/dist/esm/src/platforms/vtex/utils/canonical.d.ts +2 -0
  416. package/dist/esm/src/platforms/vtex/utils/canonical.js +2 -0
  417. package/dist/esm/src/platforms/vtex/utils/canonical.js.map +1 -0
  418. package/dist/esm/src/platforms/vtex/utils/channel.d.ts +9 -0
  419. package/dist/esm/src/platforms/vtex/utils/channel.js +20 -0
  420. package/dist/esm/src/platforms/vtex/utils/channel.js.map +1 -0
  421. package/dist/esm/src/platforms/vtex/utils/contex.d.ts +3 -0
  422. package/dist/esm/src/platforms/vtex/utils/contex.js +8 -0
  423. package/dist/esm/src/platforms/vtex/utils/contex.js.map +1 -0
  424. package/dist/esm/src/platforms/vtex/utils/createNewAddress.d.ts +3 -0
  425. package/dist/esm/src/platforms/vtex/utils/createNewAddress.js +30 -0
  426. package/dist/esm/src/platforms/vtex/utils/createNewAddress.js.map +1 -0
  427. package/dist/esm/src/platforms/vtex/utils/enhanceCommercialOffer.d.ts +10 -0
  428. package/dist/esm/src/platforms/vtex/utils/enhanceCommercialOffer.js +6 -0
  429. package/dist/esm/src/platforms/vtex/utils/enhanceCommercialOffer.js.map +1 -0
  430. package/dist/esm/src/platforms/vtex/utils/enhanceSku.d.ts +5 -0
  431. package/dist/esm/src/platforms/vtex/utils/enhanceSku.js +14 -0
  432. package/dist/esm/src/platforms/vtex/utils/enhanceSku.js.map +1 -0
  433. package/dist/esm/src/platforms/vtex/utils/facets.d.ts +32 -0
  434. package/dist/esm/src/platforms/vtex/utils/facets.js +54 -0
  435. package/dist/esm/src/platforms/vtex/utils/facets.js.map +1 -0
  436. package/dist/esm/src/platforms/vtex/utils/getAddressOrderForm.d.ts +3 -0
  437. package/dist/esm/src/platforms/vtex/utils/getAddressOrderForm.js +38 -0
  438. package/dist/esm/src/platforms/vtex/utils/getAddressOrderForm.js.map +1 -0
  439. package/dist/esm/src/platforms/vtex/utils/md5.d.ts +1 -0
  440. package/dist/esm/src/platforms/vtex/utils/md5.js +3 -0
  441. package/dist/esm/src/platforms/vtex/utils/md5.js.map +1 -0
  442. package/dist/esm/src/platforms/vtex/utils/orderStatistics.d.ts +4 -0
  443. package/dist/esm/src/platforms/vtex/utils/orderStatistics.js +14 -0
  444. package/dist/esm/src/platforms/vtex/utils/orderStatistics.js.map +1 -0
  445. package/dist/esm/src/platforms/vtex/utils/productStock.d.ts +7 -0
  446. package/dist/esm/src/platforms/vtex/utils/productStock.js +16 -0
  447. package/dist/esm/src/platforms/vtex/utils/productStock.js.map +1 -0
  448. package/dist/esm/src/platforms/vtex/utils/propertyValue.d.ts +12 -0
  449. package/dist/esm/src/platforms/vtex/utils/propertyValue.js +16 -0
  450. package/dist/esm/src/platforms/vtex/utils/propertyValue.js.map +1 -0
  451. package/dist/esm/src/platforms/vtex/utils/sanitizeHtml.d.ts +17 -0
  452. package/dist/esm/src/platforms/vtex/utils/sanitizeHtml.js +18 -0
  453. package/dist/esm/src/platforms/vtex/utils/sanitizeHtml.js.map +1 -0
  454. package/dist/esm/src/platforms/vtex/utils/shouldUpdateShippingData.d.ts +6 -0
  455. package/dist/esm/src/platforms/vtex/utils/shouldUpdateShippingData.js +68 -0
  456. package/dist/esm/src/platforms/vtex/utils/shouldUpdateShippingData.js.map +1 -0
  457. package/dist/esm/src/platforms/vtex/utils/sku.d.ts +8 -0
  458. package/dist/esm/src/platforms/vtex/utils/sku.js +17 -0
  459. package/dist/esm/src/platforms/vtex/utils/sku.js.map +1 -0
  460. package/dist/esm/src/platforms/vtex/utils/skuVariants.d.ts +15 -0
  461. package/dist/esm/src/platforms/vtex/utils/skuVariants.js +132 -0
  462. package/dist/esm/src/platforms/vtex/utils/skuVariants.js.map +1 -0
  463. package/dist/esm/src/platforms/vtex/utils/slugify.d.ts +1 -0
  464. package/dist/esm/src/platforms/vtex/utils/slugify.js +39 -0
  465. package/dist/esm/src/platforms/vtex/utils/slugify.js.map +1 -0
  466. package/dist/esm/src/platforms/vtex/utils/sort.d.ts +10 -0
  467. package/dist/esm/src/platforms/vtex/utils/sort.js +11 -0
  468. package/dist/esm/src/platforms/vtex/utils/sort.js.map +1 -0
  469. package/dist/esm/src/telemetry/index.d.ts +8 -0
  470. package/dist/esm/src/telemetry/index.js +72 -0
  471. package/dist/esm/src/telemetry/index.js.map +1 -0
  472. package/dist/esm/src/telemetry/useFaststoreTelemetry.d.ts +24 -0
  473. package/dist/esm/src/telemetry/useFaststoreTelemetry.js +170 -0
  474. package/dist/esm/src/telemetry/useFaststoreTelemetry.js.map +1 -0
  475. package/dist/esm/src/typeDefs/address.graphql +45 -0
  476. package/dist/esm/src/typeDefs/aggregateOffer.graphql +25 -0
  477. package/dist/esm/src/typeDefs/aggregateRating.graphql +13 -0
  478. package/dist/esm/src/typeDefs/author.graphql +9 -0
  479. package/dist/esm/src/typeDefs/brand.graphql +9 -0
  480. package/dist/esm/src/typeDefs/breadcrumb.graphql +31 -0
  481. package/dist/esm/src/typeDefs/cart.graphql +37 -0
  482. package/dist/esm/src/typeDefs/collection.graphql +83 -0
  483. package/dist/esm/src/typeDefs/facet.graphql +77 -0
  484. package/dist/esm/src/typeDefs/image.graphql +27 -0
  485. package/dist/esm/src/typeDefs/index.d.ts +1 -0
  486. package/dist/esm/src/typeDefs/index.js +7 -0
  487. package/dist/esm/src/typeDefs/index.js.map +1 -0
  488. package/dist/esm/src/typeDefs/mutation.graphql +14 -0
  489. package/dist/esm/src/typeDefs/newsletter.graphql +24 -0
  490. package/dist/esm/src/typeDefs/objectOrString.graphql +1 -0
  491. package/dist/esm/src/typeDefs/offer.graphql +71 -0
  492. package/dist/esm/src/typeDefs/order.graphql +31 -0
  493. package/dist/esm/src/typeDefs/organization.graphql +19 -0
  494. package/dist/esm/src/typeDefs/pageInfo.graphql +25 -0
  495. package/dist/esm/src/typeDefs/person.graphql +43 -0
  496. package/dist/esm/src/typeDefs/product.graphql +91 -0
  497. package/dist/esm/src/typeDefs/productGroup.graphql +27 -0
  498. package/dist/esm/src/typeDefs/propertyValue.graphql +40 -0
  499. package/dist/esm/src/typeDefs/query.graphql +377 -0
  500. package/dist/esm/src/typeDefs/review.graphql +27 -0
  501. package/dist/esm/src/typeDefs/seo.graphql +21 -0
  502. package/dist/esm/src/typeDefs/session.graphql +194 -0
  503. package/dist/esm/src/typeDefs/shipping.graphql +331 -0
  504. package/dist/esm/src/typeDefs/skuVariants.graphql +90 -0
  505. package/dist/esm/src/typeDefs/status.graphql +8 -0
  506. package/dist/esm/src/typings/index.d.ts +3 -0
  507. package/dist/esm/src/typings/index.js +2 -0
  508. package/dist/esm/src/typings/index.js.map +1 -0
  509. package/package.json +34 -17
  510. package/src/index.ts +1 -1
  511. package/src/typeDefs/index.ts +3 -58
  512. package/dist/api.cjs.development.js +0 -2946
  513. package/dist/api.cjs.development.js.map +0 -1
  514. package/dist/api.cjs.production.min.js +0 -2
  515. package/dist/api.cjs.production.min.js.map +0 -1
  516. package/dist/api.esm.js +0 -2932
  517. package/dist/api.esm.js.map +0 -1
  518. package/dist/index.js +0 -8
  519. 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 declare type SkuVariants = StoreProductType[];
4
- export declare type SkuVariantsByName = Record<string, Array<FormattedSkuVariant>>;
5
- declare 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): Record<string, FormattedSkuVariant[]>;
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 declare 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
- };
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 declare type PluginContext = {
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