@infrab4a/connect-angular 4.1.0-beta.1 → 4.1.0-beta.10

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 (106) hide show
  1. package/angular-connect.module.d.ts +22 -22
  2. package/angular-elastic-search.module.d.ts +9 -9
  3. package/angular-firebase-auth.module.d.ts +12 -12
  4. package/angular-firestore.module.d.ts +18 -18
  5. package/angular-hasura-graphql.module.d.ts +16 -16
  6. package/consts/backend-url.const.d.ts +1 -1
  7. package/consts/category-structure.d.ts +1 -1
  8. package/consts/default-shop.const.d.ts +1 -1
  9. package/consts/es-config.const.d.ts +1 -1
  10. package/consts/firebase-const.d.ts +3 -3
  11. package/consts/hasura-options.const.d.ts +1 -1
  12. package/consts/index.d.ts +6 -6
  13. package/{esm2020 → esm2022}/angular-connect.module.mjs +66 -66
  14. package/esm2022/angular-elastic-search.module.mjs +34 -0
  15. package/esm2022/angular-firebase-auth.module.mjs +130 -0
  16. package/esm2022/angular-firestore.module.mjs +459 -0
  17. package/esm2022/angular-hasura-graphql.module.mjs +243 -0
  18. package/{esm2020 → esm2022}/consts/backend-url.const.mjs +1 -1
  19. package/{esm2020 → esm2022}/consts/category-structure.mjs +2 -2
  20. package/{esm2020 → esm2022}/consts/default-shop.const.mjs +2 -2
  21. package/{esm2020 → esm2022}/consts/es-config.const.mjs +2 -2
  22. package/{esm2020 → esm2022}/consts/firebase-const.mjs +4 -4
  23. package/{esm2020 → esm2022}/consts/hasura-options.const.mjs +2 -2
  24. package/{esm2020 → esm2022}/consts/index.mjs +7 -7
  25. package/{esm2020 → esm2022}/helpers/index.mjs +2 -2
  26. package/{esm2020 → esm2022}/helpers/mobile-operation-system-checker.helper.mjs +7 -7
  27. package/{esm2020 → esm2022}/index.mjs +6 -6
  28. package/{esm2020 → esm2022}/infrab4a-connect-angular.mjs +4 -4
  29. package/{esm2020 → esm2022}/services/auth.service.mjs +37 -37
  30. package/{esm2020 → esm2022}/services/cart.service.mjs +281 -281
  31. package/{esm2020 → esm2022}/services/catalog/adapters/category-structure.adapter.mjs +2 -2
  32. package/{esm2020 → esm2022}/services/catalog/adapters/index.mjs +4 -4
  33. package/{esm2020 → esm2022}/services/catalog/adapters/new-category-structure.adapter.mjs +41 -41
  34. package/{esm2020 → esm2022}/services/catalog/adapters/old-category-structure.adapter.mjs +23 -23
  35. package/esm2022/services/catalog/catalog.service.mjs +122 -0
  36. package/esm2022/services/catalog/category.service.mjs +51 -0
  37. package/{esm2020 → esm2022}/services/catalog/enums/index.mjs +2 -2
  38. package/{esm2020 → esm2022}/services/catalog/enums/product-sorts.enum.mjs +11 -11
  39. package/{esm2020 → esm2022}/services/catalog/index.mjs +7 -7
  40. package/{esm2020 → esm2022}/services/catalog/models/category-with-tree.model.mjs +10 -10
  41. package/{esm2020 → esm2022}/services/catalog/models/index.mjs +2 -2
  42. package/{esm2020 → esm2022}/services/catalog/types/index.mjs +2 -2
  43. package/{esm2020 → esm2022}/services/catalog/types/product-sort.type.mjs +2 -2
  44. package/{esm2020 → esm2022}/services/catalog/wishlist.service.mjs +106 -106
  45. package/{esm2020 → esm2022}/services/checkout-subscription.service.mjs +53 -53
  46. package/{esm2020 → esm2022}/services/checkout.service.mjs +71 -71
  47. package/{esm2020 → esm2022}/services/coupon.service.mjs +218 -218
  48. package/{esm2020 → esm2022}/services/helpers/index.mjs +2 -2
  49. package/{esm2020 → esm2022}/services/helpers/util.helper.mjs +18 -18
  50. package/{esm2020 → esm2022}/services/home-shop.service.mjs +114 -114
  51. package/{esm2020 → esm2022}/services/index.mjs +11 -11
  52. package/{esm2020 → esm2022}/services/order.service.mjs +30 -30
  53. package/{esm2020 → esm2022}/services/shipping.service.mjs +96 -96
  54. package/{esm2020 → esm2022}/services/types/index.mjs +3 -3
  55. package/{esm2020 → esm2022}/services/types/required-checkout-data.type.mjs +2 -2
  56. package/{esm2020 → esm2022}/services/types/required-checkout-subscription-data.type.mjs +2 -2
  57. package/esm2022/services/types/shipping-methods.type.mjs +2 -0
  58. package/{esm2020 → esm2022}/types/firebase-app-config.type.mjs +2 -2
  59. package/{esm2020 → esm2022}/types/index.mjs +2 -2
  60. package/{fesm2020 → fesm2022}/infrab4a-connect-angular.mjs +2047 -2063
  61. package/fesm2022/infrab4a-connect-angular.mjs.map +1 -0
  62. package/helpers/index.d.ts +1 -1
  63. package/helpers/mobile-operation-system-checker.helper.d.ts +3 -3
  64. package/index.d.ts +5 -5
  65. package/package.json +9 -16
  66. package/services/auth.service.d.ts +18 -18
  67. package/services/cart.service.d.ts +42 -42
  68. package/services/catalog/adapters/category-structure.adapter.d.ts +4 -4
  69. package/services/catalog/adapters/index.d.ts +3 -3
  70. package/services/catalog/adapters/new-category-structure.adapter.d.ts +12 -12
  71. package/services/catalog/adapters/old-category-structure.adapter.d.ts +10 -10
  72. package/services/catalog/catalog.service.d.ts +80 -80
  73. package/services/catalog/category.service.d.ts +15 -15
  74. package/services/catalog/enums/index.d.ts +1 -1
  75. package/services/catalog/enums/product-sorts.enum.d.ts +9 -9
  76. package/services/catalog/index.d.ts +6 -6
  77. package/services/catalog/models/category-with-tree.model.d.ts +4 -4
  78. package/services/catalog/models/index.d.ts +1 -1
  79. package/services/catalog/types/index.d.ts +1 -1
  80. package/services/catalog/types/product-sort.type.d.ts +2 -2
  81. package/services/catalog/wishlist.service.d.ts +22 -22
  82. package/services/checkout-subscription.service.d.ts +18 -18
  83. package/services/checkout.service.d.ts +23 -23
  84. package/services/coupon.service.d.ts +28 -28
  85. package/services/helpers/index.d.ts +1 -1
  86. package/services/helpers/util.helper.d.ts +3 -3
  87. package/services/home-shop.service.d.ts +25 -25
  88. package/services/index.d.ts +10 -10
  89. package/services/order.service.d.ts +13 -13
  90. package/services/shipping.service.d.ts +19 -19
  91. package/services/types/index.d.ts +2 -2
  92. package/services/types/required-checkout-data.type.d.ts +2 -2
  93. package/services/types/required-checkout-subscription-data.type.d.ts +2 -2
  94. package/services/types/shipping-methods.type.d.ts +12 -12
  95. package/types/firebase-app-config.type.d.ts +1 -1
  96. package/types/index.d.ts +1 -1
  97. package/esm2020/angular-elastic-search.module.mjs +0 -34
  98. package/esm2020/angular-firebase-auth.module.mjs +0 -130
  99. package/esm2020/angular-firestore.module.mjs +0 -473
  100. package/esm2020/angular-hasura-graphql.module.mjs +0 -243
  101. package/esm2020/services/catalog/catalog.service.mjs +0 -124
  102. package/esm2020/services/catalog/category.service.mjs +0 -51
  103. package/esm2020/services/types/shipping-methods.type.mjs +0 -2
  104. package/fesm2015/infrab4a-connect-angular.mjs +0 -2208
  105. package/fesm2015/infrab4a-connect-angular.mjs.map +0 -1
  106. package/fesm2020/infrab4a-connect-angular.mjs.map +0 -1
@@ -1,473 +0,0 @@
1
- import { isPlatformBrowser } from '@angular/common';
2
- import { NgModule, PLATFORM_ID } from '@angular/core';
3
- import { FirebaseApp, provideFirebaseApp } from '@angular/fire/app';
4
- import { Firestore, enableIndexedDbPersistence, getFirestore, initializeFirestore, provideFirestore, } from '@angular/fire/firestore';
5
- import { Buy2WinFirestoreRepository, CampaignDashboardFirestoreRepository, CampaignHashtagFirestoreRepository, CategoryFirestoreRepository, CheckoutFirestoreRepository, CheckoutSubscriptionFirestoreRepository, CouponFirestoreRepository, HomeFirestoreRepository, LeadFirestoreRepository, LegacyOrderFirestoreRepository, OrderFirestoreRepository, PaymentFirestoreRepository, ProductFirestoreRepository, ProductVariantFirestoreRepository, ShopMenuFirestoreRepository, ShopSettingsFirestoreRepository, SubscriptionEditionFirestoreRepository, SubscriptionFirestoreRepository, SubscriptionMaterializationFirestoreRepository, SubscriptionPaymentFirestoreRepository, SubscriptionPlanFirestoreRepository, SubscriptionProductFirestoreRepository, UserAddressFirestoreRepository, UserBeautyProfileFirestoreRepository, UserFirestoreRepository, UserPaymentMethodFirestoreRepository, } from '@infrab4a/connect';
6
- import { initializeApp } from 'firebase/app';
7
- import { AngularElasticSeachModule } from './angular-elastic-search.module';
8
- import { ES_CONFIG, FIREBASE_APP_NAME, FIREBASE_OPTIONS } from './consts';
9
- import { MobileOperationSystemCheckerHelper } from './helpers';
10
- import * as i0 from "@angular/core";
11
- import * as i1 from "@angular/fire/app";
12
- import * as i2 from "@angular/fire/firestore";
13
- export class AngularFirestoreModule {
14
- static initializeApp(options, nameOrConfig) {
15
- return {
16
- ngModule: AngularFirestoreModule,
17
- providers: [
18
- { provide: FIREBASE_OPTIONS, useValue: options.firebase },
19
- { provide: FIREBASE_APP_NAME, useValue: nameOrConfig },
20
- { provide: ES_CONFIG, useValue: options.elasticSearch },
21
- ],
22
- };
23
- }
24
- }
25
- AngularFirestoreModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: AngularFirestoreModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
26
- AngularFirestoreModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.1.0", ngImport: i0, type: AngularFirestoreModule, imports: [AngularElasticSeachModule, i1.FirebaseAppModule, i2.FirestoreModule] });
27
- AngularFirestoreModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: AngularFirestoreModule, providers: [
28
- {
29
- provide: 'FirestoreOptions',
30
- useFactory: (firestore, platformId) => ({
31
- firestore,
32
- interceptors: {
33
- request: (request) => {
34
- if (isPlatformBrowser(platformId))
35
- return request;
36
- const interval = setInterval(() => { }, 100);
37
- request.interval = interval;
38
- return request;
39
- },
40
- response: (response, request) => {
41
- if (isPlatformBrowser(platformId))
42
- return response;
43
- clearInterval(request.interval);
44
- return response;
45
- },
46
- },
47
- }),
48
- deps: [Firestore, PLATFORM_ID],
49
- },
50
- {
51
- provide: 'BeautyProfileRepository',
52
- useFactory: (config, userRepository) => {
53
- return new UserBeautyProfileFirestoreRepository(config, userRepository);
54
- },
55
- deps: ['FirestoreOptions', 'UserRepository'],
56
- },
57
- {
58
- provide: 'Buy2WinRepository',
59
- useFactory: (options) => {
60
- return new Buy2WinFirestoreRepository(options);
61
- },
62
- deps: ['FirestoreOptions'],
63
- },
64
- {
65
- provide: CategoryFirestoreRepository,
66
- useFactory: (options) => {
67
- return new CategoryFirestoreRepository(options);
68
- },
69
- deps: ['FirestoreOptions'],
70
- },
71
- {
72
- provide: 'CheckoutRepository',
73
- useFactory: (options) => {
74
- return new CheckoutFirestoreRepository(options);
75
- },
76
- deps: ['FirestoreOptions'],
77
- },
78
- {
79
- provide: 'CheckoutSubscriptionRepository',
80
- useFactory: (options) => {
81
- return new CheckoutSubscriptionFirestoreRepository(options);
82
- },
83
- deps: ['FirestoreOptions'],
84
- },
85
- {
86
- provide: 'CouponRepository',
87
- useFactory: (options) => {
88
- return new CouponFirestoreRepository(options);
89
- },
90
- deps: ['FirestoreOptions'],
91
- },
92
- {
93
- provide: 'CampaignHashtagRepository',
94
- useFactory: (options) => {
95
- return new CampaignHashtagFirestoreRepository(options);
96
- },
97
- deps: ['FirestoreOptions'],
98
- },
99
- {
100
- provide: 'CampaignDashboardRepository',
101
- useFactory: (options) => {
102
- return new CampaignDashboardFirestoreRepository(options);
103
- },
104
- deps: ['FirestoreOptions'],
105
- },
106
- {
107
- provide: 'EditionRepository',
108
- useFactory: (options, subscriptionRepository) => {
109
- return new SubscriptionEditionFirestoreRepository(options, subscriptionRepository);
110
- },
111
- deps: ['FirestoreOptions', 'SubscriptionRepository'],
112
- },
113
- {
114
- provide: 'HomeRepository',
115
- useFactory: (options) => {
116
- return new HomeFirestoreRepository(options);
117
- },
118
- deps: ['FirestoreOptions'],
119
- },
120
- {
121
- provide: 'LeadRepository',
122
- useFactory: (options) => {
123
- return new LeadFirestoreRepository(options);
124
- },
125
- deps: ['FirestoreOptions'],
126
- },
127
- {
128
- provide: 'LegacyOrderRepository',
129
- useFactory: (options) => {
130
- return new LegacyOrderFirestoreRepository(options);
131
- },
132
- deps: ['FirestoreOptions'],
133
- },
134
- {
135
- provide: 'ShopMenuRepository',
136
- useFactory: (options) => {
137
- return new ShopMenuFirestoreRepository(options);
138
- },
139
- deps: ['FirestoreOptions'],
140
- },
141
- {
142
- provide: 'OrderRepository',
143
- useFactory: (options) => {
144
- return new OrderFirestoreRepository(options);
145
- },
146
- deps: ['FirestoreOptions'],
147
- },
148
- {
149
- provide: 'PaymentRepository',
150
- useFactory: (options) => {
151
- return new PaymentFirestoreRepository(options);
152
- },
153
- deps: ['FirestoreOptions'],
154
- },
155
- {
156
- provide: ProductFirestoreRepository,
157
- useFactory: (options) => {
158
- return new ProductFirestoreRepository(options);
159
- },
160
- deps: ['FirestoreOptions'],
161
- },
162
- {
163
- provide: 'ShopSettingsRepository',
164
- useFactory: (options) => {
165
- return new ShopSettingsFirestoreRepository(options);
166
- },
167
- deps: ['FirestoreOptions'],
168
- },
169
- {
170
- provide: 'SubscriptionPaymentRepository',
171
- useFactory: (options, subscriptionRepository) => {
172
- return new SubscriptionPaymentFirestoreRepository(options, subscriptionRepository);
173
- },
174
- deps: ['FirestoreOptions', 'SubscriptionRepository'],
175
- },
176
- {
177
- provide: 'SubscriptionPlanRepository',
178
- useFactory: (options) => {
179
- return new SubscriptionPlanFirestoreRepository(options);
180
- },
181
- deps: ['FirestoreOptions'],
182
- },
183
- {
184
- provide: 'SubscriptionProductRepository',
185
- useFactory: (options) => {
186
- return new SubscriptionProductFirestoreRepository(options);
187
- },
188
- deps: ['FirestoreOptions'],
189
- },
190
- {
191
- provide: 'SubscriptionRepository',
192
- useFactory: (options) => {
193
- return new SubscriptionFirestoreRepository(options);
194
- },
195
- deps: ['FirestoreOptions'],
196
- },
197
- {
198
- provide: 'UserRepository',
199
- useFactory: (options) => {
200
- return new UserFirestoreRepository(options);
201
- },
202
- deps: ['FirestoreOptions'],
203
- },
204
- {
205
- provide: 'UserAddressRepository',
206
- useFactory: (options, userRepository) => {
207
- return new UserAddressFirestoreRepository(options, userRepository);
208
- },
209
- deps: ['FirestoreOptions', 'UserRepository'],
210
- },
211
- {
212
- provide: 'UserPaymentMethodRepository',
213
- useFactory: (options, userRepository) => {
214
- return new UserPaymentMethodFirestoreRepository(options, userRepository);
215
- },
216
- deps: ['FirestoreOptions', 'UserRepository'],
217
- },
218
- {
219
- provide: 'SubscriptionMaterializationRepository',
220
- useFactory: (options) => {
221
- return new SubscriptionMaterializationFirestoreRepository(options);
222
- },
223
- deps: ['FirestoreOptions'],
224
- },
225
- {
226
- provide: ProductVariantFirestoreRepository,
227
- useFactory: (options, productRepository) => {
228
- return new ProductVariantFirestoreRepository(options, productRepository);
229
- },
230
- deps: ['FirestoreOptions', ProductFirestoreRepository],
231
- },
232
- ], imports: [AngularElasticSeachModule,
233
- provideFirebaseApp((injector) => {
234
- const appName = injector.get(FIREBASE_APP_NAME);
235
- return appName
236
- ? initializeApp(injector.get(FIREBASE_OPTIONS), appName)
237
- : initializeApp(injector.get(FIREBASE_OPTIONS));
238
- }),
239
- provideFirestore((injector) => {
240
- if (!MobileOperationSystemCheckerHelper.isAppleDevice())
241
- return getFirestore();
242
- const firestore = initializeFirestore(injector.get(FirebaseApp), { experimentalForceLongPolling: true });
243
- enableIndexedDbPersistence(firestore).catch(console.error);
244
- return firestore;
245
- })] });
246
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: AngularFirestoreModule, decorators: [{
247
- type: NgModule,
248
- args: [{
249
- imports: [
250
- AngularElasticSeachModule,
251
- provideFirebaseApp((injector) => {
252
- const appName = injector.get(FIREBASE_APP_NAME);
253
- return appName
254
- ? initializeApp(injector.get(FIREBASE_OPTIONS), appName)
255
- : initializeApp(injector.get(FIREBASE_OPTIONS));
256
- }),
257
- provideFirestore((injector) => {
258
- if (!MobileOperationSystemCheckerHelper.isAppleDevice())
259
- return getFirestore();
260
- const firestore = initializeFirestore(injector.get(FirebaseApp), { experimentalForceLongPolling: true });
261
- enableIndexedDbPersistence(firestore).catch(console.error);
262
- return firestore;
263
- }),
264
- ],
265
- providers: [
266
- {
267
- provide: 'FirestoreOptions',
268
- useFactory: (firestore, platformId) => ({
269
- firestore,
270
- interceptors: {
271
- request: (request) => {
272
- if (isPlatformBrowser(platformId))
273
- return request;
274
- const interval = setInterval(() => { }, 100);
275
- request.interval = interval;
276
- return request;
277
- },
278
- response: (response, request) => {
279
- if (isPlatformBrowser(platformId))
280
- return response;
281
- clearInterval(request.interval);
282
- return response;
283
- },
284
- },
285
- }),
286
- deps: [Firestore, PLATFORM_ID],
287
- },
288
- {
289
- provide: 'BeautyProfileRepository',
290
- useFactory: (config, userRepository) => {
291
- return new UserBeautyProfileFirestoreRepository(config, userRepository);
292
- },
293
- deps: ['FirestoreOptions', 'UserRepository'],
294
- },
295
- {
296
- provide: 'Buy2WinRepository',
297
- useFactory: (options) => {
298
- return new Buy2WinFirestoreRepository(options);
299
- },
300
- deps: ['FirestoreOptions'],
301
- },
302
- {
303
- provide: CategoryFirestoreRepository,
304
- useFactory: (options) => {
305
- return new CategoryFirestoreRepository(options);
306
- },
307
- deps: ['FirestoreOptions'],
308
- },
309
- {
310
- provide: 'CheckoutRepository',
311
- useFactory: (options) => {
312
- return new CheckoutFirestoreRepository(options);
313
- },
314
- deps: ['FirestoreOptions'],
315
- },
316
- {
317
- provide: 'CheckoutSubscriptionRepository',
318
- useFactory: (options) => {
319
- return new CheckoutSubscriptionFirestoreRepository(options);
320
- },
321
- deps: ['FirestoreOptions'],
322
- },
323
- {
324
- provide: 'CouponRepository',
325
- useFactory: (options) => {
326
- return new CouponFirestoreRepository(options);
327
- },
328
- deps: ['FirestoreOptions'],
329
- },
330
- {
331
- provide: 'CampaignHashtagRepository',
332
- useFactory: (options) => {
333
- return new CampaignHashtagFirestoreRepository(options);
334
- },
335
- deps: ['FirestoreOptions'],
336
- },
337
- {
338
- provide: 'CampaignDashboardRepository',
339
- useFactory: (options) => {
340
- return new CampaignDashboardFirestoreRepository(options);
341
- },
342
- deps: ['FirestoreOptions'],
343
- },
344
- {
345
- provide: 'EditionRepository',
346
- useFactory: (options, subscriptionRepository) => {
347
- return new SubscriptionEditionFirestoreRepository(options, subscriptionRepository);
348
- },
349
- deps: ['FirestoreOptions', 'SubscriptionRepository'],
350
- },
351
- {
352
- provide: 'HomeRepository',
353
- useFactory: (options) => {
354
- return new HomeFirestoreRepository(options);
355
- },
356
- deps: ['FirestoreOptions'],
357
- },
358
- {
359
- provide: 'LeadRepository',
360
- useFactory: (options) => {
361
- return new LeadFirestoreRepository(options);
362
- },
363
- deps: ['FirestoreOptions'],
364
- },
365
- {
366
- provide: 'LegacyOrderRepository',
367
- useFactory: (options) => {
368
- return new LegacyOrderFirestoreRepository(options);
369
- },
370
- deps: ['FirestoreOptions'],
371
- },
372
- {
373
- provide: 'ShopMenuRepository',
374
- useFactory: (options) => {
375
- return new ShopMenuFirestoreRepository(options);
376
- },
377
- deps: ['FirestoreOptions'],
378
- },
379
- {
380
- provide: 'OrderRepository',
381
- useFactory: (options) => {
382
- return new OrderFirestoreRepository(options);
383
- },
384
- deps: ['FirestoreOptions'],
385
- },
386
- {
387
- provide: 'PaymentRepository',
388
- useFactory: (options) => {
389
- return new PaymentFirestoreRepository(options);
390
- },
391
- deps: ['FirestoreOptions'],
392
- },
393
- {
394
- provide: ProductFirestoreRepository,
395
- useFactory: (options) => {
396
- return new ProductFirestoreRepository(options);
397
- },
398
- deps: ['FirestoreOptions'],
399
- },
400
- {
401
- provide: 'ShopSettingsRepository',
402
- useFactory: (options) => {
403
- return new ShopSettingsFirestoreRepository(options);
404
- },
405
- deps: ['FirestoreOptions'],
406
- },
407
- {
408
- provide: 'SubscriptionPaymentRepository',
409
- useFactory: (options, subscriptionRepository) => {
410
- return new SubscriptionPaymentFirestoreRepository(options, subscriptionRepository);
411
- },
412
- deps: ['FirestoreOptions', 'SubscriptionRepository'],
413
- },
414
- {
415
- provide: 'SubscriptionPlanRepository',
416
- useFactory: (options) => {
417
- return new SubscriptionPlanFirestoreRepository(options);
418
- },
419
- deps: ['FirestoreOptions'],
420
- },
421
- {
422
- provide: 'SubscriptionProductRepository',
423
- useFactory: (options) => {
424
- return new SubscriptionProductFirestoreRepository(options);
425
- },
426
- deps: ['FirestoreOptions'],
427
- },
428
- {
429
- provide: 'SubscriptionRepository',
430
- useFactory: (options) => {
431
- return new SubscriptionFirestoreRepository(options);
432
- },
433
- deps: ['FirestoreOptions'],
434
- },
435
- {
436
- provide: 'UserRepository',
437
- useFactory: (options) => {
438
- return new UserFirestoreRepository(options);
439
- },
440
- deps: ['FirestoreOptions'],
441
- },
442
- {
443
- provide: 'UserAddressRepository',
444
- useFactory: (options, userRepository) => {
445
- return new UserAddressFirestoreRepository(options, userRepository);
446
- },
447
- deps: ['FirestoreOptions', 'UserRepository'],
448
- },
449
- {
450
- provide: 'UserPaymentMethodRepository',
451
- useFactory: (options, userRepository) => {
452
- return new UserPaymentMethodFirestoreRepository(options, userRepository);
453
- },
454
- deps: ['FirestoreOptions', 'UserRepository'],
455
- },
456
- {
457
- provide: 'SubscriptionMaterializationRepository',
458
- useFactory: (options) => {
459
- return new SubscriptionMaterializationFirestoreRepository(options);
460
- },
461
- deps: ['FirestoreOptions'],
462
- },
463
- {
464
- provide: ProductVariantFirestoreRepository,
465
- useFactory: (options, productRepository) => {
466
- return new ProductVariantFirestoreRepository(options, productRepository);
467
- },
468
- deps: ['FirestoreOptions', ProductFirestoreRepository],
469
- },
470
- ],
471
- }]
472
- }] });
473
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5ndWxhci1maXJlc3RvcmUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvY29ubmVjdC1hbmd1bGFyL3NyYy9hbmd1bGFyLWZpcmVzdG9yZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDbkQsT0FBTyxFQUFpQyxRQUFRLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ3BGLE9BQU8sRUFBRSxXQUFXLEVBQW1CLGtCQUFrQixFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDcEYsT0FBTyxFQUNMLFNBQVMsRUFDVCwwQkFBMEIsRUFDMUIsWUFBWSxFQUNaLG1CQUFtQixFQUNuQixnQkFBZ0IsR0FDakIsTUFBTSx5QkFBeUIsQ0FBQTtBQUNoQyxPQUFPLEVBR0wsMEJBQTBCLEVBRTFCLG9DQUFvQyxFQUVwQyxrQ0FBa0MsRUFFbEMsMkJBQTJCLEVBRTNCLDJCQUEyQixFQUUzQix1Q0FBdUMsRUFFdkMseUJBQXlCLEVBS3pCLHVCQUF1QixFQUV2Qix1QkFBdUIsRUFFdkIsOEJBQThCLEVBRTlCLHdCQUF3QixFQUV4QiwwQkFBMEIsRUFFMUIsMEJBQTBCLEVBRTFCLGlDQUFpQyxFQUNqQywyQkFBMkIsRUFFM0IsK0JBQStCLEVBRS9CLHNDQUFzQyxFQUN0QywrQkFBK0IsRUFDL0IsOENBQThDLEVBRTlDLHNDQUFzQyxFQUV0QyxtQ0FBbUMsRUFFbkMsc0NBQXNDLEVBR3RDLDhCQUE4QixFQUU5QixvQ0FBb0MsRUFDcEMsdUJBQXVCLEVBQ3ZCLG9DQUFvQyxHQUlyQyxNQUFNLG1CQUFtQixDQUFBO0FBQzFCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFFNUMsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0saUNBQWlDLENBQUE7QUFDM0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxpQkFB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MEJBQTBCLENBQUM7eUJBQ3ZEO3FCQUNGO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQgeyBJbmplY3RvciwgTW9kdWxlV2l0aFByb3ZpZGVycywgTmdNb2R1bGUsIFBMQVRGT1JNX0lEIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IEZpcmViYXNlQXBwLCBGaXJlYmFzZU9wdGlvbnMsIHByb3ZpZGVGaXJlYmFzZUFwcCB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUvYXBwJ1xuaW1wb3J0IHtcbiAgRmlyZXN0b3JlLFxuICBlbmFibGVJbmRleGVkRGJQZXJzaXN0ZW5jZSxcbiAgZ2V0RmlyZXN0b3JlLFxuICBpbml0aWFsaXplRmlyZXN0b3JlLFxuICBwcm92aWRlRmlyZXN0b3JlLFxufSBmcm9tICdAYW5ndWxhci9maXJlL2ZpcmVzdG9yZSdcbmltcG9ydCB7XG4gIEF4aW9zRWxhc3RpY1NlYXJjaENvbmZpZyxcbiAgQmVhdXR5UHJvZmlsZVJlcG9zaXRvcnksXG4gIEJ1eTJXaW5GaXJlc3RvcmVSZXBvc2l0b3J5LFxuICBCdXkyV2luUmVwb3NpdG9yeSxcbiAgQ2FtcGFpZ25EYXNoYm9hcmRGaXJlc3RvcmVSZXBvc2l0b3J5LFxuICBDYW1wYWlnbkRhc2hib2FyZFJlcG9zaXRvcnksXG4gIENhbXBhaWduSGFzaHRhZ0ZpcmVzdG9yZVJlcG9zaXRvcnksXG4gIENhbXBhaWduSGFzaHRhZ1JlcG9zaXRvcnksXG4gIENhdGVnb3J5RmlyZXN0b3JlUmVwb3NpdG9yeSxcbiAgQ2F0ZWdvcnlSZXBvc2l0b3J5LFxuICBDaGVja291dEZpcmVzdG9yZVJlcG9zaXRvcnksXG4gIENoZWNrb3V0UmVwb3NpdG9yeSxcbiAgQ2hlY2tvdXRTdWJzY3JpcHRpb25GaXJlc3RvcmVSZXBvc2l0b3J5LFxuICBDaGVja291dFN1YnNjcmlwdGlvblJlcG9zaXRvcnksXG4gIENvdXBvbkZpcmVzdG9yZVJlcG9zaXRvcnksXG4gIENvdXBvblJlcG9zaXRvcnksXG4gIEVkaXRpb25SZXBvc2l0b3J5LFxuICBGaXJlc3RvcmVDb25zdHJ1Y3RvclBhcmFtcyxcbiAgRmlyZXN0b3JlSW50ZXJ0Y2VwdG9yUmVxdWVzdFBhcmFtcyxcbiAgSG9tZUZpcmVzdG9yZVJlcG9zaXRvcnksXG4gIEhvbWVSZXBvc2l0b3J5LFxuICBMZWFkRmlyZXN0b3JlUmVwb3NpdG9yeSxcbiAgTGVhZFJlcG9zaXRvcnksXG4gIExlZ2FjeU9yZGVyRmlyZXN0b3JlUmVwb3NpdG9yeSxcbiAgTGVnYWN5T3JkZXJSZXBvc2l0b3J5LFxuICBPcmRlckZpcmVzdG9yZVJlcG9zaXRvcnksXG4gIE9yZGVyUmVwb3NpdG9yeSxcbiAgUGF5bWVudEZpcmVzdG9yZVJlcG9zaXRvcnksXG4gIFBheW1lbnRSZXBvc2l0b3J5LFxuICBQcm9kdWN0RmlyZXN0b3JlUmVwb3NpdG9yeSxcbiAgUHJvZHVjdFJlcG9zaXRvcnksXG4gIFByb2R1Y3RWYXJpYW50RmlyZXN0b3JlUmVwb3NpdG9yeSxcbiAgU2hvcE1lbnVGaXJlc3RvcmVSZXBvc2l0b3J5LFxuICBTaG9wTWVudVJlcG9zaXRvcnksXG4gIFNob3BTZXR0aW5nc0ZpcmVzdG9yZVJlcG9zaXRvcnksXG4gIFNob3BTZXR0aW5nc1JlcG9zaXRvcnksXG4gIFN1YnNjcmlwdGlvbkVkaXRpb25GaXJlc3RvcmVSZXBvc2l0b3J5LFxuICBTdWJzY3JpcHRpb25GaXJlc3RvcmVSZXBvc2l0b3J5LFxuICBTdWJzY3JpcHRpb25NYXRlcmlhbGl6YXRpb25GaXJlc3RvcmVSZXBvc2l0b3J5LFxuICBTdWJzY3JpcHRpb25NYXRlcmlhbGl6YXRpb25SZXBvc2l0b3J5LFxuICBTdWJzY3JpcHRpb25QYXltZW50RmlyZXN0b3JlUmVwb3NpdG9yeSxcbiAgU3Vic2NyaXB0aW9uUGF5bWVudFJlcG9zaXRvcnksXG4gIFN1YnNjcmlwdGlvblBsYW5GaXJlc3RvcmVSZXBvc2l0b3J5LFxuICBTdWJzY3JpcHRpb25QbGFuUmVwb3NpdG9yeSxcbiAgU3Vic2NyaXB0aW9uUHJvZHVjdEZpcmVzdG9yZVJlcG9zaXRvcnksXG4gIFN1YnNjcmlwdGlvblByb2R1Y3RSZXBvc2l0b3J5LFxuICBTdWJzY3JpcHRpb25SZXBvc2l0b3J5LFxuICBVc2VyQWRkcmVzc0ZpcmVzdG9yZVJlcG9zaXRvcnksXG4gIFVzZXJBZGRyZXNzUmVwb3NpdG9yeSxcbiAgVXNlckJlYXV0eVByb2ZpbGVGaXJlc3RvcmVSZXBvc2l0b3J5LFxuICBVc2VyRmlyZXN0b3JlUmVwb3NpdG9yeSxcbiAgVXNlclBheW1lbnRNZXRob2RGaXJlc3RvcmVSZXBvc2l0b3J5LFxuICBVc2VyUGF5bWVudE1ldGhvZFJlcG9zaXRvcnksXG4gIFVzZXJSZXBvc2l0b3J5LFxuICBWYXJpYW50UmVwb3NpdG9yeSxcbn0gZnJvbSAnQGluZnJhYjRhL2Nvbm5lY3QnXG5pbXBvcnQgeyBpbml0aWFsaXplQXBwIH0gZnJvbSAnZmlyZWJhc2UvYXBwJ1xuXG5pbXBvcnQgeyBBbmd1bGFyRWxhc3RpY1NlYWNoTW9kdWxlIH0gZnJvbSAnLi9hbmd1bGFyLWVsYXN0aWMtc2VhcmNoLm1vZHVsZSdcbmltcG9ydCB7IEVTX0NPTkZJRywgRklSRUJBU0VfQVBQX05BTUUsIEZJUkVCQVNFX09QVElPTlMgfSBmcm9tICcuL2NvbnN0cydcbmltcG9ydCB7IE1vYmlsZU9wZXJhdGlvblN5c3RlbUNoZWNrZXJIZWxwZXIgfSBmcm9tICcuL2hlbHBlcnMnXG5pbXBvcnQgeyBGaXJlYmFzZUFwcENvbmZpZyB9IGZyb20gJy4vdHlwZXMnXG5cbmV4cG9ydCB0eXBlIEZpcmVzdG9yZU9wdGlvbnMgPSBQaWNrPEZpcmVzdG9yZUNvbnN0cnVjdG9yUGFyYW1zPGFueT4sICdmaXJlc3RvcmUnIHwgJ2ludGVyY2VwdG9ycyc+XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBBbmd1bGFyRWxhc3RpY1NlYWNoTW9kdWxlLFxuICAgIHByb3ZpZGVGaXJlYmFzZUFwcCgoaW5qZWN0b3I6IEluamVjdG9yKSA9PiB7XG4gICAgICBjb25zdCBhcHBOYW1lID0gaW5qZWN0b3IuZ2V0KEZJUkVCQVNFX0FQUF9OQU1FKVxuXG4gICAgICByZXR1cm4gYXBwTmFtZVxuICAgICAgICA/IGluaXRpYWxpemVBcHAoaW5qZWN0b3IuZ2V0KEZJUkVCQVNFX09QVElPTlMpLCBhcHBOYW1lKVxuICAgICAgICA6IGluaXRpYWxpemVBcHAoaW5qZWN0b3IuZ2V0KEZJUkVCQVNFX09QVElPTlMpKVxuICAgIH0pLFxuICAgIHByb3ZpZGVGaXJlc3RvcmUoKGluamVjdG9yOiBJbmplY3RvcikgPT4ge1xuICAgICAgaWYgKCFNb2JpbGVPcGVyYXRpb25TeXN0ZW1DaGVja2VySGVscGVyLmlzQXBwbGVEZXZpY2UoKSkgcmV0dXJuIGdldEZpcmVzdG9yZSgpXG5cbiAgICAgIGNvbnN0IGZpcmVzdG9yZSA9IGluaXRpYWxpemVGaXJlc3RvcmUoaW5qZWN0b3IuZ2V0KEZpcmViYXNlQXBwKSwgeyBleHBlcmltZW50YWxGb3JjZUxvbmdQb2xsaW5nOiB0cnVlIH0pXG5cbiAgICAgIGVuYWJsZUluZGV4ZWREYlBlcnNpc3RlbmNlKGZpcmVzdG9yZSkuY2F0Y2goY29uc29sZS5lcnJvcilcblxuICAgICAgcmV0dXJuIGZpcmVzdG9yZVxuICAgIH0pLFxuICBdLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiAnRmlyZXN0b3JlT3B0aW9ucycsXG4gICAgICB1c2VGYWN0b3J5OiAoZmlyZXN0b3JlOiBGaXJlc3RvcmUsIHBsYXRmb3JtSWQ6IHN0cmluZyk6IEZpcmVzdG9yZU9wdGlvbnMgPT4gKHtcbiAgICAgICAgZmlyZXN0b3JlLFxuICAgICAgICBpbnRlcmNlcHRvcnM6IHtcbiAgICAgICAgICByZXF1ZXN0OiAocmVxdWVzdDogRmlyZXN0b3JlSW50ZXJ0Y2VwdG9yUmVxdWVzdFBhcmFtczxhbnk+ICYgeyBpbnRlcnZhbDogTm9kZUpTLlRpbWVvdXQgfSkgPT4ge1xuICAgICAgICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHBsYXRmb3JtSWQpKSByZXR1cm4gcmVxdWVzdFxuXG4gICAgICAgICAgICBjb25zdCBpbnRlcnZhbCA9IHNldEludGVydmFsKCgpID0+IHt9LCAxMDApXG5cbiAgICAgICAgICAgIHJlcXVlc3QuaW50ZXJ2YWwgPSBpbnRlcnZhbFxuXG4gICAgICAgICAgICByZXR1cm4gcmVxdWVzdFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVzcG9uc2U6IChcbiAgICAgICAgICAgIHJlc3BvbnNlOiBhbnksXG4gICAgICAgICAgICByZXF1ZXN0OiBGaXJlc3RvcmVJbnRlcnRjZXB0b3JSZXF1ZXN0UGFyYW1zPGFueT4gJiB7IGludGVydmFsOiBOb2RlSlMuVGltZW91dCB9LFxuICAgICAgICAgICkgPT4ge1xuICAgICAgICAgICAgaWYgKGlzUGxhdGZvcm1Ccm93c2VyKHBsYXRmb3JtSWQpKSByZXR1cm4gcmVzcG9uc2VcblxuICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChyZXF1ZXN0LmludGVydmFsKVxuXG4gICAgICAgICAgICByZXR1cm4gcmVzcG9uc2VcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSksXG4gICAgICBkZXBzOiBbRmlyZXN0b3JlLCBQTEFURk9STV9JRF0sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiAnQmVhdXR5UHJvZmlsZVJlcG9zaXRvcnknLFxuICAgICAgdXNlRmFjdG9yeTogKGNvbmZpZzogRmlyZXN0b3JlT3B0aW9ucywgdXNlclJlcG9zaXRvcnk6IFVzZXJGaXJlc3RvcmVSZXBvc2l0b3J5KTogQmVhdXR5UHJvZmlsZVJlcG9zaXRvcnkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IFVzZXJCZWF1dHlQcm9maWxlRmlyZXN0b3JlUmVwb3NpdG9yeShjb25maWcsIHVzZXJSZXBvc2l0b3J5KVxuICAgICAgfSxcbiAgICAgIGRlcHM6IFsnRmlyZXN0b3JlT3B0aW9ucycsICdVc2VyUmVwb3NpdG9yeSddLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogJ0J1eTJXaW5SZXBvc2l0b3J5JyxcbiAgICAgIHVzZUZhY3Rvcnk6IChvcHRpb25zOiBGaXJlc3RvcmVPcHRpb25zKTogQnV5MldpblJlcG9zaXRvcnkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IEJ1eTJXaW5GaXJlc3RvcmVSZXBvc2l0b3J5KG9wdGlvbnMpXG4gICAgICB9LFxuICAgICAgZGVwczogWydGaXJlc3RvcmVPcHRpb25zJ10sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBDYXRlZ29yeUZpcmVzdG9yZVJlcG9zaXRvcnksXG4gICAgICB1c2VGYWN0b3J5OiAob3B0aW9uczogRmlyZXN0b3JlT3B0aW9ucyk6IENhdGVnb3J5UmVwb3NpdG9yeSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgQ2F0ZWdvcnlGaXJlc3RvcmVSZXBvc2l0b3J5KG9wdGlvbnMpXG4gICAgICB9LFxuICAgICAgZGVwczogWydGaXJlc3RvcmVPcHRpb25zJ10sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiAnQ2hlY2tvdXRSZXBvc2l0b3J5JyxcbiAgICAgIHVzZUZhY3Rvcnk6IChvcHRpb25zOiBGaXJlc3RvcmVPcHRpb25zKTogQ2hlY2tvdXRSZXBvc2l0b3J5ID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBDaGVja291dEZpcmVzdG9yZVJlcG9zaXRvcnkob3B0aW9ucylcbiAgICAgIH0sXG4gICAgICBkZXBzOiBbJ0ZpcmVzdG9yZU9wdGlvbnMnXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6ICdDaGVja291dFN1YnNjcmlwdGlvblJlcG9zaXRvcnknLFxuICAgICAgdXNlRmFjdG9yeTogKG9wdGlvbnM6IEZpcmVzdG9yZU9wdGlvbnMpOiBDaGVja291dFN1YnNjcmlwdGlvblJlcG9zaXRvcnkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IENoZWNrb3V0U3Vic2NyaXB0aW9uRmlyZXN0b3JlUmVwb3NpdG9yeShvcHRpb25zKVxuICAgICAgfSxcbiAgICAgIGRlcHM6IFsnRmlyZXN0b3JlT3B0aW9ucyddLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogJ0NvdXBvblJlcG9zaXRvcnknLFxuICAgICAgdXNlRmFjdG9yeTogKG9wdGlvbnM6IEZpcmVzdG9yZU9wdGlvbnMpOiBDb3Vwb25SZXBvc2l0b3J5ID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBDb3Vwb25GaXJlc3RvcmVSZXBvc2l0b3J5KG9wdGlvbnMpXG4gICAgICB9LFxuICAgICAgZGVwczogWydGaXJlc3RvcmVPcHRpb25zJ10sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiAnQ2FtcGFpZ25IYXNodGFnUmVwb3NpdG9yeScsXG4gICAgICB1c2VGYWN0b3J5OiAob3B0aW9uczogRmlyZXN0b3JlT3B0aW9ucyk6IENhbXBhaWduSGFzaHRhZ1JlcG9zaXRvcnkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IENhbXBhaWduSGFzaHRhZ0ZpcmVzdG9yZVJlcG9zaXRvcnkob3B0aW9ucylcbiAgICAgIH0sXG4gICAgICBkZXBzOiBbJ0ZpcmVzdG9yZU9wdGlvbnMnXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6ICdDYW1wYWlnbkRhc2hib2FyZFJlcG9zaXRvcnknLFxuICAgICAgdXNlRmFjdG9yeTogKG9wdGlvbnM6IEZpcmVzdG9yZU9wdGlvbnMpOiBDYW1wYWlnbkRhc2hib2FyZFJlcG9zaXRvcnkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IENhbXBhaWduRGFzaGJvYXJkRmlyZXN0b3JlUmVwb3NpdG9yeShvcHRpb25zKVxuICAgICAgfSxcbiAgICAgIGRlcHM6IFsnRmlyZXN0b3JlT3B0aW9ucyddLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogJ0VkaXRpb25SZXBvc2l0b3J5JyxcbiAgICAgIHVzZUZhY3Rvcnk6IChcbiAgICAgICAgb3B0aW9uczogRmlyZXN0b3JlT3B0aW9ucyxcbiAgICAgICAgc3Vic2NyaXB0aW9uUmVwb3NpdG9yeTogU3Vic2NyaXB0aW9uRmlyZXN0b3JlUmVwb3NpdG9yeSxcbiAgICAgICk6IEVkaXRpb25SZXBvc2l0b3J5ID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBTdWJzY3JpcHRpb25FZGl0aW9uRmlyZXN0b3JlUmVwb3NpdG9yeShvcHRpb25zLCBzdWJzY3JpcHRpb25SZXBvc2l0b3J5KVxuICAgICAgfSxcbiAgICAgIGRlcHM6IFsnRmlyZXN0b3JlT3B0aW9ucycsICdTdWJzY3JpcHRpb25SZXBvc2l0b3J5J10sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiAnSG9tZVJlcG9zaXRvcnknLFxuICAgICAgdXNlRmFjdG9yeTogKG9wdGlvbnM6IEZpcmVzdG9yZU9wdGlvbnMpOiBIb21lUmVwb3NpdG9yeSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgSG9tZUZpcmVzdG9yZVJlcG9zaXRvcnkob3B0aW9ucylcbiAgICAgIH0sXG4gICAgICBkZXBzOiBbJ0ZpcmVzdG9yZU9wdGlvbnMnXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6ICdMZWFkUmVwb3NpdG9yeScsXG4gICAgICB1c2VGYWN0b3J5OiAob3B0aW9uczogRmlyZXN0b3JlT3B0aW9ucyk6IExlYWRSZXBvc2l0b3J5ID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBMZWFkRmlyZXN0b3JlUmVwb3NpdG9yeShvcHRpb25zKVxuICAgICAgfSxcbiAgICAgIGRlcHM6IFsnRmlyZXN0b3JlT3B0aW9ucyddLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogJ0xlZ2FjeU9yZGVyUmVwb3NpdG9yeScsXG4gICAgICB1c2VGYWN0b3J5OiAob3B0aW9uczogRmlyZXN0b3JlT3B0aW9ucyk6IExlZ2FjeU9yZGVyUmVwb3NpdG9yeSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgTGVnYWN5T3JkZXJGaXJlc3RvcmVSZXBvc2l0b3J5KG9wdGlvbnMpXG4gICAgICB9LFxuICAgICAgZGVwczogWydGaXJlc3RvcmVPcHRpb25zJ10sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiAnU2hvcE1lbnVSZXBvc2l0b3J5JyxcbiAgICAgIHVzZUZhY3Rvcnk6IChvcHRpb25zOiBGaXJlc3RvcmVPcHRpb25zKTogU2hvcE1lbnVSZXBvc2l0b3J5ID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBTaG9wTWVudUZpcmVzdG9yZVJlcG9zaXRvcnkob3B0aW9ucylcbiAgICAgIH0sXG4gICAgICBkZXBzOiBbJ0ZpcmVzdG9yZU9wdGlvbnMnXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6ICdPcmRlclJlcG9zaXRvcnknLFxuICAgICAgdXNlRmFjdG9yeTogKG9wdGlvbnM6IEZpcmVzdG9yZU9wdGlvbnMpOiBPcmRlclJlcG9zaXRvcnkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IE9yZGVyRmlyZXN0b3JlUmVwb3NpdG9yeShvcHRpb25zKVxuICAgICAgfSxcbiAgICAgIGRlcHM6IFsnRmlyZXN0b3JlT3B0aW9ucyddLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogJ1BheW1lbnRSZXBvc2l0b3J5JyxcbiAgICAgIHVzZUZhY3Rvcnk6IChvcHRpb25zOiBGaXJlc3RvcmVPcHRpb25zKTogUGF5bWVudFJlcG9zaXRvcnkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IFBheW1lbnRGaXJlc3RvcmVSZXBvc2l0b3J5KG9wdGlvbnMpXG4gICAgICB9LFxuICAgICAgZGVwczogWydGaXJlc3RvcmVPcHRpb25zJ10sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBQcm9kdWN0RmlyZXN0b3JlUmVwb3NpdG9yeSxcbiAgICAgIHVzZUZhY3Rvcnk6IChvcHRpb25zOiBGaXJlc3RvcmVPcHRpb25zKTogUHJvZHVjdFJlcG9zaXRvcnkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb2R1Y3RGaXJlc3RvcmVSZXBvc2l0b3J5KG9wdGlvbnMpXG4gICAgICB9LFxuICAgICAgZGVwczogWydGaXJlc3RvcmVPcHRpb25zJ10sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiAnU2hvcFNldHRpbmdzUmVwb3NpdG9yeScsXG4gICAgICB1c2VGYWN0b3J5OiAob3B0aW9uczogRmlyZXN0b3JlT3B0aW9ucyk6IFNob3BTZXR0aW5nc1JlcG9zaXRvcnkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IFNob3BTZXR0aW5nc0ZpcmVzdG9yZVJlcG9zaXRvcnkob3B0aW9ucylcbiAgICAgIH0sXG4gICAgICBkZXBzOiBbJ0ZpcmVzdG9yZU9wdGlvbnMnXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6ICdTdWJzY3JpcHRpb25QYXltZW50UmVwb3NpdG9yeScsXG4gICAgICB1c2VGYWN0b3J5OiAoXG4gICAgICAgIG9wdGlvbnM6IEZpcmVzdG9yZU9wdGlvbnMsXG4gICAgICAgIHN1YnNjcmlwdGlvblJlcG9zaXRvcnk6IFN1YnNjcmlwdGlvbkZpcmVzdG9yZVJlcG9zaXRvcnksXG4gICAgICApOiBTdWJzY3JpcHRpb25QYXltZW50UmVwb3NpdG9yeSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgU3Vic2NyaXB0aW9uUGF5bWVudEZpcmVzdG9yZVJlcG9zaXRvcnkob3B0aW9ucywgc3Vic2NyaXB0aW9uUmVwb3NpdG9yeSlcbiAgICAgIH0sXG4gICAgICBkZXBzOiBbJ0ZpcmVzdG9yZU9wdGlvbnMnLCAnU3Vic2NyaXB0aW9uUmVwb3NpdG9yeSddLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogJ1N1YnNjcmlwdGlvblBsYW5SZXBvc2l0b3J5JyxcbiAgICAgIHVzZUZhY3Rvcnk6IChvcHRpb25zOiBGaXJlc3RvcmVPcHRpb25zKTogU3Vic2NyaXB0aW9uUGxhblJlcG9zaXRvcnkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IFN1YnNjcmlwdGlvblBsYW5GaXJlc3RvcmVSZXBvc2l0b3J5KG9wdGlvbnMpXG4gICAgICB9LFxuICAgICAgZGVwczogWydGaXJlc3RvcmVPcHRpb25zJ10sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiAnU3Vic2NyaXB0aW9uUHJvZHVjdFJlcG9zaXRvcnknLFxuICAgICAgdXNlRmFjdG9yeTogKG9wdGlvbnM6IEZpcmVzdG9yZU9wdGlvbnMpOiBTdWJzY3JpcHRpb25Qcm9kdWN0UmVwb3NpdG9yeSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgU3Vic2NyaXB0aW9uUHJvZHVjdEZpcmVzdG9yZVJlcG9zaXRvcnkob3B0aW9ucylcbiAgICAgIH0sXG4gICAgICBkZXBzOiBbJ0ZpcmVzdG9yZU9wdGlvbnMnXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6ICdTdWJzY3JpcHRpb25SZXBvc2l0b3J5JyxcbiAgICAgIHVzZUZhY3Rvcnk6IChvcHRpb25zOiBGaXJlc3RvcmVPcHRpb25zKTogU3Vic2NyaXB0aW9uUmVwb3NpdG9yeSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgU3Vic2NyaXB0aW9uRmlyZXN0b3JlUmVwb3NpdG9yeShvcHRpb25zKVxuICAgICAgfSxcbiAgICAgIGRlcHM6IFsnRmlyZXN0b3JlT3B0aW9ucyddLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogJ1VzZXJSZXBvc2l0b3J5JyxcbiAgICAgIHVzZUZhY3Rvcnk6IChvcHRpb25zOiBGaXJlc3RvcmVPcHRpb25zKTogVXNlclJlcG9zaXRvcnkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IFVzZXJGaXJlc3RvcmVSZXBvc2l0b3J5KG9wdGlvbnMpXG4gICAgICB9LFxuICAgICAgZGVwczogWydGaXJlc3RvcmVPcHRpb25zJ10sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiAnVXNlckFkZHJlc3NSZXBvc2l0b3J5JyxcbiAgICAgIHVzZUZhY3Rvcnk6IChvcHRpb25zOiBGaXJlc3RvcmVPcHRpb25zLCB1c2VyUmVwb3NpdG9yeTogVXNlckZpcmVzdG9yZVJlcG9zaXRvcnkpOiBVc2VyQWRkcmVzc1JlcG9zaXRvcnkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IFVzZXJBZGRyZXNzRmlyZXN0b3JlUmVwb3NpdG9yeShvcHRpb25zLCB1c2VyUmVwb3NpdG9yeSlcbiAgICAgIH0sXG4gICAgICBkZXBzOiBbJ0ZpcmVzdG9yZU9wdGlvbnMnLCAnVXNlclJlcG9zaXRvcnknXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6ICdVc2VyUGF5bWVudE1ldGhvZFJlcG9zaXRvcnknLFxuICAgICAgdXNlRmFjdG9yeTogKG9wdGlvbnM6IEZpcmVzdG9yZU9wdGlvbnMsIHVzZXJSZXBvc2l0b3J5OiBVc2VyRmlyZXN0b3JlUmVwb3NpdG9yeSk6IFVzZXJQYXltZW50TWV0aG9kUmVwb3NpdG9yeSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgVXNlclBheW1lbnRNZXRob2RGaXJlc3RvcmVSZXBvc2l0b3J5KG9wdGlvbnMsIHVzZXJSZXBvc2l0b3J5KVxuICAgICAgfSxcbiAgICAgIGRlcHM6IFsnRmlyZXN0b3JlT3B0aW9ucycsICdVc2VyUmVwb3NpdG9yeSddLFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogJ1N1YnNjcmlwdGlvbk1hdGVyaWFsaXphdGlvblJlcG9zaXRvcnknLFxuICAgICAgdXNlRmFjdG9yeTogKG9wdGlvbnM6IEZpcmVzdG9yZU9wdGlvbnMpOiBTdWJzY3JpcHRpb25NYXRlcmlhbGl6YXRpb25SZXBvc2l0b3J5ID0+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBTdWJzY3JpcHRpb25NYXRlcmlhbGl6YXRpb25GaXJlc3RvcmVSZXBvc2l0b3J5KG9wdGlvbnMpXG4gICAgICB9LFxuICAgICAgZGVwczogWydGaXJlc3RvcmVPcHRpb25zJ10sXG4gICAgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBQcm9kdWN0VmFyaWFudEZpcmVzdG9yZVJlcG9zaXRvcnksXG4gICAgICB1c2VGYWN0b3J5OiAob3B0aW9uczogRmlyZXN0b3JlT3B0aW9ucywgcHJvZHVjdFJlcG9zaXRvcnk6IFByb2R1Y3RGaXJlc3RvcmVSZXBvc2l0b3J5KTogVmFyaWFudFJlcG9zaXRvcnkgPT4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb2R1Y3RWYXJpYW50RmlyZXN0b3JlUmVwb3NpdG9yeShvcHRpb25zLCBwcm9kdWN0UmVwb3NpdG9yeSlcbiAgICAgIH0sXG4gICAgICBkZXBzOiBbJ0ZpcmVzdG9yZU9wdGlvbnMnLCBQcm9kdWN0RmlyZXN0b3JlUmVwb3NpdG9yeV0sXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQW5ndWxhckZpcmVzdG9yZU1vZHVsZSB7XG4gIHN0YXRpYyBpbml0aWFsaXplQXBwKFxuICAgIG9wdGlvbnM6IHtcbiAgICAgIGZpcmViYXNlOiBGaXJlYmFzZU9wdGlvbnNcbiAgICAgIGVsYXN0aWNTZWFyY2g6IEF4aW9zRWxhc3RpY1NlYXJjaENvbmZpZ1xuICAgIH0sXG4gICAgbmFtZU9yQ29uZmlnPzogc3RyaW5nIHwgRmlyZWJhc2VBcHBDb25maWcsXG4gICk6IE1vZHVsZVdpdGhQcm92aWRlcnM8QW5ndWxhckZpcmVzdG9yZU1vZHVsZT4ge1xuICAgIHJldHVybiB7XG4gICAgICBuZ01vZHVsZTogQW5ndWxhckZpcmVzdG9yZU1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7IHByb3ZpZGU6IEZJUkVCQVNFX09QVElPTlMsIHVzZVZhbHVlOiBvcHRpb25zLmZpcmViYXNlIH0sXG4gICAgICAgIHsgcHJvdmlkZTogRklSRUJBU0VfQVBQX05BTUUsIHVzZVZhbHVlOiBuYW1lT3JDb25maWcgfSxcbiAgICAgICAgeyBwcm92aWRlOiBFU19DT05GSUcsIHVzZVZhbHVlOiBvcHRpb25zLmVsYXN0aWNTZWFyY2ggfSxcbiAgICAgIF0sXG4gICAgfVxuICB9XG59XG4iXX0=