taxtank-core 0.28.36 → 0.28.37

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.
@@ -0,0 +1,11 @@
1
+ const phonePattern = /^(((\s*)?([- ()]?\d[- ()]?){0,30}(\s*)?)|)$/;
2
+ /**
3
+ * Validator for phone number
4
+ * Allowed special symbols"-", "(", ")"
5
+ */
6
+ export function phoneNumberValidator() {
7
+ return (control) => {
8
+ return phonePattern.test(control.value) ? null : { phoneInvalid: true };
9
+ };
10
+ }
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvbmUtbnVtYmVyLnZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R0LWNvcmUvc3JjL2xpYi92YWxpZGF0b3JzL3Bob25lLW51bWJlci52YWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxZQUFZLEdBQVcsNkNBQTZDLENBQUM7QUFFM0U7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLG9CQUFvQjtJQUNsQyxPQUFPLENBQUMsT0FBb0IsRUFBRSxFQUFFO1FBQzlCLE9BQU8sWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBQyxZQUFZLEVBQUUsSUFBSSxFQUFDLENBQUM7SUFDeEUsQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvcm1Db250cm9sLCBWYWxpZGF0b3JGbiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuY29uc3QgcGhvbmVQYXR0ZXJuOiBSZWdFeHAgPSAvXigoKFxccyopPyhbLSAoKV0/XFxkWy0gKCldPyl7MCwzMH0oXFxzKik/KXwpJC87XG5cbi8qKlxuICogVmFsaWRhdG9yIGZvciBwaG9uZSBudW1iZXJcbiAqIEFsbG93ZWQgc3BlY2lhbCBzeW1ib2xzXCItXCIsIFwiKFwiLCBcIilcIlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGhvbmVOdW1iZXJWYWxpZGF0b3IoKTogVmFsaWRhdG9yRm4ge1xuICByZXR1cm4gKGNvbnRyb2w6IEZvcm1Db250cm9sKSA9PiB7XG4gICAgcmV0dXJuIHBob25lUGF0dGVybi50ZXN0KGNvbnRyb2wudmFsdWUpID8gbnVsbCA6IHtwaG9uZUludmFsaWQ6IHRydWV9O1xuICB9O1xufVxuIl19
@@ -4,8 +4,8 @@ import * as i1$1 from '@angular/common';
4
4
  import { CommonModule, DatePipe } from '@angular/common';
5
5
  import * as i1 from '@angular/common/http';
6
6
  import { HttpParams, HttpErrorResponse, HTTP_INTERCEPTORS } from '@angular/common/http';
7
+ import { map, mergeMap, filter, catchError, take, switchMap, finalize, skip, distinctUntilChanged, debounceTime } from 'rxjs/operators';
7
8
  import { ReplaySubject, Subject, BehaviorSubject, throwError, Observable, of, combineLatest, forkJoin, from } from 'rxjs';
8
- import { map, filter, catchError, take, switchMap, finalize, mergeMap, skip, distinctUntilChanged } from 'rxjs/operators';
9
9
  import { plainToClass, classToPlain, Type, Transform, Expose, Exclude } from 'class-transformer';
10
10
  import { JwtHelperService } from '@auth0/angular-jwt';
11
11
  import get from 'lodash/get';
@@ -92,28 +92,26 @@ class CorelogicInterceptor {
92
92
  this.corelogicService = corelogicService;
93
93
  this.environment = environment;
94
94
  }
95
- /**
96
- * Check if requested url requested core logic, but not core logic auth api
97
- * @param req
98
- */
99
- addToken(req) {
100
- // don't need token for this endpoint
101
- if (req.url.includes(`${this.environment.coreLogicUrl}/access/oauth/token`)) {
102
- return req;
95
+ intercept(request, next) {
96
+ // skip non-corelogic requests
97
+ if (!request.url.includes(this.environment.coreLogicUrl)) {
98
+ return next.handle(request);
103
99
  }
104
- // add core logic token to request headers
105
- if (req.url.includes(this.environment.coreLogicUrl)) {
106
- return req.clone({
107
- setHeaders: {
108
- Authorization: 'Bearer ' + this.corelogicService._accessToken
109
- }
110
- });
100
+ // don't need token for this endpoint
101
+ if (request.url.includes(`${this.environment.coreLogicUrl}/access/oauth/token`)) {
102
+ return next.handle(request);
111
103
  }
112
- // return request without changes if url not related with core logic
113
- return req;
104
+ return this.corelogicService.getAccessToken()
105
+ .pipe(mergeMap((token) => {
106
+ return next.handle(this.addToken(request, token));
107
+ }));
114
108
  }
115
- intercept(request, next) {
116
- return next.handle(this.addToken(request));
109
+ addToken(request, token) {
110
+ return request.clone({
111
+ setHeaders: {
112
+ Authorization: 'Bearer ' + token
113
+ }
114
+ });
117
115
  }
118
116
  }
119
117
  CorelogicInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: CorelogicInterceptor, deps: [{ token: CorelogicService }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable });
@@ -610,6 +608,7 @@ const ENDPOINTS = {
610
608
  CLIENT_MOVEMENTS_GET: new Endpoint('GET', '\\/client-movements'),
611
609
  CLIENT_MOVEMENTS_POST: new Endpoint('POST', '\\/client-movements'),
612
610
  COUNTRIES_GET: new Endpoint('GET', '\\/countries'),
611
+ CORELOGIC_TOKEN_GET: new Endpoint('GET', '/access\\/oauth\\/token.*$'),
613
612
  DEPRECIATIONS_OPENING_GET: new Endpoint('GET', '\\/depreciations\\/\\opening-balance\.\*'),
614
613
  DEPRECIATIONS_GET: new Endpoint('GET', '\\/depreciations'),
615
614
  DEPRECIATIONS_POST: new Endpoint('POST', '\\/depreciations'),
@@ -1973,6 +1972,7 @@ class Country extends Country$1 {
1973
1972
  return this.callingCode === '61';
1974
1973
  }
1975
1974
  }
1975
+ Country.australia = plainToClass(Country, { id: 14, name: 'Australia', callingCode: '61' });
1976
1976
 
1977
1977
  var AddressTypeEnum;
1978
1978
  (function (AddressTypeEnum) {
@@ -1992,7 +1992,7 @@ class Address extends Address$1 {
1992
1992
  return `${this.unitNumber ? this.unitNumber + '/' : ''}${this.address}`;
1993
1993
  }
1994
1994
  get nameLong() {
1995
- return `${this.name}, ${this.city}, ${this.state}`;
1995
+ return `${this.name} ${this.city} ${this.state} ${this.postcode}`;
1996
1996
  }
1997
1997
  }
1998
1998
  __decorate([
@@ -2029,12 +2029,16 @@ var PhoneTypeEnum;
2029
2029
  class Phone extends Phone$1 {
2030
2030
  constructor() {
2031
2031
  super(...arguments);
2032
+ this.country = Country.australia;
2032
2033
  this.type = PhoneTypeEnum.MOBILE;
2033
2034
  }
2034
2035
  toString() {
2035
2036
  return `+${this.country.callingCode} ${this.number}`;
2036
2037
  }
2037
2038
  }
2039
+ __decorate([
2040
+ Type(() => Country)
2041
+ ], Phone.prototype, "country", void 0);
2038
2042
 
2039
2043
  class Firm extends Firm$1 {
2040
2044
  /**
@@ -14749,87 +14753,6 @@ class AbstractForm extends FormGroup {
14749
14753
  }
14750
14754
  }
14751
14755
 
14752
- /**
14753
- * Form with loan details.
14754
- * Loan could be created from bank account (Bank Loan) or directly from loan page (Vehicle Loan)
14755
- */
14756
- class LoanForm extends AbstractForm {
14757
- constructor(loan = plainToClass(Loan, {})) {
14758
- super({
14759
- type: new FormControl(loan.type, Validators.required),
14760
- amount: new FormControl(loan.amount, Validators.required),
14761
- interestRate: new FormControl(loan.interestRate, [Validators.required, Validators.min(0), Validators.max(100)]),
14762
- commencementDate: new FormControl(loan.commencementDate, Validators.required),
14763
- repaymentAmount: new FormControl(loan.repaymentAmount, Validators.required),
14764
- repaymentFrequency: new FormControl(loan.repaymentFrequency, Validators.required),
14765
- term: new FormControl(loan.term, Validators.required),
14766
- // interestType is predefined for vehicle loans
14767
- interestType: new FormControl({ value: loan.interestType, disabled: !loan.bankAccount }, Validators.required),
14768
- // availableRedraw is predefined for vehicle loans
14769
- availableRedraw: new FormControl({ value: loan.availableRedraw, disabled: !loan.bankAccount }, Validators.required),
14770
- // repaymentType is predefined for vehicle loans
14771
- repaymentType: new FormControl({ value: loan.repaymentType, disabled: !loan.bankAccount }, Validators.required),
14772
- }, loan);
14773
- this.loan = loan;
14774
- // Set data which always the same for vehicle loans
14775
- if (!loan.bankAccount) {
14776
- Object.assign(this.model, {
14777
- repaymentType: LoanRepaymentTypeEnum.PRINCIPAL_AND_INTEREST,
14778
- availableRedraw: 0,
14779
- interestType: LoanInterestTypeEnum.FIXED_RATE
14780
- });
14781
- }
14782
- this.updateTermValidation();
14783
- this.listenEvents();
14784
- }
14785
- listenEvents() {
14786
- // We need to set term automatically only for bank loans.
14787
- // For vehicle loans user should fill it manually with validation depended of frequency
14788
- if (!!this.loan.bankAccount) {
14789
- this.listenTypeChanges();
14790
- }
14791
- else {
14792
- this.listenRepaymentFrequencyChanges();
14793
- }
14794
- }
14795
- /**
14796
- * Set term automatically by loan type changes
14797
- */
14798
- listenTypeChanges() {
14799
- this.get('type').valueChanges.subscribe((type) => {
14800
- this.get('term').setValue(LoanForm.mortgageLoanTypes.includes(type) ? Loan.mortgageDefaultTerm : Loan.loanDefaultTerm);
14801
- });
14802
- }
14803
- /**
14804
- * term validation depends on selected repaymentFrequency
14805
- */
14806
- listenRepaymentFrequencyChanges() {
14807
- this.get('repaymentFrequency').valueChanges.subscribe(() => {
14808
- this.updateTermValidation();
14809
- });
14810
- }
14811
- /**
14812
- * For vehicle loans term has a maximum value depended of repayment frequency
14813
- */
14814
- updateTermValidation() {
14815
- // no need terms for bank loans
14816
- if (!!this.loan.bankAccount) {
14817
- return;
14818
- }
14819
- const currentRepaymentFrequency = this.get('repaymentFrequency').value;
14820
- // term validation depends on selected repayment frequency, so can not validate when frequency is empty
14821
- // repaymentType is required field, so we don't need to clear validation
14822
- if (!currentRepaymentFrequency) {
14823
- return;
14824
- }
14825
- const termControl = this.get('term');
14826
- const maxTermValue = LoanMaxNumberOfPaymentsEnum[LoanRepaymentFrequencyEnum[currentRepaymentFrequency]];
14827
- termControl.setValidators([Validators.max(maxTermValue)]);
14828
- termControl.updateValueAndValidity();
14829
- }
14830
- }
14831
- LoanForm.mortgageLoanTypes = [LoanTypeEnum.MORTGAGE, LoanTypeEnum.HOME_EQUITY_LINE_OF_CREDIT, LoanTypeEnum.HOME_LOAN];
14832
-
14833
14756
  /**
14834
14757
  * Check if at least one form field is true, otherwise form is invalid.
14835
14758
  * Use with groups of boolean form controls (checkbox, toggle, etc.)
@@ -14960,6 +14883,242 @@ function fieldsSumValidator(field, summary = 100, fieldAlias) {
14960
14883
  };
14961
14884
  }
14962
14885
 
14886
+ /**
14887
+ * Validator for address, check if corelogic suggestion selected correctly
14888
+ */
14889
+ function addressCorelogicValidator() {
14890
+ return (form) => {
14891
+ if (form.isCorelogicRequired) {
14892
+ if (form.get('corelogicLocId').hasError('required')) {
14893
+ return { address: 'Street, city, state or postal code not specified' };
14894
+ }
14895
+ if (form.get('corelogicRefId').hasError('required')) {
14896
+ return { address: 'Unit/House number not specified' };
14897
+ }
14898
+ }
14899
+ return null;
14900
+ };
14901
+ }
14902
+
14903
+ /**
14904
+ * Address form. Works with corelogic or manual address
14905
+ */
14906
+ class AddressForm extends AbstractForm {
14907
+ /**
14908
+ * @param address instance which should be created/edited
14909
+ * @param isCorelogicRequired for example, for property we need corelogic location even for manual address,
14910
+ * so we have to search corelogic location based on manual fields values
14911
+ */
14912
+ constructor(address = plainToClass(Address, {}), isCorelogicRequired = false) {
14913
+ super({
14914
+ // prefill search input with address string for edit case
14915
+ searchQuery: new FormControl(address.address ? address.nameLong : null, Validators.required),
14916
+ type: new FormControl(address.type | AddressTypeEnum.STREET, Validators.required),
14917
+ // Corelogic fields
14918
+ corelogicLocId: new FormControl(address.corelogicLocId, conditionalValidator(() => isCorelogicRequired, Validators.required)),
14919
+ corelogicRefId: new FormControl(address.corelogicRefId, conditionalValidator(() => isCorelogicRequired, Validators.required)),
14920
+ // manual fields
14921
+ unitNumber: new FormControl({ value: address.unitNumber, disabled: true }),
14922
+ address: new FormControl({ value: address.address, disabled: true }, Validators.required),
14923
+ city: new FormControl({ value: address.city, disabled: true }, Validators.required),
14924
+ state: new FormControl({ value: address.state, disabled: true }, Validators.required),
14925
+ postcode: new FormControl({ value: address.postcode, disabled: true }, Validators.required),
14926
+ country: new FormControl({ value: address.country || Country.australia, disabled: true }, conditionalValidator(() => !isCorelogicRequired, Validators.required))
14927
+ }, address, addressCorelogicValidator());
14928
+ this.isCorelogicRequired = isCorelogicRequired;
14929
+ /**
14930
+ * Emit event to search address in corelogic when user filled enough data for corelogic
14931
+ */
14932
+ this.onSearch = new EventEmitter();
14933
+ this.listenEvents();
14934
+ }
14935
+ /**
14936
+ * Get search query for corelogic location search based on manual fields values
14937
+ */
14938
+ get manualSearchQuery() {
14939
+ if (!this.isManualSearchAvailable()) {
14940
+ return '';
14941
+ }
14942
+ return this.currentValue.nameLong;
14943
+ }
14944
+ listenEvents() {
14945
+ this.listenSearchQueryChanges();
14946
+ // no need to search corelogic locality when corelogic is not required
14947
+ if (this.isCorelogicRequired) {
14948
+ this.listenManualFieldsChanges();
14949
+ }
14950
+ }
14951
+ /**
14952
+ * Handle corelogic suggestion select
14953
+ */
14954
+ onSelectSuggestion(suggestion) {
14955
+ // if no suggestion then 'Add manually' option selected
14956
+ if (!suggestion) {
14957
+ this.switchToManual();
14958
+ return;
14959
+ }
14960
+ this.patchValue({
14961
+ corelogicLocId: suggestion.localityId,
14962
+ corelogicRefId: suggestion.propertyId
14963
+ });
14964
+ }
14965
+ /**
14966
+ * Enable manual mode
14967
+ */
14968
+ switchToManual() {
14969
+ this.isManual = true;
14970
+ this.get('searchQuery').disable();
14971
+ this.get('address').enable();
14972
+ this.get('unitNumber').enable();
14973
+ this.get('city').enable();
14974
+ this.get('state').enable();
14975
+ this.get('postcode').enable();
14976
+ if (!this.isCorelogicRequired) {
14977
+ this.get('country').enable();
14978
+ this.get('corelogicLocId').disable();
14979
+ this.get('corelogicRefId').disable();
14980
+ }
14981
+ }
14982
+ /**
14983
+ * Emit event to search address in corelogic when search field changes
14984
+ */
14985
+ listenSearchQueryChanges() {
14986
+ this.get('searchQuery').valueChanges
14987
+ .pipe(
14988
+ // delay to avoid search request for each value change
14989
+ debounceTime(AddressForm.searchDelay),
14990
+ // skip when value not changed
14991
+ distinctUntilChanged(),
14992
+ // value could be a string when user search and suggestion when user select option from autocomplete
14993
+ map((value) => {
14994
+ // no need to search when value is not actually search string
14995
+ if (!value || value instanceof CorelogicSuggestion) {
14996
+ return '';
14997
+ }
14998
+ // trim to avoid spaces in searchQuery, we should not send request started or finished with spaces
14999
+ // uppercase to make search string similar to corelogic format
15000
+ return value.trim();
15001
+ }),
15002
+ // do nothing when query is too short
15003
+ filter((searchQuery) => searchQuery.length >= AddressForm.minSearchLength))
15004
+ .subscribe((searchQuery) => {
15005
+ this.onSearch.emit(searchQuery);
15006
+ });
15007
+ }
15008
+ /**
15009
+ * Check if all fields required for manual corelogic search are filled before request sending
15010
+ */
15011
+ isManualSearchAvailable() {
15012
+ return this.get('address').valid && this.get('city').valid && this.get('state').valid && this.get('postcode').valid;
15013
+ }
15014
+ /**
15015
+ * When corelogic is required we have to search address even for manual address
15016
+ */
15017
+ listenManualFieldsChanges() {
15018
+ // subscribe to whole form because no other fields may be changed in this case except manual address fields we need
15019
+ this.valueChanges
15020
+ .pipe(
15021
+ // delay to avoid search request for each value change
15022
+ debounceTime(AddressForm.searchDelay),
15023
+ // do nothing when not all required fields filled
15024
+ filter(() => this.isManualSearchAvailable()), map(() => this.manualSearchQuery),
15025
+ // skip when value not changed
15026
+ distinctUntilChanged())
15027
+ .subscribe(() => {
15028
+ this.onSearch.emit(this.manualSearchQuery);
15029
+ });
15030
+ }
15031
+ }
15032
+ /**
15033
+ * Min search query required length
15034
+ */
15035
+ AddressForm.minSearchLength = 3;
15036
+ /**
15037
+ * Delay before corelogic request
15038
+ */
15039
+ AddressForm.searchDelay = 500;
15040
+
15041
+ /**
15042
+ * Form with loan details.
15043
+ * Loan could be created from bank account (Bank Loan) or directly from loan page (Vehicle Loan)
15044
+ */
15045
+ class LoanForm extends AbstractForm {
15046
+ constructor(loan = plainToClass(Loan, {})) {
15047
+ super({
15048
+ type: new FormControl(loan.type, Validators.required),
15049
+ amount: new FormControl(loan.amount, Validators.required),
15050
+ interestRate: new FormControl(loan.interestRate, [Validators.required, Validators.min(0), Validators.max(100)]),
15051
+ commencementDate: new FormControl(loan.commencementDate, Validators.required),
15052
+ repaymentAmount: new FormControl(loan.repaymentAmount, Validators.required),
15053
+ repaymentFrequency: new FormControl(loan.repaymentFrequency, Validators.required),
15054
+ term: new FormControl(loan.term, Validators.required),
15055
+ // interestType is predefined for vehicle loans
15056
+ interestType: new FormControl({ value: loan.interestType, disabled: !loan.bankAccount }, Validators.required),
15057
+ // availableRedraw is predefined for vehicle loans
15058
+ availableRedraw: new FormControl({ value: loan.availableRedraw, disabled: !loan.bankAccount }, Validators.required),
15059
+ // repaymentType is predefined for vehicle loans
15060
+ repaymentType: new FormControl({ value: loan.repaymentType, disabled: !loan.bankAccount }, Validators.required),
15061
+ }, loan);
15062
+ this.loan = loan;
15063
+ // Set data which always the same for vehicle loans
15064
+ if (!loan.bankAccount) {
15065
+ Object.assign(this.model, {
15066
+ repaymentType: LoanRepaymentTypeEnum.PRINCIPAL_AND_INTEREST,
15067
+ availableRedraw: 0,
15068
+ interestType: LoanInterestTypeEnum.FIXED_RATE
15069
+ });
15070
+ }
15071
+ this.updateTermValidation();
15072
+ this.listenEvents();
15073
+ }
15074
+ listenEvents() {
15075
+ // We need to set term automatically only for bank loans.
15076
+ // For vehicle loans user should fill it manually with validation depended of frequency
15077
+ if (!!this.loan.bankAccount) {
15078
+ this.listenTypeChanges();
15079
+ }
15080
+ else {
15081
+ this.listenRepaymentFrequencyChanges();
15082
+ }
15083
+ }
15084
+ /**
15085
+ * Set term automatically by loan type changes
15086
+ */
15087
+ listenTypeChanges() {
15088
+ this.get('type').valueChanges.subscribe((type) => {
15089
+ this.get('term').setValue(LoanForm.mortgageLoanTypes.includes(type) ? Loan.mortgageDefaultTerm : Loan.loanDefaultTerm);
15090
+ });
15091
+ }
15092
+ /**
15093
+ * term validation depends on selected repaymentFrequency
15094
+ */
15095
+ listenRepaymentFrequencyChanges() {
15096
+ this.get('repaymentFrequency').valueChanges.subscribe(() => {
15097
+ this.updateTermValidation();
15098
+ });
15099
+ }
15100
+ /**
15101
+ * For vehicle loans term has a maximum value depended of repayment frequency
15102
+ */
15103
+ updateTermValidation() {
15104
+ // no need terms for bank loans
15105
+ if (!!this.loan.bankAccount) {
15106
+ return;
15107
+ }
15108
+ const currentRepaymentFrequency = this.get('repaymentFrequency').value;
15109
+ // term validation depends on selected repayment frequency, so can not validate when frequency is empty
15110
+ // repaymentType is required field, so we don't need to clear validation
15111
+ if (!currentRepaymentFrequency) {
15112
+ return;
15113
+ }
15114
+ const termControl = this.get('term');
15115
+ const maxTermValue = LoanMaxNumberOfPaymentsEnum[LoanRepaymentFrequencyEnum[currentRepaymentFrequency]];
15116
+ termControl.setValidators([Validators.max(maxTermValue)]);
15117
+ termControl.updateValueAndValidity();
15118
+ }
15119
+ }
15120
+ LoanForm.mortgageLoanTypes = [LoanTypeEnum.MORTGAGE, LoanTypeEnum.HOME_EQUITY_LINE_OF_CREDIT, LoanTypeEnum.HOME_LOAN];
15121
+
14963
15122
  /**
14964
15123
  * Form array with bank account properties
14965
15124
  * @TODO create AbstractFormArray
@@ -15167,6 +15326,27 @@ class SoleBusinessLossForm extends AbstractForm {
15167
15326
  }
15168
15327
  }
15169
15328
 
15329
+ const phonePattern = /^(((\s*)?([- ()]?\d[- ()]?){0,30}(\s*)?)|)$/;
15330
+ /**
15331
+ * Validator for phone number
15332
+ * Allowed special symbols"-", "(", ")"
15333
+ */
15334
+ function phoneNumberValidator() {
15335
+ return (control) => {
15336
+ return phonePattern.test(control.value) ? null : { phoneInvalid: true };
15337
+ };
15338
+ }
15339
+
15340
+ class PhoneForm extends AbstractForm {
15341
+ constructor(phone = plainToClass(Phone, {})) {
15342
+ super({
15343
+ type: new FormControl(phone.type, Validators.required),
15344
+ country: new FormControl(phone.country, Validators.required),
15345
+ number: new FormControl(phone.number, [Validators.required, phoneNumberValidator()])
15346
+ }, phone);
15347
+ }
15348
+ }
15349
+
15170
15350
  class SoleContactForm extends AbstractForm {
15171
15351
  constructor(contact = plainToClass(SoleContact, {})) {
15172
15352
  super({
@@ -15175,10 +15355,8 @@ class SoleContactForm extends AbstractForm {
15175
15355
  firstName: new FormControl(contact.firstName, Validators.required),
15176
15356
  lastName: new FormControl(contact.lastName, Validators.required),
15177
15357
  email: new FormControl(contact.email, [Validators.required, Validators.email]),
15178
- // @TODO Alex: create phone form and phone form control
15179
- phone: new FormControl(contact.phone),
15180
- // @TODO Alex: create address form and address form control
15181
- address: new FormControl(contact.address)
15358
+ phone: new PhoneForm(contact.phone || plainToClass(Phone, {})),
15359
+ address: new AddressForm(contact.address || plainToClass(Address, {}))
15182
15360
  }, contact);
15183
15361
  }
15184
15362
  }
@@ -16303,5 +16481,5 @@ VehicleLogbookForm.maxDescriptionLength = 60;
16303
16481
  * Generated bundle index. Do not edit.
16304
16482
  */
16305
16483
 
16306
- export { AbstractForm, AbstractModel, AccountSetupItem, AccountSetupItemCollection, AccountSetupService, Address, AddressService, AddressTypeEnum, AlphabetColorsEnum, AppEvent, AppEventTypeEnum, AssetEntityTypeEnum, AssetTypeEnum, AssetsService, AuthService, BANK_ACCOUNT_TYPES, Badge, BadgeColorEnum, Bank, BankAccount, BankAccountAddManualForm, BankAccountAllocationForm, BankAccountCalculationService, BankAccountChartData, BankAccountCollection, BankAccountImportForm, BankAccountPropertiesForm, BankAccountProperty, BankAccountService, BankAccountStatusEnum, BankAccountTypeEnum, BankAccountsImportForm, BankConnection, BankConnectionService, BankConnectionStatusEnum, BankExternalStats, BankLoginData, BankLoginForm, BankService, BankTransaction, BankTransactionCalculationService, BankTransactionChartData, BankTransactionCollection, BankTransactionService, BankTransactionSummaryFieldsEnum, BankTransactionTypeEnum, BasiqConfig, BasiqJob, BasiqJobResponse, BasiqJobStep, BasiqService, BasiqToken, BasiqTokenService, BorrowingExpense, BorrowingExpenseLoan, BorrowingExpenseService, CAPITAL_COSTS_ITEMS, CHART_ACCOUNTS_CATEGORIES, CalculationFormItem, CalculationFormTypeEnum, CgtExemptionAndRolloverCodeEnum, ChartAccounts, ChartAccountsCategoryECollection, ChartAccountsCategoryEnum, ChartAccountsCollection, ChartAccountsDepreciation, ChartAccountsDepreciationService, ChartAccountsEtpEnum, ChartAccountsHeading, ChartAccountsHeadingListEnum, ChartAccountsHeadingTaxDeductibleEnum, ChartAccountsHeadingTaxableEnum, ChartAccountsHeadingVehicleListEnum, ChartAccountsListEnum, ChartAccountsMetadata, ChartAccountsMetadataListEnum, ChartAccountsMetadataTypeEnum, ChartAccountsService, ChartAccountsTaxLabelsEnum, ChartAccountsTypeEnum, ChartAccountsValue, ChartData, ChartSerie, Chat, ChatCollection, ChatService, ChatStatusEnum, ChatViewTypeEnum, ClientCollection, ClientDetails, ClientDetailsMedicareExemptionEnum, ClientDetailsWorkDepreciationCalculationEnum, ClientDetailsWorkingHolidayMakerEnum, ClientIncomeTypes, ClientIncomeTypesForm, ClientIncomeTypesService, ClientInvite, ClientInviteCollection, ClientInviteService, ClientInviteStatusEnum, ClientInviteTypeEnum, ClientMovement, ClientMovementCollection, ClientMovementService, ClientPortfolioChartData, ClientPortfolioReport, ClientPortfolioReportCollection, ClientPortfolioReportService, Collection, CollectionDictionary, CorelogicService, CorelogicSuggestion, Country, DEDUCTION_CATEGORIES, DEPRECIATION_GROUPS, DOCUMENT_FILE_TYPES, DeductionClothingTypeEnum, DeductionSelfEducationTypeEnum, Depreciation, DepreciationCalculationEnum, DepreciationCalculationPercentEnum, DepreciationCapitalProject, DepreciationCapitalProjectService, DepreciationCollection, DepreciationForecast, DepreciationForecastCollection, DepreciationGroup, DepreciationGroupEnum, DepreciationGroupItem, DepreciationLvpAssetTypeEnum, DepreciationLvpReportItem, DepreciationLvpReportItemCollection, DepreciationReceipt, DepreciationReceiptService, DepreciationReportItem, DepreciationReportItemCollection, DepreciationService, DepreciationTypeEnum, DepreciationWriteOffAmountEnum, Dictionary, Document, DocumentApiUrlPrefixEnum, DocumentFolder, DocumentFolderService, DocumentService, DocumentTypeEnum, ENDPOINTS, EmployeeCollection, EmployeeDetails, EmployeeInvite, EmployeeInviteService, EmployeeService, Endpoint, EquityPositionChartService, EventDispatcherService, ExportDataTable, ExportFormatEnum, ExportFormatterService, ExportableCollection, FacebookService, FinancialYear, Firm, FirmService, FirmTypeEnum, HeaderTitleService, IconsFileEnum, IncomeAmountTypeEnum, IncomePosition, IncomeSource, IncomeSourceChartData, IncomeSourceCollection, IncomeSourceForecast, IncomeSourceForecastService, IncomeSourceForecastTrustTypeEnum, IncomeSourceService, IncomeSourceType, IncomeSourceTypeEnum, IncomeSourceTypeListOtherEnum, IncomeSourceTypeListSoleEnum, IncomeSourceTypeListWorkEnum, InterceptorsModule, IntercomService, InviteStatusEnum, JwtService, KompassifyService, Loan, LoanBankTypeEnum, LoanCollection, LoanForm, LoanFrequencyEnum, LoanInterestTypeEnum, LoanMaxNumberOfPaymentsEnum, LoanPayment, LoanPaymentCollection, LoanPayout, LoanPayoutTypeEnum, LoanRepaymentFrequencyEnum, LoanRepaymentTypeEnum, LoanService, LoanTypeEnum, LoanVehicleTypeEnum, LogbookBestPeriodService, LogbookPeriod, LoginForm, MODULE_URL_LIST, MONTHS, Message, MessageCollection, MessageDocument, MessageDocumentCollection, MessageDocumentService, MessageService, MonthNameShortEnum, MonthNumberEnum, MyAccountHistory, MyAccountHistoryInitiatedByEnum, MyAccountHistoryStatusEnum, MyAccountHistoryTypeEnum, MyTaxBusinessOrLosses, MyTaxBusinessOrLossesForm, MyTaxCgt, MyTaxCgtForm, MyTaxDeductions, MyTaxDeductionsForm, MyTaxDividends, MyTaxDividendsForm, MyTaxEmployeeShareSchemes, MyTaxEmployeeShareSchemesForm, MyTaxEstimate, MyTaxIncomeStatements, MyTaxIncomeStatementsForm, MyTaxIncomeTests, MyTaxIncomeTestsForm, MyTaxInterest, MyTaxInterestForm, MyTaxLosses, MyTaxLossesForm, MyTaxMedicareForm, MyTaxOffsets, MyTaxOffsetsForm, MyTaxOtherIncome, MyTaxOtherIncomeForm, MyTaxPartnershipsAndTrusts, MyTaxPartnershipsAndTrustsForm, MyTaxRent, MyTaxRentForm, Notification, Occupation, OccupationService, PASSWORD_REGEXPS, PasswordForm, PdfFromDataTableService, PdfFromDomElementService, PdfFromHtmlTableService, PdfOrientationEnum, PdfSettings, Phone, PhoneTypeEnum, PreloaderService, Property, PropertyCalculationService, PropertyCategory, PropertyCategoryListEnum, PropertyCategoryMovement, PropertyCategoryMovementCollection, PropertyCategoryMovementService, PropertyCategoryService, PropertyCollection, PropertyDepreciationCalculationEnum, PropertyDocument, PropertyDocumentService, PropertyEquityChartData, PropertyEquityChartItem, PropertyForecast, PropertyReportItem, PropertyReportItemCollection, PropertyReportItemDepreciation, PropertyReportItemDepreciationCollection, PropertyReportItemTransaction, PropertyReportItemTransactionCollection, PropertySale, PropertySaleCollection, PropertySaleCostBase, PropertySaleCostBaseForm, PropertySaleCostSaleForm, PropertySaleExemptionsForm, PropertySaleService, PropertySaleTaxExemptionMetadata, PropertySaleTaxExemptionMetadataCollection, PropertyService, PropertyShare, PropertyShareAccessEnum, PropertyShareService, PropertyShareStatusEnum, PropertySubscription, PropertyTransactionReportService, PropertyValuation, RegisterClientForm, RegisterFirmForm, RegistrationInvite, RegistrationInviteStatusEnum, ReportItem, ReportItemCollection, ReportItemDetails, ResetPasswordForm, RewardfulService, SUBSCRIPTION_DESCRIPTION, SUBSCRIPTION_TITLE, SalaryForecast, SalaryForecastFrequencyEnum, SalaryForecastService, ServiceNotificationService, ServiceNotificationStatusEnum, ServiceNotificationTypeEnum, ServicePayment, ServicePaymentStatusEnum, ServicePrice, ServicePriceRecurringIntervalEnum, ServicePriceService, ServicePriceTypeEnum, ServiceProduct, ServiceProductIdEnum, ServiceProductStatusEnum, ServiceSubscription, ServiceSubscriptionCollection, ServiceSubscriptionItem, ServiceSubscriptionStatusEnum, ShareFilterOptionsEnum, SoleBusiness, SoleBusinessActivity, SoleBusinessActivityService, SoleBusinessAllocation, SoleBusinessAllocationsForm, SoleBusinessForm, SoleBusinessLoss, SoleBusinessLossForm, SoleBusinessLossOffsetRule, SoleBusinessLossOffsetRuleService, SoleBusinessLossReport, SoleBusinessLossService, SoleBusinessService, SoleContact, SoleContactForm, SoleContactService, SoleDepreciationMethod, SoleDepreciationMethodEnum, SoleDepreciationMethodForm, SoleDepreciationMethodService, SoleDetails, SoleDetailsForm, SoleDetailsService, SoleForecast, SoleForecastService, SoleInvoice, SoleInvoiceCollection, SoleInvoiceForm, SoleInvoiceItem, SoleInvoiceItemForm, SoleInvoiceService, SoleInvoiceStatusesEnum, SoleInvoiceTaxTypeEnum, SoleInvoiceTemplate, SoleInvoiceTemplateForm, SoleInvoiceTemplateService, SoleInvoiceTemplateTaxTypeEnum, SpareDocumentSpareTypeEnum, SseService, SubscriptionService, SubscriptionTypeEnum, TAX_RETURN_CATEGORIES, TYPE_LOAN, TankTypeEnum, TaxCalculationMedicareExemptionEnum, TaxCalculationTypeEnum, TaxExemption, TaxExemptionEnum, TaxExemptionMetadata, TaxExemptionMetadataEnum, TaxExemptionService, TaxReturnCategoryListEnum, TaxReturnCategorySectionEnum, TaxReview, TaxReviewCollection, TaxReviewHistoryService, TaxReviewService, TaxReviewStatusEnum, TaxSummary, TaxSummaryListEnum, TaxSummarySection, TaxSummarySectionEnum, TaxSummaryService, TaxSummaryTaxSummaryEnum, TaxSummaryTypeEnum, TicketFeedbackEnum, TicketStatusEnum, TicketTypesEnum, Toast, ToastService, ToastTypeEnum, Transaction, TransactionAllocation, TransactionAllocationCollection, TransactionAllocationService, TransactionBase, TransactionBaseCollection, TransactionCalculationService, TransactionCategoryEnum, TransactionCollection, TransactionMetadata, TransactionOperationEnum, TransactionReceipt, TransactionService, TransactionSourceEnum, TransactionTypeEnum, TtCoreModule, TutorialVideoService, USER_ROLES, USER_WORK_POSITION, User, UserEventSetting, UserEventSettingCollection, UserEventSettingFieldEnum, UserEventSettingService, UserEventStatusEnum, UserEventType, UserEventTypeCategory, UserEventTypeClientTypeEnum, UserEventTypeEmployeeTypeEnum, UserEventTypeFrequencyEnum, UserEventTypeService, UserEventTypeUserTypeEnum, UserInviteForm, UserMedicareExemptionEnum, UserRolesEnum, UserService, UserStatusEnum, UserSwitcherService, UserTitleEnum, UserToRegister, UserWorkDepreciationCalculationEnum, UserWorkingHolidayMakerEnum, UsersInviteService, Vehicle, VehicleClaim, VehicleClaimCollection, VehicleClaimDetails, VehicleClaimDetailsForm, VehicleClaimDetailsMethodEnum, VehicleClaimDetailsService, VehicleClaimForm, VehicleClaimService, VehicleExpense, VehicleExpenseCollection, VehicleForm, VehicleLogbook, VehicleLogbookCollection, VehicleLogbookForm, VehicleLogbookPurposeEnum, VehicleLogbookService, VehicleService, XlsxService, atLeastOneCheckedValidator, atoLinks, autocompleteValidator, cloneDeep, compare, compareMatOptions, conditionalValidator, createDate, displayMatOptions, enumToList, fieldsSumValidator, getDocIcon, minDateValidator, passwordMatchValidator, passwordValidator, replace, roundTo, sort, sortDeep, taxReviewFilterPredicate };
16484
+ export { AbstractForm, AbstractModel, AccountSetupItem, AccountSetupItemCollection, AccountSetupService, Address, AddressForm, AddressService, AddressTypeEnum, AlphabetColorsEnum, AppEvent, AppEventTypeEnum, AssetEntityTypeEnum, AssetTypeEnum, AssetsService, AuthService, BANK_ACCOUNT_TYPES, Badge, BadgeColorEnum, Bank, BankAccount, BankAccountAddManualForm, BankAccountAllocationForm, BankAccountCalculationService, BankAccountChartData, BankAccountCollection, BankAccountImportForm, BankAccountPropertiesForm, BankAccountProperty, BankAccountService, BankAccountStatusEnum, BankAccountTypeEnum, BankAccountsImportForm, BankConnection, BankConnectionService, BankConnectionStatusEnum, BankExternalStats, BankLoginData, BankLoginForm, BankService, BankTransaction, BankTransactionCalculationService, BankTransactionChartData, BankTransactionCollection, BankTransactionService, BankTransactionSummaryFieldsEnum, BankTransactionTypeEnum, BasiqConfig, BasiqJob, BasiqJobResponse, BasiqJobStep, BasiqService, BasiqToken, BasiqTokenService, BorrowingExpense, BorrowingExpenseLoan, BorrowingExpenseService, CAPITAL_COSTS_ITEMS, CHART_ACCOUNTS_CATEGORIES, CalculationFormItem, CalculationFormTypeEnum, CgtExemptionAndRolloverCodeEnum, ChartAccounts, ChartAccountsCategoryECollection, ChartAccountsCategoryEnum, ChartAccountsCollection, ChartAccountsDepreciation, ChartAccountsDepreciationService, ChartAccountsEtpEnum, ChartAccountsHeading, ChartAccountsHeadingListEnum, ChartAccountsHeadingTaxDeductibleEnum, ChartAccountsHeadingTaxableEnum, ChartAccountsHeadingVehicleListEnum, ChartAccountsListEnum, ChartAccountsMetadata, ChartAccountsMetadataListEnum, ChartAccountsMetadataTypeEnum, ChartAccountsService, ChartAccountsTaxLabelsEnum, ChartAccountsTypeEnum, ChartAccountsValue, ChartData, ChartSerie, Chat, ChatCollection, ChatService, ChatStatusEnum, ChatViewTypeEnum, ClientCollection, ClientDetails, ClientDetailsMedicareExemptionEnum, ClientDetailsWorkDepreciationCalculationEnum, ClientDetailsWorkingHolidayMakerEnum, ClientIncomeTypes, ClientIncomeTypesForm, ClientIncomeTypesService, ClientInvite, ClientInviteCollection, ClientInviteService, ClientInviteStatusEnum, ClientInviteTypeEnum, ClientMovement, ClientMovementCollection, ClientMovementService, ClientPortfolioChartData, ClientPortfolioReport, ClientPortfolioReportCollection, ClientPortfolioReportService, Collection, CollectionDictionary, CorelogicService, CorelogicSuggestion, Country, DEDUCTION_CATEGORIES, DEPRECIATION_GROUPS, DOCUMENT_FILE_TYPES, DeductionClothingTypeEnum, DeductionSelfEducationTypeEnum, Depreciation, DepreciationCalculationEnum, DepreciationCalculationPercentEnum, DepreciationCapitalProject, DepreciationCapitalProjectService, DepreciationCollection, DepreciationForecast, DepreciationForecastCollection, DepreciationGroup, DepreciationGroupEnum, DepreciationGroupItem, DepreciationLvpAssetTypeEnum, DepreciationLvpReportItem, DepreciationLvpReportItemCollection, DepreciationReceipt, DepreciationReceiptService, DepreciationReportItem, DepreciationReportItemCollection, DepreciationService, DepreciationTypeEnum, DepreciationWriteOffAmountEnum, Dictionary, Document, DocumentApiUrlPrefixEnum, DocumentFolder, DocumentFolderService, DocumentService, DocumentTypeEnum, ENDPOINTS, EmployeeCollection, EmployeeDetails, EmployeeInvite, EmployeeInviteService, EmployeeService, Endpoint, EquityPositionChartService, EventDispatcherService, ExportDataTable, ExportFormatEnum, ExportFormatterService, ExportableCollection, FacebookService, FinancialYear, Firm, FirmService, FirmTypeEnum, HeaderTitleService, IconsFileEnum, IncomeAmountTypeEnum, IncomePosition, IncomeSource, IncomeSourceChartData, IncomeSourceCollection, IncomeSourceForecast, IncomeSourceForecastService, IncomeSourceForecastTrustTypeEnum, IncomeSourceService, IncomeSourceType, IncomeSourceTypeEnum, IncomeSourceTypeListOtherEnum, IncomeSourceTypeListSoleEnum, IncomeSourceTypeListWorkEnum, InterceptorsModule, IntercomService, InviteStatusEnum, JwtService, KompassifyService, Loan, LoanBankTypeEnum, LoanCollection, LoanForm, LoanFrequencyEnum, LoanInterestTypeEnum, LoanMaxNumberOfPaymentsEnum, LoanPayment, LoanPaymentCollection, LoanPayout, LoanPayoutTypeEnum, LoanRepaymentFrequencyEnum, LoanRepaymentTypeEnum, LoanService, LoanTypeEnum, LoanVehicleTypeEnum, LogbookBestPeriodService, LogbookPeriod, LoginForm, MODULE_URL_LIST, MONTHS, Message, MessageCollection, MessageDocument, MessageDocumentCollection, MessageDocumentService, MessageService, MonthNameShortEnum, MonthNumberEnum, MyAccountHistory, MyAccountHistoryInitiatedByEnum, MyAccountHistoryStatusEnum, MyAccountHistoryTypeEnum, MyTaxBusinessOrLosses, MyTaxBusinessOrLossesForm, MyTaxCgt, MyTaxCgtForm, MyTaxDeductions, MyTaxDeductionsForm, MyTaxDividends, MyTaxDividendsForm, MyTaxEmployeeShareSchemes, MyTaxEmployeeShareSchemesForm, MyTaxEstimate, MyTaxIncomeStatements, MyTaxIncomeStatementsForm, MyTaxIncomeTests, MyTaxIncomeTestsForm, MyTaxInterest, MyTaxInterestForm, MyTaxLosses, MyTaxLossesForm, MyTaxMedicareForm, MyTaxOffsets, MyTaxOffsetsForm, MyTaxOtherIncome, MyTaxOtherIncomeForm, MyTaxPartnershipsAndTrusts, MyTaxPartnershipsAndTrustsForm, MyTaxRent, MyTaxRentForm, Notification, Occupation, OccupationService, PASSWORD_REGEXPS, PasswordForm, PdfFromDataTableService, PdfFromDomElementService, PdfFromHtmlTableService, PdfOrientationEnum, PdfSettings, Phone, PhoneForm, PhoneTypeEnum, PreloaderService, Property, PropertyCalculationService, PropertyCategory, PropertyCategoryListEnum, PropertyCategoryMovement, PropertyCategoryMovementCollection, PropertyCategoryMovementService, PropertyCategoryService, PropertyCollection, PropertyDepreciationCalculationEnum, PropertyDocument, PropertyDocumentService, PropertyEquityChartData, PropertyEquityChartItem, PropertyForecast, PropertyReportItem, PropertyReportItemCollection, PropertyReportItemDepreciation, PropertyReportItemDepreciationCollection, PropertyReportItemTransaction, PropertyReportItemTransactionCollection, PropertySale, PropertySaleCollection, PropertySaleCostBase, PropertySaleCostBaseForm, PropertySaleCostSaleForm, PropertySaleExemptionsForm, PropertySaleService, PropertySaleTaxExemptionMetadata, PropertySaleTaxExemptionMetadataCollection, PropertyService, PropertyShare, PropertyShareAccessEnum, PropertyShareService, PropertyShareStatusEnum, PropertySubscription, PropertyTransactionReportService, PropertyValuation, RegisterClientForm, RegisterFirmForm, RegistrationInvite, RegistrationInviteStatusEnum, ReportItem, ReportItemCollection, ReportItemDetails, ResetPasswordForm, RewardfulService, SUBSCRIPTION_DESCRIPTION, SUBSCRIPTION_TITLE, SalaryForecast, SalaryForecastFrequencyEnum, SalaryForecastService, ServiceNotificationService, ServiceNotificationStatusEnum, ServiceNotificationTypeEnum, ServicePayment, ServicePaymentStatusEnum, ServicePrice, ServicePriceRecurringIntervalEnum, ServicePriceService, ServicePriceTypeEnum, ServiceProduct, ServiceProductIdEnum, ServiceProductStatusEnum, ServiceSubscription, ServiceSubscriptionCollection, ServiceSubscriptionItem, ServiceSubscriptionStatusEnum, ShareFilterOptionsEnum, SoleBusiness, SoleBusinessActivity, SoleBusinessActivityService, SoleBusinessAllocation, SoleBusinessAllocationsForm, SoleBusinessForm, SoleBusinessLoss, SoleBusinessLossForm, SoleBusinessLossOffsetRule, SoleBusinessLossOffsetRuleService, SoleBusinessLossReport, SoleBusinessLossService, SoleBusinessService, SoleContact, SoleContactForm, SoleContactService, SoleDepreciationMethod, SoleDepreciationMethodEnum, SoleDepreciationMethodForm, SoleDepreciationMethodService, SoleDetails, SoleDetailsForm, SoleDetailsService, SoleForecast, SoleForecastService, SoleInvoice, SoleInvoiceCollection, SoleInvoiceForm, SoleInvoiceItem, SoleInvoiceItemForm, SoleInvoiceService, SoleInvoiceStatusesEnum, SoleInvoiceTaxTypeEnum, SoleInvoiceTemplate, SoleInvoiceTemplateForm, SoleInvoiceTemplateService, SoleInvoiceTemplateTaxTypeEnum, SpareDocumentSpareTypeEnum, SseService, SubscriptionService, SubscriptionTypeEnum, TAX_RETURN_CATEGORIES, TYPE_LOAN, TankTypeEnum, TaxCalculationMedicareExemptionEnum, TaxCalculationTypeEnum, TaxExemption, TaxExemptionEnum, TaxExemptionMetadata, TaxExemptionMetadataEnum, TaxExemptionService, TaxReturnCategoryListEnum, TaxReturnCategorySectionEnum, TaxReview, TaxReviewCollection, TaxReviewHistoryService, TaxReviewService, TaxReviewStatusEnum, TaxSummary, TaxSummaryListEnum, TaxSummarySection, TaxSummarySectionEnum, TaxSummaryService, TaxSummaryTaxSummaryEnum, TaxSummaryTypeEnum, TicketFeedbackEnum, TicketStatusEnum, TicketTypesEnum, Toast, ToastService, ToastTypeEnum, Transaction, TransactionAllocation, TransactionAllocationCollection, TransactionAllocationService, TransactionBase, TransactionBaseCollection, TransactionCalculationService, TransactionCategoryEnum, TransactionCollection, TransactionMetadata, TransactionOperationEnum, TransactionReceipt, TransactionService, TransactionSourceEnum, TransactionTypeEnum, TtCoreModule, TutorialVideoService, USER_ROLES, USER_WORK_POSITION, User, UserEventSetting, UserEventSettingCollection, UserEventSettingFieldEnum, UserEventSettingService, UserEventStatusEnum, UserEventType, UserEventTypeCategory, UserEventTypeClientTypeEnum, UserEventTypeEmployeeTypeEnum, UserEventTypeFrequencyEnum, UserEventTypeService, UserEventTypeUserTypeEnum, UserInviteForm, UserMedicareExemptionEnum, UserRolesEnum, UserService, UserStatusEnum, UserSwitcherService, UserTitleEnum, UserToRegister, UserWorkDepreciationCalculationEnum, UserWorkingHolidayMakerEnum, UsersInviteService, Vehicle, VehicleClaim, VehicleClaimCollection, VehicleClaimDetails, VehicleClaimDetailsForm, VehicleClaimDetailsMethodEnum, VehicleClaimDetailsService, VehicleClaimForm, VehicleClaimService, VehicleExpense, VehicleExpenseCollection, VehicleForm, VehicleLogbook, VehicleLogbookCollection, VehicleLogbookForm, VehicleLogbookPurposeEnum, VehicleLogbookService, VehicleService, XlsxService, atLeastOneCheckedValidator, atoLinks, autocompleteValidator, cloneDeep, compare, compareMatOptions, conditionalValidator, createDate, displayMatOptions, enumToList, fieldsSumValidator, getDocIcon, minDateValidator, passwordMatchValidator, passwordValidator, replace, roundTo, sort, sortDeep, taxReviewFilterPredicate };
16307
16485
  //# sourceMappingURL=taxtank-core.js.map