taxtank-core 0.5.2 → 0.6.1
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/README.md +5 -5
- package/bundles/taxtank-core.umd.js +12108 -11939
- package/bundles/taxtank-core.umd.js.map +1 -1
- package/esm2015/lib/collections/bank-account.collection.js +135 -135
- package/esm2015/lib/collections/bank-transaction.collection.js +119 -119
- package/esm2015/lib/collections/client-movement.collection.js +31 -31
- package/esm2015/lib/collections/client-portfolio-report.collection.js +40 -40
- package/esm2015/lib/collections/client.collection.js +4 -4
- package/esm2015/lib/collections/collection-dictionary.js +86 -86
- package/esm2015/lib/collections/collection.js +74 -74
- package/esm2015/lib/collections/depreciation-forecast.collection.js +19 -19
- package/esm2015/lib/collections/depreciation.collection.js +90 -79
- package/esm2015/lib/collections/employee.collection.js +12 -12
- package/esm2015/lib/collections/income-source.collection.js +38 -38
- package/esm2015/lib/collections/loan.collection.js +18 -18
- package/esm2015/lib/collections/logbook.collection.js +97 -97
- package/esm2015/lib/collections/message-document.collection.js +13 -13
- package/esm2015/lib/collections/message.collection.js +21 -21
- package/esm2015/lib/collections/property/property-sale/property-sale-tax-exemption-metadata.collection.js +20 -0
- package/esm2015/lib/collections/property/property.collection.js +72 -0
- package/esm2015/lib/collections/service-price.collection.js +10 -10
- package/esm2015/lib/collections/service-subscription.collection.js +17 -17
- package/esm2015/lib/collections/tax-return-category-item.collection.js +141 -141
- package/esm2015/lib/collections/tax-review.collection.js +55 -55
- package/esm2015/lib/collections/transaction-allocation.collection.js +40 -40
- package/esm2015/lib/collections/transaction.collection.js +123 -123
- package/esm2015/lib/collections/user-event-setting.collection.js +10 -10
- package/esm2015/lib/db/Enums/address-type.enum.js +6 -6
- package/esm2015/lib/db/Enums/bank-account-status.enum.js +6 -6
- package/esm2015/lib/db/Enums/bank-account-type.enum.js +12 -12
- package/esm2015/lib/db/Enums/bank-connection-status.enum.js +7 -7
- package/esm2015/lib/db/Enums/bank-transaction-type.enum.js +6 -6
- package/esm2015/lib/db/Enums/chart-accounts-category.enum.js +18 -15
- package/esm2015/lib/db/Enums/chart-accounts-etp.enum.js +9 -9
- package/esm2015/lib/db/Enums/chart-accounts-heading-tax-deductible.enum.js +8 -8
- package/esm2015/lib/db/Enums/chart-accounts-heading-taxable.enum.js +8 -8
- package/esm2015/lib/db/Enums/chart-accounts-heading-vehicle-list.enum.js +6 -6
- package/esm2015/lib/db/Enums/chart-accounts-list.enum.js +21 -21
- package/esm2015/lib/db/Enums/chart-accounts-metadata-list.enum.js +16 -16
- package/esm2015/lib/db/Enums/chart-accounts-metadata-type.enum.js +6 -6
- package/esm2015/lib/db/Enums/chart-accounts-type.enum.js +6 -6
- package/esm2015/lib/db/Enums/chat-status.enum.js +6 -6
- package/esm2015/lib/db/Enums/client-details-medicare-exemption.enum.js +7 -7
- package/esm2015/lib/db/Enums/client-details-work-depreciation-calculation.enum.js +6 -6
- package/esm2015/lib/db/Enums/client-details-working-holiday-maker.enum.js +7 -7
- package/esm2015/lib/db/Enums/client-invite-status.enum.js +6 -6
- package/esm2015/lib/db/Enums/client-invite-type.enum.js +6 -6
- package/esm2015/lib/db/Enums/depreciation-calculation-percent.enum.js +9 -9
- package/esm2015/lib/db/Enums/depreciation-calculation.enum.js +9 -9
- package/esm2015/lib/db/Enums/depreciation-type.enum.js +8 -8
- package/esm2015/lib/db/Enums/depreciation-write-off-amount.enum.js +6 -6
- package/esm2015/lib/db/Enums/firm-type.enum.js +6 -6
- package/esm2015/lib/db/Enums/income-source-type-list-other.enum.js +8 -8
- package/esm2015/lib/db/Enums/income-source-type-list-salary.enum.js +5 -5
- package/esm2015/lib/db/Enums/income-source-type-list-work.enum.js +10 -10
- package/esm2015/lib/db/Enums/income-source-type.enum.js +8 -8
- package/esm2015/lib/db/Enums/invite-status.enum.js +7 -7
- package/esm2015/lib/db/Enums/loan-bank-type.enum.js +12 -12
- package/esm2015/lib/db/Enums/loan-frequency.enum.js +8 -8
- package/esm2015/lib/db/Enums/loan-interest-type.enum.js +6 -6
- package/esm2015/lib/db/Enums/loan-payout-type.enum.js +6 -6
- package/esm2015/lib/db/Enums/loan-repayment-frequency.enum.js +7 -7
- package/esm2015/lib/db/Enums/loan-repayment-type.enum.js +6 -6
- package/esm2015/lib/db/Enums/loan-type.enum.js +14 -14
- package/esm2015/lib/db/Enums/loan-vehicle-type.enum.js +7 -7
- package/esm2015/lib/db/Enums/phone-type.enum.js +6 -6
- package/esm2015/lib/db/Enums/property/property-category-list.enum.js +5 -0
- package/esm2015/lib/db/Enums/{property-depreciation-calculation.enum.js → property/property-depreciation-calculation.enum.js} +6 -6
- package/esm2015/lib/db/Enums/property/property-owner-access.enum.js +6 -0
- package/esm2015/lib/db/Enums/property/property-owner-status.enum.js +7 -0
- package/esm2015/lib/db/Enums/property/property-sale/tax-exemption-metadata.enum.js +9 -0
- package/esm2015/lib/db/Enums/property/property-sale/tax-exemption.enum.js +12 -0
- package/esm2015/lib/db/Enums/registration-invite-status.enum.js +6 -6
- package/esm2015/lib/db/Enums/salary-forecast-frequency.enum.js +8 -8
- package/esm2015/lib/db/Enums/service-notification-status.enum.js +7 -7
- package/esm2015/lib/db/Enums/service-notification-type.enum.js +6 -6
- package/esm2015/lib/db/Enums/service-payment-status.enum.js +6 -6
- package/esm2015/lib/db/Enums/service-price-recurring-interval.enum.js +8 -8
- package/esm2015/lib/db/Enums/service-price-type.enum.js +6 -6
- package/esm2015/lib/db/Enums/service-subscription-status.enum.js +10 -10
- package/esm2015/lib/db/Enums/spare-document-spare-type.enum.js +6 -6
- package/esm2015/lib/db/Enums/tank-type.enum.js +8 -7
- package/esm2015/lib/db/Enums/tax-calculation-medicare-exemption.enum.js +6 -6
- package/esm2015/lib/db/Enums/tax-calculation-type.enum.js +14 -14
- package/esm2015/lib/db/Enums/tax-return-category-list.enum.js +28 -28
- package/esm2015/lib/db/Enums/tax-return-category-section.enum.js +8 -8
- package/esm2015/lib/db/Enums/tax-review-status.enum.js +13 -13
- package/esm2015/lib/db/Enums/tax-summary-list.enum.js +17 -17
- package/esm2015/lib/db/Enums/tax-summary-section.enum.js +8 -8
- package/esm2015/lib/db/Enums/tax-summary-tax-summary.enum.js +17 -17
- package/esm2015/lib/db/Enums/ticket-feedback.enum.js +6 -6
- package/esm2015/lib/db/Enums/ticket-status.enum.js +9 -9
- package/esm2015/lib/db/Enums/ticket-types.enum.js +5 -5
- package/esm2015/lib/db/Enums/transaction-operation.enum.js +7 -7
- package/esm2015/lib/db/Enums/transaction-source.enum.js +6 -6
- package/esm2015/lib/db/Enums/transaction-type.enum.js +6 -6
- package/esm2015/lib/db/Enums/user-event-status.enum.js +9 -9
- package/esm2015/lib/db/Enums/user-event-type-client-type.enum.js +29 -29
- package/esm2015/lib/db/Enums/user-event-type-employee-type.enum.js +17 -17
- package/esm2015/lib/db/Enums/user-event-type-frequency.enum.js +7 -7
- package/esm2015/lib/db/Enums/user-event-type-user-type.enum.js +7 -7
- package/esm2015/lib/db/Enums/user-medicare-exemption.enum.js +7 -7
- package/esm2015/lib/db/Enums/user-roles.enum.js +15 -15
- package/esm2015/lib/db/Enums/user-status.enum.js +8 -8
- package/esm2015/lib/db/Enums/user-title.enum.js +9 -9
- package/esm2015/lib/db/Enums/user-work-depreciation-calculation.enum.js +6 -6
- package/esm2015/lib/db/Enums/user-working-holiday-maker.enum.js +7 -7
- package/esm2015/lib/db/Enums/vehicle-claim-method.enum.js +6 -6
- package/esm2015/lib/db/Enums/vehicle-logbook-purpose.enum.js +6 -6
- package/esm2015/lib/db/Models/address.js +3 -3
- package/esm2015/lib/db/Models/bank-account-balance.js +3 -3
- package/esm2015/lib/db/Models/bank-account-property.js +3 -3
- package/esm2015/lib/db/Models/bank-account.js +3 -3
- package/esm2015/lib/db/Models/bank-connection.js +3 -3
- package/esm2015/lib/db/Models/bank-transaction-import.js +3 -3
- package/esm2015/lib/db/Models/bank-transaction.js +3 -3
- package/esm2015/lib/db/Models/bank.js +3 -3
- package/esm2015/lib/db/Models/basiq-job.js +3 -3
- package/esm2015/lib/db/Models/borrowing-expense-loan.js +3 -3
- package/esm2015/lib/db/Models/borrowing-expense.js +3 -3
- package/esm2015/lib/db/Models/chart-accounts-depreciation.js +3 -3
- package/esm2015/lib/db/Models/chart-accounts-heading.js +3 -3
- package/esm2015/lib/db/Models/chart-accounts-metadata.js +3 -3
- package/esm2015/lib/db/Models/chart-accounts-value.js +3 -3
- package/esm2015/lib/db/Models/chart-accounts.js +3 -3
- package/esm2015/lib/db/Models/chat.js +3 -3
- package/esm2015/lib/db/Models/client-details.js +3 -3
- package/esm2015/lib/db/Models/client-invite.js +3 -3
- package/esm2015/lib/db/Models/client-movement.js +3 -3
- package/esm2015/lib/db/Models/country.js +3 -3
- package/esm2015/lib/db/Models/depreciation-capital-project.js +3 -3
- package/esm2015/lib/db/Models/depreciation-forecast.js +3 -3
- package/esm2015/lib/db/Models/depreciation-receipt.js +3 -3
- package/esm2015/lib/db/Models/depreciation.js +4 -4
- package/esm2015/lib/db/Models/document-folder.js +3 -3
- package/esm2015/lib/db/Models/document.js +3 -3
- package/esm2015/lib/db/Models/employee-details.js +3 -3
- package/esm2015/lib/db/Models/employee-invite.js +3 -3
- package/esm2015/lib/db/Models/financial-data-system.js +3 -3
- package/esm2015/lib/db/Models/firm.js +3 -3
- package/esm2015/lib/db/Models/income-source-forecast.js +3 -3
- package/esm2015/lib/db/Models/income-source-type.js +3 -3
- package/esm2015/lib/db/Models/income-source.js +3 -3
- package/esm2015/lib/db/Models/loan-payout.js +3 -3
- package/esm2015/lib/db/Models/loan.js +3 -3
- package/esm2015/lib/db/Models/message-document.js +3 -3
- package/esm2015/lib/db/Models/message.js +3 -3
- package/esm2015/lib/db/Models/occupation.js +3 -3
- package/esm2015/lib/db/Models/phone.js +3 -3
- package/esm2015/lib/db/Models/property/property-category-movement.js +3 -0
- package/esm2015/lib/db/Models/property/property-category.js +3 -0
- package/esm2015/lib/db/Models/property/property-document.js +3 -0
- package/esm2015/lib/db/Models/property/property-forecast.js +3 -0
- package/esm2015/lib/db/Models/property/property-owner.js +3 -0
- package/esm2015/lib/db/Models/property/property-sale/property-sale-tax-exemption-metadata.js +3 -0
- package/esm2015/lib/db/Models/property/property-sale/property-sale.js +3 -0
- package/esm2015/lib/db/Models/property/property-sale/tax-exemption-metadata.js +3 -0
- package/esm2015/lib/db/Models/property/property-sale/tax-exemption.js +3 -0
- package/esm2015/lib/db/Models/property/property-subscription.js +3 -0
- package/esm2015/lib/db/Models/property/property-valuation.js +3 -0
- package/esm2015/lib/db/Models/property/property.js +3 -0
- package/esm2015/lib/db/Models/registration-invite.js +3 -3
- package/esm2015/lib/db/Models/salary-forecast.js +3 -3
- package/esm2015/lib/db/Models/service-notification.js +3 -3
- package/esm2015/lib/db/Models/service-payment.js +3 -3
- package/esm2015/lib/db/Models/service-price.js +3 -3
- package/esm2015/lib/db/Models/service-product.js +3 -3
- package/esm2015/lib/db/Models/service-subscription-item.js +3 -3
- package/esm2015/lib/db/Models/service-subscription.js +3 -3
- package/esm2015/lib/db/Models/sole-forecast.js +3 -3
- package/esm2015/lib/db/Models/tax-return-category.js +3 -3
- package/esm2015/lib/db/Models/tax-return-item.js +3 -3
- package/esm2015/lib/db/Models/tax-return.js +3 -3
- package/esm2015/lib/db/Models/tax-review.js +3 -3
- package/esm2015/lib/db/Models/ticket.js +3 -3
- package/esm2015/lib/db/Models/transaction-allocation.js +3 -3
- package/esm2015/lib/db/Models/transaction-base.js +20 -20
- package/esm2015/lib/db/Models/transaction-metadata.js +3 -3
- package/esm2015/lib/db/Models/transaction-receipt.js +3 -3
- package/esm2015/lib/db/Models/transaction.js +4 -4
- package/esm2015/lib/db/Models/user-event-setting.js +3 -3
- package/esm2015/lib/db/Models/user-event-type-category.js +3 -3
- package/esm2015/lib/db/Models/user-event-type.js +3 -3
- package/esm2015/lib/db/Models/user-event.js +3 -3
- package/esm2015/lib/db/Models/user.js +3 -3
- package/esm2015/lib/db/Models/vehicle-claim.js +3 -3
- package/esm2015/lib/db/Models/vehicle-logbook.js +3 -3
- package/esm2015/lib/db/Models/vehicle.js +3 -3
- package/esm2015/lib/functions/array/index.js +3 -3
- package/esm2015/lib/functions/array/replace.js +5 -5
- package/esm2015/lib/functions/array/sort-deep.js +21 -21
- package/esm2015/lib/functions/array/sort.js +12 -12
- package/esm2015/lib/functions/clone-deep.js +5 -5
- package/esm2015/lib/functions/create-date.js +8 -8
- package/esm2015/lib/functions/enum-to-list.js +12 -12
- package/esm2015/lib/functions/get-doc-icon.js +18 -18
- package/esm2015/lib/functions/mat-options-functions.js +9 -9
- package/esm2015/lib/functions/mat-sort-options.js +10 -10
- package/esm2015/lib/functions/round-to.js +10 -10
- package/esm2015/lib/functions/tax-review-filter-predicate.js +10 -10
- package/esm2015/lib/interceptors/corelogic-interceptor.js +44 -44
- package/esm2015/lib/interceptors/financial-year-interceptor.js +29 -29
- package/esm2015/lib/interceptors/interceptors.module.js +73 -73
- package/esm2015/lib/interceptors/jwt-interceptor.js +137 -137
- package/esm2015/lib/interceptors/preloader.interceptor.js +32 -32
- package/esm2015/lib/interceptors/user-switcher-interceptor.js +42 -42
- package/esm2015/lib/interfaces/asset-entity-type.enum.js +12 -12
- package/esm2015/lib/interfaces/asset-type.enum.js +10 -10
- package/esm2015/lib/interfaces/asset.interface.js +2 -2
- package/esm2015/lib/interfaces/chart-data.interface.js +1 -1
- package/esm2015/lib/interfaces/chart-serie.interface.js +1 -1
- package/esm2015/lib/interfaces/document.interface.js +2 -2
- package/esm2015/lib/interfaces/documentable.interface.js +2 -2
- package/esm2015/lib/interfaces/event-listener.interface.js +1 -1
- package/esm2015/lib/interfaces/income-source-forecast.interface.js +2 -2
- package/esm2015/lib/interfaces/option.interface.js +1 -1
- package/esm2015/lib/interfaces/photoable.js +1 -1
- package/esm2015/lib/interfaces/receipt.interface.js +2 -2
- package/esm2015/lib/interfaces/tank.interface.js +2 -2
- package/esm2015/lib/models/address/address.js +23 -23
- package/esm2015/lib/models/address/country.js +15 -15
- package/esm2015/lib/models/bank/bank-account-chart-data.js +34 -34
- package/esm2015/lib/models/bank/bank-account-property.js +10 -10
- package/esm2015/lib/models/bank/bank-account-types.const.js +15 -15
- package/esm2015/lib/models/bank/bank-account.js +122 -122
- package/esm2015/lib/models/bank/bank-connection.js +21 -21
- package/esm2015/lib/models/bank/bank-transaction-chart-data.js +106 -106
- package/esm2015/lib/models/bank/bank-transaction-summary-fields.enum.js +6 -6
- package/esm2015/lib/models/bank/bank-transaction.js +67 -67
- package/esm2015/lib/models/bank/bank.js +13 -13
- package/esm2015/lib/models/bank/basiq-job.js +4 -4
- package/esm2015/lib/models/bank/basiq-token.js +13 -13
- package/esm2015/lib/models/bank/type-loan.const.js +7 -7
- package/esm2015/lib/models/borrowing-expense/borrowing-expense-loan.js +4 -4
- package/esm2015/lib/models/borrowing-expense/borrowing-expense.js +4 -4
- package/esm2015/lib/models/chart/chart-data.js +12 -12
- package/esm2015/lib/models/chart/chart-serie.js +6 -6
- package/esm2015/lib/models/chart-accounts/chart-accounts-categories.const.js +84 -84
- package/esm2015/lib/models/chart-accounts/chart-accounts-depreciation.js +16 -16
- package/esm2015/lib/models/chart-accounts/chart-accounts-heading.js +3 -3
- package/esm2015/lib/models/chart-accounts/chart-accounts-metadata.js +13 -13
- package/esm2015/lib/models/chart-accounts/chart-accounts-tax-labels.enum.js +6 -6
- package/esm2015/lib/models/chart-accounts/chart-accounts.js +119 -119
- package/esm2015/lib/models/chat/chat-view-type.enum.js +6 -6
- package/esm2015/lib/models/chat/chat.js +22 -22
- package/esm2015/lib/models/chat/message-document.js +19 -19
- package/esm2015/lib/models/chat/message.js +38 -38
- package/esm2015/lib/models/client/client-details.js +4 -4
- package/esm2015/lib/models/client/client-invite.js +66 -66
- package/esm2015/lib/models/client/client-movement.js +26 -26
- package/esm2015/lib/models/client/client-portfolio-chart-data.js +57 -57
- package/esm2015/lib/models/client/client-portfolio-report.js +6 -6
- package/esm2015/lib/models/color/alphabet-colors.enum.js +29 -29
- package/esm2015/lib/models/data-table/data-table-column.js +13 -13
- package/esm2015/lib/models/data-table/data-table.js +42 -42
- package/esm2015/lib/models/depreciation/depreciation-capital-project.js +9 -9
- package/esm2015/lib/models/depreciation/depreciation-forecast.js +22 -22
- package/esm2015/lib/models/depreciation/depreciation-group-item.js +14 -14
- package/esm2015/lib/models/depreciation/depreciation-group.enum.js +9 -9
- package/esm2015/lib/models/depreciation/depreciation-group.js +15 -15
- package/esm2015/lib/models/depreciation/depreciation-groups.const.js +29 -29
- package/esm2015/lib/models/depreciation/depreciation-receipt.js +11 -11
- package/esm2015/lib/models/depreciation/depreciation.js +174 -170
- package/esm2015/lib/models/document/document-api-url-prefix.enum.js +9 -9
- package/esm2015/lib/models/document/document-file-types.const.js +23 -23
- package/esm2015/lib/models/document/document-folder.js +10 -10
- package/esm2015/lib/models/document/document.js +24 -24
- package/esm2015/lib/models/employee/employee-details.js +10 -10
- package/esm2015/lib/models/employee/employee-invite.js +13 -13
- package/esm2015/lib/models/endpoint/endpoint.js +22 -22
- package/esm2015/lib/models/endpoint/endpoints.const.js +143 -144
- package/esm2015/lib/models/event/app-event-type.enum.js +42 -42
- package/esm2015/lib/models/event/app-event.js +10 -10
- package/esm2015/lib/models/file/icons-file.enum.js +7 -7
- package/esm2015/lib/models/financial-year/financial-year.js +43 -43
- package/esm2015/lib/models/financial-year/month-name-short.enum.js +20 -20
- package/esm2015/lib/models/financial-year/month-number.enum.js +20 -20
- package/esm2015/lib/models/financial-year/months.const.js +2 -2
- package/esm2015/lib/models/firm/firm.js +29 -29
- package/esm2015/lib/models/income-position/income-position.js +9 -9
- package/esm2015/lib/models/income-source/income-source-chart-data.js +45 -45
- package/esm2015/lib/models/income-source/income-source-forecast.js +31 -31
- package/esm2015/lib/models/income-source/income-source-type.js +32 -32
- package/esm2015/lib/models/income-source/income-source.js +57 -57
- package/esm2015/lib/models/income-source/salary-forecast.js +14 -14
- package/esm2015/lib/models/income-source/sole-forecast.js +14 -14
- package/esm2015/lib/models/loan/loan-max-number-of-payments.enum.js +10 -10
- package/esm2015/lib/models/loan/loan-payment.js +12 -12
- package/esm2015/lib/models/loan/loan-payout.js +11 -11
- package/esm2015/lib/models/loan/loan.js +39 -39
- package/esm2015/lib/models/logbook/default-vehicle-expense.js +20 -20
- package/esm2015/lib/models/logbook/logbook-period.js +11 -11
- package/esm2015/lib/models/logbook/logbook-purpose-options.const.js +6 -6
- package/esm2015/lib/models/logbook/vehicle-claim.js +32 -32
- package/esm2015/lib/models/logbook/vehicle-logbook.js +16 -16
- package/esm2015/lib/models/logbook/vehicle.js +39 -39
- package/esm2015/lib/models/notification/notification.js +39 -39
- package/esm2015/lib/models/pdf/pdf-config.js +24 -24
- package/esm2015/lib/models/phone/phone.js +11 -11
- package/esm2015/lib/models/property/calculation-form-item.js +17 -17
- package/esm2015/lib/models/property/calculation-form-type.enum.js +9 -9
- package/esm2015/lib/models/property/capital-costs-itmes.const.js +57 -57
- package/esm2015/lib/models/property/corelogic-suggestion.js +6 -6
- package/esm2015/lib/models/property/ownership-filter-options.enum.js +10 -10
- package/esm2015/lib/models/property/property-category-movement.js +20 -20
- package/esm2015/lib/models/property/property-category.js +11 -8
- package/esm2015/lib/models/property/property-document.js +17 -17
- package/esm2015/lib/models/property/property-equity-chart-data.js +155 -155
- package/esm2015/lib/models/property/property-equity-chart-item.js +24 -24
- package/esm2015/lib/models/property/property-equity-chart-type.enum.js +6 -6
- package/esm2015/lib/models/property/property-forecast.js +52 -52
- package/esm2015/lib/models/property/property-owner.js +48 -48
- package/esm2015/lib/models/property/property-sale/property-sale-tax-exemption-metadata.js +4 -0
- package/esm2015/lib/models/property/property-sale/property-sale.js +19 -0
- package/esm2015/lib/models/property/property-sale/tax-exemption-metadata.js +4 -0
- package/esm2015/lib/models/property/property-sale/tax-exemption.js +4 -0
- package/esm2015/lib/models/property/property-subscription.js +13 -13
- package/esm2015/lib/models/property/property-valuation.js +23 -23
- package/esm2015/lib/models/property/property.js +214 -130
- package/esm2015/lib/models/registration-invite/registration-invite.js +10 -10
- package/esm2015/lib/models/service-subscription/module-url-list.const.js +12 -12
- package/esm2015/lib/models/service-subscription/service-payment.js +10 -10
- package/esm2015/lib/models/service-subscription/service-price.js +10 -10
- package/esm2015/lib/models/service-subscription/service-product.js +10 -10
- package/esm2015/lib/models/service-subscription/service-subscription-item.js +13 -13
- package/esm2015/lib/models/service-subscription/service-subscription.js +128 -128
- package/esm2015/lib/models/service-subscription/subscription-description.const.js +7 -7
- package/esm2015/lib/models/service-subscription/subscription-title.const.js +7 -7
- package/esm2015/lib/models/service-subscription/subscription-type.enum.js +7 -7
- package/esm2015/lib/models/tax-review/tax-review.js +86 -86
- package/esm2015/lib/models/tax-summary/tax-return-category-item-details.js +9 -9
- package/esm2015/lib/models/tax-summary/tax-return-category-item.js +15 -15
- package/esm2015/lib/models/tax-summary/tax-summary-section.js +30 -30
- package/esm2015/lib/models/tax-summary/tax-summary-type.enum.js +9 -9
- package/esm2015/lib/models/tax-summary/tax-summary.js +71 -71
- package/esm2015/lib/models/transaction/income-amount-type.enum.js +9 -9
- package/esm2015/lib/models/transaction/transaction-allocation.js +21 -21
- package/esm2015/lib/models/transaction/transaction-metadata.js +10 -10
- package/esm2015/lib/models/transaction/transaction-receipt.js +11 -11
- package/esm2015/lib/models/transaction/transaction.js +223 -223
- package/esm2015/lib/models/user/my-account-history-initiated-by.enum.js +6 -6
- package/esm2015/lib/models/user/my-account-history-status.enum.js +6 -6
- package/esm2015/lib/models/user/my-account-history-type.enum.js +7 -7
- package/esm2015/lib/models/user/my-account-history.js +3 -3
- package/esm2015/lib/models/user/occupation.js +4 -4
- package/esm2015/lib/models/user/user-roles.const.js +13 -13
- package/esm2015/lib/models/user/user-to-register.js +6 -6
- package/esm2015/lib/models/user/user-work-position.const.js +6 -6
- package/esm2015/lib/models/user/user.js +138 -138
- package/esm2015/lib/models/user-event/user-event-setting-field.enum.js +10 -10
- package/esm2015/lib/models/user-event/user-event-setting.js +18 -18
- package/esm2015/lib/models/user-event/user-event-type-category.js +4 -4
- package/esm2015/lib/models/user-event/user-event-type.js +19 -19
- package/esm2015/lib/services/address/address.service.js +39 -39
- package/esm2015/lib/services/asset/assets.service.js +51 -51
- package/esm2015/lib/services/auth/auth.service.js +46 -46
- package/esm2015/lib/services/auth/jwt.service.js +36 -36
- package/esm2015/lib/services/bank/bank-account-calculation.service.js +30 -30
- package/esm2015/lib/services/bank/bank-account.service.js +118 -118
- package/esm2015/lib/services/bank/bank-connection.service.js +52 -52
- package/esm2015/lib/services/bank/bank-transaction-calculation.service.js +65 -65
- package/esm2015/lib/services/bank/bank-transaction.service.js +89 -89
- package/esm2015/lib/services/bank/bank.service.js +24 -24
- package/esm2015/lib/services/bank/basiq.service.js +94 -94
- package/esm2015/lib/services/base-rest.service.js +190 -190
- package/esm2015/lib/services/borrowing-expense/borrowing-expense.service.js +73 -73
- package/esm2015/lib/services/chart-accounts/chart-accounts-depreciations.service.js +38 -38
- package/esm2015/lib/services/chart-accounts/chart-accounts.service.js +89 -89
- package/esm2015/lib/services/chat/chat.service.js +77 -77
- package/esm2015/lib/services/chat/message-document.service.js +118 -118
- package/esm2015/lib/services/chat/message.service.js +65 -65
- package/esm2015/lib/services/client/client-invite.service.js +102 -102
- package/esm2015/lib/services/client/client-movement.service.js +98 -98
- package/esm2015/lib/services/client/client-portfolio-report.service.js +37 -37
- package/esm2015/lib/services/depreciation/capital-project.service.js +62 -62
- package/esm2015/lib/services/depreciation/depreciation.service.js +146 -146
- package/esm2015/lib/services/document/document-folder.service.js +84 -84
- package/esm2015/lib/services/employee/employee-invite.service.js +53 -53
- package/esm2015/lib/services/employee/employee.service.js +39 -39
- package/esm2015/lib/services/event/event-dispatcher.service.js +30 -30
- package/esm2015/lib/services/event/sse.service.js +46 -46
- package/esm2015/lib/services/firm/firm.service.js +79 -79
- package/esm2015/lib/services/header-title/header-title.service.js +28 -28
- package/esm2015/lib/services/income-source/income-source-forecast.service.js +90 -90
- package/esm2015/lib/services/income-source/income-source.service.js +109 -109
- package/esm2015/lib/services/income-source/salary-forecast.service.js +90 -90
- package/esm2015/lib/services/income-source/sole-forecast.service.js +87 -87
- package/esm2015/lib/services/intercom/intercom.service.js +41 -41
- package/esm2015/lib/services/loan/loan.service.js +145 -145
- package/esm2015/lib/services/notification/notification.service.js +65 -65
- package/esm2015/lib/services/pdf/pdf.service.js +94 -94
- package/esm2015/lib/services/preloader/preloader.service.js +30 -30
- package/esm2015/lib/services/property/corelogic/corelogic.service.js +46 -0
- package/esm2015/lib/services/property/equity-position-chart.service.js +45 -45
- package/esm2015/lib/services/property/property-calculation/property-calculation.service.js +121 -0
- package/esm2015/lib/services/property/property-category/property-category.service.js +23 -0
- package/esm2015/lib/services/property/property-category-movement.service.js +47 -47
- package/esm2015/lib/services/property/property-document/property-document.service.js +70 -0
- package/esm2015/lib/services/property/property-owner/property-owner.service.js +123 -0
- package/esm2015/lib/services/property/property-sale/property-sale.service.js +20 -0
- package/esm2015/lib/services/property/property-sale/tax-exemption/tax-exemption.service.js +21 -0
- package/esm2015/lib/services/property/property.service.js +126 -126
- package/esm2015/lib/services/subscription/subscription.service.js +138 -138
- package/esm2015/lib/services/tax-review/tax-review-history.service.js +41 -41
- package/esm2015/lib/services/tax-review/tax-review.service.js +103 -103
- package/esm2015/lib/services/tax-summary/tax-summary.service.js +71 -71
- package/esm2015/lib/services/transaction/transaction-allocation.service.js +85 -85
- package/esm2015/lib/services/transaction/transaction-calculation.service.js +47 -47
- package/esm2015/lib/services/transaction/transaction.service.js +319 -319
- package/esm2015/lib/services/user/occupation.service.js +45 -45
- package/esm2015/lib/services/user/user-switcher.service.js +37 -37
- package/esm2015/lib/services/user/user.service.js +124 -124
- package/esm2015/lib/services/user-event/user-event-setting.service.js +59 -59
- package/esm2015/lib/services/user-event/user-event-type.service.js +29 -29
- package/esm2015/lib/services/work/work-tank.service.js +236 -236
- package/esm2015/lib/services/xlsx/xlsx.service.js +54 -54
- package/esm2015/lib/tt-core.module.js +36 -36
- package/esm2015/public-api.js +351 -347
- package/esm2015/taxtank-core.js +4 -4
- package/fesm2015/taxtank-core.js +10016 -9877
- package/fesm2015/taxtank-core.js.map +1 -1
- package/lib/collections/bank-account.collection.d.ts +67 -67
- package/lib/collections/bank-transaction.collection.d.ts +72 -72
- package/lib/collections/client-movement.collection.d.ts +17 -17
- package/lib/collections/client-portfolio-report.collection.d.ts +26 -26
- package/lib/collections/client.collection.d.ts +4 -4
- package/lib/collections/collection-dictionary.d.ts +47 -47
- package/lib/collections/collection.d.ts +37 -37
- package/lib/collections/depreciation-forecast.collection.d.ts +11 -11
- package/lib/collections/depreciation.collection.d.ts +36 -33
- package/lib/collections/employee.collection.d.ts +6 -6
- package/lib/collections/income-source.collection.d.ts +25 -25
- package/lib/collections/loan.collection.d.ts +14 -14
- package/lib/collections/logbook.collection.d.ts +19 -19
- package/lib/collections/message-document.collection.d.ts +11 -11
- package/lib/collections/message.collection.d.ts +14 -14
- package/lib/collections/property/property-sale/property-sale-tax-exemption-metadata.collection.d.ts +8 -0
- package/lib/collections/{property.collection.d.ts → property/property.collection.d.ts} +38 -38
- package/lib/collections/service-price.collection.d.ts +6 -6
- package/lib/collections/service-subscription.collection.d.ts +8 -8
- package/lib/collections/tax-return-category-item.collection.d.ts +68 -68
- package/lib/collections/tax-review.collection.d.ts +35 -35
- package/lib/collections/transaction-allocation.collection.d.ts +23 -23
- package/lib/collections/transaction.collection.d.ts +77 -77
- package/lib/collections/user-event-setting.collection.d.ts +8 -8
- package/lib/db/Enums/address-type.enum.d.ts +4 -4
- package/lib/db/Enums/bank-account-status.enum.d.ts +4 -4
- package/lib/db/Enums/bank-account-type.enum.d.ts +10 -10
- package/lib/db/Enums/bank-connection-status.enum.d.ts +5 -5
- package/lib/db/Enums/bank-transaction-type.enum.d.ts +4 -4
- package/lib/db/Enums/chart-accounts-category.enum.d.ts +16 -13
- package/lib/db/Enums/chart-accounts-etp.enum.d.ts +7 -7
- package/lib/db/Enums/chart-accounts-heading-tax-deductible.enum.d.ts +6 -6
- package/lib/db/Enums/chart-accounts-heading-taxable.enum.d.ts +6 -6
- package/lib/db/Enums/chart-accounts-heading-vehicle-list.enum.d.ts +4 -4
- package/lib/db/Enums/chart-accounts-list.enum.d.ts +19 -19
- package/lib/db/Enums/chart-accounts-metadata-list.enum.d.ts +14 -14
- package/lib/db/Enums/chart-accounts-metadata-type.enum.d.ts +4 -4
- package/lib/db/Enums/chart-accounts-type.enum.d.ts +4 -4
- package/lib/db/Enums/chat-status.enum.d.ts +4 -4
- package/lib/db/Enums/client-details-medicare-exemption.enum.d.ts +5 -5
- package/lib/db/Enums/client-details-work-depreciation-calculation.enum.d.ts +4 -4
- package/lib/db/Enums/client-details-working-holiday-maker.enum.d.ts +5 -5
- package/lib/db/Enums/client-invite-status.enum.d.ts +4 -4
- package/lib/db/Enums/client-invite-type.enum.d.ts +4 -4
- package/lib/db/Enums/depreciation-calculation-percent.enum.d.ts +7 -7
- package/lib/db/Enums/depreciation-calculation.enum.d.ts +7 -7
- package/lib/db/Enums/depreciation-type.enum.d.ts +6 -6
- package/lib/db/Enums/depreciation-write-off-amount.enum.d.ts +4 -4
- package/lib/db/Enums/firm-type.enum.d.ts +4 -4
- package/lib/db/Enums/income-source-type-list-other.enum.d.ts +6 -6
- package/lib/db/Enums/income-source-type-list-salary.enum.d.ts +3 -3
- package/lib/db/Enums/income-source-type-list-work.enum.d.ts +8 -8
- package/lib/db/Enums/income-source-type.enum.d.ts +6 -6
- package/lib/db/Enums/invite-status.enum.d.ts +5 -5
- package/lib/db/Enums/loan-bank-type.enum.d.ts +10 -10
- package/lib/db/Enums/loan-frequency.enum.d.ts +6 -6
- package/lib/db/Enums/loan-interest-type.enum.d.ts +4 -4
- package/lib/db/Enums/loan-payout-type.enum.d.ts +4 -4
- package/lib/db/Enums/loan-repayment-frequency.enum.d.ts +5 -5
- package/lib/db/Enums/loan-repayment-type.enum.d.ts +4 -4
- package/lib/db/Enums/loan-type.enum.d.ts +12 -12
- package/lib/db/Enums/loan-vehicle-type.enum.d.ts +5 -5
- package/lib/db/Enums/phone-type.enum.d.ts +4 -4
- package/lib/db/Enums/property/property-category-list.enum.d.ts +3 -0
- package/lib/db/Enums/{property-depreciation-calculation.enum.d.ts → property/property-depreciation-calculation.enum.d.ts} +4 -4
- package/lib/db/Enums/{property-owner-access.enum.d.ts → property/property-owner-access.enum.d.ts} +4 -4
- package/lib/db/Enums/{property-owner-status.enum.d.ts → property/property-owner-status.enum.d.ts} +5 -5
- package/lib/db/Enums/property/property-sale/tax-exemption-metadata.enum.d.ts +5 -0
- package/lib/db/Enums/property/property-sale/tax-exemption.enum.d.ts +9 -0
- package/lib/db/Enums/registration-invite-status.enum.d.ts +4 -4
- package/lib/db/Enums/salary-forecast-frequency.enum.d.ts +6 -6
- package/lib/db/Enums/service-notification-status.enum.d.ts +5 -5
- package/lib/db/Enums/service-notification-type.enum.d.ts +4 -4
- package/lib/db/Enums/service-payment-status.enum.d.ts +4 -4
- package/lib/db/Enums/service-price-recurring-interval.enum.d.ts +6 -6
- package/lib/db/Enums/service-price-type.enum.d.ts +4 -4
- package/lib/db/Enums/service-subscription-status.enum.d.ts +8 -8
- package/lib/db/Enums/spare-document-spare-type.enum.d.ts +4 -4
- package/lib/db/Enums/tank-type.enum.d.ts +6 -5
- package/lib/db/Enums/tax-calculation-medicare-exemption.enum.d.ts +4 -4
- package/lib/db/Enums/tax-calculation-type.enum.d.ts +12 -12
- package/lib/db/Enums/tax-return-category-list.enum.d.ts +26 -26
- package/lib/db/Enums/tax-return-category-section.enum.d.ts +6 -6
- package/lib/db/Enums/tax-review-status.enum.d.ts +11 -11
- package/lib/db/Enums/tax-summary-list.enum.d.ts +15 -15
- package/lib/db/Enums/tax-summary-section.enum.d.ts +6 -6
- package/lib/db/Enums/tax-summary-tax-summary.enum.d.ts +15 -15
- package/lib/db/Enums/ticket-feedback.enum.d.ts +4 -4
- package/lib/db/Enums/ticket-status.enum.d.ts +7 -7
- package/lib/db/Enums/ticket-types.enum.d.ts +3 -3
- package/lib/db/Enums/transaction-operation.enum.d.ts +5 -5
- package/lib/db/Enums/transaction-source.enum.d.ts +4 -4
- package/lib/db/Enums/transaction-type.enum.d.ts +4 -4
- package/lib/db/Enums/user-event-status.enum.d.ts +7 -7
- package/lib/db/Enums/user-event-type-client-type.enum.d.ts +27 -27
- package/lib/db/Enums/user-event-type-employee-type.enum.d.ts +15 -15
- package/lib/db/Enums/user-event-type-frequency.enum.d.ts +5 -5
- package/lib/db/Enums/user-event-type-user-type.enum.d.ts +5 -5
- package/lib/db/Enums/user-medicare-exemption.enum.d.ts +5 -5
- package/lib/db/Enums/user-roles.enum.d.ts +13 -13
- package/lib/db/Enums/user-status.enum.d.ts +6 -6
- package/lib/db/Enums/user-title.enum.d.ts +7 -7
- package/lib/db/Enums/user-work-depreciation-calculation.enum.d.ts +4 -4
- package/lib/db/Enums/user-working-holiday-maker.enum.d.ts +5 -5
- package/lib/db/Enums/vehicle-claim-method.enum.d.ts +4 -4
- package/lib/db/Enums/vehicle-logbook-purpose.enum.d.ts +4 -4
- package/lib/db/Models/address.d.ts +19 -19
- package/lib/db/Models/bank-account-balance.d.ts +12 -12
- package/lib/db/Models/bank-account-property.d.ts +8 -8
- package/lib/db/Models/bank-account.d.ts +33 -33
- package/lib/db/Models/bank-connection.d.ts +14 -14
- package/lib/db/Models/bank-transaction-import.d.ts +11 -11
- package/lib/db/Models/bank-transaction.d.ts +16 -16
- package/lib/db/Models/bank.d.ts +11 -11
- package/lib/db/Models/basiq-job.d.ts +8 -8
- package/lib/db/Models/borrowing-expense-loan.d.ts +14 -14
- package/lib/db/Models/borrowing-expense.d.ts +7 -7
- package/lib/db/Models/chart-accounts-depreciation.d.ts +10 -10
- package/lib/db/Models/chart-accounts-heading.d.ts +6 -6
- package/lib/db/Models/chart-accounts-metadata.d.ts +11 -11
- package/lib/db/Models/chart-accounts-value.d.ts +12 -12
- package/lib/db/Models/chart-accounts.d.ts +23 -23
- package/lib/db/Models/chat.d.ts +17 -17
- package/lib/db/Models/client-details.d.ts +29 -29
- package/lib/db/Models/client-invite.d.ts +16 -16
- package/lib/db/Models/client-movement.d.ts +12 -12
- package/lib/db/Models/country.d.ts +5 -5
- package/lib/db/Models/depreciation-capital-project.d.ts +13 -13
- package/lib/db/Models/depreciation-forecast.d.ts +18 -18
- package/lib/db/Models/depreciation-receipt.d.ts +11 -11
- package/lib/db/Models/depreciation.d.ts +42 -42
- package/lib/db/Models/document-folder.d.ts +9 -9
- package/lib/db/Models/document.d.ts +11 -11
- package/lib/db/Models/employee-details.d.ts +7 -7
- package/lib/db/Models/employee-invite.d.ts +9 -9
- package/lib/db/Models/financial-data-system.d.ts +9 -9
- package/lib/db/Models/firm.d.ts +28 -28
- package/lib/db/Models/income-source-forecast.d.ts +12 -12
- package/lib/db/Models/income-source-type.d.ts +8 -8
- package/lib/db/Models/income-source.d.ts +22 -22
- package/lib/db/Models/loan-payout.d.ts +12 -12
- package/lib/db/Models/loan.d.ts +33 -33
- package/lib/db/Models/message-document.d.ts +15 -15
- package/lib/db/Models/message.d.ts +15 -15
- package/lib/db/Models/occupation.d.ts +5 -5
- package/lib/db/Models/phone.d.ts +12 -12
- package/lib/db/Models/{property-category-movement.d.ts → property/property-category-movement.d.ts} +17 -17
- package/lib/db/Models/{property-category.d.ts → property/property-category.d.ts} +13 -13
- package/lib/db/Models/{property-document.d.ts → property/property-document.d.ts} +13 -13
- package/lib/db/Models/{property-forecast.d.ts → property/property-forecast.d.ts} +14 -14
- package/lib/db/Models/{property-owner.d.ts → property/property-owner.d.ts} +20 -20
- package/lib/db/Models/property/property-sale/property-sale-tax-exemption-metadata.d.ts +8 -0
- package/lib/db/Models/property/property-sale/property-sale.d.ts +20 -0
- package/lib/db/Models/property/property-sale/tax-exemption-metadata.d.ts +6 -0
- package/lib/db/Models/property/property-sale/tax-exemption.d.ts +7 -0
- package/lib/db/Models/{property-subscription.d.ts → property/property-subscription.d.ts} +9 -9
- package/lib/db/Models/{property-valuation.d.ts → property/property-valuation.d.ts} +12 -12
- package/lib/db/Models/{property.d.ts → property/property.d.ts} +42 -41
- package/lib/db/Models/registration-invite.d.ts +12 -12
- package/lib/db/Models/salary-forecast.d.ts +15 -15
- package/lib/db/Models/service-notification.d.ts +13 -13
- package/lib/db/Models/service-payment.d.ts +11 -11
- package/lib/db/Models/service-price.d.ts +15 -15
- package/lib/db/Models/service-product.d.ts +12 -12
- package/lib/db/Models/service-subscription-item.d.ts +9 -9
- package/lib/db/Models/service-subscription.d.ts +14 -14
- package/lib/db/Models/sole-forecast.d.ts +8 -8
- package/lib/db/Models/tax-return-category.d.ts +12 -12
- package/lib/db/Models/tax-return-item.d.ts +15 -15
- package/lib/db/Models/tax-return.d.ts +8 -8
- package/lib/db/Models/tax-review.d.ts +13 -13
- package/lib/db/Models/ticket.d.ts +19 -19
- package/lib/db/Models/transaction-allocation.d.ts +8 -8
- package/lib/db/Models/transaction-base.d.ts +22 -22
- package/lib/db/Models/transaction-metadata.d.ts +11 -11
- package/lib/db/Models/transaction-receipt.d.ts +11 -11
- package/lib/db/Models/transaction.d.ts +43 -43
- package/lib/db/Models/user-event-setting.d.ts +10 -10
- package/lib/db/Models/user-event-type-category.d.ts +4 -4
- package/lib/db/Models/user-event-type.d.ts +17 -17
- package/lib/db/Models/user-event.d.ts +15 -15
- package/lib/db/Models/user.d.ts +51 -51
- package/lib/db/Models/vehicle-claim.d.ts +11 -11
- package/lib/db/Models/vehicle-logbook.d.ts +16 -16
- package/lib/db/Models/vehicle.d.ts +8 -8
- package/lib/functions/array/index.d.ts +3 -3
- package/lib/functions/array/replace.d.ts +1 -1
- package/lib/functions/array/sort-deep.d.ts +1 -1
- package/lib/functions/array/sort.d.ts +1 -1
- package/lib/functions/clone-deep.d.ts +1 -1
- package/lib/functions/create-date.d.ts +5 -5
- package/lib/functions/enum-to-list.d.ts +2 -2
- package/lib/functions/get-doc-icon.d.ts +7 -7
- package/lib/functions/mat-options-functions.d.ts +2 -2
- package/lib/functions/mat-sort-options.d.ts +7 -7
- package/lib/functions/round-to.d.ts +6 -6
- package/lib/functions/tax-review-filter-predicate.d.ts +7 -7
- package/lib/interceptors/corelogic-interceptor.d.ts +20 -20
- package/lib/interceptors/financial-year-interceptor.d.ts +12 -12
- package/lib/interceptors/interceptors.module.d.ts +6 -6
- package/lib/interceptors/jwt-interceptor.d.ts +42 -42
- package/lib/interceptors/preloader.interceptor.d.ts +15 -15
- package/lib/interceptors/user-switcher-interceptor.d.ts +19 -19
- package/lib/interfaces/asset-entity-type.enum.d.ts +10 -10
- package/lib/interfaces/asset-type.enum.d.ts +8 -8
- package/lib/interfaces/asset.interface.d.ts +17 -17
- package/lib/interfaces/chart-data.interface.d.ts +10 -10
- package/lib/interfaces/chart-serie.interface.d.ts +8 -8
- package/lib/interfaces/document.interface.d.ts +18 -18
- package/lib/interfaces/documentable.interface.d.ts +8 -8
- package/lib/interfaces/event-listener.interface.d.ts +9 -9
- package/lib/interfaces/income-source-forecast.interface.d.ts +10 -10
- package/lib/interfaces/option.interface.d.ts +4 -4
- package/lib/interfaces/photoable.d.ts +13 -13
- package/lib/interfaces/receipt.interface.d.ts +12 -12
- package/lib/interfaces/tank.interface.d.ts +7 -7
- package/lib/models/address/address.d.ts +11 -11
- package/lib/models/address/country.d.ts +11 -11
- package/lib/models/bank/bank-account-chart-data.d.ts +17 -17
- package/lib/models/bank/bank-account-property.d.ts +5 -5
- package/lib/models/bank/bank-account-types.const.d.ts +7 -7
- package/lib/models/bank/bank-account.d.ts +72 -72
- package/lib/models/bank/bank-connection.d.ts +11 -11
- package/lib/models/bank/bank-transaction-chart-data.d.ts +30 -30
- package/lib/models/bank/bank-transaction-summary-fields.enum.d.ts +4 -4
- package/lib/models/bank/bank-transaction.d.ts +38 -38
- package/lib/models/bank/bank.d.ts +6 -6
- package/lib/models/bank/basiq-job.d.ts +3 -3
- package/lib/models/bank/basiq-token.d.ts +9 -9
- package/lib/models/bank/type-loan.const.d.ts +2 -2
- package/lib/models/borrowing-expense/borrowing-expense-loan.d.ts +3 -3
- package/lib/models/borrowing-expense/borrowing-expense.d.ts +3 -3
- package/lib/models/chart/chart-data.d.ts +9 -9
- package/lib/models/chart/chart-serie.d.ts +8 -8
- package/lib/models/chart-accounts/chart-accounts-categories.const.d.ts +4 -4
- package/lib/models/chart-accounts/chart-accounts-depreciation.d.ts +7 -7
- package/lib/models/chart-accounts/chart-accounts-heading.d.ts +5 -5
- package/lib/models/chart-accounts/chart-accounts-metadata.d.ts +8 -8
- package/lib/models/chart-accounts/chart-accounts-tax-labels.enum.d.ts +5 -5
- package/lib/models/chart-accounts/chart-accounts.d.ts +66 -66
- package/lib/models/chat/chat-view-type.enum.d.ts +4 -4
- package/lib/models/chat/chat.d.ts +10 -10
- package/lib/models/chat/message-document.d.ts +11 -11
- package/lib/models/chat/message.d.ts +20 -20
- package/lib/models/client/client-details.d.ts +3 -3
- package/lib/models/client/client-invite.d.ts +34 -34
- package/lib/models/client/client-movement.d.ts +12 -12
- package/lib/models/client/client-portfolio-chart-data.d.ts +11 -11
- package/lib/models/client/client-portfolio-report.d.ts +10 -10
- package/lib/models/color/alphabet-colors.enum.d.ts +28 -28
- package/lib/models/data-table/data-table-column.d.ts +20 -20
- package/lib/models/data-table/data-table.d.ts +24 -24
- package/lib/models/depreciation/depreciation-capital-project.d.ts +5 -5
- package/lib/models/depreciation/depreciation-forecast.d.ts +8 -8
- package/lib/models/depreciation/depreciation-group-item.d.ts +10 -10
- package/lib/models/depreciation/depreciation-group.d.ts +11 -11
- package/lib/models/depreciation/depreciation-group.enum.d.ts +7 -7
- package/lib/models/depreciation/depreciation-groups.const.d.ts +9 -9
- package/lib/models/depreciation/depreciation-receipt.d.ts +8 -8
- package/lib/models/depreciation/depreciation.d.ts +76 -75
- package/lib/models/document/document-api-url-prefix.enum.d.ts +7 -7
- package/lib/models/document/document-file-types.const.d.ts +3 -3
- package/lib/models/document/document-folder.d.ts +7 -7
- package/lib/models/document/document.d.ts +21 -21
- package/lib/models/employee/employee-details.d.ts +5 -5
- package/lib/models/employee/employee-invite.d.ts +7 -7
- package/lib/models/endpoint/endpoint.d.ts +22 -22
- package/lib/models/endpoint/endpoints.const.d.ts +7 -7
- package/lib/models/event/app-event-type.enum.d.ts +40 -40
- package/lib/models/event/app-event.d.ts +9 -9
- package/lib/models/file/icons-file.enum.d.ts +5 -5
- package/lib/models/financial-year/financial-year.d.ts +19 -19
- package/lib/models/financial-year/month-name-short.enum.d.ts +19 -19
- package/lib/models/financial-year/month-number.enum.d.ts +19 -19
- package/lib/models/financial-year/months.const.d.ts +1 -1
- package/lib/models/firm/firm.d.ts +18 -18
- package/lib/models/income-position/income-position.d.ts +9 -9
- package/lib/models/income-source/income-source-chart-data.d.ts +14 -14
- package/lib/models/income-source/income-source-forecast.d.ts +18 -18
- package/lib/models/income-source/income-source-type.d.ts +9 -9
- package/lib/models/income-source/income-source.d.ts +29 -29
- package/lib/models/income-source/salary-forecast.d.ts +7 -7
- package/lib/models/income-source/sole-forecast.d.ts +7 -7
- package/lib/models/loan/loan-max-number-of-payments.enum.d.ts +8 -8
- package/lib/models/loan/loan-payment.d.ts +13 -13
- package/lib/models/loan/loan-payout.d.ts +9 -9
- package/lib/models/loan/loan.d.ts +20 -20
- package/lib/models/logbook/default-vehicle-expense.d.ts +5 -5
- package/lib/models/logbook/logbook-period.d.ts +6 -6
- package/lib/models/logbook/logbook-purpose-options.const.d.ts +4 -4
- package/lib/models/logbook/vehicle-claim.d.ts +19 -19
- package/lib/models/logbook/vehicle-logbook.d.ts +6 -6
- package/lib/models/logbook/vehicle.d.ts +12 -12
- package/lib/models/notification/notification.d.ts +14 -14
- package/lib/models/pdf/pdf-config.d.ts +8 -8
- package/lib/models/phone/phone.d.ts +6 -6
- package/lib/models/property/calculation-form-item.d.ts +15 -15
- package/lib/models/property/calculation-form-type.enum.d.ts +7 -7
- package/lib/models/property/capital-costs-itmes.const.d.ts +2 -2
- package/lib/models/property/corelogic-suggestion.d.ts +18 -18
- package/lib/models/property/ownership-filter-options.enum.d.ts +8 -8
- package/lib/models/property/property-category-movement.d.ts +9 -9
- package/lib/models/property/property-category.d.ts +5 -4
- package/lib/models/property/property-document.d.ts +14 -14
- package/lib/models/property/property-equity-chart-data.d.ts +62 -62
- package/lib/models/property/property-equity-chart-item.d.ts +19 -19
- package/lib/models/property/property-equity-chart-type.enum.d.ts +4 -4
- package/lib/models/property/property-forecast.d.ts +28 -28
- package/lib/models/property/property-owner.d.ts +21 -21
- package/lib/models/property/property-sale/property-sale-tax-exemption-metadata.d.ts +3 -0
- package/lib/models/property/property-sale/property-sale.d.ts +8 -0
- package/lib/models/property/property-sale/tax-exemption-metadata.d.ts +3 -0
- package/lib/models/property/property-sale/tax-exemption.d.ts +3 -0
- package/lib/models/property/property-subscription.d.ts +6 -6
- package/lib/models/property/property-valuation.d.ts +9 -9
- package/lib/models/property/property.d.ts +86 -55
- package/lib/models/registration-invite/registration-invite.d.ts +6 -6
- package/lib/models/service-subscription/module-url-list.const.d.ts +6 -6
- package/lib/models/service-subscription/service-payment.d.ts +5 -5
- package/lib/models/service-subscription/service-price.d.ts +5 -5
- package/lib/models/service-subscription/service-product.d.ts +5 -5
- package/lib/models/service-subscription/service-subscription-item.d.ts +6 -6
- package/lib/models/service-subscription/service-subscription.d.ts +55 -55
- package/lib/models/service-subscription/subscription-description.const.d.ts +3 -3
- package/lib/models/service-subscription/subscription-title.const.d.ts +3 -3
- package/lib/models/service-subscription/subscription-type.enum.d.ts +6 -6
- package/lib/models/tax-review/tax-review.d.ts +52 -52
- package/lib/models/tax-summary/tax-return-category-item-details.d.ts +13 -13
- package/lib/models/tax-summary/tax-return-category-item.d.ts +18 -18
- package/lib/models/tax-summary/tax-summary-section.d.ts +12 -12
- package/lib/models/tax-summary/tax-summary-type.enum.d.ts +7 -7
- package/lib/models/tax-summary/tax-summary.d.ts +44 -44
- package/lib/models/transaction/income-amount-type.enum.d.ts +7 -7
- package/lib/models/transaction/transaction-allocation.d.ts +12 -12
- package/lib/models/transaction/transaction-metadata.d.ts +5 -5
- package/lib/models/transaction/transaction-receipt.d.ts +8 -8
- package/lib/models/transaction/transaction.d.ts +99 -99
- package/lib/models/user/my-account-history-initiated-by.enum.d.ts +4 -4
- package/lib/models/user/my-account-history-status.enum.d.ts +4 -4
- package/lib/models/user/my-account-history-type.enum.d.ts +5 -5
- package/lib/models/user/my-account-history.d.ts +11 -11
- package/lib/models/user/occupation.d.ts +3 -3
- package/lib/models/user/user-roles.const.d.ts +4 -4
- package/lib/models/user/user-to-register.d.ts +7 -7
- package/lib/models/user/user-work-position.const.d.ts +3 -3
- package/lib/models/user/user.d.ts +64 -64
- package/lib/models/user-event/user-event-setting-field.enum.d.ts +8 -8
- package/lib/models/user-event/user-event-setting.d.ts +6 -6
- package/lib/models/user-event/user-event-type-category.d.ts +3 -3
- package/lib/models/user-event/user-event-type.d.ts +7 -7
- package/lib/services/address/address.service.d.ts +14 -14
- package/lib/services/asset/assets.service.d.ts +34 -34
- package/lib/services/auth/auth.service.d.ts +17 -17
- package/lib/services/auth/jwt.service.d.ts +16 -16
- package/lib/services/bank/bank-account-calculation.service.d.ts +19 -19
- package/lib/services/bank/bank-account.service.d.ts +48 -48
- package/lib/services/bank/bank-connection.service.d.ts +24 -24
- package/lib/services/bank/bank-transaction-calculation.service.d.ts +41 -41
- package/lib/services/bank/bank-transaction.service.d.ts +38 -38
- package/lib/services/bank/bank.service.d.ts +14 -14
- package/lib/services/bank/basiq.service.d.ts +42 -42
- package/lib/services/base-rest.service.d.ts +91 -91
- package/lib/services/borrowing-expense/borrowing-expense.service.d.ts +19 -19
- package/lib/services/chart-accounts/chart-accounts-depreciations.service.d.ts +19 -19
- package/lib/services/chart-accounts/chart-accounts.service.d.ts +37 -37
- package/lib/services/chat/chat.service.d.ts +31 -31
- package/lib/services/chat/message-document.service.d.ts +50 -50
- package/lib/services/chat/message.service.d.ts +31 -31
- package/lib/services/client/client-invite.service.d.ts +36 -36
- package/lib/services/client/client-movement.service.d.ts +40 -40
- package/lib/services/client/client-portfolio-report.service.d.ts +16 -16
- package/lib/services/depreciation/capital-project.service.d.ts +20 -20
- package/lib/services/depreciation/depreciation.service.d.ts +59 -59
- package/lib/services/document/document-folder.service.d.ts +40 -40
- package/lib/services/employee/employee-invite.service.d.ts +21 -21
- package/lib/services/employee/employee.service.d.ts +16 -16
- package/lib/services/event/event-dispatcher.service.d.ts +17 -17
- package/lib/services/event/sse.service.d.ts +16 -16
- package/lib/services/firm/firm.service.d.ts +27 -27
- package/lib/services/header-title/header-title.service.d.ts +11 -11
- package/lib/services/income-source/income-source-forecast.service.d.ts +36 -36
- package/lib/services/income-source/income-source.service.d.ts +48 -48
- package/lib/services/income-source/salary-forecast.service.d.ts +37 -37
- package/lib/services/income-source/sole-forecast.service.d.ts +33 -33
- package/lib/services/intercom/intercom.service.d.ts +21 -21
- package/lib/services/loan/loan.service.d.ts +63 -63
- package/lib/services/notification/notification.service.d.ts +31 -31
- package/lib/services/pdf/pdf.service.d.ts +24 -24
- package/lib/services/preloader/preloader.service.d.ts +12 -12
- package/lib/services/property/{corelogic.service.d.ts → corelogic/corelogic.service.d.ts} +15 -15
- package/lib/services/property/equity-position-chart.service.d.ts +15 -15
- package/lib/services/property/{property-calculation.service.d.ts → property-calculation/property-calculation.service.d.ts} +33 -33
- package/lib/services/property/{property-category.service.d.ts → property-category/property-category.service.d.ts} +13 -13
- package/lib/services/property/property-category-movement.service.d.ts +15 -15
- package/lib/services/property/{property-document.service.d.ts → property-document/property-document.service.d.ts} +31 -31
- package/lib/services/property/{property-owner.service.d.ts → property-owner/property-owner.service.d.ts} +52 -52
- package/lib/services/property/property-sale/property-sale.service.d.ts +10 -0
- package/lib/services/property/property-sale/tax-exemption/tax-exemption.service.d.ts +11 -0
- package/lib/services/property/property.service.d.ts +54 -54
- package/lib/services/subscription/subscription.service.d.ts +47 -47
- package/lib/services/tax-review/tax-review-history.service.d.ts +19 -19
- package/lib/services/tax-review/tax-review.service.d.ts +44 -44
- package/lib/services/tax-summary/tax-summary.service.d.ts +31 -31
- package/lib/services/transaction/transaction-allocation.service.d.ts +43 -43
- package/lib/services/transaction/transaction-calculation.service.d.ts +29 -29
- package/lib/services/transaction/transaction.service.d.ts +92 -92
- package/lib/services/user/occupation.service.d.ts +20 -20
- package/lib/services/user/user-switcher.service.d.ts +20 -20
- package/lib/services/user/user.service.d.ts +60 -60
- package/lib/services/user-event/user-event-setting.service.d.ts +22 -22
- package/lib/services/user-event/user-event-type.service.d.ts +17 -17
- package/lib/services/work/work-tank.service.d.ts +93 -93
- package/lib/services/xlsx/xlsx.service.d.ts +11 -11
- package/lib/tt-core.module.d.ts +10 -10
- package/package.json +1 -1
- package/public-api.d.ts +350 -346
- package/taxtank-core.d.ts +5 -5
- package/esm2015/lib/collections/property.collection.js +0 -72
- package/esm2015/lib/db/Enums/property-owner-access.enum.js +0 -6
- package/esm2015/lib/db/Enums/property-owner-status.enum.js +0 -7
- package/esm2015/lib/db/Models/capital-cost-property.js +0 -3
- package/esm2015/lib/db/Models/capital-cost.js +0 -3
- package/esm2015/lib/db/Models/property-capital-cost.js +0 -3
- package/esm2015/lib/db/Models/property-category-movement.js +0 -3
- package/esm2015/lib/db/Models/property-category.js +0 -3
- package/esm2015/lib/db/Models/property-document.js +0 -3
- package/esm2015/lib/db/Models/property-forecast.js +0 -3
- package/esm2015/lib/db/Models/property-owner.js +0 -3
- package/esm2015/lib/db/Models/property-sold.js +0 -3
- package/esm2015/lib/db/Models/property-subscription.js +0 -3
- package/esm2015/lib/db/Models/property-valuation.js +0 -3
- package/esm2015/lib/db/Models/property.js +0 -3
- package/esm2015/lib/models/property/property-capital-cost.js +0 -4
- package/esm2015/lib/models/property/property-sold.js +0 -12
- package/esm2015/lib/services/property/corelogic.service.js +0 -46
- package/esm2015/lib/services/property/property-calculation.service.js +0 -121
- package/esm2015/lib/services/property/property-capital-cost.service.js +0 -46
- package/esm2015/lib/services/property/property-category.service.js +0 -23
- package/esm2015/lib/services/property/property-document.service.js +0 -68
- package/esm2015/lib/services/property/property-owner.service.js +0 -123
- package/esm2015/lib/services/property/property-sold.service.js +0 -23
- package/lib/db/Models/capital-cost-property.d.ts +0 -13
- package/lib/db/Models/capital-cost.d.ts +0 -4
- package/lib/db/Models/property-capital-cost.d.ts +0 -13
- package/lib/db/Models/property-sold.d.ts +0 -12
- package/lib/models/property/property-capital-cost.d.ts +0 -3
- package/lib/models/property/property-sold.d.ts +0 -5
- package/lib/services/property/property-capital-cost.service.d.ts +0 -20
- package/lib/services/property/property-sold.service.d.ts +0 -13
|
@@ -1,236 +1,236 @@
|
|
|
1
|
-
import { Inject, Injectable } from '@angular/core';
|
|
2
|
-
import { combineLatest, ReplaySubject } from 'rxjs';
|
|
3
|
-
import { map } from 'rxjs/operators';
|
|
4
|
-
import { ChartAccountsHeadingVehicleListEnum } from '../../db/Enums/chart-accounts-heading-vehicle-list.enum';
|
|
5
|
-
import { ChartAccountsListEnum } from '../../db/Enums/chart-accounts-list.enum';
|
|
6
|
-
import { plainToClass } from 'class-transformer';
|
|
7
|
-
import { enumToList } from '../../functions/enum-to-list';
|
|
8
|
-
import { Vehicle } from '../../models/logbook/vehicle';
|
|
9
|
-
import { VehicleClaim } from '../../models/logbook/vehicle-claim';
|
|
10
|
-
import { VehicleLogbook } from '../../models/logbook/vehicle-logbook';
|
|
11
|
-
import { AppEventTypeEnum } from '../../models/event/app-event-type.enum';
|
|
12
|
-
import { AppEvent } from '../../models/event/app-event';
|
|
13
|
-
import { FinancialYear } from '../../models/financial-year/financial-year';
|
|
14
|
-
import { Depreciation } from '../../models/depreciation/depreciation';
|
|
15
|
-
import * as i0 from "@angular/core";
|
|
16
|
-
import * as i1 from "@angular/common/http";
|
|
17
|
-
import * as i2 from "../transaction/transaction.service";
|
|
18
|
-
import * as i3 from "../depreciation/depreciation.service";
|
|
19
|
-
import * as i4 from "../chart-accounts/chart-accounts.service";
|
|
20
|
-
import * as i5 from "../event/event-dispatcher.service";
|
|
21
|
-
/**
|
|
22
|
-
* Service that allows to work with WorkTank operations
|
|
23
|
-
*/
|
|
24
|
-
export class WorkTankService {
|
|
25
|
-
constructor(http, transactionService, depreciationService, chartAccountsService, eventDispatcherService, environment) {
|
|
26
|
-
this.http = http;
|
|
27
|
-
this.transactionService = transactionService;
|
|
28
|
-
this.depreciationService = depreciationService;
|
|
29
|
-
this.chartAccountsService = chartAccountsService;
|
|
30
|
-
this.eventDispatcherService = eventDispatcherService;
|
|
31
|
-
this.environment = environment;
|
|
32
|
-
this.vehiclesSubject = new ReplaySubject(1);
|
|
33
|
-
this.vehicleClaimSubject = new ReplaySubject(1);
|
|
34
|
-
this.vehicleClaimRateSubject = new ReplaySubject(1);
|
|
35
|
-
this.vehicleTaxReturnSubject = new ReplaySubject(1);
|
|
36
|
-
this.incomePositionsSubject = new ReplaySubject(1);
|
|
37
|
-
}
|
|
38
|
-
getVehicles() {
|
|
39
|
-
// @TODO create backend for get logbook
|
|
40
|
-
if (!this._vehicles) {
|
|
41
|
-
this.http.get(`${this.environment.apiV2}/vehicles`)
|
|
42
|
-
.pipe(map((response) => {
|
|
43
|
-
return response.map((item) => plainToClass(Vehicle, item));
|
|
44
|
-
}))
|
|
45
|
-
.subscribe((vehicles) => {
|
|
46
|
-
this._vehicles = vehicles;
|
|
47
|
-
this.vehiclesSubject.next(vehicles);
|
|
48
|
-
});
|
|
49
|
-
}
|
|
50
|
-
return this.vehiclesSubject.asObservable();
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Get vehicles claim amount
|
|
54
|
-
*/
|
|
55
|
-
getVehiclesClaim() {
|
|
56
|
-
if (!this._vehicleClaim) {
|
|
57
|
-
this.http.get(`${this.environment.apiV2}/vehicle-claims`)
|
|
58
|
-
.pipe(map((response) => {
|
|
59
|
-
// return Vehicle claim from backend or create new if it not exist
|
|
60
|
-
return response.length ? response.map((item) => plainToClass(VehicleClaim, item))[0] : plainToClass(VehicleClaim, {});
|
|
61
|
-
}))
|
|
62
|
-
.subscribe((vehicleClaim) => {
|
|
63
|
-
this._vehicleClaim = vehicleClaim;
|
|
64
|
-
this.vehicleClaimSubject.next(vehicleClaim);
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
return this.vehicleClaimSubject.asObservable();
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Add new vehicle claim
|
|
71
|
-
* @param claim object which should be added
|
|
72
|
-
*/
|
|
73
|
-
addVehicleClaim(claim) {
|
|
74
|
-
return this.http.post(`${this.environment.apiV2}/vehicle-claims`, claim).pipe(map((response) => {
|
|
75
|
-
this._vehicleClaim = plainToClass(VehicleClaim, response);
|
|
76
|
-
this.vehicleClaimSubject.next(this._vehicleClaim);
|
|
77
|
-
this.eventDispatcherService.dispatch(new AppEvent(AppEventTypeEnum.VEHICLE_CLAIM_CREATED, null));
|
|
78
|
-
}));
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* Get vehicles claim rate for current financial year
|
|
82
|
-
*/
|
|
83
|
-
getVehiclesClaimRate() {
|
|
84
|
-
if (!this._vehicleClaimRate) {
|
|
85
|
-
this.chartAccountsService.getChartAccountsById(ChartAccountsListEnum.KLMS_TRAVELLED_FOR_WORK)
|
|
86
|
-
.pipe(map((response) => {
|
|
87
|
-
return response.values.find((chartAccount) => chartAccount.financialYear === new FinancialYear().year).value;
|
|
88
|
-
}))
|
|
89
|
-
.subscribe((claimRate) => {
|
|
90
|
-
this._vehicleClaimRate = claimRate;
|
|
91
|
-
this.vehicleClaimRateSubject.next(this._vehicleClaimRate);
|
|
92
|
-
});
|
|
93
|
-
}
|
|
94
|
-
return this.vehicleClaimRateSubject.asObservable();
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* Get vehicles tax return for vehicle transactions & depreciations
|
|
98
|
-
*/
|
|
99
|
-
getVehiclesTaxReturn() {
|
|
100
|
-
if (!this._vehicleTaxReturn) {
|
|
101
|
-
combineLatest([
|
|
102
|
-
// @Todo refactor to avoid injection of another services
|
|
103
|
-
this.transactionService.get(),
|
|
104
|
-
this.depreciationService.get(),
|
|
105
|
-
this.getVehiclesClaim()
|
|
106
|
-
]).pipe(map(([transactions, depreciations, vehicleClaim]) => {
|
|
107
|
-
const chartAccountsHeadingsIds = enumToList(ChartAccountsHeadingVehicleListEnum)
|
|
108
|
-
.map((item) => item.value);
|
|
109
|
-
// get transactions & depreciations which chart accounts headings are belong to vehicle category
|
|
110
|
-
// but except KLMS transaction
|
|
111
|
-
const filteredItems = [...transactions, ...depreciations].filter((item) => {
|
|
112
|
-
var _a;
|
|
113
|
-
return chartAccountsHeadingsIds.includes((_a = item.chartAccounts.heading) === null || _a === void 0 ? void 0 : _a.id) && !item.chartAccounts.isKlmsForWork();
|
|
114
|
-
});
|
|
115
|
-
// get claim amount sum
|
|
116
|
-
return filteredItems.reduce((sum, item) =>
|
|
117
|
-
// @Todo remove item.amount negative sign when depreciations will be refactored and will have negative sign
|
|
118
|
-
sum + ((item instanceof Depreciation ? item.currentYearForecast.amount : -item.amount) * (vehicleClaim.workUsage / 100)), 0);
|
|
119
|
-
}))
|
|
120
|
-
.subscribe((taxReturn) => {
|
|
121
|
-
this._vehicleTaxReturn = taxReturn;
|
|
122
|
-
this.vehicleTaxReturnSubject.next(this._vehicleTaxReturn);
|
|
123
|
-
});
|
|
124
|
-
}
|
|
125
|
-
return this.vehicleTaxReturnSubject.asObservable();
|
|
126
|
-
}
|
|
127
|
-
/**
|
|
128
|
-
* Update vehicle claim
|
|
129
|
-
* @param claim which should be updated
|
|
130
|
-
*
|
|
131
|
-
* @TODO alex refresh depreciation/transaction cache
|
|
132
|
-
*/
|
|
133
|
-
updateVehicleClaim(claim) {
|
|
134
|
-
return this.http.put(`${this.environment.apiV2}/vehicle-claims/${claim.id}`, claim).pipe(map((response) => {
|
|
135
|
-
const updatedVehicleClaim = plainToClass(VehicleClaim, response);
|
|
136
|
-
this._vehicleClaim = updatedVehicleClaim;
|
|
137
|
-
this.vehicleClaimSubject.next(this._vehicleClaim);
|
|
138
|
-
this.eventDispatcherService.dispatch(new AppEvent(AppEventTypeEnum.VEHICLE_CLAIM_UPDATED, null));
|
|
139
|
-
return updatedVehicleClaim;
|
|
140
|
-
}));
|
|
141
|
-
}
|
|
142
|
-
/**
|
|
143
|
-
* Add new logbook for desired vehicle
|
|
144
|
-
* @param logbook which should be added
|
|
145
|
-
* @param vehicle for which logbook object should be added
|
|
146
|
-
*/
|
|
147
|
-
addLogbook(logbook, vehicle) {
|
|
148
|
-
return this.http.post(`${this.environment.apiV2}/vehicles/${vehicle.id}/logbooks`, logbook)
|
|
149
|
-
.pipe(map((response) => {
|
|
150
|
-
this._vehicles.find((v) => v.id === vehicle.id).logbook.push(response);
|
|
151
|
-
// we update nested logbook object inside vehicles list. So list is not changed and next not emit subscriptions updates.
|
|
152
|
-
// that is why we recreate vehicles array
|
|
153
|
-
this.vehiclesSubject.next(this._vehicles.map((item) => plainToClass(Vehicle, item)));
|
|
154
|
-
}));
|
|
155
|
-
}
|
|
156
|
-
/**
|
|
157
|
-
* Update logbook
|
|
158
|
-
* @param logbook which should be updated
|
|
159
|
-
* @param vehicle for which logbook object should be updated
|
|
160
|
-
*/
|
|
161
|
-
updateLogbook(logbook, vehicle) {
|
|
162
|
-
return this.http.put(`${this.environment.apiV2}/vehicles/${vehicle.id}/logbooks/${logbook.id}`, logbook).pipe(map((response) => {
|
|
163
|
-
const editedVehicle = this._vehicles.find((v) => v.id === vehicle.id);
|
|
164
|
-
const editedLogbookIndex = editedVehicle.logbook.findIndex((l) => l.id === logbook.id);
|
|
165
|
-
editedVehicle.logbook.splice(editedLogbookIndex, 1, plainToClass(VehicleLogbook, response));
|
|
166
|
-
// we update nested logbook object inside vehicles list. So list is not changed and next not emit subscriptions updates.
|
|
167
|
-
// that is why we recreate vehicles array
|
|
168
|
-
this.vehiclesSubject.next(this._vehicles.map((item) => plainToClass(Vehicle, item)));
|
|
169
|
-
}));
|
|
170
|
-
}
|
|
171
|
-
/**
|
|
172
|
-
* Delete trip
|
|
173
|
-
* @param logbook for which trip should be deleted
|
|
174
|
-
* @param vehicle for which trip should be deleted
|
|
175
|
-
*/
|
|
176
|
-
deleteTrip(logbook, vehicle) {
|
|
177
|
-
return this.http.delete(`${this.environment.apiV2}/vehicles/${vehicle.id}/logbooks/${logbook.id}`)
|
|
178
|
-
.pipe(map(() => {
|
|
179
|
-
const editedVehicle = this._vehicles.find((v) => v.id === vehicle.id);
|
|
180
|
-
const deletedLogbookIndex = editedVehicle.logbook.findIndex((l) => l.id === logbook.id);
|
|
181
|
-
editedVehicle.logbook.splice(deletedLogbookIndex, 1);
|
|
182
|
-
// we update nested logbook object inside vehicles list. So list is not changed and next not emit subscriptions updates.
|
|
183
|
-
// that is why we recreate vehicles array
|
|
184
|
-
this.vehiclesSubject.next(this._vehicles.map((item) => plainToClass(Vehicle, item)));
|
|
185
|
-
}));
|
|
186
|
-
}
|
|
187
|
-
/**
|
|
188
|
-
* Add new vehicle
|
|
189
|
-
* @param vehicle which should be added
|
|
190
|
-
*/
|
|
191
|
-
addVehicle(vehicle) {
|
|
192
|
-
return this.http.post(`${this.environment.apiV2}/vehicles`, { name: vehicle.name })
|
|
193
|
-
.pipe(map((response) => {
|
|
194
|
-
this._vehicles.push(plainToClass(Vehicle, response));
|
|
195
|
-
this.vehiclesSubject.next(this._vehicles);
|
|
196
|
-
}));
|
|
197
|
-
}
|
|
198
|
-
/**
|
|
199
|
-
* Update vehicle
|
|
200
|
-
* @param vehicle which should be updated
|
|
201
|
-
*/
|
|
202
|
-
updateVehicle(vehicle) {
|
|
203
|
-
return this.http.put(`${this.environment.apiV2}/vehicles/${vehicle.id}`, { name: vehicle.name })
|
|
204
|
-
.pipe(map((response) => {
|
|
205
|
-
const editedVehicleIndex = this._vehicles.findIndex((v) => v.id === vehicle.id);
|
|
206
|
-
this._vehicles.splice(editedVehicleIndex, 1, plainToClass(Vehicle, response));
|
|
207
|
-
this.vehiclesSubject.next(this._vehicles);
|
|
208
|
-
}));
|
|
209
|
-
}
|
|
210
|
-
/**
|
|
211
|
-
* Delete vehicle
|
|
212
|
-
* @param vehicle which should be deleted
|
|
213
|
-
*/
|
|
214
|
-
deleteVehicle(vehicle) {
|
|
215
|
-
return this.http.delete(`${this.environment.apiV2}/vehicles/${vehicle.id}`)
|
|
216
|
-
.pipe(map(() => {
|
|
217
|
-
const deletedVehicleIndex = this._vehicles.findIndex((v) => v.id === vehicle.id);
|
|
218
|
-
this._vehicles.splice(deletedVehicleIndex, 1);
|
|
219
|
-
// we update nested logbook object inside vehicles list. So list is not changed and next not emit subscriptions updates.
|
|
220
|
-
// that is why we recreate vehicles array
|
|
221
|
-
this.vehiclesSubject.next(this._vehicles.map((item) => plainToClass(Vehicle, item)));
|
|
222
|
-
}));
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
WorkTankService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: WorkTankService, deps: [{ token: i1.HttpClient }, { token: i2.TransactionService }, { token: i3.DepreciationService }, { token: i4.ChartAccountsService }, { token: i5.EventDispatcherService }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
226
|
-
WorkTankService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: WorkTankService, providedIn: 'root' });
|
|
227
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: WorkTankService, decorators: [{
|
|
228
|
-
type: Injectable,
|
|
229
|
-
args: [{
|
|
230
|
-
providedIn: 'root'
|
|
231
|
-
}]
|
|
232
|
-
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.TransactionService }, { type: i3.DepreciationService }, { type: i4.ChartAccountsService }, { type: i5.EventDispatcherService }, { type: undefined, decorators: [{
|
|
233
|
-
type: Inject,
|
|
234
|
-
args: ['environment']
|
|
235
|
-
}] }]; } });
|
|
236
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29yay10YW5rLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dC1jb3JlL3NyYy9saWIvc2VydmljZXMvd29yay93b3JrLXRhbmsuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUUsYUFBYSxFQUFjLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0seURBQXlELENBQUM7QUFDOUcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDaEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRWpELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUV0RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBRTNFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7Ozs7OztBQUt0RTs7R0FFRztBQUlILE1BQU0sT0FBTyxlQUFlO0lBYTFCLFlBQ1UsSUFBZ0IsRUFDaEIsa0JBQXNDLEVBQ3RDLG1CQUF3QyxFQUN4QyxvQkFBMEMsRUFDMUMsc0JB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QUNILGFBQWEsQ0FBQyxPQUFnQjtRQUM1QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLGFBQWEsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDO2FBQ3hFLElBQUksQ0FDSCxHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ1AsTUFBTSxtQkFBbUIsR0FBVyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDbEcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDOUMsd0hBQXdIO1lBQ3hILHlDQUF5QztZQUN6QyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQVksRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDL0YsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNOLENBQUM7OzZHQXZQVSxlQUFlLDJMQW1CaEIsYUFBYTtpSEFuQlosZUFBZSxjQUZkLE1BQU07NEZBRVAsZUFBZTtrQkFIM0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQW9CSSxNQUFNOzJCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgT2JzZXJ2YWJsZSwgUmVwbGF5U3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IENoYXJ0QWNjb3VudHNIZWFkaW5nVmVoaWNsZUxpc3RFbnVtIH0gZnJvbSAnLi4vLi4vZGIvRW51bXMvY2hhcnQtYWNjb3VudHMtaGVhZGluZy12ZWhpY2xlLWxpc3QuZW51bSc7XHJcbmltcG9ydCB7IENoYXJ0QWNjb3VudHNMaXN0RW51bSB9IGZyb20gJy4uLy4uL2RiL0VudW1zL2NoYXJ0LWFjY291bnRzLWxpc3QuZW51bSc7XHJcbmltcG9ydCB7IHBsYWluVG9DbGFzcyB9IGZyb20gJ2NsYXNzLXRyYW5zZm9ybWVyJztcclxuaW1wb3J0IHsgVHJhbnNhY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vdHJhbnNhY3Rpb24vdHJhbnNhY3Rpb24uc2VydmljZSc7XHJcbmltcG9ydCB7IGVudW1Ub0xpc3QgfSBmcm9tICcuLi8uLi9mdW5jdGlvbnMvZW51bS10by1saXN0JztcclxuaW1wb3J0IHsgVmVoaWNsZSB9IGZyb20gJy4uLy4uL21vZGVscy9sb2dib29rL3ZlaGljbGUnO1xyXG5pbXBvcnQgeyBWZWhpY2xlQ2xhaW0gfSBmcm9tICcuLi8uLi9tb2RlbHMvbG9nYm9vay92ZWhpY2xlLWNsYWltJztcclxuaW1wb3J0IHsgVmVoaWNsZUxvZ2Jvb2sgfSBmcm9tICcuLi8uLi9tb2RlbHMvbG9nYm9vay92ZWhpY2xlLWxvZ2Jvb2snO1xyXG5pbXBvcnQgeyBJbmNvbWVQb3NpdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy9pbmNvbWUtcG9zaXRpb24vaW5jb21lLXBvc2l0aW9uJztcclxuaW1wb3J0IHsgQXBwRXZlbnRUeXBlRW51bSB9IGZyb20gJy4uLy4uL21vZGVscy9ldmVudC9hcHAtZXZlbnQtdHlwZS5lbnVtJztcclxuaW1wb3J0IHsgQXBwRXZlbnQgfSBmcm9tICcuLi8uLi9tb2RlbHMvZXZlbnQvYXBwLWV2ZW50JztcclxuaW1wb3J0IHsgRmluYW5jaWFsWWVhciB9IGZyb20gJy4uLy4uL21vZGVscy9maW5hbmNpYWwteWVhci9maW5hbmNpYWwteWVhcic7XHJcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3RyYW5zYWN0aW9uL3RyYW5zYWN0aW9uJztcclxuaW1wb3J0IHsgRGVwcmVjaWF0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2RlcHJlY2lhdGlvbi9kZXByZWNpYXRpb24nO1xyXG5pbXBvcnQgeyBEZXByZWNpYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vZGVwcmVjaWF0aW9uL2RlcHJlY2lhdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ2hhcnRBY2NvdW50c1NlcnZpY2UgfSBmcm9tICcuLi9jaGFydC1hY2NvdW50cy9jaGFydC1hY2NvdW50cy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRXZlbnREaXNwYXRjaGVyU2VydmljZSB9IGZyb20gJy4uL2V2ZW50L2V2ZW50LWRpc3BhdGNoZXIuc2VydmljZSc7XHJcblxyXG4vKipcclxuICogU2VydmljZSB0aGF0IGFsbG93cyB0byB3b3JrIHdpdGggV29ya1Rhbmsgb3BlcmF0aW9uc1xyXG4gKi9cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgV29ya1RhbmtTZXJ2aWNlIHtcclxuICAvLyBAVE9ETyByZWZhY3RvciBhbmQgbWF5YmUgYnJlYWsgdG8gc2VwYXJhdGVkIHNlcnZpY2VzXHJcbiAgX3ZlaGljbGVzOiBWZWhpY2xlW107XHJcbiAgdmVoaWNsZXNTdWJqZWN0OiBSZXBsYXlTdWJqZWN0PFZlaGljbGVbXT4gPSBuZXcgUmVwbGF5U3ViamVjdDxWZWhpY2xlW10+KDEpO1xyXG4gIF92ZWhpY2xlQ2xhaW06IFZlaGljbGVDbGFpbTtcclxuICB2ZWhpY2xlQ2xhaW1TdWJqZWN0OiBSZXBsYXlTdWJqZWN0PFZlaGljbGVDbGFpbT4gPSBuZXcgUmVwbGF5U3ViamVjdDxWZWhpY2xlQ2xhaW0+KDEpO1xyXG4gIF92ZWhpY2xlQ2xhaW1SYXRlOiBudW1iZXI7XHJcbiAgdmVoaWNsZUNsYWltUmF0ZVN1YmplY3Q6IFJlcGxheVN1YmplY3Q8bnVtYmVyPiA9IG5ldyBSZXBsYXlTdWJqZWN0PG51bWJlcj4oMSk7XHJcbiAgX3ZlaGljbGVUYXhSZXR1cm46IG51bWJlcjtcclxuICB2ZWhpY2xlVGF4UmV0dXJuU3ViamVjdDogUmVwbGF5U3ViamVjdDxudW1iZXI+ID0gbmV3IFJlcGxheVN1YmplY3Q8bnVtYmVyPigxKTtcclxuICBfaW5jb21lUG9zaXRpb25zOiBJbmNvbWVQb3NpdGlvbltdO1xyXG4gIGluY29tZVBvc2l0aW9uc1N1YmplY3Q6IFJlcGxheVN1YmplY3Q8SW5jb21lUG9zaXRpb25bXT4gPSBuZXcgUmVwbGF5U3ViamVjdDxJbmNvbWVQb3NpdGlvbltdPigxKTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICBwcml2YXRlIHRyYW5zYWN0aW9uU2VydmljZTogVHJhbnNhY3Rpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBkZXByZWNpYXRpb25TZXJ2aWNlOiBEZXByZWNpYXRpb25TZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBjaGFydEFjY291bnRzU2VydmljZTogQ2hhcnRBY2NvdW50c1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIGV2ZW50RGlzcGF0Y2hlclNlcnZpY2U6IEV2ZW50RGlzcGF0Y2hlclNlcnZpY2UsXHJcbiAgICBASW5qZWN0KCdlbnZpcm9ubWVudCcpIHByaXZhdGUgZW52aXJvbm1lbnQ6IGFueVxyXG4gICkge1xyXG4gIH1cclxuXHJcbiAgZ2V0VmVoaWNsZXMoKTogT2JzZXJ2YWJsZTxWZWhpY2xlW10+IHtcclxuICAgIC8vIEBUT0RPIGNyZWF0ZSBiYWNrZW5kIGZvciBnZXQgbG9nYm9va1xyXG4gICAgaWYgKCF0aGlzLl92ZWhpY2xlcykge1xyXG4gICAgICB0aGlzLmh0dHAuZ2V0KGAke3RoaXMuZW52aXJvbm1lbnQuYXBpVjJ9L3ZlaGljbGVzYClcclxuICAgICAgICAucGlwZShcclxuICAgICAgICAgIG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UubWFwKChpdGVtOiBhbnkpID0+IHBsYWluVG9DbGFzcyhWZWhpY2xlLCBpdGVtKSk7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIClcclxuICAgICAgICAuc3Vic2NyaWJlKCh2ZWhpY2xlczogVmVoaWNsZVtdKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLl92ZWhpY2xlcyA9IHZlaGljbGVzO1xyXG4gICAgICAgICAgdGhpcy52ZWhpY2xlc1N1YmplY3QubmV4dCh2ZWhpY2xlcyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMudmVoaWNsZXNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHZlaGljbGVzIGNsYWltIGFtb3VudFxyXG4gICAqL1xyXG4gIGdldFZlaGljbGVzQ2xhaW0oKTogT2JzZXJ2YWJsZTxWZWhpY2xlQ2xhaW0+IHtcclxuICAgIGlmICghdGhpcy5fdmVoaWNsZUNsYWltKSB7XHJcbiAgICAgIHRoaXMuaHR0cC5nZXQoYCR7dGhpcy5lbnZpcm9ubWVudC5hcGlWMn0vdmVoaWNsZS1jbGFpbXNgKVxyXG4gICAgICAgIC5waXBlKFxyXG4gICAgICAgICAgbWFwKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIC8vIHJldHVybiBWZWhpY2xlIGNsYWltIGZyb20gYmFja2VuZCBvciBjcmVhdGUgbmV3IGlmIGl0IG5vdCBleGlzdFxyXG4gICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UubGVuZ3RoID8gcmVzcG9uc2UubWFwKChpdGVtOiBhbnkpID0+IHBsYWluVG9DbGFzcyhWZWhpY2xlQ2xhaW0sIGl0ZW0pKVswXSA6IHBsYWluVG9DbGFzcyhWZWhpY2xlQ2xhaW0sIHt9KTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKHZlaGljbGVDbGFpbTogVmVoaWNsZUNsYWltKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLl92ZWhpY2xlQ2xhaW0gPSB2ZWhpY2xlQ2xhaW07XHJcbiAgICAgICAgICB0aGlzLnZlaGljbGVDbGFpbVN1YmplY3QubmV4dCh2ZWhpY2xlQ2xhaW0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLnZlaGljbGVDbGFpbVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBBZGQgbmV3IHZlaGljbGUgY2xhaW1cclxuICAgKiBAcGFyYW0gY2xhaW0gb2JqZWN0IHdoaWNoIHNob3VsZCBiZSBhZGRlZFxyXG4gICAqL1xyXG4gIGFkZFZlaGljbGVDbGFpbShjbGFpbTogVmVoaWNsZUNsYWltKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLmVudmlyb25tZW50LmFwaVYyfS92ZWhpY2xlLWNsYWltc2AsIGNsYWltKS5waXBlKFxyXG4gICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLl92ZWhpY2xlQ2xhaW0gPSBwbGFpblRvQ2xhc3MoVmVoaWNsZUNsYWltLCByZXNwb25zZSk7XHJcbiAgICAgICAgdGhpcy52ZWhpY2xlQ2xhaW1TdWJqZWN0Lm5leHQodGhpcy5fdmVoaWNsZUNsYWltKTtcclxuICAgICAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlclNlcnZpY2UuZGlzcGF0Y2gobmV3IEFwcEV2ZW50KEFwcEV2ZW50VHlwZUVudW0uVkVISUNMRV9DTEFJTV9DUkVBVEVELCBudWxsKSk7XHJcbiAgICAgIH0pKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEdldCB2ZWhpY2xlcyBjbGFpbSByYXRlIGZvciBjdXJyZW50IGZpbmFuY2lhbCB5ZWFyXHJcbiAgICovXHJcbiAgZ2V0VmVoaWNsZXNDbGFpbVJhdGUoKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcclxuICAgIGlmICghdGhpcy5fdmVoaWNsZUNsYWltUmF0ZSkge1xyXG4gICAgICB0aGlzLmNoYXJ0QWNjb3VudHNTZXJ2aWNlLmdldENoYXJ0QWNjb3VudHNCeUlkKENoYXJ0QWNjb3VudHNMaXN0RW51bS5LTE1TX1RSQVZFTExFRF9GT1JfV09SSylcclxuICAgICAgICAucGlwZShcclxuICAgICAgICAgIG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UudmFsdWVzLmZpbmQoKGNoYXJ0QWNjb3VudDogYW55KSA9PiBjaGFydEFjY291bnQuZmluYW5jaWFsWWVhciA9PT0gbmV3IEZpbmFuY2lhbFllYXIoKS55ZWFyKS52YWx1ZTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKGNsYWltUmF0ZTogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLl92ZWhpY2xlQ2xhaW1SYXRlID0gY2xhaW1SYXRlO1xyXG4gICAgICAgICAgdGhpcy52ZWhpY2xlQ2xhaW1SYXRlU3ViamVjdC5uZXh0KHRoaXMuX3ZlaGljbGVDbGFpbVJhdGUpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLnZlaGljbGVDbGFpbVJhdGVTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogR2V0IHZlaGljbGVzIHRheCByZXR1cm4gZm9yIHZlaGljbGUgdHJhbnNhY3Rpb25zICYgZGVwcmVjaWF0aW9uc1xyXG4gICAqL1xyXG4gIGdldFZlaGljbGVzVGF4UmV0dXJuKCk6IE9ic2VydmFibGU8bnVtYmVyPiB7XHJcbiAgICBpZiAoIXRoaXMuX3ZlaGljbGVUYXhSZXR1cm4pIHtcclxuICAgICAgY29tYmluZUxhdGVzdChbXHJcbiAgICAgICAgLy8gQFRvZG8gcmVmYWN0b3IgdG8gYXZvaWQgaW5qZWN0aW9uIG9mIGFub3RoZXIgc2VydmljZXNcclxuICAgICAgICB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5nZXQoKSxcclxuICAgICAgICB0aGlzLmRlcHJlY2lhdGlvblNlcnZpY2UuZ2V0KCksXHJcbiAgICAgICAgdGhpcy5nZXRWZWhpY2xlc0NsYWltKClcclxuICAgICAgXSkucGlwZShcclxuICAgICAgICAgIG1hcCgoW3RyYW5zYWN0aW9ucywgZGVwcmVjaWF0aW9ucywgdmVoaWNsZUNsYWltXTogW1RyYW5zYWN0aW9uW10sIERlcHJlY2lhdGlvbltdLCBWZWhpY2xlQ2xhaW1dKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGNoYXJ0QWNjb3VudHNIZWFkaW5nc0lkczogbnVtYmVyW10gPSBlbnVtVG9MaXN0KENoYXJ0QWNjb3VudHNIZWFkaW5nVmVoaWNsZUxpc3RFbnVtKVxyXG4gICAgICAgICAgICAgIC5tYXAoKGl0ZW06IHsgbGFiZWw6IHN0cmluZywgdmFsdWU6IG51bWJlciB9KSA9PiBpdGVtLnZhbHVlKTtcclxuICAgICAgICAgICAgLy8gZ2V0IHRyYW5zYWN0aW9ucyAmIGRlcHJlY2lhdGlvbnMgd2hpY2ggY2hhcnQgYWNjb3VudHMgaGVhZGluZ3MgYXJlIGJlbG9uZyB0byB2ZWhpY2xlIGNhdGVnb3J5XHJcbiAgICAgICAgICAgIC8vIGJ1dCBleGNlcHQgS0xNUyB0cmFuc2FjdGlvblxyXG4gICAgICAgICAgICBjb25zdCBmaWx0ZXJlZEl0ZW1zOiBBcnJheTxUcmFuc2FjdGlvbiB8IERlcHJlY2lhdGlvbj4gPSBbLi4udHJhbnNhY3Rpb25zLCAuLi5kZXByZWNpYXRpb25zXS5maWx0ZXIoKGl0ZW06IFRyYW5zYWN0aW9uIHwgRGVwcmVjaWF0aW9uKSA9PiB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIGNoYXJ0QWNjb3VudHNIZWFkaW5nc0lkcy5pbmNsdWRlcyhpdGVtLmNoYXJ0QWNjb3VudHMuaGVhZGluZz8uaWQpICYmICFpdGVtLmNoYXJ0QWNjb3VudHMuaXNLbG1zRm9yV29yaygpO1xyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIC8vIGdldCBjbGFpbSBhbW91bnQgc3VtXHJcbiAgICAgICAgICAgIHJldHVybiBmaWx0ZXJlZEl0ZW1zLnJlZHVjZSgoc3VtOiBudW1iZXIsIGl0ZW06IFRyYW5zYWN0aW9uIHwgRGVwcmVjaWF0aW9uKSA9PlxyXG4gICAgICAgICAgICAgIC8vIEBUb2RvIHJlbW92ZSBpdGVtLmFtb3VudCBuZWdhdGl2ZSBzaWduIHdoZW4gZGVwcmVjaWF0aW9ucyB3aWxsIGJlIHJlZmFjdG9yZWQgYW5kIHdpbGwgaGF2ZSBuZWdhdGl2ZSBzaWduXHJcbiAgICAgICAgICAgICAgc3VtICsgKChpdGVtIGluc3RhbmNlb2YgRGVwcmVjaWF0aW9uID8gaXRlbS5jdXJyZW50WWVhckZvcmVjYXN0LmFtb3VudCA6IC1pdGVtLmFtb3VudCkgKiAodmVoaWNsZUNsYWltLndvcmtVc2FnZSAvIDEwMCkpLCAwKTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgKVxyXG4gICAgICAuc3Vic2NyaWJlKCh0YXhSZXR1cm46IG51bWJlcikgPT4ge1xyXG4gICAgICAgIHRoaXMuX3ZlaGljbGVUYXhSZXR1cm4gPSB0YXhSZXR1cm47XHJcbiAgICAgICAgdGhpcy52ZWhpY2xlVGF4UmV0dXJuU3ViamVjdC5uZXh0KHRoaXMuX3ZlaGljbGVUYXhSZXR1cm4pO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy52ZWhpY2xlVGF4UmV0dXJuU3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZSB2ZWhpY2xlIGNsYWltXHJcbiAgICogQHBhcmFtIGNsYWltIHdoaWNoIHNob3VsZCBiZSB1cGRhdGVkXHJcbiAgICpcclxuICAgKiBAVE9ETyBhbGV4IHJlZnJlc2ggZGVwcmVjaWF0aW9uL3RyYW5zYWN0aW9uIGNhY2hlXHJcbiAgICovXHJcbiAgdXBkYXRlVmVoaWNsZUNsYWltKGNsYWltOiBWZWhpY2xlQ2xhaW0pOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQoYCR7dGhpcy5lbnZpcm9ubWVudC5hcGlWMn0vdmVoaWNsZS1jbGFpbXMvJHtjbGFpbS5pZH1gLCBjbGFpbSkucGlwZShcclxuICAgICAgbWFwKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgdXBkYXRlZFZlaGljbGVDbGFpbTogVmVoaWNsZUNsYWltID0gcGxhaW5Ub0NsYXNzKFZlaGljbGVDbGFpbSwgcmVzcG9uc2UpO1xyXG4gICAgICAgIHRoaXMuX3ZlaGljbGVDbGFpbSA9IHVwZGF0ZWRWZWhpY2xlQ2xhaW07XHJcbiAgICAgICAgdGhpcy52ZWhpY2xlQ2xhaW1TdWJqZWN0Lm5leHQodGhpcy5fdmVoaWNsZUNsYWltKTtcclxuXHJcbiAgICAgICAgdGhpcy5ldmVudERpc3BhdGNoZXJTZXJ2aWNlLmRpc3BhdGNoKG5ldyBBcHBFdmVudChBcHBFdmVudFR5cGVFbnVtLlZFSElDTEVfQ0xBSU1fVVBEQVRFRCwgbnVsbCkpO1xyXG5cclxuICAgICAgICByZXR1cm4gdXBkYXRlZFZlaGljbGVDbGFpbTtcclxuICAgICAgfSkpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQWRkIG5ldyBsb2dib29rIGZvciBkZXNpcmVkIHZlaGljbGVcclxuICAgKiBAcGFyYW0gbG9nYm9vayB3aGljaCBzaG91bGQgYmUgYWRkZWRcclxuICAgKiBAcGFyYW0gdmVoaWNsZSBmb3Igd2hpY2ggbG9nYm9vayBvYmplY3Qgc2hvdWxkIGJlIGFkZGVkXHJcbiAgICovXHJcbiAgYWRkTG9nYm9vayhsb2dib29rOiBWZWhpY2xlTG9nYm9vaywgdmVoaWNsZTogVmVoaWNsZSk6IE9ic2VydmFibGU8dm9pZD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuZW52aXJvbm1lbnQuYXBpVjJ9L3ZlaGljbGVzLyR7dmVoaWNsZS5pZH0vbG9nYm9va3NgLCBsb2dib29rKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMuX3ZlaGljbGVzLmZpbmQoKHY6IFZlaGljbGUpID0+IHYuaWQgPT09IHZlaGljbGUuaWQpLmxvZ2Jvb2sucHVzaChyZXNwb25zZSk7XHJcbiAgICAgICAgICAvLyB3ZSB1cGRhdGUgbmVzdGVkIGxvZ2Jvb2sgb2JqZWN0IGluc2lkZSB2ZWhpY2xlcyBsaXN0LiBTbyBsaXN0IGlzIG5vdCBjaGFuZ2VkIGFuZCBuZXh0IG5vdCBlbWl0IHN1YnNjcmlwdGlvbnMgdXBkYXRlcy5cclxuICAgICAgICAgIC8vIHRoYXQgaXMgd2h5IHdlIHJlY3JlYXRlIHZlaGljbGVzIGFycmF5XHJcbiAgICAgICAgICB0aGlzLnZlaGljbGVzU3ViamVjdC5uZXh0KHRoaXMuX3ZlaGljbGVzLm1hcCgoaXRlbTogb2JqZWN0KSA9PiBwbGFpblRvQ2xhc3MoVmVoaWNsZSwgaXRlbSkpKTtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlIGxvZ2Jvb2tcclxuICAgKiBAcGFyYW0gbG9nYm9vayB3aGljaCBzaG91bGQgYmUgdXBkYXRlZFxyXG4gICAqIEBwYXJhbSB2ZWhpY2xlIGZvciB3aGljaCBsb2dib29rIG9iamVjdCBzaG91bGQgYmUgdXBkYXRlZFxyXG4gICAqL1xyXG4gIHVwZGF0ZUxvZ2Jvb2sobG9nYm9vazogVmVoaWNsZUxvZ2Jvb2ssIHZlaGljbGU6IFZlaGljbGUpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQoYCR7dGhpcy5lbnZpcm9ubWVudC5hcGlWMn0vdmVoaWNsZXMvJHt2ZWhpY2xlLmlkfS9sb2dib29rcy8ke2xvZ2Jvb2suaWR9YCwgbG9nYm9vaykucGlwZShcclxuICAgICAgbWFwKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgZWRpdGVkVmVoaWNsZTogVmVoaWNsZSA9IHRoaXMuX3ZlaGljbGVzLmZpbmQoKHY6IFZlaGljbGUpID0+IHYuaWQgPT09IHZlaGljbGUuaWQpO1xyXG4gICAgICAgIGNvbnN0IGVkaXRlZExvZ2Jvb2tJbmRleDogbnVtYmVyID0gZWRpdGVkVmVoaWNsZS5sb2dib29rLmZpbmRJbmRleCgobDogVmVoaWNsZUxvZ2Jvb2spID0+IGwuaWQgPT09IGxvZ2Jvb2suaWQpO1xyXG4gICAgICAgIGVkaXRlZFZlaGljbGUubG9nYm9vay5zcGxpY2UoZWRpdGVkTG9nYm9va0luZGV4LCAxLCBwbGFpblRvQ2xhc3MoVmVoaWNsZUxvZ2Jvb2ssIHJlc3BvbnNlKSk7XHJcbiAgICAgICAgLy8gd2UgdXBkYXRlIG5lc3RlZCBsb2dib29rIG9iamVjdCBpbnNpZGUgdmVoaWNsZXMgbGlzdC4gU28gbGlzdCBpcyBub3QgY2hhbmdlZCBhbmQgbmV4dCBub3QgZW1pdCBzdWJzY3JpcHRpb25zIHVwZGF0ZXMuXHJcbiAgICAgICAgLy8gdGhhdCBpcyB3aHkgd2UgcmVjcmVhdGUgdmVoaWNsZXMgYXJyYXlcclxuICAgICAgICB0aGlzLnZlaGljbGVzU3ViamVjdC5uZXh0KHRoaXMuX3ZlaGljbGVzLm1hcCgoaXRlbTogb2JqZWN0KSA9PiBwbGFpblRvQ2xhc3MoVmVoaWNsZSwgaXRlbSkpKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBEZWxldGUgdHJpcFxyXG4gICAqIEBwYXJhbSBsb2dib29rIGZvciB3aGljaCB0cmlwIHNob3VsZCBiZSBkZWxldGVkXHJcbiAgICogQHBhcmFtIHZlaGljbGUgZm9yIHdoaWNoIHRyaXAgc2hvdWxkIGJlIGRlbGV0ZWRcclxuICAgKi9cclxuICBkZWxldGVUcmlwKGxvZ2Jvb2s6IFZlaGljbGVMb2dib29rLCB2ZWhpY2xlOiBWZWhpY2xlKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlKGAke3RoaXMuZW52aXJvbm1lbnQuYXBpVjJ9L3ZlaGljbGVzLyR7dmVoaWNsZS5pZH0vbG9nYm9va3MvJHtsb2dib29rLmlkfWApXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIG1hcCgoKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBlZGl0ZWRWZWhpY2xlOiBWZWhpY2xlID0gdGhpcy5fdmVoaWNsZXMuZmluZCgodjogVmVoaWNsZSkgPT4gdi5pZCA9PT0gdmVoaWNsZS5pZCk7XHJcbiAgICAgICAgICBjb25zdCBkZWxldGVkTG9nYm9va0luZGV4OiBudW1iZXIgPSBlZGl0ZWRWZWhpY2xlLmxvZ2Jvb2suZmluZEluZGV4KChsOiBWZWhpY2xlTG9nYm9vaykgPT4gbC5pZCA9PT0gbG9nYm9vay5pZCk7XHJcbiAgICAgICAgICBlZGl0ZWRWZWhpY2xlLmxvZ2Jvb2suc3BsaWNlKGRlbGV0ZWRMb2dib29rSW5kZXgsIDEpO1xyXG4gICAgICAgICAgLy8gd2UgdXBkYXRlIG5lc3RlZCBsb2dib29rIG9iamVjdCBpbnNpZGUgdmVoaWNsZXMgbGlzdC4gU28gbGlzdCBpcyBub3QgY2hhbmdlZCBhbmQgbmV4dCBub3QgZW1pdCBzdWJzY3JpcHRpb25zIHVwZGF0ZXMuXHJcbiAgICAgICAgICAvLyB0aGF0IGlzIHdoeSB3ZSByZWNyZWF0ZSB2ZWhpY2xlcyBhcnJheVxyXG4gICAgICAgICAgdGhpcy52ZWhpY2xlc1N1YmplY3QubmV4dCh0aGlzLl92ZWhpY2xlcy5tYXAoKGl0ZW06IG9iamVjdCkgPT4gcGxhaW5Ub0NsYXNzKFZlaGljbGUsIGl0ZW0pKSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFkZCBuZXcgdmVoaWNsZVxyXG4gICAqIEBwYXJhbSB2ZWhpY2xlIHdoaWNoIHNob3VsZCBiZSBhZGRlZFxyXG4gICAqL1xyXG4gIGFkZFZlaGljbGUodmVoaWNsZTogVmVoaWNsZSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QoYCR7dGhpcy5lbnZpcm9ubWVudC5hcGlWMn0vdmVoaWNsZXNgLCB7bmFtZTogdmVoaWNsZS5uYW1lfSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgbWFwKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLl92ZWhpY2xlcy5wdXNoKHBsYWluVG9DbGFzcyhWZWhpY2xlLCByZXNwb25zZSkpO1xyXG4gICAgICAgICAgdGhpcy52ZWhpY2xlc1N1YmplY3QubmV4dCh0aGlzLl92ZWhpY2xlcyk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZSB2ZWhpY2xlXHJcbiAgICogQHBhcmFtIHZlaGljbGUgd2hpY2ggc2hvdWxkIGJlIHVwZGF0ZWRcclxuICAgKi9cclxuICB1cGRhdGVWZWhpY2xlKHZlaGljbGU6IFZlaGljbGUpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQoYCR7dGhpcy5lbnZpcm9ubWVudC5hcGlWMn0vdmVoaWNsZXMvJHt2ZWhpY2xlLmlkfWAsIHtuYW1lOiB2ZWhpY2xlLm5hbWV9KVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGVkaXRlZFZlaGljbGVJbmRleDogbnVtYmVyID0gdGhpcy5fdmVoaWNsZXMuZmluZEluZGV4KCh2OiBWZWhpY2xlKSA9PiB2LmlkID09PSB2ZWhpY2xlLmlkKTtcclxuICAgICAgICAgIHRoaXMuX3ZlaGljbGVzLnNwbGljZShlZGl0ZWRWZWhpY2xlSW5kZXgsIDEsIHBsYWluVG9DbGFzcyhWZWhpY2xlLCByZXNwb25zZSkpO1xyXG4gICAgICAgICAgdGhpcy52ZWhpY2xlc1N1YmplY3QubmV4dCh0aGlzLl92ZWhpY2xlcyk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIERlbGV0ZSB2ZWhpY2xlXHJcbiAgICogQHBhcmFtIHZlaGljbGUgd2hpY2ggc2hvdWxkIGJlIGRlbGV0ZWRcclxuICAgKi9cclxuICBkZWxldGVWZWhpY2xlKHZlaGljbGU6IFZlaGljbGUpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlKGAke3RoaXMuZW52aXJvbm1lbnQuYXBpVjJ9L3ZlaGljbGVzLyR7dmVoaWNsZS5pZH1gKVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBtYXAoKCkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgZGVsZXRlZFZlaGljbGVJbmRleDogbnVtYmVyID0gdGhpcy5fdmVoaWNsZXMuZmluZEluZGV4KCh2OiBWZWhpY2xlKSA9PiB2LmlkID09PSB2ZWhpY2xlLmlkKTtcclxuICAgICAgICAgIHRoaXMuX3ZlaGljbGVzLnNwbGljZShkZWxldGVkVmVoaWNsZUluZGV4LCAxKTtcclxuICAgICAgICAgIC8vIHdlIHVwZGF0ZSBuZXN0ZWQgbG9nYm9vayBvYmplY3QgaW5zaWRlIHZlaGljbGVzIGxpc3QuIFNvIGxpc3QgaXMgbm90IGNoYW5nZWQgYW5kIG5leHQgbm90IGVtaXQgc3Vic2NyaXB0aW9ucyB1cGRhdGVzLlxyXG4gICAgICAgICAgLy8gdGhhdCBpcyB3aHkgd2UgcmVjcmVhdGUgdmVoaWNsZXMgYXJyYXlcclxuICAgICAgICAgIHRoaXMudmVoaWNsZXNTdWJqZWN0Lm5leHQodGhpcy5fdmVoaWNsZXMubWFwKChpdGVtOiBvYmplY3QpID0+IHBsYWluVG9DbGFzcyhWZWhpY2xlLCBpdGVtKSkpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
1
|
+
import { Inject, Injectable } from '@angular/core';
|
|
2
|
+
import { combineLatest, ReplaySubject } from 'rxjs';
|
|
3
|
+
import { map } from 'rxjs/operators';
|
|
4
|
+
import { ChartAccountsHeadingVehicleListEnum } from '../../db/Enums/chart-accounts-heading-vehicle-list.enum';
|
|
5
|
+
import { ChartAccountsListEnum } from '../../db/Enums/chart-accounts-list.enum';
|
|
6
|
+
import { plainToClass } from 'class-transformer';
|
|
7
|
+
import { enumToList } from '../../functions/enum-to-list';
|
|
8
|
+
import { Vehicle } from '../../models/logbook/vehicle';
|
|
9
|
+
import { VehicleClaim } from '../../models/logbook/vehicle-claim';
|
|
10
|
+
import { VehicleLogbook } from '../../models/logbook/vehicle-logbook';
|
|
11
|
+
import { AppEventTypeEnum } from '../../models/event/app-event-type.enum';
|
|
12
|
+
import { AppEvent } from '../../models/event/app-event';
|
|
13
|
+
import { FinancialYear } from '../../models/financial-year/financial-year';
|
|
14
|
+
import { Depreciation } from '../../models/depreciation/depreciation';
|
|
15
|
+
import * as i0 from "@angular/core";
|
|
16
|
+
import * as i1 from "@angular/common/http";
|
|
17
|
+
import * as i2 from "../transaction/transaction.service";
|
|
18
|
+
import * as i3 from "../depreciation/depreciation.service";
|
|
19
|
+
import * as i4 from "../chart-accounts/chart-accounts.service";
|
|
20
|
+
import * as i5 from "../event/event-dispatcher.service";
|
|
21
|
+
/**
|
|
22
|
+
* Service that allows to work with WorkTank operations
|
|
23
|
+
*/
|
|
24
|
+
export class WorkTankService {
|
|
25
|
+
constructor(http, transactionService, depreciationService, chartAccountsService, eventDispatcherService, environment) {
|
|
26
|
+
this.http = http;
|
|
27
|
+
this.transactionService = transactionService;
|
|
28
|
+
this.depreciationService = depreciationService;
|
|
29
|
+
this.chartAccountsService = chartAccountsService;
|
|
30
|
+
this.eventDispatcherService = eventDispatcherService;
|
|
31
|
+
this.environment = environment;
|
|
32
|
+
this.vehiclesSubject = new ReplaySubject(1);
|
|
33
|
+
this.vehicleClaimSubject = new ReplaySubject(1);
|
|
34
|
+
this.vehicleClaimRateSubject = new ReplaySubject(1);
|
|
35
|
+
this.vehicleTaxReturnSubject = new ReplaySubject(1);
|
|
36
|
+
this.incomePositionsSubject = new ReplaySubject(1);
|
|
37
|
+
}
|
|
38
|
+
getVehicles() {
|
|
39
|
+
// @TODO create backend for get logbook
|
|
40
|
+
if (!this._vehicles) {
|
|
41
|
+
this.http.get(`${this.environment.apiV2}/vehicles`)
|
|
42
|
+
.pipe(map((response) => {
|
|
43
|
+
return response.map((item) => plainToClass(Vehicle, item));
|
|
44
|
+
}))
|
|
45
|
+
.subscribe((vehicles) => {
|
|
46
|
+
this._vehicles = vehicles;
|
|
47
|
+
this.vehiclesSubject.next(vehicles);
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
return this.vehiclesSubject.asObservable();
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Get vehicles claim amount
|
|
54
|
+
*/
|
|
55
|
+
getVehiclesClaim() {
|
|
56
|
+
if (!this._vehicleClaim) {
|
|
57
|
+
this.http.get(`${this.environment.apiV2}/vehicle-claims`)
|
|
58
|
+
.pipe(map((response) => {
|
|
59
|
+
// return Vehicle claim from backend or create new if it not exist
|
|
60
|
+
return response.length ? response.map((item) => plainToClass(VehicleClaim, item))[0] : plainToClass(VehicleClaim, {});
|
|
61
|
+
}))
|
|
62
|
+
.subscribe((vehicleClaim) => {
|
|
63
|
+
this._vehicleClaim = vehicleClaim;
|
|
64
|
+
this.vehicleClaimSubject.next(vehicleClaim);
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
return this.vehicleClaimSubject.asObservable();
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Add new vehicle claim
|
|
71
|
+
* @param claim object which should be added
|
|
72
|
+
*/
|
|
73
|
+
addVehicleClaim(claim) {
|
|
74
|
+
return this.http.post(`${this.environment.apiV2}/vehicle-claims`, claim).pipe(map((response) => {
|
|
75
|
+
this._vehicleClaim = plainToClass(VehicleClaim, response);
|
|
76
|
+
this.vehicleClaimSubject.next(this._vehicleClaim);
|
|
77
|
+
this.eventDispatcherService.dispatch(new AppEvent(AppEventTypeEnum.VEHICLE_CLAIM_CREATED, null));
|
|
78
|
+
}));
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Get vehicles claim rate for current financial year
|
|
82
|
+
*/
|
|
83
|
+
getVehiclesClaimRate() {
|
|
84
|
+
if (!this._vehicleClaimRate) {
|
|
85
|
+
this.chartAccountsService.getChartAccountsById(ChartAccountsListEnum.KLMS_TRAVELLED_FOR_WORK)
|
|
86
|
+
.pipe(map((response) => {
|
|
87
|
+
return response.values.find((chartAccount) => chartAccount.financialYear === new FinancialYear().year).value;
|
|
88
|
+
}))
|
|
89
|
+
.subscribe((claimRate) => {
|
|
90
|
+
this._vehicleClaimRate = claimRate;
|
|
91
|
+
this.vehicleClaimRateSubject.next(this._vehicleClaimRate);
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
return this.vehicleClaimRateSubject.asObservable();
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Get vehicles tax return for vehicle transactions & depreciations
|
|
98
|
+
*/
|
|
99
|
+
getVehiclesTaxReturn() {
|
|
100
|
+
if (!this._vehicleTaxReturn) {
|
|
101
|
+
combineLatest([
|
|
102
|
+
// @Todo refactor to avoid injection of another services
|
|
103
|
+
this.transactionService.get(),
|
|
104
|
+
this.depreciationService.get(),
|
|
105
|
+
this.getVehiclesClaim()
|
|
106
|
+
]).pipe(map(([transactions, depreciations, vehicleClaim]) => {
|
|
107
|
+
const chartAccountsHeadingsIds = enumToList(ChartAccountsHeadingVehicleListEnum)
|
|
108
|
+
.map((item) => item.value);
|
|
109
|
+
// get transactions & depreciations which chart accounts headings are belong to vehicle category
|
|
110
|
+
// but except KLMS transaction
|
|
111
|
+
const filteredItems = [...transactions, ...depreciations].filter((item) => {
|
|
112
|
+
var _a;
|
|
113
|
+
return chartAccountsHeadingsIds.includes((_a = item.chartAccounts.heading) === null || _a === void 0 ? void 0 : _a.id) && !item.chartAccounts.isKlmsForWork();
|
|
114
|
+
});
|
|
115
|
+
// get claim amount sum
|
|
116
|
+
return filteredItems.reduce((sum, item) =>
|
|
117
|
+
// @Todo remove item.amount negative sign when depreciations will be refactored and will have negative sign
|
|
118
|
+
sum + ((item instanceof Depreciation ? item.currentYearForecast.amount : -item.amount) * (vehicleClaim.workUsage / 100)), 0);
|
|
119
|
+
}))
|
|
120
|
+
.subscribe((taxReturn) => {
|
|
121
|
+
this._vehicleTaxReturn = taxReturn;
|
|
122
|
+
this.vehicleTaxReturnSubject.next(this._vehicleTaxReturn);
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
return this.vehicleTaxReturnSubject.asObservable();
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Update vehicle claim
|
|
129
|
+
* @param claim which should be updated
|
|
130
|
+
*
|
|
131
|
+
* @TODO alex refresh depreciation/transaction cache
|
|
132
|
+
*/
|
|
133
|
+
updateVehicleClaim(claim) {
|
|
134
|
+
return this.http.put(`${this.environment.apiV2}/vehicle-claims/${claim.id}`, claim).pipe(map((response) => {
|
|
135
|
+
const updatedVehicleClaim = plainToClass(VehicleClaim, response);
|
|
136
|
+
this._vehicleClaim = updatedVehicleClaim;
|
|
137
|
+
this.vehicleClaimSubject.next(this._vehicleClaim);
|
|
138
|
+
this.eventDispatcherService.dispatch(new AppEvent(AppEventTypeEnum.VEHICLE_CLAIM_UPDATED, null));
|
|
139
|
+
return updatedVehicleClaim;
|
|
140
|
+
}));
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Add new logbook for desired vehicle
|
|
144
|
+
* @param logbook which should be added
|
|
145
|
+
* @param vehicle for which logbook object should be added
|
|
146
|
+
*/
|
|
147
|
+
addLogbook(logbook, vehicle) {
|
|
148
|
+
return this.http.post(`${this.environment.apiV2}/vehicles/${vehicle.id}/logbooks`, logbook)
|
|
149
|
+
.pipe(map((response) => {
|
|
150
|
+
this._vehicles.find((v) => v.id === vehicle.id).logbook.push(response);
|
|
151
|
+
// we update nested logbook object inside vehicles list. So list is not changed and next not emit subscriptions updates.
|
|
152
|
+
// that is why we recreate vehicles array
|
|
153
|
+
this.vehiclesSubject.next(this._vehicles.map((item) => plainToClass(Vehicle, item)));
|
|
154
|
+
}));
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Update logbook
|
|
158
|
+
* @param logbook which should be updated
|
|
159
|
+
* @param vehicle for which logbook object should be updated
|
|
160
|
+
*/
|
|
161
|
+
updateLogbook(logbook, vehicle) {
|
|
162
|
+
return this.http.put(`${this.environment.apiV2}/vehicles/${vehicle.id}/logbooks/${logbook.id}`, logbook).pipe(map((response) => {
|
|
163
|
+
const editedVehicle = this._vehicles.find((v) => v.id === vehicle.id);
|
|
164
|
+
const editedLogbookIndex = editedVehicle.logbook.findIndex((l) => l.id === logbook.id);
|
|
165
|
+
editedVehicle.logbook.splice(editedLogbookIndex, 1, plainToClass(VehicleLogbook, response));
|
|
166
|
+
// we update nested logbook object inside vehicles list. So list is not changed and next not emit subscriptions updates.
|
|
167
|
+
// that is why we recreate vehicles array
|
|
168
|
+
this.vehiclesSubject.next(this._vehicles.map((item) => plainToClass(Vehicle, item)));
|
|
169
|
+
}));
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Delete trip
|
|
173
|
+
* @param logbook for which trip should be deleted
|
|
174
|
+
* @param vehicle for which trip should be deleted
|
|
175
|
+
*/
|
|
176
|
+
deleteTrip(logbook, vehicle) {
|
|
177
|
+
return this.http.delete(`${this.environment.apiV2}/vehicles/${vehicle.id}/logbooks/${logbook.id}`)
|
|
178
|
+
.pipe(map(() => {
|
|
179
|
+
const editedVehicle = this._vehicles.find((v) => v.id === vehicle.id);
|
|
180
|
+
const deletedLogbookIndex = editedVehicle.logbook.findIndex((l) => l.id === logbook.id);
|
|
181
|
+
editedVehicle.logbook.splice(deletedLogbookIndex, 1);
|
|
182
|
+
// we update nested logbook object inside vehicles list. So list is not changed and next not emit subscriptions updates.
|
|
183
|
+
// that is why we recreate vehicles array
|
|
184
|
+
this.vehiclesSubject.next(this._vehicles.map((item) => plainToClass(Vehicle, item)));
|
|
185
|
+
}));
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Add new vehicle
|
|
189
|
+
* @param vehicle which should be added
|
|
190
|
+
*/
|
|
191
|
+
addVehicle(vehicle) {
|
|
192
|
+
return this.http.post(`${this.environment.apiV2}/vehicles`, { name: vehicle.name })
|
|
193
|
+
.pipe(map((response) => {
|
|
194
|
+
this._vehicles.push(plainToClass(Vehicle, response));
|
|
195
|
+
this.vehiclesSubject.next(this._vehicles);
|
|
196
|
+
}));
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Update vehicle
|
|
200
|
+
* @param vehicle which should be updated
|
|
201
|
+
*/
|
|
202
|
+
updateVehicle(vehicle) {
|
|
203
|
+
return this.http.put(`${this.environment.apiV2}/vehicles/${vehicle.id}`, { name: vehicle.name })
|
|
204
|
+
.pipe(map((response) => {
|
|
205
|
+
const editedVehicleIndex = this._vehicles.findIndex((v) => v.id === vehicle.id);
|
|
206
|
+
this._vehicles.splice(editedVehicleIndex, 1, plainToClass(Vehicle, response));
|
|
207
|
+
this.vehiclesSubject.next(this._vehicles);
|
|
208
|
+
}));
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Delete vehicle
|
|
212
|
+
* @param vehicle which should be deleted
|
|
213
|
+
*/
|
|
214
|
+
deleteVehicle(vehicle) {
|
|
215
|
+
return this.http.delete(`${this.environment.apiV2}/vehicles/${vehicle.id}`)
|
|
216
|
+
.pipe(map(() => {
|
|
217
|
+
const deletedVehicleIndex = this._vehicles.findIndex((v) => v.id === vehicle.id);
|
|
218
|
+
this._vehicles.splice(deletedVehicleIndex, 1);
|
|
219
|
+
// we update nested logbook object inside vehicles list. So list is not changed and next not emit subscriptions updates.
|
|
220
|
+
// that is why we recreate vehicles array
|
|
221
|
+
this.vehiclesSubject.next(this._vehicles.map((item) => plainToClass(Vehicle, item)));
|
|
222
|
+
}));
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
WorkTankService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: WorkTankService, deps: [{ token: i1.HttpClient }, { token: i2.TransactionService }, { token: i3.DepreciationService }, { token: i4.ChartAccountsService }, { token: i5.EventDispatcherService }, { token: 'environment' }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
226
|
+
WorkTankService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: WorkTankService, providedIn: 'root' });
|
|
227
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.15", ngImport: i0, type: WorkTankService, decorators: [{
|
|
228
|
+
type: Injectable,
|
|
229
|
+
args: [{
|
|
230
|
+
providedIn: 'root'
|
|
231
|
+
}]
|
|
232
|
+
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.TransactionService }, { type: i3.DepreciationService }, { type: i4.ChartAccountsService }, { type: i5.EventDispatcherService }, { type: undefined, decorators: [{
|
|
233
|
+
type: Inject,
|
|
234
|
+
args: ['environment']
|
|
235
|
+
}] }]; } });
|
|
236
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29yay10YW5rLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dC1jb3JlL3NyYy9saWIvc2VydmljZXMvd29yay93b3JrLXRhbmsuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUUsYUFBYSxFQUFjLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNoRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxFQUFFLG1DQUFtQyxFQUFFLE1BQU0seURBQXlELENBQUM7QUFDOUcsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUNBQXlDLENBQUM7QUFDaEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRWpELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUV0RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUMxRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBRTNFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQzs7Ozs7OztBQUt0RTs7R0FFRztBQUlILE1BQU0sT0FBTyxlQUFlO0lBYTFCLFlBQ1UsSUFBZ0IsRUFDaEIsa0JBQXNDLEVBQ3RDLG1CQUF3QyxFQUN4QyxvQkFBMEMsRUFDMUMsc0JB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QUNILGFBQWEsQ0FBQyxPQUFnQjtRQUM1QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLGFBQWEsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDO2FBQ3hFLElBQUksQ0FDSCxHQUFHLENBQUMsR0FBRyxFQUFFO1lBQ1AsTUFBTSxtQkFBbUIsR0FBVyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDbEcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDOUMsd0hBQXdIO1lBQ3hILHlDQUF5QztZQUN6QyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQVksRUFBRSxFQUFFLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDL0YsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNOLENBQUM7OzZHQXZQVSxlQUFlLDJMQW1CaEIsYUFBYTtpSEFuQlosZUFBZSxjQUZkLE1BQU07NEZBRVAsZUFBZTtrQkFIM0IsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7OzBCQW9CSSxNQUFNOzJCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDaGFydEFjY291bnRzSGVhZGluZ1ZlaGljbGVMaXN0RW51bSB9IGZyb20gJy4uLy4uL2RiL0VudW1zL2NoYXJ0LWFjY291bnRzLWhlYWRpbmctdmVoaWNsZS1saXN0LmVudW0nO1xuaW1wb3J0IHsgQ2hhcnRBY2NvdW50c0xpc3RFbnVtIH0gZnJvbSAnLi4vLi4vZGIvRW51bXMvY2hhcnQtYWNjb3VudHMtbGlzdC5lbnVtJztcbmltcG9ydCB7IHBsYWluVG9DbGFzcyB9IGZyb20gJ2NsYXNzLXRyYW5zZm9ybWVyJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uU2VydmljZSB9IGZyb20gJy4uL3RyYW5zYWN0aW9uL3RyYW5zYWN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgZW51bVRvTGlzdCB9IGZyb20gJy4uLy4uL2Z1bmN0aW9ucy9lbnVtLXRvLWxpc3QnO1xuaW1wb3J0IHsgVmVoaWNsZSB9IGZyb20gJy4uLy4uL21vZGVscy9sb2dib29rL3ZlaGljbGUnO1xuaW1wb3J0IHsgVmVoaWNsZUNsYWltIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2xvZ2Jvb2svdmVoaWNsZS1jbGFpbSc7XG5pbXBvcnQgeyBWZWhpY2xlTG9nYm9vayB9IGZyb20gJy4uLy4uL21vZGVscy9sb2dib29rL3ZlaGljbGUtbG9nYm9vayc7XG5pbXBvcnQgeyBJbmNvbWVQb3NpdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy9pbmNvbWUtcG9zaXRpb24vaW5jb21lLXBvc2l0aW9uJztcbmltcG9ydCB7IEFwcEV2ZW50VHlwZUVudW0gfSBmcm9tICcuLi8uLi9tb2RlbHMvZXZlbnQvYXBwLWV2ZW50LXR5cGUuZW51bSc7XG5pbXBvcnQgeyBBcHBFdmVudCB9IGZyb20gJy4uLy4uL21vZGVscy9ldmVudC9hcHAtZXZlbnQnO1xuaW1wb3J0IHsgRmluYW5jaWFsWWVhciB9IGZyb20gJy4uLy4uL21vZGVscy9maW5hbmNpYWwteWVhci9maW5hbmNpYWwteWVhcic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy90cmFuc2FjdGlvbi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBEZXByZWNpYXRpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMvZGVwcmVjaWF0aW9uL2RlcHJlY2lhdGlvbic7XG5pbXBvcnQgeyBEZXByZWNpYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vZGVwcmVjaWF0aW9uL2RlcHJlY2lhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IENoYXJ0QWNjb3VudHNTZXJ2aWNlIH0gZnJvbSAnLi4vY2hhcnQtYWNjb3VudHMvY2hhcnQtYWNjb3VudHMuc2VydmljZSc7XG5pbXBvcnQgeyBFdmVudERpc3BhdGNoZXJTZXJ2aWNlIH0gZnJvbSAnLi4vZXZlbnQvZXZlbnQtZGlzcGF0Y2hlci5zZXJ2aWNlJztcblxuLyoqXG4gKiBTZXJ2aWNlIHRoYXQgYWxsb3dzIHRvIHdvcmsgd2l0aCBXb3JrVGFuayBvcGVyYXRpb25zXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFdvcmtUYW5rU2VydmljZSB7XG4gIC8vIEBUT0RPIHJlZmFjdG9yIGFuZCBtYXliZSBicmVhayB0byBzZXBhcmF0ZWQgc2VydmljZXNcbiAgX3ZlaGljbGVzOiBWZWhpY2xlW107XG4gIHZlaGljbGVzU3ViamVjdDogUmVwbGF5U3ViamVjdDxWZWhpY2xlW10+ID0gbmV3IFJlcGxheVN1YmplY3Q8VmVoaWNsZVtdPigxKTtcbiAgX3ZlaGljbGVDbGFpbTogVmVoaWNsZUNsYWltO1xuICB2ZWhpY2xlQ2xhaW1TdWJqZWN0OiBSZXBsYXlTdWJqZWN0PFZlaGljbGVDbGFpbT4gPSBuZXcgUmVwbGF5U3ViamVjdDxWZWhpY2xlQ2xhaW0+KDEpO1xuICBfdmVoaWNsZUNsYWltUmF0ZTogbnVtYmVyO1xuICB2ZWhpY2xlQ2xhaW1SYXRlU3ViamVjdDogUmVwbGF5U3ViamVjdDxudW1iZXI+ID0gbmV3IFJlcGxheVN1YmplY3Q8bnVtYmVyPigxKTtcbiAgX3ZlaGljbGVUYXhSZXR1cm46IG51bWJlcjtcbiAgdmVoaWNsZVRheFJldHVyblN1YmplY3Q6IFJlcGxheVN1YmplY3Q8bnVtYmVyPiA9IG5ldyBSZXBsYXlTdWJqZWN0PG51bWJlcj4oMSk7XG4gIF9pbmNvbWVQb3NpdGlvbnM6IEluY29tZVBvc2l0aW9uW107XG4gIGluY29tZVBvc2l0aW9uc1N1YmplY3Q6IFJlcGxheVN1YmplY3Q8SW5jb21lUG9zaXRpb25bXT4gPSBuZXcgUmVwbGF5U3ViamVjdDxJbmNvbWVQb3NpdGlvbltdPigxKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHJpdmF0ZSB0cmFuc2FjdGlvblNlcnZpY2U6IFRyYW5zYWN0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIGRlcHJlY2lhdGlvblNlcnZpY2U6IERlcHJlY2lhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjaGFydEFjY291bnRzU2VydmljZTogQ2hhcnRBY2NvdW50c1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBldmVudERpc3BhdGNoZXJTZXJ2aWNlOiBFdmVudERpc3BhdGNoZXJTZXJ2aWNlLFxuICAgIEBJbmplY3QoJ2Vudmlyb25tZW50JykgcHJpdmF0ZSBlbnZpcm9ubWVudDogYW55XG4gICkge1xuICB9XG5cbiAgZ2V0VmVoaWNsZXMoKTogT2JzZXJ2YWJsZTxWZWhpY2xlW10+IHtcbiAgICAvLyBAVE9ETyBjcmVhdGUgYmFja2VuZCBmb3IgZ2V0IGxvZ2Jvb2tcbiAgICBpZiAoIXRoaXMuX3ZlaGljbGVzKSB7XG4gICAgICB0aGlzLmh0dHAuZ2V0KGAke3RoaXMuZW52aXJvbm1lbnQuYXBpVjJ9L3ZlaGljbGVzYClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UubWFwKChpdGVtOiBhbnkpID0+IHBsYWluVG9DbGFzcyhWZWhpY2xlLCBpdGVtKSk7XG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKCh2ZWhpY2xlczogVmVoaWNsZVtdKSA9PiB7XG4gICAgICAgICAgdGhpcy5fdmVoaWNsZXMgPSB2ZWhpY2xlcztcbiAgICAgICAgICB0aGlzLnZlaGljbGVzU3ViamVjdC5uZXh0KHZlaGljbGVzKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMudmVoaWNsZXNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB2ZWhpY2xlcyBjbGFpbSBhbW91bnRcbiAgICovXG4gIGdldFZlaGljbGVzQ2xhaW0oKTogT2JzZXJ2YWJsZTxWZWhpY2xlQ2xhaW0+IHtcbiAgICBpZiAoIXRoaXMuX3ZlaGljbGVDbGFpbSkge1xuICAgICAgdGhpcy5odHRwLmdldChgJHt0aGlzLmVudmlyb25tZW50LmFwaVYyfS92ZWhpY2xlLWNsYWltc2ApXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICAgICAgLy8gcmV0dXJuIFZlaGljbGUgY2xhaW0gZnJvbSBiYWNrZW5kIG9yIGNyZWF0ZSBuZXcgaWYgaXQgbm90IGV4aXN0XG4gICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UubGVuZ3RoID8gcmVzcG9uc2UubWFwKChpdGVtOiBhbnkpID0+IHBsYWluVG9DbGFzcyhWZWhpY2xlQ2xhaW0sIGl0ZW0pKVswXSA6IHBsYWluVG9DbGFzcyhWZWhpY2xlQ2xhaW0sIHt9KTtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKHZlaGljbGVDbGFpbTogVmVoaWNsZUNsYWltKSA9PiB7XG4gICAgICAgICAgdGhpcy5fdmVoaWNsZUNsYWltID0gdmVoaWNsZUNsYWltO1xuICAgICAgICAgIHRoaXMudmVoaWNsZUNsYWltU3ViamVjdC5uZXh0KHZlaGljbGVDbGFpbSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnZlaGljbGVDbGFpbVN1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIG5ldyB2ZWhpY2xlIGNsYWltXG4gICAqIEBwYXJhbSBjbGFpbSBvYmplY3Qgd2hpY2ggc2hvdWxkIGJlIGFkZGVkXG4gICAqL1xuICBhZGRWZWhpY2xlQ2xhaW0oY2xhaW06IFZlaGljbGVDbGFpbSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuZW52aXJvbm1lbnQuYXBpVjJ9L3ZlaGljbGUtY2xhaW1zYCwgY2xhaW0pLnBpcGUoXG4gICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5fdmVoaWNsZUNsYWltID0gcGxhaW5Ub0NsYXNzKFZlaGljbGVDbGFpbSwgcmVzcG9uc2UpO1xuICAgICAgICB0aGlzLnZlaGljbGVDbGFpbVN1YmplY3QubmV4dCh0aGlzLl92ZWhpY2xlQ2xhaW0pO1xuICAgICAgICB0aGlzLmV2ZW50RGlzcGF0Y2hlclNlcnZpY2UuZGlzcGF0Y2gobmV3IEFwcEV2ZW50KEFwcEV2ZW50VHlwZUVudW0uVkVISUNMRV9DTEFJTV9DUkVBVEVELCBudWxsKSk7XG4gICAgICB9KSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHZlaGljbGVzIGNsYWltIHJhdGUgZm9yIGN1cnJlbnQgZmluYW5jaWFsIHllYXJcbiAgICovXG4gIGdldFZlaGljbGVzQ2xhaW1SYXRlKCk6IE9ic2VydmFibGU8bnVtYmVyPiB7XG4gICAgaWYgKCF0aGlzLl92ZWhpY2xlQ2xhaW1SYXRlKSB7XG4gICAgICB0aGlzLmNoYXJ0QWNjb3VudHNTZXJ2aWNlLmdldENoYXJ0QWNjb3VudHNCeUlkKENoYXJ0QWNjb3VudHNMaXN0RW51bS5LTE1TX1RSQVZFTExFRF9GT1JfV09SSylcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgbWFwKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcmVzcG9uc2UudmFsdWVzLmZpbmQoKGNoYXJ0QWNjb3VudDogYW55KSA9PiBjaGFydEFjY291bnQuZmluYW5jaWFsWWVhciA9PT0gbmV3IEZpbmFuY2lhbFllYXIoKS55ZWFyKS52YWx1ZTtcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKGNsYWltUmF0ZTogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgdGhpcy5fdmVoaWNsZUNsYWltUmF0ZSA9IGNsYWltUmF0ZTtcbiAgICAgICAgICB0aGlzLnZlaGljbGVDbGFpbVJhdGVTdWJqZWN0Lm5leHQodGhpcy5fdmVoaWNsZUNsYWltUmF0ZSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnZlaGljbGVDbGFpbVJhdGVTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB2ZWhpY2xlcyB0YXggcmV0dXJuIGZvciB2ZWhpY2xlIHRyYW5zYWN0aW9ucyAmIGRlcHJlY2lhdGlvbnNcbiAgICovXG4gIGdldFZlaGljbGVzVGF4UmV0dXJuKCk6IE9ic2VydmFibGU8bnVtYmVyPiB7XG4gICAgaWYgKCF0aGlzLl92ZWhpY2xlVGF4UmV0dXJuKSB7XG4gICAgICBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgLy8gQFRvZG8gcmVmYWN0b3IgdG8gYXZvaWQgaW5qZWN0aW9uIG9mIGFub3RoZXIgc2VydmljZXNcbiAgICAgICAgdGhpcy50cmFuc2FjdGlvblNlcnZpY2UuZ2V0KCksXG4gICAgICAgIHRoaXMuZGVwcmVjaWF0aW9uU2VydmljZS5nZXQoKSxcbiAgICAgICAgdGhpcy5nZXRWZWhpY2xlc0NsYWltKClcbiAgICAgIF0pLnBpcGUoXG4gICAgICAgICAgbWFwKChbdHJhbnNhY3Rpb25zLCBkZXByZWNpYXRpb25zLCB2ZWhpY2xlQ2xhaW1dOiBbVHJhbnNhY3Rpb25bXSwgRGVwcmVjaWF0aW9uW10sIFZlaGljbGVDbGFpbV0pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNoYXJ0QWNjb3VudHNIZWFkaW5nc0lkczogbnVtYmVyW10gPSBlbnVtVG9MaXN0KENoYXJ0QWNjb3VudHNIZWFkaW5nVmVoaWNsZUxpc3RFbnVtKVxuICAgICAgICAgICAgICAubWFwKChpdGVtOiB7IGxhYmVsOiBzdHJpbmcsIHZhbHVlOiBudW1iZXIgfSkgPT4gaXRlbS52YWx1ZSk7XG4gICAgICAgICAgICAvLyBnZXQgdHJhbnNhY3Rpb25zICYgZGVwcmVjaWF0aW9ucyB3aGljaCBjaGFydCBhY2NvdW50cyBoZWFkaW5ncyBhcmUgYmVsb25nIHRvIHZlaGljbGUgY2F0ZWdvcnlcbiAgICAgICAgICAgIC8vIGJ1dCBleGNlcHQgS0xNUyB0cmFuc2FjdGlvblxuICAgICAgICAgICAgY29uc3QgZmlsdGVyZWRJdGVtczogQXJyYXk8VHJhbnNhY3Rpb24gfCBEZXByZWNpYXRpb24+ID0gWy4uLnRyYW5zYWN0aW9ucywgLi4uZGVwcmVjaWF0aW9uc10uZmlsdGVyKChpdGVtOiBUcmFuc2FjdGlvbiB8IERlcHJlY2lhdGlvbikgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4gY2hhcnRBY2NvdW50c0hlYWRpbmdzSWRzLmluY2x1ZGVzKGl0ZW0uY2hhcnRBY2NvdW50cy5oZWFkaW5nPy5pZCkgJiYgIWl0ZW0uY2hhcnRBY2NvdW50cy5pc0tsbXNGb3JXb3JrKCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgLy8gZ2V0IGNsYWltIGFtb3VudCBzdW1cbiAgICAgICAgICAgIHJldHVybiBmaWx0ZXJlZEl0ZW1zLnJlZHVjZSgoc3VtOiBudW1iZXIsIGl0ZW06IFRyYW5zYWN0aW9uIHwgRGVwcmVjaWF0aW9uKSA9PlxuICAgICAgICAgICAgICAvLyBAVG9kbyByZW1vdmUgaXRlbS5hbW91bnQgbmVnYXRpdmUgc2lnbiB3aGVuIGRlcHJlY2lhdGlvbnMgd2lsbCBiZSByZWZhY3RvcmVkIGFuZCB3aWxsIGhhdmUgbmVnYXRpdmUgc2lnblxuICAgICAgICAgICAgICBzdW0gKyAoKGl0ZW0gaW5zdGFuY2VvZiBEZXByZWNpYXRpb24gPyBpdGVtLmN1cnJlbnRZZWFyRm9yZWNhc3QuYW1vdW50IDogLWl0ZW0uYW1vdW50KSAqICh2ZWhpY2xlQ2xhaW0ud29ya1VzYWdlIC8gMTAwKSksIDApO1xuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKHRheFJldHVybjogbnVtYmVyKSA9PiB7XG4gICAgICAgIHRoaXMuX3ZlaGljbGVUYXhSZXR1cm4gPSB0YXhSZXR1cm47XG4gICAgICAgIHRoaXMudmVoaWNsZVRheFJldHVyblN1YmplY3QubmV4dCh0aGlzLl92ZWhpY2xlVGF4UmV0dXJuKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnZlaGljbGVUYXhSZXR1cm5TdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB2ZWhpY2xlIGNsYWltXG4gICAqIEBwYXJhbSBjbGFpbSB3aGljaCBzaG91bGQgYmUgdXBkYXRlZFxuICAgKlxuICAgKiBAVE9ETyBhbGV4IHJlZnJlc2ggZGVwcmVjaWF0aW9uL3RyYW5zYWN0aW9uIGNhY2hlXG4gICAqL1xuICB1cGRhdGVWZWhpY2xlQ2xhaW0oY2xhaW06IFZlaGljbGVDbGFpbSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQoYCR7dGhpcy5lbnZpcm9ubWVudC5hcGlWMn0vdmVoaWNsZS1jbGFpbXMvJHtjbGFpbS5pZH1gLCBjbGFpbSkucGlwZShcbiAgICAgIG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICBjb25zdCB1cGRhdGVkVmVoaWNsZUNsYWltOiBWZWhpY2xlQ2xhaW0gPSBwbGFpblRvQ2xhc3MoVmVoaWNsZUNsYWltLCByZXNwb25zZSk7XG4gICAgICAgIHRoaXMuX3ZlaGljbGVDbGFpbSA9IHVwZGF0ZWRWZWhpY2xlQ2xhaW07XG4gICAgICAgIHRoaXMudmVoaWNsZUNsYWltU3ViamVjdC5uZXh0KHRoaXMuX3ZlaGljbGVDbGFpbSk7XG5cbiAgICAgICAgdGhpcy5ldmVudERpc3BhdGNoZXJTZXJ2aWNlLmRpc3BhdGNoKG5ldyBBcHBFdmVudChBcHBFdmVudFR5cGVFbnVtLlZFSElDTEVfQ0xBSU1fVVBEQVRFRCwgbnVsbCkpO1xuXG4gICAgICAgIHJldHVybiB1cGRhdGVkVmVoaWNsZUNsYWltO1xuICAgICAgfSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBuZXcgbG9nYm9vayBmb3IgZGVzaXJlZCB2ZWhpY2xlXG4gICAqIEBwYXJhbSBsb2dib29rIHdoaWNoIHNob3VsZCBiZSBhZGRlZFxuICAgKiBAcGFyYW0gdmVoaWNsZSBmb3Igd2hpY2ggbG9nYm9vayBvYmplY3Qgc2hvdWxkIGJlIGFkZGVkXG4gICAqL1xuICBhZGRMb2dib29rKGxvZ2Jvb2s6IFZlaGljbGVMb2dib29rLCB2ZWhpY2xlOiBWZWhpY2xlKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0KGAke3RoaXMuZW52aXJvbm1lbnQuYXBpVjJ9L3ZlaGljbGVzLyR7dmVoaWNsZS5pZH0vbG9nYm9va3NgLCBsb2dib29rKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMuX3ZlaGljbGVzLmZpbmQoKHY6IFZlaGljbGUpID0+IHYuaWQgPT09IHZlaGljbGUuaWQpLmxvZ2Jvb2sucHVzaChyZXNwb25zZSk7XG4gICAgICAgICAgLy8gd2UgdXBkYXRlIG5lc3RlZCBsb2dib29rIG9iamVjdCBpbnNpZGUgdmVoaWNsZXMgbGlzdC4gU28gbGlzdCBpcyBub3QgY2hhbmdlZCBhbmQgbmV4dCBub3QgZW1pdCBzdWJzY3JpcHRpb25zIHVwZGF0ZXMuXG4gICAgICAgICAgLy8gdGhhdCBpcyB3aHkgd2UgcmVjcmVhdGUgdmVoaWNsZXMgYXJyYXlcbiAgICAgICAgICB0aGlzLnZlaGljbGVzU3ViamVjdC5uZXh0KHRoaXMuX3ZlaGljbGVzLm1hcCgoaXRlbTogb2JqZWN0KSA9PiBwbGFpblRvQ2xhc3MoVmVoaWNsZSwgaXRlbSkpKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIGxvZ2Jvb2tcbiAgICogQHBhcmFtIGxvZ2Jvb2sgd2hpY2ggc2hvdWxkIGJlIHVwZGF0ZWRcbiAgICogQHBhcmFtIHZlaGljbGUgZm9yIHdoaWNoIGxvZ2Jvb2sgb2JqZWN0IHNob3VsZCBiZSB1cGRhdGVkXG4gICAqL1xuICB1cGRhdGVMb2dib29rKGxvZ2Jvb2s6IFZlaGljbGVMb2dib29rLCB2ZWhpY2xlOiBWZWhpY2xlKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLnB1dChgJHt0aGlzLmVudmlyb25tZW50LmFwaVYyfS92ZWhpY2xlcy8ke3ZlaGljbGUuaWR9L2xvZ2Jvb2tzLyR7bG9nYm9vay5pZH1gLCBsb2dib29rKS5waXBlKFxuICAgICAgbWFwKChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIGNvbnN0IGVkaXRlZFZlaGljbGU6IFZlaGljbGUgPSB0aGlzLl92ZWhpY2xlcy5maW5kKCh2OiBWZWhpY2xlKSA9PiB2LmlkID09PSB2ZWhpY2xlLmlkKTtcbiAgICAgICAgY29uc3QgZWRpdGVkTG9nYm9va0luZGV4OiBudW1iZXIgPSBlZGl0ZWRWZWhpY2xlLmxvZ2Jvb2suZmluZEluZGV4KChsOiBWZWhpY2xlTG9nYm9vaykgPT4gbC5pZCA9PT0gbG9nYm9vay5pZCk7XG4gICAgICAgIGVkaXRlZFZlaGljbGUubG9nYm9vay5zcGxpY2UoZWRpdGVkTG9nYm9va0luZGV4LCAxLCBwbGFpblRvQ2xhc3MoVmVoaWNsZUxvZ2Jvb2ssIHJlc3BvbnNlKSk7XG4gICAgICAgIC8vIHdlIHVwZGF0ZSBuZXN0ZWQgbG9nYm9vayBvYmplY3QgaW5zaWRlIHZlaGljbGVzIGxpc3QuIFNvIGxpc3QgaXMgbm90IGNoYW5nZWQgYW5kIG5leHQgbm90IGVtaXQgc3Vic2NyaXB0aW9ucyB1cGRhdGVzLlxuICAgICAgICAvLyB0aGF0IGlzIHdoeSB3ZSByZWNyZWF0ZSB2ZWhpY2xlcyBhcnJheVxuICAgICAgICB0aGlzLnZlaGljbGVzU3ViamVjdC5uZXh0KHRoaXMuX3ZlaGljbGVzLm1hcCgoaXRlbTogb2JqZWN0KSA9PiBwbGFpblRvQ2xhc3MoVmVoaWNsZSwgaXRlbSkpKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZWxldGUgdHJpcFxuICAgKiBAcGFyYW0gbG9nYm9vayBmb3Igd2hpY2ggdHJpcCBzaG91bGQgYmUgZGVsZXRlZFxuICAgKiBAcGFyYW0gdmVoaWNsZSBmb3Igd2hpY2ggdHJpcCBzaG91bGQgYmUgZGVsZXRlZFxuICAgKi9cbiAgZGVsZXRlVHJpcChsb2dib29rOiBWZWhpY2xlTG9nYm9vaywgdmVoaWNsZTogVmVoaWNsZSk6IE9ic2VydmFibGU8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuaHR0cC5kZWxldGUoYCR7dGhpcy5lbnZpcm9ubWVudC5hcGlWMn0vdmVoaWNsZXMvJHt2ZWhpY2xlLmlkfS9sb2dib29rcy8ke2xvZ2Jvb2suaWR9YClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGVkaXRlZFZlaGljbGU6IFZlaGljbGUgPSB0aGlzLl92ZWhpY2xlcy5maW5kKCh2OiBWZWhpY2xlKSA9PiB2LmlkID09PSB2ZWhpY2xlLmlkKTtcbiAgICAgICAgICBjb25zdCBkZWxldGVkTG9nYm9va0luZGV4OiBudW1iZXIgPSBlZGl0ZWRWZWhpY2xlLmxvZ2Jvb2suZmluZEluZGV4KChsOiBWZWhpY2xlTG9nYm9vaykgPT4gbC5pZCA9PT0gbG9nYm9vay5pZCk7XG4gICAgICAgICAgZWRpdGVkVmVoaWNsZS5sb2dib29rLnNwbGljZShkZWxldGVkTG9nYm9va0luZGV4LCAxKTtcbiAgICAgICAgICAvLyB3ZSB1cGRhdGUgbmVzdGVkIGxvZ2Jvb2sgb2JqZWN0IGluc2lkZSB2ZWhpY2xlcyBsaXN0LiBTbyBsaXN0IGlzIG5vdCBjaGFuZ2VkIGFuZCBuZXh0IG5vdCBlbWl0IHN1YnNjcmlwdGlvbnMgdXBkYXRlcy5cbiAgICAgICAgICAvLyB0aGF0IGlzIHdoeSB3ZSByZWNyZWF0ZSB2ZWhpY2xlcyBhcnJheVxuICAgICAgICAgIHRoaXMudmVoaWNsZXNTdWJqZWN0Lm5leHQodGhpcy5fdmVoaWNsZXMubWFwKChpdGVtOiBvYmplY3QpID0+IHBsYWluVG9DbGFzcyhWZWhpY2xlLCBpdGVtKSkpO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgbmV3IHZlaGljbGVcbiAgICogQHBhcmFtIHZlaGljbGUgd2hpY2ggc2hvdWxkIGJlIGFkZGVkXG4gICAqL1xuICBhZGRWZWhpY2xlKHZlaGljbGU6IFZlaGljbGUpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdChgJHt0aGlzLmVudmlyb25tZW50LmFwaVYyfS92ZWhpY2xlc2AsIHtuYW1lOiB2ZWhpY2xlLm5hbWV9KVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICAgIHRoaXMuX3ZlaGljbGVzLnB1c2gocGxhaW5Ub0NsYXNzKFZlaGljbGUsIHJlc3BvbnNlKSk7XG4gICAgICAgICAgdGhpcy52ZWhpY2xlc1N1YmplY3QubmV4dCh0aGlzLl92ZWhpY2xlcyk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB2ZWhpY2xlXG4gICAqIEBwYXJhbSB2ZWhpY2xlIHdoaWNoIHNob3VsZCBiZSB1cGRhdGVkXG4gICAqL1xuICB1cGRhdGVWZWhpY2xlKHZlaGljbGU6IFZlaGljbGUpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLmh0dHAucHV0KGAke3RoaXMuZW52aXJvbm1lbnQuYXBpVjJ9L3ZlaGljbGVzLyR7dmVoaWNsZS5pZH1gLCB7bmFtZTogdmVoaWNsZS5uYW1lfSlcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgICBjb25zdCBlZGl0ZWRWZWhpY2xlSW5kZXg6IG51bWJlciA9IHRoaXMuX3ZlaGljbGVzLmZpbmRJbmRleCgodjogVmVoaWNsZSkgPT4gdi5pZCA9PT0gdmVoaWNsZS5pZCk7XG4gICAgICAgICAgdGhpcy5fdmVoaWNsZXMuc3BsaWNlKGVkaXRlZFZlaGljbGVJbmRleCwgMSwgcGxhaW5Ub0NsYXNzKFZlaGljbGUsIHJlc3BvbnNlKSk7XG4gICAgICAgICAgdGhpcy52ZWhpY2xlc1N1YmplY3QubmV4dCh0aGlzLl92ZWhpY2xlcyk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZSB2ZWhpY2xlXG4gICAqIEBwYXJhbSB2ZWhpY2xlIHdoaWNoIHNob3VsZCBiZSBkZWxldGVkXG4gICAqL1xuICBkZWxldGVWZWhpY2xlKHZlaGljbGU6IFZlaGljbGUpOiBPYnNlcnZhYmxlPHZvaWQ+IHtcbiAgICByZXR1cm4gdGhpcy5odHRwLmRlbGV0ZShgJHt0aGlzLmVudmlyb25tZW50LmFwaVYyfS92ZWhpY2xlcy8ke3ZlaGljbGUuaWR9YClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGRlbGV0ZWRWZWhpY2xlSW5kZXg6IG51bWJlciA9IHRoaXMuX3ZlaGljbGVzLmZpbmRJbmRleCgodjogVmVoaWNsZSkgPT4gdi5pZCA9PT0gdmVoaWNsZS5pZCk7XG4gICAgICAgICAgdGhpcy5fdmVoaWNsZXMuc3BsaWNlKGRlbGV0ZWRWZWhpY2xlSW5kZXgsIDEpO1xuICAgICAgICAgIC8vIHdlIHVwZGF0ZSBuZXN0ZWQgbG9nYm9vayBvYmplY3QgaW5zaWRlIHZlaGljbGVzIGxpc3QuIFNvIGxpc3QgaXMgbm90IGNoYW5nZWQgYW5kIG5leHQgbm90IGVtaXQgc3Vic2NyaXB0aW9ucyB1cGRhdGVzLlxuICAgICAgICAgIC8vIHRoYXQgaXMgd2h5IHdlIHJlY3JlYXRlIHZlaGljbGVzIGFycmF5XG4gICAgICAgICAgdGhpcy52ZWhpY2xlc1N1YmplY3QubmV4dCh0aGlzLl92ZWhpY2xlcy5tYXAoKGl0ZW06IG9iamVjdCkgPT4gcGxhaW5Ub0NsYXNzKFZlaGljbGUsIGl0ZW0pKSk7XG4gICAgICAgIH0pXG4gICAgICApO1xuICB9XG59XG4iXX0=
|