@infrab4a/connect-angular 6.0.0-alpha.1 → 6.0.0-beta.1

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 (128) hide show
  1. package/esm2022/angular-connect.module.mjs +291 -0
  2. package/esm2022/angular-elastic-search.module.mjs +34 -0
  3. package/esm2022/angular-firebase-auth.module.mjs +141 -0
  4. package/esm2022/angular-firestore.module.mjs +541 -0
  5. package/esm2022/angular-hasura-graphql.module.mjs +333 -0
  6. package/esm2022/angular-vertex-search.module.mjs +34 -0
  7. package/{esm2020 → esm2022}/consts/backend-url.const.mjs +1 -1
  8. package/{esm2020 → esm2022}/consts/category-structure.mjs +1 -1
  9. package/{esm2020 → esm2022}/consts/default-shop.const.mjs +1 -1
  10. package/{esm2020 → esm2022}/consts/es-config.const.mjs +1 -1
  11. package/{esm2020 → esm2022}/consts/firebase-const.mjs +1 -1
  12. package/{esm2020 → esm2022}/consts/hasura-options.const.mjs +1 -1
  13. package/{esm2020 → esm2022}/consts/index.mjs +1 -1
  14. package/{esm2020 → esm2022}/consts/persistence.const.mjs +1 -1
  15. package/{esm2020 → esm2022}/consts/storage-base-url.const.mjs +1 -1
  16. package/{esm2020 → esm2022}/consts/vertex-config.const.mjs +1 -1
  17. package/{esm2020 → esm2022}/helpers/index.mjs +1 -1
  18. package/{esm2020 → esm2022}/helpers/mobile-operation-system-checker.helper.mjs +1 -1
  19. package/{esm2020 → esm2022}/index.mjs +1 -1
  20. package/esm2022/interfaces/catalog-strategies.interface.mjs +2 -0
  21. package/{esm2020 → esm2022}/interfaces/category-facades.interface.mjs +1 -1
  22. package/{esm2020 → esm2022}/interfaces/index.mjs +1 -1
  23. package/{esm2020 → esm2022}/persistence/cookie-data-persistence.mjs +4 -4
  24. package/{esm2020 → esm2022}/persistence/data-persistence.mjs +1 -1
  25. package/{esm2020 → esm2022}/persistence/index.mjs +1 -1
  26. package/{esm2020 → esm2022}/services/auth.service.mjs +6 -6
  27. package/{esm2020 → esm2022}/services/cart/cart-services.facade.mjs +5 -5
  28. package/{esm2020 → esm2022}/services/cart/index.mjs +1 -1
  29. package/{esm2020 → esm2022}/services/cart.service.mjs +5 -5
  30. package/{esm2020 → esm2022}/services/catalog/adapters/category-structure.adapter.mjs +1 -1
  31. package/{esm2020 → esm2022}/services/catalog/adapters/index.mjs +1 -1
  32. package/{esm2020 → esm2022}/services/catalog/adapters/new-category-structure.adapter.mjs +6 -6
  33. package/{esm2020 → esm2022}/services/catalog/adapters/old-category-structure.adapter.mjs +6 -6
  34. package/{esm2020 → esm2022}/services/catalog/catalog.service.mjs +6 -6
  35. package/esm2022/services/catalog/category.service.mjs +39 -0
  36. package/{esm2020 → esm2022}/services/catalog/context/catalog-search.context.mjs +1 -1
  37. package/{esm2020 → esm2022}/services/catalog/enums/index.mjs +1 -1
  38. package/{esm2020 → esm2022}/services/catalog/enums/product-sorts.enum.mjs +1 -1
  39. package/{esm2020 → esm2022}/services/catalog/facades/catalog-service.facade.mjs +6 -6
  40. package/esm2022/services/catalog/facades/catalog-strategies.facade.mjs +17 -0
  41. package/{esm2020 → esm2022}/services/catalog/facades/category-repository.facade.mjs +6 -6
  42. package/{esm2020 → esm2022}/services/catalog/facades/category-service.facade.mjs +6 -6
  43. package/{esm2020 → esm2022}/services/catalog/facades/index.mjs +1 -1
  44. package/{esm2020 → esm2022}/services/catalog/facades/product-catalog.facade.mjs +6 -6
  45. package/{esm2020 → esm2022}/services/catalog/helpers/brand-manager.helper.mjs +5 -5
  46. package/{esm2020 → esm2022}/services/catalog/helpers/catalog-filter.helper.mjs +4 -4
  47. package/{esm2020 → esm2022}/services/catalog/helpers/catalog-sort.helper.mjs +4 -4
  48. package/{esm2020 → esm2022}/services/catalog/helpers/index.mjs +1 -1
  49. package/{esm2020 → esm2022}/services/catalog/helpers/product-fields.helper.mjs +4 -4
  50. package/{esm2020 → esm2022}/services/catalog/index.mjs +1 -1
  51. package/{esm2020 → esm2022}/services/catalog/models/category-with-tree.model.mjs +1 -1
  52. package/{esm2020 → esm2022}/services/catalog/models/index.mjs +1 -1
  53. package/esm2022/services/catalog/services/catalog-helpers.service.mjs +33 -0
  54. package/esm2022/services/catalog/services/catalog-operations.facade.mjs +26 -0
  55. package/{esm2020 → esm2022}/services/catalog/services/catalog-repository.service.mjs +6 -6
  56. package/{esm2020 → esm2022}/services/catalog/services/index.mjs +1 -1
  57. package/{esm2020 → esm2022}/services/catalog/services/product-management.facade.mjs +6 -6
  58. package/esm2022/services/catalog/strategies/category-search.strategy.mjs +133 -0
  59. package/{esm2020 → esm2022}/services/catalog/strategies/index.mjs +1 -1
  60. package/{esm2020 → esm2022}/services/catalog/strategies/profile-search.strategy.mjs +5 -5
  61. package/esm2022/services/catalog/strategies/term-search.strategy.mjs +123 -0
  62. package/esm2022/services/catalog/strategies/types/strategy-params.type.mjs +2 -0
  63. package/{esm2020 → esm2022}/services/catalog/types/fetch-products-options.type.mjs +1 -1
  64. package/esm2022/services/catalog/types/fetch-products-params.type.mjs +2 -0
  65. package/{esm2020 → esm2022}/services/catalog/types/fetch-products-response.type.mjs +1 -1
  66. package/{esm2020 → esm2022}/services/catalog/types/index.mjs +1 -1
  67. package/esm2022/services/catalog/types/method-params.type.mjs +2 -0
  68. package/{esm2020 → esm2022}/services/catalog/types/product-sort.type.mjs +1 -1
  69. package/esm2022/services/catalog/wishlist.service.mjs +254 -0
  70. package/{esm2020 → esm2022}/services/checkout/checkout-dependencies.facade.mjs +6 -6
  71. package/{esm2020 → esm2022}/services/checkout/checkout-repositories.facade.mjs +6 -6
  72. package/{esm2020 → esm2022}/services/checkout/index.mjs +1 -1
  73. package/{esm2020 → esm2022}/services/checkout-subscription.service.mjs +6 -6
  74. package/{esm2020 → esm2022}/services/checkout.service.mjs +5 -5
  75. package/{esm2020 → esm2022}/services/coupon/coupon-repositories.facade.mjs +6 -6
  76. package/{esm2020 → esm2022}/services/coupon/index.mjs +1 -1
  77. package/esm2022/services/coupon/types/coupon-params.type.mjs +2 -0
  78. package/{esm2020 → esm2022}/services/coupon.service.mjs +5 -5
  79. package/{esm2020 → esm2022}/services/helpers/index.mjs +1 -1
  80. package/{esm2020 → esm2022}/services/helpers/util.helper.mjs +1 -1
  81. package/{esm2020 → esm2022}/services/home-shop/home-shop-repositories.facade.mjs +6 -6
  82. package/{esm2020 → esm2022}/services/home-shop/index.mjs +1 -1
  83. package/{esm2020 → esm2022}/services/home-shop.service.mjs +5 -5
  84. package/{esm2020 → esm2022}/services/index.mjs +2 -1
  85. package/esm2022/services/order-product-review.service.mjs +110 -0
  86. package/{esm2020 → esm2022}/services/order.service.mjs +6 -6
  87. package/{esm2020 → esm2022}/services/shared/configuration.facade.mjs +6 -6
  88. package/{esm2020 → esm2022}/services/shared/index.mjs +1 -1
  89. package/esm2022/services/types/index.mjs +5 -0
  90. package/esm2022/services/types/pending-product-review.type.mjs +2 -0
  91. package/esm2022/services/types/product-review-create.type.mjs +2 -0
  92. package/{esm2020 → esm2022}/services/types/required-checkout-data.type.mjs +1 -1
  93. package/{esm2020 → esm2022}/services/types/required-checkout-subscription-data.type.mjs +1 -1
  94. package/{esm2020 → esm2022}/types/firebase-app-config.type.mjs +1 -1
  95. package/{esm2020 → esm2022}/types/index.mjs +1 -1
  96. package/{fesm2020 → fesm2022}/infrab4a-connect-angular.mjs +878 -774
  97. package/fesm2022/infrab4a-connect-angular.mjs.map +1 -0
  98. package/package.json +11 -17
  99. package/services/cart.service.d.ts +1 -1
  100. package/services/catalog/wishlist.service.d.ts +4 -3
  101. package/services/index.d.ts +1 -0
  102. package/services/order-product-review.service.d.ts +16 -0
  103. package/services/types/index.d.ts +2 -0
  104. package/services/types/pending-product-review.type.d.ts +12 -0
  105. package/services/types/product-review-create.type.d.ts +14 -0
  106. package/esm2020/angular-connect.module.mjs +0 -289
  107. package/esm2020/angular-elastic-search.module.mjs +0 -34
  108. package/esm2020/angular-firebase-auth.module.mjs +0 -141
  109. package/esm2020/angular-firestore.module.mjs +0 -541
  110. package/esm2020/angular-hasura-graphql.module.mjs +0 -333
  111. package/esm2020/angular-vertex-search.module.mjs +0 -34
  112. package/esm2020/interfaces/catalog-strategies.interface.mjs +0 -2
  113. package/esm2020/services/catalog/category.service.mjs +0 -39
  114. package/esm2020/services/catalog/facades/catalog-strategies.facade.mjs +0 -17
  115. package/esm2020/services/catalog/services/catalog-helpers.service.mjs +0 -33
  116. package/esm2020/services/catalog/services/catalog-operations.facade.mjs +0 -26
  117. package/esm2020/services/catalog/strategies/category-search.strategy.mjs +0 -133
  118. package/esm2020/services/catalog/strategies/term-search.strategy.mjs +0 -126
  119. package/esm2020/services/catalog/strategies/types/strategy-params.type.mjs +0 -2
  120. package/esm2020/services/catalog/types/fetch-products-params.type.mjs +0 -2
  121. package/esm2020/services/catalog/types/method-params.type.mjs +0 -2
  122. package/esm2020/services/catalog/wishlist.service.mjs +0 -255
  123. package/esm2020/services/coupon/types/coupon-params.type.mjs +0 -2
  124. package/esm2020/services/types/index.mjs +0 -3
  125. package/fesm2015/infrab4a-connect-angular.mjs +0 -3372
  126. package/fesm2015/infrab4a-connect-angular.mjs.map +0 -1
  127. package/fesm2020/infrab4a-connect-angular.mjs.map +0 -1
  128. /package/{esm2020 → esm2022}/infrab4a-connect-angular.mjs +0 -0
@@ -0,0 +1,291 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { FirebaseApp, getApp, initializeApp, provideFirebaseApp } from '@angular/fire/app';
3
+ import { initializeAppCheck, provideAppCheck } from '@angular/fire/app-check';
4
+ import { getStorage, provideStorage, Storage } from '@angular/fire/storage';
5
+ import { FirebaseFileUploaderService, isNil, ProductsVertexSearch, UpdateUserImage, } from '@infrab4a/connect';
6
+ import { AngularElasticSeachModule } from './angular-elastic-search.module';
7
+ import { AngularFirebaseAuthModule } from './angular-firebase-auth.module';
8
+ import { AngularFirestoreModule } from './angular-firestore.module';
9
+ import { AngularHasuraGraphQLModule } from './angular-hasura-graphql.module';
10
+ import { AngularVertexSeachModule } from './angular-vertex-search.module';
11
+ import { APP_CHECK_PROVIDER, BACKEND_URL, CATEGORY_STRUCTURE, DEFAULT_SHOP, ES_CONFIG, FIREBASE_APP_NAME, FIREBASE_OPTIONS, HASURA_OPTIONS, PERSISTENCE_PROVIDER, VERTEX_CONFIG, } from './consts';
12
+ import { STORAGE_BASE_URL } from './consts/storage-base-url.const';
13
+ import { CookieDataPersistence } from './persistence';
14
+ import { AuthService, CartService, CatalogService, CategoryService, CheckoutService, CheckoutSubscriptionService, CouponService, HomeShopService, OrderProductReviewService, OrderService, WishlistService, } from './services';
15
+ import { CartServicesFacade } from './services/cart';
16
+ import { NewCategoryStructureAdapter, OldCategoryStructureAdapter } from './services/catalog/adapters';
17
+ import { CatalogSearchContext } from './services/catalog/context/catalog-search.context';
18
+ import { CatalogServiceFacade, CatalogStrategiesFacade, CategoryRepositoryFacade, CategoryServiceFacade, ProductCatalogFacade, } from './services/catalog/facades';
19
+ import { BrandManagerHelper, CatalogFilterHelper, CatalogSortHelper, ProductFieldsHelper, } from './services/catalog/helpers';
20
+ import { CatalogHelpersService, CatalogOperationsFacade, CatalogRepositoryService, ProductManagementFacade, } from './services/catalog/services';
21
+ import { CategorySearchStrategy, ProfileSearchStrategy, TermSearchStrategy } from './services/catalog/strategies';
22
+ import { CheckoutDependenciesFacade, CheckoutRepositoriesFacade } from './services/checkout';
23
+ import { CouponRepositoriesFacade } from './services/coupon';
24
+ import { HomeShopRepositoriesFacade } from './services/home-shop';
25
+ import { ConfigurationFacade } from './services/shared';
26
+ import * as i0 from "@angular/core";
27
+ import * as i1 from "@angular/fire/app";
28
+ import * as i2 from "@angular/fire/app-check";
29
+ import * as i3 from "@angular/fire/storage";
30
+ export class AngularConnectModule {
31
+ static initializeApp(defaultShop, options, nameOrConfig) {
32
+ return {
33
+ ngModule: AngularConnectModule,
34
+ providers: [
35
+ ...this.buildCoreProviders(nameOrConfig, options),
36
+ ...this.buildConditionalProviders(defaultShop, options),
37
+ ],
38
+ };
39
+ }
40
+ static buildCoreProviders(nameOrConfig, options) {
41
+ return [
42
+ { provide: FIREBASE_APP_NAME, useValue: nameOrConfig },
43
+ { provide: APP_CHECK_PROVIDER, useValue: options.appCheckProvider },
44
+ {
45
+ provide: CATEGORY_STRUCTURE,
46
+ useClass: this.selectCategoryStructureAdapter(options.oldCategoryStructure),
47
+ },
48
+ { provide: PERSISTENCE_PROVIDER, useClass: options?.persistenceProvider || CookieDataPersistence },
49
+ ];
50
+ }
51
+ static buildConditionalProviders(defaultShop, options) {
52
+ return [
53
+ ...this.createProviderIfExists(DEFAULT_SHOP, defaultShop),
54
+ ...this.createProviderIfExists(FIREBASE_OPTIONS, options.firebase),
55
+ ...this.createProviderIfExists(ES_CONFIG, options.elasticSearch),
56
+ ...this.createProviderIfExists(VERTEX_CONFIG, options.vertexConfig),
57
+ ...this.createProviderIfExists(HASURA_OPTIONS, options.hasura),
58
+ ...this.createProviderIfExists(BACKEND_URL, options.backendUrl),
59
+ ...this.createProviderIfExists(STORAGE_BASE_URL, options.storageBaseUrl),
60
+ ];
61
+ }
62
+ static selectCategoryStructureAdapter(oldCategoryStructure) {
63
+ return isNil(oldCategoryStructure) || oldCategoryStructure
64
+ ? OldCategoryStructureAdapter
65
+ : NewCategoryStructureAdapter;
66
+ }
67
+ static createProviderIfExists(token, value) {
68
+ return isNil(value) ? [] : [{ provide: token, useValue: value }];
69
+ }
70
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: AngularConnectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
71
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.3", ngImport: i0, type: AngularConnectModule, imports: [i1.FirebaseAppModule, i2.AppCheckModule, i3.StorageModule, AngularElasticSeachModule,
72
+ AngularVertexSeachModule,
73
+ AngularFirebaseAuthModule,
74
+ AngularFirestoreModule,
75
+ AngularHasuraGraphQLModule] }); }
76
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: AngularConnectModule, providers: [
77
+ AuthService,
78
+ CartService,
79
+ CatalogService,
80
+ CategoryService,
81
+ CheckoutService,
82
+ CheckoutSubscriptionService,
83
+ CouponService,
84
+ HomeShopService,
85
+ OrderService,
86
+ WishlistService,
87
+ ConfigurationFacade,
88
+ CartServicesFacade,
89
+ CheckoutRepositoriesFacade,
90
+ CheckoutDependenciesFacade,
91
+ CategoryRepositoryFacade,
92
+ ProductCatalogFacade,
93
+ CatalogServiceFacade,
94
+ CategoryServiceFacade,
95
+ CatalogStrategiesFacade,
96
+ CatalogOperationsFacade,
97
+ ProductManagementFacade,
98
+ {
99
+ provide: 'ProductServicesFacade',
100
+ useFactory: (productStockNotificationRepository, categoryRepository, productSearch) => ({
101
+ productStockNotificationRepository,
102
+ categoryRepository,
103
+ productSearch,
104
+ }),
105
+ deps: ['ProductStockNotificationRepository', 'CategoryRepository', 'ProductSearch'],
106
+ },
107
+ CatalogFilterHelper,
108
+ CatalogSortHelper,
109
+ ProductFieldsHelper,
110
+ BrandManagerHelper,
111
+ CatalogRepositoryService,
112
+ CatalogHelpersService,
113
+ CategorySearchStrategy,
114
+ TermSearchStrategy,
115
+ ProfileSearchStrategy,
116
+ {
117
+ provide: CatalogSearchContext,
118
+ useFactory: (categoryStrategy, termStrategy, profileStrategy) => {
119
+ return new CatalogSearchContext(categoryStrategy, termStrategy, profileStrategy);
120
+ },
121
+ deps: [CategorySearchStrategy, TermSearchStrategy, ProfileSearchStrategy],
122
+ },
123
+ {
124
+ provide: UpdateUserImage,
125
+ useFactory: (userRepository, fileUploader) => {
126
+ return new UpdateUserImage(userRepository, fileUploader);
127
+ },
128
+ deps: ['UserRepository', 'FileUploaderService'],
129
+ },
130
+ {
131
+ provide: 'FileUploaderService',
132
+ useFactory: (storage, baseUrl) => {
133
+ return new FirebaseFileUploaderService(storage, baseUrl);
134
+ },
135
+ deps: [Storage, STORAGE_BASE_URL],
136
+ },
137
+ {
138
+ provide: 'ProductSearch',
139
+ useExisting: ProductsVertexSearch,
140
+ },
141
+ CouponRepositoriesFacade,
142
+ HomeShopRepositoriesFacade,
143
+ OrderProductReviewService,
144
+ ], imports: [provideFirebaseApp((injector) => {
145
+ const appName = injector.get(FIREBASE_APP_NAME);
146
+ try {
147
+ const app = appName ? getApp(appName) : getApp();
148
+ return app;
149
+ }
150
+ catch (error) {
151
+ console.warn('Firebase app not found, initializing new app');
152
+ if (error instanceof Error)
153
+ console.error(error.message);
154
+ return initializeApp(injector.get(FIREBASE_OPTIONS), appName);
155
+ }
156
+ }),
157
+ provideAppCheck((injector) => {
158
+ const app = injector.get(FirebaseApp);
159
+ try {
160
+ const provider = injector.get(APP_CHECK_PROVIDER);
161
+ if (provider)
162
+ return initializeAppCheck(app, {
163
+ provider,
164
+ isTokenAutoRefreshEnabled: true,
165
+ });
166
+ }
167
+ catch (error) {
168
+ if (error instanceof Error)
169
+ console.error(error.message);
170
+ return;
171
+ }
172
+ }),
173
+ provideStorage((injector) => getStorage(injector.get(FirebaseApp))),
174
+ AngularElasticSeachModule,
175
+ AngularVertexSeachModule,
176
+ AngularFirebaseAuthModule,
177
+ AngularFirestoreModule,
178
+ AngularHasuraGraphQLModule] }); }
179
+ }
180
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: AngularConnectModule, decorators: [{
181
+ type: NgModule,
182
+ args: [{
183
+ imports: [
184
+ provideFirebaseApp((injector) => {
185
+ const appName = injector.get(FIREBASE_APP_NAME);
186
+ try {
187
+ const app = appName ? getApp(appName) : getApp();
188
+ return app;
189
+ }
190
+ catch (error) {
191
+ console.warn('Firebase app not found, initializing new app');
192
+ if (error instanceof Error)
193
+ console.error(error.message);
194
+ return initializeApp(injector.get(FIREBASE_OPTIONS), appName);
195
+ }
196
+ }),
197
+ provideAppCheck((injector) => {
198
+ const app = injector.get(FirebaseApp);
199
+ try {
200
+ const provider = injector.get(APP_CHECK_PROVIDER);
201
+ if (provider)
202
+ return initializeAppCheck(app, {
203
+ provider,
204
+ isTokenAutoRefreshEnabled: true,
205
+ });
206
+ }
207
+ catch (error) {
208
+ if (error instanceof Error)
209
+ console.error(error.message);
210
+ return;
211
+ }
212
+ }),
213
+ provideStorage((injector) => getStorage(injector.get(FirebaseApp))),
214
+ AngularElasticSeachModule,
215
+ AngularVertexSeachModule,
216
+ AngularFirebaseAuthModule,
217
+ AngularFirestoreModule,
218
+ AngularHasuraGraphQLModule,
219
+ ],
220
+ providers: [
221
+ AuthService,
222
+ CartService,
223
+ CatalogService,
224
+ CategoryService,
225
+ CheckoutService,
226
+ CheckoutSubscriptionService,
227
+ CouponService,
228
+ HomeShopService,
229
+ OrderService,
230
+ WishlistService,
231
+ ConfigurationFacade,
232
+ CartServicesFacade,
233
+ CheckoutRepositoriesFacade,
234
+ CheckoutDependenciesFacade,
235
+ CategoryRepositoryFacade,
236
+ ProductCatalogFacade,
237
+ CatalogServiceFacade,
238
+ CategoryServiceFacade,
239
+ CatalogStrategiesFacade,
240
+ CatalogOperationsFacade,
241
+ ProductManagementFacade,
242
+ {
243
+ provide: 'ProductServicesFacade',
244
+ useFactory: (productStockNotificationRepository, categoryRepository, productSearch) => ({
245
+ productStockNotificationRepository,
246
+ categoryRepository,
247
+ productSearch,
248
+ }),
249
+ deps: ['ProductStockNotificationRepository', 'CategoryRepository', 'ProductSearch'],
250
+ },
251
+ CatalogFilterHelper,
252
+ CatalogSortHelper,
253
+ ProductFieldsHelper,
254
+ BrandManagerHelper,
255
+ CatalogRepositoryService,
256
+ CatalogHelpersService,
257
+ CategorySearchStrategy,
258
+ TermSearchStrategy,
259
+ ProfileSearchStrategy,
260
+ {
261
+ provide: CatalogSearchContext,
262
+ useFactory: (categoryStrategy, termStrategy, profileStrategy) => {
263
+ return new CatalogSearchContext(categoryStrategy, termStrategy, profileStrategy);
264
+ },
265
+ deps: [CategorySearchStrategy, TermSearchStrategy, ProfileSearchStrategy],
266
+ },
267
+ {
268
+ provide: UpdateUserImage,
269
+ useFactory: (userRepository, fileUploader) => {
270
+ return new UpdateUserImage(userRepository, fileUploader);
271
+ },
272
+ deps: ['UserRepository', 'FileUploaderService'],
273
+ },
274
+ {
275
+ provide: 'FileUploaderService',
276
+ useFactory: (storage, baseUrl) => {
277
+ return new FirebaseFileUploaderService(storage, baseUrl);
278
+ },
279
+ deps: [Storage, STORAGE_BASE_URL],
280
+ },
281
+ {
282
+ provide: 'ProductSearch',
283
+ useExisting: ProductsVertexSearch,
284
+ },
285
+ CouponRepositoriesFacade,
286
+ HomeShopRepositoriesFacade,
287
+ OrderProductReviewService,
288
+ ],
289
+ }]
290
+ }] });
291
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1jb25uZWN0Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2Nvbm5lY3QtYW5ndWxhci9zcmMvYW5ndWxhci1jb25uZWN0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlDLFFBQVEsRUFBUSxNQUFNLGVBQWUsQ0FBQTtBQUM3RSxPQUFPLEVBQUUsV0FBVyxFQUFtQixNQUFNLEVBQUUsYUFBYSxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDM0csT0FBTyxFQUFtQixrQkFBa0IsRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTtBQUM5RixPQUFPLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxPQUFPLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUMzRSxPQUFPLEVBR0wsMkJBQTJCLEVBQzNCLEtBQUssRUFDTCxvQkFBb0IsRUFFcEIsZUFBZSxHQUdoQixNQUFNLG1CQUFtQixDQUFBO0FBRTFCLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFBO0FBQzNFLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGdDQUFnQyxDQUFBO0FBQzFFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRCQUE0QixDQUFBO0FBQ25FLE9BQU8sRUFBRSwwQkFBMEIsRUFBd0IsTUFBTSxpQ0FBaUMsQ0FBQTtBQUNsRyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQTtBQUN6RSxPQUFPLEVBQ0wsa0JBQWtCLEVBQ2xCLFdBQVcsRUFDWCxrQkFBa0IsRUFDbEIsWUFBWSxFQUNaLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsZ0JBQWdCLEVBQ2hCLGNBQWMsRUFDZCxvQkFBb0IsRUFDcEIsYUFBYSxHQUNkLE1BQU0sVUFBVSxDQUFBO0FBQ2pCLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFBO0FB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QUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0b3IsIE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlLCBUeXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcclxuaW1wb3J0IHsgRmlyZWJhc2VBcHAsIEZpcmViYXNlT3B0aW9ucywgZ2V0QXBwLCBpbml0aWFsaXplQXBwLCBwcm92aWRlRmlyZWJhc2VBcHAgfSBmcm9tICdAYW5ndWxhci9maXJlL2FwcCdcclxuaW1wb3J0IHsgQXBwQ2hlY2tPcHRpb25zLCBpbml0aWFsaXplQXBwQ2hlY2ssIHByb3ZpZGVBcHBDaGVjayB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUvYXBwLWNoZWNrJ1xyXG5pbXBvcnQgeyBnZXRTdG9yYWdlLCBwcm92aWRlU3RvcmFnZSwgU3RvcmFnZSB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUvc3RvcmFnZSdcclxuaW1wb3J0IHtcclxuICBBeGlvc0VsYXN0aWNTZWFyY2hDb25maWcsXHJcbiAgRmlsZVVwbG9hZGVyU2VydmljZSxcclxuICBGaXJlYmFzZUZpbGVVcGxvYWRlclNlcnZpY2UsXHJcbiAgaXNOaWwsXHJcbiAgUHJvZHVjdHNWZXJ0ZXhTZWFyY2gsXHJcbiAgU2hvcHMsXHJcbiAgVXBkYXRlVXNlckltYWdlLFxyXG4gIFVzZXJSZXBvc2l0b3J5LFxyXG4gIFZlcnRleFNlYXJjaENvbmZpZyxcclxufSBmcm9tICdAaW5mcmFiNGEvY29ubmVjdCdcclxuXHJcbmltcG9ydCB7IEFuZ3VsYXJFbGFzdGljU2VhY2hNb2R1bGUgfSBmcm9tICcuL2FuZ3VsYXItZWxhc3RpYy1zZWFyY2gubW9kdWxlJ1xyXG5pbXBvcnQgeyBBbmd1bGFyRmlyZWJhc2VBdXRoTW9kdWxlIH0gZnJvbSAnLi9hbmd1bGFyLWZpcmViYXNlLWF1dGgubW9kdWxlJ1xyXG5pbXBvcnQgeyBBbmd1bGFyRmlyZXN0b3JlTW9kdWxlIH0gZnJvbSAnLi9hbmd1bGFyLWZpcmVzdG9yZS5tb2R1bGUnXHJcbmltcG9ydCB7IEFuZ3VsYXJIYXN1cmFHcmFwaFFMTW9kdWxlLCBIYXN1cmFHcmFwaFFMT3B0aW9ucyB9IGZyb20gJy4vYW5ndWxhci1oYXN1cmEtZ3JhcGhxbC5tb2R1bGUnXHJcbmltcG9ydCB7IEFuZ3VsYXJWZXJ0ZXhTZWFjaE1vZHVsZSB9IGZyb20gJy4vYW5ndWxhci12ZXJ0ZXgtc2VhcmNoLm1vZHVsZSdcclxuaW1wb3J0IHtcclxuICBBUFBfQ0hFQ0tfUFJPVklERVIsXHJcbiAgQkFDS0VORF9VUkwsXHJcbiAgQ0FURUdPUllfU1RSVUNUVVJFLFxyXG4gIERFRkFVTFRfU0hPUCxcclxuICBFU19DT05GSUcsXHJcbiAgRklSRUJBU0VfQVBQX05BTUUsXHJcbiAgRklSRUJBU0VfT1BUSU9OUyxcclxuICBIQVNVUkFfT1BUSU9OUyxcclxuICBQRVJTSVNURU5DRV9QUk9WSURFUixcclxuICBWRVJURVhfQ09ORklHLFxyXG59IGZyb20gJy4vY29uc3RzJ1xyXG5pbXBvcnQgeyBTVE9SQUdFX0JBU0VfVVJMIH0gZnJvbSAnLi9jb25zdHMvc3RvcmFnZS1iYXNlLXVybC5jb25zdCdcclxuaW1wb3J0IHsgQ29va2llRGF0YVBlcnNpc3RlbmNlLCBEYXRhUGVyc2lzdGVuY2UgfSBmcm9tICcuL3BlcnNpc3RlbmNlJ1xyXG5pbXBvcnQge1xyXG4gIEF1dGhTZXJ2aWNlLFxyXG4gIENhcnRTZXJ2aWNlLFxyXG4gIENhdGFsb2dTZXJ2aWNlLFxyXG4gIENhdGVnb3J5U2VydmljZSxcclxuICBDaGVja291dFNlcnZpY2UsXHJcbiAgQ2hlY2tvdXRTdWJzY3JpcHRpb25TZXJ2aWNlLFxyXG4gIENvdXBvblNlcnZpY2UsXHJcbiAgSG9tZVNob3BTZXJ2aWNlLFxyXG4gIE9yZGVyUHJvZHVjdFJldmlld1NlcnZpY2UsXHJcbiAgT3JkZXJTZXJ2aWNlLFxyXG4gIFdpc2hsaXN0U2VydmljZSxcclxufSBmcm9tICcuL3NlcnZpY2VzJ1xyXG5pbXBvcnQgeyBDYXJ0U2VydmljZXNGYWNhZGUgfSBmcm9tICcuL3NlcnZpY2VzL2NhcnQnXHJcbmltcG9ydCB7IE5ld0NhdGVnb3J5U3RydWN0dXJlQWRhcHRlciwgT2xkQ2F0ZWdvcnlTdHJ1Y3R1cmVBZGFwdGVyIH0gZnJvbSAnLi9zZXJ2aWNlcy9jYXRhbG9nL2FkYXB0ZXJzJ1xyXG5pbXBvcnQgeyBDYXRhbG9nU2VhcmNoQ29udGV4dCB9IGZyb20gJy4vc2VydmljZXMvY2F0YWxvZy9jb250ZXh0L2NhdGFsb2ctc2VhcmNoLmNvbnRleHQnXHJcbmltcG9ydCB7XHJcbiAgQ2F0YWxvZ1NlcnZpY2VGYWNhZGUsXHJcbiAgQ2F0YWxvZ1N0cmF0ZWdpZXNGYWNhZGUsXHJcbiAgQ2F0ZWdvcnlSZXBvc2l0b3J5RmFjYWRlLFxyXG4gIENhdGVnb3J5U2VydmljZUZhY2FkZSxcclxuICBQcm9kdWN0Q2F0YWxvZ0ZhY2FkZSxcclxufSBmcm9tICcuL3NlcnZpY2VzL2NhdGFsb2cvZmFjYWRlcydcclxuaW1wb3J0IHtcclxuICBCcmFuZE1hbmFnZXJIZWxwZXIsXHJcbiAgQ2F0YWxvZ0ZpbHRlckhlbHBlcixcclxuICBDYXRhbG9nU29ydEhlbHBlcixcclxuICBQcm9kdWN0RmllbGRzSGVscGVyLFxyXG59IGZyb20gJy4vc2VydmljZXMvY2F0YWxvZy9oZWxwZXJzJ1xyXG5pbXBvcnQge1xyXG4gIENhdGFsb2dIZWxwZXJzU2VydmljZSxcclxuICBDYXRhbG9nT3BlcmF0aW9uc0ZhY2FkZSxcclxuICBDYXRhbG9nUmVwb3NpdG9yeVNlcnZpY2UsXHJcbiAgUHJvZHVjdE1hbmFnZW1lbnRGYWNhZGUsXHJcbn0gZnJvbSAnLi9zZXJ2aWNlcy9jYXRhbG9nL3NlcnZpY2VzJ1xyXG5pbXBvcnQgeyBDYXRlZ29yeVNlYXJjaFN0cmF0ZWd5LCBQcm9maWxlU2VhcmNoU3RyYXRlZ3ksIFRlcm1TZWFyY2hTdHJhdGVneSB9IGZyb20gJy4vc2VydmljZXMvY2F0YWxvZy9zdHJhdGVnaWVzJ1xyXG5pbXBvcnQgeyBDaGVja291dERlcGVuZGVuY2llc0ZhY2FkZSwgQ2hlY2tvdXRSZXBvc2l0b3JpZXNGYWNhZGUgfSBmcm9tICcuL3NlcnZpY2VzL2NoZWNrb3V0J1xyXG5pbXBvcnQgeyBDb3Vwb25SZXBvc2l0b3JpZXNGYWNhZGUgfSBmcm9tICcuL3NlcnZpY2VzL2NvdXBvbidcclxuaW1wb3J0IHsgSG9tZVNob3BSZXBvc2l0b3JpZXNGYWNhZGUgfSBmcm9tICcuL3NlcnZpY2VzL2hvbWUtc2hvcCdcclxuaW1wb3J0IHsgQ29uZmlndXJhdGlvbkZhY2FkZSB9IGZyb20gJy4vc2VydmljZXMvc2hhcmVkJ1xyXG5pbXBvcnQgeyBGaXJlYmFzZUFwcENvbmZpZyB9IGZyb20gJy4vdHlwZXMnXHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGltcG9ydHM6IFtcclxuICAgIHByb3ZpZGVGaXJlYmFzZUFwcCgoaW5qZWN0b3I6IEluamVjdG9yKSA9PiB7XHJcbiAgICAgIGNvbnN0IGFwcE5hbWUgPSBpbmplY3Rvci5nZXQ8c3RyaW5nPihGSVJFQkFTRV9BUFBfTkFNRSlcclxuXHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgY29uc3QgYXBwID0gYXBwTmFtZSA/IGdldEFwcChhcHBOYW1lKSA6IGdldEFwcCgpXHJcblxyXG4gICAgICAgIHJldHVybiBhcHBcclxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICBjb25zb2xlLndhcm4oJ0ZpcmViYXNlIGFwcCBub3QgZm91bmQsIGluaXRpYWxpemluZyBuZXcgYXBwJylcclxuXHJcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIGNvbnNvbGUuZXJyb3IoZXJyb3IubWVzc2FnZSlcclxuXHJcbiAgICAgICAgcmV0dXJuIGluaXRpYWxpemVBcHAoaW5qZWN0b3IuZ2V0KEZJUkVCQVNFX09QVElPTlMpLCBhcHBOYW1lKVxyXG4gICAgICB9XHJcbiAgICB9KSxcclxuICAgIHByb3ZpZGVBcHBDaGVjaygoaW5qZWN0b3I6IEluamVjdG9yKSA9PiB7XHJcbiAgICAgIGNvbnN0IGFwcCA9IGluamVjdG9yLmdldChGaXJlYmFzZUFwcClcclxuXHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgY29uc3QgcHJvdmlkZXIgPSBpbmplY3Rvci5nZXQ8QXBwQ2hlY2tPcHRpb25zWydwcm92aWRlciddPihBUFBfQ0hFQ0tfUFJPVklERVIpXHJcblxyXG4gICAgICAgIGlmIChwcm92aWRlcilcclxuICAgICAgICAgIHJldHVybiBpbml0aWFsaXplQXBwQ2hlY2soYXBwLCB7XHJcbiAgICAgICAgICAgIHByb3ZpZGVyLFxyXG4gICAgICAgICAgICBpc1Rva2VuQXV0b1JlZnJlc2hFbmFibGVkOiB0cnVlLFxyXG4gICAgICAgICAgfSlcclxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikgY29uc29sZS5lcnJvcihlcnJvci5tZXNzYWdlKVxyXG5cclxuICAgICAgICByZXR1cm5cclxuICAgICAgfVxyXG4gICAgfSksXHJcbiAgICBwcm92aWRlU3RvcmFnZSgoaW5qZWN0b3I6IEluamVjdG9yKSA9PiBnZXRTdG9yYWdlKGluamVjdG9yLmdldChGaXJlYmFzZUFwcCkpKSxcclxuICAgIEFuZ3VsYXJFbGFzdGljU2VhY2hNb2R1bGUsXHJcbiAgICBBbmd1bGFyVmVydGV4U2VhY2hNb2R1bGUsXHJcbiAgICBBbmd1bGFyRmlyZWJhc2VBdXRoTW9kdWxlLFxyXG4gICAgQW5ndWxhckZpcmVzdG9yZU1vZHVsZSxcclxuICAgIEFuZ3VsYXJIYXN1cmFHcmFwaFFMTW9kdWxlLFxyXG4gIF0sXHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICBBdXRoU2VydmljZSxcclxuICAgIENhcnRTZXJ2aWNlLFxyXG4gICAgQ2F0YWxvZ1NlcnZpY2UsXHJcbiAgICBDYXRlZ29yeVNlcnZpY2UsXHJcbiAgICBDaGVja291dFNlcnZpY2UsXHJcbiAgICBDaGVja291dFN1YnNjcmlwdGlvblNlcnZpY2UsXHJcbiAgICBDb3Vwb25TZXJ2aWNlLFxyXG4gICAgSG9tZVNob3BTZXJ2aWNlLFxyXG4gICAgT3JkZXJTZXJ2aWNlLFxyXG4gICAgV2lzaGxpc3RTZXJ2aWNlLFxyXG4gICAgQ29uZmlndXJhdGlvbkZhY2FkZSxcclxuICAgIENhcnRTZXJ2aWNlc0ZhY2FkZSxcclxuICAgIENoZWNrb3V0UmVwb3NpdG9yaWVzRmFjYWRlLFxyXG4gICAgQ2hlY2tvdXREZXBlbmRlbmNpZXNGYWNhZGUsXHJcbiAgICBDYXRlZ29yeVJlcG9zaXRvcnlGYWNhZGUsXHJcbiAgICBQcm9kdWN0Q2F0YWxvZ0ZhY2FkZSxcclxuICAgIENhdGFsb2dTZXJ2aWNlRmFjYWRlLFxyXG4gICAgQ2F0ZWdvcnlTZXJ2aWNlRmFjYWRlLFxyXG4gICAgQ2F0YWxvZ1N0cmF0ZWdpZXNGYWNhZGUsXHJcbiAgICBDYXRhbG9nT3BlcmF0aW9uc0ZhY2FkZSxcclxuICAgIFByb2R1Y3RNYW5hZ2VtZW50RmFjYWRlLFxyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiAnUHJvZHVjdFNlcnZpY2VzRmFjYWRlJyxcclxuICAgICAgdXNlRmFjdG9yeTogKHByb2R1Y3RTdG9ja05vdGlmaWNhdGlvblJlcG9zaXRvcnk6IGFueSwgY2F0ZWdvcnlSZXBvc2l0b3J5OiBhbnksIHByb2R1Y3RTZWFyY2g6IGFueSkgPT4gKHtcclxuICAgICAgICBwcm9kdWN0U3RvY2tOb3RpZmljYXRpb25SZXBvc2l0b3J5LFxyXG4gICAgICAgIGNhdGVnb3J5UmVwb3NpdG9yeSxcclxuICAgICAgICBwcm9kdWN0U2VhcmNoLFxyXG4gICAgICB9KSxcclxuICAgICAgZGVwczogWydQcm9kdWN0U3RvY2tOb3RpZmljYXRpb25SZXBvc2l0b3J5JywgJ0NhdGVnb3J5UmVwb3NpdG9yeScsICdQcm9kdWN0U2VhcmNoJ10sXHJcbiAgICB9LFxyXG4gICAgQ2F0YWxvZ0ZpbHRlckhlbHBlcixcclxuICAgIENhdGFsb2dTb3J0SGVscGVyLFxyXG4gICAgUHJvZHVjdEZpZWxkc0hlbHBlcixcclxuICAgIEJyYW5kTWFuYWdlckhlbHBlcixcclxuICAgIENhdGFsb2dSZXBvc2l0b3J5U2VydmljZSxcclxuICAgIENhdGFsb2dIZWxwZXJzU2VydmljZSxcclxuICAgIENhdGVnb3J5U2VhcmNoU3RyYXRlZ3ksXHJcbiAgICBUZXJtU2VhcmNoU3RyYXRlZ3ksXHJcbiAgICBQcm9maWxlU2VhcmNoU3RyYXRlZ3ksXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IENhdGFsb2dTZWFyY2hDb250ZXh0LFxyXG4gICAgICB1c2VGYWN0b3J5OiAoXHJcbiAgICAgICAgY2F0ZWdvcnlTdHJhdGVneTogQ2F0ZWdvcnlTZWFyY2hTdHJhdGVneSxcclxuICAgICAgICB0ZXJtU3RyYXRlZ3k6IFRlcm1TZWFyY2hTdHJhdGVneSxcclxuICAgICAgICBwcm9maWxlU3RyYXRlZ3k6IFByb2ZpbGVTZWFyY2hTdHJhdGVneSxcclxuICAgICAgKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBDYXRhbG9nU2VhcmNoQ29udGV4dChjYXRlZ29yeVN0cmF0ZWd5LCB0ZXJtU3RyYXRlZ3ksIHByb2ZpbGVTdHJhdGVneSlcclxuICAgICAgfSxcclxuICAgICAgZGVwczogW0NhdGVnb3J5U2VhcmNoU3RyYXRlZ3ksIFRlcm1TZWFyY2hTdHJhdGVneSwgUHJvZmlsZVNlYXJjaFN0cmF0ZWd5XSxcclxuICAgIH0sXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IFVwZGF0ZVVzZXJJbWFnZSxcclxuICAgICAgdXNlRmFjdG9yeTogKHVzZXJSZXBvc2l0b3J5OiBVc2VyUmVwb3NpdG9yeSwgZmlsZVVwbG9hZGVyOiBGaWxlVXBsb2FkZXJTZXJ2aWNlKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBVcGRhdGVVc2VySW1hZ2UodXNlclJlcG9zaXRvcnksIGZpbGVVcGxvYWRlcilcclxuICAgICAgfSxcclxuICAgICAgZGVwczogWydVc2VyUmVwb3NpdG9yeScsICdGaWxlVXBsb2FkZXJTZXJ2aWNlJ10sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiAnRmlsZVVwbG9hZGVyU2VydmljZScsXHJcbiAgICAgIHVzZUZhY3Rvcnk6IChzdG9yYWdlOiBTdG9yYWdlLCBiYXNlVXJsOiBzdHJpbmcpID0+IHtcclxuICAgICAgICByZXR1cm4gbmV3IEZpcmViYXNlRmlsZVVwbG9hZGVyU2VydmljZShzdG9yYWdlLCBiYXNlVXJsKVxyXG4gICAgICB9LFxyXG4gICAgICBkZXBzOiBbU3RvcmFnZSwgU1RPUkFHRV9CQVNFX1VSTF0sXHJcbiAgICB9LFxyXG4gICAge1xyXG4gICAgICBwcm92aWRlOiAnUHJvZHVjdFNlYXJjaCcsXHJcbiAgICAgIHVzZUV4aXN0aW5nOiBQcm9kdWN0c1ZlcnRleFNlYXJjaCxcclxuICAgIH0sXHJcbiAgICBDb3Vwb25SZXBvc2l0b3JpZXNGYWNhZGUsXHJcbiAgICBIb21lU2hvcFJlcG9zaXRvcmllc0ZhY2FkZSxcclxuICAgIE9yZGVyUHJvZHVjdFJldmlld1NlcnZpY2UsXHJcbiAgXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFuZ3VsYXJDb25uZWN0TW9kdWxlIHtcclxuICBzdGF0aWMgaW5pdGlhbGl6ZUFwcChcclxuICAgIGRlZmF1bHRTaG9wOiBTaG9wcyxcclxuICAgIG9wdGlvbnM6IHtcclxuICAgICAgZmlyZWJhc2U/OiBGaXJlYmFzZU9wdGlvbnNcclxuICAgICAgZWxhc3RpY1NlYXJjaD86IEF4aW9zRWxhc3RpY1NlYXJjaENvbmZpZ1xyXG4gICAgICB2ZXJ0ZXhDb25maWc/OiBWZXJ0ZXhTZWFyY2hDb25maWdcclxuICAgICAgaGFzdXJhOiBIYXN1cmFHcmFwaFFMT3B0aW9uc1xyXG4gICAgICBiYWNrZW5kVXJsOiBzdHJpbmdcclxuICAgICAgb2xkQ2F0ZWdvcnlTdHJ1Y3R1cmU/OiBib29sZWFuXHJcbiAgICAgIHN0b3JhZ2VCYXNlVXJsPzogc3RyaW5nXHJcbiAgICAgIHBlcnNpc3RlbmNlUHJvdmlkZXI/OiBUeXBlPERhdGFQZXJzaXN0ZW5jZT5cclxuICAgICAgYXBwQ2hlY2tQcm92aWRlcj86IEFwcENoZWNrT3B0aW9uc1sncHJvdmlkZXInXVxyXG4gICAgfSxcclxuICAgIG5hbWVPckNvbmZpZz86IHN0cmluZyB8IEZpcmViYXNlQXBwQ29uZmlnLFxyXG4gICk6IE1vZHVsZVdpdGhQcm92aWRlcnM8QW5ndWxhckNvbm5lY3RNb2R1bGU+IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIG5nTW9kdWxlOiBBbmd1bGFyQ29ubmVjdE1vZHVsZSxcclxuICAgICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAgLi4udGhpcy5idWlsZENvcmVQcm92aWRlcnMobmFtZU9yQ29uZmlnLCBvcHRpb25zKSxcclxuICAgICAgICAuLi50aGlzLmJ1aWxkQ29uZGl0aW9uYWxQcm92aWRlcnMoZGVmYXVsdFNob3AsIG9wdGlvbnMpLFxyXG4gICAgICBdLFxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgYnVpbGRDb3JlUHJvdmlkZXJzKFxyXG4gICAgbmFtZU9yQ29uZmlnOiBzdHJpbmcgfCBGaXJlYmFzZUFwcENvbmZpZyxcclxuICAgIG9wdGlvbnM6IHtcclxuICAgICAgYXBwQ2hlY2tQcm92aWRlcj86IEFwcENoZWNrT3B0aW9uc1sncHJvdmlkZXInXVxyXG4gICAgICBvbGRDYXRlZ29yeVN0cnVjdHVyZT86IGJvb2xlYW5cclxuICAgICAgcGVyc2lzdGVuY2VQcm92aWRlcj86IFR5cGU8RGF0YVBlcnNpc3RlbmNlPlxyXG4gICAgfSxcclxuICApIHtcclxuICAgIHJldHVybiBbXHJcbiAgICAgIHsgcHJvdmlkZTogRklSRUJBU0VfQVBQX05BTUUsIHVzZVZhbHVlOiBuYW1lT3JDb25maWcgfSxcclxuICAgICAgeyBwcm92aWRlOiBBUFBfQ0hFQ0tfUFJPVklERVIsIHVzZVZhbHVlOiBvcHRpb25zLmFwcENoZWNrUHJvdmlkZXIgfSxcclxuICAgICAge1xyXG4gICAgICAgIHByb3ZpZGU6IENBVEVHT1JZX1NUUlVDVFVSRSxcclxuICAgICAgICB1c2VDbGFzczogdGhpcy5zZWxlY3RDYXRlZ29yeVN0cnVjdHVyZUFkYXB0ZXIob3B0aW9ucy5vbGRDYXRlZ29yeVN0cnVjdHVyZSksXHJcbiAgICAgIH0sXHJcbiAgICAgIHsgcHJvdmlkZTogUEVSU0lTVEVOQ0VfUFJPVklERVIsIHVzZUNsYXNzOiBvcHRpb25zPy5wZXJzaXN0ZW5jZVByb3ZpZGVyIHx8IENvb2tpZURhdGFQZXJzaXN0ZW5jZSB9LFxyXG4gICAgXVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgYnVpbGRDb25kaXRpb25hbFByb3ZpZGVycyhcclxuICAgIGRlZmF1bHRTaG9wOiBTaG9wcyxcclxuICAgIG9wdGlvbnM6IHtcclxuICAgICAgZmlyZWJhc2U/OiBGaXJlYmFzZU9wdGlvbnNcclxuICAgICAgZWxhc3RpY1NlYXJjaD86IEF4aW9zRWxhc3RpY1NlYXJjaENvbmZpZ1xyXG4gICAgICB2ZXJ0ZXhDb25maWc/OiBWZXJ0ZXhTZWFyY2hDb25maWdcclxuICAgICAgaGFzdXJhOiBIYXN1cmFHcmFwaFFMT3B0aW9uc1xyXG4gICAgICBiYWNrZW5kVXJsOiBzdHJpbmdcclxuICAgICAgc3RvcmFnZUJhc2VVcmw/OiBzdHJpbmdcclxuICAgIH0sXHJcbiAgKSB7XHJcbiAgICByZXR1cm4gW1xyXG4gICAgICAuLi50aGlzLmNyZWF0ZVByb3ZpZGVySWZFeGlzdHMoREVGQVVMVF9TSE9QLCBkZWZhdWx0U2hvcCksXHJcbiAgICAgIC4uLnRoaXMuY3JlYXRlUHJvdmlkZXJJZkV4aXN0cyhGSVJFQkFTRV9PUFRJT05TLCBvcHRpb25zLmZpcmViYXNlKSxcclxuICAgICAgLi4udGhpcy5jcmVhdGVQcm92aWRlcklmRXhpc3RzKEVTX0NPTkZJRywgb3B0aW9ucy5lbGFzdGljU2VhcmNoKSxcclxuICAgICAgLi4udGhpcy5jcmVhdGVQcm92aWRlcklmRXhpc3RzKFZFUlRFWF9DT05GSUcsIG9wdGlvbnMudmVydGV4Q29uZmlnKSxcclxuICAgICAgLi4udGhpcy5jcmVhdGVQcm92aWRlcklmRXhpc3RzKEhBU1VSQV9PUFRJT05TLCBvcHRpb25zLmhhc3VyYSksXHJcbiAgICAgIC4uLnRoaXMuY3JlYXRlUHJvdmlkZXJJZkV4aXN0cyhCQUNLRU5EX1VSTCwgb3B0aW9ucy5iYWNrZW5kVXJsKSxcclxuICAgICAgLi4udGhpcy5jcmVhdGVQcm92aWRlcklmRXhpc3RzKFNUT1JBR0VfQkFTRV9VUkwsIG9wdGlvbnMuc3RvcmFnZUJhc2VVcmwpLFxyXG4gICAgXVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgc2VsZWN0Q2F0ZWdvcnlTdHJ1Y3R1cmVBZGFwdGVyKG9sZENhdGVnb3J5U3RydWN0dXJlPzogYm9vbGVhbikge1xyXG4gICAgcmV0dXJuIGlzTmlsKG9sZENhdGVnb3J5U3RydWN0dXJlKSB8fCBvbGRDYXRlZ29yeVN0cnVjdHVyZVxyXG4gICAgICA/IE9sZENhdGVnb3J5U3RydWN0dXJlQWRhcHRlclxyXG4gICAgICA6IE5ld0NhdGVnb3J5U3RydWN0dXJlQWRhcHRlclxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgY3JlYXRlUHJvdmlkZXJJZkV4aXN0cyh0b2tlbjogYW55LCB2YWx1ZTogYW55KSB7XHJcbiAgICByZXR1cm4gaXNOaWwodmFsdWUpID8gW10gOiBbeyBwcm92aWRlOiB0b2tlbiwgdXNlVmFsdWU6IHZhbHVlIH1dXHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,34 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { AxiosAdapter, ProductsIndex } from '@infrab4a/connect';
3
+ import { ES_CONFIG } from './consts/es-config.const';
4
+ import * as i0 from "@angular/core";
5
+ export class AngularElasticSeachModule {
6
+ static initializeApp(options) {
7
+ return {
8
+ ngModule: AngularElasticSeachModule,
9
+ providers: [{ provide: ES_CONFIG, useValue: options }],
10
+ };
11
+ }
12
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: AngularElasticSeachModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
13
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.3", ngImport: i0, type: AngularElasticSeachModule }); }
14
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: AngularElasticSeachModule, providers: [
15
+ {
16
+ provide: ProductsIndex,
17
+ useFactory: (configuration) => new ProductsIndex(new AxiosAdapter(configuration)),
18
+ deps: [ES_CONFIG],
19
+ },
20
+ ] }); }
21
+ }
22
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: AngularElasticSeachModule, decorators: [{
23
+ type: NgModule,
24
+ args: [{
25
+ providers: [
26
+ {
27
+ provide: ProductsIndex,
28
+ useFactory: (configuration) => new ProductsIndex(new AxiosAdapter(configuration)),
29
+ deps: [ES_CONFIG],
30
+ },
31
+ ],
32
+ }]
33
+ }] });
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1lbGFzdGljLXNlYXJjaC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL2FuZ3VsYXItZWxhc3RpYy1zZWFyY2gubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBdUIsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzdELE9BQU8sRUFBRSxZQUFZLEVBQTRCLGFBQWEsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBRXpGLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTs7QUFZcEQsTUFBTSxPQUFPLHlCQUF5QjtJQUNwQyxNQUFNLENBQUMsYUFBYSxDQUFDLE9BQWlDO1FBQ3BELE9BQU87WUFDTCxRQUFRLEVBQUUseUJBQXlCO1lBQ25DLFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLENBQUM7U0FDdkQsQ0FBQTtJQUNILENBQUM7OEdBTlUseUJBQXlCOytHQUF6Qix5QkFBeUI7K0dBQXpCLHlCQUF5QixhQVR6QjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxhQUFhO2dCQUN0QixVQUFVLEVBQUUsQ0FBQyxhQUF1QyxFQUFpQixFQUFFLENBQ3JFLElBQUksYUFBYSxDQUFDLElBQUksWUFBWSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2dCQUNwRCxJQUFJLEVBQUUsQ0FBQyxTQUFTLENBQUM7YUFDbEI7U0FDRjs7MkZBRVUseUJBQXlCO2tCQVZyQyxRQUFRO21CQUFDO29CQUNSLFNBQVMsRUFBRTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsYUFBYTs0QkFDdEIsVUFBVSxFQUFFLENBQUMsYUFBdUMsRUFBaUIsRUFBRSxDQUNyRSxJQUFJLGFBQWEsQ0FBQyxJQUFJLFlBQVksQ0FBQyxhQUFhLENBQUMsQ0FBQzs0QkFDcEQsSUFBSSxFQUFFLENBQUMsU0FBUyxDQUFDO3lCQUNsQjtxQkFDRjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcclxuaW1wb3J0IHsgQXhpb3NBZGFwdGVyLCBBeGlvc0VsYXN0aWNTZWFyY2hDb25maWcsIFByb2R1Y3RzSW5kZXggfSBmcm9tICdAaW5mcmFiNGEvY29ubmVjdCdcclxuXHJcbmltcG9ydCB7IEVTX0NPTkZJRyB9IGZyb20gJy4vY29uc3RzL2VzLWNvbmZpZy5jb25zdCdcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgcHJvdmlkZXJzOiBbXHJcbiAgICB7XHJcbiAgICAgIHByb3ZpZGU6IFByb2R1Y3RzSW5kZXgsXHJcbiAgICAgIHVzZUZhY3Rvcnk6IChjb25maWd1cmF0aW9uOiBBeGlvc0VsYXN0aWNTZWFyY2hDb25maWcpOiBQcm9kdWN0c0luZGV4ID0+XHJcbiAgICAgICAgbmV3IFByb2R1Y3RzSW5kZXgobmV3IEF4aW9zQWRhcHRlcihjb25maWd1cmF0aW9uKSksXHJcbiAgICAgIGRlcHM6IFtFU19DT05GSUddLFxyXG4gICAgfSxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQW5ndWxhckVsYXN0aWNTZWFjaE1vZHVsZSB7XHJcbiAgc3RhdGljIGluaXRpYWxpemVBcHAob3B0aW9uczogQXhpb3NFbGFzdGljU2VhcmNoQ29uZmlnKTogTW9kdWxlV2l0aFByb3ZpZGVyczxBbmd1bGFyRWxhc3RpY1NlYWNoTW9kdWxlPiB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBuZ01vZHVsZTogQW5ndWxhckVsYXN0aWNTZWFjaE1vZHVsZSxcclxuICAgICAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBFU19DT05GSUcsIHVzZVZhbHVlOiBvcHRpb25zIH1dLFxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,141 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { FirebaseApp } from '@angular/fire/app';
3
+ import { Auth, browserLocalPersistence, browserSessionPersistence, getAuth, indexedDBLocalPersistence, initializeAuth, provideAuth, } from '@angular/fire/auth';
4
+ import { Authentication, AuthenticationFirebaseAuthService, RecoveryPassword, Register, RegisterFirebaseAuthService, SignOut, } from '@infrab4a/connect';
5
+ import { FIREBASE_APP_NAME, FIREBASE_OPTIONS } from './consts';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/fire/auth";
8
+ export class AngularFirebaseAuthModule {
9
+ static initializeApp(options, nameOrConfig) {
10
+ return {
11
+ ngModule: AngularFirebaseAuthModule,
12
+ providers: [
13
+ { provide: FIREBASE_OPTIONS, useValue: options },
14
+ { provide: FIREBASE_APP_NAME, useValue: nameOrConfig },
15
+ ],
16
+ };
17
+ }
18
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: AngularFirebaseAuthModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
19
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.3", ngImport: i0, type: AngularFirebaseAuthModule, imports: [i1.AuthModule] }); }
20
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: AngularFirebaseAuthModule, providers: [
21
+ {
22
+ provide: 'Authentication',
23
+ useFactory: (authenticationService, userRepository) => {
24
+ return new Authentication(authenticationService, userRepository);
25
+ },
26
+ deps: ['AuthenticationService', 'UserRepository'],
27
+ },
28
+ {
29
+ provide: 'AuthenticationService',
30
+ useFactory: (angularFireAuth) => {
31
+ return new AuthenticationFirebaseAuthService(angularFireAuth);
32
+ },
33
+ deps: [Auth],
34
+ },
35
+ {
36
+ provide: 'Register',
37
+ useFactory: (registerService, userRepository) => {
38
+ return new Register(registerService, userRepository);
39
+ },
40
+ deps: ['RegisterService', 'UserRepository'],
41
+ },
42
+ {
43
+ provide: 'RegisterService',
44
+ useFactory: (angularFireAuth) => {
45
+ return new RegisterFirebaseAuthService(angularFireAuth);
46
+ },
47
+ deps: [Auth],
48
+ },
49
+ {
50
+ provide: 'SignOut',
51
+ useFactory: (authenticationService) => {
52
+ return new SignOut(authenticationService);
53
+ },
54
+ deps: ['AuthenticationService'],
55
+ },
56
+ {
57
+ provide: 'RecoveryPassword',
58
+ useFactory: (authenticationService) => {
59
+ return new RecoveryPassword(authenticationService);
60
+ },
61
+ deps: ['AuthenticationService'],
62
+ },
63
+ ], imports: [provideAuth((injector) => {
64
+ const app = injector.get(FirebaseApp);
65
+ try {
66
+ return initializeAuth(app, {
67
+ persistence: [indexedDBLocalPersistence, browserLocalPersistence, browserSessionPersistence],
68
+ });
69
+ }
70
+ catch (error) {
71
+ if (error instanceof Error)
72
+ console.error('Error initializing auth', error.message);
73
+ return getAuth(app);
74
+ }
75
+ })] }); }
76
+ }
77
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: AngularFirebaseAuthModule, decorators: [{
78
+ type: NgModule,
79
+ args: [{
80
+ imports: [
81
+ provideAuth((injector) => {
82
+ const app = injector.get(FirebaseApp);
83
+ try {
84
+ return initializeAuth(app, {
85
+ persistence: [indexedDBLocalPersistence, browserLocalPersistence, browserSessionPersistence],
86
+ });
87
+ }
88
+ catch (error) {
89
+ if (error instanceof Error)
90
+ console.error('Error initializing auth', error.message);
91
+ return getAuth(app);
92
+ }
93
+ }),
94
+ ],
95
+ providers: [
96
+ {
97
+ provide: 'Authentication',
98
+ useFactory: (authenticationService, userRepository) => {
99
+ return new Authentication(authenticationService, userRepository);
100
+ },
101
+ deps: ['AuthenticationService', 'UserRepository'],
102
+ },
103
+ {
104
+ provide: 'AuthenticationService',
105
+ useFactory: (angularFireAuth) => {
106
+ return new AuthenticationFirebaseAuthService(angularFireAuth);
107
+ },
108
+ deps: [Auth],
109
+ },
110
+ {
111
+ provide: 'Register',
112
+ useFactory: (registerService, userRepository) => {
113
+ return new Register(registerService, userRepository);
114
+ },
115
+ deps: ['RegisterService', 'UserRepository'],
116
+ },
117
+ {
118
+ provide: 'RegisterService',
119
+ useFactory: (angularFireAuth) => {
120
+ return new RegisterFirebaseAuthService(angularFireAuth);
121
+ },
122
+ deps: [Auth],
123
+ },
124
+ {
125
+ provide: 'SignOut',
126
+ useFactory: (authenticationService) => {
127
+ return new SignOut(authenticationService);
128
+ },
129
+ deps: ['AuthenticationService'],
130
+ },
131
+ {
132
+ provide: 'RecoveryPassword',
133
+ useFactory: (authenticationService) => {
134
+ return new RecoveryPassword(authenticationService);
135
+ },
136
+ deps: ['AuthenticationService'],
137
+ },
138
+ ],
139
+ }]
140
+ }] });
141
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1maXJlYmFzZS1hdXRoLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL2Nvbm5lY3QtYW5ndWxhci9zcmMvYW5ndWxhci1maXJlYmFzZS1hdXRoLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlDLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUN2RSxPQUFPLEVBQUUsV0FBVyxFQUFtQixNQUFNLG1CQUFtQixDQUFBO0FBQ2hFLE9BQU8sRUFDTCxJQUFJLEVBQ0osdUJBQXVCLEVBQ3ZCLHlCQUF5QixFQUN6QixPQUFPLEVBQ1AseUJBQXlCLEVBQ3pCLGNBQWMsRUFDZCxXQUFXLEdBQ1osTUFBTSxvQkFBb0IsQ0FBQTtBQUMzQixPQUFPLEVBQ0wsY0FBYyxFQUNkLGlDQUFpQyxFQUVqQyxnQkFBZ0IsRUFDaEIsUUFBUSxFQUNSLDJCQUEyQixFQUUzQixPQUFPLEdBRVIsTUFBTSxtQkFBbUIsQ0FBQTtBQUUxQixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxVQUFVLENBQUE7OztBQWdFOUQsTUFBTSxPQUFPLHlCQUF5QjtJQUNwQyxNQUFNLENBQUMsYUFBYSxDQUNsQixPQUF3QixFQUN4QixZQUF5QztRQUV6QyxPQUFPO1lBQ0wsUUFBUSxFQUFFLHlCQUF5QjtZQUNuQyxTQUFTLEVBQUU7Z0JBQ1QsRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRTtnQkFDaEQsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRTthQUN2RDtTQUNGLENBQUE7SUFDSCxDQUFDOzhHQVpVLHlCQUF5QjsrR0FBekIseUJBQXlCOytHQUF6Qix5QkFBeUIsYUE3Q3pCO1lBQ1Q7Z0JBQ0UsT0FBTyxFQUFFLGdCQUFnQjtnQkFDekIsVUFBVSxFQUFFLENBQUMscUJBQTRDLEVBQUUsY0FBOEIs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QUFPLEVBQUUsa0JBQWtCOzRCQUMzQixVQUFVLEVBQUUsQ0FBQyxxQkFBNEMsRUFBb0IsRUFBRTtnQ0FDN0UsT0FBTyxJQUFJLGdCQUFnQixDQUFDLHFCQUFxQixDQUFDLENBQUE7NEJBQ3BELENBQUM7NEJBQ0QsSUFBSSxFQUFFLENBQUMsdUJBQXVCLENBQUM7eUJBQ2hDO3FCQUNGO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0b3IsIE1vZHVsZVdpdGhQcm92aWRlcnMsIE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcclxuaW1wb3J0IHsgRmlyZWJhc2VBcHAsIEZpcmViYXNlT3B0aW9ucyB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUvYXBwJ1xyXG5pbXBvcnQge1xyXG4gIEF1dGgsXHJcbiAgYnJvd3NlckxvY2FsUGVyc2lzdGVuY2UsXHJcbiAgYnJvd3NlclNlc3Npb25QZXJzaXN0ZW5jZSxcclxuICBnZXRBdXRoLFxyXG4gIGluZGV4ZWREQkxvY2FsUGVyc2lzdGVuY2UsXHJcbiAgaW5pdGlhbGl6ZUF1dGgsXHJcbiAgcHJvdmlkZUF1dGgsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvZmlyZS9hdXRoJ1xyXG5pbXBvcnQge1xyXG4gIEF1dGhlbnRpY2F0aW9uLFxyXG4gIEF1dGhlbnRpY2F0aW9uRmlyZWJhc2VBdXRoU2VydmljZSxcclxuICBBdXRoZW50aWNhdGlvblNlcnZpY2UsXHJcbiAgUmVjb3ZlcnlQYXNzd29yZCxcclxuICBSZWdpc3RlcixcclxuICBSZWdpc3RlckZpcmViYXNlQXV0aFNlcnZpY2UsXHJcbiAgUmVnaXN0ZXJTZXJ2aWNlLFxyXG4gIFNpZ25PdXQsXHJcbiAgVXNlclJlcG9zaXRvcnksXHJcbn0gZnJvbSAnQGluZnJhYjRhL2Nvbm5lY3QnXHJcblxyXG5pbXBvcnQgeyBGSVJFQkFTRV9BUFBfTkFNRSwgRklSRUJBU0VfT1BUSU9OUyB9IGZyb20gJy4vY29uc3RzJ1xyXG5pbXBvcnQgeyBGaXJlYmFzZUFwcENvbmZpZyB9IGZyb20gJy4vdHlwZXMnXHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGltcG9ydHM6IFtcclxuICAgIHByb3ZpZGVBdXRoKChpbmplY3RvcjogSW5qZWN0b3IpID0+IHtcclxuICAgICAgY29uc3QgYXBwID0gaW5qZWN0b3IuZ2V0KEZpcmViYXNlQXBwKVxyXG5cclxuICAgICAgdHJ5IHtcclxuICAgICAgICByZXR1cm4gaW5pdGlhbGl6ZUF1dGgoYXBwLCB7XHJcbiAgICAgICAgICBwZXJzaXN0ZW5jZTogW2luZGV4ZWREQkxvY2FsUGVyc2lzdGVuY2UsIGJyb3dzZXJMb2NhbFBlcnNpc3RlbmNlLCBicm93c2VyU2Vzc2lvblBlcnNpc3RlbmNlXSxcclxuICAgICAgICB9KVxyXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSBjb25zb2xlLmVycm9yKCdFcnJvciBpbml0aWFsaXppbmcgYXV0aCcsIGVycm9yLm1lc3NhZ2UpXHJcblxyXG4gICAgICAgIHJldHVybiBnZXRBdXRoKGFwcClcclxuICAgICAgfVxyXG4gICAgfSksXHJcbiAgXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogJ0F1dGhlbnRpY2F0aW9uJyxcclxuICAgICAgdXNlRmFjdG9yeTogKGF1dGhlbnRpY2F0aW9uU2VydmljZTogQXV0aGVudGljYXRpb25TZXJ2aWNlLCB1c2VyUmVwb3NpdG9yeTogVXNlclJlcG9zaXRvcnkpOiBBdXRoZW50aWNhdGlvbiA9PiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBBdXRoZW50aWNhdGlvbihhdXRoZW50aWNhdGlvblNlcnZpY2UsIHVzZXJSZXBvc2l0b3J5KVxyXG4gICAgICB9LFxyXG4gICAgICBkZXBzOiBbJ0F1dGhlbnRpY2F0aW9uU2VydmljZScsICdVc2VyUmVwb3NpdG9yeSddLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogJ0F1dGhlbnRpY2F0aW9uU2VydmljZScsXHJcbiAgICAgIHVzZUZhY3Rvcnk6IChhbmd1bGFyRmlyZUF1dGg6IEF1dGgpOiBBdXRoZW50aWNhdGlvblNlcnZpY2UgPT4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgQXV0aGVudGljYXRpb25GaXJlYmFzZUF1dGhTZXJ2aWNlKGFuZ3VsYXJGaXJlQXV0aClcclxuICAgICAgfSxcclxuICAgICAgZGVwczogW0F1dGhdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogJ1JlZ2lzdGVyJyxcclxuICAgICAgdXNlRmFjdG9yeTogKHJlZ2lzdGVyU2VydmljZTogUmVnaXN0ZXJTZXJ2aWNlLCB1c2VyUmVwb3NpdG9yeTogVXNlclJlcG9zaXRvcnkpOiBSZWdpc3RlciA9PiB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBSZWdpc3RlcihyZWdpc3RlclNlcnZpY2UsIHVzZXJSZXBvc2l0b3J5KVxyXG4gICAgICB9LFxyXG4gICAgICBkZXBzOiBbJ1JlZ2lzdGVyU2VydmljZScsICdVc2VyUmVwb3NpdG9yeSddLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogJ1JlZ2lzdGVyU2VydmljZScsXHJcbiAgICAgIHVzZUZhY3Rvcnk6IChhbmd1bGFyRmlyZUF1dGg6IEF1dGgpOiBSZWdpc3RlclNlcnZpY2UgPT4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgUmVnaXN0ZXJGaXJlYmFzZUF1dGhTZXJ2aWNlKGFuZ3VsYXJGaXJlQXV0aClcclxuICAgICAgfSxcclxuICAgICAgZGVwczogW0F1dGhdLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogJ1NpZ25PdXQnLFxyXG4gICAgICB1c2VGYWN0b3J5OiAoYXV0aGVudGljYXRpb25TZXJ2aWNlOiBBdXRoZW50aWNhdGlvblNlcnZpY2UpOiBTaWduT3V0ID0+IHtcclxuICAgICAgICByZXR1cm4gbmV3IFNpZ25PdXQoYXV0aGVudGljYXRpb25TZXJ2aWNlKVxyXG4gICAgICB9LFxyXG4gICAgICBkZXBzOiBbJ0F1dGhlbnRpY2F0aW9uU2VydmljZSddLFxyXG4gICAgfSxcclxuICAgIHtcclxuICAgICAgcHJvdmlkZTogJ1JlY292ZXJ5UGFzc3dvcmQnLFxyXG4gICAgICB1c2VGYWN0b3J5OiAoYXV0aGVudGljYXRpb25TZXJ2aWNlOiBBdXRoZW50aWNhdGlvblNlcnZpY2UpOiBSZWNvdmVyeVBhc3N3b3JkID0+IHtcclxuICAgICAgICByZXR1cm4gbmV3IFJlY292ZXJ5UGFzc3dvcmQoYXV0aGVudGljYXRpb25TZXJ2aWNlKVxyXG4gICAgICB9LFxyXG4gICAgICBkZXBzOiBbJ0F1dGhlbnRpY2F0aW9uU2VydmljZSddLFxyXG4gICAgfSxcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQW5ndWxhckZpcmViYXNlQXV0aE1vZHVsZSB7XHJcbiAgc3RhdGljIGluaXRpYWxpemVBcHAoXHJcbiAgICBvcHRpb25zOiBGaXJlYmFzZU9wdGlvbnMsXHJcbiAgICBuYW1lT3JDb25maWc/OiBzdHJpbmcgfCBGaXJlYmFzZUFwcENvbmZpZyxcclxuICApOiBNb2R1bGVXaXRoUHJvdmlkZXJzPEFuZ3VsYXJGaXJlYmFzZUF1dGhNb2R1bGU+IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIG5nTW9kdWxlOiBBbmd1bGFyRmlyZWJhc2VBdXRoTW9kdWxlLFxyXG4gICAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICB7IHByb3ZpZGU6IEZJUkVCQVNFX09QVElPTlMsIHVzZVZhbHVlOiBvcHRpb25zIH0sXHJcbiAgICAgICAgeyBwcm92aWRlOiBGSVJFQkFTRV9BUFBfTkFNRSwgdXNlVmFsdWU6IG5hbWVPckNvbmZpZyB9LFxyXG4gICAgICBdLFxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=