@xsolla/payment-client-core 0.3.3 → 0.3.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/core/payment/actions/analytics/analytics-payload-creator.map.mjs +3 -0
- package/esm2022/lib/core/payment/actions/analytics/analytics-payload-creator.type.mjs +2 -0
- package/esm2022/lib/core/payment/actions/analytics/status-updated-analytics-payload-creator.mjs +13 -0
- package/esm2022/lib/core/payment/actions/next-action.service.mjs +7 -2
- package/esm2022/lib/core/sdk-payment-systems/google-pay/google-pay.service.mjs +9 -1
- package/fesm2022/xsolla-payment-client-core.mjs +28 -1
- package/fesm2022/xsolla-payment-client-core.mjs.map +1 -1
- package/lib/core/payment/actions/analytics/analytics-payload-creator.map.d.ts +2 -0
- package/lib/core/payment/actions/analytics/analytics-payload-creator.type.d.ts +3 -0
- package/lib/core/payment/actions/analytics/status-updated-analytics-payload-creator.d.ts +2 -0
- package/lib/core/sdk-payment-systems/google-pay/google-pay.service.d.ts +1 -0
- package/package.json +1 -1
- package/xsolla-payment-client-core-0.3.5.tgz +0 -0
- package/xsolla-payment-client-core-0.3.3.tgz +0 -0
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { statusUpdatedAnalyticsPayloadCreator } from './status-updated-analytics-payload-creator';
|
|
2
|
+
export const analyticsPayloadCreatorMap = new Map([['status_updated', statusUpdatedAnalyticsPayloadCreator]]);
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl0aWNzLXBheWxvYWQtY3JlYXRvci5tYXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvcmUvcGF5bWVudC9hY3Rpb25zL2FuYWx5dGljcy9hbmFseXRpY3MtcGF5bG9hZC1jcmVhdG9yLm1hcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQUVsRyxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FDckMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixFQUFFLG9DQUFvQyxDQUFDLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQW5hbHl0aWNzUGF5bG9hZENyZWF0b3IgfSBmcm9tICcuL2FuYWx5dGljcy1wYXlsb2FkLWNyZWF0b3IudHlwZSc7XG5pbXBvcnQgeyBzdGF0dXNVcGRhdGVkQW5hbHl0aWNzUGF5bG9hZENyZWF0b3IgfSBmcm9tICcuL3N0YXR1cy11cGRhdGVkLWFuYWx5dGljcy1wYXlsb2FkLWNyZWF0b3InO1xuXG5leHBvcnQgY29uc3QgYW5hbHl0aWNzUGF5bG9hZENyZWF0b3JNYXA6IE1hcDxzdHJpbmcsIEFuYWx5dGljc1BheWxvYWRDcmVhdG9yPiA9XG4gIG5ldyBNYXAoW1snc3RhdHVzX3VwZGF0ZWQnLCBzdGF0dXNVcGRhdGVkQW5hbHl0aWNzUGF5bG9hZENyZWF0b3JdXSk7XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5hbHl0aWNzLXBheWxvYWQtY3JlYXRvci50eXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb3JlL3BheW1lbnQvYWN0aW9ucy9hbmFseXRpY3MvYW5hbHl0aWNzLXBheWxvYWQtY3JlYXRvci50eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTZW5kRXZlbnRNZXRob2RPcHRpb25zSW50ZXJmYWNlIH0gZnJvbSAnc3JjL2xpYi9jb3JlL3VzZXItYmVoYXZpb3VyLWFuYWx5dGljcy91c2VyLWJlaGF2aW91ci1hbmFseXRpY3MuaW50ZXJmYWNlJztcbmltcG9ydCB7IE5leHRBY3Rpb24gfSBmcm9tICcuLi9uZXh0LWFjdGlvbi5pbnRlcmZhY2UnO1xuXG5leHBvcnQgdHlwZSBBbmFseXRpY3NQYXlsb2FkQ3JlYXRvciA9IChcbiAgbmV4dEFjdGlvbjogTmV4dEFjdGlvbixcbikgPT4gU2VuZEV2ZW50TWV0aG9kT3B0aW9uc0ludGVyZmFjZSB8IG51bGw7XG4iXX0=
|
package/esm2022/lib/core/payment/actions/analytics/status-updated-analytics-payload-creator.mjs
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export const statusUpdatedAnalyticsPayloadCreator = (nextAction) => {
|
|
2
|
+
if (nextAction.type !== 'status_updated')
|
|
3
|
+
return null;
|
|
4
|
+
const { statusState, group, isSuccess, isCanceled } = nextAction.data;
|
|
5
|
+
return {
|
|
6
|
+
value: nextAction.type,
|
|
7
|
+
extraValue: statusState,
|
|
8
|
+
dimension1: group,
|
|
9
|
+
dimension2: isSuccess ? 'successful' : null,
|
|
10
|
+
dimension3: isCanceled ? 'canceled' : null,
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdHVzLXVwZGF0ZWQtYW5hbHl0aWNzLXBheWxvYWQtY3JlYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29yZS9wYXltZW50L2FjdGlvbnMvYW5hbHl0aWNzL3N0YXR1cy11cGRhdGVkLWFuYWx5dGljcy1wYXlsb2FkLWNyZWF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxDQUFDLE1BQU0sb0NBQW9DLEdBQTRCLENBQzNFLFVBQVUsRUFDVixFQUFFO0lBQ0YsSUFBSSxVQUFVLENBQUMsSUFBSSxLQUFLLGdCQUFnQjtRQUFFLE9BQU8sSUFBSSxDQUFDO0lBRXRELE1BQU0sRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDO0lBQ3RFLE9BQU87UUFDTCxLQUFLLEVBQUUsVUFBVSxDQUFDLElBQUk7UUFDdEIsVUFBVSxFQUFFLFdBQVc7UUFDdkIsVUFBVSxFQUFFLEtBQUs7UUFDakIsVUFBVSxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxJQUFJO1FBQzNDLFVBQVUsRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSTtLQUMzQyxDQUFDO0FBQ0osQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQW5hbHl0aWNzUGF5bG9hZENyZWF0b3IgfSBmcm9tICcuL2FuYWx5dGljcy1wYXlsb2FkLWNyZWF0b3IudHlwZSc7XG5cbmV4cG9ydCBjb25zdCBzdGF0dXNVcGRhdGVkQW5hbHl0aWNzUGF5bG9hZENyZWF0b3I6IEFuYWx5dGljc1BheWxvYWRDcmVhdG9yID0gKFxuICBuZXh0QWN0aW9uLFxuKSA9PiB7XG4gIGlmIChuZXh0QWN0aW9uLnR5cGUgIT09ICdzdGF0dXNfdXBkYXRlZCcpIHJldHVybiBudWxsO1xuXG4gIGNvbnN0IHsgc3RhdHVzU3RhdGUsIGdyb3VwLCBpc1N1Y2Nlc3MsIGlzQ2FuY2VsZWQgfSA9IG5leHRBY3Rpb24uZGF0YTtcbiAgcmV0dXJuIHtcbiAgICB2YWx1ZTogbmV4dEFjdGlvbi50eXBlLFxuICAgIGV4dHJhVmFsdWU6IHN0YXR1c1N0YXRlLFxuICAgIGRpbWVuc2lvbjE6IGdyb3VwLFxuICAgIGRpbWVuc2lvbjI6IGlzU3VjY2VzcyA/ICdzdWNjZXNzZnVsJyA6IG51bGwsXG4gICAgZGltZW5zaW9uMzogaXNDYW5jZWxlZCA/ICdjYW5jZWxlZCcgOiBudWxsLFxuICB9O1xufTtcbiJdfQ==
|
|
@@ -3,6 +3,7 @@ import { Subject } from 'rxjs';
|
|
|
3
3
|
import { nextActionsToken } from './next-actions';
|
|
4
4
|
import { UserBehaviourEventName } from '../../user-behaviour-analytics/user-behaviour-event-name.enum';
|
|
5
5
|
import { ErrorTags, TaggedError } from '../../exceptions-handling/errors';
|
|
6
|
+
import { analyticsPayloadCreatorMap } from './analytics/analytics-payload-creator.map';
|
|
6
7
|
import * as i0 from "@angular/core";
|
|
7
8
|
import * as i1 from "./show-errors/show-errors.action.class";
|
|
8
9
|
import * as i2 from "../../user-behaviour-analytics/user-behaviour-analytics.service";
|
|
@@ -59,7 +60,11 @@ export class NextActionService {
|
|
|
59
60
|
return actionType;
|
|
60
61
|
}
|
|
61
62
|
logNextAction(nextAction) {
|
|
62
|
-
|
|
63
|
+
const analyticsPayloadCreator = analyticsPayloadCreatorMap.get(nextAction.type);
|
|
64
|
+
const payload = analyticsPayloadCreator?.(nextAction) ?? {
|
|
65
|
+
value: nextAction.type,
|
|
66
|
+
};
|
|
67
|
+
this.userBehaviourAnalyticsService.send(UserBehaviourEventName.nextAction, 'manual', payload);
|
|
63
68
|
}
|
|
64
69
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NextActionService, deps: [{ token: nextActionsToken }, { token: i0.Injector }, { token: i1.ShowErrorsActionCreator }, { token: i2.UserBehaviourAnalyticsService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
65
70
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NextActionService, providedIn: 'root' }); }
|
|
@@ -73,4 +78,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
73
78
|
type: Inject,
|
|
74
79
|
args: [nextActionsToken]
|
|
75
80
|
}] }, { type: i0.Injector }, { type: i1.ShowErrorsActionCreator }, { type: i2.UserBehaviourAnalyticsService }] });
|
|
76
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV4dC1hY3Rpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29yZS9wYXltZW50L2FjdGlvbnMvbmV4dC1hY3Rpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBMkIsTUFBTSxlQUFlLENBQUM7QUFDNUUsT0FBTyxFQUFjLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUkzQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQW9CLE1BQU0sZ0JBQWdCLENBQUM7QUFJcEUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sK0RBQStELENBQUM7QUFDdkcsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQzs7OztBQUt2RixNQUFNLE9BQU8saUJBQWlCO0lBSzVCLElBQVcsWUFBWTtRQUNyQixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNoRCxDQUFDO0lBRUQsWUFFbUIsZ0JBQWtDLEVBQ2xDLFFBQWtCLEVBQ2xCLHVCQUFnRCxFQUNoRCw2QkFBNEQ7UUFINUQscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQUNsQyxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBQ2xCLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBeUI7UUFDaEQsa0NBQTZCLEdBQTdCLDZCQUE2QixDQUErQjtRQWI5RCx1QkFBa0IsR0FBRyxJQUFJLE9BQU8sRUFBYyxDQUFDO1FBRS9DLG9CQUFlLEdBQW9CLEVBQUUsQ0FBQztRQWFyRCxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRU0sYUFBYSxDQUFDLGNBQThCO1FBQ2pELElBQUksY0FBYyxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUNsQyxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3QyxDQUFDO1FBRUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUNuQyxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUVyRSxJQUFJLGlCQUFpQixFQUFFLENBQUM7WUFDdEIsTUFBTSxVQUFVLEdBQUcsaUJBQWlCLENBQUMsYUFBYSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBQ25FLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDL0IsT0FBTyxVQUFVLENBQUM7UUFDcEIsQ0FBQztRQUVELE1BQU0sSUFBSSxXQUFXLENBQ25CLDJCQUEyQixFQUMzQixDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFDZixjQUFjLENBQ2YsQ0FBQztJQUNKLENBQUM7SUFFTSxlQUFlLENBQUMsTUFBa0I7UUFDdkMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNyQyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFTSxjQUFjLENBQUMsTUFBa0I7UUFDdEMsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUM7WUFBRSxPQUFPO1FBQ2hDLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFTyxtQkFBbUI7UUFDekIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FDM0IsQ0FBQyxVQUF3QyxFQUFFLEVBQUU7WUFDM0MsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQWdCLFVBQVUsQ0FBQyxDQUFDO1lBQzFELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xDLENBQUMsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVPLHFCQUFxQixDQUMzQixjQUE4QjtRQUU5QixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FDMUMsQ0FBQyxVQUF5QixFQUFFLEVBQUU7WUFDNUIsT0FBTyxVQUFVLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQy9DLENBQUMsQ0FDRixDQUFDO1FBRUYsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2hCLE9BQU87UUFDVCxDQUFDO1FBRUQsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVPLGFBQWEsQ0FBQyxVQUFzQjtRQUMxQyxNQUFNLHVCQUF1QixHQUFHLDBCQUEwQixDQUFDLEdBQUcsQ0FDNUQsVUFBVSxDQUFDLElBQUksQ0FDaEIsQ0FBQztRQUNGLE1BQU0sT0FBTyxHQUFHLHVCQUF1QixFQUFFLENBQUMsVUFBVSxDQUFDLElBQUk7WUFDdkQsS0FBSyxFQUFFLFVBQVUsQ0FBQyxJQUFJO1NBQ3ZCLENBQUM7UUFFRixJQUFJLENBQUMsNkJBQTZCLENBQUMsSUFBSSxDQUNyQyxzQkFBc0IsQ0FBQyxVQUFVLEVBQ2pDLFFBQVEsRUFDUixPQUFPLENBQ1IsQ0FBQztJQUNKLENBQUM7K0dBM0ZVLGlCQUFpQixrQkFVbEIsZ0JBQWdCO21IQVZmLGlCQUFpQixjQUZoQixNQUFNOzs0RkFFUCxpQkFBaUI7a0JBSDdCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFXSSxNQUFNOzJCQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIFByb3ZpZGVyVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFN1Ym1pdFJlc3BvbnNlIH0gZnJvbSAnLi4vcmVxdWVzdHMvc3VibWl0L3Jlc3BvbnNlL3N1Ym1pdC1yZXNwb25zZS5jbGFzcyc7XG5pbXBvcnQgeyBBY3Rpb25DcmVhdG9yIH0gZnJvbSAnLi9hY3Rpb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IE5leHRBY3Rpb24gfSBmcm9tICcuL25leHQtYWN0aW9uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBuZXh0QWN0aW9uc1Rva2VuLCBOZXh0QWN0aW9uVG9rZW5zIH0gZnJvbSAnLi9uZXh0LWFjdGlvbnMnO1xuaW1wb3J0IHsgU2hvd0Vycm9yc0FjdGlvbkNyZWF0b3IgfSBmcm9tICcuL3Nob3ctZXJyb3JzL3Nob3ctZXJyb3JzLmFjdGlvbi5jbGFzcyc7XG5pbXBvcnQgeyBYcHNFcnJvciB9IGZyb20gJy4uL3hwcy1lcnJvci5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgVXNlckJlaGF2aW91ckFuYWx5dGljc1NlcnZpY2UgfSBmcm9tICcuLi8uLi91c2VyLWJlaGF2aW91ci1hbmFseXRpY3MvdXNlci1iZWhhdmlvdXItYW5hbHl0aWNzLnNlcnZpY2UnO1xuaW1wb3J0IHsgVXNlckJlaGF2aW91ckV2ZW50TmFtZSB9IGZyb20gJy4uLy4uL3VzZXItYmVoYXZpb3VyLWFuYWx5dGljcy91c2VyLWJlaGF2aW91ci1ldmVudC1uYW1lLmVudW0nO1xuaW1wb3J0IHsgRXJyb3JUYWdzLCBUYWdnZWRFcnJvciB9IGZyb20gJy4uLy4uL2V4Y2VwdGlvbnMtaGFuZGxpbmcvZXJyb3JzJztcbmltcG9ydCB7IGFuYWx5dGljc1BheWxvYWRDcmVhdG9yTWFwIH0gZnJvbSAnLi9hbmFseXRpY3MvYW5hbHl0aWNzLXBheWxvYWQtY3JlYXRvci5tYXAnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgTmV4dEFjdGlvblNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IGZsb3dVcGRhdGVzU3ViamVjdCA9IG5ldyBTdWJqZWN0PE5leHRBY3Rpb24+KCk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBuZXh0QWN0aW9uc0xpc3Q6IEFjdGlvbkNyZWF0b3JbXSA9IFtdO1xuXG4gIHB1YmxpYyBnZXQgZmxvd1VwZGF0ZXMkKCk6IE9ic2VydmFibGU8TmV4dEFjdGlvbj4ge1xuICAgIHJldHVybiB0aGlzLmZsb3dVcGRhdGVzU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KG5leHRBY3Rpb25zVG9rZW4pXG4gICAgcHJpdmF0ZSByZWFkb25seSBuZXh0QWN0aW9uVG9rZW5zOiBOZXh0QWN0aW9uVG9rZW5zLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc2hvd0Vycm9yc0FjdGlvbkNyZWF0b3I6IFNob3dFcnJvcnNBY3Rpb25DcmVhdG9yLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdXNlckJlaGF2aW91ckFuYWx5dGljc1NlcnZpY2U6IFVzZXJCZWhhdmlvdXJBbmFseXRpY3NTZXJ2aWNlLFxuICApIHtcbiAgICB0aGlzLmZpbGxOZXh0QWN0aW9uc0xpc3QoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXROZXh0QWN0aW9uKHN1Ym1pdFJlc3BvbnNlOiBTdWJtaXRSZXNwb25zZSk6IE5leHRBY3Rpb24gfCBudWxsIHtcbiAgICBpZiAoc3VibWl0UmVzcG9uc2UuZXJyb3JzPy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuZW1pdEZsb3dFcnJvcnMoc3VibWl0UmVzcG9uc2UuZXJyb3JzKTtcbiAgICB9XG5cbiAgICBpZiAoIXN1Ym1pdFJlc3BvbnNlLmN1cnJlbnRDb21tYW5kKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBuZXh0QWN0aW9uQ3JlYXRvciA9IHRoaXMuZmluZE5leHRBY3Rpb25DcmVhdG9yKHN1Ym1pdFJlc3BvbnNlKTtcblxuICAgIGlmIChuZXh0QWN0aW9uQ3JlYXRvcikge1xuICAgICAgY29uc3QgbmV4dEFjdGlvbiA9IG5leHRBY3Rpb25DcmVhdG9yLmdldEFjdGlvbkRhdGEoc3VibWl0UmVzcG9uc2UpO1xuICAgICAgdGhpcy5sb2dOZXh0QWN0aW9uKG5leHRBY3Rpb24pO1xuICAgICAgcmV0dXJuIG5leHRBY3Rpb247XG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IFRhZ2dlZEVycm9yKFxuICAgICAgJ05leHQgYWN0aW9uIGlzIHVuZGVmaW5lZC4nLFxuICAgICAgW0Vycm9yVGFncy5BUFBdLFxuICAgICAgc3VibWl0UmVzcG9uc2UsXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBlbWl0Rmxvd1VwZGF0ZXMoYWN0aW9uOiBOZXh0QWN0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5mbG93VXBkYXRlc1N1YmplY3QubmV4dChhY3Rpb24pO1xuICAgIHRoaXMubG9nTmV4dEFjdGlvbihhY3Rpb24pO1xuICB9XG5cbiAgcHVibGljIGVtaXRGbG93RXJyb3JzKGVycm9yczogWHBzRXJyb3JbXSk6IHZvaWQge1xuICAgIGlmIChlcnJvcnMubGVuZ3RoID09PSAwKSByZXR1cm47XG4gICAgdGhpcy5lbWl0Rmxvd1VwZGF0ZXModGhpcy5zaG93RXJyb3JzQWN0aW9uQ3JlYXRvci5nZXRBY3Rpb25EYXRhKGVycm9ycykpO1xuICB9XG5cbiAgcHJpdmF0ZSBmaWxsTmV4dEFjdGlvbnNMaXN0KCk6IHZvaWQge1xuICAgIHRoaXMubmV4dEFjdGlvblRva2Vucy5mb3JFYWNoKFxuICAgICAgKG5leHRBY3Rpb246IFByb3ZpZGVyVG9rZW48QWN0aW9uQ3JlYXRvcj4pID0+IHtcbiAgICAgICAgY29uc3QgaXRlbSA9IHRoaXMuaW5qZWN0b3IuZ2V0PEFjdGlvbkNyZWF0b3I+KG5leHRBY3Rpb24pO1xuICAgICAgICB0aGlzLm5leHRBY3Rpb25zTGlzdC5wdXNoKGl0ZW0pO1xuICAgICAgfSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5kTmV4dEFjdGlvbkNyZWF0b3IoXG4gICAgc3VibWl0UmVzcG9uc2U6IFN1Ym1pdFJlc3BvbnNlLFxuICApOiBBY3Rpb25DcmVhdG9yIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBhY3Rpb25UeXBlID0gdGhpcy5uZXh0QWN0aW9uc0xpc3QuZmluZChcbiAgICAgIChuZXh0QWN0aW9uOiBBY3Rpb25DcmVhdG9yKSA9PiB7XG4gICAgICAgIHJldHVybiBuZXh0QWN0aW9uLmlzU3VpdGFibGUoc3VibWl0UmVzcG9uc2UpO1xuICAgICAgfSxcbiAgICApO1xuXG4gICAgaWYgKCFhY3Rpb25UeXBlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcmV0dXJuIGFjdGlvblR5cGU7XG4gIH1cblxuICBwcml2YXRlIGxvZ05leHRBY3Rpb24obmV4dEFjdGlvbjogTmV4dEFjdGlvbik6IHZvaWQge1xuICAgIGNvbnN0IGFuYWx5dGljc1BheWxvYWRDcmVhdG9yID0gYW5hbHl0aWNzUGF5bG9hZENyZWF0b3JNYXAuZ2V0KFxuICAgICAgbmV4dEFjdGlvbi50eXBlLFxuICAgICk7XG4gICAgY29uc3QgcGF5bG9hZCA9IGFuYWx5dGljc1BheWxvYWRDcmVhdG9yPy4obmV4dEFjdGlvbikgPz8ge1xuICAgICAgdmFsdWU6IG5leHRBY3Rpb24udHlwZSxcbiAgICB9O1xuXG4gICAgdGhpcy51c2VyQmVoYXZpb3VyQW5hbHl0aWNzU2VydmljZS5zZW5kKFxuICAgICAgVXNlckJlaGF2aW91ckV2ZW50TmFtZS5uZXh0QWN0aW9uLFxuICAgICAgJ21hbnVhbCcsXG4gICAgICBwYXlsb2FkLFxuICAgICk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -29,6 +29,7 @@ export class GooglePayService {
|
|
|
29
29
|
this.paymentWindowIsReady = new Subject();
|
|
30
30
|
this.paymentWindowIsClose = new Subject();
|
|
31
31
|
this.error = new Subject();
|
|
32
|
+
this.paymentInProgress = false;
|
|
32
33
|
this.googlePaymentClient = null;
|
|
33
34
|
this.paymentService = null;
|
|
34
35
|
}
|
|
@@ -111,6 +112,10 @@ export class GooglePayService {
|
|
|
111
112
|
this.loggerService.error(new TaggedError('Google payment service is not initialized to proceed checkout', [ErrorTags.GOOGLEPAY]));
|
|
112
113
|
throw new AppError(`Google Pay. proceedCheckout: no google payment service`);
|
|
113
114
|
}
|
|
115
|
+
// google support only one payment in time
|
|
116
|
+
if (this.paymentInProgress) {
|
|
117
|
+
return Promise.resolve(null);
|
|
118
|
+
}
|
|
114
119
|
const paymentDataRequest = this.paymentService.getPaymentRequest();
|
|
115
120
|
if (!paymentDataRequest) {
|
|
116
121
|
this.loggerService.error(new TaggedError('No data for payment data request', [
|
|
@@ -122,6 +127,7 @@ export class GooglePayService {
|
|
|
122
127
|
.get(CheckStatusActionCreator)
|
|
123
128
|
.getActionData();
|
|
124
129
|
try {
|
|
130
|
+
this.paymentInProgress = true;
|
|
125
131
|
this.paymentWindowIsReady.next();
|
|
126
132
|
const paymentData = await this.googlePaymentClient.loadPaymentData(paymentDataRequest);
|
|
127
133
|
if (!paymentData?.paymentMethodData?.tokenizationData?.token) {
|
|
@@ -130,9 +136,11 @@ export class GooglePayService {
|
|
|
130
136
|
}
|
|
131
137
|
this.paymentService.handleSuccessfulPayment?.(paymentData);
|
|
132
138
|
this.paymentWindowIsClose.next();
|
|
139
|
+
this.paymentInProgress = false;
|
|
133
140
|
return checkStatusAction;
|
|
134
141
|
}
|
|
135
142
|
catch (error) {
|
|
143
|
+
this.paymentInProgress = false;
|
|
136
144
|
this.paymentService.handleFailedPayment?.(error);
|
|
137
145
|
this.paymentWindowIsClose.next();
|
|
138
146
|
this.error.next(error);
|
|
@@ -266,4 +274,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
266
274
|
type: Inject,
|
|
267
275
|
args: [windowToken]
|
|
268
276
|
}] }, { type: i1.LoggerService }, { type: i2.PaymentSystemProcessingService }, { type: i3.GooglePayCheckoutPaymentService }, { type: i4.GooglePayInstantPaymentService }, { type: i0.Injector }] });
|
|
269
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ29vZ2xlLXBheS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb3JlL3Nkay1wYXltZW50LXN5c3RlbXMvZ29vZ2xlLXBheS9nb29nbGUtcGF5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQWMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDNUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBRWxGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBR3hHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQWNqRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7OztBQU0vRCxNQUFNLE9BQU8sZ0JBQWdCO0lBZTNCLElBQVkscUJBQXFCO1FBQy9CLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQzlCLENBQUM7SUFFRCxJQUFZLGlDQUFpQztRQUMzQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUM7SUFDcEMsQ0FBQztJQUVELFlBRW1CLE1BQXNCLEVBQ3RCLGFBQTRCLEVBQzVCLDhCQUE4RCxFQUM5RCwrQkFBZ0UsRUFDaEUsOEJBQThELEVBQzlELFFBQWtCO1FBTGxCLFdBQU0sR0FBTixNQUFNLENBQWdCO1FBQ3RCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBQzVCLG1DQUE4QixHQUE5Qiw4QkFBOEIsQ0FBZ0M7UUFDOUQsb0NBQStCLEdBQS9CLCtCQUErQixDQUFpQztRQUNo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Q0osSUFBSTtTQUNMLENBQUM7UUFFRixJQUFJLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lBQzNDLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUNyQyxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxPQUFPLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sS0FBSyxVQUFVLENBQUMsSUFBSSxJQUFJLENBQUM7SUFDeEUsQ0FBQzsrR0E5V1UsZ0JBQWdCLGtCQXdCakIsV0FBVzttSEF4QlYsZ0JBQWdCLGNBRmYsTUFBTTs7NEZBRVAsZ0JBQWdCO2tCQUg1QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBeUJJLE1BQU07MkJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZmlsdGVyLCBPYnNlcnZhYmxlLCBTdWJqZWN0LCB0YWtlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBcHBFcnJvciB9IGZyb20gJy4uLy4uL2V4Y2VwdGlvbnMtaGFuZGxpbmcvZXJyb3JzL2FwcC1lcnJvci5jbGFzcyc7XG5pbXBvcnQgeyBFcnJvclRhZ3MgfSBmcm9tICcuLi8uLi9leGNlcHRpb25zLWhhbmRsaW5nL2Vycm9ycy9lbGstZXJyb3ItdHlwZXMuZW51bSc7XG5pbXBvcnQgeyBFeHRlbmRlZFdpbmRvdyB9IGZyb20gJy4uLy4uL2V4dGVuZGVkLXdpbmRvdy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQ2hlY2tTdGF0dXNBY3Rpb25DcmVhdG9yIH0gZnJvbSAnLi4vLi4vcGF5bWVudC9hY3Rpb25zL2NoZWNrLXN0YXR1cy9jaGVjay1zdGF0dXMuYWN0aW9uLmNsYXNzJztcbmltcG9ydCB7IENoZWNrU3RhdHVzQWN0aW9uIH0gZnJvbSAnLi4vLi4vcGF5bWVudC9hY3Rpb25zL2NoZWNrLXN0YXR1cy9jaGVjay1zdGF0dXMuYWN0aW9uLnR5cGUnO1xuaW1wb3J0IHsgTmV4dEFjdGlvbiB9IGZyb20gJy4uLy4uL3BheW1lbnQvYWN0aW9ucy9uZXh0LWFjdGlvbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgd2luZG93VG9rZW4gfSBmcm9tICcuLi8uLi93aW5kb3cudG9rZW4nO1xuaW1wb3J0IHsgUGF5bWVudFN5c3RlbVByb2Nlc3NpbmdTZXJ2aWNlIH0gZnJvbSAnLi4vcGF5bWVudC1zeXN0ZW1zL3BheW1lbnQtc3lzdGVtLXByb2Nlc3Npbmcuc2VydmljZSc7XG5pbXBvcnQgeyBDaGVja1BheW1lbnREZXZpY2VEYXRhIH0gZnJvbSAnLi9jaGVjay1wYXltZW50LWRldmljZS1kYXRhLmludGVyZmFjZSc7XG5pbXBvcnQgeyBHb29nbGVQYXlJbml0UGFyYW1zIH0gZnJvbSAnLi9nb29nbGUtcGF5LWluaXQtcGFyYW1zLmludGVyZmFjZSc7XG5pbXBvcnQge1xuICBHb29nbGVQYXlDbGllbnQsXG4gIEdvb2dsZVBheUNsaWVudEluaXREYXRhLFxuICBQYXltZW50QXV0aG9yaXplZEhhbmRsZXIsXG4gIFBheW1lbnREYXRhQ2hhbmdlZEhhbmRsZXIsXG59IGZyb20gJy4vZ29vZ2xlLXBheS1saWJyYXJ5LmludGVyZmFjZSc7XG5pbXBvcnQgeyBHb29nbGVQYXlDaGVja291dFBheW1lbnRTZXJ2aWNlIH0gZnJvbSAnLi9wYXltZW50L2dvb2dsZS1wYXktY2hlY2tvdXQtcGF5bWVudC5zZXJ2aWNlJztcbmltcG9ydCB7IEdvb2dsZVBheUluc3RhbnRQYXltZW50U2VydmljZSB9IGZyb20gJy4vcGF5bWVudC9nb29nbGUtcGF5LWluc3RhbnQtcGF5bWVudC5zZXJ2aWNlJztcbmltcG9ydCB7IEdvb2dsZVBheVBheW1lbnRTZXJ2aWNlIH0gZnJvbSAnLi9wYXltZW50L2dvb2dsZS1wYXktcGF5bWVudC1zZXJ2aWNlLmludGVyZmFjZSc7XG5pbXBvcnQgeyBMb2dnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZXhjZXB0aW9ucy1oYW5kbGluZy9sb2dnZXIvbG9nZ2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgVGFnZ2VkRXJyb3IgfSBmcm9tICcuLi8uLi9leGNlcHRpb25zLWhhbmRsaW5nL2Vycm9ycyc7XG5pbXBvcnQgeyBHb29nbGVQYXlCdXR0b25Db25maWd1cmF0aW9uIH0gZnJvbSAnLi9nb29nbGUtcGF5LWJ1dHRvbi1jb25maWd1cmF0aW9uLmludGVyZmFjZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBHb29nbGVQYXlTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBnb29nbGVQYXlTY3JpcHRVcmwgPSAnaHR0cHM6Ly9wYXkuZ29vZ2xlLmNvbS9ncC9wL2pzL3BheS5qcyc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSByZWFkeVRvUGF5ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuIHwgbnVsbD4obnVsbCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgcGF5bWVudFdpbmRvd0lzUmVhZHkgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIHJlYWRvbmx5IHBheW1lbnRXaW5kb3dJc0Nsb3NlID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBlcnJvciA9IG5ldyBTdWJqZWN0PHVua25vd24+KCk7XG5cbiAgcHJpdmF0ZSBnb29nbGVQYXltZW50Q2xpZW50OiBHb29nbGVQYXlDbGllbnQgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBpbml0UGFyYW1zITogR29vZ2xlUGF5SW5pdFBhcmFtcztcbiAgcHJpdmF0ZSBwYXltZW50U2VydmljZTogR29vZ2xlUGF5UGF5bWVudFNlcnZpY2UgfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIG9uUGF5bWVudERhdGFDaGFuZ2VkITogUGF5bWVudERhdGFDaGFuZ2VkSGFuZGxlcjtcbiAgcHJpdmF0ZSBvblBheW1lbnRBdXRob3JpemVkITogUGF5bWVudEF1dGhvcml6ZWRIYW5kbGVyO1xuXG4gIHByaXZhdGUgZ2V0IGxpYnJhcnlXYXNJbml0aWFsaXplZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLndpbmRvdy5nb29nbGU7XG4gIH1cblxuICBwcml2YXRlIGdldCBnb29nbGVQYXltZW50Q2xpZW50V2FzSW5pdGlhbGl6ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhdGhpcy5nb29nbGVQYXltZW50Q2xpZW50O1xuICB9XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3Qod2luZG93VG9rZW4pXG4gICAgcHJpdmF0ZSByZWFkb25seSB3aW5kb3c6IEV4dGVuZGVkV2luZG93LFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyU2VydmljZTogTG9nZ2VyU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBheW1lbnRTeXN0ZW1Qcm9jZXNzaW5nU2VydmljZTogUGF5bWVudFN5c3RlbVByb2Nlc3NpbmdTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZ29vZ2xlUGF5Q2hlY2tvdXRQYXltZW50U2VydmljZTogR29vZ2xlUGF5Q2hlY2tvdXRQYXltZW50U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGdvb2dsZVBheUluc3RhbnRQYXltZW50U2VydmljZTogR29vZ2xlUGF5SW5zdGFudFBheW1lbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgaW5qZWN0b3I6IEluamVjdG9yLFxuICApIHt9XG5cbiAgcHVibGljIGdldCByZWFkeVRvUGF5JCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4gfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMucmVhZHlUb1BheS5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcGF5bWVudFdpbmRvd0lzUmVhZHkkKCk6IE9ic2VydmFibGU8dm9pZD4ge1xuICAgIHJldHVybiB0aGlzLnBheW1lbnRXaW5kb3dJc1JlYWR5LmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBwYXltZW50V2luZG93SXNDbG9zZSQoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMucGF5bWVudFdpbmRvd0lzQ2xvc2UuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGVycm9yJCgpOiBPYnNlcnZhYmxlPHVua25vd24+IHtcbiAgICByZXR1cm4gdGhpcy5lcnJvci5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBpc1JlYWR5VG9QYXkoKTogYm9vbGVhbiB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLnJlYWR5VG9QYXkuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIHB1YmxpYyBpbml0R29vZ2xlUGF5TGlicmFyeShkYXRhOiBHb29nbGVQYXlJbml0UGFyYW1zKTogdm9pZCB7XG4gICAgdGhpcy5pbml0UGFyYW1zID0gZGF0YTtcbiAgICB0aGlzLm9uUGF5bWVudERhdGFDaGFuZ2VkID0gZGF0YS5vblBheW1lbnREYXRhQ2hhbmdlZDtcbiAgICB0aGlzLm9uUGF5bWVudEF1dGhvcml6ZWQgPSBkYXRhLm9uUGF5bWVudEF1dGhvcml6ZWQ7XG5cbiAgICBpZiAodGhpcy5saWJyYXJ5V2FzSW5pdGlhbGl6ZWQgJiYgdGhpcy5nb29nbGVQYXltZW50Q2xpZW50V2FzSW5pdGlhbGl6ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5saWJyYXJ5V2FzSW5pdGlhbGl6ZWQgJiYgIXRoaXMuZ29vZ2xlUGF5bWVudENsaWVudFdhc0luaXRpYWxpemVkKSB7XG4gICAgICB0aGlzLnNldHVwR29vZ2xlUGF5Q2xpZW50KCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5wYXltZW50U3lzdGVtUHJvY2Vzc2luZ1NlcnZpY2UubG9hZFNjcmlwdChcbiAgICAgIHRoaXMuZ29vZ2xlUGF5U2NyaXB0VXJsLFxuICAgICAgdGhpcy5vbkxvYWRTY3JpcHQuYmluZCh0aGlzKSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGNoZWNrUGF5bWVudERldmljZShkYXRhOiBDaGVja1BheW1lbnREZXZpY2VEYXRhKTogdm9pZCB7XG4gICAgdGhpcy5wYXltZW50U3lzdGVtUHJvY2Vzc2luZ1NlcnZpY2UuaW5pdGlhbGl6ZSRcbiAgICAgIC5waXBlKGZpbHRlcihCb29sZWFuKSwgdGFrZSgxKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuZ29vZ2xlUGF5bWVudENsaWVudCkge1xuICAgICAgICAgIHRoaXMubG9nZ2VyU2VydmljZS5lcnJvcihcbiAgICAgICAgICAgIG5ldyBUYWdnZWRFcnJvcignR29vZ2xlIHBheW1lbnQgY2xpZW50IGlzIG5vdCBpbml0aWFsaXplZCcsIFtcbiAgICAgICAgICAgICAgRXJyb3JUYWdzLkdPT0dMRVBBWSxcbiAgICAgICAgICAgIF0pLFxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhyb3cgbmV3IEFwcEVycm9yKFxuICAgICAgICAgICAgYEdvb2dsZSBQYXk6IEdvb2dsZSBwYXltZW50IGNsaWVudCBpcyBub3QgaW5pdGlhbGl6ZWRgLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnBheW1lbnRTZXJ2aWNlID0gdGhpcy5nZXRQYXltZW50U2VydmljZSgpO1xuICAgICAgICBjb25zdCBpbml0RGF0YSA9IHRoaXMucGF5bWVudFNlcnZpY2UucHJlcGFyZVBheW1lbnQoe1xuICAgICAgICAgIGluaXRQYXJhbXM6IHRoaXMuaW5pdFBhcmFtcyxcbiAgICAgICAgICBjaGVja0RldmljZURhdGE6IGRhdGEsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICghaW5pdERhdGEpIHtcbiAgICAgICAgICB0aGlzLmxvZ2dlclNlcnZpY2UuZXJyb3IoXG4gICAgICAgICAgICBuZXcgVGFnZ2VkRXJyb3IoJ05vIGluaXRpYWxpemF0aW9uIGRhdGEnLCBbRXJyb3JUYWdzLkdPT0dMRVBBWV0pLFxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhyb3cgbmV3IEFwcEVycm9yKCdHb29nbGUgUGF5OiBubyBpbml0aWFsaXphdGlvbiBkYXRhJyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmdvb2dsZVBheW1lbnRDbGllbnRcbiAgICAgICAgICAuaXNSZWFkeVRvUGF5KGluaXREYXRhLmlzUmVhZHlUb1BheVJlcXVlc3QpXG4gICAgICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICBpZiAocmVzcG9uc2UucmVzdWx0ICYmIHRoaXMuZ29vZ2xlUGF5bWVudENsaWVudCkge1xuICAgICAgICAgICAgICB0aGlzLmdvb2dsZVBheW1lbnRDbGllbnQucHJlZmV0Y2hQYXltZW50RGF0YShcbiAgICAgICAgICAgICAgICBpbml0RGF0YS5wYXltZW50RGF0YVJlcXVlc3QsXG4gICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucmVhZHlUb1BheS5uZXh0KHRydWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnJlYWR5VG9QYXkubmV4dChmYWxzZSk7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSByZXNwb25zZS5yZXN1bHQ/LnRvU3RyaW5nKCkgPz8gJyc7XG4gICAgICAgICAgICBjb25zdCBpc0hhdmVQYXltZW50Q2xpZW50ID0gQm9vbGVhbihcbiAgICAgICAgICAgICAgdGhpcy5nb29nbGVQYXltZW50Q2xpZW50LFxuICAgICAgICAgICAgKS50b1N0cmluZygpO1xuXG4gICAgICAgICAgICBjb25zdCBtZXNzYWdlID0gYEdvb2dsZSBQYXk6IHBvc3NpYmx5IG5vIHJlc3BvbnNlLnJlc3VsdCBvciBnb29nbGVQYXltZW50Q2xpZW50IGlzIG1pc3NpbmcsIHJlc3VsdCAtICR7cmVzdWx0fSwgaXNIYXZlUGF5bWVudENsaWVudCAtICR7aXNIYXZlUGF5bWVudENsaWVudH1gO1xuICAgICAgICAgICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmVycm9yKFxuICAgICAgICAgICAgICBuZXcgVGFnZ2VkRXJyb3IobWVzc2FnZSwgW0Vycm9yVGFncy5HT09HTEVQQVldKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnJlYWR5VG9QYXkubmV4dChmYWxzZSk7XG5cbiAgICAgICAgICAgIGxldCBtZXNzYWdlID0gKGVycm9yIGFzIHN0cmluZykgPz8gJyc7XG5cbiAgICAgICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgICAgICAgIG1lc3NhZ2UgPSBlcnJvci5tZXNzYWdlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmxvZ2dlclNlcnZpY2UuZXJyb3IoXG4gICAgICAgICAgICAgIG5ldyBUYWdnZWRFcnJvcihcbiAgICAgICAgICAgICAgICBgR29vZ2xlIFBheTogZGV2aWNlIGlzIG5vdCByZWFkeSB0byBwYXksICR7bWVzc2FnZX1gLFxuICAgICAgICAgICAgICAgIFtFcnJvclRhZ3MuR09PR0xFUEFZXSxcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwcm9jZWVkQ2hlY2tvdXQoKTogUHJvbWlzZTxDaGVja1N0YXR1c0FjdGlvbiB8IG51bGw+IHtcbiAgICBpZiAoIXRoaXMuZ29vZ2xlUGF5bWVudENsaWVudCkge1xuICAgICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmVycm9yKFxuICAgICAgICBuZXcgVGFnZ2VkRXJyb3IoXG4gICAgICAgICAgJ0dvb2dsZSBwYXltZW50IGNsaWVudCBpcyBub3QgaW5pdGlhbGl6ZWQgdG8gcHJvY2VlZCBjaGVja291dCcsXG4gICAgICAgICAgW0Vycm9yVGFncy5HT09HTEVQQVldLFxuICAgICAgICApLFxuICAgICAgKTtcbiAgICAgIHRocm93IG5ldyBBcHBFcnJvcihcbiAgICAgICAgYEdvb2dsZSBQYXkuIHByb2NlZWRDaGVja291dDogbm8gZ29vZ2xlIHBheW1lbnQgY2xpZW50YCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLnBheW1lbnRTZXJ2aWNlKSB7XG4gICAgICB0aGlzLmxvZ2dlclNlcnZpY2UuZXJyb3IoXG4gICAgICAgIG5ldyBUYWdnZWRFcnJvcihcbiAgICAgICAgICAnR29vZ2xlIHBheW1lbnQgc2VydmljZSBpcyBub3QgaW5pdGlhbGl6ZWQgdG8gcHJvY2VlZCBjaGVja291dCcsXG4gICAgICAgICAgW0Vycm9yVGFncy5HT09HTEVQQVldLFxuICAgICAgICApLFxuICAgICAgKTtcbiAgICAgIHRocm93IG5ldyBBcHBFcnJvcihcbiAgICAgICAgYEdvb2dsZSBQYXkuIHByb2NlZWRDaGVja291dDogbm8gZ29vZ2xlIHBheW1lbnQgc2VydmljZWAsXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHBheW1lbnREYXRhUmVxdWVzdCA9IHRoaXMucGF5bWVudFNlcnZpY2UuZ2V0UGF5bWVudFJlcXVlc3QoKTtcblxuICAgIGlmICghcGF5bWVudERhdGFSZXF1ZXN0KSB7XG4gICAgICB0aGlzLmxvZ2dlclNlcnZpY2UuZXJyb3IoXG4gICAgICAgIG5ldyBUYWdnZWRFcnJvcignTm8gZGF0YSBmb3IgcGF5bWVudCBkYXRhIHJlcXVlc3QnLCBbXG4gICAgICAgICAgRXJyb3JUYWdzLkdPT0dMRVBBWSxcbiAgICAgICAgXSksXG4gICAgICApO1xuICAgICAgdGhyb3cgbmV3IEFwcEVycm9yKGBHb29nbGUgUGF5OiBObyBkYXRhIGZvciBwYXltZW50IGRhdGEgcmVxdWVzdGApO1xuICAgIH1cblxuICAgIGNvbnN0IGNoZWNrU3RhdHVzQWN0aW9uOiBOZXh0QWN0aW9uID0gdGhpcy5pbmplY3RvclxuICAgICAgLmdldDxDaGVja1N0YXR1c0FjdGlvbkNyZWF0b3I+KENoZWNrU3RhdHVzQWN0aW9uQ3JlYXRvcilcbiAgICAgIC5nZXRBY3Rpb25EYXRhKCk7XG5cbiAgICB0cnkge1xuICAgICAgdGhpcy5wYXltZW50V2luZG93SXNSZWFkeS5uZXh0KCk7XG5cbiAgICAgIGNvbnN0IHBheW1lbnREYXRhID1cbiAgICAgICAgYXdhaXQgdGhpcy5nb29nbGVQYXltZW50Q2xpZW50LmxvYWRQYXltZW50RGF0YShwYXltZW50RGF0YVJlcXVlc3QpO1xuXG4gICAgICBpZiAoIXBheW1lbnREYXRhPy5wYXltZW50TWV0aG9kRGF0YT8udG9rZW5pemF0aW9uRGF0YT8udG9rZW4pIHtcbiAgICAgICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmVycm9yKFxuICAgICAgICAgIG5ldyBUYWdnZWRFcnJvcignVG9rZW4gaXMgbWlzc2luZycsIFtFcnJvclRhZ3MuR09PR0xFUEFZXSksXG4gICAgICAgICk7XG4gICAgICAgIHRocm93IG5ldyBBcHBFcnJvcignR29vZ2xlIFBheTogdG9rZW4gaXMgbWlzc2luZycpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnBheW1lbnRTZXJ2aWNlLmhhbmRsZVN1Y2Nlc3NmdWxQYXltZW50Py4ocGF5bWVudERhdGEpO1xuXG4gICAgICB0aGlzLnBheW1lbnRXaW5kb3dJc0Nsb3NlLm5leHQoKTtcblxuICAgICAgcmV0dXJuIGNoZWNrU3RhdHVzQWN0aW9uO1xuICAgIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgICB0aGlzLnBheW1lbnRTZXJ2aWNlLmhhbmRsZUZhaWxlZFBheW1lbnQ/LihlcnJvcik7XG4gICAgICB0aGlzLnBheW1lbnRXaW5kb3dJc0Nsb3NlLm5leHQoKTtcbiAgICAgIHRoaXMuZXJyb3IubmV4dChlcnJvcik7XG5cbiAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9IChlcnJvciBhcyB7IG1lc3NhZ2U6IHN0cmluZyB9KT8ubWVzc2FnZSA/PyAnJztcbiAgICAgIGNvbnN0IGVycm9yU3RhdHVzQ29kZSA9XG4gICAgICAgIChlcnJvciBhcyB7IHN0YXR1c0NvZGU6IHN0cmluZyB9KT8uc3RhdHVzQ29kZSA/PyAnJztcblxuICAgICAgY29uc3QgaXNDbG9zZWRCeVVzZXIgPSB0aGlzLmlzQ2xvc2VkQnlVc2VyKGVycm9yTWVzc2FnZSk7XG4gICAgICBjb25zdCBpc0NhbmNlbGVkU3RhdHVzID0gdGhpcy5pc0NhbmNlbGVkU3RhdHVzKGVycm9yU3RhdHVzQ29kZSk7XG5cbiAgICAgIGlmIChpc0Nsb3NlZEJ5VXNlciB8fCBpc0NhbmNlbGVkU3RhdHVzKSByZXR1cm4gbnVsbDtcblxuICAgICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmVycm9yKFxuICAgICAgICBuZXcgVGFnZ2VkRXJyb3IoYEdvb2dsZSBQYXk6IHByb2NlZWRDaGVja291dCBmYWlsZWQsICR7ZXJyb3JNZXNzYWdlfWAsIFtcbiAgICAgICAgICBFcnJvclRhZ3MuR09PR0xFUEFZLFxuICAgICAgICBdKSxcbiAgICAgICk7XG5cbiAgICAgIHJldHVybiBjaGVja1N0YXR1c0FjdGlvbjtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgY3JlYXRlQnV0dG9uKFxuICAgIG9uQ2xpY2tIYW5kbGVyOiAoKSA9PiB2b2lkLFxuICAgIGNvbmZpZ3VyYXRpb246IEdvb2dsZVBheUJ1dHRvbkNvbmZpZ3VyYXRpb24sXG4gICk6IEhUTUxCdXR0b25FbGVtZW50IHwgbnVsbCB7XG4gICAgaWYgKCF0aGlzLmdvb2dsZVBheW1lbnRDbGllbnQpIHtcbiAgICAgIHRoaXMubG9nZ2VyU2VydmljZS5lcnJvcihcbiAgICAgICAgbmV3IFRhZ2dlZEVycm9yKFxuICAgICAgICAgICdHb29nbGUgcGF5bWVudCBjbGllbnQgaXMgbm90IGluaXRpYWxpemVkIHRvIGNyZWF0ZSBidXR0b24nLFxuICAgICAgICAgIFtFcnJvclRhZ3MuR09PR0xFUEFZXSxcbiAgICAgICAgKSxcbiAgICAgICk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBhbGxvd2VkUGF5bWVudE1ldGhvZHMgPVxuICAgICAgdGhpcy5wYXltZW50U2VydmljZT8uZ2V0QWxsb3dlZFBheW1lbnRNZXRob2RzKCkgfHwgW107XG5cbiAgICByZXR1cm4gdGhpcy5nb29nbGVQYXltZW50Q2xpZW50LmNyZWF0ZUJ1dHRvbih7XG4gICAgICBvbkNsaWNrOiBvbkNsaWNrSGFuZGxlcixcbiAgICAgIGFsbG93ZWRQYXltZW50TWV0aG9kczogYWxsb3dlZFBheW1lbnRNZXRob2RzLFxuICAgICAgYnV0dG9uU2l6ZU1vZGU6ICdmaWxsJyxcbiAgICAgIGJ1dHRvblR5cGU6ICdidXknLFxuICAgICAgYnV0dG9uQ29sb3I6IGNvbmZpZ3VyYXRpb24uY29sb3IgPz8gJ2RlZmF1bHQnLFxuICAgICAgYnV0dG9uTG9jYWxlOiB0aGlzLmdldExvY2FsZUZvckJ1dHRvbihjb25maWd1cmF0aW9uLmxvY2FsZSksXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNldHVwR29vZ2xlUGF5Q2xpZW50KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy53aW5kb3cuZ29vZ2xlKSB7XG4gICAgICB0aGlzLmxvZ2dlclNlcnZpY2UuZXJyb3IoXG4gICAgICAgIG5ldyBUYWdnZWRFcnJvcignR29vZ2xlIFBheSBsaWJyYXJ5IGlzIG5vdCBhdmFpbGFibGUgb24gd2luZG93JywgW1xuICAgICAgICAgIEVycm9yVGFncy5HT09HTEVQQVksXG4gICAgICAgIF0pLFxuICAgICAgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBlbnZpcm9ubWVudCA9IHRoaXMuaW5pdFBhcmFtcy5pc1NhbmRib3ggPyAnVEVTVCcgOiAnUFJPRFVDVElPTic7XG4gICAgY29uc3QgZ29vZ2xlUGF5bWVudENsaWVudERhdGE6IEdvb2dsZVBheUNsaWVudEluaXREYXRhID0ge1xuICAgICAgZW52aXJvbm1lbnQsXG4gICAgfTtcblxuICAgIGlmICh0aGlzLmluaXRQYXJhbXMuaXNJbnN0YW50UGF5Rmxvdykge1xuICAgICAgZ29vZ2xlUGF5bWVudENsaWVudERhdGEucGF5bWVudERhdGFDYWxsYmFja3MgPSB7XG4gICAgICAgIG9uUGF5bWVudERhdGFDaGFuZ2VkOiB0aGlzLm9uUGF5bWVudERhdGFDaGFuZ2VkLFxuICAgICAgICBvblBheW1lbnRBdXRob3JpemVkOiB0aGlzLm9uUGF5bWVudEF1dGhvcml6ZWQsXG4gICAgICB9O1xuICAgIH1cblxuICAgIHRoaXMuZ29vZ2xlUGF5bWVudENsaWVudCA9XG4gICAgICBuZXcgdGhpcy53aW5kb3cuZ29vZ2xlLnBheW1lbnRzLmFwaS5QYXltZW50c0NsaWVudChcbiAgICAgICAgZ29vZ2xlUGF5bWVudENsaWVudERhdGEsXG4gICAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkxvYWRTY3JpcHQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLndpbmRvdy5nb29nbGUpIHtcbiAgICAgIGNvbnN0IHJldHJ5VGltZW91dCA9IDEwMDA7XG5cbiAgICAgIHRoaXMubG9nZ2VyU2VydmljZS5lcnJvcihcbiAgICAgICAgbmV3IFRhZ2dlZEVycm9yKFxuICAgICAgICAgICdHb29nbGUgUGF5OiBsaWJyYXJ5IG5vdCBhdmFpbGFibGUgYWZ0ZXIgc2NyaXB0IGxvYWQsIHJldHJ5aW5nJyxcbiAgICAgICAgICBbRXJyb3JUYWdzLkdPT0dMRVBBWV0sXG4gICAgICAgICksXG4gICAgICApO1xuXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgY29uc3QgaXNBdmFpbGFibGVHb29nbGVDbGllbnQgPSAhIXRoaXMud2luZG93Lmdvb2dsZTtcblxuICAgICAgICBpZiAoaXNBdmFpbGFibGVHb29nbGVDbGllbnQpIHtcbiAgICAgICAgICB0aGlzLnNldHVwR29vZ2xlUGF5Q2xpZW50KCk7XG5cbiAgICAgICAgICB0aGlzLnBheW1lbnRTeXN0ZW1Qcm9jZXNzaW5nU2VydmljZS5lbWl0SW5pdGlhbGl6ZSh0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfSwgcmV0cnlUaW1lb3V0KTtcblxuICAgICAgdGhyb3cgbmV3IEFwcEVycm9yKCdHb29nbGUgUGF5OiBnb29nbGUgbGlicmFyeSBub3cgaXMgYXZhaWxhYmxlJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2V0dXBHb29nbGVQYXlDbGllbnQoKTtcblxuICAgICAgdGhpcy5wYXltZW50U3lzdGVtUHJvY2Vzc2luZ1NlcnZpY2UuZW1pdEluaXRpYWxpemUodHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRQYXltZW50U2VydmljZSgpOiBHb29nbGVQYXlQYXltZW50U2VydmljZSB7XG4gICAgaWYgKHRoaXMuaW5pdFBhcmFtcy5pc0luc3RhbnRQYXlGbG93KVxuICAgICAgcmV0dXJuIHRoaXMuZ29vZ2xlUGF5SW5zdGFudFBheW1lbnRTZXJ2aWNlO1xuICAgIHJldHVybiB0aGlzLmdvb2dsZVBheUNoZWNrb3V0UGF5bWVudFNlcnZpY2U7XG4gIH1cblxuICBwcml2YXRlIGlzQ2xvc2VkQnlVc2VyKG1lc3NhZ2U6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBtZXNzYWdlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ3VzZXIgY2xvc2VkIHRoZSBwYXltZW50IHJlcXVlc3QgdWknKTtcbiAgfVxuXG4gIHByaXZhdGUgaXNDYW5jZWxlZFN0YXR1cyhzdGF0dXNDb2RlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gc3RhdHVzQ29kZS50b0xvd2VyQ2FzZSgpID09PSAnY2FuY2VsZWQnO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRMb2NhbGVGb3JCdXR0b24odXNlckxvY2FsZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBhbGxvd2VkTG9jYWxlcyA9IFtcbiAgICAgICdlbicsXG4gICAgICAnYXInLFxuICAgICAgJ2JnJyxcbiAgICAgICdjYScsXG4gICAgICAnY3MnLFxuICAgICAgJ2RhJyxcbiAgICAgICdkZScsXG4gICAgICAnZWwnLFxuICAgICAgJ2VzJyxcbiAgICAgICdldCcsXG4gICAgICAnZmknLFxuICAgICAgJ2ZyJyxcbiAgICAgICdocicsXG4gICAgICAnaWQnLFxuICAgICAgJ2l0JyxcbiAgICAgICdqYScsXG4gICAgICAna28nLFxuICAgICAgJ21zJyxcbiAgICAgICdubCcsXG4gICAgICAnbm8nLFxuICAgICAgJ3BsJyxcbiAgICAgICdwdCcsXG4gICAgICAncnUnLFxuICAgICAgJ3NrJyxcbiAgICAgICdzbCcsXG4gICAgICAnc3InLFxuICAgICAgJ3N2JyxcbiAgICAgICd0aCcsXG4gICAgICAndHInLFxuICAgICAgJ3VrJyxcbiAgICAgICd6aCcsXG4gICAgXTtcblxuICAgIGlmIChbJ2NuJywgJ3poX0hBTlQnXS5pbmNsdWRlcyh1c2VyTG9jYWxlKSkge1xuICAgICAgcmV0dXJuICd6aCc7XG4gICAgfVxuXG4gICAgaWYgKFsnemhfSEFOUyddLmluY2x1ZGVzKHVzZXJMb2NhbGUpKSB7XG4gICAgICByZXR1cm4gJ3R3JztcbiAgICB9XG5cbiAgICByZXR1cm4gYWxsb3dlZExvY2FsZXMuZmluZCgobG9jYWxlKSA9PiBsb2NhbGUgPT09IHVzZXJMb2NhbGUpID8/ICdlbic7XG4gIH1cbn1cbiJdfQ==
|
|
277
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ29vZ2xlLXBheS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb3JlL3Nkay1wYXltZW50LXN5c3RlbXMvZ29vZ2xlLXBheS9nb29nbGUtcGF5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDN0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQWMsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDNUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHVEQUF1RCxDQUFDO0FBRWxGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhEQUE4RCxDQUFDO0FBR3hHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQWNqRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7Ozs7OztBQU0vRCxNQUFNLE9BQU8sZ0JBQWdCO0lBaUIzQixJQUFZLHFCQUFxQjtRQUMvQixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFBWSxpQ0FBaUM7UUFDM0MsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDO0lBQ3BDLENBQUM7SUFFRCxZQUVtQixNQUFzQixFQUN0QixhQUE0QixFQUM1Qiw4QkFBOEQsRUFDOUQsK0JBQWdFLEVBQ2hFLDhCQUE4RCxFQUM5RCxRQUFrQjtRQUxsQixXQUFNLEdBQU4sTUFBTSxDQUFnQjtRQUN0QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQUM1QixtQ0FBOEIsR0FBOUIsOEJBQThCLENBQWdDO1FBQzlELG9DQUErQixHQUEvQiwrQkFBK0IsQ0FBaUM7UUFD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Q0osSUFBSTtZQUNKLElBQUk7WUFDSixJQUFJO1lBQ0osSUFBSTtZQUNKLElBQUk7WUFDSixJQUFJO1lBQ0osSUFBSTtZQUNKLElBQUk7WUFDSixJQUFJO1lBQ0osSUFBSTtZQUNKLElBQUk7WUFDSixJQUFJO1lBQ0osSUFBSTtZQUNKLElBQUk7WUFDSixJQUFJO1lBQ0osSUFBSTtZQUNKLElBQUk7WUFDSixJQUFJO1lBQ0osSUFBSTtZQUNKLElBQUk7WUFDSixJQUFJO1lBQ0osSUFBSTtZQUNKLElBQUk7WUFDSixJQUFJO1lBQ0osSUFBSTtZQUNKLElBQUk7U0FDTCxDQUFDO1FBRUYsSUFBSSxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUMzQyxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7WUFDckMsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsT0FBTyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLEtBQUssVUFBVSxDQUFDLElBQUksSUFBSSxDQUFDO0lBQ3hFLENBQUM7K0dBM1hVLGdCQUFnQixrQkEwQmpCLFdBQVc7bUhBMUJWLGdCQUFnQixjQUZmLE1BQU07OzRGQUVQLGdCQUFnQjtrQkFINUIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQTJCSSxNQUFNOzJCQUFDLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGZpbHRlciwgT2JzZXJ2YWJsZSwgU3ViamVjdCwgdGFrZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQXBwRXJyb3IgfSBmcm9tICcuLi8uLi9leGNlcHRpb25zLWhhbmRsaW5nL2Vycm9ycy9hcHAtZXJyb3IuY2xhc3MnO1xuaW1wb3J0IHsgRXJyb3JUYWdzIH0gZnJvbSAnLi4vLi4vZXhjZXB0aW9ucy1oYW5kbGluZy9lcnJvcnMvZWxrLWVycm9yLXR5cGVzLmVudW0nO1xuaW1wb3J0IHsgRXh0ZW5kZWRXaW5kb3cgfSBmcm9tICcuLi8uLi9leHRlbmRlZC13aW5kb3cuaW50ZXJmYWNlJztcbmltcG9ydCB7IENoZWNrU3RhdHVzQWN0aW9uQ3JlYXRvciB9IGZyb20gJy4uLy4uL3BheW1lbnQvYWN0aW9ucy9jaGVjay1zdGF0dXMvY2hlY2stc3RhdHVzLmFjdGlvbi5jbGFzcyc7XG5pbXBvcnQgeyBDaGVja1N0YXR1c0FjdGlvbiB9IGZyb20gJy4uLy4uL3BheW1lbnQvYWN0aW9ucy9jaGVjay1zdGF0dXMvY2hlY2stc3RhdHVzLmFjdGlvbi50eXBlJztcbmltcG9ydCB7IE5leHRBY3Rpb24gfSBmcm9tICcuLi8uLi9wYXltZW50L2FjdGlvbnMvbmV4dC1hY3Rpb24uaW50ZXJmYWNlJztcbmltcG9ydCB7IHdpbmRvd1Rva2VuIH0gZnJvbSAnLi4vLi4vd2luZG93LnRva2VuJztcbmltcG9ydCB7IFBheW1lbnRTeXN0ZW1Qcm9jZXNzaW5nU2VydmljZSB9IGZyb20gJy4uL3BheW1lbnQtc3lzdGVtcy9wYXltZW50LXN5c3RlbS1wcm9jZXNzaW5nLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2hlY2tQYXltZW50RGV2aWNlRGF0YSB9IGZyb20gJy4vY2hlY2stcGF5bWVudC1kZXZpY2UtZGF0YS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgR29vZ2xlUGF5SW5pdFBhcmFtcyB9IGZyb20gJy4vZ29vZ2xlLXBheS1pbml0LXBhcmFtcy5pbnRlcmZhY2UnO1xuaW1wb3J0IHtcbiAgR29vZ2xlUGF5Q2xpZW50LFxuICBHb29nbGVQYXlDbGllbnRJbml0RGF0YSxcbiAgUGF5bWVudEF1dGhvcml6ZWRIYW5kbGVyLFxuICBQYXltZW50RGF0YUNoYW5nZWRIYW5kbGVyLFxufSBmcm9tICcuL2dvb2dsZS1wYXktbGlicmFyeS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgR29vZ2xlUGF5Q2hlY2tvdXRQYXltZW50U2VydmljZSB9IGZyb20gJy4vcGF5bWVudC9nb29nbGUtcGF5LWNoZWNrb3V0LXBheW1lbnQuc2VydmljZSc7XG5pbXBvcnQgeyBHb29nbGVQYXlJbnN0YW50UGF5bWVudFNlcnZpY2UgfSBmcm9tICcuL3BheW1lbnQvZ29vZ2xlLXBheS1pbnN0YW50LXBheW1lbnQuc2VydmljZSc7XG5pbXBvcnQgeyBHb29nbGVQYXlQYXltZW50U2VydmljZSB9IGZyb20gJy4vcGF5bWVudC9nb29nbGUtcGF5LXBheW1lbnQtc2VydmljZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgTG9nZ2VyU2VydmljZSB9IGZyb20gJy4uLy4uL2V4Y2VwdGlvbnMtaGFuZGxpbmcvbG9nZ2VyL2xvZ2dlci5zZXJ2aWNlJztcbmltcG9ydCB7IFRhZ2dlZEVycm9yIH0gZnJvbSAnLi4vLi4vZXhjZXB0aW9ucy1oYW5kbGluZy9lcnJvcnMnO1xuaW1wb3J0IHsgR29vZ2xlUGF5QnV0dG9uQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vZ29vZ2xlLXBheS1idXR0b24tY29uZmlndXJhdGlvbi5pbnRlcmZhY2UnO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgR29vZ2xlUGF5U2VydmljZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgZ29vZ2xlUGF5U2NyaXB0VXJsID0gJ2h0dHBzOi8vcGF5Lmdvb2dsZS5jb20vZ3AvcC9qcy9wYXkuanMnO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgcmVhZHlUb1BheSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbiB8IG51bGw+KG51bGwpO1xuICBwcml2YXRlIHJlYWRvbmx5IHBheW1lbnRXaW5kb3dJc1JlYWR5ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBwYXltZW50V2luZG93SXNDbG9zZSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZXJyb3IgPSBuZXcgU3ViamVjdDx1bmtub3duPigpO1xuXG4gIHByaXZhdGUgcGF5bWVudEluUHJvZ3Jlc3MgPSBmYWxzZTtcblxuICBwcml2YXRlIGdvb2dsZVBheW1lbnRDbGllbnQ6IEdvb2dsZVBheUNsaWVudCB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIGluaXRQYXJhbXMhOiBHb29nbGVQYXlJbml0UGFyYW1zO1xuICBwcml2YXRlIHBheW1lbnRTZXJ2aWNlOiBHb29nbGVQYXlQYXltZW50U2VydmljZSB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgb25QYXltZW50RGF0YUNoYW5nZWQhOiBQYXltZW50RGF0YUNoYW5nZWRIYW5kbGVyO1xuICBwcml2YXRlIG9uUGF5bWVudEF1dGhvcml6ZWQhOiBQYXltZW50QXV0aG9yaXplZEhhbmRsZXI7XG5cbiAgcHJpdmF0ZSBnZXQgbGlicmFyeVdhc0luaXRpYWxpemVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIXRoaXMud2luZG93Lmdvb2dsZTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGdvb2dsZVBheW1lbnRDbGllbnRXYXNJbml0aWFsaXplZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISF0aGlzLmdvb2dsZVBheW1lbnRDbGllbnQ7XG4gIH1cblxuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgQEluamVjdCh3aW5kb3dUb2tlbilcbiAgICBwcml2YXRlIHJlYWRvbmx5IHdpbmRvdzogRXh0ZW5kZWRXaW5kb3csXG4gICAgcHJpdmF0ZSByZWFkb25seSBsb2dnZXJTZXJ2aWNlOiBMb2dnZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcGF5bWVudFN5c3RlbVByb2Nlc3NpbmdTZXJ2aWNlOiBQYXltZW50U3lzdGVtUHJvY2Vzc2luZ1NlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBnb29nbGVQYXlDaGVja291dFBheW1lbnRTZXJ2aWNlOiBHb29nbGVQYXlDaGVja291dFBheW1lbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZ29vZ2xlUGF5SW5zdGFudFBheW1lbnRTZXJ2aWNlOiBHb29nbGVQYXlJbnN0YW50UGF5bWVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBpbmplY3RvcjogSW5qZWN0b3IsXG4gICkge31cblxuICBwdWJsaWMgZ2V0IHJlYWR5VG9QYXkkKCk6IE9ic2VydmFibGU8Ym9vbGVhbiB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5yZWFkeVRvUGF5LmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBwYXltZW50V2luZG93SXNSZWFkeSQoKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMucGF5bWVudFdpbmRvd0lzUmVhZHkuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHBheW1lbnRXaW5kb3dJc0Nsb3NlJCgpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5wYXltZW50V2luZG93SXNDbG9zZS5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZXJyb3IkKCk6IE9ic2VydmFibGU8dW5rbm93bj4ge1xuICAgIHJldHVybiB0aGlzLmVycm9yLmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGlzUmVhZHlUb1BheSgpOiBib29sZWFuIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMucmVhZHlUb1BheS5nZXRWYWx1ZSgpO1xuICB9XG5cbiAgcHVibGljIGluaXRHb29nbGVQYXlMaWJyYXJ5KGRhdGE6IEdvb2dsZVBheUluaXRQYXJhbXMpOiB2b2lkIHtcbiAgICB0aGlzLmluaXRQYXJhbXMgPSBkYXRhO1xuICAgIHRoaXMub25QYXltZW50RGF0YUNoYW5nZWQgPSBkYXRhLm9uUGF5bWVudERhdGFDaGFuZ2VkO1xuICAgIHRoaXMub25QYXltZW50QXV0aG9yaXplZCA9IGRhdGEub25QYXltZW50QXV0aG9yaXplZDtcblxuICAgIGlmICh0aGlzLmxpYnJhcnlXYXNJbml0aWFsaXplZCAmJiB0aGlzLmdvb2dsZVBheW1lbnRDbGllbnRXYXNJbml0aWFsaXplZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmxpYnJhcnlXYXNJbml0aWFsaXplZCAmJiAhdGhpcy5nb29nbGVQYXltZW50Q2xpZW50V2FzSW5pdGlhbGl6ZWQpIHtcbiAgICAgIHRoaXMuc2V0dXBHb29nbGVQYXlDbGllbnQoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnBheW1lbnRTeXN0ZW1Qcm9jZXNzaW5nU2VydmljZS5sb2FkU2NyaXB0KFxuICAgICAgdGhpcy5nb29nbGVQYXlTY3JpcHRVcmwsXG4gICAgICB0aGlzLm9uTG9hZFNjcmlwdC5iaW5kKHRoaXMpLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgY2hlY2tQYXltZW50RGV2aWNlKGRhdGE6IENoZWNrUGF5bWVudERldmljZURhdGEpOiB2b2lkIHtcbiAgICB0aGlzLnBheW1lbnRTeXN0ZW1Qcm9jZXNzaW5nU2VydmljZS5pbml0aWFsaXplJFxuICAgICAgLnBpcGUoZmlsdGVyKEJvb2xlYW4pLCB0YWtlKDEpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGlmICghdGhpcy5nb29nbGVQYXltZW50Q2xpZW50KSB7XG4gICAgICAgICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmVycm9yKFxuICAgICAgICAgICAgbmV3IFRhZ2dlZEVycm9yKCdHb29nbGUgcGF5bWVudCBjbGllbnQgaXMgbm90IGluaXRpYWxpemVkJywgW1xuICAgICAgICAgICAgICBFcnJvclRhZ3MuR09PR0xFUEFZLFxuICAgICAgICAgICAgXSksXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aHJvdyBuZXcgQXBwRXJyb3IoXG4gICAgICAgICAgICBgR29vZ2xlIFBheTogR29vZ2xlIHBheW1lbnQgY2xpZW50IGlzIG5vdCBpbml0aWFsaXplZGAsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMucGF5bWVudFNlcnZpY2UgPSB0aGlzLmdldFBheW1lbnRTZXJ2aWNlKCk7XG4gICAgICAgIGNvbnN0IGluaXREYXRhID0gdGhpcy5wYXltZW50U2VydmljZS5wcmVwYXJlUGF5bWVudCh7XG4gICAgICAgICAgaW5pdFBhcmFtczogdGhpcy5pbml0UGFyYW1zLFxuICAgICAgICAgIGNoZWNrRGV2aWNlRGF0YTogZGF0YSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKCFpbml0RGF0YSkge1xuICAgICAgICAgIHRoaXMubG9nZ2VyU2VydmljZS5lcnJvcihcbiAgICAgICAgICAgIG5ldyBUYWdnZWRFcnJvcignTm8gaW5pdGlhbGl6YXRpb24gZGF0YScsIFtFcnJvclRhZ3MuR09PR0xFUEFZXSksXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aHJvdyBuZXcgQXBwRXJyb3IoJ0dvb2dsZSBQYXk6IG5vIGluaXRpYWxpemF0aW9uIGRhdGEnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZ29vZ2xlUGF5bWVudENsaWVudFxuICAgICAgICAgIC5pc1JlYWR5VG9QYXkoaW5pdERhdGEuaXNSZWFkeVRvUGF5UmVxdWVzdClcbiAgICAgICAgICAudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgIGlmIChyZXNwb25zZS5yZXN1bHQgJiYgdGhpcy5nb29nbGVQYXltZW50Q2xpZW50KSB7XG4gICAgICAgICAgICAgIHRoaXMuZ29vZ2xlUGF5bWVudENsaWVudC5wcmVmZXRjaFBheW1lbnREYXRhKFxuICAgICAgICAgICAgICAgIGluaXREYXRhLnBheW1lbnREYXRhUmVxdWVzdCxcbiAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZWFkeVRvUGF5Lm5leHQodHJ1ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMucmVhZHlUb1BheS5uZXh0KGZhbHNlKTtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHJlc3BvbnNlLnJlc3VsdD8udG9TdHJpbmcoKSA/PyAnJztcbiAgICAgICAgICAgIGNvbnN0IGlzSGF2ZVBheW1lbnRDbGllbnQgPSBCb29sZWFuKFxuICAgICAgICAgICAgICB0aGlzLmdvb2dsZVBheW1lbnRDbGllbnQsXG4gICAgICAgICAgICApLnRvU3RyaW5nKCk7XG5cbiAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSBgR29vZ2xlIFBheTogcG9zc2libHkgbm8gcmVzcG9uc2UucmVzdWx0IG9yIGdvb2dsZVBheW1lbnRDbGllbnQgaXMgbWlzc2luZywgcmVzdWx0IC0gJHtyZXN1bHR9LCBpc0hhdmVQYXltZW50Q2xpZW50IC0gJHtpc0hhdmVQYXltZW50Q2xpZW50fWA7XG4gICAgICAgICAgICB0aGlzLmxvZ2dlclNlcnZpY2UuZXJyb3IoXG4gICAgICAgICAgICAgIG5ldyBUYWdnZWRFcnJvcihtZXNzYWdlLCBbRXJyb3JUYWdzLkdPT0dMRVBBWV0pLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5jYXRjaCgoZXJyb3IpID0+IHtcbiAgICAgICAgICAgIHRoaXMucmVhZHlUb1BheS5uZXh0KGZhbHNlKTtcblxuICAgICAgICAgICAgbGV0IG1lc3NhZ2UgPSAoZXJyb3IgYXMgc3RyaW5nKSA/PyAnJztcblxuICAgICAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICAgICAgbWVzc2FnZSA9IGVycm9yLm1lc3NhZ2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMubG9nZ2VyU2VydmljZS5lcnJvcihcbiAgICAgICAgICAgICAgbmV3IFRhZ2dlZEVycm9yKFxuICAgICAgICAgICAgICAgIGBHb29nbGUgUGF5OiBkZXZpY2UgaXMgbm90IHJlYWR5IHRvIHBheSwgJHttZXNzYWdlfWAsXG4gICAgICAgICAgICAgICAgW0Vycm9yVGFncy5HT09HTEVQQVldLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIHByb2NlZWRDaGVja291dCgpOiBQcm9taXNlPENoZWNrU3RhdHVzQWN0aW9uIHwgbnVsbD4ge1xuICAgIGlmICghdGhpcy5nb29nbGVQYXltZW50Q2xpZW50KSB7XG4gICAgICB0aGlzLmxvZ2dlclNlcnZpY2UuZXJyb3IoXG4gICAgICAgIG5ldyBUYWdnZWRFcnJvcihcbiAgICAgICAgICAnR29vZ2xlIHBheW1lbnQgY2xpZW50IGlzIG5vdCBpbml0aWFsaXplZCB0byBwcm9jZWVkIGNoZWNrb3V0JyxcbiAgICAgICAgICBbRXJyb3JUYWdzLkdPT0dMRVBBWV0sXG4gICAgICAgICksXG4gICAgICApO1xuICAgICAgdGhyb3cgbmV3IEFwcEVycm9yKFxuICAgICAgICBgR29vZ2xlIFBheS4gcHJvY2VlZENoZWNrb3V0OiBubyBnb29nbGUgcGF5bWVudCBjbGllbnRgLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMucGF5bWVudFNlcnZpY2UpIHtcbiAgICAgIHRoaXMubG9nZ2VyU2VydmljZS5lcnJvcihcbiAgICAgICAgbmV3IFRhZ2dlZEVycm9yKFxuICAgICAgICAgICdHb29nbGUgcGF5bWVudCBzZXJ2aWNlIGlzIG5vdCBpbml0aWFsaXplZCB0byBwcm9jZWVkIGNoZWNrb3V0JyxcbiAgICAgICAgICBbRXJyb3JUYWdzLkdPT0dMRVBBWV0sXG4gICAgICAgICksXG4gICAgICApO1xuICAgICAgdGhyb3cgbmV3IEFwcEVycm9yKFxuICAgICAgICBgR29vZ2xlIFBheS4gcHJvY2VlZENoZWNrb3V0OiBubyBnb29nbGUgcGF5bWVudCBzZXJ2aWNlYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gZ29vZ2xlIHN1cHBvcnQgb25seSBvbmUgcGF5bWVudCBpbiB0aW1lXG4gICAgaWYgKHRoaXMucGF5bWVudEluUHJvZ3Jlc3MpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobnVsbCk7XG4gICAgfVxuXG4gICAgY29uc3QgcGF5bWVudERhdGFSZXF1ZXN0ID0gdGhpcy5wYXltZW50U2VydmljZS5nZXRQYXltZW50UmVxdWVzdCgpO1xuXG4gICAgaWYgKCFwYXltZW50RGF0YVJlcXVlc3QpIHtcbiAgICAgIHRoaXMubG9nZ2VyU2VydmljZS5lcnJvcihcbiAgICAgICAgbmV3IFRhZ2dlZEVycm9yKCdObyBkYXRhIGZvciBwYXltZW50IGRhdGEgcmVxdWVzdCcsIFtcbiAgICAgICAgICBFcnJvclRhZ3MuR09PR0xFUEFZLFxuICAgICAgICBdKSxcbiAgICAgICk7XG4gICAgICB0aHJvdyBuZXcgQXBwRXJyb3IoYEdvb2dsZSBQYXk6IE5vIGRhdGEgZm9yIHBheW1lbnQgZGF0YSByZXF1ZXN0YCk7XG4gICAgfVxuXG4gICAgY29uc3QgY2hlY2tTdGF0dXNBY3Rpb246IE5leHRBY3Rpb24gPSB0aGlzLmluamVjdG9yXG4gICAgICAuZ2V0PENoZWNrU3RhdHVzQWN0aW9uQ3JlYXRvcj4oQ2hlY2tTdGF0dXNBY3Rpb25DcmVhdG9yKVxuICAgICAgLmdldEFjdGlvbkRhdGEoKTtcblxuICAgIHRyeSB7XG4gICAgICB0aGlzLnBheW1lbnRJblByb2dyZXNzID0gdHJ1ZTtcblxuICAgICAgdGhpcy5wYXltZW50V2luZG93SXNSZWFkeS5uZXh0KCk7XG5cbiAgICAgIGNvbnN0IHBheW1lbnREYXRhID1cbiAgICAgICAgYXdhaXQgdGhpcy5nb29nbGVQYXltZW50Q2xpZW50LmxvYWRQYXltZW50RGF0YShwYXltZW50RGF0YVJlcXVlc3QpO1xuXG4gICAgICBpZiAoIXBheW1lbnREYXRhPy5wYXltZW50TWV0aG9kRGF0YT8udG9rZW5pemF0aW9uRGF0YT8udG9rZW4pIHtcbiAgICAgICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmVycm9yKFxuICAgICAgICAgIG5ldyBUYWdnZWRFcnJvcignVG9rZW4gaXMgbWlzc2luZycsIFtFcnJvclRhZ3MuR09PR0xFUEFZXSksXG4gICAgICAgICk7XG4gICAgICAgIHRocm93IG5ldyBBcHBFcnJvcignR29vZ2xlIFBheTogdG9rZW4gaXMgbWlzc2luZycpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnBheW1lbnRTZXJ2aWNlLmhhbmRsZVN1Y2Nlc3NmdWxQYXltZW50Py4ocGF5bWVudERhdGEpO1xuXG4gICAgICB0aGlzLnBheW1lbnRXaW5kb3dJc0Nsb3NlLm5leHQoKTtcblxuICAgICAgdGhpcy5wYXltZW50SW5Qcm9ncmVzcyA9IGZhbHNlO1xuXG4gICAgICByZXR1cm4gY2hlY2tTdGF0dXNBY3Rpb247XG4gICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAgIHRoaXMucGF5bWVudEluUHJvZ3Jlc3MgPSBmYWxzZTtcblxuICAgICAgdGhpcy5wYXltZW50U2VydmljZS5oYW5kbGVGYWlsZWRQYXltZW50Py4oZXJyb3IpO1xuICAgICAgdGhpcy5wYXltZW50V2luZG93SXNDbG9zZS5uZXh0KCk7XG4gICAgICB0aGlzLmVycm9yLm5leHQoZXJyb3IpO1xuXG4gICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSAoZXJyb3IgYXMgeyBtZXNzYWdlOiBzdHJpbmcgfSk/Lm1lc3NhZ2UgPz8gJyc7XG4gICAgICBjb25zdCBlcnJvclN0YXR1c0NvZGUgPVxuICAgICAgICAoZXJyb3IgYXMgeyBzdGF0dXNDb2RlOiBzdHJpbmcgfSk/LnN0YXR1c0NvZGUgPz8gJyc7XG5cbiAgICAgIGNvbnN0IGlzQ2xvc2VkQnlVc2VyID0gdGhpcy5pc0Nsb3NlZEJ5VXNlcihlcnJvck1lc3NhZ2UpO1xuICAgICAgY29uc3QgaXNDYW5jZWxlZFN0YXR1cyA9IHRoaXMuaXNDYW5jZWxlZFN0YXR1cyhlcnJvclN0YXR1c0NvZGUpO1xuXG4gICAgICBpZiAoaXNDbG9zZWRCeVVzZXIgfHwgaXNDYW5jZWxlZFN0YXR1cykgcmV0dXJuIG51bGw7XG5cbiAgICAgIHRoaXMubG9nZ2VyU2VydmljZS5lcnJvcihcbiAgICAgICAgbmV3IFRhZ2dlZEVycm9yKGBHb29nbGUgUGF5OiBwcm9jZWVkQ2hlY2tvdXQgZmFpbGVkLCAke2Vycm9yTWVzc2FnZX1gLCBbXG4gICAgICAgICAgRXJyb3JUYWdzLkdPT0dMRVBBWSxcbiAgICAgICAgXSksXG4gICAgICApO1xuXG4gICAgICByZXR1cm4gY2hlY2tTdGF0dXNBY3Rpb247XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNyZWF0ZUJ1dHRvbihcbiAgICBvbkNsaWNrSGFuZGxlcjogKCkgPT4gdm9pZCxcbiAgICBjb25maWd1cmF0aW9uOiBHb29nbGVQYXlCdXR0b25Db25maWd1cmF0aW9uLFxuICApOiBIVE1MQnV0dG9uRWxlbWVudCB8IG51bGwge1xuICAgIGlmICghdGhpcy5nb29nbGVQYXltZW50Q2xpZW50KSB7XG4gICAgICB0aGlzLmxvZ2dlclNlcnZpY2UuZXJyb3IoXG4gICAgICAgIG5ldyBUYWdnZWRFcnJvcihcbiAgICAgICAgICAnR29vZ2xlIHBheW1lbnQgY2xpZW50IGlzIG5vdCBpbml0aWFsaXplZCB0byBjcmVhdGUgYnV0dG9uJyxcbiAgICAgICAgICBbRXJyb3JUYWdzLkdPT0dMRVBBWV0sXG4gICAgICAgICksXG4gICAgICApO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgYWxsb3dlZFBheW1lbnRNZXRob2RzID1cbiAgICAgIHRoaXMucGF5bWVudFNlcnZpY2U/LmdldEFsbG93ZWRQYXltZW50TWV0aG9kcygpIHx8IFtdO1xuXG4gICAgcmV0dXJuIHRoaXMuZ29vZ2xlUGF5bWVudENsaWVudC5jcmVhdGVCdXR0b24oe1xuICAgICAgb25DbGljazogb25DbGlja0hhbmRsZXIsXG4gICAgICBhbGxvd2VkUGF5bWVudE1ldGhvZHM6IGFsbG93ZWRQYXltZW50TWV0aG9kcyxcbiAgICAgIGJ1dHRvblNpemVNb2RlOiAnZmlsbCcsXG4gICAgICBidXR0b25UeXBlOiAnYnV5JyxcbiAgICAgIGJ1dHRvbkNvbG9yOiBjb25maWd1cmF0aW9uLmNvbG9yID8/ICdkZWZhdWx0JyxcbiAgICAgIGJ1dHRvbkxvY2FsZTogdGhpcy5nZXRMb2NhbGVGb3JCdXR0b24oY29uZmlndXJhdGlvbi5sb2NhbGUpLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cEdvb2dsZVBheUNsaWVudCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMud2luZG93Lmdvb2dsZSkge1xuICAgICAgdGhpcy5sb2dnZXJTZXJ2aWNlLmVycm9yKFxuICAgICAgICBuZXcgVGFnZ2VkRXJyb3IoJ0dvb2dsZSBQYXkgbGlicmFyeSBpcyBub3QgYXZhaWxhYmxlIG9uIHdpbmRvdycsIFtcbiAgICAgICAgICBFcnJvclRhZ3MuR09PR0xFUEFZLFxuICAgICAgICBdKSxcbiAgICAgICk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZW52aXJvbm1lbnQgPSB0aGlzLmluaXRQYXJhbXMuaXNTYW5kYm94ID8gJ1RFU1QnIDogJ1BST0RVQ1RJT04nO1xuICAgIGNvbnN0IGdvb2dsZVBheW1lbnRDbGllbnREYXRhOiBHb29nbGVQYXlDbGllbnRJbml0RGF0YSA9IHtcbiAgICAgIGVudmlyb25tZW50LFxuICAgIH07XG5cbiAgICBpZiAodGhpcy5pbml0UGFyYW1zLmlzSW5zdGFudFBheUZsb3cpIHtcbiAgICAgIGdvb2dsZVBheW1lbnRDbGllbnREYXRhLnBheW1lbnREYXRhQ2FsbGJhY2tzID0ge1xuICAgICAgICBvblBheW1lbnREYXRhQ2hhbmdlZDogdGhpcy5vblBheW1lbnREYXRhQ2hhbmdlZCxcbiAgICAgICAgb25QYXltZW50QXV0aG9yaXplZDogdGhpcy5vblBheW1lbnRBdXRob3JpemVkLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICB0aGlzLmdvb2dsZVBheW1lbnRDbGllbnQgPVxuICAgICAgbmV3IHRoaXMud2luZG93Lmdvb2dsZS5wYXltZW50cy5hcGkuUGF5bWVudHNDbGllbnQoXG4gICAgICAgIGdvb2dsZVBheW1lbnRDbGllbnREYXRhLFxuICAgICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgb25Mb2FkU2NyaXB0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy53aW5kb3cuZ29vZ2xlKSB7XG4gICAgICBjb25zdCByZXRyeVRpbWVvdXQgPSAxMDAwO1xuXG4gICAgICB0aGlzLmxvZ2dlclNlcnZpY2UuZXJyb3IoXG4gICAgICAgIG5ldyBUYWdnZWRFcnJvcihcbiAgICAgICAgICAnR29vZ2xlIFBheTogbGlicmFyeSBub3QgYXZhaWxhYmxlIGFmdGVyIHNjcmlwdCBsb2FkLCByZXRyeWluZycsXG4gICAgICAgICAgW0Vycm9yVGFncy5HT09HTEVQQVldLFxuICAgICAgICApLFxuICAgICAgKTtcblxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGlzQXZhaWxhYmxlR29vZ2xlQ2xpZW50ID0gISF0aGlzLndpbmRvdy5nb29nbGU7XG5cbiAgICAgICAgaWYgKGlzQXZhaWxhYmxlR29vZ2xlQ2xpZW50KSB7XG4gICAgICAgICAgdGhpcy5zZXR1cEdvb2dsZVBheUNsaWVudCgpO1xuXG4gICAgICAgICAgdGhpcy5wYXltZW50U3lzdGVtUHJvY2Vzc2luZ1NlcnZpY2UuZW1pdEluaXRpYWxpemUodHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0sIHJldHJ5VGltZW91dCk7XG5cbiAgICAgIHRocm93IG5ldyBBcHBFcnJvcignR29vZ2xlIFBheTogZ29vZ2xlIGxpYnJhcnkgbm93IGlzIGF2YWlsYWJsZScpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNldHVwR29vZ2xlUGF5Q2xpZW50KCk7XG5cbiAgICAgIHRoaXMucGF5bWVudFN5c3RlbVByb2Nlc3NpbmdTZXJ2aWNlLmVtaXRJbml0aWFsaXplKHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0UGF5bWVudFNlcnZpY2UoKTogR29vZ2xlUGF5UGF5bWVudFNlcnZpY2Uge1xuICAgIGlmICh0aGlzLmluaXRQYXJhbXMuaXNJbnN0YW50UGF5RmxvdylcbiAgICAgIHJldHVybiB0aGlzLmdvb2dsZVBheUluc3RhbnRQYXltZW50U2VydmljZTtcbiAgICByZXR1cm4gdGhpcy5nb29nbGVQYXlDaGVja291dFBheW1lbnRTZXJ2aWNlO1xuICB9XG5cbiAgcHJpdmF0ZSBpc0Nsb3NlZEJ5VXNlcihtZXNzYWdlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gbWVzc2FnZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKCd1c2VyIGNsb3NlZCB0aGUgcGF5bWVudCByZXF1ZXN0IHVpJyk7XG4gIH1cblxuICBwcml2YXRlIGlzQ2FuY2VsZWRTdGF0dXMoc3RhdHVzQ29kZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHN0YXR1c0NvZGUudG9Mb3dlckNhc2UoKSA9PT0gJ2NhbmNlbGVkJztcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TG9jYWxlRm9yQnV0dG9uKHVzZXJMb2NhbGU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgYWxsb3dlZExvY2FsZXMgPSBbXG4gICAgICAnZW4nLFxuICAgICAgJ2FyJyxcbiAgICAgICdiZycsXG4gICAgICAnY2EnLFxuICAgICAgJ2NzJyxcbiAgICAgICdkYScsXG4gICAgICAnZGUnLFxuICAgICAgJ2VsJyxcbiAgICAgICdlcycsXG4gICAgICAnZXQnLFxuICAgICAgJ2ZpJyxcbiAgICAgICdmcicsXG4gICAgICAnaHInLFxuICAgICAgJ2lkJyxcbiAgICAgICdpdCcsXG4gICAgICAnamEnLFxuICAgICAgJ2tvJyxcbiAgICAgICdtcycsXG4gICAgICAnbmwnLFxuICAgICAgJ25vJyxcbiAgICAgICdwbCcsXG4gICAgICAncHQnLFxuICAgICAgJ3J1JyxcbiAgICAgICdzaycsXG4gICAgICAnc2wnLFxuICAgICAgJ3NyJyxcbiAgICAgICdzdicsXG4gICAgICAndGgnLFxuICAgICAgJ3RyJyxcbiAgICAgICd1aycsXG4gICAgICAnemgnLFxuICAgIF07XG5cbiAgICBpZiAoWydjbicsICd6aF9IQU5UJ10uaW5jbHVkZXModXNlckxvY2FsZSkpIHtcbiAgICAgIHJldHVybiAnemgnO1xuICAgIH1cblxuICAgIGlmIChbJ3poX0hBTlMnXS5pbmNsdWRlcyh1c2VyTG9jYWxlKSkge1xuICAgICAgcmV0dXJuICd0dyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIGFsbG93ZWRMb2NhbGVzLmZpbmQoKGxvY2FsZSkgPT4gbG9jYWxlID09PSB1c2VyTG9jYWxlKSA/PyAnZW4nO1xuICB9XG59XG4iXX0=
|
|
@@ -2502,6 +2502,21 @@ const flowUpdateNextActions = [
|
|
|
2502
2502
|
ServerErrorActionCreator,
|
|
2503
2503
|
];
|
|
2504
2504
|
|
|
2505
|
+
const statusUpdatedAnalyticsPayloadCreator = (nextAction) => {
|
|
2506
|
+
if (nextAction.type !== 'status_updated')
|
|
2507
|
+
return null;
|
|
2508
|
+
const { statusState, group, isSuccess, isCanceled } = nextAction.data;
|
|
2509
|
+
return {
|
|
2510
|
+
value: nextAction.type,
|
|
2511
|
+
extraValue: statusState,
|
|
2512
|
+
dimension1: group,
|
|
2513
|
+
dimension2: isSuccess ? 'successful' : null,
|
|
2514
|
+
dimension3: isCanceled ? 'canceled' : null,
|
|
2515
|
+
};
|
|
2516
|
+
};
|
|
2517
|
+
|
|
2518
|
+
const analyticsPayloadCreatorMap = new Map([['status_updated', statusUpdatedAnalyticsPayloadCreator]]);
|
|
2519
|
+
|
|
2505
2520
|
const oneTimeAnalyticsEvents = new Set([]);
|
|
2506
2521
|
|
|
2507
2522
|
var EventParameterType;
|
|
@@ -2852,7 +2867,11 @@ class NextActionService {
|
|
|
2852
2867
|
return actionType;
|
|
2853
2868
|
}
|
|
2854
2869
|
logNextAction(nextAction) {
|
|
2855
|
-
|
|
2870
|
+
const analyticsPayloadCreator = analyticsPayloadCreatorMap.get(nextAction.type);
|
|
2871
|
+
const payload = analyticsPayloadCreator?.(nextAction) ?? {
|
|
2872
|
+
value: nextAction.type,
|
|
2873
|
+
};
|
|
2874
|
+
this.userBehaviourAnalyticsService.send(UserBehaviourEventName.nextAction, 'manual', payload);
|
|
2856
2875
|
}
|
|
2857
2876
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NextActionService, deps: [{ token: nextActionsToken }, { token: i0.Injector }, { token: ShowErrorsActionCreator }, { token: UserBehaviourAnalyticsService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
2858
2877
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NextActionService, providedIn: 'root' }); }
|
|
@@ -10068,6 +10087,7 @@ class GooglePayService {
|
|
|
10068
10087
|
this.paymentWindowIsReady = new Subject();
|
|
10069
10088
|
this.paymentWindowIsClose = new Subject();
|
|
10070
10089
|
this.error = new Subject();
|
|
10090
|
+
this.paymentInProgress = false;
|
|
10071
10091
|
this.googlePaymentClient = null;
|
|
10072
10092
|
this.paymentService = null;
|
|
10073
10093
|
}
|
|
@@ -10150,6 +10170,10 @@ class GooglePayService {
|
|
|
10150
10170
|
this.loggerService.error(new TaggedError('Google payment service is not initialized to proceed checkout', [ErrorTags.GOOGLEPAY]));
|
|
10151
10171
|
throw new AppError(`Google Pay. proceedCheckout: no google payment service`);
|
|
10152
10172
|
}
|
|
10173
|
+
// google support only one payment in time
|
|
10174
|
+
if (this.paymentInProgress) {
|
|
10175
|
+
return Promise.resolve(null);
|
|
10176
|
+
}
|
|
10153
10177
|
const paymentDataRequest = this.paymentService.getPaymentRequest();
|
|
10154
10178
|
if (!paymentDataRequest) {
|
|
10155
10179
|
this.loggerService.error(new TaggedError('No data for payment data request', [
|
|
@@ -10161,6 +10185,7 @@ class GooglePayService {
|
|
|
10161
10185
|
.get(CheckStatusActionCreator)
|
|
10162
10186
|
.getActionData();
|
|
10163
10187
|
try {
|
|
10188
|
+
this.paymentInProgress = true;
|
|
10164
10189
|
this.paymentWindowIsReady.next();
|
|
10165
10190
|
const paymentData = await this.googlePaymentClient.loadPaymentData(paymentDataRequest);
|
|
10166
10191
|
if (!paymentData?.paymentMethodData?.tokenizationData?.token) {
|
|
@@ -10169,9 +10194,11 @@ class GooglePayService {
|
|
|
10169
10194
|
}
|
|
10170
10195
|
this.paymentService.handleSuccessfulPayment?.(paymentData);
|
|
10171
10196
|
this.paymentWindowIsClose.next();
|
|
10197
|
+
this.paymentInProgress = false;
|
|
10172
10198
|
return checkStatusAction;
|
|
10173
10199
|
}
|
|
10174
10200
|
catch (error) {
|
|
10201
|
+
this.paymentInProgress = false;
|
|
10175
10202
|
this.paymentService.handleFailedPayment?.(error);
|
|
10176
10203
|
this.paymentWindowIsClose.next();
|
|
10177
10204
|
this.error.next(error);
|