@infrab4a/connect 4.0.1-beta.3 → 4.0.1-beta.4

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 (800) hide show
  1. package/README.md +24 -24
  2. package/domain/catalog/helpers/index.d.ts +1 -0
  3. package/domain/catalog/helpers/round-product-price.helper.d.ts +4 -0
  4. package/domain/catalog/index.d.ts +3 -2
  5. package/domain/catalog/models/category-base.d.ts +30 -0
  6. package/domain/catalog/models/category-collection-children.d.ts +13 -0
  7. package/domain/catalog/models/category-filter.d.ts +13 -0
  8. package/domain/catalog/models/category-for-product.d.ts +5 -0
  9. package/domain/catalog/models/category.d.ts +7 -24
  10. package/domain/catalog/models/enums/index.d.ts +2 -2
  11. package/domain/catalog/models/enums/product-genders.enum.d.ts +5 -5
  12. package/domain/catalog/models/enums/shops.enum.d.ts +6 -6
  13. package/domain/catalog/models/filter-option.d.ts +9 -0
  14. package/domain/catalog/models/filter.d.ts +12 -0
  15. package/domain/catalog/models/index.d.ts +11 -6
  16. package/domain/catalog/models/kit-product.d.ts +12 -12
  17. package/domain/catalog/models/product-base.d.ts +40 -0
  18. package/domain/catalog/models/product-for-category.d.ts +7 -0
  19. package/domain/catalog/models/product-for-kit.d.ts +7 -0
  20. package/domain/catalog/models/product.d.ts +9 -39
  21. package/domain/catalog/models/types/category-condition.type.d.ts +4 -4
  22. package/domain/catalog/models/types/category-metadata.type.d.ts +4 -4
  23. package/domain/catalog/models/types/category-product.d.ts +4 -0
  24. package/domain/catalog/models/types/index.d.ts +11 -10
  25. package/domain/catalog/models/types/product-evaluation.type.d.ts +6 -0
  26. package/domain/catalog/models/types/product-gender.type.d.ts +1 -1
  27. package/domain/catalog/models/types/product-metadata.type.d.ts +4 -4
  28. package/domain/catalog/models/types/product-review.type.d.ts +17 -17
  29. package/domain/catalog/models/types/shop-description.type.d.ts +8 -7
  30. package/domain/catalog/models/types/shop-price.type.d.ts +6 -6
  31. package/domain/catalog/models/types/stock.type.d.ts +3 -3
  32. package/domain/catalog/models/types/variant-grade.type.d.ts +4 -4
  33. package/domain/catalog/models/variant.d.ts +17 -18
  34. package/domain/catalog/models/wishlist.d.ts +8 -0
  35. package/domain/catalog/repositories/category-collection-children.repository.d.ts +4 -0
  36. package/domain/catalog/repositories/category-filter.repository.d.ts +6 -0
  37. package/domain/catalog/repositories/category.repository.d.ts +18 -15
  38. package/domain/catalog/repositories/filter-option.repository.d.ts +4 -0
  39. package/domain/catalog/repositories/filter.repository.d.ts +4 -0
  40. package/domain/catalog/repositories/index.d.ts +9 -4
  41. package/domain/catalog/repositories/product.repository.d.ts +15 -12
  42. package/domain/catalog/repositories/subscription-product.repository.d.ts +4 -4
  43. package/domain/catalog/repositories/variant.repository.d.ts +4 -4
  44. package/domain/catalog/repositories/wishlist.repository.d.ts +6 -0
  45. package/domain/generic/index.d.ts +2 -2
  46. package/domain/generic/model/base.model.d.ts +14 -10
  47. package/domain/generic/model/identifier-fields.d.ts +4 -4
  48. package/domain/generic/model/index.d.ts +3 -3
  49. package/domain/generic/model/types/base-model-builder.type.d.ts +17 -15
  50. package/domain/generic/model/types/identifier-model.type.d.ts +8 -7
  51. package/domain/generic/model/types/index.d.ts +5 -5
  52. package/domain/generic/model/types/model-base-structure.type.d.ts +12 -6
  53. package/domain/generic/model/types/non-function-properties.type.d.ts +12 -12
  54. package/domain/generic/model/types/non-function-property-name.type.d.ts +13 -4
  55. package/domain/generic/repository/create.repository.d.ts +8 -8
  56. package/domain/generic/repository/crud.repository.d.ts +19 -19
  57. package/domain/generic/repository/delete.repository.d.ts +7 -7
  58. package/domain/generic/repository/enums/index.d.ts +2 -2
  59. package/domain/generic/repository/enums/update-option-actions.enum.d.ts +7 -7
  60. package/domain/generic/repository/enums/where.enum.d.ts +14 -14
  61. package/domain/generic/repository/find.repository.d.ts +17 -11
  62. package/domain/generic/repository/get.repository.d.ts +5 -5
  63. package/domain/generic/repository/index.d.ts +9 -9
  64. package/domain/generic/repository/read.repository.d.ts +14 -14
  65. package/domain/generic/repository/types/index.d.ts +6 -6
  66. package/domain/generic/repository/types/repository-find-filters.type.d.ts +13 -13
  67. package/domain/generic/repository/types/repository-find-result.type.d.ts +14 -4
  68. package/domain/generic/repository/types/repository-limit-options.type.d.ts +4 -4
  69. package/domain/generic/repository/types/repository-order-by-list.type.d.ts +5 -5
  70. package/domain/generic/repository/types/repository-update-params.type.d.ts +11 -11
  71. package/domain/generic/repository/types/where-options.type.d.ts +2 -2
  72. package/domain/generic/repository/update.repository.d.ts +6 -6
  73. package/domain/index.d.ts +6 -6
  74. package/domain/location/index.d.ts +1 -1
  75. package/domain/location/models/address.d.ts +24 -22
  76. package/domain/location/models/index.d.ts +2 -2
  77. package/domain/location/models/types/index.d.ts +3 -3
  78. package/domain/location/models/types/location-bound.type.d.ts +6 -6
  79. package/domain/location/models/types/location-geometry.type.d.ts +7 -7
  80. package/domain/location/models/types/location-lat-lng.type.d.ts +4 -4
  81. package/domain/shop-settings/enums/filter-type.enum.d.ts +19 -19
  82. package/domain/shop-settings/enums/index.d.ts +2 -2
  83. package/domain/shop-settings/enums/questions-filters.enum.d.ts +19 -19
  84. package/domain/shop-settings/helpers/beauty-questions.helper.d.ts +9 -9
  85. package/domain/shop-settings/helpers/index.d.ts +1 -1
  86. package/domain/shop-settings/index.d.ts +4 -4
  87. package/domain/shop-settings/models/home.d.ts +18 -18
  88. package/domain/shop-settings/models/index.d.ts +4 -4
  89. package/domain/shop-settings/models/shop-menu.d.ts +7 -7
  90. package/domain/shop-settings/models/shop-settings.d.ts +9 -9
  91. package/domain/shop-settings/models/types/banner.type.d.ts +6 -6
  92. package/domain/shop-settings/models/types/benefit.type.d.ts +5 -5
  93. package/domain/shop-settings/models/types/home-data.type.d.ts +15 -15
  94. package/domain/shop-settings/models/types/index.d.ts +10 -10
  95. package/domain/shop-settings/models/types/menu-nav.type.d.ts +8 -8
  96. package/domain/shop-settings/models/types/shop-banner.type.d.ts +12 -12
  97. package/domain/shop-settings/models/types/shop-brands.type.d.ts +10 -10
  98. package/domain/shop-settings/models/types/shop-carousel.type.d.ts +5 -5
  99. package/domain/shop-settings/models/types/shop-collection.type.d.ts +9 -9
  100. package/domain/shop-settings/models/types/shop-section.type.d.ts +9 -9
  101. package/domain/shop-settings/models/types/sub-menu.type.d.ts +8 -8
  102. package/domain/shop-settings/repositories/home.repository.d.ts +4 -4
  103. package/domain/shop-settings/repositories/index.d.ts +3 -3
  104. package/domain/shop-settings/repositories/shop-menu.repository.d.ts +4 -4
  105. package/domain/shop-settings/repositories/shop-settings.repository.d.ts +4 -4
  106. package/domain/shopping/index.d.ts +2 -2
  107. package/domain/shopping/models/buy-2-win.d.ts +18 -16
  108. package/domain/shopping/models/campaign-dashboard.d.ts +15 -0
  109. package/domain/shopping/models/campaign-hashtag.d.ts +18 -0
  110. package/domain/shopping/models/checkout.d.ts +26 -27
  111. package/domain/shopping/models/coupons/coupon.d.ts +60 -32
  112. package/domain/shopping/models/coupons/enums/coupon-club-mens.enum.d.ts +5 -5
  113. package/domain/shopping/models/coupons/enums/coupon-subtypes.enum.d.ts +4 -4
  114. package/domain/shopping/models/coupons/enums/coupon-types.enum.d.ts +4 -4
  115. package/domain/shopping/models/coupons/enums/exclusivities.enum.d.ts +8 -8
  116. package/domain/shopping/models/coupons/enums/index.d.ts +3 -3
  117. package/domain/shopping/models/coupons/index.d.ts +2 -2
  118. package/domain/shopping/models/enums/checkout-types.enum.d.ts +5 -5
  119. package/domain/shopping/models/enums/index.d.ts +2 -2
  120. package/domain/shopping/models/enums/order-status.enum.d.ts +10 -10
  121. package/domain/shopping/models/index.d.ts +12 -11
  122. package/domain/shopping/models/line-item.d.ts +8 -8
  123. package/domain/shopping/models/order.d.ts +10 -9
  124. package/domain/shopping/models/payment.d.ts +67 -67
  125. package/domain/shopping/models/shipping-method.d.ts +17 -16
  126. package/domain/shopping/models/subscription/checkout.d.ts +20 -21
  127. package/domain/shopping/models/subscription/index.d.ts +2 -2
  128. package/domain/shopping/models/subscription/plan.d.ts +10 -10
  129. package/domain/shopping/models/types/index.d.ts +7 -7
  130. package/domain/shopping/models/types/payment-address.type.d.ts +12 -12
  131. package/domain/shopping/models/types/payment-billing.type.d.ts +7 -7
  132. package/domain/shopping/models/types/payment-card.type.d.ts +14 -14
  133. package/domain/shopping/models/types/payment-customer.type.d.ts +18 -18
  134. package/domain/shopping/models/types/payment-document.type.d.ts +6 -6
  135. package/domain/shopping/models/types/payment-item.type.d.ts +11 -11
  136. package/domain/shopping/models/types/payment-shipping.type.d.ts +10 -10
  137. package/domain/shopping/repositories/buy-2-win.repository.d.ts +4 -4
  138. package/domain/shopping/repositories/campaign-dashboard.repository.d.ts +4 -0
  139. package/domain/shopping/repositories/campaign-hashtag.repository.d.ts +4 -0
  140. package/domain/shopping/repositories/checkout.repository.d.ts +4 -4
  141. package/domain/shopping/repositories/coupon.repository.d.ts +4 -4
  142. package/domain/shopping/repositories/index.d.ts +9 -7
  143. package/domain/shopping/repositories/legacy-order.repository.d.ts +3 -3
  144. package/domain/shopping/repositories/order.repository.d.ts +4 -4
  145. package/domain/shopping/repositories/payment.repository.d.ts +4 -4
  146. package/domain/shopping/repositories/subscription/checkout.repository.d.ts +4 -4
  147. package/domain/shopping/repositories/subscription/index.d.ts +2 -2
  148. package/domain/shopping/repositories/subscription/plan.repository.d.ts +4 -4
  149. package/domain/users/errors/index.d.ts +3 -3
  150. package/domain/users/errors/unauthorized.error.d.ts +4 -5
  151. package/domain/users/errors/user-already-registered.error.d.ts +4 -5
  152. package/domain/users/errors/weak-password.error.d.ts +4 -5
  153. package/domain/users/index.d.ts +5 -5
  154. package/domain/users/models/beauty-profile.d.ts +11 -11
  155. package/domain/users/models/enums/accessory-importances.enum.d.ts +5 -5
  156. package/domain/users/models/enums/area.enum.d.ts +11 -11
  157. package/domain/users/models/enums/beard-problems.enum.d.ts +9 -9
  158. package/domain/users/models/enums/beard-sizes.enum.d.ts +7 -7
  159. package/domain/users/models/enums/beauty-product-importances.enum.d.ts +6 -6
  160. package/domain/users/models/enums/body-problems.enum.d.ts +11 -11
  161. package/domain/users/models/enums/body-shapes.enum.d.ts +7 -7
  162. package/domain/users/models/enums/body-tattoos.enum.d.ts +5 -5
  163. package/domain/users/models/enums/face-skin-oilinesses.enum.d.ts +7 -7
  164. package/domain/users/models/enums/face-skin-problems.enum.d.ts +10 -10
  165. package/domain/users/models/enums/face-skin-tones.enum.d.ts +8 -8
  166. package/domain/users/models/enums/family-incomes.enum.d.ts +8 -8
  167. package/domain/users/models/enums/fragrance-importances.enum.d.ts +5 -5
  168. package/domain/users/models/enums/hair-colors.enum.d.ts +10 -10
  169. package/domain/users/models/enums/hair-problems.enum.d.ts +10 -10
  170. package/domain/users/models/enums/hair-strands.enum.d.ts +8 -8
  171. package/domain/users/models/enums/hair-types.enum.d.ts +7 -7
  172. package/domain/users/models/enums/index.d.ts +20 -20
  173. package/domain/users/models/enums/office-position.enum.d.ts +6 -6
  174. package/domain/users/models/enums/product-spents.enum.d.ts +8 -8
  175. package/domain/users/models/enums/user-type.enum.d.ts +8 -8
  176. package/domain/users/models/index.d.ts +7 -7
  177. package/domain/users/models/lead.d.ts +8 -7
  178. package/domain/users/models/subscription/edition.d.ts +16 -16
  179. package/domain/users/models/subscription/enums/billing-status.enum.d.ts +3 -3
  180. package/domain/users/models/subscription/enums/edition-status.enum.d.ts +4 -4
  181. package/domain/users/models/subscription/enums/index.d.ts +4 -4
  182. package/domain/users/models/subscription/enums/payment-type.enum.d.ts +5 -5
  183. package/domain/users/models/subscription/enums/status.enum.d.ts +4 -4
  184. package/domain/users/models/subscription/index.d.ts +4 -4
  185. package/domain/users/models/subscription/payment.d.ts +13 -13
  186. package/domain/users/models/subscription/subscription.d.ts +28 -28
  187. package/domain/users/models/user-address.d.ts +6 -7
  188. package/domain/users/models/user-payment-method.d.ts +14 -14
  189. package/domain/users/models/user.d.ts +27 -28
  190. package/domain/users/repositories/beauty-profile.repository.d.ts +4 -4
  191. package/domain/users/repositories/edition.repository.d.ts +4 -4
  192. package/domain/users/repositories/index.d.ts +8 -8
  193. package/domain/users/repositories/lead.repository.d.ts +4 -4
  194. package/domain/users/repositories/subscription-payment.repository.d.ts +4 -4
  195. package/domain/users/repositories/subscription.repository.d.ts +4 -4
  196. package/domain/users/repositories/user-address.repository.d.ts +4 -4
  197. package/domain/users/repositories/user-payment-method.repository.d.ts +4 -4
  198. package/domain/users/repositories/user.repository.d.ts +6 -6
  199. package/domain/users/services/authentication.service.d.ts +12 -12
  200. package/domain/users/services/index.d.ts +3 -3
  201. package/domain/users/services/register.service.d.ts +7 -7
  202. package/domain/users/services/types/basic-user-data.type.d.ts +4 -4
  203. package/domain/users/services/types/index.d.ts +1 -1
  204. package/domain/users/use-cases/authentication.d.ts +21 -21
  205. package/domain/users/use-cases/index.d.ts +4 -4
  206. package/domain/users/use-cases/recovery-password.d.ts +6 -6
  207. package/domain/users/use-cases/register.d.ts +13 -13
  208. package/domain/users/use-cases/signout.d.ts +6 -6
  209. package/errors/duplicated-results.error.d.ts +4 -5
  210. package/errors/index.d.ts +4 -4
  211. package/errors/invalid-argument.error.d.ts +4 -5
  212. package/errors/not-found.error.d.ts +4 -5
  213. package/errors/required-argument.error.d.ts +6 -6
  214. package/esm2020/domain/catalog/helpers/index.mjs +2 -0
  215. package/esm2020/domain/catalog/helpers/round-product-price.helper.mjs +15 -0
  216. package/{esm2015/domain/catalog/index.js → esm2020/domain/catalog/index.mjs} +4 -3
  217. package/esm2020/domain/catalog/models/category-base.mjs +18 -0
  218. package/esm2020/domain/catalog/models/category-collection-children.mjs +13 -0
  219. package/esm2020/domain/catalog/models/category-filter.mjs +19 -0
  220. package/esm2020/domain/catalog/models/category-for-product.mjs +7 -0
  221. package/esm2020/domain/catalog/models/category.mjs +14 -0
  222. package/{esm2015/domain/catalog/models/enums/index.js → esm2020/domain/catalog/models/enums/index.mjs} +3 -3
  223. package/{esm2015/domain/catalog/models/enums/product-genders.enum.js → esm2020/domain/catalog/models/enums/product-genders.enum.mjs} +7 -7
  224. package/{esm2015/domain/catalog/models/enums/shops.enum.js → esm2020/domain/catalog/models/enums/shops.enum.mjs} +8 -8
  225. package/esm2020/domain/catalog/models/filter-option.mjs +7 -0
  226. package/esm2020/domain/catalog/models/filter.mjs +7 -0
  227. package/esm2020/domain/catalog/models/index.mjs +12 -0
  228. package/esm2020/domain/catalog/models/kit-product.mjs +18 -0
  229. package/esm2020/domain/catalog/models/product-base.mjs +25 -0
  230. package/esm2020/domain/catalog/models/product-for-category.mjs +14 -0
  231. package/esm2020/domain/catalog/models/product-for-kit.mjs +14 -0
  232. package/esm2020/domain/catalog/models/product.mjs +19 -0
  233. package/{esm2015/domain/catalog/models/types/category-condition.type.js → esm2020/domain/catalog/models/types/category-condition.type.mjs} +2 -2
  234. package/{esm2015/domain/catalog/models/types/category-metadata.type.js → esm2020/domain/catalog/models/types/category-metadata.type.mjs} +2 -2
  235. package/esm2020/domain/catalog/models/types/category-product.mjs +2 -0
  236. package/esm2020/domain/catalog/models/types/index.mjs +12 -0
  237. package/esm2020/domain/catalog/models/types/product-evaluation.type.mjs +2 -0
  238. package/{esm2015/domain/catalog/models/types/product-gender.type.js → esm2020/domain/catalog/models/types/product-gender.type.mjs} +2 -2
  239. package/{esm2015/domain/catalog/models/types/product-metadata.type.js → esm2020/domain/catalog/models/types/product-metadata.type.mjs} +2 -2
  240. package/esm2020/domain/catalog/models/types/product-review.type.mjs +2 -0
  241. package/{esm2015/domain/catalog/models/types/shop-description.type.js → esm2020/domain/catalog/models/types/shop-description.type.mjs} +2 -2
  242. package/{esm2015/domain/catalog/models/types/shop-price.type.js → esm2020/domain/catalog/models/types/shop-price.type.mjs} +2 -2
  243. package/{esm2015/domain/catalog/models/types/stock.type.js → esm2020/domain/catalog/models/types/stock.type.mjs} +2 -2
  244. package/{esm2015/domain/catalog/models/types/variant-grade.type.js → esm2020/domain/catalog/models/types/variant-grade.type.mjs} +2 -2
  245. package/esm2020/domain/catalog/models/variant.mjs +7 -0
  246. package/esm2020/domain/catalog/models/wishlist.mjs +7 -0
  247. package/esm2020/domain/catalog/repositories/category-collection-children.repository.mjs +2 -0
  248. package/esm2020/domain/catalog/repositories/category-filter.repository.mjs +2 -0
  249. package/esm2020/domain/catalog/repositories/category.repository.mjs +2 -0
  250. package/esm2020/domain/catalog/repositories/filter-option.repository.mjs +2 -0
  251. package/esm2020/domain/catalog/repositories/filter.repository.mjs +2 -0
  252. package/esm2020/domain/catalog/repositories/index.mjs +10 -0
  253. package/esm2020/domain/catalog/repositories/product.repository.mjs +2 -0
  254. package/{esm2015/domain/catalog/repositories/subscription-product.repository.js → esm2020/domain/catalog/repositories/subscription-product.repository.mjs} +2 -2
  255. package/{esm2015/domain/catalog/repositories/variant.repository.js → esm2020/domain/catalog/repositories/variant.repository.mjs} +2 -2
  256. package/esm2020/domain/catalog/repositories/wishlist.repository.mjs +2 -0
  257. package/{esm2015/domain/generic/index.js → esm2020/domain/generic/index.mjs} +3 -3
  258. package/esm2020/domain/generic/model/base.model.mjs +24 -0
  259. package/{esm2015/domain/generic/model/identifier-fields.js → esm2020/domain/generic/model/identifier-fields.mjs} +2 -2
  260. package/{esm2015/domain/generic/model/index.js → esm2020/domain/generic/model/index.mjs} +4 -4
  261. package/esm2020/domain/generic/model/types/base-model-builder.type.mjs +2 -0
  262. package/esm2020/domain/generic/model/types/identifier-model.type.mjs +2 -0
  263. package/{esm2015/domain/generic/model/types/index.js → esm2020/domain/generic/model/types/index.mjs} +6 -6
  264. package/esm2020/domain/generic/model/types/model-base-structure.type.mjs +2 -0
  265. package/esm2020/domain/generic/model/types/non-function-properties.type.mjs +2 -0
  266. package/esm2020/domain/generic/model/types/non-function-property-name.type.mjs +2 -0
  267. package/esm2020/domain/generic/repository/create.repository.mjs +2 -0
  268. package/esm2020/domain/generic/repository/crud.repository.mjs +2 -0
  269. package/esm2020/domain/generic/repository/delete.repository.mjs +2 -0
  270. package/{esm2015/domain/generic/repository/enums/index.js → esm2020/domain/generic/repository/enums/index.mjs} +3 -3
  271. package/{esm2015/domain/generic/repository/enums/update-option-actions.enum.js → esm2020/domain/generic/repository/enums/update-option-actions.enum.mjs} +9 -9
  272. package/{esm2015/domain/generic/repository/enums/where.enum.js → esm2020/domain/generic/repository/enums/where.enum.mjs} +16 -16
  273. package/esm2020/domain/generic/repository/find.repository.mjs +2 -0
  274. package/esm2020/domain/generic/repository/get.repository.mjs +2 -0
  275. package/{esm2015/domain/generic/repository/index.js → esm2020/domain/generic/repository/index.mjs} +10 -10
  276. package/esm2020/domain/generic/repository/read.repository.mjs +2 -0
  277. package/{esm2015/domain/generic/repository/types/index.js → esm2020/domain/generic/repository/types/index.mjs} +7 -7
  278. package/esm2020/domain/generic/repository/types/repository-find-filters.type.mjs +2 -0
  279. package/esm2020/domain/generic/repository/types/repository-find-result.type.mjs +2 -0
  280. package/{esm2015/domain/generic/repository/types/repository-limit-options.type.js → esm2020/domain/generic/repository/types/repository-limit-options.type.mjs} +2 -2
  281. package/{esm2015/domain/generic/repository/types/repository-order-by-list.type.js → esm2020/domain/generic/repository/types/repository-order-by-list.type.mjs} +2 -2
  282. package/esm2020/domain/generic/repository/types/repository-update-params.type.mjs +2 -0
  283. package/{esm2015/domain/generic/repository/types/where-options.type.js → esm2020/domain/generic/repository/types/where-options.type.mjs} +2 -2
  284. package/esm2020/domain/generic/repository/update.repository.mjs +2 -0
  285. package/{esm2015/domain/index.js → esm2020/domain/index.mjs} +7 -7
  286. package/{esm2015/domain/location/index.js → esm2020/domain/location/index.mjs} +2 -2
  287. package/esm2020/domain/location/models/address.mjs +7 -0
  288. package/{esm2015/domain/location/models/index.js → esm2020/domain/location/models/index.mjs} +3 -3
  289. package/{esm2015/domain/location/models/types/index.js → esm2020/domain/location/models/types/index.mjs} +4 -4
  290. package/{esm2015/domain/location/models/types/location-bound.type.js → esm2020/domain/location/models/types/location-bound.type.mjs} +2 -2
  291. package/{esm2015/domain/location/models/types/location-geometry.type.js → esm2020/domain/location/models/types/location-geometry.type.mjs} +2 -2
  292. package/{esm2015/domain/location/models/types/location-lat-lng.type.js → esm2020/domain/location/models/types/location-lat-lng.type.mjs} +2 -2
  293. package/{esm2015/domain/shop-settings/enums/filter-type.enum.js → esm2020/domain/shop-settings/enums/filter-type.enum.mjs} +21 -21
  294. package/{esm2015/domain/shop-settings/enums/index.js → esm2020/domain/shop-settings/enums/index.mjs} +3 -3
  295. package/{esm2015/domain/shop-settings/enums/questions-filters.enum.js → esm2020/domain/shop-settings/enums/questions-filters.enum.mjs} +21 -21
  296. package/{esm2015/domain/shop-settings/helpers/beauty-questions.helper.js → esm2020/domain/shop-settings/helpers/beauty-questions.helper.mjs} +47 -46
  297. package/{esm2015/domain/shop-settings/helpers/index.js → esm2020/domain/shop-settings/helpers/index.mjs} +2 -2
  298. package/{esm2015/domain/shop-settings/index.js → esm2020/domain/shop-settings/index.mjs} +5 -5
  299. package/esm2020/domain/shop-settings/models/home.mjs +7 -0
  300. package/{esm2015/domain/shop-settings/models/index.js → esm2020/domain/shop-settings/models/index.mjs} +5 -5
  301. package/{esm2015/domain/shop-settings/models/shop-menu.js → esm2020/domain/shop-settings/models/shop-menu.mjs} +7 -7
  302. package/{esm2015/domain/shop-settings/models/shop-settings.js → esm2020/domain/shop-settings/models/shop-settings.mjs} +7 -7
  303. package/{esm2015/domain/shop-settings/models/types/banner.type.js → esm2020/domain/shop-settings/models/types/banner.type.mjs} +2 -2
  304. package/{esm2015/domain/shop-settings/models/types/benefit.type.js → esm2020/domain/shop-settings/models/types/benefit.type.mjs} +2 -2
  305. package/esm2020/domain/shop-settings/models/types/home-data.type.mjs +2 -0
  306. package/{esm2015/domain/shop-settings/models/types/index.js → esm2020/domain/shop-settings/models/types/index.mjs} +11 -11
  307. package/{esm2015/domain/shop-settings/models/types/menu-nav.type.js → esm2020/domain/shop-settings/models/types/menu-nav.type.mjs} +2 -2
  308. package/{esm2015/domain/shop-settings/models/types/shop-banner.type.js → esm2020/domain/shop-settings/models/types/shop-banner.type.mjs} +2 -2
  309. package/{esm2015/domain/shop-settings/models/types/shop-brands.type.js → esm2020/domain/shop-settings/models/types/shop-brands.type.mjs} +2 -2
  310. package/{esm2015/domain/shop-settings/models/types/shop-carousel.type.js → esm2020/domain/shop-settings/models/types/shop-carousel.type.mjs} +2 -2
  311. package/{esm2015/domain/shop-settings/models/types/shop-collection.type.js → esm2020/domain/shop-settings/models/types/shop-collection.type.mjs} +2 -2
  312. package/{esm2015/domain/shop-settings/models/types/shop-section.type.js → esm2020/domain/shop-settings/models/types/shop-section.type.mjs} +2 -2
  313. package/{esm2015/domain/shop-settings/models/types/sub-menu.type.js → esm2020/domain/shop-settings/models/types/sub-menu.type.mjs} +2 -2
  314. package/{esm2015/domain/shop-settings/repositories/home.repository.js → esm2020/domain/shop-settings/repositories/home.repository.mjs} +2 -2
  315. package/{esm2015/domain/shop-settings/repositories/index.js → esm2020/domain/shop-settings/repositories/index.mjs} +4 -4
  316. package/{esm2015/domain/shop-settings/repositories/shop-menu.repository.js → esm2020/domain/shop-settings/repositories/shop-menu.repository.mjs} +2 -2
  317. package/{esm2015/domain/shop-settings/repositories/shop-settings.repository.js → esm2020/domain/shop-settings/repositories/shop-settings.repository.mjs} +2 -2
  318. package/{esm2015/domain/shopping/index.js → esm2020/domain/shopping/index.mjs} +3 -3
  319. package/esm2020/domain/shopping/models/buy-2-win.mjs +14 -0
  320. package/esm2020/domain/shopping/models/campaign-dashboard.mjs +7 -0
  321. package/esm2020/domain/shopping/models/campaign-hashtag.mjs +7 -0
  322. package/esm2020/domain/shopping/models/checkout.mjs +37 -0
  323. package/esm2020/domain/shopping/models/coupons/coupon.mjs +38 -0
  324. package/{esm2015/domain/shopping/models/coupons/enums/coupon-club-mens.enum.js → esm2020/domain/shopping/models/coupons/enums/coupon-club-mens.enum.mjs} +7 -7
  325. package/{esm2015/domain/shopping/models/coupons/enums/coupon-subtypes.enum.js → esm2020/domain/shopping/models/coupons/enums/coupon-subtypes.enum.mjs} +6 -6
  326. package/{esm2015/domain/shopping/models/coupons/enums/coupon-types.enum.js → esm2020/domain/shopping/models/coupons/enums/coupon-types.enum.mjs} +10 -10
  327. package/{esm2015/domain/shopping/models/coupons/enums/exclusivities.enum.js → esm2020/domain/shopping/models/coupons/enums/exclusivities.enum.mjs} +10 -10
  328. package/{esm2015/domain/shopping/models/coupons/enums/index.js → esm2020/domain/shopping/models/coupons/enums/index.mjs} +4 -4
  329. package/{esm2015/domain/shopping/models/coupons/index.js → esm2020/domain/shopping/models/coupons/index.mjs} +3 -3
  330. package/{esm2015/domain/shopping/models/enums/checkout-types.enum.js → esm2020/domain/shopping/models/enums/checkout-types.enum.mjs} +7 -7
  331. package/{esm2015/domain/shopping/models/enums/index.js → esm2020/domain/shopping/models/enums/index.mjs} +3 -3
  332. package/{esm2015/domain/shopping/models/enums/order-status.enum.js → esm2020/domain/shopping/models/enums/order-status.enum.mjs} +12 -12
  333. package/esm2020/domain/shopping/models/index.mjs +13 -0
  334. package/{esm2015/domain/shopping/models/line-item.js → esm2020/domain/shopping/models/line-item.mjs} +4 -4
  335. package/{esm2015/domain/shopping/models/order.js → esm2020/domain/shopping/models/order.mjs} +11 -11
  336. package/esm2020/domain/shopping/models/payment.mjs +169 -0
  337. package/esm2020/domain/shopping/models/shipping-method.mjs +7 -0
  338. package/esm2020/domain/shopping/models/subscription/checkout.mjs +28 -0
  339. package/{esm2015/domain/shopping/models/subscription/index.js → esm2020/domain/shopping/models/subscription/index.mjs} +3 -3
  340. package/{esm2015/domain/shopping/models/subscription/plan.js → esm2020/domain/shopping/models/subscription/plan.mjs} +7 -7
  341. package/{esm2015/domain/shopping/models/types/index.js → esm2020/domain/shopping/models/types/index.mjs} +8 -8
  342. package/esm2020/domain/shopping/models/types/payment-address.type.mjs +2 -0
  343. package/{esm2015/domain/shopping/models/types/payment-billing.type.js → esm2020/domain/shopping/models/types/payment-billing.type.mjs} +2 -2
  344. package/esm2020/domain/shopping/models/types/payment-card.type.mjs +2 -0
  345. package/esm2020/domain/shopping/models/types/payment-customer.type.mjs +2 -0
  346. package/{esm2015/domain/shopping/models/types/payment-document.type.js → esm2020/domain/shopping/models/types/payment-document.type.mjs} +2 -2
  347. package/{esm2015/domain/shopping/models/types/payment-item.type.js → esm2020/domain/shopping/models/types/payment-item.type.mjs} +2 -2
  348. package/{esm2015/domain/shopping/models/types/payment-shipping.type.js → esm2020/domain/shopping/models/types/payment-shipping.type.mjs} +2 -2
  349. package/{esm2015/domain/shopping/repositories/buy-2-win.repository.js → esm2020/domain/shopping/repositories/buy-2-win.repository.mjs} +2 -2
  350. package/esm2020/domain/shopping/repositories/campaign-dashboard.repository.mjs +2 -0
  351. package/esm2020/domain/shopping/repositories/campaign-hashtag.repository.mjs +2 -0
  352. package/{esm2015/domain/shopping/repositories/checkout.repository.js → esm2020/domain/shopping/repositories/checkout.repository.mjs} +2 -2
  353. package/{esm2015/domain/shopping/repositories/coupon.repository.js → esm2020/domain/shopping/repositories/coupon.repository.mjs} +2 -2
  354. package/esm2020/domain/shopping/repositories/index.mjs +10 -0
  355. package/{esm2015/domain/shopping/repositories/legacy-order.repository.js → esm2020/domain/shopping/repositories/legacy-order.repository.mjs} +2 -2
  356. package/{esm2015/domain/shopping/repositories/order.repository.js → esm2020/domain/shopping/repositories/order.repository.mjs} +2 -2
  357. package/{esm2015/domain/shopping/repositories/payment.repository.js → esm2020/domain/shopping/repositories/payment.repository.mjs} +2 -2
  358. package/{esm2015/domain/shopping/repositories/subscription/checkout.repository.js → esm2020/domain/shopping/repositories/subscription/checkout.repository.mjs} +2 -2
  359. package/{esm2015/domain/shopping/repositories/subscription/index.js → esm2020/domain/shopping/repositories/subscription/index.mjs} +3 -3
  360. package/{esm2015/domain/shopping/repositories/subscription/plan.repository.js → esm2020/domain/shopping/repositories/subscription/plan.repository.mjs} +2 -2
  361. package/{esm2015/domain/users/errors/index.js → esm2020/domain/users/errors/index.mjs} +4 -4
  362. package/{esm2015/domain/users/errors/unauthorized.error.js → esm2020/domain/users/errors/unauthorized.error.mjs} +7 -8
  363. package/{esm2015/domain/users/errors/user-already-registered.error.js → esm2020/domain/users/errors/user-already-registered.error.mjs} +7 -8
  364. package/{esm2015/domain/users/errors/weak-password.error.js → esm2020/domain/users/errors/weak-password.error.mjs} +7 -8
  365. package/{esm2015/domain/users/index.js → esm2020/domain/users/index.mjs} +6 -6
  366. package/esm2020/domain/users/models/beauty-profile.mjs +12 -0
  367. package/{esm2015/domain/users/models/enums/accessory-importances.enum.js → esm2020/domain/users/models/enums/accessory-importances.enum.mjs} +7 -7
  368. package/{esm2015/domain/users/models/enums/area.enum.js → esm2020/domain/users/models/enums/area.enum.mjs} +13 -13
  369. package/{esm2015/domain/users/models/enums/beard-problems.enum.js → esm2020/domain/users/models/enums/beard-problems.enum.mjs} +11 -11
  370. package/{esm2015/domain/users/models/enums/beard-sizes.enum.js → esm2020/domain/users/models/enums/beard-sizes.enum.mjs} +9 -9
  371. package/{esm2015/domain/users/models/enums/beauty-product-importances.enum.js → esm2020/domain/users/models/enums/beauty-product-importances.enum.mjs} +8 -8
  372. package/{esm2015/domain/users/models/enums/body-problems.enum.js → esm2020/domain/users/models/enums/body-problems.enum.mjs} +13 -13
  373. package/{esm2015/domain/users/models/enums/body-shapes.enum.js → esm2020/domain/users/models/enums/body-shapes.enum.mjs} +9 -9
  374. package/{esm2015/domain/users/models/enums/body-tattoos.enum.js → esm2020/domain/users/models/enums/body-tattoos.enum.mjs} +7 -7
  375. package/{esm2015/domain/users/models/enums/face-skin-oilinesses.enum.js → esm2020/domain/users/models/enums/face-skin-oilinesses.enum.mjs} +9 -9
  376. package/{esm2015/domain/users/models/enums/face-skin-problems.enum.js → esm2020/domain/users/models/enums/face-skin-problems.enum.mjs} +12 -12
  377. package/{esm2015/domain/users/models/enums/face-skin-tones.enum.js → esm2020/domain/users/models/enums/face-skin-tones.enum.mjs} +10 -10
  378. package/{esm2015/domain/users/models/enums/family-incomes.enum.js → esm2020/domain/users/models/enums/family-incomes.enum.mjs} +10 -10
  379. package/{esm2015/domain/users/models/enums/fragrance-importances.enum.js → esm2020/domain/users/models/enums/fragrance-importances.enum.mjs} +7 -7
  380. package/{esm2015/domain/users/models/enums/hair-colors.enum.js → esm2020/domain/users/models/enums/hair-colors.enum.mjs} +12 -12
  381. package/{esm2015/domain/users/models/enums/hair-problems.enum.js → esm2020/domain/users/models/enums/hair-problems.enum.mjs} +12 -12
  382. package/{esm2015/domain/users/models/enums/hair-strands.enum.js → esm2020/domain/users/models/enums/hair-strands.enum.mjs} +10 -10
  383. package/{esm2015/domain/users/models/enums/hair-types.enum.js → esm2020/domain/users/models/enums/hair-types.enum.mjs} +9 -9
  384. package/{esm2015/domain/users/models/enums/index.js → esm2020/domain/users/models/enums/index.mjs} +21 -21
  385. package/{esm2015/domain/users/models/enums/office-position.enum.js → esm2020/domain/users/models/enums/office-position.enum.mjs} +8 -8
  386. package/{esm2015/domain/users/models/enums/product-spents.enum.js → esm2020/domain/users/models/enums/product-spents.enum.mjs} +10 -10
  387. package/{esm2015/domain/users/models/enums/user-type.enum.js → esm2020/domain/users/models/enums/user-type.enum.mjs} +10 -10
  388. package/{esm2015/domain/users/models/index.js → esm2020/domain/users/models/index.mjs} +8 -8
  389. package/{esm2015/domain/users/models/lead.js → esm2020/domain/users/models/lead.mjs} +7 -7
  390. package/esm2020/domain/users/models/subscription/edition.mjs +7 -0
  391. package/{esm2015/domain/users/models/subscription/enums/billing-status.enum.js → esm2020/domain/users/models/subscription/enums/billing-status.enum.mjs} +5 -5
  392. package/{esm2015/domain/users/models/subscription/enums/edition-status.enum.js → esm2020/domain/users/models/subscription/enums/edition-status.enum.mjs} +6 -6
  393. package/{esm2015/domain/users/models/subscription/enums/index.js → esm2020/domain/users/models/subscription/enums/index.mjs} +5 -5
  394. package/{esm2015/domain/users/models/subscription/enums/payment-type.enum.js → esm2020/domain/users/models/subscription/enums/payment-type.enum.mjs} +7 -7
  395. package/{esm2015/domain/users/models/subscription/enums/status.enum.js → esm2020/domain/users/models/subscription/enums/status.enum.mjs} +6 -6
  396. package/{esm2015/domain/users/models/subscription/index.js → esm2020/domain/users/models/subscription/index.mjs} +5 -5
  397. package/esm2020/domain/users/models/subscription/payment.mjs +14 -0
  398. package/esm2020/domain/users/models/subscription/subscription.mjs +43 -0
  399. package/{esm2015/domain/users/models/user-address.js → esm2020/domain/users/models/user-address.mjs} +7 -7
  400. package/esm2020/domain/users/models/user-payment-method.mjs +7 -0
  401. package/esm2020/domain/users/models/user.mjs +26 -0
  402. package/{esm2015/domain/users/repositories/beauty-profile.repository.js → esm2020/domain/users/repositories/beauty-profile.repository.mjs} +2 -2
  403. package/{esm2015/domain/users/repositories/edition.repository.js → esm2020/domain/users/repositories/edition.repository.mjs} +2 -2
  404. package/{esm2015/domain/users/repositories/index.js → esm2020/domain/users/repositories/index.mjs} +9 -9
  405. package/{esm2015/domain/users/repositories/lead.repository.js → esm2020/domain/users/repositories/lead.repository.mjs} +2 -2
  406. package/{esm2015/domain/users/repositories/subscription-payment.repository.js → esm2020/domain/users/repositories/subscription-payment.repository.mjs} +2 -2
  407. package/{esm2015/domain/users/repositories/subscription.repository.js → esm2020/domain/users/repositories/subscription.repository.mjs} +2 -2
  408. package/{esm2015/domain/users/repositories/user-address.repository.js → esm2020/domain/users/repositories/user-address.repository.mjs} +2 -2
  409. package/{esm2015/domain/users/repositories/user-payment-method.repository.js → esm2020/domain/users/repositories/user-payment-method.repository.mjs} +2 -2
  410. package/esm2020/domain/users/repositories/user.repository.mjs +2 -0
  411. package/esm2020/domain/users/services/authentication.service.mjs +2 -0
  412. package/{esm2015/domain/users/services/index.js → esm2020/domain/users/services/index.mjs} +4 -4
  413. package/{esm2015/domain/users/services/register.service.js → esm2020/domain/users/services/register.service.mjs} +2 -2
  414. package/{esm2015/domain/users/services/types/basic-user-data.type.js → esm2020/domain/users/services/types/basic-user-data.type.mjs} +2 -2
  415. package/{esm2015/domain/users/services/types/index.js → esm2020/domain/users/services/types/index.mjs} +2 -2
  416. package/esm2020/domain/users/use-cases/authentication.mjs +43 -0
  417. package/{esm2015/domain/users/use-cases/index.js → esm2020/domain/users/use-cases/index.mjs} +5 -5
  418. package/esm2020/domain/users/use-cases/recovery-password.mjs +9 -0
  419. package/esm2020/domain/users/use-cases/register.mjs +38 -0
  420. package/esm2020/domain/users/use-cases/signout.mjs +9 -0
  421. package/{esm2015/errors/duplicated-results.error.js → esm2020/errors/duplicated-results.error.mjs} +7 -8
  422. package/{esm2015/errors/index.js → esm2020/errors/index.mjs} +5 -5
  423. package/{esm2015/errors/invalid-argument.error.js → esm2020/errors/invalid-argument.error.mjs} +7 -8
  424. package/{esm2015/errors/not-found.error.js → esm2020/errors/not-found.error.mjs} +7 -8
  425. package/{esm2015/errors/required-argument.error.js → esm2020/errors/required-argument.error.mjs} +9 -9
  426. package/{esm2015/index.js → esm2020/index.mjs} +6 -6
  427. package/esm2020/infra/elasticsearch/adapters/axios.adapter.mjs +67 -0
  428. package/esm2020/infra/elasticsearch/adapters/elastic-search.adapter.mjs +2 -0
  429. package/{esm2015/infra/elasticsearch/adapters/index.js → esm2020/infra/elasticsearch/adapters/index.mjs} +3 -3
  430. package/{esm2015/infra/elasticsearch/index.js → esm2020/infra/elasticsearch/index.mjs} +4 -4
  431. package/{esm2015/infra/elasticsearch/indexes/index.js → esm2020/infra/elasticsearch/indexes/index.mjs} +2 -2
  432. package/esm2020/infra/elasticsearch/indexes/products-index.mjs +104 -0
  433. package/{esm2015/infra/elasticsearch/types/elastic-search-result.js → esm2020/infra/elasticsearch/types/elastic-search-result.mjs} +2 -2
  434. package/{esm2015/infra/elasticsearch/types/index.js → esm2020/infra/elasticsearch/types/index.mjs} +2 -2
  435. package/esm2020/infra/firebase/auth/authentication-firebase-auth.service.mjs +41 -0
  436. package/{esm2015/infra/firebase/auth/index.js → esm2020/infra/firebase/auth/index.mjs} +3 -3
  437. package/esm2020/infra/firebase/auth/register-firebase-auth.service.mjs +33 -0
  438. package/{esm2015/infra/firebase/auth/types/firebase-user-with-id.type.js → esm2020/infra/firebase/auth/types/firebase-user-with-id.type.mjs} +2 -2
  439. package/{esm2015/infra/firebase/firestore/enums/firestore-field-type.enum.js → esm2020/infra/firebase/firestore/enums/firestore-field-type.enum.mjs} +10 -10
  440. package/{esm2015/infra/firebase/firestore/enums/index.js → esm2020/infra/firebase/firestore/enums/index.mjs} +2 -2
  441. package/{esm2015/infra/firebase/firestore/index.js → esm2020/infra/firebase/firestore/index.mjs} +4 -4
  442. package/{esm2015/infra/firebase/firestore/mixins/index.js → esm2020/infra/firebase/firestore/mixins/index.mjs} +10 -10
  443. package/esm2020/infra/firebase/firestore/mixins/with-create-firestore.mixin.mjs +31 -0
  444. package/esm2020/infra/firebase/firestore/mixins/with-crud-firestore.mixin.mjs +10 -0
  445. package/esm2020/infra/firebase/firestore/mixins/with-delete-firestore.mixin.mjs +18 -0
  446. package/esm2020/infra/firebase/firestore/mixins/with-find-firestore.mixin.mjs +110 -0
  447. package/esm2020/infra/firebase/firestore/mixins/with-firestore.mixin.mjs +80 -0
  448. package/esm2020/infra/firebase/firestore/mixins/with-get-firestore.mixin.mjs +23 -0
  449. package/esm2020/infra/firebase/firestore/mixins/with-helpers.mixin.mjs +17 -0
  450. package/esm2020/infra/firebase/firestore/mixins/with-sub-collection.mixin.mjs +13 -0
  451. package/esm2020/infra/firebase/firestore/mixins/with-update-firestore.mixin.mjs +51 -0
  452. package/esm2020/infra/firebase/firestore/repositories/catalog/category-firestore.repository.mjs +67 -0
  453. package/{esm2015/infra/firebase/firestore/repositories/catalog/index.js → esm2020/infra/firebase/firestore/repositories/catalog/index.mjs} +5 -5
  454. package/esm2020/infra/firebase/firestore/repositories/catalog/product-firestore.repository.mjs +54 -0
  455. package/esm2020/infra/firebase/firestore/repositories/catalog/product-variant-firestore.repository.mjs +16 -0
  456. package/esm2020/infra/firebase/firestore/repositories/catalog/subscription-product-firestore.repository.mjs +14 -0
  457. package/{esm2015/infra/firebase/firestore/repositories/index.js → esm2020/infra/firebase/firestore/repositories/index.mjs} +5 -5
  458. package/esm2020/infra/firebase/firestore/repositories/shop-settings/home-firestore.repository.mjs +60 -0
  459. package/{esm2015/infra/firebase/firestore/repositories/shop-settings/index.js → esm2020/infra/firebase/firestore/repositories/shop-settings/index.mjs} +4 -4
  460. package/esm2020/infra/firebase/firestore/repositories/shop-settings/shop-menu-firestore.repository.mjs +14 -0
  461. package/esm2020/infra/firebase/firestore/repositories/shop-settings/shop-settings-firestore.repository.mjs +14 -0
  462. package/esm2020/infra/firebase/firestore/repositories/shopping/buy-2-win-firestore.repository.mjs +14 -0
  463. package/esm2020/infra/firebase/firestore/repositories/shopping/campaign-dashboard-firestore.repository.mjs +14 -0
  464. package/esm2020/infra/firebase/firestore/repositories/shopping/campaign-hashtag-firestore.repository.mjs +14 -0
  465. package/esm2020/infra/firebase/firestore/repositories/shopping/checkout-firestore.repository.mjs +14 -0
  466. package/esm2020/infra/firebase/firestore/repositories/shopping/checkout-subscription-firestore.repository.mjs +14 -0
  467. package/esm2020/infra/firebase/firestore/repositories/shopping/coupon-firestore.repository.mjs +31 -0
  468. package/esm2020/infra/firebase/firestore/repositories/shopping/index.mjs +11 -0
  469. package/esm2020/infra/firebase/firestore/repositories/shopping/legacy-order-firestore.repository.mjs +11 -0
  470. package/esm2020/infra/firebase/firestore/repositories/shopping/order-firestore.repository.mjs +40 -0
  471. package/esm2020/infra/firebase/firestore/repositories/shopping/payment-firestore.repository.mjs +14 -0
  472. package/esm2020/infra/firebase/firestore/repositories/shopping/subscription-plan-firestore.repository.mjs +14 -0
  473. package/{esm2015/infra/firebase/firestore/repositories/users/index.js → esm2020/infra/firebase/firestore/repositories/users/index.mjs} +9 -9
  474. package/esm2020/infra/firebase/firestore/repositories/users/lead-firestore.repository.mjs +14 -0
  475. package/esm2020/infra/firebase/firestore/repositories/users/subscription-edition-firestore.repository.mjs +16 -0
  476. package/esm2020/infra/firebase/firestore/repositories/users/subscription-firestore.repository.mjs +14 -0
  477. package/esm2020/infra/firebase/firestore/repositories/users/subscription-payment-firestore.repository.mjs +16 -0
  478. package/esm2020/infra/firebase/firestore/repositories/users/user-address-firestore.repository.mjs +16 -0
  479. package/esm2020/infra/firebase/firestore/repositories/users/user-beauty-profile-firestore.repository.mjs +16 -0
  480. package/esm2020/infra/firebase/firestore/repositories/users/user-firestore.repository.mjs +50 -0
  481. package/esm2020/infra/firebase/firestore/repositories/users/user-payment-method-firestore.repository.mjs +16 -0
  482. package/esm2020/infra/firebase/firestore/types/firestore-interceptors.type.mjs +2 -0
  483. package/esm2020/infra/firebase/firestore/types/firestore-sub.repository.type.mjs +2 -0
  484. package/esm2020/infra/firebase/firestore/types/firestore.helpers.type.mjs +2 -0
  485. package/esm2020/infra/firebase/firestore/types/firestore.repository.type.mjs +2 -0
  486. package/esm2020/infra/firebase/firestore/types/index.mjs +5 -0
  487. package/{esm2015/infra/firebase/index.js → esm2020/infra/firebase/index.mjs} +3 -3
  488. package/{esm2015/infra/hasura-graphql/enums/hasura-graphql-column-type.enum.js → esm2020/infra/hasura-graphql/enums/hasura-graphql-column-type.enum.mjs} +13 -13
  489. package/{esm2015/infra/hasura-graphql/enums/hasura-graphql-where.enum.js → esm2020/infra/hasura-graphql/enums/hasura-graphql-where.enum.mjs} +17 -15
  490. package/{esm2015/infra/hasura-graphql/enums/index.js → esm2020/infra/hasura-graphql/enums/index.mjs} +3 -3
  491. package/{esm2015/infra/hasura-graphql/index.js → esm2020/infra/hasura-graphql/index.mjs} +5 -5
  492. package/esm2020/infra/hasura-graphql/mixins/helpers/attribute-option.helper.mjs +35 -0
  493. package/esm2020/infra/hasura-graphql/mixins/helpers/bind-filter-query.helper.mjs +71 -0
  494. package/esm2020/infra/hasura-graphql/mixins/helpers/filter-option.helper.mjs +22 -0
  495. package/esm2020/infra/hasura-graphql/mixins/helpers/graphql-field.helper.mjs +125 -0
  496. package/{esm2015/infra/hasura-graphql/mixins/helpers/index.js → esm2020/infra/hasura-graphql/mixins/helpers/index.mjs} +5 -5
  497. package/{esm2015/infra/hasura-graphql/mixins/index.js → esm2020/infra/hasura-graphql/mixins/index.mjs} +8 -8
  498. package/esm2020/infra/hasura-graphql/mixins/with-create-hasura-graphql.mixin.mjs +39 -0
  499. package/esm2020/infra/hasura-graphql/mixins/with-crud-hasura-graphql.mixin.mjs +10 -0
  500. package/esm2020/infra/hasura-graphql/mixins/with-delete-hasura-graphql.mixin.mjs +31 -0
  501. package/esm2020/infra/hasura-graphql/mixins/with-find-hasura-graphql.mixin.mjs +152 -0
  502. package/esm2020/infra/hasura-graphql/mixins/with-get-hasura-graphql.mixin.mjs +37 -0
  503. package/esm2020/infra/hasura-graphql/mixins/with-hasura-graphql.mixin.mjs +108 -0
  504. package/esm2020/infra/hasura-graphql/mixins/with-update-hasura-graphql.mixin.mjs +62 -0
  505. package/{esm2015/infra/hasura-graphql/models/category-hasura-graphql.js → esm2020/infra/hasura-graphql/models/category-hasura-graphql.mjs} +4 -4
  506. package/{esm2015/infra/hasura-graphql/models/index.js → esm2020/infra/hasura-graphql/models/index.mjs} +5 -5
  507. package/{esm2015/infra/hasura-graphql/models/kit-product-hasura-graphql.js → esm2020/infra/hasura-graphql/models/kit-product-hasura-graphql.mjs} +15 -15
  508. package/esm2020/infra/hasura-graphql/models/product-hasura-graphql.mjs +11 -0
  509. package/{esm2015/infra/hasura-graphql/models/variant-hasura-graphql.js → esm2020/infra/hasura-graphql/models/variant-hasura-graphql.mjs} +9 -9
  510. package/esm2020/infra/hasura-graphql/repositories/catalog/category-collection-children-hasura-graphql.repository.mjs +39 -0
  511. package/esm2020/infra/hasura-graphql/repositories/catalog/category-filter-hasura-graphql.repository.mjs +107 -0
  512. package/esm2020/infra/hasura-graphql/repositories/catalog/category-hasura-graphql.repository.mjs +338 -0
  513. package/esm2020/infra/hasura-graphql/repositories/catalog/filter-hasura-graphql.repository.mjs +105 -0
  514. package/esm2020/infra/hasura-graphql/repositories/catalog/filter-option-hasura-graphql.repository.mjs +22 -0
  515. package/esm2020/infra/hasura-graphql/repositories/catalog/index.mjs +9 -0
  516. package/esm2020/infra/hasura-graphql/repositories/catalog/product-hasura-graphql.repository.mjs +516 -0
  517. package/esm2020/infra/hasura-graphql/repositories/catalog/variant-hasura-graphql.repository.mjs +114 -0
  518. package/esm2020/infra/hasura-graphql/repositories/catalog/wishlist-hasura-graphql.repository.mjs +238 -0
  519. package/{esm2015/infra/hasura-graphql/repositories/index.js → esm2020/infra/hasura-graphql/repositories/index.mjs} +2 -2
  520. package/{esm2015/infra/hasura-graphql/types/fields.type.js → esm2020/infra/hasura-graphql/types/fields.type.mjs} +2 -2
  521. package/esm2020/infra/hasura-graphql/types/graphql.repository.type.mjs +2 -0
  522. package/{esm2015/infra/hasura-graphql/types/hasura-graphql-auth-options.type.js → esm2020/infra/hasura-graphql/types/hasura-graphql-auth-options.type.mjs} +2 -2
  523. package/esm2020/infra/hasura-graphql/types/hasura-graphql-fields.type.mjs +2 -0
  524. package/{esm2015/infra/hasura-graphql/types/hasura-graphql-headers.type.js → esm2020/infra/hasura-graphql/types/hasura-graphql-headers.type.mjs} +2 -2
  525. package/{esm2015/infra/hasura-graphql/types/index.js → esm2020/infra/hasura-graphql/types/index.mjs} +9 -9
  526. package/{esm2015/infra/hasura-graphql/types/nested-field.type.js → esm2020/infra/hasura-graphql/types/nested-field.type.mjs} +2 -2
  527. package/{esm2015/infra/hasura-graphql/types/query-builder-options.type.js → esm2020/infra/hasura-graphql/types/query-builder-options.type.mjs} +2 -2
  528. package/{esm2015/infra/hasura-graphql/types/variable-options.type.js → esm2020/infra/hasura-graphql/types/variable-options.type.mjs} +2 -2
  529. package/{esm2015/infra/index.js → esm2020/infra/index.mjs} +4 -4
  530. package/{esm2015/infrab4a-connect.js → esm2020/infrab4a-connect.mjs} +4 -4
  531. package/esm2020/utils/decorators/debug.class.decorator.mjs +7 -0
  532. package/esm2020/utils/decorators/index.mjs +3 -0
  533. package/esm2020/utils/decorators/trace.method.decorator.mjs +81 -0
  534. package/esm2020/utils/get.mjs +3 -0
  535. package/esm2020/utils/helpers/class-name.helper.mjs +15 -0
  536. package/esm2020/utils/helpers/debug-decorator.helper.mjs +18 -0
  537. package/esm2020/utils/helpers/debug.helper.mjs +150 -0
  538. package/esm2020/utils/helpers/index.mjs +5 -0
  539. package/esm2020/utils/helpers/reflect.helper.mjs +165 -0
  540. package/esm2020/utils/index.mjs +13 -0
  541. package/{esm2015/utils/is-uuid.js → esm2020/utils/is-uuid.mjs} +3 -3
  542. package/esm2020/utils/is.mjs +4 -0
  543. package/esm2020/utils/log.utils.mjs +9 -0
  544. package/{esm2015/utils/mixins/base.mixin.js → esm2020/utils/mixins/base.mixin.mjs} +6 -6
  545. package/{esm2015/utils/mixins/index.js → esm2020/utils/mixins/index.mjs} +4 -4
  546. package/{esm2015/utils/mixins/merge-constructor-params.type.js → esm2020/utils/mixins/merge-constructor-params.type.mjs} +2 -2
  547. package/{esm2015/utils/mixins/mixin-ctor.type.js → esm2020/utils/mixins/mixin-ctor.type.mjs} +2 -2
  548. package/{esm2015/utils/parse-datetime.js → esm2020/utils/parse-datetime.mjs} +14 -14
  549. package/{esm2015/utils/types/array-element.type.js → esm2020/utils/types/array-element.type.mjs} +2 -2
  550. package/{esm2015/utils/types/index.js → esm2020/utils/types/index.mjs} +3 -3
  551. package/{esm2015/utils/types/prop.type.js → esm2020/utils/types/prop.type.mjs} +2 -2
  552. package/fesm2015/{infrab4a-connect.js → infrab4a-connect.mjs} +4789 -3178
  553. package/fesm2015/infrab4a-connect.mjs.map +1 -0
  554. package/fesm2020/infrab4a-connect.mjs +4857 -0
  555. package/fesm2020/infrab4a-connect.mjs.map +1 -0
  556. package/index.d.ts +5 -5
  557. package/infra/elasticsearch/adapters/axios.adapter.d.ts +16 -14
  558. package/infra/elasticsearch/adapters/elastic-search.adapter.d.ts +8 -7
  559. package/infra/elasticsearch/adapters/index.d.ts +2 -2
  560. package/infra/elasticsearch/index.d.ts +3 -3
  561. package/infra/elasticsearch/indexes/index.d.ts +1 -1
  562. package/infra/elasticsearch/indexes/products-index.d.ts +13 -15
  563. package/infra/elasticsearch/types/elastic-search-result.d.ts +9 -7
  564. package/infra/elasticsearch/types/index.d.ts +1 -1
  565. package/infra/firebase/auth/authentication-firebase-auth.service.d.ts +12 -12
  566. package/infra/firebase/auth/index.d.ts +2 -2
  567. package/infra/firebase/auth/register-firebase-auth.service.d.ts +8 -8
  568. package/infra/firebase/auth/types/firebase-user-with-id.type.d.ts +5 -3
  569. package/infra/firebase/firestore/enums/firestore-field-type.enum.d.ts +8 -8
  570. package/infra/firebase/firestore/enums/index.d.ts +1 -1
  571. package/infra/firebase/firestore/index.d.ts +3 -3
  572. package/infra/firebase/firestore/mixins/index.d.ts +9 -9
  573. package/infra/firebase/firestore/mixins/with-create-firestore.mixin.d.ts +4 -4
  574. package/infra/firebase/firestore/mixins/with-crud-firestore.mixin.d.ts +5 -4
  575. package/infra/firebase/firestore/mixins/with-delete-firestore.mixin.d.ts +4 -4
  576. package/infra/firebase/firestore/mixins/with-find-firestore.mixin.d.ts +4 -4
  577. package/infra/firebase/firestore/mixins/with-firestore.mixin.d.ts +13 -4
  578. package/infra/firebase/firestore/mixins/with-get-firestore.mixin.d.ts +4 -4
  579. package/infra/firebase/firestore/mixins/with-helpers.mixin.d.ts +11 -11
  580. package/infra/firebase/firestore/mixins/with-sub-collection.mixin.d.ts +11 -7
  581. package/infra/firebase/firestore/mixins/with-update-firestore.mixin.d.ts +7 -7
  582. package/infra/firebase/firestore/repositories/catalog/category-firestore.repository.d.ts +20 -17
  583. package/infra/firebase/firestore/repositories/catalog/index.d.ts +4 -4
  584. package/infra/firebase/firestore/repositories/catalog/product-firestore.repository.d.ts +12 -11
  585. package/infra/firebase/firestore/repositories/catalog/product-variant-firestore.repository.d.ts +12 -13
  586. package/infra/firebase/firestore/repositories/catalog/subscription-product-firestore.repository.d.ts +7 -8
  587. package/infra/firebase/firestore/repositories/index.d.ts +4 -4
  588. package/infra/firebase/firestore/repositories/shop-settings/home-firestore.repository.d.ts +16 -16
  589. package/infra/firebase/firestore/repositories/shop-settings/index.d.ts +3 -3
  590. package/infra/firebase/firestore/repositories/shop-settings/shop-menu-firestore.repository.d.ts +7 -8
  591. package/infra/firebase/firestore/repositories/shop-settings/shop-settings-firestore.repository.d.ts +7 -8
  592. package/infra/firebase/firestore/repositories/shopping/buy-2-win-firestore.repository.d.ts +7 -8
  593. package/infra/firebase/firestore/repositories/shopping/campaign-dashboard-firestore.repository.d.ts +8 -0
  594. package/infra/firebase/firestore/repositories/shopping/campaign-hashtag-firestore.repository.d.ts +8 -0
  595. package/infra/firebase/firestore/repositories/shopping/checkout-firestore.repository.d.ts +7 -8
  596. package/infra/firebase/firestore/repositories/shopping/checkout-subscription-firestore.repository.d.ts +7 -8
  597. package/infra/firebase/firestore/repositories/shopping/coupon-firestore.repository.d.ts +12 -12
  598. package/infra/firebase/firestore/repositories/shopping/index.d.ts +10 -8
  599. package/infra/firebase/firestore/repositories/shopping/legacy-order-firestore.repository.d.ts +6 -7
  600. package/infra/firebase/firestore/repositories/shopping/order-firestore.repository.d.ts +13 -13
  601. package/infra/firebase/firestore/repositories/shopping/payment-firestore.repository.d.ts +7 -8
  602. package/infra/firebase/firestore/repositories/shopping/subscription-plan-firestore.repository.d.ts +7 -8
  603. package/infra/firebase/firestore/repositories/users/index.d.ts +8 -8
  604. package/infra/firebase/firestore/repositories/users/lead-firestore.repository.d.ts +7 -8
  605. package/infra/firebase/firestore/repositories/users/subscription-edition-firestore.repository.d.ts +12 -13
  606. package/infra/firebase/firestore/repositories/users/subscription-firestore.repository.d.ts +7 -8
  607. package/infra/firebase/firestore/repositories/users/subscription-payment-firestore.repository.d.ts +12 -13
  608. package/infra/firebase/firestore/repositories/users/user-address-firestore.repository.d.ts +12 -13
  609. package/infra/firebase/firestore/repositories/users/user-beauty-profile-firestore.repository.d.ts +12 -13
  610. package/infra/firebase/firestore/repositories/users/user-firestore.repository.d.ts +17 -17
  611. package/infra/firebase/firestore/repositories/users/user-payment-method-firestore.repository.d.ts +12 -13
  612. package/infra/firebase/firestore/types/firestore-interceptors.type.d.ts +14 -0
  613. package/infra/firebase/firestore/types/firestore-sub.repository.type.d.ts +6 -6
  614. package/infra/firebase/firestore/types/firestore.helpers.type.d.ts +8 -8
  615. package/infra/firebase/firestore/types/firestore.repository.type.d.ts +16 -14
  616. package/infra/firebase/firestore/types/index.d.ts +4 -3
  617. package/infra/firebase/index.d.ts +2 -2
  618. package/infra/hasura-graphql/enums/hasura-graphql-column-type.enum.d.ts +11 -11
  619. package/infra/hasura-graphql/enums/hasura-graphql-where.enum.d.ts +15 -13
  620. package/infra/hasura-graphql/enums/index.d.ts +2 -2
  621. package/infra/hasura-graphql/index.d.ts +4 -4
  622. package/infra/hasura-graphql/mixins/helpers/attribute-option.helper.d.ts +19 -13
  623. package/infra/hasura-graphql/mixins/helpers/bind-filter-query.helper.d.ts +10 -10
  624. package/infra/hasura-graphql/mixins/helpers/filter-option.helper.d.ts +8 -6
  625. package/infra/hasura-graphql/mixins/helpers/graphql-field.helper.d.ts +12 -8
  626. package/infra/hasura-graphql/mixins/helpers/index.d.ts +4 -4
  627. package/infra/hasura-graphql/mixins/index.d.ts +7 -7
  628. package/infra/hasura-graphql/mixins/with-create-hasura-graphql.mixin.d.ts +9 -8
  629. package/infra/hasura-graphql/mixins/with-crud-hasura-graphql.mixin.d.ts +11 -11
  630. package/infra/hasura-graphql/mixins/with-delete-hasura-graphql.mixin.d.ts +7 -7
  631. package/infra/hasura-graphql/mixins/with-find-hasura-graphql.mixin.d.ts +34 -25
  632. package/infra/hasura-graphql/mixins/with-get-hasura-graphql.mixin.d.ts +25 -24
  633. package/infra/hasura-graphql/mixins/with-hasura-graphql.mixin.d.ts +23 -11
  634. package/infra/hasura-graphql/mixins/with-update-hasura-graphql.mixin.d.ts +14 -14
  635. package/infra/hasura-graphql/models/category-hasura-graphql.d.ts +6 -6
  636. package/infra/hasura-graphql/models/index.d.ts +4 -4
  637. package/infra/hasura-graphql/models/kit-product-hasura-graphql.d.ts +6 -6
  638. package/infra/hasura-graphql/models/product-hasura-graphql.d.ts +18 -14
  639. package/infra/hasura-graphql/models/variant-hasura-graphql.d.ts +10 -9
  640. package/infra/hasura-graphql/repositories/catalog/category-collection-children-hasura-graphql.repository.d.ts +10 -0
  641. package/infra/hasura-graphql/repositories/catalog/category-filter-hasura-graphql.repository.d.ts +12 -0
  642. package/infra/hasura-graphql/repositories/catalog/category-hasura-graphql.repository.d.ts +34 -27
  643. package/infra/hasura-graphql/repositories/catalog/filter-hasura-graphql.repository.d.ts +18 -0
  644. package/infra/hasura-graphql/repositories/catalog/filter-option-hasura-graphql.repository.d.ts +10 -0
  645. package/infra/hasura-graphql/repositories/catalog/index.d.ts +8 -3
  646. package/infra/hasura-graphql/repositories/catalog/product-hasura-graphql.repository.d.ts +30 -28
  647. package/infra/hasura-graphql/repositories/catalog/variant-hasura-graphql.repository.d.ts +14 -14
  648. package/infra/hasura-graphql/repositories/catalog/wishlist-hasura-graphql.repository.d.ts +27 -0
  649. package/infra/hasura-graphql/repositories/index.d.ts +1 -1
  650. package/infra/hasura-graphql/types/fields.type.d.ts +2 -2
  651. package/infra/hasura-graphql/types/graphql.repository.type.d.ts +24 -21
  652. package/infra/hasura-graphql/types/hasura-graphql-auth-options.type.d.ts +8 -8
  653. package/infra/hasura-graphql/types/hasura-graphql-fields.type.d.ts +44 -40
  654. package/infra/hasura-graphql/types/hasura-graphql-headers.type.d.ts +7 -7
  655. package/infra/hasura-graphql/types/index.d.ts +8 -8
  656. package/infra/hasura-graphql/types/nested-field.type.d.ts +7 -7
  657. package/infra/hasura-graphql/types/query-builder-options.type.d.ts +7 -7
  658. package/infra/hasura-graphql/types/variable-options.type.d.ts +9 -9
  659. package/infra/index.d.ts +3 -3
  660. package/package.json +23 -9
  661. package/utils/decorators/debug.class.decorator.d.ts +2 -0
  662. package/utils/decorators/index.d.ts +2 -0
  663. package/utils/decorators/trace.method.decorator.d.ts +14 -0
  664. package/utils/get.d.ts +1 -0
  665. package/utils/helpers/class-name.helper.d.ts +3 -0
  666. package/utils/helpers/debug-decorator.helper.d.ts +9 -0
  667. package/utils/helpers/debug.helper.d.ts +60 -0
  668. package/utils/helpers/index.d.ts +4 -0
  669. package/utils/helpers/reflect.helper.d.ts +50 -0
  670. package/utils/index.d.ts +13 -7
  671. package/utils/is-uuid.d.ts +1 -1
  672. package/utils/is.d.ts +1 -0
  673. package/utils/log.utils.d.ts +7 -0
  674. package/utils/mixins/base.mixin.d.ts +3 -3
  675. package/utils/mixins/index.d.ts +3 -3
  676. package/utils/mixins/merge-constructor-params.type.d.ts +3 -3
  677. package/utils/mixins/mixin-ctor.type.d.ts +1 -1
  678. package/utils/parse-datetime.d.ts +1 -1
  679. package/utils/types/array-element.type.d.ts +1 -1
  680. package/utils/types/index.d.ts +2 -2
  681. package/utils/types/prop.type.d.ts +1 -1
  682. package/bundles/infrab4a-connect.umd.js +0 -5175
  683. package/bundles/infrab4a-connect.umd.js.map +0 -1
  684. package/domain/catalog/models/types/category-filter.type.d.ts +0 -4
  685. package/esm2015/domain/catalog/models/category.js +0 -10
  686. package/esm2015/domain/catalog/models/index.js +0 -7
  687. package/esm2015/domain/catalog/models/kit-product.js +0 -18
  688. package/esm2015/domain/catalog/models/product.js +0 -17
  689. package/esm2015/domain/catalog/models/types/category-filter.type.js +0 -2
  690. package/esm2015/domain/catalog/models/types/index.js +0 -11
  691. package/esm2015/domain/catalog/models/types/product-review.type.js +0 -2
  692. package/esm2015/domain/catalog/models/variant.js +0 -10
  693. package/esm2015/domain/catalog/repositories/category.repository.js +0 -2
  694. package/esm2015/domain/catalog/repositories/index.js +0 -5
  695. package/esm2015/domain/catalog/repositories/product.repository.js +0 -2
  696. package/esm2015/domain/generic/model/base.model.js +0 -23
  697. package/esm2015/domain/generic/model/types/base-model-builder.type.js +0 -2
  698. package/esm2015/domain/generic/model/types/identifier-model.type.js +0 -2
  699. package/esm2015/domain/generic/model/types/model-base-structure.type.js +0 -2
  700. package/esm2015/domain/generic/model/types/non-function-properties.type.js +0 -2
  701. package/esm2015/domain/generic/model/types/non-function-property-name.type.js +0 -2
  702. package/esm2015/domain/generic/repository/create.repository.js +0 -2
  703. package/esm2015/domain/generic/repository/crud.repository.js +0 -2
  704. package/esm2015/domain/generic/repository/delete.repository.js +0 -2
  705. package/esm2015/domain/generic/repository/find.repository.js +0 -2
  706. package/esm2015/domain/generic/repository/get.repository.js +0 -2
  707. package/esm2015/domain/generic/repository/read.repository.js +0 -2
  708. package/esm2015/domain/generic/repository/types/repository-find-filters.type.js +0 -2
  709. package/esm2015/domain/generic/repository/types/repository-find-result.type.js +0 -2
  710. package/esm2015/domain/generic/repository/types/repository-update-params.type.js +0 -2
  711. package/esm2015/domain/generic/repository/update.repository.js +0 -2
  712. package/esm2015/domain/location/models/address.js +0 -7
  713. package/esm2015/domain/shop-settings/models/home.js +0 -7
  714. package/esm2015/domain/shop-settings/models/types/home-data.type.js +0 -2
  715. package/esm2015/domain/shopping/models/buy-2-win.js +0 -14
  716. package/esm2015/domain/shopping/models/checkout.js +0 -38
  717. package/esm2015/domain/shopping/models/coupons/coupon.js +0 -38
  718. package/esm2015/domain/shopping/models/index.js +0 -12
  719. package/esm2015/domain/shopping/models/payment.js +0 -169
  720. package/esm2015/domain/shopping/models/shipping-method.js +0 -7
  721. package/esm2015/domain/shopping/models/subscription/checkout.js +0 -28
  722. package/esm2015/domain/shopping/models/types/payment-address.type.js +0 -2
  723. package/esm2015/domain/shopping/models/types/payment-card.type.js +0 -2
  724. package/esm2015/domain/shopping/models/types/payment-customer.type.js +0 -2
  725. package/esm2015/domain/shopping/repositories/index.js +0 -8
  726. package/esm2015/domain/users/models/beauty-profile.js +0 -12
  727. package/esm2015/domain/users/models/subscription/edition.js +0 -7
  728. package/esm2015/domain/users/models/subscription/payment.js +0 -14
  729. package/esm2015/domain/users/models/subscription/subscription.js +0 -43
  730. package/esm2015/domain/users/models/user-payment-method.js +0 -7
  731. package/esm2015/domain/users/models/user.js +0 -26
  732. package/esm2015/domain/users/repositories/user.repository.js +0 -2
  733. package/esm2015/domain/users/services/authentication.service.js +0 -2
  734. package/esm2015/domain/users/use-cases/authentication.js +0 -40
  735. package/esm2015/domain/users/use-cases/recovery-password.js +0 -12
  736. package/esm2015/domain/users/use-cases/register.js +0 -34
  737. package/esm2015/domain/users/use-cases/signout.js +0 -12
  738. package/esm2015/infra/elasticsearch/adapters/axios.adapter.js +0 -57
  739. package/esm2015/infra/elasticsearch/adapters/elastic-search.adapter.js +0 -2
  740. package/esm2015/infra/elasticsearch/indexes/products-index.js +0 -93
  741. package/esm2015/infra/firebase/auth/authentication-firebase-auth.service.js +0 -52
  742. package/esm2015/infra/firebase/auth/register-firebase-auth.service.js +0 -26
  743. package/esm2015/infra/firebase/firestore/mixins/with-create-firestore.mixin.js +0 -31
  744. package/esm2015/infra/firebase/firestore/mixins/with-crud-firestore.mixin.js +0 -10
  745. package/esm2015/infra/firebase/firestore/mixins/with-delete-firestore.mixin.js +0 -18
  746. package/esm2015/infra/firebase/firestore/mixins/with-find-firestore.mixin.js +0 -96
  747. package/esm2015/infra/firebase/firestore/mixins/with-firestore.mixin.js +0 -49
  748. package/esm2015/infra/firebase/firestore/mixins/with-get-firestore.mixin.js +0 -24
  749. package/esm2015/infra/firebase/firestore/mixins/with-helpers.mixin.js +0 -17
  750. package/esm2015/infra/firebase/firestore/mixins/with-sub-collection.mixin.js +0 -11
  751. package/esm2015/infra/firebase/firestore/mixins/with-update-firestore.mixin.js +0 -45
  752. package/esm2015/infra/firebase/firestore/repositories/catalog/category-firestore.repository.js +0 -71
  753. package/esm2015/infra/firebase/firestore/repositories/catalog/product-firestore.repository.js +0 -52
  754. package/esm2015/infra/firebase/firestore/repositories/catalog/product-variant-firestore.repository.js +0 -14
  755. package/esm2015/infra/firebase/firestore/repositories/catalog/subscription-product-firestore.repository.js +0 -12
  756. package/esm2015/infra/firebase/firestore/repositories/shop-settings/home-firestore.repository.js +0 -56
  757. package/esm2015/infra/firebase/firestore/repositories/shop-settings/shop-menu-firestore.repository.js +0 -12
  758. package/esm2015/infra/firebase/firestore/repositories/shop-settings/shop-settings-firestore.repository.js +0 -12
  759. package/esm2015/infra/firebase/firestore/repositories/shopping/buy-2-win-firestore.repository.js +0 -12
  760. package/esm2015/infra/firebase/firestore/repositories/shopping/checkout-firestore.repository.js +0 -12
  761. package/esm2015/infra/firebase/firestore/repositories/shopping/checkout-subscription-firestore.repository.js +0 -12
  762. package/esm2015/infra/firebase/firestore/repositories/shopping/coupon-firestore.repository.js +0 -29
  763. package/esm2015/infra/firebase/firestore/repositories/shopping/index.js +0 -9
  764. package/esm2015/infra/firebase/firestore/repositories/shopping/legacy-order-firestore.repository.js +0 -9
  765. package/esm2015/infra/firebase/firestore/repositories/shopping/order-firestore.repository.js +0 -40
  766. package/esm2015/infra/firebase/firestore/repositories/shopping/payment-firestore.repository.js +0 -12
  767. package/esm2015/infra/firebase/firestore/repositories/shopping/subscription-plan-firestore.repository.js +0 -12
  768. package/esm2015/infra/firebase/firestore/repositories/users/lead-firestore.repository.js +0 -12
  769. package/esm2015/infra/firebase/firestore/repositories/users/subscription-edition-firestore.repository.js +0 -14
  770. package/esm2015/infra/firebase/firestore/repositories/users/subscription-firestore.repository.js +0 -12
  771. package/esm2015/infra/firebase/firestore/repositories/users/subscription-payment-firestore.repository.js +0 -14
  772. package/esm2015/infra/firebase/firestore/repositories/users/user-address-firestore.repository.js +0 -14
  773. package/esm2015/infra/firebase/firestore/repositories/users/user-beauty-profile-firestore.repository.js +0 -14
  774. package/esm2015/infra/firebase/firestore/repositories/users/user-firestore.repository.js +0 -68
  775. package/esm2015/infra/firebase/firestore/repositories/users/user-payment-method-firestore.repository.js +0 -14
  776. package/esm2015/infra/firebase/firestore/types/firestore-sub.repository.type.js +0 -2
  777. package/esm2015/infra/firebase/firestore/types/firestore.helpers.type.js +0 -2
  778. package/esm2015/infra/firebase/firestore/types/firestore.repository.type.js +0 -2
  779. package/esm2015/infra/firebase/firestore/types/index.js +0 -4
  780. package/esm2015/infra/hasura-graphql/mixins/helpers/attribute-option.helper.js +0 -31
  781. package/esm2015/infra/hasura-graphql/mixins/helpers/bind-filter-query.helper.js +0 -53
  782. package/esm2015/infra/hasura-graphql/mixins/helpers/filter-option.helper.js +0 -22
  783. package/esm2015/infra/hasura-graphql/mixins/helpers/graphql-field.helper.js +0 -86
  784. package/esm2015/infra/hasura-graphql/mixins/with-create-hasura-graphql.mixin.js +0 -45
  785. package/esm2015/infra/hasura-graphql/mixins/with-crud-hasura-graphql.mixin.js +0 -10
  786. package/esm2015/infra/hasura-graphql/mixins/with-delete-hasura-graphql.mixin.js +0 -29
  787. package/esm2015/infra/hasura-graphql/mixins/with-find-hasura-graphql.mixin.js +0 -45
  788. package/esm2015/infra/hasura-graphql/mixins/with-get-hasura-graphql.mixin.js +0 -35
  789. package/esm2015/infra/hasura-graphql/mixins/with-hasura-graphql.mixin.js +0 -94
  790. package/esm2015/infra/hasura-graphql/mixins/with-update-hasura-graphql.mixin.js +0 -56
  791. package/esm2015/infra/hasura-graphql/models/product-hasura-graphql.js +0 -11
  792. package/esm2015/infra/hasura-graphql/repositories/catalog/category-hasura-graphql.repository.js +0 -241
  793. package/esm2015/infra/hasura-graphql/repositories/catalog/index.js +0 -4
  794. package/esm2015/infra/hasura-graphql/repositories/catalog/product-hasura-graphql.repository.js +0 -462
  795. package/esm2015/infra/hasura-graphql/repositories/catalog/variant-hasura-graphql.repository.js +0 -116
  796. package/esm2015/infra/hasura-graphql/types/graphql.repository.type.js +0 -2
  797. package/esm2015/infra/hasura-graphql/types/hasura-graphql-fields.type.js +0 -2
  798. package/esm2015/utils/index.js +0 -8
  799. package/fesm2015/infrab4a-connect.js.map +0 -1
  800. package/infrab4a-connect.d.ts +0 -5
@@ -1 +0,0 @@
1
- {"version":3,"file":"infrab4a-connect.js","sources":["../../../projects/connect/src/domain/generic/model/base.model.ts","../../../projects/connect/src/domain/generic/repository/enums/where.enum.ts","../../../projects/connect/src/domain/generic/repository/enums/update-option-actions.enum.ts","../../../projects/connect/src/domain/users/models/enums/accessory-importances.enum.ts","../../../projects/connect/src/domain/users/models/enums/area.enum.ts","../../../projects/connect/src/domain/users/models/enums/beard-problems.enum.ts","../../../projects/connect/src/domain/users/models/enums/beard-sizes.enum.ts","../../../projects/connect/src/domain/users/models/enums/beauty-product-importances.enum.ts","../../../projects/connect/src/domain/users/models/enums/body-problems.enum.ts","../../../projects/connect/src/domain/users/models/enums/body-shapes.enum.ts","../../../projects/connect/src/domain/users/models/enums/body-tattoos.enum.ts","../../../projects/connect/src/domain/users/models/enums/face-skin-oilinesses.enum.ts","../../../projects/connect/src/domain/users/models/enums/face-skin-problems.enum.ts","../../../projects/connect/src/domain/users/models/enums/face-skin-tones.enum.ts","../../../projects/connect/src/domain/users/models/enums/family-incomes.enum.ts","../../../projects/connect/src/domain/users/models/enums/fragrance-importances.enum.ts","../../../projects/connect/src/domain/users/models/enums/hair-colors.enum.ts","../../../projects/connect/src/domain/users/models/enums/hair-problems.enum.ts","../../../projects/connect/src/domain/users/models/enums/hair-strands.enum.ts","../../../projects/connect/src/domain/users/models/enums/hair-types.enum.ts","../../../projects/connect/src/domain/users/models/enums/office-position.enum.ts","../../../projects/connect/src/domain/users/models/enums/product-spents.enum.ts","../../../projects/connect/src/domain/users/models/enums/user-type.enum.ts","../../../projects/connect/src/domain/users/models/subscription/enums/billing-status.enum.ts","../../../projects/connect/src/domain/users/models/subscription/enums/edition-status.enum.ts","../../../projects/connect/src/domain/users/models/subscription/enums/payment-type.enum.ts","../../../projects/connect/src/domain/users/models/subscription/enums/status.enum.ts","../../../projects/connect/src/domain/users/models/subscription/edition.ts","../../../projects/connect/src/domain/shopping/models/payment.ts","../../../projects/connect/src/domain/users/models/subscription/payment.ts","../../../projects/connect/src/domain/location/models/address.ts","../../../projects/connect/src/utils/mixins/base.mixin.ts","../../../projects/connect/src/utils/is-uuid.ts","../../../projects/connect/src/utils/parse-datetime.ts","../../../projects/connect/src/domain/shopping/models/enums/checkout-types.enum.ts","../../../projects/connect/src/domain/shopping/models/coupons/enums/coupon-types.enum.ts","../../../projects/connect/src/domain/shopping/models/coupons/enums/coupon-subtypes.enum.ts","../../../projects/connect/src/domain/shopping/models/coupons/enums/exclusivities.enum.ts","../../../projects/connect/src/domain/shopping/models/coupons/coupon.ts","../../../projects/connect/src/domain/shopping/models/subscription/plan.ts","../../../projects/connect/src/domain/users/models/beauty-profile.ts","../../../projects/connect/src/domain/users/models/user.ts","../../../projects/connect/src/domain/users/models/subscription/subscription.ts","../../../projects/connect/src/domain/users/models/user-address.ts","../../../projects/connect/src/domain/users/models/user-payment-method.ts","../../../projects/connect/src/domain/users/models/lead.ts","../../../projects/connect/src/domain/users/errors/unauthorized.error.ts","../../../projects/connect/src/domain/users/use-cases/authentication.ts","../../../projects/connect/src/domain/users/errors/user-already-registered.error.ts","../../../projects/connect/src/domain/users/errors/weak-password.error.ts","../../../projects/connect/src/domain/users/use-cases/register.ts","../../../projects/connect/src/domain/users/use-cases/signout.ts","../../../projects/connect/src/domain/users/use-cases/recovery-password.ts","../../../projects/connect/src/domain/catalog/models/category.ts","../../../projects/connect/src/domain/catalog/models/enums/product-genders.enum.ts","../../../projects/connect/src/domain/catalog/models/enums/shops.enum.ts","../../../projects/connect/src/domain/catalog/models/product.ts","../../../projects/connect/src/domain/catalog/models/kit-product.ts","../../../projects/connect/src/domain/catalog/models/variant.ts","../../../projects/connect/src/domain/shopping/models/enums/order-status.enum.ts","../../../projects/connect/src/domain/shopping/models/line-item.ts","../../../projects/connect/src/domain/shopping/models/shipping-method.ts","../../../projects/connect/src/domain/shopping/models/checkout.ts","../../../projects/connect/src/domain/shopping/models/order.ts","../../../projects/connect/src/domain/shopping/models/subscription/checkout.ts","../../../projects/connect/src/domain/shopping/models/buy-2-win.ts","../../../projects/connect/src/domain/shop-settings/enums/filter-type.enum.ts","../../../projects/connect/src/domain/shop-settings/enums/questions-filters.enum.ts","../../../projects/connect/src/domain/shop-settings/helpers/beauty-questions.helper.ts","../../../projects/connect/src/domain/shop-settings/models/home.ts","../../../projects/connect/src/domain/shop-settings/models/shop-menu.ts","../../../projects/connect/src/domain/shop-settings/models/shop-settings.ts","../../../projects/connect/src/errors/invalid-argument.error.ts","../../../projects/connect/src/errors/required-argument.error.ts","../../../projects/connect/src/errors/not-found.error.ts","../../../projects/connect/src/errors/duplicated-results.error.ts","../../../projects/connect/src/infra/elasticsearch/adapters/axios.adapter.ts","../../../projects/connect/src/infra/elasticsearch/indexes/products-index.ts","../../../projects/connect/src/infra/firebase/firestore/mixins/with-firestore.mixin.ts","../../../projects/connect/src/infra/firebase/firestore/mixins/with-helpers.mixin.ts","../../../projects/connect/src/infra/firebase/firestore/mixins/with-get-firestore.mixin.ts","../../../projects/connect/src/infra/firebase/firestore/enums/firestore-field-type.enum.ts","../../../projects/connect/src/infra/firebase/firestore/mixins/with-find-firestore.mixin.ts","../../../projects/connect/src/infra/firebase/firestore/mixins/with-create-firestore.mixin.ts","../../../projects/connect/src/infra/firebase/firestore/mixins/with-update-firestore.mixin.ts","../../../projects/connect/src/infra/firebase/firestore/mixins/with-delete-firestore.mixin.ts","../../../projects/connect/src/infra/firebase/firestore/mixins/with-sub-collection.mixin.ts","../../../projects/connect/src/infra/firebase/firestore/mixins/with-crud-firestore.mixin.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/users/lead-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/users/subscription-edition-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/users/subscription-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/users/subscription-payment-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/users/user-address-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/users/user-beauty-profile-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/users/user-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/users/user-payment-method-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/catalog/category-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/catalog/product-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/catalog/product-variant-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/catalog/subscription-product-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/shopping/checkout-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/shopping/coupon-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/shopping/order-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/shopping/payment-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/shopping/checkout-subscription-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/shopping/subscription-plan-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/shopping/buy-2-win-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/shopping/legacy-order-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/shop-settings/home-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/shop-settings/shop-menu-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/shop-settings/shop-settings-firestore.repository.ts","../../../projects/connect/src/infra/firebase/auth/authentication-firebase-auth.service.ts","../../../projects/connect/src/infra/firebase/auth/register-firebase-auth.service.ts","../../../projects/connect/src/infra/hasura-graphql/mixins/helpers/attribute-option.helper.ts","../../../projects/connect/src/infra/hasura-graphql/enums/hasura-graphql-where.enum.ts","../../../projects/connect/src/infra/hasura-graphql/enums/hasura-graphql-column-type.enum.ts","../../../projects/connect/src/infra/hasura-graphql/mixins/helpers/filter-option.helper.ts","../../../projects/connect/src/infra/hasura-graphql/mixins/helpers/bind-filter-query.helper.ts","../../../projects/connect/src/infra/hasura-graphql/mixins/helpers/graphql-field.helper.ts","../../../projects/connect/src/infra/hasura-graphql/mixins/with-create-hasura-graphql.mixin.ts","../../../projects/connect/src/infra/hasura-graphql/mixins/with-delete-hasura-graphql.mixin.ts","../../../projects/connect/src/infra/hasura-graphql/mixins/with-hasura-graphql.mixin.ts","../../../projects/connect/src/infra/hasura-graphql/mixins/with-update-hasura-graphql.mixin.ts","../../../projects/connect/src/infra/hasura-graphql/mixins/with-get-hasura-graphql.mixin.ts","../../../projects/connect/src/infra/hasura-graphql/mixins/with-find-hasura-graphql.mixin.ts","../../../projects/connect/src/infra/hasura-graphql/mixins/with-crud-hasura-graphql.mixin.ts","../../../projects/connect/src/infra/hasura-graphql/models/category-hasura-graphql.ts","../../../projects/connect/src/infra/hasura-graphql/models/product-hasura-graphql.ts","../../../projects/connect/src/infra/hasura-graphql/models/kit-product-hasura-graphql.ts","../../../projects/connect/src/infra/hasura-graphql/models/variant-hasura-graphql.ts","../../../projects/connect/src/infra/hasura-graphql/repositories/catalog/category-hasura-graphql.repository.ts","../../../projects/connect/src/infra/hasura-graphql/repositories/catalog/product-hasura-graphql.repository.ts","../../../projects/connect/src/infra/hasura-graphql/repositories/catalog/variant-hasura-graphql.repository.ts","../../../projects/connect/src/infrab4a-connect.ts"],"sourcesContent":["import { instanceToPlain, plainToInstance } from 'class-transformer'\r\n\r\nimport {\r\n BaseModelBuilder,\r\n ModelBaseStructure,\r\n NonFunctionAndIdentifierProperties,\r\n NonFunctionProperties,\r\n} from './types'\r\n\r\nexport type GenericIdentifier<T = 'id'> = T\r\n\r\nexport class BaseModel<Model, Identifiers = GenericIdentifier> implements ModelBaseStructure<Model, Identifiers> {\r\n get identifier(): NonFunctionAndIdentifierProperties<Model> {\r\n const fields = (this.constructor as BaseModelBuilder<Model>).identifiersFields.filter(\r\n (field) => field !== 'identifier',\r\n )\r\n\r\n return fields.reduce(\r\n (object, field) => ({ ...object, [field]: this[field as string] }),\r\n {} as NonFunctionAndIdentifierProperties<Model>,\r\n )\r\n }\r\n\r\n get identifiersFields(): Identifiers[] {\r\n return (this.constructor as BaseModelBuilder<Model, Identifiers>).identifiersFields\r\n }\r\n\r\n constructor(args?: Partial<Model>) {\r\n Object.assign(this, args)\r\n }\r\n\r\n static toInstance<T extends ModelBaseStructure>(this: new () => T, data?: Partial<NonFunctionProperties<T>>): T {\r\n return plainToInstance(this, data || {})\r\n }\r\n\r\n static isModel<T extends ModelBaseStructure>(this: new () => T, value: any): value is T {\r\n return value instanceof this\r\n }\r\n\r\n toPlain(): any {\r\n return instanceToPlain(this)\r\n }\r\n}\r\n","export enum Where {\r\n EQUALS = '==',\r\n NOTEQUALS = '!=',\r\n GT = '>',\r\n GTE = '>=',\r\n IN = 'in',\r\n NOTIN = 'not in',\r\n LT = '<',\r\n LTE = '<=',\r\n LIKE = 'like',\r\n NOTLIKE = 'not like',\r\n ISNULL = 'is null',\r\n ISNOTNULL = 'is not null',\r\n}\r\n","export enum UpdateOptionActions {\r\n UPDATE = 'update',\r\n MERGE = 'merge',\r\n REMOVE = 'remove',\r\n REMOVE_FIELD = 'removeField',\r\n NULL = 'null',\r\n}\r\n","export enum AccessoryImportances {\r\n NOT_INTERESTED = 'Não tenho interesse',\r\n LIKE_RARELY_USE = 'Gosto, mas uso poucos',\r\n LIKE_ALWAYS_FOLLOW_FASHION = 'Gosto muito de acessórios e sempre procuro acompanhar a moda',\r\n}\r\n","export enum Area {\r\n GP = 'Geral',\r\n CRM = 'CRM',\r\n MediaProd = 'Media Production',\r\n Tech = 'Tecnologia',\r\n Transactional = 'Transacional',\r\n Operations = 'Opera\\u00E7\\u00F5es',\r\n Sales = 'Comercial',\r\n Finantial = 'Financeiro',\r\n HR = 'RH',\r\n}\r\n","export enum BeardProblems {\r\n NO_PROBLEMS = 'Sem problemas',\r\n DRY = 'Barba Seca',\r\n OILY = 'Barba Oleaosa',\r\n DANCRUFF = 'Barba com Caspa',\r\n INGROWN_HAIRS = 'Pêlos Encravados',\r\n DOESNT_GROW = 'Não Cresce',\r\n SPARSE_BEARD = 'Barba Rala',\r\n}\r\n","export enum BeardSizes {\r\n BIG = 'Grande',\r\n MEDIUM = 'Média',\r\n SHORT = 'Curta',\r\n MUSTACHE = 'Bigode',\r\n NOTHING = 'Sem Barba',\r\n}\r\n","export enum BeautyProductImportances {\r\n KNOW_LITTLE_ABOUT = 'Conheço bem pouco de produtos de beleza e rotinas de cuidados',\r\n ALREADY_BOUGHT_NOTHING_SPECIALIZED = 'Já comprei alguns produtos básicos para cuidar de mim, mas nada muito especializado',\r\n GOOD_CARE_MYSELF = 'Me considero um homem que se cuida bem. Conheço sobre produtos especializados e me preocupo em ter uma rotina de cuidados',\r\n PERSONAL_CARE_EXPERT = 'Sou um expert em cuidados pessoais',\r\n}\r\n","export enum BodyProblems {\r\n NO_WORRIES = 'Sem preocupações',\r\n FLACCIDITY = 'Flacidez',\r\n LOCALIZED_FAT = 'Gordura Localizada',\r\n STRETCH_MARKS = 'Estrias',\r\n SENSITIVE_SKIN = 'Pele Sensível',\r\n DRY_SKIN = 'Pele Seca',\r\n OILY_ACNE = 'Oleosa/Acne',\r\n SKIN_FRECKLES = 'Pele com Sardas',\r\n PHOTOSENSITIVE_SKIN = 'Pele Fotossensível',\r\n}\r\n","export enum BodyShapes {\r\n LEAN = 'Magro',\r\n REGULAR = 'Regular',\r\n OVERWEIGHT = 'Acima do Peso',\r\n ATHLETIC = 'Atlético',\r\n MUSCULAR = 'Musculoso',\r\n}\r\n","export enum BodyTattoos {\r\n NONE = 'Nenhuma',\r\n HAS_DOESNT_CARE = 'Tenho mas não cuido',\r\n HAS_CARE_LOT = 'Tenho e cuido bastante',\r\n}\r\n","export enum FaceSkinOilinesses {\r\n DRY = 'Seca',\r\n OILY = 'Oleaosa',\r\n MIXED = 'Mista',\r\n NORMAL = 'Normal',\r\n DONT_KNOW = 'Eu não sei como dizer',\r\n}\r\n","export enum FaceSkinProblems {\r\n NO_PROBLEMS = 'Sem problemas',\r\n DARK_CIRCLES = 'Olheiras',\r\n WRINKLES = 'Rugas',\r\n BLACKHEADS_PIMPLES = 'Cravos e Espinhas',\r\n STAINS = 'Manchas',\r\n FRECKLES = 'Sardas',\r\n SENSITIVE = 'Sensível',\r\n PHOTOSENSITIVE = 'Fotossensível',\r\n}\r\n","export enum FaceSkinTones {\r\n VERY_CLEAR = 'Muito Clara',\r\n CLEAR = 'Clara',\r\n MEDIUM_LIGHT = 'Clara Média',\r\n MEDIUM_DARK = 'Escura Média',\r\n DARK = 'Escura',\r\n VERY_DARK = 'Muito Escura',\r\n}\r\n","export enum FamilyIncomes {\r\n UNTIL_3000 = 'Até R$3.000',\r\n SINCE_3001_TO_7000 = 'De R$3.001 a R$7.000',\r\n SINCE_7001_TO_10000 = 'De R$7.001 a R$10.000',\r\n SINCE_10001_TO_15000 = 'De R$10.001 a R$15.000',\r\n GRAN_THAN_15000 = 'Mais de R$15.000',\r\n NOW_ANSWER = 'Prefiro nao responder',\r\n}\r\n","export enum FragranceImportances {\r\n NOT_INTERESTED = 'Não tenho interesse',\r\n LIKE_ALWAYS_USE_SAME = 'Gosto de perfumes, mas uso sempre os mesmos',\r\n LIKE_INNOVATE = 'Gosto de inovar e conhecer novas fragrâncias',\r\n}\r\n","export enum HairColors {\r\n BLACK = 'Preto',\r\n DARK_BROWN = 'Castanho Escuro',\r\n LIGHT_BROWN = 'Castanho Claro',\r\n DARK_BLONDE = 'Loiro Escuro',\r\n LIGHT_BLONDE = 'Loiro Claro',\r\n WHITE_GRAY = 'Branco/Grisalho',\r\n REDHEAD = 'Ruivo',\r\n OTHER = 'RuiOutroo',\r\n}\r\n","export enum HairProblems {\r\n NO_PROBLEMS = 'Sem problemas',\r\n DANCRUFF = 'Caspa',\r\n LOSS = 'Queda',\r\n OILY = 'Oleosidade',\r\n DRYNESS = 'Ressecamento',\r\n CHEMICAL = 'Quimica',\r\n WHITE_HAIR = 'Cabelos Brancos',\r\n REBEL_WIRES = 'Fios Rebeldes',\r\n}\r\n","export enum HairStrands {\r\n NORMAL = 'Fio Normal',\r\n DRY = 'Fio Seco',\r\n OILY = 'Fio Oleoso',\r\n MIXED = 'Fio Misto',\r\n FINE = 'Fio Fino',\r\n THICK = 'Fio Grosso',\r\n}\r\n","export enum HairTypes {\r\n Smooth = 'Liso',\r\n WAVY = 'Ondulado',\r\n CURLY = 'Cacheado',\r\n FRIZZY = 'Crespo',\r\n BALD = 'Sou careca',\r\n}\r\n","export enum OfficePosition {\r\n Intern = 'Estagi\\u00E1rio',\r\n Analyst = 'Analista',\r\n Manager = 'Gerente',\r\n Director = 'Diretor',\r\n}\r\n","export enum ProductSpents {\r\n UNTIL_50 = 'Até R$50',\r\n SINCE_51_TO_100 = 'De R$51 a R$100',\r\n SINCE_101_TO_200 = 'De R$101 a R$200',\r\n SINCE_201_TO_300 = 'De R$201 a R$300',\r\n GRAN_THAN_300 = 'Mais de R$300',\r\n NOW_ANSWER = 'Prefiro nao responder',\r\n}\r\n","export enum UserType {\r\n B2C = 'Cliente Transacional',\r\n GlamGirl = 'Glamgirl',\r\n MensBoy = 'Mensboy',\r\n B2B = 'Company',\r\n Collaborator = 'Funcionário',\r\n Influencer = 'Influencer',\r\n}\r\n","export enum BillingStatus {\r\n PAYED = 'PAGO',\r\n}\r\n","export enum EditionStatus {\r\n ALLOCATION_WAITING = 'Aguardando alocação',\r\n SHIPPED = 'Enviado',\r\n}\r\n","export enum PaymentType {\r\n AQUISITION = 'Aquisição',\r\n RENEWAL = 'Renovação',\r\n FREIGHT = 'mudança de endereço, Frete',\r\n}\r\n","export enum Status {\r\n ACTIVE = 'active',\r\n CANCELLED = 'Cancelado',\r\n}\r\n","import { BaseModel, GenericIdentifier } from '../../../generic/model/base.model'\r\n\r\nimport { EditionStatus, BillingStatus } from './enums'\r\n\r\nexport type EditionIdentifiers = 'id' | 'subscriptionId'\r\n\r\nexport class Edition extends BaseModel<Edition, EditionIdentifiers> {\r\n id: string\r\n subscriptionId: string\r\n billingStatus: BillingStatus\r\n editionId: number\r\n editionStatus: EditionStatus\r\n installment: number\r\n paymentId: string\r\n draftId?: string\r\n createdAt: Date\r\n updatedAt: Date\r\n\r\n static get identifiersFields(): EditionIdentifiers[] {\r\n return ['id', 'subscriptionId']\r\n }\r\n}\r\n","import { Expose } from 'class-transformer'\r\n\r\nimport { BaseModel, GenericIdentifier } from '../../generic/model/base.model'\r\n\r\nimport { PaymentBilling, PaymentCard, PaymentCustomer, PaymentItem, PaymentShipping } from './types'\r\n\r\nexport class Payment extends BaseModel<Payment> {\r\n id: number\r\n object: string\r\n status: string\r\n tid: number\r\n nsu: number\r\n amount: number\r\n cost: number\r\n installments: number\r\n referer: string\r\n ip: string\r\n phone: string\r\n address: string\r\n metadata: any\r\n device: string\r\n payment: string\r\n addition: string\r\n discount: string\r\n customer: PaymentCustomer\r\n billing: PaymentBilling\r\n shipping: PaymentShipping\r\n items: PaymentItem[]\r\n card: PaymentCard\r\n\r\n @Expose({ name: 'refuse_reason' })\r\n refuseReason: string\r\n @Expose({ name: 'status_reason' })\r\n statusReason: string\r\n @Expose({ name: 'acquirer_response_code' })\r\n acquirerResponseCode: string\r\n @Expose({ name: 'acquirer_name' })\r\n acquirerName: string\r\n @Expose({ name: 'acquirer_id' })\r\n acquirerId: string\r\n @Expose({ name: 'authorization_code' })\r\n authorizationCode: string\r\n @Expose({ name: 'soft_descriptor' })\r\n softDescriptor: string\r\n @Expose({ name: 'date_created' })\r\n dateCreated: string\r\n @Expose({ name: 'date_updated' })\r\n dateUpdated: string\r\n @Expose({ name: 'authorized_amount' })\r\n authorizedAmount: number\r\n @Expose({ name: 'paid_amount' })\r\n paidAmount: number\r\n @Expose({ name: 'refunded_amount' })\r\n refundedAmount: number\r\n @Expose({ name: 'card_holder_name' })\r\n cardHolderName: string\r\n @Expose({ name: 'card_last_digits' })\r\n cardLastDigits: string\r\n @Expose({ name: 'card_first_digits' })\r\n cardFirstDigits: string\r\n @Expose({ name: 'card_brand' })\r\n cardBrand: string\r\n @Expose({ name: 'card_pin_mode' })\r\n cardPinMode: string\r\n @Expose({ name: 'card_magstripe_fallback' })\r\n cardMagstripeFallback: boolean\r\n @Expose({ name: 'cvm_pin' })\r\n cvmPin: boolean\r\n @Expose({ name: 'postback_url' })\r\n postbackUrl: string\r\n @Expose({ name: 'payment_method' })\r\n paymentMethod: string\r\n @Expose({ name: 'capture_method' })\r\n captureMethod: string\r\n @Expose({ name: 'antifraud_score' })\r\n antifraudScore: string\r\n @Expose({ name: 'boleto_url' })\r\n boletoUrl: string\r\n @Expose({ name: 'boleto_barcode' })\r\n boletoBarcode: string\r\n @Expose({ name: 'boleto_expiration_date' })\r\n boletoExpirationDate: string\r\n @Expose({ name: 'subscription_id' })\r\n subscriptionId: string\r\n @Expose({ name: 'split_rules' })\r\n splitRules: string\r\n @Expose({ name: 'antifraud_metadata' })\r\n antifraudMetadata: any\r\n @Expose({ name: 'reference_key' })\r\n referenceKey: string\r\n @Expose({ name: 'local_transaction_id' })\r\n localTransactionId: string\r\n @Expose({ name: 'local_time' })\r\n localTime: string\r\n @Expose({ name: 'fraud_covered' })\r\n fraudCovered: boolean\r\n @Expose({ name: 'fraud_reimbursed' })\r\n fraudReimbursed: string\r\n @Expose({ name: 'order_id' })\r\n orderId: string\r\n @Expose({ name: 'risk_level' })\r\n riskLevel: string\r\n @Expose({ name: 'receipt_url' })\r\n receiptUrl: string\r\n @Expose({ name: 'private_label' })\r\n privateLabel: string\r\n @Expose({ name: 'pix_qr_code' })\r\n pixQrCode: string\r\n @Expose({ name: 'pix_expiration_date' })\r\n pixExpirationDate: string\r\n\r\n static get identifiersFields(): GenericIdentifier[] {\r\n return ['id']\r\n }\r\n}\r\n","import { Type } from 'class-transformer'\r\n\r\nimport { BaseModel, GenericIdentifier } from '../../../generic/model/base.model'\r\nimport { Payment } from '../../../shopping/models/payment'\r\n\r\nimport { PaymentType } from './enums/payment-type.enum'\r\n\r\nexport type SubscriptionPaymentIdentifiers = 'id' | 'subscriptionId'\r\n\r\nexport class SubscriptionPayment extends BaseModel<SubscriptionPayment, SubscriptionPaymentIdentifiers> {\r\n id: string\r\n subscriptionId: string\r\n paymentType: PaymentType\r\n createdAt: Date\r\n attempts?: number\r\n\r\n @Type(() => Payment)\r\n payment: Payment\r\n\r\n static get identifiersFields(): SubscriptionPaymentIdentifiers[] {\r\n return ['id', 'subscriptionId']\r\n }\r\n}\r\n","import { BaseModel, GenericIdentifier } from '../../generic/model/base.model'\r\n\r\nimport { LocationGeometry } from './types/location-geometry.type'\r\n\r\nexport abstract class Address<Identifiers = GenericIdentifier> extends BaseModel<Address, Identifiers> {\r\n default?: boolean\r\n recipient?: string\r\n zip?: string\r\n street?: string\r\n number?: string\r\n extension?: string\r\n district?: string\r\n city?: string\r\n regionalPole?: string\r\n region?: string\r\n state?: string\r\n country?: string\r\n mailbox?: boolean\r\n mailboxNumber?: string\r\n formattedAddress?: string\r\n placeId?: string\r\n geometry?: LocationGeometry\r\n\r\n static get identifiersFields(): string[] {\r\n return ['id']\r\n }\r\n}\r\n","export class Base {\r\n constructor(...args: Array<any>) {\r\n Object.assign(this, ...args)\r\n }\r\n}\r\n","import { isString } from 'lodash'\r\n\r\nexport const isUUID = (value: string): boolean =>\r\n isString(value) && /[0-9a-fA-F]{8}\\-[0-9a-fA-F]{4}\\-[0-9a-fA-F]{4}\\-[0-9a-fA-F]{4}\\-[0-9a-fA-F]{12}/.test(value)\r\n","import { isString } from 'lodash'\r\nimport { parseISO } from 'date-fns'\r\n\r\nexport const parseDateTime = (value: string): string | Date => {\r\n if (!isString(value)) return value\r\n if (\r\n !/^\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$/.test(value) &&\r\n !/^\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])T\\d{2}:\\d{2}:\\d{2}/.test(value)\r\n )\r\n return value\r\n\r\n const date = parseISO(value)\r\n\r\n if (isNaN(date.getTime())) return value\r\n\r\n return date\r\n}\r\n","export enum CheckoutTypes {\r\n ECOMMERCE = 1,\r\n SUBSCRIPTION = 2,\r\n ALL = 3,\r\n}\r\n","export enum CouponTypes {\r\n ABSOLUTE = 1,\r\n PERCENTAGE = 2,\r\n // FINANCIAL = 1,\r\n // PRODUCT,\r\n // GIFTCARD,\r\n // VOUCHER,\r\n}\r\n","export enum CouponSubtypes {\r\n ABSOLUTE = 1,\r\n PERCENTAGE = 2,\r\n}\r\n","export enum Exclusivities {\r\n ALL_USERS = 1,\r\n SPECIFIC_USER = 2,\r\n COLLABORATORS = 3,\r\n ACTIVE_SUBSCRIBER = 4,\r\n INACTIVE_SUBSCRIBER = 5,\r\n NON_SUBSCRIBER = 6,\r\n}\r\n","import { Expose } from 'class-transformer'\r\n\r\nimport { isNil } from '../../../../utils'\r\nimport { Shops } from '../../../catalog/models/enums/shops.enum'\r\nimport { BaseModel, GenericIdentifier } from '../../../generic/model/base.model'\r\nimport { CheckoutTypes } from '../enums/checkout-types.enum'\r\n\r\nimport { CouponTypes, Exclusivities } from './enums'\r\nimport { ClubeDaMensPlan } from './enums/coupon-club-mens.enum'\r\n\r\nconst COUPON_EXPIRATION = +1000 * 60 * 60 * 24 * 30\r\n\r\nexport class Coupon extends BaseModel<Coupon> {\r\n id: string\r\n type: CouponTypes\r\n discount?: number\r\n user?: string\r\n userExclusiveEmail?: string\r\n campaign?: string\r\n nickname: string\r\n beginAt: Date\r\n expiresIn?: Date\r\n useLimit?: number\r\n useLimitPerUser?: boolean\r\n shopAvailability: Shops\r\n personId?: number\r\n influencerEmail?: string\r\n plan?: ClubeDaMensPlan\r\n productsCategories: string[]\r\n minSubTotalValue?: number\r\n active?: Boolean\r\n createdAt: Date\r\n updatedAt?: Date\r\n\r\n @Expose({ name: 'checkout_type' })\r\n checkoutType: CheckoutTypes\r\n\r\n @Expose({ name: 'exclusivity_type' })\r\n exclusivityType?: Exclusivities\r\n\r\n get isInfluencer(): boolean {\r\n return !isNil(this.influencerEmail)\r\n }\r\n\r\n static get identifiersFields(): GenericIdentifier[] {\r\n return ['id']\r\n }\r\n\r\n static createCoupon(userId: string): Coupon {\r\n return this.toInstance({\r\n nickname: `${Date.now()}`,\r\n type: CouponTypes.ABSOLUTE,\r\n checkoutType: CheckoutTypes.ECOMMERCE,\r\n discount: 30,\r\n user: userId,\r\n useLimit: 1,\r\n useLimitPerUser: true,\r\n createdAt: new Date(Date.now()),\r\n beginAt: new Date(Date.now()),\r\n expiresIn: new Date(Date.now() + COUPON_EXPIRATION),\r\n })\r\n }\r\n}\r\n","import { BaseModel, GenericIdentifier } from '../../../generic/model/base.model'\r\n\r\nexport class SubscriptionPlan extends BaseModel<SubscriptionPlan> {\r\n id: string\r\n name: string\r\n billingPrice: number\r\n recurrencePrice: number\r\n recurrenceCycle: number\r\n maxAttempts: number\r\n\r\n static get identifiersFields(): GenericIdentifier[] {\r\n return ['id']\r\n }\r\n}\r\n","import { BaseModel, GenericIdentifier } from '../../generic/model/base.model'\r\n\r\nimport { BeardSizes, HairTypes } from './enums'\r\n\r\nexport type BeautyProfileIdentifiers = 'id' | 'userId'\r\n\r\nexport class BeautyProfile extends BaseModel<BeautyProfile, BeautyProfileIdentifiers> {\r\n id: string\r\n userId: string\r\n beardSize?: BeardSizes\r\n hairType?: HairTypes\r\n\r\n toPlain(): any {\r\n const plain = super.toPlain()\r\n\r\n delete plain.id\r\n\r\n return plain\r\n }\r\n\r\n static get identifiersFields(): BeautyProfileIdentifiers[] {\r\n return ['id', 'userId']\r\n }\r\n}\r\n","import { Type } from 'class-transformer'\r\n\r\nimport { BaseModel, GenericIdentifier } from '../../generic/model/base.model'\r\nimport { isNil } from '../../../utils'\r\nimport { NonFunctionProperties, ModelBaseStructure } from '../../generic/model/types'\r\n\r\nimport { Area, OfficePosition, UserType } from './enums'\r\nimport { BeautyProfile } from './beauty-profile'\r\n\r\nexport class User extends BaseModel<User> {\r\n id: string\r\n cpf?: string\r\n email: string\r\n firstName?: string\r\n lastName?: string\r\n displayName?: string\r\n phone?: string\r\n birthday?: Date\r\n acceptsNewsletter?: boolean\r\n type?: UserType\r\n area?: Area\r\n officePosition?: OfficePosition\r\n isSubscriber?: boolean\r\n subscriptionPlan?: string\r\n badgeId?: number\r\n badgeMultiplier?: number\r\n dateCreated?: Date\r\n dateModified?: Date\r\n\r\n @Type(() => BeautyProfile)\r\n beautyProfile?: BeautyProfile\r\n\r\n static toInstance<T extends ModelBaseStructure<User>>(\r\n this: new () => T,\r\n data?: Partial<NonFunctionProperties<User>>,\r\n ): T {\r\n const instance = super.toInstance(data) as User\r\n\r\n if (!isNil(data.firstName))\r\n instance.displayName = `${data.firstName}${!isNil(data.lastName) ? ` ${data.lastName}` : ''}`\r\n\r\n return instance as any\r\n }\r\n\r\n toPlain(): any {\r\n const plain = super.toPlain()\r\n\r\n delete plain.beautyProfile\r\n\r\n return plain\r\n }\r\n\r\n static get identifiersFields(): GenericIdentifier[] {\r\n return ['id']\r\n }\r\n}\r\n","import { Type } from 'class-transformer'\r\n\r\nimport { Address } from '../../../location/models/address'\r\nimport { BaseModel, GenericIdentifier } from '../../../generic/model/base.model'\r\nimport { Coupon } from '../../../shopping/models/coupons/coupon'\r\nimport { SubscriptionPlan } from '../../../shopping/models/subscription/plan'\r\nimport { User } from '../user'\r\n\r\nimport { Edition } from './edition'\r\nimport { Status } from './enums/status.enum'\r\nimport { SubscriptionPayment } from './payment'\r\n\r\nexport class Subscription extends BaseModel<Subscription> {\r\n id: string\r\n nextPayment: Date\r\n recurrence: boolean\r\n status: Status\r\n cardToken: string\r\n subtotalPrice?: number\r\n discount?: number\r\n totalPrice?: number\r\n createdAt: Date\r\n updatedAt: Date\r\n\r\n @Type(() => User)\r\n user: User\r\n @Type(() => SubscriptionPlan)\r\n subscriptionPlan: SubscriptionPlan\r\n @Type(() => Address)\r\n shippingAddress: Address\r\n @Type(() => Address)\r\n billingAddress?: Address\r\n @Type(() => Coupon)\r\n coupon?: Coupon\r\n @Type(() => Edition)\r\n editions: Edition[]\r\n @Type(() => SubscriptionPayment)\r\n payment?: SubscriptionPayment[]\r\n\r\n static get identifiersFields(): GenericIdentifier[] {\r\n return ['id']\r\n }\r\n}\r\n","import { Address } from '../../location/models/address'\r\n\r\nexport type UserAddressIdentifiers = 'id' | 'userId'\r\n\r\nexport class UserAddress extends Address<UserAddressIdentifiers> {\r\n id: string\r\n userId: string\r\n\r\n static get identifiersFields(): UserAddressIdentifiers[] {\r\n return ['id', 'userId']\r\n }\r\n}\r\n","import { BaseModel, GenericIdentifier } from '../../generic/model/base.model'\r\n\r\nexport type UserPaymentIdentifiers = 'id' | 'userId'\r\n\r\nexport class UserPaymentMethod extends BaseModel<UserPaymentMethod, UserPaymentIdentifiers> {\r\n brand: string\r\n cpf: string\r\n holderName: string\r\n last4: string\r\n pagarmeToken: string\r\n validUntil: string\r\n userId: string\r\n id: string\r\n fingerprint: string\r\n\r\n static get identifiersFields(): UserPaymentIdentifiers[] {\r\n return ['id', 'userId']\r\n }\r\n}\r\n","import { BaseModel, GenericIdentifier } from '../../generic/model/base.model'\r\n\r\nexport class Lead extends BaseModel<Lead> {\r\n id: string\r\n acceptsNewsletter: boolean\r\n email: string\r\n\r\n static get identifiersFields(): GenericIdentifier[] {\r\n return ['id']\r\n }\r\n}\r\n","import { CustomError } from 'ts-custom-error'\r\n\r\nexport class UnauthorizedError extends CustomError {\r\n constructor(readonly message) {\r\n super(message)\r\n }\r\n}\r\n","import { Area, OfficePosition, User, UserType } from '../models'\r\nimport { AuthenticationService } from '../services/authentication.service'\r\nimport { isNil } from '../../../utils'\r\nimport { UnauthorizedError } from '../errors/unauthorized.error'\r\nimport { UserRepository } from '../repositories/user.repository'\r\n\r\nexport enum SignInMethods {\r\n EMAIL_PASSWORD = 'email_password',\r\n GOOGLE = 'google',\r\n}\r\n\r\ntype SignInMethod = Lowercase<keyof typeof SignInMethods>\r\n\r\ntype SignInParams = {\r\n email?: string\r\n password?: string\r\n}\r\n\r\nexport class Authentication {\r\n constructor(private readonly authService: AuthenticationService, private readonly userRepository: UserRepository) {}\r\n\r\n async signIn({ email, password }: SignInParams, signInMethod: SignInMethod): Promise<User> {\r\n const method = this.getServiceByMethod(signInMethod)\r\n const userAuth = await this.authService[method]({ email, password })\r\n const user = this.userRepository.get(userAuth)\r\n\r\n if (!isNil(user)) return user\r\n if (/^.+@b4a.com.br$/.test(userAuth.email)) return this.createsUserByCredential(userAuth)\r\n\r\n throw new UnauthorizedError('Invalid credentials')\r\n }\r\n\r\n private getServiceByMethod(signInMethod: SignInMethod): string {\r\n return signInMethod === SignInMethods.EMAIL_PASSWORD ? 'signInWithEmailAndPassword' : 'signInWithGoogle'\r\n }\r\n\r\n private async createsUserByCredential(user: Partial<User>): Promise<User> {\r\n const [firstName, lastName] = user.displayName?.split(/\\s/)\r\n const person = User.toInstance({\r\n ...user,\r\n cpf: '',\r\n birthday: new Date(),\r\n firstName,\r\n lastName,\r\n acceptsNewsletter: false,\r\n area: Area.Transactional,\r\n officePosition: OfficePosition.Intern,\r\n type: UserType.Collaborator,\r\n })\r\n\r\n return this.userRepository.create(person)\r\n }\r\n}\r\n","import { CustomError } from 'ts-custom-error'\r\n\r\nexport class UserAlreadyRegisteredError extends CustomError {\r\n constructor(readonly message) {\r\n super(message)\r\n }\r\n}\r\n","import { CustomError } from 'ts-custom-error'\r\n\r\nexport class WeakPasswordError extends CustomError {\r\n constructor(readonly message = 'Weak password') {\r\n super(message)\r\n }\r\n}\r\n","import { User, UserType } from '../models'\r\nimport { RegisterService } from '../services/register.service'\r\nimport { UserAlreadyRegisteredError } from '../errors'\r\nimport { UserRepository } from '../repositories/user.repository'\r\n\r\ntype RegisterParams = Partial<User> & { password: string }\r\n\r\nexport class Register {\r\n constructor(private readonly registerService: RegisterService, private readonly userRepository: UserRepository) {}\r\n\r\n async register(params: RegisterParams): Promise<User> {\r\n const email = params.email.toLocaleLowerCase()\r\n const displayName = `${params.firstName} ${params.lastName}`\r\n\r\n if (await this.userRepository.checkIfExistsByField('cpf', params.cpf))\r\n throw new UserAlreadyRegisteredError(`Usuário com CPF ${params.cpf} já registrado.`)\r\n if (await this.userRepository.checkIfExistsByField('email', params.email))\r\n throw new UserAlreadyRegisteredError(`Usuário com e-mail ${params.email} já registrado.`)\r\n\r\n const auth = await this.registerService.register({\r\n birthday: params.birthday,\r\n email,\r\n firstName: params.firstName,\r\n lastName: params.lastName,\r\n cpf: params.cpf,\r\n displayName,\r\n phone: params.phone,\r\n password: params.password,\r\n })\r\n\r\n delete params.password\r\n\r\n const user = await this.userRepository.create({\r\n ...params,\r\n id: auth.id,\r\n email,\r\n displayName,\r\n type: UserType.B2C,\r\n dateCreated: new Date(),\r\n dateModified: new Date(),\r\n })\r\n\r\n return user\r\n }\r\n}\r\n","import { AuthenticationService } from '../services/authentication.service'\r\n\r\nexport class SignOut {\r\n constructor(private readonly authService: AuthenticationService) {}\r\n\r\n async signOut(): Promise<void> {\r\n await this.authService.signOut()\r\n }\r\n}\r\n","import { AuthenticationService } from '../services/authentication.service'\r\n\r\nexport class RecoveryPassword {\r\n constructor(private readonly authService: AuthenticationService) {}\r\n\r\n async sendEmail(email: string): Promise<void> {\r\n await this.authService.sendPasswordResetEmail(email)\r\n }\r\n}\r\n","import { BaseModel, GenericIdentifier, NonFunctionPropertyNames } from '../../generic/model'\r\nimport { Shops } from './enums'\r\n\r\nimport { CategoryCondition, CategoryFilter, CategoryMetadata } from './types'\r\n\r\nexport class Category extends BaseModel<Category> {\r\n id: string\r\n brandCategory: boolean\r\n brandLogo?: string\r\n name: string\r\n slug: string\r\n image?: string\r\n brandCategoryBanner?: string\r\n brandCategoryBannerMobile?: string\r\n description: string\r\n conditions?: CategoryCondition\r\n products?: string[]\r\n filters?: CategoryFilter[]\r\n createdAt?: Date\r\n updatedAt?: Date\r\n shop: Shops\r\n published: boolean\r\n metadata: CategoryMetadata\r\n\r\n identifierFields(): NonFunctionPropertyNames<Category>[] {\r\n return ['id']\r\n }\r\n\r\n static get identifiersFields(): GenericIdentifier[] {\r\n return ['id']\r\n }\r\n}\r\n","export enum GenderDestination {\r\n FEMALE = 'female',\r\n MALE = 'male',\r\n UNISEX = 'unisex',\r\n}\r\n","export enum Shops {\r\n MENSMARKET = `mensmarket`,\r\n GLAMSHOP = 'Glamshop',\r\n GLAMPOINTS = 'Glampoints',\r\n ALL = 'ALL'\r\n}\r\n","import { Type } from 'class-transformer'\r\nimport { BaseModel, GenericIdentifier, NonFunctionPropertyNames } from '../../generic/model'\r\n\r\nimport { KitProduct } from './kit-product'\r\nimport { ProductGender, ProductMetadata, ProductReview, ShopDescription, ShopPrice, Stock } from './types'\r\nimport { Variant } from './variant'\r\n\r\nexport class Product extends BaseModel<Product> {\r\n id: string\r\n name: string\r\n slug: string\r\n description: ShopDescription\r\n sku: string\r\n price: ShopPrice\r\n hasVariants: boolean\r\n NCM: string\r\n EAN: string\r\n CEST: string\r\n weight: number\r\n stock: Stock\r\n costPrice: number\r\n images?: string[]\r\n miniatures?: string[]\r\n published: boolean\r\n createdAt?: Date\r\n updatedAt?: Date\r\n brand: string\r\n tags?: string[]\r\n type?: string\r\n categories?: string[]\r\n reviews?: ProductReview[]\r\n variant?: Variant\r\n video?: string\r\n isKit?: boolean\r\n rate?: number\r\n gender?: ProductGender\r\n shoppingCount?: number\r\n metadata: ProductMetadata\r\n\r\n @Type(() => KitProduct)\r\n kitProducts?: KitProduct[]\r\n\r\n identifierFields(): NonFunctionPropertyNames<Product>[] {\r\n return ['id']\r\n }\r\n\r\n static get identifiersFields(): GenericIdentifier[] {\r\n return ['id']\r\n }\r\n}\r\n","import { Type } from 'class-transformer'\r\n\r\nimport { BaseModel } from '../../generic/model'\r\n\r\nimport { Product } from './product'\r\n\r\ntype KitProductIdentifiers = 'productId' | 'kitProducId'\r\n\r\nexport class KitProduct extends BaseModel<KitProduct, KitProductIdentifiers> {\r\n productId: string\r\n kitProductId: string\r\n quantity: number\r\n\r\n @Type(() => Product)\r\n kit: Product\r\n\r\n @Type(() => Product)\r\n product: Product\r\n\r\n static get identifiersFields(): KitProductIdentifiers[] {\r\n return ['productId', 'kitProducId']\r\n }\r\n}\r\n","import { BaseModel, NonFunctionPropertyNames } from '../../generic/model'\r\n\r\nimport { ShopPrice, Stock, VariantGrade } from './types'\r\n\r\nexport type ProductVariantIdentifiers = 'id' | 'productId'\r\n\r\nexport class Variant extends BaseModel<Variant, ProductVariantIdentifiers> {\r\n id: string\r\n productId: string\r\n sku: string\r\n price: ShopPrice\r\n EAN: string\r\n stock: Stock\r\n grade?: VariantGrade[]\r\n costPrice: number\r\n weight: number\r\n createdAt?: Date\r\n updatedAt?: Date\r\n\r\n identifierFields(): NonFunctionPropertyNames<Variant>[] {\r\n return ['id']\r\n }\r\n\r\n static get identifiersFields(): ProductVariantIdentifiers[] {\r\n return ['id', 'productId']\r\n }\r\n}\r\n","export enum OrderStatus {\r\n AGUARDANDO_PAGAMENTO = 'Aguardando pagamento',\r\n EM_PREPARO = 'Preparando pedido',\r\n NF_EMITIDA = 'Nota Fiscal Emitida',\r\n AGUARDANDO_ENVIO = 'Aguardando Transaportadora',\r\n ENVIADO = 'Enviado',\r\n ENTREGUE = 'Entregue',\r\n CANCELADO = 'Cancelado',\r\n CREDIT_CARD = 'credit_card',\r\n}\r\n","import { Product } from '../../catalog/models/product'\r\n\r\nexport class LineItem extends Product {\r\n parentId?: string\r\n quantity: number\r\n isGift?: boolean\r\n pricePaid?: number\r\n image?: string\r\n}\r\n","import { BaseModel, GenericIdentifier } from '../../generic/model/base.model'\r\n\r\nexport class ShippingMethod extends BaseModel<ShippingMethod> {\r\n id: string\r\n CNPJ: string\r\n DaysToDelivery: number\r\n MaxGrams: number\r\n MinGrams: number\r\n ServiceCompanyRangeId: number\r\n ShippingCompanyId: number\r\n ShippingCompanyName: string\r\n ShippingPrice: number\r\n State: string\r\n ZipEnd: number\r\n ZipStart: number\r\n\r\n static get identifiersFields(): GenericIdentifier[] {\r\n return ['id']\r\n }\r\n}\r\n","import { Type } from 'class-transformer'\r\n\r\nimport { Address } from '../../location/models/address'\r\nimport { BaseModel, GenericIdentifier } from '../../generic/model/base.model'\r\nimport { User } from '../../users/models/user'\r\n\r\nimport { Coupon } from './coupons/coupon'\r\nimport { LineItem } from './line-item'\r\nimport { ShippingMethod } from './shipping-method'\r\nimport { Shops } from '../../catalog/models/enums/shops.enum'\r\n\r\nexport class Checkout extends BaseModel<Checkout> {\r\n id?: string\r\n paymentId?: string\r\n status?: string\r\n createdAt?: Date\r\n updatedAt?: Date\r\n completedAt?: Date\r\n discount?: number\r\n subTotalPrice?: number\r\n totalPrice?: number\r\n shop: Shops\r\n glampoints?: number\r\n\r\n @Type(() => LineItem)\r\n lineItems?: LineItem[]\r\n @Type(() => User)\r\n user?: User\r\n @Type(() => Address)\r\n shippingAddress?: Address\r\n @Type(() => Address)\r\n billingAddress?: Address\r\n @Type(() => ShippingMethod)\r\n shipping?: ShippingMethod\r\n @Type(() => Coupon)\r\n coupon?: Coupon\r\n\r\n static get identifiersFields(): GenericIdentifier[] {\r\n return ['id']\r\n }\r\n}\r\n","import { Type } from 'class-transformer'\r\n\r\nimport { Checkout } from './checkout'\r\nimport { OrderStatus } from './enums/order-status.enum'\r\nimport { Payment } from './payment'\r\n\r\nexport class Order extends Checkout {\r\n status: OrderStatus\r\n trackingCode?: string\r\n trackingUrl?: string\r\n\r\n @Type(() => Payment)\r\n payment: Payment\r\n}\r\n","import { Type } from 'class-transformer'\r\n\r\nimport { Address } from '../../../location/models/address'\r\nimport { BaseModel, GenericIdentifier } from '../../../generic/model/base.model'\r\nimport { Coupon } from '../coupons/coupon'\r\nimport { User } from '../../../users/models/user'\r\n\r\nimport { SubscriptionPlan } from './plan'\r\n\r\nexport class CheckoutSubscription extends BaseModel<CheckoutSubscription> {\r\n id?: string\r\n user: User\r\n createdAt: Date\r\n updatedAt: Date\r\n completedAt?: Date\r\n userId?: string\r\n discount?: number\r\n subTotalPrice?: number\r\n totalPrice?: number\r\n\r\n @Type(() => Address)\r\n shippingAddress: Address\r\n @Type(() => Address)\r\n billingAddress?: Address\r\n @Type(() => SubscriptionPlan)\r\n subscriptionPlan: SubscriptionPlan\r\n @Type(() => Coupon)\r\n coupon?: Coupon\r\n\r\n static get identifiersFields(): GenericIdentifier[] {\r\n return ['id']\r\n }\r\n}\r\n","import { Type } from 'class-transformer'\r\n\r\nimport { BaseModel, GenericIdentifier } from '../../generic/model/base.model'\r\nimport { Shops, Category } from '../../catalog/models'\r\n\r\nexport class Buy2Win extends BaseModel<Buy2Win> {\r\n active: boolean\r\n cartValue: number\r\n createdAt: Date\r\n endDate: Date\r\n id?: string\r\n name: string\r\n products?: string[]\r\n shop: Shops\r\n startDate: Date\r\n updatedAt?: Date\r\n\r\n @Type(() => Category)\r\n categories: Category[]\r\n\r\n static get identifiersFields(): GenericIdentifier[] {\r\n return ['id']\r\n }\r\n}\r\n","export enum FilterType {\r\n ACCESSORY_IMPORTANCE = 'accessoryImportance',\r\n BEARD_PROBLEMS = 'beardProblems',\r\n BEARD_SIZE = 'beardSize',\r\n BEAUTY_PRODUCT_IMPORTANCE = 'beautyProductImportance',\r\n BODY_PROBLEMS = 'bodyProblems',\r\n BODY_SHAPE = 'bodyShape',\r\n BODY_TATTOOS = 'bodyTattoos',\r\n FACE_SKIN_OILINESS = 'faceSkinOiliness',\r\n FACE_SKIN_PROBLEMS = 'faceSkinProblems',\r\n FACE_SKIN_TONE = 'faceSkinTone',\r\n FAMILY_INCOME = 'familyIncome',\r\n FRAGRANCE_IMPORTANCE = 'fragranceImportance',\r\n HAIR_COLOR = 'hairColor',\r\n HAIR_PROBLEMS = 'hairProblems',\r\n HAIR_STRANDS = 'hairStrands',\r\n HAIR_TYPE = 'hairType',\r\n PRODUCT_SPENT = 'productSpent',\r\n}\r\n","export enum QuestionsFilters {\r\n ACCESSORY_IMPORTANCE = 'Você gosta de usar acessórios masculinos?',\r\n BEARD_PROBLEMS = 'Quais problemas de barba você tem?',\r\n BEARD_SIZE = 'Quais caracteristicas se aplicam à sua BARBA/BIGODE?',\r\n BEAUTY_PRODUCT_IMPORTANCE = 'O que descreve melhor a sua relação com produtos de beleza e cuidados pessoais?',\r\n BODY_PROBLEMS = 'Qual ou quais preocupações você tem com a pele do seu corpo?',\r\n BODY_SHAPE = 'Qual e seu tipo de CORPO?',\r\n BODY_TATTOOS = 'Você tem alguma tatuagem?',\r\n FACE_SKIN_OILINESS = 'Quais caracteristicas se aplicam à pele do seu ROSTO?',\r\n FACE_SKIN_PROBLEMS = 'Quais problemas a pele do seu rosto tem?',\r\n FACE_SKIN_TONE = 'Qual seu tom de pele?',\r\n FAMILY_INCOME = 'Qual a sua renda familiar mensal (considerando a renda de todas as pessoas que moram com você)?',\r\n FRAGRANCE_IMPORTANCE = 'O quanto você gosta de experimentar perfumes?',\r\n HAIR_COLOR = 'Seu cabelo é naturalmente de qual COR?',\r\n HAIR_PROBLEMS = 'Qual ou quais problemas/característica de cabelo te preocupam?',\r\n HAIR_STRANDS = 'Como são seus fios?',\r\n HAIR_TYPE = 'Como é o seu cabelo?',\r\n PRODUCT_SPENT = 'Qual é o seu nivel de gasto mensal em produtos de beleza e cuidados pessoais?',\r\n}\r\n","import * as Answers from '../../users/models/enums'\r\nimport { FilterType, QuestionsFilters } from '../enums'\r\n\r\ntype FilterAnswers = {\r\n [key: string]: string\r\n}\r\n\r\nexport class BeautyQuestionsHelper {\r\n static getAnswers(filter: FilterType): FilterAnswers {\r\n switch (filter) {\r\n case FilterType.ACCESSORY_IMPORTANCE:\r\n return Answers.AccessoryImportances\r\n case FilterType.BEARD_PROBLEMS:\r\n return Answers.BeardProblems\r\n case FilterType.BEARD_SIZE:\r\n return Answers.BeardSizes\r\n case FilterType.BEAUTY_PRODUCT_IMPORTANCE:\r\n return Answers.BeautyProductImportances\r\n case FilterType.BODY_PROBLEMS:\r\n return Answers.BodyProblems\r\n case FilterType.BODY_SHAPE:\r\n return Answers.BodyShapes\r\n case FilterType.BODY_TATTOOS:\r\n return Answers.BodyTattoos\r\n case FilterType.FACE_SKIN_OILINESS:\r\n return Answers.FaceSkinOilinesses\r\n case FilterType.FACE_SKIN_PROBLEMS:\r\n return Answers.FaceSkinProblems\r\n case FilterType.FACE_SKIN_TONE:\r\n return Answers.FaceSkinTones\r\n case FilterType.FAMILY_INCOME:\r\n return Answers.FamilyIncomes\r\n case FilterType.FRAGRANCE_IMPORTANCE:\r\n return Answers.FragranceImportances\r\n case FilterType.HAIR_COLOR:\r\n return Answers.HairColors\r\n case FilterType.HAIR_PROBLEMS:\r\n return Answers.HairProblems\r\n case FilterType.HAIR_STRANDS:\r\n return Answers.HairStrands\r\n case FilterType.HAIR_TYPE:\r\n return Answers.HairTypes\r\n case FilterType.PRODUCT_SPENT:\r\n return Answers.ProductSpents\r\n }\r\n }\r\n\r\n static getQuestions(filter: FilterType): string {\r\n return QuestionsFilters[filter]\r\n }\r\n}\r\n","import { BaseModel, GenericIdentifier } from '../../generic/model'\r\nimport { Banner, Benefit, HomeDataStructure } from './types'\r\n\r\nexport class Home extends BaseModel<Home> {\r\n benefitsSection: Benefit[]\r\n blockBanners: Banner[]\r\n blogBanner: Banner\r\n brandsCarousel: Banner[]\r\n buyToWinBanner: Banner\r\n discoverCategories: string[]\r\n featuredCampaignBanner: Banner\r\n featuredCategories: string[]\r\n heroCarousel: Banner[]\r\n verticalCarousels: string[]\r\n id: string\r\n data: HomeDataStructure\r\n minValueForFreeShipping: number\r\n\r\n static get identifiersFields(): GenericIdentifier[] {\r\n return ['id']\r\n }\r\n}\r\n","import { BaseModel, GenericIdentifier } from '../../generic/model'\r\nimport { MenuNav } from './types/menu-nav.type'\r\n\r\nexport class ShopMenu extends BaseModel<ShopMenu> {\r\n menuNav: MenuNav[]\r\n id: string\r\n\r\n static get identifiersFields(): GenericIdentifier[] {\r\n return ['id']\r\n }\r\n}\r\n","import { BaseModel, GenericIdentifier } from '../../generic/model'\r\nimport { ShopBanner, ShopBrands, ShopCarousel, ShopCollection } from './types'\r\n\r\nexport class ShopSettings extends BaseModel<ShopSettings> {\r\n id: string\r\n name: string\r\n shop: string\r\n sections: (ShopBanner | ShopCarousel | ShopCollection | ShopBrands)[]\r\n\r\n static get identifiersFields(): GenericIdentifier[] {\r\n return ['id']\r\n }\r\n}\r\n","import { CustomError } from 'ts-custom-error'\r\n\r\nexport class InvalidArgumentError extends CustomError {\r\n constructor(readonly message) {\r\n super(message)\r\n }\r\n}\r\n","import { CustomError } from 'ts-custom-error'\r\n\r\nexport class RequiredArgumentError extends CustomError {\r\n arguments: string[]\r\n\r\n constructor(readonly args: string[]) {\r\n super(`Required arguments: ${args.join(', ')}`)\r\n\r\n this.arguments = args\r\n }\r\n}\r\n","import { CustomError } from 'ts-custom-error'\r\n\r\nexport class NotFoundError extends CustomError {\r\n constructor(readonly message) {\r\n super(message)\r\n }\r\n}\r\n","import { CustomError } from 'ts-custom-error'\r\n\r\nexport class DuplicatedResultsError extends CustomError {\r\n constructor(readonly message) {\r\n super(message)\r\n }\r\n}\r\n","import axios from 'axios'\r\n\r\nimport { BaseModel } from '../../../domain'\r\nimport { NotFoundError } from '../../../errors'\r\nimport { ElasticSearchResult } from '../types/elastic-search-result'\r\n\r\nexport type AxiosElasticSearchConfig = {\r\n url: string\r\n credential: string\r\n}\r\n\r\nexport class AxiosAdapter<T extends BaseModel<T>> {\r\n constructor(private readonly config: AxiosElasticSearchConfig) {}\r\n\r\n async get(index: string): Promise<Partial<T>> {\r\n try {\r\n const { data } = await axios({\r\n url: `${this.config.url}/${index}`,\r\n method: 'GET',\r\n headers: { Authorization: `Basic ${this.config.credential}` },\r\n })\r\n\r\n return data._source\r\n } catch (error) {\r\n throw new NotFoundError(error.message)\r\n }\r\n }\r\n\r\n async query(index: string, query: any): Promise<ElasticSearchResult<Partial<T>>> {\r\n const { data } = await axios({\r\n url: `${this.config.url}/${index}`,\r\n method: 'POST',\r\n headers: { Authorization: `Basic ${this.config.credential}` },\r\n data: query,\r\n })\r\n\r\n return {\r\n total: data.hits.total.value,\r\n hits: data.hits.hits,\r\n }\r\n }\r\n\r\n async save(index: string, data: Partial<T>): Promise<void> {\r\n await axios({\r\n url: `${this.config.url}/${index}`,\r\n method: 'PUT',\r\n headers: { Authorization: `Basic ${this.config.credential}` },\r\n data,\r\n })\r\n }\r\n\r\n async delete(index: string): Promise<void> {\r\n await axios({\r\n url: `${this.config.url}/${index}`,\r\n method: 'DELETE',\r\n headers: { Authorization: `Basic ${this.config.credential}` },\r\n })\r\n }\r\n}\r\n","import { Product, Shops } from '../../../domain'\r\nimport { ProductHasuraGraphQL } from '../../hasura-graphql'\r\nimport { AxiosAdapter } from '../adapters'\r\n\r\nexport class ProductsIndex {\r\n constructor(private readonly adapter: AxiosAdapter<Product>) {}\r\n\r\n async get(id): Promise<Product> {\r\n const data = await this.adapter.get(`products/_doc/${id}`)\r\n\r\n return Product.toInstance(data)\r\n }\r\n\r\n async findById(ids: string[], options?: { hasStock: boolean; size: number; shop: Shops }): Promise<Product[]> {\r\n const fields = [\r\n 'brand',\r\n 'id',\r\n 'images',\r\n 'miniatures',\r\n 'name',\r\n 'price',\r\n 'sku',\r\n 'stock',\r\n 'slug',\r\n 'reviews',\r\n 'pricePaid',\r\n 'isGift',\r\n 'stock',\r\n 'weight',\r\n 'tags',\r\n 'hasVariants',\r\n 'type'\r\n ]\r\n const { hits } = await this.adapter.query('products/_search', {\r\n _source: fields,\r\n query: {\r\n bool: {\r\n filter: [\r\n {\r\n terms: {\r\n _id: ids,\r\n },\r\n },\r\n {\r\n term: {\r\n published: true,\r\n },\r\n },\r\n ...(options.hasStock\r\n ? [\r\n {\r\n range: {\r\n 'stock.quantity': {\r\n gt: 0,\r\n },\r\n },\r\n },\r\n ]\r\n : []),\r\n ],\r\n },\r\n },\r\n ...(options.size ? { size: options.size } : {}),\r\n })\r\n\r\n return hits.map((hit) => Product.toInstance(hit._source))\r\n }\r\n\r\n async save(product: ProductHasuraGraphQL): Promise<void> {\r\n delete product.createdAt\r\n delete product.updatedAt\r\n delete product.kitProducts\r\n\r\n try {\r\n if (!product.firestoreId) throw new Error('Is not a product from firestore')\r\n\r\n await this.get(product.firestoreId)\r\n\r\n await this.adapter.save(`products/_doc/${product.firestoreId}`, product.toPlain())\r\n } catch (error) {\r\n console.error(error.message)\r\n\r\n await this.adapter.save(`products/_doc/${product.id}`, product.toPlain())\r\n }\r\n }\r\n\r\n async delete(product: ProductHasuraGraphQL): Promise<void> {\r\n try {\r\n await this.get(product.firestoreId)\r\n\r\n await this.adapter.delete(`products/_doc/${product.firestoreId}`)\r\n } catch (error) {\r\n await this.adapter.delete(`products/_doc/${product.id}`)\r\n }\r\n }\r\n}\r\n","import { CollectionReference, DocumentData, FirebaseFirestore, QueryDocumentSnapshot } from '@firebase/firestore-types'\r\n\r\nimport {\r\n BaseModelBuilder,\r\n ModelBaseStructure,\r\n NonFunctionAndIdentifierPropertiesWithNoPartial,\r\n NonFunctionAndIdentifierPropertyNames,\r\n} from '../../../../domain'\r\nimport { MixinCtor } from '../../../../utils'\r\nimport { FirestoreFieldType } from '../enums'\r\nimport { FirestoreRepository } from '../types'\r\n\r\nexport const withFirestore = <TBase extends ModelBaseStructure, T extends MixinCtor = MixinCtor>(\r\n MixinBase: T,\r\n): MixinCtor<FirestoreRepository<TBase>, never> => {\r\n const isObjectsAndNoDate = (data: any): boolean =>\r\n data &&\r\n !Array.isArray(data) &&\r\n typeof data === 'object' &&\r\n data?.constructor.name !== 'Timestamp' &&\r\n !('seconds' in data)\r\n const bindDate = (data: Record<string, any>, keyName: string): Record<string, any> => {\r\n if (data?.constructor.name === 'Timestamp') return data.toDate()\r\n if (data && typeof data === 'object' && 'seconds' in data) return new Date(data.seconds * 1000)\r\n if (typeof data === 'number' && ['createdAt', 'updatedAt'].includes(keyName)) return new Date(data)\r\n\r\n return data\r\n }\r\n const bindAllDateFromObject = (data: {}): NonFunctionAndIdentifierPropertiesWithNoPartial<TBase> => {\r\n return Object.keys(data).reduce(\r\n (object, key) => ({\r\n ...object,\r\n [key]: isObjectsAndNoDate(data[key])\r\n ? bindAllDateFromObject(data[key])\r\n : Array.isArray(data[key])\r\n ? data[key].map((element) => (isObjectsAndNoDate(element) ? bindAllDateFromObject(element) : element))\r\n : bindDate(data[key], key),\r\n }),\r\n {} as NonFunctionAndIdentifierPropertiesWithNoPartial<TBase>,\r\n )\r\n }\r\n\r\n return class extends MixinBase implements FirestoreRepository<TBase> {\r\n readonly firestore?: FirebaseFirestore\r\n collectionName: string\r\n model: BaseModelBuilder<TBase>\r\n fields: Record<NonFunctionAndIdentifierPropertyNames<TBase>, FirestoreFieldType>\r\n\r\n collection(path?: string): CollectionReference<TBase> {\r\n return this.firestore.collection(path || this.collectionName).withConverter(this.buildModelInstance())\r\n }\r\n\r\n buildModelInstance(): {\r\n toFirestore: (data: TBase) => DocumentData\r\n fromFirestore: (snap: QueryDocumentSnapshot<TBase>) => TBase\r\n } {\r\n return {\r\n toFirestore: (data: TBase): DocumentData => (data?.toPlain ? data.toPlain() : data),\r\n fromFirestore: (snap: QueryDocumentSnapshot<TBase>): TBase => {\r\n const data = snap.data()\r\n let bindedData: NonFunctionAndIdentifierPropertiesWithNoPartial<TBase>\r\n\r\n try {\r\n const ids = { id: snap.id }\r\n\r\n bindedData = bindAllDateFromObject(data)\r\n\r\n return this.model.toInstance({ ...bindedData, ...ids })\r\n } catch (error) {\r\n console.info('id', snap.id)\r\n console.info('data', JSON.stringify(bindedData))\r\n console.error(error)\r\n\r\n throw error\r\n }\r\n },\r\n }\r\n }\r\n }\r\n}\r\n","import { QuerySnapshot, QueryDocumentSnapshot } from '@firebase/firestore-types'\r\n\r\nimport { ModelBaseStructure } from '../../../../domain'\r\nimport { FirestoreHelpers, FirestoreRepository, FirestoreSubRepository } from '../types'\r\nimport { isNil, MixinCtor } from '../../../../utils'\r\n\r\nexport const withHelpers = <TMixinBase extends MixinCtor = MixinCtor>(MixinBase: MixinCtor & TMixinBase) => {\r\n return class extends MixinBase implements FirestoreHelpers {\r\n toArray<T extends ModelBaseStructure>(snapShot: QuerySnapshot<T> | QueryDocumentSnapshot<T>[]): T[] {\r\n if (Array.isArray(snapShot)) {\r\n return snapShot.map((doc: QueryDocumentSnapshot<T>) => doc.data())\r\n } else {\r\n return snapShot.docs.map((doc: QueryDocumentSnapshot<T>) => doc.data())\r\n }\r\n }\r\n\r\n isSubCollection<T extends ModelBaseStructure>(\r\n repository: FirestoreRepository<T>,\r\n ): repository is FirestoreSubRepository<T> {\r\n return !isNil(Object.keys(this).find((key) => key === 'parentRepository'))\r\n }\r\n }\r\n}\r\n","import { ModelBaseStructure, GetRepository, NonFunctionProperties } from '../../../../domain'\r\nimport { FirestoreHelpers, FirestoreRepository } from '../types'\r\nimport { isNil, MergeConstructorParams, MixinCtor } from '../../../../utils'\r\nimport { NotFoundError } from '../../../../errors'\r\n\r\nexport const withGetFirestore = <\r\n TBase extends ModelBaseStructure,\r\n TMixinBase extends MixinCtor<FirestoreRepository<TBase>>,\r\n>(\r\n MixinBase: MixinCtor<FirestoreRepository<TBase> & FirestoreHelpers> & TMixinBase,\r\n): MixinCtor<\r\n FirestoreRepository<TBase> & InstanceType<TMixinBase> & GetRepository<TBase> & FirestoreHelpers,\r\n MergeConstructorParams<{}, ConstructorParameters<TMixinBase>>\r\n> => {\r\n return class GetFirestore extends MixinBase implements GetRepository<TBase> {\r\n async get(identifiers: NonFunctionProperties<TBase>): Promise<TBase> {\r\n const doc = await this.collection(this.buildCollectionPathForGet(identifiers))\r\n .doc(Object.values(identifiers).shift().toString())\r\n .get()\r\n const data = doc.data()\r\n\r\n if (isNil(data)) throw new NotFoundError(`Document ${JSON.stringify(identifiers)} not found`)\r\n\r\n return data\r\n }\r\n\r\n buildCollectionPathForGet(identifiers: NonFunctionProperties<TBase>): string {\r\n return this.isSubCollection(this)\r\n ? `${this.parentRepository.collectionName}/${identifiers[this.parentIdField]}/${this.collectionName}`\r\n : this.collectionName\r\n }\r\n } as any\r\n}\r\n","export enum FirestoreFieldType {\r\n String = 'string',\r\n Number = 'number',\r\n Boolean = 'boolean',\r\n Timestamp = 'timestamp',\r\n Array = 'array',\r\n Map = 'map',\r\n}\r\n","import { CollectionReference, Query, WhereFilterOp } from '@firebase/firestore-types'\r\n\r\nimport {\r\n FindRepository,\r\n ModelBaseStructure,\r\n NonFunctionPropertyNames,\r\n RepositoryFindField,\r\n RepositoryFindFielters,\r\n RepositoryFindFieltersOptions,\r\n RepositoryFindResult,\r\n RepositoryLimitOptions,\r\n RepositoryOrderBy,\r\n Where,\r\n} from '../../../../domain'\r\nimport { isDate, isNil, isNumber, isObject, isString, MergeConstructorParams, MixinCtor, set } from '../../../../utils'\r\nimport { FirestoreFieldType } from '../enums'\r\nimport { FirestoreHelpers, FirestoreRepository } from '../types'\r\n\r\nexport const withFindFirestore = <\r\n TBase extends ModelBaseStructure,\r\n TMixinBase extends MixinCtor<FirestoreRepository<TBase>>,\r\n>(\r\n MixinBase: MixinCtor<FirestoreRepository<TBase> & FirestoreHelpers> & TMixinBase,\r\n): MixinCtor<\r\n FirestoreRepository<TBase> & InstanceType<TMixinBase> & FindRepository<TBase> & FirestoreHelpers,\r\n MergeConstructorParams<{}, ConstructorParameters<TMixinBase>>\r\n> => {\r\n const checkIfIsFilterOption = (filter: any): filter is RepositoryFindFieltersOptions<TBase, any> =>\r\n !isNil(filter?.operator)\r\n const getValueFromFilter = (filter: RepositoryFindField<TBase, any>): any => {\r\n return checkIfIsFilterOption(filter) ? filter.value : filter\r\n }\r\n const getFinalValueFrom = (value: any) =>\r\n isNumber(value) || isString(value) || isDate(value) || Array.isArray(value)\r\n ? value\r\n : Object.values(getFinalValueFrom)\r\n\r\n return class FindFirestore extends MixinBase implements FindRepository<TBase> {\r\n async find({\r\n filters,\r\n limits,\r\n orderBy,\r\n }: {\r\n filters?: RepositoryFindFielters<TBase>\r\n limits?: RepositoryLimitOptions<TBase>\r\n orderBy?: RepositoryOrderBy<TBase>\r\n } = {}): Promise<RepositoryFindResult<TBase>> {\r\n const orderByKeys = Object.keys(orderBy || {})\r\n let query: CollectionReference<TBase> | Query<TBase> = this.collection(\r\n this.buildCollectionPathForFind(filters || {}),\r\n )\r\n\r\n query = this.makeFirestoreWhere(query, filters || {})\r\n\r\n if (orderByKeys.length) {\r\n const filtersKeysWithUnordered = Object.keys(filters || {}).filter(\r\n (filterKey) => !orderByKeys.includes(filterKey),\r\n )\r\n\r\n if (filtersKeysWithUnordered.length)\r\n filtersKeysWithUnordered.forEach(\r\n (filterKey) =>\r\n (orderBy = {\r\n ...(![Where.EQUALS].includes(filters[filterKey].operator) ? { [filterKey]: 'asc' } : {}),\r\n ...orderBy,\r\n }),\r\n )\r\n\r\n Object.keys(orderBy).forEach((fieldName) => (query = query.orderBy(fieldName, orderBy[fieldName])))\r\n }\r\n\r\n query = await this.defineLimits(query, filters, limits)\r\n\r\n const docs = await query.get()\r\n const data = docs.docs.map((doc) => doc.data())\r\n\r\n return {\r\n data,\r\n count: this.calculateCount(data, limits),\r\n }\r\n }\r\n\r\n buildCollectionPathForFind(filters: RepositoryFindFielters<TBase>): string {\r\n if (!this.isSubCollection<TBase>(this)) return this.collectionName\r\n\r\n const parentIdField = this.parentIdField\r\n const parentId = getValueFromFilter(filters?.[parentIdField])\r\n\r\n return `${this.parentRepository.collectionName}/${parentId}/${this.collectionName}`\r\n }\r\n\r\n makeFirestoreWhere = (\r\n queryReference: CollectionReference<TBase> | Query<TBase>,\r\n filter: RepositoryFindFielters<TBase>,\r\n ): Query<TBase> =>\r\n Object.keys(filter).reduce(\r\n (query: Query<TBase>, fieldName: string) => this.buildWhereSentence(query, fieldName, filter[fieldName]),\r\n queryReference,\r\n )\r\n\r\n buildWhereSentence = (\r\n queryReference: CollectionReference<TBase> | Query<TBase>,\r\n fieldName: NonFunctionPropertyNames<TBase> | string,\r\n options: RepositoryFindFieltersOptions<TBase, NonFunctionPropertyNames<TBase>>,\r\n ): Query<TBase> => {\r\n if (this.isSubCollection<TBase>(this) && fieldName === this.parentIdField) return queryReference\r\n\r\n const value = options?.value || options\r\n const object = {}\r\n\r\n set(object, fieldName, value)\r\n\r\n const plainInstance = new this.model(object).toPlain()\r\n const firestoreFieldName =\r\n fieldName.toString().indexOf('.') > -1\r\n ? fieldName.toString()\r\n : Object.keys(plainInstance).find((key) => plainInstance[key])\r\n\r\n if (options?.operator === Where.LIKE) {\r\n if (\r\n Array.isArray(options?.value) &&\r\n (this.fields[firestoreFieldName] === FirestoreFieldType.Array || !this.fields[firestoreFieldName])\r\n )\r\n return queryReference.where(firestoreFieldName, 'array-contains-any', options.value)\r\n\r\n queryReference = queryReference.where(firestoreFieldName, '>=', options.value)\r\n queryReference = queryReference.where(firestoreFieldName, '<=', `${options.value}~`)\r\n\r\n return queryReference\r\n }\r\n if (\r\n options?.operator === Where.IN &&\r\n Array.isArray(options?.value) &&\r\n (this.fields[firestoreFieldName] === FirestoreFieldType.Array || !this.fields[firestoreFieldName])\r\n )\r\n return queryReference.where(firestoreFieldName, 'array-contains', options.value)\r\n if (isObject(options) && isNil(options?.operator) && isNil(options?.value)) {\r\n return Object.keys(options).reduce(\r\n (queryReferenceWithWhere, key) =>\r\n this.buildWhereSentence(queryReferenceWithWhere, `${fieldName.toString()}.${key}`, options[key]),\r\n queryReference,\r\n )\r\n }\r\n\r\n return queryReference.where(\r\n firestoreFieldName,\r\n (options?.operator as WhereFilterOp) || '==',\r\n options?.value || options,\r\n )\r\n }\r\n\r\n async defineLimits(\r\n query: CollectionReference<TBase> | Query<TBase>,\r\n filters: RepositoryFindFielters<TBase>,\r\n limits: RepositoryLimitOptions<TBase>,\r\n ): Promise<Query<TBase>> {\r\n if (limits?.offset) {\r\n if (this.model.isModel(limits.offset))\r\n query = query.startAfter(\r\n await this.collection(this.buildCollectionPathForFind(filters))\r\n .doc(limits.offset[limits.offset.identifiersFields.shift() as string])\r\n .get(),\r\n )\r\n else if (isNumber(limits.offset) || isString(limits.offset)) query = query.startAt(limits.offset)\r\n }\r\n if (limits?.limit) query = query.limit(limits.limit)\r\n\r\n return query\r\n }\r\n\r\n calculateCount(data: TBase[], limits: RepositoryLimitOptions<TBase>): number {\r\n if (data.length <= 0) return 0\r\n if (data.length < limits?.limit) return data.length\r\n\r\n return Infinity\r\n }\r\n } as any\r\n}\r\n","import { DocumentReference } from '@firebase/firestore-types'\r\n\r\nimport { CreateRepository, CreateRepositoryParams, ModelBaseStructure } from '../../../../domain'\r\nimport { FirestoreHelpers, FirestoreRepository } from '../types'\r\nimport { isEmpty, MergeConstructorParams, MixinCtor } from '../../../../utils'\r\n\r\nexport const withCreateFirestore = <\r\n TBase extends ModelBaseStructure,\r\n TMixinBase extends MixinCtor<FirestoreRepository<TBase>>,\r\n>(\r\n MixinBase: MixinCtor<FirestoreRepository<TBase> & FirestoreHelpers> & TMixinBase,\r\n): MixinCtor<\r\n FirestoreRepository<TBase> & InstanceType<TMixinBase> & CreateRepository<TBase> & FirestoreHelpers,\r\n MergeConstructorParams<{}, ConstructorParameters<TMixinBase>>\r\n> => {\r\n return class CreateFirestore extends MixinBase implements CreateRepository<TBase> {\r\n async create(data: CreateRepositoryParams<TBase>): Promise<TBase> {\r\n const docRef = await this.save(this.model.toInstance(data as any))\r\n const doc = await docRef.get()\r\n\r\n return doc.data()\r\n }\r\n\r\n async save(data: TBase): Promise<DocumentReference<TBase>> {\r\n const id = data[data.identifiersFields.shift()]?.toString()\r\n const collectionPath = this.buildCollectionPathForAdd(data)\r\n\r\n if (isEmpty(id)) return this.collection(collectionPath).add(data)\r\n\r\n const docRef = this.collection(collectionPath).doc(id)\r\n await docRef.set(data)\r\n\r\n return docRef\r\n }\r\n\r\n buildCollectionPathForAdd(identifiers: Partial<TBase>): string {\r\n return this.isSubCollection(this)\r\n ? `${this.parentRepository.collectionName}/${identifiers[this.parentIdField]}/${this.collectionName}`\r\n : this.collectionName\r\n }\r\n } as any\r\n}\r\n","import firebase from 'firebase'\r\n\r\nimport {\r\n ModelBaseStructure,\r\n NonFunctionPropertyNames,\r\n RepositoryUpdateParams,\r\n UpdateOptionActions,\r\n UpdateOptions,\r\n UpdateRepository,\r\n} from '../../../../domain'\r\nimport { FirestoreHelpers, FirestoreRepository } from '../types'\r\nimport { isNil, MergeConstructorParams, MixinCtor, PropType } from '../../../../utils'\r\n\r\nexport type UpdateFirestoreRepositoryType<MBase extends ModelBaseStructure> = UpdateRepository<MBase> & {\r\n paramsToPlain(params: RepositoryUpdateParams<MBase>): Partial<MBase>\r\n}\r\n\r\nexport const withUpdateFirestore = <\r\n TBase extends ModelBaseStructure,\r\n TMixinBase extends MixinCtor<FirestoreRepository<TBase>>,\r\n>(\r\n MixinBase: MixinCtor<FirestoreRepository<TBase> & FirestoreHelpers> & TMixinBase,\r\n): MixinCtor<\r\n FirestoreRepository<TBase> & UpdateRepository<TBase> & InstanceType<TMixinBase> & FirestoreHelpers,\r\n MergeConstructorParams<{}, ConstructorParameters<TMixinBase>>\r\n> => {\r\n const getValueFromParams = (\r\n params: RepositoryUpdateParams<TBase>,\r\n field: NonFunctionPropertyNames<TBase>,\r\n ): PropType<TBase, NonFunctionPropertyNames<TBase>> =>\r\n (isNil(params[field as string]?.value) ? params[field as string] : params[field as string].value) || null\r\n const getValueByAction = (options: UpdateOptions<TBase>): firebase.firestore.FieldValue | unknown => {\r\n const fieldValues = firebase.firestore.FieldValue\r\n\r\n if (isNil(options.action)) return options\r\n if (options.action === UpdateOptionActions.REMOVE_FIELD) return fieldValues.delete()\r\n if (Array.isArray(options.value)) {\r\n if (options.action === UpdateOptionActions.MERGE) return fieldValues.arrayUnion(...options.value)\r\n if (options.action === UpdateOptionActions.REMOVE) return fieldValues.arrayRemove(...options.value)\r\n }\r\n\r\n return options.value\r\n }\r\n\r\n return class UpdateFirestore extends MixinBase implements UpdateRepository<TBase> {\r\n async update(data: RepositoryUpdateParams<TBase>): Promise<TBase> {\r\n const model = new this.model()\r\n const keyField = model.identifiersFields.shift()\r\n const docRef = this.collection(this.buildCollectionPathForUpdate(data)).doc(\r\n getValueFromParams(data, keyField).toString(),\r\n )\r\n\r\n await docRef.set(this.paramsToPlain(data), { merge: true })\r\n\r\n const doc = await docRef.get()\r\n\r\n return doc.data()\r\n }\r\n\r\n buildCollectionPathForUpdate(identifiers: RepositoryUpdateParams<TBase>): string {\r\n return this.isSubCollection(this)\r\n ? `${this.parentRepository.collectionName}/${getValueFromParams(identifiers, this.parentIdField)}/${\r\n this.collectionName\r\n }`\r\n : this.collectionName\r\n }\r\n\r\n paramsToPlain(params: RepositoryUpdateParams<TBase>): Partial<TBase> {\r\n const model = this.model\r\n\r\n if (model.isModel(params)) return params.toPlain()\r\n\r\n return Object.keys(params).reduce(\r\n (data, currentKey) => ({ ...data, [currentKey]: getValueByAction(params[currentKey]) }),\r\n {},\r\n )\r\n }\r\n } as any\r\n}\r\n","import { IdentifiersModel, ModelBaseStructure, DeleteRepository, DeleteRepositoryParams } from '../../../../domain'\r\nimport { FirestoreHelpers, FirestoreRepository } from '../types'\r\nimport { MergeConstructorParams, MixinCtor } from '../../../../utils'\r\n\r\nexport const withDeleteFirestore = <\r\n TBase extends ModelBaseStructure,\r\n TMixinBase extends MixinCtor<FirestoreRepository<TBase>>,\r\n>(\r\n MixinBase: MixinCtor<FirestoreRepository<TBase> & FirestoreHelpers> & TMixinBase,\r\n): MixinCtor<\r\n FirestoreRepository<TBase> & InstanceType<TMixinBase> & DeleteRepository<TBase> & FirestoreHelpers,\r\n MergeConstructorParams<{}, ConstructorParameters<TMixinBase>>\r\n> => {\r\n return class DeleteFirestore extends MixinBase implements DeleteRepository<TBase> {\r\n async delete(identifiers: DeleteRepositoryParams<TBase>): Promise<void> {\r\n await this.collection(this.buildCollectionPathForRemove(identifiers))\r\n .doc(Object.values(identifiers).shift().toString())\r\n .delete()\r\n }\r\n\r\n buildCollectionPathForRemove(identifiers: IdentifiersModel<TBase>): string {\r\n return this.isSubCollection(this)\r\n ? `${this.parentRepository.collectionName}/${identifiers[this.parentIdField]}/${this.collectionName}`\r\n : this.collectionName\r\n }\r\n } as any\r\n}\r\n","import { CollectionReference } from '@firebase/firestore-types'\r\n\r\nimport { IdentifiersModel, ModelBaseStructure } from '../../../../domain'\r\nimport { FirestoreHelpers, FirestoreRepository, FirestoreSubRepository } from '../types'\r\nimport { MergeConstructorParams, MixinCtor } from '../../../../utils'\r\n\r\nexport const withSubCollection = <\r\n TBase extends ModelBaseStructure,\r\n TBaseParent extends ModelBaseStructure,\r\n TMixinBase extends MixinCtor<FirestoreRepository<TBase>>,\r\n>(\r\n MixinBase: MixinCtor<FirestoreRepository<TBase>> & TMixinBase,\r\n ParentModel: new () => TBaseParent,\r\n): MixinCtor<\r\n FirestoreRepository<TBase> &\r\n InstanceType<TMixinBase> &\r\n FirestoreSubRepository<TBase, InstanceType<typeof ParentModel>> &\r\n FirestoreHelpers,\r\n MergeConstructorParams<{}, ConstructorParameters<TMixinBase>>\r\n> => {\r\n return class SubCollectionMix\r\n extends MixinBase\r\n implements FirestoreSubRepository<TBase, InstanceType<typeof ParentModel>>\r\n {\r\n readonly parentRepository: FirestoreRepository<InstanceType<typeof ParentModel>>\r\n parentIdField: keyof IdentifiersModel<TBase>\r\n\r\n constructor(...args: Array<any>) {\r\n super(args)\r\n }\r\n\r\n collection(path?: string): CollectionReference<TBase> {\r\n return super.collection(path)\r\n }\r\n } as any\r\n}\r\n","import { ModelBaseStructure, CrudRepository } from '../../../../domain'\r\nimport { FirestoreHelpers, FirestoreRepository } from '../types'\r\nimport { MergeConstructorParams, MixinCtor } from '../../../../utils'\r\n\r\nimport { withCreateFirestore } from './with-create-firestore.mixin'\r\nimport { withDeleteFirestore } from './with-delete-firestore.mixin'\r\nimport { withFindFirestore } from './with-find-firestore.mixin'\r\nimport { withGetFirestore } from './with-get-firestore.mixin'\r\nimport { withUpdateFirestore } from './with-update-firestore.mixin'\r\n\r\nexport const withCrudFirestore = <\r\n TBase extends ModelBaseStructure,\r\n Repository = CrudRepository<TBase>,\r\n TMixinBase extends MixinCtor = MixinCtor,\r\n>(\r\n MixinBase: MixinCtor<FirestoreRepository<TBase> & FirestoreHelpers> & TMixinBase,\r\n): MixinCtor<\r\n FirestoreRepository<TBase> & Repository & FirestoreHelpers,\r\n MergeConstructorParams<{}, ConstructorParameters<TMixinBase>>\r\n> => {\r\n return class CrudFirestore\r\n extends withUpdateFirestore(\r\n withGetFirestore(\r\n withFindFirestore(\r\n withDeleteFirestore(\r\n withCreateFirestore(MixinBase as MixinCtor<FirestoreRepository<TBase> & FirestoreHelpers>),\r\n ),\r\n ),\r\n ),\r\n )\r\n implements CrudRepository<TBase> {} as any\r\n}\r\n","import { FirebaseFirestore } from '@firebase/firestore-types'\r\n\r\nimport { Base } from '../../../../../utils'\r\nimport { Lead, LeadRepository } from '../../../../../domain'\r\n\r\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\r\n\r\nexport class LeadFirestoreRepository\r\n extends withCrudFirestore(withHelpers(withFirestore<Lead>(Base)))\r\n implements LeadRepository\r\n{\r\n constructor(readonly firestore: FirebaseFirestore) {\r\n super()\r\n this.collectionName = 'leads'\r\n this.model = Lead\r\n }\r\n}\r\n","import { FirebaseFirestore } from '@firebase/firestore-types'\r\n\r\nimport { Base } from '../../../../../utils'\r\nimport { Edition, Subscription, EditionRepository } from '../../../../../domain'\r\nimport { withCrudFirestore, withFirestore, withHelpers, withSubCollection } from '../../mixins'\r\n\r\nimport { SubscriptionFirestoreRepository } from './subscription-firestore.repository'\r\n\r\nexport class SubscriptionEditionFirestoreRepository\r\n extends withSubCollection(withCrudFirestore(withHelpers(withFirestore<Edition>(Base))), Subscription)\r\n implements EditionRepository\r\n{\r\n constructor(readonly firestore: FirebaseFirestore, readonly parentRepository: SubscriptionFirestoreRepository) {\r\n super()\r\n this.collectionName = 'editions'\r\n this.parentIdField = 'subscriptionId'\r\n this.model = Edition\r\n }\r\n}\r\n","import { FirebaseFirestore } from '@firebase/firestore-types'\r\n\r\nimport { Base } from '../../../../../utils'\r\nimport { Subscription, SubscriptionRepository } from '../../../../../domain'\r\n\r\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\r\n\r\nexport class SubscriptionFirestoreRepository\r\n extends withCrudFirestore(withHelpers(withFirestore<Subscription>(Base)))\r\n implements SubscriptionRepository\r\n{\r\n constructor(readonly firestore: FirebaseFirestore) {\r\n super()\r\n this.collectionName = 'subscription'\r\n this.model = Subscription\r\n }\r\n}\r\n","import { FirebaseFirestore } from '@firebase/firestore-types'\r\n\r\nimport { Base } from '../../../../../utils'\r\nimport { SubscriptionPayment, Subscription, SubscriptionPaymentRepository } from '../../../../../domain'\r\nimport { withCrudFirestore, withFirestore, withHelpers, withSubCollection } from '../../mixins'\r\n\r\nimport { SubscriptionFirestoreRepository } from './subscription-firestore.repository'\r\n\r\nexport class SubscriptionPaymentFirestoreRepository\r\n extends withSubCollection(withCrudFirestore(withHelpers(withFirestore<SubscriptionPayment>(Base))), Subscription)\r\n implements SubscriptionPaymentRepository\r\n{\r\n constructor(readonly firestore: FirebaseFirestore, readonly parentRepository: SubscriptionFirestoreRepository) {\r\n super()\r\n this.collectionName = 'payments'\r\n this.parentIdField = 'subscriptionId'\r\n this.model = SubscriptionPayment\r\n }\r\n}\r\n","import { FirebaseFirestore } from '@firebase/firestore-types'\r\n\r\nimport { Base } from '../../../../../utils'\r\nimport { User, UserAddress, UserAddressRepository } from '../../../../../domain'\r\nimport { withCrudFirestore, withFirestore, withHelpers, withSubCollection } from '../../mixins'\r\n\r\nimport { UserFirestoreRepository } from './user-firestore.repository'\r\n\r\nexport class UserAddressFirestoreRepository\r\n extends withSubCollection(withCrudFirestore(withHelpers(withFirestore<UserAddress>(Base))), User)\r\n implements UserAddressRepository\r\n{\r\n constructor(readonly firestore: FirebaseFirestore, readonly parentRepository: UserFirestoreRepository) {\r\n super()\r\n this.collectionName = 'address'\r\n this.parentIdField = 'userId'\r\n this.model = UserAddress\r\n }\r\n}\r\n","import { FirebaseFirestore } from '@firebase/firestore-types'\r\n\r\nimport { Base } from '../../../../../utils'\r\nimport { BeautyProfile, BeautyProfileRepository, User } from '../../../../../domain'\r\nimport { withCrudFirestore, withFirestore, withHelpers, withSubCollection } from '../../mixins'\r\n\r\nimport { UserFirestoreRepository } from './user-firestore.repository'\r\n\r\nexport class UserBeautyProfileFirestoreRepository\r\n extends withSubCollection(withCrudFirestore(withHelpers(withFirestore<BeautyProfile>(Base))), User)\r\n implements BeautyProfileRepository\r\n{\r\n constructor(readonly firestore: FirebaseFirestore, readonly parentRepository: UserFirestoreRepository) {\r\n super()\r\n this.collectionName = 'CX'\r\n this.parentIdField = 'userId'\r\n this.model = BeautyProfile\r\n }\r\n}\r\n","import { DocumentData, FirebaseFirestore, QueryDocumentSnapshot } from '@firebase/firestore-types'\r\n\r\nimport { BeautyProfile, User, UserRepository } from '../../../../../domain'\r\nimport { Base } from '../../../../../utils'\r\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\r\n\r\nexport class UserFirestoreRepository\r\n extends withCrudFirestore(withHelpers(withFirestore<User>(Base)))\r\n implements UserRepository\r\n{\r\n constructor(\r\n readonly firestore: FirebaseFirestore,\r\n ) {\r\n super()\r\n this.collectionName = 'users'\r\n this.model = User\r\n }\r\n\r\n async get(identifiers: Partial<User>): Promise<User> {\r\n const user = await super.get({ id: identifiers.id })\r\n\r\n user.beautyProfile = await this.getBeautyProfile(user.id)\r\n user.isSubscriber = await this.checkIfIsSubscriber(user.id)\r\n\r\n return user\r\n }\r\n\r\n async checkIfExistsByField(field: string, value: string): Promise<boolean> {\r\n const result = await this.find({ filters: {[field]: value} });\r\n\r\n return result.count > 0\r\n }\r\n\r\n buildModelInstance(): {\r\n toFirestore: (data: User) => DocumentData\r\n fromFirestore: (snap: QueryDocumentSnapshot<User>) => User\r\n } {\r\n const { fromFirestore, toFirestore } = super.buildModelInstance()\r\n\r\n return {\r\n toFirestore: (data: User): DocumentData => {\r\n const plain = toFirestore(data)\r\n\r\n delete plain.isSubscriber\r\n\r\n return plain\r\n },\r\n fromFirestore,\r\n }\r\n }\r\n\r\n private async getBeautyProfile(userId: string): Promise<BeautyProfile> {\r\n const beautyProfile = await this.collection()\r\n .doc(userId)\r\n .collection('CX')\r\n .withConverter(this.buildBeautyProfileModelInstance())\r\n .doc('beautyProfile')\r\n .get()\r\n\r\n return beautyProfile.data()\r\n }\r\n\r\n private async checkIfIsSubscriber(userId: string): Promise<boolean> {\r\n const docs = await this.firestore\r\n .collection('subscription')\r\n .where('user.id', '==', userId)\r\n .where('status', '==', 'active')\r\n .get()\r\n\r\n return !!docs && !!docs.size\r\n }\r\n\r\n private buildBeautyProfileModelInstance(): {\r\n toFirestore: (data: BeautyProfile) => DocumentData\r\n fromFirestore: (snap: QueryDocumentSnapshot<BeautyProfile>) => BeautyProfile\r\n } {\r\n return {\r\n toFirestore: (data: BeautyProfile): DocumentData => data.toPlain(),\r\n fromFirestore: (snap: QueryDocumentSnapshot<BeautyProfile>): BeautyProfile =>\r\n BeautyProfile.toInstance(snap.data()),\r\n }\r\n }\r\n}\r\n","import { FirebaseFirestore } from '@firebase/firestore-types'\r\n\r\nimport { Base } from '../../../../../utils'\r\nimport { User, UserPaymentMethod, UserPaymentMethodRepository } from '../../../../../domain'\r\nimport { withCrudFirestore, withFirestore, withHelpers, withSubCollection } from '../../mixins'\r\n\r\nimport { UserFirestoreRepository } from './user-firestore.repository'\r\n\r\nexport class UserPaymentMethodFirestoreRepository\r\n extends withSubCollection(withCrudFirestore(withHelpers(withFirestore<UserPaymentMethod>(Base))), User)\r\n implements UserPaymentMethodRepository\r\n{\r\n constructor(readonly firestore: FirebaseFirestore, readonly parentRepository: UserFirestoreRepository) {\r\n super()\r\n this.collectionName = 'payment_method'\r\n this.parentIdField = 'userId'\r\n this.model = UserPaymentMethod\r\n }\r\n}\r\n","import { FirebaseFirestore } from '@firebase/firestore-types'\r\n\r\nimport { Category, CategoryRepository, Product, Shops } from '../../../../../domain'\r\nimport { Base, chunk } from '../../../../../utils'\r\n\r\nimport { DuplicatedResultsError, NotFoundError, RequiredArgumentError } from '../../../../../errors'\r\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\r\n\r\nexport class CategoryFirestoreRepository\r\n extends withCrudFirestore(withHelpers(withFirestore<Category>(Base)))\r\n implements CategoryRepository\r\n{\r\n constructor(readonly firestore: FirebaseFirestore) {\r\n super()\r\n this.collectionName = 'categories'\r\n this.model = Category\r\n }\r\n\r\n getCategoryBySlug(slug: string, shop: Shops): Promise<Category> {\r\n return this.collection(this.collectionName)\r\n .where('slug', '==', slug)\r\n .where('shop', '==', shop)\r\n .where('published', '==', true)\r\n .get()\r\n .then((snap) => {\r\n if (snap.size > 1) throw new DuplicatedResultsError('Query returned duplicated values')\r\n\r\n if (snap.empty) throw new NotFoundError(`Document with slug ${slug} not found`)\r\n\r\n return snap.docs[0].data()\r\n })\r\n .catch((error) => error)\r\n }\r\n\r\n async getCategoriesForHome(categoryIds: string[], limit = 4): Promise<{ category: Category; products: Product[] }[]> {\r\n const categorySnap = await this.collection(this.collectionName)\r\n .where('id', 'in', categoryIds.filter(Boolean))\r\n .where('published', '==', true)\r\n .get()\r\n\r\n if (categorySnap.empty) throw new NotFoundError('Categories not found')\r\n\r\n const categories = categorySnap.docs.map((doc) => doc.data())\r\n const homeSections = await Promise.all(\r\n categories.map(async (category) => ({\r\n category,\r\n products: await this.mountCategory(category, { limit, hasStock: true }),\r\n })),\r\n )\r\n\r\n return homeSections\r\n }\r\n\r\n async mountCategory(category: Category, options?: { limit?: number; hasStock?: boolean }): Promise<Product[]> {\r\n if (!category.products) throw new RequiredArgumentError(['Category products is empty'])\r\n\r\n const chunks = chunk(category.products, 10)\r\n const products = []\r\n\r\n for (const productIds of chunks) {\r\n if (options?.limit && products.length >= options?.limit) break\r\n\r\n let query = await this.collection('productsErpVitrine')\r\n .where('published', '==', true)\r\n .where('id', 'in', productIds)\r\n\r\n if (options?.hasStock) query = query.where('stock.quantity', '>', 0)\r\n if (options?.limit) query = query.limit(options?.limit)\r\n\r\n const productSnap = await query.get()\r\n\r\n if (productSnap.empty) continue\r\n\r\n products.push(...productSnap.docs.map((doc) => doc.data()))\r\n }\r\n\r\n return products\r\n }\r\n}\r\n","import { FirebaseFirestore } from '@firebase/firestore-types'\r\n\r\nimport { Product, ProductRepository, ReviewStatusParams, ReviewWithProductData, Where } from '../../../../../domain'\r\nimport { Base } from '../../../../../utils'\r\n\r\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\r\n\r\nexport class ProductFirestoreRepository\r\n extends withCrudFirestore(withHelpers(withFirestore<Product>(Base)))\r\n implements ProductRepository\r\n{\r\n private reviews: Partial<Record<ReviewStatusParams, ReviewWithProductData[]>> = {}\r\n\r\n constructor(readonly firestore: FirebaseFirestore) {\r\n super()\r\n this.collectionName = 'productsErpVitrine'\r\n this.model = Product\r\n }\r\n\r\n async getBySlug(slug: string): Promise<Product> {\r\n const result = await this.find({\r\n filters: {\r\n slug: { operator: Where.EQUALS, value: slug },\r\n },\r\n })\r\n\r\n return result?.data?.shift()\r\n }\r\n\r\n async fetchReviews(status: ReviewStatusParams): Promise<ReviewWithProductData[]> {\r\n const { data: products } = await this.find()\r\n\r\n products.forEach((product) => {\r\n if ([undefined, 0].includes(product.reviews?.length)) return\r\n\r\n const productInfo = {\r\n productId: product.id,\r\n productName: product.name,\r\n productSku: product.sku,\r\n }\r\n\r\n this.reviews.pending = []\r\n this.reviews.approved = []\r\n this.reviews.rejected = []\r\n\r\n product.reviews.forEach((review) => {\r\n if ([null, undefined].includes(review.status)) return this.reviews.pending.push({ ...review, ...productInfo })\r\n if (review.status === false) return this.reviews.rejected.push({ ...review, ...productInfo })\r\n if (!!review.status) return this.reviews.approved.push({ ...review, ...productInfo })\r\n })\r\n })\r\n\r\n return this.reviews[status]\r\n }\r\n}\r\n","import { FirebaseFirestore } from '@firebase/firestore-types'\r\n\r\nimport { Base } from '../../../../../utils'\r\nimport { Product, Variant, VariantRepository } from '../../../../../domain'\r\nimport { withCrudFirestore, withFirestore, withHelpers, withSubCollection } from '../../mixins'\r\n\r\nimport { ProductFirestoreRepository } from './product-firestore.repository'\r\n\r\nexport class ProductVariantFirestoreRepository\r\n extends withSubCollection(withCrudFirestore(withHelpers(withFirestore<Variant>(Base))), Product)\r\n implements VariantRepository\r\n{\r\n constructor(readonly firestore: FirebaseFirestore, readonly parentRepository: ProductFirestoreRepository) {\r\n super()\r\n this.collectionName = 'variants'\r\n this.parentIdField = 'productId'\r\n this.model = Variant\r\n }\r\n}\r\n","import { FirebaseFirestore } from '@firebase/firestore-types'\r\n\r\nimport { Base } from '../../../../../utils'\r\nimport { Product, SubscriptionProductRepository } from '../../../../../domain'\r\n\r\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\r\n\r\nexport class SubscriptionProductFirestoreRepository\r\n extends withCrudFirestore(withHelpers(withFirestore<Product>(Base)))\r\n implements SubscriptionProductRepository\r\n{\r\n constructor(readonly firestore: FirebaseFirestore) {\r\n super()\r\n this.collectionName = 'subscriptionProducts'\r\n this.model = Product\r\n }\r\n}\r\n","import { FirebaseFirestore } from '@firebase/firestore-types'\r\n\r\nimport { Base } from '../../../../../utils'\r\nimport { Checkout, CheckoutRepository } from '../../../../../domain'\r\n\r\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\r\n\r\nexport class CheckoutFirestoreRepository\r\n extends withCrudFirestore(withHelpers(withFirestore<Checkout>(Base)))\r\n implements CheckoutRepository\r\n{\r\n constructor(readonly firestore: FirebaseFirestore) {\r\n super()\r\n this.collectionName = 'checkouts'\r\n this.model = Checkout\r\n }\r\n}\r\n","import { DocumentData, FirebaseFirestore, QueryDocumentSnapshot } from '@firebase/firestore-types'\r\n\r\nimport { Base, isNil } from '../../../../../utils'\r\nimport { Coupon, CouponRepository } from '../../../../../domain'\r\n\r\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\r\n\r\nexport class CouponFirestoreRepository\r\n extends withCrudFirestore(withHelpers(withFirestore<Coupon>(Base)))\r\n implements CouponRepository\r\n{\r\n constructor(readonly firestore: FirebaseFirestore) {\r\n super()\r\n this.collectionName = 'coupons'\r\n this.model = Coupon\r\n }\r\n\r\n buildModelInstance(): {\r\n toFirestore: (data: Coupon) => DocumentData\r\n fromFirestore: (snap: QueryDocumentSnapshot<Coupon>) => Coupon\r\n } {\r\n const { fromFirestore, toFirestore } = super.buildModelInstance()\r\n\r\n return {\r\n toFirestore: (data: Coupon): DocumentData => {\r\n const plain = toFirestore(data)\r\n\r\n if (!!data.expiresIn) plain.expiresIn = data.expiresIn.getTime()\r\n\r\n return plain\r\n },\r\n fromFirestore: (snap: QueryDocumentSnapshot<Coupon>): Coupon => {\r\n const instance = fromFirestore(snap)\r\n\r\n if (!isNil(instance.expiresIn)) instance.expiresIn = new Date(snap.data().expiresIn)\r\n\r\n return instance\r\n },\r\n }\r\n }\r\n}\r\n","import { DocumentData, FirebaseFirestore, QueryDocumentSnapshot } from '@firebase/firestore-types'\r\n\r\nimport { Order, OrderRepository } from '../../../../../domain'\r\nimport { Base } from '../../../../../utils'\r\nimport { FirestoreFieldType } from '../../enums'\r\n\r\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\r\n\r\nexport class OrderFirestoreRepository\r\n extends withCrudFirestore(withHelpers(withFirestore<Order>(Base)))\r\n implements OrderRepository\r\n{\r\n constructor(readonly firestore: FirebaseFirestore) {\r\n super()\r\n this.collectionName = 'orders'\r\n this.model = Order\r\n this.fields = {\r\n status: FirestoreFieldType.String,\r\n }\r\n }\r\n\r\n buildModelInstance(): {\r\n toFirestore: (data: Order) => DocumentData\r\n fromFirestore: (snap: QueryDocumentSnapshot<Order>) => Order\r\n } {\r\n const { fromFirestore, toFirestore } = super.buildModelInstance()\r\n return {\r\n toFirestore: (data: Order): DocumentData => toFirestore(data?.toPlain ? data.toPlain() : data),\r\n fromFirestore: (snap: QueryDocumentSnapshot<Order>): Order => {\r\n const instance = fromFirestore(snap)\r\n\r\n return this.orderFromFirestore(instance)\r\n },\r\n }\r\n }\r\n\r\n private orderFromFirestore = (order: Order): Order => {\r\n if (!!order?.lineItems?.length) {\r\n order.lineItems = order.lineItems.map((lineItem) => {\r\n if (!!lineItem.price?.[order.shop]) {\r\n const shopPrice = lineItem['price'][order.shop]\r\n\r\n lineItem['price'] = shopPrice\r\n }\r\n\r\n return lineItem\r\n })\r\n }\r\n\r\n return order\r\n }\r\n}\r\n","import { FirebaseFirestore } from '@firebase/firestore-types'\r\n\r\nimport { Base } from '../../../../../utils'\r\nimport { Payment, PaymentRepository } from '../../../../../domain'\r\n\r\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\r\n\r\nexport class PaymentFirestoreRepository\r\n extends withCrudFirestore(withHelpers(withFirestore<Payment>(Base)))\r\n implements PaymentRepository\r\n{\r\n constructor(readonly firestore: FirebaseFirestore) {\r\n super()\r\n this.collectionName = 'payments'\r\n this.model = Payment\r\n }\r\n}\r\n","import { FirebaseFirestore } from '@firebase/firestore-types'\r\n\r\nimport { Base } from '../../../../../utils'\r\nimport { CheckoutSubscription, CheckoutSubscriptionRepository } from '../../../../../domain'\r\n\r\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\r\n\r\nexport class CheckoutSubscriptionFirestoreRepository\r\n extends withCrudFirestore(withHelpers(withFirestore<CheckoutSubscription>(Base)))\r\n implements CheckoutSubscriptionRepository\r\n{\r\n constructor(readonly firestore: FirebaseFirestore) {\r\n super()\r\n this.collectionName = 'checkoutsSubscription'\r\n this.model = CheckoutSubscription\r\n }\r\n}\r\n","import { FirebaseFirestore } from '@firebase/firestore-types'\r\n\r\nimport { Base } from '../../../../../utils'\r\nimport { SubscriptionPlan, SubscriptionPlanRepository } from '../../../../../domain'\r\n\r\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\r\n\r\nexport class SubscriptionPlanFirestoreRepository\r\n extends withCrudFirestore(withHelpers(withFirestore<SubscriptionPlan>(Base)))\r\n implements SubscriptionPlanRepository\r\n{\r\n constructor(readonly firestore: FirebaseFirestore) {\r\n super()\r\n this.collectionName = 'subscriptionPlans'\r\n this.model = SubscriptionPlan\r\n }\r\n}\r\n","import { FirebaseFirestore } from '@firebase/firestore-types'\r\n\r\nimport { Base } from '../../../../../utils'\r\nimport { Buy2Win, Buy2WinRepository } from '../../../../../domain'\r\n\r\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\r\n\r\nexport class Buy2WinFirestoreRepository\r\n extends withCrudFirestore(withHelpers(withFirestore<Buy2Win>(Base)))\r\n implements Buy2WinRepository\r\n{\r\n constructor(readonly firestore: FirebaseFirestore) {\r\n super()\r\n this.collectionName = 'buy2win'\r\n this.model = Buy2Win\r\n }\r\n}\r\n","import { FirebaseFirestore } from '@firebase/firestore-types'\r\n\r\nimport { LegacyOrderRepository } from '../../../../../domain'\r\n\r\nimport { OrderFirestoreRepository } from './order-firestore.repository'\r\n\r\nexport class LegacyOrderFirestoreRepository extends OrderFirestoreRepository implements LegacyOrderRepository {\r\n constructor(readonly firestore: FirebaseFirestore) {\r\n super(firestore)\r\n this.collectionName = 'legacyOrders'\r\n }\r\n}\r\n","import { DocumentData, FirebaseFirestore, QueryDocumentSnapshot } from '@firebase/firestore-types'\r\nimport firebase from 'firebase'\r\n\r\nimport { Base } from '../../../../../utils'\r\nimport { Category, Home, HomeCategoryGroup, HomeRepository, Product } from '../../../../../domain'\r\n\r\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\r\n\r\nexport class HomeFirestoreRepository\r\n extends withCrudFirestore(withHelpers(withFirestore<Home>(Base)))\r\n implements HomeRepository\r\n{\r\n constructor(readonly firestore: FirebaseFirestore) {\r\n super()\r\n this.collectionName = 'dms'\r\n this.model = Home\r\n }\r\n\r\n buildModelInstance(): {\r\n toFirestore: (data: Home) => DocumentData\r\n fromFirestore: (snap: QueryDocumentSnapshot<Home>) => Home\r\n } {\r\n const { fromFirestore, toFirestore } = super.buildModelInstance()\r\n\r\n return {\r\n toFirestore: (data: Home): DocumentData => {\r\n const modifiedData = this.homeToFirestore(data)\r\n\r\n return toFirestore(modifiedData)\r\n },\r\n fromFirestore: (snap: QueryDocumentSnapshot<Home>): Home => {\r\n const instance = fromFirestore(snap)\r\n\r\n return this.homeFromFirestore(instance)\r\n },\r\n }\r\n }\r\n\r\n private homeToFirestore = (home: Home): Home => {\r\n if (home.data?.data) {\r\n home.data.data.discoverProducts = home.data.data.discoverProducts.map(this.homeCategoryGroupToPlain)\r\n home.data.data.featuredProducts = home.data.data.featuredProducts.map(this.homeCategoryGroupToPlain)\r\n home.data.data.verticalProducts = home.data.data.verticalProducts.map(this.homeCategoryGroupToPlain)\r\n }\r\n\r\n return home\r\n }\r\n\r\n private homeCategoryGroupToPlain = (homeCategoryGroup: HomeCategoryGroup) => ({\r\n category: homeCategoryGroup.category.toPlain(),\r\n products: homeCategoryGroup.products.map((product) => product.toPlain()),\r\n })\r\n\r\n private homeFromFirestore = (home: Home): Home => {\r\n if (home.data?.data) {\r\n home.data.data.discoverProducts = home.data.data.discoverProducts.map(this.plainToHomeCategoryGroup)\r\n home.data.data.featuredProducts = home.data.data.featuredProducts.map(this.plainToHomeCategoryGroup)\r\n home.data.data.verticalProducts = home.data.data.verticalProducts.map(this.plainToHomeCategoryGroup)\r\n home.data.createdAt =\r\n home.data.createdAt instanceof firebase.firestore.Timestamp ? home.data.createdAt.toDate() : home.data.createdAt\r\n home.data.expiresAt =\r\n home.data.expiresAt instanceof firebase.firestore.Timestamp ? home.data.expiresAt.toDate() : home.data.expiresAt\r\n }\r\n\r\n return home\r\n }\r\n\r\n private plainToHomeCategoryGroup = (homeCategoryGroup: HomeCategoryGroup) => ({\r\n category: Category.toInstance(homeCategoryGroup.category),\r\n products: homeCategoryGroup.products.map((product) => Product.toInstance(product)),\r\n })\r\n}\r\n","import { FirebaseFirestore } from '@firebase/firestore-types'\r\nimport { ShopMenu, ShopMenuRepository } from '../../../../../domain'\r\n\r\nimport { Base } from '../../../../../utils'\r\n\r\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\r\n\r\nexport class ShopMenuFirestoreRepository\r\n extends withCrudFirestore(withHelpers(withFirestore<ShopMenu>(Base)))\r\n implements ShopMenuRepository {\r\n constructor(readonly firestore: FirebaseFirestore) {\r\n super()\r\n this.collectionName = 'shopMenus'\r\n this.model = ShopMenu\r\n }\r\n}\r\n","import { FirebaseFirestore } from '@firebase/firestore-types'\r\nimport { ShopSettings, ShopSettingsRepository } from '../../../../../domain'\r\n\r\nimport { Base } from '../../../../../utils'\r\n\r\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\r\n\r\nexport class ShopSettingsFirestoreRepository\r\n extends withCrudFirestore(withHelpers(withFirestore<ShopSettings>(Base)))\r\n implements ShopSettingsRepository\r\n{\r\n constructor(readonly firestore: FirebaseFirestore) {\r\n super()\r\n this.collectionName = 'shopSettings'\r\n this.model = ShopSettings\r\n }\r\n}\r\n","import firebase from 'firebase'\r\n\r\nimport { AuthenticationService, BasicUserData, LoginAndPasswordParams } from '../../../domain'\r\n\r\nimport { FirebaseUserWithId } from './types/firebase-user-with-id.type'\r\n\r\nexport class AuthenticationFirebaseAuthService implements AuthenticationService {\r\n constructor(private readonly firebaseAuth: firebase.auth.Auth) {}\r\n\r\n async signInWithEmailAndPassword(data: LoginAndPasswordParams): Promise<BasicUserData> {\r\n const credentials = await this.firebaseAuth.signInWithEmailAndPassword(data.email, data.password)\r\n const user = credentials.user\r\n\r\n return {\r\n id: user.uid,\r\n displayName: user.displayName,\r\n email: user.email,\r\n phone: user.phoneNumber,\r\n isAnonymous: false,\r\n }\r\n }\r\n\r\n async signInWithGoogle(): Promise<BasicUserData> {\r\n const credentials = await this.firebaseAuth.signInWithPopup(new firebase.auth.GoogleAuthProvider())\r\n const user = credentials.user\r\n\r\n return {\r\n id: user.uid,\r\n displayName: user.displayName,\r\n email: user.email,\r\n phone: user.phoneNumber,\r\n isAnonymous: false,\r\n }\r\n }\r\n\r\n async signOut(): Promise<void> {\r\n this.firebaseAuth.signOut()\r\n }\r\n\r\n async signInAnonymously(): Promise<FirebaseUserWithId> {\r\n const auth = await this.firebaseAuth.signInAnonymously()\r\n const user = auth.user as FirebaseUserWithId\r\n\r\n user.id = auth.user.uid\r\n\r\n return user\r\n }\r\n\r\n async sendPasswordResetEmail(email: string): Promise<void> {\r\n return this.firebaseAuth.sendPasswordResetEmail(email)\r\n }\r\n}\r\n","import firebase from 'firebase'\r\n\r\nimport { RegisterParams, RegisterService, UserAlreadyRegisteredError, WeakPasswordError } from '../../../domain'\r\n\r\nimport { FirebaseUserWithId } from './types/firebase-user-with-id.type'\r\n\r\nexport class RegisterFirebaseAuthService implements RegisterService {\r\n constructor(private readonly firebaseAuth: firebase.auth.Auth) {}\r\n\r\n async register(params: RegisterParams): Promise<FirebaseUserWithId> {\r\n try {\r\n const auth = await this.firebaseAuth.createUserWithEmailAndPassword(params.email, params.password)\r\n const user = auth.user as FirebaseUserWithId\r\n\r\n user.sendEmailVerification()\r\n user.id = auth.user.uid\r\n\r\n return user\r\n } catch (error) {\r\n if (error.code === 'auth/email-already-in-use') throw new UserAlreadyRegisteredError('Email already registered')\r\n if (error.code === 'auth/weak-password') throw new WeakPasswordError()\r\n\r\n throw error\r\n }\r\n }\r\n}\r\n","import { ModelBaseStructure, NonFunctionAndIdentifierPropertyNames } from '../../../../domain'\r\nimport { isNil, isObject } from '../../../../utils'\r\nimport { ColumnOptions, HasuraGraphQLFields } from '../../types'\r\n\r\ntype FindByAttributeResult<\r\n MBase extends ModelBaseStructure<MBase>,\r\n Attribute extends NonFunctionAndIdentifierPropertyNames<MBase>,\r\n> = ColumnOptions<MBase[Attribute], MBase> & { attributeName: Attribute }\r\n\r\nexport class AttributeOptionHelper {\r\n static FindByAttribute = <\r\n MBase extends ModelBaseStructure,\r\n Attribute extends NonFunctionAndIdentifierPropertyNames<MBase> = NonFunctionAndIdentifierPropertyNames<MBase>,\r\n >(\r\n attributeName: Attribute,\r\n fields: HasuraGraphQLFields<MBase>,\r\n ): FindByAttributeResult<MBase, Attribute> => {\r\n if (fields.includes(attributeName as any)) return { columnName: attributeName.toString(), attributeName }\r\n\r\n const field = fields.find(\r\n (columnOption) => isObject(columnOption) && Object.keys(columnOption).includes(attributeName.toString()),\r\n )\r\n const fieldOption = field?.[attributeName.toString()]\r\n\r\n if (isNil(fieldOption)) return { columnName: attributeName.toString(), attributeName }\r\n if (Array.isArray(fieldOption)) return { columnName: attributeName.toString(), attributeName, fields: fieldOption }\r\n\r\n return { attributeName, columnName: attributeName.toString(), ...fieldOption }\r\n }\r\n\r\n static CheckIsColumnOption = <Model extends ModelBaseStructure, ParentModel extends ModelBaseStructure>(\r\n fieldValue: ColumnOptions<Model, ParentModel>,\r\n ): fieldValue is ColumnOptions<Model, ParentModel> => !!fieldValue.columnName\r\n\r\n static FindColumnOptionFromList = <Model extends ModelBaseStructure, ParentModel extends ModelBaseStructure>(\r\n columnName: string,\r\n fields: HasuraGraphQLFields<ParentModel>,\r\n ): ColumnOptions<Model, ParentModel> & { attributeName: NonFunctionAndIdentifierPropertyNames<ParentModel> } => {\r\n if (fields.includes(columnName as any))\r\n return { columnName, attributeName: columnName as NonFunctionAndIdentifierPropertyNames<ParentModel> }\r\n\r\n const field =\r\n fields.find(\r\n (columnOption) =>\r\n isObject(columnOption) &&\r\n Object.values(columnOption).find(\r\n (option) => AttributeOptionHelper.CheckIsColumnOption(option) && option.columnName === columnName,\r\n )?.columnName === columnName,\r\n ) || {}\r\n const attributeName = Object.keys(field).find(\r\n (fieldOptionFromList) =>\r\n AttributeOptionHelper.CheckIsColumnOption(field[fieldOptionFromList]) ||\r\n Array.isArray(field[fieldOptionFromList]),\r\n )\r\n const fieldOption = field?.[attributeName]\r\n\r\n if (Array.isArray(fieldOption))\r\n return { attributeName: attributeName as NonFunctionAndIdentifierPropertyNames<ParentModel>, fields: fieldOption }\r\n\r\n return {\r\n attributeName: (attributeName as NonFunctionAndIdentifierPropertyNames<ParentModel>) || columnName,\r\n columnName,\r\n ...fieldOption,\r\n }\r\n }\r\n}\r\n","export enum HasuraGraphQLWhere {\r\n EQUALS = '_eq',\r\n GT = '_gt',\r\n GTE = '_gte',\r\n IN = '_in',\r\n NOTIN = '_nin',\r\n LT = '_lt',\r\n LTE = '_lte',\r\n LIKE = '_like',\r\n NOTLIKE = '_nlike',\r\n ISNULL = '_is_null',\r\n ISNOTNULL = '_is_null',\r\n}\r\n","export enum HasuraGraphQLColumnType {\r\n Int = 'Int',\r\n Float = 'Float',\r\n Boolean = 'Boolean',\r\n String = 'String',\r\n DateTime = 'timestampz',\r\n Json = 'json',\r\n Jsonb = 'jsonb',\r\n Enum = 'enum',\r\n Uuid = 'uuid',\r\n}\r\n","import { ModelBaseStructure, RepositoryFindFieltersOptions, Where } from '../../../../domain'\r\nimport { isNil } from '../../../../utils'\r\nimport { ColumnOptions } from '../../types'\r\n\r\nexport class FilterOptionHelper {\r\n static CheckIfIsFilterOption = <Model extends ModelBaseStructure>(\r\n filter: any,\r\n ): filter is RepositoryFindFieltersOptions<Model, any> => !isNil(filter?.operator)\r\n\r\n static GetValueFromFilter = <Model extends ModelBaseStructure>(\r\n filter: RepositoryFindFieltersOptions<Model, any>,\r\n fieldOption: ColumnOptions<any, any>,\r\n ): any => {\r\n if (!FilterOptionHelper.CheckIfIsFilterOption(filter)) return filter\r\n if (filter.operator === Where.ISNULL) return true\r\n if (filter.operator === Where.ISNOTNULL) return false\r\n\r\n const converter = fieldOption.to\r\n ? fieldOption.to\r\n : (value) =>\r\n filter.operator === Where.LIKE && !Array.isArray(filter.value) && value.indexOf('%') < 0\r\n ? `%${value}%`\r\n : value\r\n\r\n return Array.isArray(filter.value) && !fieldOption.fields && [Where.IN, Where.NOTIN].includes(filter.operator)\r\n ? filter.value.map((fieldValue) => converter(fieldValue))\r\n : converter(filter.value as any)\r\n }\r\n}\r\n","import {\r\n ModelBaseStructure,\r\n NonFunctionAndIdentifierPropertyNames,\r\n NonFunctionPropertyNames,\r\n RepositoryFindFielters,\r\n RepositoryFindFieltersOptions,\r\n Where,\r\n} from '../../../../domain'\r\nimport { isNil, isObject } from '../../../../utils'\r\nimport { HasuraGraphQLColumnType, HasuraGraphQLWhere } from '../../enums'\r\nimport { ColumnOptions, HasuraGraphQLFields, VariableOptions } from '../../types'\r\nimport { AttributeOptionHelper } from './attribute-option.helper'\r\nimport { FilterOptionHelper } from './filter-option.helper'\r\n\r\nexport class BindFilterQueryHelper {\r\n static MakeGraphQLWhere = <MBase extends ModelBaseStructure>(\r\n filter: RepositoryFindFielters<MBase>,\r\n fields: HasuraGraphQLFields<MBase>,\r\n ): VariableOptions =>\r\n Object.keys(filter).reduce((variables: VariableOptions, fieldName: string) => {\r\n const columnOption = AttributeOptionHelper.FindByAttribute(\r\n fieldName as NonFunctionAndIdentifierPropertyNames<MBase>,\r\n fields,\r\n )\r\n\r\n if (!columnOption.bindFindFilter)\r\n return {\r\n ...variables,\r\n ...{\r\n [columnOption.columnName]: BindFilterQueryHelper.BuildWhereSentence(\r\n fieldName as NonFunctionAndIdentifierPropertyNames<MBase>,\r\n filter[fieldName],\r\n fields,\r\n ),\r\n },\r\n }\r\n\r\n const builtFilter: RepositoryFindFieltersOptions<\r\n MBase,\r\n NonFunctionPropertyNames<MBase>\r\n > = columnOption.bindFindFilter(filter[fieldName])\r\n\r\n return {\r\n ...variables,\r\n ...Object.keys(builtFilter).reduce(\r\n (variablesList: VariableOptions, columnName: string) => ({\r\n ...variablesList,\r\n [columnName]: BindFilterQueryHelper.BuildWhereSentence(\r\n fieldName as NonFunctionAndIdentifierPropertyNames<MBase>,\r\n builtFilter[columnName],\r\n fields,\r\n ),\r\n }),\r\n {},\r\n ),\r\n }\r\n }, {})\r\n\r\n static BuildWhereSentence = <MBase extends ModelBaseStructure>(\r\n field: NonFunctionAndIdentifierPropertyNames<MBase>,\r\n options: RepositoryFindFieltersOptions<MBase, NonFunctionPropertyNames<MBase>>,\r\n fields: HasuraGraphQLFields<MBase>,\r\n ): VariableOptions => {\r\n const fieldSentenceOptions = AttributeOptionHelper.FindByAttribute<MBase>(field, fields)\r\n\r\n if (\r\n !Array.isArray(options) &&\r\n isObject(options) &&\r\n isNil(options?.operator) &&\r\n isNil(options?.value) &&\r\n isNil(fieldSentenceOptions?.to)\r\n )\r\n return Object.keys(options).reduce((variables, key) => {\r\n const fieldOptions = AttributeOptionHelper.FindByAttribute<MBase>(\r\n key as NonFunctionAndIdentifierPropertyNames<MBase>,\r\n fieldSentenceOptions?.fields || (fields as any),\r\n )\r\n const columnName = fieldOptions.columnName\r\n const columnFields = fieldOptions.fields\r\n\r\n return {\r\n ...variables,\r\n [columnName]: BindFilterQueryHelper.BuildWhereSentence<MBase>(\r\n key as NonFunctionAndIdentifierPropertyNames<MBase>,\r\n options[key],\r\n columnFields || ([] as any),\r\n ),\r\n }\r\n }, {})\r\n\r\n if (!Array.isArray(options) && !isNil(fieldSentenceOptions.fields))\r\n return {\r\n [fieldSentenceOptions.fields[0] as NonFunctionAndIdentifierPropertyNames<MBase>]:\r\n BindFilterQueryHelper.BuildOperatorSentence(\r\n options,\r\n fieldSentenceOptions as ColumnOptions<MBase[NonFunctionAndIdentifierPropertyNames<MBase>], MBase>,\r\n ),\r\n }\r\n\r\n if (isObject(options) && !FilterOptionHelper.CheckIfIsFilterOption(options))\r\n options = Object.values(options)[0] as RepositoryFindFieltersOptions<MBase, any>\r\n\r\n return Array.isArray(options)\r\n ? options.reduce(\r\n (whereSentence, option) => ({\r\n ...whereSentence,\r\n ...BindFilterQueryHelper.BuildOperatorSentence(\r\n option,\r\n fieldSentenceOptions as ColumnOptions<MBase[NonFunctionAndIdentifierPropertyNames<MBase>], MBase>,\r\n ),\r\n }),\r\n {},\r\n )\r\n : BindFilterQueryHelper.BuildOperatorSentence(\r\n options,\r\n fieldSentenceOptions as ColumnOptions<MBase[NonFunctionAndIdentifierPropertyNames<MBase>], MBase>,\r\n )\r\n }\r\n\r\n static BuildOperatorSentence = <MBase extends ModelBaseStructure>(\r\n options: RepositoryFindFieltersOptions<MBase, any>,\r\n fieldOption: ColumnOptions<any, any>,\r\n ): VariableOptions => ({\r\n [BindFilterQueryHelper.GetHasuraOperator(options, fieldOption)]: FilterOptionHelper.GetValueFromFilter(\r\n options,\r\n fieldOption,\r\n ),\r\n })\r\n\r\n static GetHasuraOperator = <MBase extends ModelBaseStructure>(\r\n options: RepositoryFindFieltersOptions<MBase, NonFunctionPropertyNames<MBase>>,\r\n fieldOption: ColumnOptions<any, any>,\r\n ): HasuraGraphQLWhere =>\r\n FilterOptionHelper.CheckIfIsFilterOption(options)\r\n ? fieldOption.type === HasuraGraphQLColumnType.Jsonb\r\n ? BindFilterQueryHelper.GetHasuraJsonbOperator(options)\r\n : HasuraGraphQLWhere[\r\n Object.keys(HasuraGraphQLWhere).find(\r\n (graphQLOperator) =>\r\n graphQLOperator === Object.keys(Where).find((operator) => Where[operator] === options?.operator),\r\n )\r\n ]\r\n : HasuraGraphQLWhere.EQUALS\r\n\r\n static GetHasuraJsonbOperator = <MBase extends ModelBaseStructure>(\r\n options: RepositoryFindFieltersOptions<MBase, NonFunctionPropertyNames<MBase>>,\r\n ): HasuraGraphQLWhere =>\r\n options.operator === Where.IN\r\n ? '_contains'\r\n : options.operator === Where.LIKE\r\n ? '_has_keys_any'\r\n : HasuraGraphQLWhere[\r\n Object.keys(HasuraGraphQLWhere).find(\r\n (graphQLOperator) =>\r\n graphQLOperator === Object.keys(Where).find((operator) => Where[operator] === options?.operator),\r\n )\r\n ]\r\n}\r\n","import {\r\n BaseModel,\r\n ModelBaseStructure,\r\n NonFunctionAndIdentifierPropertyNames,\r\n NonFunctionProperties,\r\n} from '../../../../domain'\r\nimport { isDate, isEmpty, isNil, isObject, isString, parseDateTime } from '../../../../utils'\r\nimport { Fields, GraphQLParams, HasuraGraphQLFields } from '../../types'\r\n\r\nimport { AttributeOptionHelper } from './attribute-option.helper'\r\nimport { BindFilterQueryHelper } from './bind-filter-query.helper'\r\n\r\nexport class GraphQLFieldHelper {\r\n static CheckIsGraphQLParams = <Model extends ModelBaseStructure>(\r\n params: string | GraphQLParams<Model>[],\r\n ): params is GraphQLParams<Model>[] =>\r\n !isString(params) && Array.isArray(params) && params.length >= 0 && !!params[0].operation\r\n\r\n static ConvertModelFieldsToGraphQLFields = <Model extends ModelBaseStructure>(\r\n fields: HasuraGraphQLFields<Model>,\r\n ): Fields => {\r\n return fields\r\n ?.map((field) => {\r\n if (isString(field)) return field.toString()\r\n\r\n const fieldName = Object.keys(field).shift()\r\n const fieldValue = field[fieldName]\r\n\r\n if (Array.isArray(fieldValue))\r\n return { [fieldName]: GraphQLFieldHelper.ConvertModelFieldsToGraphQLFields(fieldValue) }\r\n if (!AttributeOptionHelper.CheckIsColumnOption(fieldValue)) return\r\n if (fieldValue.fields)\r\n return !fieldValue.filters\r\n ? {\r\n [fieldValue.columnName || fieldName]: GraphQLFieldHelper.ConvertModelFieldsToGraphQLFields(\r\n fieldValue.fields,\r\n ),\r\n }\r\n : {\r\n operation: fieldValue.columnName || fieldName,\r\n fields: GraphQLFieldHelper.ConvertModelFieldsToGraphQLFields(fieldValue.fields),\r\n variables: {\r\n [`${fieldValue.columnName}_where`]: {\r\n name: 'where',\r\n type: fieldValue.filters.filterType,\r\n value: BindFilterQueryHelper.MakeGraphQLWhere(fieldValue.filters.filters, fieldValue.fields),\r\n required: true,\r\n },\r\n },\r\n }\r\n\r\n return fieldValue.columnName\r\n })\r\n .filter((field) => !!field)\r\n }\r\n\r\n static ConvertFieldValueFrom = <\r\n Model extends ModelBaseStructure,\r\n DataType extends Record<string, string | number | DataType | Date>,\r\n >(\r\n data: string | number | DataType | Date,\r\n fields: HasuraGraphQLFields<Model>,\r\n ): Partial<NonFunctionProperties<Model>> =>\r\n Object.keys(data).reduce((result, columnName) => {\r\n const {\r\n attributeName,\r\n fields: attributeFields,\r\n from,\r\n } = AttributeOptionHelper.FindColumnOptionFromList(columnName, fields)\r\n\r\n if (!!attributeFields && Array.isArray(attributeFields)) {\r\n if (Array.isArray(data[columnName]))\r\n return {\r\n ...result,\r\n [attributeName]: from\r\n ? from(data[columnName], data)\r\n : data[columnName].map((value) => GraphQLFieldHelper.ConvertFieldValueFrom(value, attributeFields)),\r\n }\r\n if (isObject(data[columnName]))\r\n return {\r\n ...result,\r\n [attributeName]: !!from\r\n ? from(data[columnName])\r\n : GraphQLFieldHelper.ConvertFieldValueFrom(data[columnName], attributeFields),\r\n }\r\n }\r\n\r\n if (!!from) return { ...result, [attributeName]: from(data[columnName], data) }\r\n\r\n return { ...result, [attributeName]: parseDateTime(data[columnName]) }\r\n }, {})\r\n\r\n static ConvertFieldValueTo = <\r\n Model extends ModelBaseStructure,\r\n DataType extends Record<string, string | number | DataType | Date>,\r\n >(\r\n instance: Model,\r\n fields: HasuraGraphQLFields<Model>,\r\n update = false,\r\n ): DataType => {\r\n const data: Partial<ModelBaseStructure> = instance.toPlain?.() || instance\r\n\r\n return Object.keys(data).reduce((result, attributeName) => {\r\n const {\r\n columnName,\r\n fields: attributeFields,\r\n foreignKeyColumn,\r\n to,\r\n bindPersistData,\r\n } = AttributeOptionHelper.FindByAttribute(attributeName as NonFunctionAndIdentifierPropertyNames<Model>, fields)\r\n\r\n if (bindPersistData) return { ...result, ...bindPersistData(data[attributeName], instance) }\r\n if (isNil(columnName)) return result\r\n if (\r\n !!foreignKeyColumn &&\r\n !isEmpty(foreignKeyColumn) &&\r\n !Object.keys(foreignKeyColumn).filter((key) => !data[attributeName]?.[key]).length\r\n )\r\n return Object.keys(foreignKeyColumn).reduce(\r\n (object, current) => ({ ...object, [foreignKeyColumn[current]]: data[attributeName]?.[current] }),\r\n { ...result },\r\n )\r\n\r\n if (update && isObject(data[attributeName]) && !isNil(attributeFields) && !isDate(data[attributeName]))\r\n return result\r\n\r\n if (!!columnName && Array.isArray(attributeFields) && isObject(data[attributeName])) {\r\n const converted = !isNil(columnName) && to ? to(instance[attributeName], instance) : data[attributeName]\r\n\r\n return {\r\n ...result,\r\n ...(converted !== undefined\r\n ? {\r\n [columnName]: {\r\n data:\r\n instance[attributeName] instanceof BaseModel\r\n ? GraphQLFieldHelper.ConvertFieldValueTo(data[attributeName], attributeFields)\r\n : converted,\r\n },\r\n }\r\n : {}),\r\n }\r\n }\r\n\r\n if (!!to) return { ...result, [columnName]: to(instance[attributeName], instance) }\r\n\r\n return { ...result, [columnName]: data[attributeName] }\r\n }, {} as DataType)\r\n }\r\n}\r\n","import { CreateRepository, CreateRepositoryParams, ModelBaseStructure } from '../../../domain'\r\nimport { MergeConstructorParams, MixinCtor } from '../../../utils'\r\nimport { GraphQLRepository, HasuraGraphQLFields } from '../types'\r\n\r\nimport { AttributeOptionHelper } from './helpers'\r\n\r\nexport type CreateConstructorParams = {\r\n insertGraphQLOperation?: string\r\n insertGraphQLObjectType?: string\r\n}\r\n\r\nexport const withCreateHasuraGraphQL = <\r\n MBase extends ModelBaseStructure,\r\n TMixinBase extends MixinCtor<GraphQLRepository<MBase>>,\r\n>(\r\n MixinBase: MixinCtor<GraphQLRepository<MBase>> & TMixinBase,\r\n): MixinCtor<\r\n GraphQLRepository<MBase> & InstanceType<TMixinBase> & CreateRepository<MBase>,\r\n MergeConstructorParams<CreateConstructorParams, ConstructorParameters<TMixinBase>>\r\n> => {\r\n return class CreateHasuraGraphQLMixin extends MixinBase implements CreateRepository<MBase> {\r\n insertGraphQLOperation: string\r\n insertGraphQLObjectType: string\r\n\r\n constructor(...params) {\r\n const options: CreateConstructorParams = params?.[0]\r\n\r\n super(...params)\r\n\r\n this.insertGraphQLOperation = options?.insertGraphQLOperation || `insert_${this.tableName}_one`\r\n this.insertGraphQLObjectType = options?.insertGraphQLObjectType || `${this.tableName}_insert_input`\r\n }\r\n\r\n async create(data: CreateRepositoryParams<MBase>): Promise<MBase> {\r\n const newData = await this.save(this.model.toInstance(data as any))\r\n\r\n return this.model.toInstance(newData)\r\n }\r\n\r\n async save(data: MBase): Promise<Partial<MBase>> {\r\n const primaryKeyColumns = this.model.identifiersFields.map(\r\n (field) => AttributeOptionHelper.FindByAttribute(field, this.fields).columnName,\r\n ) as HasuraGraphQLFields<MBase>\r\n const foreignKeyColumns = this.fields\r\n .map((field) => {\r\n const columnOptions = Object.values(field).shift()\r\n\r\n return (\r\n AttributeOptionHelper.CheckIsColumnOption(columnOptions) &&\r\n columnOptions.foreignKeyColumn && [\r\n ...Object.values(columnOptions.foreignKeyColumn),\r\n {\r\n [columnOptions.columnName]: Object.keys(columnOptions.foreignKeyColumn).map(\r\n (foreignKeyField) =>\r\n AttributeOptionHelper.FindByAttribute(foreignKeyField as any, columnOptions?.fields)?.columnName ||\r\n foreignKeyField,\r\n ),\r\n },\r\n ]\r\n )\r\n })\r\n .filter(Boolean)\r\n .reduce((keys, current) => [...keys, ...current], [])\r\n\r\n const result = await this.mutation<MBase>(\r\n this.insertGraphQLOperation,\r\n [...primaryKeyColumns, ...foreignKeyColumns] as HasuraGraphQLFields<MBase>,\r\n {\r\n object: { type: this.insertGraphQLObjectType, required: true, value: this.convertDataToHasura(data) },\r\n },\r\n )\r\n\r\n return { ...data.toPlain(), ...this.convertDataFromHasura(result[this.insertGraphQLOperation]).toPlain() }\r\n }\r\n } as any\r\n}\r\n","import { DeleteRepository, DeleteRepositoryParams, ModelBaseStructure } from '../../../domain'\r\nimport { GraphQLRepository, HasuraGraphQLFields } from '../types'\r\nimport { isNil, MergeConstructorParams, MixinCtor } from '../../../utils'\r\n\r\nimport { AttributeOptionHelper } from './helpers'\r\n\r\nexport type DeleteConstructorParams = {\r\n deleteGraphQLOperation?: string\r\n}\r\n\r\nexport const withDeleteHasuraGraphQL = <\r\n MBase extends ModelBaseStructure,\r\n TMixinBase extends MixinCtor<GraphQLRepository<MBase>>,\r\n>(\r\n MixinBase: MixinCtor<GraphQLRepository<MBase>> & TMixinBase,\r\n): MixinCtor<\r\n GraphQLRepository<MBase> & DeleteRepository<MBase> & InstanceType<TMixinBase>,\r\n MergeConstructorParams<DeleteConstructorParams, ConstructorParameters<TMixinBase>>\r\n> => {\r\n return class DeleteHasuraGraphQLMixin extends MixinBase implements DeleteRepository<MBase> {\r\n deleteGraphQLOperation: string\r\n\r\n constructor(...params: any[]) {\r\n const options: DeleteConstructorParams = params?.[0]\r\n\r\n super(...params)\r\n\r\n this.deleteGraphQLOperation = options?.deleteGraphQLOperation || `delete_${this.tableName}_by_pk`\r\n }\r\n\r\n async delete(identifiers: DeleteRepositoryParams<MBase>): Promise<void> {\r\n const instance = this.model.toInstance(identifiers as any)\r\n\r\n await this.mutation(\r\n this.deleteGraphQLOperation,\r\n this.model.identifiersFields.map(\r\n (field) => AttributeOptionHelper.FindByAttribute(field, this.fields).columnName,\r\n ) as HasuraGraphQLFields<MBase>,\r\n this.model.identifiersFields.reduce((ids, identifier) => {\r\n if (isNil(instance[identifier])) return ids\r\n\r\n const columnOption = AttributeOptionHelper.FindByAttribute(identifier, this.fields)\r\n const value = columnOption.to(identifiers[identifier.toString()], instance)\r\n\r\n return {\r\n ...ids,\r\n [columnOption.columnName]: {\r\n type: this.getAttributeGraphQLTypeOf(columnOption.type || value),\r\n value,\r\n required: true,\r\n },\r\n }\r\n }, {}),\r\n )\r\n }\r\n } as any\r\n}\r\n","import { mutation, query } from 'gql-query-builder'\r\nimport fetch from 'node-fetch'\r\n\r\nimport { BaseModelBuilder, ModelBaseStructure } from '../../../domain'\r\nimport {\r\n isBoolean,\r\n isInteger,\r\n isNaN,\r\n isNil,\r\n isNumber,\r\n isString,\r\n isUUID,\r\n MergeConstructorParams,\r\n MixinCtor,\r\n parseISO,\r\n} from '../../../utils'\r\nimport {\r\n GraphQLParams,\r\n GraphQLRepository,\r\n HasuraGraphQLAuthOptions,\r\n HasuraGraphQLFields,\r\n HasuraGraphQLHeaders,\r\n VariableOptions,\r\n} from '../types'\r\n\r\nimport { GraphQLFieldHelper } from './helpers'\r\n\r\nexport type ConstructorParams<Model extends ModelBaseStructure> = {\r\n tableName: string\r\n model: BaseModelBuilder<Model>\r\n fields: HasuraGraphQLFields<Model>\r\n endpoint: string\r\n authOptions: HasuraGraphQLAuthOptions\r\n}\r\n\r\nexport const withHasuraGraphQL = <MBase extends ModelBaseStructure, T extends MixinCtor = MixinCtor>(\r\n MixinBase: T,\r\n): MixinCtor<GraphQLRepository<MBase>, MergeConstructorParams<ConstructorParams<MBase>, ConstructorParameters<T>>> => {\r\n return class HasuraGraphQLMixin extends MixinBase implements GraphQLRepository<MBase> {\r\n tableName: string\r\n endpoint: string\r\n authOptions: HasuraGraphQLAuthOptions\r\n model: BaseModelBuilder<MBase>\r\n fields: HasuraGraphQLFields<MBase>\r\n\r\n get headers(): HasuraGraphQLHeaders {\r\n return {\r\n 'Content-Type': 'application/json',\r\n ...(isNil(this.authOptions.authToken) ? {} : { Authorization: this.authOptions.authToken }),\r\n ...(isNil(this.authOptions.adminSecret) ? {} : { 'X-Hasura-Admin-Secret': this.authOptions.adminSecret }),\r\n ...(isNil(this.authOptions.authRole)\r\n ? {}\r\n : { 'X-Hasura-Role': this.authOptions.authRole.role, 'X-Hasura-User-Id': this.authOptions.authRole.userId }),\r\n }\r\n }\r\n\r\n constructor(...params) {\r\n const options: ConstructorParams<MBase> = params[0]\r\n\r\n super(...params)\r\n\r\n this.tableName = options.tableName\r\n this.endpoint = options.endpoint\r\n this.authOptions = options.authOptions\r\n this.model = options.model\r\n this.fields = options.fields || (this.model.identifiersFields as HasuraGraphQLFields<MBase>)\r\n }\r\n\r\n async mutation<ReturnFields = any>(\r\n operation: string,\r\n fields?: HasuraGraphQLFields<MBase>,\r\n variables?: VariableOptions,\r\n ): Promise<ReturnFields> {\r\n const resultQuery = mutation({\r\n operation,\r\n variables,\r\n fields: GraphQLFieldHelper.ConvertModelFieldsToGraphQLFields(fields),\r\n })\r\n\r\n return this.fetch(resultQuery)\r\n }\r\n\r\n async query<ReturnFields = any>(\r\n operation: string | GraphQLParams<MBase>[],\r\n fields?: HasuraGraphQLFields<MBase>,\r\n variables?: VariableOptions,\r\n ): Promise<ReturnFields> {\r\n const resultQuery = GraphQLFieldHelper.CheckIsGraphQLParams(operation)\r\n ? query(\r\n operation.map((option) => ({\r\n operation: option.operation,\r\n variables: option.variables,\r\n fields: GraphQLFieldHelper.ConvertModelFieldsToGraphQLFields(option.fields),\r\n })),\r\n )\r\n : query({\r\n operation,\r\n variables,\r\n fields: GraphQLFieldHelper.ConvertModelFieldsToGraphQLFields(fields),\r\n })\r\n\r\n return this.fetch(resultQuery)\r\n }\r\n\r\n async fetch<ReturnFields = any>(params: { variables: any; query: string }): Promise<ReturnFields> {\r\n const headers = this.headers\r\n const response = await fetch(`${this.endpoint}`, {\r\n method: 'POST',\r\n body: JSON.stringify(params),\r\n headers,\r\n })\r\n const result: any = await response.json()\r\n\r\n if (!isNil(result.errors)) throw new Error(JSON.stringify(result.errors))\r\n\r\n return result.data\r\n }\r\n\r\n getAttributeGraphQLTypeOf<FieldType>(value: FieldType): string {\r\n if (isUUID(value as any)) return 'uuid'\r\n if (isString(value)) return 'String'\r\n if (isBoolean(value)) return 'Boolean'\r\n if (value instanceof Date) return 'timestamptz'\r\n if (isInteger(value)) return 'Int'\r\n if (isNumber(value)) return 'numeric'\r\n\r\n throw new Error('Type not implemented yet')\r\n }\r\n\r\n checkIfIsDateTimeAndParse(value: string): Date | string {\r\n if (!/^\\d{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$/.test(value)) return value\r\n\r\n const date = parseISO(value)\r\n\r\n if (isNaN(date.getTime())) return value\r\n\r\n return date\r\n }\r\n\r\n convertDataFromHasura(data: Record<string, string | number>): MBase {\r\n const plain = GraphQLFieldHelper.ConvertFieldValueFrom(data, this.fields)\r\n\r\n return this.model.toInstance(plain)\r\n }\r\n\r\n convertDataToHasura(instance: MBase, update = false): Record<string, string | number> {\r\n return GraphQLFieldHelper.ConvertFieldValueTo(instance, this.fields, update)\r\n }\r\n }\r\n}\r\n","import {\r\n BaseModel,\r\n ModelBaseStructure,\r\n NonFunctionAndIdentifierProperties,\r\n RepositoryUpdateParams,\r\n UpdateOptionActions,\r\n UpdateOptions,\r\n UpdateRepository,\r\n} from '../../../domain'\r\nimport { isNil, MergeConstructorParams, MixinCtor } from '../../../utils'\r\nimport { GraphQLRepository, HasuraGraphQLFields } from '../types'\r\n\r\nimport { AttributeOptionHelper } from './helpers'\r\n\r\nexport type UpdateHasuraGraphQLRepositoryType<MBase extends ModelBaseStructure> = UpdateRepository<MBase> & {\r\n paramsToPlain(params: RepositoryUpdateParams<MBase>): Partial<MBase>\r\n}\r\n\r\nexport type UpdateConstructorParams = {\r\n updateGraphQLOperation?: string\r\n updateGraphQLObjectType?: string\r\n updateGraphQLPKType?: string\r\n}\r\n\r\nexport const withUpdateHasuraGraphQL = <\r\n MBase extends ModelBaseStructure,\r\n TMixinBase extends MixinCtor<GraphQLRepository<MBase>>,\r\n>(\r\n MixinBase: MixinCtor<GraphQLRepository<MBase>> & TMixinBase,\r\n): MixinCtor<\r\n GraphQLRepository<MBase> & UpdateHasuraGraphQLRepositoryType<MBase> & InstanceType<TMixinBase>,\r\n MergeConstructorParams<UpdateConstructorParams, ConstructorParameters<TMixinBase>>\r\n> => {\r\n const getValueByAction = (options: UpdateOptions<MBase>): unknown => {\r\n if (options instanceof BaseModel) return options.toPlain()\r\n if (isNil(options?.action)) return options\r\n if ([UpdateOptionActions.REMOVE_FIELD.toString(), UpdateOptionActions.NULL.toString()].includes(options.action))\r\n return null\r\n\r\n return options.value\r\n }\r\n\r\n return class UpdateHasuraGraphQLMixin extends MixinBase implements UpdateRepository<MBase> {\r\n updateGraphQLOperation: string\r\n updateGraphQLObjectType: string\r\n updateGraphQLPKType: string\r\n\r\n constructor(...params) {\r\n const options: UpdateConstructorParams = params?.[0]\r\n\r\n super(...params)\r\n\r\n this.updateGraphQLOperation = options?.updateGraphQLOperation || `update_${this.tableName}_by_pk`\r\n this.updateGraphQLObjectType = options?.updateGraphQLObjectType || `${this.tableName}_set_input`\r\n this.updateGraphQLPKType = options?.updateGraphQLPKType || `${this.tableName}_pk_columns_input`\r\n }\r\n\r\n async update(data: RepositoryUpdateParams<MBase>): Promise<MBase> {\r\n const plainData = this.paramsToPlain(data)\r\n\r\n await this.mutation(\r\n this.updateGraphQLOperation,\r\n this.model.identifiersFields.map(\r\n (field) => AttributeOptionHelper.FindByAttribute(field, this.fields).columnName,\r\n ) as HasuraGraphQLFields<MBase>,\r\n {\r\n _set: {\r\n type: this.updateGraphQLObjectType,\r\n value: this.convertDataToHasura(this.model.toInstance(plainData), true),\r\n required: true,\r\n },\r\n pk_columns: { type: this.updateGraphQLPKType, value: this.getUpdateModelKeys(plainData), required: true },\r\n },\r\n )\r\n\r\n return this.model.toInstance(plainData)\r\n }\r\n\r\n paramsToPlain(params: RepositoryUpdateParams<MBase>): Partial<MBase> {\r\n const model = this.model\r\n\r\n if (model.isModel(params)) return params.toPlain()\r\n\r\n return Object.keys(params).reduce(\r\n (data, currentKey) => ({\r\n ...data,\r\n ...(params[currentKey] !== undefined && { [currentKey]: getValueByAction(params[currentKey]) }),\r\n }),\r\n {},\r\n )\r\n }\r\n\r\n getUpdateModelKeys(data: Partial<MBase>): NonFunctionAndIdentifierProperties<MBase> {\r\n const instance = this.model.toInstance(data)\r\n\r\n return this.model.identifiersFields.reduce((ids, identifier) => {\r\n if (isNil(instance[identifier])) return ids\r\n\r\n const columnOption = AttributeOptionHelper.FindByAttribute(identifier, this.fields)\r\n const value = columnOption?.to?.(data[identifier.toString()], instance) || data[columnOption.attributeName]\r\n\r\n return {\r\n ...ids,\r\n [columnOption.columnName]: value,\r\n }\r\n }, {} as NonFunctionAndIdentifierProperties<MBase>)\r\n }\r\n } as any\r\n}\r\n","import { GetRepository, GetRepositoryParams, ModelBaseStructure } from '../../../domain'\r\nimport { NotFoundError } from '../../../errors'\r\nimport { isNil, MixinCtor } from '../../../utils'\r\nimport { GraphQLRepository } from '../types'\r\n\r\nimport { AttributeOptionHelper } from './helpers'\r\n\r\nexport type GetConstructorParams = {\r\n getGraphQLOperation?: string\r\n}\r\n\r\nexport const withGetHasuraGraphQL = <\r\n MBase extends ModelBaseStructure,\r\n TMixinBase extends MixinCtor<GraphQLRepository<MBase>>,\r\n>(\r\n MixinBase: MixinCtor<GraphQLRepository<MBase>> & TMixinBase,\r\n) => {\r\n return class GetHasuraGraphQLMixin extends MixinBase implements GetRepository<MBase> {\r\n getGraphQLOperation: string\r\n\r\n constructor(...params) {\r\n const options: GetConstructorParams = params?.[0]\r\n\r\n super(...params)\r\n\r\n this.getGraphQLOperation = options?.getGraphQLOperation || `${this.tableName}_by_pk`\r\n }\r\n\r\n async get(identifiers: GetRepositoryParams<MBase>): Promise<MBase> {\r\n const instance = this.model.toInstance(identifiers)\r\n const result = await this.query(\r\n this.getGraphQLOperation,\r\n this.fields,\r\n this.model.identifiersFields.reduce((ids, identifier) => {\r\n if (isNil(instance[identifier])) return ids\r\n\r\n const columnOption = AttributeOptionHelper.FindByAttribute(identifier, this.fields)\r\n const value =\r\n columnOption?.to?.(identifiers[identifier.toString()], instance) || identifiers[identifier.toString()]\r\n\r\n return {\r\n ...ids,\r\n [columnOption.columnName]: {\r\n type: this.getAttributeGraphQLTypeOf(columnOption.type || value),\r\n value,\r\n required: true,\r\n },\r\n }\r\n }, {}),\r\n )\r\n const data = result[this.getGraphQLOperation]\r\n\r\n if (isNil(data)) throw new NotFoundError(`${instance.constructor.name} not found`)\r\n\r\n return this.convertDataFromHasura(result[this.getGraphQLOperation])\r\n }\r\n }\r\n}\r\n","import {\r\n FindRepository,\r\n ModelBaseStructure,\r\n NonFunctionPropertyNames,\r\n RepositoryFindFielters,\r\n RepositoryFindResult,\r\n RepositoryLimitOptions,\r\n RepositoryOrderBy,\r\n} from '../../../domain'\r\nimport { isNil, MixinCtor } from '../../../utils'\r\nimport { GraphQLRepository } from '../types'\r\n\r\nimport { BindFilterQueryHelper } from './helpers'\r\n\r\nexport const withFindHasuraGraphQL = <\r\n MBase extends ModelBaseStructure,\r\n TMixinBase extends MixinCtor<GraphQLRepository<MBase>>,\r\n>(\r\n MixinBase: MixinCtor<GraphQLRepository<MBase>> & TMixinBase,\r\n) => {\r\n return class FindHasuraGraphQLMixin extends MixinBase implements FindRepository<MBase> {\r\n async find(options?: {\r\n filters?: RepositoryFindFielters<MBase>\r\n fields?: NonFunctionPropertyNames<MBase>[]\r\n limits?: RepositoryLimitOptions<MBase>\r\n orderBy?: RepositoryOrderBy<MBase>\r\n }): Promise<RepositoryFindResult<MBase>> {\r\n const { filters, limits, orderBy } = options || {}\r\n const variablesCount = {\r\n ...(isNil(orderBy) ? {} : { order_by: { type: `${this.tableName}_order_by!`, list: true, value: orderBy } }),\r\n ...(isNil(filters)\r\n ? {}\r\n : {\r\n where: {\r\n value: BindFilterQueryHelper.MakeGraphQLWhere(filters, this.fields),\r\n type: `${this.tableName}_bool_exp`,\r\n required: true,\r\n },\r\n }),\r\n }\r\n const variables = {\r\n ...(isNil(limits) ? {} : limits),\r\n ...variablesCount,\r\n }\r\n const result = await this.query([\r\n {\r\n operation: this.tableName,\r\n fields: options.fields\r\n ? options.fields\r\n .map(\r\n (fieldName) =>\r\n this.fields.find((fieldOption) => fieldOption === fieldName) ??\r\n this.fields.find((fieldOption) => Object.keys(fieldOption).shift() === fieldName),\r\n )\r\n .filter(Boolean)\r\n : this.fields,\r\n variables,\r\n },\r\n {\r\n operation: `${this.tableName}_aggregate`,\r\n fields: [{ aggregate: ['count'] }],\r\n variables: variablesCount,\r\n },\r\n ])\r\n const data: MBase[] = result[this.tableName].map((row) => this.convertDataFromHasura(row))\r\n const count = result[`${this.tableName}_aggregate`].aggregate.count\r\n\r\n return { count, data }\r\n }\r\n }\r\n}\r\n","import { ModelBaseStructure, CrudRepository } from '../../../domain'\r\nimport { GraphQLRepository } from '../types'\r\nimport { MergeConstructorParams, MixinCtor } from '../../../utils'\r\n\r\nimport { CreateConstructorParams, withCreateHasuraGraphQL } from './with-create-hasura-graphql.mixin'\r\nimport { ConstructorParams } from './with-hasura-graphql.mixin'\r\nimport { DeleteConstructorParams, withDeleteHasuraGraphQL } from './with-delete-hasura-graphql.mixin'\r\nimport { GetConstructorParams, withGetHasuraGraphQL } from './with-get-hasura-graphql.mixin'\r\nimport {\r\n UpdateConstructorParams,\r\n UpdateHasuraGraphQLRepositoryType,\r\n withUpdateHasuraGraphQL,\r\n} from './with-update-hasura-graphql.mixin'\r\nimport { withFindHasuraGraphQL } from './with-find-hasura-graphql.mixin'\r\n\r\nexport const withCrudHasuraGraphQL = <\r\n TBase extends ModelBaseStructure,\r\n Repository = CrudRepository<TBase>,\r\n TMixinBase extends MixinCtor = MixinCtor,\r\n>(\r\n MixinBase: MixinCtor<GraphQLRepository<TBase>> & TMixinBase,\r\n): MixinCtor<\r\n GraphQLRepository<TBase> & Repository & UpdateHasuraGraphQLRepositoryType<TBase>,\r\n MergeConstructorParams<\r\n ConstructorParams<TBase> &\r\n CreateConstructorParams &\r\n DeleteConstructorParams &\r\n GetConstructorParams &\r\n UpdateConstructorParams,\r\n ConstructorParameters<TMixinBase>\r\n >\r\n> => {\r\n return class CrudHasuraGraphQLMixin\r\n extends withUpdateHasuraGraphQL(\r\n withGetHasuraGraphQL(\r\n withFindHasuraGraphQL(\r\n withDeleteHasuraGraphQL(withCreateHasuraGraphQL(MixinBase as MixinCtor<GraphQLRepository<TBase>>)),\r\n ),\r\n ),\r\n )\r\n implements CrudRepository<TBase> {} as any\r\n}\r\n","import { Category } from '../../../domain'\r\n\r\nexport class CategoryHasuraGraphQL extends Category {\r\n firestoreId?: string\r\n brandCondition?: string\r\n tagCondition?: string[]\r\n}\r\n","import { Type } from 'class-transformer'\r\n\r\nimport { Product } from '../../../domain'\r\n\r\nimport { KitProductHasuraGraphQL } from './kit-product-hasura-graphql'\r\n\r\nexport class ProductHasuraGraphQL extends Product {\r\n firestoreId?: string\r\n fullPrice?: number\r\n subscriberDiscountPercentage?: number\r\n subscriberPrice?: number\r\n productId?: number\r\n differentials?: string\r\n whoMustUse?: string\r\n howToUse?: string\r\n brandDescription?: string\r\n\r\n @Type(() => KitProductHasuraGraphQL)\r\n kitProducts?: KitProductHasuraGraphQL[]\r\n}\r\n","import { Type } from 'class-transformer'\r\n\r\nimport { KitProduct } from '../../../domain'\r\n\r\nimport { ProductHasuraGraphQL } from './product-hasura-graphql'\r\n\r\nexport class KitProductHasuraGraphQL extends KitProduct {\r\n @Type(() => ProductHasuraGraphQL)\r\n kit: ProductHasuraGraphQL\r\n\r\n @Type(() => ProductHasuraGraphQL)\r\n product: ProductHasuraGraphQL\r\n}\r\n","import { Variant } from '../../../domain'\r\n\r\nexport class VariantHasuraGraphQL extends Variant {\r\n firestoreId?: string\r\n fullPrice?: number\r\n subscriberDiscountPercentage?: number\r\n subscriberPrice?: number\r\n\r\n name ? = ''\r\n hasVariants ? = false\r\n}\r\n","import {\r\n Category,\r\n CategoryMetadata,\r\n CategoryRepository,\r\n CreateRepositoryParams,\r\n GetRepositoryParams,\r\n Product,\r\n Shops,\r\n UpdateRepositoryParams,\r\n Where,\r\n} from '../../../../domain'\r\nimport { DuplicatedResultsError, NotFoundError } from '../../../../errors'\r\nimport { Base, omit } from '../../../../utils'\r\nimport { HasuraGraphQLColumnType } from '../../enums'\r\nimport { withCrudHasuraGraphQL, withHasuraGraphQL } from '../../mixins'\r\nimport { CategoryHasuraGraphQL } from '../../models'\r\nimport { HasuraGraphQLAuthOptions } from '../../types'\r\n\r\nimport { ProductHasuraGraphQLRepository } from './product-hasura-graphql.repository'\r\n\r\nexport class CategoryHasuraGraphQLRepository\r\n extends withCrudHasuraGraphQL(withHasuraGraphQL<CategoryHasuraGraphQL>(Base))\r\n implements CategoryRepository\r\n{\r\n constructor(\r\n endpoint: string,\r\n authOptions: HasuraGraphQLAuthOptions,\r\n private readonly productRepository: ProductHasuraGraphQLRepository,\r\n ) {\r\n super({\r\n tableName: 'category',\r\n model: Category,\r\n endpoint,\r\n authOptions,\r\n fields: [\r\n { id: { columnName: 'id', to: (value) => +value, from: (value) => value.toString() } },\r\n { firestoreId: { columnName: 'firestore_id' } },\r\n 'name',\r\n 'description',\r\n 'image',\r\n 'published',\r\n 'shop',\r\n 'slug',\r\n { brandCategory: { columnName: 'brand_category' } },\r\n { brandCategoryBanner: { columnName: 'brand_banner' } },\r\n { brandCategoryBannerMobile: { columnName: 'brand_banner_mobile' } },\r\n { brandLogo: { columnName: 'brand_logo' } },\r\n { brandCondition: { columnName: 'brand_condition' } },\r\n {\r\n conditions: {\r\n columnName: 'tag_condition',\r\n type: HasuraGraphQLColumnType.Jsonb,\r\n from: (tags: unknown, row) => ({ brand: row.brand_condition, tags: Array.isArray(tags) ? tags : [] }),\r\n bindPersistData: (value) => {\r\n return {\r\n brand_condition: value.brand,\r\n tag_condition: value?.tags || [],\r\n }\r\n },\r\n bindFindFilter: (sentence: any) => {\r\n return {\r\n ...(sentence.brand ? { brand_condition: sentence.brand } : {}),\r\n ...(sentence.tags ? { tag_condition: sentence.tags } : {}),\r\n }\r\n },\r\n },\r\n },\r\n 'filters',\r\n { createdAt: { columnName: 'created_at' } },\r\n { updatedAt: { columnName: 'updated_at' } },\r\n {\r\n products: {\r\n columnName: 'products',\r\n fields: ['product_id'],\r\n from: (value: { product_id: number }[]) => value.map((product) => product.product_id.toString()),\r\n to: (productIds) =>\r\n productIds.map((productId) => ({\r\n product_id: +productId,\r\n })),\r\n },\r\n },\r\n {\r\n metadata: {\r\n columnName: 'metadata',\r\n fields: ['title', 'description'],\r\n bindPersistData: (value) => ({\r\n metadata: { data: value },\r\n }),\r\n },\r\n },\r\n ],\r\n })\r\n }\r\n\r\n async create(params: CreateRepositoryParams<CategoryHasuraGraphQL>): Promise<CategoryHasuraGraphQL> {\r\n const { metadata, ...data } = params\r\n\r\n return super.create({ ...data, metadata: metadata || { description: null, title: null } })\r\n }\r\n\r\n async get(identifiers: GetRepositoryParams<CategoryHasuraGraphQL>): Promise<CategoryHasuraGraphQL> {\r\n return Number.isNaN(+identifiers.id)\r\n ? (await this.find({ filters: { firestoreId: identifiers.id } })).data?.[0]\r\n : super.get(identifiers)\r\n }\r\n\r\n async update(params: UpdateRepositoryParams<CategoryHasuraGraphQL>): Promise<CategoryHasuraGraphQL> {\r\n const { products, id: checkId, metadata, ...data } = params\r\n const plainData = this.paramsToPlain({ id: checkId })\r\n const id = await this.getId(plainData.id)\r\n const category = await super.update({ id, ...data })\r\n\r\n category.products = products && (await this.updateProducts(+id, { products }))\r\n category.metadata = metadata && (await this.updateMetadata(+id, { metadata }))\r\n\r\n return category\r\n }\r\n\r\n async getCategoryBySlug(slug: string, shop: Shops): Promise<Category> {\r\n if (!slug) return\r\n\r\n const { data, count } = await this.find({ filters: { slug, shop, published: true } })\r\n\r\n if (count > 1) throw new DuplicatedResultsError('Query returned duplicated values')\r\n if (!count) throw new NotFoundError(`Category with slug ${slug} not found`)\r\n\r\n return data.shift()\r\n }\r\n\r\n async getCategoriesForHome(categoryIds: string[], limit = 4): Promise<{ category: Category; products: Product[] }[]> {\r\n if (!categoryIds?.length) return []\r\n\r\n const categoriesFirestore = categoryIds.filter((categoryId) => Number.isNaN(+categoryId))\r\n const categoriesHasura = categoryIds.filter((categoryId) => +categoryId > 0)\r\n const categories = []\r\n\r\n if (categoriesFirestore.length)\r\n categories.push(\r\n ...(await this.find({\r\n filters: { firestoreId: { operator: Where.IN, value: categoriesFirestore.filter(Boolean) }, published: true },\r\n }).then(({ data }) => data)),\r\n )\r\n if (categoriesHasura.length)\r\n categories.push(\r\n ...(await this.find({\r\n filters: { id: { operator: Where.IN, value: categoriesHasura.filter(Boolean) }, published: true },\r\n }).then(({ data }) => data)),\r\n )\r\n\r\n if (!categories.length) return []\r\n\r\n const homeSections = await Promise.all(\r\n categories.map(async (category) => ({\r\n category,\r\n products: await this.mountCategory(category, { limit, hasStock: true }),\r\n })),\r\n )\r\n\r\n return homeSections\r\n }\r\n\r\n async mountCategory(category: Category, options?: { limit?: number; hasStock?: boolean }): Promise<Product[]> {\r\n if (!category?.products?.length) return []\r\n\r\n const products = []\r\n const { data: productsData } = await this.productRepository.find({\r\n filters: {\r\n id: { operator: Where.IN, value: category.products },\r\n published: true,\r\n ...(options?.hasStock ? { stock: { quantity: { operator: Where.GT, value: 0 } } } : {}),\r\n },\r\n fields: [\r\n 'id',\r\n 'name',\r\n 'slug',\r\n 'images',\r\n 'miniatures',\r\n 'price',\r\n 'fullPrice',\r\n 'subscriberDiscountPercentage',\r\n 'subscriberPrice',\r\n 'stock',\r\n 'published',\r\n 'CEST',\r\n 'EAN',\r\n 'NCM',\r\n 'brand',\r\n 'costPrice',\r\n 'hasVariants',\r\n 'isKit',\r\n 'sku',\r\n 'rate',\r\n 'tags',\r\n 'type',\r\n 'shoppingCount',\r\n ],\r\n ...(options?.limit ? { limits: { limit: options?.limit } } : {}),\r\n })\r\n\r\n products.push(...productsData)\r\n\r\n return products\r\n }\r\n\r\n private async getId(id: string): Promise<string> {\r\n if (!Number.isNaN(+id)) return id\r\n\r\n const { data } = await this.find({ filters: { firestoreId: id } })\r\n\r\n if (data?.[0]?.id) return data?.[0]?.id\r\n\r\n throw new NotFoundError(`Category with id ${id} not found`)\r\n }\r\n\r\n private async updateProducts(\r\n categoryId: number,\r\n { products }: Pick<UpdateRepositoryParams<CategoryHasuraGraphQL>, 'products'>,\r\n ): Promise<CategoryHasuraGraphQL['products']> {\r\n if ('action' in products && products.action === 'remove') {\r\n await this.mutation('delete_category_product', ['affected_rows'], {\r\n where: {\r\n type: 'category_product_bool_exp',\r\n required: true,\r\n value: { category_id: { _eq: categoryId } },\r\n },\r\n })\r\n\r\n return []\r\n }\r\n\r\n const plainData = this.paramsToPlain({ products })\r\n\r\n if (!plainData.products || plainData.products.length <= 0) return []\r\n\r\n await this.mutation('delete_category_product', ['affected_rows'], {\r\n where: {\r\n type: 'category_product_bool_exp',\r\n required: true,\r\n value: { category_id: { _eq: categoryId } },\r\n },\r\n })\r\n\r\n await this.mutation('insert_category_product', ['affected_rows'], {\r\n objects: {\r\n type: '[category_product_insert_input!]',\r\n required: true,\r\n value: plainData.products.map((productId) => ({ category_id: categoryId, product_id: productId })),\r\n },\r\n })\r\n\r\n return plainData.products\r\n }\r\n\r\n private async updateMetadata(\r\n categoryId: number,\r\n { metadata }: Pick<UpdateRepositoryParams<CategoryHasuraGraphQL>, 'metadata'>,\r\n ): Promise<CategoryMetadata> {\r\n const plainData = this.paramsToPlain({ metadata })\r\n\r\n if (!plainData.metadata) return\r\n\r\n await this.mutation('update_category_metadata_by_pk', ['category_id'], {\r\n pk_columns: {\r\n value: { category_id: categoryId },\r\n type: 'category_metadata_pk_columns_input',\r\n required: true,\r\n },\r\n _set: {\r\n value: omit(metadata, ['category_id']),\r\n type: 'category_metadata_set_input',\r\n required: true,\r\n },\r\n })\r\n\r\n return plainData.metadata\r\n }\r\n}\r\n","import {\r\n CreateRepositoryParams,\r\n FindRepositoryParams,\r\n GetRepositoryParams,\r\n NonFunctionPropertyNames,\r\n ProductMetadata,\r\n ProductRepository,\r\n ProductReview,\r\n RepositoryFindResult,\r\n ReviewStatusParams,\r\n ReviewWithProductData,\r\n ShopPrice,\r\n Shops,\r\n UpdateRepositoryParams,\r\n Where,\r\n} from '../../../../domain'\r\nimport { NotFoundError } from '../../../../errors'\r\nimport { Base, isNil, omit } from '../../../../utils'\r\nimport { HasuraGraphQLColumnType, HasuraGraphQLWhere } from '../../enums'\r\nimport { withCrudHasuraGraphQL, withHasuraGraphQL } from '../../mixins'\r\nimport { ProductHasuraGraphQL } from '../../models'\r\nimport { HasuraGraphQLAuthOptions, HasuraGraphQLFields } from '../../types'\r\n\r\ntype ProductReviewFields = {\r\n id?: string\r\n shop: Shops\r\n rate: number\r\n author?: string\r\n email?: string\r\n location?: string\r\n review?: string\r\n status?: boolean\r\n title?: string\r\n personId?: number\r\n points?: number\r\n orderId?: string\r\n createdAt?: Date\r\n updatedAt?: Date\r\n}\r\n\r\nexport class ProductHasuraGraphQLRepository\r\n extends withCrudHasuraGraphQL(withHasuraGraphQL<ProductHasuraGraphQL>(Base))\r\n implements ProductRepository\r\n{\r\n private get reviewsFields(): any {\r\n return [\r\n 'id',\r\n 'shop',\r\n 'rate',\r\n 'author',\r\n 'email',\r\n 'location',\r\n 'review',\r\n 'status',\r\n 'title',\r\n { personId: { columnName: 'person_id' } },\r\n 'points',\r\n { orderId: { columnName: 'order_id' } },\r\n { createdAt: { columnName: 'created_at' } },\r\n { updatedAt: { columnName: 'updated_at' } },\r\n ]\r\n }\r\n\r\n constructor(endpoint: string, authOptions: HasuraGraphQLAuthOptions) {\r\n super({\r\n tableName: 'product',\r\n model: ProductHasuraGraphQL,\r\n endpoint,\r\n authOptions,\r\n fields: [],\r\n })\r\n\r\n const commonFields: HasuraGraphQLFields<ProductHasuraGraphQL> = [\r\n { id: { columnName: 'id', to: (value) => +value, from: (value) => value.toString() } },\r\n { firestoreId: { columnName: 'firestore_id' } },\r\n { productId: { columnName: 'main_product_id' } },\r\n { CEST: { columnName: 'cest' } },\r\n { EAN: { columnName: 'ean' } },\r\n { NCM: { columnName: 'ncm' } },\r\n 'brand',\r\n { costPrice: { columnName: 'cost_price' } },\r\n {\r\n description: {\r\n columnName: 'description',\r\n from: (description, data) => ({\r\n description,\r\n differentials: data.differentials,\r\n whoMustUse: data.who_must_use,\r\n howToUse: data.how_to_use,\r\n brand: data.brand_description,\r\n }),\r\n bindFindFilter: (sentence) => {\r\n const filters = Object.values(sentence).shift()\r\n\r\n return {\r\n ...(filters?.description && { description: filters.description }),\r\n ...(filters.differentials && { differentials: filters.differentials }),\r\n ...(filters.whoMustUse && {\r\n who_must_use: filters.whoMustUse,\r\n }),\r\n ...(filters.howToUse && {\r\n how_to_use: filters.howToUse,\r\n }),\r\n ...(filters.brand && {\r\n brand_description: filters.brand,\r\n }),\r\n }\r\n },\r\n bindPersistData: (descriptionData) => ({\r\n ...(descriptionData?.description && { description: descriptionData.description }),\r\n ...(descriptionData.differentials && { differentials: descriptionData.differentials }),\r\n ...(descriptionData.whoMustUse && {\r\n who_must_use: descriptionData.whoMustUse,\r\n }),\r\n ...(descriptionData.howToUse && { how_to_use: descriptionData.howToUse }),\r\n ...(descriptionData.brand && { brand_description: descriptionData.brand }),\r\n }),\r\n },\r\n },\r\n { differentials: { columnName: 'differentials' } },\r\n { whoMustUse: { columnName: 'who_must_use' } },\r\n { howToUse: { columnName: 'how_to_use' } },\r\n { brandDescription: { columnName: 'brand_description' } },\r\n { hasVariants: { columnName: 'has_variants' } },\r\n {\r\n images: {\r\n columnName: 'images',\r\n to: (value) => (value?.length > 0 ? `{\"${value?.join?.(`\",\"`) || ''}\"}` : `{}`),\r\n },\r\n },\r\n {\r\n miniatures: {\r\n columnName: 'miniatures',\r\n to: (value) => (value?.length > 0 ? `{\"${value?.join?.(`\",\"`) || ''}\"}` : `{}`),\r\n },\r\n },\r\n 'name',\r\n {\r\n price: {\r\n columnName: 'price',\r\n from: (price, data): ShopPrice => ({\r\n price,\r\n fullPrice: data.full_price,\r\n subscriberDiscountPercentage: data.subscriber_discount_percentage,\r\n subscriberPrice: data.subscriber_price,\r\n }),\r\n bindFindFilter: (sentence) => {\r\n const filters = Object.values(sentence).shift()\r\n\r\n return {\r\n ...((filters?.price || filters?.price === 0) && { price: filters.price }),\r\n ...((filters.fullPrice || filters.fullPrice === 0) && { full_price: filters.fullPrice }),\r\n ...((filters.subscriberDiscountPercentage || filters.subscriberDiscountPercentage === 0) && {\r\n subscriber_discount_percentage: filters.subscriberDiscountPercentage,\r\n }),\r\n ...((filters.subscriberPrice || filters.subscriberPrice === 0) && {\r\n subscriber_price: filters.subscriberPrice,\r\n }),\r\n }\r\n },\r\n bindPersistData: (priceData) => ({\r\n ...(priceData?.price >= 0 && { price: priceData.price }),\r\n ...(priceData.fullPrice >= 0 && { full_price: priceData.fullPrice }),\r\n ...(priceData.subscriberDiscountPercentage >= 0 && {\r\n subscriber_discount_percentage: priceData.subscriberDiscountPercentage,\r\n }),\r\n ...(priceData.subscriberPrice >= 0 && { subscriber_price: priceData.subscriberPrice }),\r\n }),\r\n },\r\n },\r\n { fullPrice: { columnName: 'full_price' } },\r\n { subscriberDiscountPercentage: { columnName: 'subscriber_discount_percentage' } },\r\n { subscriberPrice: { columnName: 'subscriber_price' } },\r\n 'published',\r\n 'sku',\r\n {\r\n stock: {\r\n columnName: 'stock',\r\n from: (quantity: number) => ({ quantity }),\r\n to: (value) => (isNil(value?.quantity) ? value : value?.quantity),\r\n },\r\n },\r\n 'slug',\r\n 'type',\r\n 'video',\r\n 'weight',\r\n 'gender',\r\n { tags: { columnName: 'tags', type: HasuraGraphQLColumnType.Jsonb } },\r\n { isKit: { columnName: 'is_kit' } },\r\n { createdAt: { columnName: 'created_at' } },\r\n { updatedAt: { columnName: 'updated_at' } },\r\n {\r\n rate: {\r\n columnName: 'reviews_aggregate',\r\n filters: {\r\n filters: { status: true },\r\n filterType: 'product_review_bool_exp',\r\n },\r\n fields: [{ aggregate: [{ avg: ['rate'] }] }],\r\n from: (value) => value.aggregate.avg.rate,\r\n },\r\n },\r\n { shoppingCount: { columnName: 'shopping_count' } },\r\n ]\r\n\r\n this.fields = [\r\n ...commonFields,\r\n {\r\n categories: {\r\n columnName: 'categories',\r\n fields: ['category_id'],\r\n bindPersistData: (value) => ({\r\n categories: { data: value.map((category) => ({ category_id: +category })) },\r\n }),\r\n to: (categories) => categories.map((categoryId) => +categoryId),\r\n from: (categories: { category_id: number }[]) =>\r\n categories?.map((category) => category?.category_id?.toString()) || [],\r\n },\r\n },\r\n {\r\n kitProducts: {\r\n columnName: 'kit_products',\r\n foreignKeyColumn: { productId: 'id' },\r\n fields: [\r\n { productId: { columnName: 'product_id' } },\r\n { kitProductId: { columnName: 'kit_product_id' } },\r\n 'quantity',\r\n { product: { columnName: 'product', foreignKeyColumn: { id: 'product_id' }, fields: commonFields } },\r\n ],\r\n },\r\n },\r\n {\r\n reviews: {\r\n columnName: 'reviews',\r\n foreignKeyColumn: { product_id: 'id' },\r\n fields: this.reviewsFields,\r\n },\r\n },\r\n {\r\n metadata: {\r\n columnName: 'metadata',\r\n fields: ['title', 'description'],\r\n bindPersistData: (value) => ({\r\n metadata: { data: value },\r\n }),\r\n },\r\n },\r\n ]\r\n }\r\n\r\n async create(params: CreateRepositoryParams<ProductHasuraGraphQL>): Promise<ProductHasuraGraphQL> {\r\n const { metadata, ...data } = params\r\n const product = await super.create(\r\n omit({ ...data, metadata: metadata || { description: null, title: null } }, ['reviews']),\r\n )\r\n\r\n try {\r\n product.reviews = data.reviews && (await this.updateReviews(+product.id, data))\r\n } catch (error) {\r\n await this.delete({ id: product.id })\r\n\r\n throw error\r\n }\r\n\r\n return product\r\n }\r\n\r\n async get(identifiers: GetRepositoryParams<ProductHasuraGraphQL>): Promise<ProductHasuraGraphQL> {\r\n const product = Number.isNaN(+identifiers.id)\r\n ? (await this.find({ filters: { firestoreId: identifiers.id } })).data?.[0]\r\n : await super.get(identifiers)\r\n\r\n if (product.productId) throw new NotFoundError('Product not found, it is a variant')\r\n\r\n product.reviews = product.reviews || (await this.findReviewsByProduct(+product.id))\r\n\r\n return product\r\n }\r\n\r\n async find(params?: FindRepositoryParams<ProductHasuraGraphQL>): Promise<RepositoryFindResult<ProductHasuraGraphQL>> {\r\n const { filters, fields, ...options } = params || {}\r\n const bindFields =\r\n fields ||\r\n (this.fields\r\n .map((field) => (typeof field === 'string' ? field : Object.keys(field).shift()))\r\n .filter((field) => field !== 'reviews') as NonFunctionPropertyNames<\r\n ProductHasuraGraphQL,\r\n keyof ProductHasuraGraphQL\r\n >[])\r\n\r\n return super.find({\r\n ...options,\r\n filters: { ...filters, productId: { operator: Where.ISNULL } },\r\n fields: bindFields,\r\n })\r\n }\r\n\r\n async getBySlug(slug: string): Promise<ProductHasuraGraphQL> {\r\n const result = await this.find({\r\n filters: {\r\n slug,\r\n },\r\n })\r\n\r\n const product = result?.data?.shift()\r\n\r\n product.reviews = await this.findReviewsByProduct(+product.id)\r\n\r\n return product\r\n }\r\n\r\n async update(params: UpdateRepositoryParams<ProductHasuraGraphQL>): Promise<ProductHasuraGraphQL> {\r\n const { categories, kitProducts, reviews, id: checkId, rate, metadata, ...data } = params\r\n const plainData = this.paramsToPlain({ id: checkId })\r\n const id = await this.getId(plainData.id)\r\n const product = await super.update({ id, ...data })\r\n\r\n product.categories = categories && (await this.updateCategories(+id, { categories }))\r\n product.kitProducts = kitProducts && (await this.updateKitProducts(+id, { kitProducts }))\r\n product.reviews = reviews && (await this.updateReviews(+id, { reviews }))\r\n product.metadata = metadata && (await this.updateMetadata(+id, { metadata }))\r\n\r\n return product\r\n }\r\n\r\n async fetchReviews(status: ReviewStatusParams): Promise<ReviewWithProductData[]> {\r\n const reviewsExpression = {\r\n status:\r\n status === 'pending'\r\n ? { [HasuraGraphQLWhere.ISNULL]: true }\r\n : { [HasuraGraphQLWhere.EQUALS]: status === 'approved' },\r\n }\r\n const { product: data } = await this.query(\r\n 'product',\r\n ['id', 'name', 'sku', { reviews: { columnName: 'reviews', fields: this.reviewsFields } }],\r\n {\r\n where: { value: { reviews: reviewsExpression }, type: 'product_bool_exp', required: true },\r\n },\r\n )\r\n\r\n return data.reduce(\r\n (reviews, product) => [\r\n ...reviews,\r\n ...product.reviews\r\n .filter(\r\n (review) =>\r\n (status === 'pending' && [undefined, null].includes(review.status)) ||\r\n (status === 'approved' && review.status === true) ||\r\n (status === 'rejected' && review.status === false),\r\n )\r\n .map((review) => ({\r\n ...this.bindReviewToModel(review),\r\n productId: product.id,\r\n productName: product.name,\r\n productSku: product.sku,\r\n })),\r\n ],\r\n [] as ReviewWithProductData[],\r\n )\r\n }\r\n\r\n private async updateCategories(\r\n productId: number,\r\n { categories }: Pick<UpdateRepositoryParams<ProductHasuraGraphQL>, 'categories'>,\r\n ): Promise<ProductHasuraGraphQL['categories']> {\r\n if ('action' in categories && categories.action === 'remove') {\r\n await this.mutation('delete_category_product', ['affected_rows'], {\r\n where: {\r\n type: 'category_product_bool_exp',\r\n required: true,\r\n value: { product_id: { _eq: productId } },\r\n },\r\n })\r\n\r\n return []\r\n }\r\n\r\n const plainData = this.paramsToPlain({ categories })\r\n\r\n if (!plainData.categories || plainData.categories.length <= 0) return []\r\n\r\n await this.mutation('delete_category_product', ['affected_rows'], {\r\n where: {\r\n type: 'category_product_bool_exp',\r\n required: true,\r\n value: { product_id: { _eq: productId } },\r\n },\r\n })\r\n\r\n await this.mutation('insert_category_product', ['affected_rows'], {\r\n objects: {\r\n type: '[category_product_insert_input!]',\r\n required: true,\r\n value: plainData.categories.map((categoryId) => ({ category_id: categoryId, product_id: productId })),\r\n },\r\n })\r\n\r\n return plainData.categories\r\n }\r\n\r\n private async updateKitProducts(\r\n productId: number,\r\n { kitProducts }: Pick<UpdateRepositoryParams<ProductHasuraGraphQL>, 'kitProducts'>,\r\n ): Promise<ProductHasuraGraphQL['kitProducts']> {\r\n const plainData = this.paramsToPlain({ kitProducts })\r\n\r\n await this.mutation('delete_product_kit', ['affected_rows'], {\r\n where: {\r\n type: 'product_kit_bool_exp',\r\n required: true,\r\n value: { kit_product_id: { _eq: productId } },\r\n },\r\n })\r\n\r\n await this.mutation('insert_product_kit', ['affected_rows'], {\r\n objects: {\r\n type: '[product_kit_insert_input!]',\r\n required: true,\r\n value: plainData.kitProducts.map((kitProduct) => ({\r\n kit_product_id: productId,\r\n product_id: kitProduct.productId || kitProduct.product.id,\r\n quantity: kitProduct.quantity,\r\n })),\r\n },\r\n })\r\n\r\n return plainData.kitProducts\r\n }\r\n\r\n private async updateReviews(\r\n productId: number,\r\n { reviews }: Pick<UpdateRepositoryParams<ProductHasuraGraphQL>, 'reviews'>,\r\n ): Promise<ProductReview[]> {\r\n if (!reviews) return []\r\n if ('action' in reviews && reviews.action === 'remove') {\r\n const reviewIds = await Promise.all(\r\n reviews.value.map(async (reviewData) => {\r\n const review = await this.findReview(reviewData, productId)\r\n\r\n return review?.id\r\n }),\r\n )\r\n\r\n await this.mutation('delete_product_review', ['affected_rows'], {\r\n where: { value: { id: { _in: reviewIds.filter(Boolean) } }, type: 'product_review_bool_exp', required: true },\r\n })\r\n\r\n return reviews.value.map((review, index) => !reviewIds[index] && review).filter(Boolean)\r\n }\r\n\r\n const plainData = this.paramsToPlain({ reviews })\r\n\r\n if (!plainData.reviews || plainData.reviews.length <= 0) return []\r\n\r\n return Promise.all(\r\n plainData.reviews.map(async (reviewData) => {\r\n const review = await this.findReview(reviewData, productId)\r\n\r\n if (review.id)\r\n return this.bindReviewToModel(\r\n (\r\n await this.mutation('update_product_review_by_pk', this.reviewsFields, {\r\n pk_columns: {\r\n value: { id: review.id },\r\n type: 'product_review_pk_columns_input',\r\n required: true,\r\n },\r\n _set: {\r\n value: omit(this.bindReviewToHasura(reviewData), ['id', 'product_id']),\r\n type: 'product_review_set_input',\r\n required: true,\r\n },\r\n })\r\n ).update_product_review_by_pk,\r\n )\r\n\r\n return this.bindReviewToModel(\r\n (\r\n await this.mutation('insert_product_review_one', this.reviewsFields, {\r\n object: {\r\n value: omit({ ...this.bindReviewToHasura(reviewData), product_id: productId }, ['id']),\r\n type: 'product_review_insert_input',\r\n required: true,\r\n },\r\n })\r\n ).insert_product_review_one,\r\n )\r\n }),\r\n )\r\n }\r\n\r\n private async updateMetadata(\r\n productId: number,\r\n { metadata }: Pick<UpdateRepositoryParams<ProductHasuraGraphQL>, 'metadata'>,\r\n ): Promise<ProductMetadata> {\r\n const plainData = this.paramsToPlain({ metadata })\r\n\r\n if (!plainData.metadata) return\r\n\r\n await this.mutation('update_product_metadata_by_pk', ['product_id'], {\r\n pk_columns: {\r\n value: { product_id: productId },\r\n type: 'product_metadata_pk_columns_input',\r\n required: true,\r\n },\r\n _set: {\r\n value: omit(metadata, ['product_id']),\r\n type: 'product_metadata_set_input',\r\n required: true,\r\n },\r\n })\r\n\r\n return plainData.metadata\r\n }\r\n\r\n private async getId(id: string): Promise<string> {\r\n if (!Number.isNaN(+id)) return id\r\n\r\n const { data } = await this.find({ filters: { firestoreId: id } })\r\n\r\n if (data?.[0]?.id) return data?.[0]?.id\r\n\r\n throw new NotFoundError(`Product with id ${id} not found`)\r\n }\r\n\r\n private async findReviewsByProduct(productId: number): Promise<ProductReview[]> {\r\n const { product_review: data } = await this.query('product_review', this.reviewsFields, {\r\n where: {\r\n value: {\r\n product_id: { _eq: productId },\r\n },\r\n type: 'product_review_bool_exp',\r\n required: true,\r\n },\r\n })\r\n\r\n return data && data.map((review) => this.bindReviewToModel(review))\r\n }\r\n\r\n private async findReview(review: ProductReview, productId: number): Promise<ProductReview> {\r\n if (review.id) return review\r\n\r\n let loadedReview: ProductReview\r\n\r\n if (review.personId) loadedReview = await this.getReviewByPersonId(review.personId, productId, review.orderId)\r\n if (!loadedReview && review.author && review.email)\r\n loadedReview = await this.getReviewByAuthorAndEmail(review.author, review.email, productId, review.orderId)\r\n\r\n return loadedReview || review\r\n }\r\n\r\n private async getReviewByPersonId(personId: number, productId: number, orderId?: string): Promise<ProductReview> {\r\n const { product_review: data } = await this.query('product_review', this.reviewsFields, {\r\n where: {\r\n value: {\r\n product_id: { _eq: productId },\r\n person_id: { _eq: personId },\r\n ...(orderId && { order_id: { _eq: orderId } }),\r\n },\r\n type: `product_review_bool_exp`,\r\n required: true,\r\n },\r\n })\r\n\r\n return data && data[0] && this.bindReviewToModel(data[0])\r\n }\r\n\r\n private async getReviewByAuthorAndEmail(\r\n author: string,\r\n email: string,\r\n productId: number,\r\n orderId?: string,\r\n ): Promise<ProductReview> {\r\n const { product_review: data } = await this.query('product_review', this.reviewsFields, {\r\n where: {\r\n value: {\r\n product_id: { _eq: productId },\r\n author: { _eq: author },\r\n email: { _eq: email },\r\n ...(orderId && { order_id: { _eq: orderId } }),\r\n },\r\n type: `product_review_bool_exp`,\r\n required: true,\r\n },\r\n })\r\n\r\n return data && data[0] && this.bindReviewToModel(data[0])\r\n }\r\n\r\n private bindReviewToModel = (plain: Record<string, any>): ProductReview => ({\r\n ...omit(plain, ['product_id', 'created_at', 'updated_at', 'person_id', 'order_id']),\r\n createdAt: typeof plain.created_at === 'string' ? new Date(plain.created_at) : plain.created_at,\r\n updatedAt: typeof plain.updated_at === 'string' ? new Date(plain.updated_at) : plain.updated_at,\r\n personId: plain.person_id,\r\n orderId: plain.order_id,\r\n })\r\n\r\n private bindReviewToHasura = (review: ProductReview): ProductReviewFields => ({\r\n ...omit(review, ['productId', 'createdAt', 'updatedAt', 'personId', 'orderId']),\r\n person_id: review.personId,\r\n order_id: review.orderId,\r\n })\r\n}\r\n","import {\r\n FindRepositoryParams,\r\n GetRepositoryParams,\r\n RepositoryFindResult,\r\n ShopPrice,\r\n UpdateRepositoryParams,\r\n VariantRepository,\r\n Where,\r\n} from '../../../../domain'\r\nimport { NotFoundError } from '../../../../errors'\r\nimport { Base, isNil } from '../../../../utils'\r\nimport { HasuraGraphQLColumnType } from '../../enums'\r\nimport { withCrudHasuraGraphQL, withHasuraGraphQL } from '../../mixins'\r\nimport { VariantHasuraGraphQL } from '../../models'\r\nimport { HasuraGraphQLAuthOptions } from '../../types'\r\n\r\nexport class VariantHasuraGraphQLRepository\r\n extends withCrudHasuraGraphQL(withHasuraGraphQL<VariantHasuraGraphQL>(Base))\r\n implements VariantRepository\r\n{\r\n constructor(endpoint: string, authOptions: HasuraGraphQLAuthOptions) {\r\n super({\r\n tableName: 'product',\r\n model: VariantHasuraGraphQL,\r\n endpoint,\r\n authOptions,\r\n fields: [\r\n { id: { columnName: 'id', to: (value) => +value, from: (value) => value.toString() } },\r\n { firestoreId: { columnName: 'firestore_id' } },\r\n { productId: { columnName: 'main_product_id', to: (value) => +value, from: (value) => value?.toString() } },\r\n { EAN: { columnName: 'ean' } },\r\n { costPrice: { columnName: 'cost_price' } },\r\n {\r\n price: {\r\n columnName: 'price',\r\n from: (price, data): ShopPrice => ({\r\n price,\r\n fullPrice: data.full_price,\r\n subscriberDiscountPercentage: data.subscriber_discount_percentage,\r\n subscriberPrice: data.subscriber_price,\r\n }),\r\n bindFindFilter: (sentence) => {\r\n const filters = Object.values(sentence).shift()\r\n\r\n return {\r\n ...((filters?.price || filters?.price === 0) && { price: filters.price }),\r\n ...((filters.fullPrice || filters.fullPrice === 0) && { full_price: filters.fullPrice }),\r\n ...((filters.subscriberDiscountPercentage || filters.subscriberDiscountPercentage === 0) && {\r\n subscriber_discount_percentage: filters.subscriberDiscountPercentage,\r\n }),\r\n ...((filters.subscriberPrice || filters.subscriberPrice === 0) && {\r\n subscriber_price: filters.subscriberPrice,\r\n }),\r\n }\r\n },\r\n bindPersistData: (priceData) => ({\r\n ...(priceData?.price >= 0 && { price: priceData.price }),\r\n ...(priceData.fullPrice >= 0 && { full_price: priceData.fullPrice }),\r\n ...(priceData.subscriberDiscountPercentage >= 0 && {\r\n subscriber_discount_percentage: priceData.subscriberDiscountPercentage,\r\n }),\r\n ...(priceData.subscriberPrice >= 0 && { subscriber_price: priceData.subscriberPrice }),\r\n }),\r\n },\r\n },\r\n { fullPrice: { columnName: 'full_price' } },\r\n { subscriberDiscountPercentage: { columnName: 'subscriber_discount_percentage' } },\r\n { subscriberPrice: { columnName: 'subscriber_price' } },\r\n 'sku',\r\n {\r\n stock: {\r\n columnName: 'stock',\r\n from: (quantity: number) => ({ quantity }),\r\n to: (value) => (isNil(value?.quantity) ? value : value?.quantity),\r\n },\r\n },\r\n 'weight',\r\n { name: { to: () => '', from: () => undefined } },\r\n { hasVariants: { columnName: 'has_variants', to: () => false, from: () => undefined } },\r\n { createdAt: { columnName: 'created_at' } },\r\n { updatedAt: { columnName: 'updated_at' } },\r\n {\r\n grade: {\r\n columnName: 'grade',\r\n type: HasuraGraphQLColumnType.Jsonb,\r\n },\r\n },\r\n ],\r\n })\r\n }\r\n\r\n async get(identifiers: GetRepositoryParams<VariantHasuraGraphQL>): Promise<VariantHasuraGraphQL> {\r\n const variant = Number.isNaN(+identifiers.id)\r\n ? (await this.find({ filters: { firestoreId: identifiers.id } })).data?.[0]\r\n : await super.get(identifiers)\r\n\r\n if (!variant.productId) throw new NotFoundError(`Variant not found, it is a product`)\r\n\r\n return variant\r\n }\r\n\r\n async find(params?: FindRepositoryParams<VariantHasuraGraphQL>): Promise<RepositoryFindResult<VariantHasuraGraphQL>> {\r\n const { filters, ...options } = params || {}\r\n\r\n return super.find({ ...options, filters: { productId: { operator: Where.ISNOTNULL }, ...filters } })\r\n }\r\n\r\n async update(params: UpdateRepositoryParams<VariantHasuraGraphQL>): Promise<VariantHasuraGraphQL> {\r\n const { productId, id: checkId, ...data } = params\r\n const dataWithProductId = this.paramsToPlain({ id: checkId, productId })\r\n const id = await this.getId(dataWithProductId.id)\r\n const product = await super.update({ id, ...data })\r\n\r\n product.productId = dataWithProductId.productId\r\n\r\n return product\r\n }\r\n\r\n private async getId(id: string): Promise<string> {\r\n if (!Number.isNaN(+id)) return id\r\n\r\n const { data } = await this.find({ filters: { firestoreId: id } })\r\n\r\n if (data?.[0]?.id) return data?.[0]?.id\r\n\r\n throw new NotFoundError(`Product with id ${id} not found`)\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["Answers.AccessoryImportances","Answers.BeardProblems","Answers.BeardSizes","Answers.BeautyProductImportances","Answers.BodyProblems","Answers.BodyShapes","Answers.BodyTattoos","Answers.FaceSkinOilinesses","Answers.FaceSkinProblems","Answers.FaceSkinTones","Answers.FamilyIncomes","Answers.FragranceImportances","Answers.HairColors","Answers.HairProblems","Answers.HairStrands","Answers.HairTypes","Answers.ProductSpents","isNaN"],"mappings":"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"}