@infrab4a/connect-angular 6.0.0-alpha.0 → 6.0.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/angular-connect.module.d.ts +36 -0
- package/angular-elastic-search.module.d.ts +9 -0
- package/angular-firebase-auth.module.d.ts +11 -0
- package/angular-firestore.module.d.ts +17 -0
- package/angular-hasura-graphql.module.d.ts +14 -0
- package/angular-vertex-search.module.d.ts +9 -0
- package/consts/backend-url.const.d.ts +1 -0
- package/consts/category-structure.d.ts +1 -0
- package/consts/default-shop.const.d.ts +1 -0
- package/consts/es-config.const.d.ts +1 -0
- package/consts/firebase-const.d.ts +4 -0
- package/consts/hasura-options.const.d.ts +1 -0
- package/consts/index.d.ts +8 -0
- package/consts/persistence.const.d.ts +1 -0
- package/consts/storage-base-url.const.d.ts +1 -0
- package/consts/vertex-config.const.d.ts +1 -0
- package/esm2022/angular-connect.module.mjs +291 -0
- package/esm2022/angular-elastic-search.module.mjs +34 -0
- package/esm2022/angular-firebase-auth.module.mjs +141 -0
- package/esm2022/angular-firestore.module.mjs +541 -0
- package/esm2022/angular-hasura-graphql.module.mjs +333 -0
- package/esm2022/angular-vertex-search.module.mjs +34 -0
- package/esm2022/consts/backend-url.const.mjs +2 -0
- package/esm2022/consts/category-structure.mjs +2 -0
- package/esm2022/consts/default-shop.const.mjs +2 -0
- package/esm2022/consts/es-config.const.mjs +2 -0
- package/esm2022/consts/firebase-const.mjs +5 -0
- package/esm2022/consts/hasura-options.const.mjs +2 -0
- package/esm2022/consts/index.mjs +9 -0
- package/esm2022/consts/persistence.const.mjs +2 -0
- package/esm2022/consts/storage-base-url.const.mjs +2 -0
- package/esm2022/consts/vertex-config.const.mjs +2 -0
- package/esm2022/helpers/index.mjs +2 -0
- package/esm2022/helpers/mobile-operation-system-checker.helper.mjs +7 -0
- package/esm2022/index.mjs +7 -0
- package/esm2022/infrab4a-connect-angular.mjs +5 -0
- package/esm2022/interfaces/catalog-strategies.interface.mjs +2 -0
- package/esm2022/interfaces/category-facades.interface.mjs +2 -0
- package/esm2022/interfaces/index.mjs +3 -0
- package/esm2022/persistence/cookie-data-persistence.mjs +22 -0
- package/esm2022/persistence/data-persistence.mjs +2 -0
- package/esm2022/persistence/index.mjs +3 -0
- package/esm2022/services/auth.service.mjs +37 -0
- package/esm2022/services/cart/cart-services.facade.mjs +21 -0
- package/esm2022/services/cart/index.mjs +2 -0
- package/esm2022/services/cart.service.mjs +73 -0
- package/esm2022/services/catalog/adapters/category-structure.adapter.mjs +2 -0
- package/esm2022/services/catalog/adapters/index.mjs +4 -0
- package/esm2022/services/catalog/adapters/new-category-structure.adapter.mjs +43 -0
- package/esm2022/services/catalog/adapters/old-category-structure.adapter.mjs +23 -0
- package/esm2022/services/catalog/catalog.service.mjs +111 -0
- package/esm2022/services/catalog/category.service.mjs +39 -0
- package/esm2022/services/catalog/context/catalog-search.context.mjs +40 -0
- package/esm2022/services/catalog/enums/index.mjs +2 -0
- package/esm2022/services/catalog/enums/product-sorts.enum.mjs +11 -0
- package/esm2022/services/catalog/facades/catalog-service.facade.mjs +32 -0
- package/esm2022/services/catalog/facades/catalog-strategies.facade.mjs +17 -0
- package/esm2022/services/catalog/facades/category-repository.facade.mjs +20 -0
- package/esm2022/services/catalog/facades/category-service.facade.mjs +30 -0
- package/esm2022/services/catalog/facades/index.mjs +6 -0
- package/esm2022/services/catalog/facades/product-catalog.facade.mjs +21 -0
- package/esm2022/services/catalog/helpers/brand-manager.helper.mjs +57 -0
- package/esm2022/services/catalog/helpers/catalog-filter.helper.mjs +44 -0
- package/esm2022/services/catalog/helpers/catalog-sort.helper.mjs +52 -0
- package/esm2022/services/catalog/helpers/index.mjs +5 -0
- package/esm2022/services/catalog/helpers/product-fields.helper.mjs +39 -0
- package/esm2022/services/catalog/index.mjs +8 -0
- package/esm2022/services/catalog/models/category-with-tree.model.mjs +10 -0
- package/esm2022/services/catalog/models/index.mjs +2 -0
- package/esm2022/services/catalog/services/catalog-helpers.service.mjs +33 -0
- package/esm2022/services/catalog/services/catalog-operations.facade.mjs +26 -0
- package/esm2022/services/catalog/services/catalog-repository.service.mjs +25 -0
- package/esm2022/services/catalog/services/index.mjs +5 -0
- package/esm2022/services/catalog/services/product-management.facade.mjs +25 -0
- package/esm2022/services/catalog/strategies/category-search.strategy.mjs +133 -0
- package/esm2022/services/catalog/strategies/index.mjs +4 -0
- package/esm2022/services/catalog/strategies/profile-search.strategy.mjs +42 -0
- package/esm2022/services/catalog/strategies/term-search.strategy.mjs +123 -0
- package/esm2022/services/catalog/strategies/types/strategy-params.type.mjs +2 -0
- package/esm2022/services/catalog/types/fetch-products-options.type.mjs +2 -0
- package/esm2022/services/catalog/types/fetch-products-params.type.mjs +2 -0
- package/esm2022/services/catalog/types/fetch-products-response.type.mjs +2 -0
- package/esm2022/services/catalog/types/index.mjs +6 -0
- package/esm2022/services/catalog/types/method-params.type.mjs +2 -0
- package/esm2022/services/catalog/types/product-sort.type.mjs +2 -0
- package/esm2022/services/catalog/wishlist.service.mjs +254 -0
- package/esm2022/services/checkout/checkout-dependencies.facade.mjs +20 -0
- package/esm2022/services/checkout/checkout-repositories.facade.mjs +20 -0
- package/esm2022/services/checkout/index.mjs +3 -0
- package/esm2022/services/checkout-subscription.service.mjs +55 -0
- package/esm2022/services/checkout.service.mjs +106 -0
- package/esm2022/services/coupon/coupon-repositories.facade.mjs +24 -0
- package/esm2022/services/coupon/index.mjs +2 -0
- package/esm2022/services/coupon/types/coupon-params.type.mjs +2 -0
- package/esm2022/services/coupon.service.mjs +248 -0
- package/esm2022/services/helpers/index.mjs +2 -0
- package/esm2022/services/helpers/util.helper.mjs +18 -0
- package/esm2022/services/home-shop/home-shop-repositories.facade.mjs +24 -0
- package/esm2022/services/home-shop/index.mjs +2 -0
- package/esm2022/services/home-shop.service.mjs +119 -0
- package/esm2022/services/index.mjs +11 -0
- package/esm2022/services/order-product-review.service.mjs +81 -0
- package/esm2022/services/order.service.mjs +30 -0
- package/esm2022/services/shared/configuration.facade.mjs +29 -0
- package/esm2022/services/shared/index.mjs +2 -0
- package/esm2022/services/types/index.mjs +5 -0
- package/esm2022/services/types/pending-product-review.type.mjs +2 -0
- package/esm2022/services/types/product-review-create.type.mjs +2 -0
- package/esm2022/services/types/required-checkout-data.type.mjs +2 -0
- package/esm2022/services/types/required-checkout-subscription-data.type.mjs +2 -0
- package/esm2022/types/firebase-app-config.type.mjs +2 -0
- package/esm2022/types/index.mjs +2 -0
- package/fesm2022/infrab4a-connect-angular.mjs +3352 -0
- package/fesm2022/infrab4a-connect-angular.mjs.map +1 -0
- package/helpers/index.d.ts +1 -0
- package/helpers/mobile-operation-system-checker.helper.d.ts +3 -0
- package/index.d.ts +6 -0
- package/interfaces/catalog-strategies.interface.d.ts +31 -0
- package/interfaces/category-facades.interface.d.ts +6 -0
- package/interfaces/index.d.ts +2 -0
- package/package.json +23 -9
- package/persistence/cookie-data-persistence.d.ts +10 -0
- package/persistence/data-persistence.d.ts +6 -0
- package/persistence/index.d.ts +2 -0
- package/services/auth.service.d.ts +18 -0
- package/services/cart/cart-services.facade.d.ts +12 -0
- package/services/cart/index.d.ts +1 -0
- package/services/cart.service.d.ts +26 -0
- package/services/catalog/adapters/category-structure.adapter.d.ts +4 -0
- package/services/catalog/adapters/index.d.ts +3 -0
- package/services/catalog/adapters/new-category-structure.adapter.d.ts +12 -0
- package/services/catalog/adapters/old-category-structure.adapter.d.ts +10 -0
- package/services/catalog/catalog.service.d.ts +24 -0
- package/services/catalog/category.service.d.ts +22 -0
- package/services/catalog/context/catalog-search.context.d.ts +14 -0
- package/services/catalog/enums/index.d.ts +1 -0
- package/services/catalog/enums/product-sorts.enum.d.ts +9 -0
- package/services/catalog/facades/catalog-service.facade.d.ts +15 -0
- package/services/catalog/facades/catalog-strategies.facade.d.ts +10 -0
- package/services/catalog/facades/category-repository.facade.d.ts +9 -0
- package/services/catalog/facades/category-service.facade.d.ts +15 -0
- package/{src/services/catalog/facades/index.ts → services/catalog/facades/index.d.ts} +5 -5
- package/services/catalog/facades/product-catalog.facade.d.ts +10 -0
- package/services/catalog/helpers/brand-manager.helper.d.ts +14 -0
- package/services/catalog/helpers/catalog-filter.helper.d.ts +8 -0
- package/services/catalog/helpers/catalog-sort.helper.d.ts +7 -0
- package/services/catalog/helpers/index.d.ts +4 -0
- package/services/catalog/helpers/product-fields.helper.d.ts +7 -0
- package/services/catalog/index.d.ts +7 -0
- package/services/catalog/models/category-with-tree.model.d.ts +4 -0
- package/services/catalog/models/index.d.ts +1 -0
- package/services/catalog/services/catalog-helpers.service.d.ts +17 -0
- package/services/catalog/services/catalog-operations.facade.d.ts +13 -0
- package/services/catalog/services/catalog-repository.service.d.ts +12 -0
- package/{src/services/catalog/services/index.ts → services/catalog/services/index.d.ts} +4 -4
- package/services/catalog/services/product-management.facade.d.ts +12 -0
- package/services/catalog/strategies/category-search.strategy.d.ts +19 -0
- package/services/catalog/strategies/index.d.ts +3 -0
- package/services/catalog/strategies/profile-search.strategy.d.ts +14 -0
- package/services/catalog/strategies/term-search.strategy.d.ts +20 -0
- package/services/catalog/strategies/types/strategy-params.type.d.ts +58 -0
- package/services/catalog/types/fetch-products-options.type.d.ts +8 -0
- package/services/catalog/types/fetch-products-params.type.d.ts +25 -0
- package/services/catalog/types/fetch-products-response.type.d.ts +19 -0
- package/services/catalog/types/index.d.ts +5 -0
- package/services/catalog/types/method-params.type.d.ts +17 -0
- package/services/catalog/types/product-sort.type.d.ts +2 -0
- package/services/catalog/wishlist.service.d.ts +59 -0
- package/services/checkout/checkout-dependencies.facade.d.ts +10 -0
- package/services/checkout/checkout-repositories.facade.d.ts +9 -0
- package/{src/services/checkout/index.ts → services/checkout/index.d.ts} +2 -2
- package/services/checkout-subscription.service.d.ts +19 -0
- package/services/checkout.service.d.ts +30 -0
- package/services/coupon/coupon-repositories.facade.d.ts +10 -0
- package/{src/services/coupon/index.ts → services/coupon/index.d.ts} +1 -1
- package/services/coupon/types/coupon-params.type.d.ts +13 -0
- package/services/coupon.service.d.ts +36 -0
- package/services/helpers/index.d.ts +1 -0
- package/services/helpers/util.helper.d.ts +3 -0
- package/services/home-shop/home-shop-repositories.facade.d.ts +10 -0
- package/{src/services/home-shop/index.ts → services/home-shop/index.d.ts} +1 -1
- package/services/home-shop.service.d.ts +26 -0
- package/services/index.d.ts +10 -0
- package/services/order-product-review.service.d.ts +13 -0
- package/services/order.service.d.ts +13 -0
- package/services/shared/configuration.facade.d.ts +12 -0
- package/services/shared/index.d.ts +1 -0
- package/services/types/index.d.ts +4 -0
- package/services/types/pending-product-review.type.d.ts +10 -0
- package/services/types/product-review-create.type.d.ts +14 -0
- package/services/types/required-checkout-data.type.d.ts +2 -0
- package/services/types/required-checkout-subscription-data.type.d.ts +2 -0
- package/types/firebase-app-config.type.d.ts +1 -0
- package/types/index.d.ts +1 -0
- package/eslint.config.js +0 -18
- package/index.ts +0 -1
- package/karma.conf.js +0 -32
- package/ng-package.json +0 -8
- package/project.json +0 -37
- package/src/angular-connect.module.ts +0 -256
- package/src/angular-elastic-search.module.ts +0 -23
- package/src/angular-firebase-auth.module.ts +0 -101
- package/src/angular-firestore.module.ts +0 -371
- package/src/angular-hasura-graphql.module.ts +0 -219
- package/src/angular-vertex-search.module.ts +0 -23
- package/src/consts/backend-url.const.ts +0 -1
- package/src/consts/category-structure.ts +0 -1
- package/src/consts/default-shop.const.ts +0 -1
- package/src/consts/es-config.const.ts +0 -1
- package/src/consts/firebase-const.ts +0 -5
- package/src/consts/hasura-options.const.ts +0 -1
- package/src/consts/index.ts +0 -8
- package/src/consts/persistence.const.ts +0 -1
- package/src/consts/storage-base-url.const.ts +0 -1
- package/src/consts/vertex-config.const.ts +0 -1
- package/src/helpers/index.ts +0 -1
- package/src/helpers/mobile-operation-system-checker.helper.ts +0 -10
- package/src/index.ts +0 -6
- package/src/interfaces/catalog-strategies.interface.ts +0 -36
- package/src/interfaces/category-facades.interface.ts +0 -7
- package/src/interfaces/index.ts +0 -2
- package/src/persistence/cookie-data-persistence.ts +0 -21
- package/src/persistence/data-persistence.ts +0 -7
- package/src/persistence/index.ts +0 -2
- package/src/services/auth.service.ts +0 -39
- package/src/services/cart/cart-services.facade.ts +0 -14
- package/src/services/cart/index.ts +0 -1
- package/src/services/cart.service.ts +0 -124
- package/src/services/catalog/adapters/category-structure.adapter.ts +0 -5
- package/src/services/catalog/adapters/index.ts +0 -3
- package/src/services/catalog/adapters/new-category-structure.adapter.ts +0 -42
- package/src/services/catalog/adapters/old-category-structure.adapter.ts +0 -17
- package/src/services/catalog/catalog.service.ts +0 -153
- package/src/services/catalog/category.service.ts +0 -52
- package/src/services/catalog/context/catalog-search.context.ts +0 -61
- package/src/services/catalog/enums/index.ts +0 -1
- package/src/services/catalog/enums/product-sorts.enum.ts +0 -9
- package/src/services/catalog/facades/catalog-service.facade.ts +0 -32
- package/src/services/catalog/facades/catalog-strategies.facade.ts +0 -12
- package/src/services/catalog/facades/category-repository.facade.ts +0 -10
- package/src/services/catalog/facades/category-service.facade.ts +0 -25
- package/src/services/catalog/facades/product-catalog.facade.ts +0 -13
- package/src/services/catalog/helpers/brand-manager.helper.ts +0 -63
- package/src/services/catalog/helpers/catalog-filter.helper.ts +0 -50
- package/src/services/catalog/helpers/catalog-sort.helper.ts +0 -54
- package/src/services/catalog/helpers/index.ts +0 -4
- package/src/services/catalog/helpers/product-fields.helper.ts +0 -35
- package/src/services/catalog/index.ts +0 -7
- package/src/services/catalog/models/category-with-tree.model.ts +0 -7
- package/src/services/catalog/models/index.ts +0 -1
- package/src/services/catalog/services/catalog-helpers.service.ts +0 -35
- package/src/services/catalog/services/catalog-operations.facade.ts +0 -24
- package/src/services/catalog/services/catalog-repository.service.ts +0 -20
- package/src/services/catalog/services/product-management.facade.ts +0 -20
- package/src/services/catalog/strategies/category-search.strategy.ts +0 -172
- package/src/services/catalog/strategies/index.ts +0 -3
- package/src/services/catalog/strategies/profile-search.strategy.ts +0 -51
- package/src/services/catalog/strategies/term-search.strategy.ts +0 -178
- package/src/services/catalog/strategies/types/strategy-params.type.ts +0 -58
- package/src/services/catalog/types/fetch-products-options.type.ts +0 -10
- package/src/services/catalog/types/fetch-products-params.type.ts +0 -27
- package/src/services/catalog/types/fetch-products-response.type.ts +0 -11
- package/src/services/catalog/types/index.ts +0 -5
- package/src/services/catalog/types/method-params.type.ts +0 -21
- package/src/services/catalog/types/product-sort.type.ts +0 -3
- package/src/services/catalog/wishlist.service.ts +0 -368
- package/src/services/checkout/checkout-dependencies.facade.ts +0 -13
- package/src/services/checkout/checkout-repositories.facade.ts +0 -10
- package/src/services/checkout-subscription.service.ts +0 -76
- package/src/services/checkout.service.ts +0 -196
- package/src/services/coupon/coupon-repositories.facade.ts +0 -11
- package/src/services/coupon/types/coupon-params.type.ts +0 -15
- package/src/services/coupon.service.ts +0 -347
- package/src/services/errors/group-invalid-coupon.error.ts +0 -9
- package/src/services/errors/index.ts +0 -2
- package/src/services/errors/invalid-coupon.error.ts +0 -7
- package/src/services/helpers/index.ts +0 -1
- package/src/services/helpers/util.helper.ts +0 -17
- package/src/services/home-shop/home-shop-repositories.facade.ts +0 -11
- package/src/services/home-shop.service.ts +0 -196
- package/src/services/index.ts +0 -9
- package/src/services/order.service.ts +0 -23
- package/src/services/shared/configuration.facade.ts +0 -21
- package/src/services/shared/index.ts +0 -1
- package/src/services/types/index.ts +0 -2
- package/src/services/types/required-checkout-data.type.ts +0 -3
- package/src/services/types/required-checkout-subscription-data.type.ts +0 -3
- package/src/types/firebase-app-config.type.ts +0 -1
- package/src/types/index.ts +0 -1
- package/tsconfig.json +0 -17
- package/tsconfig.lib.json +0 -13
- package/tsconfig.lib.prod.json +0 -13
- package/tsconfig.spec.json +0 -17
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { Shops, Where } from '@infrab4a/connect';
|
|
3
|
+
import { CatalogHelpersService, CatalogRepositoryService } from '../services';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "../services";
|
|
6
|
+
export class ProfileSearchStrategy {
|
|
7
|
+
constructor(repositoryService, helpersService) {
|
|
8
|
+
this.repositoryService = repositoryService;
|
|
9
|
+
this.helpersService = helpersService;
|
|
10
|
+
}
|
|
11
|
+
async search(params, shop, optionsCache) {
|
|
12
|
+
const { profile, filters, limits, sort, mainGender } = params;
|
|
13
|
+
if (!profile) {
|
|
14
|
+
throw new Error('Profile is required for ProfileSearchStrategy');
|
|
15
|
+
}
|
|
16
|
+
const productCatalog = this.repositoryService.getProductCatalog();
|
|
17
|
+
const filterHelper = this.helpersService.getFilterHelper();
|
|
18
|
+
const sortHelper = this.helpersService.getSortHelper();
|
|
19
|
+
const fieldsHelper = this.helpersService.getFieldsHelper();
|
|
20
|
+
const repoParams = {
|
|
21
|
+
fields: fieldsHelper.getStandardFields(),
|
|
22
|
+
filters: {
|
|
23
|
+
tags: { operator: Where.LIKE, value: profile },
|
|
24
|
+
...filterHelper.buildFilterQuery(filters || {}),
|
|
25
|
+
},
|
|
26
|
+
...(sort ? { orderBy: sortHelper.buildSortQuery(sort) } : {}),
|
|
27
|
+
limits,
|
|
28
|
+
options: {
|
|
29
|
+
minimal: ['price'],
|
|
30
|
+
maximum: ['price'],
|
|
31
|
+
distinct: ['brand'],
|
|
32
|
+
},
|
|
33
|
+
};
|
|
34
|
+
return productCatalog.productRepository.findCatalog(repoParams, mainGender || (shop === Shops.MENSMARKET ? 'male' : 'female'), optionsCache);
|
|
35
|
+
}
|
|
36
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: ProfileSearchStrategy, deps: [{ token: i1.CatalogRepositoryService }, { token: i1.CatalogHelpersService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
37
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: ProfileSearchStrategy }); }
|
|
38
|
+
}
|
|
39
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: ProfileSearchStrategy, decorators: [{
|
|
40
|
+
type: Injectable
|
|
41
|
+
}], ctorParameters: () => [{ type: i1.CatalogRepositoryService }, { type: i1.CatalogHelpersService }] });
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS1zZWFyY2guc3RyYXRlZ3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL3NlcnZpY2VzL2NhdGFsb2cvc3RyYXRlZ2llcy9wcm9maWxlLXNlYXJjaC5zdHJhdGVneS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzFDLE9BQU8sRUFBeUQsS0FBSyxFQUFFLEtBQUssRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBR3ZHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGFBQWEsQ0FBQTs7O0FBRzdFLE1BQU0sT0FBTyxxQkFBcUI7SUFDaEMsWUFDbUIsaUJBQTJDLEVBQzNDLGNBQXFDO1FBRHJDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBMEI7UUFDM0MsbUJBQWMsR0FBZCxjQUFjLENBQXVCO0lBQ3JELENBQUM7SUFFSixLQUFLLENBQUMsTUFBTSxDQUNWLE1BQTJCLEVBQzNCLElBQVcsRUFDWCxZQUFpRDtRQUVqRCxNQUFNLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxHQUFHLE1BQU0sQ0FBQTtRQUU3RCxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ1osTUFBTSxJQUFJLEtBQUssQ0FBQywrQ0FBK0MsQ0FBQyxDQUFBO1NBQ2pFO1FBRUQsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLGlCQUFpQixFQUFFLENBQUE7UUFDakUsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxlQUFlLEVBQUUsQ0FBQTtRQUMxRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxDQUFBO1FBQ3RELE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsZUFBZSxFQUFFLENBQUE7UUFFMUQsTUFBTSxVQUFVLEdBQUc7WUFDakIsTUFBTSxFQUFFLFlBQVksQ0FBQyxpQkFBaUIsRUFBRTtZQUN4QyxPQUFPLEVBQUU7Z0JBQ1AsSUFBSSxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRTtnQkFDOUMsR0FBRyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQzthQUNoRDtZQUNELEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLFVBQVUsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzdELE1BQU07WUFDTixPQUFPLEVBQUU7Z0JBQ1AsT0FBTyxFQUFFLENBQUMsT0FBTyxDQUFDO2dCQUNsQixPQUFPLEVBQUUsQ0FBQyxPQUFPLENBQUM7Z0JBQ2xCLFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQzthQUNwQjtTQUNGLENBQUE7UUFFRCxPQUFPLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQ2pELFVBQVUsRUFDVixVQUFVLElBQUksQ0FBQyxJQUFJLEtBQUssS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFDN0QsWUFBWSxDQUNiLENBQUE7SUFDSCxDQUFDOzhHQTFDVSxxQkFBcUI7a0hBQXJCLHFCQUFxQjs7MkZBQXJCLHFCQUFxQjtrQkFEakMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xyXG5pbXBvcnQgeyBQcm9kdWN0LCBSZXBvc2l0b3J5Q2FjaGVPcHRpb25zLCBSZXBvc2l0b3J5RmluZFJlc3VsdCwgU2hvcHMsIFdoZXJlIH0gZnJvbSAnQGluZnJhYjRhL2Nvbm5lY3QnXHJcblxyXG5pbXBvcnQgeyBDYXRhbG9nU2VhcmNoUGFyYW1zLCBDYXRhbG9nU2VhcmNoU3RyYXRlZ3kgfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzJ1xyXG5pbXBvcnQgeyBDYXRhbG9nSGVscGVyc1NlcnZpY2UsIENhdGFsb2dSZXBvc2l0b3J5U2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzJ1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgUHJvZmlsZVNlYXJjaFN0cmF0ZWd5IGltcGxlbWVudHMgQ2F0YWxvZ1NlYXJjaFN0cmF0ZWd5IHtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVwb3NpdG9yeVNlcnZpY2U6IENhdGFsb2dSZXBvc2l0b3J5U2VydmljZSxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgaGVscGVyc1NlcnZpY2U6IENhdGFsb2dIZWxwZXJzU2VydmljZSxcclxuICApIHt9XHJcblxyXG4gIGFzeW5jIHNlYXJjaChcclxuICAgIHBhcmFtczogQ2F0YWxvZ1NlYXJjaFBhcmFtcyxcclxuICAgIHNob3A6IFNob3BzLFxyXG4gICAgb3B0aW9uc0NhY2hlPzogeyBjYWNoZT86IFJlcG9zaXRvcnlDYWNoZU9wdGlvbnMgfSxcclxuICApOiBQcm9taXNlPFJlcG9zaXRvcnlGaW5kUmVzdWx0PFByb2R1Y3Q+PiB7XHJcbiAgICBjb25zdCB7IHByb2ZpbGUsIGZpbHRlcnMsIGxpbWl0cywgc29ydCwgbWFpbkdlbmRlciB9ID0gcGFyYW1zXHJcblxyXG4gICAgaWYgKCFwcm9maWxlKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignUHJvZmlsZSBpcyByZXF1aXJlZCBmb3IgUHJvZmlsZVNlYXJjaFN0cmF0ZWd5JylcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBwcm9kdWN0Q2F0YWxvZyA9IHRoaXMucmVwb3NpdG9yeVNlcnZpY2UuZ2V0UHJvZHVjdENhdGFsb2coKVxyXG4gICAgY29uc3QgZmlsdGVySGVscGVyID0gdGhpcy5oZWxwZXJzU2VydmljZS5nZXRGaWx0ZXJIZWxwZXIoKVxyXG4gICAgY29uc3Qgc29ydEhlbHBlciA9IHRoaXMuaGVscGVyc1NlcnZpY2UuZ2V0U29ydEhlbHBlcigpXHJcbiAgICBjb25zdCBmaWVsZHNIZWxwZXIgPSB0aGlzLmhlbHBlcnNTZXJ2aWNlLmdldEZpZWxkc0hlbHBlcigpXHJcblxyXG4gICAgY29uc3QgcmVwb1BhcmFtcyA9IHtcclxuICAgICAgZmllbGRzOiBmaWVsZHNIZWxwZXIuZ2V0U3RhbmRhcmRGaWVsZHMoKSxcclxuICAgICAgZmlsdGVyczoge1xyXG4gICAgICAgIHRhZ3M6IHsgb3BlcmF0b3I6IFdoZXJlLkxJS0UsIHZhbHVlOiBwcm9maWxlIH0sXHJcbiAgICAgICAgLi4uZmlsdGVySGVscGVyLmJ1aWxkRmlsdGVyUXVlcnkoZmlsdGVycyB8fCB7fSksXHJcbiAgICAgIH0sXHJcbiAgICAgIC4uLihzb3J0ID8geyBvcmRlckJ5OiBzb3J0SGVscGVyLmJ1aWxkU29ydFF1ZXJ5KHNvcnQpIH0gOiB7fSksXHJcbiAgICAgIGxpbWl0cyxcclxuICAgICAgb3B0aW9uczoge1xyXG4gICAgICAgIG1pbmltYWw6IFsncHJpY2UnXSxcclxuICAgICAgICBtYXhpbXVtOiBbJ3ByaWNlJ10sXHJcbiAgICAgICAgZGlzdGluY3Q6IFsnYnJhbmQnXSxcclxuICAgICAgfSxcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcHJvZHVjdENhdGFsb2cucHJvZHVjdFJlcG9zaXRvcnkuZmluZENhdGFsb2coXHJcbiAgICAgIHJlcG9QYXJhbXMsXHJcbiAgICAgIG1haW5HZW5kZXIgfHwgKHNob3AgPT09IFNob3BzLk1FTlNNQVJLRVQgPyAnbWFsZScgOiAnZmVtYWxlJyksXHJcbiAgICAgIG9wdGlvbnNDYWNoZSxcclxuICAgIClcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { isEmpty, Shops, Where, } from '@infrab4a/connect';
|
|
3
|
+
import { CatalogHelpersService, CatalogRepositoryService } from '../services';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "../services";
|
|
6
|
+
export class TermSearchStrategy {
|
|
7
|
+
constructor(repositoryService, helpersService) {
|
|
8
|
+
this.repositoryService = repositoryService;
|
|
9
|
+
this.helpersService = helpersService;
|
|
10
|
+
this.productsByTerm = {};
|
|
11
|
+
}
|
|
12
|
+
async search(params, shop, _optionsCache) {
|
|
13
|
+
const { term, filters, limits, sort, mainGender } = params;
|
|
14
|
+
if (!term) {
|
|
15
|
+
throw new Error('Term is required for TermSearchStrategy');
|
|
16
|
+
}
|
|
17
|
+
const productIds = await this.findCatalogIdsBySearch(term, shop);
|
|
18
|
+
if (sort === 'most-relevant') {
|
|
19
|
+
return this.searchWithMostRelevant({
|
|
20
|
+
productIds,
|
|
21
|
+
filters,
|
|
22
|
+
limits,
|
|
23
|
+
shop,
|
|
24
|
+
mainGender,
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
return this.searchDefault({
|
|
28
|
+
productIds,
|
|
29
|
+
filters,
|
|
30
|
+
limits,
|
|
31
|
+
shop,
|
|
32
|
+
mainGender,
|
|
33
|
+
fields: this.helpersService.getFieldsHelper().getStandardFields(),
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
async searchWithMostRelevant(params) {
|
|
37
|
+
const { productIds, filters, shop, mainGender } = params;
|
|
38
|
+
const productCatalog = this.repositoryService.getProductCatalog();
|
|
39
|
+
const filterHelper = this.helpersService.getFilterHelper();
|
|
40
|
+
const totalResult = await productCatalog.productRepository.findCatalog({
|
|
41
|
+
fields: ['id', 'stock', 'gender'],
|
|
42
|
+
filters: {
|
|
43
|
+
id: { operator: Where.IN, value: productIds },
|
|
44
|
+
published: { operator: Where.EQUALS, value: true },
|
|
45
|
+
...filterHelper.buildFilterQuery(filters || {}),
|
|
46
|
+
},
|
|
47
|
+
options: {
|
|
48
|
+
minimal: ['price'],
|
|
49
|
+
maximum: ['price'],
|
|
50
|
+
...(isEmpty(filters?.brands) ? { distinct: ['brand'] } : {}),
|
|
51
|
+
},
|
|
52
|
+
});
|
|
53
|
+
return this.sortByTermRelevance({
|
|
54
|
+
productIds,
|
|
55
|
+
totalResult,
|
|
56
|
+
limits: params.limits,
|
|
57
|
+
filters,
|
|
58
|
+
fieldsHelper: this.helpersService.getFieldsHelper(),
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
async searchDefault(params) {
|
|
62
|
+
const { productIds, filters, limits, shop, mainGender, fields } = params;
|
|
63
|
+
const productCatalog = this.repositoryService.getProductCatalog();
|
|
64
|
+
const filterHelper = this.helpersService.getFilterHelper();
|
|
65
|
+
return productCatalog.productRepository.findCatalog({
|
|
66
|
+
fields,
|
|
67
|
+
filters: {
|
|
68
|
+
id: { operator: Where.IN, value: productIds },
|
|
69
|
+
published: { operator: Where.EQUALS, value: true },
|
|
70
|
+
...filterHelper.buildFilterQuery(filters || {}),
|
|
71
|
+
},
|
|
72
|
+
limits,
|
|
73
|
+
options: {
|
|
74
|
+
minimal: ['price'],
|
|
75
|
+
maximum: ['price'],
|
|
76
|
+
distinct: ['brand'],
|
|
77
|
+
},
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
sortByTermRelevance(params) {
|
|
81
|
+
const { productIds, totalResult, limits, filters, fieldsHelper } = params;
|
|
82
|
+
// const defaultGender = filters?.gender?.at(0) || 'male'
|
|
83
|
+
const stockData = totalResult.data.filter((product) => product.stock.quantity > 0);
|
|
84
|
+
const stockOut = totalResult.data.filter((product) => product.stock.quantity <= 0);
|
|
85
|
+
const productIdsStock = productIds.filter((product) => stockData.some((result) => result.id === product));
|
|
86
|
+
const productIdsStockOut = productIds.filter((product) => stockOut.some((result) => result.id === product));
|
|
87
|
+
const limitedProductId = productIdsStock
|
|
88
|
+
.concat(productIdsStockOut)
|
|
89
|
+
.slice(limits.offset, limits.offset + limits.limit);
|
|
90
|
+
return this.getDetailedProducts(limitedProductId, totalResult, fieldsHelper);
|
|
91
|
+
}
|
|
92
|
+
async getDetailedProducts(orderedId, totalResult, fieldsHelper) {
|
|
93
|
+
const productCatalog = this.repositoryService.getProductCatalog();
|
|
94
|
+
const fields = fieldsHelper.getStandardFields();
|
|
95
|
+
const productResult = await productCatalog.productRepository.findCatalog({
|
|
96
|
+
filters: {
|
|
97
|
+
id: { operator: Where.IN, value: orderedId },
|
|
98
|
+
},
|
|
99
|
+
fields,
|
|
100
|
+
});
|
|
101
|
+
return {
|
|
102
|
+
data: orderedId.map((id) => productResult.data.find((product) => product.id === id)).filter(Boolean),
|
|
103
|
+
count: totalResult.count,
|
|
104
|
+
maximum: totalResult.maximum,
|
|
105
|
+
minimal: totalResult.minimal,
|
|
106
|
+
distinct: totalResult.distinct,
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
async findCatalogIdsBySearch(term, shop) {
|
|
110
|
+
if (this.productsByTerm[term])
|
|
111
|
+
return this.productsByTerm[term];
|
|
112
|
+
const productServices = this.repositoryService.getProductServices();
|
|
113
|
+
return (this.productsByTerm[term] = await productServices.productSearch
|
|
114
|
+
.search(term, 999, shop === Shops.GLAMSHOP ? 'female' : 'male')
|
|
115
|
+
.then((products) => [...new Set(products.map((product) => product.id))]));
|
|
116
|
+
}
|
|
117
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: TermSearchStrategy, deps: [{ token: i1.CatalogRepositoryService }, { token: i1.CatalogHelpersService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
118
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: TermSearchStrategy }); }
|
|
119
|
+
}
|
|
120
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: TermSearchStrategy, decorators: [{
|
|
121
|
+
type: Injectable
|
|
122
|
+
}], ctorParameters: () => [{ type: i1.CatalogRepositoryService }, { type: i1.CatalogHelpersService }] });
|
|
123
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVybS1zZWFyY2guc3RyYXRlZ3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL3NlcnZpY2VzL2NhdGFsb2cvc3RyYXRlZ2llcy90ZXJtLXNlYXJjaC5zdHJhdGVneS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzFDLE9BQU8sRUFDTCxPQUFPLEVBS1AsS0FBSyxFQUNMLEtBQUssR0FDTixNQUFNLG1CQUFtQixDQUFBO0FBRzFCLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGFBQWEsQ0FBQTs7O0FBUzdFLE1BQU0sT0FBTyxrQkFBa0I7SUFHN0IsWUFDbUIsaUJBQTJDLEVBQzNDLGNBQXFDO1FBRHJDLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBMEI7UUFDM0MsbUJBQWMsR0FBZCxjQUFjLENBQXVCO1FBSmhELG1CQUFjLEdBQTZCLEVBQUUsQ0FBQTtJQUtsRCxDQUFDO0lBRUosS0FBSyxDQUFDLE1BQU0sQ0FDVixNQUEyQixFQUMzQixJQUFXLEVBQ1gsYUFBa0Q7UUFFbEQsTUFBTSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsR0FBRyxNQUFNLENBQUE7UUFFMUQsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNULE1BQU0sSUFBSSxLQUFLLENBQUMseUNBQXlDLENBQUMsQ0FBQTtTQUMzRDtRQUVELE1BQU0sVUFBVSxHQUFHLE1BQU0sSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQTtRQUVoRSxJQUFJLElBQUksS0FBSyxlQUFlLEVBQUU7WUFDNUIsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUM7Z0JBQ2pDLFVBQVU7Z0JBQ1YsT0FBTztnQkFDUCxNQUFNO2dCQUNOLElBQUk7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QUFhO2FBQ3BFLE1BQU0sQ0FBZ0IsSUFBSSxFQUFFLEdBQUcsRUFBRSxJQUFJLEtBQUssS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7YUFDN0UsSUFBSSxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFDN0UsQ0FBQzs4R0F6SVUsa0JBQWtCO2tIQUFsQixrQkFBa0I7OzJGQUFsQixrQkFBa0I7a0JBRDlCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcclxuaW1wb3J0IHtcclxuICBpc0VtcHR5LFxyXG4gIFByb2R1Y3QsXHJcbiAgUHJvZHVjdFNlYXJjaCxcclxuICBSZXBvc2l0b3J5Q2FjaGVPcHRpb25zLFxyXG4gIFJlcG9zaXRvcnlGaW5kUmVzdWx0LFxyXG4gIFNob3BzLFxyXG4gIFdoZXJlLFxyXG59IGZyb20gJ0BpbmZyYWI0YS9jb25uZWN0J1xyXG5cclxuaW1wb3J0IHsgQ2F0YWxvZ1NlYXJjaFBhcmFtcywgQ2F0YWxvZ1NlYXJjaFN0cmF0ZWd5IH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcydcclxuaW1wb3J0IHsgQ2F0YWxvZ0hlbHBlcnNTZXJ2aWNlLCBDYXRhbG9nUmVwb3NpdG9yeVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcydcclxuXHJcbmltcG9ydCB7XHJcbiAgU29ydEJ5VGVybVJlbGV2YW5jZVBhcmFtcyxcclxuICBUZXJtU2VhcmNoRGVmYXVsdFBhcmFtcyxcclxuICBUZXJtU2VhcmNoTW9zdFJlbGV2YW50UGFyYW1zLFxyXG59IGZyb20gJy4vdHlwZXMvc3RyYXRlZ3ktcGFyYW1zLnR5cGUnXHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBUZXJtU2VhcmNoU3RyYXRlZ3kgaW1wbGVtZW50cyBDYXRhbG9nU2VhcmNoU3RyYXRlZ3kge1xyXG4gIHByaXZhdGUgcHJvZHVjdHNCeVRlcm06IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPiA9IHt9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSByZXBvc2l0b3J5U2VydmljZTogQ2F0YWxvZ1JlcG9zaXRvcnlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSByZWFkb25seSBoZWxwZXJzU2VydmljZTogQ2F0YWxvZ0hlbHBlcnNTZXJ2aWNlLFxyXG4gICkge31cclxuXHJcbiAgYXN5bmMgc2VhcmNoKFxyXG4gICAgcGFyYW1zOiBDYXRhbG9nU2VhcmNoUGFyYW1zLFxyXG4gICAgc2hvcDogU2hvcHMsXHJcbiAgICBfb3B0aW9uc0NhY2hlPzogeyBjYWNoZT86IFJlcG9zaXRvcnlDYWNoZU9wdGlvbnMgfSxcclxuICApOiBQcm9taXNlPFJlcG9zaXRvcnlGaW5kUmVzdWx0PFByb2R1Y3Q+PiB7XHJcbiAgICBjb25zdCB7IHRlcm0sIGZpbHRlcnMsIGxpbWl0cywgc29ydCwgbWFpbkdlbmRlciB9ID0gcGFyYW1zXHJcblxyXG4gICAgaWYgKCF0ZXJtKSB7XHJcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGVybSBpcyByZXF1aXJlZCBmb3IgVGVybVNlYXJjaFN0cmF0ZWd5JylcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBwcm9kdWN0SWRzID0gYXdhaXQgdGhpcy5maW5kQ2F0YWxvZ0lkc0J5U2VhcmNoKHRlcm0sIHNob3ApXHJcblxyXG4gICAgaWYgKHNvcnQgPT09ICdtb3N0LXJlbGV2YW50Jykge1xyXG4gICAgICByZXR1cm4gdGhpcy5zZWFyY2hXaXRoTW9zdFJlbGV2YW50KHtcclxuICAgICAgICBwcm9kdWN0SWRzLFxyXG4gICAgICAgIGZpbHRlcnMsXHJcbiAgICAgICAgbGltaXRzLFxyXG4gICAgICAgIHNob3AsXHJcbiAgICAgICAgbWFpbkdlbmRlcixcclxuICAgICAgfSlcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy5zZWFyY2hEZWZhdWx0KHtcclxuICAgICAgcHJvZHVjdElkcyxcclxuICAgICAgZmlsdGVycyxcclxuICAgICAgbGltaXRzLFxyXG4gICAgICBzaG9wLFxyXG4gICAgICBtYWluR2VuZGVyLFxyXG4gICAgICBmaWVsZHM6IHRoaXMuaGVscGVyc1NlcnZpY2UuZ2V0RmllbGRzSGVscGVyKCkuZ2V0U3RhbmRhcmRGaWVsZHMoKSxcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIHNlYXJjaFdpdGhNb3N0UmVsZXZhbnQocGFyYW1zOiBUZXJtU2VhcmNoTW9zdFJlbGV2YW50UGFyYW1zKTogUHJvbWlzZTxSZXBvc2l0b3J5RmluZFJlc3VsdDxQcm9kdWN0Pj4ge1xyXG4gICAgY29uc3QgeyBwcm9kdWN0SWRzLCBmaWx0ZXJzLCBzaG9wLCBtYWluR2VuZGVyIH0gPSBwYXJhbXNcclxuICAgIGNvbnN0IHByb2R1Y3RDYXRhbG9nID0gdGhpcy5yZXBvc2l0b3J5U2VydmljZS5nZXRQcm9kdWN0Q2F0YWxvZygpXHJcbiAgICBjb25zdCBmaWx0ZXJIZWxwZXIgPSB0aGlzLmhlbHBlcnNTZXJ2aWNlLmdldEZpbHRlckhlbHBlcigpXHJcblxyXG4gICAgY29uc3QgdG90YWxSZXN1bHQgPSBhd2FpdCBwcm9kdWN0Q2F0YWxvZy5wcm9kdWN0UmVwb3NpdG9yeS5maW5kQ2F0YWxvZyhcclxuICAgICAge1xyXG4gICAgICAgIGZpZWxkczogWydpZCcsICdzdG9jaycsICdnZW5kZXInXSxcclxuICAgICAgICBmaWx0ZXJzOiB7XHJcbiAgICAgICAgICBpZDogeyBvcGVyYXRvcjogV2hlcmUuSU4sIHZhbHVlOiBwcm9kdWN0SWRzIH0sXHJcbiAgICAgICAgICBwdWJsaXNoZWQ6IHsgb3BlcmF0b3I6IFdoZXJlLkVRVUFMUywgdmFsdWU6IHRydWUgfSxcclxuICAgICAgICAgIC4uLmZpbHRlckhlbHBlci5idWlsZEZpbHRlclF1ZXJ5KGZpbHRlcnMgfHwge30pLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgb3B0aW9uczoge1xyXG4gICAgICAgICAgbWluaW1hbDogWydwcmljZSddLFxyXG4gICAgICAgICAgbWF4aW11bTogWydwcmljZSddLFxyXG4gICAgICAgICAgLi4uKGlzRW1wdHkoZmlsdGVycz8uYnJhbmRzKSA/IHsgZGlzdGluY3Q6IFsnYnJhbmQnXSB9IDoge30pLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICAgIC8vIG1haW5HZW5kZXIgfHwgKHNob3AgPT09IFNob3BzLk1FTlNNQVJLRVQgPyAnbWFsZScgOiAnZmVtYWxlJyksXHJcbiAgICApXHJcblxyXG4gICAgcmV0dXJuIHRoaXMuc29ydEJ5VGVybVJlbGV2YW5jZSh7XHJcbiAgICAgIHByb2R1Y3RJZHMsXHJcbiAgICAgIHRvdGFsUmVzdWx0LFxyXG4gICAgICBsaW1pdHM6IHBhcmFtcy5saW1pdHMsXHJcbiAgICAgIGZpbHRlcnMsXHJcbiAgICAgIGZpZWxkc0hlbHBlcjogdGhpcy5oZWxwZXJzU2VydmljZS5nZXRGaWVsZHNIZWxwZXIoKSxcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIHNlYXJjaERlZmF1bHQocGFyYW1zOiBUZXJtU2VhcmNoRGVmYXVsdFBhcmFtcyk6IFByb21pc2U8UmVwb3NpdG9yeUZpbmRSZXN1bHQ8UHJvZHVjdD4+IHtcclxuICAgIGNvbnN0IHsgcHJvZHVjdElkcywgZmlsdGVycywgbGltaXRzLCBzaG9wLCBtYWluR2VuZGVyLCBmaWVsZHMgfSA9IHBhcmFtc1xyXG4gICAgY29uc3QgcHJvZHVjdENhdGFsb2cgPSB0aGlzLnJlcG9zaXRvcnlTZXJ2aWNlLmdldFByb2R1Y3RDYXRhbG9nKClcclxuICAgIGNvbnN0IGZpbHRlckhlbHBlciA9IHRoaXMuaGVscGVyc1NlcnZpY2UuZ2V0RmlsdGVySGVscGVyKClcclxuXHJcbiAgICByZXR1cm4gcHJvZHVjdENhdGFsb2cucHJvZHVjdFJlcG9zaXRvcnkuZmluZENhdGFsb2coXHJcbiAgICAgIHtcclxuICAgICAgICBmaWVsZHMsXHJcbiAgICAgICAgZmlsdGVyczoge1xyXG4gICAgICAgICAgaWQ6IHsgb3BlcmF0b3I6IFdoZXJlLklOLCB2YWx1ZTogcHJvZHVjdElkcyB9LFxyXG4gICAgICAgICAgcHVibGlzaGVkOiB7IG9wZXJhdG9yOiBXaGVyZS5FUVVBTFMsIHZhbHVlOiB0cnVlIH0sXHJcbiAgICAgICAgICAuLi5maWx0ZXJIZWxwZXIuYnVpbGRGaWx0ZXJRdWVyeShmaWx0ZXJzIHx8IHt9KSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIGxpbWl0cyxcclxuICAgICAgICBvcHRpb25zOiB7XHJcbiAgICAgICAgICBtaW5pbWFsOiBbJ3ByaWNlJ10sXHJcbiAgICAgICAgICBtYXhpbXVtOiBbJ3ByaWNlJ10sXHJcbiAgICAgICAgICBkaXN0aW5jdDogWydicmFuZCddLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICAgIC8vIG1haW5HZW5kZXIgfHwgKHNob3AgPT09IFNob3BzLk1FTlNNQVJLRVQgPyAnbWFsZScgOiAnZmVtYWxlJyksXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNvcnRCeVRlcm1SZWxldmFuY2UocGFyYW1zOiBTb3J0QnlUZXJtUmVsZXZhbmNlUGFyYW1zKSB7XHJcbiAgICBjb25zdCB7IHByb2R1Y3RJZHMsIHRvdGFsUmVzdWx0LCBsaW1pdHMsIGZpbHRlcnMsIGZpZWxkc0hlbHBlciB9ID0gcGFyYW1zXHJcbiAgICAvLyBjb25zdCBkZWZhdWx0R2VuZGVyID0gZmlsdGVycz8uZ2VuZGVyPy5hdCgwKSB8fCAnbWFsZSdcclxuICAgIGNvbnN0IHN0b2NrRGF0YSA9IHRvdGFsUmVzdWx0LmRhdGEuZmlsdGVyKChwcm9kdWN0OiBhbnkpID0+IHByb2R1Y3Quc3RvY2sucXVhbnRpdHkgPiAwKVxyXG4gICAgY29uc3Qgc3RvY2tPdXQgPSB0b3RhbFJlc3VsdC5kYXRhLmZpbHRlcigocHJvZHVjdDogYW55KSA9PiBwcm9kdWN0LnN0b2NrLnF1YW50aXR5IDw9IDApXHJcbiAgICBjb25zdCBwcm9kdWN0SWRzU3RvY2sgPSBwcm9kdWN0SWRzLmZpbHRlcigocHJvZHVjdCkgPT4gc3RvY2tEYXRhLnNvbWUoKHJlc3VsdDogYW55KSA9PiByZXN1bHQuaWQgPT09IHByb2R1Y3QpKVxyXG4gICAgY29uc3QgcHJvZHVjdElkc1N0b2NrT3V0ID0gcHJvZHVjdElkcy5maWx0ZXIoKHByb2R1Y3QpID0+IHN0b2NrT3V0LnNvbWUoKHJlc3VsdDogYW55KSA9PiByZXN1bHQuaWQgPT09IHByb2R1Y3QpKVxyXG4gICAgY29uc3QgbGltaXRlZFByb2R1Y3RJZCA9IHByb2R1Y3RJZHNTdG9ja1xyXG4gICAgICAuY29uY2F0KHByb2R1Y3RJZHNTdG9ja091dClcclxuICAgICAgLnNsaWNlKGxpbWl0cy5vZmZzZXQsIGxpbWl0cy5vZmZzZXQgKyBsaW1pdHMubGltaXQpXHJcblxyXG4gICAgcmV0dXJuIHRoaXMuZ2V0RGV0YWlsZWRQcm9kdWN0cyhsaW1pdGVkUHJvZHVjdElkLCB0b3RhbFJlc3VsdCwgZmllbGRzSGVscGVyKVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBnZXREZXRhaWxlZFByb2R1Y3RzKG9yZGVyZWRJZDogc3RyaW5nW10sIHRvdGFsUmVzdWx0OiBhbnksIGZpZWxkc0hlbHBlcjogYW55KSB7XHJcbiAgICBjb25zdCBwcm9kdWN0Q2F0YWxvZyA9IHRoaXMucmVwb3NpdG9yeVNlcnZpY2UuZ2V0UHJvZHVjdENhdGFsb2coKVxyXG4gICAgY29uc3QgZmllbGRzID0gZmllbGRzSGVscGVyLmdldFN0YW5kYXJkRmllbGRzKClcclxuICAgIGNvbnN0IHByb2R1Y3RSZXN1bHQgPSBhd2FpdCBwcm9kdWN0Q2F0YWxvZy5wcm9kdWN0UmVwb3NpdG9yeS5maW5kQ2F0YWxvZyh7XHJcbiAgICAgIGZpbHRlcnM6IHtcclxuICAgICAgICBpZDogeyBvcGVyYXRvcjogV2hlcmUuSU4sIHZhbHVlOiBvcmRlcmVkSWQgfSxcclxuICAgICAgfSxcclxuICAgICAgZmllbGRzLFxyXG4gICAgfSlcclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBkYXRhOiBvcmRlcmVkSWQubWFwKChpZCkgPT4gcHJvZHVjdFJlc3VsdC5kYXRhLmZpbmQoKHByb2R1Y3QpID0+IHByb2R1Y3QuaWQgPT09IGlkKSkuZmlsdGVyKEJvb2xlYW4pLFxyXG4gICAgICBjb3VudDogdG90YWxSZXN1bHQuY291bnQsXHJcbiAgICAgIG1heGltdW06IHRvdGFsUmVzdWx0Lm1heGltdW0sXHJcbiAgICAgIG1pbmltYWw6IHRvdGFsUmVzdWx0Lm1pbmltYWwsXHJcbiAgICAgIGRpc3RpbmN0OiB0b3RhbFJlc3VsdC5kaXN0aW5jdCxcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgZmluZENhdGFsb2dJZHNCeVNlYXJjaCh0ZXJtOiBzdHJpbmcsIHNob3A6IFNob3BzKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xyXG4gICAgaWYgKHRoaXMucHJvZHVjdHNCeVRlcm1bdGVybV0pIHJldHVybiB0aGlzLnByb2R1Y3RzQnlUZXJtW3Rlcm1dXHJcblxyXG4gICAgY29uc3QgcHJvZHVjdFNlcnZpY2VzID0gdGhpcy5yZXBvc2l0b3J5U2VydmljZS5nZXRQcm9kdWN0U2VydmljZXMoKVxyXG5cclxuICAgIHJldHVybiAodGhpcy5wcm9kdWN0c0J5VGVybVt0ZXJtXSA9IGF3YWl0IHByb2R1Y3RTZXJ2aWNlcy5wcm9kdWN0U2VhcmNoXHJcbiAgICAgIC5zZWFyY2g8UHJvZHVjdFNlYXJjaD4odGVybSwgOTk5LCBzaG9wID09PSBTaG9wcy5HTEFNU0hPUCA/ICdmZW1hbGUnIDogJ21hbGUnKVxyXG4gICAgICAudGhlbigocHJvZHVjdHMpID0+IFsuLi5uZXcgU2V0KHByb2R1Y3RzLm1hcCgocHJvZHVjdCkgPT4gcHJvZHVjdC5pZCkpXSkpXHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyYXRlZ3ktcGFyYW1zLnR5cGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL3NlcnZpY2VzL2NhdGFsb2cvc3RyYXRlZ2llcy90eXBlcy9zdHJhdGVneS1wYXJhbXMudHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVwb3NpdG9yeUNhY2hlT3B0aW9ucywgU2hvcHMgfSBmcm9tICdAaW5mcmFiNGEvY29ubmVjdCdcclxuXHJcbmV4cG9ydCB0eXBlIFNlYXJjaFdpdGhNb3N0UmVsZXZhbnRQYXJhbXMgPSB7XHJcbiAgY2F0ZWdvcnk6IGFueVxyXG4gIGZpbHRlcnM6IGFueVxyXG4gIGxpbWl0czogYW55XHJcbiAgc2hvcDogU2hvcHNcclxuICBtYWluR2VuZGVyOiBhbnlcclxuICBvcHRpb25zQ2FjaGU6IHsgY2FjaGU/OiBSZXBvc2l0b3J5Q2FjaGVPcHRpb25zIH0gfCB1bmRlZmluZWRcclxuICBmaWVsZHM6IGFueVxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBTZWFyY2hEZWZhdWx0UGFyYW1zID0ge1xyXG4gIGNhdGVnb3J5OiBhbnlcclxuICBmaWx0ZXJzOiBhbnlcclxuICBsaW1pdHM6IGFueVxyXG4gIHNob3A6IFNob3BzXHJcbiAgbWFpbkdlbmRlcjogYW55XHJcbiAgc29ydDogYW55XHJcbiAgb3B0aW9uc0NhY2hlOiB7IGNhY2hlPzogUmVwb3NpdG9yeUNhY2hlT3B0aW9ucyB9IHwgdW5kZWZpbmVkXHJcbiAgZmllbGRzOiBhbnlcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgRmluZEFuZFNvcnRCeU1vc3RSZWxldmFudFBhcmFtcyA9IHtcclxuICBtb3N0UmVsZXZhbnRzOiBzdHJpbmdbXVxyXG4gIHByb2R1Y3RJZHM6IHN0cmluZ1tdXHJcbiAgZmlsdGVyczogYW55XHJcbiAgbGltaXRzOiBhbnlcclxuICBzaG9wOiBTaG9wc1xyXG4gIG1haW5HZW5kZXI6IGFueVxyXG4gIG9wdGlvbnNDYWNoZTogeyBjYWNoZT86IFJlcG9zaXRvcnlDYWNoZU9wdGlvbnMgfSB8IHVuZGVmaW5lZFxyXG4gIGZpZWxkczogYW55XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFRlcm1TZWFyY2hNb3N0UmVsZXZhbnRQYXJhbXMgPSB7XHJcbiAgcHJvZHVjdElkczogc3RyaW5nW11cclxuICBmaWx0ZXJzOiBhbnlcclxuICBsaW1pdHM6IGFueVxyXG4gIG1haW5HZW5kZXI6IGFueVxyXG4gIHNob3A6IFNob3BzXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFRlcm1TZWFyY2hEZWZhdWx0UGFyYW1zID0ge1xyXG4gIHByb2R1Y3RJZHM6IHN0cmluZ1tdXHJcbiAgZmlsdGVyczogYW55XHJcbiAgbGltaXRzOiBhbnlcclxuICBtYWluR2VuZGVyOiBhbnlcclxuICBzaG9wOiBTaG9wc1xyXG4gIGZpZWxkczogYW55XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIFNvcnRCeVRlcm1SZWxldmFuY2VQYXJhbXMgPSB7XHJcbiAgcHJvZHVjdElkczogc3RyaW5nW11cclxuICB0b3RhbFJlc3VsdDogYW55XHJcbiAgbGltaXRzOiBhbnlcclxuICBmaWx0ZXJzOiBhbnlcclxuICBmaWVsZHNIZWxwZXI6IGFueVxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmV0Y2gtcHJvZHVjdHMtb3B0aW9ucy50eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29ubmVjdC1hbmd1bGFyL3NyYy9zZXJ2aWNlcy9jYXRhbG9nL3R5cGVzL2ZldGNoLXByb2R1Y3RzLW9wdGlvbnMudHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHJvZHVjdEdlbmRlciB9IGZyb20gJ0BpbmZyYWI0YS9jb25uZWN0J1xyXG5cclxuaW1wb3J0IHsgUHJvZHVjdFNvcnQgfSBmcm9tICcuL3Byb2R1Y3Qtc29ydC50eXBlJ1xyXG5cclxuZXhwb3J0IHR5cGUgRmV0Y2hQcm9kdWN0c09wdGlvbnMgPSB7XHJcbiAgcGFnZT86IG51bWJlclxyXG4gIHBlclBhZ2U/OiBudW1iZXJcclxuICBzb3J0PzogUHJvZHVjdFNvcnRcclxuICBtYWluR2VuZGVyPzogUHJvZHVjdEdlbmRlclxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmV0Y2gtcHJvZHVjdHMtcGFyYW1zLnR5cGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL3NlcnZpY2VzL2NhdGFsb2cvdHlwZXMvZmV0Y2gtcHJvZHVjdHMtcGFyYW1zLnR5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENhdGVnb3J5IH0gZnJvbSAnQGluZnJhYjRhL2Nvbm5lY3QnXHJcblxyXG5pbXBvcnQgeyBDYXRhbG9nRmlsdGVycyB9IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMnXHJcblxyXG5pbXBvcnQgeyBGZXRjaFByb2R1Y3RzT3B0aW9ucyB9IGZyb20gJy4vZmV0Y2gtcHJvZHVjdHMtb3B0aW9ucy50eXBlJ1xyXG5cclxuZXhwb3J0IHR5cGUgRmV0Y2hQcm9kdWN0c01haW5QYXJhbXM8VCBleHRlbmRzIENhdGVnb3J5PiA9IHtcclxuICBjYXRlZ29yeT86IFRcclxuICBwcm9maWxlPzogc3RyaW5nW11cclxuICB0ZXJtPzogc3RyaW5nXHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIEZldGNoUHJvZHVjdHNQYXJhbXM8VCBleHRlbmRzIENhdGVnb3J5PiA9IEZldGNoUHJvZHVjdHNPcHRpb25zICZcclxuICAoXHJcbiAgICB8IHtcclxuICAgICAgICBjYXRlZ29yeTogRmV0Y2hQcm9kdWN0c01haW5QYXJhbXM8VD5bJ2NhdGVnb3J5J11cclxuICAgICAgICBmaWx0ZXJzPzogQ2F0YWxvZ0ZpbHRlcnMgJiB7IGN1c3RvbU9wdGlvbnM/OiBuZXZlciB9XHJcbiAgICAgIH1cclxuICAgIHwge1xyXG4gICAgICAgIHByb2ZpbGU6IEZldGNoUHJvZHVjdHNNYWluUGFyYW1zPFQ+Wydwcm9maWxlJ11cclxuICAgICAgICBmaWx0ZXJzPzogQ2F0YWxvZ0ZpbHRlcnMgJiB7IGN1c3RvbU9wdGlvbnM/OiBuZXZlcjsgdGFncz86IG5ldmVyIH1cclxuICAgICAgfVxyXG4gICAgfCB7XHJcbiAgICAgICAgdGVybTogRmV0Y2hQcm9kdWN0c01haW5QYXJhbXM8VD5bJ3Rlcm0nXVxyXG4gICAgICAgIGZpbHRlcnM/OiBDYXRhbG9nRmlsdGVycyAmIHsgY3VzdG9tT3B0aW9ucz86IG5ldmVyIH1cclxuICAgICAgfVxyXG4gIClcclxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmV0Y2gtcHJvZHVjdHMtcmVzcG9uc2UudHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvbm5lY3QtYW5ndWxhci9zcmMvc2VydmljZXMvY2F0YWxvZy90eXBlcy9mZXRjaC1wcm9kdWN0cy1yZXNwb25zZS50eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQcm9kdWN0IH0gZnJvbSAnQGluZnJhYjRhL2Nvbm5lY3QnXHJcblxyXG5leHBvcnQgdHlwZSBGZXRjaFByb2R1Y3RzUmVzcG9uc2UgPSB7XHJcbiAgcHJvZHVjdHM6IHsgZGF0YTogUHJvZHVjdFtdOyB0b3RhbDogbnVtYmVyIH1cclxuICBwYWdlczogbnVtYmVyXHJcbiAgcHJpY2VzOiB7XHJcbiAgICBwcmljZTogeyBtaW46IG51bWJlcjsgbWF4OiBudW1iZXIgfVxyXG4gICAgc3Vic2NyaWJlclByaWNlOiB7IG1pbjogbnVtYmVyOyBtYXg6IG51bWJlciB9XHJcbiAgfVxyXG4gIGJyYW5kcz86IHN0cmluZ1tdXHJcbn1cclxuIl19
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export * from './fetch-products-options.type';
|
|
2
|
+
export * from './fetch-products-params.type';
|
|
3
|
+
export * from './fetch-products-response.type';
|
|
4
|
+
export * from './method-params.type';
|
|
5
|
+
export * from './product-sort.type';
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL3NlcnZpY2VzL2NhdGFsb2cvdHlwZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywrQkFBK0IsQ0FBQTtBQUM3QyxjQUFjLDhCQUE4QixDQUFBO0FBQzVDLGNBQWMsZ0NBQWdDLENBQUE7QUFDOUMsY0FBYyxzQkFBc0IsQ0FBQTtBQUNwQyxjQUFjLHFCQUFxQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9mZXRjaC1wcm9kdWN0cy1vcHRpb25zLnR5cGUnXHJcbmV4cG9ydCAqIGZyb20gJy4vZmV0Y2gtcHJvZHVjdHMtcGFyYW1zLnR5cGUnXHJcbmV4cG9ydCAqIGZyb20gJy4vZmV0Y2gtcHJvZHVjdHMtcmVzcG9uc2UudHlwZSdcclxuZXhwb3J0ICogZnJvbSAnLi9tZXRob2QtcGFyYW1zLnR5cGUnXHJcbmV4cG9ydCAqIGZyb20gJy4vcHJvZHVjdC1zb3J0LnR5cGUnXHJcbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0aG9kLXBhcmFtcy50eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29ubmVjdC1hbmd1bGFyL3NyYy9zZXJ2aWNlcy9jYXRhbG9nL3R5cGVzL21ldGhvZC1wYXJhbXMudHlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2F0ZWdvcnksIFByb2R1Y3QsIFNob3BzIH0gZnJvbSAnQGluZnJhYjRhL2Nvbm5lY3QnXHJcblxyXG5pbXBvcnQgeyBDYXRhbG9nU2VhcmNoUGFyYW1zIH0gZnJvbSAnLi4vLi4vLi4vaW50ZXJmYWNlcydcclxuXHJcbmltcG9ydCB7IEZldGNoUHJvZHVjdHNQYXJhbXMgfSBmcm9tICcuL2ZldGNoLXByb2R1Y3RzLXBhcmFtcy50eXBlJ1xyXG5cclxuZXhwb3J0IHR5cGUgU3RvY2tOb3RpZmljYXRpb25QYXJhbXMgPSB7XHJcbiAgc2hvcDogU2hvcHNcclxuICBwcm9kdWN0SWQ6IHN0cmluZ1xyXG4gIG5hbWU6IHN0cmluZ1xyXG4gIGVtYWlsOiBzdHJpbmdcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgQnVpbGRSZXNwb25zZVBhcmFtczxUIGV4dGVuZHMgQ2F0ZWdvcnkgPSBDYXRlZ29yeT4gPSB7XHJcbiAgZGF0YTogUHJvZHVjdFtdXHJcbiAgdG90YWw6IG51bWJlclxyXG4gIG1heGltdW06IGFueVxyXG4gIG1pbmltYWw6IGFueVxyXG4gIHNlYXJjaFBhcmFtczogQ2F0YWxvZ1NlYXJjaFBhcmFtc1xyXG4gIG9wdGlvbnM6IEZldGNoUHJvZHVjdHNQYXJhbXM8VD5cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1zb3J0LnR5cGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL3NlcnZpY2VzL2NhdGFsb2cvdHlwZXMvcHJvZHVjdC1zb3J0LnR5cGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFByb2R1Y3RTb3J0cyB9IGZyb20gJy4uL2VudW1zJ1xyXG5cclxuZXhwb3J0IHR5cGUgUHJvZHVjdFNvcnQgPSBgJHtQcm9kdWN0U29ydHN9YFxyXG4iXX0=
|
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
import { Inject, Injectable } from '@angular/core';
|
|
2
|
+
import { PersonTypes, Shops, Wishlist, WishlistLogType, } from '@infrab4a/connect';
|
|
3
|
+
import { DEFAULT_SHOP } from '../../consts';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@infrab4a/connect";
|
|
6
|
+
export class WishlistService {
|
|
7
|
+
constructor(wishlistRepository, productRepository, logRepository, shop) {
|
|
8
|
+
this.wishlistRepository = wishlistRepository;
|
|
9
|
+
this.productRepository = productRepository;
|
|
10
|
+
this.logRepository = logRepository;
|
|
11
|
+
this.shop = shop;
|
|
12
|
+
}
|
|
13
|
+
initializeServices(catalogServiceFacade, categoryServiceFacade) {
|
|
14
|
+
this.catalogService = catalogServiceFacade.getCatalogService();
|
|
15
|
+
this.categoryService = categoryServiceFacade.getCategoryService();
|
|
16
|
+
}
|
|
17
|
+
getCatalogService() {
|
|
18
|
+
return this.catalogService;
|
|
19
|
+
}
|
|
20
|
+
getCategoryService() {
|
|
21
|
+
return this.categoryService;
|
|
22
|
+
}
|
|
23
|
+
async create({ personId, title, description, published, userFullName, userPhoto, theme, bannerUrl, personType, personIsSubscriber, }) {
|
|
24
|
+
const wishlistData = this.buildWishlistData({
|
|
25
|
+
title,
|
|
26
|
+
description,
|
|
27
|
+
published,
|
|
28
|
+
userFullName,
|
|
29
|
+
userPhoto,
|
|
30
|
+
theme,
|
|
31
|
+
bannerUrl,
|
|
32
|
+
personType,
|
|
33
|
+
personIsSubscriber,
|
|
34
|
+
personId,
|
|
35
|
+
});
|
|
36
|
+
const existingWishlist = await this.findExistingWishlistByPersonId(personId);
|
|
37
|
+
await this.createWishlistLog(WishlistLogType.CREATE, wishlistData);
|
|
38
|
+
if (existingWishlist)
|
|
39
|
+
return existingWishlist;
|
|
40
|
+
return this.createNewWishlist(wishlistData);
|
|
41
|
+
}
|
|
42
|
+
buildWishlistData({ title, description, published, userFullName, userPhoto, theme, bannerUrl, personType, personIsSubscriber, personId, }) {
|
|
43
|
+
return {
|
|
44
|
+
slug: '',
|
|
45
|
+
name: title,
|
|
46
|
+
description,
|
|
47
|
+
metadatas: [
|
|
48
|
+
{
|
|
49
|
+
shop: this.shop,
|
|
50
|
+
title: `${userFullName} - ${title}`,
|
|
51
|
+
description: `${userFullName} - ${description}`,
|
|
52
|
+
},
|
|
53
|
+
],
|
|
54
|
+
shop: this.shop,
|
|
55
|
+
shops: [this.shop],
|
|
56
|
+
personId,
|
|
57
|
+
personName: userFullName,
|
|
58
|
+
personPhoto: userPhoto,
|
|
59
|
+
brandCategory: false,
|
|
60
|
+
published,
|
|
61
|
+
theme,
|
|
62
|
+
bannerUrl,
|
|
63
|
+
personType: personType ?? PersonTypes.NONE,
|
|
64
|
+
personIsSubscriber: personIsSubscriber ?? false,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
async findExistingWishlistByPersonId(personId) {
|
|
68
|
+
const hasWishlist = await this.wishlistRepository
|
|
69
|
+
.find({
|
|
70
|
+
filters: {
|
|
71
|
+
personId,
|
|
72
|
+
},
|
|
73
|
+
options: {
|
|
74
|
+
enableCount: false,
|
|
75
|
+
},
|
|
76
|
+
orderBy: {
|
|
77
|
+
id: 'asc',
|
|
78
|
+
},
|
|
79
|
+
})
|
|
80
|
+
.then((res) => res.data);
|
|
81
|
+
return hasWishlist.length ? hasWishlist.at(0) : null;
|
|
82
|
+
}
|
|
83
|
+
async createNewWishlist(data) {
|
|
84
|
+
const newWishlist = await this.wishlistRepository.create(data);
|
|
85
|
+
await this.wishlistRepository.update({ id: newWishlist.id, slug: newWishlist.id });
|
|
86
|
+
return Wishlist.toInstance({ ...newWishlist.toPlain(), slug: newWishlist.id });
|
|
87
|
+
}
|
|
88
|
+
async update({ id, title, description, published, userFullName, userPhoto, theme, bannerUrl, personType, personIsSubscriber, }) {
|
|
89
|
+
const data = {
|
|
90
|
+
id,
|
|
91
|
+
name: title,
|
|
92
|
+
description,
|
|
93
|
+
published,
|
|
94
|
+
metadatas: [
|
|
95
|
+
{
|
|
96
|
+
shop: this.shop,
|
|
97
|
+
title: `${userFullName} - ${title}`,
|
|
98
|
+
description: `${userFullName} - ${description}`,
|
|
99
|
+
},
|
|
100
|
+
],
|
|
101
|
+
personName: userFullName,
|
|
102
|
+
personPhoto: userPhoto,
|
|
103
|
+
theme,
|
|
104
|
+
bannerUrl,
|
|
105
|
+
personType: personType ?? PersonTypes.NONE,
|
|
106
|
+
personIsSubscriber: personIsSubscriber ?? false,
|
|
107
|
+
};
|
|
108
|
+
await this.createWishlistLog(WishlistLogType.UPDATE, data);
|
|
109
|
+
return this.wishlistRepository.update(data);
|
|
110
|
+
}
|
|
111
|
+
async delete(wishlistId) {
|
|
112
|
+
const wishlist = await this.findById(wishlistId);
|
|
113
|
+
await this.createWishlistLog(WishlistLogType.DELETE, wishlist);
|
|
114
|
+
return this.wishlistRepository.delete({ id: wishlistId });
|
|
115
|
+
}
|
|
116
|
+
getWishlistBySlug(slug) {
|
|
117
|
+
const [id] = slug.split('-');
|
|
118
|
+
if (+id)
|
|
119
|
+
return this.wishlistRepository.get({ id });
|
|
120
|
+
return this.wishlistRepository.getWishlistBySlug(slug);
|
|
121
|
+
}
|
|
122
|
+
getWishlistsByPerson(personId) {
|
|
123
|
+
return this.wishlistRepository.getWishlistByPerson(personId);
|
|
124
|
+
}
|
|
125
|
+
async addProduct(wishlistId, productId) {
|
|
126
|
+
const wishlist = await this.wishlistRepository.get({ id: wishlistId });
|
|
127
|
+
const hasProduct = wishlist.products.some((p) => p == productId);
|
|
128
|
+
const wishlistData = await this.findById(wishlistId);
|
|
129
|
+
const productData = await this.findProductById(productId);
|
|
130
|
+
await this.createWishlistLog(WishlistLogType.ADD_PRODUCT, wishlistData, productData);
|
|
131
|
+
if (!hasProduct) {
|
|
132
|
+
wishlist.products = [...wishlist.products, productId];
|
|
133
|
+
await this.wishlistRepository.addProduct(wishlistId, productId);
|
|
134
|
+
}
|
|
135
|
+
return wishlist;
|
|
136
|
+
}
|
|
137
|
+
async removeProduct(wishlistId, productId) {
|
|
138
|
+
const wishlist = await this.wishlistRepository.get({ id: wishlistId });
|
|
139
|
+
const productIndex = wishlist.products.findIndex((p) => p == productId);
|
|
140
|
+
if (productIndex != -1) {
|
|
141
|
+
wishlist.products.splice(productIndex, 1);
|
|
142
|
+
const wishlistData = await this.findById(wishlistId);
|
|
143
|
+
const productData = await this.findProductById(productId);
|
|
144
|
+
await this.createWishlistLog(WishlistLogType.REMOVE_PRODUCT, wishlistData, productData);
|
|
145
|
+
await this.wishlistRepository.removeProduct(wishlistId, productId);
|
|
146
|
+
}
|
|
147
|
+
return wishlist;
|
|
148
|
+
}
|
|
149
|
+
async findById(id) {
|
|
150
|
+
return this.wishlistRepository
|
|
151
|
+
.find({
|
|
152
|
+
fields: ['id', 'name', 'description', 'personId', 'personIsSubscriber', 'personType', 'personName'],
|
|
153
|
+
filters: {
|
|
154
|
+
id,
|
|
155
|
+
},
|
|
156
|
+
})
|
|
157
|
+
.then((res) => res.data.at(0));
|
|
158
|
+
}
|
|
159
|
+
async findProductById(id) {
|
|
160
|
+
return this.productRepository
|
|
161
|
+
.find({
|
|
162
|
+
fields: ['id', 'sku', 'EAN', 'name', 'brand'],
|
|
163
|
+
filters: {
|
|
164
|
+
id,
|
|
165
|
+
},
|
|
166
|
+
})
|
|
167
|
+
.then((res) => res.data.at(0));
|
|
168
|
+
}
|
|
169
|
+
async createWishlistLog(type, wishlist, product) {
|
|
170
|
+
switch (type) {
|
|
171
|
+
case WishlistLogType.CREATE:
|
|
172
|
+
case WishlistLogType.UPDATE:
|
|
173
|
+
case WishlistLogType.DELETE:
|
|
174
|
+
await this.createWishlistOperationLog(type, wishlist);
|
|
175
|
+
break;
|
|
176
|
+
case WishlistLogType.ADD_PRODUCT:
|
|
177
|
+
case WishlistLogType.REMOVE_PRODUCT:
|
|
178
|
+
await this.createWishlistProductLog(type, wishlist, product);
|
|
179
|
+
break;
|
|
180
|
+
default:
|
|
181
|
+
break;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
async createWishlistOperationLog(type, wishlist) {
|
|
185
|
+
const operation = this.getOperationTypeFromWishlistLogType(type);
|
|
186
|
+
await this.logRepository.create({
|
|
187
|
+
collection: 'wishlist',
|
|
188
|
+
date: new Date(),
|
|
189
|
+
operation,
|
|
190
|
+
documentId: wishlist.id,
|
|
191
|
+
document: this.buildWishlistLogDocument(wishlist, type),
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
async createWishlistProductLog(type, wishlist, product) {
|
|
195
|
+
await this.logRepository.create({
|
|
196
|
+
collection: 'wishlist',
|
|
197
|
+
date: new Date(),
|
|
198
|
+
operation: 'UPDATE',
|
|
199
|
+
documentId: wishlist.id,
|
|
200
|
+
document: {
|
|
201
|
+
...this.buildWishlistLogDocument(wishlist, type),
|
|
202
|
+
...this.buildProductLogData(product),
|
|
203
|
+
},
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
getOperationTypeFromWishlistLogType(type) {
|
|
207
|
+
if (type === WishlistLogType.CREATE)
|
|
208
|
+
return 'CREATE';
|
|
209
|
+
if (type === WishlistLogType.UPDATE)
|
|
210
|
+
return 'UPDATE';
|
|
211
|
+
return 'DELETE';
|
|
212
|
+
}
|
|
213
|
+
buildWishlistLogDocument(wishlist, type) {
|
|
214
|
+
return {
|
|
215
|
+
id: wishlist.id,
|
|
216
|
+
shop: this.shop,
|
|
217
|
+
name: wishlist.name,
|
|
218
|
+
description: wishlist.description,
|
|
219
|
+
published: wishlist.published,
|
|
220
|
+
type: type,
|
|
221
|
+
personType: wishlist.personType,
|
|
222
|
+
personId: wishlist.personId,
|
|
223
|
+
personName: wishlist.personName,
|
|
224
|
+
personIsSubscriber: wishlist.personIsSubscriber,
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
buildProductLogData(product) {
|
|
228
|
+
return {
|
|
229
|
+
productId: product.id,
|
|
230
|
+
productEAN: product.EAN,
|
|
231
|
+
productSKU: product.sku,
|
|
232
|
+
productName: product.name,
|
|
233
|
+
productBrand: product.brand,
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: WishlistService, deps: [{ token: 'WishlistRepository' }, { token: 'ProductRepository' }, { token: 'LogRepository' }, { token: DEFAULT_SHOP }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
237
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: WishlistService }); }
|
|
238
|
+
}
|
|
239
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: WishlistService, decorators: [{
|
|
240
|
+
type: Injectable
|
|
241
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
242
|
+
type: Inject,
|
|
243
|
+
args: ['WishlistRepository']
|
|
244
|
+
}] }, { type: undefined, decorators: [{
|
|
245
|
+
type: Inject,
|
|
246
|
+
args: ['ProductRepository']
|
|
247
|
+
}] }, { type: undefined, decorators: [{
|
|
248
|
+
type: Inject,
|
|
249
|
+
args: ['LogRepository']
|
|
250
|
+
}] }, { type: i1.Shops, decorators: [{
|
|
251
|
+
type: Inject,
|
|
252
|
+
args: [DEFAULT_SHOP]
|
|
253
|
+
}] }] });
|
|
254
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2lzaGxpc3Quc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvbm5lY3QtYW5ndWxhci9zcmMvc2VydmljZXMvY2F0YWxvZy93aXNobGlzdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ2xELE9BQU8sRUFHTCxXQUFXLEVBR1gsS0FBSyxFQUNMLFFBQVEsRUFDUixlQUFlLEdBRWhCLE1BQU0sbUJBQW1CLENBQUE7QUFFMUIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGNBQWMsQ0FBQTs7O0FBTzNDLE1BQU0sT0FBTyxlQUFlO0lBSTFCLFlBQ2lELGtCQUFzQyxFQUN2QyxpQkFBb0MsRUFDeEMsYUFBNEIsRUFDL0IsSUFBVztRQUhILHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDdkMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUN4QyxrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUMvQixTQUFJLEdBQUosSUFBSSxDQUFPO0lBQ2pELENBQUM7SUFFSixrQkFBa0IsQ0FBQyxvQkFBMEMsRUFBRSxxQkFBNEM7UUFDekcsSUFBSSxDQUFDLGNBQWMsR0FBRyxvQkFBb0IsQ0FBQyxpQkFBaUIsRUFBRSxDQUFBO1FBQzlELElBQUksQ0FBQyxlQUFlLEdBQUcscUJBQXFCLENBQUMsa0JBQWtCLEVBQUUsQ0FBQTtJQUNuRSxDQUFDO0lBRUQsaUJBQWlCO1FBQ2YsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFBO0lBQzVCLENBQUM7SUFFRCxrQkFBa0I7UUFDaEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFBO0lBQzdCLENBQUM7SUFFRCxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQ1gsUUFBUSxFQUNSLEtBQUssRUFDTCxXQUFXLEVBQ1gsU0FBUyxFQUNULFlBQVksRUFDWixTQUFTLEVBQ1Qs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QUFJLEVBQUUsSUFBSTtZQUNWLFVBQVUsRUFBRSxRQUFRLENBQUMsVUFBVTtZQUMvQixRQUFRLEVBQUUsUUFBUSxDQUFDLFFBQVE7WUFDM0IsVUFBVSxFQUFFLFFBQVEsQ0FBQyxVQUFVO1lBQy9CLGtCQUFrQixFQUFFLFFBQVEsQ0FBQyxrQkFBa0I7U0FDaEQsQ0FBQTtJQUNILENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxPQUFnQjtRQUMxQyxPQUFPO1lBQ0wsU0FBUyxFQUFFLE9BQU8sQ0FBQyxFQUFFO1lBQ3JCLFVBQVUsRUFBRSxPQUFPLENBQUMsR0FBRztZQUN2QixVQUFVLEVBQUUsT0FBTyxDQUFDLEdBQUc7WUFDdkIsV0FBVyxFQUFFLE9BQU8sQ0FBQyxJQUFJO1lBQ3pCLFlBQVksRUFBRSxPQUFPLENBQUMsS0FBSztTQUM1QixDQUFBO0lBQ0gsQ0FBQzs4R0FwVlUsZUFBZSxrQkFLaEIsb0JBQW9CLGFBQ3BCLG1CQUFtQixhQUNuQixlQUFlLGFBQ2YsWUFBWTtrSEFSWCxlQUFlOzsyRkFBZixlQUFlO2tCQUQzQixVQUFVOzswQkFNTixNQUFNOzJCQUFDLG9CQUFvQjs7MEJBQzNCLE1BQU07MkJBQUMsbUJBQW1COzswQkFDMUIsTUFBTTsyQkFBQyxlQUFlOzswQkFDdEIsTUFBTTsyQkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcclxuaW1wb3J0IHtcclxuICBMb2dSZXBvc2l0b3J5LFxyXG4gIFBlcnNvblR5cGUsXHJcbiAgUGVyc29uVHlwZXMsXHJcbiAgUHJvZHVjdCxcclxuICBQcm9kdWN0UmVwb3NpdG9yeSxcclxuICBTaG9wcyxcclxuICBXaXNobGlzdCxcclxuICBXaXNobGlzdExvZ1R5cGUsXHJcbiAgV2lzaGxpc3RSZXBvc2l0b3J5LFxyXG59IGZyb20gJ0BpbmZyYWI0YS9jb25uZWN0J1xyXG5cclxuaW1wb3J0IHsgREVGQVVMVF9TSE9QIH0gZnJvbSAnLi4vLi4vY29uc3RzJ1xyXG5cclxuaW1wb3J0IHsgQ2F0YWxvZ1NlcnZpY2UgfSBmcm9tICcuL2NhdGFsb2cuc2VydmljZSdcclxuaW1wb3J0IHsgQ2F0ZWdvcnlTZXJ2aWNlIH0gZnJvbSAnLi9jYXRlZ29yeS5zZXJ2aWNlJ1xyXG5pbXBvcnQgeyBDYXRhbG9nU2VydmljZUZhY2FkZSwgQ2F0ZWdvcnlTZXJ2aWNlRmFjYWRlIH0gZnJvbSAnLi9mYWNhZGVzJ1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgV2lzaGxpc3RTZXJ2aWNlIHtcclxuICBwcml2YXRlIGNhdGFsb2dTZXJ2aWNlOiBDYXRhbG9nU2VydmljZVxyXG4gIHByaXZhdGUgY2F0ZWdvcnlTZXJ2aWNlOiBDYXRlZ29yeVNlcnZpY2VcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBASW5qZWN0KCdXaXNobGlzdFJlcG9zaXRvcnknKSBwcml2YXRlIHJlYWRvbmx5IHdpc2hsaXN0UmVwb3NpdG9yeTogV2lzaGxpc3RSZXBvc2l0b3J5LFxyXG4gICAgQEluamVjdCgnUHJvZHVjdFJlcG9zaXRvcnknKSBwcml2YXRlIHJlYWRvbmx5IHByb2R1Y3RSZXBvc2l0b3J5OiBQcm9kdWN0UmVwb3NpdG9yeSxcclxuICAgIEBJbmplY3QoJ0xvZ1JlcG9zaXRvcnknKSBwcml2YXRlIHJlYWRvbmx5IGxvZ1JlcG9zaXRvcnk6IExvZ1JlcG9zaXRvcnksXHJcbiAgICBASW5qZWN0KERFRkFVTFRfU0hPUCkgcHJpdmF0ZSByZWFkb25seSBzaG9wOiBTaG9wcyxcclxuICApIHt9XHJcblxyXG4gIGluaXRpYWxpemVTZXJ2aWNlcyhjYXRhbG9nU2VydmljZUZhY2FkZTogQ2F0YWxvZ1NlcnZpY2VGYWNhZGUsIGNhdGVnb3J5U2VydmljZUZhY2FkZTogQ2F0ZWdvcnlTZXJ2aWNlRmFjYWRlKTogdm9pZCB7XHJcbiAgICB0aGlzLmNhdGFsb2dTZXJ2aWNlID0gY2F0YWxvZ1NlcnZpY2VGYWNhZGUuZ2V0Q2F0YWxvZ1NlcnZpY2UoKVxyXG4gICAgdGhpcy5jYXRlZ29yeVNlcnZpY2UgPSBjYXRlZ29yeVNlcnZpY2VGYWNhZGUuZ2V0Q2F0ZWdvcnlTZXJ2aWNlKClcclxuICB9XHJcblxyXG4gIGdldENhdGFsb2dTZXJ2aWNlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuY2F0YWxvZ1NlcnZpY2VcclxuICB9XHJcblxyXG4gIGdldENhdGVnb3J5U2VydmljZSgpIHtcclxuICAgIHJldHVybiB0aGlzLmNhdGVnb3J5U2VydmljZVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgY3JlYXRlKHtcclxuICAgIHBlcnNvbklkLFxyXG4gICAgdGl0bGUsXHJcbiAgICBkZXNjcmlwdGlvbixcclxuICAgIHB1Ymxpc2hlZCxcclxuICAgIHVzZXJGdWxsTmFtZSxcclxuICAgIHVzZXJQaG90byxcclxuICAgIHRoZW1lLFxyXG4gICAgYmFubmVyVXJsLFxyXG4gICAgcGVyc29uVHlwZSxcclxuICAgIHBlcnNvbklzU3Vic2NyaWJlcixcclxuICB9OiB7XHJcbiAgICBwZXJzb25JZDogc3RyaW5nXHJcbiAgICB0aXRsZTogc3RyaW5nXHJcbiAgICBkZXNjcmlwdGlvbjogc3RyaW5nXHJcbiAgICBwdWJsaXNoZWQ6IGJvb2xlYW5cclxuICAgIHVzZXJGdWxsTmFtZTogc3RyaW5nXHJcbiAgICB1c2VyUGhvdG8/OiBzdHJpbmdcclxuICAgIHRoZW1lPzogc3RyaW5nXHJcbiAgICBiYW5uZXJVcmw/OiBzdHJpbmdcclxuICAgIHBlcnNvblR5cGU/OiBQZXJzb25UeXBlXHJcbiAgICBwZXJzb25Jc1N1YnNjcmliZXI/OiBib29sZWFuXHJcbiAgfSk6IFByb21pc2U8V2lzaGxpc3Q+IHtcclxuICAgIGNvbnN0IHdpc2hsaXN0RGF0YSA9IHRoaXMuYnVpbGRXaXNobGlzdERhdGEoe1xyXG4gICAgICB0aXRsZSxcclxuICAgICAgZGVzY3JpcHRpb24sXHJcbiAgICAgIHB1Ymxpc2hlZCxcclxuICAgICAgdXNlckZ1bGxOYW1lLFxyXG4gICAgICB1c2VyUGhvdG8sXHJcbiAgICAgIHRoZW1lLFxyXG4gICAgICBiYW5uZXJVcmwsXHJcbiAgICAgIHBlcnNvblR5cGUsXHJcbiAgICAgIHBlcnNvbklzU3Vic2NyaWJlcixcclxuICAgICAgcGVyc29uSWQsXHJcbiAgICB9KVxyXG5cclxuICAgIGNvbnN0IGV4aXN0aW5nV2lzaGxpc3QgPSBhd2FpdCB0aGlzLmZpbmRFeGlzdGluZ1dpc2hsaXN0QnlQZXJzb25JZChwZXJzb25JZClcclxuXHJcbiAgICBhd2FpdCB0aGlzLmNyZWF0ZVdpc2hsaXN0TG9nKFdpc2hsaXN0TG9nVHlwZS5DUkVBVEUsIHdpc2hsaXN0RGF0YSBhcyBXaXNobGlzdClcclxuXHJcbiAgICBpZiAoZXhpc3RpbmdXaXNobGlzdCkgcmV0dXJuIGV4aXN0aW5nV2lzaGxpc3RcclxuXHJcbiAgICByZXR1cm4gdGhpcy5jcmVhdGVOZXdXaXNobGlzdCh3aXNobGlzdERhdGEpXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGJ1aWxkV2lzaGxpc3REYXRhKHtcclxuICAgIHRpdGxlLFxyXG4gICAgZGVzY3JpcHRpb24sXHJcbiAgICBwdWJsaXNoZWQsXHJcbiAgICB1c2VyRnVsbE5hbWUsXHJcbiAgICB1c2VyUGhvdG8sXHJcbiAgICB0aGVtZSxcclxuICAgIGJhbm5lclVybCxcclxuICAgIHBlcnNvblR5cGUsXHJcbiAgICBwZXJzb25Jc1N1YnNjcmliZXIsXHJcbiAgICBwZXJzb25JZCxcclxuICB9OiB7XHJcbiAgICB0aXRsZTogc3RyaW5nXHJcbiAgICBkZXNjcmlwdGlvbjogc3RyaW5nXHJcbiAgICBwdWJsaXNoZWQ6IGJvb2xlYW5cclxuICAgIHVzZXJGdWxsTmFtZTogc3RyaW5nXHJcbiAgICB1c2VyUGhvdG8/OiBzdHJpbmdcclxuICAgIHRoZW1lPzogc3RyaW5nXHJcbiAgICBiYW5uZXJVcmw/OiBzdHJpbmdcclxuICAgIHBlcnNvblR5cGU/OiBQZXJzb25UeXBlXHJcbiAgICBwZXJzb25Jc1N1YnNjcmliZXI/OiBib29sZWFuXHJcbiAgICBwZXJzb25JZDogc3RyaW5nXHJcbiAgfSkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgc2x1ZzogJycsXHJcbiAgICAgIG5hbWU6IHRpdGxlLFxyXG4gICAgICBkZXNjcmlwdGlvbixcclxuICAgICAgbWV0YWRhdGFzOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgc2hvcDogdGhpcy5zaG9wLFxyXG4gICAgICAgICAgdGl0bGU6IGAke3VzZXJGdWxsTmFtZX0gLSAke3RpdGxlfWAsXHJcbiAgICAgICAgICBkZXNjcmlwdGlvbjogYCR7dXNlckZ1bGxOYW1lfSAtICR7ZGVzY3JpcHRpb259YCxcclxuICAgICAgICB9LFxyXG4gICAgICBdLFxyXG4gICAgICBzaG9wOiB0aGlzLnNob3AsXHJcbiAgICAgIHNob3BzOiBbdGhpcy5zaG9wXSxcclxuICAgICAgcGVyc29uSWQsXHJcbiAgICAgIHBlcnNvbk5hbWU6IHVzZXJGdWxsTmFtZSxcclxuICAgICAgcGVyc29uUGhvdG86IHVzZXJQaG90byxcclxuICAgICAgYnJhbmRDYXRlZ29yeTogZmFsc2UsXHJcbiAgICAgIHB1Ymxpc2hlZCxcclxuICAgICAgdGhlbWUsXHJcbiAgICAgIGJhbm5lclVybCxcclxuICAgICAgcGVyc29uVHlwZTogcGVyc29uVHlwZSA/PyBQZXJzb25UeXBlcy5OT05FLFxyXG4gICAgICBwZXJzb25Jc1N1YnNjcmliZXI6IHBlcnNvbklzU3Vic2NyaWJlciA/PyBmYWxzZSxcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgZmluZEV4aXN0aW5nV2lzaGxpc3RCeVBlcnNvbklkKHBlcnNvbklkOiBzdHJpbmcpOiBQcm9taXNlPFdpc2hsaXN0IHwgbnVsbD4ge1xyXG4gICAgY29uc3QgaGFzV2lzaGxpc3QgPSBhd2FpdCB0aGlzLndpc2hsaXN0UmVwb3NpdG9yeVxyXG4gICAgICAuZmluZCh7XHJcbiAgICAgICAgZmlsdGVyczoge1xyXG4gICAgICAgICAgcGVyc29uSWQsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBvcHRpb25zOiB7XHJcbiAgICAgICAgICBlbmFibGVDb3VudDogZmFsc2UsXHJcbiAgICAgICAgfSxcclxuICAgICAgICBvcmRlckJ5OiB7XHJcbiAgICAgICAgICBpZDogJ2FzYycsXHJcbiAgICAgICAgfSxcclxuICAgICAgfSlcclxuICAgICAgLnRoZW4oKHJlcykgPT4gcmVzLmRhdGEpXHJcblxyXG4gICAgcmV0dXJuIGhhc1dpc2hsaXN0Lmxlbmd0aCA/IGhhc1dpc2hsaXN0LmF0KDApIDogbnVsbFxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBjcmVhdGVOZXdXaXNobGlzdChkYXRhOiBhbnkpOiBQcm9taXNlPFdpc2hsaXN0PiB7XHJcbiAgICBjb25zdCBuZXdXaXNobGlzdCA9IGF3YWl0IHRoaXMud2lzaGxpc3RSZXBvc2l0b3J5LmNyZWF0ZShkYXRhKVxyXG5cclxuICAgIGF3YWl0IHRoaXMud2lzaGxpc3RSZXBvc2l0b3J5LnVwZGF0ZSh7IGlkOiBuZXdXaXNobGlzdC5pZCwgc2x1ZzogbmV3V2lzaGxpc3QuaWQgfSlcclxuXHJcbiAgICByZXR1cm4gV2lzaGxpc3QudG9JbnN0YW5jZSh7IC4uLm5ld1dpc2hsaXN0LnRvUGxhaW4oKSwgc2x1ZzogbmV3V2lzaGxpc3QuaWQgfSlcclxuICB9XHJcblxyXG4gIGFzeW5jIHVwZGF0ZSh7XHJcbiAgICBpZCxcclxuICAgIHRpdGxlLFxyXG4gICAgZGVzY3JpcHRpb24sXHJcbiAgICBwdWJsaXNoZWQsXHJcbiAgICB1c2VyRnVsbE5hbWUsXHJcbiAgICB1c2VyUGhvdG8sXHJcbiAgICB0aGVtZSxcclxuICAgIGJhbm5lclVybCxcclxuICAgIHBlcnNvblR5cGUsXHJcbiAgICBwZXJzb25Jc1N1YnNjcmliZXIsXHJcbiAgfToge1xyXG4gICAgaWQ6IHN0cmluZ1xyXG4gICAgdGl0bGU6IHN0cmluZ1xyXG4gICAgZGVzY3JpcHRpb246IHN0cmluZ1xyXG4gICAgcHVibGlzaGVkOiBib29sZWFuXHJcbiAgICB1c2VyRnVsbE5hbWU6IHN0cmluZ1xyXG4gICAgdXNlclBob3RvPzogc3RyaW5nXHJcbiAgICB0aGVtZT86IHN0cmluZ1xyXG4gICAgYmFubmVyVXJsPzogc3RyaW5nXHJcbiAgICBwZXJzb25UeXBlPzogUGVyc29uVHlwZVxyXG4gICAgcGVyc29uSXNTdWJzY3JpYmVyPzogYm9vbGVhblxyXG4gIH0pOiBQcm9taXNlPFdpc2hsaXN0PiB7XHJcbiAgICBjb25zdCBkYXRhID0ge1xyXG4gICAgICBpZCxcclxuICAgICAgbmFtZTogdGl0bGUsXHJcbiAgICAgIGRlc2NyaXB0aW9uLFxyXG4gICAgICBwdWJsaXNoZWQsXHJcbiAgICAgIG1ldGFkYXRhczogW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIHNob3A6IHRoaXMuc2hvcCxcclxuICAgICAgICAgIHRpdGxlOiBgJHt1c2VyRnVsbE5hbWV9IC0gJHt0aXRsZX1gLFxyXG4gICAgICAgICAgZGVzY3JpcHRpb246IGAke3VzZXJGdWxsTmFtZX0gLSAke2Rlc2NyaXB0aW9ufWAsXHJcbiAgICAgICAgfSxcclxuICAgICAgXSxcclxuICAgICAgcGVyc29uTmFtZTogdXNlckZ1bGxOYW1lLFxyXG4gICAgICBwZXJzb25QaG90bzogdXNlclBob3RvLFxyXG4gICAgICB0aGVtZSxcclxuICAgICAgYmFubmVyVXJsLFxyXG4gICAgICBwZXJzb25UeXBlOiBwZXJzb25UeXBlID8/IFBlcnNvblR5cGVzLk5PTkUsXHJcbiAgICAgIHBlcnNvbklzU3Vic2NyaWJlcjogcGVyc29uSXNTdWJzY3JpYmVyID8/IGZhbHNlLFxyXG4gICAgfVxyXG5cclxuICAgIGF3YWl0IHRoaXMuY3JlYXRlV2lzaGxpc3RMb2coV2lzaGxpc3RMb2dUeXBlLlVQREFURSwgZGF0YSBhcyBXaXNobGlzdClcclxuXHJcbiAgICByZXR1cm4gdGhpcy53aXNobGlzdFJlcG9zaXRvcnkudXBkYXRlKGRhdGEpXHJcbiAgfVxyXG5cclxuICBhc3luYyBkZWxldGUod2lzaGxpc3RJZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBjb25zdCB3aXNobGlzdCA9IGF3YWl0IHRoaXMuZmluZEJ5SWQod2lzaGxpc3RJZClcclxuXHJcbiAgICBhd2FpdCB0aGlzLmNyZWF0ZVdpc2hsaXN0TG9nKFdpc2hsaXN0TG9nVHlwZS5ERUxFVEUsIHdpc2hsaXN0KVxyXG5cclxuICAgIHJldHVybiB0aGlzLndpc2hsaXN0UmVwb3NpdG9yeS5kZWxldGUoeyBpZDogd2lzaGxpc3RJZCB9KVxyXG4gIH1cclxuXHJcbiAgZ2V0V2lzaGxpc3RCeVNsdWcoc2x1Zzogc3RyaW5nKTogUHJvbWlzZTxXaXNobGlzdD4ge1xyXG4gICAgY29uc3QgW2lkXSA9IHNsdWcuc3BsaXQoJy0nKVxyXG5cclxuICAgIGlmICgraWQpIHJldHVybiB0aGlzLndpc2hsaXN0UmVwb3NpdG9yeS5nZXQoeyBpZCB9KVxyXG5cclxuICAgIHJldHVybiB0aGlzLndpc2hsaXN0UmVwb3NpdG9yeS5nZXRXaXNobGlzdEJ5U2x1ZyhzbHVnKVxyXG4gIH1cclxuXHJcbiAgZ2V0V2lzaGxpc3RzQnlQZXJzb24ocGVyc29uSWQ6IHN0cmluZyk6IFByb21pc2U8V2lzaGxpc3RbXT4ge1xyXG4gICAgcmV0dXJuIHRoaXMud2lzaGxpc3RSZXBvc2l0b3J5LmdldFdpc2hsaXN0QnlQZXJzb24ocGVyc29uSWQpXHJcbiAgfVxyXG5cclxuICBhc3luYyBhZGRQcm9kdWN0KHdpc2hsaXN0SWQ6IHN0cmluZywgcHJvZHVjdElkOiBzdHJpbmcpOiBQcm9taXNlPFdpc2hsaXN0PiB7XHJcbiAgICBjb25zdCB3aXNobGlzdCA9IGF3YWl0IHRoaXMud2lzaGxpc3RSZXBvc2l0b3J5LmdldCh7IGlkOiB3aXNobGlzdElkIH0pXHJcbiAgICBjb25zdCBoYXNQcm9kdWN0ID0gd2lzaGxpc3QucHJvZHVjdHMuc29tZSgocCkgPT4gcCA9PSBwcm9kdWN0SWQpXHJcblxyXG4gICAgY29uc3Qgd2lzaGxpc3REYXRhID0gYXdhaXQgdGhpcy5maW5kQnlJZCh3aXNobGlzdElkKVxyXG4gICAgY29uc3QgcHJvZHVjdERhdGEgPSBhd2FpdCB0aGlzLmZpbmRQcm9kdWN0QnlJZChwcm9kdWN0SWQpXHJcblxyXG4gICAgYXdhaXQgdGhpcy5jcmVhdGVXaXNobGlzdExvZyhXaXNobGlzdExvZ1R5cGUuQUREX1BST0RVQ1QsIHdpc2hsaXN0RGF0YSwgcHJvZHVjdERhdGEpXHJcblxyXG4gICAgaWYgKCFoYXNQcm9kdWN0KSB7XHJcbiAgICAgIHdpc2hsaXN0LnByb2R1Y3RzID0gWy4uLndpc2hsaXN0LnByb2R1Y3RzLCBwcm9kdWN0SWRdXHJcbiAgICAgIGF3YWl0IHRoaXMud2lzaGxpc3RSZXBvc2l0b3J5LmFkZFByb2R1Y3Qod2lzaGxpc3RJZCwgcHJvZHVjdElkKVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB3aXNobGlzdFxyXG4gIH1cclxuXHJcbiAgYXN5bmMgcmVtb3ZlUHJvZHVjdCh3aXNobGlzdElkOiBzdHJpbmcsIHByb2R1Y3RJZDogc3RyaW5nKTogUHJvbWlzZTxXaXNobGlzdD4ge1xyXG4gICAgY29uc3Qgd2lzaGxpc3QgPSBhd2FpdCB0aGlzLndpc2hsaXN0UmVwb3NpdG9yeS5nZXQoeyBpZDogd2lzaGxpc3RJZCB9KVxyXG4gICAgY29uc3QgcHJvZHVjdEluZGV4ID0gd2lzaGxpc3QucHJvZHVjdHMuZmluZEluZGV4KChwKSA9PiBwID09IHByb2R1Y3RJZClcclxuXHJcbiAgICBpZiAocHJvZHVjdEluZGV4ICE9IC0xKSB7XHJcbiAgICAgIHdpc2hsaXN0LnByb2R1Y3RzLnNwbGljZShwcm9kdWN0SW5kZXgsIDEpXHJcbiAgICAgIGNvbnN0IHdpc2hsaXN0RGF0YSA9IGF3YWl0IHRoaXMuZmluZEJ5SWQod2lzaGxpc3RJZClcclxuICAgICAgY29uc3QgcHJvZHVjdERhdGEgPSBhd2FpdCB0aGlzLmZpbmRQcm9kdWN0QnlJZChwcm9kdWN0SWQpXHJcblxyXG4gICAgICBhd2FpdCB0aGlzLmNyZWF0ZVdpc2hsaXN0TG9nKFdpc2hsaXN0TG9nVHlwZS5SRU1PVkVfUFJPRFVDVCwgd2lzaGxpc3REYXRhLCBwcm9kdWN0RGF0YSlcclxuICAgICAgYXdhaXQgdGhpcy53aXNobGlzdFJlcG9zaXRvcnkucmVtb3ZlUHJvZHVjdCh3aXNobGlzdElkLCBwcm9kdWN0SWQpXHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHdpc2hsaXN0XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIGZpbmRCeUlkKGlkOiBzdHJpbmcpOiBQcm9taXNlPFdpc2hsaXN0PiB7XHJcbiAgICByZXR1cm4gdGhpcy53aXNobGlzdFJlcG9zaXRvcnlcclxuICAgICAgLmZpbmQoe1xyXG4gICAgICAgIGZpZWxkczogWydpZCcsICduYW1lJywgJ2Rlc2NyaXB0aW9uJywgJ3BlcnNvbklkJywgJ3BlcnNvbklzU3Vic2NyaWJlcicsICdwZXJzb25UeXBlJywgJ3BlcnNvbk5hbWUnXSxcclxuICAgICAgICBmaWx0ZXJzOiB7XHJcbiAgICAgICAgICBpZCxcclxuICAgICAgICB9LFxyXG4gICAgICB9KVxyXG4gICAgICAudGhlbigocmVzKSA9PiByZXMuZGF0YS5hdCgwKSlcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgZmluZFByb2R1Y3RCeUlkKGlkOiBzdHJpbmcpOiBQcm9taXNlPFByb2R1Y3Q+IHtcclxuICAgIHJldHVybiB0aGlzLnByb2R1Y3RSZXBvc2l0b3J5XHJcbiAgICAgIC5maW5kKHtcclxuICAgICAgICBmaWVsZHM6IFsnaWQnLCAnc2t1JywgJ0VBTicsICduYW1lJywgJ2JyYW5kJ10sXHJcbiAgICAgICAgZmlsdGVyczoge1xyXG4gICAgICAgICAgaWQsXHJcbiAgICAgICAgfSxcclxuICAgICAgfSlcclxuICAgICAgLnRoZW4oKHJlcykgPT4gcmVzLmRhdGEuYXQoMCkpXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIGNyZWF0ZVdpc2hsaXN0TG9nKHR5cGU6IFdpc2hsaXN0TG9nVHlwZSwgd2lzaGxpc3Q6IFdpc2hsaXN0LCBwcm9kdWN0PzogUHJvZHVjdCkge1xyXG4gICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgIGNhc2UgV2lzaGxpc3RMb2dUeXBlLkNSRUFURTpcclxuICAgICAgY2FzZSBXaXNobGlzdExvZ1R5cGUuVVBEQVRFOlxyXG4gICAgICBjYXNlIFdpc2hsaXN0TG9nVHlwZS5ERUxFVEU6XHJcbiAgICAgICAgYXdhaXQgdGhpcy5jcmVhdGVXaXNobGlzdE9wZXJhdGlvbkxvZyh0eXBlLCB3aXNobGlzdClcclxuICAgICAgICBicmVha1xyXG5cclxuICAgICAgY2FzZSBXaXNobGlzdExvZ1R5cGUuQUREX1BST0RVQ1Q6XHJcbiAgICAgIGNhc2UgV2lzaGxpc3RMb2dUeXBlLlJFTU9WRV9QUk9EVUNUOlxyXG4gICAgICAgIGF3YWl0IHRoaXMuY3JlYXRlV2lzaGxpc3RQcm9kdWN0TG9nKHR5cGUsIHdpc2hsaXN0LCBwcm9kdWN0KVxyXG4gICAgICAgIGJyZWFrXHJcblxyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIGJyZWFrXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIGNyZWF0ZVdpc2hsaXN0T3BlcmF0aW9uTG9nKHR5cGU6IFdpc2hsaXN0TG9nVHlwZSwgd2lzaGxpc3Q6IFdpc2hsaXN0KTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBjb25zdCBvcGVyYXRpb24gPSB0aGlzLmdldE9wZXJhdGlvblR5cGVGcm9tV2lzaGxpc3RMb2dUeXBlKHR5cGUpXHJcblxyXG4gICAgYXdhaXQgdGhpcy5sb2dSZXBvc2l0b3J5LmNyZWF0ZSh7XHJcbiAgICAgIGNvbGxlY3Rpb246ICd3aXNobGlzdCcsXHJcbiAgICAgIGRhdGU6IG5ldyBEYXRlKCksXHJcbiAgICAgIG9wZXJhdGlvbixcclxuICAgICAgZG9jdW1lbnRJZDogd2lzaGxpc3QuaWQsXHJcbiAgICAgIGRvY3VtZW50OiB0aGlzLmJ1aWxkV2lzaGxpc3RMb2dEb2N1bWVudCh3aXNobGlzdCwgdHlwZSksXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBjcmVhdGVXaXNobGlzdFByb2R1Y3RMb2codHlwZTogV2lzaGxpc3RMb2dUeXBlLCB3aXNobGlzdDogV2lzaGxpc3QsIHByb2R1Y3Q6IFByb2R1Y3QpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGF3YWl0IHRoaXMubG9nUmVwb3NpdG9yeS5jcmVhdGUoe1xyXG4gICAgICBjb2xsZWN0aW9uOiAnd2lzaGxpc3QnLFxyXG4gICAgICBkYXRlOiBuZXcgRGF0ZSgpLFxyXG4gICAgICBvcGVyYXRpb246ICdVUERBVEUnLFxyXG4gICAgICBkb2N1bWVudElkOiB3aXNobGlzdC5pZCxcclxuICAgICAgZG9jdW1lbnQ6IHtcclxuICAgICAgICAuLi50aGlzLmJ1aWxkV2lzaGxpc3RMb2dEb2N1bWVudCh3aXNobGlzdCwgdHlwZSksXHJcbiAgICAgICAgLi4udGhpcy5idWlsZFByb2R1Y3RMb2dEYXRhKHByb2R1Y3QpLFxyXG4gICAgICB9LFxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0T3BlcmF0aW9uVHlwZUZyb21XaXNobGlzdExvZ1R5cGUodHlwZTogV2lzaGxpc3RMb2dUeXBlKTogJ0NSRUFURScgfCAnVVBEQVRFJyB8ICdERUxFVEUnIHtcclxuICAgIGlmICh0eXBlID09PSBXaXNobGlzdExvZ1R5cGUuQ1JFQVRFKSByZXR1cm4gJ0NSRUFURSdcclxuXHJcbiAgICBpZiAodHlwZSA9PT0gV2lzaGxpc3RMb2dUeXBlLlVQREFURSkgcmV0dXJuICdVUERBVEUnXHJcblxyXG4gICAgcmV0dXJuICdERUxFVEUnXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGJ1aWxkV2lzaGxpc3RMb2dEb2N1bWVudCh3aXNobGlzdDogV2lzaGxpc3QsIHR5cGU6IFdpc2hsaXN0TG9nVHlwZSkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgaWQ6IHdpc2hsaXN0LmlkLFxyXG4gICAgICBzaG9wOiB0aGlzLnNob3AsXHJcbiAgICAgIG5hbWU6IHdpc2hsaXN0Lm5hbWUsXHJcbiAgICAgIGRlc2NyaXB0aW9uOiB3aXNobGlzdC5kZXNjcmlwdGlvbixcclxuICAgICAgcHVibGlzaGVkOiB3aXNobGlzdC5wdWJsaXNoZWQsXHJcbiAgICAgIHR5cGU6IHR5cGUsXHJcbiAgICAgIHBlcnNvblR5cGU6IHdpc2hsaXN0LnBlcnNvblR5cGUsXHJcbiAgICAgIHBlcnNvbklkOiB3aXNobGlzdC5wZXJzb25JZCxcclxuICAgICAgcGVyc29uTmFtZTogd2lzaGxpc3QucGVyc29uTmFtZSxcclxuICAgICAgcGVyc29uSXNTdWJzY3JpYmVyOiB3aXNobGlzdC5wZXJzb25Jc1N1YnNjcmliZXIsXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGJ1aWxkUHJvZHVjdExvZ0RhdGEocHJvZHVjdDogUHJvZHVjdCkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgcHJvZHVjdElkOiBwcm9kdWN0LmlkLFxyXG4gICAgICBwcm9kdWN0RUFOOiBwcm9kdWN0LkVBTixcclxuICAgICAgcHJvZHVjdFNLVTogcHJvZHVjdC5za3UsXHJcbiAgICAgIHByb2R1Y3ROYW1lOiBwcm9kdWN0Lm5hbWUsXHJcbiAgICAgIHByb2R1Y3RCcmFuZDogcHJvZHVjdC5icmFuZCxcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { HttpClient } from '@angular/common/http';
|
|
2
|
+
import { Inject, Injectable } from '@angular/core';
|
|
3
|
+
import { PERSISTENCE_PROVIDER } from '../../consts';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/common/http";
|
|
6
|
+
export class CheckoutDependenciesFacade {
|
|
7
|
+
constructor(dataPersistence, httpClient) {
|
|
8
|
+
this.dataPersistence = dataPersistence;
|
|
9
|
+
this.httpClient = httpClient;
|
|
10
|
+
}
|
|
11
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: CheckoutDependenciesFacade, deps: [{ token: PERSISTENCE_PROVIDER }, { token: i1.HttpClient }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
12
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: CheckoutDependenciesFacade }); }
|
|
13
|
+
}
|
|
14
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: CheckoutDependenciesFacade, decorators: [{
|
|
15
|
+
type: Injectable
|
|
16
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
17
|
+
type: Inject,
|
|
18
|
+
args: [PERSISTENCE_PROVIDER]
|
|
19
|
+
}] }, { type: i1.HttpClient }] });
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tvdXQtZGVwZW5kZW5jaWVzLmZhY2FkZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvbm5lY3QtYW5ndWxhci9zcmMvc2VydmljZXMvY2hlY2tvdXQvY2hlY2tvdXQtZGVwZW5kZW5jaWVzLmZhY2FkZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDakQsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFbEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sY0FBYyxDQUFBOzs7QUFJbkQsTUFBTSxPQUFPLDBCQUEwQjtJQUNyQyxZQUNnRCxlQUFnQyxFQUM5RCxVQUFzQjtRQURRLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUM5RCxlQUFVLEdBQVYsVUFBVSxDQUFZO0lBQ3JDLENBQUM7OEdBSk8sMEJBQTBCLGtCQUUzQixvQkFBb0I7a0hBRm5CLDBCQUEwQjs7MkZBQTFCLDBCQUEwQjtrQkFEdEMsVUFBVTs7MEJBR04sTUFBTTsyQkFBQyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnXHJcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXHJcblxyXG5pbXBvcnQgeyBQRVJTSVNURU5DRV9QUk9WSURFUiB9IGZyb20gJy4uLy4uL2NvbnN0cydcclxuaW1wb3J0IHsgRGF0YVBlcnNpc3RlbmNlIH0gZnJvbSAnLi4vLi4vcGVyc2lzdGVuY2UnXHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBDaGVja291dERlcGVuZGVuY2llc0ZhY2FkZSB7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBASW5qZWN0KFBFUlNJU1RFTkNFX1BST1ZJREVSKSBwdWJsaWMgcmVhZG9ubHkgZGF0YVBlcnNpc3RlbmNlOiBEYXRhUGVyc2lzdGVuY2UsXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgaHR0cENsaWVudDogSHR0cENsaWVudCxcclxuICApIHt9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Inject, Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class CheckoutRepositoriesFacade {
|
|
4
|
+
constructor(checkoutRepository, userRepository) {
|
|
5
|
+
this.checkoutRepository = checkoutRepository;
|
|
6
|
+
this.userRepository = userRepository;
|
|
7
|
+
}
|
|
8
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: CheckoutRepositoriesFacade, deps: [{ token: 'CheckoutRepository' }, { token: 'UserRepository' }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
9
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: CheckoutRepositoriesFacade }); }
|
|
10
|
+
}
|
|
11
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.3", ngImport: i0, type: CheckoutRepositoriesFacade, decorators: [{
|
|
12
|
+
type: Injectable
|
|
13
|
+
}], ctorParameters: () => [{ type: undefined, decorators: [{
|
|
14
|
+
type: Inject,
|
|
15
|
+
args: ['CheckoutRepository']
|
|
16
|
+
}] }, { type: undefined, decorators: [{
|
|
17
|
+
type: Inject,
|
|
18
|
+
args: ['UserRepository']
|
|
19
|
+
}] }] });
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tvdXQtcmVwb3NpdG9yaWVzLmZhY2FkZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvbm5lY3QtYW5ndWxhci9zcmMvc2VydmljZXMvY2hlY2tvdXQvY2hlY2tvdXQtcmVwb3NpdG9yaWVzLmZhY2FkZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTs7QUFJbEQsTUFBTSxPQUFPLDBCQUEwQjtJQUNyQyxZQUNnRCxrQkFBc0MsRUFDMUMsY0FBOEI7UUFEMUIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUMxQyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7SUFDdkUsQ0FBQzs4R0FKTywwQkFBMEIsa0JBRTNCLG9CQUFvQixhQUNwQixnQkFBZ0I7a0hBSGYsMEJBQTBCOzsyRkFBMUIsMEJBQTBCO2tCQUR0QyxVQUFVOzswQkFHTixNQUFNOzJCQUFDLG9CQUFvQjs7MEJBQzNCLE1BQU07MkJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcclxuaW1wb3J0IHsgQ2hlY2tvdXRSZXBvc2l0b3J5LCBVc2VyUmVwb3NpdG9yeSB9IGZyb20gJ0BpbmZyYWI0YS9jb25uZWN0J1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQ2hlY2tvdXRSZXBvc2l0b3JpZXNGYWNhZGUge1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgQEluamVjdCgnQ2hlY2tvdXRSZXBvc2l0b3J5JykgcHVibGljIHJlYWRvbmx5IGNoZWNrb3V0UmVwb3NpdG9yeTogQ2hlY2tvdXRSZXBvc2l0b3J5LFxyXG4gICAgQEluamVjdCgnVXNlclJlcG9zaXRvcnknKSBwdWJsaWMgcmVhZG9ubHkgdXNlclJlcG9zaXRvcnk6IFVzZXJSZXBvc2l0b3J5LFxyXG4gICkge31cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { CheckoutRepositoriesFacade } from './checkout-repositories.facade';
|
|
2
|
+
export { CheckoutDependenciesFacade } from './checkout-dependencies.facade';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL3NlcnZpY2VzL2NoZWNrb3V0L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGdDQUFnQyxDQUFBO0FBQzNFLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGdDQUFnQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgQ2hlY2tvdXRSZXBvc2l0b3JpZXNGYWNhZGUgfSBmcm9tICcuL2NoZWNrb3V0LXJlcG9zaXRvcmllcy5mYWNhZGUnXHJcbmV4cG9ydCB7IENoZWNrb3V0RGVwZW5kZW5jaWVzRmFjYWRlIH0gZnJvbSAnLi9jaGVja291dC1kZXBlbmRlbmNpZXMuZmFjYWRlJ1xyXG4iXX0=
|