@infrab4a/connect-angular 4.17.1 → 4.17.2
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 +32 -29
- package/angular-elastic-search.module.d.ts +9 -9
- package/angular-firebase-auth.module.d.ts +11 -11
- package/angular-firestore.module.d.ts +17 -17
- package/angular-hasura-graphql.module.d.ts +16 -16
- package/angular-vertex-search.module.d.ts +9 -9
- package/consts/backend-url.const.d.ts +1 -1
- package/consts/category-structure.d.ts +1 -1
- package/consts/default-shop.const.d.ts +1 -1
- package/consts/es-config.const.d.ts +1 -1
- package/consts/firebase-const.d.ts +4 -3
- package/consts/hasura-options.const.d.ts +1 -1
- package/consts/index.d.ts +8 -8
- package/consts/persistence.const.d.ts +1 -1
- package/consts/storage-base-url.const.d.ts +1 -1
- package/consts/vertex-config.const.d.ts +1 -1
- package/esm2020/angular-connect.module.mjs +189 -146
- package/esm2020/angular-elastic-search.module.mjs +34 -34
- package/esm2020/angular-firebase-auth.module.mjs +141 -115
- package/esm2020/angular-firestore.module.mjs +527 -527
- package/esm2020/angular-hasura-graphql.module.mjs +309 -309
- package/esm2020/angular-vertex-search.module.mjs +34 -34
- package/esm2020/consts/backend-url.const.mjs +1 -1
- package/esm2020/consts/category-structure.mjs +2 -2
- package/esm2020/consts/default-shop.const.mjs +2 -2
- package/esm2020/consts/es-config.const.mjs +2 -2
- package/esm2020/consts/firebase-const.mjs +5 -4
- package/esm2020/consts/hasura-options.const.mjs +2 -2
- package/esm2020/consts/index.mjs +9 -9
- package/esm2020/consts/persistence.const.mjs +2 -2
- package/esm2020/consts/storage-base-url.const.mjs +2 -2
- package/esm2020/consts/vertex-config.const.mjs +2 -2
- package/esm2020/helpers/index.mjs +2 -2
- package/esm2020/helpers/mobile-operation-system-checker.helper.mjs +7 -7
- package/esm2020/index.mjs +7 -7
- package/esm2020/infrab4a-connect-angular.mjs +4 -4
- package/esm2020/persistence/cookie-data-persistence.mjs +22 -22
- package/esm2020/persistence/data-persistence.mjs +2 -2
- package/esm2020/persistence/index.mjs +3 -3
- package/esm2020/services/auth.service.mjs +37 -37
- package/esm2020/services/cart.service.mjs +293 -293
- package/esm2020/services/catalog/adapters/category-structure.adapter.mjs +2 -2
- package/esm2020/services/catalog/adapters/index.mjs +4 -4
- package/esm2020/services/catalog/adapters/new-category-structure.adapter.mjs +43 -43
- package/esm2020/services/catalog/adapters/old-category-structure.adapter.mjs +23 -23
- package/esm2020/services/catalog/catalog.service.mjs +295 -295
- package/esm2020/services/catalog/category.service.mjs +51 -51
- package/esm2020/services/catalog/enums/index.mjs +2 -2
- package/esm2020/services/catalog/enums/product-sorts.enum.mjs +11 -11
- package/esm2020/services/catalog/index.mjs +8 -8
- package/esm2020/services/catalog/models/category-with-tree.model.mjs +10 -10
- package/esm2020/services/catalog/models/index.mjs +2 -2
- package/esm2020/services/catalog/types/index.mjs +2 -2
- package/esm2020/services/catalog/types/product-sort.type.mjs +2 -2
- package/esm2020/services/catalog/wishlist.service.mjs +235 -235
- package/esm2020/services/checkout-subscription.service.mjs +50 -50
- package/esm2020/services/checkout.service.mjs +68 -68
- package/esm2020/services/coupon.service.mjs +284 -284
- package/esm2020/services/helpers/index.mjs +2 -2
- package/esm2020/services/helpers/util.helper.mjs +18 -18
- package/esm2020/services/home-shop.service.mjs +125 -125
- package/esm2020/services/index.mjs +11 -11
- package/esm2020/services/order.service.mjs +30 -30
- package/esm2020/services/shipping.service.mjs +96 -96
- package/esm2020/services/types/index.mjs +3 -3
- package/esm2020/services/types/required-checkout-data.type.mjs +2 -2
- package/esm2020/services/types/required-checkout-subscription-data.type.mjs +2 -2
- package/esm2020/services/types/shipping-methods.type.mjs +2 -2
- package/esm2020/types/firebase-app-config.type.mjs +2 -2
- package/esm2020/types/index.mjs +2 -2
- package/fesm2015/infrab4a-connect-angular.mjs +2797 -2727
- package/fesm2015/infrab4a-connect-angular.mjs.map +1 -1
- package/fesm2020/infrab4a-connect-angular.mjs +2746 -2676
- package/fesm2020/infrab4a-connect-angular.mjs.map +1 -1
- package/helpers/index.d.ts +1 -1
- package/helpers/mobile-operation-system-checker.helper.d.ts +3 -3
- package/index.d.ts +6 -6
- package/package.json +1 -1
- package/persistence/cookie-data-persistence.d.ts +10 -10
- package/persistence/data-persistence.d.ts +6 -6
- package/persistence/index.d.ts +2 -2
- package/services/auth.service.d.ts +18 -18
- package/services/cart.service.d.ts +43 -43
- package/services/catalog/adapters/category-structure.adapter.d.ts +4 -4
- package/services/catalog/adapters/index.d.ts +3 -3
- package/services/catalog/adapters/new-category-structure.adapter.d.ts +12 -12
- package/services/catalog/adapters/old-category-structure.adapter.d.ts +10 -10
- package/services/catalog/catalog.service.d.ts +93 -93
- package/services/catalog/category.service.d.ts +20 -20
- package/services/catalog/enums/index.d.ts +1 -1
- package/services/catalog/enums/product-sorts.enum.d.ts +9 -9
- package/services/catalog/index.d.ts +7 -7
- package/services/catalog/models/category-with-tree.model.d.ts +4 -4
- package/services/catalog/models/index.d.ts +1 -1
- package/services/catalog/types/index.d.ts +1 -1
- package/services/catalog/types/product-sort.type.d.ts +2 -2
- package/services/catalog/wishlist.service.d.ts +50 -50
- package/services/checkout-subscription.service.d.ts +19 -19
- package/services/checkout.service.d.ts +27 -27
- package/services/coupon.service.d.ts +33 -33
- package/services/helpers/index.d.ts +1 -1
- package/services/helpers/util.helper.d.ts +3 -3
- package/services/home-shop.service.d.ts +26 -26
- package/services/index.d.ts +10 -10
- package/services/order.service.d.ts +13 -13
- package/services/shipping.service.d.ts +19 -19
- package/services/types/index.d.ts +2 -2
- package/services/types/required-checkout-data.type.d.ts +2 -2
- package/services/types/required-checkout-subscription-data.type.d.ts +2 -2
- package/services/types/shipping-methods.type.d.ts +12 -12
- package/types/firebase-app-config.type.d.ts +1 -1
- package/types/index.d.ts +1 -1
|
@@ -1,50 +1,50 @@
|
|
|
1
|
-
import { Inject, Injectable } from '@angular/core';
|
|
2
|
-
import { CheckoutSubscription, CheckoutTypes, isNil, pick, } from '@infrab4a/connect';
|
|
3
|
-
import { concatMap } from 'rxjs/operators';
|
|
4
|
-
import { PERSISTENCE_PROVIDER } from '../consts';
|
|
5
|
-
import { CouponService } from './coupon.service';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "./coupon.service";
|
|
8
|
-
export class CheckoutSubscriptionService {
|
|
9
|
-
constructor(checkoutSubscriptionRepository, dataPersistence, couponService) {
|
|
10
|
-
this.checkoutSubscriptionRepository = checkoutSubscriptionRepository;
|
|
11
|
-
this.dataPersistence = dataPersistence;
|
|
12
|
-
this.couponService = couponService;
|
|
13
|
-
}
|
|
14
|
-
getCheckoutSubscription(checkoutData) {
|
|
15
|
-
return this.dataPersistence
|
|
16
|
-
.get('checkoutSubscriptionId')
|
|
17
|
-
.pipe(concatMap((id) => !isNil(id) ? this.checkoutSubscriptionRepository.get({ id }) : this.createCheckoutSubscription(checkoutData)));
|
|
18
|
-
}
|
|
19
|
-
clearCheckoutSubscriptionFromSession() {
|
|
20
|
-
return this.dataPersistence.remove('checkoutSubscriptionId');
|
|
21
|
-
}
|
|
22
|
-
checkCoupon(nickname, userEmail) {
|
|
23
|
-
return this.getCheckoutSubscription().pipe(concatMap((checkout) => this.couponService
|
|
24
|
-
.checkCoupon(nickname, CheckoutTypes.SUBSCRIPTION, checkout, checkout.subscriptionPlan.name)
|
|
25
|
-
.pipe()));
|
|
26
|
-
}
|
|
27
|
-
calcDiscountSubscription(coupon) {
|
|
28
|
-
return this.getCheckoutSubscription().pipe(concatMap((checkout) => this.couponService.calcDiscountSubscription(coupon, checkout).pipe()));
|
|
29
|
-
}
|
|
30
|
-
async createCheckoutSubscription(checkoutData) {
|
|
31
|
-
const checkout = await this.checkoutSubscriptionRepository.create({
|
|
32
|
-
createdAt: new Date(),
|
|
33
|
-
...CheckoutSubscription.toInstance(pick(checkoutData, ['user', 'shop'])).toPlain(),
|
|
34
|
-
});
|
|
35
|
-
await this.dataPersistence.set('checkoutSubscriptionId', checkout.id).toPromise();
|
|
36
|
-
return checkout;
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
CheckoutSubscriptionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CheckoutSubscriptionService, deps: [{ token: 'CheckoutSubscriptionRepository' }, { token: PERSISTENCE_PROVIDER }, { token: i1.CouponService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
40
|
-
CheckoutSubscriptionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CheckoutSubscriptionService });
|
|
41
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CheckoutSubscriptionService, decorators: [{
|
|
42
|
-
type: Injectable
|
|
43
|
-
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
44
|
-
type: Inject,
|
|
45
|
-
args: ['CheckoutSubscriptionRepository']
|
|
46
|
-
}] }, { type: undefined, decorators: [{
|
|
47
|
-
type: Inject,
|
|
48
|
-
args: [PERSISTENCE_PROVIDER]
|
|
49
|
-
}] }, { type: i1.CouponService }]; } });
|
|
50
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Inject, Injectable } from '@angular/core';
|
|
2
|
+
import { CheckoutSubscription, CheckoutTypes, isNil, pick, } from '@infrab4a/connect';
|
|
3
|
+
import { concatMap } from 'rxjs/operators';
|
|
4
|
+
import { PERSISTENCE_PROVIDER } from '../consts';
|
|
5
|
+
import { CouponService } from './coupon.service';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "./coupon.service";
|
|
8
|
+
export class CheckoutSubscriptionService {
|
|
9
|
+
constructor(checkoutSubscriptionRepository, dataPersistence, couponService) {
|
|
10
|
+
this.checkoutSubscriptionRepository = checkoutSubscriptionRepository;
|
|
11
|
+
this.dataPersistence = dataPersistence;
|
|
12
|
+
this.couponService = couponService;
|
|
13
|
+
}
|
|
14
|
+
getCheckoutSubscription(checkoutData) {
|
|
15
|
+
return this.dataPersistence
|
|
16
|
+
.get('checkoutSubscriptionId')
|
|
17
|
+
.pipe(concatMap((id) => !isNil(id) ? this.checkoutSubscriptionRepository.get({ id }) : this.createCheckoutSubscription(checkoutData)));
|
|
18
|
+
}
|
|
19
|
+
clearCheckoutSubscriptionFromSession() {
|
|
20
|
+
return this.dataPersistence.remove('checkoutSubscriptionId');
|
|
21
|
+
}
|
|
22
|
+
checkCoupon(nickname, userEmail) {
|
|
23
|
+
return this.getCheckoutSubscription().pipe(concatMap((checkout) => this.couponService
|
|
24
|
+
.checkCoupon(nickname, CheckoutTypes.SUBSCRIPTION, checkout, checkout.subscriptionPlan.name)
|
|
25
|
+
.pipe()));
|
|
26
|
+
}
|
|
27
|
+
calcDiscountSubscription(coupon) {
|
|
28
|
+
return this.getCheckoutSubscription().pipe(concatMap((checkout) => this.couponService.calcDiscountSubscription(coupon, checkout).pipe()));
|
|
29
|
+
}
|
|
30
|
+
async createCheckoutSubscription(checkoutData) {
|
|
31
|
+
const checkout = await this.checkoutSubscriptionRepository.create({
|
|
32
|
+
createdAt: new Date(),
|
|
33
|
+
...CheckoutSubscription.toInstance(pick(checkoutData, ['user', 'shop'])).toPlain(),
|
|
34
|
+
});
|
|
35
|
+
await this.dataPersistence.set('checkoutSubscriptionId', checkout.id).toPromise();
|
|
36
|
+
return checkout;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
CheckoutSubscriptionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CheckoutSubscriptionService, deps: [{ token: 'CheckoutSubscriptionRepository' }, { token: PERSISTENCE_PROVIDER }, { token: i1.CouponService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
40
|
+
CheckoutSubscriptionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CheckoutSubscriptionService });
|
|
41
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CheckoutSubscriptionService, decorators: [{
|
|
42
|
+
type: Injectable
|
|
43
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
44
|
+
type: Inject,
|
|
45
|
+
args: ['CheckoutSubscriptionRepository']
|
|
46
|
+
}] }, { type: undefined, decorators: [{
|
|
47
|
+
type: Inject,
|
|
48
|
+
args: [PERSISTENCE_PROVIDER]
|
|
49
|
+
}] }, { type: i1.CouponService }]; } });
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tvdXQtc3Vic2NyaXB0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jb25uZWN0LWFuZ3VsYXIvc3JjL3NlcnZpY2VzL2NoZWNrb3V0LXN1YnNjcmlwdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ2xELE9BQU8sRUFDTCxvQkFBb0IsRUFFcEIsYUFBYSxFQUViLEtBQUssRUFDTCxJQUFJLEdBQ0wsTUFBTSxtQkFBbUIsQ0FBQTtBQUUxQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFHMUMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sV0FBVyxDQUFBO0FBRWhELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTs7O0FBR2hELE1BQU0sT0FBTywyQkFBMkI7SUFDdEMsWUFFbUIsOEJBQThELEVBQ2hDLGVBQWdDLEVBQzlELGFBQTRCO1FBRjVCLG1DQUE4QixHQUE5Qiw4QkFBOEIsQ0FBZ0M7UUFDaEMsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQzlELGtCQUFhLEdBQWIsYUFBYSxDQUFlO0lBQzVDLENBQUM7SUFFSix1QkFBdUIsQ0FBQyxZQUErQztRQUNyRSxPQUFPLElBQUksQ0FBQyxlQUFlO2FBQ3hCLEdBQUcsQ0FBQyx3QkFBd0IsQ0FBQzthQUM3QixJQUFJLENBQ0gsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FDZixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLDhCQUE4QixDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxZQUFZLENBQUMsQ0FDN0csQ0FDRixDQUFBO0lBQ0wsQ0FBQztJQUVELG9DQUFvQztRQUNsQyxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLHdCQUF3QixDQUFDLENBQUE7SUFDOUQsQ0FBQztJQUVELFdBQVcsQ0FBQyxRQUFnQixFQUFFLFNBQWlCO1FBQzdDLE9BQU8sSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUMsSUFBSSxDQUN4QyxTQUFTLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUNyQixJQUFJLENBQUMsYUFBYTthQUNmLFdBQVcsQ0FBQyxRQUFRLEVBQUUsYUFBYSxDQUFDLFlBQVksRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQzthQUMzRixJQUFJLEVBQUUsQ0FDVixDQUNGLENBQUE7SUFDSCxDQUFDO0lBRUQsd0JBQXdCLENBQUMsTUFBYztRQUNyQyxPQUFPLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDLElBQUksQ0FDeEMsU0FBUyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLHdCQUF3QixDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUM5RixDQUFBO0lBQ0gsQ0FBQztJQUVPLEtBQUssQ0FBQywwQkFBMEIsQ0FDdEMsWUFBK0M7UUFFL0MsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsOEJBQThCLENBQUMsTUFBTSxDQUFDO1lBQ2hFLFNBQVMsRUFBRSxJQUFJLElBQUksRUFBRTtZQUNyQixHQUFHLG9CQUFvQixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUU7U0FDbkYsQ0FBQyxDQUFBO1FBRUYsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyx3QkFBd0IsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUE7UUFFakYsT0FBTyxRQUFRLENBQUE7SUFDakIsQ0FBQzs7d0hBakRVLDJCQUEyQixrQkFFNUIsZ0NBQWdDLGFBRWhDLG9CQUFvQjs0SEFKbkIsMkJBQTJCOzJGQUEzQiwyQkFBMkI7a0JBRHZDLFVBQVU7OzBCQUdOLE1BQU07MkJBQUMsZ0NBQWdDOzswQkFFdkMsTUFBTTsyQkFBQyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHtcbiAgQ2hlY2tvdXRTdWJzY3JpcHRpb24sXG4gIENoZWNrb3V0U3Vic2NyaXB0aW9uUmVwb3NpdG9yeSxcbiAgQ2hlY2tvdXRUeXBlcyxcbiAgQ291cG9uLFxuICBpc05pbCxcbiAgcGljayxcbn0gZnJvbSAnQGluZnJhYjRhL2Nvbm5lY3QnXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcydcbmltcG9ydCB7IGNvbmNhdE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuaW1wb3J0IHsgUmVxdWlyZWRDaGVja291dFN1YnNjcmlwdGlvbkRhdGEgfSBmcm9tICcuL3R5cGVzJ1xuXG5pbXBvcnQgeyBQRVJTSVNURU5DRV9QUk9WSURFUiB9IGZyb20gJy4uL2NvbnN0cydcbmltcG9ydCB7IERhdGFQZXJzaXN0ZW5jZSB9IGZyb20gJy4uL3BlcnNpc3RlbmNlJ1xuaW1wb3J0IHsgQ291cG9uU2VydmljZSB9IGZyb20gJy4vY291cG9uLnNlcnZpY2UnXG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDaGVja291dFN1YnNjcmlwdGlvblNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KCdDaGVja291dFN1YnNjcmlwdGlvblJlcG9zaXRvcnknKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgY2hlY2tvdXRTdWJzY3JpcHRpb25SZXBvc2l0b3J5OiBDaGVja291dFN1YnNjcmlwdGlvblJlcG9zaXRvcnksXG4gICAgQEluamVjdChQRVJTSVNURU5DRV9QUk9WSURFUikgcHJpdmF0ZSByZWFkb25seSBkYXRhUGVyc2lzdGVuY2U6IERhdGFQZXJzaXN0ZW5jZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvdXBvblNlcnZpY2U6IENvdXBvblNlcnZpY2UsXG4gICkge31cblxuICBnZXRDaGVja291dFN1YnNjcmlwdGlvbihjaGVja291dERhdGE/OiBSZXF1aXJlZENoZWNrb3V0U3Vic2NyaXB0aW9uRGF0YSk6IE9ic2VydmFibGU8Q2hlY2tvdXRTdWJzY3JpcHRpb24+IHtcbiAgICByZXR1cm4gdGhpcy5kYXRhUGVyc2lzdGVuY2VcbiAgICAgIC5nZXQoJ2NoZWNrb3V0U3Vic2NyaXB0aW9uSWQnKVxuICAgICAgLnBpcGUoXG4gICAgICAgIGNvbmNhdE1hcCgoaWQpID0+XG4gICAgICAgICAgIWlzTmlsKGlkKSA/IHRoaXMuY2hlY2tvdXRTdWJzY3JpcHRpb25SZXBvc2l0b3J5LmdldCh7IGlkIH0pIDogdGhpcy5jcmVhdGVDaGVja291dFN1YnNjcmlwdGlvbihjaGVja291dERhdGEpLFxuICAgICAgICApLFxuICAgICAgKVxuICB9XG5cbiAgY2xlYXJDaGVja291dFN1YnNjcmlwdGlvbkZyb21TZXNzaW9uKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmRhdGFQZXJzaXN0ZW5jZS5yZW1vdmUoJ2NoZWNrb3V0U3Vic2NyaXB0aW9uSWQnKVxuICB9XG5cbiAgY2hlY2tDb3Vwb24obmlja25hbWU6IHN0cmluZywgdXNlckVtYWlsOiBzdHJpbmcpOiBPYnNlcnZhYmxlPENvdXBvbj4ge1xuICAgIHJldHVybiB0aGlzLmdldENoZWNrb3V0U3Vic2NyaXB0aW9uKCkucGlwZShcbiAgICAgIGNvbmNhdE1hcCgoY2hlY2tvdXQpID0+XG4gICAgICAgIHRoaXMuY291cG9uU2VydmljZVxuICAgICAgICAgIC5jaGVja0NvdXBvbihuaWNrbmFtZSwgQ2hlY2tvdXRUeXBlcy5TVUJTQ1JJUFRJT04sIGNoZWNrb3V0LCBjaGVja291dC5zdWJzY3JpcHRpb25QbGFuLm5hbWUpXG4gICAgICAgICAgLnBpcGUoKSxcbiAgICAgICksXG4gICAgKVxuICB9XG5cbiAgY2FsY0Rpc2NvdW50U3Vic2NyaXB0aW9uKGNvdXBvbjogQ291cG9uKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0Q2hlY2tvdXRTdWJzY3JpcHRpb24oKS5waXBlKFxuICAgICAgY29uY2F0TWFwKChjaGVja291dCkgPT4gdGhpcy5jb3Vwb25TZXJ2aWNlLmNhbGNEaXNjb3VudFN1YnNjcmlwdGlvbihjb3Vwb24sIGNoZWNrb3V0KS5waXBlKCkpLFxuICAgIClcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY3JlYXRlQ2hlY2tvdXRTdWJzY3JpcHRpb24oXG4gICAgY2hlY2tvdXREYXRhPzogUmVxdWlyZWRDaGVja291dFN1YnNjcmlwdGlvbkRhdGEsXG4gICk6IFByb21pc2U8Q2hlY2tvdXRTdWJzY3JpcHRpb24+IHtcbiAgICBjb25zdCBjaGVja291dCA9IGF3YWl0IHRoaXMuY2hlY2tvdXRTdWJzY3JpcHRpb25SZXBvc2l0b3J5LmNyZWF0ZSh7XG4gICAgICBjcmVhdGVkQXQ6IG5ldyBEYXRlKCksXG4gICAgICAuLi5DaGVja291dFN1YnNjcmlwdGlvbi50b0luc3RhbmNlKHBpY2soY2hlY2tvdXREYXRhLCBbJ3VzZXInLCAnc2hvcCddKSkudG9QbGFpbigpLFxuICAgIH0pXG5cbiAgICBhd2FpdCB0aGlzLmRhdGFQZXJzaXN0ZW5jZS5zZXQoJ2NoZWNrb3V0U3Vic2NyaXB0aW9uSWQnLCBjaGVja291dC5pZCkudG9Qcm9taXNlKClcblxuICAgIHJldHVybiBjaGVja291dFxuICB9XG59XG4iXX0=
|
|
@@ -1,68 +1,68 @@
|
|
|
1
|
-
import { Inject, Injectable } from '@angular/core';
|
|
2
|
-
import { Checkout, CheckoutTypes, NotFoundError, Shops, isNil, pick, } from '@infrab4a/connect';
|
|
3
|
-
import { from, of, throwError } from 'rxjs';
|
|
4
|
-
import { concatMap } from 'rxjs/operators';
|
|
5
|
-
import { DEFAULT_SHOP, PERSISTENCE_PROVIDER } from '../consts';
|
|
6
|
-
import { CouponService } from './coupon.service';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "./coupon.service";
|
|
9
|
-
import * as i2 from "@infrab4a/connect";
|
|
10
|
-
export class CheckoutService {
|
|
11
|
-
constructor(couponService, checkoutRepository, userRepository, defaultShop, dataPersistence) {
|
|
12
|
-
this.couponService = couponService;
|
|
13
|
-
this.checkoutRepository = checkoutRepository;
|
|
14
|
-
this.userRepository = userRepository;
|
|
15
|
-
this.defaultShop = defaultShop;
|
|
16
|
-
this.dataPersistence = dataPersistence;
|
|
17
|
-
}
|
|
18
|
-
getCheckout(checkoutData) {
|
|
19
|
-
return this.dataPersistence
|
|
20
|
-
.get('checkoutId')
|
|
21
|
-
.pipe(concatMap((id) => (!isNil(id) ? this.checkoutRepository.get({ id }) : this.createCheckout(checkoutData))));
|
|
22
|
-
}
|
|
23
|
-
getUserByCheckout(checkoutId) {
|
|
24
|
-
return from(this.checkoutRepository.get({ id: checkoutId })).pipe(concatMap((checkout) => checkout?.user?.id ? of(checkout.user) : from(this.userRepository.get({ id: checkout.user.id }))), concatMap((user) => of(user) || throwError(() => new NotFoundError('User is not found'))));
|
|
25
|
-
}
|
|
26
|
-
updateCheckoutLineItems(checkout) {
|
|
27
|
-
return from(this.checkoutRepository.update(Checkout.toInstance({ id: checkout.id, lineItems: checkout.lineItems })));
|
|
28
|
-
}
|
|
29
|
-
updateCheckoutUser(checkout) {
|
|
30
|
-
return from(this.checkoutRepository.update(Checkout.toInstance({ id: checkout.id, user: checkout.user })));
|
|
31
|
-
}
|
|
32
|
-
clearCheckoutFromSession() {
|
|
33
|
-
return this.dataPersistence.remove('checkoutId');
|
|
34
|
-
}
|
|
35
|
-
calcDiscount(coupon) {
|
|
36
|
-
return this.getCheckout().pipe(concatMap(async (checkout) => await this.couponService.calcDiscountShopping(coupon, checkout)));
|
|
37
|
-
}
|
|
38
|
-
checkCoupon(nickname, checkoutType) {
|
|
39
|
-
return this.getCheckout().pipe(concatMap((checkout) => this.couponService.checkCoupon(nickname, CheckoutTypes.ECOMMERCE, checkout, null).pipe()));
|
|
40
|
-
}
|
|
41
|
-
async createCheckout(checkoutData) {
|
|
42
|
-
const checkout = await this.checkoutRepository.create({
|
|
43
|
-
createdAt: new Date(),
|
|
44
|
-
...Checkout.toInstance(pick(checkoutData, ['user', 'shop'])).toPlain(),
|
|
45
|
-
shop: checkoutData?.shop || this.defaultShop,
|
|
46
|
-
});
|
|
47
|
-
await this.dataPersistence.set('checkoutId', checkout.id).toPromise();
|
|
48
|
-
return checkout;
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
CheckoutService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CheckoutService, deps: [{ token: i1.CouponService }, { token: 'CheckoutRepository' }, { token: 'UserRepository' }, { token: DEFAULT_SHOP }, { token: PERSISTENCE_PROVIDER }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
52
|
-
CheckoutService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CheckoutService });
|
|
53
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CheckoutService, decorators: [{
|
|
54
|
-
type: Injectable
|
|
55
|
-
}], ctorParameters: function () { return [{ type: i1.CouponService }, { type: undefined, decorators: [{
|
|
56
|
-
type: Inject,
|
|
57
|
-
args: ['CheckoutRepository']
|
|
58
|
-
}] }, { type: undefined, decorators: [{
|
|
59
|
-
type: Inject,
|
|
60
|
-
args: ['UserRepository']
|
|
61
|
-
}] }, { type: i2.Shops, decorators: [{
|
|
62
|
-
type: Inject,
|
|
63
|
-
args: [DEFAULT_SHOP]
|
|
64
|
-
}] }, { type: undefined, decorators: [{
|
|
65
|
-
type: Inject,
|
|
66
|
-
args: [PERSISTENCE_PROVIDER]
|
|
67
|
-
}] }]; } });
|
|
68
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Inject, Injectable } from '@angular/core';
|
|
2
|
+
import { Checkout, CheckoutTypes, NotFoundError, Shops, isNil, pick, } from '@infrab4a/connect';
|
|
3
|
+
import { from, of, throwError } from 'rxjs';
|
|
4
|
+
import { concatMap } from 'rxjs/operators';
|
|
5
|
+
import { DEFAULT_SHOP, PERSISTENCE_PROVIDER } from '../consts';
|
|
6
|
+
import { CouponService } from './coupon.service';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "./coupon.service";
|
|
9
|
+
import * as i2 from "@infrab4a/connect";
|
|
10
|
+
export class CheckoutService {
|
|
11
|
+
constructor(couponService, checkoutRepository, userRepository, defaultShop, dataPersistence) {
|
|
12
|
+
this.couponService = couponService;
|
|
13
|
+
this.checkoutRepository = checkoutRepository;
|
|
14
|
+
this.userRepository = userRepository;
|
|
15
|
+
this.defaultShop = defaultShop;
|
|
16
|
+
this.dataPersistence = dataPersistence;
|
|
17
|
+
}
|
|
18
|
+
getCheckout(checkoutData) {
|
|
19
|
+
return this.dataPersistence
|
|
20
|
+
.get('checkoutId')
|
|
21
|
+
.pipe(concatMap((id) => (!isNil(id) ? this.checkoutRepository.get({ id }) : this.createCheckout(checkoutData))));
|
|
22
|
+
}
|
|
23
|
+
getUserByCheckout(checkoutId) {
|
|
24
|
+
return from(this.checkoutRepository.get({ id: checkoutId })).pipe(concatMap((checkout) => checkout?.user?.id ? of(checkout.user) : from(this.userRepository.get({ id: checkout.user.id }))), concatMap((user) => of(user) || throwError(() => new NotFoundError('User is not found'))));
|
|
25
|
+
}
|
|
26
|
+
updateCheckoutLineItems(checkout) {
|
|
27
|
+
return from(this.checkoutRepository.update(Checkout.toInstance({ id: checkout.id, lineItems: checkout.lineItems })));
|
|
28
|
+
}
|
|
29
|
+
updateCheckoutUser(checkout) {
|
|
30
|
+
return from(this.checkoutRepository.update(Checkout.toInstance({ id: checkout.id, user: checkout.user })));
|
|
31
|
+
}
|
|
32
|
+
clearCheckoutFromSession() {
|
|
33
|
+
return this.dataPersistence.remove('checkoutId');
|
|
34
|
+
}
|
|
35
|
+
calcDiscount(coupon) {
|
|
36
|
+
return this.getCheckout().pipe(concatMap(async (checkout) => await this.couponService.calcDiscountShopping(coupon, checkout)));
|
|
37
|
+
}
|
|
38
|
+
checkCoupon(nickname, checkoutType) {
|
|
39
|
+
return this.getCheckout().pipe(concatMap((checkout) => this.couponService.checkCoupon(nickname, CheckoutTypes.ECOMMERCE, checkout, null).pipe()));
|
|
40
|
+
}
|
|
41
|
+
async createCheckout(checkoutData) {
|
|
42
|
+
const checkout = await this.checkoutRepository.create({
|
|
43
|
+
createdAt: new Date(),
|
|
44
|
+
...Checkout.toInstance(pick(checkoutData, ['user', 'shop'])).toPlain(),
|
|
45
|
+
shop: checkoutData?.shop || this.defaultShop,
|
|
46
|
+
});
|
|
47
|
+
await this.dataPersistence.set('checkoutId', checkout.id).toPromise();
|
|
48
|
+
return checkout;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
CheckoutService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CheckoutService, deps: [{ token: i1.CouponService }, { token: 'CheckoutRepository' }, { token: 'UserRepository' }, { token: DEFAULT_SHOP }, { token: PERSISTENCE_PROVIDER }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
52
|
+
CheckoutService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CheckoutService });
|
|
53
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.0", ngImport: i0, type: CheckoutService, decorators: [{
|
|
54
|
+
type: Injectable
|
|
55
|
+
}], ctorParameters: function () { return [{ type: i1.CouponService }, { type: undefined, decorators: [{
|
|
56
|
+
type: Inject,
|
|
57
|
+
args: ['CheckoutRepository']
|
|
58
|
+
}] }, { type: undefined, decorators: [{
|
|
59
|
+
type: Inject,
|
|
60
|
+
args: ['UserRepository']
|
|
61
|
+
}] }, { type: i2.Shops, decorators: [{
|
|
62
|
+
type: Inject,
|
|
63
|
+
args: [DEFAULT_SHOP]
|
|
64
|
+
}] }, { type: undefined, decorators: [{
|
|
65
|
+
type: Inject,
|
|
66
|
+
args: [PERSISTENCE_PROVIDER]
|
|
67
|
+
}] }]; } });
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tvdXQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvbm5lY3QtYW5ndWxhci9zcmMvc2VydmljZXMvY2hlY2tvdXQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUNsRCxPQUFPLEVBQ0wsUUFBUSxFQUVSLGFBQWEsRUFFYixhQUFhLEVBQ2IsS0FBSyxFQUdMLEtBQUssRUFDTCxJQUFJLEdBQ0wsTUFBTSxtQkFBbUIsQ0FBQTtBQUMxQixPQUFPLEVBQWMsSUFBSSxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDdkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRTFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFHOUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFBOzs7O0FBSWhELE1BQU0sT0FBTyxlQUFlO0lBQzFCLFlBQ21CLGFBQTRCLEVBQ0Usa0JBQXNDLEVBQzFDLGNBQThCLEVBQ2xDLFdBQWtCLEVBQ1YsZUFBZ0M7UUFKOUQsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDRSx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQzFDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUNsQyxnQkFBVyxHQUFYLFdBQVcsQ0FBTztRQUNWLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtJQUM5RSxDQUFDO0lBRUosV0FBVyxDQUFDLFlBQW1DO1FBQzdDLE9BQU8sSUFBSSxDQUFDLGVBQWU7YUFDeEIsR0FBRyxDQUFDLFlBQVksQ0FBQzthQUNqQixJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNwSCxDQUFDO0lBRUQsaUJBQWlCLENBQUMsVUFBa0I7UUFDbEMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUMvRCxTQUFTLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUNyQixRQUFRLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUNqRyxFQUNELFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FDMUYsQ0FBQTtJQUNILENBQUM7SUFFRCx1QkFBdUIsQ0FBQyxRQUEyQjtRQUNqRCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxTQUFTLEVBQUUsUUFBUSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ3RILENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxRQUEyQjtRQUM1QyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxFQUFFLEVBQUUsUUFBUSxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQzVHLENBQUM7SUFFRCx3QkFBd0I7UUFDdEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQTtJQUNsRCxDQUFDO0lBRUQsWUFBWSxDQUFDLE1BQWM7UUFDekIsT0FBTyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsSUFBSSxDQUM1QixTQUFTLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUMsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQyxDQUMvRixDQUFBO0lBQ0gsQ0FBQztJQUVELFdBQVcsQ0FBQyxRQUFnQixFQUFFLFlBQTJCO1FBQ3ZELE9BQU8sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksQ0FDNUIsU0FBUyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsYUFBYSxDQUFDLFNBQVMsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FDbEgsQ0FBQTtJQUNILENBQUM7SUFFTyxLQUFLLENBQUMsY0FBYyxDQUFDLFlBQW1DO1FBQzlELE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FBQztZQUNwRCxTQUFTLEVBQUUsSUFBSSxJQUFJLEVBQUU7WUFDckIsR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRTtZQUN0RSxJQUFJLEVBQUUsWUFBWSxFQUFFLElBQUksSUFBSSxJQUFJLENBQUMsV0FBVztTQUM3QyxDQUFDLENBQUE7UUFFRixNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUE7UUFFckUsT0FBTyxRQUFRLENBQUE7SUFDakIsQ0FBQzs7NEdBMURVLGVBQWUsK0NBR2hCLG9CQUFvQixhQUNwQixnQkFBZ0IsYUFDaEIsWUFBWSxhQUNaLG9CQUFvQjtnSEFObkIsZUFBZTsyRkFBZixlQUFlO2tCQUQzQixVQUFVOzswQkFJTixNQUFNOzJCQUFDLG9CQUFvQjs7MEJBQzNCLE1BQU07MkJBQUMsZ0JBQWdCOzswQkFDdkIsTUFBTTsyQkFBQyxZQUFZOzswQkFDbkIsTUFBTTsyQkFBQyxvQkFBb0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHtcbiAgQ2hlY2tvdXQsXG4gIENoZWNrb3V0UmVwb3NpdG9yeSxcbiAgQ2hlY2tvdXRUeXBlcyxcbiAgQ291cG9uLFxuICBOb3RGb3VuZEVycm9yLFxuICBTaG9wcyxcbiAgVXNlcixcbiAgVXNlclJlcG9zaXRvcnksXG4gIGlzTmlsLFxuICBwaWNrLFxufSBmcm9tICdAaW5mcmFiNGEvY29ubmVjdCdcbmltcG9ydCB7IE9ic2VydmFibGUsIGZyb20sIG9mLCB0aHJvd0Vycm9yIH0gZnJvbSAncnhqcydcbmltcG9ydCB7IGNvbmNhdE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuXG5pbXBvcnQgeyBERUZBVUxUX1NIT1AsIFBFUlNJU1RFTkNFX1BST1ZJREVSIH0gZnJvbSAnLi4vY29uc3RzJ1xuXG5pbXBvcnQgeyBEYXRhUGVyc2lzdGVuY2UgfSBmcm9tICcuLi9wZXJzaXN0ZW5jZSdcbmltcG9ydCB7IENvdXBvblNlcnZpY2UgfSBmcm9tICcuL2NvdXBvbi5zZXJ2aWNlJ1xuaW1wb3J0IHsgUmVxdWlyZWRDaGVja291dERhdGEgfSBmcm9tICcuL3R5cGVzJ1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ2hlY2tvdXRTZXJ2aWNlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb3Vwb25TZXJ2aWNlOiBDb3Vwb25TZXJ2aWNlLFxuICAgIEBJbmplY3QoJ0NoZWNrb3V0UmVwb3NpdG9yeScpIHByaXZhdGUgcmVhZG9ubHkgY2hlY2tvdXRSZXBvc2l0b3J5OiBDaGVja291dFJlcG9zaXRvcnksXG4gICAgQEluamVjdCgnVXNlclJlcG9zaXRvcnknKSBwcml2YXRlIHJlYWRvbmx5IHVzZXJSZXBvc2l0b3J5OiBVc2VyUmVwb3NpdG9yeSxcbiAgICBASW5qZWN0KERFRkFVTFRfU0hPUCkgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0U2hvcDogU2hvcHMsXG4gICAgQEluamVjdChQRVJTSVNURU5DRV9QUk9WSURFUikgcHJpdmF0ZSByZWFkb25seSBkYXRhUGVyc2lzdGVuY2U6IERhdGFQZXJzaXN0ZW5jZSxcbiAgKSB7fVxuXG4gIGdldENoZWNrb3V0KGNoZWNrb3V0RGF0YT86IFJlcXVpcmVkQ2hlY2tvdXREYXRhKTogT2JzZXJ2YWJsZTxDaGVja291dD4ge1xuICAgIHJldHVybiB0aGlzLmRhdGFQZXJzaXN0ZW5jZVxuICAgICAgLmdldCgnY2hlY2tvdXRJZCcpXG4gICAgICAucGlwZShjb25jYXRNYXAoKGlkKSA9PiAoIWlzTmlsKGlkKSA/IHRoaXMuY2hlY2tvdXRSZXBvc2l0b3J5LmdldCh7IGlkIH0pIDogdGhpcy5jcmVhdGVDaGVja291dChjaGVja291dERhdGEpKSkpXG4gIH1cblxuICBnZXRVc2VyQnlDaGVja291dChjaGVja291dElkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFVzZXI+IHtcbiAgICByZXR1cm4gZnJvbSh0aGlzLmNoZWNrb3V0UmVwb3NpdG9yeS5nZXQoeyBpZDogY2hlY2tvdXRJZCB9KSkucGlwZShcbiAgICAgIGNvbmNhdE1hcCgoY2hlY2tvdXQpID0+XG4gICAgICAgIGNoZWNrb3V0Py51c2VyPy5pZCA/IG9mKGNoZWNrb3V0LnVzZXIpIDogZnJvbSh0aGlzLnVzZXJSZXBvc2l0b3J5LmdldCh7IGlkOiBjaGVja291dC51c2VyLmlkIH0pKSxcbiAgICAgICksXG4gICAgICBjb25jYXRNYXAoKHVzZXIpID0+IG9mKHVzZXIpIHx8IHRocm93RXJyb3IoKCkgPT4gbmV3IE5vdEZvdW5kRXJyb3IoJ1VzZXIgaXMgbm90IGZvdW5kJykpKSxcbiAgICApXG4gIH1cblxuICB1cGRhdGVDaGVja291dExpbmVJdGVtcyhjaGVja291dDogUGFydGlhbDxDaGVja291dD4pOiBPYnNlcnZhYmxlPENoZWNrb3V0PiB7XG4gICAgcmV0dXJuIGZyb20odGhpcy5jaGVja291dFJlcG9zaXRvcnkudXBkYXRlKENoZWNrb3V0LnRvSW5zdGFuY2UoeyBpZDogY2hlY2tvdXQuaWQsIGxpbmVJdGVtczogY2hlY2tvdXQubGluZUl0ZW1zIH0pKSlcbiAgfVxuXG4gIHVwZGF0ZUNoZWNrb3V0VXNlcihjaGVja291dDogUGFydGlhbDxDaGVja291dD4pOiBPYnNlcnZhYmxlPENoZWNrb3V0PiB7XG4gICAgcmV0dXJuIGZyb20odGhpcy5jaGVja291dFJlcG9zaXRvcnkudXBkYXRlKENoZWNrb3V0LnRvSW5zdGFuY2UoeyBpZDogY2hlY2tvdXQuaWQsIHVzZXI6IGNoZWNrb3V0LnVzZXIgfSkpKVxuICB9XG5cbiAgY2xlYXJDaGVja291dEZyb21TZXNzaW9uKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLmRhdGFQZXJzaXN0ZW5jZS5yZW1vdmUoJ2NoZWNrb3V0SWQnKVxuICB9XG5cbiAgY2FsY0Rpc2NvdW50KGNvdXBvbjogQ291cG9uKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0Q2hlY2tvdXQoKS5waXBlKFxuICAgICAgY29uY2F0TWFwKGFzeW5jIChjaGVja291dCkgPT4gYXdhaXQgdGhpcy5jb3Vwb25TZXJ2aWNlLmNhbGNEaXNjb3VudFNob3BwaW5nKGNvdXBvbiwgY2hlY2tvdXQpKSxcbiAgICApXG4gIH1cblxuICBjaGVja0NvdXBvbihuaWNrbmFtZTogc3RyaW5nLCBjaGVja291dFR5cGU6IENoZWNrb3V0VHlwZXMpOiBPYnNlcnZhYmxlPENvdXBvbj4ge1xuICAgIHJldHVybiB0aGlzLmdldENoZWNrb3V0KCkucGlwZShcbiAgICAgIGNvbmNhdE1hcCgoY2hlY2tvdXQpID0+IHRoaXMuY291cG9uU2VydmljZS5jaGVja0NvdXBvbihuaWNrbmFtZSwgQ2hlY2tvdXRUeXBlcy5FQ09NTUVSQ0UsIGNoZWNrb3V0LCBudWxsKS5waXBlKCkpLFxuICAgIClcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY3JlYXRlQ2hlY2tvdXQoY2hlY2tvdXREYXRhPzogUmVxdWlyZWRDaGVja291dERhdGEpOiBQcm9taXNlPENoZWNrb3V0PiB7XG4gICAgY29uc3QgY2hlY2tvdXQgPSBhd2FpdCB0aGlzLmNoZWNrb3V0UmVwb3NpdG9yeS5jcmVhdGUoe1xuICAgICAgY3JlYXRlZEF0OiBuZXcgRGF0ZSgpLFxuICAgICAgLi4uQ2hlY2tvdXQudG9JbnN0YW5jZShwaWNrKGNoZWNrb3V0RGF0YSwgWyd1c2VyJywgJ3Nob3AnXSkpLnRvUGxhaW4oKSxcbiAgICAgIHNob3A6IGNoZWNrb3V0RGF0YT8uc2hvcCB8fCB0aGlzLmRlZmF1bHRTaG9wLFxuICAgIH0pXG5cbiAgICBhd2FpdCB0aGlzLmRhdGFQZXJzaXN0ZW5jZS5zZXQoJ2NoZWNrb3V0SWQnLCBjaGVja291dC5pZCkudG9Qcm9taXNlKClcblxuICAgIHJldHVybiBjaGVja291dFxuICB9XG59XG4iXX0=
|