taxtank-core 0.8.2 → 0.8.3

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.
@@ -1,6 +1,6 @@
1
1
  import { __awaiter } from "tslib";
2
2
  import { Inject, Injectable } from '@angular/core';
3
- import { ReplaySubject } from 'rxjs';
3
+ import { BehaviorSubject, ReplaySubject } from 'rxjs';
4
4
  import { map } from 'rxjs/operators';
5
5
  import { loadStripe } from '@stripe/stripe-js';
6
6
  import { ServicePriceCollection } from '../../collections/service-price.collection';
@@ -15,17 +15,24 @@ import { AppEventTypeEnum } from '../../models/event/app-event-type.enum';
15
15
  import * as i0 from "@angular/core";
16
16
  import * as i1 from "@angular/common/http";
17
17
  import * as i2 from "../event/event-dispatcher.service";
18
+ import * as i3 from "../event/sse.service";
18
19
  export class SubscriptionService {
19
- constructor(http, eventDispatcherService, environment) {
20
+ constructor(http, eventDispatcherService, sseService, environment) {
20
21
  this.http = http;
21
22
  this.eventDispatcherService = eventDispatcherService;
23
+ this.sseService = sseService;
22
24
  this.environment = environment;
23
25
  this.serviceSubscriptionSubject = new ReplaySubject(1);
24
26
  this.serviceSubscriptionsSubject = new ReplaySubject(1);
25
27
  this.servicePaymentsSubject = new ReplaySubject(1);
28
+ this.subscriptionChangeSubject = new BehaviorSubject(null);
29
+ this.listenEvents();
26
30
  }
27
- getSubscription() {
28
- if (!this._serviceSubscription) {
31
+ listenEvents() {
32
+ this.listenSubscriptions();
33
+ }
34
+ getSubscription(force = false) {
35
+ if (!this._serviceSubscription || force) {
29
36
  this.http.get(`${this.environment.apiV2}/subscriptions/last`)
30
37
  .pipe(map((response) => {
31
38
  return plainToClass(ServiceSubscription, response);
@@ -51,8 +58,18 @@ export class SubscriptionService {
51
58
  .subscribe((prices) => {
52
59
  this._serviceSubscriptions = new ServiceSubscriptionCollection([
53
60
  plainToClass(ServiceSubscription, { items: [] }),
54
- plainToClass(ServiceSubscription, { items: [plainToClass(ServiceSubscriptionItem, { price: prices.property, quantity: 2 })] }),
55
- plainToClass(ServiceSubscription, { items: [plainToClass(ServiceSubscriptionItem, { price: prices.property, quantity: 3 })] })
61
+ plainToClass(ServiceSubscription, {
62
+ items: [plainToClass(ServiceSubscriptionItem, {
63
+ price: prices.property,
64
+ quantity: 2
65
+ })]
66
+ }),
67
+ plainToClass(ServiceSubscription, {
68
+ items: [plainToClass(ServiceSubscriptionItem, {
69
+ price: prices.property,
70
+ quantity: 3
71
+ })]
72
+ })
56
73
  ]);
57
74
  this._serviceSubscriptions.items.forEach((subscription) => {
58
75
  subscription.items.push(plainToClass(ServiceSubscriptionItem, { price: prices.work, quantity: 1 }));
@@ -114,25 +131,27 @@ export class SubscriptionService {
114
131
  * Change subscription plan
115
132
  */
116
133
  changeSubscription(items) {
117
- return this.http.put(`${this.environment.apiV2}/subscriptions/items`, items).pipe(map(() => {
118
- // Set cache value as null and fire request to backend to get updated subscription value
119
- this._serviceSubscription = null;
120
- this.serviceSubscriptionSubject.next(this._serviceSubscription);
121
- // update property list
134
+ return this.http.put(`${this.environment.apiV2}/subscriptions/items`, items);
135
+ }
136
+ listenSubscriptions() {
137
+ this.sseService.on(`serviceSubscriptions`)
138
+ .pipe(map((event) => plainToClass(ServiceSubscription, event)))
139
+ .subscribe((subscription) => {
140
+ this.getSubscription(true).subscribe();
141
+ this.subscriptionChangeSubject.next(subscription);
122
142
  this.eventDispatcherService.dispatch(new AppEvent(AppEventTypeEnum.SERVICE_SUBSCRIPTION_UPDATED, null));
123
- this.getSubscription().subscribe();
124
- }));
143
+ });
125
144
  }
126
145
  }
127
- SubscriptionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: SubscriptionService, deps: [{ token: i1.HttpClient }, { token: i2.EventDispatcherService }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable });
146
+ SubscriptionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: SubscriptionService, deps: [{ token: i1.HttpClient }, { token: i2.EventDispatcherService }, { token: i3.SseService }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable });
128
147
  SubscriptionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: SubscriptionService, providedIn: 'root' });
129
148
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: SubscriptionService, decorators: [{
130
149
  type: Injectable,
131
150
  args: [{
132
151
  providedIn: 'root'
133
152
  }]
134
- }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.EventDispatcherService }, { type: undefined, decorators: [{
153
+ }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.EventDispatcherService }, { type: i3.SseService }, { type: undefined, decorators: [{
135
154
  type: Inject,
136
155
  args: ['environment']
137
156
  }] }]; } });
138
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Vic2NyaXB0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dC1jb3JlL3NyYy9saWIvc2VydmljZXMvc3Vic2NyaXB0aW9uL3N1YnNjcmlwdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQWMsYUFBYSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDL0MsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDcEYsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFDbEcsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQzdGLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUVuRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saURBQWlELENBQUM7QUFDL0UsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNkRBQTZELENBQUM7QUFDdEcsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDOzs7O0FBSzFFLE1BQU0sT0FBTyxtQkFBbUI7SUFTOUIsWUFDVSxJQUFnQixFQUNoQixzQkFBOEMsRUFDdkIsV0FBZ0I7UUFGdkMsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNoQiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBQ3ZCLGdCQUFXLEdBQVgsV0FBVyxDQUFLO1FBVmpELCtCQUEwQixHQUF1QyxJQUFJLGFBQWEsQ0FBc0IsQ0FBQyxDQUFDLENBQUM7UUFFM0csZ0NBQTJCLEdBQWlELElBQUksYUFBYSxDQUFnQyxDQUFDLENBQUMsQ0FBQztRQUVoSSwyQkFBc0IsR0FBb0MsSUFBSSxhQUFhLENBQW1CLENBQUMsQ0FBQyxDQUFDO0lBUWpHLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRTtZQUM5QixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxxQkFBcUIsQ0FBQztpQkFDMUQsSUFBSSxDQUNILEdBQUcsQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFO2dCQUNwQixPQUFPLFlBQVksQ0FBQyxtQkFBbUIsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUNyRCxDQUFDLENBQUMsQ0FDSDtpQkFDQSxTQUFTLENBQUMsQ0FBQyxXQUFnQyxFQUFFLEVBQUU7Z0JBQzlDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxXQUFXLENBQUM7Z0JBQ3hDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7WUFDbEUsQ0FBQyxDQUFDLENBQUM7U0FDTjtRQUVELE9BQU8sSUFBSSxDQUFDLDBCQUEwQixDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3hELENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsb0JBQW9CO1FBQ2xCLElBQUksQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUU7WUFDL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssaUJBQWlCLENBQUM7aUJBQ3RELElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRTtnQkFDcEIsT0FBTyxJQUFJLHNCQUFzQixDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFZLEVBQUUsRUFBRSxDQUFDLFlBQVksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3RILENBQUMsQ0FBQyxDQUNIO2lCQUNBLFNBQVMsQ0FBQyxDQUFDLE1BQThCLEVBQUUsRUFBRTtnQkFDNUMsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksNkJBQTZCLENBQUM7b0JBQzdELFlBQVksQ0FBQyxtQkFBbUIsRUFBRSxFQUFDLEtBQUssRUFBRSxFQUFFLEVBQUMsQ0FBQztvQkFDOUMsWUFBWSxDQUFDLG1CQUFtQixFQUFFLEVBQUMsS0FBSyxFQUFFLENBQUMsWUFBWSxDQUFDLHVCQUF1QixFQUFFLEVBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBQyxDQUFDLENBQUMsRUFBQyxDQUFDO29CQUMxSCxZQUFZLENBQUMsbUJBQW1CLEVBQUUsRUFBQyxLQUFLLEVBQUUsQ0FBQyxZQUFZLENBQUMsdUJBQXVCLEVBQUUsRUFBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFDLENBQUMsQ0FBQyxFQUFDLENBQUM7aUJBQzNILENBQUMsQ0FBQztnQkFDSCxJQUFJLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFlBQWlDLEVBQUUsRUFBRTtvQkFDN0UsWUFBWSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLHVCQUF1QixFQUFFLEVBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBQyxDQUFDLENBQUMsQ0FBQztnQkFDcEcsQ0FBQyxDQUFDLENBQUM7Z0JBRUgsSUFBSSxDQUFDLDJCQUEyQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQztZQUNwRSxDQUFDLENBQUMsQ0FBQztTQUNOO1FBRUQsT0FBTyxJQUFJLENBQUMsMkJBQTJCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDekQsQ0FBQztJQUVEOztPQUVHO0lBQ0csZ0JBQWdCLENBQUMsWUFBaUMsRUFBRSxVQUFrQixFQUFFLFNBQWlCOztZQUM3RixNQUFNLE1BQU0sR0FBUSxNQUFNLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2hFLFlBQVk7WUFDWixNQUFNLFNBQVMsR0FBUSxZQUFZLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQTZCLEVBQUUsRUFBRTtnQkFDOUUsT0FBTyxFQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBQyxDQUFDO1lBQ2xFLENBQUMsQ0FBQyxDQUFDO1lBRUgsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssMEJBQTBCLEVBQUU7Z0JBQ2xFLFNBQVM7Z0JBQ1QsVUFBVSxFQUFFLFVBQVU7Z0JBQ3RCLFNBQVMsRUFBRSxTQUFTO2FBQ3JCLENBQUM7aUJBQ0MsU0FBUyxDQUFDLENBQUMsT0FBZSxFQUFFLEVBQUU7Z0JBQzdCLGlDQUFpQztnQkFDakMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLEVBQUMsU0FBUyxFQUFFLE9BQU8sRUFBQyxDQUFDLENBQUM7WUFDbEQsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDO0tBQUE7SUFFRDs7T0FFRztJQUNILGVBQWUsQ0FBQyxTQUFpQjtRQUMvQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxnQ0FBZ0MsRUFBRTtZQUN2RSxNQUFNLEVBQUUsRUFBQyxTQUFTLEVBQUM7U0FDcEIsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFO1lBQzdCLE1BQU0sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN4QyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxtQkFBbUIsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQWtCLEVBQUUsRUFBRTtnQkFDM0YsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFZLEVBQUUsRUFBRSxDQUFDLFlBQVksQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztnQkFDM0YsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztZQUMxRCxDQUFDLENBQUMsQ0FBQztTQUNKO1FBRUQsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDcEQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsZ0JBQWdCLENBQUMsS0FBZ0M7UUFDL0MsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSywrQkFBK0IsRUFBRSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQ3pGLEdBQUcsQ0FBQyxDQUFDLGFBQXFCLEVBQUUsRUFBRTtZQUM1QixPQUFPLGFBQWEsQ0FBQztRQUN2QixDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVEOztPQUVHO0lBQ0gsa0JBQWtCLENBQUMsS0FBZ0M7UUFDakQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxzQkFBc0IsRUFBRSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQy9FLEdBQUcsQ0FBQyxHQUFHLEVBQUU7WUFDUCx3RkFBd0Y7WUFDeEYsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQztZQUNqQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1lBQ2hFLHVCQUF1QjtZQUN2QixJQUFJLENBQUMsc0JBQXNCLENBQUMsUUFBUSxDQUFDLElBQUksUUFBUSxDQUFDLGdCQUFnQixDQUFDLDRCQUE0QixFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7WUFFeEcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3JDLENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDOztpSEFwSVUsbUJBQW1CLGtGQVlwQixhQUFhO3FIQVpaLG1CQUFtQixjQUZsQixNQUFNOzRGQUVQLG1CQUFtQjtrQkFIL0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQWFJLE1BQU07MkJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IE9ic2VydmFibGUsIFJlcGxheVN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGxvYWRTdHJpcGUgfSBmcm9tICdAc3RyaXBlL3N0cmlwZS1qcyc7XG5pbXBvcnQgeyBTZXJ2aWNlUHJpY2VDb2xsZWN0aW9uIH0gZnJvbSAnLi4vLi4vY29sbGVjdGlvbnMvc2VydmljZS1wcmljZS5jb2xsZWN0aW9uJztcbmltcG9ydCB7IFNlcnZpY2VTdWJzY3JpcHRpb25Db2xsZWN0aW9uIH0gZnJvbSAnLi4vLi4vY29sbGVjdGlvbnMvc2VydmljZS1zdWJzY3JpcHRpb24uY29sbGVjdGlvbic7XG5pbXBvcnQgeyBwbGFpblRvQ2xhc3MgfSBmcm9tICdjbGFzcy10cmFuc2Zvcm1lcic7XG5pbXBvcnQgeyBTZXJ2aWNlU3Vic2NyaXB0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3NlcnZpY2Utc3Vic2NyaXB0aW9uL3NlcnZpY2Utc3Vic2NyaXB0aW9uJztcbmltcG9ydCB7IFNlcnZpY2VQYXltZW50IH0gZnJvbSAnLi4vLi4vbW9kZWxzL3NlcnZpY2Utc3Vic2NyaXB0aW9uL3NlcnZpY2UtcGF5bWVudCc7XG5pbXBvcnQgeyBFdmVudERpc3BhdGNoZXJTZXJ2aWNlIH0gZnJvbSAnLi4vZXZlbnQvZXZlbnQtZGlzcGF0Y2hlci5zZXJ2aWNlJztcbmltcG9ydCB7IFNlcnZpY2VQcmljZSB9IGZyb20gJy4uLy4uL21vZGVscy9zZXJ2aWNlLXN1YnNjcmlwdGlvbi9zZXJ2aWNlLXByaWNlJztcbmltcG9ydCB7IFNlcnZpY2VTdWJzY3JpcHRpb25JdGVtIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3NlcnZpY2Utc3Vic2NyaXB0aW9uL3NlcnZpY2Utc3Vic2NyaXB0aW9uLWl0ZW0nO1xuaW1wb3J0IHsgQXBwRXZlbnQgfSBmcm9tICcuLi8uLi9tb2RlbHMvZXZlbnQvYXBwLWV2ZW50JztcbmltcG9ydCB7IEFwcEV2ZW50VHlwZUVudW0gfSBmcm9tICcuLi8uLi9tb2RlbHMvZXZlbnQvYXBwLWV2ZW50LXR5cGUuZW51bSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFN1YnNjcmlwdGlvblNlcnZpY2Uge1xuICBfc2VydmljZVN1YnNjcmlwdGlvbjogU2VydmljZVN1YnNjcmlwdGlvbjtcbiAgc2VydmljZVN1YnNjcmlwdGlvblN1YmplY3Q6IFJlcGxheVN1YmplY3Q8U2VydmljZVN1YnNjcmlwdGlvbj4gPSBuZXcgUmVwbGF5U3ViamVjdDxTZXJ2aWNlU3Vic2NyaXB0aW9uPigxKTtcbiAgX3NlcnZpY2VTdWJzY3JpcHRpb25zOiBTZXJ2aWNlU3Vic2NyaXB0aW9uQ29sbGVjdGlvbjtcbiAgc2VydmljZVN1YnNjcmlwdGlvbnNTdWJqZWN0OiBSZXBsYXlTdWJqZWN0PFNlcnZpY2VTdWJzY3JpcHRpb25Db2xsZWN0aW9uPiA9IG5ldyBSZXBsYXlTdWJqZWN0PFNlcnZpY2VTdWJzY3JpcHRpb25Db2xsZWN0aW9uPigxKTtcbiAgc3RyaXBlOiBhbnk7XG4gIHNlcnZpY2VQYXltZW50c1N1YmplY3Q6IFJlcGxheVN1YmplY3Q8U2VydmljZVBheW1lbnRbXT4gPSBuZXcgUmVwbGF5U3ViamVjdDxTZXJ2aWNlUGF5bWVudFtdPigxKTtcbiAgX3NlcnZpY2VQYXltZW50czogU2VydmljZVBheW1lbnRbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHJpdmF0ZSBldmVudERpc3BhdGNoZXJTZXJ2aWNlOiBFdmVudERpc3BhdGNoZXJTZXJ2aWNlLFxuICAgIEBJbmplY3QoJ2Vudmlyb25tZW50JykgcHJpdmF0ZSBlbnZpcm9ubWVudDogYW55XG4gICkge1xuICB9XG5cbiAgZ2V0U3Vic2NyaXB0aW9uKCk6IE9ic2VydmFibGU8U2VydmljZVN1YnNjcmlwdGlvbj4ge1xuICAgIGlmICghdGhpcy5fc2VydmljZVN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5odHRwLmdldChgJHt0aGlzLmVudmlyb25tZW50LmFwaVYyfS9zdWJzY3JpcHRpb25zL2xhc3RgKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBwbGFpblRvQ2xhc3MoU2VydmljZVN1YnNjcmlwdGlvbiwgcmVzcG9uc2UpO1xuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoc3Vic2NpcHRpb246IFNlcnZpY2VTdWJzY3JpcHRpb24pID0+IHtcbiAgICAgICAgICB0aGlzLl9zZXJ2aWNlU3Vic2NyaXB0aW9uID0gc3Vic2NpcHRpb247XG4gICAgICAgICAgdGhpcy5zZXJ2aWNlU3Vic2NyaXB0aW9uU3ViamVjdC5uZXh0KHRoaXMuX3NlcnZpY2VTdWJzY3JpcHRpb24pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zZXJ2aWNlU3Vic2NyaXB0aW9uU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAVE9ETyByaWdodCBub3cgd2UgaGF2ZSBvbmx5IG1vbnRobHkgcHJpY2VzLCB0aGUgZnVuY3Rpb24gc2hvdWxkIGJlIHJlZmFjdG9yZWQgdG8gc3VwcG9ydCBvdGhlciBvcHRpb25zIGluIGZ1dHVyZVxuICAgKlxuICAgKiBjcmVhdGUgYXZhaWxhYmxlIHN1YnNjcmlwdGlvbiBwbGFucyBiYXNlZCBvbiBleGlzdGluZyBwcm9kdWN0c1xuICAgKi9cbiAgZ2V0U3Vic2NyaXB0aW9uUGxhbnMoKTogT2JzZXJ2YWJsZTxTZXJ2aWNlU3Vic2NyaXB0aW9uQ29sbGVjdGlvbj4ge1xuICAgIGlmICghdGhpcy5fc2VydmljZVN1YnNjcmlwdGlvbnMpIHtcbiAgICAgIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy5lbnZpcm9ubWVudC5hcGlWMn0vc2VydmljZS1wcmljZXNgKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgU2VydmljZVByaWNlQ29sbGVjdGlvbihyZXNwb25zZVsnaHlkcmE6bWVtYmVyJ10ubWFwKChpdGVtOiBvYmplY3QpID0+IHBsYWluVG9DbGFzcyhTZXJ2aWNlUHJpY2UsIGl0ZW0pKSk7XG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKChwcmljZXM6IFNlcnZpY2VQcmljZUNvbGxlY3Rpb24pID0+IHtcbiAgICAgICAgICB0aGlzLl9zZXJ2aWNlU3Vic2NyaXB0aW9ucyA9IG5ldyBTZXJ2aWNlU3Vic2NyaXB0aW9uQ29sbGVjdGlvbihbXG4gICAgICAgICAgICBwbGFpblRvQ2xhc3MoU2VydmljZVN1YnNjcmlwdGlvbiwge2l0ZW1zOiBbXX0pLFxuICAgICAgICAgICAgcGxhaW5Ub0NsYXNzKFNlcnZpY2VTdWJzY3JpcHRpb24sIHtpdGVtczogW3BsYWluVG9DbGFzcyhTZXJ2aWNlU3Vic2NyaXB0aW9uSXRlbSwge3ByaWNlOiBwcmljZXMucHJvcGVydHksIHF1YW50aXR5OiAyfSldfSksXG4gICAgICAgICAgICBwbGFpblRvQ2xhc3MoU2VydmljZVN1YnNjcmlwdGlvbiwge2l0ZW1zOiBbcGxhaW5Ub0NsYXNzKFNlcnZpY2VTdWJzY3JpcHRpb25JdGVtLCB7cHJpY2U6IHByaWNlcy5wcm9wZXJ0eSwgcXVhbnRpdHk6IDN9KV19KVxuICAgICAgICAgIF0pO1xuICAgICAgICAgIHRoaXMuX3NlcnZpY2VTdWJzY3JpcHRpb25zLml0ZW1zLmZvckVhY2goKHN1YnNjcmlwdGlvbjogU2VydmljZVN1YnNjcmlwdGlvbikgPT4ge1xuICAgICAgICAgICAgc3Vic2NyaXB0aW9uLml0ZW1zLnB1c2gocGxhaW5Ub0NsYXNzKFNlcnZpY2VTdWJzY3JpcHRpb25JdGVtLCB7cHJpY2U6IHByaWNlcy53b3JrLCBxdWFudGl0eTogMX0pKTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHRoaXMuc2VydmljZVN1YnNjcmlwdGlvbnNTdWJqZWN0Lm5leHQodGhpcy5fc2VydmljZVN1YnNjcmlwdGlvbnMpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zZXJ2aWNlU3Vic2NyaXB0aW9uc1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICAvKipcbiAgICogcmVkaXJlY3QgdG8gc3RyaXBlIHBheW1lbnQgcGFnZVxuICAgKi9cbiAgYXN5bmMgY2hlY2tvdXRSZWRpcmVjdChzdWJzY3JpcHRpb246IFNlcnZpY2VTdWJzY3JpcHRpb24sIHN1Y2Nlc3NVcmw6IHN0cmluZywgY2FuY2VsVXJsOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IHN0cmlwZTogYW55ID0gYXdhaXQgbG9hZFN0cmlwZSh0aGlzLmVudmlyb25tZW50LnN0cmlwZVBrKTtcbiAgICAvLyBAVE9ETyB2aWtcbiAgICBjb25zdCBsaW5lSXRlbXM6IGFueSA9IHN1YnNjcmlwdGlvbi5pdGVtcy5tYXAoKGl0ZW06IFNlcnZpY2VTdWJzY3JpcHRpb25JdGVtKSA9PiB7XG4gICAgICByZXR1cm4ge3NlcnZpY2VQcmljZUlkOiBpdGVtLnByaWNlLmlkLCBxdWFudGl0eTogaXRlbS5xdWFudGl0eX07XG4gICAgfSk7XG5cbiAgICB0aGlzLmh0dHAucG9zdChgJHt0aGlzLmVudmlyb25tZW50LmFwaVYyfS9zdHJpcGUvY2hlY2tvdXQtc2Vzc2lvbmAsIHtcbiAgICAgIGxpbmVJdGVtcyxcbiAgICAgIHN1Y2Nlc3NVcmw6IHN1Y2Nlc3NVcmwsXG4gICAgICBjYW5jZWxVcmw6IGNhbmNlbFVybFxuICAgIH0pXG4gICAgICAuc3Vic2NyaWJlKChzZXNzaW9uOiBzdHJpbmcpID0+IHtcbiAgICAgICAgLy8gQFRvZG8gcmVtb3ZlIHVzZXIgVFJJQUwgc3RhdHVzXG4gICAgICAgIHN0cmlwZS5yZWRpcmVjdFRvQ2hlY2tvdXQoe3Nlc3Npb25JZDogc2Vzc2lvbn0pO1xuICAgICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogcmVkaXJlY3QgdG8gc3RyaXBlIGJpbGxpbmcgcGFnZVxuICAgKi9cbiAgYmlsbGluZ1JlZGlyZWN0KHJldHVyblVybDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5odHRwLmdldChgJHt0aGlzLmVudmlyb25tZW50LmFwaVYyfS9zdHJpcGUvYmlsbGluZy1wb3J0YWwtc2Vzc2lvbmAsIHtcbiAgICAgIHBhcmFtczoge3JldHVyblVybH1cbiAgICB9KS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZXBsYWNlKHJlc3BvbnNlLnVybCk7XG4gICAgfSk7XG4gIH1cblxuICBnZXRQYXltZW50cygpOiBPYnNlcnZhYmxlPFNlcnZpY2VQYXltZW50W10+IHtcbiAgICBpZiAoIXRoaXMuX3NlcnZpY2VQYXltZW50cykge1xuICAgICAgdGhpcy5odHRwLmdldChgJHt0aGlzLmVudmlyb25tZW50LmFwaVYyfS9zZXJ2aWNlLXBheW1lbnRzYCkuc3Vic2NyaWJlKChyZXNwb25zZTogb2JqZWN0W10pID0+IHtcbiAgICAgICAgdGhpcy5fc2VydmljZVBheW1lbnRzID0gcmVzcG9uc2UubWFwKChpdGVtOiBvYmplY3QpID0+IHBsYWluVG9DbGFzcyhTZXJ2aWNlUGF5bWVudCwgaXRlbSkpO1xuICAgICAgICB0aGlzLnNlcnZpY2VQYXltZW50c1N1YmplY3QubmV4dCh0aGlzLl9zZXJ2aWNlUGF5bWVudHMpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc2VydmljZVBheW1lbnRzU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgZGlmZmVyZW5jZSBiZXR3ZWVuIGN1cnJlbnQgc3Vic2NyaXB0aW9uIGFuZCBzZWxlY3RlZCBuZXcgc3Vic2NyaXB0aW9uXG4gICAqL1xuICBnZXRQcm9yYXRpb25Db3N0KGl0ZW1zOiBTZXJ2aWNlU3Vic2NyaXB0aW9uSXRlbVtdKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5lbnZpcm9ubWVudC5hcGlWMn0vc3Vic2NyaXB0aW9ucy9wcm9yYXRpb24tY29zdGAsIGl0ZW1zKS5waXBlKFxuICAgICAgbWFwKChwcm9yYXRpb25Db3N0OiBudW1iZXIpID0+IHtcbiAgICAgICAgcmV0dXJuIHByb3JhdGlvbkNvc3Q7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ2hhbmdlIHN1YnNjcmlwdGlvbiBwbGFuXG4gICAqL1xuICBjaGFuZ2VTdWJzY3JpcHRpb24oaXRlbXM6IFNlcnZpY2VTdWJzY3JpcHRpb25JdGVtW10pOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dChgJHt0aGlzLmVudmlyb25tZW50LmFwaVYyfS9zdWJzY3JpcHRpb25zL2l0ZW1zYCwgaXRlbXMpLnBpcGUoXG4gICAgICBtYXAoKCkgPT4ge1xuICAgICAgICAvLyBTZXQgY2FjaGUgdmFsdWUgYXMgbnVsbCBhbmQgZmlyZSByZXF1ZXN0IHRvIGJhY2tlbmQgdG8gZ2V0IHVwZGF0ZWQgc3Vic2NyaXB0aW9uIHZhbHVlXG4gICAgICAgIHRoaXMuX3NlcnZpY2VTdWJzY3JpcHRpb24gPSBudWxsO1xuICAgICAgICB0aGlzLnNlcnZpY2VTdWJzY3JpcHRpb25TdWJqZWN0Lm5leHQodGhpcy5fc2VydmljZVN1YnNjcmlwdGlvbik7XG4gICAgICAgIC8vIHVwZGF0ZSBwcm9wZXJ0eSBsaXN0XG4gICAgICAgIHRoaXMuZXZlbnREaXNwYXRjaGVyU2VydmljZS5kaXNwYXRjaChuZXcgQXBwRXZlbnQoQXBwRXZlbnRUeXBlRW51bS5TRVJWSUNFX1NVQlNDUklQVElPTl9VUERBVEVELCBudWxsKSk7XG5cbiAgICAgICAgdGhpcy5nZXRTdWJzY3JpcHRpb24oKS5zdWJzY3JpYmUoKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxufVxuIl19
157
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Vic2NyaXB0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dC1jb3JlL3NyYy9saWIvc2VydmljZXMvc3Vic2NyaXB0aW9uL3N1YnNjcmlwdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUUsZUFBZSxFQUFjLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNsRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3REFBd0QsQ0FBQztBQUM3RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbURBQW1ELENBQUM7QUFFbkYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQy9FLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDZEQUE2RCxDQUFDO0FBQ3RHLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUN4RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7Ozs7QUFNMUUsTUFBTSxPQUFPLG1CQUFtQjtJQVU5QixZQUNVLElBQWdCLEVBQ2hCLHNCQUE4QyxFQUM5QyxVQUFzQixFQUNDLFdBQWdCO1FBSHZDLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsMkJBQXNCLEdBQXRCLHNC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QWtCLENBQUMsS0FBZ0M7UUFDakQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxzQkFBc0IsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMvRSxDQUFDO0lBRU8sbUJBQW1CO1FBQ3pCLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLHNCQUFzQixDQUFDO2FBQ3ZDLElBQUksQ0FDSCxHQUFHLENBQUMsQ0FBQyxLQUFhLEVBQXVCLEVBQUUsQ0FBQyxZQUFZLENBQUMsbUJBQW1CLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FDdEY7YUFDQSxTQUFTLENBQUMsQ0FBQyxZQUFpQyxFQUFRLEVBQUU7WUFDckQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUN2QyxJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ2xELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxRQUFRLENBQUMsZ0JBQWdCLENBQUMsNEJBQTRCLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUMxRyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7O2lIQXZKVSxtQkFBbUIsNEdBY3BCLGFBQWE7cUhBZFosbUJBQW1CLGNBRmxCLE1BQU07NEZBRVAsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBZUksTUFBTTsyQkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBsb2FkU3RyaXBlIH0gZnJvbSAnQHN0cmlwZS9zdHJpcGUtanMnO1xuaW1wb3J0IHsgU2VydmljZVByaWNlQ29sbGVjdGlvbiB9IGZyb20gJy4uLy4uL2NvbGxlY3Rpb25zL3NlcnZpY2UtcHJpY2UuY29sbGVjdGlvbic7XG5pbXBvcnQgeyBTZXJ2aWNlU3Vic2NyaXB0aW9uQ29sbGVjdGlvbiB9IGZyb20gJy4uLy4uL2NvbGxlY3Rpb25zL3NlcnZpY2Utc3Vic2NyaXB0aW9uLmNvbGxlY3Rpb24nO1xuaW1wb3J0IHsgcGxhaW5Ub0NsYXNzIH0gZnJvbSAnY2xhc3MtdHJhbnNmb3JtZXInO1xuaW1wb3J0IHsgU2VydmljZVN1YnNjcmlwdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy9zZXJ2aWNlLXN1YnNjcmlwdGlvbi9zZXJ2aWNlLXN1YnNjcmlwdGlvbic7XG5pbXBvcnQgeyBTZXJ2aWNlUGF5bWVudCB9IGZyb20gJy4uLy4uL21vZGVscy9zZXJ2aWNlLXN1YnNjcmlwdGlvbi9zZXJ2aWNlLXBheW1lbnQnO1xuaW1wb3J0IHsgRXZlbnREaXNwYXRjaGVyU2VydmljZSB9IGZyb20gJy4uL2V2ZW50L2V2ZW50LWRpc3BhdGNoZXIuc2VydmljZSc7XG5pbXBvcnQgeyBTZXJ2aWNlUHJpY2UgfSBmcm9tICcuLi8uLi9tb2RlbHMvc2VydmljZS1zdWJzY3JpcHRpb24vc2VydmljZS1wcmljZSc7XG5pbXBvcnQgeyBTZXJ2aWNlU3Vic2NyaXB0aW9uSXRlbSB9IGZyb20gJy4uLy4uL21vZGVscy9zZXJ2aWNlLXN1YnNjcmlwdGlvbi9zZXJ2aWNlLXN1YnNjcmlwdGlvbi1pdGVtJztcbmltcG9ydCB7IEFwcEV2ZW50IH0gZnJvbSAnLi4vLi4vbW9kZWxzL2V2ZW50L2FwcC1ldmVudCc7XG5pbXBvcnQgeyBBcHBFdmVudFR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2V2ZW50L2FwcC1ldmVudC10eXBlLmVudW0nO1xuaW1wb3J0IHsgU3NlU2VydmljZSB9IGZyb20gJy4uL2V2ZW50L3NzZS5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgU3Vic2NyaXB0aW9uU2VydmljZSB7XG4gIF9zZXJ2aWNlU3Vic2NyaXB0aW9uOiBTZXJ2aWNlU3Vic2NyaXB0aW9uO1xuICBzZXJ2aWNlU3Vic2NyaXB0aW9uU3ViamVjdDogUmVwbGF5U3ViamVjdDxTZXJ2aWNlU3Vic2NyaXB0aW9uPiA9IG5ldyBSZXBsYXlTdWJqZWN0PFNlcnZpY2VTdWJzY3JpcHRpb24+KDEpO1xuICBfc2VydmljZVN1YnNjcmlwdGlvbnM6IFNlcnZpY2VTdWJzY3JpcHRpb25Db2xsZWN0aW9uO1xuICBzZXJ2aWNlU3Vic2NyaXB0aW9uc1N1YmplY3Q6IFJlcGxheVN1YmplY3Q8U2VydmljZVN1YnNjcmlwdGlvbkNvbGxlY3Rpb24+ID0gbmV3IFJlcGxheVN1YmplY3Q8U2VydmljZVN1YnNjcmlwdGlvbkNvbGxlY3Rpb24+KDEpO1xuICBzdHJpcGU6IGFueTtcbiAgc2VydmljZVBheW1lbnRzU3ViamVjdDogUmVwbGF5U3ViamVjdDxTZXJ2aWNlUGF5bWVudFtdPiA9IG5ldyBSZXBsYXlTdWJqZWN0PFNlcnZpY2VQYXltZW50W10+KDEpO1xuICBfc2VydmljZVBheW1lbnRzOiBTZXJ2aWNlUGF5bWVudFtdO1xuICBzdWJzY3JpcHRpb25DaGFuZ2VTdWJqZWN0OiBCZWhhdmlvclN1YmplY3Q8U2VydmljZVN1YnNjcmlwdGlvbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNlcnZpY2VTdWJzY3JpcHRpb24+KG51bGwpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcbiAgICBwcml2YXRlIGV2ZW50RGlzcGF0Y2hlclNlcnZpY2U6IEV2ZW50RGlzcGF0Y2hlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBzc2VTZXJ2aWNlOiBTc2VTZXJ2aWNlLFxuICAgIEBJbmplY3QoJ2Vudmlyb25tZW50JykgcHJpdmF0ZSBlbnZpcm9ubWVudDogYW55XG4gICkge1xuICAgIHRoaXMubGlzdGVuRXZlbnRzKCk7XG4gIH1cblxuICBsaXN0ZW5FdmVudHMoKTogdm9pZCB7XG4gICAgdGhpcy5saXN0ZW5TdWJzY3JpcHRpb25zKCk7XG4gIH1cblxuICBnZXRTdWJzY3JpcHRpb24oZm9yY2U6IGJvb2xlYW4gPSBmYWxzZSk6IE9ic2VydmFibGU8U2VydmljZVN1YnNjcmlwdGlvbj4ge1xuICAgIGlmICghdGhpcy5fc2VydmljZVN1YnNjcmlwdGlvbiB8fCBmb3JjZSkge1xuICAgICAgdGhpcy5odHRwLmdldChgJHt0aGlzLmVudmlyb25tZW50LmFwaVYyfS9zdWJzY3JpcHRpb25zL2xhc3RgKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBwbGFpblRvQ2xhc3MoU2VydmljZVN1YnNjcmlwdGlvbiwgcmVzcG9uc2UpO1xuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoc3Vic2NpcHRpb246IFNlcnZpY2VTdWJzY3JpcHRpb24pID0+IHtcbiAgICAgICAgICB0aGlzLl9zZXJ2aWNlU3Vic2NyaXB0aW9uID0gc3Vic2NpcHRpb247XG4gICAgICAgICAgdGhpcy5zZXJ2aWNlU3Vic2NyaXB0aW9uU3ViamVjdC5uZXh0KHRoaXMuX3NlcnZpY2VTdWJzY3JpcHRpb24pO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zZXJ2aWNlU3Vic2NyaXB0aW9uU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAVE9ETyByaWdodCBub3cgd2UgaGF2ZSBvbmx5IG1vbnRobHkgcHJpY2VzLCB0aGUgZnVuY3Rpb24gc2hvdWxkIGJlIHJlZmFjdG9yZWQgdG8gc3VwcG9ydCBvdGhlciBvcHRpb25zIGluIGZ1dHVyZVxuICAgKlxuICAgKiBjcmVhdGUgYXZhaWxhYmxlIHN1YnNjcmlwdGlvbiBwbGFucyBiYXNlZCBvbiBleGlzdGluZyBwcm9kdWN0c1xuICAgKi9cbiAgZ2V0U3Vic2NyaXB0aW9uUGxhbnMoKTogT2JzZXJ2YWJsZTxTZXJ2aWNlU3Vic2NyaXB0aW9uQ29sbGVjdGlvbj4ge1xuICAgIGlmICghdGhpcy5fc2VydmljZVN1YnNjcmlwdGlvbnMpIHtcbiAgICAgIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy5lbnZpcm9ubWVudC5hcGlWMn0vc2VydmljZS1wcmljZXNgKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgU2VydmljZVByaWNlQ29sbGVjdGlvbihyZXNwb25zZVsnaHlkcmE6bWVtYmVyJ10ubWFwKChpdGVtOiBvYmplY3QpID0+IHBsYWluVG9DbGFzcyhTZXJ2aWNlUHJpY2UsIGl0ZW0pKSk7XG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKChwcmljZXM6IFNlcnZpY2VQcmljZUNvbGxlY3Rpb24pID0+IHtcbiAgICAgICAgICB0aGlzLl9zZXJ2aWNlU3Vic2NyaXB0aW9ucyA9IG5ldyBTZXJ2aWNlU3Vic2NyaXB0aW9uQ29sbGVjdGlvbihbXG4gICAgICAgICAgICBwbGFpblRvQ2xhc3MoU2VydmljZVN1YnNjcmlwdGlvbiwge2l0ZW1zOiBbXX0pLFxuICAgICAgICAgICAgcGxhaW5Ub0NsYXNzKFNlcnZpY2VTdWJzY3JpcHRpb24sIHtcbiAgICAgICAgICAgICAgaXRlbXM6IFtwbGFpblRvQ2xhc3MoU2VydmljZVN1YnNjcmlwdGlvbkl0ZW0sIHtcbiAgICAgICAgICAgICAgICBwcmljZTogcHJpY2VzLnByb3BlcnR5LFxuICAgICAgICAgICAgICAgIHF1YW50aXR5OiAyXG4gICAgICAgICAgICAgIH0pXVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBwbGFpblRvQ2xhc3MoU2VydmljZVN1YnNjcmlwdGlvbiwge1xuICAgICAgICAgICAgICBpdGVtczogW3BsYWluVG9DbGFzcyhTZXJ2aWNlU3Vic2NyaXB0aW9uSXRlbSwge1xuICAgICAgICAgICAgICAgIHByaWNlOiBwcmljZXMucHJvcGVydHksXG4gICAgICAgICAgICAgICAgcXVhbnRpdHk6IDNcbiAgICAgICAgICAgICAgfSldXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIF0pO1xuICAgICAgICAgIHRoaXMuX3NlcnZpY2VTdWJzY3JpcHRpb25zLml0ZW1zLmZvckVhY2goKHN1YnNjcmlwdGlvbjogU2VydmljZVN1YnNjcmlwdGlvbikgPT4ge1xuICAgICAgICAgICAgc3Vic2NyaXB0aW9uLml0ZW1zLnB1c2gocGxhaW5Ub0NsYXNzKFNlcnZpY2VTdWJzY3JpcHRpb25JdGVtLCB7cHJpY2U6IHByaWNlcy53b3JrLCBxdWFudGl0eTogMX0pKTtcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHRoaXMuc2VydmljZVN1YnNjcmlwdGlvbnNTdWJqZWN0Lm5leHQodGhpcy5fc2VydmljZVN1YnNjcmlwdGlvbnMpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zZXJ2aWNlU3Vic2NyaXB0aW9uc1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICAvKipcbiAgICogcmVkaXJlY3QgdG8gc3RyaXBlIHBheW1lbnQgcGFnZVxuICAgKi9cbiAgYXN5bmMgY2hlY2tvdXRSZWRpcmVjdChzdWJzY3JpcHRpb246IFNlcnZpY2VTdWJzY3JpcHRpb24sIHN1Y2Nlc3NVcmw6IHN0cmluZywgY2FuY2VsVXJsOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IHN0cmlwZTogYW55ID0gYXdhaXQgbG9hZFN0cmlwZSh0aGlzLmVudmlyb25tZW50LnN0cmlwZVBrKTtcbiAgICAvLyBAVE9ETyB2aWtcbiAgICBjb25zdCBsaW5lSXRlbXM6IGFueSA9IHN1YnNjcmlwdGlvbi5pdGVtcy5tYXAoKGl0ZW06IFNlcnZpY2VTdWJzY3JpcHRpb25JdGVtKSA9PiB7XG4gICAgICByZXR1cm4ge3NlcnZpY2VQcmljZUlkOiBpdGVtLnByaWNlLmlkLCBxdWFudGl0eTogaXRlbS5xdWFudGl0eX07XG4gICAgfSk7XG5cbiAgICB0aGlzLmh0dHAucG9zdChgJHt0aGlzLmVudmlyb25tZW50LmFwaVYyfS9zdHJpcGUvY2hlY2tvdXQtc2Vzc2lvbmAsIHtcbiAgICAgIGxpbmVJdGVtcyxcbiAgICAgIHN1Y2Nlc3NVcmw6IHN1Y2Nlc3NVcmwsXG4gICAgICBjYW5jZWxVcmw6IGNhbmNlbFVybFxuICAgIH0pXG4gICAgICAuc3Vic2NyaWJlKChzZXNzaW9uOiBzdHJpbmcpID0+IHtcbiAgICAgICAgLy8gQFRvZG8gcmVtb3ZlIHVzZXIgVFJJQUwgc3RhdHVzXG4gICAgICAgIHN0cmlwZS5yZWRpcmVjdFRvQ2hlY2tvdXQoe3Nlc3Npb25JZDogc2Vzc2lvbn0pO1xuICAgICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogcmVkaXJlY3QgdG8gc3RyaXBlIGJpbGxpbmcgcGFnZVxuICAgKi9cbiAgYmlsbGluZ1JlZGlyZWN0KHJldHVyblVybDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5odHRwLmdldChgJHt0aGlzLmVudmlyb25tZW50LmFwaVYyfS9zdHJpcGUvYmlsbGluZy1wb3J0YWwtc2Vzc2lvbmAsIHtcbiAgICAgIHBhcmFtczoge3JldHVyblVybH1cbiAgICB9KS5zdWJzY3JpYmUoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZXBsYWNlKHJlc3BvbnNlLnVybCk7XG4gICAgfSk7XG4gIH1cblxuICBnZXRQYXltZW50cygpOiBPYnNlcnZhYmxlPFNlcnZpY2VQYXltZW50W10+IHtcbiAgICBpZiAoIXRoaXMuX3NlcnZpY2VQYXltZW50cykge1xuICAgICAgdGhpcy5odHRwLmdldChgJHt0aGlzLmVudmlyb25tZW50LmFwaVYyfS9zZXJ2aWNlLXBheW1lbnRzYCkuc3Vic2NyaWJlKChyZXNwb25zZTogb2JqZWN0W10pID0+IHtcbiAgICAgICAgdGhpcy5fc2VydmljZVBheW1lbnRzID0gcmVzcG9uc2UubWFwKChpdGVtOiBvYmplY3QpID0+IHBsYWluVG9DbGFzcyhTZXJ2aWNlUGF5bWVudCwgaXRlbSkpO1xuICAgICAgICB0aGlzLnNlcnZpY2VQYXltZW50c1N1YmplY3QubmV4dCh0aGlzLl9zZXJ2aWNlUGF5bWVudHMpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc2VydmljZVBheW1lbnRzU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgZGlmZmVyZW5jZSBiZXR3ZWVuIGN1cnJlbnQgc3Vic2NyaXB0aW9uIGFuZCBzZWxlY3RlZCBuZXcgc3Vic2NyaXB0aW9uXG4gICAqL1xuICBnZXRQcm9yYXRpb25Db3N0KGl0ZW1zOiBTZXJ2aWNlU3Vic2NyaXB0aW9uSXRlbVtdKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5lbnZpcm9ubWVudC5hcGlWMn0vc3Vic2NyaXB0aW9ucy9wcm9yYXRpb24tY29zdGAsIGl0ZW1zKS5waXBlKFxuICAgICAgbWFwKChwcm9yYXRpb25Db3N0OiBudW1iZXIpID0+IHtcbiAgICAgICAgcmV0dXJuIHByb3JhdGlvbkNvc3Q7XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ2hhbmdlIHN1YnNjcmlwdGlvbiBwbGFuXG4gICAqL1xuICBjaGFuZ2VTdWJzY3JpcHRpb24oaXRlbXM6IFNlcnZpY2VTdWJzY3JpcHRpb25JdGVtW10pOiBPYnNlcnZhYmxlPG9iamVjdD4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KGAke3RoaXMuZW52aXJvbm1lbnQuYXBpVjJ9L3N1YnNjcmlwdGlvbnMvaXRlbXNgLCBpdGVtcyk7XG4gIH1cblxuICBwcml2YXRlIGxpc3RlblN1YnNjcmlwdGlvbnMoKTogdm9pZCB7XG4gICAgdGhpcy5zc2VTZXJ2aWNlLm9uKGBzZXJ2aWNlU3Vic2NyaXB0aW9uc2ApXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChldmVudDogb2JqZWN0KTogU2VydmljZVN1YnNjcmlwdGlvbiA9PiBwbGFpblRvQ2xhc3MoU2VydmljZVN1YnNjcmlwdGlvbiwgZXZlbnQpKVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgoc3Vic2NyaXB0aW9uOiBTZXJ2aWNlU3Vic2NyaXB0aW9uKTogdm9pZCA9PiB7XG4gICAgICAgIHRoaXMuZ2V0U3Vic2NyaXB0aW9uKHRydWUpLnN1YnNjcmliZSgpO1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbkNoYW5nZVN1YmplY3QubmV4dChzdWJzY3JpcHRpb24pO1xuICAgICAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlclNlcnZpY2UuZGlzcGF0Y2gobmV3IEFwcEV2ZW50KEFwcEV2ZW50VHlwZUVudW0uU0VSVklDRV9TVUJTQ1JJUFRJT05fVVBEQVRFRCwgbnVsbCkpO1xuICAgICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -9364,16 +9364,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImpo
9364
9364
  }] });
9365
9365
 
9366
9366
  class SubscriptionService {
9367
- constructor(http, eventDispatcherService, environment) {
9367
+ constructor(http, eventDispatcherService, sseService, environment) {
9368
9368
  this.http = http;
9369
9369
  this.eventDispatcherService = eventDispatcherService;
9370
+ this.sseService = sseService;
9370
9371
  this.environment = environment;
9371
9372
  this.serviceSubscriptionSubject = new ReplaySubject(1);
9372
9373
  this.serviceSubscriptionsSubject = new ReplaySubject(1);
9373
9374
  this.servicePaymentsSubject = new ReplaySubject(1);
9375
+ this.subscriptionChangeSubject = new BehaviorSubject(null);
9376
+ this.listenEvents();
9377
+ }
9378
+ listenEvents() {
9379
+ this.listenSubscriptions();
9374
9380
  }
9375
- getSubscription() {
9376
- if (!this._serviceSubscription) {
9381
+ getSubscription(force = false) {
9382
+ if (!this._serviceSubscription || force) {
9377
9383
  this.http.get(`${this.environment.apiV2}/subscriptions/last`)
9378
9384
  .pipe(map((response) => {
9379
9385
  return plainToClass(ServiceSubscription, response);
@@ -9399,8 +9405,18 @@ class SubscriptionService {
9399
9405
  .subscribe((prices) => {
9400
9406
  this._serviceSubscriptions = new ServiceSubscriptionCollection([
9401
9407
  plainToClass(ServiceSubscription, { items: [] }),
9402
- plainToClass(ServiceSubscription, { items: [plainToClass(ServiceSubscriptionItem, { price: prices.property, quantity: 2 })] }),
9403
- plainToClass(ServiceSubscription, { items: [plainToClass(ServiceSubscriptionItem, { price: prices.property, quantity: 3 })] })
9408
+ plainToClass(ServiceSubscription, {
9409
+ items: [plainToClass(ServiceSubscriptionItem, {
9410
+ price: prices.property,
9411
+ quantity: 2
9412
+ })]
9413
+ }),
9414
+ plainToClass(ServiceSubscription, {
9415
+ items: [plainToClass(ServiceSubscriptionItem, {
9416
+ price: prices.property,
9417
+ quantity: 3
9418
+ })]
9419
+ })
9404
9420
  ]);
9405
9421
  this._serviceSubscriptions.items.forEach((subscription) => {
9406
9422
  subscription.items.push(plainToClass(ServiceSubscriptionItem, { price: prices.work, quantity: 1 }));
@@ -9462,24 +9478,26 @@ class SubscriptionService {
9462
9478
  * Change subscription plan
9463
9479
  */
9464
9480
  changeSubscription(items) {
9465
- return this.http.put(`${this.environment.apiV2}/subscriptions/items`, items).pipe(map(() => {
9466
- // Set cache value as null and fire request to backend to get updated subscription value
9467
- this._serviceSubscription = null;
9468
- this.serviceSubscriptionSubject.next(this._serviceSubscription);
9469
- // update property list
9481
+ return this.http.put(`${this.environment.apiV2}/subscriptions/items`, items);
9482
+ }
9483
+ listenSubscriptions() {
9484
+ this.sseService.on(`serviceSubscriptions`)
9485
+ .pipe(map((event) => plainToClass(ServiceSubscription, event)))
9486
+ .subscribe((subscription) => {
9487
+ this.getSubscription(true).subscribe();
9488
+ this.subscriptionChangeSubject.next(subscription);
9470
9489
  this.eventDispatcherService.dispatch(new AppEvent(AppEventTypeEnum.SERVICE_SUBSCRIPTION_UPDATED, null));
9471
- this.getSubscription().subscribe();
9472
- }));
9490
+ });
9473
9491
  }
9474
9492
  }
9475
- SubscriptionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: SubscriptionService, deps: [{ token: i1.HttpClient }, { token: EventDispatcherService }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable });
9493
+ SubscriptionService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: SubscriptionService, deps: [{ token: i1.HttpClient }, { token: EventDispatcherService }, { token: SseService }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable });
9476
9494
  SubscriptionService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: SubscriptionService, providedIn: 'root' });
9477
9495
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: SubscriptionService, decorators: [{
9478
9496
  type: Injectable,
9479
9497
  args: [{
9480
9498
  providedIn: 'root'
9481
9499
  }]
9482
- }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: EventDispatcherService }, { type: undefined, decorators: [{
9500
+ }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: EventDispatcherService }, { type: SseService }, { type: undefined, decorators: [{
9483
9501
  type: Inject,
9484
9502
  args: ['environment']
9485
9503
  }] }]; } });