taxtank-core 0.7.3 → 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.
- package/bundles/taxtank-core.umd.js +191 -164
- package/bundles/taxtank-core.umd.js.map +1 -1
- package/esm2015/lib/collections/collection.js +7 -4
- package/esm2015/lib/collections/property/property.collection.js +2 -5
- package/esm2015/lib/db/Enums/property/property-share-access.enum.js +6 -0
- package/esm2015/lib/db/Enums/property/property-share-status.enum.js +7 -0
- package/esm2015/lib/db/Enums/user-event-type-client-type.enum.js +9 -9
- package/esm2015/lib/db/Models/client-details.js +1 -1
- package/esm2015/lib/db/Models/property/property-sale/property-sale.js +1 -1
- package/esm2015/lib/db/Models/property/property-share.js +3 -0
- package/esm2015/lib/db/Models/property/property.js +1 -1
- package/esm2015/lib/db/Models/user.js +1 -1
- package/esm2015/lib/models/bank/basiq-config.js +12 -0
- package/esm2015/lib/models/endpoint/endpoints.const.js +4 -4
- package/esm2015/lib/models/event/app-event-type.enum.js +2 -2
- package/esm2015/lib/models/notification/notification.js +3 -3
- package/esm2015/lib/models/property/property-sale/property-sale.js +1 -1
- package/esm2015/lib/models/property/{property-owner.js → property-share.js} +15 -15
- package/esm2015/lib/models/property/property.js +9 -8
- package/esm2015/lib/models/property/share-filter-options.enum.js +11 -0
- package/esm2015/lib/services/bank/bank-account.service.js +2 -2
- package/esm2015/lib/services/depreciation/depreciation.service.js +2 -2
- package/esm2015/lib/services/property/property-share/property-share.service.js +115 -0
- package/esm2015/lib/services/property/property.service.js +6 -6
- package/esm2015/lib/services/subscription/subscription.service.js +35 -16
- package/esm2015/public-api.js +8 -6
- package/fesm2015/taxtank-core.js +159 -135
- package/fesm2015/taxtank-core.js.map +1 -1
- package/lib/collections/collection.d.ts +2 -1
- package/lib/collections/property/property.collection.d.ts +1 -4
- package/lib/db/Enums/property/property-share-access.enum.d.ts +4 -0
- package/lib/db/Enums/property/{property-owner-status.enum.d.ts → property-share-status.enum.d.ts} +1 -1
- package/lib/db/Enums/user-event-type-client-type.enum.d.ts +8 -8
- package/lib/db/Models/client-details.d.ts +1 -0
- package/lib/db/Models/property/property-sale/property-sale.d.ts +4 -3
- package/lib/db/Models/property/{property-owner.d.ts → property-share.d.ts} +6 -6
- package/lib/db/Models/property/property.d.ts +2 -2
- package/lib/db/Models/user.d.ts +2 -2
- package/lib/models/bank/basiq-config.d.ts +17 -0
- package/lib/models/event/app-event-type.enum.d.ts +1 -1
- package/lib/models/property/{property-owner.d.ts → property-share.d.ts} +3 -3
- package/lib/models/property/property.d.ts +6 -5
- package/lib/models/property/share-filter-options.enum.d.ts +9 -0
- package/lib/services/property/property-share/property-share.service.d.ts +44 -0
- package/lib/services/property/property.service.d.ts +3 -3
- package/lib/services/subscription/subscription.service.d.ts +9 -4
- package/package.json +1 -1
- package/public-api.d.ts +7 -5
- package/esm2015/lib/db/Enums/property/property-owner-access.enum.js +0 -6
- package/esm2015/lib/db/Enums/property/property-owner-status.enum.js +0 -7
- package/esm2015/lib/db/Models/property/property-owner.js +0 -3
- package/esm2015/lib/models/property/ownership-filter-options.enum.js +0 -10
- package/esm2015/lib/services/property/property-owner/property-owner.service.js +0 -123
- package/lib/db/Enums/property/property-owner-access.enum.d.ts +0 -4
- package/lib/models/property/ownership-filter-options.enum.d.ts +0 -8
- package/lib/services/property/property-owner/property-owner.service.d.ts +0 -52
|
@@ -6,7 +6,6 @@ export declare class Collection<Model extends object> implements Iterable<Model>
|
|
|
6
6
|
items: Model[];
|
|
7
7
|
constructor(items?: Model[]);
|
|
8
8
|
create(items?: Model[]): this;
|
|
9
|
-
getBy(field: string, value: any): this;
|
|
10
9
|
groupBy(path?: string): CollectionDictionary<Collection<Model>>;
|
|
11
10
|
indexBy(path: string): object;
|
|
12
11
|
/**
|
|
@@ -21,6 +20,8 @@ export declare class Collection<Model extends object> implements Iterable<Model>
|
|
|
21
20
|
* Get list of items ids
|
|
22
21
|
*/
|
|
23
22
|
getIds(): number[];
|
|
23
|
+
getOneBy(path: string, value: any): Model;
|
|
24
|
+
getBy(path: string, value: any): this;
|
|
24
25
|
/**
|
|
25
26
|
* Get single item by id
|
|
26
27
|
*/
|
|
@@ -11,10 +11,7 @@ export declare class PropertyCollection extends Collection<Property> {
|
|
|
11
11
|
* Get new property collection filtered by active status
|
|
12
12
|
*/
|
|
13
13
|
getActiveProperties(): PropertyCollection;
|
|
14
|
-
|
|
15
|
-
* Get new property collection filtered by owner
|
|
16
|
-
*/
|
|
17
|
-
getOwnProperties(): PropertyCollection;
|
|
14
|
+
getCreatedProperties(): PropertyCollection;
|
|
18
15
|
/**
|
|
19
16
|
* Get new property collection filtered by shared
|
|
20
17
|
*/
|
|
@@ -8,14 +8,14 @@ export declare enum UserEventTypeClientTypeEnum {
|
|
|
8
8
|
FIRM_INVITE_ACCEPTED = 2012,
|
|
9
9
|
FIRM_INVITE_REJECTED = 2013,
|
|
10
10
|
FIRM_INVITE_REGISTERED = 2014,
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
11
|
+
PROPERTY_SHARE_INVITE = 2020,
|
|
12
|
+
PROPERTY_SHARE_INVITE_TO_REGISTER = 2021,
|
|
13
|
+
PROPERTY_SHARE_INVITE_ACCEPTED = 2022,
|
|
14
|
+
PROPERTY_SHARE_INVITE_REJECTED = 2023,
|
|
15
|
+
PROPERTY_SHARE_INVITE_REGISTERED = 2024,
|
|
16
|
+
PROPERTY_SHARE_CHANGE_REQUESTED = 2025,
|
|
17
|
+
PROPERTY_SHARE_CHANGE_ACCEPTED = 2026,
|
|
18
|
+
PROPERTY_SHARE_CHANGE_REJECTED = 2027,
|
|
19
19
|
BASIQ_NEW_ACCOUNTS = 2030,
|
|
20
20
|
BASIQ_FIRST_IMPORT_COMPLETE = 2031,
|
|
21
21
|
BASIQ_AUTHORIZATION_FAIL = 2032,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Property } from '../property';
|
|
2
1
|
import { TaxExemption } from './tax-exemption';
|
|
3
|
-
import { TaxExemptionMetadata } from '
|
|
2
|
+
import { TaxExemptionMetadata } from './tax-exemption-metadata';
|
|
3
|
+
import { PropertyShare } from '../property-share';
|
|
4
4
|
export declare class PropertySale {
|
|
5
5
|
id?: number;
|
|
6
6
|
structuralImprovementsWDV?: number;
|
|
@@ -12,9 +12,10 @@ export declare class PropertySale {
|
|
|
12
12
|
legalFees?: number;
|
|
13
13
|
otherCost?: number;
|
|
14
14
|
capitalLoss?: number;
|
|
15
|
+
cgt?: number;
|
|
15
16
|
createdAt?: Date;
|
|
16
17
|
updatedAt?: Date;
|
|
17
|
-
|
|
18
|
+
share?: PropertyShare;
|
|
18
19
|
taxExemption?: TaxExemption;
|
|
19
20
|
taxExemptionMetadata?: TaxExemptionMetadata[];
|
|
20
21
|
}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { PropertyShareStatusEnum } from '../../Enums/property/property-share-status.enum';
|
|
2
|
+
import { PropertyShareAccessEnum } from '../../Enums/property/property-share-access.enum';
|
|
3
3
|
import { Property } from './property';
|
|
4
4
|
import { User } from '../user';
|
|
5
5
|
import { RegistrationInvite } from '../registration-invite';
|
|
6
|
-
export declare class
|
|
6
|
+
export declare class PropertyShare {
|
|
7
7
|
id?: number;
|
|
8
8
|
email?: string;
|
|
9
9
|
firstName?: string;
|
|
10
|
-
|
|
10
|
+
percent?: number;
|
|
11
11
|
fromDate?: Date;
|
|
12
12
|
toDate?: Date;
|
|
13
|
-
status?:
|
|
14
|
-
access?:
|
|
13
|
+
status?: PropertyShareStatusEnum;
|
|
14
|
+
access?: PropertyShareAccessEnum;
|
|
15
15
|
createdAt?: Date;
|
|
16
16
|
updatedAt?: Date;
|
|
17
17
|
property?: Property;
|
|
@@ -3,7 +3,7 @@ import { User } from '../user';
|
|
|
3
3
|
import { Address } from '../address';
|
|
4
4
|
import { PropertyCategory } from './property-category';
|
|
5
5
|
import { PropertyForecast } from './property-forecast';
|
|
6
|
-
import {
|
|
6
|
+
import { PropertyShare } from './property-share';
|
|
7
7
|
import { PropertyValuation } from './property-valuation';
|
|
8
8
|
import { PropertyCategoryMovement } from './property-category-movement';
|
|
9
9
|
import { BankAccountProperty } from '../bank-account-property';
|
|
@@ -28,7 +28,7 @@ export declare class Property {
|
|
|
28
28
|
address?: Address;
|
|
29
29
|
category?: PropertyCategory;
|
|
30
30
|
forecasts?: PropertyForecast[];
|
|
31
|
-
|
|
31
|
+
shares?: PropertyShare[];
|
|
32
32
|
valuations?: PropertyValuation[];
|
|
33
33
|
categoryMovements?: PropertyCategoryMovement[];
|
|
34
34
|
stampDuty?: number;
|
package/lib/db/Models/user.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ import { ServiceSubscription } from './service-subscription';
|
|
|
7
7
|
import { UserEventSetting } from './user-event-setting';
|
|
8
8
|
import { BankConnection } from './bank-connection';
|
|
9
9
|
import { TaxReview } from './tax-review';
|
|
10
|
-
import {
|
|
10
|
+
import { PropertyShare } from './property/property-share';
|
|
11
11
|
import { Address } from './address';
|
|
12
12
|
import { Phone } from './phone';
|
|
13
13
|
import { ClientMovement } from './client-movement';
|
|
@@ -42,7 +42,7 @@ export declare class User {
|
|
|
42
42
|
eventSettings?: UserEventSetting[];
|
|
43
43
|
bankConnections?: BankConnection[];
|
|
44
44
|
taxReviews?: TaxReview[];
|
|
45
|
-
|
|
45
|
+
propertyShares?: PropertyShare[];
|
|
46
46
|
address?: Address;
|
|
47
47
|
phone?: Phone;
|
|
48
48
|
clientMovements?: ClientMovement[];
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Class describe configuration options for basiq connect control
|
|
3
|
+
* https://www.npmjs.com/package/@basiq/basiq-connect-control
|
|
4
|
+
*/
|
|
5
|
+
export declare class BasiqConfig {
|
|
6
|
+
containerId: string;
|
|
7
|
+
token: string;
|
|
8
|
+
userID: string;
|
|
9
|
+
connectLinkId: string;
|
|
10
|
+
upload: boolean;
|
|
11
|
+
connect: boolean;
|
|
12
|
+
companyName: string;
|
|
13
|
+
regionOfInstitutions: string;
|
|
14
|
+
hideTestBanks: boolean;
|
|
15
|
+
hideBetaBanks: boolean;
|
|
16
|
+
constructor(options: object);
|
|
17
|
+
}
|
|
@@ -24,7 +24,7 @@ export declare enum AppEventTypeEnum {
|
|
|
24
24
|
PROPERTY_MOVEMENT_CREATED = 22,
|
|
25
25
|
PROPERTY_MOVEMENT_UPDATED = 23,
|
|
26
26
|
PROPERTY_MOVEMENT_DELETED = 24,
|
|
27
|
-
|
|
27
|
+
PROPERTY_SHARE_UPDATED = 25,
|
|
28
28
|
PROPERTY_SUBSCRIPTION_ADDED = 26,
|
|
29
29
|
PROPERTY_SUBSCRIPTION_DELETED = 27,
|
|
30
30
|
PROPERTY_VALUATION_DOCUMENT_CREATED = 28,
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { PropertyShare as PropertyShareBase } from '../../db/Models/property/property-share';
|
|
2
2
|
import { User } from '../user/user';
|
|
3
3
|
import { RegistrationInvite } from '../registration-invite/registration-invite';
|
|
4
4
|
import { Property } from './property';
|
|
5
|
-
export declare class
|
|
5
|
+
export declare class PropertyShare extends PropertyShareBase {
|
|
6
6
|
fromDate: Date;
|
|
7
7
|
toDate: Date;
|
|
8
8
|
user: User;
|
|
@@ -17,5 +17,5 @@ export declare class PropertyOwner extends PropertyOwnerBase {
|
|
|
17
17
|
* Return full user name if user is already registered.
|
|
18
18
|
* Otherwise - return first name from invitation
|
|
19
19
|
*/
|
|
20
|
-
get
|
|
20
|
+
get userName(): string;
|
|
21
21
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Property as PropertyBase } from '../../db/Models/property/property';
|
|
2
2
|
import { Documentable } from '../../interfaces/documentable.interface';
|
|
3
3
|
import { IDocument } from '../../interfaces/document.interface';
|
|
4
|
-
import {
|
|
4
|
+
import { PropertyShare } from '../../db/Models/property/property-share';
|
|
5
5
|
import { PropertySubscription } from './property-subscription';
|
|
6
6
|
import { Photoable } from '../../interfaces/photoable';
|
|
7
7
|
import { Address } from '../address/address';
|
|
@@ -47,18 +47,19 @@ export declare class Property extends PropertyBase implements Photoable, Documen
|
|
|
47
47
|
get forecastedTaxPosition(): number;
|
|
48
48
|
get firstForecastYear(): number;
|
|
49
49
|
get marketValueGrowth(): number;
|
|
50
|
-
get myShare():
|
|
50
|
+
get myShare(): PropertyShare;
|
|
51
51
|
/**
|
|
52
|
-
* exact claim
|
|
52
|
+
* exact claim including share percent
|
|
53
53
|
*/
|
|
54
|
-
get
|
|
54
|
+
get shareClaimPercent(): number;
|
|
55
55
|
get actualValuation(): PropertyValuation;
|
|
56
|
-
get
|
|
56
|
+
get sharePercent(): number;
|
|
57
57
|
get previousCategory(): PropertyCategory;
|
|
58
58
|
getCurrentSubscription(): PropertySubscription;
|
|
59
59
|
getForecastByYear(year: number): PropertyForecast;
|
|
60
60
|
get isShared(): boolean;
|
|
61
61
|
/**
|
|
62
|
+
* @TODO consider to move methods related with propertySale to separated class, since used just in one module yet
|
|
62
63
|
* purchase costs - claimed costs, except `ppr to investment` exemption,
|
|
63
64
|
* in that case it's equal to market value, when property became an investment property
|
|
64
65
|
*/
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { Observable } from 'rxjs';
|
|
2
|
+
import { PropertyShare as PropertyShareBase } from '../../../db/Models/property/property-share';
|
|
3
|
+
import { HttpClient } from '@angular/common/http';
|
|
4
|
+
import { EventDispatcherService } from '../../event/event-dispatcher.service';
|
|
5
|
+
import { PropertyShare } from '../../../models/property/property-share';
|
|
6
|
+
import { BaseRestService } from '../../base-rest.service';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
export declare class PropertyShareService extends BaseRestService<PropertyShareBase, PropertyShare> {
|
|
9
|
+
protected http: HttpClient;
|
|
10
|
+
protected eventDispatcherService: EventDispatcherService;
|
|
11
|
+
protected environment: any;
|
|
12
|
+
url: string;
|
|
13
|
+
modelClass: typeof PropertyShare;
|
|
14
|
+
constructor(http: HttpClient, eventDispatcherService: EventDispatcherService, environment: any);
|
|
15
|
+
/**
|
|
16
|
+
* Listen to Event Dispatcher events
|
|
17
|
+
*/
|
|
18
|
+
listenEvents(): void;
|
|
19
|
+
/**
|
|
20
|
+
* Updated loan
|
|
21
|
+
*/
|
|
22
|
+
update(propertyShare: PropertyShare): Observable<PropertyShare>;
|
|
23
|
+
/**
|
|
24
|
+
* Re-invite property share
|
|
25
|
+
* @param share user to share property
|
|
26
|
+
*/
|
|
27
|
+
reinvite(share: PropertyShare): Observable<object>;
|
|
28
|
+
getIncoming(): Observable<PropertyShare[]>;
|
|
29
|
+
/**
|
|
30
|
+
* Get outcoming property shares list
|
|
31
|
+
*/
|
|
32
|
+
getOutcoming(): Observable<PropertyShare[]>;
|
|
33
|
+
/**
|
|
34
|
+
* Filter outcoming property shares
|
|
35
|
+
*/
|
|
36
|
+
filterOutcoming(propertyShares: PropertyShare[]): PropertyShare[];
|
|
37
|
+
getByPropertyId(propertyId: number): Observable<PropertyShare[]>;
|
|
38
|
+
/**
|
|
39
|
+
* Listen to User updated event
|
|
40
|
+
*/
|
|
41
|
+
private listenUserUpdated;
|
|
42
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<PropertyShareService, never>;
|
|
43
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<PropertyShareService>;
|
|
44
|
+
}
|
|
@@ -17,9 +17,9 @@ export declare class PropertyService extends BaseRestService<PropertyBase, Prope
|
|
|
17
17
|
constructor(http: HttpClient, eventDispatcherService: EventDispatcherService, environment: any);
|
|
18
18
|
listenEvents(): void;
|
|
19
19
|
/**
|
|
20
|
-
* Update cache when
|
|
20
|
+
* Update cache when share invitation accepted
|
|
21
21
|
*/
|
|
22
|
-
private
|
|
22
|
+
private listenShareInviteAccepted;
|
|
23
23
|
/**
|
|
24
24
|
* Update cache when user's service subscription is updated
|
|
25
25
|
*/
|
|
@@ -44,7 +44,7 @@ export declare class PropertyService extends BaseRestService<PropertyBase, Prope
|
|
|
44
44
|
* @param photoFormData FormData with property photo image
|
|
45
45
|
*/
|
|
46
46
|
updatePhoto(property: Property, photoFormData: FormData): Observable<void>;
|
|
47
|
-
|
|
47
|
+
getByShareId(id: number): Observable<Property[]>;
|
|
48
48
|
/**
|
|
49
49
|
* Get list of active user's properties
|
|
50
50
|
*/
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
import { HttpClient } from '@angular/common/http';
|
|
2
|
-
import { Observable, ReplaySubject } from 'rxjs';
|
|
2
|
+
import { BehaviorSubject, Observable, ReplaySubject } from 'rxjs';
|
|
3
3
|
import { ServiceSubscriptionCollection } from '../../collections/service-subscription.collection';
|
|
4
4
|
import { ServiceSubscription } from '../../models/service-subscription/service-subscription';
|
|
5
5
|
import { ServicePayment } from '../../models/service-subscription/service-payment';
|
|
6
6
|
import { EventDispatcherService } from '../event/event-dispatcher.service';
|
|
7
7
|
import { ServiceSubscriptionItem } from '../../models/service-subscription/service-subscription-item';
|
|
8
|
+
import { SseService } from '../event/sse.service';
|
|
8
9
|
import * as i0 from "@angular/core";
|
|
9
10
|
export declare class SubscriptionService {
|
|
10
11
|
private http;
|
|
11
12
|
private eventDispatcherService;
|
|
13
|
+
private sseService;
|
|
12
14
|
private environment;
|
|
13
15
|
_serviceSubscription: ServiceSubscription;
|
|
14
16
|
serviceSubscriptionSubject: ReplaySubject<ServiceSubscription>;
|
|
@@ -17,8 +19,10 @@ export declare class SubscriptionService {
|
|
|
17
19
|
stripe: any;
|
|
18
20
|
servicePaymentsSubject: ReplaySubject<ServicePayment[]>;
|
|
19
21
|
_servicePayments: ServicePayment[];
|
|
20
|
-
|
|
21
|
-
|
|
22
|
+
subscriptionChangeSubject: BehaviorSubject<ServiceSubscription>;
|
|
23
|
+
constructor(http: HttpClient, eventDispatcherService: EventDispatcherService, sseService: SseService, environment: any);
|
|
24
|
+
listenEvents(): void;
|
|
25
|
+
getSubscription(force?: boolean): Observable<ServiceSubscription>;
|
|
22
26
|
/**
|
|
23
27
|
* @TODO right now we have only monthly prices, the function should be refactored to support other options in future
|
|
24
28
|
*
|
|
@@ -41,7 +45,8 @@ export declare class SubscriptionService {
|
|
|
41
45
|
/**
|
|
42
46
|
* Change subscription plan
|
|
43
47
|
*/
|
|
44
|
-
changeSubscription(items: ServiceSubscriptionItem[]): Observable<
|
|
48
|
+
changeSubscription(items: ServiceSubscriptionItem[]): Observable<object>;
|
|
49
|
+
private listenSubscriptions;
|
|
45
50
|
static ɵfac: i0.ɵɵFactoryDeclaration<SubscriptionService, never>;
|
|
46
51
|
static ɵprov: i0.ɵɵInjectableDeclaration<SubscriptionService>;
|
|
47
52
|
}
|
package/package.json
CHANGED
package/public-api.d.ts
CHANGED
|
@@ -75,8 +75,8 @@ export * from './lib/db/Enums/loan-type.enum';
|
|
|
75
75
|
export * from './lib/db/Enums/loan-vehicle-type.enum';
|
|
76
76
|
export * from './lib/db/Enums/phone-type.enum';
|
|
77
77
|
export * from './lib/db/Enums/property/property-depreciation-calculation.enum';
|
|
78
|
-
export * from './lib/db/Enums/property/property-
|
|
79
|
-
export * from './lib/db/Enums/property/property-
|
|
78
|
+
export * from './lib/db/Enums/property/property-share-access.enum';
|
|
79
|
+
export * from './lib/db/Enums/property/property-share-status.enum';
|
|
80
80
|
export * from './lib/db/Enums/registration-invite-status.enum';
|
|
81
81
|
export * from './lib/db/Enums/salary-forecast-frequency.enum';
|
|
82
82
|
export * from './lib/db/Enums/service-notification-status.enum';
|
|
@@ -114,6 +114,7 @@ export * from './lib/db/Enums/user-work-depreciation-calculation.enum';
|
|
|
114
114
|
export * from './lib/db/Enums/user-working-holiday-maker.enum';
|
|
115
115
|
export * from './lib/db/Enums/vehicle-claim-method.enum';
|
|
116
116
|
export * from './lib/db/Enums/vehicle-logbook-purpose.enum';
|
|
117
|
+
export * from './lib/db/Enums/property/property-sale/tax-exemption.enum';
|
|
117
118
|
export * from './lib/db/Enums/property/property-sale/tax-exemption-metadata.enum';
|
|
118
119
|
/**
|
|
119
120
|
* Models and related enums and consts
|
|
@@ -129,6 +130,7 @@ export * from './lib/models/bank/bank-connection';
|
|
|
129
130
|
export * from './lib/models/bank/bank-transaction';
|
|
130
131
|
export * from './lib/models/bank/bank-transaction-chart-data';
|
|
131
132
|
export * from './lib/models/bank/bank-transaction-summary-fields.enum';
|
|
133
|
+
export * from './lib/models/bank/basiq-config';
|
|
132
134
|
export * from './lib/models/bank/basiq-job';
|
|
133
135
|
export * from './lib/models/bank/basiq-token';
|
|
134
136
|
export * from './lib/models/bank/type-loan.const';
|
|
@@ -202,7 +204,7 @@ export * from './lib/models/property/calculation-form-item';
|
|
|
202
204
|
export * from './lib/models/property/calculation-form-type.enum';
|
|
203
205
|
export * from './lib/models/property/capital-costs-itmes.const';
|
|
204
206
|
export * from './lib/models/property/corelogic-suggestion';
|
|
205
|
-
export * from './lib/models/property/
|
|
207
|
+
export * from './lib/models/property/share-filter-options.enum';
|
|
206
208
|
export * from './lib/models/property/property';
|
|
207
209
|
export * from './lib/models/property/property-category';
|
|
208
210
|
export * from './lib/models/property/property-category-movement';
|
|
@@ -210,7 +212,7 @@ export * from './lib/models/property/property-document';
|
|
|
210
212
|
export * from './lib/models/property/property-equity-chart-data';
|
|
211
213
|
export * from './lib/models/property/property-equity-chart-item';
|
|
212
214
|
export * from './lib/models/property/property-forecast';
|
|
213
|
-
export * from './lib/models/property/property-
|
|
215
|
+
export * from './lib/models/property/property-share';
|
|
214
216
|
export * from './lib/models/property/property-sale/property-sale';
|
|
215
217
|
export * from './lib/models/property/property-sale/tax-exemption';
|
|
216
218
|
export * from './lib/models/property/property-sale/tax-exemption-metadata';
|
|
@@ -297,7 +299,7 @@ export * from './lib/services/property/property.service';
|
|
|
297
299
|
export * from './lib/services/property/property-calculation/property-calculation.service';
|
|
298
300
|
export * from './lib/services/property/property-category/property-category.service';
|
|
299
301
|
export * from './lib/services/property/property-document/property-document.service';
|
|
300
|
-
export * from './lib/services/property/property-
|
|
302
|
+
export * from './lib/services/property/property-share/property-share.service';
|
|
301
303
|
export * from './lib/services/property/property-sale/property-sale.service';
|
|
302
304
|
export * from './lib/services/property/equity-position-chart.service';
|
|
303
305
|
export * from './lib/services/property/property.service';
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
export var PropertyOwnerAccessEnum;
|
|
2
|
-
(function (PropertyOwnerAccessEnum) {
|
|
3
|
-
PropertyOwnerAccessEnum[PropertyOwnerAccessEnum["VIEW"] = 1] = "VIEW";
|
|
4
|
-
PropertyOwnerAccessEnum[PropertyOwnerAccessEnum["EDIT"] = 2] = "EDIT";
|
|
5
|
-
})(PropertyOwnerAccessEnum || (PropertyOwnerAccessEnum = {}));
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHktb3duZXItYWNjZXNzLmVudW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dC1jb3JlL3NyYy9saWIvZGIvRW51bXMvcHJvcGVydHkvcHJvcGVydHktb3duZXItYWNjZXNzLmVudW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksdUJBR1g7QUFIRCxXQUFZLHVCQUF1QjtJQUNsQyxxRUFBUSxDQUFBO0lBQ1IscUVBQVEsQ0FBQTtBQUNULENBQUMsRUFIVyx1QkFBdUIsS0FBdkIsdUJBQXVCLFFBR2xDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGVudW0gUHJvcGVydHlPd25lckFjY2Vzc0VudW0ge1xuXHRWSUVXID0gMSxcblx0RURJVCA9IDIsXG59Il19
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
export var PropertyOwnerStatusEnum;
|
|
2
|
-
(function (PropertyOwnerStatusEnum) {
|
|
3
|
-
PropertyOwnerStatusEnum[PropertyOwnerStatusEnum["PENDING"] = 1] = "PENDING";
|
|
4
|
-
PropertyOwnerStatusEnum[PropertyOwnerStatusEnum["APPROVED"] = 2] = "APPROVED";
|
|
5
|
-
PropertyOwnerStatusEnum[PropertyOwnerStatusEnum["REJECTED"] = 3] = "REJECTED";
|
|
6
|
-
})(PropertyOwnerStatusEnum || (PropertyOwnerStatusEnum = {}));
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHktb3duZXItc3RhdHVzLmVudW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dC1jb3JlL3NyYy9saWIvZGIvRW51bXMvcHJvcGVydHkvcHJvcGVydHktb3duZXItc3RhdHVzLmVudW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFOLElBQVksdUJBSVg7QUFKRCxXQUFZLHVCQUF1QjtJQUNsQywyRUFBVyxDQUFBO0lBQ1gsNkVBQVksQ0FBQTtJQUNaLDZFQUFZLENBQUE7QUFDYixDQUFDLEVBSlcsdUJBQXVCLEtBQXZCLHVCQUF1QixRQUlsQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIFByb3BlcnR5T3duZXJTdGF0dXNFbnVtIHtcblx0UEVORElORyA9IDEsXG5cdEFQUFJPVkVEID0gMixcblx0UkVKRUNURUQgPSAzLFxufSJdfQ==
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
export class PropertyOwner {
|
|
2
|
-
}
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHktb3duZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dC1jb3JlL3NyYy9saWIvZGIvTW9kZWxzL3Byb3BlcnR5L3Byb3BlcnR5LW93bmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLE1BQU0sT0FBTyxhQUFhO0NBY3pCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHJvcGVydHlPd25lclN0YXR1c0VudW0gfSBmcm9tICcuLi8uLi9FbnVtcy9wcm9wZXJ0eS9wcm9wZXJ0eS1vd25lci1zdGF0dXMuZW51bSc7XG5pbXBvcnQgeyBQcm9wZXJ0eU93bmVyQWNjZXNzRW51bSB9IGZyb20gJy4uLy4uL0VudW1zL3Byb3BlcnR5L3Byb3BlcnR5LW93bmVyLWFjY2Vzcy5lbnVtJztcbmltcG9ydCB7IFByb3BlcnR5IH0gZnJvbSAnLi9wcm9wZXJ0eSc7XG5pbXBvcnQgeyBVc2VyIH0gZnJvbSAnLi4vdXNlcic7XG5pbXBvcnQgeyBSZWdpc3RyYXRpb25JbnZpdGUgfSBmcm9tICcuLi9yZWdpc3RyYXRpb24taW52aXRlJztcblxuZXhwb3J0IGNsYXNzIFByb3BlcnR5T3duZXIge1xuICBpZD86IG51bWJlcjtcbiAgZW1haWw/OiBzdHJpbmc7XG4gIGZpcnN0TmFtZT86IHN0cmluZztcbiAgb3duZXJzaGlwUGVyY2VudD86IG51bWJlcjtcbiAgZnJvbURhdGU/OiBEYXRlO1xuICB0b0RhdGU/OiBEYXRlO1xuICBzdGF0dXM/OiBQcm9wZXJ0eU93bmVyU3RhdHVzRW51bTtcbiAgYWNjZXNzPzogUHJvcGVydHlPd25lckFjY2Vzc0VudW07XG4gIGNyZWF0ZWRBdD86IERhdGU7XG4gIHVwZGF0ZWRBdD86IERhdGU7XG4gIHByb3BlcnR5PzogUHJvcGVydHk7XG4gIHVzZXI/OiBVc2VyO1xuICBpbnZpdGU/OiBSZWdpc3RyYXRpb25JbnZpdGU7XG59XG4iXX0=
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Enum with properties ownership filter options
|
|
3
|
-
*/
|
|
4
|
-
export var OwnershipFilterOptionsEnum;
|
|
5
|
-
(function (OwnershipFilterOptionsEnum) {
|
|
6
|
-
OwnershipFilterOptionsEnum[OwnershipFilterOptionsEnum["ALL_PROPERTIES"] = 1] = "ALL_PROPERTIES";
|
|
7
|
-
OwnershipFilterOptionsEnum[OwnershipFilterOptionsEnum["OWN_PROPERTIES"] = 2] = "OWN_PROPERTIES";
|
|
8
|
-
OwnershipFilterOptionsEnum[OwnershipFilterOptionsEnum["SHARED_PROPERTIES"] = 3] = "SHARED_PROPERTIES";
|
|
9
|
-
})(OwnershipFilterOptionsEnum || (OwnershipFilterOptionsEnum = {}));
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3duZXJzaGlwLWZpbHRlci1vcHRpb25zLmVudW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dC1jb3JlL3NyYy9saWIvbW9kZWxzL3Byb3BlcnR5L293bmVyc2hpcC1maWx0ZXItb3B0aW9ucy5lbnVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFOLElBQVksMEJBSVg7QUFKRCxXQUFZLDBCQUEwQjtJQUNwQywrRkFBa0IsQ0FBQTtJQUNsQiwrRkFBa0IsQ0FBQTtJQUNsQixxR0FBcUIsQ0FBQTtBQUN2QixDQUFDLEVBSlcsMEJBQTBCLEtBQTFCLDBCQUEwQixRQUlyQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogRW51bSB3aXRoIHByb3BlcnRpZXMgb3duZXJzaGlwIGZpbHRlciBvcHRpb25zXG4gKi9cbmV4cG9ydCBlbnVtIE93bmVyc2hpcEZpbHRlck9wdGlvbnNFbnVtIHtcbiAgQUxMX1BST1BFUlRJRVMgPSAxLFxuICBPV05fUFJPUEVSVElFUyA9IDIsXG4gIFNIQVJFRF9QUk9QRVJUSUVTID0gM1xufVxuIl19
|
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
import { Inject, Injectable } from '@angular/core';
|
|
2
|
-
import { map } from 'rxjs/operators';
|
|
3
|
-
import { replace } from '../../../functions/array';
|
|
4
|
-
import { plainToClass } from 'class-transformer';
|
|
5
|
-
import { PropertyOwner } from '../../../models/property/property-owner';
|
|
6
|
-
import { BaseRestService } from '../../base-rest.service';
|
|
7
|
-
import { AppEvent } from '../../../models/event/app-event';
|
|
8
|
-
import { AppEventTypeEnum } from '../../../models/event/app-event-type.enum';
|
|
9
|
-
import * as i0 from "@angular/core";
|
|
10
|
-
import * as i1 from "@angular/common/http";
|
|
11
|
-
import * as i2 from "../../event/event-dispatcher.service";
|
|
12
|
-
// @TODO check and improve logic during refactoring
|
|
13
|
-
export class PropertyOwnerService extends BaseRestService {
|
|
14
|
-
constructor(http, eventDispatcherService, environment) {
|
|
15
|
-
super(http, eventDispatcherService, environment);
|
|
16
|
-
this.http = http;
|
|
17
|
-
this.eventDispatcherService = eventDispatcherService;
|
|
18
|
-
this.environment = environment;
|
|
19
|
-
// api url parameter for properties co-owners
|
|
20
|
-
this.url = 'properties/co-owners';
|
|
21
|
-
this.modelClass = PropertyOwner;
|
|
22
|
-
this.listenEvents();
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Listen to Event Dispatcher events
|
|
26
|
-
*/
|
|
27
|
-
listenEvents() {
|
|
28
|
-
this.listenUserUpdated();
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Updated loan
|
|
32
|
-
*/
|
|
33
|
-
update(propertyOwner) {
|
|
34
|
-
return this.http.put(`${this.environment.apiV2}/${this.url}/${propertyOwner.id}`, propertyOwner)
|
|
35
|
-
.pipe(map((updatedPropertyOwnerBase) => {
|
|
36
|
-
const updatedPropertyOwner = plainToClass(PropertyOwner, updatedPropertyOwnerBase);
|
|
37
|
-
// if loan type is NOT vehicle - fire EventDispatcher event
|
|
38
|
-
this.eventDispatcherService.dispatch(new AppEvent(AppEventTypeEnum.PROPERTY_OWNER_UPDATED, null));
|
|
39
|
-
replace(this.cache, updatedPropertyOwner);
|
|
40
|
-
this.updateCache();
|
|
41
|
-
return updatedPropertyOwner;
|
|
42
|
-
}));
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Re-invite property owner
|
|
46
|
-
* @param share user to share property
|
|
47
|
-
*/
|
|
48
|
-
reinvite(share) {
|
|
49
|
-
return this.http.post(`${this.environment.apiV2}/${this.url}/${share.id}/reinvite`, {});
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Get incoming property owners list
|
|
53
|
-
*/
|
|
54
|
-
getIncoming() {
|
|
55
|
-
return this.get()
|
|
56
|
-
.pipe(map((propertyOwners) => {
|
|
57
|
-
const propertyOwnersIncoming = [];
|
|
58
|
-
propertyOwners.forEach((propertyOwner) => {
|
|
59
|
-
var _a;
|
|
60
|
-
if (((_a = propertyOwner.user) === null || _a === void 0 ? void 0 : _a.isLoggedIn()) && propertyOwner.isPending() && propertyOwner.property.user.id !== +localStorage.getItem('userId')) {
|
|
61
|
-
propertyOwnersIncoming.push(propertyOwner);
|
|
62
|
-
}
|
|
63
|
-
});
|
|
64
|
-
return propertyOwnersIncoming;
|
|
65
|
-
}));
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* Get outcoming property owners list
|
|
69
|
-
*/
|
|
70
|
-
getOutcoming() {
|
|
71
|
-
return this.get().pipe(map((propertyOwners) => {
|
|
72
|
-
return this.filterOutcoming(propertyOwners);
|
|
73
|
-
}));
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* Filter outcoming property owners
|
|
77
|
-
* @param propertyOwners which should be filtered
|
|
78
|
-
*/
|
|
79
|
-
filterOutcoming(propertyOwners) {
|
|
80
|
-
const propertyOwnersOutcoming = [];
|
|
81
|
-
propertyOwners.forEach((propertyOwner) => {
|
|
82
|
-
var _a;
|
|
83
|
-
if (!((_a = propertyOwner.user) === null || _a === void 0 ? void 0 : _a.isLoggedIn())) {
|
|
84
|
-
propertyOwnersOutcoming.push(propertyOwner);
|
|
85
|
-
}
|
|
86
|
-
});
|
|
87
|
-
return propertyOwnersOutcoming;
|
|
88
|
-
}
|
|
89
|
-
/**
|
|
90
|
-
* Get list of co-owners filtered by property id
|
|
91
|
-
* @param propertyId
|
|
92
|
-
*/
|
|
93
|
-
getByPropertyId(propertyId) {
|
|
94
|
-
return this.get()
|
|
95
|
-
.pipe(map((propertyOwners) => {
|
|
96
|
-
return propertyOwners.filter((propertyOwner) => propertyOwner.property.id === propertyId);
|
|
97
|
-
}));
|
|
98
|
-
}
|
|
99
|
-
/**
|
|
100
|
-
* Listen to User updated event
|
|
101
|
-
*/
|
|
102
|
-
listenUserUpdated() {
|
|
103
|
-
this.eventDispatcherService.on(AppEventTypeEnum.USER_UPDATED)
|
|
104
|
-
.subscribe(() => {
|
|
105
|
-
this.fetch().subscribe((propertyOwners) => {
|
|
106
|
-
this.cache = propertyOwners;
|
|
107
|
-
this.updateCache();
|
|
108
|
-
});
|
|
109
|
-
});
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
PropertyOwnerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: PropertyOwnerService, deps: [{ token: i1.HttpClient }, { token: i2.EventDispatcherService }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
113
|
-
PropertyOwnerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: PropertyOwnerService, providedIn: 'root' });
|
|
114
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: PropertyOwnerService, decorators: [{
|
|
115
|
-
type: Injectable,
|
|
116
|
-
args: [{
|
|
117
|
-
providedIn: 'root'
|
|
118
|
-
}]
|
|
119
|
-
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.EventDispatcherService }, { type: undefined, decorators: [{
|
|
120
|
-
type: Inject,
|
|
121
|
-
args: ['environment']
|
|
122
|
-
}] }]; } });
|
|
123
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvcGVydHktb3duZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R0LWNvcmUvc3JjL2xpYi9zZXJ2aWNlcy9wcm9wZXJ0eS9wcm9wZXJ0eS1vd25lci9wcm9wZXJ0eS1vd25lci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUdyQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFbkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRWpELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUN4RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDMUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzNELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJDQUEyQyxDQUFDOzs7O0FBRTdFLG1EQUFtRDtBQUluRCxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsZUFBaUQ7SUFLekYsWUFDWSxJQUFnQixFQUNoQixzQkFBOEMsRUFDdkIsV0FBZ0I7UUFFakQsS0FBSyxDQUFDLElBQUksRUFBRSxzQkFBc0IsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUp2QyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBd0I7UUFDdkIsZ0JBQVcsR0FBWCxXQUFXLENBQUs7UUFQbkQsNkNBQTZDO1FBQzdDLFFBQUcsR0FBVyxzQkFBc0IsQ0FBQztRQUNyQyxlQUFVLEdBQUcsYUFBYSxDQUFDO1FBUXpCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lB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QStCLEVBQUUsRUFBRTtZQUN4QyxPQUFPLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxhQUE0QixFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLEVBQUUsS0FBSyxVQUFVLENBQUMsQ0FBQztRQUMzRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ1IsQ0FBQztJQUVEOztPQUVHO0lBQ0ssaUJBQWlCO1FBQ3ZCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxDQUFDO2FBQzFELFNBQVMsQ0FBQyxHQUFTLEVBQUU7WUFDcEIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLGNBQStCLEVBQUUsRUFBRTtnQkFDekQsSUFBSSxDQUFDLEtBQUssR0FBRyxjQUFjLENBQUM7Z0JBQzVCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyQixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7a0hBbkhVLG9CQUFvQixrRkFRckIsYUFBYTtzSEFSWixvQkFBb0IsY0FGbkIsTUFBTTs0RkFFUCxvQkFBb0I7a0JBSGhDLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzswQkFTSSxNQUFNOzJCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFByb3BlcnR5T3duZXIgYXMgUHJvcGVydHlPd25lckJhc2UgfSBmcm9tICcuLi8uLi8uLi9kYi9Nb2RlbHMvcHJvcGVydHkvcHJvcGVydHktb3duZXInO1xuaW1wb3J0IHsgcmVwbGFjZSB9IGZyb20gJy4uLy4uLy4uL2Z1bmN0aW9ucy9hcnJheSc7XG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgcGxhaW5Ub0NsYXNzIH0gZnJvbSAnY2xhc3MtdHJhbnNmb3JtZXInO1xuaW1wb3J0IHsgRXZlbnREaXNwYXRjaGVyU2VydmljZSB9IGZyb20gJy4uLy4uL2V2ZW50L2V2ZW50LWRpc3BhdGNoZXIuc2VydmljZSc7XG5pbXBvcnQgeyBQcm9wZXJ0eU93bmVyIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL3Byb3BlcnR5L3Byb3BlcnR5LW93bmVyJztcbmltcG9ydCB7IEJhc2VSZXN0U2VydmljZSB9IGZyb20gJy4uLy4uL2Jhc2UtcmVzdC5zZXJ2aWNlJztcbmltcG9ydCB7IEFwcEV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2V2ZW50L2FwcC1ldmVudCc7XG5pbXBvcnQgeyBBcHBFdmVudFR5cGVFbnVtIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2V2ZW50L2FwcC1ldmVudC10eXBlLmVudW0nO1xuXG4vLyBAVE9ETyBjaGVjayBhbmQgaW1wcm92ZSBsb2dpYyBkdXJpbmcgcmVmYWN0b3JpbmdcbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFByb3BlcnR5T3duZXJTZXJ2aWNlIGV4dGVuZHMgQmFzZVJlc3RTZXJ2aWNlPFByb3BlcnR5T3duZXJCYXNlLCBQcm9wZXJ0eU93bmVyPiB7XG4gIC8vIGFwaSB1cmwgcGFyYW1ldGVyIGZvciBwcm9wZXJ0aWVzIGNvLW93bmVyc1xuICB1cmw6IHN0cmluZyA9ICdwcm9wZXJ0aWVzL2NvLW93bmVycyc7XG4gIG1vZGVsQ2xhc3MgPSBQcm9wZXJ0eU93bmVyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCBodHRwOiBIdHRwQ2xpZW50LFxuICAgIHByb3RlY3RlZCBldmVudERpc3BhdGNoZXJTZXJ2aWNlOiBFdmVudERpc3BhdGNoZXJTZXJ2aWNlLFxuICAgIEBJbmplY3QoJ2Vudmlyb25tZW50JykgcHJvdGVjdGVkIGVudmlyb25tZW50OiBhbnlcbiAgKSB7XG4gICAgc3VwZXIoaHR0cCwgZXZlbnREaXNwYXRjaGVyU2VydmljZSwgZW52aXJvbm1lbnQpO1xuICAgIHRoaXMubGlzdGVuRXZlbnRzKCk7XG4gIH1cblxuICAvKipcbiAgICogTGlzdGVuIHRvIEV2ZW50IERpc3BhdGNoZXIgZXZlbnRzXG4gICAqL1xuICBsaXN0ZW5FdmVudHMoKTogdm9pZCB7XG4gICAgdGhpcy5saXN0ZW5Vc2VyVXBkYXRlZCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZWQgbG9hblxuICAgKi9cbiAgdXBkYXRlKHByb3BlcnR5T3duZXI6IFByb3BlcnR5T3duZXIpOiBPYnNlcnZhYmxlPFByb3BlcnR5T3duZXI+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dChgJHt0aGlzLmVudmlyb25tZW50LmFwaVYyfS8ke3RoaXMudXJsfS8ke3Byb3BlcnR5T3duZXIuaWR9YCwgcHJvcGVydHlPd25lcilcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHVwZGF0ZWRQcm9wZXJ0eU93bmVyQmFzZTogUHJvcGVydHlPd25lckJhc2UpID0+IHtcbiAgICAgICAgICBjb25zdCB1cGRhdGVkUHJvcGVydHlPd25lcjogUHJvcGVydHlPd25lciA9IHBsYWluVG9DbGFzcyhQcm9wZXJ0eU93bmVyLCB1cGRhdGVkUHJvcGVydHlPd25lckJhc2UpO1xuICAgICAgICAgIC8vIGlmIGxvYW4gdHlwZSBpcyBOT1QgdmVoaWNsZSAtIGZpcmUgRXZlbnREaXNwYXRjaGVyIGV2ZW50XG4gICAgICAgICAgdGhpcy5ldmVudERpc3BhdGNoZXJTZXJ2aWNlLmRpc3BhdGNoKG5ldyBBcHBFdmVudChBcHBFdmVudFR5cGVFbnVtLlBST1BFUlRZX09XTkVSX1VQREFURUQsIG51bGwpKTtcblxuICAgICAgICAgIHJlcGxhY2UodGhpcy5jYWNoZSwgdXBkYXRlZFByb3BlcnR5T3duZXIpO1xuICAgICAgICAgIHRoaXMudXBkYXRlQ2FjaGUoKTtcbiAgICAgICAgICByZXR1cm4gdXBkYXRlZFByb3BlcnR5T3duZXI7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlLWludml0ZSBwcm9wZXJ0eSBvd25lclxuICAgKiBAcGFyYW0gc2hhcmUgdXNlciB0byBzaGFyZSBwcm9wZXJ0eVxuICAgKi9cbiAgcmVpbnZpdGUoc2hhcmU6IFByb3BlcnR5T3duZXIpOiBPYnNlcnZhYmxlPG9iamVjdD4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLmVudmlyb25tZW50LmFwaVYyfS8ke3RoaXMudXJsfS8ke3NoYXJlLmlkfS9yZWludml0ZWAsIHt9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgaW5jb21pbmcgcHJvcGVydHkgb3duZXJzIGxpc3RcbiAgICovXG4gIGdldEluY29taW5nKCk6IE9ic2VydmFibGU8UHJvcGVydHlPd25lcltdPiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0KClcbiAgICAgIC5waXBlKG1hcCgocHJvcGVydHlPd25lcnM6IFByb3BlcnR5T3duZXJbXSkgPT4ge1xuICAgICAgICBjb25zdCBwcm9wZXJ0eU93bmVyc0luY29taW5nOiBQcm9wZXJ0eU93bmVyW10gPSBbXTtcblxuICAgICAgICBwcm9wZXJ0eU93bmVycy5mb3JFYWNoKChwcm9wZXJ0eU93bmVyOiBQcm9wZXJ0eU93bmVyKSA9PiB7XG4gICAgICAgICAgaWYgKHByb3BlcnR5T3duZXIudXNlcj8uaXNMb2dnZWRJbigpICYmIHByb3BlcnR5T3duZXIuaXNQZW5kaW5nKCkgJiYgcHJvcGVydHlPd25lci5wcm9wZXJ0eS51c2VyLmlkICE9PSArbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3VzZXJJZCcpKSB7XG4gICAgICAgICAgICBwcm9wZXJ0eU93bmVyc0luY29taW5nLnB1c2gocHJvcGVydHlPd25lcik7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gcHJvcGVydHlPd25lcnNJbmNvbWluZztcbiAgICAgIH0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgb3V0Y29taW5nIHByb3BlcnR5IG93bmVycyBsaXN0XG4gICAqL1xuICBnZXRPdXRjb21pbmcoKTogT2JzZXJ2YWJsZTxQcm9wZXJ0eU93bmVyW10+IHtcbiAgICByZXR1cm4gdGhpcy5nZXQoKS5waXBlKFxuICAgICAgbWFwKChwcm9wZXJ0eU93bmVyczogUHJvcGVydHlPd25lcltdKTogUHJvcGVydHlPd25lcltdID0+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyT3V0Y29taW5nKHByb3BlcnR5T3duZXJzKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaWx0ZXIgb3V0Y29taW5nIHByb3BlcnR5IG93bmVyc1xuICAgKiBAcGFyYW0gcHJvcGVydHlPd25lcnMgd2hpY2ggc2hvdWxkIGJlIGZpbHRlcmVkXG4gICAqL1xuICBmaWx0ZXJPdXRjb21pbmcocHJvcGVydHlPd25lcnM6IFByb3BlcnR5T3duZXJbXSk6IFByb3BlcnR5T3duZXJbXSB7XG4gICAgY29uc3QgcHJvcGVydHlPd25lcnNPdXRjb21pbmc6IFByb3BlcnR5T3duZXJbXSA9IFtdO1xuXG4gICAgcHJvcGVydHlPd25lcnMuZm9yRWFjaCgocHJvcGVydHlPd25lcjogUHJvcGVydHlPd25lcikgPT4ge1xuICAgICAgaWYgKCFwcm9wZXJ0eU93bmVyLnVzZXI/LmlzTG9nZ2VkSW4oKSkge1xuICAgICAgICBwcm9wZXJ0eU93bmVyc091dGNvbWluZy5wdXNoKHByb3BlcnR5T3duZXIpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHByb3BlcnR5T3duZXJzT3V0Y29taW5nO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBsaXN0IG9mIGNvLW93bmVycyBmaWx0ZXJlZCBieSBwcm9wZXJ0eSBpZFxuICAgKiBAcGFyYW0gcHJvcGVydHlJZFxuICAgKi9cbiAgZ2V0QnlQcm9wZXJ0eUlkKHByb3BlcnR5SWQ6IG51bWJlcik6IE9ic2VydmFibGU8UHJvcGVydHlPd25lcltdPiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0KClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHByb3BlcnR5T3duZXJzOiBQcm9wZXJ0eU93bmVyW10pID0+IHtcbiAgICAgICAgcmV0dXJuIHByb3BlcnR5T3duZXJzLmZpbHRlcigocHJvcGVydHlPd25lcjogUHJvcGVydHlPd25lcikgPT4gcHJvcGVydHlPd25lci5wcm9wZXJ0eS5pZCA9PT0gcHJvcGVydHlJZCk7XG4gICAgICB9KSk7XG4gIH1cblxuICAvKipcbiAgICogTGlzdGVuIHRvIFVzZXIgdXBkYXRlZCBldmVudFxuICAgKi9cbiAgcHJpdmF0ZSBsaXN0ZW5Vc2VyVXBkYXRlZCgpOiB2b2lkIHtcbiAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlclNlcnZpY2Uub24oQXBwRXZlbnRUeXBlRW51bS5VU0VSX1VQREFURUQpXG4gICAgICAuc3Vic2NyaWJlKCgpOiB2b2lkID0+IHtcbiAgICAgICAgdGhpcy5mZXRjaCgpLnN1YnNjcmliZSgocHJvcGVydHlPd25lcnM6IFByb3BlcnR5T3duZXJbXSkgPT4ge1xuICAgICAgICAgIHRoaXMuY2FjaGUgPSBwcm9wZXJ0eU93bmVycztcbiAgICAgICAgICB0aGlzLnVwZGF0ZUNhY2hlKCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gIH1cbn1cbiJdfQ==
|