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