@infrab4a/connect 0.15.0 → 0.16.0-beta.0

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 (725) hide show
  1. package/bundles/infrab4a-connect.umd.js +110 -55
  2. package/bundles/infrab4a-connect.umd.js.map +1 -1
  3. package/{lib/domain → domain}/catalog/repositories/category.repository.d.ts +4 -1
  4. package/esm2015/domain/catalog/index.js +3 -0
  5. package/esm2015/domain/catalog/models/category.js +7 -0
  6. package/esm2015/domain/catalog/models/enums/index.js +2 -0
  7. package/esm2015/domain/catalog/models/enums/shops.enum.js +7 -0
  8. package/esm2015/domain/catalog/models/index.js +6 -0
  9. package/esm2015/domain/catalog/models/product.js +11 -0
  10. package/esm2015/domain/catalog/models/types/category-condition.type.js +2 -0
  11. package/esm2015/domain/catalog/models/types/category-filter.type.js +2 -0
  12. package/esm2015/domain/catalog/models/types/index.js +8 -0
  13. package/esm2015/domain/catalog/models/types/product-review.type.js +2 -0
  14. package/esm2015/domain/catalog/models/types/shops-description.type.js +2 -0
  15. package/esm2015/domain/catalog/models/types/shops-price.type.js +2 -0
  16. package/esm2015/domain/catalog/models/types/stock.type.js +2 -0
  17. package/esm2015/domain/catalog/models/types/variant-grade.type.js +2 -0
  18. package/esm2015/domain/catalog/models/variant.js +7 -0
  19. package/esm2015/domain/catalog/repositories/category.repository.js +2 -0
  20. package/esm2015/domain/catalog/repositories/index.js +5 -0
  21. package/esm2015/domain/catalog/repositories/product.repository.js +2 -0
  22. package/esm2015/domain/catalog/repositories/subscription-product.repository.js +2 -0
  23. package/esm2015/domain/catalog/repositories/variant.repository.js +2 -0
  24. package/esm2015/domain/general/index.js +3 -0
  25. package/esm2015/domain/general/model/base-model-with-identifier-fields.js +2 -0
  26. package/esm2015/domain/general/model/base.model.js +13 -0
  27. package/esm2015/domain/general/model/identifier-fields.js +2 -0
  28. package/esm2015/domain/general/model/index.js +5 -0
  29. package/esm2015/domain/general/model/types/base-model-builder.type.js +2 -0
  30. package/esm2015/domain/general/model/types/index.js +4 -0
  31. package/esm2015/domain/general/model/types/non-function-properties.type.js +2 -0
  32. package/esm2015/domain/general/model/types/non-function-property-name.type.js +2 -0
  33. package/esm2015/domain/general/repository/create.repository.js +2 -0
  34. package/esm2015/domain/general/repository/crud.repository.js +2 -0
  35. package/esm2015/domain/general/repository/delete.repository.js +2 -0
  36. package/esm2015/domain/general/repository/enums/index.js +3 -0
  37. package/esm2015/domain/general/repository/enums/update-option-actions.enum.js +9 -0
  38. package/esm2015/domain/general/repository/enums/where.enum.js +12 -0
  39. package/esm2015/domain/general/repository/find.repository.js +2 -0
  40. package/esm2015/domain/general/repository/get.repository.js +2 -0
  41. package/esm2015/domain/general/repository/index.js +10 -0
  42. package/esm2015/domain/general/repository/read.repository.js +2 -0
  43. package/esm2015/domain/general/repository/types/index.js +6 -0
  44. package/esm2015/domain/general/repository/types/repository-find-filters.type.js +2 -0
  45. package/esm2015/domain/general/repository/types/repository-find-result.type.js +2 -0
  46. package/esm2015/domain/general/repository/types/repository-limit-options.type.js +2 -0
  47. package/esm2015/domain/general/repository/types/repository-order-by-list.type.js +2 -0
  48. package/esm2015/domain/general/repository/types/repository-update-params.type.js +2 -0
  49. package/esm2015/domain/general/repository/update.repository.js +2 -0
  50. package/esm2015/domain/index.js +7 -0
  51. package/esm2015/domain/location/index.js +2 -0
  52. package/esm2015/domain/location/models/address.js +4 -0
  53. package/esm2015/domain/location/models/index.js +3 -0
  54. package/esm2015/domain/location/models/types/index.js +4 -0
  55. package/esm2015/domain/location/models/types/location-bound.type.js +2 -0
  56. package/esm2015/domain/location/models/types/location-geometry.type.js +2 -0
  57. package/esm2015/domain/location/models/types/location-lat-lng.type.js +2 -0
  58. package/esm2015/domain/shop-settings/enums/filter-type.enum.js +21 -0
  59. package/esm2015/domain/shop-settings/enums/index.js +3 -0
  60. package/esm2015/domain/shop-settings/enums/questions-filters.enum.js +21 -0
  61. package/esm2015/domain/shop-settings/helpers/beauty-questions.helper.js +46 -0
  62. package/esm2015/domain/shop-settings/helpers/index.js +2 -0
  63. package/esm2015/domain/shop-settings/index.js +5 -0
  64. package/esm2015/domain/shop-settings/models/home.js +7 -0
  65. package/esm2015/domain/shop-settings/models/index.js +4 -0
  66. package/esm2015/domain/shop-settings/models/shop-menu.js +7 -0
  67. package/esm2015/domain/shop-settings/models/types/banner.type.js +2 -0
  68. package/esm2015/domain/shop-settings/models/types/benefit.type.js +2 -0
  69. package/esm2015/domain/shop-settings/models/types/home-data.type.js +2 -0
  70. package/esm2015/domain/shop-settings/models/types/index.js +6 -0
  71. package/esm2015/domain/shop-settings/models/types/menu-nav.type.js +2 -0
  72. package/esm2015/domain/shop-settings/models/types/sub-menu.type.js +2 -0
  73. package/esm2015/domain/shop-settings/repositories/home.repository.js +2 -0
  74. package/esm2015/domain/shop-settings/repositories/index.js +3 -0
  75. package/esm2015/domain/shop-settings/repositories/shop-menu.repository.js +2 -0
  76. package/esm2015/domain/shopping/index.js +3 -0
  77. package/esm2015/domain/shopping/models/buy-2-win.js +14 -0
  78. package/esm2015/domain/shopping/models/checkout.js +38 -0
  79. package/esm2015/domain/shopping/models/coupons/coupon.js +23 -0
  80. package/esm2015/domain/shopping/models/coupons/enums/coupon-subtypes.enum.js +6 -0
  81. package/esm2015/domain/shopping/models/coupons/enums/coupon-types.enum.js +8 -0
  82. package/esm2015/domain/shopping/models/coupons/enums/exclusivities.enum.js +7 -0
  83. package/esm2015/domain/shopping/models/coupons/enums/index.js +4 -0
  84. package/esm2015/domain/shopping/models/coupons/financial-coupon.js +28 -0
  85. package/esm2015/domain/shopping/models/coupons/index.js +4 -0
  86. package/esm2015/domain/shopping/models/enums/checkout-types.enum.js +6 -0
  87. package/esm2015/domain/shopping/models/enums/index.js +3 -0
  88. package/esm2015/domain/shopping/models/enums/order-status.enum.js +12 -0
  89. package/esm2015/domain/shopping/models/index.js +12 -0
  90. package/esm2015/domain/shopping/models/line-item.js +4 -0
  91. package/esm2015/domain/shopping/models/order.js +11 -0
  92. package/esm2015/domain/shopping/models/payment.js +169 -0
  93. package/esm2015/domain/shopping/models/shipping-method.js +7 -0
  94. package/esm2015/domain/shopping/models/subscription/checkout.js +28 -0
  95. package/esm2015/domain/shopping/models/subscription/index.js +3 -0
  96. package/esm2015/domain/shopping/models/subscription/plan.js +7 -0
  97. package/esm2015/domain/shopping/models/types/index.js +8 -0
  98. package/esm2015/domain/shopping/models/types/payment-address.type.js +2 -0
  99. package/esm2015/domain/shopping/models/types/payment-billing.type.js +2 -0
  100. package/esm2015/domain/shopping/models/types/payment-card.type.js +2 -0
  101. package/esm2015/domain/shopping/models/types/payment-customer.type.js +2 -0
  102. package/esm2015/domain/shopping/models/types/payment-document.type.js +2 -0
  103. package/esm2015/domain/shopping/models/types/payment-item.type.js +2 -0
  104. package/esm2015/domain/shopping/models/types/payment-shipping.type.js +2 -0
  105. package/esm2015/domain/shopping/repositories/buy-2-win.repository.js +2 -0
  106. package/esm2015/domain/shopping/repositories/checkout.repository.js +2 -0
  107. package/esm2015/domain/shopping/repositories/coupon.repository.js +2 -0
  108. package/esm2015/domain/shopping/repositories/index.js +8 -0
  109. package/esm2015/domain/shopping/repositories/legacy-order.repository.js +2 -0
  110. package/esm2015/domain/shopping/repositories/order.repository.js +2 -0
  111. package/esm2015/domain/shopping/repositories/payment.repository.js +2 -0
  112. package/esm2015/domain/shopping/repositories/subscription/checkout.repository.js +2 -0
  113. package/esm2015/domain/shopping/repositories/subscription/index.js +3 -0
  114. package/esm2015/domain/shopping/repositories/subscription/plan.repository.js +2 -0
  115. package/esm2015/domain/users/errors/index.js +4 -0
  116. package/esm2015/domain/users/errors/unauthorized.error.js +7 -0
  117. package/esm2015/domain/users/errors/user-already-registered.error.js +7 -0
  118. package/esm2015/domain/users/errors/weak-password.error.js +7 -0
  119. package/esm2015/domain/users/index.js +6 -0
  120. package/esm2015/domain/users/models/beauty-profile.js +12 -0
  121. package/esm2015/domain/users/models/enums/accessory-importances.enum.js +7 -0
  122. package/esm2015/domain/users/models/enums/area.enum.js +13 -0
  123. package/esm2015/domain/users/models/enums/beard-problems.enum.js +11 -0
  124. package/esm2015/domain/users/models/enums/beard-sizes.enum.js +9 -0
  125. package/esm2015/domain/users/models/enums/beauty-product-importances.enum.js +8 -0
  126. package/esm2015/domain/users/models/enums/body-problems.enum.js +13 -0
  127. package/esm2015/domain/users/models/enums/body-shapes.enum.js +9 -0
  128. package/esm2015/domain/users/models/enums/body-tattoos.enum.js +7 -0
  129. package/esm2015/domain/users/models/enums/face-skin-oilinesses.enum.js +9 -0
  130. package/esm2015/domain/users/models/enums/face-skin-problems.enum.js +12 -0
  131. package/esm2015/domain/users/models/enums/face-skin-tones.enum.js +10 -0
  132. package/esm2015/domain/users/models/enums/family-incomes.enum.js +10 -0
  133. package/esm2015/domain/users/models/enums/fragrance-importances.enum.js +7 -0
  134. package/esm2015/domain/users/models/enums/hair-colors.enum.js +12 -0
  135. package/esm2015/domain/users/models/enums/hair-problems.enum.js +12 -0
  136. package/esm2015/domain/users/models/enums/hair-strands.enum.js +10 -0
  137. package/esm2015/domain/users/models/enums/hair-types.enum.js +9 -0
  138. package/esm2015/domain/users/models/enums/index.js +21 -0
  139. package/esm2015/domain/users/models/enums/office-position.enum.js +8 -0
  140. package/esm2015/domain/users/models/enums/product-spents.enum.js +10 -0
  141. package/esm2015/domain/users/models/enums/user-type.enum.js +10 -0
  142. package/esm2015/domain/users/models/index.js +8 -0
  143. package/esm2015/domain/users/models/lead.js +7 -0
  144. package/esm2015/domain/users/models/subscription/edition.js +7 -0
  145. package/esm2015/domain/users/models/subscription/enums/billing-status.enum.js +5 -0
  146. package/esm2015/domain/users/models/subscription/enums/edition-status.enum.js +6 -0
  147. package/esm2015/domain/users/models/subscription/enums/index.js +5 -0
  148. package/esm2015/domain/users/models/subscription/enums/payment-type.enum.js +7 -0
  149. package/esm2015/domain/users/models/subscription/enums/status.enum.js +6 -0
  150. package/esm2015/domain/users/models/subscription/index.js +5 -0
  151. package/esm2015/domain/users/models/subscription/payment.js +14 -0
  152. package/esm2015/domain/users/models/subscription/subscription.js +43 -0
  153. package/esm2015/domain/users/models/user-address.js +7 -0
  154. package/esm2015/domain/users/models/user-payment-method.js +7 -0
  155. package/esm2015/domain/users/models/user.js +26 -0
  156. package/esm2015/domain/users/repositories/beauty-profile.repository.js +2 -0
  157. package/esm2015/domain/users/repositories/edition.repository.js +2 -0
  158. package/esm2015/domain/users/repositories/index.js +9 -0
  159. package/esm2015/domain/users/repositories/lead.repository.js +2 -0
  160. package/esm2015/domain/users/repositories/subscription-payment.repository.js +2 -0
  161. package/esm2015/domain/users/repositories/subscription.repository.js +2 -0
  162. package/esm2015/domain/users/repositories/user-address.repository.js +2 -0
  163. package/esm2015/domain/users/repositories/user-payment-method.repository.js +2 -0
  164. package/esm2015/domain/users/repositories/user.repository.js +2 -0
  165. package/esm2015/domain/users/services/authentication.service.js +2 -0
  166. package/esm2015/domain/users/services/index.js +4 -0
  167. package/esm2015/domain/users/services/register.service.js +2 -0
  168. package/esm2015/domain/users/services/types/basic-user-data.type.js +2 -0
  169. package/esm2015/domain/users/services/types/index.js +2 -0
  170. package/esm2015/domain/users/use-cases/authentication.js +40 -0
  171. package/esm2015/domain/users/use-cases/index.js +5 -0
  172. package/esm2015/domain/users/use-cases/recovery-password.js +12 -0
  173. package/esm2015/domain/users/use-cases/register.js +34 -0
  174. package/esm2015/domain/users/use-cases/signout.js +12 -0
  175. package/esm2015/errors/duplicated-results.error.js +7 -0
  176. package/esm2015/errors/index.js +5 -0
  177. package/esm2015/errors/invalid-argument.error.js +7 -0
  178. package/esm2015/errors/not-found.error.js +7 -0
  179. package/esm2015/errors/required-argument.error.js +8 -0
  180. package/esm2015/index.js +6 -0
  181. package/esm2015/infra/elasticsearch/adapters/axios.adapter.js +22 -0
  182. package/esm2015/infra/elasticsearch/adapters/elastic-search.adapter.js +2 -0
  183. package/esm2015/infra/elasticsearch/adapters/index.js +3 -0
  184. package/esm2015/infra/elasticsearch/index.js +4 -0
  185. package/esm2015/infra/elasticsearch/indexes/index.js +2 -0
  186. package/esm2015/infra/elasticsearch/indexes/products-index.js +58 -0
  187. package/esm2015/infra/elasticsearch/types/elastic-search-result.js +2 -0
  188. package/esm2015/infra/elasticsearch/types/index.js +2 -0
  189. package/esm2015/infra/firebase/auth/authentication-firebase-auth.service.js +52 -0
  190. package/esm2015/infra/firebase/auth/index.js +3 -0
  191. package/esm2015/infra/firebase/auth/register-firebase-auth.service.js +26 -0
  192. package/esm2015/infra/firebase/auth/types/firebase-user-with-id.type.js +2 -0
  193. package/esm2015/infra/firebase/firestore/index.js +4 -0
  194. package/esm2015/infra/firebase/firestore/mixins/index.js +10 -0
  195. package/esm2015/infra/firebase/firestore/mixins/with-create-firestore.mixin.js +31 -0
  196. package/esm2015/infra/firebase/firestore/mixins/with-crud-firestore.mixin.js +10 -0
  197. package/esm2015/infra/firebase/firestore/mixins/with-delete-firestore.mixin.js +18 -0
  198. package/esm2015/infra/firebase/firestore/mixins/with-find-firestore.mixin.js +87 -0
  199. package/esm2015/infra/firebase/firestore/mixins/with-firestore.mixin.js +26 -0
  200. package/esm2015/infra/firebase/firestore/mixins/with-get-firestore.mixin.js +24 -0
  201. package/esm2015/infra/firebase/firestore/mixins/with-helpers.mixin.js +17 -0
  202. package/esm2015/infra/firebase/firestore/mixins/with-sub-collection.mixin.js +11 -0
  203. package/esm2015/infra/firebase/firestore/mixins/with-update-firestore.mixin.js +45 -0
  204. package/esm2015/infra/firebase/firestore/models/user-search.js +7 -0
  205. package/esm2015/infra/firebase/firestore/repositories/catalog/category-firestore.repository.js +59 -0
  206. package/esm2015/infra/firebase/firestore/repositories/catalog/index.js +5 -0
  207. package/esm2015/infra/firebase/firestore/repositories/catalog/product-firestore.repository.js +23 -0
  208. package/esm2015/infra/firebase/firestore/repositories/catalog/product-variant-firestore.repository.js +14 -0
  209. package/esm2015/infra/firebase/firestore/repositories/catalog/subscription-product-firestore.repository.js +12 -0
  210. package/esm2015/infra/firebase/firestore/repositories/index.js +5 -0
  211. package/esm2015/infra/firebase/firestore/repositories/shop-settings/home-firestore.repository.js +56 -0
  212. package/esm2015/infra/firebase/firestore/repositories/shop-settings/index.js +3 -0
  213. package/esm2015/infra/firebase/firestore/repositories/shop-settings/shop-menu-firestore.repository.js +12 -0
  214. package/esm2015/infra/firebase/firestore/repositories/shopping/buy-2-win-firestore.repository.js +12 -0
  215. package/esm2015/infra/firebase/firestore/repositories/shopping/checkout-firestore.repository.js +12 -0
  216. package/esm2015/infra/firebase/firestore/repositories/shopping/checkout-subscription-firestore.repository.js +12 -0
  217. package/esm2015/infra/firebase/firestore/repositories/shopping/coupon-firestore.repository.js +29 -0
  218. package/esm2015/infra/firebase/firestore/repositories/shopping/index.js +9 -0
  219. package/esm2015/infra/firebase/firestore/repositories/shopping/legacy-order-firestore.repository.js +9 -0
  220. package/esm2015/infra/firebase/firestore/repositories/shopping/order-firestore.repository.js +12 -0
  221. package/esm2015/infra/firebase/firestore/repositories/shopping/payment-firestore.repository.js +12 -0
  222. package/esm2015/infra/firebase/firestore/repositories/shopping/subscription-plan-firestore.repository.js +12 -0
  223. package/esm2015/infra/firebase/firestore/repositories/users/index.js +10 -0
  224. package/esm2015/infra/firebase/firestore/repositories/users/lead-firestore.repository.js +12 -0
  225. package/esm2015/infra/firebase/firestore/repositories/users/subscription-edition-firestore.repository.js +14 -0
  226. package/esm2015/infra/firebase/firestore/repositories/users/subscription-firestore.repository.js +12 -0
  227. package/esm2015/infra/firebase/firestore/repositories/users/subscription-payment-firestore.repository.js +14 -0
  228. package/esm2015/infra/firebase/firestore/repositories/users/user-address-firestore.repository.js +14 -0
  229. package/esm2015/infra/firebase/firestore/repositories/users/user-beauty-profile-firestore.repository.js +14 -0
  230. package/esm2015/infra/firebase/firestore/repositories/users/user-firestore.repository.js +70 -0
  231. package/esm2015/infra/firebase/firestore/repositories/users/user-payment-method-firestore.repository.js +14 -0
  232. package/esm2015/infra/firebase/firestore/repositories/users/user-search-firestore.repository.js +12 -0
  233. package/esm2015/infra/firebase/firestore/types/firestore-sub.repository.type.js +2 -0
  234. package/esm2015/infra/firebase/firestore/types/firestore.helpers.type.js +2 -0
  235. package/esm2015/infra/firebase/firestore/types/firestore.repository.type.js +2 -0
  236. package/esm2015/infra/firebase/firestore/types/index.js +4 -0
  237. package/esm2015/infra/firebase/index.js +3 -0
  238. package/esm2015/infra/index.js +3 -0
  239. package/esm2015/infrab4a-connect.js +2 -2
  240. package/esm2015/utils/index.js +6 -0
  241. package/esm2015/utils/mixins/base.mixin.js +6 -0
  242. package/esm2015/utils/mixins/index.js +3 -0
  243. package/esm2015/utils/mixins/mixin-ctor.type.js +2 -0
  244. package/esm2015/utils/types/index.js +2 -0
  245. package/esm2015/utils/types/prop.type.js +2 -0
  246. package/fesm2015/infrab4a-connect.js +86 -20
  247. package/fesm2015/infrab4a-connect.js.map +1 -1
  248. package/{lib/index.d.ts → index.d.ts} +1 -0
  249. package/infra/elasticsearch/adapters/axios.adapter.d.ts +11 -0
  250. package/infra/elasticsearch/adapters/elastic-search.adapter.d.ts +4 -0
  251. package/infra/elasticsearch/adapters/index.d.ts +2 -0
  252. package/infra/elasticsearch/index.d.ts +3 -0
  253. package/infra/elasticsearch/indexes/index.d.ts +1 -0
  254. package/infra/elasticsearch/indexes/products-index.d.ts +11 -0
  255. package/infra/elasticsearch/types/elastic-search-result.d.ts +7 -0
  256. package/infra/elasticsearch/types/index.d.ts +1 -0
  257. package/{lib/infra → infra}/firebase/firestore/repositories/catalog/category-firestore.repository.d.ts +3 -1
  258. package/infra/index.d.ts +2 -0
  259. package/infrab4a-connect.d.ts +1 -1
  260. package/package.json +2 -1
  261. package/esm2015/lib/domain/catalog/index.js +0 -3
  262. package/esm2015/lib/domain/catalog/models/category.js +0 -7
  263. package/esm2015/lib/domain/catalog/models/enums/index.js +0 -2
  264. package/esm2015/lib/domain/catalog/models/enums/shops.enum.js +0 -7
  265. package/esm2015/lib/domain/catalog/models/index.js +0 -6
  266. package/esm2015/lib/domain/catalog/models/product.js +0 -11
  267. package/esm2015/lib/domain/catalog/models/types/category-condition.type.js +0 -2
  268. package/esm2015/lib/domain/catalog/models/types/category-filter.type.js +0 -2
  269. package/esm2015/lib/domain/catalog/models/types/index.js +0 -8
  270. package/esm2015/lib/domain/catalog/models/types/product-review.type.js +0 -2
  271. package/esm2015/lib/domain/catalog/models/types/shops-description.type.js +0 -2
  272. package/esm2015/lib/domain/catalog/models/types/shops-price.type.js +0 -2
  273. package/esm2015/lib/domain/catalog/models/types/stock.type.js +0 -2
  274. package/esm2015/lib/domain/catalog/models/types/variant-grade.type.js +0 -2
  275. package/esm2015/lib/domain/catalog/models/variant.js +0 -7
  276. package/esm2015/lib/domain/catalog/repositories/category.repository.js +0 -2
  277. package/esm2015/lib/domain/catalog/repositories/index.js +0 -5
  278. package/esm2015/lib/domain/catalog/repositories/product.repository.js +0 -2
  279. package/esm2015/lib/domain/catalog/repositories/subscription-product.repository.js +0 -2
  280. package/esm2015/lib/domain/catalog/repositories/variant.repository.js +0 -2
  281. package/esm2015/lib/domain/general/index.js +0 -3
  282. package/esm2015/lib/domain/general/model/base-model-with-identifier-fields.js +0 -2
  283. package/esm2015/lib/domain/general/model/base.model.js +0 -13
  284. package/esm2015/lib/domain/general/model/identifier-fields.js +0 -2
  285. package/esm2015/lib/domain/general/model/index.js +0 -5
  286. package/esm2015/lib/domain/general/model/types/base-model-builder.type.js +0 -2
  287. package/esm2015/lib/domain/general/model/types/index.js +0 -4
  288. package/esm2015/lib/domain/general/model/types/non-function-properties.type.js +0 -2
  289. package/esm2015/lib/domain/general/model/types/non-function-property-name.type.js +0 -2
  290. package/esm2015/lib/domain/general/repository/create.repository.js +0 -2
  291. package/esm2015/lib/domain/general/repository/crud.repository.js +0 -2
  292. package/esm2015/lib/domain/general/repository/delete.repository.js +0 -2
  293. package/esm2015/lib/domain/general/repository/enums/index.js +0 -3
  294. package/esm2015/lib/domain/general/repository/enums/update-option-actions.enum.js +0 -9
  295. package/esm2015/lib/domain/general/repository/enums/where.enum.js +0 -12
  296. package/esm2015/lib/domain/general/repository/find.repository.js +0 -2
  297. package/esm2015/lib/domain/general/repository/get.repository.js +0 -2
  298. package/esm2015/lib/domain/general/repository/index.js +0 -10
  299. package/esm2015/lib/domain/general/repository/read.repository.js +0 -2
  300. package/esm2015/lib/domain/general/repository/types/index.js +0 -6
  301. package/esm2015/lib/domain/general/repository/types/repository-find-filters.type.js +0 -2
  302. package/esm2015/lib/domain/general/repository/types/repository-find-result.type.js +0 -2
  303. package/esm2015/lib/domain/general/repository/types/repository-limit-options.type.js +0 -2
  304. package/esm2015/lib/domain/general/repository/types/repository-order-by-list.type.js +0 -2
  305. package/esm2015/lib/domain/general/repository/types/repository-update-params.type.js +0 -2
  306. package/esm2015/lib/domain/general/repository/update.repository.js +0 -2
  307. package/esm2015/lib/domain/index.js +0 -7
  308. package/esm2015/lib/domain/location/index.js +0 -2
  309. package/esm2015/lib/domain/location/models/address.js +0 -4
  310. package/esm2015/lib/domain/location/models/index.js +0 -3
  311. package/esm2015/lib/domain/location/models/types/index.js +0 -4
  312. package/esm2015/lib/domain/location/models/types/location-bound.type.js +0 -2
  313. package/esm2015/lib/domain/location/models/types/location-geometry.type.js +0 -2
  314. package/esm2015/lib/domain/location/models/types/location-lat-lng.type.js +0 -2
  315. package/esm2015/lib/domain/shop-settings/enums/filter-type.enum.js +0 -21
  316. package/esm2015/lib/domain/shop-settings/enums/index.js +0 -3
  317. package/esm2015/lib/domain/shop-settings/enums/questions-filters.enum.js +0 -21
  318. package/esm2015/lib/domain/shop-settings/helpers/beauty-questions.helper.js +0 -46
  319. package/esm2015/lib/domain/shop-settings/helpers/index.js +0 -2
  320. package/esm2015/lib/domain/shop-settings/index.js +0 -5
  321. package/esm2015/lib/domain/shop-settings/models/home.js +0 -7
  322. package/esm2015/lib/domain/shop-settings/models/index.js +0 -4
  323. package/esm2015/lib/domain/shop-settings/models/shop-menu.js +0 -7
  324. package/esm2015/lib/domain/shop-settings/models/types/banner.type.js +0 -2
  325. package/esm2015/lib/domain/shop-settings/models/types/benefit.type.js +0 -2
  326. package/esm2015/lib/domain/shop-settings/models/types/home-data.type.js +0 -2
  327. package/esm2015/lib/domain/shop-settings/models/types/index.js +0 -6
  328. package/esm2015/lib/domain/shop-settings/models/types/menu-nav.type.js +0 -2
  329. package/esm2015/lib/domain/shop-settings/models/types/sub-menu.type.js +0 -2
  330. package/esm2015/lib/domain/shop-settings/repositories/home.repository.js +0 -2
  331. package/esm2015/lib/domain/shop-settings/repositories/index.js +0 -3
  332. package/esm2015/lib/domain/shop-settings/repositories/shop-menu.repository.js +0 -2
  333. package/esm2015/lib/domain/shopping/index.js +0 -3
  334. package/esm2015/lib/domain/shopping/models/buy-2-win.js +0 -14
  335. package/esm2015/lib/domain/shopping/models/checkout.js +0 -38
  336. package/esm2015/lib/domain/shopping/models/coupons/coupon.js +0 -23
  337. package/esm2015/lib/domain/shopping/models/coupons/enums/coupon-subtypes.enum.js +0 -6
  338. package/esm2015/lib/domain/shopping/models/coupons/enums/coupon-types.enum.js +0 -8
  339. package/esm2015/lib/domain/shopping/models/coupons/enums/exclusivities.enum.js +0 -7
  340. package/esm2015/lib/domain/shopping/models/coupons/enums/index.js +0 -4
  341. package/esm2015/lib/domain/shopping/models/coupons/financial-coupon.js +0 -28
  342. package/esm2015/lib/domain/shopping/models/coupons/index.js +0 -4
  343. package/esm2015/lib/domain/shopping/models/enums/checkout-types.enum.js +0 -6
  344. package/esm2015/lib/domain/shopping/models/enums/index.js +0 -3
  345. package/esm2015/lib/domain/shopping/models/enums/order-status.enum.js +0 -12
  346. package/esm2015/lib/domain/shopping/models/index.js +0 -12
  347. package/esm2015/lib/domain/shopping/models/line-item.js +0 -4
  348. package/esm2015/lib/domain/shopping/models/order.js +0 -11
  349. package/esm2015/lib/domain/shopping/models/payment.js +0 -169
  350. package/esm2015/lib/domain/shopping/models/shipping-method.js +0 -7
  351. package/esm2015/lib/domain/shopping/models/subscription/checkout.js +0 -28
  352. package/esm2015/lib/domain/shopping/models/subscription/index.js +0 -3
  353. package/esm2015/lib/domain/shopping/models/subscription/plan.js +0 -7
  354. package/esm2015/lib/domain/shopping/models/types/index.js +0 -8
  355. package/esm2015/lib/domain/shopping/models/types/payment-address.type.js +0 -2
  356. package/esm2015/lib/domain/shopping/models/types/payment-billing.type.js +0 -2
  357. package/esm2015/lib/domain/shopping/models/types/payment-card.type.js +0 -2
  358. package/esm2015/lib/domain/shopping/models/types/payment-customer.type.js +0 -2
  359. package/esm2015/lib/domain/shopping/models/types/payment-document.type.js +0 -2
  360. package/esm2015/lib/domain/shopping/models/types/payment-item.type.js +0 -2
  361. package/esm2015/lib/domain/shopping/models/types/payment-shipping.type.js +0 -2
  362. package/esm2015/lib/domain/shopping/repositories/buy-2-win.repository.js +0 -2
  363. package/esm2015/lib/domain/shopping/repositories/checkout.repository.js +0 -2
  364. package/esm2015/lib/domain/shopping/repositories/coupon.repository.js +0 -2
  365. package/esm2015/lib/domain/shopping/repositories/index.js +0 -8
  366. package/esm2015/lib/domain/shopping/repositories/legacy-order.repository.js +0 -2
  367. package/esm2015/lib/domain/shopping/repositories/order.repository.js +0 -2
  368. package/esm2015/lib/domain/shopping/repositories/payment.repository.js +0 -2
  369. package/esm2015/lib/domain/shopping/repositories/subscription/checkout.repository.js +0 -2
  370. package/esm2015/lib/domain/shopping/repositories/subscription/index.js +0 -3
  371. package/esm2015/lib/domain/shopping/repositories/subscription/plan.repository.js +0 -2
  372. package/esm2015/lib/domain/users/errors/index.js +0 -4
  373. package/esm2015/lib/domain/users/errors/unauthorized.error.js +0 -7
  374. package/esm2015/lib/domain/users/errors/user-already-registered.error.js +0 -7
  375. package/esm2015/lib/domain/users/errors/weak-password.error.js +0 -7
  376. package/esm2015/lib/domain/users/index.js +0 -6
  377. package/esm2015/lib/domain/users/models/beauty-profile.js +0 -12
  378. package/esm2015/lib/domain/users/models/enums/accessory-importances.enum.js +0 -7
  379. package/esm2015/lib/domain/users/models/enums/area.enum.js +0 -13
  380. package/esm2015/lib/domain/users/models/enums/beard-problems.enum.js +0 -11
  381. package/esm2015/lib/domain/users/models/enums/beard-sizes.enum.js +0 -9
  382. package/esm2015/lib/domain/users/models/enums/beauty-product-importances.enum.js +0 -8
  383. package/esm2015/lib/domain/users/models/enums/body-problems.enum.js +0 -13
  384. package/esm2015/lib/domain/users/models/enums/body-shapes.enum.js +0 -9
  385. package/esm2015/lib/domain/users/models/enums/body-tattoos.enum.js +0 -7
  386. package/esm2015/lib/domain/users/models/enums/face-skin-oilinesses.enum.js +0 -9
  387. package/esm2015/lib/domain/users/models/enums/face-skin-problems.enum.js +0 -12
  388. package/esm2015/lib/domain/users/models/enums/face-skin-tones.enum.js +0 -10
  389. package/esm2015/lib/domain/users/models/enums/family-incomes.enum.js +0 -10
  390. package/esm2015/lib/domain/users/models/enums/fragrance-importances.enum.js +0 -7
  391. package/esm2015/lib/domain/users/models/enums/hair-colors.enum.js +0 -12
  392. package/esm2015/lib/domain/users/models/enums/hair-problems.enum.js +0 -12
  393. package/esm2015/lib/domain/users/models/enums/hair-strands.enum.js +0 -10
  394. package/esm2015/lib/domain/users/models/enums/hair-types.enum.js +0 -9
  395. package/esm2015/lib/domain/users/models/enums/index.js +0 -21
  396. package/esm2015/lib/domain/users/models/enums/office-position.enum.js +0 -8
  397. package/esm2015/lib/domain/users/models/enums/product-spents.enum.js +0 -10
  398. package/esm2015/lib/domain/users/models/enums/user-type.enum.js +0 -10
  399. package/esm2015/lib/domain/users/models/index.js +0 -8
  400. package/esm2015/lib/domain/users/models/lead.js +0 -7
  401. package/esm2015/lib/domain/users/models/subscription/edition.js +0 -7
  402. package/esm2015/lib/domain/users/models/subscription/enums/billing-status.enum.js +0 -5
  403. package/esm2015/lib/domain/users/models/subscription/enums/edition-status.enum.js +0 -6
  404. package/esm2015/lib/domain/users/models/subscription/enums/index.js +0 -5
  405. package/esm2015/lib/domain/users/models/subscription/enums/payment-type.enum.js +0 -7
  406. package/esm2015/lib/domain/users/models/subscription/enums/status.enum.js +0 -6
  407. package/esm2015/lib/domain/users/models/subscription/index.js +0 -5
  408. package/esm2015/lib/domain/users/models/subscription/payment.js +0 -14
  409. package/esm2015/lib/domain/users/models/subscription/subscription.js +0 -43
  410. package/esm2015/lib/domain/users/models/user-address.js +0 -7
  411. package/esm2015/lib/domain/users/models/user-payment-method.js +0 -7
  412. package/esm2015/lib/domain/users/models/user.js +0 -26
  413. package/esm2015/lib/domain/users/repositories/beauty-profile.repository.js +0 -2
  414. package/esm2015/lib/domain/users/repositories/edition.repository.js +0 -2
  415. package/esm2015/lib/domain/users/repositories/index.js +0 -9
  416. package/esm2015/lib/domain/users/repositories/lead.repository.js +0 -2
  417. package/esm2015/lib/domain/users/repositories/subscription-payment.repository.js +0 -2
  418. package/esm2015/lib/domain/users/repositories/subscription.repository.js +0 -2
  419. package/esm2015/lib/domain/users/repositories/user-address.repository.js +0 -2
  420. package/esm2015/lib/domain/users/repositories/user-payment-method.repository.js +0 -2
  421. package/esm2015/lib/domain/users/repositories/user.repository.js +0 -2
  422. package/esm2015/lib/domain/users/services/authentication.service.js +0 -2
  423. package/esm2015/lib/domain/users/services/index.js +0 -4
  424. package/esm2015/lib/domain/users/services/register.service.js +0 -2
  425. package/esm2015/lib/domain/users/services/types/basic-user-data.type.js +0 -2
  426. package/esm2015/lib/domain/users/services/types/index.js +0 -2
  427. package/esm2015/lib/domain/users/use-cases/authentication.js +0 -40
  428. package/esm2015/lib/domain/users/use-cases/index.js +0 -5
  429. package/esm2015/lib/domain/users/use-cases/recovery-password.js +0 -12
  430. package/esm2015/lib/domain/users/use-cases/register.js +0 -34
  431. package/esm2015/lib/domain/users/use-cases/signout.js +0 -12
  432. package/esm2015/lib/errors/duplicated-results.error.js +0 -7
  433. package/esm2015/lib/errors/index.js +0 -5
  434. package/esm2015/lib/errors/invalid-argument.error.js +0 -7
  435. package/esm2015/lib/errors/not-found.error.js +0 -7
  436. package/esm2015/lib/errors/required-argument.error.js +0 -8
  437. package/esm2015/lib/index.js +0 -5
  438. package/esm2015/lib/infra/firebase/auth/authentication-firebase-auth.service.js +0 -52
  439. package/esm2015/lib/infra/firebase/auth/index.js +0 -3
  440. package/esm2015/lib/infra/firebase/auth/register-firebase-auth.service.js +0 -26
  441. package/esm2015/lib/infra/firebase/auth/types/firebase-user-with-id.type.js +0 -2
  442. package/esm2015/lib/infra/firebase/firestore/index.js +0 -4
  443. package/esm2015/lib/infra/firebase/firestore/mixins/index.js +0 -10
  444. package/esm2015/lib/infra/firebase/firestore/mixins/with-create-firestore.mixin.js +0 -31
  445. package/esm2015/lib/infra/firebase/firestore/mixins/with-crud-firestore.mixin.js +0 -10
  446. package/esm2015/lib/infra/firebase/firestore/mixins/with-delete-firestore.mixin.js +0 -18
  447. package/esm2015/lib/infra/firebase/firestore/mixins/with-find-firestore.mixin.js +0 -87
  448. package/esm2015/lib/infra/firebase/firestore/mixins/with-firestore.mixin.js +0 -26
  449. package/esm2015/lib/infra/firebase/firestore/mixins/with-get-firestore.mixin.js +0 -24
  450. package/esm2015/lib/infra/firebase/firestore/mixins/with-helpers.mixin.js +0 -17
  451. package/esm2015/lib/infra/firebase/firestore/mixins/with-sub-collection.mixin.js +0 -11
  452. package/esm2015/lib/infra/firebase/firestore/mixins/with-update-firestore.mixin.js +0 -45
  453. package/esm2015/lib/infra/firebase/firestore/models/user-search.js +0 -7
  454. package/esm2015/lib/infra/firebase/firestore/repositories/catalog/category-firestore.repository.js +0 -70
  455. package/esm2015/lib/infra/firebase/firestore/repositories/catalog/index.js +0 -5
  456. package/esm2015/lib/infra/firebase/firestore/repositories/catalog/product-firestore.repository.js +0 -23
  457. package/esm2015/lib/infra/firebase/firestore/repositories/catalog/product-variant-firestore.repository.js +0 -14
  458. package/esm2015/lib/infra/firebase/firestore/repositories/catalog/subscription-product-firestore.repository.js +0 -12
  459. package/esm2015/lib/infra/firebase/firestore/repositories/index.js +0 -5
  460. package/esm2015/lib/infra/firebase/firestore/repositories/shop-settings/home-firestore.repository.js +0 -56
  461. package/esm2015/lib/infra/firebase/firestore/repositories/shop-settings/index.js +0 -3
  462. package/esm2015/lib/infra/firebase/firestore/repositories/shop-settings/shop-menu-firestore.repository.js +0 -12
  463. package/esm2015/lib/infra/firebase/firestore/repositories/shopping/buy-2-win-firestore.repository.js +0 -12
  464. package/esm2015/lib/infra/firebase/firestore/repositories/shopping/checkout-firestore.repository.js +0 -12
  465. package/esm2015/lib/infra/firebase/firestore/repositories/shopping/checkout-subscription-firestore.repository.js +0 -12
  466. package/esm2015/lib/infra/firebase/firestore/repositories/shopping/coupon-firestore.repository.js +0 -29
  467. package/esm2015/lib/infra/firebase/firestore/repositories/shopping/index.js +0 -9
  468. package/esm2015/lib/infra/firebase/firestore/repositories/shopping/legacy-order-firestore.repository.js +0 -9
  469. package/esm2015/lib/infra/firebase/firestore/repositories/shopping/order-firestore.repository.js +0 -12
  470. package/esm2015/lib/infra/firebase/firestore/repositories/shopping/payment-firestore.repository.js +0 -12
  471. package/esm2015/lib/infra/firebase/firestore/repositories/shopping/subscription-plan-firestore.repository.js +0 -12
  472. package/esm2015/lib/infra/firebase/firestore/repositories/users/index.js +0 -10
  473. package/esm2015/lib/infra/firebase/firestore/repositories/users/lead-firestore.repository.js +0 -12
  474. package/esm2015/lib/infra/firebase/firestore/repositories/users/subscription-edition-firestore.repository.js +0 -14
  475. package/esm2015/lib/infra/firebase/firestore/repositories/users/subscription-firestore.repository.js +0 -12
  476. package/esm2015/lib/infra/firebase/firestore/repositories/users/subscription-payment-firestore.repository.js +0 -14
  477. package/esm2015/lib/infra/firebase/firestore/repositories/users/user-address-firestore.repository.js +0 -14
  478. package/esm2015/lib/infra/firebase/firestore/repositories/users/user-beauty-profile-firestore.repository.js +0 -14
  479. package/esm2015/lib/infra/firebase/firestore/repositories/users/user-firestore.repository.js +0 -70
  480. package/esm2015/lib/infra/firebase/firestore/repositories/users/user-payment-method-firestore.repository.js +0 -14
  481. package/esm2015/lib/infra/firebase/firestore/repositories/users/user-search-firestore.repository.js +0 -12
  482. package/esm2015/lib/infra/firebase/firestore/types/firestore-sub.repository.type.js +0 -2
  483. package/esm2015/lib/infra/firebase/firestore/types/firestore.helpers.type.js +0 -2
  484. package/esm2015/lib/infra/firebase/firestore/types/firestore.repository.type.js +0 -2
  485. package/esm2015/lib/infra/firebase/firestore/types/index.js +0 -4
  486. package/esm2015/lib/infra/firebase/index.js +0 -3
  487. package/esm2015/lib/infra/index.js +0 -2
  488. package/esm2015/lib/utils/index.js +0 -6
  489. package/esm2015/lib/utils/mixins/base.mixin.js +0 -6
  490. package/esm2015/lib/utils/mixins/index.js +0 -3
  491. package/esm2015/lib/utils/mixins/mixin-ctor.type.js +0 -2
  492. package/esm2015/lib/utils/types/index.js +0 -2
  493. package/esm2015/lib/utils/types/prop.type.js +0 -2
  494. package/esm2015/public-api.js +0 -3
  495. package/lib/infra/index.d.ts +0 -1
  496. package/public-api.d.ts +0 -2
  497. /package/{lib/domain → domain}/catalog/index.d.ts +0 -0
  498. /package/{lib/domain → domain}/catalog/models/category.d.ts +0 -0
  499. /package/{lib/domain → domain}/catalog/models/enums/index.d.ts +0 -0
  500. /package/{lib/domain → domain}/catalog/models/enums/shops.enum.d.ts +0 -0
  501. /package/{lib/domain → domain}/catalog/models/index.d.ts +0 -0
  502. /package/{lib/domain → domain}/catalog/models/product.d.ts +0 -0
  503. /package/{lib/domain → domain}/catalog/models/types/category-condition.type.d.ts +0 -0
  504. /package/{lib/domain → domain}/catalog/models/types/category-filter.type.d.ts +0 -0
  505. /package/{lib/domain → domain}/catalog/models/types/index.d.ts +0 -0
  506. /package/{lib/domain → domain}/catalog/models/types/product-review.type.d.ts +0 -0
  507. /package/{lib/domain → domain}/catalog/models/types/shops-description.type.d.ts +0 -0
  508. /package/{lib/domain → domain}/catalog/models/types/shops-price.type.d.ts +0 -0
  509. /package/{lib/domain → domain}/catalog/models/types/stock.type.d.ts +0 -0
  510. /package/{lib/domain → domain}/catalog/models/types/variant-grade.type.d.ts +0 -0
  511. /package/{lib/domain → domain}/catalog/models/variant.d.ts +0 -0
  512. /package/{lib/domain → domain}/catalog/repositories/index.d.ts +0 -0
  513. /package/{lib/domain → domain}/catalog/repositories/product.repository.d.ts +0 -0
  514. /package/{lib/domain → domain}/catalog/repositories/subscription-product.repository.d.ts +0 -0
  515. /package/{lib/domain → domain}/catalog/repositories/variant.repository.d.ts +0 -0
  516. /package/{lib/domain → domain}/general/index.d.ts +0 -0
  517. /package/{lib/domain → domain}/general/model/base-model-with-identifier-fields.d.ts +0 -0
  518. /package/{lib/domain → domain}/general/model/base.model.d.ts +0 -0
  519. /package/{lib/domain → domain}/general/model/identifier-fields.d.ts +0 -0
  520. /package/{lib/domain → domain}/general/model/index.d.ts +0 -0
  521. /package/{lib/domain → domain}/general/model/types/base-model-builder.type.d.ts +0 -0
  522. /package/{lib/domain → domain}/general/model/types/index.d.ts +0 -0
  523. /package/{lib/domain → domain}/general/model/types/non-function-properties.type.d.ts +0 -0
  524. /package/{lib/domain → domain}/general/model/types/non-function-property-name.type.d.ts +0 -0
  525. /package/{lib/domain → domain}/general/repository/create.repository.d.ts +0 -0
  526. /package/{lib/domain → domain}/general/repository/crud.repository.d.ts +0 -0
  527. /package/{lib/domain → domain}/general/repository/delete.repository.d.ts +0 -0
  528. /package/{lib/domain → domain}/general/repository/enums/index.d.ts +0 -0
  529. /package/{lib/domain → domain}/general/repository/enums/update-option-actions.enum.d.ts +0 -0
  530. /package/{lib/domain → domain}/general/repository/enums/where.enum.d.ts +0 -0
  531. /package/{lib/domain → domain}/general/repository/find.repository.d.ts +0 -0
  532. /package/{lib/domain → domain}/general/repository/get.repository.d.ts +0 -0
  533. /package/{lib/domain → domain}/general/repository/index.d.ts +0 -0
  534. /package/{lib/domain → domain}/general/repository/read.repository.d.ts +0 -0
  535. /package/{lib/domain → domain}/general/repository/types/index.d.ts +0 -0
  536. /package/{lib/domain → domain}/general/repository/types/repository-find-filters.type.d.ts +0 -0
  537. /package/{lib/domain → domain}/general/repository/types/repository-find-result.type.d.ts +0 -0
  538. /package/{lib/domain → domain}/general/repository/types/repository-limit-options.type.d.ts +0 -0
  539. /package/{lib/domain → domain}/general/repository/types/repository-order-by-list.type.d.ts +0 -0
  540. /package/{lib/domain → domain}/general/repository/types/repository-update-params.type.d.ts +0 -0
  541. /package/{lib/domain → domain}/general/repository/update.repository.d.ts +0 -0
  542. /package/{lib/domain → domain}/index.d.ts +0 -0
  543. /package/{lib/domain → domain}/location/index.d.ts +0 -0
  544. /package/{lib/domain → domain}/location/models/address.d.ts +0 -0
  545. /package/{lib/domain → domain}/location/models/index.d.ts +0 -0
  546. /package/{lib/domain → domain}/location/models/types/index.d.ts +0 -0
  547. /package/{lib/domain → domain}/location/models/types/location-bound.type.d.ts +0 -0
  548. /package/{lib/domain → domain}/location/models/types/location-geometry.type.d.ts +0 -0
  549. /package/{lib/domain → domain}/location/models/types/location-lat-lng.type.d.ts +0 -0
  550. /package/{lib/domain → domain}/shop-settings/enums/filter-type.enum.d.ts +0 -0
  551. /package/{lib/domain → domain}/shop-settings/enums/index.d.ts +0 -0
  552. /package/{lib/domain → domain}/shop-settings/enums/questions-filters.enum.d.ts +0 -0
  553. /package/{lib/domain → domain}/shop-settings/helpers/beauty-questions.helper.d.ts +0 -0
  554. /package/{lib/domain → domain}/shop-settings/helpers/index.d.ts +0 -0
  555. /package/{lib/domain → domain}/shop-settings/index.d.ts +0 -0
  556. /package/{lib/domain → domain}/shop-settings/models/home.d.ts +0 -0
  557. /package/{lib/domain → domain}/shop-settings/models/index.d.ts +0 -0
  558. /package/{lib/domain → domain}/shop-settings/models/shop-menu.d.ts +0 -0
  559. /package/{lib/domain → domain}/shop-settings/models/types/banner.type.d.ts +0 -0
  560. /package/{lib/domain → domain}/shop-settings/models/types/benefit.type.d.ts +0 -0
  561. /package/{lib/domain → domain}/shop-settings/models/types/home-data.type.d.ts +0 -0
  562. /package/{lib/domain → domain}/shop-settings/models/types/index.d.ts +0 -0
  563. /package/{lib/domain → domain}/shop-settings/models/types/menu-nav.type.d.ts +0 -0
  564. /package/{lib/domain → domain}/shop-settings/models/types/sub-menu.type.d.ts +0 -0
  565. /package/{lib/domain → domain}/shop-settings/repositories/home.repository.d.ts +0 -0
  566. /package/{lib/domain → domain}/shop-settings/repositories/index.d.ts +0 -0
  567. /package/{lib/domain → domain}/shop-settings/repositories/shop-menu.repository.d.ts +0 -0
  568. /package/{lib/domain → domain}/shopping/index.d.ts +0 -0
  569. /package/{lib/domain → domain}/shopping/models/buy-2-win.d.ts +0 -0
  570. /package/{lib/domain → domain}/shopping/models/checkout.d.ts +0 -0
  571. /package/{lib/domain → domain}/shopping/models/coupons/coupon.d.ts +0 -0
  572. /package/{lib/domain → domain}/shopping/models/coupons/enums/coupon-subtypes.enum.d.ts +0 -0
  573. /package/{lib/domain → domain}/shopping/models/coupons/enums/coupon-types.enum.d.ts +0 -0
  574. /package/{lib/domain → domain}/shopping/models/coupons/enums/exclusivities.enum.d.ts +0 -0
  575. /package/{lib/domain → domain}/shopping/models/coupons/enums/index.d.ts +0 -0
  576. /package/{lib/domain → domain}/shopping/models/coupons/financial-coupon.d.ts +0 -0
  577. /package/{lib/domain → domain}/shopping/models/coupons/index.d.ts +0 -0
  578. /package/{lib/domain → domain}/shopping/models/enums/checkout-types.enum.d.ts +0 -0
  579. /package/{lib/domain → domain}/shopping/models/enums/index.d.ts +0 -0
  580. /package/{lib/domain → domain}/shopping/models/enums/order-status.enum.d.ts +0 -0
  581. /package/{lib/domain → domain}/shopping/models/index.d.ts +0 -0
  582. /package/{lib/domain → domain}/shopping/models/line-item.d.ts +0 -0
  583. /package/{lib/domain → domain}/shopping/models/order.d.ts +0 -0
  584. /package/{lib/domain → domain}/shopping/models/payment.d.ts +0 -0
  585. /package/{lib/domain → domain}/shopping/models/shipping-method.d.ts +0 -0
  586. /package/{lib/domain → domain}/shopping/models/subscription/checkout.d.ts +0 -0
  587. /package/{lib/domain → domain}/shopping/models/subscription/index.d.ts +0 -0
  588. /package/{lib/domain → domain}/shopping/models/subscription/plan.d.ts +0 -0
  589. /package/{lib/domain → domain}/shopping/models/types/index.d.ts +0 -0
  590. /package/{lib/domain → domain}/shopping/models/types/payment-address.type.d.ts +0 -0
  591. /package/{lib/domain → domain}/shopping/models/types/payment-billing.type.d.ts +0 -0
  592. /package/{lib/domain → domain}/shopping/models/types/payment-card.type.d.ts +0 -0
  593. /package/{lib/domain → domain}/shopping/models/types/payment-customer.type.d.ts +0 -0
  594. /package/{lib/domain → domain}/shopping/models/types/payment-document.type.d.ts +0 -0
  595. /package/{lib/domain → domain}/shopping/models/types/payment-item.type.d.ts +0 -0
  596. /package/{lib/domain → domain}/shopping/models/types/payment-shipping.type.d.ts +0 -0
  597. /package/{lib/domain → domain}/shopping/repositories/buy-2-win.repository.d.ts +0 -0
  598. /package/{lib/domain → domain}/shopping/repositories/checkout.repository.d.ts +0 -0
  599. /package/{lib/domain → domain}/shopping/repositories/coupon.repository.d.ts +0 -0
  600. /package/{lib/domain → domain}/shopping/repositories/index.d.ts +0 -0
  601. /package/{lib/domain → domain}/shopping/repositories/legacy-order.repository.d.ts +0 -0
  602. /package/{lib/domain → domain}/shopping/repositories/order.repository.d.ts +0 -0
  603. /package/{lib/domain → domain}/shopping/repositories/payment.repository.d.ts +0 -0
  604. /package/{lib/domain → domain}/shopping/repositories/subscription/checkout.repository.d.ts +0 -0
  605. /package/{lib/domain → domain}/shopping/repositories/subscription/index.d.ts +0 -0
  606. /package/{lib/domain → domain}/shopping/repositories/subscription/plan.repository.d.ts +0 -0
  607. /package/{lib/domain → domain}/users/errors/index.d.ts +0 -0
  608. /package/{lib/domain → domain}/users/errors/unauthorized.error.d.ts +0 -0
  609. /package/{lib/domain → domain}/users/errors/user-already-registered.error.d.ts +0 -0
  610. /package/{lib/domain → domain}/users/errors/weak-password.error.d.ts +0 -0
  611. /package/{lib/domain → domain}/users/index.d.ts +0 -0
  612. /package/{lib/domain → domain}/users/models/beauty-profile.d.ts +0 -0
  613. /package/{lib/domain → domain}/users/models/enums/accessory-importances.enum.d.ts +0 -0
  614. /package/{lib/domain → domain}/users/models/enums/area.enum.d.ts +0 -0
  615. /package/{lib/domain → domain}/users/models/enums/beard-problems.enum.d.ts +0 -0
  616. /package/{lib/domain → domain}/users/models/enums/beard-sizes.enum.d.ts +0 -0
  617. /package/{lib/domain → domain}/users/models/enums/beauty-product-importances.enum.d.ts +0 -0
  618. /package/{lib/domain → domain}/users/models/enums/body-problems.enum.d.ts +0 -0
  619. /package/{lib/domain → domain}/users/models/enums/body-shapes.enum.d.ts +0 -0
  620. /package/{lib/domain → domain}/users/models/enums/body-tattoos.enum.d.ts +0 -0
  621. /package/{lib/domain → domain}/users/models/enums/face-skin-oilinesses.enum.d.ts +0 -0
  622. /package/{lib/domain → domain}/users/models/enums/face-skin-problems.enum.d.ts +0 -0
  623. /package/{lib/domain → domain}/users/models/enums/face-skin-tones.enum.d.ts +0 -0
  624. /package/{lib/domain → domain}/users/models/enums/family-incomes.enum.d.ts +0 -0
  625. /package/{lib/domain → domain}/users/models/enums/fragrance-importances.enum.d.ts +0 -0
  626. /package/{lib/domain → domain}/users/models/enums/hair-colors.enum.d.ts +0 -0
  627. /package/{lib/domain → domain}/users/models/enums/hair-problems.enum.d.ts +0 -0
  628. /package/{lib/domain → domain}/users/models/enums/hair-strands.enum.d.ts +0 -0
  629. /package/{lib/domain → domain}/users/models/enums/hair-types.enum.d.ts +0 -0
  630. /package/{lib/domain → domain}/users/models/enums/index.d.ts +0 -0
  631. /package/{lib/domain → domain}/users/models/enums/office-position.enum.d.ts +0 -0
  632. /package/{lib/domain → domain}/users/models/enums/product-spents.enum.d.ts +0 -0
  633. /package/{lib/domain → domain}/users/models/enums/user-type.enum.d.ts +0 -0
  634. /package/{lib/domain → domain}/users/models/index.d.ts +0 -0
  635. /package/{lib/domain → domain}/users/models/lead.d.ts +0 -0
  636. /package/{lib/domain → domain}/users/models/subscription/edition.d.ts +0 -0
  637. /package/{lib/domain → domain}/users/models/subscription/enums/billing-status.enum.d.ts +0 -0
  638. /package/{lib/domain → domain}/users/models/subscription/enums/edition-status.enum.d.ts +0 -0
  639. /package/{lib/domain → domain}/users/models/subscription/enums/index.d.ts +0 -0
  640. /package/{lib/domain → domain}/users/models/subscription/enums/payment-type.enum.d.ts +0 -0
  641. /package/{lib/domain → domain}/users/models/subscription/enums/status.enum.d.ts +0 -0
  642. /package/{lib/domain → domain}/users/models/subscription/index.d.ts +0 -0
  643. /package/{lib/domain → domain}/users/models/subscription/payment.d.ts +0 -0
  644. /package/{lib/domain → domain}/users/models/subscription/subscription.d.ts +0 -0
  645. /package/{lib/domain → domain}/users/models/user-address.d.ts +0 -0
  646. /package/{lib/domain → domain}/users/models/user-payment-method.d.ts +0 -0
  647. /package/{lib/domain → domain}/users/models/user.d.ts +0 -0
  648. /package/{lib/domain → domain}/users/repositories/beauty-profile.repository.d.ts +0 -0
  649. /package/{lib/domain → domain}/users/repositories/edition.repository.d.ts +0 -0
  650. /package/{lib/domain → domain}/users/repositories/index.d.ts +0 -0
  651. /package/{lib/domain → domain}/users/repositories/lead.repository.d.ts +0 -0
  652. /package/{lib/domain → domain}/users/repositories/subscription-payment.repository.d.ts +0 -0
  653. /package/{lib/domain → domain}/users/repositories/subscription.repository.d.ts +0 -0
  654. /package/{lib/domain → domain}/users/repositories/user-address.repository.d.ts +0 -0
  655. /package/{lib/domain → domain}/users/repositories/user-payment-method.repository.d.ts +0 -0
  656. /package/{lib/domain → domain}/users/repositories/user.repository.d.ts +0 -0
  657. /package/{lib/domain → domain}/users/services/authentication.service.d.ts +0 -0
  658. /package/{lib/domain → domain}/users/services/index.d.ts +0 -0
  659. /package/{lib/domain → domain}/users/services/register.service.d.ts +0 -0
  660. /package/{lib/domain → domain}/users/services/types/basic-user-data.type.d.ts +0 -0
  661. /package/{lib/domain → domain}/users/services/types/index.d.ts +0 -0
  662. /package/{lib/domain → domain}/users/use-cases/authentication.d.ts +0 -0
  663. /package/{lib/domain → domain}/users/use-cases/index.d.ts +0 -0
  664. /package/{lib/domain → domain}/users/use-cases/recovery-password.d.ts +0 -0
  665. /package/{lib/domain → domain}/users/use-cases/register.d.ts +0 -0
  666. /package/{lib/domain → domain}/users/use-cases/signout.d.ts +0 -0
  667. /package/{lib/errors → errors}/duplicated-results.error.d.ts +0 -0
  668. /package/{lib/errors → errors}/index.d.ts +0 -0
  669. /package/{lib/errors → errors}/invalid-argument.error.d.ts +0 -0
  670. /package/{lib/errors → errors}/not-found.error.d.ts +0 -0
  671. /package/{lib/errors → errors}/required-argument.error.d.ts +0 -0
  672. /package/{lib/infra → infra}/firebase/auth/authentication-firebase-auth.service.d.ts +0 -0
  673. /package/{lib/infra → infra}/firebase/auth/index.d.ts +0 -0
  674. /package/{lib/infra → infra}/firebase/auth/register-firebase-auth.service.d.ts +0 -0
  675. /package/{lib/infra → infra}/firebase/auth/types/firebase-user-with-id.type.d.ts +0 -0
  676. /package/{lib/infra → infra}/firebase/firestore/index.d.ts +0 -0
  677. /package/{lib/infra → infra}/firebase/firestore/mixins/index.d.ts +0 -0
  678. /package/{lib/infra → infra}/firebase/firestore/mixins/with-create-firestore.mixin.d.ts +0 -0
  679. /package/{lib/infra → infra}/firebase/firestore/mixins/with-crud-firestore.mixin.d.ts +0 -0
  680. /package/{lib/infra → infra}/firebase/firestore/mixins/with-delete-firestore.mixin.d.ts +0 -0
  681. /package/{lib/infra → infra}/firebase/firestore/mixins/with-find-firestore.mixin.d.ts +0 -0
  682. /package/{lib/infra → infra}/firebase/firestore/mixins/with-firestore.mixin.d.ts +0 -0
  683. /package/{lib/infra → infra}/firebase/firestore/mixins/with-get-firestore.mixin.d.ts +0 -0
  684. /package/{lib/infra → infra}/firebase/firestore/mixins/with-helpers.mixin.d.ts +0 -0
  685. /package/{lib/infra → infra}/firebase/firestore/mixins/with-sub-collection.mixin.d.ts +0 -0
  686. /package/{lib/infra → infra}/firebase/firestore/mixins/with-update-firestore.mixin.d.ts +0 -0
  687. /package/{lib/infra → infra}/firebase/firestore/models/user-search.d.ts +0 -0
  688. /package/{lib/infra → infra}/firebase/firestore/repositories/catalog/index.d.ts +0 -0
  689. /package/{lib/infra → infra}/firebase/firestore/repositories/catalog/product-firestore.repository.d.ts +0 -0
  690. /package/{lib/infra → infra}/firebase/firestore/repositories/catalog/product-variant-firestore.repository.d.ts +0 -0
  691. /package/{lib/infra → infra}/firebase/firestore/repositories/catalog/subscription-product-firestore.repository.d.ts +0 -0
  692. /package/{lib/infra → infra}/firebase/firestore/repositories/index.d.ts +0 -0
  693. /package/{lib/infra → infra}/firebase/firestore/repositories/shop-settings/home-firestore.repository.d.ts +0 -0
  694. /package/{lib/infra → infra}/firebase/firestore/repositories/shop-settings/index.d.ts +0 -0
  695. /package/{lib/infra → infra}/firebase/firestore/repositories/shop-settings/shop-menu-firestore.repository.d.ts +0 -0
  696. /package/{lib/infra → infra}/firebase/firestore/repositories/shopping/buy-2-win-firestore.repository.d.ts +0 -0
  697. /package/{lib/infra → infra}/firebase/firestore/repositories/shopping/checkout-firestore.repository.d.ts +0 -0
  698. /package/{lib/infra → infra}/firebase/firestore/repositories/shopping/checkout-subscription-firestore.repository.d.ts +0 -0
  699. /package/{lib/infra → infra}/firebase/firestore/repositories/shopping/coupon-firestore.repository.d.ts +0 -0
  700. /package/{lib/infra → infra}/firebase/firestore/repositories/shopping/index.d.ts +0 -0
  701. /package/{lib/infra → infra}/firebase/firestore/repositories/shopping/legacy-order-firestore.repository.d.ts +0 -0
  702. /package/{lib/infra → infra}/firebase/firestore/repositories/shopping/order-firestore.repository.d.ts +0 -0
  703. /package/{lib/infra → infra}/firebase/firestore/repositories/shopping/payment-firestore.repository.d.ts +0 -0
  704. /package/{lib/infra → infra}/firebase/firestore/repositories/shopping/subscription-plan-firestore.repository.d.ts +0 -0
  705. /package/{lib/infra → infra}/firebase/firestore/repositories/users/index.d.ts +0 -0
  706. /package/{lib/infra → infra}/firebase/firestore/repositories/users/lead-firestore.repository.d.ts +0 -0
  707. /package/{lib/infra → infra}/firebase/firestore/repositories/users/subscription-edition-firestore.repository.d.ts +0 -0
  708. /package/{lib/infra → infra}/firebase/firestore/repositories/users/subscription-firestore.repository.d.ts +0 -0
  709. /package/{lib/infra → infra}/firebase/firestore/repositories/users/subscription-payment-firestore.repository.d.ts +0 -0
  710. /package/{lib/infra → infra}/firebase/firestore/repositories/users/user-address-firestore.repository.d.ts +0 -0
  711. /package/{lib/infra → infra}/firebase/firestore/repositories/users/user-beauty-profile-firestore.repository.d.ts +0 -0
  712. /package/{lib/infra → infra}/firebase/firestore/repositories/users/user-firestore.repository.d.ts +0 -0
  713. /package/{lib/infra → infra}/firebase/firestore/repositories/users/user-payment-method-firestore.repository.d.ts +0 -0
  714. /package/{lib/infra → infra}/firebase/firestore/repositories/users/user-search-firestore.repository.d.ts +0 -0
  715. /package/{lib/infra → infra}/firebase/firestore/types/firestore-sub.repository.type.d.ts +0 -0
  716. /package/{lib/infra → infra}/firebase/firestore/types/firestore.helpers.type.d.ts +0 -0
  717. /package/{lib/infra → infra}/firebase/firestore/types/firestore.repository.type.d.ts +0 -0
  718. /package/{lib/infra → infra}/firebase/firestore/types/index.d.ts +0 -0
  719. /package/{lib/infra → infra}/firebase/index.d.ts +0 -0
  720. /package/{lib/utils → utils}/index.d.ts +0 -0
  721. /package/{lib/utils → utils}/mixins/base.mixin.d.ts +0 -0
  722. /package/{lib/utils → utils}/mixins/index.d.ts +0 -0
  723. /package/{lib/utils → utils}/mixins/mixin-ctor.type.d.ts +0 -0
  724. /package/{lib/utils → utils}/types/index.d.ts +0 -0
  725. /package/{lib/utils → utils}/types/prop.type.d.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"infrab4a-connect.js","sources":["../../../projects/connect/src/lib/domain/general/model/base.model.ts","../../../projects/connect/src/lib/domain/general/repository/enums/where.enum.ts","../../../projects/connect/src/lib/domain/general/repository/enums/update-option-actions.enum.ts","../../../projects/connect/src/lib/domain/users/models/enums/accessory-importances.enum.ts","../../../projects/connect/src/lib/domain/users/models/enums/area.enum.ts","../../../projects/connect/src/lib/domain/users/models/enums/beard-problems.enum.ts","../../../projects/connect/src/lib/domain/users/models/enums/beard-sizes.enum.ts","../../../projects/connect/src/lib/domain/users/models/enums/beauty-product-importances.enum.ts","../../../projects/connect/src/lib/domain/users/models/enums/body-problems.enum.ts","../../../projects/connect/src/lib/domain/users/models/enums/body-shapes.enum.ts","../../../projects/connect/src/lib/domain/users/models/enums/body-tattoos.enum.ts","../../../projects/connect/src/lib/domain/users/models/enums/face-skin-oilinesses.enum.ts","../../../projects/connect/src/lib/domain/users/models/enums/face-skin-problems.enum.ts","../../../projects/connect/src/lib/domain/users/models/enums/face-skin-tones.enum.ts","../../../projects/connect/src/lib/domain/users/models/enums/family-incomes.enum.ts","../../../projects/connect/src/lib/domain/users/models/enums/fragrance-importances.enum.ts","../../../projects/connect/src/lib/domain/users/models/enums/hair-colors.enum.ts","../../../projects/connect/src/lib/domain/users/models/enums/hair-problems.enum.ts","../../../projects/connect/src/lib/domain/users/models/enums/hair-strands.enum.ts","../../../projects/connect/src/lib/domain/users/models/enums/hair-types.enum.ts","../../../projects/connect/src/lib/domain/users/models/enums/office-position.enum.ts","../../../projects/connect/src/lib/domain/users/models/enums/product-spents.enum.ts","../../../projects/connect/src/lib/domain/users/models/enums/user-type.enum.ts","../../../projects/connect/src/lib/domain/users/models/subscription/enums/billing-status.enum.ts","../../../projects/connect/src/lib/domain/users/models/subscription/enums/edition-status.enum.ts","../../../projects/connect/src/lib/domain/users/models/subscription/enums/payment-type.enum.ts","../../../projects/connect/src/lib/domain/users/models/subscription/enums/status.enum.ts","../../../projects/connect/src/lib/domain/users/models/subscription/edition.ts","../../../projects/connect/src/lib/domain/shopping/models/payment.ts","../../../projects/connect/src/lib/domain/users/models/subscription/payment.ts","../../../projects/connect/src/lib/domain/location/models/address.ts","../../../projects/connect/src/lib/domain/shopping/models/enums/checkout-types.enum.ts","../../../projects/connect/src/lib/utils/mixins/base.mixin.ts","../../../projects/connect/src/lib/domain/shopping/models/coupons/enums/coupon-types.enum.ts","../../../projects/connect/src/lib/domain/shopping/models/coupons/enums/coupon-subtypes.enum.ts","../../../projects/connect/src/lib/domain/shopping/models/coupons/enums/exclusivities.enum.ts","../../../projects/connect/src/lib/domain/shopping/models/coupons/coupon.ts","../../../projects/connect/src/lib/domain/shopping/models/subscription/plan.ts","../../../projects/connect/src/lib/domain/users/models/beauty-profile.ts","../../../projects/connect/src/lib/domain/users/models/user.ts","../../../projects/connect/src/lib/domain/users/models/subscription/subscription.ts","../../../projects/connect/src/lib/domain/users/models/user-address.ts","../../../projects/connect/src/lib/domain/users/models/user-payment-method.ts","../../../projects/connect/src/lib/domain/users/models/lead.ts","../../../projects/connect/src/lib/domain/users/errors/unauthorized.error.ts","../../../projects/connect/src/lib/domain/users/use-cases/authentication.ts","../../../projects/connect/src/lib/domain/users/errors/user-already-registered.error.ts","../../../projects/connect/src/lib/domain/users/errors/weak-password.error.ts","../../../projects/connect/src/lib/domain/users/use-cases/register.ts","../../../projects/connect/src/lib/domain/users/use-cases/signout.ts","../../../projects/connect/src/lib/domain/users/use-cases/recovery-password.ts","../../../projects/connect/src/lib/domain/catalog/models/enums/shops.enum.ts","../../../projects/connect/src/lib/domain/catalog/models/category.ts","../../../projects/connect/src/lib/domain/catalog/models/product.ts","../../../projects/connect/src/lib/domain/catalog/models/variant.ts","../../../projects/connect/src/lib/domain/shopping/models/coupons/financial-coupon.ts","../../../projects/connect/src/lib/domain/shopping/models/enums/order-status.enum.ts","../../../projects/connect/src/lib/domain/shopping/models/line-item.ts","../../../projects/connect/src/lib/domain/shopping/models/shipping-method.ts","../../../projects/connect/src/lib/domain/shopping/models/checkout.ts","../../../projects/connect/src/lib/domain/shopping/models/order.ts","../../../projects/connect/src/lib/domain/shopping/models/subscription/checkout.ts","../../../projects/connect/src/lib/domain/shopping/models/buy-2-win.ts","../../../projects/connect/src/lib/domain/shop-settings/enums/filter-type.enum.ts","../../../projects/connect/src/lib/domain/shop-settings/enums/questions-filters.enum.ts","../../../projects/connect/src/lib/domain/shop-settings/helpers/beauty-questions.helper.ts","../../../projects/connect/src/lib/domain/shop-settings/models/home.ts","../../../projects/connect/src/lib/domain/shop-settings/models/shop-menu.ts","../../../projects/connect/src/lib/errors/invalid-argument.error.ts","../../../projects/connect/src/lib/errors/required-argument.error.ts","../../../projects/connect/src/lib/errors/not-found.error.ts","../../../projects/connect/src/lib/errors/duplicated-results.error.ts","../../../projects/connect/src/lib/infra/firebase/firestore/mixins/with-firestore.mixin.ts","../../../projects/connect/src/lib/infra/firebase/firestore/mixins/with-helpers.mixin.ts","../../../projects/connect/src/lib/infra/firebase/firestore/mixins/with-get-firestore.mixin.ts","../../../projects/connect/src/lib/infra/firebase/firestore/mixins/with-find-firestore.mixin.ts","../../../projects/connect/src/lib/infra/firebase/firestore/mixins/with-create-firestore.mixin.ts","../../../projects/connect/src/lib/infra/firebase/firestore/mixins/with-update-firestore.mixin.ts","../../../projects/connect/src/lib/infra/firebase/firestore/mixins/with-delete-firestore.mixin.ts","../../../projects/connect/src/lib/infra/firebase/firestore/mixins/with-sub-collection.mixin.ts","../../../projects/connect/src/lib/infra/firebase/firestore/mixins/with-crud-firestore.mixin.ts","../../../projects/connect/src/lib/infra/firebase/firestore/repositories/users/subscription-firestore.repository.ts","../../../projects/connect/src/lib/infra/firebase/firestore/models/user-search.ts","../../../projects/connect/src/lib/infra/firebase/firestore/repositories/users/user-search-firestore.repository.ts","../../../projects/connect/src/lib/infra/firebase/firestore/repositories/users/user-firestore.repository.ts","../../../projects/connect/src/lib/infra/firebase/firestore/repositories/users/subscription-edition-firestore.repository.ts","../../../projects/connect/src/lib/infra/firebase/firestore/repositories/users/user-beauty-profile-firestore.repository.ts","../../../projects/connect/src/lib/infra/firebase/firestore/repositories/users/user-address-firestore.repository.ts","../../../projects/connect/src/lib/infra/firebase/firestore/repositories/users/user-payment-method-firestore.repository.ts","../../../projects/connect/src/lib/infra/firebase/firestore/repositories/users/subscription-payment-firestore.repository.ts","../../../projects/connect/src/lib/infra/firebase/firestore/repositories/users/lead-firestore.repository.ts","../../../projects/connect/src/lib/infra/firebase/firestore/repositories/catalog/category-firestore.repository.ts","../../../projects/connect/src/lib/infra/firebase/firestore/repositories/catalog/product-firestore.repository.ts","../../../projects/connect/src/lib/infra/firebase/firestore/repositories/catalog/product-variant-firestore.repository.ts","../../../projects/connect/src/lib/infra/firebase/firestore/repositories/catalog/subscription-product-firestore.repository.ts","../../../projects/connect/src/lib/infra/firebase/firestore/repositories/shopping/checkout-firestore.repository.ts","../../../projects/connect/src/lib/infra/firebase/firestore/repositories/shopping/coupon-firestore.repository.ts","../../../projects/connect/src/lib/infra/firebase/firestore/repositories/shopping/order-firestore.repository.ts","../../../projects/connect/src/lib/infra/firebase/firestore/repositories/shopping/payment-firestore.repository.ts","../../../projects/connect/src/lib/infra/firebase/firestore/repositories/shopping/checkout-subscription-firestore.repository.ts","../../../projects/connect/src/lib/infra/firebase/firestore/repositories/shopping/subscription-plan-firestore.repository.ts","../../../projects/connect/src/lib/infra/firebase/firestore/repositories/shopping/buy-2-win-firestore.repository.ts","../../../projects/connect/src/lib/infra/firebase/firestore/repositories/shopping/legacy-order-firestore.repository.ts","../../../projects/connect/src/lib/infra/firebase/firestore/repositories/shop-settings/home-firestore.repository.ts","../../../projects/connect/src/lib/infra/firebase/firestore/repositories/shop-settings/shop-menu-firestore.repository.ts","../../../projects/connect/src/lib/infra/firebase/auth/authentication-firebase-auth.service.ts","../../../projects/connect/src/lib/infra/firebase/auth/register-firebase-auth.service.ts","../../../projects/connect/src/infrab4a-connect.ts"],"sourcesContent":["import { plainToClass, classToPlain } from 'class-transformer'\n\nimport { NonFunctionProperties } from './types/non-function-properties.type'\n\nexport class BaseModel<Model> {\n constructor(args?: Partial<Model>) {\n Object.assign(this, args)\n }\n\n static toInstance<T>(this: new () => Partial<T>, data: NonFunctionProperties<T>): T {\n return plainToClass(this, data) as any\n }\n\n toPlain(): any {\n return classToPlain(this, { exposeUnsetFields: false })\n }\n}\n","export enum Where {\n EQUALS = '==',\n NOTEQUALS = '!=',\n GT = '>',\n GTE = '>=',\n IN = 'in',\n LT = '<',\n LTE = '<=',\n LIKE = 'like',\n}\n","export enum UpdateOptionActions {\n UPDATE = 'update',\n MERGE = 'merge',\n REMOVE = 'remove',\n REMOVE_FIELD = 'removeField',\n NULL = 'null',\n}\n","export enum AccessoryImportances {\n NOT_INTERESTED = 'Não tenho interesse',\n LIKE_RARELY_USE = 'Gosto, mas uso poucos',\n LIKE_ALWAYS_FOLLOW_FASHION = 'Gosto muito de acessórios e sempre procuro acompanhar a moda',\n}\n","export enum Area {\n GP = 'Geral',\n CRM = 'CRM',\n MediaProd = 'Media Production',\n Tech = 'Tecnologia',\n Transactional = 'Transacional',\n Operations = 'Opera\\u00E7\\u00F5es',\n Sales = 'Comercial',\n Finantial = 'Financeiro',\n HR = 'RH',\n}\n","export enum BeardProblems {\n NO_PROBLEMS = 'Sem problemas',\n DRY = 'Barba Seca',\n OILY = 'Barba Oleaosa',\n DANCRUFF = 'Barba com Caspa',\n INGROWN_HAIRS = 'Pêlos Encravados',\n DOESNT_GROW = 'Não Cresce',\n SPARSE_BEARD = 'Barba Rala',\n}\n","export enum BeardSizes {\n BIG = 'Grande',\n MEDIUM = 'Média',\n SHORT = 'Curta',\n MUSTACHE = 'Bigode',\n NOTHING = 'Sem Barba',\n}\n","export enum BeautyProductImportances {\n KNOW_LITTLE_ABOUT = 'Conheço bem pouco de produtos de beleza e rotinas de cuidados',\n ALREADY_BOUGHT_NOTHING_SPECIALIZED = 'Já comprei alguns produtos básicos para cuidar de mim, mas nada muito especializado',\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',\n PERSONAL_CARE_EXPERT = 'Sou um expert em cuidados pessoais',\n}\n","export enum BodyProblems {\n NO_WORRIES = 'Sem preocupações',\n FLACCIDITY = 'Flacidez',\n LOCALIZED_FAT = 'Gordura Localizada',\n STRETCH_MARKS = 'Estrias',\n SENSITIVE_SKIN = 'Pele Sensível',\n DRY_SKIN = 'Pele Seca',\n OILY_ACNE = 'Oleosa/Acne',\n SKIN_FRECKLES = 'Pele com Sardas',\n PHOTOSENSITIVE_SKIN = 'Pele Fotossensível',\n}\n","export enum BodyShapes {\n LEAN = 'Magro',\n REGULAR = 'Regular',\n OVERWEIGHT = 'Acima do Peso',\n ATHLETIC = 'Atlético',\n MUSCULAR = 'Musculoso',\n}\n","export enum BodyTattoos {\n NONE = 'Nenhuma',\n HAS_DOESNT_CARE = 'Tenho mas não cuido',\n HAS_CARE_LOT = 'Tenho e cuido bastante',\n}\n","export enum FaceSkinOilinesses {\n DRY = 'Seca',\n OILY = 'Oleaosa',\n MIXED = 'Mista',\n NORMAL = 'Normal',\n DONT_KNOW = 'Eu não sei como dizer',\n}\n","export enum FaceSkinProblems {\n NO_PROBLEMS = 'Sem problemas',\n DARK_CIRCLES = 'Olheiras',\n WRINKLES = 'Rugas',\n BLACKHEADS_PIMPLES = 'Cravos e Espinhas',\n STAINS = 'Manchas',\n FRECKLES = 'Sardas',\n SENSITIVE = 'Sensível',\n PHOTOSENSITIVE = 'Fotossensível',\n}\n","export enum FaceSkinTones {\n VERY_CLEAR = 'Muito Clara',\n CLEAR = 'Clara',\n MEDIUM_LIGHT = 'Clara Média',\n MEDIUM_DARK = 'Escura Média',\n DARK = 'Escura',\n VERY_DARK = 'Muito Escura',\n}\n","export enum FamilyIncomes {\n UNTIL_3000 = 'Até R$3.000',\n SINCE_3001_TO_7000 = 'De R$3.001 a R$7.000',\n SINCE_7001_TO_10000 = 'De R$7.001 a R$10.000',\n SINCE_10001_TO_15000 = 'De R$10.001 a R$15.000',\n GRAN_THAN_15000 = 'Mais de R$15.000',\n NOW_ANSWER = 'Prefiro nao responder',\n}\n","export enum FragranceImportances {\n NOT_INTERESTED = 'Não tenho interesse',\n LIKE_ALWAYS_USE_SAME = 'Gosto de perfumes, mas uso sempre os mesmos',\n LIKE_INNOVATE = 'Gosto de inovar e conhecer novas fragrâncias',\n}\n","export enum HairColors {\n BLACK = 'Preto',\n DARK_BROWN = 'Castanho Escuro',\n LIGHT_BROWN = 'Castanho Claro',\n DARK_BLONDE = 'Loiro Escuro',\n LIGHT_BLONDE = 'Loiro Claro',\n WHITE_GRAY = 'Branco/Grisalho',\n REDHEAD = 'Ruivo',\n OTHER = 'RuiOutroo',\n}\n","export enum HairProblems {\n NO_PROBLEMS = 'Sem problemas',\n DANCRUFF = 'Caspa',\n LOSS = 'Queda',\n OILY = 'Oleosidade',\n DRYNESS = 'Ressecamento',\n CHEMICAL = 'Quimica',\n WHITE_HAIR = 'Cabelos Brancos',\n REBEL_WIRES = 'Fios Rebeldes',\n}\n","export enum HairStrands {\n NORMAL = 'Fio Normal',\n DRY = 'Fio Seco',\n OILY = 'Fio Oleoso',\n MIXED = 'Fio Misto',\n FINE = 'Fio Fino',\n THICK = 'Fio Grosso',\n}\n","export enum HairTypes {\n Smooth = 'Liso',\n WAVY = 'Ondulado',\n CURLY = 'Cacheado',\n FRIZZY = 'Crespo',\n BALD = 'Sou careca',\n}\n","export enum OfficePosition {\n Intern = 'Estagi\\u00E1rio',\n Analyst = 'Analista',\n Manager = 'Gerente',\n Director = 'Diretor',\n}\n","export enum ProductSpents {\n UNTIL_50 = 'Até R$50',\n SINCE_51_TO_100 = 'De R$51 a R$100',\n SINCE_101_TO_200 = 'De R$101 a R$200',\n SINCE_201_TO_300 = 'De R$201 a R$300',\n GRAN_THAN_300 = 'Mais de R$300',\n NOW_ANSWER = 'Prefiro nao responder',\n}\n","export enum UserType {\n B2C = 'Cliente Transacional',\n GlamGirl = 'Glamgirl',\n MensBoy = 'Mensboy',\n B2B = 'Company',\n Collaborator = 'Funcionário',\n Influencer = 'Influencer',\n}\n","export enum BillingStatus {\n PAYED = 'PAGO',\n}\n","export enum EditionStatus {\n ALLOCATION_WAITING = 'Aguardando alocação',\n SHIPPED = 'Enviado',\n}\n","export enum PaymentType {\n AQUISITION = 'Aquisição',\n RENEWAL = 'Renovação',\n FREIGHT = 'mudança de endereço, Frete',\n}\n","export enum Status {\n ACTIVE = 'active',\n CANCELLED = 'Cancelado',\n}\n","import { BaseModel } from '../../../general/model/base.model'\nimport { IdentifierFields } from '../../../general/model/identifier-fields'\nimport { NonFunctionPropertyNames } from '../../../general/model/types/non-function-property-name.type'\n\nimport { EditionStatus, BillingStatus } from './enums'\n\nexport class Edition extends BaseModel<Edition> implements IdentifierFields<Edition> {\n id: string\n subscriptionId: string\n billingStatus: BillingStatus\n editionId: number\n editionStatus: EditionStatus\n installment: number\n paymentId: string\n draftId?: string\n\n identifierFields(): NonFunctionPropertyNames<Edition>[] {\n return ['id']\n }\n}\n","import { Expose } from 'class-transformer'\n\nimport { BaseModel } from '../../general/model/base.model'\nimport { IdentifierFields } from '../../general/model/identifier-fields'\nimport { NonFunctionPropertyNames } from '../../general/model/types'\n\nimport { PaymentBilling, PaymentCard, PaymentCustomer, PaymentItem, PaymentShipping } from './types'\n\nexport class Payment extends BaseModel<Payment> implements IdentifierFields<Payment> {\n id: number\n object: string\n status: string\n tid: number\n nsu: number\n amount: number\n cost: number\n installments: number\n referer: string\n ip: string\n phone: string\n address: string\n metadata: any\n device: string\n payment: string\n addition: string\n discount: string\n customer: PaymentCustomer\n billing: PaymentBilling\n shipping: PaymentShipping\n items: PaymentItem[]\n card: PaymentCard\n\n @Expose({ name: 'refuse_reason' })\n refuseReason: string\n @Expose({ name: 'status_reason' })\n statusReason: string\n @Expose({ name: 'acquirer_response_code' })\n acquirerResponseCode: string\n @Expose({ name: 'acquirer_name' })\n acquirerName: string\n @Expose({ name: 'acquirer_id' })\n acquirerId: string\n @Expose({ name: 'authorization_code' })\n authorizationCode: string\n @Expose({ name: 'soft_descriptor' })\n softDescriptor: string\n @Expose({ name: 'date_created' })\n dateCreated: string\n @Expose({ name: 'date_updated' })\n dateUpdated: string\n @Expose({ name: 'authorized_amount' })\n authorizedAmount: number\n @Expose({ name: 'paid_amount' })\n paidAmount: number\n @Expose({ name: 'refunded_amount' })\n refundedAmount: number\n @Expose({ name: 'card_holder_name' })\n cardHolderName: string\n @Expose({ name: 'card_last_digits' })\n cardLastDigits: string\n @Expose({ name: 'card_first_digits' })\n cardFirstDigits: string\n @Expose({ name: 'card_brand' })\n cardBrand: string\n @Expose({ name: 'card_pin_mode' })\n cardPinMode: string\n @Expose({ name: 'card_magstripe_fallback' })\n cardMagstripeFallback: boolean\n @Expose({ name: 'cvm_pin' })\n cvmPin: boolean\n @Expose({ name: 'postback_url' })\n postbackUrl: string\n @Expose({ name: 'payment_method' })\n paymentMethod: string\n @Expose({ name: 'capture_method' })\n captureMethod: string\n @Expose({ name: 'antifraud_score' })\n antifraudScore: string\n @Expose({ name: 'boleto_url' })\n boletoUrl: string\n @Expose({ name: 'boleto_barcode' })\n boletoBarcode: string\n @Expose({ name: 'boleto_expiration_date' })\n boletoExpirationDate: string\n @Expose({ name: 'subscription_id' })\n subscriptionId: string\n @Expose({ name: 'split_rules' })\n splitRules: string\n @Expose({ name: 'antifraud_metadata' })\n antifraudMetadata: any\n @Expose({ name: 'reference_key' })\n referenceKey: string\n @Expose({ name: 'local_transaction_id' })\n localTransactionId: string\n @Expose({ name: 'local_time' })\n localTime: string\n @Expose({ name: 'fraud_covered' })\n fraudCovered: boolean\n @Expose({ name: 'fraud_reimbursed' })\n fraudReimbursed: string\n @Expose({ name: 'order_id' })\n orderId: string\n @Expose({ name: 'risk_level' })\n riskLevel: string\n @Expose({ name: 'receipt_url' })\n receiptUrl: string\n @Expose({ name: 'private_label' })\n privateLabel: string\n @Expose({ name: 'pix_qr_code' })\n pixQrCode: string\n @Expose({ name: 'pix_expiration_date' })\n pixExpirationDate: string\n\n identifierFields(): NonFunctionPropertyNames<Payment>[] {\n return ['id']\n }\n}\n","import { Type } from 'class-transformer'\n\nimport { BaseModel } from '../../../general/model/base.model'\nimport { IdentifierFields } from '../../../general/model/identifier-fields'\nimport { NonFunctionPropertyNames } from '../../../general/model/types'\nimport { Payment } from '../../../shopping/models/payment'\n\nimport { PaymentType } from './enums/payment-type.enum'\n\nexport class SubscriptionPayment\n extends BaseModel<SubscriptionPayment>\n implements IdentifierFields<SubscriptionPayment>\n{\n id: string\n subscriptionId: string\n paymentType: PaymentType\n createdAt: Date\n attempts?: number\n\n @Type(() => Payment)\n payment: Payment\n\n identifierFields(): NonFunctionPropertyNames<SubscriptionPayment>[] {\n return ['id']\n }\n}\n","import { BaseModel } from '../../general/model/base.model'\n\nimport { LocationGeometry } from './types/location-geometry.type'\n\nexport abstract class Address extends BaseModel<Address> {\n default?: boolean\n recipient?: string\n zip?: string\n street?: string\n number?: string\n extension?: string\n district?: string\n city?: string\n regionalPole?: string\n region?: string\n state?: string\n country?: string\n mailbox?: boolean\n mailboxNumber?: string\n formattedAddress?: string\n placeId?: string\n geometry?: LocationGeometry\n}\n","export enum CheckoutTypes {\n ECOMMERCE = 1,\n SUBSCRIPTION = 2,\n}\n","export class Base {\n constructor(...args: Array<any>) {\n Object.assign(this, ...args)\n }\n}\n","export enum CouponTypes {\n FINANCIAL = 1,\n PRODUCT,\n GIFTCARD,\n VOUCHER,\n}\n","export enum CouponSubtypes {\n ABSOLUTE = 1,\n PERCENTAGE,\n}\n","export enum Exclusivities {\n ALL_USERS = 1,\n SPECIFIC_USER = 2,\n COLLABORATORS = 3,\n}\n","import { Expose } from 'class-transformer'\n\nimport { BaseModel } from '../../../general/model/base.model'\nimport { CheckoutTypes } from '../enums/checkout-types.enum'\nimport { IdentifierFields } from '../../../general/model/identifier-fields'\nimport { isNil } from '../../../../utils'\nimport { NonFunctionPropertyNames } from '../../../general/model/types'\nimport { Shops } from '../../../catalog/models/enums/shops.enum'\n\nimport { CouponTypes, Exclusivities } from './enums'\n\nexport class Coupon extends BaseModel<Coupon> implements IdentifierFields<Coupon> {\n id: string\n type: CouponTypes\n discount?: number\n user?: string\n recipient?: string\n store?: Shops\n campaign?: string\n name: string\n nickname: string\n expiresIn?: Date\n useLimit?: number\n createdAt: Date\n updatedAt?: Date\n shopAvailability: Shops\n personId?: number\n influencerEmail?: string\n\n @Expose({ name: 'checkout_type' })\n checkoutType: CheckoutTypes\n @Expose({ name: 'exclusivity_type' })\n exclusivityType?: Exclusivities\n\n get isInfluencer(): boolean {\n return !isNil(this.influencerEmail)\n }\n\n identifierFields(): NonFunctionPropertyNames<Coupon>[] {\n return ['id']\n }\n}\n","import { BaseModel } from '../../../general/model/base.model'\nimport { IdentifierFields } from '../../../general/model/identifier-fields'\nimport { NonFunctionPropertyNames } from '../../../general/model/types'\n\nexport class SubscriptionPlan extends BaseModel<SubscriptionPlan> implements IdentifierFields<SubscriptionPlan> {\n id: string\n name: string\n billingPrice: number\n recurrencePrice: number\n recurrenceCycle: number\n maxAttempts: number\n\n identifierFields(): NonFunctionPropertyNames<SubscriptionPlan>[] {\n return ['id']\n }\n}\n","import { BaseModel } from '../../general/model/base.model'\nimport { IdentifierFields } from '../../general/model/identifier-fields'\nimport { NonFunctionPropertyNames } from '../../general/model/types/non-function-property-name.type'\n\nimport { BeardSizes, HairTypes } from './enums'\n\nexport class BeautyProfile extends BaseModel<BeautyProfile> implements IdentifierFields<BeautyProfile> {\n id: string\n userId: string\n beardSize?: BeardSizes\n hairType?: HairTypes\n\n toPlain(): any {\n const plain = super.toPlain()\n\n delete plain.id\n\n return plain\n }\n\n identifierFields(): NonFunctionPropertyNames<BeautyProfile>[] {\n return ['id']\n }\n}\n","import { Type } from 'class-transformer'\n\nimport { BaseModel } from '../../general/model/base.model'\nimport { IdentifierFields } from '../../general/model/identifier-fields'\nimport { isNil } from '../../..//utils'\nimport { NonFunctionProperties, NonFunctionPropertyNames } from '../../general/model/types'\n\nimport { Area, OfficePosition, UserType } from './enums'\nimport { BeautyProfile } from './beauty-profile'\n\nexport class User extends BaseModel<User> implements IdentifierFields<User> {\n id: string\n cpf?: string\n email: string\n firstName: string\n lastName: string\n displayName?: string\n phone: string\n birthday?: Date\n acceptsNewsletter: boolean\n type?: UserType\n area?: Area\n officePosition?: OfficePosition\n isSubscriber?: boolean\n\n @Type(() => BeautyProfile)\n beautyProfile?: BeautyProfile\n\n static toInstance<T>(this: new () => Partial<T>, data: NonFunctionProperties<T> & NonFunctionProperties<User>): T {\n const instance = super.toInstance<User>(data)\n\n if (!isNil(data.firstName))\n instance.displayName = `${data.firstName}${!isNil(data.lastName) ? ` ${data.lastName}` : ''}`\n\n return instance as any\n }\n\n identifierFields(): NonFunctionPropertyNames<User>[] {\n return ['id']\n }\n\n toPlain(): any {\n const plain = super.toPlain()\n\n delete plain.beautyProfile\n\n return plain\n }\n}\n","import { Type } from 'class-transformer'\n\nimport { Address } from '../../../location/models/address'\nimport { BaseModel } from '../../../general/model/base.model'\nimport { Coupon } from '../../../shopping/models/coupons/coupon'\nimport { IdentifierFields } from '../../../general/model/identifier-fields'\nimport { NonFunctionPropertyNames } from '../../../general/model/types/non-function-property-name.type'\nimport { SubscriptionPlan } from '../../../shopping/models/subscription/plan'\nimport { User } from '../user'\n\nimport { Edition } from './edition'\nimport { Status } from './enums/status.enum'\nimport { SubscriptionPayment } from './payment'\n\nexport class Subscription extends BaseModel<Subscription> implements IdentifierFields<Subscription> {\n id: string\n nextPayment: Date\n recurrence: boolean\n status: Status\n cardToken: string\n subtotalPrice?: number\n discount?: number\n totalPrice?: number\n createdAt: Date\n updatedAt: Date\n\n @Type(() => User)\n user: User\n @Type(() => SubscriptionPlan)\n subscriptionPlan: SubscriptionPlan\n @Type(() => Address)\n shippingAddress: Address\n @Type(() => Address)\n billingAddress?: Address\n @Type(() => Coupon)\n coupon?: Coupon\n @Type(() => Edition)\n editions: Edition[]\n @Type(() => SubscriptionPayment)\n payment?: SubscriptionPayment[]\n\n identifierFields(): NonFunctionPropertyNames<Subscription>[] {\n return ['id']\n }\n}\n","import { Address } from '../../location/models/address'\nimport { NonFunctionPropertyNames } from '../../general/model/types/non-function-property-name.type'\n\nexport class UserAddress extends Address {\n id: string\n userId: string\n\n identifierFields(): NonFunctionPropertyNames<UserAddress>[] {\n return ['id']\n }\n}\n","import { BaseModel } from '../../general/model/base.model'\nimport { NonFunctionPropertyNames } from '../../general/model/types/non-function-property-name.type'\n\nexport class UserPaymentMethod extends BaseModel<UserPaymentMethod> {\n brand: string\n cpf: string\n holderName: string\n last4: string\n pagarmeToken: string\n validUntil: string\n userId: string\n id: string\n\n identifierFields(): NonFunctionPropertyNames<UserPaymentMethod>[] {\n return ['id']\n }\n}\n","import { BaseModel } from '../../general/model/base.model'\nimport { IdentifierFields } from '../../general/model/identifier-fields'\nimport { NonFunctionPropertyNames } from '../../general/model/types'\n\nexport class Lead extends BaseModel<Lead> implements IdentifierFields<Lead> {\n id: string\n acceptsNewsletter: boolean\n email: string\n\n identifierFields(): NonFunctionPropertyNames<Lead>[] {\n return ['id']\n }\n}\n","export class UnauthorizedError extends Error {\n constructor(readonly message) {\n super(message)\n }\n}\n","import { Area, OfficePosition, User, UserType } from '../models'\nimport { AuthenticationService } from '../services/authentication.service'\nimport { isNil } from '../../../utils'\nimport { UnauthorizedError } from '../errors/unauthorized.error'\nimport { UserRepository } from '../repositories/user.repository'\n\nexport enum SignInMethods {\n EMAIL_PASSWORD = 'email_password',\n GOOGLE = 'google',\n}\n\ntype SignInMethod = Lowercase<keyof typeof SignInMethods>\n\ntype SignInParams = {\n email?: string\n password?: string\n}\n\nexport class Authentication {\n constructor(private readonly authService: AuthenticationService, private readonly userRepository: UserRepository) {}\n\n async signIn({ email, password }: SignInParams, signInMethod: SignInMethod): Promise<User> {\n const method = this.getServiceByMethod(signInMethod)\n const userAuth = await this.authService[method]({ email, password })\n const user = this.userRepository.get(userAuth)\n\n if (!isNil(user)) return user\n if (/^.+@b4a.com.br$/.test(userAuth.email)) return this.createsUserByCredential(userAuth)\n\n throw new UnauthorizedError('Invalid credentials')\n }\n\n private getServiceByMethod(signInMethod: SignInMethod): string {\n return signInMethod === SignInMethods.EMAIL_PASSWORD ? 'signInWithEmailAndPassword' : 'signInWithGoogle'\n }\n\n private async createsUserByCredential(user: Partial<User>): Promise<User> {\n const [firstName, lastName] = user.displayName?.split(/\\s/)\n const person = User.toInstance({\n ...user,\n cpf: '',\n birthday: new Date(),\n firstName,\n lastName,\n acceptsNewsletter: false,\n area: Area.Transactional,\n officePosition: OfficePosition.Intern,\n type: UserType.Collaborator,\n })\n\n return this.userRepository.create(person)\n }\n}\n","export class UserAlreadyRegisteredError extends Error {\n constructor(readonly message) {\n super(message)\n }\n}\n","export class WeakPasswordError extends Error {\n constructor(readonly message = 'Weak password') {\n super(message)\n }\n}\n","import { User, UserType } from '../models'\nimport { RegisterService } from '../services/register.service'\nimport { UserAlreadyRegisteredError } from '../errors'\nimport { UserRepository } from '../repositories/user.repository'\n\ntype RegisterParams = Partial<User> & { password: string }\n\nexport class Register {\n constructor(private readonly registerService: RegisterService, private readonly userRepository: UserRepository) {}\n\n async register(params: RegisterParams): Promise<User> {\n const email = params.email.toLocaleLowerCase()\n const displayName = `${params.firstName} ${params.lastName}`\n\n if (await this.userRepository.checkIfExistsByField('cpf', params.cpf))\n throw new UserAlreadyRegisteredError(`Usuário com CPF ${params.cpf} já registrado.`)\n if (await this.userRepository.checkIfExistsByField('email', params.email))\n throw new UserAlreadyRegisteredError(`Usuário com e-mail ${params.email} já registrado.`)\n\n const auth = await this.registerService.register({\n birthday: params.birthday,\n email,\n firstName: params.firstName,\n lastName: params.lastName,\n cpf: params.cpf,\n displayName,\n phone: params.phone,\n password: params.password,\n })\n\n delete params.password\n\n const user = await this.userRepository.create({\n ...params,\n id: auth.id,\n email,\n displayName,\n type: UserType.B2C,\n dateCreated: new Date(),\n dateModified: new Date(),\n })\n\n return user\n }\n}\n","import { AuthenticationService } from '../services/authentication.service'\n\nexport class SignOut {\n constructor(private readonly authService: AuthenticationService) {}\n\n async signOut(): Promise<void> {\n await this.authService.signOut()\n }\n}\n","import { AuthenticationService } from '../services/authentication.service'\n\nexport class RecoveryPassword {\n constructor(private readonly authService: AuthenticationService) {}\n\n async sendEmail(email: string): Promise<void> {\n await this.authService.sendPasswordResetEmail(email)\n }\n}\n","export enum Shops {\n MENSMARKET = `mensmarket`,\n GLAMSHOP = 'Glamshop',\n GLAMPOINTS = 'Glampoints'\n}\n","import { BaseModel, IdentifierFields, NonFunctionPropertyNames } from '../../general/model'\nimport { Shops } from './enums'\n\nimport { CategoryCondition, CategoryFilter } from './types'\n\nexport class Category extends BaseModel<Category> implements IdentifierFields<Category> {\n id: string\n brandCategory: boolean\n brandLogo?: string\n name: string\n slug: string\n image?: string\n brandCategoryBanner?: string\n brandCategoryBannerMobile?: string\n description: string\n conditions?: CategoryCondition\n products?: string[]\n filters?: CategoryFilter[]\n createdAt: Date\n updatedAt: Date\n shop: Shops\n published: boolean\n\n identifierFields(): NonFunctionPropertyNames<Category>[] {\n return ['id']\n }\n}\n","import { BaseModel, IdentifierFields, NonFunctionPropertyNames } from '../../general/model'\n\nimport { Shops } from './enums/shops.enum'\nimport { ProductReview, ShopDescription, ShopPrice, ShopsDescription, ShopsPrice, Stock } from './types'\nimport { Variant } from './variant'\n\nexport class Product extends BaseModel<Product> implements IdentifierFields<Product> {\n id: string\n name: string\n slug: string\n shopAvailability: Shops[]\n description: ShopsDescription\n sku: string\n price: ShopsPrice\n hasVariants: boolean\n NCM: string\n EAN: string\n CEST: string\n weight: number\n stock: Stock\n costPrice: number\n images?: string[]\n miniatures?: string[]\n published: boolean\n publishedGlam: boolean\n createdAt: Date\n updatedAt: Date\n brand: string\n tags?: string[]\n type?: string\n categories?: string[]\n reviews?: ProductReview[]\n variant?: Variant\n video?: string\n\n identifierFields(): NonFunctionPropertyNames<Product>[] {\n return ['id']\n }\n\n getInfoByShop(shop: Shops): ShopDescription & ShopPrice & Stock {\n return {\n ...(this.description?.[shop]?.description ? { description: this.description?.[shop]?.description } : {}),\n ...(this.price?.[shop] || {}),\n ...(this.stock?.[shop] || {}),\n }\n }\n}\n","import { BaseModel, IdentifierFields, NonFunctionPropertyNames } from '../../general/model'\n\nimport { ShopsPrice, Stock, VariantGrade } from './types'\n\nexport class Variant extends BaseModel<Variant> implements IdentifierFields<Variant> {\n id: string\n productId: string\n sku: string\n price: ShopsPrice\n EAN: string\n stock: Stock\n grade: VariantGrade[]\n costPrice: number\n weight: number\n\n identifierFields(): NonFunctionPropertyNames<Variant>[] {\n return ['id']\n }\n}\n","import { Md5 } from 'ts-md5'\n\nimport { CheckoutTypes } from '../enums/checkout-types.enum'\n\nimport { Coupon } from './coupon'\nimport { CouponTypes, CouponSubtypes } from './enums'\n\nconst COUPON_EXPIRATION = 60 * 60 * 24 * 30\n\nexport class FinancialCoupon extends Coupon {\n type = CouponTypes.FINANCIAL\n subtype: CouponSubtypes\n plan?: string\n\n static isFinancialCoupon(coupon: Partial<FinancialCoupon>): coupon is FinancialCoupon {\n return coupon.type === CouponTypes.FINANCIAL && !!coupon.subtype\n }\n\n static createCoupon(userId: string): FinancialCoupon {\n return this.toInstance({\n name: Md5.hashStr(`${userId}_${Date.now}`).toString(),\n nickname: `${Date.now()}`,\n type: CouponTypes.FINANCIAL,\n subtype: CouponSubtypes.PERCENTAGE,\n checkoutType: CheckoutTypes.ECOMMERCE,\n discount: 30,\n user: userId,\n createdAt: new Date(Date.now()),\n expiresIn: new Date(Date.now() + COUPON_EXPIRATION),\n })\n }\n}\n","export enum OrderStatus {\n AGUARDANDO_PAGAMENTO = 'Aguardando pagamento',\n EM_PREPARO = 'Preparando pedido',\n NF_EMITIDA = 'Nota Fiscal Emitida',\n AGUARDANDO_ENVIO = 'Aguardando Transaportadora',\n ENVIADO = 'Pedido Enviado',\n ENTREGUE = 'Pedido entregue',\n CANCELADO = 'Cancelado',\n CREDIT_CARD = 'credit_card',\n}\n","import { Product } from '../../catalog/models/product'\n\nexport class LineItem extends Product {\n parentId?: string\n quantity: number\n isGift?: boolean\n pricePaid?: number\n image?: string\n}\n","import { BaseModel } from '../../general/model/base.model'\nimport { IdentifierFields } from '../../general/model/identifier-fields'\nimport { NonFunctionPropertyNames } from '../../general/model/types'\n\nexport class ShippingMethod extends BaseModel<ShippingMethod> implements IdentifierFields<ShippingMethod> {\n id: string\n CNPJ: string\n DaysToDelivery: number\n MaxGrams: number\n MinGrams: number\n ServiceCompanyRangeId: number\n ShippingCompanyId: number\n ShippingCompanyName: string\n ShippingPrice: number\n State: string\n ZipEnd: number\n ZipStart: number\n\n identifierFields(): NonFunctionPropertyNames<ShippingMethod>[] {\n return ['id']\n }\n}\n","import { Type } from 'class-transformer'\n\nimport { Address } from '../../location/models/address'\nimport { BaseModel } from '../../general/model/base.model'\nimport { IdentifierFields } from '../../general/model/identifier-fields'\nimport { NonFunctionPropertyNames } from '../../general/model/types'\nimport { User } from '../../users/models/user'\n\nimport { Coupon } from './coupons/coupon'\nimport { LineItem } from './line-item'\nimport { ShippingMethod } from './shipping-method'\nimport { Shops } from '../../catalog/models/enums/shops.enum'\n\nexport class Checkout extends BaseModel<Checkout> implements IdentifierFields<Checkout> {\n id?: string\n paymentId?: string\n status?: string\n createdAt?: Date\n updatedAt?: Date\n completedAt?: Date\n discount?: number\n subTotalPrice?: number\n totalPrice?: number\n shop: Shops\n glampoints?: number\n\n @Type(() => LineItem)\n lineItems?: LineItem[]\n @Type(() => User)\n user?: User\n @Type(() => Address)\n shippingAddress?: Address\n @Type(() => Address)\n billingAddress?: Address\n @Type(() => ShippingMethod)\n shipping?: ShippingMethod\n @Type(() => Coupon)\n coupon?: Coupon\n\n identifierFields(): NonFunctionPropertyNames<Checkout>[] {\n return ['id']\n }\n}\n","import { Type } from 'class-transformer'\n\nimport { Checkout } from './checkout'\nimport { OrderStatus } from './enums/order-status.enum'\nimport { Payment } from './payment'\n\nexport class Order extends Checkout {\n status: OrderStatus\n trackingCode?: string\n trackingUrl?: string\n\n @Type(() => Payment)\n payment: Payment\n}\n","import { Type } from 'class-transformer'\n\nimport { Address } from '../../../location/models/address'\nimport { BaseModel } from '../../../general/model/base.model'\nimport { Coupon } from '../coupons/coupon'\nimport { IdentifierFields } from '../../../general/model/identifier-fields'\nimport { NonFunctionPropertyNames } from '../../../general/model/types'\nimport { User } from '../../../users/models/user'\n\nimport { SubscriptionPlan } from './plan'\n\nexport class CheckoutSubscription\n extends BaseModel<CheckoutSubscription>\n implements IdentifierFields<CheckoutSubscription>\n{\n id?: string\n user: User\n createdAt: Date\n updatedAt: Date\n completedAt?: Date\n userId?: string\n discount?: number\n subTotalPrice?: number\n totalPrice?: number\n\n @Type(() => Address)\n shippingAddress: Address\n @Type(() => Address)\n billingAddress?: Address\n @Type(() => SubscriptionPlan)\n subscriptionPlan: SubscriptionPlan\n @Type(() => Coupon)\n coupon?: Coupon\n\n identifierFields(): NonFunctionPropertyNames<CheckoutSubscription>[] {\n return ['id']\n }\n}\n","import { Type } from 'class-transformer'\n\nimport { BaseModel } from '../../general/model/base.model'\nimport { IdentifierFields } from '../../general/model/identifier-fields'\nimport { NonFunctionPropertyNames } from '../../general/model/types'\nimport { Shops, Category } from '../../catalog/models'\n\nexport class Buy2Win extends BaseModel<Buy2Win> implements IdentifierFields<Buy2Win> {\n active: boolean\n cartValue: number\n createdAt: Date\n endDate: Date\n id?: string\n name: string\n products?: string[]\n shop: Shops\n startDate: Date\n updatedAt?: Date\n\n @Type(() => Category)\n categories: Category[]\n\n identifierFields(): NonFunctionPropertyNames<Buy2Win>[] {\n return ['id']\n }\n}\n","export enum FilterType {\n ACCESSORY_IMPORTANCE = 'accessoryImportance',\n BEARD_PROBLEMS = 'beardProblems',\n BEARD_SIZE = 'beardSize',\n BEAUTY_PRODUCT_IMPORTANCE = 'beautyProductImportance',\n BODY_PROBLEMS = 'bodyProblems',\n BODY_SHAPE = 'bodyShape',\n BODY_TATTOOS = 'bodyTattoos',\n FACE_SKIN_OILINESS = 'faceSkinOiliness',\n FACE_SKIN_PROBLEMS = 'faceSkinProblems',\n FACE_SKIN_TONE = 'faceSkinTone',\n FAMILY_INCOME = 'familyIncome',\n FRAGRANCE_IMPORTANCE = 'fragranceImportance',\n HAIR_COLOR = 'hairColor',\n HAIR_PROBLEMS = 'hairProblems',\n HAIR_STRANDS = 'hairStrands',\n HAIR_TYPE = 'hairType',\n PRODUCT_SPENT = 'productSpent',\n}\n","export enum QuestionsFilters {\n ACCESSORY_IMPORTANCE = 'Você gosta de usar acessórios masculinos?',\n BEARD_PROBLEMS = 'Quais problemas de barba você tem?',\n BEARD_SIZE = 'Quais caracteristicas se aplicam à sua BARBA/BIGODE?',\n BEAUTY_PRODUCT_IMPORTANCE = 'O que descreve melhor a sua relação com produtos de beleza e cuidados pessoais?',\n BODY_PROBLEMS = 'Qual ou quais preocupações você tem com a pele do seu corpo?',\n BODY_SHAPE = 'Qual e seu tipo de CORPO?',\n BODY_TATTOOS = 'Você tem alguma tatuagem?',\n FACE_SKIN_OILINESS = 'Quais caracteristicas se aplicam à pele do seu ROSTO?',\n FACE_SKIN_PROBLEMS = 'Quais problemas a pele do seu rosto tem?',\n FACE_SKIN_TONE = 'Qual seu tom de pele?',\n FAMILY_INCOME = 'Qual a sua renda familiar mensal (considerando a renda de todas as pessoas que moram com você)?',\n FRAGRANCE_IMPORTANCE = 'O quanto você gosta de experimentar perfumes?',\n HAIR_COLOR = 'Seu cabelo é naturalmente de qual COR?',\n HAIR_PROBLEMS = 'Qual ou quais problemas/característica de cabelo te preocupam?',\n HAIR_STRANDS = 'Como são seus fios?',\n HAIR_TYPE = 'Como é o seu cabelo?',\n PRODUCT_SPENT = 'Qual é o seu nivel de gasto mensal em produtos de beleza e cuidados pessoais?',\n}\n","import * as Answers from '../../users/models/enums'\nimport { FilterType, QuestionsFilters } from '../enums'\n\ntype FilterAnswers = {\n [key: string]: string\n}\n\nexport class BeautyQuestionsHelper {\n static getAnswers(filter: FilterType): FilterAnswers {\n switch (filter) {\n case FilterType.ACCESSORY_IMPORTANCE:\n return Answers.AccessoryImportances\n case FilterType.BEARD_PROBLEMS:\n return Answers.BeardProblems\n case FilterType.BEARD_SIZE:\n return Answers.BeardSizes\n case FilterType.BEAUTY_PRODUCT_IMPORTANCE:\n return Answers.BeautyProductImportances\n case FilterType.BODY_PROBLEMS:\n return Answers.BodyProblems\n case FilterType.BODY_SHAPE:\n return Answers.BodyShapes\n case FilterType.BODY_TATTOOS:\n return Answers.BodyTattoos\n case FilterType.FACE_SKIN_OILINESS:\n return Answers.FaceSkinOilinesses\n case FilterType.FACE_SKIN_PROBLEMS:\n return Answers.FaceSkinProblems\n case FilterType.FACE_SKIN_TONE:\n return Answers.FaceSkinTones\n case FilterType.FAMILY_INCOME:\n return Answers.FamilyIncomes\n case FilterType.FRAGRANCE_IMPORTANCE:\n return Answers.FragranceImportances\n case FilterType.HAIR_COLOR:\n return Answers.HairColors\n case FilterType.HAIR_PROBLEMS:\n return Answers.HairProblems\n case FilterType.HAIR_STRANDS:\n return Answers.HairStrands\n case FilterType.HAIR_TYPE:\n return Answers.HairTypes\n case FilterType.PRODUCT_SPENT:\n return Answers.ProductSpents\n }\n }\n\n static getQuestions(filter: FilterType): string {\n return QuestionsFilters[filter]\n }\n}\n","import { BaseModel, IdentifierFields, NonFunctionPropertyNames } from '../../general/model'\nimport { Banner, Benefit, HomeDataStructure } from './types'\n\nexport class Home extends BaseModel<Home> implements IdentifierFields<Home> {\n benefitsSection: Benefit[]\n blockBanners: Banner[]\n blogBanner: Banner\n brandsCarousel: Banner[]\n buyToWinBanner: Banner\n discoverCategories: string[]\n featuredCampaignBanner: Banner\n featuredCategories: string[]\n heroCarousel: Banner[]\n verticalCarousels: string[]\n id: string\n data: HomeDataStructure\n\n identifierFields(): NonFunctionPropertyNames<Home>[] {\n return ['id']\n }\n}\n","import { BaseModel, IdentifierFields, NonFunctionPropertyNames } from '../../general/model'\nimport { MenuNav } from './types/menu-nav.type'\n\nexport class ShopMenu extends BaseModel<ShopMenu> implements IdentifierFields<ShopMenu> {\n menuNav: MenuNav[]\n id: string\n\n identifierFields(): NonFunctionPropertyNames<ShopMenu>[] {\n return ['id']\n }\n}\n","export class InvalidArgumentError extends Error {\n constructor(readonly message) {\n super(message)\n }\n}\n","export class RequiredArgumentError extends Error {\n arguments: string[]\n\n constructor(readonly args: string[]) {\n super(`Required arguments: ${args.join(', ')}`)\n\n this.arguments = args\n }\n}\n","export class NotFoundError extends Error {\n constructor(readonly message) {\n super(message)\n }\n}\n","export class DuplicatedResultsError extends Error {\n constructor(readonly message) {\n super(message)\n }\n}\n","import { CollectionReference, DocumentData, FirebaseFirestore, QueryDocumentSnapshot } from '@firebase/firestore-types'\nimport firebase from 'firebase'\n\nimport { BaseModelBuilder, BaseModelWithIdentifier } from '../../../../domain'\nimport { FirestoreRepository } from '../types'\nimport { MixinCtor } from '../../../../utils'\n\nexport const withFirestore = <TBase extends BaseModelWithIdentifier<TBase>>(MixinBase: MixinCtor) => {\n return class extends MixinBase implements FirestoreRepository<TBase> {\n readonly firestore?: FirebaseFirestore\n collectionName: string\n model: BaseModelBuilder<TBase>\n\n constructor(...args: Array<any>) {\n super(args)\n }\n\n collection(path?: string): CollectionReference<TBase> {\n return this.firestore.collection(path || this.collectionName).withConverter(this.buildModelInstance())\n }\n\n buildModelInstance(): {\n toFirestore: (data: TBase) => DocumentData\n fromFirestore: (snap: QueryDocumentSnapshot<TBase>) => TBase\n } {\n return {\n toFirestore: (data: TBase): DocumentData => (data?.toPlain ? data.toPlain() : data),\n fromFirestore: (snap: QueryDocumentSnapshot<TBase>): TBase => {\n const data = snap.data()\n\n Object.keys(data).forEach((key) => {\n if (data[key] instanceof firebase.firestore.Timestamp) {\n data[key] = data[key].toDate()\n }\n })\n\n return this.model.toInstance({ ...data, id: snap.id })\n },\n }\n }\n }\n}\n","import { QuerySnapshot, QueryDocumentSnapshot } from '@firebase/firestore-types'\n\nimport { BaseModelWithIdentifier } from '../../../../domain'\n\nimport { FirestoreHelpers, FirestoreRepository, FirestoreSubRepository } from '../types'\nimport { isNil, MixinCtor } from '../../../../utils'\n\nexport const withHelpers = <Model extends BaseModelWithIdentifier<Model>, TMixinBase extends MixinCtor>(\n MixinBase: MixinCtor & TMixinBase,\n) => {\n return class extends MixinBase implements FirestoreHelpers {\n toArray<T extends BaseModelWithIdentifier<T>>(snapShot: QuerySnapshot<T> | QueryDocumentSnapshot<T>[]): T[] {\n if (Array.isArray(snapShot)) {\n return snapShot.map((doc: QueryDocumentSnapshot<T>) => doc.data())\n } else {\n return snapShot.docs.map((doc: QueryDocumentSnapshot<T>) => doc.data())\n }\n }\n\n isSubCollection<T extends BaseModelWithIdentifier<T>>(\n repository: FirestoreRepository<T>,\n ): repository is FirestoreSubRepository<T> {\n return !isNil(Object.keys(this).find((key) => key === 'parentRepository'))\n }\n }\n}\n","import { BaseModelWithIdentifier, GetRepository, NonFunctionProperties } from '../../../../domain'\nimport { FirestoreHelpers, FirestoreRepository } from '../types'\nimport { isNil, MixinCtor } from '../../../../utils'\nimport { NotFoundError } from '../../../../errors'\n\nexport const withGetFirestore = <TBase extends BaseModelWithIdentifier<TBase>, TMixinBase extends MixinCtor>(\n MixinBase: MixinCtor<FirestoreRepository<TBase> & FirestoreHelpers> & TMixinBase,\n) => {\n return class GetFirestore extends MixinBase implements GetRepository<TBase> {\n async get(identifiers: NonFunctionProperties<TBase>): Promise<TBase> {\n const doc = await this.collection(this.buildCollectionPathForGet(identifiers))\n .doc(Object.values(identifiers).shift().toString())\n .get()\n const data = doc.data()\n\n if (isNil(data)) throw new NotFoundError(`Document ${JSON.stringify(identifiers)} not found`)\n\n return data\n }\n\n buildCollectionPathForGet(identifiers: NonFunctionProperties<TBase>): string {\n return this.isSubCollection(this)\n ? `${this.parentRepository.collectionName}/${identifiers[this.parentIdField]}/${this.collectionName}`\n : this.collectionName\n }\n }\n}\n","import { CollectionReference, Query } from '@firebase/firestore-types'\n\nimport {\n BaseModelWithIdentifier,\n FindRepository,\n NonFunctionPropertyNames,\n RepositoryFindField,\n RepositoryFindFielters,\n RepositoryFindFieltersOptions,\n RepositoryFindResult,\n RepositoryLimitOptions,\n RepositoryOrderByList,\n Where,\n} from '../../../../domain'\nimport { FirestoreHelpers, FirestoreRepository } from '../types'\nimport { isDate, isNil, isNumber, isObject, isString, MixinCtor, set } from '../../../../utils'\n\nexport const withFindFirestore = <TBase extends BaseModelWithIdentifier<TBase>, TMixinBase extends MixinCtor>(\n MixinBase: MixinCtor<FirestoreRepository<TBase> & FirestoreHelpers> & TMixinBase,\n) => {\n const checkIfIsFilterOption = (filter: any): filter is RepositoryFindFieltersOptions<TBase, any> =>\n !isNil(filter?.operator)\n const getValueFromFilter = (filter: RepositoryFindField<TBase, any>): any => {\n return checkIfIsFilterOption(filter) ? filter.value : filter\n }\n const getFinalValueFrom = (value: any) =>\n isNumber(value) || isString(value) || isDate(value) || Array.isArray(value)\n ? value\n : Object.values(getFinalValueFrom)\n\n return class FindFirestore extends MixinBase implements FindRepository<TBase> {\n async find(\n filters?: RepositoryFindFielters<TBase>[],\n limits?: RepositoryLimitOptions<TBase>,\n orderBy?: RepositoryOrderByList<TBase>,\n ): Promise<RepositoryFindResult<TBase>> {\n let query: CollectionReference<TBase> | Query<TBase> = this.collection(this.buildCollectionPathForFind(filters))\n\n filters?.forEach((filterer) => (query = this.makeFirestoreWhere(query, filterer)))\n\n orderBy?.forEach((orderer) =>\n Object.keys(orderer).forEach((fieldName) => (query = query.orderBy(fieldName, orderer[fieldName]))),\n )\n\n query = await this.defineLimits(query, filters, limits)\n\n const docs = await query.get()\n const data = docs.docs.map((doc) => doc.data())\n\n return {\n data,\n count: this.calculateCount(data, limits),\n }\n }\n\n buildCollectionPathForFind(filters: RepositoryFindFielters<TBase>[]): string {\n if (!this.isSubCollection<TBase>(this)) return this.collectionName\n\n const parentIdField = this.parentIdField\n const parentId = getValueFromFilter(\n filters.find((groupFilter) => Boolean(getValueFromFilter(groupFilter[parentIdField])))?.[parentIdField],\n )\n\n return `${this.parentRepository.collectionName}/${parentId}/${this.collectionName}`\n }\n\n makeFirestoreWhere = (\n queryReference: CollectionReference<TBase> | Query<TBase>,\n filter: RepositoryFindFielters<TBase>,\n ): Query<TBase> =>\n Object.keys(filter).reduce(\n (query: Query<TBase>, fieldName: string) => this.buildWhereSentence(query, fieldName, filter[fieldName]),\n queryReference,\n )\n\n buildWhereSentence = (\n queryReference: CollectionReference<TBase> | Query<TBase>,\n fieldName: NonFunctionPropertyNames<TBase> | string,\n options: RepositoryFindFieltersOptions<TBase, NonFunctionPropertyNames<TBase>>,\n ): Query<TBase> => {\n if (this.isSubCollection<TBase>(this) && fieldName === this.parentIdField) return queryReference\n\n const value = options?.value || options\n const object = {}\n\n set(object, fieldName, value)\n\n const plainInstance = new this.model(object).toPlain()\n const firestoreFieldName =\n fieldName.toString().indexOf('.') > -1\n ? fieldName.toString()\n : Object.keys(plainInstance).find((key) => plainInstance[key])\n\n if (options?.operator === Where.LIKE) {\n if (Array.isArray(options?.value))\n return queryReference.where(firestoreFieldName, 'array-contains-any', options.value)\n\n queryReference = queryReference.where(firestoreFieldName, '>=', options.value)\n queryReference = queryReference.where(firestoreFieldName, '<=', `${options.value}~`)\n\n return queryReference\n }\n if (options?.operator === Where.IN && Array.isArray(options?.value))\n return queryReference.where(firestoreFieldName, 'array-contains', options.value)\n if (isObject(options) && isNil(options?.operator) && isNil(options?.value)) {\n return Object.keys(options).reduce(\n (queryReferenceWithWhere, key) =>\n this.buildWhereSentence(queryReferenceWithWhere, `${fieldName}.${key}`, options[key]),\n queryReference,\n )\n }\n\n return queryReference.where(firestoreFieldName, options?.operator || '==', options?.value || options)\n }\n\n async defineLimits(\n query: CollectionReference<TBase> | Query<TBase>,\n filters: RepositoryFindFielters<TBase>[],\n limits: RepositoryLimitOptions<TBase>,\n ): Promise<Query<TBase>> {\n if (limits?.offset) {\n if (limits.offset instanceof this.model)\n query = query.startAfter(\n await this.collection(this.buildCollectionPathForFind(filters))\n .doc(limits.offset[limits.offset.identifierFields().shift() as string])\n .get(),\n )\n else if (isNumber(limits.offset) || isString(limits.offset)) query = query.startAt(limits.offset)\n }\n if (limits?.limit) query = query.limit(limits.limit)\n\n return query\n }\n\n calculateCount(data: TBase[], limits: RepositoryLimitOptions<TBase>): number {\n if (data.length <= 0) return 0\n if (data.length < limits?.limit) return data.length\n\n return Infinity\n }\n }\n}\n","import { DocumentReference } from '@firebase/firestore-types'\n\nimport { CreateRepository, BaseModelWithIdentifier } from '../../../../domain'\nimport { FirestoreHelpers, FirestoreRepository } from '../types'\nimport { isEmpty, MixinCtor } from '../../../../utils'\n\nexport const withCreateFirestore = <TBase extends BaseModelWithIdentifier<TBase>, TMixinBase extends MixinCtor>(\n MixinBase: MixinCtor<FirestoreRepository<TBase> & FirestoreHelpers> & TMixinBase,\n) => {\n return class CreateFirestore extends MixinBase implements CreateRepository<TBase> {\n async create(data: Partial<TBase>): Promise<TBase> {\n const docRef = await this.save(this.model.toInstance(data))\n const doc = await docRef.get()\n\n return doc.data()\n }\n\n async save(data: TBase): Promise<DocumentReference<TBase>> {\n const id = data[data.identifierFields().shift()]?.toString()\n const collectionPath = this.buildCollectionPathForAdd(data)\n\n if (isEmpty(id)) return this.collection(collectionPath).add(data)\n\n const docRef = this.collection(collectionPath).doc(id)\n await docRef.set(data)\n\n return docRef\n }\n\n buildCollectionPathForAdd(identifiers: Partial<TBase>): string {\n return this.isSubCollection(this)\n ? `${this.parentRepository.collectionName}/${identifiers[this.parentIdField]}/${this.collectionName}`\n : this.collectionName\n }\n }\n}\n","import firebase from 'firebase'\n\nimport {\n BaseModelWithIdentifier,\n NonFunctionPropertyNames,\n RepositoryUpdateParams,\n UpdateOptionActions,\n UpdateOptions,\n UpdateRepository,\n} from '../../../../domain'\nimport { FirestoreHelpers, FirestoreRepository } from '../types'\nimport { isNil, MixinCtor, PropType } from '../../../../utils'\n\nexport const withUpdateFirestore = <TBase extends BaseModelWithIdentifier<TBase>, TMixinBase extends MixinCtor>(\n MixinBase: MixinCtor<FirestoreRepository<TBase> & FirestoreHelpers> & TMixinBase,\n) => {\n const getValueFromParams = (\n params: RepositoryUpdateParams<TBase>,\n field: NonFunctionPropertyNames<TBase>,\n ): PropType<TBase, NonFunctionPropertyNames<TBase>> =>\n (isNil(params[field as string]?.value) ? params[field as string] : params[field as string].value) || null\n const getValueByAction = (options: UpdateOptions<TBase>): firebase.firestore.FieldValue | unknown => {\n const fieldValues = firebase.firestore.FieldValue\n\n if (isNil(options.action)) return options\n if (options.action === UpdateOptionActions.REMOVE_FIELD) return fieldValues.delete()\n if (Array.isArray(options.value)) {\n if (options.action === UpdateOptionActions.MERGE) return fieldValues.arrayUnion(...options.value)\n if (options.action === UpdateOptionActions.REMOVE) return fieldValues.arrayRemove(...options.value)\n }\n\n return options.value\n }\n\n return class UpdateFirestore extends MixinBase implements UpdateRepository<TBase> {\n async update(data: RepositoryUpdateParams<TBase>): Promise<TBase> {\n const model = new this.model()\n const keyField = model.identifierFields().shift()\n const docRef = this.collection(this.buildCollectionPathForUpdate(data)).doc(\n getValueFromParams(data, keyField).toString(),\n )\n\n await docRef.set(this.paramsToPlain(data), { merge: true })\n\n const doc = await docRef.get()\n\n return doc.data()\n }\n\n buildCollectionPathForUpdate(identifiers: RepositoryUpdateParams<TBase>): string {\n return this.isSubCollection(this)\n ? `${this.parentRepository.collectionName}/${getValueFromParams(identifiers, this.parentIdField)}/${\n this.collectionName\n }`\n : this.collectionName\n }\n\n paramsToPlain(params: RepositoryUpdateParams<TBase>): Partial<TBase> {\n const model = this.model\n\n if (params instanceof model) return params\n\n return Object.keys(params).reduce(\n (data, currentKey) => ({ ...data, [currentKey]: getValueByAction(params[currentKey]) }),\n {},\n )\n }\n }\n}\n","import { BaseModelWithIdentifier, NonFunctionProperties, DeleteRepository } from '../../../../domain'\nimport { FirestoreHelpers, FirestoreRepository } from '../types'\nimport { MixinCtor } from '../../../../utils'\n\nexport const withDeleteFirestore = <TBase extends BaseModelWithIdentifier<TBase>, TMixinBase extends MixinCtor>(\n MixinBase: MixinCtor<FirestoreRepository<TBase> & FirestoreHelpers> & TMixinBase,\n) => {\n return class DeleteFirestore extends MixinBase implements DeleteRepository<TBase> {\n async delete(identifiers: NonFunctionProperties<TBase>): Promise<void> {\n await this.collection(this.buildCollectionPathForRemove(identifiers))\n .doc(Object.values(identifiers).shift().toString())\n .delete()\n }\n\n buildCollectionPathForRemove(identifiers: NonFunctionProperties<TBase>): string {\n return this.isSubCollection(this)\n ? `${this.parentRepository.collectionName}/${identifiers[this.parentIdField]}/${this.collectionName}`\n : this.collectionName\n }\n }\n}\n","import { CollectionReference, DocumentData, FirebaseFirestore, QueryDocumentSnapshot } from '@firebase/firestore-types'\n\nimport { BaseModelWithIdentifier, NonFunctionPropertyNames } from '../../../../domain'\nimport { FirestoreRepository, FirestoreSubRepository } from '../types'\nimport { MixinCtor } from '../../../../utils'\n\nexport const withSubCollection = <\n TBase extends BaseModelWithIdentifier<TBase>,\n TBaseParent extends BaseModelWithIdentifier<TBaseParent>,\n TMixinBase extends MixinCtor,\n>(\n MixinBase: MixinCtor<FirestoreRepository<TBase>> & TMixinBase,\n ParentModel: new () => TBaseParent,\n) => {\n return class SubCollectionMix\n extends MixinBase\n implements FirestoreSubRepository<TBase, InstanceType<typeof ParentModel>>\n {\n readonly parentRepository: FirestoreRepository<InstanceType<typeof ParentModel>>\n parentIdField: NonFunctionPropertyNames<TBase>\n\n constructor(...args: Array<any>) {\n super(args)\n }\n\n collection(path?: string): CollectionReference<TBase> {\n return super.collection(path)\n }\n }\n}\n","import { BaseModelWithIdentifier, CrudRepository } from '../../../../domain'\nimport { FirestoreHelpers, FirestoreRepository } from '../types'\nimport { MixinCtor } from '../../../../utils'\n\nimport { withCreateFirestore } from './with-create-firestore.mixin'\nimport { withDeleteFirestore } from './with-delete-firestore.mixin'\nimport { withFindFirestore } from './with-find-firestore.mixin'\nimport { withGetFirestore } from './with-get-firestore.mixin'\nimport { withUpdateFirestore } from './with-update-firestore.mixin'\n\nexport const withCrudFirestore = <TBase extends BaseModelWithIdentifier<TBase>, TMixinBase extends MixinCtor>(\n MixinBase: MixinCtor<FirestoreRepository<TBase> & FirestoreHelpers> & TMixinBase,\n) => {\n return class CrudFirestore\n extends withUpdateFirestore(\n withGetFirestore(withFindFirestore(withDeleteFirestore(withCreateFirestore(MixinBase)))),\n )\n implements CrudRepository<TBase> {}\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\n\nimport { Base } from '../../../../../utils'\nimport { Subscription, SubscriptionRepository } from '../../../../../domain'\n\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class SubscriptionFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<Subscription>(Base)))\n implements SubscriptionRepository\n{\n constructor(readonly firestore: FirebaseFirestore) {\n super()\n this.collectionName = 'subscription'\n this.model = Subscription\n }\n}\n","import { BaseModel, IdentifierFields, NonFunctionPropertyNames } from '../../../../domain/general'\n\nexport class UserSearch extends BaseModel<UserSearch> implements IdentifierFields<UserSearch> {\n id: string\n cpf?: string\n email?: string\n createdAt: Date\n copiedAt: Date\n\n identifierFields(): NonFunctionPropertyNames<UserSearch>[] {\n return ['id']\n }\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\n\nimport { Base } from '../../../../../utils'\nimport { CrudRepository } from '../../../../../domain'\nimport { UserSearch } from '../../models/user-search'\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class UserSearchFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<UserSearch>(Base)))\n implements CrudRepository<UserSearch>\n{\n constructor(readonly firestore: FirebaseFirestore) {\n super()\n this.collectionName = 'userSearch'\n this.model = UserSearch\n }\n}\n","import { DocumentData, FirebaseFirestore, QueryDocumentSnapshot } from '@firebase/firestore-types'\n\nimport { Base } from '../../../../../utils'\nimport { BeautyProfile, User, UserRepository, Where } from '../../../../../domain'\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nimport { UserSearchFirestoreRepository } from './user-search-firestore.repository'\n\nexport class UserFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<User>(Base)))\n implements UserRepository\n{\n constructor(\n readonly firestore: FirebaseFirestore,\n private readonly userSearchFirestoreRepository = new UserSearchFirestoreRepository(firestore),\n ) {\n super()\n this.collectionName = 'users'\n this.model = User\n }\n\n async get(identifiers: Partial<User>): Promise<User> {\n const user = await super.get({ id: identifiers.id })\n\n user.beautyProfile = await this.getBeautyProfile(user.id)\n user.isSubscriber = await this.checkIfIsSubscriber(user.id)\n\n return user\n }\n\n async checkIfExistsByField(field: string, value: string): Promise<boolean> {\n const result = await this.userSearchFirestoreRepository.find([{ [field]: { operator: Where.EQUALS, value } }])\n\n return result.count > 0\n }\n\n buildModelInstance(): {\n toFirestore: (data: User) => DocumentData\n fromFirestore: (snap: QueryDocumentSnapshot<User>) => User\n } {\n const { fromFirestore, toFirestore } = super.buildModelInstance()\n\n return {\n toFirestore: (data: User): DocumentData => {\n const plain = toFirestore(data)\n\n delete plain.isSubscriber\n\n return plain\n },\n fromFirestore,\n }\n }\n\n private async getBeautyProfile(userId: string): Promise<BeautyProfile> {\n const beautyProfile = await this.collection()\n .doc(userId)\n .collection('CX')\n .withConverter(this.buildBeautyProfileModelInstance())\n .doc('beautyProfile')\n .get()\n\n return beautyProfile.data()\n }\n\n private async checkIfIsSubscriber(userId: string): Promise<boolean> {\n const docs = await this.firestore\n .collection('subscription')\n .where('user.id', '==', userId)\n .where('status', '==', 'active')\n .get()\n\n return !!docs && !!docs.size\n }\n\n private buildBeautyProfileModelInstance(): {\n toFirestore: (data: BeautyProfile) => DocumentData\n fromFirestore: (snap: QueryDocumentSnapshot<BeautyProfile>) => BeautyProfile\n } {\n return {\n toFirestore: (data: BeautyProfile): DocumentData => data.toPlain(),\n fromFirestore: (snap: QueryDocumentSnapshot<BeautyProfile>): BeautyProfile =>\n BeautyProfile.toInstance(snap.data()),\n }\n }\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\n\nimport { Base } from '../../../../../utils'\nimport { Edition, Subscription, EditionRepository } from '../../../../../domain'\nimport { withCrudFirestore, withFirestore, withHelpers, withSubCollection } from '../../mixins'\n\nimport { SubscriptionFirestoreRepository } from './subscription-firestore.repository'\n\nexport class SubscriptionEditionFirestoreRepository\n extends withSubCollection(withCrudFirestore(withHelpers(withFirestore<Edition>(Base))), Subscription)\n implements EditionRepository\n{\n constructor(readonly firestore: FirebaseFirestore, readonly parentRepository: SubscriptionFirestoreRepository) {\n super()\n this.collectionName = 'editions'\n this.parentIdField = 'subscriptionId'\n this.model = Edition\n }\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\n\nimport { Base } from '../../../../../utils'\nimport { BeautyProfile, BeautyProfileRepository, User } from '../../../../../domain'\nimport { withCrudFirestore, withFirestore, withHelpers, withSubCollection } from '../../mixins'\n\nimport { UserFirestoreRepository } from './user-firestore.repository'\n\nexport class UserBeautyProfileFirestoreRepository\n extends withSubCollection(withCrudFirestore(withHelpers(withFirestore<BeautyProfile>(Base))), User)\n implements BeautyProfileRepository\n{\n constructor(readonly firestore: FirebaseFirestore, readonly parentRepository: UserFirestoreRepository) {\n super()\n this.collectionName = 'CX'\n this.parentIdField = 'userId'\n this.model = BeautyProfile\n }\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\n\nimport { Base } from '../../../../../utils'\nimport { User, UserAddress, UserAddressRepository } from '../../../../../domain'\nimport { withCrudFirestore, withFirestore, withHelpers, withSubCollection } from '../../mixins'\n\nimport { UserFirestoreRepository } from './user-firestore.repository'\n\nexport class UserAddressFirestoreRepository\n extends withSubCollection(withCrudFirestore(withHelpers(withFirestore<UserAddress>(Base))), User)\n implements UserAddressRepository\n{\n constructor(readonly firestore: FirebaseFirestore, readonly parentRepository: UserFirestoreRepository) {\n super()\n this.collectionName = 'address'\n this.parentIdField = 'userId'\n this.model = UserAddress\n }\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\n\nimport { Base } from '../../../../../utils'\nimport { User, UserPaymentMethod, UserPaymentMethodRepository } from '../../../../../domain'\nimport { withCrudFirestore, withFirestore, withHelpers, withSubCollection } from '../../mixins'\n\nimport { UserFirestoreRepository } from './user-firestore.repository'\n\nexport class UserPaymentMethodFirestoreRepository\n extends withSubCollection(withCrudFirestore(withHelpers(withFirestore<UserPaymentMethod>(Base))), User)\n implements UserPaymentMethodRepository\n{\n constructor(readonly firestore: FirebaseFirestore, readonly parentRepository: UserFirestoreRepository) {\n super()\n this.collectionName = 'payment_method'\n this.parentIdField = 'userId'\n this.model = UserPaymentMethod\n }\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\n\nimport { Base } from '../../../../../utils'\nimport { SubscriptionPayment, Subscription, SubscriptionPaymentRepository } from '../../../../../domain'\nimport { withCrudFirestore, withFirestore, withHelpers, withSubCollection } from '../../mixins'\n\nimport { SubscriptionFirestoreRepository } from './subscription-firestore.repository'\n\nexport class SubscriptionPaymentFirestoreRepository\n extends withSubCollection(withCrudFirestore(withHelpers(withFirestore<SubscriptionPayment>(Base))), Subscription)\n implements SubscriptionPaymentRepository\n{\n constructor(readonly firestore: FirebaseFirestore, readonly parentRepository: SubscriptionFirestoreRepository) {\n super()\n this.collectionName = 'payments'\n this.parentIdField = 'subscriptionId'\n this.model = SubscriptionPayment\n }\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\n\nimport { Base } from '../../../../../utils'\nimport { Lead, LeadRepository } from '../../../../../domain'\n\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class LeadFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<Lead>(Base)))\n implements LeadRepository\n{\n constructor(readonly firestore: FirebaseFirestore) {\n super()\n this.collectionName = 'leads'\n this.model = Lead\n }\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\n\nimport { Base, chunk } from '../../../../../utils'\nimport { Category, CategoryRepository, Product, Shops } from '../../../../../domain'\n\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\nimport { DuplicatedResultsError, NotFoundError, RequiredArgumentError } from '../../../../../errors'\n\nexport class CategoryFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<Category>(Base)))\n implements CategoryRepository\n{\n constructor(readonly firestore: FirebaseFirestore) {\n super()\n this.collectionName = 'categories'\n this.model = Category\n }\n\n getCategoryBySlug(slug: string, shop: Shops): Promise<Category> {\n return this.collection(this.collectionName)\n .where('slug', '==', slug)\n .where('shop', '==', shop)\n .where('published', '==', true)\n .get()\n .then((snap) => {\n if (snap.size > 1) throw new DuplicatedResultsError('Query returned duplicated values')\n\n if (snap.empty) throw new NotFoundError(`Document with slug ${slug} not found`)\n\n return snap.docs[0].data()\n })\n .catch((error) => error)\n }\n\n async getCategoriesForHome(categoryIds: string[], limit = 4): Promise<{ category: Category; products: Product[] }[]> {\n const categorySnap = await this.collection(this.collectionName)\n .where('id', 'in', categoryIds)\n .where('published', '==', true)\n .get()\n\n if (categorySnap.empty) throw new NotFoundError('Categories not found')\n\n const categories = categorySnap.docs.map((doc) => doc.data())\n const homeSections = await Promise.all(\n categories.map(async (category) => ({\n category,\n products: await this.mountCategory(category, { limit, hasStock: true }),\n })),\n )\n\n return homeSections\n }\n\n async mountCategory(category: Category, options?: { limit?: number; hasStock?: boolean }): Promise<Product[]> {\n if (!category.products) throw new RequiredArgumentError(['Category products is empty'])\n\n const chunks = chunk(category.products, 10)\n const products = []\n const publishedField = category.shop === Shops.GLAMSHOP ? 'publishedGlam' : 'published'\n\n for (const productIds of chunks) {\n if (options?.limit && products.length >= options?.limit) break\n\n let query = await this.collection('products').where(publishedField, '==', true).where('id', 'in', productIds)\n\n if (options?.hasStock) query = query.where('stock.quantity', '>', 0)\n if (options?.limit) query = query.limit(options?.limit)\n\n const productSnap = await query.get()\n\n if (productSnap.empty) continue\n\n products.push(...productSnap.docs.map((doc) => doc.data()))\n }\n\n return products\n }\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\n\nimport { Base } from '../../../../../utils'\nimport { Product, ProductRepository, Shops, Where } from '../../../../../domain'\n\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class ProductFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<Product>(Base)))\n implements ProductRepository\n{\n constructor(readonly firestore: FirebaseFirestore) {\n super()\n this.collectionName = 'products'\n this.model = Product\n }\n\n async getBySlug(slug: string, shop: Shops): Promise<Product> {\n const result = await this.find([\n { slug: { operator: Where.EQUALS, value: slug } },\n { shopAvailability: { operator: Where.IN, value: [shop] } },\n ])\n\n return result?.data?.shift()\n }\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\n\nimport { Base } from '../../../../../utils'\nimport { Product, Variant, VariantRepository } from '../../../../../domain'\nimport { withCrudFirestore, withFirestore, withHelpers, withSubCollection } from '../../mixins'\n\nimport { ProductFirestoreRepository } from './product-firestore.repository'\n\nexport class ProductVariantFirestoreRepository\n extends withSubCollection(withCrudFirestore(withHelpers(withFirestore<Variant>(Base))), Product)\n implements VariantRepository\n{\n constructor(readonly firestore: FirebaseFirestore, readonly parentRepository: ProductFirestoreRepository) {\n super()\n this.collectionName = 'variants'\n this.parentIdField = 'productId'\n this.model = Variant\n }\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\n\nimport { Base } from '../../../../../utils'\nimport { Product, SubscriptionProductRepository } from '../../../../../domain'\n\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class SubscriptionProductFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<Product>(Base)))\n implements SubscriptionProductRepository\n{\n constructor(readonly firestore: FirebaseFirestore) {\n super()\n this.collectionName = 'subscriptionProducts'\n this.model = Product\n }\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\n\nimport { Base } from '../../../../../utils'\nimport { Checkout, CheckoutRepository } from '../../../../../domain'\n\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class CheckoutFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<Checkout>(Base)))\n implements CheckoutRepository\n{\n constructor(readonly firestore: FirebaseFirestore) {\n super()\n this.collectionName = 'checkouts'\n this.model = Checkout\n }\n}\n","import { DocumentData, FirebaseFirestore, QueryDocumentSnapshot } from '@firebase/firestore-types'\n\nimport { Base, isNil } from '../../../../../utils'\nimport { Coupon, CouponRepository } from '../../../../../domain'\n\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class CouponFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<Coupon>(Base)))\n implements CouponRepository\n{\n constructor(readonly firestore: FirebaseFirestore) {\n super()\n this.collectionName = 'coupons'\n this.model = Coupon\n }\n\n buildModelInstance(): {\n toFirestore: (data: Coupon) => DocumentData\n fromFirestore: (snap: QueryDocumentSnapshot<Coupon>) => Coupon\n } {\n const { fromFirestore, toFirestore } = super.buildModelInstance()\n\n return {\n toFirestore: (data: Coupon): DocumentData => {\n const plain = toFirestore(data)\n\n if (!!data.expiresIn) plain.expiresIn = data.expiresIn.getTime()\n\n return plain\n },\n fromFirestore: (snap: QueryDocumentSnapshot<Coupon>): Coupon => {\n const instance = fromFirestore(snap)\n\n if (!isNil(instance.expiresIn)) instance.expiresIn = new Date(snap.data().expiresIn)\n\n return instance\n },\n }\n }\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\n\nimport { Base } from '../../../../../utils'\nimport { Order, OrderRepository } from '../../../../../domain'\n\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class OrderFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<Order>(Base)))\n implements OrderRepository\n{\n constructor(readonly firestore: FirebaseFirestore) {\n super()\n this.collectionName = 'orders'\n this.model = Order\n }\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\n\nimport { Base } from '../../../../../utils'\nimport { Payment, PaymentRepository } from '../../../../../domain'\n\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class PaymentFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<Payment>(Base)))\n implements PaymentRepository\n{\n constructor(readonly firestore: FirebaseFirestore) {\n super()\n this.collectionName = 'payments'\n this.model = Payment\n }\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\n\nimport { Base } from '../../../../../utils'\nimport { CheckoutSubscription, CheckoutSubscriptionRepository } from '../../../../../domain'\n\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class CheckoutSubscriptionFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<CheckoutSubscription>(Base)))\n implements CheckoutSubscriptionRepository\n{\n constructor(readonly firestore: FirebaseFirestore) {\n super()\n this.collectionName = 'checkoutsSubscription'\n this.model = CheckoutSubscription\n }\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\n\nimport { Base } from '../../../../../utils'\nimport { SubscriptionPlan, SubscriptionPlanRepository } from '../../../../../domain'\n\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class SubscriptionPlanFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<SubscriptionPlan>(Base)))\n implements SubscriptionPlanRepository\n{\n constructor(readonly firestore: FirebaseFirestore) {\n super()\n this.collectionName = 'subscriptionPlans'\n this.model = SubscriptionPlan\n }\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\n\nimport { Base } from '../../../../../utils'\nimport { Buy2Win, Buy2WinRepository } from '../../../../../domain'\n\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class Buy2WinFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<Buy2Win>(Base)))\n implements Buy2WinRepository\n{\n constructor(readonly firestore: FirebaseFirestore) {\n super()\n this.collectionName = 'buy2win'\n this.model = Buy2Win\n }\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\n\nimport { LegacyOrderRepository } from '../../../../../domain'\n\nimport { OrderFirestoreRepository } from './order-firestore.repository'\n\nexport class LegacyOrderFirestoreRepository extends OrderFirestoreRepository implements LegacyOrderRepository {\n constructor(readonly firestore: FirebaseFirestore) {\n super(firestore)\n this.collectionName = 'legacyOrders'\n }\n}\n","import { DocumentData, FirebaseFirestore, QueryDocumentSnapshot } from '@firebase/firestore-types'\nimport firebase from 'firebase'\n\nimport { Base } from '../../../../../utils'\nimport { Category, Home, HomeCategoryGroup, HomeRepository, Product } from '../../../../../domain'\n\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class HomeFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<Home>(Base)))\n implements HomeRepository\n{\n constructor(readonly firestore: FirebaseFirestore) {\n super()\n this.collectionName = 'dms'\n this.model = Home\n }\n\n buildModelInstance(): {\n toFirestore: (data: Home) => DocumentData\n fromFirestore: (snap: QueryDocumentSnapshot<Home>) => Home\n } {\n const { fromFirestore, toFirestore } = super.buildModelInstance()\n\n return {\n toFirestore: (data: Home): DocumentData => {\n const modifiedData = this.homeToFirestore(data)\n\n return toFirestore(modifiedData)\n },\n fromFirestore: (snap: QueryDocumentSnapshot<Home>): Home => {\n const instance = fromFirestore(snap)\n\n return this.homeFromFirestore(instance)\n },\n }\n }\n\n private homeToFirestore = (home: Home): Home => {\n if (home.data?.data) {\n home.data.data.discoverProducts = home.data.data.discoverProducts.map(this.homeCategoryGroupToPlain)\n home.data.data.featuredProducts = home.data.data.featuredProducts.map(this.homeCategoryGroupToPlain)\n home.data.data.verticalProducts = home.data.data.verticalProducts.map(this.homeCategoryGroupToPlain)\n }\n\n return home\n }\n\n private homeCategoryGroupToPlain = (homeCategoryGroup: HomeCategoryGroup) => ({\n category: homeCategoryGroup.category.toPlain(),\n products: homeCategoryGroup.products.map((product) => product.toPlain()),\n })\n\n private homeFromFirestore = (home: Home): Home => {\n if (home.data?.data) {\n home.data.data.discoverProducts = home.data.data.discoverProducts.map(this.plainToHomeCategoryGroup)\n home.data.data.featuredProducts = home.data.data.featuredProducts.map(this.plainToHomeCategoryGroup)\n home.data.data.verticalProducts = home.data.data.verticalProducts.map(this.plainToHomeCategoryGroup)\n home.data.createdAt =\n home.data.createdAt instanceof firebase.firestore.Timestamp ? home.data.createdAt.toDate() : home.data.createdAt\n home.data.expiresAt =\n home.data.expiresAt instanceof firebase.firestore.Timestamp ? home.data.expiresAt.toDate() : home.data.expiresAt\n }\n\n return home\n }\n\n private plainToHomeCategoryGroup = (homeCategoryGroup: HomeCategoryGroup) => ({\n category: Category.toInstance(homeCategoryGroup.category),\n products: homeCategoryGroup.products.map((product) => Product.toInstance(product)),\n })\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\nimport { ShopMenu, ShopMenuRepository } from '../../../../../domain'\n\nimport { Base } from '../../../../../utils'\n\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class ShopMenuFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<ShopMenu>(Base)))\n implements ShopMenuRepository {\n constructor(readonly firestore: FirebaseFirestore) {\n super()\n this.collectionName = 'shopMenus'\n this.model = ShopMenu\n }\n}\n","import firebase from 'firebase/app'\n\nimport { AuthenticationService, BasicUserData, LoginAndPasswordParams } from '../../../domain'\n\nimport { FirebaseUserWithId } from './types/firebase-user-with-id.type'\n\nexport class AuthenticationFirebaseAuthService implements AuthenticationService {\n constructor(private readonly firebaseAuth: firebase.auth.Auth) {}\n\n async signInWithEmailAndPassword(data: LoginAndPasswordParams): Promise<BasicUserData> {\n const credentials = await this.firebaseAuth.signInWithEmailAndPassword(data.email, data.password)\n const user = credentials.user\n\n return {\n id: user.uid,\n displayName: user.displayName,\n email: user.email,\n phone: user.phoneNumber,\n isAnonymous: false,\n }\n }\n\n async signInWithGoogle(): Promise<BasicUserData> {\n const credentials = await this.firebaseAuth.signInWithPopup(new firebase.auth.GoogleAuthProvider())\n const user = credentials.user\n\n return {\n id: user.uid,\n displayName: user.displayName,\n email: user.email,\n phone: user.phoneNumber,\n isAnonymous: false,\n }\n }\n\n async signOut(): Promise<void> {\n this.firebaseAuth.signOut()\n }\n\n async signInAnonymously(): Promise<FirebaseUserWithId> {\n const auth = await this.firebaseAuth.signInAnonymously()\n const user = auth.user as FirebaseUserWithId\n\n user.id = auth.user.uid\n\n return user\n }\n\n async sendPasswordResetEmail(email: string): Promise<void> {\n return this.firebaseAuth.sendPasswordResetEmail(email)\n }\n}\n","import firebase from 'firebase/app'\n\nimport { RegisterParams, RegisterService, UserAlreadyRegisteredError, WeakPasswordError } from '../../../domain'\n\nimport { FirebaseUserWithId } from './types/firebase-user-with-id.type'\n\nexport class RegisterFirebaseAuthService implements RegisterService {\n constructor(private readonly firebaseAuth: firebase.auth.Auth) {}\n\n async register(params: RegisterParams): Promise<FirebaseUserWithId> {\n try {\n const auth = await this.firebaseAuth.createUserWithEmailAndPassword(params.email, params.password)\n const user = auth.user as FirebaseUserWithId\n\n user.sendEmailVerification()\n user.id = auth.user.uid\n\n return user\n } catch (error) {\n if (error.code === 'auth/email-already-in-use') throw new UserAlreadyRegisteredError('Email already registered')\n if (error.code === 'auth/weak-password') throw new WeakPasswordError()\n\n throw error\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\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","firebase"],"mappings":"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"}
1
+ {"version":3,"file":"infrab4a-connect.js","sources":["../../../projects/connect/src/domain/general/model/base.model.ts","../../../projects/connect/src/domain/general/repository/enums/where.enum.ts","../../../projects/connect/src/domain/general/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/domain/shopping/models/enums/checkout-types.enum.ts","../../../projects/connect/src/utils/mixins/base.mixin.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/enums/shops.enum.ts","../../../projects/connect/src/domain/catalog/models/category.ts","../../../projects/connect/src/domain/catalog/models/product.ts","../../../projects/connect/src/domain/catalog/models/variant.ts","../../../projects/connect/src/domain/shopping/models/coupons/financial-coupon.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/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/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/subscription-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/models/user-search.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/users/user-search-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/users/user-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/users/subscription-edition-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-address-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/users/user-payment-method-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/users/subscription-payment-firestore.repository.ts","../../../projects/connect/src/infra/firebase/firestore/repositories/users/lead-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/auth/authentication-firebase-auth.service.ts","../../../projects/connect/src/infra/firebase/auth/register-firebase-auth.service.ts","../../../projects/connect/src/infrab4a-connect.ts"],"sourcesContent":["import { plainToClass, classToPlain } from 'class-transformer'\n\nimport { NonFunctionProperties } from './types/non-function-properties.type'\n\nexport class BaseModel<Model> {\n constructor(args?: Partial<Model>) {\n Object.assign(this, args)\n }\n\n static toInstance<T>(this: new () => Partial<T>, data: NonFunctionProperties<T>): T {\n return plainToClass(this, data) as any\n }\n\n toPlain(): any {\n return classToPlain(this, { exposeUnsetFields: false })\n }\n}\n","export enum Where {\n EQUALS = '==',\n NOTEQUALS = '!=',\n GT = '>',\n GTE = '>=',\n IN = 'in',\n LT = '<',\n LTE = '<=',\n LIKE = 'like',\n}\n","export enum UpdateOptionActions {\n UPDATE = 'update',\n MERGE = 'merge',\n REMOVE = 'remove',\n REMOVE_FIELD = 'removeField',\n NULL = 'null',\n}\n","export enum AccessoryImportances {\n NOT_INTERESTED = 'Não tenho interesse',\n LIKE_RARELY_USE = 'Gosto, mas uso poucos',\n LIKE_ALWAYS_FOLLOW_FASHION = 'Gosto muito de acessórios e sempre procuro acompanhar a moda',\n}\n","export enum Area {\n GP = 'Geral',\n CRM = 'CRM',\n MediaProd = 'Media Production',\n Tech = 'Tecnologia',\n Transactional = 'Transacional',\n Operations = 'Opera\\u00E7\\u00F5es',\n Sales = 'Comercial',\n Finantial = 'Financeiro',\n HR = 'RH',\n}\n","export enum BeardProblems {\n NO_PROBLEMS = 'Sem problemas',\n DRY = 'Barba Seca',\n OILY = 'Barba Oleaosa',\n DANCRUFF = 'Barba com Caspa',\n INGROWN_HAIRS = 'Pêlos Encravados',\n DOESNT_GROW = 'Não Cresce',\n SPARSE_BEARD = 'Barba Rala',\n}\n","export enum BeardSizes {\n BIG = 'Grande',\n MEDIUM = 'Média',\n SHORT = 'Curta',\n MUSTACHE = 'Bigode',\n NOTHING = 'Sem Barba',\n}\n","export enum BeautyProductImportances {\n KNOW_LITTLE_ABOUT = 'Conheço bem pouco de produtos de beleza e rotinas de cuidados',\n ALREADY_BOUGHT_NOTHING_SPECIALIZED = 'Já comprei alguns produtos básicos para cuidar de mim, mas nada muito especializado',\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',\n PERSONAL_CARE_EXPERT = 'Sou um expert em cuidados pessoais',\n}\n","export enum BodyProblems {\n NO_WORRIES = 'Sem preocupações',\n FLACCIDITY = 'Flacidez',\n LOCALIZED_FAT = 'Gordura Localizada',\n STRETCH_MARKS = 'Estrias',\n SENSITIVE_SKIN = 'Pele Sensível',\n DRY_SKIN = 'Pele Seca',\n OILY_ACNE = 'Oleosa/Acne',\n SKIN_FRECKLES = 'Pele com Sardas',\n PHOTOSENSITIVE_SKIN = 'Pele Fotossensível',\n}\n","export enum BodyShapes {\n LEAN = 'Magro',\n REGULAR = 'Regular',\n OVERWEIGHT = 'Acima do Peso',\n ATHLETIC = 'Atlético',\n MUSCULAR = 'Musculoso',\n}\n","export enum BodyTattoos {\n NONE = 'Nenhuma',\n HAS_DOESNT_CARE = 'Tenho mas não cuido',\n HAS_CARE_LOT = 'Tenho e cuido bastante',\n}\n","export enum FaceSkinOilinesses {\n DRY = 'Seca',\n OILY = 'Oleaosa',\n MIXED = 'Mista',\n NORMAL = 'Normal',\n DONT_KNOW = 'Eu não sei como dizer',\n}\n","export enum FaceSkinProblems {\n NO_PROBLEMS = 'Sem problemas',\n DARK_CIRCLES = 'Olheiras',\n WRINKLES = 'Rugas',\n BLACKHEADS_PIMPLES = 'Cravos e Espinhas',\n STAINS = 'Manchas',\n FRECKLES = 'Sardas',\n SENSITIVE = 'Sensível',\n PHOTOSENSITIVE = 'Fotossensível',\n}\n","export enum FaceSkinTones {\n VERY_CLEAR = 'Muito Clara',\n CLEAR = 'Clara',\n MEDIUM_LIGHT = 'Clara Média',\n MEDIUM_DARK = 'Escura Média',\n DARK = 'Escura',\n VERY_DARK = 'Muito Escura',\n}\n","export enum FamilyIncomes {\n UNTIL_3000 = 'Até R$3.000',\n SINCE_3001_TO_7000 = 'De R$3.001 a R$7.000',\n SINCE_7001_TO_10000 = 'De R$7.001 a R$10.000',\n SINCE_10001_TO_15000 = 'De R$10.001 a R$15.000',\n GRAN_THAN_15000 = 'Mais de R$15.000',\n NOW_ANSWER = 'Prefiro nao responder',\n}\n","export enum FragranceImportances {\n NOT_INTERESTED = 'Não tenho interesse',\n LIKE_ALWAYS_USE_SAME = 'Gosto de perfumes, mas uso sempre os mesmos',\n LIKE_INNOVATE = 'Gosto de inovar e conhecer novas fragrâncias',\n}\n","export enum HairColors {\n BLACK = 'Preto',\n DARK_BROWN = 'Castanho Escuro',\n LIGHT_BROWN = 'Castanho Claro',\n DARK_BLONDE = 'Loiro Escuro',\n LIGHT_BLONDE = 'Loiro Claro',\n WHITE_GRAY = 'Branco/Grisalho',\n REDHEAD = 'Ruivo',\n OTHER = 'RuiOutroo',\n}\n","export enum HairProblems {\n NO_PROBLEMS = 'Sem problemas',\n DANCRUFF = 'Caspa',\n LOSS = 'Queda',\n OILY = 'Oleosidade',\n DRYNESS = 'Ressecamento',\n CHEMICAL = 'Quimica',\n WHITE_HAIR = 'Cabelos Brancos',\n REBEL_WIRES = 'Fios Rebeldes',\n}\n","export enum HairStrands {\n NORMAL = 'Fio Normal',\n DRY = 'Fio Seco',\n OILY = 'Fio Oleoso',\n MIXED = 'Fio Misto',\n FINE = 'Fio Fino',\n THICK = 'Fio Grosso',\n}\n","export enum HairTypes {\n Smooth = 'Liso',\n WAVY = 'Ondulado',\n CURLY = 'Cacheado',\n FRIZZY = 'Crespo',\n BALD = 'Sou careca',\n}\n","export enum OfficePosition {\n Intern = 'Estagi\\u00E1rio',\n Analyst = 'Analista',\n Manager = 'Gerente',\n Director = 'Diretor',\n}\n","export enum ProductSpents {\n UNTIL_50 = 'Até R$50',\n SINCE_51_TO_100 = 'De R$51 a R$100',\n SINCE_101_TO_200 = 'De R$101 a R$200',\n SINCE_201_TO_300 = 'De R$201 a R$300',\n GRAN_THAN_300 = 'Mais de R$300',\n NOW_ANSWER = 'Prefiro nao responder',\n}\n","export enum UserType {\n B2C = 'Cliente Transacional',\n GlamGirl = 'Glamgirl',\n MensBoy = 'Mensboy',\n B2B = 'Company',\n Collaborator = 'Funcionário',\n Influencer = 'Influencer',\n}\n","export enum BillingStatus {\n PAYED = 'PAGO',\n}\n","export enum EditionStatus {\n ALLOCATION_WAITING = 'Aguardando alocação',\n SHIPPED = 'Enviado',\n}\n","export enum PaymentType {\n AQUISITION = 'Aquisição',\n RENEWAL = 'Renovação',\n FREIGHT = 'mudança de endereço, Frete',\n}\n","export enum Status {\n ACTIVE = 'active',\n CANCELLED = 'Cancelado',\n}\n","import { BaseModel } from '../../../general/model/base.model'\nimport { IdentifierFields } from '../../../general/model/identifier-fields'\nimport { NonFunctionPropertyNames } from '../../../general/model/types/non-function-property-name.type'\n\nimport { EditionStatus, BillingStatus } from './enums'\n\nexport class Edition extends BaseModel<Edition> implements IdentifierFields<Edition> {\n id: string\n subscriptionId: string\n billingStatus: BillingStatus\n editionId: number\n editionStatus: EditionStatus\n installment: number\n paymentId: string\n draftId?: string\n\n identifierFields(): NonFunctionPropertyNames<Edition>[] {\n return ['id']\n }\n}\n","import { Expose } from 'class-transformer'\n\nimport { BaseModel } from '../../general/model/base.model'\nimport { IdentifierFields } from '../../general/model/identifier-fields'\nimport { NonFunctionPropertyNames } from '../../general/model/types'\n\nimport { PaymentBilling, PaymentCard, PaymentCustomer, PaymentItem, PaymentShipping } from './types'\n\nexport class Payment extends BaseModel<Payment> implements IdentifierFields<Payment> {\n id: number\n object: string\n status: string\n tid: number\n nsu: number\n amount: number\n cost: number\n installments: number\n referer: string\n ip: string\n phone: string\n address: string\n metadata: any\n device: string\n payment: string\n addition: string\n discount: string\n customer: PaymentCustomer\n billing: PaymentBilling\n shipping: PaymentShipping\n items: PaymentItem[]\n card: PaymentCard\n\n @Expose({ name: 'refuse_reason' })\n refuseReason: string\n @Expose({ name: 'status_reason' })\n statusReason: string\n @Expose({ name: 'acquirer_response_code' })\n acquirerResponseCode: string\n @Expose({ name: 'acquirer_name' })\n acquirerName: string\n @Expose({ name: 'acquirer_id' })\n acquirerId: string\n @Expose({ name: 'authorization_code' })\n authorizationCode: string\n @Expose({ name: 'soft_descriptor' })\n softDescriptor: string\n @Expose({ name: 'date_created' })\n dateCreated: string\n @Expose({ name: 'date_updated' })\n dateUpdated: string\n @Expose({ name: 'authorized_amount' })\n authorizedAmount: number\n @Expose({ name: 'paid_amount' })\n paidAmount: number\n @Expose({ name: 'refunded_amount' })\n refundedAmount: number\n @Expose({ name: 'card_holder_name' })\n cardHolderName: string\n @Expose({ name: 'card_last_digits' })\n cardLastDigits: string\n @Expose({ name: 'card_first_digits' })\n cardFirstDigits: string\n @Expose({ name: 'card_brand' })\n cardBrand: string\n @Expose({ name: 'card_pin_mode' })\n cardPinMode: string\n @Expose({ name: 'card_magstripe_fallback' })\n cardMagstripeFallback: boolean\n @Expose({ name: 'cvm_pin' })\n cvmPin: boolean\n @Expose({ name: 'postback_url' })\n postbackUrl: string\n @Expose({ name: 'payment_method' })\n paymentMethod: string\n @Expose({ name: 'capture_method' })\n captureMethod: string\n @Expose({ name: 'antifraud_score' })\n antifraudScore: string\n @Expose({ name: 'boleto_url' })\n boletoUrl: string\n @Expose({ name: 'boleto_barcode' })\n boletoBarcode: string\n @Expose({ name: 'boleto_expiration_date' })\n boletoExpirationDate: string\n @Expose({ name: 'subscription_id' })\n subscriptionId: string\n @Expose({ name: 'split_rules' })\n splitRules: string\n @Expose({ name: 'antifraud_metadata' })\n antifraudMetadata: any\n @Expose({ name: 'reference_key' })\n referenceKey: string\n @Expose({ name: 'local_transaction_id' })\n localTransactionId: string\n @Expose({ name: 'local_time' })\n localTime: string\n @Expose({ name: 'fraud_covered' })\n fraudCovered: boolean\n @Expose({ name: 'fraud_reimbursed' })\n fraudReimbursed: string\n @Expose({ name: 'order_id' })\n orderId: string\n @Expose({ name: 'risk_level' })\n riskLevel: string\n @Expose({ name: 'receipt_url' })\n receiptUrl: string\n @Expose({ name: 'private_label' })\n privateLabel: string\n @Expose({ name: 'pix_qr_code' })\n pixQrCode: string\n @Expose({ name: 'pix_expiration_date' })\n pixExpirationDate: string\n\n identifierFields(): NonFunctionPropertyNames<Payment>[] {\n return ['id']\n }\n}\n","import { Type } from 'class-transformer'\n\nimport { BaseModel } from '../../../general/model/base.model'\nimport { IdentifierFields } from '../../../general/model/identifier-fields'\nimport { NonFunctionPropertyNames } from '../../../general/model/types'\nimport { Payment } from '../../../shopping/models/payment'\n\nimport { PaymentType } from './enums/payment-type.enum'\n\nexport class SubscriptionPayment\n extends BaseModel<SubscriptionPayment>\n implements IdentifierFields<SubscriptionPayment>\n{\n id: string\n subscriptionId: string\n paymentType: PaymentType\n createdAt: Date\n attempts?: number\n\n @Type(() => Payment)\n payment: Payment\n\n identifierFields(): NonFunctionPropertyNames<SubscriptionPayment>[] {\n return ['id']\n }\n}\n","import { BaseModel } from '../../general/model/base.model'\n\nimport { LocationGeometry } from './types/location-geometry.type'\n\nexport abstract class Address extends BaseModel<Address> {\n default?: boolean\n recipient?: string\n zip?: string\n street?: string\n number?: string\n extension?: string\n district?: string\n city?: string\n regionalPole?: string\n region?: string\n state?: string\n country?: string\n mailbox?: boolean\n mailboxNumber?: string\n formattedAddress?: string\n placeId?: string\n geometry?: LocationGeometry\n}\n","export enum CheckoutTypes {\n ECOMMERCE = 1,\n SUBSCRIPTION = 2,\n}\n","export class Base {\n constructor(...args: Array<any>) {\n Object.assign(this, ...args)\n }\n}\n","export enum CouponTypes {\n FINANCIAL = 1,\n PRODUCT,\n GIFTCARD,\n VOUCHER,\n}\n","export enum CouponSubtypes {\n ABSOLUTE = 1,\n PERCENTAGE,\n}\n","export enum Exclusivities {\n ALL_USERS = 1,\n SPECIFIC_USER = 2,\n COLLABORATORS = 3,\n}\n","import { Expose } from 'class-transformer'\n\nimport { BaseModel } from '../../../general/model/base.model'\nimport { CheckoutTypes } from '../enums/checkout-types.enum'\nimport { IdentifierFields } from '../../../general/model/identifier-fields'\nimport { isNil } from '../../../../utils'\nimport { NonFunctionPropertyNames } from '../../../general/model/types'\nimport { Shops } from '../../../catalog/models/enums/shops.enum'\n\nimport { CouponTypes, Exclusivities } from './enums'\n\nexport class Coupon extends BaseModel<Coupon> implements IdentifierFields<Coupon> {\n id: string\n type: CouponTypes\n discount?: number\n user?: string\n recipient?: string\n store?: Shops\n campaign?: string\n name: string\n nickname: string\n expiresIn?: Date\n useLimit?: number\n createdAt: Date\n updatedAt?: Date\n shopAvailability: Shops\n personId?: number\n influencerEmail?: string\n\n @Expose({ name: 'checkout_type' })\n checkoutType: CheckoutTypes\n @Expose({ name: 'exclusivity_type' })\n exclusivityType?: Exclusivities\n\n get isInfluencer(): boolean {\n return !isNil(this.influencerEmail)\n }\n\n identifierFields(): NonFunctionPropertyNames<Coupon>[] {\n return ['id']\n }\n}\n","import { BaseModel } from '../../../general/model/base.model'\nimport { IdentifierFields } from '../../../general/model/identifier-fields'\nimport { NonFunctionPropertyNames } from '../../../general/model/types'\n\nexport class SubscriptionPlan extends BaseModel<SubscriptionPlan> implements IdentifierFields<SubscriptionPlan> {\n id: string\n name: string\n billingPrice: number\n recurrencePrice: number\n recurrenceCycle: number\n maxAttempts: number\n\n identifierFields(): NonFunctionPropertyNames<SubscriptionPlan>[] {\n return ['id']\n }\n}\n","import { BaseModel } from '../../general/model/base.model'\nimport { IdentifierFields } from '../../general/model/identifier-fields'\nimport { NonFunctionPropertyNames } from '../../general/model/types/non-function-property-name.type'\n\nimport { BeardSizes, HairTypes } from './enums'\n\nexport class BeautyProfile extends BaseModel<BeautyProfile> implements IdentifierFields<BeautyProfile> {\n id: string\n userId: string\n beardSize?: BeardSizes\n hairType?: HairTypes\n\n toPlain(): any {\n const plain = super.toPlain()\n\n delete plain.id\n\n return plain\n }\n\n identifierFields(): NonFunctionPropertyNames<BeautyProfile>[] {\n return ['id']\n }\n}\n","import { Type } from 'class-transformer'\n\nimport { BaseModel } from '../../general/model/base.model'\nimport { IdentifierFields } from '../../general/model/identifier-fields'\nimport { isNil } from '../../../utils'\nimport { NonFunctionProperties, NonFunctionPropertyNames } from '../../general/model/types'\n\nimport { Area, OfficePosition, UserType } from './enums'\nimport { BeautyProfile } from './beauty-profile'\n\nexport class User extends BaseModel<User> implements IdentifierFields<User> {\n id: string\n cpf?: string\n email: string\n firstName: string\n lastName: string\n displayName?: string\n phone: string\n birthday?: Date\n acceptsNewsletter: boolean\n type?: UserType\n area?: Area\n officePosition?: OfficePosition\n isSubscriber?: boolean\n\n @Type(() => BeautyProfile)\n beautyProfile?: BeautyProfile\n\n static toInstance<T>(this: new () => Partial<T>, data: NonFunctionProperties<T> & NonFunctionProperties<User>): T {\n const instance = super.toInstance<User>(data)\n\n if (!isNil(data.firstName))\n instance.displayName = `${data.firstName}${!isNil(data.lastName) ? ` ${data.lastName}` : ''}`\n\n return instance as any\n }\n\n identifierFields(): NonFunctionPropertyNames<User>[] {\n return ['id']\n }\n\n toPlain(): any {\n const plain = super.toPlain()\n\n delete plain.beautyProfile\n\n return plain\n }\n}\n","import { Type } from 'class-transformer'\n\nimport { Address } from '../../../location/models/address'\nimport { BaseModel } from '../../../general/model/base.model'\nimport { Coupon } from '../../../shopping/models/coupons/coupon'\nimport { IdentifierFields } from '../../../general/model/identifier-fields'\nimport { NonFunctionPropertyNames } from '../../../general/model/types/non-function-property-name.type'\nimport { SubscriptionPlan } from '../../../shopping/models/subscription/plan'\nimport { User } from '../user'\n\nimport { Edition } from './edition'\nimport { Status } from './enums/status.enum'\nimport { SubscriptionPayment } from './payment'\n\nexport class Subscription extends BaseModel<Subscription> implements IdentifierFields<Subscription> {\n id: string\n nextPayment: Date\n recurrence: boolean\n status: Status\n cardToken: string\n subtotalPrice?: number\n discount?: number\n totalPrice?: number\n createdAt: Date\n updatedAt: Date\n\n @Type(() => User)\n user: User\n @Type(() => SubscriptionPlan)\n subscriptionPlan: SubscriptionPlan\n @Type(() => Address)\n shippingAddress: Address\n @Type(() => Address)\n billingAddress?: Address\n @Type(() => Coupon)\n coupon?: Coupon\n @Type(() => Edition)\n editions: Edition[]\n @Type(() => SubscriptionPayment)\n payment?: SubscriptionPayment[]\n\n identifierFields(): NonFunctionPropertyNames<Subscription>[] {\n return ['id']\n }\n}\n","import { Address } from '../../location/models/address'\nimport { NonFunctionPropertyNames } from '../../general/model/types/non-function-property-name.type'\n\nexport class UserAddress extends Address {\n id: string\n userId: string\n\n identifierFields(): NonFunctionPropertyNames<UserAddress>[] {\n return ['id']\n }\n}\n","import { BaseModel } from '../../general/model/base.model'\nimport { NonFunctionPropertyNames } from '../../general/model/types/non-function-property-name.type'\n\nexport class UserPaymentMethod extends BaseModel<UserPaymentMethod> {\n brand: string\n cpf: string\n holderName: string\n last4: string\n pagarmeToken: string\n validUntil: string\n userId: string\n id: string\n\n identifierFields(): NonFunctionPropertyNames<UserPaymentMethod>[] {\n return ['id']\n }\n}\n","import { BaseModel } from '../../general/model/base.model'\nimport { IdentifierFields } from '../../general/model/identifier-fields'\nimport { NonFunctionPropertyNames } from '../../general/model/types'\n\nexport class Lead extends BaseModel<Lead> implements IdentifierFields<Lead> {\n id: string\n acceptsNewsletter: boolean\n email: string\n\n identifierFields(): NonFunctionPropertyNames<Lead>[] {\n return ['id']\n }\n}\n","export class UnauthorizedError extends Error {\n constructor(readonly message) {\n super(message)\n }\n}\n","import { Area, OfficePosition, User, UserType } from '../models'\nimport { AuthenticationService } from '../services/authentication.service'\nimport { isNil } from '../../../utils'\nimport { UnauthorizedError } from '../errors/unauthorized.error'\nimport { UserRepository } from '../repositories/user.repository'\n\nexport enum SignInMethods {\n EMAIL_PASSWORD = 'email_password',\n GOOGLE = 'google',\n}\n\ntype SignInMethod = Lowercase<keyof typeof SignInMethods>\n\ntype SignInParams = {\n email?: string\n password?: string\n}\n\nexport class Authentication {\n constructor(private readonly authService: AuthenticationService, private readonly userRepository: UserRepository) {}\n\n async signIn({ email, password }: SignInParams, signInMethod: SignInMethod): Promise<User> {\n const method = this.getServiceByMethod(signInMethod)\n const userAuth = await this.authService[method]({ email, password })\n const user = this.userRepository.get(userAuth)\n\n if (!isNil(user)) return user\n if (/^.+@b4a.com.br$/.test(userAuth.email)) return this.createsUserByCredential(userAuth)\n\n throw new UnauthorizedError('Invalid credentials')\n }\n\n private getServiceByMethod(signInMethod: SignInMethod): string {\n return signInMethod === SignInMethods.EMAIL_PASSWORD ? 'signInWithEmailAndPassword' : 'signInWithGoogle'\n }\n\n private async createsUserByCredential(user: Partial<User>): Promise<User> {\n const [firstName, lastName] = user.displayName?.split(/\\s/)\n const person = User.toInstance({\n ...user,\n cpf: '',\n birthday: new Date(),\n firstName,\n lastName,\n acceptsNewsletter: false,\n area: Area.Transactional,\n officePosition: OfficePosition.Intern,\n type: UserType.Collaborator,\n })\n\n return this.userRepository.create(person)\n }\n}\n","export class UserAlreadyRegisteredError extends Error {\n constructor(readonly message) {\n super(message)\n }\n}\n","export class WeakPasswordError extends Error {\n constructor(readonly message = 'Weak password') {\n super(message)\n }\n}\n","import { User, UserType } from '../models'\nimport { RegisterService } from '../services/register.service'\nimport { UserAlreadyRegisteredError } from '../errors'\nimport { UserRepository } from '../repositories/user.repository'\n\ntype RegisterParams = Partial<User> & { password: string }\n\nexport class Register {\n constructor(private readonly registerService: RegisterService, private readonly userRepository: UserRepository) {}\n\n async register(params: RegisterParams): Promise<User> {\n const email = params.email.toLocaleLowerCase()\n const displayName = `${params.firstName} ${params.lastName}`\n\n if (await this.userRepository.checkIfExistsByField('cpf', params.cpf))\n throw new UserAlreadyRegisteredError(`Usuário com CPF ${params.cpf} já registrado.`)\n if (await this.userRepository.checkIfExistsByField('email', params.email))\n throw new UserAlreadyRegisteredError(`Usuário com e-mail ${params.email} já registrado.`)\n\n const auth = await this.registerService.register({\n birthday: params.birthday,\n email,\n firstName: params.firstName,\n lastName: params.lastName,\n cpf: params.cpf,\n displayName,\n phone: params.phone,\n password: params.password,\n })\n\n delete params.password\n\n const user = await this.userRepository.create({\n ...params,\n id: auth.id,\n email,\n displayName,\n type: UserType.B2C,\n dateCreated: new Date(),\n dateModified: new Date(),\n })\n\n return user\n }\n}\n","import { AuthenticationService } from '../services/authentication.service'\n\nexport class SignOut {\n constructor(private readonly authService: AuthenticationService) {}\n\n async signOut(): Promise<void> {\n await this.authService.signOut()\n }\n}\n","import { AuthenticationService } from '../services/authentication.service'\n\nexport class RecoveryPassword {\n constructor(private readonly authService: AuthenticationService) {}\n\n async sendEmail(email: string): Promise<void> {\n await this.authService.sendPasswordResetEmail(email)\n }\n}\n","export enum Shops {\n MENSMARKET = `mensmarket`,\n GLAMSHOP = 'Glamshop',\n GLAMPOINTS = 'Glampoints'\n}\n","import { BaseModel, IdentifierFields, NonFunctionPropertyNames } from '../../general/model'\nimport { Shops } from './enums'\n\nimport { CategoryCondition, CategoryFilter } from './types'\n\nexport class Category extends BaseModel<Category> implements IdentifierFields<Category> {\n id: string\n brandCategory: boolean\n brandLogo?: string\n name: string\n slug: string\n image?: string\n brandCategoryBanner?: string\n brandCategoryBannerMobile?: string\n description: string\n conditions?: CategoryCondition\n products?: string[]\n filters?: CategoryFilter[]\n createdAt: Date\n updatedAt: Date\n shop: Shops\n published: boolean\n\n identifierFields(): NonFunctionPropertyNames<Category>[] {\n return ['id']\n }\n}\n","import { BaseModel, IdentifierFields, NonFunctionPropertyNames } from '../../general/model'\n\nimport { Shops } from './enums/shops.enum'\nimport { ProductReview, ShopDescription, ShopPrice, ShopsDescription, ShopsPrice, Stock } from './types'\nimport { Variant } from './variant'\n\nexport class Product extends BaseModel<Product> implements IdentifierFields<Product> {\n id: string\n name: string\n slug: string\n shopAvailability: Shops[]\n description: ShopsDescription\n sku: string\n price: ShopsPrice\n hasVariants: boolean\n NCM: string\n EAN: string\n CEST: string\n weight: number\n stock: Stock\n costPrice: number\n images?: string[]\n miniatures?: string[]\n published: boolean\n publishedGlam: boolean\n createdAt: Date\n updatedAt: Date\n brand: string\n tags?: string[]\n type?: string\n categories?: string[]\n reviews?: ProductReview[]\n variant?: Variant\n video?: string\n\n identifierFields(): NonFunctionPropertyNames<Product>[] {\n return ['id']\n }\n\n getInfoByShop(shop: Shops): ShopDescription & ShopPrice & Stock {\n return {\n ...(this.description?.[shop]?.description ? { description: this.description?.[shop]?.description } : {}),\n ...(this.price?.[shop] || {}),\n ...(this.stock?.[shop] || {}),\n }\n }\n}\n","import { BaseModel, IdentifierFields, NonFunctionPropertyNames } from '../../general/model'\n\nimport { ShopsPrice, Stock, VariantGrade } from './types'\n\nexport class Variant extends BaseModel<Variant> implements IdentifierFields<Variant> {\n id: string\n productId: string\n sku: string\n price: ShopsPrice\n EAN: string\n stock: Stock\n grade: VariantGrade[]\n costPrice: number\n weight: number\n\n identifierFields(): NonFunctionPropertyNames<Variant>[] {\n return ['id']\n }\n}\n","import { Md5 } from 'ts-md5'\n\nimport { CheckoutTypes } from '../enums/checkout-types.enum'\n\nimport { Coupon } from './coupon'\nimport { CouponTypes, CouponSubtypes } from './enums'\n\nconst COUPON_EXPIRATION = 60 * 60 * 24 * 30\n\nexport class FinancialCoupon extends Coupon {\n type = CouponTypes.FINANCIAL\n subtype: CouponSubtypes\n plan?: string\n\n static isFinancialCoupon(coupon: Partial<FinancialCoupon>): coupon is FinancialCoupon {\n return coupon.type === CouponTypes.FINANCIAL && !!coupon.subtype\n }\n\n static createCoupon(userId: string): FinancialCoupon {\n return this.toInstance({\n name: Md5.hashStr(`${userId}_${Date.now}`).toString(),\n nickname: `${Date.now()}`,\n type: CouponTypes.FINANCIAL,\n subtype: CouponSubtypes.PERCENTAGE,\n checkoutType: CheckoutTypes.ECOMMERCE,\n discount: 30,\n user: userId,\n createdAt: new Date(Date.now()),\n expiresIn: new Date(Date.now() + COUPON_EXPIRATION),\n })\n }\n}\n","export enum OrderStatus {\n AGUARDANDO_PAGAMENTO = 'Aguardando pagamento',\n EM_PREPARO = 'Preparando pedido',\n NF_EMITIDA = 'Nota Fiscal Emitida',\n AGUARDANDO_ENVIO = 'Aguardando Transaportadora',\n ENVIADO = 'Pedido Enviado',\n ENTREGUE = 'Pedido entregue',\n CANCELADO = 'Cancelado',\n CREDIT_CARD = 'credit_card',\n}\n","import { Product } from '../../catalog/models/product'\n\nexport class LineItem extends Product {\n parentId?: string\n quantity: number\n isGift?: boolean\n pricePaid?: number\n image?: string\n}\n","import { BaseModel } from '../../general/model/base.model'\nimport { IdentifierFields } from '../../general/model/identifier-fields'\nimport { NonFunctionPropertyNames } from '../../general/model/types'\n\nexport class ShippingMethod extends BaseModel<ShippingMethod> implements IdentifierFields<ShippingMethod> {\n id: string\n CNPJ: string\n DaysToDelivery: number\n MaxGrams: number\n MinGrams: number\n ServiceCompanyRangeId: number\n ShippingCompanyId: number\n ShippingCompanyName: string\n ShippingPrice: number\n State: string\n ZipEnd: number\n ZipStart: number\n\n identifierFields(): NonFunctionPropertyNames<ShippingMethod>[] {\n return ['id']\n }\n}\n","import { Type } from 'class-transformer'\n\nimport { Address } from '../../location/models/address'\nimport { BaseModel } from '../../general/model/base.model'\nimport { IdentifierFields } from '../../general/model/identifier-fields'\nimport { NonFunctionPropertyNames } from '../../general/model/types'\nimport { User } from '../../users/models/user'\n\nimport { Coupon } from './coupons/coupon'\nimport { LineItem } from './line-item'\nimport { ShippingMethod } from './shipping-method'\nimport { Shops } from '../../catalog/models/enums/shops.enum'\n\nexport class Checkout extends BaseModel<Checkout> implements IdentifierFields<Checkout> {\n id?: string\n paymentId?: string\n status?: string\n createdAt?: Date\n updatedAt?: Date\n completedAt?: Date\n discount?: number\n subTotalPrice?: number\n totalPrice?: number\n shop: Shops\n glampoints?: number\n\n @Type(() => LineItem)\n lineItems?: LineItem[]\n @Type(() => User)\n user?: User\n @Type(() => Address)\n shippingAddress?: Address\n @Type(() => Address)\n billingAddress?: Address\n @Type(() => ShippingMethod)\n shipping?: ShippingMethod\n @Type(() => Coupon)\n coupon?: Coupon\n\n identifierFields(): NonFunctionPropertyNames<Checkout>[] {\n return ['id']\n }\n}\n","import { Type } from 'class-transformer'\n\nimport { Checkout } from './checkout'\nimport { OrderStatus } from './enums/order-status.enum'\nimport { Payment } from './payment'\n\nexport class Order extends Checkout {\n status: OrderStatus\n trackingCode?: string\n trackingUrl?: string\n\n @Type(() => Payment)\n payment: Payment\n}\n","import { Type } from 'class-transformer'\n\nimport { Address } from '../../../location/models/address'\nimport { BaseModel } from '../../../general/model/base.model'\nimport { Coupon } from '../coupons/coupon'\nimport { IdentifierFields } from '../../../general/model/identifier-fields'\nimport { NonFunctionPropertyNames } from '../../../general/model/types'\nimport { User } from '../../../users/models/user'\n\nimport { SubscriptionPlan } from './plan'\n\nexport class CheckoutSubscription\n extends BaseModel<CheckoutSubscription>\n implements IdentifierFields<CheckoutSubscription>\n{\n id?: string\n user: User\n createdAt: Date\n updatedAt: Date\n completedAt?: Date\n userId?: string\n discount?: number\n subTotalPrice?: number\n totalPrice?: number\n\n @Type(() => Address)\n shippingAddress: Address\n @Type(() => Address)\n billingAddress?: Address\n @Type(() => SubscriptionPlan)\n subscriptionPlan: SubscriptionPlan\n @Type(() => Coupon)\n coupon?: Coupon\n\n identifierFields(): NonFunctionPropertyNames<CheckoutSubscription>[] {\n return ['id']\n }\n}\n","import { Type } from 'class-transformer'\n\nimport { BaseModel } from '../../general/model/base.model'\nimport { IdentifierFields } from '../../general/model/identifier-fields'\nimport { NonFunctionPropertyNames } from '../../general/model/types'\nimport { Shops, Category } from '../../catalog/models'\n\nexport class Buy2Win extends BaseModel<Buy2Win> implements IdentifierFields<Buy2Win> {\n active: boolean\n cartValue: number\n createdAt: Date\n endDate: Date\n id?: string\n name: string\n products?: string[]\n shop: Shops\n startDate: Date\n updatedAt?: Date\n\n @Type(() => Category)\n categories: Category[]\n\n identifierFields(): NonFunctionPropertyNames<Buy2Win>[] {\n return ['id']\n }\n}\n","export enum FilterType {\n ACCESSORY_IMPORTANCE = 'accessoryImportance',\n BEARD_PROBLEMS = 'beardProblems',\n BEARD_SIZE = 'beardSize',\n BEAUTY_PRODUCT_IMPORTANCE = 'beautyProductImportance',\n BODY_PROBLEMS = 'bodyProblems',\n BODY_SHAPE = 'bodyShape',\n BODY_TATTOOS = 'bodyTattoos',\n FACE_SKIN_OILINESS = 'faceSkinOiliness',\n FACE_SKIN_PROBLEMS = 'faceSkinProblems',\n FACE_SKIN_TONE = 'faceSkinTone',\n FAMILY_INCOME = 'familyIncome',\n FRAGRANCE_IMPORTANCE = 'fragranceImportance',\n HAIR_COLOR = 'hairColor',\n HAIR_PROBLEMS = 'hairProblems',\n HAIR_STRANDS = 'hairStrands',\n HAIR_TYPE = 'hairType',\n PRODUCT_SPENT = 'productSpent',\n}\n","export enum QuestionsFilters {\n ACCESSORY_IMPORTANCE = 'Você gosta de usar acessórios masculinos?',\n BEARD_PROBLEMS = 'Quais problemas de barba você tem?',\n BEARD_SIZE = 'Quais caracteristicas se aplicam à sua BARBA/BIGODE?',\n BEAUTY_PRODUCT_IMPORTANCE = 'O que descreve melhor a sua relação com produtos de beleza e cuidados pessoais?',\n BODY_PROBLEMS = 'Qual ou quais preocupações você tem com a pele do seu corpo?',\n BODY_SHAPE = 'Qual e seu tipo de CORPO?',\n BODY_TATTOOS = 'Você tem alguma tatuagem?',\n FACE_SKIN_OILINESS = 'Quais caracteristicas se aplicam à pele do seu ROSTO?',\n FACE_SKIN_PROBLEMS = 'Quais problemas a pele do seu rosto tem?',\n FACE_SKIN_TONE = 'Qual seu tom de pele?',\n FAMILY_INCOME = 'Qual a sua renda familiar mensal (considerando a renda de todas as pessoas que moram com você)?',\n FRAGRANCE_IMPORTANCE = 'O quanto você gosta de experimentar perfumes?',\n HAIR_COLOR = 'Seu cabelo é naturalmente de qual COR?',\n HAIR_PROBLEMS = 'Qual ou quais problemas/característica de cabelo te preocupam?',\n HAIR_STRANDS = 'Como são seus fios?',\n HAIR_TYPE = 'Como é o seu cabelo?',\n PRODUCT_SPENT = 'Qual é o seu nivel de gasto mensal em produtos de beleza e cuidados pessoais?',\n}\n","import * as Answers from '../../users/models/enums'\nimport { FilterType, QuestionsFilters } from '../enums'\n\ntype FilterAnswers = {\n [key: string]: string\n}\n\nexport class BeautyQuestionsHelper {\n static getAnswers(filter: FilterType): FilterAnswers {\n switch (filter) {\n case FilterType.ACCESSORY_IMPORTANCE:\n return Answers.AccessoryImportances\n case FilterType.BEARD_PROBLEMS:\n return Answers.BeardProblems\n case FilterType.BEARD_SIZE:\n return Answers.BeardSizes\n case FilterType.BEAUTY_PRODUCT_IMPORTANCE:\n return Answers.BeautyProductImportances\n case FilterType.BODY_PROBLEMS:\n return Answers.BodyProblems\n case FilterType.BODY_SHAPE:\n return Answers.BodyShapes\n case FilterType.BODY_TATTOOS:\n return Answers.BodyTattoos\n case FilterType.FACE_SKIN_OILINESS:\n return Answers.FaceSkinOilinesses\n case FilterType.FACE_SKIN_PROBLEMS:\n return Answers.FaceSkinProblems\n case FilterType.FACE_SKIN_TONE:\n return Answers.FaceSkinTones\n case FilterType.FAMILY_INCOME:\n return Answers.FamilyIncomes\n case FilterType.FRAGRANCE_IMPORTANCE:\n return Answers.FragranceImportances\n case FilterType.HAIR_COLOR:\n return Answers.HairColors\n case FilterType.HAIR_PROBLEMS:\n return Answers.HairProblems\n case FilterType.HAIR_STRANDS:\n return Answers.HairStrands\n case FilterType.HAIR_TYPE:\n return Answers.HairTypes\n case FilterType.PRODUCT_SPENT:\n return Answers.ProductSpents\n }\n }\n\n static getQuestions(filter: FilterType): string {\n return QuestionsFilters[filter]\n }\n}\n","import { BaseModel, IdentifierFields, NonFunctionPropertyNames } from '../../general/model'\nimport { Banner, Benefit, HomeDataStructure } from './types'\n\nexport class Home extends BaseModel<Home> implements IdentifierFields<Home> {\n benefitsSection: Benefit[]\n blockBanners: Banner[]\n blogBanner: Banner\n brandsCarousel: Banner[]\n buyToWinBanner: Banner\n discoverCategories: string[]\n featuredCampaignBanner: Banner\n featuredCategories: string[]\n heroCarousel: Banner[]\n verticalCarousels: string[]\n id: string\n data: HomeDataStructure\n\n identifierFields(): NonFunctionPropertyNames<Home>[] {\n return ['id']\n }\n}\n","import { BaseModel, IdentifierFields, NonFunctionPropertyNames } from '../../general/model'\nimport { MenuNav } from './types/menu-nav.type'\n\nexport class ShopMenu extends BaseModel<ShopMenu> implements IdentifierFields<ShopMenu> {\n menuNav: MenuNav[]\n id: string\n\n identifierFields(): NonFunctionPropertyNames<ShopMenu>[] {\n return ['id']\n }\n}\n","export class InvalidArgumentError extends Error {\n constructor(readonly message) {\n super(message)\n }\n}\n","export class RequiredArgumentError extends Error {\n arguments: string[]\n\n constructor(readonly args: string[]) {\n super(`Required arguments: ${args.join(', ')}`)\n\n this.arguments = args\n }\n}\n","export class NotFoundError extends Error {\n constructor(readonly message) {\n super(message)\n }\n}\n","export class DuplicatedResultsError extends Error {\n constructor(readonly message) {\n super(message)\n }\n}\n","import axios from 'axios'\n\nimport { BaseModel } from '../../../domain'\nimport { ElasticSearchResult } from '../types/elastic-search-result'\n\nexport type AxiosElasticSearchConfig = {\n url: string\n credential: string\n}\n\nexport class AxiosAdapter<T extends BaseModel<T>> {\n constructor(private readonly config: AxiosElasticSearchConfig) {}\n\n async query(index: string, query: any): Promise<ElasticSearchResult<Partial<T>>> {\n const { data } = await axios({\n url: `${this.config.url}/${index}`,\n method: 'POST',\n headers: { Authorization: `Basic ${this.config.credential}` },\n data: query,\n })\n\n return {\n total: data.hits.total.value,\n hits: data.hits.hits,\n }\n }\n}\n","import { AxiosAdapter } from '../adapters'\nimport { Product, Shops } from '../../../domain'\n\nexport class ProductsIndex {\n constructor(private readonly adapter: AxiosAdapter<Product>) {}\n\n async findById(ids: string[], options?: { hasStock: boolean; size: number; shop: Shops }): Promise<Product[]> {\n const publishedField = options.shop === Shops.GLAMSHOP ? 'publishedGlam' : 'published'\n const fields = [\n 'brand',\n 'id',\n 'images',\n 'miniatures',\n 'name',\n 'price',\n 'sku',\n 'stock',\n 'slug',\n 'reviews',\n 'pricePaid',\n 'isGift',\n 'stock',\n 'weight',\n 'tags',\n ]\n const { hits } = await this.adapter.query('products/_search', {\n _source: fields,\n query: {\n bool: {\n filter: [\n {\n terms: {\n _id: ids,\n },\n },\n {\n term: {\n [publishedField]: true,\n },\n },\n ...(options.hasStock\n ? [\n {\n range: {\n 'stock.quantity': {\n gt: 0,\n },\n },\n },\n ]\n : []),\n ],\n },\n },\n ...(options.size ? { size: options.size } : {}),\n })\n\n return hits.map((hit) => Product.toInstance(hit._source))\n }\n}\n","import { CollectionReference, DocumentData, FirebaseFirestore, QueryDocumentSnapshot } from '@firebase/firestore-types'\nimport firebase from 'firebase'\n\nimport { BaseModelBuilder, BaseModelWithIdentifier } from '../../../../domain'\nimport { FirestoreRepository } from '../types'\nimport { MixinCtor } from '../../../../utils'\n\nexport const withFirestore = <TBase extends BaseModelWithIdentifier<TBase>>(MixinBase: MixinCtor) => {\n return class extends MixinBase implements FirestoreRepository<TBase> {\n readonly firestore?: FirebaseFirestore\n collectionName: string\n model: BaseModelBuilder<TBase>\n\n constructor(...args: Array<any>) {\n super(args)\n }\n\n collection(path?: string): CollectionReference<TBase> {\n return this.firestore.collection(path || this.collectionName).withConverter(this.buildModelInstance())\n }\n\n buildModelInstance(): {\n toFirestore: (data: TBase) => DocumentData\n fromFirestore: (snap: QueryDocumentSnapshot<TBase>) => TBase\n } {\n return {\n toFirestore: (data: TBase): DocumentData => (data?.toPlain ? data.toPlain() : data),\n fromFirestore: (snap: QueryDocumentSnapshot<TBase>): TBase => {\n const data = snap.data()\n\n Object.keys(data).forEach((key) => {\n if (data[key] instanceof firebase.firestore.Timestamp) {\n data[key] = data[key].toDate()\n }\n })\n\n return this.model.toInstance({ ...data, id: snap.id })\n },\n }\n }\n }\n}\n","import { QuerySnapshot, QueryDocumentSnapshot } from '@firebase/firestore-types'\n\nimport { BaseModelWithIdentifier } from '../../../../domain'\n\nimport { FirestoreHelpers, FirestoreRepository, FirestoreSubRepository } from '../types'\nimport { isNil, MixinCtor } from '../../../../utils'\n\nexport const withHelpers = <Model extends BaseModelWithIdentifier<Model>, TMixinBase extends MixinCtor>(\n MixinBase: MixinCtor & TMixinBase,\n) => {\n return class extends MixinBase implements FirestoreHelpers {\n toArray<T extends BaseModelWithIdentifier<T>>(snapShot: QuerySnapshot<T> | QueryDocumentSnapshot<T>[]): T[] {\n if (Array.isArray(snapShot)) {\n return snapShot.map((doc: QueryDocumentSnapshot<T>) => doc.data())\n } else {\n return snapShot.docs.map((doc: QueryDocumentSnapshot<T>) => doc.data())\n }\n }\n\n isSubCollection<T extends BaseModelWithIdentifier<T>>(\n repository: FirestoreRepository<T>,\n ): repository is FirestoreSubRepository<T> {\n return !isNil(Object.keys(this).find((key) => key === 'parentRepository'))\n }\n }\n}\n","import { BaseModelWithIdentifier, GetRepository, NonFunctionProperties } from '../../../../domain'\nimport { FirestoreHelpers, FirestoreRepository } from '../types'\nimport { isNil, MixinCtor } from '../../../../utils'\nimport { NotFoundError } from '../../../../errors'\n\nexport const withGetFirestore = <TBase extends BaseModelWithIdentifier<TBase>, TMixinBase extends MixinCtor>(\n MixinBase: MixinCtor<FirestoreRepository<TBase> & FirestoreHelpers> & TMixinBase,\n) => {\n return class GetFirestore extends MixinBase implements GetRepository<TBase> {\n async get(identifiers: NonFunctionProperties<TBase>): Promise<TBase> {\n const doc = await this.collection(this.buildCollectionPathForGet(identifiers))\n .doc(Object.values(identifiers).shift().toString())\n .get()\n const data = doc.data()\n\n if (isNil(data)) throw new NotFoundError(`Document ${JSON.stringify(identifiers)} not found`)\n\n return data\n }\n\n buildCollectionPathForGet(identifiers: NonFunctionProperties<TBase>): string {\n return this.isSubCollection(this)\n ? `${this.parentRepository.collectionName}/${identifiers[this.parentIdField]}/${this.collectionName}`\n : this.collectionName\n }\n }\n}\n","import { CollectionReference, Query } from '@firebase/firestore-types'\n\nimport {\n BaseModelWithIdentifier,\n FindRepository,\n NonFunctionPropertyNames,\n RepositoryFindField,\n RepositoryFindFielters,\n RepositoryFindFieltersOptions,\n RepositoryFindResult,\n RepositoryLimitOptions,\n RepositoryOrderByList,\n Where,\n} from '../../../../domain'\nimport { FirestoreHelpers, FirestoreRepository } from '../types'\nimport { isDate, isNil, isNumber, isObject, isString, MixinCtor, set } from '../../../../utils'\n\nexport const withFindFirestore = <TBase extends BaseModelWithIdentifier<TBase>, TMixinBase extends MixinCtor>(\n MixinBase: MixinCtor<FirestoreRepository<TBase> & FirestoreHelpers> & TMixinBase,\n) => {\n const checkIfIsFilterOption = (filter: any): filter is RepositoryFindFieltersOptions<TBase, any> =>\n !isNil(filter?.operator)\n const getValueFromFilter = (filter: RepositoryFindField<TBase, any>): any => {\n return checkIfIsFilterOption(filter) ? filter.value : filter\n }\n const getFinalValueFrom = (value: any) =>\n isNumber(value) || isString(value) || isDate(value) || Array.isArray(value)\n ? value\n : Object.values(getFinalValueFrom)\n\n return class FindFirestore extends MixinBase implements FindRepository<TBase> {\n async find(\n filters?: RepositoryFindFielters<TBase>[],\n limits?: RepositoryLimitOptions<TBase>,\n orderBy?: RepositoryOrderByList<TBase>,\n ): Promise<RepositoryFindResult<TBase>> {\n let query: CollectionReference<TBase> | Query<TBase> = this.collection(this.buildCollectionPathForFind(filters))\n\n filters?.forEach((filterer) => (query = this.makeFirestoreWhere(query, filterer)))\n\n orderBy?.forEach((orderer) =>\n Object.keys(orderer).forEach((fieldName) => (query = query.orderBy(fieldName, orderer[fieldName]))),\n )\n\n query = await this.defineLimits(query, filters, limits)\n\n const docs = await query.get()\n const data = docs.docs.map((doc) => doc.data())\n\n return {\n data,\n count: this.calculateCount(data, limits),\n }\n }\n\n buildCollectionPathForFind(filters: RepositoryFindFielters<TBase>[]): string {\n if (!this.isSubCollection<TBase>(this)) return this.collectionName\n\n const parentIdField = this.parentIdField\n const parentId = getValueFromFilter(\n filters.find((groupFilter) => Boolean(getValueFromFilter(groupFilter[parentIdField])))?.[parentIdField],\n )\n\n return `${this.parentRepository.collectionName}/${parentId}/${this.collectionName}`\n }\n\n makeFirestoreWhere = (\n queryReference: CollectionReference<TBase> | Query<TBase>,\n filter: RepositoryFindFielters<TBase>,\n ): Query<TBase> =>\n Object.keys(filter).reduce(\n (query: Query<TBase>, fieldName: string) => this.buildWhereSentence(query, fieldName, filter[fieldName]),\n queryReference,\n )\n\n buildWhereSentence = (\n queryReference: CollectionReference<TBase> | Query<TBase>,\n fieldName: NonFunctionPropertyNames<TBase> | string,\n options: RepositoryFindFieltersOptions<TBase, NonFunctionPropertyNames<TBase>>,\n ): Query<TBase> => {\n if (this.isSubCollection<TBase>(this) && fieldName === this.parentIdField) return queryReference\n\n const value = options?.value || options\n const object = {}\n\n set(object, fieldName, value)\n\n const plainInstance = new this.model(object).toPlain()\n const firestoreFieldName =\n fieldName.toString().indexOf('.') > -1\n ? fieldName.toString()\n : Object.keys(plainInstance).find((key) => plainInstance[key])\n\n if (options?.operator === Where.LIKE) {\n if (Array.isArray(options?.value))\n return queryReference.where(firestoreFieldName, 'array-contains-any', options.value)\n\n queryReference = queryReference.where(firestoreFieldName, '>=', options.value)\n queryReference = queryReference.where(firestoreFieldName, '<=', `${options.value}~`)\n\n return queryReference\n }\n if (options?.operator === Where.IN && Array.isArray(options?.value))\n return queryReference.where(firestoreFieldName, 'array-contains', options.value)\n if (isObject(options) && isNil(options?.operator) && isNil(options?.value)) {\n return Object.keys(options).reduce(\n (queryReferenceWithWhere, key) =>\n this.buildWhereSentence(queryReferenceWithWhere, `${fieldName}.${key}`, options[key]),\n queryReference,\n )\n }\n\n return queryReference.where(firestoreFieldName, options?.operator || '==', options?.value || options)\n }\n\n async defineLimits(\n query: CollectionReference<TBase> | Query<TBase>,\n filters: RepositoryFindFielters<TBase>[],\n limits: RepositoryLimitOptions<TBase>,\n ): Promise<Query<TBase>> {\n if (limits?.offset) {\n if (limits.offset instanceof this.model)\n query = query.startAfter(\n await this.collection(this.buildCollectionPathForFind(filters))\n .doc(limits.offset[limits.offset.identifierFields().shift() as string])\n .get(),\n )\n else if (isNumber(limits.offset) || isString(limits.offset)) query = query.startAt(limits.offset)\n }\n if (limits?.limit) query = query.limit(limits.limit)\n\n return query\n }\n\n calculateCount(data: TBase[], limits: RepositoryLimitOptions<TBase>): number {\n if (data.length <= 0) return 0\n if (data.length < limits?.limit) return data.length\n\n return Infinity\n }\n }\n}\n","import { DocumentReference } from '@firebase/firestore-types'\n\nimport { CreateRepository, BaseModelWithIdentifier } from '../../../../domain'\nimport { FirestoreHelpers, FirestoreRepository } from '../types'\nimport { isEmpty, MixinCtor } from '../../../../utils'\n\nexport const withCreateFirestore = <TBase extends BaseModelWithIdentifier<TBase>, TMixinBase extends MixinCtor>(\n MixinBase: MixinCtor<FirestoreRepository<TBase> & FirestoreHelpers> & TMixinBase,\n) => {\n return class CreateFirestore extends MixinBase implements CreateRepository<TBase> {\n async create(data: Partial<TBase>): Promise<TBase> {\n const docRef = await this.save(this.model.toInstance(data))\n const doc = await docRef.get()\n\n return doc.data()\n }\n\n async save(data: TBase): Promise<DocumentReference<TBase>> {\n const id = data[data.identifierFields().shift()]?.toString()\n const collectionPath = this.buildCollectionPathForAdd(data)\n\n if (isEmpty(id)) return this.collection(collectionPath).add(data)\n\n const docRef = this.collection(collectionPath).doc(id)\n await docRef.set(data)\n\n return docRef\n }\n\n buildCollectionPathForAdd(identifiers: Partial<TBase>): string {\n return this.isSubCollection(this)\n ? `${this.parentRepository.collectionName}/${identifiers[this.parentIdField]}/${this.collectionName}`\n : this.collectionName\n }\n }\n}\n","import firebase from 'firebase'\n\nimport {\n BaseModelWithIdentifier,\n NonFunctionPropertyNames,\n RepositoryUpdateParams,\n UpdateOptionActions,\n UpdateOptions,\n UpdateRepository,\n} from '../../../../domain'\nimport { FirestoreHelpers, FirestoreRepository } from '../types'\nimport { isNil, MixinCtor, PropType } from '../../../../utils'\n\nexport const withUpdateFirestore = <TBase extends BaseModelWithIdentifier<TBase>, TMixinBase extends MixinCtor>(\n MixinBase: MixinCtor<FirestoreRepository<TBase> & FirestoreHelpers> & TMixinBase,\n) => {\n const getValueFromParams = (\n params: RepositoryUpdateParams<TBase>,\n field: NonFunctionPropertyNames<TBase>,\n ): PropType<TBase, NonFunctionPropertyNames<TBase>> =>\n (isNil(params[field as string]?.value) ? params[field as string] : params[field as string].value) || null\n const getValueByAction = (options: UpdateOptions<TBase>): firebase.firestore.FieldValue | unknown => {\n const fieldValues = firebase.firestore.FieldValue\n\n if (isNil(options.action)) return options\n if (options.action === UpdateOptionActions.REMOVE_FIELD) return fieldValues.delete()\n if (Array.isArray(options.value)) {\n if (options.action === UpdateOptionActions.MERGE) return fieldValues.arrayUnion(...options.value)\n if (options.action === UpdateOptionActions.REMOVE) return fieldValues.arrayRemove(...options.value)\n }\n\n return options.value\n }\n\n return class UpdateFirestore extends MixinBase implements UpdateRepository<TBase> {\n async update(data: RepositoryUpdateParams<TBase>): Promise<TBase> {\n const model = new this.model()\n const keyField = model.identifierFields().shift()\n const docRef = this.collection(this.buildCollectionPathForUpdate(data)).doc(\n getValueFromParams(data, keyField).toString(),\n )\n\n await docRef.set(this.paramsToPlain(data), { merge: true })\n\n const doc = await docRef.get()\n\n return doc.data()\n }\n\n buildCollectionPathForUpdate(identifiers: RepositoryUpdateParams<TBase>): string {\n return this.isSubCollection(this)\n ? `${this.parentRepository.collectionName}/${getValueFromParams(identifiers, this.parentIdField)}/${\n this.collectionName\n }`\n : this.collectionName\n }\n\n paramsToPlain(params: RepositoryUpdateParams<TBase>): Partial<TBase> {\n const model = this.model\n\n if (params instanceof model) return params\n\n return Object.keys(params).reduce(\n (data, currentKey) => ({ ...data, [currentKey]: getValueByAction(params[currentKey]) }),\n {},\n )\n }\n }\n}\n","import { BaseModelWithIdentifier, NonFunctionProperties, DeleteRepository } from '../../../../domain'\nimport { FirestoreHelpers, FirestoreRepository } from '../types'\nimport { MixinCtor } from '../../../../utils'\n\nexport const withDeleteFirestore = <TBase extends BaseModelWithIdentifier<TBase>, TMixinBase extends MixinCtor>(\n MixinBase: MixinCtor<FirestoreRepository<TBase> & FirestoreHelpers> & TMixinBase,\n) => {\n return class DeleteFirestore extends MixinBase implements DeleteRepository<TBase> {\n async delete(identifiers: NonFunctionProperties<TBase>): Promise<void> {\n await this.collection(this.buildCollectionPathForRemove(identifiers))\n .doc(Object.values(identifiers).shift().toString())\n .delete()\n }\n\n buildCollectionPathForRemove(identifiers: NonFunctionProperties<TBase>): string {\n return this.isSubCollection(this)\n ? `${this.parentRepository.collectionName}/${identifiers[this.parentIdField]}/${this.collectionName}`\n : this.collectionName\n }\n }\n}\n","import { CollectionReference, DocumentData, FirebaseFirestore, QueryDocumentSnapshot } from '@firebase/firestore-types'\n\nimport { BaseModelWithIdentifier, NonFunctionPropertyNames } from '../../../../domain'\nimport { FirestoreRepository, FirestoreSubRepository } from '../types'\nimport { MixinCtor } from '../../../../utils'\n\nexport const withSubCollection = <\n TBase extends BaseModelWithIdentifier<TBase>,\n TBaseParent extends BaseModelWithIdentifier<TBaseParent>,\n TMixinBase extends MixinCtor,\n>(\n MixinBase: MixinCtor<FirestoreRepository<TBase>> & TMixinBase,\n ParentModel: new () => TBaseParent,\n) => {\n return class SubCollectionMix\n extends MixinBase\n implements FirestoreSubRepository<TBase, InstanceType<typeof ParentModel>>\n {\n readonly parentRepository: FirestoreRepository<InstanceType<typeof ParentModel>>\n parentIdField: NonFunctionPropertyNames<TBase>\n\n constructor(...args: Array<any>) {\n super(args)\n }\n\n collection(path?: string): CollectionReference<TBase> {\n return super.collection(path)\n }\n }\n}\n","import { BaseModelWithIdentifier, CrudRepository } from '../../../../domain'\nimport { FirestoreHelpers, FirestoreRepository } from '../types'\nimport { MixinCtor } from '../../../../utils'\n\nimport { withCreateFirestore } from './with-create-firestore.mixin'\nimport { withDeleteFirestore } from './with-delete-firestore.mixin'\nimport { withFindFirestore } from './with-find-firestore.mixin'\nimport { withGetFirestore } from './with-get-firestore.mixin'\nimport { withUpdateFirestore } from './with-update-firestore.mixin'\n\nexport const withCrudFirestore = <TBase extends BaseModelWithIdentifier<TBase>, TMixinBase extends MixinCtor>(\n MixinBase: MixinCtor<FirestoreRepository<TBase> & FirestoreHelpers> & TMixinBase,\n) => {\n return class CrudFirestore\n extends withUpdateFirestore(\n withGetFirestore(withFindFirestore(withDeleteFirestore(withCreateFirestore(MixinBase)))),\n )\n implements CrudRepository<TBase> {}\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\n\nimport { Base } from '../../../../../utils'\nimport { Subscription, SubscriptionRepository } from '../../../../../domain'\n\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class SubscriptionFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<Subscription>(Base)))\n implements SubscriptionRepository\n{\n constructor(readonly firestore: FirebaseFirestore) {\n super()\n this.collectionName = 'subscription'\n this.model = Subscription\n }\n}\n","import { BaseModel, IdentifierFields, NonFunctionPropertyNames } from '../../../../domain/general'\n\nexport class UserSearch extends BaseModel<UserSearch> implements IdentifierFields<UserSearch> {\n id: string\n cpf?: string\n email?: string\n createdAt: Date\n copiedAt: Date\n\n identifierFields(): NonFunctionPropertyNames<UserSearch>[] {\n return ['id']\n }\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\n\nimport { Base } from '../../../../../utils'\nimport { CrudRepository } from '../../../../../domain'\nimport { UserSearch } from '../../models/user-search'\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class UserSearchFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<UserSearch>(Base)))\n implements CrudRepository<UserSearch>\n{\n constructor(readonly firestore: FirebaseFirestore) {\n super()\n this.collectionName = 'userSearch'\n this.model = UserSearch\n }\n}\n","import { DocumentData, FirebaseFirestore, QueryDocumentSnapshot } from '@firebase/firestore-types'\n\nimport { Base } from '../../../../../utils'\nimport { BeautyProfile, User, UserRepository, Where } from '../../../../../domain'\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nimport { UserSearchFirestoreRepository } from './user-search-firestore.repository'\n\nexport class UserFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<User>(Base)))\n implements UserRepository\n{\n constructor(\n readonly firestore: FirebaseFirestore,\n private readonly userSearchFirestoreRepository = new UserSearchFirestoreRepository(firestore),\n ) {\n super()\n this.collectionName = 'users'\n this.model = User\n }\n\n async get(identifiers: Partial<User>): Promise<User> {\n const user = await super.get({ id: identifiers.id })\n\n user.beautyProfile = await this.getBeautyProfile(user.id)\n user.isSubscriber = await this.checkIfIsSubscriber(user.id)\n\n return user\n }\n\n async checkIfExistsByField(field: string, value: string): Promise<boolean> {\n const result = await this.userSearchFirestoreRepository.find([{ [field]: { operator: Where.EQUALS, value } }])\n\n return result.count > 0\n }\n\n buildModelInstance(): {\n toFirestore: (data: User) => DocumentData\n fromFirestore: (snap: QueryDocumentSnapshot<User>) => User\n } {\n const { fromFirestore, toFirestore } = super.buildModelInstance()\n\n return {\n toFirestore: (data: User): DocumentData => {\n const plain = toFirestore(data)\n\n delete plain.isSubscriber\n\n return plain\n },\n fromFirestore,\n }\n }\n\n private async getBeautyProfile(userId: string): Promise<BeautyProfile> {\n const beautyProfile = await this.collection()\n .doc(userId)\n .collection('CX')\n .withConverter(this.buildBeautyProfileModelInstance())\n .doc('beautyProfile')\n .get()\n\n return beautyProfile.data()\n }\n\n private async checkIfIsSubscriber(userId: string): Promise<boolean> {\n const docs = await this.firestore\n .collection('subscription')\n .where('user.id', '==', userId)\n .where('status', '==', 'active')\n .get()\n\n return !!docs && !!docs.size\n }\n\n private buildBeautyProfileModelInstance(): {\n toFirestore: (data: BeautyProfile) => DocumentData\n fromFirestore: (snap: QueryDocumentSnapshot<BeautyProfile>) => BeautyProfile\n } {\n return {\n toFirestore: (data: BeautyProfile): DocumentData => data.toPlain(),\n fromFirestore: (snap: QueryDocumentSnapshot<BeautyProfile>): BeautyProfile =>\n BeautyProfile.toInstance(snap.data()),\n }\n }\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\n\nimport { Base } from '../../../../../utils'\nimport { Edition, Subscription, EditionRepository } from '../../../../../domain'\nimport { withCrudFirestore, withFirestore, withHelpers, withSubCollection } from '../../mixins'\n\nimport { SubscriptionFirestoreRepository } from './subscription-firestore.repository'\n\nexport class SubscriptionEditionFirestoreRepository\n extends withSubCollection(withCrudFirestore(withHelpers(withFirestore<Edition>(Base))), Subscription)\n implements EditionRepository\n{\n constructor(readonly firestore: FirebaseFirestore, readonly parentRepository: SubscriptionFirestoreRepository) {\n super()\n this.collectionName = 'editions'\n this.parentIdField = 'subscriptionId'\n this.model = Edition\n }\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\n\nimport { Base } from '../../../../../utils'\nimport { BeautyProfile, BeautyProfileRepository, User } from '../../../../../domain'\nimport { withCrudFirestore, withFirestore, withHelpers, withSubCollection } from '../../mixins'\n\nimport { UserFirestoreRepository } from './user-firestore.repository'\n\nexport class UserBeautyProfileFirestoreRepository\n extends withSubCollection(withCrudFirestore(withHelpers(withFirestore<BeautyProfile>(Base))), User)\n implements BeautyProfileRepository\n{\n constructor(readonly firestore: FirebaseFirestore, readonly parentRepository: UserFirestoreRepository) {\n super()\n this.collectionName = 'CX'\n this.parentIdField = 'userId'\n this.model = BeautyProfile\n }\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\n\nimport { Base } from '../../../../../utils'\nimport { User, UserAddress, UserAddressRepository } from '../../../../../domain'\nimport { withCrudFirestore, withFirestore, withHelpers, withSubCollection } from '../../mixins'\n\nimport { UserFirestoreRepository } from './user-firestore.repository'\n\nexport class UserAddressFirestoreRepository\n extends withSubCollection(withCrudFirestore(withHelpers(withFirestore<UserAddress>(Base))), User)\n implements UserAddressRepository\n{\n constructor(readonly firestore: FirebaseFirestore, readonly parentRepository: UserFirestoreRepository) {\n super()\n this.collectionName = 'address'\n this.parentIdField = 'userId'\n this.model = UserAddress\n }\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\n\nimport { Base } from '../../../../../utils'\nimport { User, UserPaymentMethod, UserPaymentMethodRepository } from '../../../../../domain'\nimport { withCrudFirestore, withFirestore, withHelpers, withSubCollection } from '../../mixins'\n\nimport { UserFirestoreRepository } from './user-firestore.repository'\n\nexport class UserPaymentMethodFirestoreRepository\n extends withSubCollection(withCrudFirestore(withHelpers(withFirestore<UserPaymentMethod>(Base))), User)\n implements UserPaymentMethodRepository\n{\n constructor(readonly firestore: FirebaseFirestore, readonly parentRepository: UserFirestoreRepository) {\n super()\n this.collectionName = 'payment_method'\n this.parentIdField = 'userId'\n this.model = UserPaymentMethod\n }\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\n\nimport { Base } from '../../../../../utils'\nimport { SubscriptionPayment, Subscription, SubscriptionPaymentRepository } from '../../../../../domain'\nimport { withCrudFirestore, withFirestore, withHelpers, withSubCollection } from '../../mixins'\n\nimport { SubscriptionFirestoreRepository } from './subscription-firestore.repository'\n\nexport class SubscriptionPaymentFirestoreRepository\n extends withSubCollection(withCrudFirestore(withHelpers(withFirestore<SubscriptionPayment>(Base))), Subscription)\n implements SubscriptionPaymentRepository\n{\n constructor(readonly firestore: FirebaseFirestore, readonly parentRepository: SubscriptionFirestoreRepository) {\n super()\n this.collectionName = 'payments'\n this.parentIdField = 'subscriptionId'\n this.model = SubscriptionPayment\n }\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\n\nimport { Base } from '../../../../../utils'\nimport { Lead, LeadRepository } from '../../../../../domain'\n\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class LeadFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<Lead>(Base)))\n implements LeadRepository\n{\n constructor(readonly firestore: FirebaseFirestore) {\n super()\n this.collectionName = 'leads'\n this.model = Lead\n }\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\n\nimport { Base } from '../../../../../utils'\nimport { Category, CategoryRepository, Product, Shops } from '../../../../../domain'\nimport { DuplicatedResultsError, NotFoundError, RequiredArgumentError } from '../../../../../errors'\nimport { ProductsIndex } from '../../../../elasticsearch'\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class CategoryFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<Category>(Base)))\n implements CategoryRepository\n{\n constructor(readonly firestore: FirebaseFirestore, private readonly productsIndex: ProductsIndex) {\n super()\n this.collectionName = 'categories'\n this.model = Category\n }\n\n getCategoryBySlug(slug: string, shop: Shops): Promise<Category> {\n return this.collection(this.collectionName)\n .where('slug', '==', slug)\n .where('shop', '==', shop)\n .where('published', '==', true)\n .get()\n .then((snap) => {\n if (snap.size > 1) throw new DuplicatedResultsError('Query returned duplicated values')\n\n if (snap.empty) throw new NotFoundError(`Document with slug ${slug} not found`)\n\n return snap.docs[0].data()\n })\n .catch((error) => error)\n }\n\n async getCategoriesForHome(categoryIds: string[], limit = 4): Promise<{ category: Category; products: Product[] }[]> {\n const categorySnap = await this.collection(this.collectionName)\n .where('id', 'in', categoryIds)\n .where('published', '==', true)\n .get()\n\n if (categorySnap.empty) throw new NotFoundError('Categories not found')\n\n const categories = categorySnap.docs.map((doc) => doc.data())\n const homeSections = await Promise.all(\n categories.map(async (category) => ({\n category,\n products: await this.mountCategory(category, { limit, hasStock: true }),\n })),\n )\n\n return homeSections\n }\n\n async mountCategory(category: Category, options?: { limit?: number; hasStock?: boolean }): Promise<Product[]> {\n if (!category.products) throw new RequiredArgumentError(['Category products is empty'])\n\n return this.productsIndex.findById(category.products, {\n hasStock: options?.hasStock,\n size: options?.limit,\n shop: category.shop,\n })\n }\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\n\nimport { Base } from '../../../../../utils'\nimport { Product, ProductRepository, Shops, Where } from '../../../../../domain'\n\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class ProductFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<Product>(Base)))\n implements ProductRepository\n{\n constructor(readonly firestore: FirebaseFirestore) {\n super()\n this.collectionName = 'products'\n this.model = Product\n }\n\n async getBySlug(slug: string, shop: Shops): Promise<Product> {\n const result = await this.find([\n { slug: { operator: Where.EQUALS, value: slug } },\n { shopAvailability: { operator: Where.IN, value: [shop] } },\n ])\n\n return result?.data?.shift()\n }\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\n\nimport { Base } from '../../../../../utils'\nimport { Product, Variant, VariantRepository } from '../../../../../domain'\nimport { withCrudFirestore, withFirestore, withHelpers, withSubCollection } from '../../mixins'\n\nimport { ProductFirestoreRepository } from './product-firestore.repository'\n\nexport class ProductVariantFirestoreRepository\n extends withSubCollection(withCrudFirestore(withHelpers(withFirestore<Variant>(Base))), Product)\n implements VariantRepository\n{\n constructor(readonly firestore: FirebaseFirestore, readonly parentRepository: ProductFirestoreRepository) {\n super()\n this.collectionName = 'variants'\n this.parentIdField = 'productId'\n this.model = Variant\n }\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\n\nimport { Base } from '../../../../../utils'\nimport { Product, SubscriptionProductRepository } from '../../../../../domain'\n\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class SubscriptionProductFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<Product>(Base)))\n implements SubscriptionProductRepository\n{\n constructor(readonly firestore: FirebaseFirestore) {\n super()\n this.collectionName = 'subscriptionProducts'\n this.model = Product\n }\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\n\nimport { Base } from '../../../../../utils'\nimport { Checkout, CheckoutRepository } from '../../../../../domain'\n\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class CheckoutFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<Checkout>(Base)))\n implements CheckoutRepository\n{\n constructor(readonly firestore: FirebaseFirestore) {\n super()\n this.collectionName = 'checkouts'\n this.model = Checkout\n }\n}\n","import { DocumentData, FirebaseFirestore, QueryDocumentSnapshot } from '@firebase/firestore-types'\n\nimport { Base, isNil } from '../../../../../utils'\nimport { Coupon, CouponRepository } from '../../../../../domain'\n\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class CouponFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<Coupon>(Base)))\n implements CouponRepository\n{\n constructor(readonly firestore: FirebaseFirestore) {\n super()\n this.collectionName = 'coupons'\n this.model = Coupon\n }\n\n buildModelInstance(): {\n toFirestore: (data: Coupon) => DocumentData\n fromFirestore: (snap: QueryDocumentSnapshot<Coupon>) => Coupon\n } {\n const { fromFirestore, toFirestore } = super.buildModelInstance()\n\n return {\n toFirestore: (data: Coupon): DocumentData => {\n const plain = toFirestore(data)\n\n if (!!data.expiresIn) plain.expiresIn = data.expiresIn.getTime()\n\n return plain\n },\n fromFirestore: (snap: QueryDocumentSnapshot<Coupon>): Coupon => {\n const instance = fromFirestore(snap)\n\n if (!isNil(instance.expiresIn)) instance.expiresIn = new Date(snap.data().expiresIn)\n\n return instance\n },\n }\n }\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\n\nimport { Base } from '../../../../../utils'\nimport { Order, OrderRepository } from '../../../../../domain'\n\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class OrderFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<Order>(Base)))\n implements OrderRepository\n{\n constructor(readonly firestore: FirebaseFirestore) {\n super()\n this.collectionName = 'orders'\n this.model = Order\n }\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\n\nimport { Base } from '../../../../../utils'\nimport { Payment, PaymentRepository } from '../../../../../domain'\n\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class PaymentFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<Payment>(Base)))\n implements PaymentRepository\n{\n constructor(readonly firestore: FirebaseFirestore) {\n super()\n this.collectionName = 'payments'\n this.model = Payment\n }\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\n\nimport { Base } from '../../../../../utils'\nimport { CheckoutSubscription, CheckoutSubscriptionRepository } from '../../../../../domain'\n\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class CheckoutSubscriptionFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<CheckoutSubscription>(Base)))\n implements CheckoutSubscriptionRepository\n{\n constructor(readonly firestore: FirebaseFirestore) {\n super()\n this.collectionName = 'checkoutsSubscription'\n this.model = CheckoutSubscription\n }\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\n\nimport { Base } from '../../../../../utils'\nimport { SubscriptionPlan, SubscriptionPlanRepository } from '../../../../../domain'\n\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class SubscriptionPlanFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<SubscriptionPlan>(Base)))\n implements SubscriptionPlanRepository\n{\n constructor(readonly firestore: FirebaseFirestore) {\n super()\n this.collectionName = 'subscriptionPlans'\n this.model = SubscriptionPlan\n }\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\n\nimport { Base } from '../../../../../utils'\nimport { Buy2Win, Buy2WinRepository } from '../../../../../domain'\n\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class Buy2WinFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<Buy2Win>(Base)))\n implements Buy2WinRepository\n{\n constructor(readonly firestore: FirebaseFirestore) {\n super()\n this.collectionName = 'buy2win'\n this.model = Buy2Win\n }\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\n\nimport { LegacyOrderRepository } from '../../../../../domain'\n\nimport { OrderFirestoreRepository } from './order-firestore.repository'\n\nexport class LegacyOrderFirestoreRepository extends OrderFirestoreRepository implements LegacyOrderRepository {\n constructor(readonly firestore: FirebaseFirestore) {\n super(firestore)\n this.collectionName = 'legacyOrders'\n }\n}\n","import { DocumentData, FirebaseFirestore, QueryDocumentSnapshot } from '@firebase/firestore-types'\nimport firebase from 'firebase'\n\nimport { Base } from '../../../../../utils'\nimport { Category, Home, HomeCategoryGroup, HomeRepository, Product } from '../../../../../domain'\n\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class HomeFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<Home>(Base)))\n implements HomeRepository\n{\n constructor(readonly firestore: FirebaseFirestore) {\n super()\n this.collectionName = 'dms'\n this.model = Home\n }\n\n buildModelInstance(): {\n toFirestore: (data: Home) => DocumentData\n fromFirestore: (snap: QueryDocumentSnapshot<Home>) => Home\n } {\n const { fromFirestore, toFirestore } = super.buildModelInstance()\n\n return {\n toFirestore: (data: Home): DocumentData => {\n const modifiedData = this.homeToFirestore(data)\n\n return toFirestore(modifiedData)\n },\n fromFirestore: (snap: QueryDocumentSnapshot<Home>): Home => {\n const instance = fromFirestore(snap)\n\n return this.homeFromFirestore(instance)\n },\n }\n }\n\n private homeToFirestore = (home: Home): Home => {\n if (home.data?.data) {\n home.data.data.discoverProducts = home.data.data.discoverProducts.map(this.homeCategoryGroupToPlain)\n home.data.data.featuredProducts = home.data.data.featuredProducts.map(this.homeCategoryGroupToPlain)\n home.data.data.verticalProducts = home.data.data.verticalProducts.map(this.homeCategoryGroupToPlain)\n }\n\n return home\n }\n\n private homeCategoryGroupToPlain = (homeCategoryGroup: HomeCategoryGroup) => ({\n category: homeCategoryGroup.category.toPlain(),\n products: homeCategoryGroup.products.map((product) => product.toPlain()),\n })\n\n private homeFromFirestore = (home: Home): Home => {\n if (home.data?.data) {\n home.data.data.discoverProducts = home.data.data.discoverProducts.map(this.plainToHomeCategoryGroup)\n home.data.data.featuredProducts = home.data.data.featuredProducts.map(this.plainToHomeCategoryGroup)\n home.data.data.verticalProducts = home.data.data.verticalProducts.map(this.plainToHomeCategoryGroup)\n home.data.createdAt =\n home.data.createdAt instanceof firebase.firestore.Timestamp ? home.data.createdAt.toDate() : home.data.createdAt\n home.data.expiresAt =\n home.data.expiresAt instanceof firebase.firestore.Timestamp ? home.data.expiresAt.toDate() : home.data.expiresAt\n }\n\n return home\n }\n\n private plainToHomeCategoryGroup = (homeCategoryGroup: HomeCategoryGroup) => ({\n category: Category.toInstance(homeCategoryGroup.category),\n products: homeCategoryGroup.products.map((product) => Product.toInstance(product)),\n })\n}\n","import { FirebaseFirestore } from '@firebase/firestore-types'\nimport { ShopMenu, ShopMenuRepository } from '../../../../../domain'\n\nimport { Base } from '../../../../../utils'\n\nimport { withCrudFirestore, withFirestore, withHelpers } from '../../mixins'\n\nexport class ShopMenuFirestoreRepository\n extends withCrudFirestore(withHelpers(withFirestore<ShopMenu>(Base)))\n implements ShopMenuRepository {\n constructor(readonly firestore: FirebaseFirestore) {\n super()\n this.collectionName = 'shopMenus'\n this.model = ShopMenu\n }\n}\n","import firebase from 'firebase/app'\n\nimport { AuthenticationService, BasicUserData, LoginAndPasswordParams } from '../../../domain'\n\nimport { FirebaseUserWithId } from './types/firebase-user-with-id.type'\n\nexport class AuthenticationFirebaseAuthService implements AuthenticationService {\n constructor(private readonly firebaseAuth: firebase.auth.Auth) {}\n\n async signInWithEmailAndPassword(data: LoginAndPasswordParams): Promise<BasicUserData> {\n const credentials = await this.firebaseAuth.signInWithEmailAndPassword(data.email, data.password)\n const user = credentials.user\n\n return {\n id: user.uid,\n displayName: user.displayName,\n email: user.email,\n phone: user.phoneNumber,\n isAnonymous: false,\n }\n }\n\n async signInWithGoogle(): Promise<BasicUserData> {\n const credentials = await this.firebaseAuth.signInWithPopup(new firebase.auth.GoogleAuthProvider())\n const user = credentials.user\n\n return {\n id: user.uid,\n displayName: user.displayName,\n email: user.email,\n phone: user.phoneNumber,\n isAnonymous: false,\n }\n }\n\n async signOut(): Promise<void> {\n this.firebaseAuth.signOut()\n }\n\n async signInAnonymously(): Promise<FirebaseUserWithId> {\n const auth = await this.firebaseAuth.signInAnonymously()\n const user = auth.user as FirebaseUserWithId\n\n user.id = auth.user.uid\n\n return user\n }\n\n async sendPasswordResetEmail(email: string): Promise<void> {\n return this.firebaseAuth.sendPasswordResetEmail(email)\n }\n}\n","import firebase from 'firebase/app'\n\nimport { RegisterParams, RegisterService, UserAlreadyRegisteredError, WeakPasswordError } from '../../../domain'\n\nimport { FirebaseUserWithId } from './types/firebase-user-with-id.type'\n\nexport class RegisterFirebaseAuthService implements RegisterService {\n constructor(private readonly firebaseAuth: firebase.auth.Auth) {}\n\n async register(params: RegisterParams): Promise<FirebaseUserWithId> {\n try {\n const auth = await this.firebaseAuth.createUserWithEmailAndPassword(params.email, params.password)\n const user = auth.user as FirebaseUserWithId\n\n user.sendEmailVerification()\n user.id = auth.user.uid\n\n return user\n } catch (error) {\n if (error.code === 'auth/email-already-in-use') throw new UserAlreadyRegisteredError('Email already registered')\n if (error.code === 'auth/weak-password') throw new WeakPasswordError()\n\n throw error\n }\n }\n}\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","firebase"],"mappings":"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"}