@infrab4a/connect-angular 5.1.0 → 6.0.0-alpha.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 (212) hide show
  1. package/eslint.config.js +18 -0
  2. package/index.ts +1 -0
  3. package/karma.conf.js +32 -0
  4. package/ng-package.json +8 -0
  5. package/package.json +10 -28
  6. package/project.json +37 -0
  7. package/src/angular-connect.module.ts +256 -0
  8. package/src/angular-elastic-search.module.ts +23 -0
  9. package/src/angular-firebase-auth.module.ts +101 -0
  10. package/src/angular-firestore.module.ts +371 -0
  11. package/src/angular-hasura-graphql.module.ts +219 -0
  12. package/src/angular-vertex-search.module.ts +23 -0
  13. package/src/consts/backend-url.const.ts +1 -0
  14. package/src/consts/category-structure.ts +1 -0
  15. package/src/consts/default-shop.const.ts +1 -0
  16. package/src/consts/es-config.const.ts +1 -0
  17. package/src/consts/firebase-const.ts +5 -0
  18. package/src/consts/hasura-options.const.ts +1 -0
  19. package/src/consts/index.ts +8 -0
  20. package/src/consts/persistence.const.ts +1 -0
  21. package/src/consts/storage-base-url.const.ts +1 -0
  22. package/src/consts/vertex-config.const.ts +1 -0
  23. package/src/helpers/index.ts +1 -0
  24. package/src/helpers/mobile-operation-system-checker.helper.ts +10 -0
  25. package/src/index.ts +6 -0
  26. package/src/interfaces/catalog-strategies.interface.ts +36 -0
  27. package/src/interfaces/category-facades.interface.ts +7 -0
  28. package/src/interfaces/index.ts +2 -0
  29. package/src/persistence/cookie-data-persistence.ts +21 -0
  30. package/src/persistence/data-persistence.ts +7 -0
  31. package/src/persistence/index.ts +2 -0
  32. package/src/services/auth.service.ts +39 -0
  33. package/src/services/cart/cart-services.facade.ts +14 -0
  34. package/src/services/cart/index.ts +1 -0
  35. package/src/services/cart.service.ts +124 -0
  36. package/src/services/catalog/adapters/category-structure.adapter.ts +5 -0
  37. package/src/services/catalog/adapters/index.ts +3 -0
  38. package/src/services/catalog/adapters/new-category-structure.adapter.ts +42 -0
  39. package/src/services/catalog/adapters/old-category-structure.adapter.ts +17 -0
  40. package/src/services/catalog/catalog.service.ts +153 -0
  41. package/src/services/catalog/category.service.ts +52 -0
  42. package/src/services/catalog/context/catalog-search.context.ts +61 -0
  43. package/src/services/catalog/enums/index.ts +1 -0
  44. package/src/services/catalog/enums/product-sorts.enum.ts +9 -0
  45. package/src/services/catalog/facades/catalog-service.facade.ts +32 -0
  46. package/src/services/catalog/facades/catalog-strategies.facade.ts +12 -0
  47. package/src/services/catalog/facades/category-repository.facade.ts +10 -0
  48. package/src/services/catalog/facades/category-service.facade.ts +25 -0
  49. package/src/services/catalog/facades/index.ts +5 -0
  50. package/src/services/catalog/facades/product-catalog.facade.ts +13 -0
  51. package/src/services/catalog/helpers/brand-manager.helper.ts +63 -0
  52. package/src/services/catalog/helpers/catalog-filter.helper.ts +50 -0
  53. package/src/services/catalog/helpers/catalog-sort.helper.ts +54 -0
  54. package/src/services/catalog/helpers/index.ts +4 -0
  55. package/src/services/catalog/helpers/product-fields.helper.ts +35 -0
  56. package/src/services/catalog/index.ts +7 -0
  57. package/src/services/catalog/models/category-with-tree.model.ts +7 -0
  58. package/src/services/catalog/models/index.ts +1 -0
  59. package/src/services/catalog/services/catalog-helpers.service.ts +35 -0
  60. package/src/services/catalog/services/catalog-operations.facade.ts +24 -0
  61. package/src/services/catalog/services/catalog-repository.service.ts +20 -0
  62. package/src/services/catalog/services/index.ts +4 -0
  63. package/src/services/catalog/services/product-management.facade.ts +20 -0
  64. package/src/services/catalog/strategies/category-search.strategy.ts +172 -0
  65. package/src/services/catalog/strategies/index.ts +3 -0
  66. package/src/services/catalog/strategies/profile-search.strategy.ts +51 -0
  67. package/src/services/catalog/strategies/term-search.strategy.ts +178 -0
  68. package/src/services/catalog/strategies/types/strategy-params.type.ts +58 -0
  69. package/src/services/catalog/types/fetch-products-options.type.ts +10 -0
  70. package/src/services/catalog/types/fetch-products-params.type.ts +27 -0
  71. package/src/services/catalog/types/fetch-products-response.type.ts +11 -0
  72. package/src/services/catalog/types/index.ts +5 -0
  73. package/src/services/catalog/types/method-params.type.ts +21 -0
  74. package/src/services/catalog/types/product-sort.type.ts +3 -0
  75. package/src/services/catalog/wishlist.service.ts +368 -0
  76. package/src/services/checkout/checkout-dependencies.facade.ts +13 -0
  77. package/src/services/checkout/checkout-repositories.facade.ts +10 -0
  78. package/src/services/checkout/index.ts +2 -0
  79. package/src/services/checkout-subscription.service.ts +76 -0
  80. package/src/services/checkout.service.ts +196 -0
  81. package/src/services/coupon/coupon-repositories.facade.ts +11 -0
  82. package/src/services/coupon/index.ts +1 -0
  83. package/src/services/coupon/types/coupon-params.type.ts +15 -0
  84. package/src/services/coupon.service.ts +347 -0
  85. package/src/services/errors/group-invalid-coupon.error.ts +9 -0
  86. package/src/services/errors/index.ts +2 -0
  87. package/src/services/errors/invalid-coupon.error.ts +7 -0
  88. package/src/services/helpers/index.ts +1 -0
  89. package/src/services/helpers/util.helper.ts +17 -0
  90. package/src/services/home-shop/home-shop-repositories.facade.ts +11 -0
  91. package/src/services/home-shop/index.ts +1 -0
  92. package/src/services/home-shop.service.ts +196 -0
  93. package/src/services/index.ts +9 -0
  94. package/src/services/order.service.ts +23 -0
  95. package/src/services/shared/configuration.facade.ts +21 -0
  96. package/src/services/shared/index.ts +1 -0
  97. package/src/services/types/index.ts +2 -0
  98. package/src/services/types/required-checkout-data.type.ts +3 -0
  99. package/src/services/types/required-checkout-subscription-data.type.ts +3 -0
  100. package/src/types/firebase-app-config.type.ts +1 -0
  101. package/src/types/index.ts +1 -0
  102. package/tsconfig.json +17 -0
  103. package/tsconfig.lib.json +13 -0
  104. package/tsconfig.lib.prod.json +13 -0
  105. package/tsconfig.spec.json +17 -0
  106. package/angular-connect.module.d.ts +0 -26
  107. package/angular-elastic-search.module.d.ts +0 -9
  108. package/angular-firebase-auth.module.d.ts +0 -11
  109. package/angular-firestore.module.d.ts +0 -18
  110. package/angular-hasura-graphql.module.d.ts +0 -16
  111. package/consts/backend-url.const.d.ts +0 -1
  112. package/consts/category-structure.d.ts +0 -1
  113. package/consts/default-shop.const.d.ts +0 -1
  114. package/consts/es-config.const.d.ts +0 -1
  115. package/consts/firebase-const.d.ts +0 -3
  116. package/consts/hasura-options.const.d.ts +0 -1
  117. package/consts/index.d.ts +0 -7
  118. package/consts/persistence.const.d.ts +0 -1
  119. package/consts/storage-base-url.const.d.ts +0 -1
  120. package/esm2020/angular-connect.module.mjs +0 -115
  121. package/esm2020/angular-elastic-search.module.mjs +0 -34
  122. package/esm2020/angular-firebase-auth.module.mjs +0 -115
  123. package/esm2020/angular-firestore.module.mjs +0 -504
  124. package/esm2020/angular-hasura-graphql.module.mjs +0 -265
  125. package/esm2020/consts/backend-url.const.mjs +0 -2
  126. package/esm2020/consts/category-structure.mjs +0 -2
  127. package/esm2020/consts/default-shop.const.mjs +0 -2
  128. package/esm2020/consts/es-config.const.mjs +0 -2
  129. package/esm2020/consts/firebase-const.mjs +0 -4
  130. package/esm2020/consts/hasura-options.const.mjs +0 -2
  131. package/esm2020/consts/index.mjs +0 -8
  132. package/esm2020/consts/persistence.const.mjs +0 -2
  133. package/esm2020/consts/storage-base-url.const.mjs +0 -2
  134. package/esm2020/helpers/index.mjs +0 -2
  135. package/esm2020/helpers/mobile-operation-system-checker.helper.mjs +0 -7
  136. package/esm2020/index.mjs +0 -7
  137. package/esm2020/infrab4a-connect-angular.mjs +0 -5
  138. package/esm2020/persistence/cookie-data-persistence.mjs +0 -22
  139. package/esm2020/persistence/data-persistence.mjs +0 -2
  140. package/esm2020/persistence/index.mjs +0 -3
  141. package/esm2020/services/auth.service.mjs +0 -37
  142. package/esm2020/services/cart.service.mjs +0 -281
  143. package/esm2020/services/catalog/adapters/category-structure.adapter.mjs +0 -2
  144. package/esm2020/services/catalog/adapters/index.mjs +0 -4
  145. package/esm2020/services/catalog/adapters/new-category-structure.adapter.mjs +0 -43
  146. package/esm2020/services/catalog/adapters/old-category-structure.adapter.mjs +0 -23
  147. package/esm2020/services/catalog/catalog.service.mjs +0 -194
  148. package/esm2020/services/catalog/category.service.mjs +0 -51
  149. package/esm2020/services/catalog/enums/index.mjs +0 -2
  150. package/esm2020/services/catalog/enums/product-sorts.enum.mjs +0 -11
  151. package/esm2020/services/catalog/index.mjs +0 -8
  152. package/esm2020/services/catalog/models/category-with-tree.model.mjs +0 -10
  153. package/esm2020/services/catalog/models/index.mjs +0 -2
  154. package/esm2020/services/catalog/types/index.mjs +0 -2
  155. package/esm2020/services/catalog/types/product-sort.type.mjs +0 -2
  156. package/esm2020/services/catalog/wishlist.service.mjs +0 -115
  157. package/esm2020/services/checkout-subscription.service.mjs +0 -50
  158. package/esm2020/services/checkout.service.mjs +0 -68
  159. package/esm2020/services/coupon.service.mjs +0 -235
  160. package/esm2020/services/helpers/index.mjs +0 -2
  161. package/esm2020/services/helpers/util.helper.mjs +0 -18
  162. package/esm2020/services/home-shop.service.mjs +0 -125
  163. package/esm2020/services/index.mjs +0 -11
  164. package/esm2020/services/order.service.mjs +0 -30
  165. package/esm2020/services/shipping.service.mjs +0 -96
  166. package/esm2020/services/types/index.mjs +0 -3
  167. package/esm2020/services/types/required-checkout-data.type.mjs +0 -2
  168. package/esm2020/services/types/required-checkout-subscription-data.type.mjs +0 -2
  169. package/esm2020/services/types/shipping-methods.type.mjs +0 -2
  170. package/esm2020/types/firebase-app-config.type.mjs +0 -2
  171. package/esm2020/types/index.mjs +0 -2
  172. package/fesm2015/infrab4a-connect-angular.mjs +0 -2417
  173. package/fesm2015/infrab4a-connect-angular.mjs.map +0 -1
  174. package/fesm2020/infrab4a-connect-angular.mjs +0 -2352
  175. package/fesm2020/infrab4a-connect-angular.mjs.map +0 -1
  176. package/helpers/index.d.ts +0 -1
  177. package/helpers/mobile-operation-system-checker.helper.d.ts +0 -3
  178. package/index.d.ts +0 -6
  179. package/persistence/cookie-data-persistence.d.ts +0 -10
  180. package/persistence/data-persistence.d.ts +0 -6
  181. package/persistence/index.d.ts +0 -2
  182. package/services/auth.service.d.ts +0 -18
  183. package/services/cart.service.d.ts +0 -42
  184. package/services/catalog/adapters/category-structure.adapter.d.ts +0 -4
  185. package/services/catalog/adapters/index.d.ts +0 -3
  186. package/services/catalog/adapters/new-category-structure.adapter.d.ts +0 -12
  187. package/services/catalog/adapters/old-category-structure.adapter.d.ts +0 -10
  188. package/services/catalog/catalog.service.d.ts +0 -86
  189. package/services/catalog/category.service.d.ts +0 -20
  190. package/services/catalog/enums/index.d.ts +0 -1
  191. package/services/catalog/enums/product-sorts.enum.d.ts +0 -9
  192. package/services/catalog/index.d.ts +0 -7
  193. package/services/catalog/models/category-with-tree.model.d.ts +0 -4
  194. package/services/catalog/models/index.d.ts +0 -1
  195. package/services/catalog/types/index.d.ts +0 -1
  196. package/services/catalog/types/product-sort.type.d.ts +0 -2
  197. package/services/catalog/wishlist.service.d.ts +0 -38
  198. package/services/checkout-subscription.service.d.ts +0 -19
  199. package/services/checkout.service.d.ts +0 -24
  200. package/services/coupon.service.d.ts +0 -29
  201. package/services/helpers/index.d.ts +0 -1
  202. package/services/helpers/util.helper.d.ts +0 -3
  203. package/services/home-shop.service.d.ts +0 -26
  204. package/services/index.d.ts +0 -10
  205. package/services/order.service.d.ts +0 -13
  206. package/services/shipping.service.d.ts +0 -19
  207. package/services/types/index.d.ts +0 -2
  208. package/services/types/required-checkout-data.type.d.ts +0 -2
  209. package/services/types/required-checkout-subscription-data.type.d.ts +0 -2
  210. package/services/types/shipping-methods.type.d.ts +0 -12
  211. package/types/firebase-app-config.type.d.ts +0 -1
  212. package/types/index.d.ts +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"infrab4a-connect-angular.mjs","sources":["../../../projects/connect-angular/src/consts/es-config.const.ts","../../../projects/connect-angular/src/angular-elastic-search.module.ts","../../../projects/connect-angular/src/consts/backend-url.const.ts","../../../projects/connect-angular/src/consts/category-structure.ts","../../../projects/connect-angular/src/consts/default-shop.const.ts","../../../projects/connect-angular/src/consts/firebase-const.ts","../../../projects/connect-angular/src/consts/hasura-options.const.ts","../../../projects/connect-angular/src/consts/persistence.const.ts","../../../projects/connect-angular/src/angular-firebase-auth.module.ts","../../../projects/connect-angular/src/consts/storage-base-url.const.ts","../../../projects/connect-angular/src/helpers/mobile-operation-system-checker.helper.ts","../../../projects/connect-angular/src/angular-firestore.module.ts","../../../projects/connect-angular/src/angular-hasura-graphql.module.ts","../../../projects/connect-angular/src/persistence/cookie-data-persistence.ts","../../../projects/connect-angular/src/services/auth.service.ts","../../../projects/connect-angular/src/services/coupon.service.ts","../../../projects/connect-angular/src/services/checkout.service.ts","../../../projects/connect-angular/src/services/cart.service.ts","../../../projects/connect-angular/src/services/catalog/adapters/new-category-structure.adapter.ts","../../../projects/connect-angular/src/services/catalog/adapters/old-category-structure.adapter.ts","../../../projects/connect-angular/src/services/catalog/catalog.service.ts","../../../projects/connect-angular/src/services/catalog/category.service.ts","../../../projects/connect-angular/src/services/catalog/enums/product-sorts.enum.ts","../../../projects/connect-angular/src/services/catalog/models/category-with-tree.model.ts","../../../projects/connect-angular/src/services/catalog/wishlist.service.ts","../../../projects/connect-angular/src/services/checkout-subscription.service.ts","../../../projects/connect-angular/src/services/helpers/util.helper.ts","../../../projects/connect-angular/src/services/home-shop.service.ts","../../../projects/connect-angular/src/services/order.service.ts","../../../projects/connect-angular/src/services/shipping.service.ts","../../../projects/connect-angular/src/angular-connect.module.ts","../../../projects/connect-angular/src/infrab4a-connect-angular.ts"],"sourcesContent":["export const ES_CONFIG = 'ES_CONFIG'\n","import { ModuleWithProviders, NgModule } from '@angular/core'\nimport { AxiosAdapter, AxiosElasticSearchConfig, ProductsIndex } from '@infrab4a/connect'\n\nimport { ES_CONFIG } from './consts/es-config.const'\n\n@NgModule({\n providers: [\n {\n provide: ProductsIndex,\n useFactory: (configuration: AxiosElasticSearchConfig): ProductsIndex =>\n new ProductsIndex(new AxiosAdapter(configuration)),\n deps: [ES_CONFIG],\n },\n ],\n})\nexport class AngularElasticSeachModule {\n static initializeApp(options: AxiosElasticSearchConfig): ModuleWithProviders<AngularElasticSeachModule> {\n return {\n ngModule: AngularElasticSeachModule,\n providers: [{ provide: ES_CONFIG, useValue: options }],\n }\n }\n}\n","export const BACKEND_URL = 'BACKEND_URL'","export const CATEGORY_STRUCTURE = 'CATEGORY_STRUCTURE'\n","export const DEFAULT_SHOP = 'DEFAULT_SHOP'\n","import { InjectionToken } from '@angular/core'\n\nexport const FIREBASE_APP_NAME = new InjectionToken('firebaseAppName')\nexport const FIREBASE_OPTIONS = new InjectionToken('firebaseOptions')\n","export const HASURA_OPTIONS = 'HASURA_OPTIONS'\n","export const PERSISTENCE_PROVIDER = 'PERSISTENCE_PROVIDER'\n","import { Injector, ModuleWithProviders, NgModule } from '@angular/core'\nimport { FirebaseApp, FirebaseOptions } from '@angular/fire/app'\nimport { Auth, getAuth, provideAuth } from '@angular/fire/auth'\nimport {\n Authentication,\n AuthenticationFirebaseAuthService,\n AuthenticationService,\n RecoveryPassword,\n Register,\n RegisterFirebaseAuthService,\n RegisterService,\n SignOut,\n UserRepository,\n} from '@infrab4a/connect'\n\nimport { FIREBASE_APP_NAME, FIREBASE_OPTIONS } from './consts'\nimport { FirebaseAppConfig } from './types'\n\n@NgModule({\n imports: [provideAuth((injector: Injector) => getAuth(injector.get(FirebaseApp)))],\n providers: [\n {\n provide: 'Authentication',\n useFactory: (authenticationService: AuthenticationService, userRepository: UserRepository): Authentication => {\n return new Authentication(authenticationService, userRepository)\n },\n deps: ['AuthenticationService', 'UserRepository'],\n },\n {\n provide: 'AuthenticationService',\n useFactory: (angularFireAuth: Auth): AuthenticationService => {\n return new AuthenticationFirebaseAuthService(angularFireAuth)\n },\n deps: [Auth],\n },\n {\n provide: 'Register',\n useFactory: (registerService: RegisterService, userRepository: UserRepository): Register => {\n return new Register(registerService, userRepository)\n },\n deps: ['RegisterService', 'UserRepository'],\n },\n {\n provide: 'RegisterService',\n useFactory: (angularFireAuth: Auth): RegisterService => {\n return new RegisterFirebaseAuthService(angularFireAuth)\n },\n deps: [Auth],\n },\n {\n provide: 'SignOut',\n useFactory: (authenticationService: AuthenticationService): SignOut => {\n return new SignOut(authenticationService)\n },\n deps: ['AuthenticationService'],\n },\n {\n provide: 'RecoveryPassword',\n useFactory: (authenticationService: AuthenticationService): RecoveryPassword => {\n return new RecoveryPassword(authenticationService)\n },\n deps: ['AuthenticationService'],\n },\n ],\n})\nexport class AngularFirebaseAuthModule {\n static initializeApp(\n options: FirebaseOptions,\n nameOrConfig?: string | FirebaseAppConfig,\n ): ModuleWithProviders<AngularFirebaseAuthModule> {\n return {\n ngModule: AngularFirebaseAuthModule,\n providers: [\n { provide: FIREBASE_OPTIONS, useValue: options },\n { provide: FIREBASE_APP_NAME, useValue: nameOrConfig },\n ],\n }\n }\n}\n","export const STORAGE_BASE_URL = 'STORAGE_BASE_URL'\n","export class MobileOperationSystemCheckerHelper {\n static isAppleDevice() {\n return (\n ['iPad Simulator', 'iPhone Simulator', 'iPod Simulator', 'iPad', 'iPhone', 'iPod'].includes(\n navigator?.platform,\n ) ||\n (navigator?.userAgent?.includes?.('Mac') && 'ontouchend' in (document || {}))\n )\n }\n}\n","import { isPlatformBrowser, isPlatformServer } from '@angular/common'\nimport { Injector, ModuleWithProviders, NgModule, PLATFORM_ID } from '@angular/core'\nimport { FirebaseApp, FirebaseOptions } from '@angular/fire/app'\nimport { Firestore, initializeFirestore, memoryLocalCache, provideFirestore } from '@angular/fire/firestore'\nimport { Storage, getStorage, provideStorage } from '@angular/fire/storage'\nimport {\n AxiosElasticSearchConfig,\n BeautyProfileRepository,\n Buy2WinFirestoreRepository,\n Buy2WinRepository,\n CampaignDashboardFirestoreRepository,\n CampaignDashboardRepository,\n CampaignHashtagFirestoreRepository,\n CampaignHashtagRepository,\n CategoryFirestoreRepository,\n CategoryRepository,\n CheckoutFirestoreRepository,\n CheckoutRepository,\n CheckoutSubscriptionFirestoreRepository,\n CheckoutSubscriptionRepository,\n ConnectFirestoreService,\n CouponFirestoreRepository,\n CouponRepository,\n EditionRepository,\n FirebaseFileUploaderService,\n FirestoreConstructorParams,\n FirestoreIntertceptorRequestParams,\n HomeFirestoreRepository,\n HomeRepository,\n LeadFirestoreRepository,\n LeadRepository,\n LegacyOrderFirestoreRepository,\n LegacyOrderRepository,\n OrderFirestoreRepository,\n OrderRepository,\n PaymentFirestoreRepository,\n PaymentRepository,\n ProductFirestoreRepository,\n ProductRepository,\n ProductVariantFirestoreRepository,\n ShopMenuFirestoreRepository,\n ShopMenuRepository,\n ShopSettingsFirestoreRepository,\n ShopSettingsRepository,\n SubscriptionEditionFirestoreRepository,\n SubscriptionFirestoreRepository,\n SubscriptionMaterializationFirestoreRepository,\n SubscriptionMaterializationRepository,\n SubscriptionPaymentFirestoreRepository,\n SubscriptionPaymentRepository,\n SubscriptionPlanFirestoreRepository,\n SubscriptionPlanRepository,\n SubscriptionProductFirestoreRepository,\n SubscriptionProductRepository,\n SubscriptionRepository,\n SubscriptionSummaryFirestoreRepository,\n SubscriptionSummaryRepository,\n UserAddressFirestoreRepository,\n UserAddressRepository,\n UserBeautyProfileFirestoreRepository,\n UserFirestoreRepository,\n UserPaymentMethodFirestoreRepository,\n UserPaymentMethodRepository,\n UserRepository,\n VariantRepository,\n} from '@infrab4a/connect'\n\nimport { AngularElasticSeachModule } from './angular-elastic-search.module'\nimport { ES_CONFIG, FIREBASE_APP_NAME, FIREBASE_OPTIONS } from './consts'\nimport { STORAGE_BASE_URL } from './consts/storage-base-url.const'\nimport { MobileOperationSystemCheckerHelper } from './helpers'\nimport { FirebaseAppConfig } from './types'\n\nexport type FirestoreOptions = Pick<FirestoreConstructorParams<any>, 'firestore' | 'interceptors'>\n\n@NgModule({\n imports: [\n AngularElasticSeachModule,\n provideFirestore((injector: Injector) => {\n const platformId = injector.get(PLATFORM_ID)\n\n if (isPlatformServer(platformId) || !MobileOperationSystemCheckerHelper.isAppleDevice())\n return initializeFirestore(injector.get(FirebaseApp), {\n ignoreUndefinedProperties: true,\n })\n\n const firestore = initializeFirestore(injector.get(FirebaseApp), {\n experimentalForceLongPolling: true,\n ignoreUndefinedProperties: true,\n localCache: memoryLocalCache(),\n })\n\n return firestore\n }),\n provideStorage(() => getStorage()),\n ],\n providers: [\n {\n provide: 'FirestoreOptions',\n useFactory: (firestore: Firestore, platformId: string): FirestoreOptions => ({\n firestore: new ConnectFirestoreService(firestore),\n interceptors: {\n request: (request: FirestoreIntertceptorRequestParams<any> & { interval: NodeJS.Timeout }) => {\n if (isPlatformBrowser(platformId)) return request\n\n const interval = setInterval(() => {}, 100)\n\n request.interval = interval\n\n return request\n },\n response: (\n response: any,\n request: FirestoreIntertceptorRequestParams<any> & { interval: NodeJS.Timeout },\n ) => {\n if (isPlatformBrowser(platformId)) return response\n\n clearInterval(request.interval)\n\n return response\n },\n },\n }),\n deps: [Firestore, PLATFORM_ID],\n },\n {\n provide: 'BeautyProfileRepository',\n useFactory: (config: FirestoreOptions, userRepository: UserFirestoreRepository): BeautyProfileRepository => {\n return new UserBeautyProfileFirestoreRepository(config, userRepository)\n },\n deps: ['FirestoreOptions', 'UserRepository'],\n },\n {\n provide: 'Buy2WinRepository',\n useFactory: (options: FirestoreOptions): Buy2WinRepository => {\n return new Buy2WinFirestoreRepository(options)\n },\n deps: ['FirestoreOptions'],\n },\n {\n provide: CategoryFirestoreRepository,\n useFactory: (options: FirestoreOptions): CategoryRepository => {\n return new CategoryFirestoreRepository(options)\n },\n deps: ['FirestoreOptions'],\n },\n {\n provide: 'CheckoutRepository',\n useFactory: (options: FirestoreOptions): CheckoutRepository => {\n return new CheckoutFirestoreRepository(options)\n },\n deps: ['FirestoreOptions'],\n },\n {\n provide: 'CheckoutSubscriptionRepository',\n useFactory: (options: FirestoreOptions): CheckoutSubscriptionRepository => {\n return new CheckoutSubscriptionFirestoreRepository(options)\n },\n deps: ['FirestoreOptions'],\n },\n {\n provide: 'CouponRepository',\n useFactory: (options: FirestoreOptions): CouponRepository => {\n return new CouponFirestoreRepository(options)\n },\n deps: ['FirestoreOptions'],\n },\n {\n provide: 'CampaignHashtagRepository',\n useFactory: (options: FirestoreOptions): CampaignHashtagRepository => {\n return new CampaignHashtagFirestoreRepository(options)\n },\n deps: ['FirestoreOptions'],\n },\n {\n provide: 'CampaignDashboardRepository',\n useFactory: (options: FirestoreOptions): CampaignDashboardRepository => {\n return new CampaignDashboardFirestoreRepository(options)\n },\n deps: ['FirestoreOptions'],\n },\n {\n provide: 'EditionRepository',\n useFactory: (\n options: FirestoreOptions,\n subscriptionRepository: SubscriptionFirestoreRepository,\n ): EditionRepository => {\n return new SubscriptionEditionFirestoreRepository(options, subscriptionRepository)\n },\n deps: ['FirestoreOptions', 'SubscriptionRepository'],\n },\n {\n provide: 'HomeRepository',\n useFactory: (options: FirestoreOptions): HomeRepository => {\n return new HomeFirestoreRepository(options)\n },\n deps: ['FirestoreOptions'],\n },\n {\n provide: 'LeadRepository',\n useFactory: (options: FirestoreOptions): LeadRepository => {\n return new LeadFirestoreRepository(options)\n },\n deps: ['FirestoreOptions'],\n },\n {\n provide: 'LegacyOrderRepository',\n useFactory: (options: FirestoreOptions): LegacyOrderRepository => {\n return new LegacyOrderFirestoreRepository(options)\n },\n deps: ['FirestoreOptions'],\n },\n {\n provide: 'ShopMenuRepository',\n useFactory: (options: FirestoreOptions): ShopMenuRepository => {\n return new ShopMenuFirestoreRepository(options)\n },\n deps: ['FirestoreOptions'],\n },\n {\n provide: 'OrderRepository',\n useFactory: (options: FirestoreOptions): OrderRepository => {\n return new OrderFirestoreRepository(options)\n },\n deps: ['FirestoreOptions'],\n },\n {\n provide: 'PaymentRepository',\n useFactory: (options: FirestoreOptions): PaymentRepository => {\n return new PaymentFirestoreRepository(options)\n },\n deps: ['FirestoreOptions'],\n },\n {\n provide: ProductFirestoreRepository,\n useFactory: (options: FirestoreOptions): ProductRepository => {\n return new ProductFirestoreRepository(options)\n },\n deps: ['FirestoreOptions'],\n },\n {\n provide: 'ShopSettingsRepository',\n useFactory: (options: FirestoreOptions): ShopSettingsRepository => {\n return new ShopSettingsFirestoreRepository(options)\n },\n deps: ['FirestoreOptions'],\n },\n {\n provide: 'SubscriptionPaymentRepository',\n useFactory: (\n options: FirestoreOptions,\n subscriptionRepository: SubscriptionFirestoreRepository,\n ): SubscriptionPaymentRepository => {\n return new SubscriptionPaymentFirestoreRepository(options, subscriptionRepository)\n },\n deps: ['FirestoreOptions', 'SubscriptionRepository'],\n },\n {\n provide: 'SubscriptionPlanRepository',\n useFactory: (options: FirestoreOptions): SubscriptionPlanRepository => {\n return new SubscriptionPlanFirestoreRepository(options)\n },\n deps: ['FirestoreOptions'],\n },\n {\n provide: 'SubscriptionProductRepository',\n useFactory: (options: FirestoreOptions): SubscriptionProductRepository => {\n return new SubscriptionProductFirestoreRepository(options)\n },\n deps: ['FirestoreOptions'],\n },\n {\n provide: 'SubscriptionRepository',\n useFactory: (options: FirestoreOptions): SubscriptionRepository => {\n return new SubscriptionFirestoreRepository(options)\n },\n deps: ['FirestoreOptions'],\n },\n {\n provide: 'UserRepository',\n useFactory: (options: FirestoreOptions): UserRepository => {\n return new UserFirestoreRepository(options)\n },\n deps: ['FirestoreOptions'],\n },\n {\n provide: 'UserAddressRepository',\n useFactory: (options: FirestoreOptions, userRepository: UserFirestoreRepository): UserAddressRepository => {\n return new UserAddressFirestoreRepository(options, userRepository)\n },\n deps: ['FirestoreOptions', 'UserRepository'],\n },\n {\n provide: 'UserPaymentMethodRepository',\n useFactory: (options: FirestoreOptions, userRepository: UserFirestoreRepository): UserPaymentMethodRepository => {\n return new UserPaymentMethodFirestoreRepository(options, userRepository)\n },\n deps: ['FirestoreOptions', 'UserRepository'],\n },\n {\n provide: 'SubscriptionMaterializationRepository',\n useFactory: (options: FirestoreOptions): SubscriptionMaterializationRepository => {\n return new SubscriptionMaterializationFirestoreRepository(options)\n },\n deps: ['FirestoreOptions'],\n },\n {\n provide: 'SubscriptionSummaryRepository',\n useFactory: (options: FirestoreOptions): SubscriptionSummaryRepository => {\n return new SubscriptionSummaryFirestoreRepository(options)\n },\n deps: ['FirestoreOptions'],\n },\n {\n provide: ProductVariantFirestoreRepository,\n useFactory: (options: FirestoreOptions, productRepository: ProductFirestoreRepository): VariantRepository => {\n return new ProductVariantFirestoreRepository(options, productRepository)\n },\n deps: ['FirestoreOptions', ProductFirestoreRepository],\n },\n {\n provide: 'FileUploaderService',\n useFactory: (storage: Storage, baseUrl: string) => {\n return new FirebaseFileUploaderService(storage, baseUrl)\n },\n deps: [Storage, STORAGE_BASE_URL],\n },\n ],\n})\nexport class AngularFirestoreModule {\n static initializeApp(\n options: {\n firebase: FirebaseOptions\n elasticSearch: AxiosElasticSearchConfig\n },\n nameOrConfig?: string | FirebaseAppConfig,\n ): ModuleWithProviders<AngularFirestoreModule> {\n return {\n ngModule: AngularFirestoreModule,\n providers: [\n { provide: FIREBASE_OPTIONS, useValue: options.firebase },\n { provide: FIREBASE_APP_NAME, useValue: nameOrConfig },\n { provide: ES_CONFIG, useValue: options.elasticSearch },\n ],\n }\n }\n}\n","import { isPlatformBrowser } from '@angular/common'\nimport { ModuleWithProviders, NgModule, PLATFORM_ID } from '@angular/core'\nimport {\n CategoryCollectionChildrenHasuraGraphQLRepository,\n CategoryFilterHasuraGraphQLRepository,\n CategoryFilterRepository,\n CategoryHasuraGraphQLRepository,\n CategoryRepository,\n FilterHasuraGraphQLRepository,\n FilterOptionHasuraGraphQLRepository,\n FilterOptionRepository,\n FilterRepository,\n GraphQLParams,\n HasuraGraphQLAuthOptions,\n ProductHasuraGraphQLRepository,\n ProductRepository,\n ProductReviewsHasuraGraphQLRepository,\n ProductReviewsRepository,\n VariantHasuraGraphQLRepository,\n VariantRepository,\n WishlistHasuraGraphQLRepository,\n} from '@infrab4a/connect'\nimport { HASURA_OPTIONS } from './consts'\n\nexport type HasuraGraphQLOptions = { endpoint: string; credentials: HasuraGraphQLAuthOptions }\n\n@NgModule({\n providers: [\n {\n provide: 'HasuraConfig',\n useFactory: (options: HasuraGraphQLOptions, platformId: string) => ({\n endpoint: options.endpoint,\n authOptions: options.credentials,\n interceptors: {\n request: (request: GraphQLParams<any> & { interval: NodeJS.Timeout }) => {\n if (isPlatformBrowser(platformId)) return request\n\n const interval = setInterval(() => {}, 100)\n\n request.interval = interval\n\n return request\n },\n response: (response: any, request: GraphQLParams<any> & { interval: NodeJS.Timeout }) => {\n if (isPlatformBrowser(platformId)) return response\n\n clearInterval(request.interval)\n\n return response\n },\n },\n }),\n deps: [HASURA_OPTIONS, PLATFORM_ID],\n },\n {\n provide: 'CategoryRepository',\n useExisting: CategoryHasuraGraphQLRepository,\n },\n {\n provide: CategoryHasuraGraphQLRepository,\n useFactory: (\n options: any,\n productRepository: ProductHasuraGraphQLRepository,\n categoryFilterRepository: CategoryFilterHasuraGraphQLRepository,\n ): CategoryRepository => {\n return new CategoryHasuraGraphQLRepository(options, productRepository, categoryFilterRepository)\n },\n deps: ['HasuraConfig', ProductHasuraGraphQLRepository, CategoryFilterHasuraGraphQLRepository],\n },\n {\n provide: 'ProductRepository',\n useExisting: ProductHasuraGraphQLRepository,\n },\n {\n provide: ProductHasuraGraphQLRepository,\n useFactory: (hasuraConfig: any): ProductRepository => {\n return new ProductHasuraGraphQLRepository(hasuraConfig)\n },\n deps: ['HasuraConfig'],\n },\n {\n provide: 'ProductReviewsRepository',\n useExisting: ProductReviewsHasuraGraphQLRepository,\n },\n {\n provide: ProductReviewsHasuraGraphQLRepository,\n useFactory: (hasuraConfig: any): ProductReviewsRepository => {\n return new ProductReviewsHasuraGraphQLRepository(hasuraConfig)\n },\n deps: ['HasuraConfig'],\n },\n {\n provide: 'VariantRepository',\n useExisting: VariantHasuraGraphQLRepository,\n },\n {\n provide: VariantHasuraGraphQLRepository,\n useFactory: (hasuraConfig: any): VariantRepository => {\n return new VariantHasuraGraphQLRepository(hasuraConfig)\n },\n deps: ['HasuraConfig'],\n },\n\n {\n provide: 'CategoryFilterRepository',\n useExisting: CategoryFilterHasuraGraphQLRepository,\n },\n {\n provide: CategoryFilterHasuraGraphQLRepository,\n useFactory: (options: any): CategoryFilterRepository => {\n return new CategoryFilterHasuraGraphQLRepository(options)\n },\n deps: ['HasuraConfig'],\n },\n\n {\n provide: 'FilterOptionRepository',\n useExisting: FilterOptionHasuraGraphQLRepository,\n },\n {\n provide: FilterOptionHasuraGraphQLRepository,\n useFactory: (options: any): FilterOptionRepository => {\n return new FilterOptionHasuraGraphQLRepository(options)\n },\n deps: ['HasuraConfig'],\n },\n {\n provide: 'FilterRepository',\n useExisting: FilterHasuraGraphQLRepository,\n },\n {\n provide: FilterHasuraGraphQLRepository,\n useFactory: (\n options: any,\n filterOptionRepository: FilterOptionHasuraGraphQLRepository,\n categoryFilterRepository: CategoryFilterHasuraGraphQLRepository,\n ): FilterRepository => {\n return new FilterHasuraGraphQLRepository(options, filterOptionRepository, categoryFilterRepository)\n },\n deps: ['HasuraConfig', FilterOptionHasuraGraphQLRepository, CategoryFilterHasuraGraphQLRepository],\n },\n {\n provide: CategoryCollectionChildrenHasuraGraphQLRepository,\n useFactory: (options: any): CategoryCollectionChildrenHasuraGraphQLRepository =>\n new CategoryCollectionChildrenHasuraGraphQLRepository(options),\n deps: ['HasuraConfig'],\n },\n {\n provide: 'CategoryCollectionChildrenRepository',\n useExisting: CategoryCollectionChildrenHasuraGraphQLRepository,\n },\n {\n provide: WishlistHasuraGraphQLRepository,\n useFactory: (\n options: any,\n categoryFilterRepository: CategoryFilterHasuraGraphQLRepository,\n ): WishlistHasuraGraphQLRepository => {\n return new WishlistHasuraGraphQLRepository(options, categoryFilterRepository)\n },\n deps: ['HasuraConfig', CategoryFilterHasuraGraphQLRepository],\n },\n {\n provide: 'WishlistRepository',\n useExisting: WishlistHasuraGraphQLRepository,\n },\n ],\n})\nexport class AngularHasuraGraphQLModule {\n static initializeApp(options: {\n endpoint: string\n credentials: HasuraGraphQLAuthOptions\n }): ModuleWithProviders<AngularHasuraGraphQLModule> {\n return {\n ngModule: AngularHasuraGraphQLModule,\n providers: [{ provide: HASURA_OPTIONS, useValue: options }],\n }\n }\n}\n","import { Injectable } from '@angular/core'\nimport cookie from 'js-cookie'\nimport { Observable, from, of } from 'rxjs'\nimport { map } from 'rxjs/operators'\nimport { DataPersistence } from './data-persistence'\n\n@Injectable()\nexport class CookieDataPersistence implements DataPersistence {\n get(key: string): Observable<string> {\n return of(cookie.get(key))\n }\n\n remove(key: string): Observable<void> {\n return of(cookie.remove(key))\n }\n\n set(key: string, value: string): Observable<void> {\n return from(cookie.set(key, value)).pipe(map(() => {}))\n }\n}\n","import { Inject, Injectable } from '@angular/core'\nimport { Auth, User as FirebaseUser, authState, getIdToken } from '@angular/fire/auth'\nimport { User, UserRepository } from '@infrab4a/connect'\nimport { Observable, combineLatest, from, of } from 'rxjs'\nimport { catchError, map, mergeMap } from 'rxjs/operators'\n\n@Injectable()\nexport class AuthService {\n constructor(\n private readonly angularFireAuth: Auth,\n @Inject('UserRepository') private readonly userRepository: UserRepository,\n ) {}\n\n getAuthstate(): Observable<{ user: User; isAnonymous: boolean }> {\n const observables: [Observable<FirebaseUser>, Observable<User>] = [this.getFireUser(), this.getUser()]\n\n return combineLatest(observables).pipe(\n map(([fireUser, user]) => ({\n user,\n isAnonymous: fireUser?.isAnonymous,\n })),\n )\n }\n\n getUser(): Observable<User> {\n return this.getFireUser().pipe(\n map((user) => user?.uid),\n mergeMap((id) => (id ? from(this.userRepository.get({ id })).pipe(catchError(() => of(null))) : of(null))),\n )\n }\n\n getTokenId(): Observable<string> {\n return from(getIdToken(this.angularFireAuth.currentUser))\n }\n\n getFireUser(): Observable<FirebaseUser> {\n return authState(this.angularFireAuth).pipe(catchError(() => of(null)))\n }\n}\n","import { Inject, Injectable } from '@angular/core'\nimport {\n Category,\n CategoryRepository,\n Checkout,\n CheckoutSubscription,\n CheckoutTypes,\n Coupon,\n CouponRepository,\n CouponTypes,\n Exclusivities,\n LineItem,\n Order,\n OrderRepository,\n Shops,\n User,\n Where,\n} from '@infrab4a/connect'\nimport { Observable, from, of } from 'rxjs'\nimport { concatMap, map } from 'rxjs/operators'\nimport { DEFAULT_SHOP } from '../consts'\n\n@Injectable({\n providedIn: 'root',\n})\nexport class CouponService {\n constructor(\n @Inject('CouponRepository') private readonly couponRepository: CouponRepository,\n @Inject(DEFAULT_SHOP) private readonly defaultShop: Shops,\n @Inject('OrderRepository') private readonly orderRepository: OrderRepository,\n @Inject('CategoryRepository') private readonly categoryRepository: CategoryRepository,\n ) {}\n\n checkCoupon(\n nickname: string,\n checkoutType: CheckoutTypes,\n checkout: Partial<Checkout>,\n plan: string,\n ): Observable<Coupon> {\n return from(\n this.couponRepository\n .find({\n filters: {\n nickname: { operator: Where.EQUALS, value: nickname },\n active: { operator: Where.EQUALS, value: true },\n },\n })\n .then((result) => result.data[0]),\n ).pipe(\n concatMap((coupon) => this.couponValidation(coupon, checkoutType)),\n concatMap((couponValid: Coupon) => this.couponRulesValidation(couponValid, checkoutType, checkout, plan)),\n map((couponValidated: Coupon) => couponValidated as Coupon),\n )\n }\n\n private async couponValidation(coupon: Coupon, checkoutType: CheckoutTypes) {\n if (!coupon) throw 'Cupom inválido.'\n\n if (coupon?.beginAt && coupon?.beginAt.getTime() > new Date().getTime()) throw 'Cupom inválido.'\n\n if (coupon?.expiresIn && coupon?.expiresIn.getTime() < new Date().getTime()) throw 'Cupom expirado.'\n\n const isInShop = coupon.shopAvailability === Shops.ALL || coupon.shopAvailability === this.defaultShop\n\n if (!isInShop) throw 'Cupom inválido para loja.'\n\n const isCheckoutType = coupon.checkoutType === CheckoutTypes.ALL || coupon.checkoutType === checkoutType\n\n if (!isCheckoutType) throw 'Cupom inválido. Erro de checkout.'\n\n return coupon\n }\n\n private async couponRulesValidation(\n coupon: Coupon,\n checkoutType: CheckoutTypes,\n checkout: Partial<Checkout>,\n plan: string,\n ) {\n if (checkoutType == CheckoutTypes.SUBSCRIPTION) {\n if (coupon.plan && coupon.plan.toUpperCase() !== plan.toUpperCase()) throw 'Cupom inválido para sua assinatura.'\n\n return coupon\n }\n\n const validUser = this.coupomUserValidation(coupon, checkout?.user)\n\n if (!validUser) throw 'Usuário não elegível.'\n\n const couponUseLimits = this.getCouponUseLimits(coupon, checkoutType, checkout.user)\n\n if (couponUseLimits.firstOrder) {\n const ordersUser = await this.getOrdersFromUser(checkout.user.email.toLocaleLowerCase())\n if (couponUseLimits.firstOrder && ordersUser.length >= 1) throw 'Limite de uso atingido'\n }\n\n if (!couponUseLimits.unlimited || couponUseLimits.limitedPerUser) {\n const orders = await this.getOrdersWithCoupon(coupon)\n\n if (!couponUseLimits.unlimited && couponUseLimits.total && orders.length >= couponUseLimits.total)\n throw 'Limite de uso atingido.'\n\n if (couponUseLimits.limitedPerUser) {\n const ordersWithUser = this.countOrdersWithUser(orders, checkout.user.email)\n\n if (ordersWithUser > 0) throw 'Limite de uso por usuário atingido.'\n }\n }\n\n const hasProductCategories = await this.hasProductCategories(coupon, checkout)\n\n if (!hasProductCategories) throw 'Seu carrinho não possui produtos elegíveis para desconto.'\n\n const hasMinSubTotal = await this.hasMinSubTotal(coupon, checkout)\n\n if (!hasMinSubTotal)\n throw `Valor mínimo de ${Intl.NumberFormat('pt-BR', { style: 'currency', currency: 'BRL' }).format(\n coupon.minSubTotalValue,\n )} não atingido`\n\n return coupon\n }\n\n public calcDiscountSubscription(coupon: Coupon, checkout: Partial<CheckoutSubscription>): Observable<number> {\n let discount = 0\n\n if (coupon.discount.subscription.type == CouponTypes.ABSOLUTE) discount = coupon.discount.subscription.value\n else discount = checkout.subscriptionPlan.recurrencePrice * (coupon.discount.subscription.value / 100)\n\n return of(discount)\n }\n\n public async calcDiscountShopping(coupon: Coupon, checkout: Partial<Checkout>): Promise<number> {\n let discount = 0\n\n if (checkout.user.isSubscriber && coupon.discount.subscriber.value) {\n discount = await this.calcDiscountByType(\n coupon.discount.subscriber.type,\n coupon.discount.subscriber.value,\n coupon.productsCategories,\n checkout,\n )\n } else {\n discount = await this.calcDiscountByType(\n coupon.discount.non_subscriber.type,\n coupon.discount.non_subscriber.value,\n coupon.productsCategories,\n checkout,\n )\n }\n\n return discount\n }\n\n private async calcDiscountByType(\n type: CouponTypes,\n value: number,\n categories: string[],\n checkout: Partial<Checkout>,\n ): Promise<number> {\n let discount = 0\n\n let lineItensDiscount = await this.getLineItensEligebleForDiscount(categories, checkout)\n\n const subTotal = this.calcCheckoutSubtotal(lineItensDiscount, checkout.user, checkout.shop)\n\n if (type == CouponTypes.ABSOLUTE) {\n discount = value > subTotal ? subTotal : value\n } else {\n discount = subTotal * (value / 100)\n }\n\n return discount\n }\n\n private async hasMinSubTotal(coupon: Coupon, checkout: Partial<Checkout>): Promise<boolean> {\n if (!coupon.minSubTotalValue) return true\n\n let lineItensDiscount = await this.getLineItensEligebleForDiscount(coupon.productsCategories, checkout)\n\n const subTotal = this.calcCheckoutSubtotal(lineItensDiscount, checkout.user, checkout.shop)\n\n if (coupon.minSubTotalValue <= subTotal) return true\n\n return false\n }\n\n private async hasProductCategories(coupon: Coupon, checkout: Partial<Checkout>): Promise<boolean> {\n if (!coupon.productsCategories || !coupon.productsCategories.length) {\n return true\n }\n\n const couponCategories = await this.getCouponCategoriesId(coupon.productsCategories)\n\n const hasCategories = checkout.lineItems?.filter((i) => {\n if (!i.categories || !i.categories?.length) return true\n return i.categories.some((c) => couponCategories.some((cat) => cat == c))\n })\n\n return hasCategories.length ? true : false\n }\n\n private coupomUserValidation(coupon: Coupon, user: User) {\n if (!user || coupon.exclusivityType.includes(Exclusivities.ALL_USERS)) return true\n\n let userTypes: Exclusivities[] = []\n\n if (\n coupon.exclusivityType.includes(Exclusivities.COLLABORATORS) &&\n this.emailIsFromCollaborator(user.email.toLocaleLowerCase())\n )\n userTypes.push(Exclusivities.COLLABORATORS)\n\n if (\n coupon.exclusivityType.includes(Exclusivities.SPECIFIC_USER) &&\n coupon.userExclusiveEmail.includes(user.email.toLocaleLowerCase())\n )\n userTypes.push(Exclusivities.SPECIFIC_USER)\n\n if (\n coupon.exclusivityType.includes(Exclusivities.ACTIVE_SUBSCRIBER) &&\n user.isSubscriber &&\n user.subscriptionPlan != ''\n )\n userTypes.push(Exclusivities.ACTIVE_SUBSCRIBER)\n\n if (\n user.isSubscriber &&\n user.subscriptionPlan == '' &&\n coupon.exclusivityType.includes(Exclusivities.INACTIVE_SUBSCRIBER)\n )\n userTypes.push(Exclusivities.INACTIVE_SUBSCRIBER)\n\n if (coupon.exclusivityType.includes(Exclusivities.NON_SUBSCRIBER) && !user.isSubscriber)\n userTypes.push(Exclusivities.NON_SUBSCRIBER)\n\n return coupon.exclusivityType.some((r) => userTypes.includes(r))\n }\n\n private async getCouponCategoriesId(productsCategories: string[]): Promise<Array<String>> {\n const couponCategories: Array<String> = []\n\n for (let index = 0; index < productsCategories.length; index++) {\n const category: Category & { firestoreId?: string } = await this.categoryRepository.get({\n id: productsCategories[index],\n })\n\n if (category) {\n const children = await this.categoryRepository.getChildren(parseInt(productsCategories[index]))\n\n couponCategories.push(category.id, ...children.map((c) => c.id.toString()))\n }\n }\n\n return [...new Set(couponCategories)]\n }\n\n private emailIsFromCollaborator = (userEmail: string): boolean => !!userEmail?.match(/@b4a.com.br/g)\n\n private async getLineItensEligebleForDiscount(\n productsCategories: string[],\n checkout: Partial<Checkout>,\n ): Promise<LineItem[]> {\n let lineItensDiscount = []\n const couponCategories = await this.getCouponCategoriesId(productsCategories)\n\n if (productsCategories && productsCategories.length) {\n lineItensDiscount = checkout.lineItems?.filter((i) => {\n if (i.categories?.length) {\n return i.categories.some((c) => couponCategories.some((cat) => cat == c))\n }\n return true\n })\n } else {\n lineItensDiscount = checkout.lineItems\n }\n\n return lineItensDiscount\n }\n\n private calcCheckoutSubtotal(lineItens: LineItem[], user: User, shop: string): number {\n return (\n lineItens?.reduce(\n (acc, curr) =>\n user?.isSubscriber && curr.price.subscriberPrice\n ? acc + curr.price?.subscriberPrice * curr.quantity\n : acc + curr.pricePaid * curr.quantity,\n 0,\n ) || 0\n )\n }\n\n private async getOrdersWithCoupon(coupon: Coupon): Promise<Order[]> {\n return await this.orderRepository\n .find({\n filters: {\n coupon: { id: coupon.id },\n payment: { status: 'paid' },\n },\n })\n .then((result) => result.data)\n }\n\n private async getOrdersFromUser(email: string) {\n return await this.orderRepository\n .find({\n filters: {\n user: { email: { operator: Where.EQUALS, value: email } },\n payment: { status: 'paid' },\n },\n })\n .then((result) => result.data)\n }\n\n private countOrdersWithUser(orders: Order[], email: string): number {\n return orders.filter((o) => o.user.email == email).length\n }\n\n private getCouponUseLimits(coupon: Coupon, checkoutType: CheckoutTypes, user: User) {\n let couponUseLimits: { unlimited?: boolean; total?: number; limitedPerUser?: boolean; firstOrder?: boolean }\n if (checkoutType == CheckoutTypes.ECOMMERCE || checkoutType == CheckoutTypes.ALL) {\n couponUseLimits = user && user.isSubscriber ? coupon.useLimits.subscriber : coupon.useLimits.non_subscriber\n } else {\n couponUseLimits = coupon.useLimits.subscription\n }\n\n return couponUseLimits\n }\n}\n","import { Inject, Injectable } from '@angular/core'\nimport {\n Checkout,\n CheckoutRepository,\n CheckoutTypes,\n Coupon,\n NotFoundError,\n Shops,\n User,\n UserRepository,\n isNil,\n pick,\n} from '@infrab4a/connect'\nimport { Observable, from, of, throwError } from 'rxjs'\nimport { concatMap } from 'rxjs/operators'\n\nimport { DEFAULT_SHOP, PERSISTENCE_PROVIDER } from '../consts'\n\nimport { DataPersistence } from '../persistence'\nimport { CouponService } from './coupon.service'\nimport { RequiredCheckoutData } from './types'\n\n@Injectable()\nexport class CheckoutService {\n constructor(\n private readonly couponService: CouponService,\n @Inject('CheckoutRepository') private readonly checkoutRepository: CheckoutRepository,\n @Inject('UserRepository') private readonly userRepository: UserRepository,\n @Inject(DEFAULT_SHOP) private readonly defaultShop: Shops,\n @Inject(PERSISTENCE_PROVIDER) private readonly dataPersistence: DataPersistence,\n ) {}\n\n getCheckout(checkoutData?: RequiredCheckoutData): Observable<Checkout> {\n return this.dataPersistence\n .get('checkoutId')\n .pipe(concatMap((id) => (!isNil(id) ? this.checkoutRepository.get({ id }) : this.createCheckout(checkoutData))))\n }\n\n getUserByCheckout(checkoutId: string): Observable<User> {\n return from(this.checkoutRepository.get({ id: checkoutId })).pipe(\n concatMap((checkout) =>\n checkout?.user?.id ? of(checkout.user) : from(this.userRepository.get({ id: checkout.user.id })),\n ),\n concatMap((user) => of(user) || throwError(() => new NotFoundError('User is not found'))),\n )\n }\n\n updateCheckoutLineItems(checkout: Partial<Checkout>): Observable<Checkout> {\n return from(this.checkoutRepository.update(Checkout.toInstance({ id: checkout.id, lineItems: checkout.lineItems })))\n }\n\n updateCheckoutUser(checkout: Partial<Checkout>): Observable<Checkout> {\n return from(this.checkoutRepository.update(Checkout.toInstance({ id: checkout.id, user: checkout.user })))\n }\n\n clearCheckoutFromSession(): Observable<void> {\n return this.dataPersistence.remove('checkoutId')\n }\n\n calcDiscount(coupon: Coupon) {\n return this.getCheckout().pipe(\n concatMap(async (checkout) => await this.couponService.calcDiscountShopping(coupon, checkout)),\n )\n }\n\n checkCoupon(nickname: string, checkoutType: CheckoutTypes): Observable<Coupon> {\n return this.getCheckout().pipe(\n concatMap((checkout) => this.couponService.checkCoupon(nickname, CheckoutTypes.ECOMMERCE, checkout, null).pipe()),\n )\n }\n\n private async createCheckout(checkoutData?: RequiredCheckoutData): Promise<Checkout> {\n const checkout = await this.checkoutRepository.create({\n createdAt: new Date(),\n ...Checkout.toInstance(pick(checkoutData, ['user', 'shop'])).toPlain(),\n shop: checkoutData?.shop || this.defaultShop,\n })\n\n await this.dataPersistence.set('checkoutId', checkout.id).toPromise()\n\n return checkout\n }\n}\n","import { Inject, Injectable } from '@angular/core'\nimport {\n Buy2Win,\n Buy2WinFirestoreRepository,\n CategoryRepository,\n Checkout,\n isNil,\n LineItem,\n NotFoundError,\n Product,\n ProductRepository,\n RoundProductPricesHelper,\n ShopPrice,\n Shops,\n User,\n Variant,\n VariantRepository,\n Where,\n} from '@infrab4a/connect'\nimport { from, iif, Observable, of, Subject } from 'rxjs'\nimport { catchError, concatMap, map, mergeMap, tap } from 'rxjs/operators'\nimport { DEFAULT_SHOP } from '../consts'\nimport { AuthService } from './auth.service'\nimport { CheckoutService } from './checkout.service'\nimport { RequiredCheckoutData } from './types'\n\nexport type Cart = {\n [id: string]: LineItem\n}\n\n@Injectable()\nexport class CartService {\n private cartSubject: Subject<Cart> = new Subject()\n\n constructor(\n private readonly authService: AuthService,\n private readonly checkoutService: CheckoutService,\n @Inject(DEFAULT_SHOP) private readonly defaultShop: Shops,\n @Inject('ProductRepository') private readonly productRepository: ProductRepository,\n @Inject('CategoryRepository') private readonly categoryRepository: CategoryRepository,\n @Inject('VariantRepository') private readonly variantRepository: VariantRepository,\n @Inject('Buy2WinRepository') private readonly buy2WinRepository: Buy2WinFirestoreRepository,\n ) {}\n\n addItem(item: LineItem, quantity: number = 1): Observable<Cart> {\n return from(this.checkoutService.getCheckout()).pipe(\n concatMap(async (checkout) => await this.buildLineItem({ checkout, item, quantity: quantity || 1 })),\n mergeMap(({ checkout, lineItem }) => this.updateLineItemInCart(lineItem, quantity || 1, checkout as Checkout)),\n tap((cart) => this.cartSubject.next(cart)),\n )\n }\n\n decreaseItem(item: LineItem): Observable<Cart> {\n return this.checkoutService.getCheckout().pipe(\n map((checkout) => {\n const checkoutItem = checkout.lineItems?.find((lineItem) => lineItem.id === item.id)\n\n if (!isNil(checkoutItem)) checkoutItem.quantity -= checkoutItem.quantity > 1 ? 1 : 0\n\n return checkout\n }),\n concatMap((checkout) => this.checkoutService.updateCheckoutLineItems(checkout)),\n map((checkout) => this.generateCartObject(checkout.lineItems)),\n tap((cart) => this.cartSubject.next(cart)),\n )\n }\n\n getCart(checkout?: RequiredCheckoutData): Observable<Cart> {\n this.buildCartFromCheckout(checkout).subscribe((cart) => this.cartSubject.next(cart))\n\n return this.cartSubject\n }\n\n /**\n * @deprecated The method should not be used\n */\n getVariantPriceDiscount(item: LineItem): Observable<number> {\n return this.authService.getUser().pipe(\n concatMap((user) =>\n iif(\n () => user.isSubscriber && !!item.price.subscriberPrice,\n of(item.price.subscriberPrice),\n of(item.price.price),\n ),\n ),\n catchError(() => of(item.price.price)),\n )\n }\n\n removeItem(item: LineItem): Observable<Cart> {\n return this.checkoutService.getCheckout().pipe(\n map((checkout) => {\n const index = checkout.lineItems.findIndex((lineItem) => lineItem.id === item.id)\n\n if (index >= 0) checkout.lineItems.splice(index, 1)\n\n return checkout\n }),\n concatMap((checkout) => this.checkoutService.updateCheckoutLineItems(checkout)),\n map((checkout) => this.generateCartObject(checkout.lineItems)),\n tap((cart) => this.cartSubject.next(cart)),\n )\n }\n\n updateUserCart(user: User): Observable<Cart> {\n return this.checkoutService.getCheckout().pipe(\n concatMap((checkout) =>\n this.checkoutService.updateCheckoutUser(Checkout.toInstance({ ...checkout.toPlain(), user })),\n ),\n concatMap(\n async (checkout) =>\n await this.checkoutService\n .updateCheckoutLineItems(\n Checkout.toInstance({\n ...checkout.toPlain(),\n lineItems: checkout.lineItems?.length\n ? await Promise.all(\n checkout.lineItems?.map(async (item) => (await this.buildLineItem({ checkout, item })).lineItem),\n )\n : [],\n }),\n )\n .toPromise(),\n ),\n map((checkout) => this.generateCartObject(checkout.lineItems)),\n tap((cart) => this.cartSubject.next(cart)),\n )\n }\n\n clearCart(): Observable<Cart> {\n return this.checkoutService.getCheckout().pipe(\n map((checkout) => {\n this.checkoutService.clearCheckoutFromSession()\n return checkout\n }),\n concatMap((oldCheckout) => this.buildCartFromCheckout(oldCheckout)),\n tap((cart) => this.cartSubject.next(cart)),\n )\n }\n\n private buildCartFromCheckout(checkoutData?: RequiredCheckoutData): Observable<Cart> {\n return this.checkoutService.getCheckout(checkoutData).pipe(\n map((checkout) => checkout.lineItems),\n concatMap((lineItems) => of(this.generateCartObject(lineItems))),\n )\n }\n\n private updateLineItemInCart = (lineItem: LineItem, quantity: number, checkout?: Checkout): Observable<Cart> =>\n (isNil(checkout) ? this.checkoutService.getCheckout() : of(checkout)).pipe(\n concatMap((checkoutLoaded) => {\n const items: LineItem[] = []\n const index = checkoutLoaded.lineItems?.map((checkoutItem) => checkoutItem.id).indexOf(lineItem.id)\n\n if (index > -1) {\n checkoutLoaded.lineItems[index].quantity += quantity\n checkoutLoaded.lineItems[index].pricePaid = lineItem.pricePaid\n } else\n checkoutLoaded.lineItems = items.concat(\n checkoutLoaded.lineItems ? checkoutLoaded.lineItems.concat([lineItem]) : [lineItem],\n )\n\n return this.checkoutService\n .updateCheckoutLineItems(checkoutLoaded)\n .pipe(map((updatedCheckout) => this.generateCartObject(updatedCheckout.lineItems)))\n }),\n )\n\n private generateCartObject = (items: LineItem[]): Cart =>\n items?.reduce(\n (cart, item) => ({\n ...cart,\n [item.id]: LineItem.toInstance({\n ...(cart[item.id] || item),\n quantity: (cart[item.id]?.quantity || 0) + (item.quantity ? item.quantity : 1),\n }),\n }),\n {} as Record<string, LineItem>,\n ) || {}\n\n private buildLineItem = async ({\n checkout,\n item,\n quantity,\n }: {\n checkout: RequiredCheckoutData\n item: LineItem\n quantity?: number\n }): Promise<{ checkout: Partial<Checkout>; lineItem: LineItem }> => {\n const product = await this.getProductData(item.id)\n\n item.quantity = item?.quantity || checkout?.lineItems?.find((lineItem) => lineItem.id === item.id)?.quantity || 0\n\n if (this.checkMaxStock(item, quantity || 0))\n throw new Error('Desculpe! Temos apenas ' + item.stock?.quantity + ' em estoque.')\n\n const image = item.image || item.images?.shift()\n const { id, name, EAN, slug, stock, price, weight, sku, type } = item\n const isGift = item.isGift || null\n const pricePaid = this.getProductPrice({\n product: item,\n shop: checkout.shop || this.defaultShop,\n isSubscriber: checkout.user?.isSubscriber,\n })\n\n RoundProductPricesHelper.roundProductPrices(item)\n\n return {\n checkout,\n lineItem: LineItem.toInstance({\n id,\n name: name ?? product.name,\n EAN: EAN ?? product.EAN,\n brand: product.brand,\n slug: slug ?? product.slug,\n sku: sku ?? product.sku,\n stock,\n price: this.roundPrice(price),\n image,\n weight: weight ?? product.weight,\n quantity: (item.quantity || 0) + (quantity || 0),\n pricePaid,\n categories: product.categories ?? [],\n isGift: isGift ?? null,\n costPrice: product.costPrice ?? 0,\n type,\n }),\n }\n }\n\n private roundPrice(productPrice: ShopPrice): ShopPrice {\n const { price, fullPrice, subscriberPrice } = productPrice\n return {\n ...productPrice,\n price: Number(price.toFixed(2)),\n fullPrice: Number(fullPrice.toFixed(2)),\n ...(subscriberPrice && { subscriberPrice: Number(subscriberPrice.toFixed(2)) }),\n }\n }\n\n private async getProductData(productId: string): Promise<Partial<Product>> {\n let product: Product\n let variant: Variant\n\n try {\n product = await this.productRepository.get({ id: productId })\n } catch (error) {\n if (!(error instanceof NotFoundError)) throw error\n\n const { data: variants } = await this.variantRepository.find({ filters: { id: productId } })\n\n variant = variants.shift()\n\n if (!variant) throw error\n\n product = await this.productRepository.get({ id: variant.productId })\n }\n\n return {\n ...product.toPlain(),\n ...(variant && { ...variant.toPlain() }),\n }\n }\n\n private getProductPrice = ({\n product,\n isSubscriber,\n }: {\n product: LineItem\n shop: Shops\n isSubscriber: boolean\n }): number => {\n const info = product.price\n\n if (product.isGift) return 0\n\n return isSubscriber && info.subscriberPrice > 0\n ? Number(info.subscriberPrice.toFixed(2))\n : Number(info.price.toFixed(2))\n }\n\n private checkMaxStock = (item: LineItem, quantity: number) => {\n const maxStock = item.stock?.quantity || 0\n const currentItemAmount = item.quantity || 0\n\n return currentItemAmount + quantity > maxStock\n }\n\n getGifts() {\n return this.checkoutService.getCheckout().pipe(\n mergeMap(async (checkout) => {\n const notGiftItems: LineItem[] = checkout.lineItems ? checkout.lineItems.filter((item) => !item.isGift) : []\n\n if (!notGiftItems.length) return { ...checkout, lineItems: [] } as Checkout\n\n const cartTotal = notGiftItems.reduce((a, b) => a + b.pricePaid * b.quantity, 0)\n\n const campaigns = await this.buy2WinRepository\n .find({\n filters: {\n active: { operator: Where.EQUALS, value: true },\n shop: { operator: Where.EQUALS, value: this.defaultShop },\n },\n })\n .then((data) => data.data)\n\n if (!campaigns.length) return { ...checkout, lineItems: notGiftItems } as Checkout\n\n const elegibleCampaigns: Buy2Win[] = []\n\n for (const campaign of campaigns) {\n const today = new Date().getTime()\n\n if (!(campaign.startDate.getTime() <= today) && !(campaign.endDate.getTime() >= today)) continue\n\n if (campaign.activeCategory) {\n const categoriesCampaing = campaign.categories.map((c) => c.id.toString())\n const categoriesCampaingFullTree = []\n\n for (const id of categoriesCampaing) {\n const children = await this.categoryRepository.getChildren(parseInt(id))\n\n categoriesCampaingFullTree.push(id, ...children.map((c) => c.id.toString()))\n }\n\n const categoriesCampaingTree = [...new Set(categoriesCampaingFullTree)]\n const filterProductsCategories = checkout.lineItems.filter((l) => {\n if (!l.categories || !l.categories?.length) return true\n\n return l.categories.some((c) => categoriesCampaingTree.some((cat) => cat == c))\n })\n\n if (filterProductsCategories.length) {\n const cartTotalCategories = filterProductsCategories.reduce((a, b) => a + b.pricePaid * b.quantity, 0)\n\n if (cartTotalCategories >= campaign.cartValueMin) elegibleCampaigns.push(campaign)\n }\n } else {\n if (campaign.cartValue && campaign.cartValue > 0) {\n if (campaign.cartValue <= cartTotal) elegibleCampaigns.push(campaign)\n }\n }\n }\n\n if (!elegibleCampaigns.length) return { ...checkout, lineItems: notGiftItems } as Checkout\n\n const campaingnProducts: Product[][] = []\n\n for (const campaign of elegibleCampaigns) {\n let elegibleProducts = []\n\n for (const product of campaign.products) {\n const { data: productData } = await this.productRepository.find({ filters: { sku: product } })\n\n if (!productData.length) continue\n\n const gift = productData.shift()\n\n if (gift.stock.quantity < 1) continue\n\n elegibleProducts.push(gift)\n }\n\n campaingnProducts.push(elegibleProducts)\n }\n\n if (!campaingnProducts.length) return { ...checkout, lineItems: notGiftItems } as Checkout\n\n const gifts = this.giftToLineItems([].concat(...campaingnProducts))\n\n return { ...checkout, lineItems: notGiftItems.concat(gifts) }\n }),\n concatMap((checkout) => this.checkoutService.updateCheckoutLineItems(checkout)),\n map((checkout) => this.generateCartObject(checkout.lineItems)),\n tap((cart) => this.cartSubject.next(cart)),\n )\n }\n\n private giftToLineItems(items: Product[]): LineItem[] {\n return items.map((item) => {\n const { brand, categories, id, name, price, sku, slug, stock, weight, EAN } = item\n\n const image = item?.miniatures?.length ? item.miniatures[0] : item.images[0]\n\n return LineItem.toInstance({\n brand,\n categories,\n id: id.toString(),\n name,\n price,\n sku,\n slug,\n stock,\n weight,\n EAN,\n image,\n pricePaid: 0,\n quantity: 1,\n isGift: true,\n })\n })\n }\n}\n","import { Inject, Injectable } from '@angular/core'\nimport { Category, CategoryRepository, isNil, Product, RepositoryFindFielters, Where } from '@infrab4a/connect'\nimport { CategoryStructureAdapter } from './category-structure.adapter'\n\n@Injectable()\nexport class NewCategoryStructureAdapter implements CategoryStructureAdapter {\n constructor(@Inject('CategoryRepository') private readonly categoryRepository: CategoryRepository) {}\n\n async buildProductFilterByCategory(category: Category): Promise<RepositoryFindFielters<Product>> {\n const loadedCategory = await this.getCategory(category)\n\n if (loadedCategory.isCollection) return { id: { operator: Where.IN, value: loadedCategory.products } }\n\n const categoryIds = [...(await this.getAllCategoriesIdFromCategory(category)), category.id.toString()]\n\n return {\n category: {\n id: {\n operator: Where.IN,\n value: categoryIds,\n },\n },\n }\n }\n\n private async getAllCategoriesIdFromCategory(category: Category): Promise<string[]> {\n return this.categoryRepository\n .getChildren(+category.id)\n .then((categories) => categories.map((category) => category.id.toString()))\n }\n\n private async getCategory(category: Category): Promise<Category> {\n const collectionCategory =\n category.isCollection ||\n (isNil(category.isCollection) && !category.products?.length) ||\n category.isWishlist ||\n category.brandCategory\n\n return collectionCategory ? this.categoryRepository.get({ id: category.id }) : category\n }\n}\n","import { Inject, Injectable } from '@angular/core'\nimport { Category, CategoryRepository, Product, RepositoryFindFielters, Where } from '@infrab4a/connect'\nimport { CategoryStructureAdapter } from './category-structure.adapter'\n\n@Injectable()\nexport class OldCategoryStructureAdapter implements CategoryStructureAdapter {\n constructor(@Inject('CategoryRepository') private readonly categoryRepository: CategoryRepository) {}\n\n async buildProductFilterByCategory(category: Category): Promise<RepositoryFindFielters<Product>> {\n const productsIds = category.products?.length\n ? category.products\n : await this.categoryRepository.get({ id: category.id }).then((categoryFound) => categoryFound.products)\n\n return { id: { operator: Where.IN, value: productsIds } }\n }\n}\n","import { Inject, Injectable } from '@angular/core'\nimport {\n Category,\n CategoryRepository,\n FindRepositoryParams,\n InvalidArgumentError,\n Product,\n ProductGender,\n ProductRepository,\n ProductsIndex,\n RepositoryFindFielters,\n RepositoryFindResult,\n RepositoryOrderBy,\n RoundProductPricesHelper,\n set,\n Shops,\n Where,\n} from '@infrab4a/connect'\nimport { CATEGORY_STRUCTURE, DEFAULT_SHOP } from '../../consts'\nimport { CategoryStructureAdapter } from './adapters'\nimport { ProductSort } from './types/product-sort.type'\n\ntype FetchProductsFilters = {\n clubDiscount?: number[]\n brands?: string[]\n prices?: { min?: number; max?: number; subscriberPrice?: boolean }\n gender?: ProductGender[]\n rate?: number\n customOptions?: string[]\n tags?: string[]\n}\n\ntype FetchProductsOptions = {\n page?: number\n perPage?: number\n sort?: ProductSort\n mainGender?: ProductGender\n}\n\ntype FetchProductsMainParams<T extends Category> = {\n category?: T\n profile?: string[]\n term?: string\n}\n\ntype FetchProductsParams<T extends Category> = FetchProductsOptions &\n (\n | {\n category: FetchProductsMainParams<T>['category']\n filters?: FetchProductsFilters & { customOptions?: never }\n }\n | {\n profile: FetchProductsMainParams<T>['profile']\n filters?: FetchProductsFilters & { customOptions?: never; tags?: never }\n }\n | {\n term: FetchProductsMainParams<T>['term']\n filters?: FetchProductsFilters & { customOptions?: never }\n }\n )\n\ntype FetchProductsResponse = {\n products: { data: Product[]; total: number }\n pages: number\n prices: {\n price: { min: number; max: number }\n subscriberPrice: { min: number; max: number }\n }\n brands?: string[]\n}\n\n@Injectable()\nexport class CatalogService<T extends Category = Category> {\n private productsByTerm: Record<string, string[]> = {}\n\n constructor(\n @Inject('ProductRepository') private readonly productRepository: ProductRepository,\n @Inject('CategoryRepository') private readonly categoryRepository: CategoryRepository,\n @Inject(CATEGORY_STRUCTURE) private readonly categoryStructureAdapter: CategoryStructureAdapter,\n @Inject(DEFAULT_SHOP) private readonly shop: Shops,\n private readonly productIndex: ProductsIndex,\n ) {}\n\n async fetchProducts(options: FetchProductsParams<T>): Promise<FetchProductsResponse> {\n const limits = this.buildLimitQuery(options)\n\n if (this.hasProfile(options) && options.filters?.customOptions)\n throw new InvalidArgumentError(`It couldn't filled customOptions when profile is given`)\n if (this.hasProfile(options) && options.filters?.tags)\n throw new InvalidArgumentError(`It couldn't filled tags when profile is given`)\n if (this.hasTerm(options) && options.filters?.customOptions)\n throw new InvalidArgumentError(`It couldn't filled customOptions when term is given`)\n\n return await this.findCatalog(options, limits).then(({ data, count: total, maximum, minimal, distinct }) => ({\n products: { data: data.map((product) => RoundProductPricesHelper.roundProductPrices(product)), total },\n pages: Math.ceil(total / limits.limit),\n prices: {\n price: { min: +minimal?.price?.price?.toFixed(2), max: +maximum?.price?.price?.toFixed(2) },\n subscriberPrice: {\n min: +minimal?.price?.subscriberPrice?.toFixed(2),\n max: +maximum?.price?.subscriberPrice?.toFixed(2),\n },\n },\n brands: distinct?.brand,\n }))\n }\n\n private async findCatalog(\n options: FetchProductsParams<T>,\n limits: {\n limit?: number\n offset?: number\n },\n ): Promise<RepositoryFindResult<Product>> {\n if (this.hasTerm(options) && options.sort === 'most-relevant') {\n const productsIds = await this.findCatalogIdsByElasticSearch(options.term)\n\n return this.findCatalogAndSortByMostRevelant(productsIds, options, limits)\n }\n\n if (this.hasCategory(options) && options.sort === 'most-relevant') {\n const productsIds = await this.productRepository\n .find({\n filters: {\n ...(await this.buildMainFilter(options)),\n },\n })\n .then((products) => products.data.map((product) => product.id))\n\n return this.findCatalogAndSortByMostRevelant(productsIds, options, limits)\n }\n\n const repoParams: FindRepositoryParams<Product> = {\n filters: {\n ...(await this.buildMainFilter(options)),\n ...this.buildFilterQuery(options?.filters || {}),\n },\n ...(options?.sort ? { orderBy: this.buildSortQuery(options?.sort) } : {}),\n limits,\n options: {\n minimal: ['price'],\n maximum: ['price'],\n ...(!this.hasCategory(options) ? { distinct: ['brand'] } : {}),\n },\n }\n\n if (['biggest-price', 'lowest-price', 'biggest-discount', 'best-rating'].includes(options.sort))\n return this.productRepository.findCatalog(repoParams)\n\n return this.productRepository.findCatalog(\n repoParams,\n options?.mainGender || this.shop === Shops.MENSMARKET ? 'male' : 'female',\n )\n }\n\n private async buildMainFilter({\n category,\n profile,\n term,\n }: FetchProductsMainParams<T>): Promise<RepositoryFindFielters<Product>> {\n if (category) return this.categoryStructureAdapter.buildProductFilterByCategory(category)\n if (profile) return { tags: { operator: Where.LIKE, value: profile } }\n if (term)\n return this.productIndex\n .search(term, 999, this.shop)\n .then((data) => ({ id: { operator: Where.IN, value: data.hits.map(({ _source }) => _source.id) } }))\n }\n\n private async findCatalogAndSortByMostRevelant(\n productIds: string[],\n options: Omit<FetchProductsOptions, 'sort'> & {\n term?: FetchProductsMainParams<T>['term']\n filters?: FetchProductsFilters & { customOptions?: never }\n },\n limits: {\n limit?: number\n offset?: number\n },\n ): Promise<RepositoryFindResult<Product>> {\n const totalResult = await this.productRepository.findCatalog(\n {\n fields: ['id', 'stock'],\n filters: {\n id: { operator: Where.IN, value: productIds },\n ...this.buildFilterQuery(options?.filters || {}),\n },\n options: {\n minimal: ['price'],\n maximum: ['price'],\n distinct: ['brand'],\n },\n },\n options?.mainGender || this.shop === Shops.MENSMARKET ? 'male' : 'female',\n )\n\n const stockData = totalResult.data.filter((product) => product.stock.quantity > 0)\n const stockOut = totalResult.data.filter((product) => product.stock.quantity <= 0)\n const productIdsStock = productIds.filter((product) => stockData.some((result) => result.id == product))\n const productIdsStockOut = productIds.filter((product) => stockOut.some((result) => result.id == product))\n\n const limitedProductId = productIdsStock\n .concat(productIdsStockOut)\n .slice(limits.offset, limits.offset + limits.limit)\n\n const orderedId = productIds.filter((product) => limitedProductId.includes(product))\n const productResult = await this.productRepository.findCatalog({\n filters: {\n id: { operator: Where.IN, value: orderedId },\n },\n })\n\n return {\n data: limitedProductId.map((id) => productResult.data.find((product) => product.id === id)).filter(Boolean),\n count: totalResult.count,\n maximum: totalResult.maximum,\n minimal: totalResult.minimal,\n distinct: totalResult.distinct,\n }\n }\n\n private async findCatalogIdsByElasticSearch(term: string): Promise<string[]> {\n if (this.productsByTerm[term]) return this.productsByTerm[term]\n\n return (this.productsByTerm[term] = await this.productIndex\n .search(term, 999, this.shop)\n .then(({ hits: products }) => {\n const withStock = products.filter(({ _source }) => _source.stock.quantity > 0)\n const withOutStock = products.filter(({ _source }) => _source.stock.quantity <= 0)\n const sorted = [...withStock, ...withOutStock]\n\n return [...new Set(sorted.map(({ _source }) => _source.id))]\n }))\n }\n\n private buildFilterQuery = ({\n clubDiscount,\n brands,\n prices,\n gender,\n tags,\n rate,\n customOptions,\n }: FetchProductsFilters): RepositoryFindFielters<Product> => {\n const filters = {} as RepositoryFindFielters<Product>\n\n if (clubDiscount?.length)\n set(filters, 'price.subscriberDiscountPercentage', { operator: Where.IN, value: clubDiscount })\n if (brands?.length) filters.brand = { operator: Where.IN, value: brands }\n if (gender?.length) filters.gender = { operator: Where.IN, value: gender }\n if (prices?.min || prices?.max)\n set(filters, prices.subscriberPrice ? 'price.subscriberPrice' : 'price.price', [\n ...(prices.min ? [{ operator: Where.GTE, value: Math.round(prices.min) }] : []),\n ...(prices.max ? [{ operator: Where.LTE, value: Math.ceil(prices.max) }] : []),\n ])\n if (rate) filters.rate = { operator: Where.GTE, value: rate }\n if (tags?.length) filters.tags = { operator: Where.LIKE, value: tags }\n if (customOptions?.length) filters.filters = { operator: Where.LIKE, value: customOptions }\n\n return filters\n }\n\n private buildSortQuery = (sort: ProductSort): RepositoryOrderBy<Product> => {\n if (!sort || sort === 'most-relevant') return {}\n\n if (sort === 'best-sellers')\n return {\n shoppingCount: 'desc',\n rate: 'desc',\n stock: 'desc',\n name: 'asc',\n }\n if (sort === 'biggest-price') return { subscriberPrice: 'desc', rate: 'desc', shoppingCount: 'desc' } as any\n if (sort === 'lowest-price') return { subscriberPrice: 'asc', rate: 'desc', shoppingCount: 'desc' } as any\n if (sort === 'best-rating') return { rate: 'desc', shoppingCount: 'desc', stock: 'desc', name: 'asc' }\n if (sort === 'news') return { createdAt: 'desc' }\n if (sort === 'biggest-discount')\n return { subscriberDiscountPercentage: 'desc', rate: 'desc', shoppingCount: 'desc' } as any\n }\n\n private buildLimitQuery = (options: { page?: number; perPage?: number }): { limit?: number; offset?: number } => {\n const limit = options?.perPage || 20\n\n return {\n limit,\n offset: ((options?.page || 1) - 1) * limit,\n }\n }\n\n private hasProfile = (\n options: FetchProductsParams<T>,\n ): options is FetchProductsOptions & {\n profile: FetchProductsMainParams<T>['profile']\n filters?: FetchProductsFilters & { customOptions?: never; tags?: never }\n } => 'profile' in options\n\n private hasTerm = (\n options: FetchProductsParams<T>,\n ): options is FetchProductsOptions & {\n term: FetchProductsMainParams<T>['term']\n filters?: FetchProductsFilters & { customOptions?: never }\n } => 'term' in options\n\n private hasCategory = (\n options: FetchProductsParams<T>,\n ): options is FetchProductsOptions & {\n category: FetchProductsMainParams<T>['category']\n filters?: FetchProductsFilters & { customOptions?: never }\n } => 'category' in options\n}\n","import { Inject, Injectable } from '@angular/core'\nimport {\n Category,\n CategoryFilterRepository,\n CategoryRepository,\n Filter,\n ProductGender,\n ProductRepository,\n Shops,\n} from '@infrab4a/connect'\nimport { CATEGORY_STRUCTURE, DEFAULT_SHOP } from '../../consts'\nimport { CategoryStructureAdapter } from './adapters'\n\ntype FetchBrandsOptions = {\n mainGender?: ProductGender\n shop?: Shops\n}\n\n@Injectable()\nexport class CategoryService {\n constructor(\n @Inject('ProductRepository') private readonly productRepository: ProductRepository,\n @Inject('CategoryRepository') private readonly categoryRepository: CategoryRepository,\n @Inject('CategoryFilterRepository') private readonly categoryFilterRepository: CategoryFilterRepository,\n @Inject(CATEGORY_STRUCTURE) private readonly categoryStructureAdapter: CategoryStructureAdapter,\n @Inject(DEFAULT_SHOP) private readonly shop: Shops,\n ) {}\n\n async fetchBrands(category: Category, options?: FetchBrandsOptions): Promise<Category[]> {\n const brands = await this.productRepository\n .findCatalog(\n {\n filters: await this.categoryStructureAdapter.buildProductFilterByCategory(category),\n fields: ['brand'],\n },\n options?.mainGender ? options?.mainGender : this.shop === Shops.MENSMARKET ? 'male' : 'female',\n )\n .then(({ data }) =>\n Object.keys(data.map((product) => product.brand).reduce((brands, brand) => ({ ...brands, [brand]: true }), {})),\n )\n\n return this.categoryRepository\n .find({ filters: { brandCategory: true, shop: options?.shop || this.shop }, orderBy: { name: 'asc' } })\n .then(({ data }) => data.filter((category) => brands.includes(category.conditions.brand)))\n }\n\n async fetchFilterOptions(category: Category): Promise<Filter[]> {\n return await this.categoryFilterRepository\n .find({ filters: { categoryId: +category.id } })\n .then(({ data }) => data.map((categoryFilter) => categoryFilter.filter))\n }\n}\n","export enum ProductSorts {\n MOST_RELEVANT = 'most-relevant',\n BEST_SELLER = 'best-sellers',\n BIGGEST_PRICE = 'biggest-price',\n LOWEST_PRICE = 'lowest-price',\n BIGGEST_DISCOUNT = 'biggest-discount',\n BEST_RATING = 'best-rating',\n NEWS = 'news',\n}\n","import { Type } from 'class-transformer'\n\nimport { Category } from '@infrab4a/connect'\n\nexport class CategoryWithTree extends Category {\n @Type(() => CategoryWithTree)\n children?: CategoryWithTree[]\n}\n","import { Inject, Injectable } from '@angular/core'\nimport {\n CategoryFilterRepository,\n CategoryRepository,\n ProductRepository,\n ProductsIndex,\n Shops,\n Wishlist,\n WishlistRepository,\n} from '@infrab4a/connect'\nimport { DEFAULT_SHOP } from '../../consts'\nimport { NewCategoryStructureAdapter } from './adapters'\nimport { CatalogService } from './catalog.service'\nimport { CategoryService } from './category.service'\n\n@Injectable()\nexport class WishlistService {\n private catalogService: CatalogService\n private categoryService: CategoryService\n\n constructor(\n @Inject('WishlistRepository') private readonly wishlistRepository: WishlistRepository,\n @Inject(DEFAULT_SHOP) private readonly shop: Shops,\n @Inject('ProductRepository') productRepository: ProductRepository,\n @Inject('CategoryFilterRepository') categoryFilterRepository: CategoryFilterRepository,\n @Inject('CategoryRepository') categoryRepository: CategoryRepository,\n productIndex: ProductsIndex,\n ) {\n const categoryStructureAdapter = new NewCategoryStructureAdapter(wishlistRepository)\n\n this.catalogService = new CatalogService<Wishlist>(\n productRepository,\n categoryRepository,\n categoryStructureAdapter,\n shop,\n productIndex,\n )\n this.categoryService = new CategoryService(\n productRepository,\n categoryRepository,\n categoryFilterRepository,\n categoryStructureAdapter,\n shop,\n )\n }\n\n getCatalogService() {\n return this.catalogService\n }\n\n getCategoryService() {\n return this.categoryService\n }\n\n async create({\n personId,\n title,\n description,\n userFullName,\n userPhoto,\n theme,\n bannerUrl,\n }: {\n personId: string\n title: string\n description: string\n userFullName: string\n userPhoto?: string\n theme?: string\n bannerUrl?: string\n }): Promise<Wishlist> {\n const data = {\n slug: '',\n name: title,\n description,\n metadata: {\n title: `${userFullName} - ${title}`,\n description: `${userFullName} - ${description}`,\n },\n shop: this.shop,\n shops: [this.shop],\n personId,\n personName: userFullName,\n personPhoto: userPhoto,\n brandCategory: false,\n published: true,\n theme,\n bannerUrl,\n }\n\n const newWishlist = await this.wishlistRepository.create(data)\n\n await this.wishlistRepository.update({ id: newWishlist.id, slug: newWishlist.id })\n\n return Wishlist.toInstance({ ...newWishlist.toPlain(), slug: newWishlist.id })\n }\n\n update({\n id,\n title,\n description,\n userFullName,\n userPhoto,\n theme,\n bannerUrl,\n }: {\n id: string\n title: string\n description: string\n userFullName: string\n userPhoto?: string\n theme?: string\n bannerUrl?: string\n }): Promise<Wishlist> {\n const data = {\n id,\n name: title,\n description,\n metadata: {\n title: `${userFullName} - ${title}`,\n description: `${userFullName} - ${description}`,\n },\n personName: userFullName,\n personPhoto: userPhoto,\n theme,\n bannerUrl,\n }\n\n return this.wishlistRepository.update(data)\n }\n\n delete(wishlistId: string): Promise<void> {\n return this.wishlistRepository.delete({ id: wishlistId })\n }\n\n getWishlistBySlug(slug: string): Promise<Wishlist> {\n const [id] = slug.split('-')\n\n if (+id) return this.wishlistRepository.get({ id })\n\n return this.wishlistRepository.getWishlistBySlug(slug)\n }\n\n getWishlistsByPerson(personId: string): Promise<Wishlist[]> {\n return this.wishlistRepository.getWishlistByPerson(personId)\n }\n\n async addProduct(wishlistId: string, productId: string): Promise<Wishlist> {\n const wishlist = await this.wishlistRepository.get({ id: wishlistId })\n const hasProduct = wishlist.products.some((p) => p == productId)\n\n if (!hasProduct) {\n wishlist.products = [...wishlist.products, productId]\n return this.wishlistRepository.update({ id: wishlistId, products: wishlist.products })\n }\n\n return wishlist\n }\n\n async removeProduct(wishlistId: string, productId: string): Promise<Wishlist> {\n const wishlist = await this.wishlistRepository.get({ id: wishlistId })\n const productIndex = wishlist.products.findIndex((p) => p == productId)\n\n if (productIndex != -1) {\n wishlist.products.splice(productIndex, 1)\n\n if (!wishlist.products.length)\n return this.wishlistRepository.update({ id: wishlistId, products: { action: 'remove' } })\n\n return this.wishlistRepository.update({ id: wishlistId, products: wishlist.products })\n }\n\n return wishlist\n }\n}\n","import { Inject, Injectable } from '@angular/core'\nimport {\n CheckoutSubscription,\n CheckoutSubscriptionRepository,\n CheckoutTypes,\n Coupon,\n isNil,\n pick,\n} from '@infrab4a/connect'\nimport { Observable } from 'rxjs'\nimport { concatMap } from 'rxjs/operators'\nimport { RequiredCheckoutSubscriptionData } from './types'\n\nimport { PERSISTENCE_PROVIDER } from '../consts'\nimport { DataPersistence } from '../persistence'\nimport { CouponService } from './coupon.service'\n\n@Injectable()\nexport class CheckoutSubscriptionService {\n constructor(\n @Inject('CheckoutSubscriptionRepository')\n private readonly checkoutSubscriptionRepository: CheckoutSubscriptionRepository,\n @Inject(PERSISTENCE_PROVIDER) private readonly dataPersistence: DataPersistence,\n private readonly couponService: CouponService,\n ) {}\n\n getCheckoutSubscription(checkoutData?: RequiredCheckoutSubscriptionData): Observable<CheckoutSubscription> {\n return this.dataPersistence\n .get('checkoutSubscriptionId')\n .pipe(\n concatMap((id) =>\n !isNil(id) ? this.checkoutSubscriptionRepository.get({ id }) : this.createCheckoutSubscription(checkoutData),\n ),\n )\n }\n\n clearCheckoutSubscriptionFromSession(): Observable<void> {\n return this.dataPersistence.remove('checkoutSubscriptionId')\n }\n\n checkCoupon(nickname: string, userEmail: string): Observable<Coupon> {\n return this.getCheckoutSubscription().pipe(\n concatMap((checkout) =>\n this.couponService\n .checkCoupon(nickname, CheckoutTypes.SUBSCRIPTION, checkout, checkout.subscriptionPlan.name)\n .pipe(),\n ),\n )\n }\n\n calcDiscountSubscription(coupon: Coupon) {\n return this.getCheckoutSubscription().pipe(\n concatMap((checkout) => this.couponService.calcDiscountSubscription(coupon, checkout).pipe()),\n )\n }\n\n private async createCheckoutSubscription(\n checkoutData?: RequiredCheckoutSubscriptionData,\n ): Promise<CheckoutSubscription> {\n const checkout = await this.checkoutSubscriptionRepository.create({\n createdAt: new Date(),\n ...CheckoutSubscription.toInstance(pick(checkoutData, ['user', 'shop'])).toPlain(),\n })\n\n await this.dataPersistence.set('checkoutSubscriptionId', checkout.id).toPromise()\n\n return checkout\n }\n}\n","export class UtilHelper {\n static createSlug(name: string): string {\n return name\n .toLowerCase()\n .replace(/\\s+/g, '-') // Replace spaces with -\n .replace(/[ãàáäâ]/g, 'a') // Replace spaces with -\n .replace(/[ẽèéëê]/g, 'e') // Replace spaces with -\n .replace(/[ìíïî]/g, 'i') // Replace spaces with -\n .replace(/[õòóöô]/g, 'o') // Replace spaces with -\n .replace(/[ùúüû]/g, 'u') // Replace spaces with -\n .replace(/[ñ]/g, 'n') // Replace spaces with -\n .replace(/[ç]/g, 'c') // Replace spaces with -\n .replace(/[&]/g, 'and') // Replace spaces with -\n .replace(/[^\\w\\-]+/g, '') // Remove all non-word chars\n .replace(/\\-\\-+/g, '-') // Replace multiple - with single -\n }\n}\n","import { Inject, Injectable } from '@angular/core'\nimport {\n Banner,\n Category,\n CategoryRepository,\n Home,\n HomeCategoryGroup,\n HomeData,\n HomeRepository,\n Product,\n ProductRepository,\n RequiredArgumentError,\n Shops,\n Where,\n add,\n pick,\n} from '@infrab4a/connect'\nimport { Observable, forkJoin, from, of, throwError } from 'rxjs'\nimport { concatMap, map, tap } from 'rxjs/operators'\n\nimport { DEFAULT_SHOP } from '../consts'\n\ntype HomeConfigurationId = 'glamshop' | 'mens_market'\ntype BannerType = 'brand' | 'buyToWin' | 'block' | 'blog'\n\n@Injectable()\nexport class HomeShopService {\n private homeConfiguration: Home\n\n private get homeId(): HomeConfigurationId {\n if (this.defaultShop === Shops.GLAMSHOP) return 'glamshop'\n if (this.defaultShop === Shops.MENSMARKET) return 'mens_market'\n\n return null\n }\n\n constructor(\n @Inject('CategoryRepository') private readonly categoryRepository: CategoryRepository,\n @Inject('HomeRepository') private readonly homeRepository: HomeRepository,\n @Inject('ProductRepository') private readonly productRepository: ProductRepository,\n @Inject(DEFAULT_SHOP) private readonly defaultShop: Shops,\n ) {}\n\n getHomeData(): Observable<Home> {\n return this.getHomeConfiguration().pipe(\n map((home) => (home?.data?.expiresAt > new Date() ? home : null)),\n concatMap((home) =>\n home\n ? of(home)\n : forkJoin([\n this.getDiscoverProducts(this.gender),\n this.getFeaturedProducts(this.gender),\n this.getVerticalProducts(this.gender),\n ]).pipe(\n map(([discoverProducts, featuredProducts, verticalProducts]) => ({\n discoverProducts,\n featuredProducts,\n verticalProducts,\n })),\n concatMap((data) => this.saveHomeData(data)),\n ),\n ),\n )\n }\n\n getBanners(type: BannerType): Observable<Banner[]> {\n return this.getHomeConfiguration().pipe(\n map((home) => {\n if (type === 'brand') return home.brandsCarousel\n if (type === 'buyToWin') return [home.buyToWinBanner]\n if (type === 'block') return home.blockBanners\n if (type === 'blog') return [home.blogBanner]\n\n return []\n }),\n )\n }\n\n getMinValueForFreeShipping(): Observable<number> {\n return this.getHomeConfiguration().pipe(map((home) => home.minValueForFreeShipping))\n }\n\n private getDiscoverProducts(gender?: string): Observable<{ category: Category; products: Product[] }[]> {\n return this.getHomeConfiguration().pipe(\n concatMap((home) =>\n from(this.categoryRepository.getCategoriesForHome(home.discoverCategories, undefined, gender)).pipe(\n map((groups) => groups.map(this.buildCategoryGroupWithRequiredData)),\n ),\n ),\n )\n }\n\n private getFeaturedProducts(gender?: string): Observable<{ category: Category; products: Product[] }[]> {\n return this.getHomeConfiguration().pipe(\n concatMap((home) =>\n from(this.categoryRepository.getCategoriesForHome(home.featuredCategories, undefined, gender)).pipe(\n map((groups) => groups.map(this.buildCategoryGroupWithRequiredData)),\n ),\n ),\n )\n }\n\n private getVerticalProducts(gender?: string): Observable<{ category: Category; products: Product[] }[]> {\n return this.getHomeConfiguration().pipe(\n concatMap((home) =>\n forkJoin(\n home.verticalCarousels.filter(Boolean).map((id) =>\n from(this.categoryRepository.get({ id })).pipe(\n concatMap((category) =>\n from(\n this.productRepository.find({\n filters: {\n categories: { operator: Where.IN, value: [category.id] },\n ...(gender ? { tags: { operator: Where.IN, value: [gender] } } : {}),\n },\n limits: { limit: 12 },\n }),\n ).pipe(map((products) => ({ category, products }))),\n ),\n map(({ category, products }) => ({ category, products: products.data })),\n map(this.buildCategoryGroupWithRequiredData),\n ),\n ),\n ),\n ),\n )\n }\n\n private getHomeConfiguration(): Observable<Home> {\n return of(this.homeConfiguration).pipe(\n concatMap((home) =>\n home\n ? of(home)\n : !this.homeId\n ? throwError(new RequiredArgumentError(['homeId']))\n : from(this.homeRepository.get({ id: this.homeId })).pipe(\n tap((homeLoaded) => (this.homeConfiguration = homeLoaded)),\n ),\n ),\n )\n }\n\n private saveHomeData(homeData: HomeData): Observable<Home> {\n const data = {\n createdAt: new Date(),\n expiresAt: add(new Date(), { hours: 1 }),\n data: homeData,\n }\n\n return from(\n this.homeRepository.update({\n id: this.homeId,\n data,\n }),\n ).pipe(\n tap(() => (this.homeConfiguration.data = data)),\n map(() => this.homeConfiguration),\n )\n }\n\n private buildCategoryGroupWithRequiredData = (group: HomeCategoryGroup): HomeCategoryGroup => ({\n category: Category.toInstance(pick(group?.category?.toPlain() || {}, ['id', 'name', 'slug', 'conditions'])),\n products:\n group?.products?.map((product) =>\n Product.toInstance(\n pick(product?.toPlain() || {}, [\n 'id',\n 'price',\n 'reviews',\n 'hasVariants',\n 'slug',\n 'sku',\n 'stock',\n 'costPrice',\n 'images',\n 'miniatures',\n 'name',\n 'weight',\n 'rate',\n 'type',\n 'brand',\n ]),\n ),\n ) || [],\n })\n\n private get gender() {\n return this.homeId === 'mens_market' ? 'masculino' : undefined\n }\n}\n","import { Injectable, Inject } from '@angular/core'\nimport { doc, Firestore, docSnapshots } from '@angular/fire/firestore'\nimport { Order, OrderFirestoreRepository } from '@infrab4a/connect'\nimport { Subject } from 'rxjs'\nimport { map } from 'rxjs/operators'\n\n@Injectable()\nexport class OrderService {\n orderSubject = new Subject<Order>()\n\n constructor(\n private readonly angularFirestore: Firestore,\n @Inject('OrderRepository') private readonly orderRepository: OrderFirestoreRepository,\n ) {}\n\n getOrder(id: string): Subject<Order> {\n docSnapshots(doc(this.angularFirestore, `${this.orderRepository.collectionName}/${id}`))\n .pipe(map((doc) => Order.toInstance(doc.data())))\n .subscribe((doc) => this.orderSubject.next(doc))\n\n return this.orderSubject\n }\n}\n","import { HttpClient } from '@angular/common/http'\nimport { Inject, Injectable } from '@angular/core'\nimport { Home, Shops } from '@infrab4a/connect'\nimport { Observable, combineLatest } from 'rxjs'\nimport { map } from 'rxjs/operators'\n\nimport { BACKEND_URL } from '../consts'\nimport { HomeShopService } from './home-shop.service'\nimport { ShippingMethodResponse } from './types/shipping-methods.type'\n\n@Injectable()\nexport class ShippingService {\n constructor(\n private http: HttpClient,\n @Inject(BACKEND_URL) private apiUrl: string,\n private homeService: HomeShopService,\n ) {}\n\n public getShippingMethods(\n shop: string,\n zip: string,\n weightGrams: number,\n totalPrice: number,\n personId: string,\n subscriptionPlan?: string,\n ): Observable<Array<ShippingMethodResponse & { ShippingCompanyName?: string }>> {\n return combineLatest([\n this.homeService.getHomeData(),\n this.http.get(\n `${this.apiUrl}open/checkshippingcompany?personId=${personId}&postalCode=${zip}&weightGrams=${weightGrams}`,\n ),\n ]).pipe(\n map(([datas, shippingMethodsResponse]: [Home & Partial<{ sameDayNotAvaliable: any }>, any]) => {\n let shippingMethods = shippingMethodsResponse.result as (ShippingMethodResponse & {\n ShippingCompanyName?: string\n })[]\n\n if (!shippingMethods.length) return []\n\n shippingMethods = shippingMethods.map((shippingMethod) => {\n if (shippingMethod.ShippingCompanyName == 'Same Day EG') shippingMethod.ShippingCompanyName = 'Same Day'\n\n return shippingMethod\n })\n\n const datasSameDayNotAvaliable = datas.sameDayNotAvaliable\n\n if (this.isHolidays(datasSameDayNotAvaliable)) {\n shippingMethods = shippingMethods.filter((method) => method.serviceName !== 'Same Day')\n }\n\n if (totalPrice >= 200) {\n shippingMethods = shippingMethods.map((s) => {\n if (s.serviceName !== 'Same Day') return { ...s, totalPrice: 0 }\n else return s\n })\n }\n\n if (shop == Shops.GLAMSHOP) return shippingMethods\n\n if (this.isFreeShippingBySubscription(shop, subscriptionPlan)) {\n shippingMethods = shippingMethods.map((s) => {\n if (s.serviceName == 'Same Day') return { ...s, totalPrice: s.totalPrice / 2 }\n else return { ...s, totalPrice: 0 }\n })\n }\n\n if (this.isHalfShippingBySubscription(shop, subscriptionPlan)) {\n shippingMethods = shippingMethods.map((s) => {\n return { ...s, totalPrice: s.totalPrice / 2 }\n })\n }\n\n return shippingMethods\n }),\n )\n }\n\n private isFreeShippingBySubscription(shop: string, subscriptionPlan: string): boolean {\n if (!subscriptionPlan) return false\n\n if (shop == Shops.MENSMARKET && subscriptionPlan == 'SELECT') return true\n\n return false\n }\n\n private isHalfShippingBySubscription(shop: string, subscriptionPlan: string) {\n if (!subscriptionPlan) return false\n\n if (shop == Shops.MENSMARKET && subscriptionPlan == 'PRIME') {\n return true\n }\n\n return false\n }\n\n private isHolidays(datas: any): boolean {\n const today = new Date()\n\n for (const key in datas) {\n let start = new Date(`${today.getFullYear()}-${datas[key].beginDate}`)\n let end = new Date(`${today.getFullYear()}-${datas[key].endDate}`)\n\n if (start > end) end = new Date(`${today.getFullYear() + 1}-${datas[key].endDate}`)\n\n if (today >= start && today <= end) return true\n }\n\n return false\n }\n}\n","import { Injector, ModuleWithProviders, NgModule, Type } from '@angular/core'\nimport { FirebaseOptions, getApp, initializeApp, provideFirebaseApp } from '@angular/fire/app'\nimport {\n AxiosElasticSearchConfig,\n FileUploaderService,\n Shops,\n UpdateUserImage,\n UserRepository,\n isNil,\n} from '@infrab4a/connect'\nimport { AngularElasticSeachModule } from './angular-elastic-search.module'\nimport { AngularFirebaseAuthModule } from './angular-firebase-auth.module'\nimport { AngularFirestoreModule } from './angular-firestore.module'\nimport { AngularHasuraGraphQLModule, HasuraGraphQLOptions } from './angular-hasura-graphql.module'\nimport {\n BACKEND_URL,\n CATEGORY_STRUCTURE,\n DEFAULT_SHOP,\n ES_CONFIG,\n FIREBASE_APP_NAME,\n FIREBASE_OPTIONS,\n HASURA_OPTIONS,\n PERSISTENCE_PROVIDER,\n} from './consts'\nimport { STORAGE_BASE_URL } from './consts/storage-base-url.const'\nimport { CookieDataPersistence, DataPersistence } from './persistence'\nimport {\n AuthService,\n CartService,\n CatalogService,\n CategoryService,\n CheckoutService,\n CheckoutSubscriptionService,\n CouponService,\n HomeShopService,\n OrderService,\n ShippingService,\n WishlistService,\n} from './services'\nimport { NewCategoryStructureAdapter, OldCategoryStructureAdapter } from './services/catalog/adapters'\nimport { FirebaseAppConfig } from './types'\n\n@NgModule({\n imports: [\n provideFirebaseApp((injector: Injector) => {\n const appName = injector.get<string>(FIREBASE_APP_NAME) || '[DEFAULT]'\n\n try {\n return getApp(appName)\n } catch (error) {\n return initializeApp(injector.get(FIREBASE_OPTIONS), appName)\n }\n }),\n AngularElasticSeachModule,\n AngularFirebaseAuthModule,\n AngularFirestoreModule,\n AngularHasuraGraphQLModule,\n ],\n providers: [\n AuthService,\n CartService,\n CatalogService,\n CategoryService,\n CheckoutService,\n CheckoutSubscriptionService,\n CouponService,\n HomeShopService,\n OrderService,\n ShippingService,\n WishlistService,\n {\n provide: UpdateUserImage,\n useFactory: (userRepository: UserRepository, fileUploader: FileUploaderService) => {\n return new UpdateUserImage(userRepository, fileUploader)\n },\n deps: ['UserRepository', 'FileUploaderService'],\n },\n ],\n})\nexport class AngularConnectModule {\n static initializeApp(\n defaultShop: Shops,\n options: {\n firebase: FirebaseOptions\n elasticSearch: AxiosElasticSearchConfig\n hasura: HasuraGraphQLOptions\n backendUrl: string\n oldCategoryStructure?: boolean\n storageBaseUrl?: string\n persistenceProvider?: Type<DataPersistence>\n },\n nameOrConfig?: string | FirebaseAppConfig,\n ): ModuleWithProviders<AngularConnectModule> {\n return {\n ngModule: AngularConnectModule,\n providers: [\n {\n provide: CATEGORY_STRUCTURE,\n useClass:\n isNil(options?.oldCategoryStructure) || options?.oldCategoryStructure\n ? OldCategoryStructureAdapter\n : NewCategoryStructureAdapter,\n },\n { provide: PERSISTENCE_PROVIDER, useClass: options?.persistenceProvider || CookieDataPersistence },\n ...(isNil(defaultShop) ? [] : [{ provide: DEFAULT_SHOP, useValue: defaultShop }]),\n ...(isNil(options?.firebase) ? [] : [{ provide: FIREBASE_OPTIONS, useValue: options?.firebase }]),\n ...(isNil(options?.firebase) ? [] : [{ provide: FIREBASE_APP_NAME, useValue: nameOrConfig }]),\n ...(isNil(options?.elasticSearch) ? [] : [{ provide: ES_CONFIG, useValue: options.elasticSearch }]),\n ...(isNil(options?.hasura) ? [] : [{ provide: HASURA_OPTIONS, useValue: options.hasura }]),\n ...(isNil(options?.backendUrl) ? [] : [{ provide: BACKEND_URL, useValue: options.backendUrl }]),\n ...(isNil(options?.storageBaseUrl) ? [] : [{ provide: STORAGE_BASE_URL, useValue: options.storageBaseUrl }]),\n ],\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i1.AuthService","i2.CheckoutService","i1.CouponService","i2.HomeShopService"],"mappings":"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"}