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