@infrab4a/connect-nestjs 2.8.2 → 2.8.3

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 (97) hide show
  1. package/eslint.config.js +17 -0
  2. package/package.json +3 -13
  3. package/project.json +45 -0
  4. package/src/consts/es-config.const.ts +1 -0
  5. package/src/consts/hasura-options.const.ts +1 -0
  6. package/src/consts/index.ts +4 -0
  7. package/src/consts/storage.const.ts +1 -0
  8. package/src/consts/vertex-config.const.ts +1 -0
  9. package/src/index.ts +7 -0
  10. package/src/infra/elasticsearch/adapters/index.ts +1 -0
  11. package/src/infra/elasticsearch/adapters/native-elasticsearch-adapter.ts +137 -0
  12. package/src/infra/elasticsearch/index.ts +1 -0
  13. package/src/infra/firebase/firestore/index.ts +2 -0
  14. package/src/infra/firebase/firestore/services/connect-collection-reference.ts +27 -0
  15. package/src/infra/firebase/firestore/services/connect-collection.service.ts +137 -0
  16. package/src/infra/firebase/firestore/services/connect-document-reference.ts +12 -0
  17. package/src/infra/firebase/firestore/services/connect-document.service.ts +51 -0
  18. package/src/infra/firebase/firestore/services/connect-firestore.service.ts +24 -0
  19. package/src/infra/firebase/firestore/services/connect-firestore.ts +9 -0
  20. package/src/infra/firebase/firestore/services/index.ts +6 -0
  21. package/src/infra/firebase/firestore/types/connect-query-snapshot.type.ts +6 -0
  22. package/src/infra/firebase/firestore/types/index.ts +1 -0
  23. package/src/infra/firebase/firestore/vo/connect-base-document-snapshot.vo.ts +27 -0
  24. package/src/infra/firebase/firestore/vo/index.ts +1 -0
  25. package/src/infra/firebase/index.ts +1 -0
  26. package/src/infra/index.ts +4 -0
  27. package/src/infra/pagarme/adapters/index.ts +3 -0
  28. package/src/infra/pagarme/adapters/pagarme-bank-slip-api.adapter.ts +97 -0
  29. package/src/infra/pagarme/adapters/pagarme-card-api.adapter.ts +221 -0
  30. package/src/infra/pagarme/adapters/pagarme-pix-api.adapter.ts +70 -0
  31. package/src/infra/pagarme/index.ts +1 -0
  32. package/src/infra/vertex-ai/adapters/discovery-engine-adapter.ts +148 -0
  33. package/src/infra/vertex-ai/adapters/index.ts +1 -0
  34. package/src/infra/vertex-ai/helpers/index.ts +1 -0
  35. package/src/infra/vertex-ai/helpers/product-vertex-ai.helper.ts +52 -0
  36. package/src/infra/vertex-ai/index.ts +3 -0
  37. package/src/infra/vertex-ai/types/index.ts +2 -0
  38. package/src/infra/vertex-ai/types/vertex-config.ts +23 -0
  39. package/src/infra/vertex-ai/types/vertex-search-result.ts +17 -0
  40. package/src/nest-connect.module.ts +36 -0
  41. package/src/nest-elastic-search.module.ts +26 -0
  42. package/src/nest-firestore.module.ts +403 -0
  43. package/src/nest-hasura-graphql.module.ts +284 -0
  44. package/src/nest-storage.module.ts +16 -0
  45. package/src/nest-vertex-ai-search.module.ts +26 -0
  46. package/src/types/pagarme.d.ts +24 -0
  47. package/tsconfig.json +15 -0
  48. package/tsconfig.lib.json +7 -0
  49. package/tsconfig.lib.prod.json +10 -0
  50. package/tsconfig.spec.json +17 -0
  51. package/index.cjs.d.ts +0 -1
  52. package/index.cjs.default.js +0 -1
  53. package/index.cjs.js +0 -1411
  54. package/index.cjs.mjs +0 -2
  55. package/index.esm.js +0 -1394
  56. package/src/consts/es-config.const.d.ts +0 -1
  57. package/src/consts/hasura-options.const.d.ts +0 -1
  58. package/src/consts/index.d.ts +0 -4
  59. package/src/consts/storage.const.d.ts +0 -1
  60. package/src/consts/vertex-config.const.d.ts +0 -1
  61. package/src/index.d.ts +0 -7
  62. package/src/infra/elasticsearch/adapters/index.d.ts +0 -1
  63. package/src/infra/elasticsearch/adapters/native-elasticsearch-adapter.d.ts +0 -19
  64. package/src/infra/elasticsearch/index.d.ts +0 -1
  65. package/src/infra/firebase/firestore/index.d.ts +0 -2
  66. package/src/infra/firebase/firestore/services/connect-collection-reference.d.ts +0 -19
  67. package/src/infra/firebase/firestore/services/connect-collection.service.d.ts +0 -32
  68. package/src/infra/firebase/firestore/services/connect-document-reference.d.ts +0 -11
  69. package/src/infra/firebase/firestore/services/connect-document.service.d.ts +0 -17
  70. package/src/infra/firebase/firestore/services/connect-firestore.d.ts +0 -7
  71. package/src/infra/firebase/firestore/services/connect-firestore.service.d.ts +0 -8
  72. package/src/infra/firebase/firestore/services/index.d.ts +0 -6
  73. package/src/infra/firebase/firestore/types/connect-query-snapshot.type.d.ts +0 -4
  74. package/src/infra/firebase/firestore/types/index.d.ts +0 -1
  75. package/src/infra/firebase/firestore/vo/connect-base-document-snapshot.vo.d.ts +0 -12
  76. package/src/infra/firebase/firestore/vo/index.d.ts +0 -1
  77. package/src/infra/firebase/index.d.ts +0 -1
  78. package/src/infra/index.d.ts +0 -4
  79. package/src/infra/pagarme/adapters/index.d.ts +0 -3
  80. package/src/infra/pagarme/adapters/pagarme-bank-slip-api.adapter.d.ts +0 -9
  81. package/src/infra/pagarme/adapters/pagarme-card-api.adapter.d.ts +0 -21
  82. package/src/infra/pagarme/adapters/pagarme-pix-api.adapter.d.ts +0 -8
  83. package/src/infra/pagarme/index.d.ts +0 -1
  84. package/src/infra/vertex-ai/adapters/discovery-engine-adapter.d.ts +0 -17
  85. package/src/infra/vertex-ai/adapters/index.d.ts +0 -1
  86. package/src/infra/vertex-ai/helpers/index.d.ts +0 -1
  87. package/src/infra/vertex-ai/helpers/product-vertex-ai.helper.d.ts +0 -7
  88. package/src/infra/vertex-ai/index.d.ts +0 -3
  89. package/src/infra/vertex-ai/types/index.d.ts +0 -2
  90. package/src/infra/vertex-ai/types/vertex-config.d.ts +0 -23
  91. package/src/infra/vertex-ai/types/vertex-search-result.d.ts +0 -18
  92. package/src/nest-connect.module.d.ts +0 -13
  93. package/src/nest-elastic-search.module.d.ts +0 -5
  94. package/src/nest-firestore.module.d.ts +0 -10
  95. package/src/nest-hasura-graphql.module.d.ts +0 -13
  96. package/src/nest-storage.module.d.ts +0 -2
  97. package/src/nest-vertex-ai-search.module.d.ts +0 -5
@@ -0,0 +1,26 @@
1
+ import { ProductsIndex } from '@infrab4a/connect'
2
+ import { DynamicModule, Module } from '@nestjs/common'
3
+
4
+ import { ES_CONFIG } from './consts/es-config.const'
5
+ import { ESClientOptions, NativeElasticSearchAdapter } from './infra'
6
+
7
+ @Module({
8
+ providers: [
9
+ NativeElasticSearchAdapter,
10
+ {
11
+ provide: ProductsIndex,
12
+ useFactory: (adapter: NativeElasticSearchAdapter): ProductsIndex => new ProductsIndex(adapter),
13
+ inject: [NativeElasticSearchAdapter],
14
+ },
15
+ ],
16
+ exports: [ProductsIndex],
17
+ })
18
+ export class NestElasticSeachModule {
19
+ public static initializeApp(options: ESClientOptions): DynamicModule {
20
+ return {
21
+ module: NestElasticSeachModule,
22
+ providers: [{ provide: ES_CONFIG, useValue: options }],
23
+ exports: [ES_CONFIG],
24
+ }
25
+ }
26
+ }
@@ -0,0 +1,403 @@
1
+ import {
2
+ BeautyProfileRepository,
3
+ BrandCategoryFirestoreRepository,
4
+ BrandCategoryRepository,
5
+ Buy2WinFirestoreRepository,
6
+ Buy2WinRepository,
7
+ CampaignDashboardFirestoreRepository,
8
+ CampaignDashboardRepository,
9
+ CampaignHashtagFirestoreRepository,
10
+ CampaignHashtagRepository,
11
+ CategoryFirestoreRepository,
12
+ CategoryRepository,
13
+ CheckoutFirestoreRepository,
14
+ CheckoutRepository,
15
+ CheckoutSubscriptionFirestoreRepository,
16
+ CheckoutSubscriptionRepository,
17
+ CouponFirestoreRepository,
18
+ CouponRepository,
19
+ EditionRepository,
20
+ FirestoreConstructorParams,
21
+ GroupFirestoreRepository,
22
+ GroupRepository,
23
+ HomeFirestoreRepository,
24
+ HomeRepository,
25
+ LeadFirestoreRepository,
26
+ LeadRepository,
27
+ LegacyOrderFirestoreRepository,
28
+ LegacyOrderRepository,
29
+ LogFirestoreRepository,
30
+ LogRepository,
31
+ OrderBlockedFirestoreRepository,
32
+ OrderBlockedRepository,
33
+ OrderFirestoreRepository,
34
+ OrderRepository,
35
+ PaymentFirestoreRepository,
36
+ PaymentRepository,
37
+ ProductFirestoreRepository,
38
+ ProductRepository,
39
+ ProductVariantFirestoreRepository,
40
+ SequenceFirestoreRepository,
41
+ ShopConfigsFirestoreRepository,
42
+ ShopConfigsRepository,
43
+ ShopMenuFirestoreRepository,
44
+ ShopMenuRepository,
45
+ ShoppingRecurrenceEditionFirestoreRepository,
46
+ ShoppingRecurrenceEditionRepository,
47
+ ShoppingRecurrenceFirestoreRepository,
48
+ ShoppingRecurrenceRepository,
49
+ ShopSettingsFirestoreRepository,
50
+ ShopSettingsRepository,
51
+ SubscriptionEditionFirestoreRepository,
52
+ SubscriptionFirestoreRepository,
53
+ SubscriptionMaterializationFirestoreRepository,
54
+ SubscriptionMaterializationRepository,
55
+ SubscriptionPaymentFirestoreRepository,
56
+ SubscriptionPaymentRepository,
57
+ SubscriptionPlanFirestoreRepository,
58
+ SubscriptionPlanRepository,
59
+ SubscriptionProductFirestoreRepository,
60
+ SubscriptionProductRepository,
61
+ SubscriptionRepository,
62
+ SubscriptionSummaryFirestoreRepository,
63
+ SubscriptionSummaryRepository,
64
+ UserAddressFirestoreRepository,
65
+ UserAddressRepository,
66
+ UserBeautyProfileFirestoreRepository,
67
+ UserFirestoreRepository,
68
+ UserPaymentMethodFirestoreRepository,
69
+ UserPaymentMethodRepository,
70
+ UserRepository,
71
+ VariantRepository,
72
+ } from '@infrab4a/connect'
73
+ import { DynamicModule, Module } from '@nestjs/common'
74
+ import { FirebaseAdmin, FirebaseConstants, FirebaseModule } from 'nestjs-firebase'
75
+
76
+ import { ConnectFirestoreService } from './infra'
77
+ import { NestStorageModule } from './nest-storage.module'
78
+
79
+ export type FirestoreOptions = Pick<FirestoreConstructorParams<any>, 'firestore' | 'interceptors'>
80
+
81
+ @Module({
82
+ providers: [
83
+ {
84
+ provide: ConnectFirestoreService,
85
+ useFactory: (firebaseAdmin: FirebaseAdmin) => new ConnectFirestoreService(firebaseAdmin.firestore),
86
+ inject: [FirebaseConstants.FIREBASE_TOKEN],
87
+ },
88
+ {
89
+ provide: 'FirestoreOptions',
90
+ useFactory: (connectFirestoreService: ConnectFirestoreService): FirestoreOptions => ({
91
+ firestore: connectFirestoreService,
92
+ }),
93
+ inject: [ConnectFirestoreService],
94
+ },
95
+ {
96
+ provide: 'BeautyProfileRepository',
97
+ useFactory: (config: FirestoreOptions, userRepository: UserFirestoreRepository): BeautyProfileRepository => {
98
+ return new UserBeautyProfileFirestoreRepository(config, userRepository)
99
+ },
100
+ inject: ['FirestoreOptions', 'UserRepository'],
101
+ },
102
+ {
103
+ provide: 'Buy2WinRepository',
104
+ useFactory: (options: FirestoreOptions): Buy2WinRepository => {
105
+ return new Buy2WinFirestoreRepository(options)
106
+ },
107
+ inject: ['FirestoreOptions'],
108
+ },
109
+ {
110
+ provide: CategoryFirestoreRepository,
111
+ useFactory: (options: FirestoreOptions): CategoryRepository => {
112
+ return new CategoryFirestoreRepository(options)
113
+ },
114
+ inject: ['FirestoreOptions'],
115
+ },
116
+ {
117
+ provide: 'CheckoutRepository',
118
+ useFactory: (options: FirestoreOptions): CheckoutRepository => {
119
+ return new CheckoutFirestoreRepository(options)
120
+ },
121
+ inject: ['FirestoreOptions'],
122
+ },
123
+ {
124
+ provide: 'CheckoutSubscriptionRepository',
125
+ useFactory: (options: FirestoreOptions): CheckoutSubscriptionRepository => {
126
+ return new CheckoutSubscriptionFirestoreRepository(options)
127
+ },
128
+ inject: ['FirestoreOptions'],
129
+ },
130
+ {
131
+ provide: 'CouponRepository',
132
+ useFactory: (options: FirestoreOptions): CouponRepository => {
133
+ return new CouponFirestoreRepository(options)
134
+ },
135
+ inject: ['FirestoreOptions'],
136
+ },
137
+ {
138
+ provide: 'CampaignHashtagRepository',
139
+ useFactory: (options: FirestoreOptions): CampaignHashtagRepository => {
140
+ return new CampaignHashtagFirestoreRepository(options)
141
+ },
142
+ inject: ['FirestoreOptions'],
143
+ },
144
+ {
145
+ provide: 'CampaignDashboardRepository',
146
+ useFactory: (options: FirestoreOptions): CampaignDashboardRepository => {
147
+ return new CampaignDashboardFirestoreRepository(options)
148
+ },
149
+ inject: ['FirestoreOptions'],
150
+ },
151
+ {
152
+ provide: 'EditionRepository',
153
+ useFactory: (
154
+ options: FirestoreOptions,
155
+ subscriptionRepository: SubscriptionFirestoreRepository,
156
+ ): EditionRepository => {
157
+ return new SubscriptionEditionFirestoreRepository(options, subscriptionRepository)
158
+ },
159
+ inject: ['FirestoreOptions', 'SubscriptionRepository'],
160
+ },
161
+ {
162
+ provide: 'GroupRepository',
163
+ useFactory: (options: FirestoreOptions): GroupRepository => {
164
+ return new GroupFirestoreRepository(options)
165
+ },
166
+ inject: ['FirestoreOptions'],
167
+ },
168
+ {
169
+ provide: 'HomeRepository',
170
+ useFactory: (options: FirestoreOptions): HomeRepository => {
171
+ return new HomeFirestoreRepository(options)
172
+ },
173
+ inject: ['FirestoreOptions'],
174
+ },
175
+ {
176
+ provide: 'LeadRepository',
177
+ useFactory: (options: FirestoreOptions): LeadRepository => {
178
+ return new LeadFirestoreRepository(options)
179
+ },
180
+ inject: ['FirestoreOptions'],
181
+ },
182
+ {
183
+ provide: 'LegacyOrderRepository',
184
+ useFactory: (options: FirestoreOptions): LegacyOrderRepository => {
185
+ return new LegacyOrderFirestoreRepository(options)
186
+ },
187
+ inject: ['FirestoreOptions'],
188
+ },
189
+ {
190
+ provide: 'ShopMenuRepository',
191
+ useFactory: (options: FirestoreOptions): ShopMenuRepository => {
192
+ return new ShopMenuFirestoreRepository(options)
193
+ },
194
+ inject: ['FirestoreOptions'],
195
+ },
196
+ {
197
+ provide: 'OrderRepository',
198
+ useFactory: (options: FirestoreOptions): OrderRepository => {
199
+ return new OrderFirestoreRepository(options)
200
+ },
201
+ inject: ['FirestoreOptions'],
202
+ },
203
+ {
204
+ provide: 'PaymentRepository',
205
+ useFactory: (options: FirestoreOptions): PaymentRepository => {
206
+ return new PaymentFirestoreRepository(options)
207
+ },
208
+ inject: ['FirestoreOptions'],
209
+ },
210
+ {
211
+ provide: 'ShoppingRecurrenceRepository',
212
+ useFactory: (options: FirestoreOptions): ShoppingRecurrenceRepository => {
213
+ return new ShoppingRecurrenceFirestoreRepository(options)
214
+ },
215
+ inject: ['FirestoreOptions'],
216
+ },
217
+ {
218
+ provide: 'ShoppingRecurrenceEditionRepository',
219
+ useFactory: (options: FirestoreOptions): ShoppingRecurrenceEditionRepository => {
220
+ return new ShoppingRecurrenceEditionFirestoreRepository(options)
221
+ },
222
+ inject: ['FirestoreOptions'],
223
+ },
224
+ {
225
+ provide: ProductFirestoreRepository,
226
+ useFactory: (options: FirestoreOptions): ProductRepository => {
227
+ return new ProductFirestoreRepository(options)
228
+ },
229
+ inject: ['FirestoreOptions'],
230
+ },
231
+ {
232
+ provide: 'ShopSettingsRepository',
233
+ useFactory: (options: FirestoreOptions): ShopSettingsRepository => {
234
+ return new ShopSettingsFirestoreRepository(options)
235
+ },
236
+ inject: ['FirestoreOptions'],
237
+ },
238
+ {
239
+ provide: 'SubscriptionPaymentRepository',
240
+ useFactory: (
241
+ options: FirestoreOptions,
242
+ subscriptionRepository: SubscriptionFirestoreRepository,
243
+ ): SubscriptionPaymentRepository => {
244
+ return new SubscriptionPaymentFirestoreRepository(options, subscriptionRepository)
245
+ },
246
+ inject: ['FirestoreOptions', 'SubscriptionRepository'],
247
+ },
248
+ {
249
+ provide: 'SubscriptionPlanRepository',
250
+ useFactory: (options: FirestoreOptions): SubscriptionPlanRepository => {
251
+ return new SubscriptionPlanFirestoreRepository(options)
252
+ },
253
+ inject: ['FirestoreOptions'],
254
+ },
255
+ {
256
+ provide: 'SubscriptionProductRepository',
257
+ useFactory: (options: FirestoreOptions): SubscriptionProductRepository => {
258
+ return new SubscriptionProductFirestoreRepository(options)
259
+ },
260
+ inject: ['FirestoreOptions'],
261
+ },
262
+ {
263
+ provide: 'SubscriptionRepository',
264
+ useFactory: (options: FirestoreOptions): SubscriptionRepository => {
265
+ return new SubscriptionFirestoreRepository(options)
266
+ },
267
+ inject: ['FirestoreOptions'],
268
+ },
269
+ {
270
+ provide: 'UserRepository',
271
+ useFactory: (options: FirestoreOptions): UserRepository => {
272
+ return new UserFirestoreRepository(options)
273
+ },
274
+ inject: ['FirestoreOptions'],
275
+ },
276
+ {
277
+ provide: 'UserAddressRepository',
278
+ useFactory: (options: FirestoreOptions, userRepository: UserFirestoreRepository): UserAddressRepository => {
279
+ return new UserAddressFirestoreRepository(options, userRepository)
280
+ },
281
+ inject: ['FirestoreOptions', 'UserRepository'],
282
+ },
283
+ {
284
+ provide: 'UserPaymentMethodRepository',
285
+ useFactory: (options: FirestoreOptions, userRepository: UserFirestoreRepository): UserPaymentMethodRepository => {
286
+ return new UserPaymentMethodFirestoreRepository(options, userRepository)
287
+ },
288
+ inject: ['FirestoreOptions', 'UserRepository'],
289
+ },
290
+ {
291
+ provide: 'SubscriptionMaterializationRepository',
292
+ useFactory: (options: FirestoreOptions): SubscriptionMaterializationRepository => {
293
+ return new SubscriptionMaterializationFirestoreRepository(options)
294
+ },
295
+ inject: ['FirestoreOptions'],
296
+ },
297
+ {
298
+ provide: 'SubscriptionSummaryRepository',
299
+ useFactory: (options: FirestoreOptions): SubscriptionSummaryRepository => {
300
+ return new SubscriptionSummaryFirestoreRepository(options)
301
+ },
302
+ inject: ['FirestoreOptions'],
303
+ },
304
+ {
305
+ provide: ProductVariantFirestoreRepository,
306
+ useFactory: (options: FirestoreOptions, productRepository: ProductFirestoreRepository): VariantRepository => {
307
+ return new ProductVariantFirestoreRepository(options, productRepository)
308
+ },
309
+ inject: ['FirestoreOptions', ProductFirestoreRepository],
310
+ },
311
+ {
312
+ provide: 'OrderBlockedRepository',
313
+ useFactory: (options: FirestoreOptions): OrderBlockedRepository => {
314
+ return new OrderBlockedFirestoreRepository(options)
315
+ },
316
+ inject: ['FirestoreOptions'],
317
+ },
318
+ {
319
+ provide: 'LogRepository',
320
+ useFactory: (options: FirestoreOptions): LogRepository => {
321
+ return new LogFirestoreRepository(options)
322
+ },
323
+ inject: ['FirestoreOptions'],
324
+ },
325
+ {
326
+ provide: 'SequenceRepository',
327
+ useFactory: (options: FirestoreOptions): SequenceFirestoreRepository => {
328
+ return new SequenceFirestoreRepository(options)
329
+ },
330
+ inject: ['FirestoreOptions'],
331
+ },
332
+ {
333
+ provide: 'BrandCategoryRepository',
334
+ useFactory: (options: FirestoreOptions): BrandCategoryRepository => {
335
+ return new BrandCategoryFirestoreRepository(options)
336
+ },
337
+ inject: ['FirestoreOptions'],
338
+ },
339
+ {
340
+ provide: 'ShopConfigsRepository',
341
+ useFactory: (options: FirestoreOptions): ShopConfigsRepository => {
342
+ return new ShopConfigsFirestoreRepository(options)
343
+ },
344
+ inject: ['FirestoreOptions'],
345
+ },
346
+ ],
347
+ exports: [
348
+ 'BeautyProfileRepository',
349
+ 'Buy2WinRepository',
350
+ CategoryFirestoreRepository,
351
+ 'CheckoutRepository',
352
+ 'CheckoutSubscriptionRepository',
353
+ 'CouponRepository',
354
+ 'CampaignHashtagRepository',
355
+ 'CampaignDashboardRepository',
356
+ 'EditionRepository',
357
+ 'GroupRepository',
358
+ 'HomeRepository',
359
+ 'LeadRepository',
360
+ 'LegacyOrderRepository',
361
+ 'ShopMenuRepository',
362
+ 'OrderRepository',
363
+ 'OrderBlockedRepository',
364
+ 'PaymentRepository',
365
+ 'ShoppingRecurrenceRepository',
366
+ 'ShoppingRecurrenceEditionRepository',
367
+ 'SequenceRepository',
368
+ 'LogRepository',
369
+ ProductFirestoreRepository,
370
+ 'ShopSettingsRepository',
371
+ 'SubscriptionPaymentRepository',
372
+ 'SubscriptionPlanRepository',
373
+ 'SubscriptionProductRepository',
374
+ 'SubscriptionRepository',
375
+ 'UserRepository',
376
+ 'UserAddressRepository',
377
+ 'UserPaymentMethodRepository',
378
+ 'SubscriptionMaterializationRepository',
379
+ 'SubscriptionSummaryRepository',
380
+ ProductVariantFirestoreRepository,
381
+ ConnectFirestoreService,
382
+ 'BrandCategoryRepository',
383
+ 'ShopConfigsRepository',
384
+ ],
385
+ })
386
+ export class NestFirestoreModule {
387
+ public static initializeApp(options: {
388
+ firebase: {
389
+ googleApplicationCredential: string
390
+ }
391
+ }): DynamicModule {
392
+ return {
393
+ module: NestFirestoreModule,
394
+ imports: [
395
+ FirebaseModule.forRoot({
396
+ googleApplicationCredential: options?.firebase?.googleApplicationCredential,
397
+ }),
398
+ NestStorageModule,
399
+ ],
400
+ exports: [FirebaseModule, NestStorageModule],
401
+ }
402
+ }
403
+ }
@@ -0,0 +1,284 @@
1
+ import {
2
+ CacheConfig,
3
+ CategoryCollectionChildrenHasuraGraphQLRepository,
4
+ CategoryFilterHasuraGraphQLRepository,
5
+ CategoryFilterRepository,
6
+ CategoryHasuraGraphQLRepository,
7
+ CategoryProductHasuraGraphQLRepository,
8
+ CategoryRepository,
9
+ FilterHasuraGraphQLRepository,
10
+ FilterOptionHasuraGraphQLRepository,
11
+ FilterOptionRepository,
12
+ FilterRepository,
13
+ HasuraConstructorParams,
14
+ HasuraGraphQLAuthOptions,
15
+ ProductCatalogHasuraGraphQLRepository,
16
+ ProductErrors,
17
+ ProductErrorsHasuraGraphQLRepository,
18
+ ProductErrorsRepository,
19
+ ProductGroupHasuraGraphQLRepository,
20
+ ProductHasuraGraphQLRepository,
21
+ ProductPriceLogHasuraGraphQLRepository,
22
+ ProductRepository,
23
+ ProductReviewHasuraGraphQLRepository,
24
+ ProductReviewRepository,
25
+ ProductStockEntryHasuraGraphQLRepository,
26
+ ProductStockEntryRepository,
27
+ ProductStockNotificationHasuraGraphQLRepository,
28
+ ProductStockNotificationRepository,
29
+ VariantHasuraGraphQLRepository,
30
+ VariantRepository,
31
+ WishlistHasuraGraphQLRepository,
32
+ } from '@infrab4a/connect'
33
+ import { DynamicModule, Module } from '@nestjs/common'
34
+
35
+ import { HASURA_OPTIONS } from './consts'
36
+
37
+ export type HasuraGraphQLOptions = { endpoint: string; credentials: HasuraGraphQLAuthOptions; cache?: CacheConfig }
38
+
39
+ @Module({
40
+ providers: [
41
+ {
42
+ provide: 'HasuraConfig',
43
+ useFactory: (options: HasuraGraphQLOptions) => ({
44
+ endpoint: options.endpoint,
45
+ authOptions: options.credentials,
46
+ cache: options.cache,
47
+ }),
48
+ inject: [HASURA_OPTIONS],
49
+ },
50
+ {
51
+ provide: 'CategoryRepository',
52
+ useExisting: CategoryHasuraGraphQLRepository,
53
+ },
54
+ {
55
+ provide: CategoryHasuraGraphQLRepository,
56
+ useFactory: (
57
+ options: any,
58
+ productRepository: ProductHasuraGraphQLRepository,
59
+ categoryFilterRepository: CategoryFilterHasuraGraphQLRepository,
60
+ ): CategoryRepository => {
61
+ return new CategoryHasuraGraphQLRepository(options, productRepository, categoryFilterRepository)
62
+ },
63
+ inject: ['HasuraConfig', ProductHasuraGraphQLRepository, CategoryFilterHasuraGraphQLRepository],
64
+ },
65
+ {
66
+ provide: 'ProductRepository',
67
+ useExisting: ProductHasuraGraphQLRepository,
68
+ },
69
+ {
70
+ provide: ProductHasuraGraphQLRepository,
71
+ useFactory: (hasuraConfig: any): ProductRepository => {
72
+ return new ProductHasuraGraphQLRepository(hasuraConfig)
73
+ },
74
+ inject: ['HasuraConfig'],
75
+ },
76
+ {
77
+ provide: 'ProductReviewRepository',
78
+ useExisting: ProductReviewHasuraGraphQLRepository,
79
+ },
80
+ {
81
+ provide: ProductReviewHasuraGraphQLRepository,
82
+ useFactory: (hasuraConfig: any): ProductReviewRepository => {
83
+ return new ProductReviewHasuraGraphQLRepository(hasuraConfig)
84
+ },
85
+ inject: ['HasuraConfig'],
86
+ },
87
+ {
88
+ provide: 'VariantRepository',
89
+ useExisting: VariantHasuraGraphQLRepository,
90
+ },
91
+ {
92
+ provide: VariantHasuraGraphQLRepository,
93
+ useFactory: (hasuraConfig: any): VariantRepository => {
94
+ return new VariantHasuraGraphQLRepository(hasuraConfig)
95
+ },
96
+ inject: ['HasuraConfig'],
97
+ },
98
+ {
99
+ provide: 'ProductStockNotificationRepository',
100
+ useExisting: ProductStockNotificationHasuraGraphQLRepository,
101
+ },
102
+ {
103
+ provide: ProductStockNotificationHasuraGraphQLRepository,
104
+ useFactory: (hasuraConfig: any): ProductStockNotificationRepository => {
105
+ return new ProductStockNotificationHasuraGraphQLRepository(hasuraConfig)
106
+ },
107
+ inject: ['HasuraConfig'],
108
+ },
109
+ {
110
+ provide: 'CategoryFilterRepository',
111
+ useExisting: CategoryFilterHasuraGraphQLRepository,
112
+ },
113
+ {
114
+ provide: CategoryFilterHasuraGraphQLRepository,
115
+ useFactory: (options: any): CategoryFilterRepository => {
116
+ return new CategoryFilterHasuraGraphQLRepository(options)
117
+ },
118
+ inject: ['HasuraConfig'],
119
+ },
120
+
121
+ {
122
+ provide: 'FilterOptionRepository',
123
+ useExisting: FilterOptionHasuraGraphQLRepository,
124
+ },
125
+ {
126
+ provide: FilterOptionHasuraGraphQLRepository,
127
+ useFactory: (options: any): FilterOptionRepository => {
128
+ return new FilterOptionHasuraGraphQLRepository(options)
129
+ },
130
+ inject: ['HasuraConfig'],
131
+ },
132
+ {
133
+ provide: 'FilterRepository',
134
+ useExisting: FilterHasuraGraphQLRepository,
135
+ },
136
+ {
137
+ provide: FilterHasuraGraphQLRepository,
138
+ useFactory: (
139
+ options: any,
140
+ filterOptionRepository: FilterOptionHasuraGraphQLRepository,
141
+ categoryFilterRepository: CategoryFilterHasuraGraphQLRepository,
142
+ ): FilterRepository => {
143
+ return new FilterHasuraGraphQLRepository(options, filterOptionRepository, categoryFilterRepository)
144
+ },
145
+ inject: ['HasuraConfig', FilterOptionHasuraGraphQLRepository, CategoryFilterHasuraGraphQLRepository],
146
+ },
147
+ {
148
+ provide: CategoryCollectionChildrenHasuraGraphQLRepository,
149
+ useFactory: (options: any): CategoryCollectionChildrenHasuraGraphQLRepository =>
150
+ new CategoryCollectionChildrenHasuraGraphQLRepository(options),
151
+ inject: ['HasuraConfig'],
152
+ },
153
+ {
154
+ provide: 'CategoryCollectionChildrenRepository',
155
+ useExisting: CategoryCollectionChildrenHasuraGraphQLRepository,
156
+ },
157
+ {
158
+ provide: CategoryProductHasuraGraphQLRepository,
159
+ useFactory: (options: any): CategoryProductHasuraGraphQLRepository => {
160
+ return new CategoryProductHasuraGraphQLRepository(options)
161
+ },
162
+ inject: ['HasuraConfig'],
163
+ },
164
+ {
165
+ provide: 'CategoryProductRepository',
166
+ useExisting: CategoryProductHasuraGraphQLRepository,
167
+ },
168
+ {
169
+ provide: WishlistHasuraGraphQLRepository,
170
+ useFactory: (
171
+ options: any,
172
+ categoryProductRepository: CategoryProductHasuraGraphQLRepository,
173
+ ): WishlistHasuraGraphQLRepository => {
174
+ return new WishlistHasuraGraphQLRepository(options, categoryProductRepository)
175
+ },
176
+ inject: ['HasuraConfig', CategoryProductHasuraGraphQLRepository],
177
+ },
178
+ {
179
+ provide: 'WishlistRepository',
180
+ useExisting: WishlistHasuraGraphQLRepository,
181
+ },
182
+ {
183
+ provide: ProductErrorsHasuraGraphQLRepository,
184
+ useFactory: (
185
+ options: HasuraConstructorParams<ProductErrors>,
186
+ productRepository: ProductHasuraGraphQLRepository,
187
+ ): ProductErrorsRepository => {
188
+ return new ProductErrorsHasuraGraphQLRepository(options, productRepository)
189
+ },
190
+ inject: ['HasuraConfig', ProductHasuraGraphQLRepository],
191
+ },
192
+ {
193
+ provide: 'ProductErrorsRepository',
194
+ useExisting: ProductErrorsHasuraGraphQLRepository,
195
+ },
196
+ {
197
+ provide: ProductCatalogHasuraGraphQLRepository,
198
+ useFactory: (options: any): ProductCatalogHasuraGraphQLRepository => {
199
+ return new ProductCatalogHasuraGraphQLRepository(options)
200
+ },
201
+ inject: ['HasuraConfig'],
202
+ },
203
+ {
204
+ provide: 'ProductCatalogRepository',
205
+ useExisting: ProductCatalogHasuraGraphQLRepository,
206
+ },
207
+ {
208
+ provide: ProductStockEntryHasuraGraphQLRepository,
209
+ useFactory: (options: any): ProductStockEntryRepository => {
210
+ return new ProductStockEntryHasuraGraphQLRepository(options)
211
+ },
212
+ inject: ['HasuraConfig'],
213
+ },
214
+ {
215
+ provide: 'ProductStockEntryRepository',
216
+ useExisting: ProductStockEntryHasuraGraphQLRepository,
217
+ },
218
+ {
219
+ provide: ProductGroupHasuraGraphQLRepository,
220
+ useFactory: (options: any): ProductGroupHasuraGraphQLRepository => {
221
+ return new ProductGroupHasuraGraphQLRepository(options)
222
+ },
223
+ inject: ['HasuraConfig'],
224
+ },
225
+ {
226
+ provide: 'ProductGroupRepository',
227
+ useExisting: ProductGroupHasuraGraphQLRepository,
228
+ },
229
+ {
230
+ provide: ProductPriceLogHasuraGraphQLRepository,
231
+ useFactory: (options: any): ProductPriceLogHasuraGraphQLRepository => {
232
+ return new ProductPriceLogHasuraGraphQLRepository(options)
233
+ },
234
+ inject: ['HasuraConfig'],
235
+ },
236
+ {
237
+ provide: 'ProductPriceLogRepository',
238
+ useExisting: ProductPriceLogHasuraGraphQLRepository,
239
+ },
240
+ ],
241
+ exports: [
242
+ 'CategoryRepository',
243
+ CategoryHasuraGraphQLRepository,
244
+ 'ProductRepository',
245
+ ProductHasuraGraphQLRepository,
246
+ 'ProductReviewRepository',
247
+ ProductReviewHasuraGraphQLRepository,
248
+ 'VariantRepository',
249
+ VariantHasuraGraphQLRepository,
250
+ 'ProductStockNotificationRepository',
251
+ ProductStockNotificationHasuraGraphQLRepository,
252
+ 'CategoryFilterRepository',
253
+ CategoryFilterHasuraGraphQLRepository,
254
+ 'FilterOptionRepository',
255
+ FilterOptionHasuraGraphQLRepository,
256
+ 'FilterRepository',
257
+ FilterHasuraGraphQLRepository,
258
+ 'CategoryCollectionChildrenRepository',
259
+ CategoryCollectionChildrenHasuraGraphQLRepository,
260
+ 'WishlistRepository',
261
+ WishlistHasuraGraphQLRepository,
262
+ 'CategoryProductRepository',
263
+ CategoryProductHasuraGraphQLRepository,
264
+ 'ProductErrorsRepository',
265
+ ProductErrorsHasuraGraphQLRepository,
266
+ 'ProductCatalogRepository',
267
+ ProductCatalogHasuraGraphQLRepository,
268
+ 'ProductStockEntryRepository',
269
+ ProductStockEntryHasuraGraphQLRepository,
270
+ 'ProductGroupRepository',
271
+ ProductGroupHasuraGraphQLRepository,
272
+ 'ProductPriceLogRepository',
273
+ ProductPriceLogHasuraGraphQLRepository,
274
+ ],
275
+ })
276
+ export class NestHasuraGraphQLModule {
277
+ public static initializeApp(options: { endpoint: string; credentials: HasuraGraphQLAuthOptions }): DynamicModule {
278
+ return {
279
+ module: NestHasuraGraphQLModule,
280
+ providers: [{ provide: HASURA_OPTIONS, useValue: options }],
281
+ exports: [HASURA_OPTIONS],
282
+ }
283
+ }
284
+ }