@infrab4a/connect-angular 5.8.19 → 5.8.21-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (296) 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 +4 -24
  6. package/project.json +37 -0
  7. package/src/angular-connect.module.ts +266 -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 +443 -0
  11. package/src/angular-hasura-graphql.module.ts +269 -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 +148 -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.spec.ts +61 -0
  39. package/src/services/catalog/adapters/new-category-structure.adapter.ts +46 -0
  40. package/src/services/catalog/adapters/old-category-structure.adapter.ts +17 -0
  41. package/src/services/catalog/catalog.service.ts +153 -0
  42. package/src/services/catalog/category.service.ts +56 -0
  43. package/src/services/catalog/context/catalog-search.context.ts +59 -0
  44. package/src/services/catalog/enums/index.ts +1 -0
  45. package/src/services/catalog/enums/product-sorts.enum.ts +9 -0
  46. package/src/services/catalog/facades/catalog-service.facade.ts +32 -0
  47. package/src/services/catalog/facades/catalog-strategies.facade.ts +12 -0
  48. package/src/services/catalog/facades/category-repository.facade.ts +10 -0
  49. package/src/services/catalog/facades/category-service.facade.ts +25 -0
  50. package/{services/catalog/facades/index.d.ts → src/services/catalog/facades/index.ts} +5 -5
  51. package/src/services/catalog/facades/product-catalog.facade.ts +13 -0
  52. package/src/services/catalog/helpers/brand-manager.helper.ts +69 -0
  53. package/src/services/catalog/helpers/catalog-filter.helper.ts +50 -0
  54. package/src/services/catalog/helpers/catalog-sort.helper.ts +54 -0
  55. package/src/services/catalog/helpers/index.ts +4 -0
  56. package/src/services/catalog/helpers/product-fields.helper.ts +39 -0
  57. package/src/services/catalog/index.ts +7 -0
  58. package/src/services/catalog/models/category-with-tree.model.ts +7 -0
  59. package/src/services/catalog/models/index.ts +1 -0
  60. package/src/services/catalog/services/catalog-helpers.service.ts +35 -0
  61. package/src/services/catalog/services/catalog-operations.facade.ts +24 -0
  62. package/src/services/catalog/services/catalog-repository.service.ts +20 -0
  63. package/{services/catalog/services/index.d.ts → src/services/catalog/services/index.ts} +4 -4
  64. package/src/services/catalog/services/product-management.facade.ts +20 -0
  65. package/src/services/catalog/strategies/category-search.strategy.spec.ts +214 -0
  66. package/src/services/catalog/strategies/category-search.strategy.ts +207 -0
  67. package/src/services/catalog/strategies/index.ts +3 -0
  68. package/src/services/catalog/strategies/profile-search.strategy.ts +51 -0
  69. package/src/services/catalog/strategies/term-search.strategy.ts +163 -0
  70. package/src/services/catalog/strategies/types/strategy-params.type.ts +59 -0
  71. package/src/services/catalog/types/fetch-products-options.type.ts +10 -0
  72. package/src/services/catalog/types/fetch-products-params.type.ts +27 -0
  73. package/src/services/catalog/types/fetch-products-response.type.ts +11 -0
  74. package/src/services/catalog/types/index.ts +5 -0
  75. package/src/services/catalog/types/method-params.type.ts +21 -0
  76. package/src/services/catalog/types/product-sort.type.ts +3 -0
  77. package/src/services/catalog/wishlist.service.ts +364 -0
  78. package/src/services/checkout/checkout-dependencies.facade.ts +13 -0
  79. package/src/services/checkout/checkout-repositories.facade.ts +10 -0
  80. package/{services/checkout/index.d.ts → src/services/checkout/index.ts} +2 -2
  81. package/src/services/checkout.service.ts +236 -0
  82. package/src/services/coupon/coupon-repositories.facade.ts +11 -0
  83. package/{services/coupon/index.d.ts → src/services/coupon/index.ts} +1 -1
  84. package/src/services/coupon/types/coupon-params.type.ts +15 -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/{services/home-shop/index.d.ts → src/services/home-shop/index.ts} +1 -1
  92. package/src/services/home-shop.service.ts +210 -0
  93. package/src/services/index.ts +9 -0
  94. package/src/services/order-product-review.service.ts +135 -0
  95. package/src/services/order-recurrence.service.ts +121 -0
  96. package/src/services/order.service.ts +23 -0
  97. package/src/services/shared/configuration.facade.ts +21 -0
  98. package/src/services/shared/index.ts +1 -0
  99. package/src/services/types/index.ts +4 -0
  100. package/src/services/types/pending-product-review.type.ts +12 -0
  101. package/src/services/types/product-review-create.type.ts +15 -0
  102. package/src/services/types/required-checkout-data.type.ts +3 -0
  103. package/src/services/types/required-checkout-subscription-data.type.ts +3 -0
  104. package/src/test.ts +3 -0
  105. package/src/types/firebase-app-config.type.ts +1 -0
  106. package/src/types/index.ts +1 -0
  107. package/tsconfig.json +17 -0
  108. package/tsconfig.lib.json +13 -0
  109. package/tsconfig.lib.prod.json +13 -0
  110. package/tsconfig.spec.json +17 -0
  111. package/angular-connect.module.d.ts +0 -36
  112. package/angular-elastic-search.module.d.ts +0 -9
  113. package/angular-firebase-auth.module.d.ts +0 -11
  114. package/angular-firestore.module.d.ts +0 -17
  115. package/angular-hasura-graphql.module.d.ts +0 -14
  116. package/angular-vertex-search.module.d.ts +0 -9
  117. package/consts/backend-url.const.d.ts +0 -1
  118. package/consts/category-structure.d.ts +0 -1
  119. package/consts/default-shop.const.d.ts +0 -1
  120. package/consts/es-config.const.d.ts +0 -1
  121. package/consts/firebase-const.d.ts +0 -4
  122. package/consts/hasura-options.const.d.ts +0 -1
  123. package/consts/index.d.ts +0 -8
  124. package/consts/persistence.const.d.ts +0 -1
  125. package/consts/storage-base-url.const.d.ts +0 -1
  126. package/consts/vertex-config.const.d.ts +0 -1
  127. package/esm2020/angular-connect.module.mjs +0 -289
  128. package/esm2020/angular-elastic-search.module.mjs +0 -34
  129. package/esm2020/angular-firebase-auth.module.mjs +0 -141
  130. package/esm2020/angular-firestore.module.mjs +0 -653
  131. package/esm2020/angular-hasura-graphql.module.mjs +0 -421
  132. package/esm2020/angular-vertex-search.module.mjs +0 -34
  133. package/esm2020/consts/backend-url.const.mjs +0 -2
  134. package/esm2020/consts/category-structure.mjs +0 -2
  135. package/esm2020/consts/default-shop.const.mjs +0 -2
  136. package/esm2020/consts/es-config.const.mjs +0 -2
  137. package/esm2020/consts/firebase-const.mjs +0 -5
  138. package/esm2020/consts/hasura-options.const.mjs +0 -2
  139. package/esm2020/consts/index.mjs +0 -9
  140. package/esm2020/consts/persistence.const.mjs +0 -2
  141. package/esm2020/consts/storage-base-url.const.mjs +0 -2
  142. package/esm2020/consts/vertex-config.const.mjs +0 -2
  143. package/esm2020/helpers/index.mjs +0 -2
  144. package/esm2020/helpers/mobile-operation-system-checker.helper.mjs +0 -7
  145. package/esm2020/index.mjs +0 -7
  146. package/esm2020/infrab4a-connect-angular.mjs +0 -5
  147. package/esm2020/interfaces/catalog-strategies.interface.mjs +0 -2
  148. package/esm2020/interfaces/category-facades.interface.mjs +0 -2
  149. package/esm2020/interfaces/index.mjs +0 -3
  150. package/esm2020/persistence/cookie-data-persistence.mjs +0 -22
  151. package/esm2020/persistence/data-persistence.mjs +0 -2
  152. package/esm2020/persistence/index.mjs +0 -3
  153. package/esm2020/services/auth.service.mjs +0 -37
  154. package/esm2020/services/cart/cart-services.facade.mjs +0 -21
  155. package/esm2020/services/cart/index.mjs +0 -2
  156. package/esm2020/services/cart.service.mjs +0 -84
  157. package/esm2020/services/catalog/adapters/category-structure.adapter.mjs +0 -2
  158. package/esm2020/services/catalog/adapters/index.mjs +0 -4
  159. package/esm2020/services/catalog/adapters/new-category-structure.adapter.mjs +0 -43
  160. package/esm2020/services/catalog/adapters/old-category-structure.adapter.mjs +0 -23
  161. package/esm2020/services/catalog/catalog.service.mjs +0 -111
  162. package/esm2020/services/catalog/category.service.mjs +0 -42
  163. package/esm2020/services/catalog/context/catalog-search.context.mjs +0 -40
  164. package/esm2020/services/catalog/enums/index.mjs +0 -2
  165. package/esm2020/services/catalog/enums/product-sorts.enum.mjs +0 -11
  166. package/esm2020/services/catalog/facades/catalog-service.facade.mjs +0 -32
  167. package/esm2020/services/catalog/facades/catalog-strategies.facade.mjs +0 -17
  168. package/esm2020/services/catalog/facades/category-repository.facade.mjs +0 -20
  169. package/esm2020/services/catalog/facades/category-service.facade.mjs +0 -30
  170. package/esm2020/services/catalog/facades/index.mjs +0 -6
  171. package/esm2020/services/catalog/facades/product-catalog.facade.mjs +0 -21
  172. package/esm2020/services/catalog/helpers/brand-manager.helper.mjs +0 -62
  173. package/esm2020/services/catalog/helpers/catalog-filter.helper.mjs +0 -44
  174. package/esm2020/services/catalog/helpers/catalog-sort.helper.mjs +0 -52
  175. package/esm2020/services/catalog/helpers/index.mjs +0 -5
  176. package/esm2020/services/catalog/helpers/product-fields.helper.mjs +0 -43
  177. package/esm2020/services/catalog/index.mjs +0 -8
  178. package/esm2020/services/catalog/models/category-with-tree.model.mjs +0 -10
  179. package/esm2020/services/catalog/models/index.mjs +0 -2
  180. package/esm2020/services/catalog/services/catalog-helpers.service.mjs +0 -33
  181. package/esm2020/services/catalog/services/catalog-operations.facade.mjs +0 -26
  182. package/esm2020/services/catalog/services/catalog-repository.service.mjs +0 -25
  183. package/esm2020/services/catalog/services/index.mjs +0 -5
  184. package/esm2020/services/catalog/services/product-management.facade.mjs +0 -25
  185. package/esm2020/services/catalog/strategies/category-search.strategy.mjs +0 -133
  186. package/esm2020/services/catalog/strategies/index.mjs +0 -4
  187. package/esm2020/services/catalog/strategies/profile-search.strategy.mjs +0 -42
  188. package/esm2020/services/catalog/strategies/term-search.strategy.mjs +0 -126
  189. package/esm2020/services/catalog/strategies/types/strategy-params.type.mjs +0 -2
  190. package/esm2020/services/catalog/types/fetch-products-options.type.mjs +0 -2
  191. package/esm2020/services/catalog/types/fetch-products-params.type.mjs +0 -2
  192. package/esm2020/services/catalog/types/fetch-products-response.type.mjs +0 -2
  193. package/esm2020/services/catalog/types/index.mjs +0 -6
  194. package/esm2020/services/catalog/types/method-params.type.mjs +0 -2
  195. package/esm2020/services/catalog/types/product-sort.type.mjs +0 -2
  196. package/esm2020/services/catalog/wishlist.service.mjs +0 -258
  197. package/esm2020/services/checkout/checkout-dependencies.facade.mjs +0 -20
  198. package/esm2020/services/checkout/checkout-repositories.facade.mjs +0 -20
  199. package/esm2020/services/checkout/index.mjs +0 -3
  200. package/esm2020/services/checkout.service.mjs +0 -131
  201. package/esm2020/services/coupon/coupon-repositories.facade.mjs +0 -24
  202. package/esm2020/services/coupon/index.mjs +0 -2
  203. package/esm2020/services/helpers/index.mjs +0 -2
  204. package/esm2020/services/helpers/util.helper.mjs +0 -18
  205. package/esm2020/services/home-shop/home-shop-repositories.facade.mjs +0 -24
  206. package/esm2020/services/home-shop/index.mjs +0 -2
  207. package/esm2020/services/home-shop.service.mjs +0 -130
  208. package/esm2020/services/index.mjs +0 -10
  209. package/esm2020/services/order-product-review.service.mjs +0 -126
  210. package/esm2020/services/order-recurrence.service.mjs +0 -76
  211. package/esm2020/services/order.service.mjs +0 -30
  212. package/esm2020/services/shared/configuration.facade.mjs +0 -29
  213. package/esm2020/services/shared/index.mjs +0 -2
  214. package/esm2020/services/types/index.mjs +0 -5
  215. package/esm2020/services/types/pending-product-review.type.mjs +0 -2
  216. package/esm2020/services/types/product-review-create.type.mjs +0 -2
  217. package/esm2020/services/types/required-checkout-data.type.mjs +0 -2
  218. package/esm2020/services/types/required-checkout-subscription-data.type.mjs +0 -2
  219. package/esm2020/types/firebase-app-config.type.mjs +0 -2
  220. package/esm2020/types/index.mjs +0 -2
  221. package/fesm2015/infrab4a-connect-angular.mjs +0 -3504
  222. package/fesm2015/infrab4a-connect-angular.mjs.map +0 -1
  223. package/fesm2020/infrab4a-connect-angular.mjs +0 -3439
  224. package/fesm2020/infrab4a-connect-angular.mjs.map +0 -1
  225. package/helpers/index.d.ts +0 -1
  226. package/helpers/mobile-operation-system-checker.helper.d.ts +0 -3
  227. package/index.d.ts +0 -6
  228. package/interfaces/catalog-strategies.interface.d.ts +0 -31
  229. package/interfaces/category-facades.interface.d.ts +0 -6
  230. package/interfaces/index.d.ts +0 -2
  231. package/persistence/cookie-data-persistence.d.ts +0 -10
  232. package/persistence/data-persistence.d.ts +0 -6
  233. package/persistence/index.d.ts +0 -2
  234. package/services/auth.service.d.ts +0 -18
  235. package/services/cart/cart-services.facade.d.ts +0 -12
  236. package/services/cart/index.d.ts +0 -1
  237. package/services/cart.service.d.ts +0 -27
  238. package/services/catalog/adapters/category-structure.adapter.d.ts +0 -4
  239. package/services/catalog/adapters/index.d.ts +0 -3
  240. package/services/catalog/adapters/new-category-structure.adapter.d.ts +0 -12
  241. package/services/catalog/adapters/old-category-structure.adapter.d.ts +0 -10
  242. package/services/catalog/catalog.service.d.ts +0 -24
  243. package/services/catalog/category.service.d.ts +0 -23
  244. package/services/catalog/context/catalog-search.context.d.ts +0 -14
  245. package/services/catalog/enums/index.d.ts +0 -1
  246. package/services/catalog/enums/product-sorts.enum.d.ts +0 -9
  247. package/services/catalog/facades/catalog-service.facade.d.ts +0 -15
  248. package/services/catalog/facades/catalog-strategies.facade.d.ts +0 -10
  249. package/services/catalog/facades/category-repository.facade.d.ts +0 -9
  250. package/services/catalog/facades/category-service.facade.d.ts +0 -15
  251. package/services/catalog/facades/product-catalog.facade.d.ts +0 -10
  252. package/services/catalog/helpers/brand-manager.helper.d.ts +0 -14
  253. package/services/catalog/helpers/catalog-filter.helper.d.ts +0 -8
  254. package/services/catalog/helpers/catalog-sort.helper.d.ts +0 -7
  255. package/services/catalog/helpers/index.d.ts +0 -4
  256. package/services/catalog/helpers/product-fields.helper.d.ts +0 -7
  257. package/services/catalog/index.d.ts +0 -7
  258. package/services/catalog/models/category-with-tree.model.d.ts +0 -4
  259. package/services/catalog/models/index.d.ts +0 -1
  260. package/services/catalog/services/catalog-helpers.service.d.ts +0 -17
  261. package/services/catalog/services/catalog-operations.facade.d.ts +0 -13
  262. package/services/catalog/services/catalog-repository.service.d.ts +0 -12
  263. package/services/catalog/services/product-management.facade.d.ts +0 -12
  264. package/services/catalog/strategies/category-search.strategy.d.ts +0 -19
  265. package/services/catalog/strategies/index.d.ts +0 -3
  266. package/services/catalog/strategies/profile-search.strategy.d.ts +0 -14
  267. package/services/catalog/strategies/term-search.strategy.d.ts +0 -20
  268. package/services/catalog/strategies/types/strategy-params.type.d.ts +0 -59
  269. package/services/catalog/types/fetch-products-options.type.d.ts +0 -8
  270. package/services/catalog/types/fetch-products-params.type.d.ts +0 -25
  271. package/services/catalog/types/fetch-products-response.type.d.ts +0 -19
  272. package/services/catalog/types/index.d.ts +0 -5
  273. package/services/catalog/types/method-params.type.d.ts +0 -17
  274. package/services/catalog/types/product-sort.type.d.ts +0 -2
  275. package/services/catalog/wishlist.service.d.ts +0 -60
  276. package/services/checkout/checkout-dependencies.facade.d.ts +0 -10
  277. package/services/checkout/checkout-repositories.facade.d.ts +0 -9
  278. package/services/checkout.service.d.ts +0 -33
  279. package/services/coupon/coupon-repositories.facade.d.ts +0 -10
  280. package/services/helpers/index.d.ts +0 -1
  281. package/services/helpers/util.helper.d.ts +0 -3
  282. package/services/home-shop/home-shop-repositories.facade.d.ts +0 -10
  283. package/services/home-shop.service.d.ts +0 -34
  284. package/services/index.d.ts +0 -9
  285. package/services/order-product-review.service.d.ts +0 -18
  286. package/services/order-recurrence.service.d.ts +0 -25
  287. package/services/order.service.d.ts +0 -13
  288. package/services/shared/configuration.facade.d.ts +0 -12
  289. package/services/shared/index.d.ts +0 -1
  290. package/services/types/index.d.ts +0 -4
  291. package/services/types/pending-product-review.type.d.ts +0 -12
  292. package/services/types/product-review-create.type.d.ts +0 -14
  293. package/services/types/required-checkout-data.type.d.ts +0 -2
  294. package/services/types/required-checkout-subscription-data.type.d.ts +0 -2
  295. package/types/firebase-app-config.type.d.ts +0 -1
  296. package/types/index.d.ts +0 -1
@@ -0,0 +1,443 @@
1
+ import { isPlatformBrowser, isPlatformServer } from '@angular/common'
2
+ import { Injector, ModuleWithProviders, NgModule, PLATFORM_ID } from '@angular/core'
3
+ import { FirebaseApp, FirebaseOptions } from '@angular/fire/app'
4
+ import { Firestore, initializeFirestore, memoryLocalCache, provideFirestore } from '@angular/fire/firestore'
5
+ import {
6
+ AxiosElasticSearchConfig,
7
+ BeautyProfileRepository,
8
+ BrandCategoryFirestoreRepository,
9
+ BrandCategoryRepository,
10
+ Buy2WinFirestoreRepository,
11
+ Buy2WinRepository,
12
+ CampaignDashboardFirestoreRepository,
13
+ CampaignDashboardRepository,
14
+ CampaignHashtagFirestoreRepository,
15
+ CampaignHashtagPostsFirestoreRepository,
16
+ CampaignHashtagPostsRepository,
17
+ CampaignHashtagRepository,
18
+ CampaignSettingsFirestoreRepository,
19
+ CampaignSettingsRepository,
20
+ CategoryFirestoreRepository,
21
+ CategoryRepository,
22
+ CheckoutFirestoreRepository,
23
+ CheckoutRepository,
24
+ CheckoutSubscriptionFirestoreRepository,
25
+ CheckoutSubscriptionRepository,
26
+ ConnectFirestoreService,
27
+ CouponFirestoreRepository,
28
+ CouponRepository,
29
+ EditionRepository,
30
+ FirestoreConstructorParams,
31
+ FirestoreIntertceptorRequestParams,
32
+ GroupFirestoreRepository,
33
+ GroupRepository,
34
+ HomeFirestoreRepository,
35
+ HomeRepository,
36
+ LeadFirestoreRepository,
37
+ LeadRepository,
38
+ LegacyOrderFirestoreRepository,
39
+ LegacyOrderRepository,
40
+ LogFirestoreRepository,
41
+ LogRepository,
42
+ OrderBlockedFirestoreRepository,
43
+ OrderBlockedRepository,
44
+ OrderFirestoreRepository,
45
+ OrderRepository,
46
+ PendingOrderFirestoreRepository,
47
+ PendingOrderRepository,
48
+ PaymentFirestoreRepository,
49
+ PaymentRepository,
50
+ ProductFirestoreRepository,
51
+ ProductRepository,
52
+ ProductVariantFirestoreRepository,
53
+ SequenceFirestoreRepository,
54
+ ShopConfigsFirestoreRepository,
55
+ ShopConfigsRepository,
56
+ ShopMenuFirestoreRepository,
57
+ ShopMenuRepository,
58
+ ShoppingRecurrenceEditionFirestoreRepository,
59
+ ShoppingRecurrenceEditionRepository,
60
+ ShoppingRecurrenceErrorLogFirestoreRepository,
61
+ ShoppingRecurrenceErrorLogRepository,
62
+ ShoppingRecurrenceFirestoreRepository,
63
+ ShoppingRecurrenceRepository,
64
+ ShopSettingsFirestoreRepository,
65
+ ShopSettingsRepository,
66
+ SubscriptionEditionFirestoreRepository,
67
+ SubscriptionFirestoreRepository,
68
+ SubscriptionMaterializationFirestoreRepository,
69
+ SubscriptionMaterializationRepository,
70
+ SubscriptionPaymentFirestoreRepository,
71
+ SubscriptionPaymentRepository,
72
+ SubscriptionPlanFirestoreRepository,
73
+ SubscriptionPlanRepository,
74
+ SubscriptionProductFirestoreRepository,
75
+ SubscriptionProductRepository,
76
+ SubscriptionRepository,
77
+ SubscriptionSummaryFirestoreRepository,
78
+ SubscriptionSummaryRepository,
79
+ UserAddressFirestoreRepository,
80
+ UserAddressRepository,
81
+ UserBeautyProfileFirestoreRepository,
82
+ UserFirestoreRepository,
83
+ UserPaymentMethodFirestoreRepository,
84
+ UserPaymentMethodRepository,
85
+ UserRepository,
86
+ VariantRepository,
87
+ } from '@infrab4a/connect'
88
+
89
+ import { AngularElasticSeachModule } from './angular-elastic-search.module'
90
+ import { ES_CONFIG, FIREBASE_APP_NAME, FIREBASE_OPTIONS } from './consts'
91
+ import { MobileOperationSystemCheckerHelper } from './helpers'
92
+ import { FirebaseAppConfig } from './types'
93
+
94
+ export type FirestoreOptions = Pick<FirestoreConstructorParams<any>, 'firestore' | 'interceptors'>
95
+
96
+ @NgModule({
97
+ imports: [
98
+ AngularElasticSeachModule,
99
+ provideFirestore((injector: Injector) => {
100
+ const platformId = injector.get(PLATFORM_ID)
101
+
102
+ if (isPlatformServer(platformId) || !MobileOperationSystemCheckerHelper.isAppleDevice())
103
+ return initializeFirestore(injector.get(FirebaseApp), {
104
+ ignoreUndefinedProperties: true,
105
+ })
106
+
107
+ const firestore = initializeFirestore(injector.get(FirebaseApp), {
108
+ experimentalForceLongPolling: true,
109
+ ignoreUndefinedProperties: true,
110
+ localCache: memoryLocalCache(),
111
+ })
112
+
113
+ return firestore
114
+ }),
115
+ ],
116
+ providers: [
117
+ {
118
+ provide: 'FirestoreOptions',
119
+ useFactory: (firestore: Firestore, platformId: string): FirestoreOptions => ({
120
+ firestore: new ConnectFirestoreService(firestore),
121
+ interceptors: {
122
+ request: (request: FirestoreIntertceptorRequestParams<any> & { interval: ReturnType<typeof setTimeout> }) => {
123
+ if (isPlatformBrowser(platformId)) return request
124
+
125
+ const interval = setInterval(() => {}, 100)
126
+
127
+ request.interval = interval
128
+
129
+ return request
130
+ },
131
+ response: (
132
+ response: any,
133
+ request: FirestoreIntertceptorRequestParams<any> & { interval: ReturnType<typeof setTimeout> },
134
+ ) => {
135
+ if (isPlatformBrowser(platformId)) return response
136
+
137
+ clearInterval(request.interval)
138
+
139
+ return response
140
+ },
141
+ },
142
+ }),
143
+ deps: [Firestore, PLATFORM_ID],
144
+ },
145
+ {
146
+ provide: 'BeautyProfileRepository',
147
+ useFactory: (config: FirestoreOptions, userRepository: UserFirestoreRepository): BeautyProfileRepository => {
148
+ return new UserBeautyProfileFirestoreRepository(config, userRepository)
149
+ },
150
+ deps: ['FirestoreOptions', 'UserRepository'],
151
+ },
152
+ {
153
+ provide: 'Buy2WinRepository',
154
+ useFactory: (options: FirestoreOptions): Buy2WinRepository => {
155
+ return new Buy2WinFirestoreRepository(options)
156
+ },
157
+ deps: ['FirestoreOptions'],
158
+ },
159
+ {
160
+ provide: CategoryFirestoreRepository,
161
+ useFactory: (options: FirestoreOptions): CategoryRepository => {
162
+ return new CategoryFirestoreRepository(options)
163
+ },
164
+ deps: ['FirestoreOptions'],
165
+ },
166
+ {
167
+ provide: 'CheckoutRepository',
168
+ useFactory: (options: FirestoreOptions): CheckoutRepository => {
169
+ return new CheckoutFirestoreRepository(options)
170
+ },
171
+ deps: ['FirestoreOptions'],
172
+ },
173
+ {
174
+ provide: 'CheckoutSubscriptionRepository',
175
+ useFactory: (options: FirestoreOptions): CheckoutSubscriptionRepository => {
176
+ return new CheckoutSubscriptionFirestoreRepository(options)
177
+ },
178
+ deps: ['FirestoreOptions'],
179
+ },
180
+ {
181
+ provide: 'CouponRepository',
182
+ useFactory: (options: FirestoreOptions): CouponRepository => {
183
+ return new CouponFirestoreRepository(options)
184
+ },
185
+ deps: ['FirestoreOptions'],
186
+ },
187
+ {
188
+ provide: 'CampaignHashtagRepository',
189
+ useFactory: (options: FirestoreOptions): CampaignHashtagRepository => {
190
+ return new CampaignHashtagFirestoreRepository(options)
191
+ },
192
+ deps: ['FirestoreOptions'],
193
+ },
194
+ {
195
+ provide: 'CampaignHashtagPostsRepository',
196
+ useFactory: (options: FirestoreOptions): CampaignHashtagPostsRepository => {
197
+ return new CampaignHashtagPostsFirestoreRepository(options)
198
+ },
199
+ deps: ['FirestoreOptions'],
200
+ },
201
+ {
202
+ provide: 'CampaignDashboardRepository',
203
+ useFactory: (options: FirestoreOptions): CampaignDashboardRepository => {
204
+ return new CampaignDashboardFirestoreRepository(options)
205
+ },
206
+ deps: ['FirestoreOptions'],
207
+ },
208
+ {
209
+ provide: 'CampaignSettingsRepository',
210
+ useFactory: (options: FirestoreOptions): CampaignSettingsRepository => {
211
+ return new CampaignSettingsFirestoreRepository(options)
212
+ },
213
+ deps: ['FirestoreOptions'],
214
+ },
215
+ {
216
+ provide: 'EditionRepository',
217
+ useFactory: (
218
+ options: FirestoreOptions,
219
+ subscriptionRepository: SubscriptionFirestoreRepository,
220
+ ): EditionRepository => {
221
+ return new SubscriptionEditionFirestoreRepository(options, subscriptionRepository)
222
+ },
223
+ deps: ['FirestoreOptions', 'SubscriptionRepository'],
224
+ },
225
+ {
226
+ provide: 'GroupRepository',
227
+ useFactory: (options: FirestoreOptions): GroupRepository => {
228
+ return new GroupFirestoreRepository(options)
229
+ },
230
+ deps: ['FirestoreOptions'],
231
+ },
232
+ {
233
+ provide: 'HomeRepository',
234
+ useFactory: (options: FirestoreOptions): HomeRepository => {
235
+ return new HomeFirestoreRepository(options)
236
+ },
237
+ deps: ['FirestoreOptions'],
238
+ },
239
+ {
240
+ provide: 'LeadRepository',
241
+ useFactory: (options: FirestoreOptions): LeadRepository => {
242
+ return new LeadFirestoreRepository(options)
243
+ },
244
+ deps: ['FirestoreOptions'],
245
+ },
246
+ {
247
+ provide: 'LegacyOrderRepository',
248
+ useFactory: (options: FirestoreOptions): LegacyOrderRepository => {
249
+ return new LegacyOrderFirestoreRepository(options)
250
+ },
251
+ deps: ['FirestoreOptions'],
252
+ },
253
+ {
254
+ provide: 'ShopMenuRepository',
255
+ useFactory: (options: FirestoreOptions): ShopMenuRepository => {
256
+ return new ShopMenuFirestoreRepository(options)
257
+ },
258
+ deps: ['FirestoreOptions'],
259
+ },
260
+ {
261
+ provide: 'OrderRepository',
262
+ useFactory: (options: FirestoreOptions): OrderRepository => {
263
+ return new OrderFirestoreRepository(options)
264
+ },
265
+ deps: ['FirestoreOptions'],
266
+ },
267
+ {
268
+ provide: 'PendingOrderRepository',
269
+ useFactory: (options: FirestoreOptions): PendingOrderRepository => {
270
+ return new PendingOrderFirestoreRepository(options)
271
+ },
272
+ deps: ['FirestoreOptions'],
273
+ },
274
+ {
275
+ provide: 'PaymentRepository',
276
+ useFactory: (options: FirestoreOptions): PaymentRepository => {
277
+ return new PaymentFirestoreRepository(options)
278
+ },
279
+ deps: ['FirestoreOptions'],
280
+ },
281
+ {
282
+ provide: 'ShoppingRecurrenceRepository',
283
+ useFactory: (options: FirestoreOptions): ShoppingRecurrenceRepository => {
284
+ return new ShoppingRecurrenceFirestoreRepository(options)
285
+ },
286
+ deps: ['FirestoreOptions'],
287
+ },
288
+ {
289
+ provide: 'ShoppingRecurrenceEditionRepository',
290
+ useFactory: (options: FirestoreOptions): ShoppingRecurrenceEditionRepository => {
291
+ return new ShoppingRecurrenceEditionFirestoreRepository(options)
292
+ },
293
+ deps: ['FirestoreOptions'],
294
+ },
295
+ {
296
+ provide: 'ShoppingRecurrenceErrorLogRepository',
297
+ useFactory: (options: FirestoreOptions): ShoppingRecurrenceErrorLogRepository => {
298
+ return new ShoppingRecurrenceErrorLogFirestoreRepository(options)
299
+ },
300
+ deps: ['FirestoreOptions'],
301
+ },
302
+ {
303
+ provide: ProductFirestoreRepository,
304
+ useFactory: (options: FirestoreOptions): ProductRepository => {
305
+ return new ProductFirestoreRepository(options)
306
+ },
307
+ deps: ['FirestoreOptions'],
308
+ },
309
+ {
310
+ provide: 'ShopSettingsRepository',
311
+ useFactory: (options: FirestoreOptions): ShopSettingsRepository => {
312
+ return new ShopSettingsFirestoreRepository(options)
313
+ },
314
+ deps: ['FirestoreOptions'],
315
+ },
316
+ {
317
+ provide: 'SubscriptionPaymentRepository',
318
+ useFactory: (
319
+ options: FirestoreOptions,
320
+ subscriptionRepository: SubscriptionFirestoreRepository,
321
+ ): SubscriptionPaymentRepository => {
322
+ return new SubscriptionPaymentFirestoreRepository(options, subscriptionRepository)
323
+ },
324
+ deps: ['FirestoreOptions', 'SubscriptionRepository'],
325
+ },
326
+ {
327
+ provide: 'SubscriptionPlanRepository',
328
+ useFactory: (options: FirestoreOptions): SubscriptionPlanRepository => {
329
+ return new SubscriptionPlanFirestoreRepository(options)
330
+ },
331
+ deps: ['FirestoreOptions'],
332
+ },
333
+ {
334
+ provide: 'SubscriptionProductRepository',
335
+ useFactory: (options: FirestoreOptions): SubscriptionProductRepository => {
336
+ return new SubscriptionProductFirestoreRepository(options)
337
+ },
338
+ deps: ['FirestoreOptions'],
339
+ },
340
+ {
341
+ provide: 'SubscriptionRepository',
342
+ useFactory: (options: FirestoreOptions): SubscriptionRepository => {
343
+ return new SubscriptionFirestoreRepository(options)
344
+ },
345
+ deps: ['FirestoreOptions'],
346
+ },
347
+ {
348
+ provide: 'UserRepository',
349
+ useFactory: (options: FirestoreOptions): UserRepository => {
350
+ return new UserFirestoreRepository(options)
351
+ },
352
+ deps: ['FirestoreOptions'],
353
+ },
354
+ {
355
+ provide: 'UserAddressRepository',
356
+ useFactory: (options: FirestoreOptions, userRepository: UserFirestoreRepository): UserAddressRepository => {
357
+ return new UserAddressFirestoreRepository(options, userRepository)
358
+ },
359
+ deps: ['FirestoreOptions', 'UserRepository'],
360
+ },
361
+ {
362
+ provide: 'UserPaymentMethodRepository',
363
+ useFactory: (options: FirestoreOptions, userRepository: UserFirestoreRepository): UserPaymentMethodRepository => {
364
+ return new UserPaymentMethodFirestoreRepository(options, userRepository)
365
+ },
366
+ deps: ['FirestoreOptions', 'UserRepository'],
367
+ },
368
+ {
369
+ provide: 'SubscriptionMaterializationRepository',
370
+ useFactory: (options: FirestoreOptions): SubscriptionMaterializationRepository => {
371
+ return new SubscriptionMaterializationFirestoreRepository(options)
372
+ },
373
+ deps: ['FirestoreOptions'],
374
+ },
375
+ {
376
+ provide: 'SubscriptionSummaryRepository',
377
+ useFactory: (options: FirestoreOptions): SubscriptionSummaryRepository => {
378
+ return new SubscriptionSummaryFirestoreRepository(options)
379
+ },
380
+ deps: ['FirestoreOptions'],
381
+ },
382
+ {
383
+ provide: ProductVariantFirestoreRepository,
384
+ useFactory: (options: FirestoreOptions, productRepository: ProductFirestoreRepository): VariantRepository => {
385
+ return new ProductVariantFirestoreRepository(options, productRepository)
386
+ },
387
+ deps: ['FirestoreOptions', ProductFirestoreRepository],
388
+ },
389
+ {
390
+ provide: 'OrderBlockedRepository',
391
+ useFactory: (options: FirestoreOptions): OrderBlockedRepository => {
392
+ return new OrderBlockedFirestoreRepository(options)
393
+ },
394
+ deps: ['FirestoreOptions'],
395
+ },
396
+ {
397
+ provide: 'LogRepository',
398
+ useFactory: (options: FirestoreOptions): LogRepository => {
399
+ return new LogFirestoreRepository(options)
400
+ },
401
+ deps: ['FirestoreOptions'],
402
+ },
403
+ {
404
+ provide: 'SequenceRepository',
405
+ useFactory: (options: FirestoreOptions): SequenceFirestoreRepository => {
406
+ return new SequenceFirestoreRepository(options)
407
+ },
408
+ deps: ['FirestoreOptions'],
409
+ },
410
+ {
411
+ provide: 'BrandCategoryRepository',
412
+ useFactory: (options: FirestoreOptions): BrandCategoryRepository => {
413
+ return new BrandCategoryFirestoreRepository(options)
414
+ },
415
+ deps: ['FirestoreOptions'],
416
+ },
417
+ {
418
+ provide: 'ShopConfigsRepository',
419
+ useFactory: (options: FirestoreOptions): ShopConfigsRepository => {
420
+ return new ShopConfigsFirestoreRepository(options)
421
+ },
422
+ deps: ['FirestoreOptions'],
423
+ },
424
+ ],
425
+ })
426
+ export class AngularFirestoreModule {
427
+ static initializeApp(
428
+ options: {
429
+ firebase: FirebaseOptions
430
+ elasticSearch: AxiosElasticSearchConfig
431
+ },
432
+ nameOrConfig?: string | FirebaseAppConfig,
433
+ ): ModuleWithProviders<AngularFirestoreModule> {
434
+ return {
435
+ ngModule: AngularFirestoreModule,
436
+ providers: [
437
+ { provide: FIREBASE_OPTIONS, useValue: options.firebase },
438
+ { provide: FIREBASE_APP_NAME, useValue: nameOrConfig },
439
+ { provide: ES_CONFIG, useValue: options.elasticSearch },
440
+ ],
441
+ }
442
+ }
443
+ }
@@ -0,0 +1,269 @@
1
+ import { isPlatformBrowser } from '@angular/common'
2
+ import { ModuleWithProviders, NgModule, PLATFORM_ID } from '@angular/core'
3
+ import {
4
+ CacheConfig,
5
+ CategoryCollectionChildrenHasuraGraphQLRepository,
6
+ CategoryFilterHasuraGraphQLRepository,
7
+ CategoryFilterRepository,
8
+ CategoryHasuraGraphQLRepository,
9
+ CategoryProductHasuraGraphQLRepository,
10
+ CategoryRepository,
11
+ FilterHasuraGraphQLRepository,
12
+ FilterOptionHasuraGraphQLRepository,
13
+ FilterOptionRepository,
14
+ FilterRepository,
15
+ GraphQLParams,
16
+ HasuraConstructorParams,
17
+ HasuraGraphQLAuthOptions,
18
+ ProductCatalogHasuraGraphQLRepository,
19
+ ProductErrors,
20
+ ProductErrorsHasuraGraphQLRepository,
21
+ ProductErrorsRepository,
22
+ ProductGroupHasuraGraphQLRepository,
23
+ ProductHasuraGraphQLRepository,
24
+ ProductPriceLogHasuraGraphQLRepository,
25
+ ProductRepository,
26
+ ProductReviewHasuraGraphQLRepository,
27
+ ProductReviewRepository,
28
+ ProductStockEntryHasuraGraphQLRepository,
29
+ ProductStockEntryRepository,
30
+ ProductStockNotificationHasuraGraphQLRepository,
31
+ ProductStockNotificationRepository,
32
+ resolveCacheConfig,
33
+ VariantHasuraGraphQLRepository,
34
+ VariantRepository,
35
+ WishlistHasuraGraphQLRepository,
36
+ } from '@infrab4a/connect'
37
+
38
+ import { HASURA_OPTIONS } from './consts'
39
+
40
+ export type HasuraGraphQLOptions = { endpoint: string; credentials?: HasuraGraphQLAuthOptions; cache?: CacheConfig }
41
+
42
+ @NgModule({
43
+ providers: [
44
+ {
45
+ provide: 'HasuraConfig',
46
+ useFactory: (options: HasuraGraphQLOptions, platformId: string) => ({
47
+ endpoint: options.endpoint,
48
+ authOptions: options.credentials,
49
+ cache: resolveCacheConfig(options.cache),
50
+ interceptors: {
51
+ request: (request: GraphQLParams<any> & { interval: ReturnType<typeof setTimeout> }) => {
52
+ if (isPlatformBrowser(platformId)) return request
53
+
54
+ const interval = setInterval(() => {}, 100)
55
+
56
+ request.interval = interval
57
+
58
+ return request
59
+ },
60
+ response: (response: any, request: GraphQLParams<any> & { interval: ReturnType<typeof setTimeout> }) => {
61
+ if (isPlatformBrowser(platformId)) return response
62
+
63
+ clearInterval(request.interval)
64
+
65
+ return response
66
+ },
67
+ },
68
+ }),
69
+ deps: [HASURA_OPTIONS, PLATFORM_ID],
70
+ },
71
+ {
72
+ provide: 'CategoryRepository',
73
+ useExisting: CategoryHasuraGraphQLRepository,
74
+ },
75
+ {
76
+ provide: CategoryHasuraGraphQLRepository,
77
+ useFactory: (
78
+ options: any,
79
+ productRepository: ProductHasuraGraphQLRepository,
80
+ categoryFilterRepository: CategoryFilterHasuraGraphQLRepository,
81
+ ): CategoryRepository => {
82
+ return new CategoryHasuraGraphQLRepository(options, productRepository, categoryFilterRepository)
83
+ },
84
+ deps: ['HasuraConfig', ProductHasuraGraphQLRepository, CategoryFilterHasuraGraphQLRepository],
85
+ },
86
+ {
87
+ provide: 'ProductRepository',
88
+ useExisting: ProductHasuraGraphQLRepository,
89
+ },
90
+ {
91
+ provide: ProductHasuraGraphQLRepository,
92
+ useFactory: (hasuraConfig: any): ProductRepository => {
93
+ return new ProductHasuraGraphQLRepository(hasuraConfig)
94
+ },
95
+ deps: ['HasuraConfig'],
96
+ },
97
+ {
98
+ provide: 'ProductReviewRepository',
99
+ useExisting: ProductReviewHasuraGraphQLRepository,
100
+ },
101
+ {
102
+ provide: ProductReviewHasuraGraphQLRepository,
103
+ useFactory: (hasuraConfig: any): ProductReviewRepository => {
104
+ return new ProductReviewHasuraGraphQLRepository(hasuraConfig)
105
+ },
106
+ deps: ['HasuraConfig'],
107
+ },
108
+ {
109
+ provide: 'VariantRepository',
110
+ useExisting: VariantHasuraGraphQLRepository,
111
+ },
112
+ {
113
+ provide: VariantHasuraGraphQLRepository,
114
+ useFactory: (hasuraConfig: any): VariantRepository => {
115
+ return new VariantHasuraGraphQLRepository(hasuraConfig)
116
+ },
117
+ deps: ['HasuraConfig'],
118
+ },
119
+ {
120
+ provide: 'ProductStockNotificationRepository',
121
+ useExisting: ProductStockNotificationHasuraGraphQLRepository,
122
+ },
123
+ {
124
+ provide: ProductStockNotificationHasuraGraphQLRepository,
125
+ useFactory: (hasuraConfig: any): ProductStockNotificationRepository => {
126
+ return new ProductStockNotificationHasuraGraphQLRepository(hasuraConfig)
127
+ },
128
+ deps: ['HasuraConfig'],
129
+ },
130
+ {
131
+ provide: 'CategoryFilterRepository',
132
+ useExisting: CategoryFilterHasuraGraphQLRepository,
133
+ },
134
+ {
135
+ provide: CategoryFilterHasuraGraphQLRepository,
136
+ useFactory: (options: any): CategoryFilterRepository => {
137
+ return new CategoryFilterHasuraGraphQLRepository(options)
138
+ },
139
+ deps: ['HasuraConfig'],
140
+ },
141
+ {
142
+ provide: 'FilterOptionRepository',
143
+ useExisting: FilterOptionHasuraGraphQLRepository,
144
+ },
145
+ {
146
+ provide: FilterOptionHasuraGraphQLRepository,
147
+ useFactory: (options: any): FilterOptionRepository => {
148
+ return new FilterOptionHasuraGraphQLRepository(options)
149
+ },
150
+ deps: ['HasuraConfig'],
151
+ },
152
+ {
153
+ provide: 'FilterRepository',
154
+ useExisting: FilterHasuraGraphQLRepository,
155
+ },
156
+ {
157
+ provide: FilterHasuraGraphQLRepository,
158
+ useFactory: (
159
+ options: any,
160
+ filterOptionRepository: FilterOptionHasuraGraphQLRepository,
161
+ categoryFilterRepository: CategoryFilterHasuraGraphQLRepository,
162
+ ): FilterRepository => {
163
+ return new FilterHasuraGraphQLRepository(options, filterOptionRepository, categoryFilterRepository)
164
+ },
165
+ deps: ['HasuraConfig', FilterOptionHasuraGraphQLRepository, CategoryFilterHasuraGraphQLRepository],
166
+ },
167
+ {
168
+ provide: CategoryCollectionChildrenHasuraGraphQLRepository,
169
+ useFactory: (options: any): CategoryCollectionChildrenHasuraGraphQLRepository =>
170
+ new CategoryCollectionChildrenHasuraGraphQLRepository(options),
171
+ deps: ['HasuraConfig'],
172
+ },
173
+ {
174
+ provide: 'CategoryCollectionChildrenRepository',
175
+ useExisting: CategoryCollectionChildrenHasuraGraphQLRepository,
176
+ },
177
+ {
178
+ provide: CategoryProductHasuraGraphQLRepository,
179
+ useFactory: (options: any): CategoryProductHasuraGraphQLRepository => {
180
+ return new CategoryProductHasuraGraphQLRepository(options)
181
+ },
182
+ deps: ['HasuraConfig'],
183
+ },
184
+ {
185
+ provide: 'CategoryProductRepository',
186
+ useExisting: CategoryProductHasuraGraphQLRepository,
187
+ },
188
+ {
189
+ provide: WishlistHasuraGraphQLRepository,
190
+ useFactory: (
191
+ options: any,
192
+ categoryProductRepository: CategoryProductHasuraGraphQLRepository,
193
+ ): WishlistHasuraGraphQLRepository => {
194
+ return new WishlistHasuraGraphQLRepository(options, categoryProductRepository)
195
+ },
196
+ deps: ['HasuraConfig', CategoryProductHasuraGraphQLRepository],
197
+ },
198
+ {
199
+ provide: 'WishlistRepository',
200
+ useExisting: WishlistHasuraGraphQLRepository,
201
+ },
202
+ {
203
+ provide: ProductErrorsHasuraGraphQLRepository,
204
+ useFactory: (
205
+ options: HasuraConstructorParams<ProductErrors>,
206
+ productRepository: ProductHasuraGraphQLRepository,
207
+ ): ProductErrorsRepository => {
208
+ return new ProductErrorsHasuraGraphQLRepository(options, productRepository)
209
+ },
210
+ deps: ['HasuraConfig', ProductHasuraGraphQLRepository],
211
+ },
212
+ {
213
+ provide: 'ProductErrorsRepository',
214
+ useExisting: ProductErrorsHasuraGraphQLRepository,
215
+ },
216
+ {
217
+ provide: ProductCatalogHasuraGraphQLRepository,
218
+ useFactory: (options: any): ProductCatalogHasuraGraphQLRepository => {
219
+ return new ProductCatalogHasuraGraphQLRepository(options)
220
+ },
221
+ deps: ['HasuraConfig'],
222
+ },
223
+ {
224
+ provide: 'ProductCatalogRepository',
225
+ useExisting: ProductCatalogHasuraGraphQLRepository,
226
+ },
227
+ {
228
+ provide: ProductStockEntryHasuraGraphQLRepository,
229
+ useFactory: (options: any): ProductStockEntryRepository => {
230
+ return new ProductStockEntryHasuraGraphQLRepository(options)
231
+ },
232
+ deps: ['HasuraConfig'],
233
+ },
234
+ {
235
+ provide: 'ProductStockEntryRepository',
236
+ useExisting: ProductStockEntryHasuraGraphQLRepository,
237
+ },
238
+ {
239
+ provide: ProductGroupHasuraGraphQLRepository,
240
+ useFactory: (options: any): ProductGroupHasuraGraphQLRepository => {
241
+ return new ProductGroupHasuraGraphQLRepository(options)
242
+ },
243
+ deps: ['HasuraConfig'],
244
+ },
245
+ {
246
+ provide: 'ProductGroupRepository',
247
+ useExisting: ProductGroupHasuraGraphQLRepository,
248
+ },
249
+ {
250
+ provide: ProductPriceLogHasuraGraphQLRepository,
251
+ useFactory: (options: any): ProductPriceLogHasuraGraphQLRepository => {
252
+ return new ProductPriceLogHasuraGraphQLRepository(options)
253
+ },
254
+ deps: ['HasuraConfig'],
255
+ },
256
+ {
257
+ provide: 'ProductPriceLogRepository',
258
+ useExisting: ProductPriceLogHasuraGraphQLRepository,
259
+ },
260
+ ],
261
+ })
262
+ export class AngularHasuraGraphQLModule {
263
+ static initializeApp(options: HasuraGraphQLOptions): ModuleWithProviders<AngularHasuraGraphQLModule> {
264
+ return {
265
+ ngModule: AngularHasuraGraphQLModule,
266
+ providers: [{ provide: HASURA_OPTIONS, useValue: options }],
267
+ }
268
+ }
269
+ }