@novha/calc-engines 2.0.0 → 2.0.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/dist/income-tax/australia/AustraliaIncomeTaxService.js +1 -1
- package/dist/income-tax/australia/AustraliaIncomeTaxServiceImpl.js +6 -4
- package/dist/income-tax/australia/domain/types.js +1 -1
- package/dist/types/income-tax/australia/AustraliaIncomeTaxService.d.ts +1 -1
- package/dist/types/income-tax/australia/AustraliaIncomeTaxServiceImpl.d.ts +2 -1
- package/dist/types/income-tax/australia/domain/types.d.ts +1 -0
- package/package.json +1 -1
- package/src/income-tax/australia/AustraliaIncomeTaxService.ts +1 -0
- package/src/income-tax/australia/AustraliaIncomeTaxServiceImpl.ts +6 -3
- package/src/income-tax/australia/domain/types.ts +1 -0
- package/test/australia-income-tax.test.ts +5 -0
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXVzdHJhbGlhSW5jb21lVGF4U2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pbmNvbWUtdGF4L2F1c3RyYWxpYS9BdXN0cmFsaWFJbmNvbWVUYXhTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wdXRlZEluY29tZVRheFZhbHVlcywgSW5jb21lVGF4UnVsZXMgfSBmcm9tIFwiLi9kb21haW4vdHlwZXNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBBdXN0cmFsaWFJbmNvbWVUYXhTZXJ2aWNlIHtcbiAgICBjYWxjdWxhdGVOZXRJbmNvbWUoXG4gICAgICAgIGluY29tZTogbnVtYmVyLFxuICAgICAgICBydWxlczogSW5jb21lVGF4UnVsZXMsXG4gICAgICAgIGlzUmVzaWRlbnQ/OiBib29sZWFuLFxuICAgICk6IENvbXB1dGVkSW5jb21lVGF4VmFsdWVzO1xufVxuIl19
|
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.AustraliaIncomeTaxServiceImpl = void 0;
|
|
4
4
|
class AustraliaIncomeTaxServiceImpl {
|
|
5
|
-
constructor(income, rules) {
|
|
5
|
+
constructor(income, rules, isResident = true) {
|
|
6
6
|
this._income = income;
|
|
7
7
|
this._rules = rules;
|
|
8
|
+
this._isResident = isResident;
|
|
8
9
|
}
|
|
9
10
|
calculateNetIncome() {
|
|
10
11
|
const { grossTax, bracketBreakdown } = this.computeTaxBracketBreakdown(this._income, this._rules);
|
|
@@ -27,8 +28,9 @@ class AustraliaIncomeTaxServiceImpl {
|
|
|
27
28
|
computeTaxBracketBreakdown(income, rules) {
|
|
28
29
|
let tax = 0;
|
|
29
30
|
const bracketBreakdown = [];
|
|
30
|
-
|
|
31
|
-
|
|
31
|
+
const applicableBrackets = this._isResident ? rules.taxBrackets : rules.nonResidentTaxBrackets;
|
|
32
|
+
for (let index = 0; index < applicableBrackets.length; index++) {
|
|
33
|
+
const bracket = applicableBrackets[index];
|
|
32
34
|
if (income <= bracket.from) {
|
|
33
35
|
bracketBreakdown.push({
|
|
34
36
|
bracketIndex: index,
|
|
@@ -94,4 +96,4 @@ class AustraliaIncomeTaxServiceImpl {
|
|
|
94
96
|
}
|
|
95
97
|
}
|
|
96
98
|
exports.AustraliaIncomeTaxServiceImpl = AustraliaIncomeTaxServiceImpl;
|
|
97
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXVzdHJhbGlhSW5jb21lVGF4U2VydmljZUltcGwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW5jb21lLXRheC9hdXN0cmFsaWEvQXVzdHJhbGlhSW5jb21lVGF4U2VydmljZUltcGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBU0EsTUFBYSw2QkFBNkI7SUFJdEMsWUFBWSxNQUFjLEVBQUUsS0FBcUI7UUFDN0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDdEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDeEIsQ0FBQztJQUVNLGtCQUFrQjtRQUNyQixNQUFNLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixDQUNsRSxJQUFJLENBQUMsT0FBTyxFQUNaLElBQUksQ0FBQyxNQUFNLENBQ2QsQ0FBQztRQUVGLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FDdkMsSUFBSSxDQUFDLE9BQU8sRUFDWixJQUFJLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUNqQyxDQUFDO1FBRUYsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsUUFBUSxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQy9DLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FDekMsSUFBSSxDQUFDLE9BQU8sRUFDWixJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FDM0IsQ0FBQztRQUVGLE1BQU0sZUFBZSxHQUFHLFNBQVMsR0FBRyxZQUFZLENBQUM7UUFDakQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sR0FBRyxlQUFlLENBQUM7UUFFakQsT0FBTztZQUNILFdBQVcsRUFBRSxJQUFJLENBQUMsT0FBTztZQUN6QixTQUFTLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7WUFDaEMsWUFBWSxFQUFFLElB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QXlCLENBQUMsTUFBYyxFQUFFLElBQXdCO1FBQ3RFLElBQUksTUFBTSxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUMvQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDMUIsQ0FBQztRQUVELElBQUksTUFBTSxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUM3QixPQUFPLENBQUMsQ0FBQztRQUNiLENBQUM7UUFFRCxNQUFNLFNBQVMsR0FBRyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUNwRSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVPLG1CQUFtQixDQUFDLE1BQWMsRUFBRSxRQUEyQjtRQUNuRSxJQUFJLE1BQU0sSUFBSSxRQUFRLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUN4QyxPQUFPLENBQUMsQ0FBQztRQUNiLENBQUM7UUFFRCxJQUFJLE1BQU0sSUFBSSxRQUFRLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUN2QyxPQUFPLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUM7UUFDM0UsQ0FBQztRQUVELE9BQU8sTUFBTSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7SUFDbEMsQ0FBQztJQUVPLEtBQUssQ0FBQyxLQUFhLEVBQUUsUUFBUSxHQUFHLENBQUM7UUFDckMsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQzNDLENBQUM7Q0FDSjtBQTNIRCxzRUEySEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCcmFja2V0QWxsb2NhdGlvbiB9IGZyb20gXCIuLi9kb21haW4vdHlwZXNcIjtcbmltcG9ydCB7IEF1c3RyYWxpYUluY29tZVRheFNlcnZpY2UgfSBmcm9tIFwiLi9BdXN0cmFsaWFJbmNvbWVUYXhTZXJ2aWNlXCI7XG5pbXBvcnQge1xuICAgIENvbXB1dGVkSW5jb21lVGF4VmFsdWVzLFxuICAgIEluY29tZVRheFJ1bGVzLFxuICAgIExvd0luY29tZVRheE9mZnNldCxcbiAgICBNZWRpY2FyZUxldnlSdWxlcyxcbn0gZnJvbSBcIi4vZG9tYWluL3R5cGVzXCI7XG5cbmV4cG9ydCBjbGFzcyBBdXN0cmFsaWFJbmNvbWVUYXhTZXJ2aWNlSW1wbCBpbXBsZW1lbnRzIEF1c3RyYWxpYUluY29tZVRheFNlcnZpY2Uge1xuICAgIHByaXZhdGUgX2luY29tZTogbnVtYmVyO1xuICAgIHByaXZhdGUgX3J1bGVzOiBJbmNvbWVUYXhSdWxlcztcblxuICAgIGNvbnN0cnVjdG9yKGluY29tZTogbnVtYmVyLCBydWxlczogSW5jb21lVGF4UnVsZXMpIHtcbiAgICAgICAgdGhpcy5faW5jb21lID0gaW5jb21lO1xuICAgICAgICB0aGlzLl9ydWxlcyA9IHJ1bGVzO1xuICAgIH1cblxuICAgIHB1YmxpYyBjYWxjdWxhdGVOZXRJbmNvbWUoKTogQ29tcHV0ZWRJbmNvbWVUYXhWYWx1ZXMge1xuICAgICAgICBjb25zdCB7IGdyb3NzVGF4LCBicmFja2V0QnJlYWtkb3duIH0gPSB0aGlzLmNvbXB1dGVUYXhCcmFja2V0QnJlYWtkb3duKFxuICAgICAgICAgICAgdGhpcy5faW5jb21lLFxuICAgICAgICAgICAgdGhpcy5fcnVsZXMsXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3QgbGl0byA9IHRoaXMuY29tcHV0ZUxvd0luY29tZVRheE9mZnNldChcbiAgICAgICAgICAgIHRoaXMuX2luY29tZSxcbiAgICAgICAgICAgIHRoaXMuX3J1bGVzLmxvd0luY29tZVRheE9mZnNldCxcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBpbmNvbWVUYXggPSBNYXRoLm1heCgwLCBncm9zc1RheCAtIGxpdG8pO1xuICAgICAgICBjb25zdCBtZWRpY2FyZUxldnkgPSB0aGlzLmNvbXB1dGVNZWRpY2FyZUxldnkoXG4gICAgICAgICAgICB0aGlzLl9pbmNvbWUsXG4gICAgICAgICAgICB0aGlzLl9ydWxlcy5tZWRpY2FyZUxldnksXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3QgdG90YWxEZWR1Y3Rpb25zID0gaW5jb21lVGF4ICsgbWVkaWNhcmVMZXZ5O1xuICAgICAgICBjb25zdCBuZXRJbmNvbWUgPSB0aGlzLl9pbmNvbWUgLSB0b3RhbERlZHVjdGlvbnM7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGdyb3NzSW5jb21lOiB0aGlzLl9pbmNvbWUsXG4gICAgICAgICAgICBpbmNvbWVUYXg6IHRoaXMucm91bmQoaW5jb21lVGF4KSxcbiAgICAgICAgICAgIG1lZGljYXJlTGV2eTogdGhpcy5yb3VuZChtZWRpY2FyZUxldnkpLFxuICAgICAgICAgICAgbG93SW5jb21lVGF4T2Zmc2V0OiB0aGlzLnJvdW5kKGxpdG8pLFxuICAgICAgICAgICAgdG90YWxEZWR1Y3Rpb25zOiB0aGlzLnJvdW5kKHRvdGFsRGVkdWN0aW9ucyksXG4gICAgICAgICAgICBuZXRJbmNvbWU6IHRoaXMucm91bmQobmV0SW5jb21lKSxcbiAgICAgICAgICAgIGVmZmVjdGl2ZVRheFJhdGU6IHRoaXMuX2luY29tZSA+IDAgPyB0aGlzLnJvdW5kKGluY29tZVRheCAvIHRoaXMuX2luY29tZSwgNCkgOiAwLFxuICAgICAgICAgICAgdGF4QnJhY2tldEJyZWFrZG93bjogYnJhY2tldEJyZWFrZG93bixcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbXB1dGVUYXhCcmFja2V0QnJlYWtkb3duKFxuICAgICAgICBpbmNvbWU6IG51bWJlcixcbiAgICAgICAgcnVsZXM6IEluY29tZVRheFJ1bGVzLFxuICAgICk6IHsgZ3Jvc3NUYXg6IG51bWJlcjsgYnJhY2tldEJyZWFrZG93bjogQnJhY2tldEFsbG9jYXRpb25bXSB9IHtcbiAgICAgICAgbGV0IHRheCA9IDA7XG4gICAgICAgIGNvbnN0IGJyYWNrZXRCcmVha2Rvd246IEJyYWNrZXRBbGxvY2F0aW9uW10gPSBbXTtcblxuICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgcnVsZXMudGF4QnJhY2tldHMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgICAgICBjb25zdCBicmFja2V0ID0gcnVsZXMudGF4QnJhY2tldHNbaW5kZXhdO1xuXG4gICAgICAgICAgICBpZiAoaW5jb21lIDw9IGJyYWNrZXQuZnJvbSkge1xuICAgICAgICAgICAgICAgIGJyYWNrZXRCcmVha2Rvd24ucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIGJyYWNrZXRJbmRleDogaW5kZXgsXG4gICAgICAgICAgICAgICAgICAgIGJyYWNrZXROYW1lOiBgQnJhY2tldCAke2luZGV4ICsgMX1gLFxuICAgICAgICAgICAgICAgICAgICBmcm9tOiBicmFja2V0LmZyb20sXG4gICAgICAgICAgICAgICAgICAgIHRvOiBicmFja2V0LnRvID8/IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIHJhdGU6IGJyYWNrZXQucmF0ZSxcbiAgICAgICAgICAgICAgICAgICAgYW1vdW50SW5CcmFja2V0OiAwLFxuICAgICAgICAgICAgICAgICAgICB0YXhPbkFtb3VudDogMCxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgdXBwZXIgPSBicmFja2V0LnRvID8/IGluY29tZTtcbiAgICAgICAgICAgIGNvbnN0IHRheGFibGVBbW91bnQgPSBNYXRoLm1pbih1cHBlciwgaW5jb21lKSAtIGJyYWNrZXQuZnJvbTtcblxuICAgICAgICAgICAgaWYgKHRheGFibGVBbW91bnQgPiAwKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGF4T25BbW91bnQgPSB0YXhhYmxlQW1vdW50ICogYnJhY2tldC5yYXRlO1xuICAgICAgICAgICAgICAgIHRheCArPSB0YXhPbkFtb3VudDtcbiAgICAgICAgICAgICAgICBicmFja2V0QnJlYWtkb3duLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICBicmFja2V0SW5kZXg6IGluZGV4LFxuICAgICAgICAgICAgICAgICAgICBicmFja2V0TmFtZTogYEJyYWNrZXQgJHtpbmRleCArIDF9YCxcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogYnJhY2tldC5mcm9tLFxuICAgICAgICAgICAgICAgICAgICB0bzogYnJhY2tldC50byA/PyBudWxsLFxuICAgICAgICAgICAgICAgICAgICByYXRlOiBicmFja2V0LnJhdGUsXG4gICAgICAgICAgICAgICAgICAgIGFtb3VudEluQnJhY2tldDogdGF4YWJsZUFtb3VudCxcbiAgICAgICAgICAgICAgICAgICAgdGF4T25BbW91bnQsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGJyYWNrZXRCcmVha2Rvd24ucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIGJyYWNrZXRJbmRleDogaW5kZXgsXG4gICAgICAgICAgICAgICAgICAgIGJyYWNrZXROYW1lOiBgQnJhY2tldCAke2luZGV4ICsgMX1gLFxuICAgICAgICAgICAgICAgICAgICBmcm9tOiBicmFja2V0LmZyb20sXG4gICAgICAgICAgICAgICAgICAgIHRvOiBicmFja2V0LnRvID8/IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIHJhdGU6IGJyYWNrZXQucmF0ZSxcbiAgICAgICAgICAgICAgICAgICAgYW1vdW50SW5CcmFja2V0OiAwLFxuICAgICAgICAgICAgICAgICAgICB0YXhPbkFtb3VudDogMCxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7IGdyb3NzVGF4OiB0YXgsIGJyYWNrZXRCcmVha2Rvd24gfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbXB1dGVMb3dJbmNvbWVUYXhPZmZzZXQoaW5jb21lOiBudW1iZXIsIGxpdG86IExvd0luY29tZVRheE9mZnNldCk6IG51bWJlciB7XG4gICAgICAgIGlmIChpbmNvbWUgPD0gbGl0by5waGFzZU91dFN0YXJ0KSB7XG4gICAgICAgICAgICByZXR1cm4gbGl0by5tYXhPZmZzZXQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaW5jb21lID49IGxpdG8ucGhhc2VPdXRFbmQpIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVkdWN0aW9uID0gKGluY29tZSAtIGxpdG8ucGhhc2VPdXRTdGFydCkgKiBsaXRvLnBoYXNlT3V0UmF0ZTtcbiAgICAgICAgcmV0dXJuIE1hdGgubWF4KDAsIGxpdG8ubWF4T2Zmc2V0IC0gcmVkdWN0aW9uKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbXB1dGVNZWRpY2FyZUxldnkoaW5jb21lOiBudW1iZXIsIG1lZGljYXJlOiBNZWRpY2FyZUxldnlSdWxlcyk6IG51bWJlciB7XG4gICAgICAgIGlmIChpbmNvbWUgPD0gbWVkaWNhcmUuc2hhZGluZ0luVGhyZXNob2xkKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpbmNvbWUgPD0gbWVkaWNhcmUuZnVsbExldnlUaHJlc2hvbGQpIHtcbiAgICAgICAgICAgIHJldHVybiAoaW5jb21lIC0gbWVkaWNhcmUuc2hhZGluZ0luVGhyZXNob2xkKSAqIG1lZGljYXJlLnJlZHVjdGlvblJhdGU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaW5jb21lICogbWVkaWNhcmUucmF0ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJvdW5kKHZhbHVlOiBudW1iZXIsIGRlY2ltYWxzID0gMik6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBOdW1iZXIodmFsdWUudG9GaXhlZChkZWNpbWFscykpO1xuICAgIH1cbn1cbiJdfQ==
|
|
99
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXVzdHJhbGlhSW5jb21lVGF4U2VydmljZUltcGwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW5jb21lLXRheC9hdXN0cmFsaWEvQXVzdHJhbGlhSW5jb21lVGF4U2VydmljZUltcGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBU0EsTUFBYSw2QkFBNkI7SUFLdEMsWUFBWSxNQUFjLEVBQUUsS0FBcUIsRUFBRSxhQUFzQixJQUFJO1FBQ3pFLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDO0lBQ2xDLENBQUM7SUFFTSxrQkFBa0I7UUFDckIsTUFBTSxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FDbEUsSUFBSSxDQUFDLE9BQU8sRUFDWixJQUFJLENBQUMsTUFBTSxDQUNkLENBQUM7UUFFRixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQ3ZDLElBQUksQ0FBQyxPQUFPLEVBQ1osSUFBSSxDQUFDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FDakMsQ0FBQztRQUVGLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLFFBQVEsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUMvQyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQ3pDLElBQUksQ0FBQyxPQUFPLEVBQ1osSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQzNCLENBQUM7UUFFRixNQUFNLGVBQWUsR0FBRyxTQUFTLEdBQUcsWUFBWSxDQUFDO1FBQ2pELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsZUFBZSxDQUFDO1FBRWpELE9BQU87WUFDSCxXQUFXLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDekIsU0FBUyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDO1lBQ2hDLFlBQVksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQztZQUN0QyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztZQUNwQyxlQUFlLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUM7WUFDNUMsU0FBUyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDO1lBQ2hDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2hGLG1CQUFtQixFQUFFLGdCQUFnQjtTQUN4QyxDQUFDO0lBQ04sQ0FBQztJQUVPLDBCQUEwQixDQUM5QixNQUFjLEVBQ2QsS0FBcUI7UUFFckIsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ1osTUFBTSxnQkFBZ0IsR0FBd0IsRUFBRSxDQUFDO1FBRWpELE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLHNCQUFzQixDQUFDO1FBQy9GLEtBQUssSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUM3RCxNQUFNLE9BQU8sR0FBRyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUUxQyxJQUFJLE1BQU0sSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ3pCLGdCQUFnQixDQUFDLElBQUksQ0FBQztvQkFDbEIsWUFBWSxFQUFFLEtBQUs7b0JBQ25CLFdBQVcsRUFBRSxXQUFXLEtBQUssR0FBRyxDQUFDLEVBQUU7b0JBQ25DLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSTtvQkFDbEIsRUFBRSxFQUFFLE9BQU8sQ0FBQyxFQUFFLElBQUksSUFBSTtvQkFDdEIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO29CQUNsQixlQUFlLEVBQUUsQ0FBQztvQkFDbEIsV0FBVyxFQUFFLENBQUM7aUJBQ2pCLENBQUMsQ0FBQztnQkFDSCxNQUFNO1lBQ1YsQ0FBQztZQUVELE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxFQUFFLElBQUksTUFBTSxDQUFDO1lBQ25DLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7WUFFN0QsSUFBSSxhQUFhLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3BCLE1BQU0sV0FBVyxHQUFHLGFBQWEsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDO2dCQUNqRCxHQUFHLElBQUksV0FBVyxDQUFDO2dCQUNuQixnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7b0JBQ2xCLFlBQVksRUFBRSxLQUFLO29CQUNuQixXQUFXLEVBQUUsV0FBVyxLQUFLLEdBQUcsQ0FBQyxFQUFFO29CQUNuQyxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7b0JBQ2xCLEVBQUUsRUFBRSxPQUFPLENBQUMsRUFBRSxJQUFJLElBQUk7b0JBQ3RCLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSTtvQkFDbEIsZUFBZSxFQUFFLGFBQWE7b0JBQzlCLFdBQVc7aUJBQ2QsQ0FBQyxDQUFDO1lBQ1AsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLGdCQUFnQixDQUFDLElBQUksQ0FBQztvQkFDbEIsWUFBWSxFQUFFLEtBQUs7b0JBQ25CLFdBQVcsRUFBRSxXQUFXLEtBQUssR0FBRyxDQUFDLEVBQUU7b0JBQ25DLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSTtvQkFDbEIsRUFBRSxFQUFFLE9BQU8sQ0FBQyxFQUFFLElBQUksSUFBSTtvQkFDdEIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO29CQUNsQixlQUFlLEVBQUUsQ0FBQztvQkFDbEIsV0FBVyxFQUFFLENBQUM7aUJBQ2pCLENBQUMsQ0FBQztZQUNQLENBQUM7UUFDTCxDQUFDO1FBRUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQztJQUMvQyxDQUFDO0lBRU8seUJBQXlCLENBQUMsTUFBYyxFQUFFLElBQXdCO1FBQ3RFLElBQUksTUFBTSxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUMvQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDMUIsQ0FBQztRQUVELElBQUksTUFBTSxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUM3QixPQUFPLENBQUMsQ0FBQztRQUNiLENBQUM7UUFFRCxNQUFNLFNBQVMsR0FBRyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUNwRSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVPLG1CQUFtQixDQUFDLE1BQWMsRUFBRSxRQUEyQjtRQUNuRSxJQUFJLE1BQU0sSUFBSSxRQUFRLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUN4QyxPQUFPLENBQUMsQ0FBQztRQUNiLENBQUM7UUFFRCxJQUFJLE1BQU0sSUFBSSxRQUFRLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUN2QyxPQUFPLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUM7UUFDM0UsQ0FBQztRQUVELE9BQU8sTUFBTSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7SUFDbEMsQ0FBQztJQUVPLEtBQUssQ0FBQyxLQUFhLEVBQUUsUUFBUSxHQUFHLENBQUM7UUFDckMsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQzNDLENBQUM7Q0FDSjtBQTlIRCxzRUE4SEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCcmFja2V0QWxsb2NhdGlvbiB9IGZyb20gXCIuLi9kb21haW4vdHlwZXNcIjtcbmltcG9ydCB7IEF1c3RyYWxpYUluY29tZVRheFNlcnZpY2UgfSBmcm9tIFwiLi9BdXN0cmFsaWFJbmNvbWVUYXhTZXJ2aWNlXCI7XG5pbXBvcnQge1xuICAgIENvbXB1dGVkSW5jb21lVGF4VmFsdWVzLFxuICAgIEluY29tZVRheFJ1bGVzLFxuICAgIExvd0luY29tZVRheE9mZnNldCxcbiAgICBNZWRpY2FyZUxldnlSdWxlcyxcbn0gZnJvbSBcIi4vZG9tYWluL3R5cGVzXCI7XG5cbmV4cG9ydCBjbGFzcyBBdXN0cmFsaWFJbmNvbWVUYXhTZXJ2aWNlSW1wbCBpbXBsZW1lbnRzIEF1c3RyYWxpYUluY29tZVRheFNlcnZpY2Uge1xuICAgIHByaXZhdGUgX2luY29tZTogbnVtYmVyO1xuICAgIHByaXZhdGUgX3J1bGVzOiBJbmNvbWVUYXhSdWxlcztcbiAgICBwcml2YXRlIF9pc1Jlc2lkZW50OiBib29sZWFuO1xuXG4gICAgY29uc3RydWN0b3IoaW5jb21lOiBudW1iZXIsIHJ1bGVzOiBJbmNvbWVUYXhSdWxlcywgaXNSZXNpZGVudDogYm9vbGVhbiA9IHRydWUpIHtcbiAgICAgICAgdGhpcy5faW5jb21lID0gaW5jb21lO1xuICAgICAgICB0aGlzLl9ydWxlcyA9IHJ1bGVzO1xuICAgICAgICB0aGlzLl9pc1Jlc2lkZW50ID0gaXNSZXNpZGVudDtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2FsY3VsYXRlTmV0SW5jb21lKCk6IENvbXB1dGVkSW5jb21lVGF4VmFsdWVzIHtcbiAgICAgICAgY29uc3QgeyBncm9zc1RheCwgYnJhY2tldEJyZWFrZG93biB9ID0gdGhpcy5jb21wdXRlVGF4QnJhY2tldEJyZWFrZG93bihcbiAgICAgICAgICAgIHRoaXMuX2luY29tZSxcbiAgICAgICAgICAgIHRoaXMuX3J1bGVzLFxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IGxpdG8gPSB0aGlzLmNvbXB1dGVMb3dJbmNvbWVUYXhPZmZzZXQoXG4gICAgICAgICAgICB0aGlzLl9pbmNvbWUsXG4gICAgICAgICAgICB0aGlzLl9ydWxlcy5sb3dJbmNvbWVUYXhPZmZzZXQsXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3QgaW5jb21lVGF4ID0gTWF0aC5tYXgoMCwgZ3Jvc3NUYXggLSBsaXRvKTtcbiAgICAgICAgY29uc3QgbWVkaWNhcmVMZXZ5ID0gdGhpcy5jb21wdXRlTWVkaWNhcmVMZXZ5KFxuICAgICAgICAgICAgdGhpcy5faW5jb21lLFxuICAgICAgICAgICAgdGhpcy5fcnVsZXMubWVkaWNhcmVMZXZ5LFxuICAgICAgICApO1xuXG4gICAgICAgIGNvbnN0IHRvdGFsRGVkdWN0aW9ucyA9IGluY29tZVRheCArIG1lZGljYXJlTGV2eTtcbiAgICAgICAgY29uc3QgbmV0SW5jb21lID0gdGhpcy5faW5jb21lIC0gdG90YWxEZWR1Y3Rpb25zO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBncm9zc0luY29tZTogdGhpcy5faW5jb21lLFxuICAgICAgICAgICAgaW5jb21lVGF4OiB0aGlzLnJvdW5kKGluY29tZVRheCksXG4gICAgICAgICAgICBtZWRpY2FyZUxldnk6IHRoaXMucm91bmQobWVkaWNhcmVMZXZ5KSxcbiAgICAgICAgICAgIGxvd0luY29tZVRheE9mZnNldDogdGhpcy5yb3VuZChsaXRvKSxcbiAgICAgICAgICAgIHRvdGFsRGVkdWN0aW9uczogdGhpcy5yb3VuZCh0b3RhbERlZHVjdGlvbnMpLFxuICAgICAgICAgICAgbmV0SW5jb21lOiB0aGlzLnJvdW5kKG5ldEluY29tZSksXG4gICAgICAgICAgICBlZmZlY3RpdmVUYXhSYXRlOiB0aGlzLl9pbmNvbWUgPiAwID8gdGhpcy5yb3VuZChpbmNvbWVUYXggLyB0aGlzLl9pbmNvbWUsIDQpIDogMCxcbiAgICAgICAgICAgIHRheEJyYWNrZXRCcmVha2Rvd246IGJyYWNrZXRCcmVha2Rvd24sXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjb21wdXRlVGF4QnJhY2tldEJyZWFrZG93bihcbiAgICAgICAgaW5jb21lOiBudW1iZXIsXG4gICAgICAgIHJ1bGVzOiBJbmNvbWVUYXhSdWxlcyxcbiAgICApOiB7IGdyb3NzVGF4OiBudW1iZXI7IGJyYWNrZXRCcmVha2Rvd246IEJyYWNrZXRBbGxvY2F0aW9uW10gfSB7XG4gICAgICAgIGxldCB0YXggPSAwO1xuICAgICAgICBjb25zdCBicmFja2V0QnJlYWtkb3duOiBCcmFja2V0QWxsb2NhdGlvbltdID0gW107XG5cbiAgICAgICAgY29uc3QgYXBwbGljYWJsZUJyYWNrZXRzID0gdGhpcy5faXNSZXNpZGVudCA/IHJ1bGVzLnRheEJyYWNrZXRzIDogcnVsZXMubm9uUmVzaWRlbnRUYXhCcmFja2V0cztcbiAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IGFwcGxpY2FibGVCcmFja2V0cy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgICAgIGNvbnN0IGJyYWNrZXQgPSBhcHBsaWNhYmxlQnJhY2tldHNbaW5kZXhdO1xuXG4gICAgICAgICAgICBpZiAoaW5jb21lIDw9IGJyYWNrZXQuZnJvbSkge1xuICAgICAgICAgICAgICAgIGJyYWNrZXRCcmVha2Rvd24ucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIGJyYWNrZXRJbmRleDogaW5kZXgsXG4gICAgICAgICAgICAgICAgICAgIGJyYWNrZXROYW1lOiBgQnJhY2tldCAke2luZGV4ICsgMX1gLFxuICAgICAgICAgICAgICAgICAgICBmcm9tOiBicmFja2V0LmZyb20sXG4gICAgICAgICAgICAgICAgICAgIHRvOiBicmFja2V0LnRvID8/IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIHJhdGU6IGJyYWNrZXQucmF0ZSxcbiAgICAgICAgICAgICAgICAgICAgYW1vdW50SW5CcmFja2V0OiAwLFxuICAgICAgICAgICAgICAgICAgICB0YXhPbkFtb3VudDogMCxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgdXBwZXIgPSBicmFja2V0LnRvID8/IGluY29tZTtcbiAgICAgICAgICAgIGNvbnN0IHRheGFibGVBbW91bnQgPSBNYXRoLm1pbih1cHBlciwgaW5jb21lKSAtIGJyYWNrZXQuZnJvbTtcblxuICAgICAgICAgICAgaWYgKHRheGFibGVBbW91bnQgPiAwKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGF4T25BbW91bnQgPSB0YXhhYmxlQW1vdW50ICogYnJhY2tldC5yYXRlO1xuICAgICAgICAgICAgICAgIHRheCArPSB0YXhPbkFtb3VudDtcbiAgICAgICAgICAgICAgICBicmFja2V0QnJlYWtkb3duLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICBicmFja2V0SW5kZXg6IGluZGV4LFxuICAgICAgICAgICAgICAgICAgICBicmFja2V0TmFtZTogYEJyYWNrZXQgJHtpbmRleCArIDF9YCxcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogYnJhY2tldC5mcm9tLFxuICAgICAgICAgICAgICAgICAgICB0bzogYnJhY2tldC50byA/PyBudWxsLFxuICAgICAgICAgICAgICAgICAgICByYXRlOiBicmFja2V0LnJhdGUsXG4gICAgICAgICAgICAgICAgICAgIGFtb3VudEluQnJhY2tldDogdGF4YWJsZUFtb3VudCxcbiAgICAgICAgICAgICAgICAgICAgdGF4T25BbW91bnQsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGJyYWNrZXRCcmVha2Rvd24ucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIGJyYWNrZXRJbmRleDogaW5kZXgsXG4gICAgICAgICAgICAgICAgICAgIGJyYWNrZXROYW1lOiBgQnJhY2tldCAke2luZGV4ICsgMX1gLFxuICAgICAgICAgICAgICAgICAgICBmcm9tOiBicmFja2V0LmZyb20sXG4gICAgICAgICAgICAgICAgICAgIHRvOiBicmFja2V0LnRvID8/IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIHJhdGU6IGJyYWNrZXQucmF0ZSxcbiAgICAgICAgICAgICAgICAgICAgYW1vdW50SW5CcmFja2V0OiAwLFxuICAgICAgICAgICAgICAgICAgICB0YXhPbkFtb3VudDogMCxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7IGdyb3NzVGF4OiB0YXgsIGJyYWNrZXRCcmVha2Rvd24gfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbXB1dGVMb3dJbmNvbWVUYXhPZmZzZXQoaW5jb21lOiBudW1iZXIsIGxpdG86IExvd0luY29tZVRheE9mZnNldCk6IG51bWJlciB7XG4gICAgICAgIGlmIChpbmNvbWUgPD0gbGl0by5waGFzZU91dFN0YXJ0KSB7XG4gICAgICAgICAgICByZXR1cm4gbGl0by5tYXhPZmZzZXQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaW5jb21lID49IGxpdG8ucGhhc2VPdXRFbmQpIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVkdWN0aW9uID0gKGluY29tZSAtIGxpdG8ucGhhc2VPdXRTdGFydCkgKiBsaXRvLnBoYXNlT3V0UmF0ZTtcbiAgICAgICAgcmV0dXJuIE1hdGgubWF4KDAsIGxpdG8ubWF4T2Zmc2V0IC0gcmVkdWN0aW9uKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbXB1dGVNZWRpY2FyZUxldnkoaW5jb21lOiBudW1iZXIsIG1lZGljYXJlOiBNZWRpY2FyZUxldnlSdWxlcyk6IG51bWJlciB7XG4gICAgICAgIGlmIChpbmNvbWUgPD0gbWVkaWNhcmUuc2hhZGluZ0luVGhyZXNob2xkKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpbmNvbWUgPD0gbWVkaWNhcmUuZnVsbExldnlUaHJlc2hvbGQpIHtcbiAgICAgICAgICAgIHJldHVybiAoaW5jb21lIC0gbWVkaWNhcmUuc2hhZGluZ0luVGhyZXNob2xkKSAqIG1lZGljYXJlLnJlZHVjdGlvblJhdGU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaW5jb21lICogbWVkaWNhcmUucmF0ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJvdW5kKHZhbHVlOiBudW1iZXIsIGRlY2ltYWxzID0gMik6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBOdW1iZXIodmFsdWUudG9GaXhlZChkZWNpbWFscykpO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaW5jb21lLXRheC9hdXN0cmFsaWEvZG9tYWluL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCcmFja2V0QWxsb2NhdGlvbiwgVGF4QnJhY2tldCB9IGZyb20gXCIuLi8uLi9kb21haW4vdHlwZXNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBJbmNvbWVUYXhSdWxlcyB7XG4gICAgdGF4QnJhY2tldHM6IFRheEJyYWNrZXRbXTtcbiAgICBub25SZXNpZGVudFRheEJyYWNrZXRzOiBUYXhCcmFja2V0W107XG4gICAgbWVkaWNhcmVMZXZ5OiBNZWRpY2FyZUxldnlSdWxlcztcbiAgICBsb3dJbmNvbWVUYXhPZmZzZXQ6IExvd0luY29tZVRheE9mZnNldDtcbiAgICBsb3dBbmRNaWRkbGVJbmNvbWVUYXhPZmZzZXQ/OiBMb3dBbmRNaWRkbGVJbmNvbWVUYXhPZmZzZXQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWVkaWNhcmVMZXZ5UnVsZXMge1xuICAgIHJhdGU6IG51bWJlcjtcbiAgICBzaGFkaW5nSW5UaHJlc2hvbGQ6IG51bWJlcjtcbiAgICBmdWxsTGV2eVRocmVzaG9sZDogbnVtYmVyO1xuICAgIHJlZHVjdGlvblJhdGU6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMb3dJbmNvbWVUYXhPZmZzZXQge1xuICAgIG1heE9mZnNldDogbnVtYmVyO1xuICAgIHBoYXNlT3V0U3RhcnQ6IG51bWJlcjtcbiAgICBwaGFzZU91dEVuZDogbnVtYmVyO1xuICAgIHBoYXNlT3V0UmF0ZTogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExvd0FuZE1pZGRsZUluY29tZVRheE9mZnNldCB7XG4gICAgbWF4T2Zmc2V0OiBudW1iZXI7XG4gICAgcGhhc2VPdXRTdGFydDogbnVtYmVyO1xuICAgIHBoYXNlT3V0RW5kOiBudW1iZXI7XG4gICAgcGhhc2VPdXRSYXRlOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29tcHV0ZWRJbmNvbWVUYXhWYWx1ZXMge1xuICAgIGdyb3NzSW5jb21lOiBudW1iZXI7XG4gICAgaW5jb21lVGF4OiBudW1iZXI7XG4gICAgbWVkaWNhcmVMZXZ5OiBudW1iZXI7XG4gICAgbG93SW5jb21lVGF4T2Zmc2V0OiBudW1iZXI7XG4gICAgdG90YWxEZWR1Y3Rpb25zOiBudW1iZXI7XG4gICAgbmV0SW5jb21lOiBudW1iZXI7XG4gICAgZWZmZWN0aXZlVGF4UmF0ZTogbnVtYmVyO1xuICAgIHRheEJyYWNrZXRCcmVha2Rvd246IEJyYWNrZXRBbGxvY2F0aW9uW107XG59XG4iXX0=
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { ComputedIncomeTaxValues, IncomeTaxRules } from "./domain/types";
|
|
2
2
|
export interface AustraliaIncomeTaxService {
|
|
3
|
-
calculateNetIncome(income: number, rules: IncomeTaxRules): ComputedIncomeTaxValues;
|
|
3
|
+
calculateNetIncome(income: number, rules: IncomeTaxRules, isResident?: boolean): ComputedIncomeTaxValues;
|
|
4
4
|
}
|
|
@@ -3,7 +3,8 @@ import { ComputedIncomeTaxValues, IncomeTaxRules } from "./domain/types";
|
|
|
3
3
|
export declare class AustraliaIncomeTaxServiceImpl implements AustraliaIncomeTaxService {
|
|
4
4
|
private _income;
|
|
5
5
|
private _rules;
|
|
6
|
-
|
|
6
|
+
private _isResident;
|
|
7
|
+
constructor(income: number, rules: IncomeTaxRules, isResident?: boolean);
|
|
7
8
|
calculateNetIncome(): ComputedIncomeTaxValues;
|
|
8
9
|
private computeTaxBracketBreakdown;
|
|
9
10
|
private computeLowIncomeTaxOffset;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { BracketAllocation, TaxBracket } from "../../domain/types";
|
|
2
2
|
export interface IncomeTaxRules {
|
|
3
3
|
taxBrackets: TaxBracket[];
|
|
4
|
+
nonResidentTaxBrackets: TaxBracket[];
|
|
4
5
|
medicareLevy: MedicareLevyRules;
|
|
5
6
|
lowIncomeTaxOffset: LowIncomeTaxOffset;
|
|
6
7
|
lowAndMiddleIncomeTaxOffset?: LowAndMiddleIncomeTaxOffset;
|
package/package.json
CHANGED
|
@@ -10,10 +10,12 @@ import {
|
|
|
10
10
|
export class AustraliaIncomeTaxServiceImpl implements AustraliaIncomeTaxService {
|
|
11
11
|
private _income: number;
|
|
12
12
|
private _rules: IncomeTaxRules;
|
|
13
|
+
private _isResident: boolean;
|
|
13
14
|
|
|
14
|
-
constructor(income: number, rules: IncomeTaxRules) {
|
|
15
|
+
constructor(income: number, rules: IncomeTaxRules, isResident: boolean = true) {
|
|
15
16
|
this._income = income;
|
|
16
17
|
this._rules = rules;
|
|
18
|
+
this._isResident = isResident;
|
|
17
19
|
}
|
|
18
20
|
|
|
19
21
|
public calculateNetIncome(): ComputedIncomeTaxValues {
|
|
@@ -55,8 +57,9 @@ export class AustraliaIncomeTaxServiceImpl implements AustraliaIncomeTaxService
|
|
|
55
57
|
let tax = 0;
|
|
56
58
|
const bracketBreakdown: BracketAllocation[] = [];
|
|
57
59
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
+
const applicableBrackets = this._isResident ? rules.taxBrackets : rules.nonResidentTaxBrackets;
|
|
61
|
+
for (let index = 0; index < applicableBrackets.length; index++) {
|
|
62
|
+
const bracket = applicableBrackets[index];
|
|
60
63
|
|
|
61
64
|
if (income <= bracket.from) {
|
|
62
65
|
bracketBreakdown.push({
|
|
@@ -2,6 +2,7 @@ import { BracketAllocation, TaxBracket } from "../../domain/types";
|
|
|
2
2
|
|
|
3
3
|
export interface IncomeTaxRules {
|
|
4
4
|
taxBrackets: TaxBracket[];
|
|
5
|
+
nonResidentTaxBrackets: TaxBracket[];
|
|
5
6
|
medicareLevy: MedicareLevyRules;
|
|
6
7
|
lowIncomeTaxOffset: LowIncomeTaxOffset;
|
|
7
8
|
lowAndMiddleIncomeTaxOffset?: LowAndMiddleIncomeTaxOffset;
|
|
@@ -10,6 +10,11 @@ const australiaRules: IncomeTaxRules = {
|
|
|
10
10
|
{ from: 120000, to: 180000, rate: 0.37 },
|
|
11
11
|
{ from: 180000, to: null, rate: 0.45 },
|
|
12
12
|
],
|
|
13
|
+
nonResidentTaxBrackets: [
|
|
14
|
+
{ from: 0, to: 120000, rate: 0.325 },
|
|
15
|
+
{ from: 120000, to: 180000, rate: 0.37 },
|
|
16
|
+
{ from: 180000, to: null, rate: 0.45 },
|
|
17
|
+
],
|
|
13
18
|
medicareLevy: {
|
|
14
19
|
rate: 0.02,
|
|
15
20
|
shadingInThreshold: 26000,
|