@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
@@ -0,0 +1,371 @@
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
+ Buy2WinFirestoreRepository,
9
+ Buy2WinRepository,
10
+ CampaignDashboardFirestoreRepository,
11
+ CampaignDashboardRepository,
12
+ CampaignHashtagFirestoreRepository,
13
+ CampaignHashtagRepository,
14
+ CategoryFirestoreRepository,
15
+ CategoryRepository,
16
+ CheckoutFirestoreRepository,
17
+ CheckoutRepository,
18
+ CheckoutSubscriptionFirestoreRepository,
19
+ CheckoutSubscriptionRepository,
20
+ ConnectFirestoreService,
21
+ CouponFirestoreRepository,
22
+ CouponRepository,
23
+ EditionRepository,
24
+ FirestoreConstructorParams,
25
+ FirestoreIntertceptorRequestParams,
26
+ GroupFirestoreRepository,
27
+ GroupRepository,
28
+ HomeFirestoreRepository,
29
+ HomeRepository,
30
+ LeadFirestoreRepository,
31
+ LeadRepository,
32
+ LegacyOrderFirestoreRepository,
33
+ LegacyOrderRepository,
34
+ LogFirestoreRepository,
35
+ LogRepository,
36
+ OrderBlockedFirestoreRepository,
37
+ OrderBlockedRepository,
38
+ OrderFirestoreRepository,
39
+ OrderRepository,
40
+ PaymentFirestoreRepository,
41
+ PaymentRepository,
42
+ ProductFirestoreRepository,
43
+ ProductRepository,
44
+ ProductVariantFirestoreRepository,
45
+ SequenceFirestoreRepository,
46
+ ShopMenuFirestoreRepository,
47
+ ShopMenuRepository,
48
+ ShopSettingsFirestoreRepository,
49
+ ShopSettingsRepository,
50
+ SubscriptionEditionFirestoreRepository,
51
+ SubscriptionFirestoreRepository,
52
+ SubscriptionMaterializationFirestoreRepository,
53
+ SubscriptionMaterializationRepository,
54
+ SubscriptionPaymentFirestoreRepository,
55
+ SubscriptionPaymentRepository,
56
+ SubscriptionPlanFirestoreRepository,
57
+ SubscriptionPlanRepository,
58
+ SubscriptionProductFirestoreRepository,
59
+ SubscriptionProductRepository,
60
+ SubscriptionRepository,
61
+ SubscriptionSummaryFirestoreRepository,
62
+ SubscriptionSummaryRepository,
63
+ UserAddressFirestoreRepository,
64
+ UserAddressRepository,
65
+ UserBeautyProfileFirestoreRepository,
66
+ UserFirestoreRepository,
67
+ UserPaymentMethodFirestoreRepository,
68
+ UserPaymentMethodRepository,
69
+ UserRepository,
70
+ VariantRepository,
71
+ } from '@infrab4a/connect'
72
+
73
+ import { AngularElasticSeachModule } from './angular-elastic-search.module'
74
+ import { ES_CONFIG, FIREBASE_APP_NAME, FIREBASE_OPTIONS } from './consts'
75
+ import { MobileOperationSystemCheckerHelper } from './helpers'
76
+ import { FirebaseAppConfig } from './types'
77
+
78
+ export type FirestoreOptions = Pick<FirestoreConstructorParams<any>, 'firestore' | 'interceptors'>
79
+
80
+ @NgModule({
81
+ imports: [
82
+ AngularElasticSeachModule,
83
+ provideFirestore((injector: Injector) => {
84
+ const platformId = injector.get(PLATFORM_ID)
85
+
86
+ if (isPlatformServer(platformId) || !MobileOperationSystemCheckerHelper.isAppleDevice())
87
+ return initializeFirestore(injector.get(FirebaseApp), {
88
+ ignoreUndefinedProperties: true,
89
+ })
90
+
91
+ const firestore = initializeFirestore(injector.get(FirebaseApp), {
92
+ experimentalForceLongPolling: true,
93
+ ignoreUndefinedProperties: true,
94
+ localCache: memoryLocalCache(),
95
+ })
96
+
97
+ return firestore
98
+ }),
99
+ ],
100
+ providers: [
101
+ {
102
+ provide: 'FirestoreOptions',
103
+ useFactory: (firestore: Firestore, platformId: string): FirestoreOptions => ({
104
+ firestore: new ConnectFirestoreService(firestore),
105
+ interceptors: {
106
+ request: (request: FirestoreIntertceptorRequestParams<any> & { interval: ReturnType<typeof setTimeout> }) => {
107
+ if (isPlatformBrowser(platformId)) return request
108
+
109
+ const interval = setInterval(() => {}, 100)
110
+
111
+ request.interval = interval
112
+
113
+ return request
114
+ },
115
+ response: (
116
+ response: any,
117
+ request: FirestoreIntertceptorRequestParams<any> & { interval: ReturnType<typeof setTimeout> },
118
+ ) => {
119
+ if (isPlatformBrowser(platformId)) return response
120
+
121
+ clearInterval(request.interval)
122
+
123
+ return response
124
+ },
125
+ },
126
+ }),
127
+ deps: [Firestore, PLATFORM_ID],
128
+ },
129
+ {
130
+ provide: 'BeautyProfileRepository',
131
+ useFactory: (config: FirestoreOptions, userRepository: UserFirestoreRepository): BeautyProfileRepository => {
132
+ return new UserBeautyProfileFirestoreRepository(config, userRepository)
133
+ },
134
+ deps: ['FirestoreOptions', 'UserRepository'],
135
+ },
136
+ {
137
+ provide: 'Buy2WinRepository',
138
+ useFactory: (options: FirestoreOptions): Buy2WinRepository => {
139
+ return new Buy2WinFirestoreRepository(options)
140
+ },
141
+ deps: ['FirestoreOptions'],
142
+ },
143
+ {
144
+ provide: CategoryFirestoreRepository,
145
+ useFactory: (options: FirestoreOptions): CategoryRepository => {
146
+ return new CategoryFirestoreRepository(options)
147
+ },
148
+ deps: ['FirestoreOptions'],
149
+ },
150
+ {
151
+ provide: 'CheckoutRepository',
152
+ useFactory: (options: FirestoreOptions): CheckoutRepository => {
153
+ return new CheckoutFirestoreRepository(options)
154
+ },
155
+ deps: ['FirestoreOptions'],
156
+ },
157
+ {
158
+ provide: 'CheckoutSubscriptionRepository',
159
+ useFactory: (options: FirestoreOptions): CheckoutSubscriptionRepository => {
160
+ return new CheckoutSubscriptionFirestoreRepository(options)
161
+ },
162
+ deps: ['FirestoreOptions'],
163
+ },
164
+ {
165
+ provide: 'CouponRepository',
166
+ useFactory: (options: FirestoreOptions): CouponRepository => {
167
+ return new CouponFirestoreRepository(options)
168
+ },
169
+ deps: ['FirestoreOptions'],
170
+ },
171
+ {
172
+ provide: 'CampaignHashtagRepository',
173
+ useFactory: (options: FirestoreOptions): CampaignHashtagRepository => {
174
+ return new CampaignHashtagFirestoreRepository(options)
175
+ },
176
+ deps: ['FirestoreOptions'],
177
+ },
178
+ {
179
+ provide: 'CampaignDashboardRepository',
180
+ useFactory: (options: FirestoreOptions): CampaignDashboardRepository => {
181
+ return new CampaignDashboardFirestoreRepository(options)
182
+ },
183
+ deps: ['FirestoreOptions'],
184
+ },
185
+ {
186
+ provide: 'EditionRepository',
187
+ useFactory: (
188
+ options: FirestoreOptions,
189
+ subscriptionRepository: SubscriptionFirestoreRepository,
190
+ ): EditionRepository => {
191
+ return new SubscriptionEditionFirestoreRepository(options, subscriptionRepository)
192
+ },
193
+ deps: ['FirestoreOptions', 'SubscriptionRepository'],
194
+ },
195
+ {
196
+ provide: 'GroupRepository',
197
+ useFactory: (options: FirestoreOptions): GroupRepository => {
198
+ return new GroupFirestoreRepository(options)
199
+ },
200
+ deps: ['FirestoreOptions'],
201
+ },
202
+ {
203
+ provide: 'HomeRepository',
204
+ useFactory: (options: FirestoreOptions): HomeRepository => {
205
+ return new HomeFirestoreRepository(options)
206
+ },
207
+ deps: ['FirestoreOptions'],
208
+ },
209
+ {
210
+ provide: 'LeadRepository',
211
+ useFactory: (options: FirestoreOptions): LeadRepository => {
212
+ return new LeadFirestoreRepository(options)
213
+ },
214
+ deps: ['FirestoreOptions'],
215
+ },
216
+ {
217
+ provide: 'LegacyOrderRepository',
218
+ useFactory: (options: FirestoreOptions): LegacyOrderRepository => {
219
+ return new LegacyOrderFirestoreRepository(options)
220
+ },
221
+ deps: ['FirestoreOptions'],
222
+ },
223
+ {
224
+ provide: 'ShopMenuRepository',
225
+ useFactory: (options: FirestoreOptions): ShopMenuRepository => {
226
+ return new ShopMenuFirestoreRepository(options)
227
+ },
228
+ deps: ['FirestoreOptions'],
229
+ },
230
+ {
231
+ provide: 'OrderRepository',
232
+ useFactory: (options: FirestoreOptions): OrderRepository => {
233
+ return new OrderFirestoreRepository(options)
234
+ },
235
+ deps: ['FirestoreOptions'],
236
+ },
237
+ {
238
+ provide: 'PaymentRepository',
239
+ useFactory: (options: FirestoreOptions): PaymentRepository => {
240
+ return new PaymentFirestoreRepository(options)
241
+ },
242
+ deps: ['FirestoreOptions'],
243
+ },
244
+ {
245
+ provide: ProductFirestoreRepository,
246
+ useFactory: (options: FirestoreOptions): ProductRepository => {
247
+ return new ProductFirestoreRepository(options)
248
+ },
249
+ deps: ['FirestoreOptions'],
250
+ },
251
+ {
252
+ provide: 'ShopSettingsRepository',
253
+ useFactory: (options: FirestoreOptions): ShopSettingsRepository => {
254
+ return new ShopSettingsFirestoreRepository(options)
255
+ },
256
+ deps: ['FirestoreOptions'],
257
+ },
258
+ {
259
+ provide: 'SubscriptionPaymentRepository',
260
+ useFactory: (
261
+ options: FirestoreOptions,
262
+ subscriptionRepository: SubscriptionFirestoreRepository,
263
+ ): SubscriptionPaymentRepository => {
264
+ return new SubscriptionPaymentFirestoreRepository(options, subscriptionRepository)
265
+ },
266
+ deps: ['FirestoreOptions', 'SubscriptionRepository'],
267
+ },
268
+ {
269
+ provide: 'SubscriptionPlanRepository',
270
+ useFactory: (options: FirestoreOptions): SubscriptionPlanRepository => {
271
+ return new SubscriptionPlanFirestoreRepository(options)
272
+ },
273
+ deps: ['FirestoreOptions'],
274
+ },
275
+ {
276
+ provide: 'SubscriptionProductRepository',
277
+ useFactory: (options: FirestoreOptions): SubscriptionProductRepository => {
278
+ return new SubscriptionProductFirestoreRepository(options)
279
+ },
280
+ deps: ['FirestoreOptions'],
281
+ },
282
+ {
283
+ provide: 'SubscriptionRepository',
284
+ useFactory: (options: FirestoreOptions): SubscriptionRepository => {
285
+ return new SubscriptionFirestoreRepository(options)
286
+ },
287
+ deps: ['FirestoreOptions'],
288
+ },
289
+ {
290
+ provide: 'UserRepository',
291
+ useFactory: (options: FirestoreOptions): UserRepository => {
292
+ return new UserFirestoreRepository(options)
293
+ },
294
+ deps: ['FirestoreOptions'],
295
+ },
296
+ {
297
+ provide: 'UserAddressRepository',
298
+ useFactory: (options: FirestoreOptions, userRepository: UserFirestoreRepository): UserAddressRepository => {
299
+ return new UserAddressFirestoreRepository(options, userRepository)
300
+ },
301
+ deps: ['FirestoreOptions', 'UserRepository'],
302
+ },
303
+ {
304
+ provide: 'UserPaymentMethodRepository',
305
+ useFactory: (options: FirestoreOptions, userRepository: UserFirestoreRepository): UserPaymentMethodRepository => {
306
+ return new UserPaymentMethodFirestoreRepository(options, userRepository)
307
+ },
308
+ deps: ['FirestoreOptions', 'UserRepository'],
309
+ },
310
+ {
311
+ provide: 'SubscriptionMaterializationRepository',
312
+ useFactory: (options: FirestoreOptions): SubscriptionMaterializationRepository => {
313
+ return new SubscriptionMaterializationFirestoreRepository(options)
314
+ },
315
+ deps: ['FirestoreOptions'],
316
+ },
317
+ {
318
+ provide: 'SubscriptionSummaryRepository',
319
+ useFactory: (options: FirestoreOptions): SubscriptionSummaryRepository => {
320
+ return new SubscriptionSummaryFirestoreRepository(options)
321
+ },
322
+ deps: ['FirestoreOptions'],
323
+ },
324
+ {
325
+ provide: ProductVariantFirestoreRepository,
326
+ useFactory: (options: FirestoreOptions, productRepository: ProductFirestoreRepository): VariantRepository => {
327
+ return new ProductVariantFirestoreRepository(options, productRepository)
328
+ },
329
+ deps: ['FirestoreOptions', ProductFirestoreRepository],
330
+ },
331
+ {
332
+ provide: 'OrderBlockedRepository',
333
+ useFactory: (options: FirestoreOptions): OrderBlockedRepository => {
334
+ return new OrderBlockedFirestoreRepository(options)
335
+ },
336
+ deps: ['FirestoreOptions'],
337
+ },
338
+ {
339
+ provide: 'LogRepository',
340
+ useFactory: (options: FirestoreOptions): LogRepository => {
341
+ return new LogFirestoreRepository(options)
342
+ },
343
+ deps: ['FirestoreOptions'],
344
+ },
345
+ {
346
+ provide: 'SequenceRepository',
347
+ useFactory: (options: FirestoreOptions): SequenceFirestoreRepository => {
348
+ return new SequenceFirestoreRepository(options)
349
+ },
350
+ deps: ['FirestoreOptions'],
351
+ },
352
+ ],
353
+ })
354
+ export class AngularFirestoreModule {
355
+ static initializeApp(
356
+ options: {
357
+ firebase: FirebaseOptions
358
+ elasticSearch: AxiosElasticSearchConfig
359
+ },
360
+ nameOrConfig?: string | FirebaseAppConfig,
361
+ ): ModuleWithProviders<AngularFirestoreModule> {
362
+ return {
363
+ ngModule: AngularFirestoreModule,
364
+ providers: [
365
+ { provide: FIREBASE_OPTIONS, useValue: options.firebase },
366
+ { provide: FIREBASE_APP_NAME, useValue: nameOrConfig },
367
+ { provide: ES_CONFIG, useValue: options.elasticSearch },
368
+ ],
369
+ }
370
+ }
371
+ }
@@ -0,0 +1,219 @@
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
+ ProductErrors,
19
+ ProductErrorsHasuraGraphQLRepository,
20
+ ProductErrorsRepository,
21
+ ProductHasuraGraphQLRepository,
22
+ ProductRepository,
23
+ ProductReviewHasuraGraphQLRepository,
24
+ ProductReviewRepository,
25
+ ProductStockNotificationHasuraGraphQLRepository,
26
+ ProductStockNotificationRepository,
27
+ VariantHasuraGraphQLRepository,
28
+ VariantRepository,
29
+ WishlistHasuraGraphQLRepository,
30
+ } from '@infrab4a/connect'
31
+
32
+ import { HASURA_OPTIONS } from './consts'
33
+
34
+ export type HasuraGraphQLOptions = { endpoint: string; credentials?: HasuraGraphQLAuthOptions; cache?: CacheConfig }
35
+
36
+ @NgModule({
37
+ providers: [
38
+ {
39
+ provide: 'HasuraConfig',
40
+ useFactory: (options: HasuraGraphQLOptions, platformId: string) => ({
41
+ endpoint: options.endpoint,
42
+ authOptions: options.credentials,
43
+ cache: options.cache,
44
+ interceptors: {
45
+ request: (request: GraphQLParams<any> & { interval: ReturnType<typeof setTimeout> }) => {
46
+ if (isPlatformBrowser(platformId)) return request
47
+
48
+ const interval = setInterval(() => {}, 100)
49
+
50
+ request.interval = interval
51
+
52
+ return request
53
+ },
54
+ response: (response: any, request: GraphQLParams<any> & { interval: ReturnType<typeof setTimeout> }) => {
55
+ if (isPlatformBrowser(platformId)) return response
56
+
57
+ clearInterval(request.interval)
58
+
59
+ return response
60
+ },
61
+ },
62
+ }),
63
+ deps: [HASURA_OPTIONS, PLATFORM_ID],
64
+ },
65
+ {
66
+ provide: 'CategoryRepository',
67
+ useExisting: CategoryHasuraGraphQLRepository,
68
+ },
69
+ {
70
+ provide: CategoryHasuraGraphQLRepository,
71
+ useFactory: (
72
+ options: any,
73
+ productRepository: ProductHasuraGraphQLRepository,
74
+ categoryFilterRepository: CategoryFilterHasuraGraphQLRepository,
75
+ ): CategoryRepository => {
76
+ return new CategoryHasuraGraphQLRepository(options, productRepository, categoryFilterRepository)
77
+ },
78
+ deps: ['HasuraConfig', ProductHasuraGraphQLRepository, CategoryFilterHasuraGraphQLRepository],
79
+ },
80
+ {
81
+ provide: 'ProductRepository',
82
+ useExisting: ProductHasuraGraphQLRepository,
83
+ },
84
+ {
85
+ provide: ProductHasuraGraphQLRepository,
86
+ useFactory: (hasuraConfig: any): ProductRepository => {
87
+ return new ProductHasuraGraphQLRepository(hasuraConfig)
88
+ },
89
+ deps: ['HasuraConfig'],
90
+ },
91
+ {
92
+ provide: 'ProductReviewRepository',
93
+ useExisting: ProductReviewHasuraGraphQLRepository,
94
+ },
95
+ {
96
+ provide: ProductReviewHasuraGraphQLRepository,
97
+ useFactory: (hasuraConfig: any): ProductReviewRepository => {
98
+ return new ProductReviewHasuraGraphQLRepository(hasuraConfig)
99
+ },
100
+ deps: ['HasuraConfig'],
101
+ },
102
+ {
103
+ provide: 'VariantRepository',
104
+ useExisting: VariantHasuraGraphQLRepository,
105
+ },
106
+ {
107
+ provide: VariantHasuraGraphQLRepository,
108
+ useFactory: (hasuraConfig: any): VariantRepository => {
109
+ return new VariantHasuraGraphQLRepository(hasuraConfig)
110
+ },
111
+ deps: ['HasuraConfig'],
112
+ },
113
+ {
114
+ provide: 'ProductStockNotificationRepository',
115
+ useExisting: ProductStockNotificationHasuraGraphQLRepository,
116
+ },
117
+ {
118
+ provide: ProductStockNotificationHasuraGraphQLRepository,
119
+ useFactory: (hasuraConfig: any): ProductStockNotificationRepository => {
120
+ return new ProductStockNotificationHasuraGraphQLRepository(hasuraConfig)
121
+ },
122
+ deps: ['HasuraConfig'],
123
+ },
124
+ {
125
+ provide: 'CategoryFilterRepository',
126
+ useExisting: CategoryFilterHasuraGraphQLRepository,
127
+ },
128
+ {
129
+ provide: CategoryFilterHasuraGraphQLRepository,
130
+ useFactory: (options: any): CategoryFilterRepository => {
131
+ return new CategoryFilterHasuraGraphQLRepository(options)
132
+ },
133
+ deps: ['HasuraConfig'],
134
+ },
135
+ {
136
+ provide: 'FilterOptionRepository',
137
+ useExisting: FilterOptionHasuraGraphQLRepository,
138
+ },
139
+ {
140
+ provide: FilterOptionHasuraGraphQLRepository,
141
+ useFactory: (options: any): FilterOptionRepository => {
142
+ return new FilterOptionHasuraGraphQLRepository(options)
143
+ },
144
+ deps: ['HasuraConfig'],
145
+ },
146
+ {
147
+ provide: 'FilterRepository',
148
+ useExisting: FilterHasuraGraphQLRepository,
149
+ },
150
+ {
151
+ provide: FilterHasuraGraphQLRepository,
152
+ useFactory: (
153
+ options: any,
154
+ filterOptionRepository: FilterOptionHasuraGraphQLRepository,
155
+ categoryFilterRepository: CategoryFilterHasuraGraphQLRepository,
156
+ ): FilterRepository => {
157
+ return new FilterHasuraGraphQLRepository(options, filterOptionRepository, categoryFilterRepository)
158
+ },
159
+ deps: ['HasuraConfig', FilterOptionHasuraGraphQLRepository, CategoryFilterHasuraGraphQLRepository],
160
+ },
161
+ {
162
+ provide: CategoryCollectionChildrenHasuraGraphQLRepository,
163
+ useFactory: (options: any): CategoryCollectionChildrenHasuraGraphQLRepository =>
164
+ new CategoryCollectionChildrenHasuraGraphQLRepository(options),
165
+ deps: ['HasuraConfig'],
166
+ },
167
+ {
168
+ provide: 'CategoryCollectionChildrenRepository',
169
+ useExisting: CategoryCollectionChildrenHasuraGraphQLRepository,
170
+ },
171
+ {
172
+ provide: CategoryProductHasuraGraphQLRepository,
173
+ useFactory: (options: any): CategoryProductHasuraGraphQLRepository => {
174
+ return new CategoryProductHasuraGraphQLRepository(options)
175
+ },
176
+ deps: ['HasuraConfig'],
177
+ },
178
+ {
179
+ provide: 'CategoryProductRepository',
180
+ useExisting: CategoryProductHasuraGraphQLRepository,
181
+ },
182
+ {
183
+ provide: WishlistHasuraGraphQLRepository,
184
+ useFactory: (
185
+ options: any,
186
+ categoryProductRepository: CategoryProductHasuraGraphQLRepository,
187
+ ): WishlistHasuraGraphQLRepository => {
188
+ return new WishlistHasuraGraphQLRepository(options, categoryProductRepository)
189
+ },
190
+ deps: ['HasuraConfig', CategoryProductHasuraGraphQLRepository],
191
+ },
192
+ {
193
+ provide: 'WishlistRepository',
194
+ useExisting: WishlistHasuraGraphQLRepository,
195
+ },
196
+ {
197
+ provide: ProductErrorsHasuraGraphQLRepository,
198
+ useFactory: (
199
+ options: HasuraConstructorParams<ProductErrors>,
200
+ productRepository: ProductHasuraGraphQLRepository,
201
+ ): ProductErrorsRepository => {
202
+ return new ProductErrorsHasuraGraphQLRepository(options, productRepository)
203
+ },
204
+ deps: ['HasuraConfig', ProductHasuraGraphQLRepository],
205
+ },
206
+ {
207
+ provide: 'ProductErrorsRepository',
208
+ useExisting: ProductErrorsHasuraGraphQLRepository,
209
+ },
210
+ ],
211
+ })
212
+ export class AngularHasuraGraphQLModule {
213
+ static initializeApp(options: HasuraGraphQLOptions): ModuleWithProviders<AngularHasuraGraphQLModule> {
214
+ return {
215
+ ngModule: AngularHasuraGraphQLModule,
216
+ providers: [{ provide: HASURA_OPTIONS, useValue: options }],
217
+ }
218
+ }
219
+ }
@@ -0,0 +1,23 @@
1
+ import { ModuleWithProviders, NgModule } from '@angular/core'
2
+ import { ProductsVertexSearch, VertexAxiosAdapter, VertexSearchConfig } from '@infrab4a/connect'
3
+
4
+ import { VERTEX_CONFIG } from './consts'
5
+
6
+ @NgModule({
7
+ providers: [
8
+ {
9
+ provide: ProductsVertexSearch,
10
+ useFactory: (configuration: VertexSearchConfig): ProductsVertexSearch =>
11
+ new ProductsVertexSearch(new VertexAxiosAdapter(configuration)),
12
+ deps: [VERTEX_CONFIG],
13
+ },
14
+ ],
15
+ })
16
+ export class AngularVertexSeachModule {
17
+ static initializeApp(options: VertexSearchConfig): ModuleWithProviders<AngularVertexSeachModule> {
18
+ return {
19
+ ngModule: AngularVertexSeachModule,
20
+ providers: [{ provide: VERTEX_CONFIG, useValue: options }],
21
+ }
22
+ }
23
+ }
@@ -0,0 +1 @@
1
+ export const BACKEND_URL = 'BACKEND_URL'
@@ -0,0 +1 @@
1
+ export const CATEGORY_STRUCTURE = 'CATEGORY_STRUCTURE'
@@ -0,0 +1 @@
1
+ export const DEFAULT_SHOP = 'DEFAULT_SHOP'
@@ -0,0 +1 @@
1
+ export const ES_CONFIG = 'ES_CONFIG'
@@ -0,0 +1,5 @@
1
+ import { InjectionToken } from '@angular/core'
2
+
3
+ export const FIREBASE_APP_NAME = new InjectionToken('firebaseAppName')
4
+ export const FIREBASE_OPTIONS = new InjectionToken('firebaseOptions')
5
+ export const APP_CHECK_PROVIDER = new InjectionToken('appCheckProvider')
@@ -0,0 +1 @@
1
+ export const HASURA_OPTIONS = 'HASURA_OPTIONS'
@@ -0,0 +1,8 @@
1
+ export * from './backend-url.const'
2
+ export * from './category-structure'
3
+ export * from './default-shop.const'
4
+ export * from './es-config.const'
5
+ export * from './firebase-const'
6
+ export * from './hasura-options.const'
7
+ export * from './persistence.const'
8
+ export * from './vertex-config.const'
@@ -0,0 +1 @@
1
+ export const PERSISTENCE_PROVIDER = 'PERSISTENCE_PROVIDER'
@@ -0,0 +1 @@
1
+ export const STORAGE_BASE_URL = 'STORAGE_BASE_URL'
@@ -0,0 +1 @@
1
+ export const VERTEX_CONFIG = 'VERTEX_CONFIG'
@@ -0,0 +1 @@
1
+ export * from './mobile-operation-system-checker.helper'
@@ -0,0 +1,10 @@
1
+ export class MobileOperationSystemCheckerHelper {
2
+ static isAppleDevice() {
3
+ return (
4
+ ['iPad Simulator', 'iPhone Simulator', 'iPod Simulator', 'iPad', 'iPhone', 'iPod'].includes(
5
+ navigator?.platform,
6
+ ) ||
7
+ (navigator?.userAgent?.includes?.('Mac') && 'ontouchend' in (document || {}))
8
+ )
9
+ }
10
+ }
package/src/index.ts ADDED
@@ -0,0 +1,6 @@
1
+ export * from './angular-connect.module'
2
+ export * from './angular-firebase-auth.module'
3
+ export * from './angular-firestore.module'
4
+ export * from './angular-hasura-graphql.module'
5
+ export * from './persistence'
6
+ export * from './services'