@infrab4a/connect-angular 4.3.1-beta.1 → 4.3.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.
- package/esm2022/angular-connect.module.mjs +113 -0
- package/esm2022/angular-elastic-search.module.mjs +34 -0
- package/esm2022/angular-firebase-auth.module.mjs +115 -0
- package/esm2022/angular-firestore.module.mjs +502 -0
- package/esm2022/angular-hasura-graphql.module.mjs +265 -0
- package/{esm2020 → esm2022}/services/auth.service.mjs +6 -6
- package/{esm2020 → esm2022}/services/cart.service.mjs +6 -6
- package/{esm2020 → esm2022}/services/catalog/adapters/new-category-structure.adapter.mjs +6 -6
- package/{esm2020 → esm2022}/services/catalog/adapters/old-category-structure.adapter.mjs +6 -6
- package/esm2022/services/catalog/catalog.service.mjs +174 -0
- package/{esm2020 → esm2022}/services/catalog/category.service.mjs +6 -6
- package/{esm2020 → esm2022}/services/catalog/models/category-with-tree.model.mjs +1 -1
- package/{esm2020 → esm2022}/services/catalog/wishlist.service.mjs +6 -6
- package/{esm2020 → esm2022}/services/checkout-subscription.service.mjs +6 -6
- package/{esm2020 → esm2022}/services/checkout.service.mjs +6 -6
- package/{esm2020 → esm2022}/services/coupon.service.mjs +6 -6
- package/esm2022/services/home-shop.service.mjs +125 -0
- package/{esm2020 → esm2022}/services/order.service.mjs +6 -6
- package/{esm2020 → esm2022}/services/shipping.service.mjs +6 -6
- package/{fesm2020 → fesm2022}/infrab4a-connect-angular.mjs +546 -532
- package/fesm2022/infrab4a-connect-angular.mjs.map +1 -0
- package/package.json +6 -12
- package/services/home-shop.service.d.ts +1 -0
- package/esm2020/angular-connect.module.mjs +0 -113
- package/esm2020/angular-elastic-search.module.mjs +0 -34
- package/esm2020/angular-firebase-auth.module.mjs +0 -115
- package/esm2020/angular-firestore.module.mjs +0 -502
- package/esm2020/angular-hasura-graphql.module.mjs +0 -265
- package/esm2020/services/catalog/catalog.service.mjs +0 -170
- package/esm2020/services/home-shop.service.mjs +0 -115
- package/fesm2015/infrab4a-connect-angular.mjs +0 -2350
- package/fesm2015/infrab4a-connect-angular.mjs.map +0 -1
- package/fesm2020/infrab4a-connect-angular.mjs.map +0 -1
- /package/{esm2020 → esm2022}/consts/backend-url.const.mjs +0 -0
- /package/{esm2020 → esm2022}/consts/category-structure.mjs +0 -0
- /package/{esm2020 → esm2022}/consts/default-shop.const.mjs +0 -0
- /package/{esm2020 → esm2022}/consts/es-config.const.mjs +0 -0
- /package/{esm2020 → esm2022}/consts/firebase-const.mjs +0 -0
- /package/{esm2020 → esm2022}/consts/hasura-options.const.mjs +0 -0
- /package/{esm2020 → esm2022}/consts/index.mjs +0 -0
- /package/{esm2020 → esm2022}/consts/storage-base-url.const.mjs +0 -0
- /package/{esm2020 → esm2022}/helpers/index.mjs +0 -0
- /package/{esm2020 → esm2022}/helpers/mobile-operation-system-checker.helper.mjs +0 -0
- /package/{esm2020 → esm2022}/index.mjs +0 -0
- /package/{esm2020 → esm2022}/infrab4a-connect-angular.mjs +0 -0
- /package/{esm2020 → esm2022}/services/catalog/adapters/category-structure.adapter.mjs +0 -0
- /package/{esm2020 → esm2022}/services/catalog/adapters/index.mjs +0 -0
- /package/{esm2020 → esm2022}/services/catalog/enums/index.mjs +0 -0
- /package/{esm2020 → esm2022}/services/catalog/enums/product-sorts.enum.mjs +0 -0
- /package/{esm2020 → esm2022}/services/catalog/index.mjs +0 -0
- /package/{esm2020 → esm2022}/services/catalog/models/index.mjs +0 -0
- /package/{esm2020 → esm2022}/services/catalog/types/index.mjs +0 -0
- /package/{esm2020 → esm2022}/services/catalog/types/product-sort.type.mjs +0 -0
- /package/{esm2020 → esm2022}/services/helpers/index.mjs +0 -0
- /package/{esm2020 → esm2022}/services/helpers/util.helper.mjs +0 -0
- /package/{esm2020 → esm2022}/services/index.mjs +0 -0
- /package/{esm2020 → esm2022}/services/types/index.mjs +0 -0
- /package/{esm2020 → esm2022}/services/types/required-checkout-data.type.mjs +0 -0
- /package/{esm2020 → esm2022}/services/types/required-checkout-subscription-data.type.mjs +0 -0
- /package/{esm2020 → esm2022}/services/types/shipping-methods.type.mjs +0 -0
- /package/{esm2020 → esm2022}/types/firebase-app-config.type.mjs +0 -0
- /package/{esm2020 → esm2022}/types/index.mjs +0 -0
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
import { Inject, Injectable } from '@angular/core';
|
|
2
|
-
import { Category, Product, RequiredArgumentError, Shops, Where, add, pick, } from '@infrab4a/connect';
|
|
3
|
-
import { forkJoin, from, of, throwError } from 'rxjs';
|
|
4
|
-
import { concatMap, map, tap } from 'rxjs/operators';
|
|
5
|
-
import { DEFAULT_SHOP } from '../consts';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "@infrab4a/connect";
|
|
8
|
-
export class HomeShopService {
|
|
9
|
-
get homeId() {
|
|
10
|
-
if (this.defaultShop === Shops.GLAMSHOP)
|
|
11
|
-
return 'glamshop';
|
|
12
|
-
if (this.defaultShop === Shops.MENSMARKET)
|
|
13
|
-
return 'mens_market';
|
|
14
|
-
return null;
|
|
15
|
-
}
|
|
16
|
-
constructor(categoryRepository, homeRepository, productRepository, defaultShop) {
|
|
17
|
-
this.categoryRepository = categoryRepository;
|
|
18
|
-
this.homeRepository = homeRepository;
|
|
19
|
-
this.productRepository = productRepository;
|
|
20
|
-
this.defaultShop = defaultShop;
|
|
21
|
-
this.buildCategoryGroupWithRequiredData = (group) => ({
|
|
22
|
-
category: Category.toInstance(pick(group?.category?.toPlain() || {}, ['id', 'name', 'slug', 'conditions'])),
|
|
23
|
-
products: group?.products?.map((product) => Product.toInstance(pick(product?.toPlain() || {}, [
|
|
24
|
-
'id',
|
|
25
|
-
'price',
|
|
26
|
-
'reviews',
|
|
27
|
-
'hasVariants',
|
|
28
|
-
'slug',
|
|
29
|
-
'sku',
|
|
30
|
-
'stock',
|
|
31
|
-
'costPrice',
|
|
32
|
-
'images',
|
|
33
|
-
'miniatures',
|
|
34
|
-
'name',
|
|
35
|
-
'weight',
|
|
36
|
-
'rate',
|
|
37
|
-
'type',
|
|
38
|
-
'brand',
|
|
39
|
-
]))) || [],
|
|
40
|
-
});
|
|
41
|
-
}
|
|
42
|
-
getHomeData() {
|
|
43
|
-
return this.getHomeConfiguration().pipe(map((home) => (home?.data?.expiresAt > new Date() ? home : null)), concatMap((home) => home
|
|
44
|
-
? of(home)
|
|
45
|
-
: forkJoin([this.getDiscoverProducts(), this.getFeaturedProducts(), this.getVerticalProducts()]).pipe(map(([discoverProducts, featuredProducts, verticalProducts]) => ({
|
|
46
|
-
discoverProducts,
|
|
47
|
-
featuredProducts,
|
|
48
|
-
verticalProducts,
|
|
49
|
-
})), concatMap((data) => this.saveHomeData(data)))));
|
|
50
|
-
}
|
|
51
|
-
getBanners(type) {
|
|
52
|
-
return this.getHomeConfiguration().pipe(map((home) => {
|
|
53
|
-
if (type === 'brand')
|
|
54
|
-
return home.brandsCarousel;
|
|
55
|
-
if (type === 'buyToWin')
|
|
56
|
-
return [home.buyToWinBanner];
|
|
57
|
-
if (type === 'block')
|
|
58
|
-
return home.blockBanners;
|
|
59
|
-
if (type === 'blog')
|
|
60
|
-
return [home.blogBanner];
|
|
61
|
-
return [];
|
|
62
|
-
}));
|
|
63
|
-
}
|
|
64
|
-
getMinValueForFreeShipping() {
|
|
65
|
-
return this.getHomeConfiguration().pipe(map((home) => home.minValueForFreeShipping));
|
|
66
|
-
}
|
|
67
|
-
getDiscoverProducts() {
|
|
68
|
-
return this.getHomeConfiguration().pipe(concatMap((home) => from(this.categoryRepository.getCategoriesForHome(home.discoverCategories)).pipe(map((groups) => groups.map(this.buildCategoryGroupWithRequiredData)))));
|
|
69
|
-
}
|
|
70
|
-
getFeaturedProducts() {
|
|
71
|
-
return this.getHomeConfiguration().pipe(concatMap((home) => from(this.categoryRepository.getCategoriesForHome(home.featuredCategories)).pipe(map((groups) => groups.map(this.buildCategoryGroupWithRequiredData)))));
|
|
72
|
-
}
|
|
73
|
-
getVerticalProducts() {
|
|
74
|
-
return this.getHomeConfiguration().pipe(concatMap((home) => forkJoin(home.verticalCarousels.filter(Boolean).map((id) => from(this.categoryRepository.get({ id })).pipe(concatMap((category) => from(this.productRepository.find({
|
|
75
|
-
filters: { categories: { operator: Where.IN, value: [category.id] } },
|
|
76
|
-
limits: { limit: 12 },
|
|
77
|
-
})).pipe(map((products) => ({ category, products })))), map(({ category, products }) => ({ category, products: products.data })), map(this.buildCategoryGroupWithRequiredData))))));
|
|
78
|
-
}
|
|
79
|
-
getHomeConfiguration() {
|
|
80
|
-
return of(this.homeConfiguration).pipe(concatMap((home) => home
|
|
81
|
-
? of(home)
|
|
82
|
-
: !this.homeId
|
|
83
|
-
? throwError(new RequiredArgumentError(['homeId']))
|
|
84
|
-
: from(this.homeRepository.get({ id: this.homeId })).pipe(tap((homeLoaded) => (this.homeConfiguration = homeLoaded)))));
|
|
85
|
-
}
|
|
86
|
-
saveHomeData(homeData) {
|
|
87
|
-
const data = {
|
|
88
|
-
createdAt: new Date(),
|
|
89
|
-
expiresAt: add(new Date(), { hours: 1 }),
|
|
90
|
-
data: homeData,
|
|
91
|
-
};
|
|
92
|
-
return from(this.homeRepository.update({
|
|
93
|
-
id: this.homeId,
|
|
94
|
-
data,
|
|
95
|
-
})).pipe(tap(() => (this.homeConfiguration.data = data)), map(() => this.homeConfiguration));
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
HomeShopService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: HomeShopService, deps: [{ token: 'CategoryRepository' }, { token: 'HomeRepository' }, { token: 'ProductRepository' }, { token: DEFAULT_SHOP }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
99
|
-
HomeShopService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: HomeShopService });
|
|
100
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: HomeShopService, decorators: [{
|
|
101
|
-
type: Injectable
|
|
102
|
-
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
103
|
-
type: Inject,
|
|
104
|
-
args: ['CategoryRepository']
|
|
105
|
-
}] }, { type: undefined, decorators: [{
|
|
106
|
-
type: Inject,
|
|
107
|
-
args: ['HomeRepository']
|
|
108
|
-
}] }, { type: undefined, decorators: [{
|
|
109
|
-
type: Inject,
|
|
110
|
-
args: ['ProductRepository']
|
|
111
|
-
}] }, { type: i1.Shops, decorators: [{
|
|
112
|
-
type: Inject,
|
|
113
|
-
args: [DEFAULT_SHOP]
|
|
114
|
-
}] }]; } });
|
|
115
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG9tZS1zaG9wLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL3NlcnZpY2VzL2hvbWUtc2hvcC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ2xELE9BQU8sRUFFTCxRQUFRLEVBTVIsT0FBTyxFQUVQLHFCQUFxQixFQUNyQixLQUFLLEVBQ0wsS0FBSyxFQUNMLEdBQUcsRUFDSCxJQUFJLEdBQ0wsTUFBTSxtQkFBbUIsQ0FBQTtBQUMxQixPQUFPLEVBQWMsUUFBUSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBQ2pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRXBELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxXQUFXLENBQUE7OztBQU14QyxNQUFNLE9BQU8sZUFBZTtJQUcxQixJQUFZLE1BQU07UUFDaEIsSUFBSSxJQUFJLENBQUMsV0FBVyxLQUFLLEtBQUssQ0FBQyxRQUFRO1lBQUUsT0FBTyxVQUFVLENBQUE7UUFDMUQsSUFBSSxJQUFJLENBQUMsV0FBVyxLQUFLLEtBQUssQ0FBQyxVQUFVO1lBQUUsT0FBTyxhQUFhLENBQUE7UUFFL0QsT0FBTyxJQUFJLENBQUE7SUFDYixDQUFDO0lBRUQsWUFDaUQsa0JBQXNDLEVBQzFDLGNBQThCLEVBQzNCLGlCQUFvQyxFQUMzQyxXQUFrQjtRQUhWLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDMUMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzNCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDM0MsZ0JBQVcsR0FBWCxXQUFXLENBQU87UUFpSG5ELHVDQUFrQyxHQUFHLENBQUMsS0FB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SCxDQUFDO0lBRU8sWUFBWSxDQUFDLFFBQWtCO1FBQ3JDLE1BQU0sSUFBSSxHQUFHO1lBQ1gsU0FBUyxFQUFFLElBQUksSUFBSSxFQUFFO1lBQ3JCLFNBQVMsRUFBRSxHQUFHLENBQUMsSUFBSSxJQUFJLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUN4QyxJQUFJLEVBQUUsUUFBUTtTQUNmLENBQUE7UUFFRCxPQUFPLElBQUksQ0FDVCxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQztZQUN6QixFQUFFLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDZixJQUFJO1NBQ0wsQ0FBQyxDQUNILENBQUMsSUFBSSxDQUNKLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsRUFDL0MsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUNsQyxDQUFBO0lBQ0gsQ0FBQzs7NEdBN0hVLGVBQWUsa0JBV2hCLG9CQUFvQixhQUNwQixnQkFBZ0IsYUFDaEIsbUJBQW1CLGFBQ25CLFlBQVk7Z0hBZFgsZUFBZTsyRkFBZixlQUFlO2tCQUQzQixVQUFVOzswQkFZTixNQUFNOzJCQUFDLG9CQUFvQjs7MEJBQzNCLE1BQU07MkJBQUMsZ0JBQWdCOzswQkFDdkIsTUFBTTsyQkFBQyxtQkFBbUI7OzBCQUMxQixNQUFNOzJCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHtcbiAgQmFubmVyLFxuICBDYXRlZ29yeSxcbiAgQ2F0ZWdvcnlSZXBvc2l0b3J5LFxuICBIb21lLFxuICBIb21lQ2F0ZWdvcnlHcm91cCxcbiAgSG9tZURhdGEsXG4gIEhvbWVSZXBvc2l0b3J5LFxuICBQcm9kdWN0LFxuICBQcm9kdWN0UmVwb3NpdG9yeSxcbiAgUmVxdWlyZWRBcmd1bWVudEVycm9yLFxuICBTaG9wcyxcbiAgV2hlcmUsXG4gIGFkZCxcbiAgcGljayxcbn0gZnJvbSAnQGluZnJhYjRhL2Nvbm5lY3QnXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBmb3JrSm9pbiwgZnJvbSwgb2YsIHRocm93RXJyb3IgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgY29uY2F0TWFwLCBtYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuXG5pbXBvcnQgeyBERUZBVUxUX1NIT1AgfSBmcm9tICcuLi9jb25zdHMnXG5cbnR5cGUgSG9tZUNvbmZpZ3VyYXRpb25JZCA9ICdnbGFtc2hvcCcgfCAnbWVuc19tYXJrZXQnXG50eXBlIEJhbm5lclR5cGUgPSAnYnJhbmQnIHwgJ2J1eVRvV2luJyB8ICdibG9jaycgfCAnYmxvZydcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEhvbWVTaG9wU2VydmljZSB7XG4gIHByaXZhdGUgaG9tZUNvbmZpZ3VyYXRpb246IEhvbWVcblxuICBwcml2YXRlIGdldCBob21lSWQoKTogSG9tZUNvbmZpZ3VyYXRpb25JZCB7XG4gICAgaWYgKHRoaXMuZGVmYXVsdFNob3AgPT09IFNob3BzLkdMQU1TSE9QKSByZXR1cm4gJ2dsYW1zaG9wJ1xuICAgIGlmICh0aGlzLmRlZmF1bHRTaG9wID09PSBTaG9wcy5NRU5TTUFSS0VUKSByZXR1cm4gJ21lbnNfbWFya2V0J1xuXG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoJ0NhdGVnb3J5UmVwb3NpdG9yeScpIHByaXZhdGUgcmVhZG9ubHkgY2F0ZWdvcnlSZXBvc2l0b3J5OiBDYXRlZ29yeVJlcG9zaXRvcnksXG4gICAgQEluamVjdCgnSG9tZVJlcG9zaXRvcnknKSBwcml2YXRlIHJlYWRvbmx5IGhvbWVSZXBvc2l0b3J5OiBIb21lUmVwb3NpdG9yeSxcbiAgICBASW5qZWN0KCdQcm9kdWN0UmVwb3NpdG9yeScpIHByaXZhdGUgcmVhZG9ubHkgcHJvZHVjdFJlcG9zaXRvcnk6IFByb2R1Y3RSZXBvc2l0b3J5LFxuICAgIEBJbmplY3QoREVGQVVMVF9TSE9QKSBwcml2YXRlIHJlYWRvbmx5IGRlZmF1bHRTaG9wOiBTaG9wcyxcbiAgKSB7fVxuXG4gIGdldEhvbWVEYXRhKCk6IE9ic2VydmFibGU8SG9tZT4ge1xuICAgIHJldHVybiB0aGlzLmdldEhvbWVDb25maWd1cmF0aW9uKCkucGlwZShcbiAgICAgIG1hcCgoaG9tZSkgPT4gKGhvbWU/LmRhdGE/LmV4cGlyZXNBdCA+IG5ldyBEYXRlKCkgPyBob21lIDogbnVsbCkpLFxuICAgICAgY29uY2F0TWFwKChob21lKSA9PlxuICAgICAgICBob21lXG4gICAgICAgICAgPyBvZihob21lKVxuICAgICAgICAgIDogZm9ya0pvaW4oW3RoaXMuZ2V0RGlzY292ZXJQcm9kdWN0cygpLCB0aGlzLmdldEZlYXR1cmVkUHJvZHVjdHMoKSwgdGhpcy5nZXRWZXJ0aWNhbFByb2R1Y3RzKCldKS5waXBlKFxuICAgICAgICAgICAgICBtYXAoKFtkaXNjb3ZlclByb2R1Y3RzLCBmZWF0dXJlZFByb2R1Y3RzLCB2ZXJ0aWNhbFByb2R1Y3RzXSkgPT4gKHtcbiAgICAgICAgICAgICAgICBkaXNjb3ZlclByb2R1Y3RzLFxuICAgICAgICAgICAgICAgIGZlYXR1cmVkUHJvZHVjdHMsXG4gICAgICAgICAgICAgICAgdmVydGljYWxQcm9kdWN0cyxcbiAgICAgICAgICAgICAgfSkpLFxuICAgICAgICAgICAgICBjb25jYXRNYXAoKGRhdGEpID0+IHRoaXMuc2F2ZUhvbWVEYXRhKGRhdGEpKSxcbiAgICAgICAgICAgICksXG4gICAgICApLFxuICAgIClcbiAgfVxuXG4gIGdldEJhbm5lcnModHlwZTogQmFubmVyVHlwZSk6IE9ic2VydmFibGU8QmFubmVyW10+IHtcbiAgICByZXR1cm4gdGhpcy5nZXRIb21lQ29uZmlndXJhdGlvbigpLnBpcGUoXG4gICAgICBtYXAoKGhvbWUpID0+IHtcbiAgICAgICAgaWYgKHR5cGUgPT09ICdicmFuZCcpIHJldHVybiBob21lLmJyYW5kc0Nhcm91c2VsXG4gICAgICAgIGlmICh0eXBlID09PSAnYnV5VG9XaW4nKSByZXR1cm4gW2hvbWUuYnV5VG9XaW5CYW5uZXJdXG4gICAgICAgIGlmICh0eXBlID09PSAnYmxvY2snKSByZXR1cm4gaG9tZS5ibG9ja0Jhbm5lcnNcbiAgICAgICAgaWYgKHR5cGUgPT09ICdibG9nJykgcmV0dXJuIFtob21lLmJsb2dCYW5uZXJdXG5cbiAgICAgICAgcmV0dXJuIFtdXG4gICAgICB9KSxcbiAgICApXG4gIH1cblxuICBnZXRNaW5WYWx1ZUZvckZyZWVTaGlwcGluZygpOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xuICAgIHJldHVybiB0aGlzLmdldEhvbWVDb25maWd1cmF0aW9uKCkucGlwZShtYXAoKGhvbWUpID0+IGhvbWUubWluVmFsdWVGb3JGcmVlU2hpcHBpbmcpKVxuICB9XG5cbiAgcHJpdmF0ZSBnZXREaXNjb3ZlclByb2R1Y3RzKCk6IE9ic2VydmFibGU8eyBjYXRlZ29yeTogQ2F0ZWdvcnk7IHByb2R1Y3RzOiBQcm9kdWN0W10gfVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0SG9tZUNvbmZpZ3VyYXRpb24oKS5waXBlKFxuICAgICAgY29uY2F0TWFwKChob21lKSA9PlxuICAgICAgICBmcm9tKHRoaXMuY2F0ZWdvcnlSZXBvc2l0b3J5LmdldENhdGVnb3JpZXNGb3JIb21lKGhvbWUuZGlzY292ZXJDYXRlZ29yaWVzKSkucGlwZShcbiAgICAgICAgICBtYXAoKGdyb3VwcykgPT4gZ3JvdXBzLm1hcCh0aGlzLmJ1aWxkQ2F0ZWdvcnlHcm91cFdpdGhSZXF1aXJlZERhdGEpKSxcbiAgICAgICAgKSxcbiAgICAgICksXG4gICAgKVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRGZWF0dXJlZFByb2R1Y3RzKCk6IE9ic2VydmFibGU8eyBjYXRlZ29yeTogQ2F0ZWdvcnk7IHByb2R1Y3RzOiBQcm9kdWN0W10gfVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0SG9tZUNvbmZpZ3VyYXRpb24oKS5waXBlKFxuICAgICAgY29uY2F0TWFwKChob21lKSA9PlxuICAgICAgICBmcm9tKHRoaXMuY2F0ZWdvcnlSZXBvc2l0b3J5LmdldENhdGVnb3JpZXNGb3JIb21lKGhvbWUuZmVhdHVyZWRDYXRlZ29yaWVzKSkucGlwZShcbiAgICAgICAgICBtYXAoKGdyb3VwcykgPT4gZ3JvdXBzLm1hcCh0aGlzLmJ1aWxkQ2F0ZWdvcnlHcm91cFdpdGhSZXF1aXJlZERhdGEpKSxcbiAgICAgICAgKSxcbiAgICAgICksXG4gICAgKVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRWZXJ0aWNhbFByb2R1Y3RzKCk6IE9ic2VydmFibGU8eyBjYXRlZ29yeTogQ2F0ZWdvcnk7IHByb2R1Y3RzOiBQcm9kdWN0W10gfVtdPiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0SG9tZUNvbmZpZ3VyYXRpb24oKS5waXBlKFxuICAgICAgY29uY2F0TWFwKChob21lKSA9PlxuICAgICAgICBmb3JrSm9pbihcbiAgICAgICAgICBob21lLnZlcnRpY2FsQ2Fyb3VzZWxzLmZpbHRlcihCb29sZWFuKS5tYXAoKGlkKSA9PlxuICAgICAgICAgICAgZnJvbSh0aGlzLmNhdGVnb3J5UmVwb3NpdG9yeS5nZXQoeyBpZCB9KSkucGlwZShcbiAgICAgICAgICAgICAgY29uY2F0TWFwKChjYXRlZ29yeSkgPT5cbiAgICAgICAgICAgICAgICBmcm9tKFxuICAgICAgICAgICAgICAgICAgdGhpcy5wcm9kdWN0UmVwb3NpdG9yeS5maW5kKHtcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyczogeyBjYXRlZ29yaWVzOiB7IG9wZXJhdG9yOiBXaGVyZS5JTiwgdmFsdWU6IFtjYXRlZ29yeS5pZF0gfSB9LFxuICAgICAgICAgICAgICAgICAgICBsaW1pdHM6IHsgbGltaXQ6IDEyIH0sXG4gICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICApLnBpcGUobWFwKChwcm9kdWN0cykgPT4gKHsgY2F0ZWdvcnksIHByb2R1Y3RzIH0pKSksXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIG1hcCgoeyBjYXRlZ29yeSwgcHJvZHVjdHMgfSkgPT4gKHsgY2F0ZWdvcnksIHByb2R1Y3RzOiBwcm9kdWN0cy5kYXRhIH0pKSxcbiAgICAgICAgICAgICAgbWFwKHRoaXMuYnVpbGRDYXRlZ29yeUdyb3VwV2l0aFJlcXVpcmVkRGF0YSksXG4gICAgICAgICAgICApLFxuICAgICAgICAgICksXG4gICAgICAgICksXG4gICAgICApLFxuICAgIClcbiAgfVxuXG4gIHByaXZhdGUgZ2V0SG9tZUNvbmZpZ3VyYXRpb24oKTogT2JzZXJ2YWJsZTxIb21lPiB7XG4gICAgcmV0dXJuIG9mKHRoaXMuaG9tZUNvbmZpZ3VyYXRpb24pLnBpcGUoXG4gICAgICBjb25jYXRNYXAoKGhvbWUpID0+XG4gICAgICAgIGhvbWVcbiAgICAgICAgICA/IG9mKGhvbWUpXG4gICAgICAgICAgOiAhdGhpcy5ob21lSWRcbiAgICAgICAgICA/IHRocm93RXJyb3IobmV3IFJlcXVpcmVkQXJndW1lbnRFcnJvcihbJ2hvbWVJZCddKSlcbiAgICAgICAgICA6IGZyb20odGhpcy5ob21lUmVwb3NpdG9yeS5nZXQoeyBpZDogdGhpcy5ob21lSWQgfSkpLnBpcGUoXG4gICAgICAgICAgICAgIHRhcCgoaG9tZUxvYWRlZCkgPT4gKHRoaXMuaG9tZUNvbmZpZ3VyYXRpb24gPSBob21lTG9hZGVkKSksXG4gICAgICAgICAgICApLFxuICAgICAgKSxcbiAgICApXG4gIH1cblxuICBwcml2YXRlIHNhdmVIb21lRGF0YShob21lRGF0YTogSG9tZURhdGEpOiBPYnNlcnZhYmxlPEhvbWU+IHtcbiAgICBjb25zdCBkYXRhID0ge1xuICAgICAgY3JlYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgZXhwaXJlc0F0OiBhZGQobmV3IERhdGUoKSwgeyBob3VyczogMSB9KSxcbiAgICAgIGRhdGE6IGhvbWVEYXRhLFxuICAgIH1cblxuICAgIHJldHVybiBmcm9tKFxuICAgICAgdGhpcy5ob21lUmVwb3NpdG9yeS51cGRhdGUoe1xuICAgICAgICBpZDogdGhpcy5ob21lSWQsXG4gICAgICAgIGRhdGEsXG4gICAgICB9KSxcbiAgICApLnBpcGUoXG4gICAgICB0YXAoKCkgPT4gKHRoaXMuaG9tZUNvbmZpZ3VyYXRpb24uZGF0YSA9IGRhdGEpKSxcbiAgICAgIG1hcCgoKSA9PiB0aGlzLmhvbWVDb25maWd1cmF0aW9uKSxcbiAgICApXG4gIH1cblxuICBwcml2YXRlIGJ1aWxkQ2F0ZWdvcnlHcm91cFdpdGhSZXF1aXJlZERhdGEgPSAoZ3JvdXA6IEhvbWVDYXRlZ29yeUdyb3VwKTogSG9tZUNhdGVnb3J5R3JvdXAgPT4gKHtcbiAgICBjYXRlZ29yeTogQ2F0ZWdvcnkudG9JbnN0YW5jZShwaWNrKGdyb3VwPy5jYXRlZ29yeT8udG9QbGFpbigpIHx8IHt9LCBbJ2lkJywgJ25hbWUnLCAnc2x1ZycsICdjb25kaXRpb25zJ10pKSxcbiAgICBwcm9kdWN0czpcbiAgICAgIGdyb3VwPy5wcm9kdWN0cz8ubWFwKChwcm9kdWN0KSA9PlxuICAgICAgICBQcm9kdWN0LnRvSW5zdGFuY2UoXG4gICAgICAgICAgcGljayhwcm9kdWN0Py50b1BsYWluKCkgfHwge30sIFtcbiAgICAgICAgICAgICdpZCcsXG4gICAgICAgICAgICAncHJpY2UnLFxuICAgICAgICAgICAgJ3Jldmlld3MnLFxuICAgICAgICAgICAgJ2hhc1ZhcmlhbnRzJyxcbiAgICAgICAgICAgICdzbHVnJyxcbiAgICAgICAgICAgICdza3UnLFxuICAgICAgICAgICAgJ3N0b2NrJyxcbiAgICAgICAgICAgICdjb3N0UHJpY2UnLFxuICAgICAgICAgICAgJ2ltYWdlcycsXG4gICAgICAgICAgICAnbWluaWF0dXJlcycsXG4gICAgICAgICAgICAnbmFtZScsXG4gICAgICAgICAgICAnd2VpZ2h0JyxcbiAgICAgICAgICAgICdyYXRlJyxcbiAgICAgICAgICAgICd0eXBlJyxcbiAgICAgICAgICAgICdicmFuZCcsXG4gICAgICAgICAgXSksXG4gICAgICAgICksXG4gICAgICApIHx8IFtdLFxuICB9KVxufVxuIl19
|