@novha/calc-engines 1.7.1 → 2.0.0
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/corporate/australia/AustraliaCorporateTaxService.js +3 -0
- package/dist/corporate/australia/AustraliaCorporateTaxServiceImpl.js +71 -0
- package/dist/corporate/australia/domain/types.js +3 -0
- package/dist/corporate/canada/CanadaCorporateTaxServiceImpl.js +11 -9
- package/dist/corporate/canada/domain/types.js +1 -1
- package/dist/corporate/domain/types.js +2 -1
- package/dist/corporate/france/FranceCorporateTaxServiceImpl.js +16 -9
- package/dist/corporate/france/domain/types.js +1 -1
- package/dist/corporate/south-africa/SouthAfricaCorporateTaxServiceImpl.js +18 -13
- package/dist/corporate/south-africa/domain/types.js +1 -1
- package/dist/income-tax/australia/AustraliaIncomeTaxService.js +3 -0
- package/dist/income-tax/australia/AustraliaIncomeTaxServiceImpl.js +97 -0
- package/dist/income-tax/australia/domain/types.js +3 -0
- package/dist/index.js +9 -2
- package/dist/mortgage/australia/AustraliaMortgageService.js +3 -0
- package/dist/mortgage/australia/AustraliaMortgageServiceImpl.js +115 -0
- package/dist/mortgage/australia/domain/types.js +3 -0
- package/dist/types/corporate/australia/AustraliaCorporateTaxService.d.ts +4 -0
- package/dist/types/corporate/australia/AustraliaCorporateTaxServiceImpl.d.ts +9 -0
- package/dist/types/corporate/australia/domain/types.d.ts +34 -0
- package/dist/types/corporate/canada/domain/types.d.ts +2 -1
- package/dist/types/corporate/domain/types.d.ts +6 -0
- package/dist/types/corporate/france/domain/types.d.ts +2 -1
- package/dist/types/corporate/south-africa/domain/types.d.ts +2 -1
- package/dist/types/income-tax/australia/AustraliaIncomeTaxService.d.ts +4 -0
- package/dist/types/income-tax/australia/AustraliaIncomeTaxServiceImpl.d.ts +12 -0
- package/dist/types/income-tax/australia/domain/types.d.ts +35 -0
- package/dist/types/index.d.ts +6 -0
- package/dist/types/mortgage/australia/AustraliaMortgageService.d.ts +4 -0
- package/dist/types/mortgage/australia/AustraliaMortgageServiceImpl.d.ts +9 -0
- package/dist/types/mortgage/australia/domain/types.d.ts +55 -0
- package/jest.config.js +1 -1
- package/package.json +1 -1
- package/src/corporate/australia/AustraliaCorporateTaxService.ts +5 -0
- package/src/corporate/australia/AustraliaCorporateTaxServiceImpl.ts +88 -0
- package/src/corporate/australia/domain/types.ts +41 -0
- package/src/corporate/canada/CanadaCorporateTaxServiceImpl.ts +12 -9
- package/src/corporate/canada/domain/types.ts +2 -2
- package/src/corporate/domain/types.ts +6 -0
- package/src/corporate/france/FranceCorporateTaxServiceImpl.ts +17 -9
- package/src/corporate/france/domain/types.ts +2 -1
- package/src/corporate/south-africa/SouthAfricaCorporateTaxServiceImpl.ts +20 -14
- package/src/corporate/south-africa/domain/types.ts +3 -1
- package/src/income-tax/australia/AustraliaIncomeTaxService.ts +8 -0
- package/src/income-tax/australia/AustraliaIncomeTaxServiceImpl.ts +133 -0
- package/src/income-tax/australia/domain/types.ts +40 -0
- package/src/index.ts +21 -0
- package/src/mortgage/australia/AustraliaMortgageService.ts +5 -0
- package/src/mortgage/australia/AustraliaMortgageServiceImpl.ts +160 -0
- package/src/mortgage/australia/domain/types.ts +65 -0
- package/test/australia-corporate-tax.test.ts +97 -0
- package/test/australia-income-tax.test.ts +128 -0
- package/test/australia-mortgage.test.ts +125 -0
- package/tsconfig.test.json +9 -0
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXVzdHJhbGlhQ29ycG9yYXRlVGF4U2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb3Jwb3JhdGUvYXVzdHJhbGlhL0F1c3RyYWxpYUNvcnBvcmF0ZVRheFNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElucHV0LCBSZXN1bHQsIFJ1bGVzIH0gZnJvbSBcIi4vZG9tYWluL3R5cGVzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXVzdHJhbGlhQ29ycG9yYXRlVGF4U2VydmljZSB7XG4gICAgY2FsY3VsYXRlKGlucHV0OiBJbnB1dCwgcnVsZXM6IFJ1bGVzKTogUmVzdWx0O1xufVxuIl19
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AustraliaCorporateTaxServiceImpl = void 0;
|
|
4
|
+
class AustraliaCorporateTaxServiceImpl {
|
|
5
|
+
constructor(input, rules) {
|
|
6
|
+
this._input = input;
|
|
7
|
+
this._rules = rules;
|
|
8
|
+
}
|
|
9
|
+
calculate() {
|
|
10
|
+
const regime = this._input.isSmallBusiness
|
|
11
|
+
? this._rules.regimes.smallBusiness
|
|
12
|
+
: this._rules.regimes.general;
|
|
13
|
+
if (!regime) {
|
|
14
|
+
throw new Error('Unknown tax regime');
|
|
15
|
+
}
|
|
16
|
+
if (regime.conditions?.maxTurnover !== undefined) {
|
|
17
|
+
if (this._input.annualTurnover > regime.conditions.maxTurnover) {
|
|
18
|
+
throw new Error('Small business regime not applicable: turnover exceeded');
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
let tax = 0;
|
|
22
|
+
let breakdowns = [];
|
|
23
|
+
if (regime.type === 'flat') {
|
|
24
|
+
tax = this._input.taxableIncome * regime.rate;
|
|
25
|
+
breakdowns = [{
|
|
26
|
+
from: '0',
|
|
27
|
+
to: 'Above',
|
|
28
|
+
rate: regime.rate,
|
|
29
|
+
amount: tax,
|
|
30
|
+
}];
|
|
31
|
+
}
|
|
32
|
+
else if (regime.type === 'progressive') {
|
|
33
|
+
const result = this.calculateProgressiveTax(this._input.taxableIncome, regime.brackets);
|
|
34
|
+
tax = result.total;
|
|
35
|
+
breakdowns = result.breakdowns;
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
throw new Error('Unsupported regime type');
|
|
39
|
+
}
|
|
40
|
+
return {
|
|
41
|
+
corporateTax: tax,
|
|
42
|
+
effectiveTaxRate: this._input.taxableIncome > 0
|
|
43
|
+
? (tax / this._input.taxableIncome) * 100
|
|
44
|
+
: 0,
|
|
45
|
+
breakdowns,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
calculateProgressiveTax(income, brackets) {
|
|
49
|
+
let tax = 0;
|
|
50
|
+
const breakdowns = [];
|
|
51
|
+
for (const bracket of brackets) {
|
|
52
|
+
if (income <= bracket.from)
|
|
53
|
+
break;
|
|
54
|
+
const upper = bracket.to === null ? income : Math.min(income, bracket.to);
|
|
55
|
+
const taxableAmount = upper - bracket.from;
|
|
56
|
+
if (taxableAmount > 0) {
|
|
57
|
+
const bracketTax = taxableAmount * bracket.rate;
|
|
58
|
+
tax += bracketTax;
|
|
59
|
+
breakdowns.push({
|
|
60
|
+
from: `${bracket.from}`,
|
|
61
|
+
to: `${bracket.to ?? 'Above'}`,
|
|
62
|
+
rate: bracket.rate,
|
|
63
|
+
amount: bracketTax,
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return { total: tax, breakdowns };
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
exports.AustraliaCorporateTaxServiceImpl = AustraliaCorporateTaxServiceImpl;
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXVzdHJhbGlhQ29ycG9yYXRlVGF4U2VydmljZUltcGwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29ycG9yYXRlL2F1c3RyYWxpYS9BdXN0cmFsaWFDb3Jwb3JhdGVUYXhTZXJ2aWNlSW1wbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFJQSxNQUFhLGdDQUFnQztJQUl6QyxZQUFZLEtBQVksRUFBRSxLQUFZO1FBQ2xDLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxTQUFTO1FBQ0wsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxlQUFlO1lBQ3RDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxhQUFhO1lBQ25DLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUM7UUFFbEMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1YsTUFBTSxJQUFJLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQzFDLENBQUM7UUFFRCxJQUFJLE1BQU0sQ0FBQyxVQUFVLEVBQUUsV0FBVyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQy9DLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDN0QsTUFBTSxJQUFJLEtBQUssQ0FBQyx5REFBeUQsQ0FBQyxDQUFDO1lBQy9FLENBQUM7UUFDTCxDQUFDO1FBRUQsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ1osSUFBSSxVQUFVLEdBQWdCLEVBQUUsQ0FBQztRQUVqQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssTUFBTSxFQUFFLENBQUM7WUFDekIsR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7WUFDOUMsVUFBVSxHQUFHLENBQUM7b0JBQ1YsSUFBSSxFQUFFLEdBQUc7b0JBQ1QsRUFBRSxFQUFFLE9BQU87b0JBQ1gsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJO29CQUNqQixNQUFNLEVBQUUsR0FBRztpQkFDZCxDQUFDLENBQUM7UUFDUCxDQUFDO2FBQU0sSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLGFBQWEsRUFBRSxDQUFDO1lBQ3ZDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FDdkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEVBQ3pCLE1BQU0sQ0FBQyxRQUFRLENBQ2xCLENBQUM7WUFDRixHQUFHLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQztZQUNuQixVQUFVLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQztRQUNuQyxDQUFDO2FBQU0sQ0FBQztZQUNKLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUMvQyxDQUFDO1FBRUQsT0FBTztZQUNILFlBQVksRUFBRSxHQUFHO1lBQ2pCLGdCQUFnQixFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxHQUFHLENBQUM7Z0JBQzNDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxHQUFHLEdBQUc7Z0JBQ3pDLENBQUMsQ0FBQyxDQUFDO1lBQ1AsVUFBVTtTQUNiLENBQUM7SUFDTixDQUFDO0lBRU8sdUJBQXVCLENBQzNCLE1BQWMsRUFDZCxRQUFpQztRQUVqQyxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDWixNQUFNLFVBQVUsR0FBZ0IsRUFBRSxDQUFDO1FBRW5DLEtBQUssTUFBTSxPQUFPLElBQUksUUFBUSxFQUFFLENBQUM7WUFDN0IsSUFBSSxNQUFNLElBQUksT0FBTyxDQUFDLElBQUk7Z0JBQUUsTUFBTTtZQUVsQyxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDMUUsTUFBTSxhQUFhLEdBQUcsS0FBSyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7WUFFM0MsSUFBSSxhQUFhLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3BCLE1BQU0sVUFBVSxHQUFHLGFBQWEsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDO2dCQUNoRCxHQUFHLElBQUksVUFBVSxDQUFDO2dCQUVsQixVQUFVLENBQUMsSUFBSSxDQUFDO29CQUNaLElBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQyxJQUFJLEVBQUU7b0JBQ3ZCLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxFQUFFLElBQUksT0FBTyxFQUFFO29CQUM5QixJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7b0JBQ2xCLE1BQU0sRUFBRSxVQUFVO2lCQUNyQixDQUFDLENBQUM7WUFDUCxDQUFDO1FBQ0wsQ0FBQztRQUVELE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxDQUFDO0lBQ3RDLENBQUM7Q0FDSjtBQW5GRCw0RUFtRkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCcmVha2Rvd24gfSBmcm9tIFwiLi4vZG9tYWluL3R5cGVzXCI7XG5pbXBvcnQgeyBBdXN0cmFsaWFDb3Jwb3JhdGVUYXhTZXJ2aWNlIH0gZnJvbSBcIi4vQXVzdHJhbGlhQ29ycG9yYXRlVGF4U2VydmljZVwiO1xuaW1wb3J0IHsgSW5wdXQsIFByb2dyZXNzaXZlVGF4QnJhY2tldCwgUmVzdWx0LCBSdWxlcyB9IGZyb20gXCIuL2RvbWFpbi90eXBlc1wiO1xuXG5leHBvcnQgY2xhc3MgQXVzdHJhbGlhQ29ycG9yYXRlVGF4U2VydmljZUltcGwgaW1wbGVtZW50cyBBdXN0cmFsaWFDb3Jwb3JhdGVUYXhTZXJ2aWNlIHtcbiAgICBwcml2YXRlIF9pbnB1dDogSW5wdXQ7XG4gICAgcHJpdmF0ZSBfcnVsZXM6IFJ1bGVzO1xuXG4gICAgY29uc3RydWN0b3IoaW5wdXQ6IElucHV0LCBydWxlczogUnVsZXMpIHtcbiAgICAgICAgdGhpcy5faW5wdXQgPSBpbnB1dDtcbiAgICAgICAgdGhpcy5fcnVsZXMgPSBydWxlcztcbiAgICB9XG5cbiAgICBjYWxjdWxhdGUoKTogUmVzdWx0IHtcbiAgICAgICAgY29uc3QgcmVnaW1lID0gdGhpcy5faW5wdXQuaXNTbWFsbEJ1c2luZXNzXG4gICAgICAgICAgICA/IHRoaXMuX3J1bGVzLnJlZ2ltZXMuc21hbGxCdXNpbmVzc1xuICAgICAgICAgICAgOiB0aGlzLl9ydWxlcy5yZWdpbWVzLmdlbmVyYWw7XG5cbiAgICAgICAgaWYgKCFyZWdpbWUpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biB0YXggcmVnaW1lJyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmVnaW1lLmNvbmRpdGlvbnM/Lm1heFR1cm5vdmVyICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLl9pbnB1dC5hbm51YWxUdXJub3ZlciA+IHJlZ2ltZS5jb25kaXRpb25zLm1heFR1cm5vdmVyKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdTbWFsbCBidXNpbmVzcyByZWdpbWUgbm90IGFwcGxpY2FibGU6IHR1cm5vdmVyIGV4Y2VlZGVkJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgdGF4ID0gMDtcbiAgICAgICAgbGV0IGJyZWFrZG93bnM6IEJyZWFrZG93bltdID0gW107XG5cbiAgICAgICAgaWYgKHJlZ2ltZS50eXBlID09PSAnZmxhdCcpIHtcbiAgICAgICAgICAgIHRheCA9IHRoaXMuX2lucHV0LnRheGFibGVJbmNvbWUgKiByZWdpbWUucmF0ZTtcbiAgICAgICAgICAgIGJyZWFrZG93bnMgPSBbe1xuICAgICAgICAgICAgICAgIGZyb206ICcwJyxcbiAgICAgICAgICAgICAgICB0bzogJ0Fib3ZlJyxcbiAgICAgICAgICAgICAgICByYXRlOiByZWdpbWUucmF0ZSxcbiAgICAgICAgICAgICAgICBhbW91bnQ6IHRheCxcbiAgICAgICAgICAgIH1dO1xuICAgICAgICB9IGVsc2UgaWYgKHJlZ2ltZS50eXBlID09PSAncHJvZ3Jlc3NpdmUnKSB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLmNhbGN1bGF0ZVByb2dyZXNzaXZlVGF4KFxuICAgICAgICAgICAgICAgIHRoaXMuX2lucHV0LnRheGFibGVJbmNvbWUsXG4gICAgICAgICAgICAgICAgcmVnaW1lLmJyYWNrZXRzLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRheCA9IHJlc3VsdC50b3RhbDtcbiAgICAgICAgICAgIGJyZWFrZG93bnMgPSByZXN1bHQuYnJlYWtkb3ducztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgcmVnaW1lIHR5cGUnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb3Jwb3JhdGVUYXg6IHRheCxcbiAgICAgICAgICAgIGVmZmVjdGl2ZVRheFJhdGU6IHRoaXMuX2lucHV0LnRheGFibGVJbmNvbWUgPiAwXG4gICAgICAgICAgICAgICAgPyAodGF4IC8gdGhpcy5faW5wdXQudGF4YWJsZUluY29tZSkgKiAxMDBcbiAgICAgICAgICAgICAgICA6IDAsXG4gICAgICAgICAgICBicmVha2Rvd25zLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgY2FsY3VsYXRlUHJvZ3Jlc3NpdmVUYXgoXG4gICAgICAgIGluY29tZTogbnVtYmVyLFxuICAgICAgICBicmFja2V0czogUHJvZ3Jlc3NpdmVUYXhCcmFja2V0W10sXG4gICAgKTogeyB0b3RhbDogbnVtYmVyOyBicmVha2Rvd25zOiBCcmVha2Rvd25bXSB9IHtcbiAgICAgICAgbGV0IHRheCA9IDA7XG4gICAgICAgIGNvbnN0IGJyZWFrZG93bnM6IEJyZWFrZG93bltdID0gW107XG5cbiAgICAgICAgZm9yIChjb25zdCBicmFja2V0IG9mIGJyYWNrZXRzKSB7XG4gICAgICAgICAgICBpZiAoaW5jb21lIDw9IGJyYWNrZXQuZnJvbSkgYnJlYWs7XG5cbiAgICAgICAgICAgIGNvbnN0IHVwcGVyID0gYnJhY2tldC50byA9PT0gbnVsbCA/IGluY29tZSA6IE1hdGgubWluKGluY29tZSwgYnJhY2tldC50byk7XG4gICAgICAgICAgICBjb25zdCB0YXhhYmxlQW1vdW50ID0gdXBwZXIgLSBicmFja2V0LmZyb207XG5cbiAgICAgICAgICAgIGlmICh0YXhhYmxlQW1vdW50ID4gMCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGJyYWNrZXRUYXggPSB0YXhhYmxlQW1vdW50ICogYnJhY2tldC5yYXRlO1xuICAgICAgICAgICAgICAgIHRheCArPSBicmFja2V0VGF4O1xuXG4gICAgICAgICAgICAgICAgYnJlYWtkb3ducy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogYCR7YnJhY2tldC5mcm9tfWAsXG4gICAgICAgICAgICAgICAgICAgIHRvOiBgJHticmFja2V0LnRvID8/ICdBYm92ZSd9YCxcbiAgICAgICAgICAgICAgICAgICAgcmF0ZTogYnJhY2tldC5yYXRlLFxuICAgICAgICAgICAgICAgICAgICBhbW91bnQ6IGJyYWNrZXRUYXgsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4geyB0b3RhbDogdGF4LCBicmVha2Rvd25zIH07XG4gICAgfVxufVxuIl19
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29ycG9yYXRlL2F1c3RyYWxpYS9kb21haW4vdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJyZWFrZG93biB9IGZyb20gXCIuLi8uLi9kb21haW4vdHlwZXNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBGbGF0VGF4UnVsZSB7XG4gICAgdHlwZTogJ2ZsYXQnO1xuICAgIHJhdGU6IG51bWJlcjtcbiAgICBjb25kaXRpb25zPzoge1xuICAgICAgICBtYXhUdXJub3Zlcj86IG51bWJlcjtcbiAgICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByb2dyZXNzaXZlVGF4QnJhY2tldCB7XG4gICAgZnJvbTogbnVtYmVyO1xuICAgIHRvOiBudW1iZXIgfCBudWxsO1xuICAgIHJhdGU6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcm9ncmVzc2l2ZVRheFJ1bGUge1xuICAgIHR5cGU6ICdwcm9ncmVzc2l2ZSc7XG4gICAgYnJhY2tldHM6IFByb2dyZXNzaXZlVGF4QnJhY2tldFtdO1xuICAgIGNvbmRpdGlvbnM/OiB7XG4gICAgICAgIG1heFR1cm5vdmVyPzogbnVtYmVyO1xuICAgIH07XG59XG5cbmV4cG9ydCB0eXBlIFRheFJ1bGUgPSBGbGF0VGF4UnVsZSB8IFByb2dyZXNzaXZlVGF4UnVsZTtcblxuZXhwb3J0IGludGVyZmFjZSBSdWxlcyB7XG4gICAgcmVnaW1lczogUmVjb3JkPHN0cmluZywgVGF4UnVsZT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW5wdXQge1xuICAgIHRheGFibGVJbmNvbWU6IG51bWJlcjtcbiAgICBhbm51YWxUdXJub3ZlcjogbnVtYmVyO1xuICAgIGlzU21hbGxCdXNpbmVzczogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXN1bHQge1xuICAgIGNvcnBvcmF0ZVRheDogbnVtYmVyO1xuICAgIGVmZmVjdGl2ZVRheFJhdGU6IG51bWJlcjtcbiAgICBicmVha2Rvd25zOiBCcmVha2Rvd25bXTtcbn1cbiJdfQ==
|
|
@@ -14,7 +14,7 @@ class CanadaCorporateTaxServiceImpl {
|
|
|
14
14
|
effectiveTaxRate: this._input.taxableIncome > 0
|
|
15
15
|
? (totalTax / this._input.taxableIncome) * 100
|
|
16
16
|
: 0,
|
|
17
|
-
|
|
17
|
+
breakdowns: result.breakdowns,
|
|
18
18
|
};
|
|
19
19
|
}
|
|
20
20
|
applyRules(rules, input) {
|
|
@@ -25,13 +25,13 @@ class CanadaCorporateTaxServiceImpl {
|
|
|
25
25
|
const tax = input.taxableIncome * regime.rate;
|
|
26
26
|
return {
|
|
27
27
|
tax,
|
|
28
|
-
|
|
28
|
+
breakdowns: [{ from: '0', to: 'Above', rate: regime.rate, amount: tax }],
|
|
29
29
|
};
|
|
30
30
|
}
|
|
31
31
|
if (regime.type === 'progressive') {
|
|
32
32
|
let remaining = input.taxableIncome;
|
|
33
33
|
let tax = 0;
|
|
34
|
-
const
|
|
34
|
+
const breakdowns = [];
|
|
35
35
|
for (const bracket of regime.brackets) {
|
|
36
36
|
if (remaining <= 0)
|
|
37
37
|
break;
|
|
@@ -40,15 +40,17 @@ class CanadaCorporateTaxServiceImpl {
|
|
|
40
40
|
const bracketTax = taxable * bracket.rate;
|
|
41
41
|
tax += bracketTax;
|
|
42
42
|
remaining -= taxable;
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
:
|
|
46
|
-
|
|
43
|
+
breakdowns.push({
|
|
44
|
+
from: `${bracket.from}`,
|
|
45
|
+
to: `${bracket.to ?? 'Above'}`,
|
|
46
|
+
rate: bracket.rate,
|
|
47
|
+
amount: bracketTax,
|
|
48
|
+
});
|
|
47
49
|
}
|
|
48
|
-
return { tax,
|
|
50
|
+
return { tax, breakdowns };
|
|
49
51
|
}
|
|
50
52
|
throw new Error('Unsupported regime type');
|
|
51
53
|
}
|
|
52
54
|
}
|
|
53
55
|
exports.CanadaCorporateTaxServiceImpl = CanadaCorporateTaxServiceImpl;
|
|
54
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2FuYWRhQ29ycG9yYXRlVGF4U2VydmljZUltcGwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29ycG9yYXRlL2NhbmFkYS9DYW5hZGFDb3Jwb3JhdGVUYXhTZXJ2aWNlSW1wbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFJQSxNQUFhLDZCQUE2QjtJQUl0QyxZQUFZLEtBQVksRUFBRSxLQUFZO1FBQ2xDLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxTQUFTO1FBQ0wsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUV6RCxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDO1FBRTVCLE9BQU87WUFDSCxZQUFZLEVBQUUsUUFBUTtZQUN0QixnQkFBZ0IsRUFDWixJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsR0FBRyxDQUFDO2dCQUN6QixDQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsR0FBRyxHQUFHO2dCQUM5QyxDQUFDLENBQUMsQ0FBQztZQUNYLFVBQVUsRUFBRSxNQUFNLENBQUMsVUFBVTtTQUNoQyxDQUFDO0lBQ04sQ0FBQztJQUVPLFVBQVUsQ0FBQyxLQUFZLEVBQUUsS0FBWTtRQUN6QyxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsZUFBZTtZQUNoQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxhQUFhO1lBQzdCLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztRQUU1QixJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssTUFBTSxFQUFFLENBQUM7WUFDekIsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDO1lBQzlDLE9BQU87Z0JBQ0gsR0FBRztnQkFDSCxVQUFVLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUM7YUFDM0UsQ0FBQztRQUNOLENBQUM7UUFFRCxJQUFJLE1BQU0sQ0FBQyxJQUFJLEtBQUssYUFBYSxFQUFFLENBQUM7WUFDaEMsSUFBSSxTQUFTLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQztZQUNwQyxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUM7WUFDWixNQUFNLFVBQVUsR0FBZ0IsRUFBRSxDQUFDO1lBRW5DLEtBQUssTUFBTSxPQUFPLElBQUksTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNwQyxJQUFJLFNBQVMsSUFBSSxDQUFDO29CQUFFLE1BQU07Z0JBRTFCLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxFQUFFLElBQUksUUFBUSxDQUFDO2dCQUNyQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO2dCQUUxRCxNQUFNLFVBQVUsR0FBRyxPQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztnQkFDMUMsR0FBRyxJQUFJLFVBQVUsQ0FBQztnQkFDbEIsU0FBUyxJQUFJLE9BQU8sQ0FBQztnQkFFckIsVUFBVSxDQUFDLElBQUksQ0FBQztvQkFDWixJQUFJLEVBQUUsR0FBRyxPQUFPLENBQUMsSUFBSSxFQUFFO29CQUN2QixFQUFFLEVBQUUsR0FBRyxPQUFPLENBQUMsRUFBRSxJQUFJLE9BQU8sRUFBRTtvQkFDOUIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO29CQUNsQixNQUFNLEVBQUUsVUFBVTtpQkFDckIsQ0FBQyxDQUFDO1lBQ1AsQ0FBQztZQUVELE9BQU8sRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLENBQUM7UUFDL0IsQ0FBQztRQUVELE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUMvQyxDQUFDO0NBQ0o7QUFqRUQsc0VBaUVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUnVsZXMsIElucHV0LCBSZXN1bHQsIFByb2dyZXNzaXZlVGF4QnJhY2tldCB9IGZyb20gJy4vZG9tYWluL3R5cGVzJztcbmltcG9ydCB7IENhbmFkYUNvcnBvcmF0ZVRheFNlcnZpY2UgfSBmcm9tICcuL0NhbmFkYUNvcnBvcmF0ZVRheFNlcnZpY2UnO1xuaW1wb3J0IHsgQnJlYWtkb3duIH0gZnJvbSAnLi4vZG9tYWluL3R5cGVzJztcblxuZXhwb3J0IGNsYXNzIENhbmFkYUNvcnBvcmF0ZVRheFNlcnZpY2VJbXBsIGltcGxlbWVudHMgQ2FuYWRhQ29ycG9yYXRlVGF4U2VydmljZSB7XG4gICAgcHJpdmF0ZSBfaW5wdXQ6IElucHV0O1xuICAgIHByaXZhdGUgX3J1bGVzOiBSdWxlcztcblxuICAgIGNvbnN0cnVjdG9yKGlucHV0OiBJbnB1dCwgcnVsZXM6IFJ1bGVzKSB7XG4gICAgICAgIHRoaXMuX2lucHV0ID0gaW5wdXQ7XG4gICAgICAgIHRoaXMuX3J1bGVzID0gcnVsZXM7XG4gICAgfVxuXG4gICAgY2FsY3VsYXRlKCk6IFJlc3VsdCB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuYXBwbHlSdWxlcyh0aGlzLl9ydWxlcywgdGhpcy5faW5wdXQpO1xuXG4gICAgICAgIGNvbnN0IHRvdGFsVGF4ID0gcmVzdWx0LnRheDtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY29ycG9yYXRlVGF4OiB0b3RhbFRheCxcbiAgICAgICAgICAgIGVmZmVjdGl2ZVRheFJhdGU6XG4gICAgICAgICAgICAgICAgdGhpcy5faW5wdXQudGF4YWJsZUluY29tZSA+IDBcbiAgICAgICAgICAgICAgICAgICAgPyAodG90YWxUYXggLyB0aGlzLl9pbnB1dC50YXhhYmxlSW5jb21lKSAqIDEwMFxuICAgICAgICAgICAgICAgICAgICA6IDAsXG4gICAgICAgICAgICBicmVha2Rvd25zOiByZXN1bHQuYnJlYWtkb3ducyxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFwcGx5UnVsZXMocnVsZXM6IFJ1bGVzLCBpbnB1dDogSW5wdXQpOiB7IHRheDogbnVtYmVyOyBicmVha2Rvd25zOiBCcmVha2Rvd25bXSB9IHtcbiAgICAgICAgY29uc3QgcmVnaW1lID0gaW5wdXQuaXNTbWFsbEJ1c2luZXNzXG4gICAgICAgICAgICA/IHJ1bGVzLnJlZ2ltZXMuc21hbGxCdXNpbmVzc1xuICAgICAgICAgICAgOiBydWxlcy5yZWdpbWVzLmdlbmVyYWw7XG5cbiAgICAgICAgaWYgKHJlZ2ltZS50eXBlID09PSAnZmxhdCcpIHtcbiAgICAgICAgICAgIGNvbnN0IHRheCA9IGlucHV0LnRheGFibGVJbmNvbWUgKiByZWdpbWUucmF0ZTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdGF4LFxuICAgICAgICAgICAgICAgIGJyZWFrZG93bnM6IFt7IGZyb206ICcwJywgdG86ICdBYm92ZScsIHJhdGU6IHJlZ2ltZS5yYXRlLCBhbW91bnQ6IHRheCB9XSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmVnaW1lLnR5cGUgPT09ICdwcm9ncmVzc2l2ZScpIHtcbiAgICAgICAgICAgIGxldCByZW1haW5pbmcgPSBpbnB1dC50YXhhYmxlSW5jb21lO1xuICAgICAgICAgICAgbGV0IHRheCA9IDA7XG4gICAgICAgICAgICBjb25zdCBicmVha2Rvd25zOiBCcmVha2Rvd25bXSA9IFtdO1xuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGJyYWNrZXQgb2YgcmVnaW1lLmJyYWNrZXRzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlbWFpbmluZyA8PSAwKSBicmVhaztcblxuICAgICAgICAgICAgICAgIGNvbnN0IHVwcGVyID0gYnJhY2tldC50byA/PyBJbmZpbml0eTtcbiAgICAgICAgICAgICAgICBjb25zdCB0YXhhYmxlID0gTWF0aC5taW4odXBwZXIgLSBicmFja2V0LmZyb20sIHJlbWFpbmluZyk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBicmFja2V0VGF4ID0gdGF4YWJsZSAqIGJyYWNrZXQucmF0ZTtcbiAgICAgICAgICAgICAgICB0YXggKz0gYnJhY2tldFRheDtcbiAgICAgICAgICAgICAgICByZW1haW5pbmcgLT0gdGF4YWJsZTtcblxuICAgICAgICAgICAgICAgIGJyZWFrZG93bnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIGZyb206IGAke2JyYWNrZXQuZnJvbX1gLFxuICAgICAgICAgICAgICAgICAgICB0bzogYCR7YnJhY2tldC50byA/PyAnQWJvdmUnfWAsXG4gICAgICAgICAgICAgICAgICAgIHJhdGU6IGJyYWNrZXQucmF0ZSxcbiAgICAgICAgICAgICAgICAgICAgYW1vdW50OiBicmFja2V0VGF4LFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4geyB0YXgsIGJyZWFrZG93bnMgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgcmVnaW1lIHR5cGUnKTtcbiAgICB9XG59Il19
|
|
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29ycG9yYXRlL2NhbmFkYS9kb21haW4vdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJyZWFrZG93biB9IGZyb20gXCIuLi8uLi9kb21haW4vdHlwZXNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBSZWdpbWVJdGVtIHtcbiAgICB0eXBlOiAnZmxhdCcgfCAncHJvZ3Jlc3NpdmUnO1xuICAgIHJhdGU6IG51bWJlcjtcbiAgICBtYXhJbmNvbWU/OiBudW1iZXI7XG4gICAgYnJhY2tldHM/OiBQcm9ncmVzc2l2ZVRheEJyYWNrZXRbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWdpbWUge1xuICAgIGdlbmVyYWw6IFJlZ2ltZUl0ZW1bXTtcbiAgICBzbWFsbEJ1c2luZXNzOiBSZWdpbWVJdGVtW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW5wdXQge1xuXHR0YXhhYmxlSW5jb21lOiBudW1iZXI7XG4gICAgaXNTbWFsbEJ1c2luZXNzOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE91dHB1dCB7XG5cdG5hbWU6IHN0cmluZztcblx0dHlwZTogJ251bWJlcicgfCAnc3RyaW5nJztcblx0dW5pdD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGbGF0VGF4UnVsZSB7XG5cdHR5cGU6ICdmbGF0Jztcblx0cmF0ZTogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByb2dyZXNzaXZlVGF4QnJhY2tldCB7XG5cdGZyb206IG51bWJlcjtcblx0dG86IG51bWJlciB8IG51bGw7XG5cdHJhdGU6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcm9ncmVzc2l2ZVRheFJ1bGUge1xuXHR0eXBlOiAncHJvZ3Jlc3NpdmUnO1xuXHRicmFja2V0czogUHJvZ3Jlc3NpdmVUYXhCcmFja2V0W107XG5cdGVsaWdpYmlsaXR5PzogUmVjb3JkPHN0cmluZywgYW55Pjtcbn1cblxuZXhwb3J0IHR5cGUgVGF4UnVsZSA9IEZsYXRUYXhSdWxlIHwgUHJvZ3Jlc3NpdmVUYXhSdWxlO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJ1bGVzIHtcbiAgXHRyZWdpbWVzOiBSZWNvcmQ8c3RyaW5nLCBUYXhSdWxlPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXN1bHQge1xuXHRjb3Jwb3JhdGVUYXg6IG51bWJlcjtcblx0ZWZmZWN0aXZlVGF4UmF0ZTogbnVtYmVyO1xuXHRicmVha2Rvd25zOiBCcmVha2Rvd25bXTtcbn1cblxuIl19
|
|
@@ -1,2 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29ycG9yYXRlL2RvbWFpbi90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBCcmVha2Rvd24ge1xuICAgIGZyb206IHN0cmluZztcbiAgICB0bzogc3RyaW5nO1xuICAgIHJhdGU6IG51bWJlcjtcbiAgICBhbW91bnQ6IG51bWJlcjtcbn0iXX0=
|
|
@@ -14,7 +14,7 @@ class FranceCorporateTaxServiceImpl {
|
|
|
14
14
|
effectiveTaxRate: this._input.taxableIncome > 0
|
|
15
15
|
? (totalTax / this._input.taxableIncome) * 100
|
|
16
16
|
: 0,
|
|
17
|
-
|
|
17
|
+
breakdowns: result.breakdowns,
|
|
18
18
|
};
|
|
19
19
|
}
|
|
20
20
|
applyRules(rules, input) {
|
|
@@ -30,13 +30,18 @@ class FranceCorporateTaxServiceImpl {
|
|
|
30
30
|
const tax = input.taxableIncome * regime.rate;
|
|
31
31
|
return {
|
|
32
32
|
tax,
|
|
33
|
-
|
|
33
|
+
breakdowns: [{
|
|
34
|
+
from: '0',
|
|
35
|
+
to: 'Above',
|
|
36
|
+
rate: regime.rate,
|
|
37
|
+
amount: tax
|
|
38
|
+
}]
|
|
34
39
|
};
|
|
35
40
|
}
|
|
36
41
|
if (regime.type === 'progressive') {
|
|
37
42
|
let remaining = input.taxableIncome;
|
|
38
43
|
let tax = 0;
|
|
39
|
-
const
|
|
44
|
+
const breakdowns = [];
|
|
40
45
|
for (const bracket of regime.brackets) {
|
|
41
46
|
if (remaining <= 0)
|
|
42
47
|
break;
|
|
@@ -45,15 +50,17 @@ class FranceCorporateTaxServiceImpl {
|
|
|
45
50
|
const bracketTax = taxable * bracket.rate;
|
|
46
51
|
tax += bracketTax;
|
|
47
52
|
remaining -= taxable;
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
:
|
|
51
|
-
|
|
53
|
+
breakdowns.push({
|
|
54
|
+
from: `${bracket.from}`,
|
|
55
|
+
to: `${bracket.to ?? 'Above'}`,
|
|
56
|
+
rate: bracket.rate,
|
|
57
|
+
amount: bracketTax,
|
|
58
|
+
});
|
|
52
59
|
}
|
|
53
|
-
return { tax,
|
|
60
|
+
return { tax, breakdowns };
|
|
54
61
|
}
|
|
55
62
|
throw new Error('Unsupported regime type');
|
|
56
63
|
}
|
|
57
64
|
}
|
|
58
65
|
exports.FranceCorporateTaxServiceImpl = FranceCorporateTaxServiceImpl;
|
|
59
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRnJhbmNlQ29ycG9yYXRlVGF4U2VydmljZUltcGwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29ycG9yYXRlL2ZyYW5jZS9GcmFuY2VDb3Jwb3JhdGVUYXhTZXJ2aWNlSW1wbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFJQSxNQUFhLDZCQUE2QjtJQUl0QyxZQUFZLEtBQVksRUFBRSxLQUFZO1FBQ2xDLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxTQUFTO1FBQ0wsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUV6RCxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDO1FBRTVCLE9BQU87WUFDSCxZQUFZLEVBQUUsUUFBUTtZQUN0QixnQkFBZ0IsRUFDWixJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsR0FBRyxDQUFDO2dCQUN6QixDQUFDLENBQUMsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsR0FBRyxHQUFHO2dCQUM5QyxDQUFDLENBQUMsQ0FBQztZQUNYLFVBQVUsRUFBRSxNQUFNLENBQUMsVUFBVTtTQUNoQyxDQUFDO0lBQ04sQ0FBQztJQUVPLFVBQVUsQ0FBQyxLQUFZLEVBQUUsS0FBWTtRQUN6QyxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsZUFBZTtZQUNoQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxhQUFhO1lBQzdCLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztRQUU1QixJQUFJLE1BQU0sQ0FBQyxVQUFVLEVBQUUsV0FBVyxFQUFFLENBQUM7WUFDakMsSUFBSSxLQUFLLENBQUMsY0FBYyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ3ZELE1BQU0sSUFBSSxLQUFLLENBQUMsOENBQThDLENBQUMsQ0FBQztZQUNwRSxDQUFDO1FBQ0wsQ0FBQztRQUVELElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxNQUFNLEVBQUUsQ0FBQztZQUN6QixNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7WUFDOUMsT0FBTztnQkFDSCxHQUFHO2dCQUNILFVBQVUsRUFBQyxDQUFDO3dCQUNSLElBQUksRUFBRSxHQUFHO3dCQUNULEVBQUUsRUFBRSxPQUFPO3dCQUNYLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTt3QkFDakIsTUFBTSxFQUFFLEdBQUc7cUJBQ2QsQ0FBQzthQUNMLENBQUM7UUFDTixDQUFDO1FBRUQsSUFBSSxNQUFNLENBQUMsSUFBSSxLQUFLLGFBQWEsRUFBRSxDQUFDO1lBQ2hDLElBQUksU0FBUyxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUM7WUFDcEMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDO1lBQ1osTUFBTSxVQUFVLEdBQWdCLEVBQUUsQ0FBQztZQUVuQyxLQUFLLE1BQU0sT0FBTyxJQUFJLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDcEMsSUFBSSxTQUFTLElBQUksQ0FBQztvQkFBRSxNQUFNO2dCQUUxQixNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsRUFBRSxJQUFJLFFBQVEsQ0FBQztnQkFDckMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztnQkFFMUQsTUFBTSxVQUFVLEdBQUcsT0FBTyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7Z0JBQzFDLEdBQUcsSUFBSSxVQUFVLENBQUM7Z0JBQ2xCLFNBQVMsSUFBSSxPQUFPLENBQUM7Z0JBRXJCLFVBQVUsQ0FBQyxJQUFJLENBQUM7b0JBQ1osSUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDLElBQUksRUFBRTtvQkFDdkIsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLEVBQUUsSUFBSSxPQUFPLEVBQUU7b0JBQzlCLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSTtvQkFDbEIsTUFBTSxFQUFFLFVBQVU7aUJBQ3JCLENBQUMsQ0FBQztZQUNQLENBQUM7WUFFRCxPQUFPLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxDQUFDO1FBQy9CLENBQUM7UUFFRCxNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDL0MsQ0FBQztDQUNKO0FBNUVELHNFQTRFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJyZWFrZG93biB9IGZyb20gJy4uL2RvbWFpbi90eXBlcyc7XG5pbXBvcnQgeyBSdWxlcywgSW5wdXQsIFJlc3VsdCwgUHJvZ3Jlc3NpdmVUYXhCcmFja2V0IH0gZnJvbSAnLi9kb21haW4vdHlwZXMnO1xuaW1wb3J0IHsgRnJhbmNlQ29ycG9yYXRlVGF4U2VydmljZSB9IGZyb20gJy4vRnJhbmNlQ29ycG9yYXRlVGF4U2VydmljZSc7XG5cbmV4cG9ydCBjbGFzcyBGcmFuY2VDb3Jwb3JhdGVUYXhTZXJ2aWNlSW1wbCBpbXBsZW1lbnRzIEZyYW5jZUNvcnBvcmF0ZVRheFNlcnZpY2Uge1xuICAgIHByaXZhdGUgX2lucHV0OiBJbnB1dDtcbiAgICBwcml2YXRlIF9ydWxlczogUnVsZXM7XG5cbiAgICBjb25zdHJ1Y3RvcihpbnB1dDogSW5wdXQsIHJ1bGVzOiBSdWxlcykge1xuICAgICAgICB0aGlzLl9pbnB1dCA9IGlucHV0O1xuICAgICAgICB0aGlzLl9ydWxlcyA9IHJ1bGVzO1xuICAgIH1cblxuICAgIGNhbGN1bGF0ZSgpOiBSZXN1bHQge1xuICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLmFwcGx5UnVsZXModGhpcy5fcnVsZXMsIHRoaXMuX2lucHV0KTtcblxuICAgICAgICBjb25zdCB0b3RhbFRheCA9IHJlc3VsdC50YXg7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNvcnBvcmF0ZVRheDogdG90YWxUYXgsXG4gICAgICAgICAgICBlZmZlY3RpdmVUYXhSYXRlOlxuICAgICAgICAgICAgICAgIHRoaXMuX2lucHV0LnRheGFibGVJbmNvbWUgPiAwXG4gICAgICAgICAgICAgICAgICAgID8gKHRvdGFsVGF4IC8gdGhpcy5faW5wdXQudGF4YWJsZUluY29tZSkgKiAxMDBcbiAgICAgICAgICAgICAgICAgICAgOiAwLFxuICAgICAgICAgICAgYnJlYWtkb3duczogcmVzdWx0LmJyZWFrZG93bnMsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhcHBseVJ1bGVzKHJ1bGVzOiBSdWxlcywgaW5wdXQ6IElucHV0KTogeyB0YXg6IG51bWJlcjsgYnJlYWtkb3duczogQnJlYWtkb3duW10gfSB7XG4gICAgICAgIGNvbnN0IHJlZ2ltZSA9IGlucHV0LmlzU21hbGxCdXNpbmVzc1xuICAgICAgICAgICAgPyBydWxlcy5yZWdpbWVzLnNtYWxsQnVzaW5lc3NcbiAgICAgICAgICAgIDogcnVsZXMucmVnaW1lcy5nZW5lcmFsO1xuXG4gICAgICAgIGlmIChyZWdpbWUuY29uZGl0aW9ucz8ubWF4VHVybm92ZXIpIHtcbiAgICAgICAgICAgIGlmIChpbnB1dC5hbm51YWxUdXJub3ZlciA+IHJlZ2ltZS5jb25kaXRpb25zLm1heFR1cm5vdmVyKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdTTUUgcmVnaW1lIG5vdCBhcHBsaWNhYmxlOiB0dXJub3ZlciBleGNlZWRlZCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJlZ2ltZS50eXBlID09PSAnZmxhdCcpIHtcbiAgICAgICAgICAgIGNvbnN0IHRheCA9IGlucHV0LnRheGFibGVJbmNvbWUgKiByZWdpbWUucmF0ZTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgdGF4LFxuICAgICAgICAgICAgICAgIGJyZWFrZG93bnM6W3tcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogJzAnLFxuICAgICAgICAgICAgICAgICAgICB0bzogJ0Fib3ZlJyxcbiAgICAgICAgICAgICAgICAgICAgcmF0ZTogcmVnaW1lLnJhdGUsXG4gICAgICAgICAgICAgICAgICAgIGFtb3VudDogdGF4XG4gICAgICAgICAgICAgICAgfV1cbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmVnaW1lLnR5cGUgPT09ICdwcm9ncmVzc2l2ZScpIHtcbiAgICAgICAgICAgIGxldCByZW1haW5pbmcgPSBpbnB1dC50YXhhYmxlSW5jb21lO1xuICAgICAgICAgICAgbGV0IHRheCA9IDA7XG4gICAgICAgICAgICBjb25zdCBicmVha2Rvd25zOiBCcmVha2Rvd25bXSA9IFtdO1xuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGJyYWNrZXQgb2YgcmVnaW1lLmJyYWNrZXRzKSB7XG4gICAgICAgICAgICAgICAgaWYgKHJlbWFpbmluZyA8PSAwKSBicmVhaztcblxuICAgICAgICAgICAgICAgIGNvbnN0IHVwcGVyID0gYnJhY2tldC50byA/PyBJbmZpbml0eTtcbiAgICAgICAgICAgICAgICBjb25zdCB0YXhhYmxlID0gTWF0aC5taW4odXBwZXIgLSBicmFja2V0LmZyb20sIHJlbWFpbmluZyk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBicmFja2V0VGF4ID0gdGF4YWJsZSAqIGJyYWNrZXQucmF0ZTtcbiAgICAgICAgICAgICAgICB0YXggKz0gYnJhY2tldFRheDtcbiAgICAgICAgICAgICAgICByZW1haW5pbmcgLT0gdGF4YWJsZTtcblxuICAgICAgICAgICAgICAgIGJyZWFrZG93bnMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIGZyb206IGAke2JyYWNrZXQuZnJvbX1gLFxuICAgICAgICAgICAgICAgICAgICB0bzogYCR7YnJhY2tldC50byA/PyAnQWJvdmUnfWAsXG4gICAgICAgICAgICAgICAgICAgIHJhdGU6IGJyYWNrZXQucmF0ZSxcbiAgICAgICAgICAgICAgICAgICAgYW1vdW50OiBicmFja2V0VGF4LFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4geyB0YXgsIGJyZWFrZG93bnMgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgcmVnaW1lIHR5cGUnKTtcbiAgICB9XG59Il19
|
|
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29ycG9yYXRlL2ZyYW5jZS9kb21haW4vdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJyZWFrZG93biB9IGZyb20gXCIuLi8uLi9kb21haW4vdHlwZXNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBSZWdpbWVDb25kaXRpb24ge1xuXHRtYXhUdXJub3ZlcjogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlZ2ltZUl0ZW0ge1xuICAgIHR5cGU6ICdmbGF0JyB8ICdwcm9ncmVzc2l2ZSc7XG4gICAgcmF0ZT86IG51bWJlcjtcbiAgICBtYXhJbmNvbWU/OiBudW1iZXI7XG4gICAgYnJhY2tldHM/OiBQcm9ncmVzc2l2ZVRheEJyYWNrZXRbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWdpbWUge1xuICAgIGdlbmVyYWw6IFJlZ2ltZUl0ZW1bXTtcbiAgICBzbWFsbEJ1c2luZXNzOiBSZWdpbWVJdGVtW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW5wdXQge1xuXHR0YXhhYmxlSW5jb21lOiBudW1iZXI7XG5cdGFubnVhbFR1cm5vdmVyOiBudW1iZXI7XG4gICAgaXNTbWFsbEJ1c2luZXNzOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE91dHB1dCB7XG5cdG5hbWU6IHN0cmluZztcblx0dHlwZTogJ251bWJlcicgfCAnc3RyaW5nJztcblx0dW5pdD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGbGF0VGF4UnVsZSB7XG5cdHR5cGU6ICdmbGF0Jztcblx0cmF0ZTogbnVtYmVyO1xuXHRjb25kaXRpb25zPzogUmVnaW1lQ29uZGl0aW9uO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByb2dyZXNzaXZlVGF4QnJhY2tldCB7XG5cdGZyb206IG51bWJlcjtcblx0dG86IG51bWJlciB8IG51bGw7XG5cdHJhdGU6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcm9ncmVzc2l2ZVRheFJ1bGUge1xuXHR0eXBlOiAncHJvZ3Jlc3NpdmUnO1xuXHRicmFja2V0czogUHJvZ3Jlc3NpdmVUYXhCcmFja2V0W107XG5cdGVsaWdpYmlsaXR5PzogUmVjb3JkPHN0cmluZywgYW55Pjtcblx0Y29uZGl0aW9ucz86IFJlZ2ltZUNvbmRpdGlvbjtcbn1cblxuZXhwb3J0IHR5cGUgVGF4UnVsZSA9IEZsYXRUYXhSdWxlIHwgUHJvZ3Jlc3NpdmVUYXhSdWxlO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJ1bGVzIHtcbiAgXHRyZWdpbWVzOiBSZWNvcmQ8c3RyaW5nLCBUYXhSdWxlPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXN1bHQge1xuXHRjb3Jwb3JhdGVUYXg6IG51bWJlcjtcblx0ZWZmZWN0aXZlVGF4UmF0ZTogbnVtYmVyO1xuXHRicmVha2Rvd25zOiBCcmVha2Rvd25bXTtcbn1cblxuIl19
|
|
@@ -12,29 +12,32 @@ class SouthAfricaCorporateTaxServiceImpl {
|
|
|
12
12
|
throw new Error(`Unknown tax regime: ${this._input.regime}`);
|
|
13
13
|
}
|
|
14
14
|
let tax = 0;
|
|
15
|
-
let
|
|
15
|
+
let breakdowns = [];
|
|
16
16
|
if (rule.type === 'flat') {
|
|
17
17
|
tax = this._input.taxableIncome * rule.rate;
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
breakdowns = [{
|
|
19
|
+
from: '0',
|
|
20
|
+
to: 'Above',
|
|
21
|
+
rate: rule.rate,
|
|
22
|
+
amount: tax
|
|
23
|
+
}];
|
|
21
24
|
}
|
|
22
25
|
if (rule.type === 'progressive') {
|
|
23
26
|
const result = this.calculateProgressiveTax(this._input.taxableIncome, rule.brackets);
|
|
24
27
|
tax = result.total;
|
|
25
|
-
|
|
28
|
+
breakdowns = result.breakdowns;
|
|
26
29
|
}
|
|
27
30
|
return {
|
|
28
31
|
corporateTax: tax,
|
|
29
32
|
effectiveTaxRate: this._input.taxableIncome > 0
|
|
30
33
|
? (tax / this._input.taxableIncome) * 100
|
|
31
34
|
: 0,
|
|
32
|
-
|
|
35
|
+
breakdowns,
|
|
33
36
|
};
|
|
34
37
|
}
|
|
35
38
|
calculateProgressiveTax(income, brackets) {
|
|
36
39
|
let tax = 0;
|
|
37
|
-
const
|
|
40
|
+
const breakdowns = [];
|
|
38
41
|
for (const bracket of brackets) {
|
|
39
42
|
if (income <= bracket.from)
|
|
40
43
|
continue;
|
|
@@ -43,14 +46,16 @@ class SouthAfricaCorporateTaxServiceImpl {
|
|
|
43
46
|
if (taxableAmount > 0) {
|
|
44
47
|
const bracketTax = taxableAmount * bracket.rate;
|
|
45
48
|
tax += bracketTax;
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
:
|
|
49
|
-
|
|
49
|
+
breakdowns.push({
|
|
50
|
+
from: `${bracket.from}`,
|
|
51
|
+
to: `${bracket.to ?? 'Above'}`,
|
|
52
|
+
rate: bracket.rate,
|
|
53
|
+
amount: bracketTax,
|
|
54
|
+
});
|
|
50
55
|
}
|
|
51
56
|
}
|
|
52
|
-
return { total: tax,
|
|
57
|
+
return { total: tax, breakdowns };
|
|
53
58
|
}
|
|
54
59
|
}
|
|
55
60
|
exports.SouthAfricaCorporateTaxServiceImpl = SouthAfricaCorporateTaxServiceImpl;
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU291dGhBZnJpY2FDb3Jwb3JhdGVUYXhTZXJ2aWNlSW1wbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb3Jwb3JhdGUvc291dGgtYWZyaWNhL1NvdXRoQWZyaWNhQ29ycG9yYXRlVGF4U2VydmljZUltcGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBSUEsTUFBYSxrQ0FBa0M7SUFJM0MsWUFBWSxLQUFZLEVBQUUsS0FBWTtRQUNsQyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUNwQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztJQUN4QixDQUFDO0lBRUQsU0FBUztRQUNMLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFckQsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1IsTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ2pFLENBQUM7UUFFRCxJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDWixJQUFJLFVBQVUsR0FBZ0IsRUFBRSxDQUFDO1FBRWpDLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxNQUFNLEVBQUUsQ0FBQztZQUN2QixHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztZQUM1QyxVQUFVLEdBQUcsQ0FBQztvQkFDVixJQUFJLEVBQUUsR0FBRztvQkFDVCxFQUFFLEVBQUUsT0FBTztvQkFDWCxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7b0JBQ2YsTUFBTSxFQUFFLEdBQUc7aUJBQ2QsQ0FBQyxDQUFDO1FBQ1AsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxhQUFhLEVBQUUsQ0FBQztZQUM5QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQ3ZDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUN6QixJQUFJLENBQUMsUUFBUSxDQUNoQixDQUFDO1lBQ0YsR0FBRyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7WUFDbkIsVUFBVSxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUM7UUFDbkMsQ0FBQztRQUVELE9BQU87WUFDSCxZQUFZLEVBQUUsR0FBRztZQUNqQixnQkFBZ0IsRUFDaEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLEdBQUcsQ0FBQztnQkFDekIsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLEdBQUcsR0FBRztnQkFDekMsQ0FBQyxDQUFDLENBQUM7WUFDUCxVQUFVO1NBQ2IsQ0FBQztJQUNOLENBQUM7SUFFTyx1QkFBdUIsQ0FBQyxNQUFjLEVBQUUsUUFBaUM7UUFDN0UsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQ1osTUFBTSxVQUFVLEdBQWdCLEVBQUUsQ0FBQztRQUVuQyxLQUFLLE1BQU0sT0FBTyxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQzdCLElBQUksTUFBTSxJQUFJLE9BQU8sQ0FBQyxJQUFJO2dCQUFFLFNBQVM7WUFFckMsTUFBTSxVQUFVLEdBQ2hCLE9BQU8sQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUU1RCxNQUFNLGFBQWEsR0FBRyxVQUFVLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztZQUVoRCxJQUFJLGFBQWEsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDcEIsTUFBTSxVQUFVLEdBQUcsYUFBYSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7Z0JBQ2hELEdBQUcsSUFBSSxVQUFVLENBQUM7Z0JBRWxCLFVBQVUsQ0FBQyxJQUFJLENBQUM7b0JBQ1osSUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDLElBQUksRUFBRTtvQkFDdkIsRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLEVBQUUsSUFBSSxPQUFPLEVBQUU7b0JBQzlCLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSTtvQkFDbEIsTUFBTSxFQUFFLFVBQVU7aUJBQ3JCLENBQUMsQ0FBQztZQUNQLENBQUM7UUFDTCxDQUFDO1FBRUQsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFLENBQUM7SUFDdEMsQ0FBQztDQUNKO0FBM0VELGdGQTJFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJyZWFrZG93biB9IGZyb20gJy4uL2RvbWFpbi90eXBlcyc7XG5pbXBvcnQgeyBSdWxlcywgSW5wdXQsIFJlc3VsdCwgUHJvZ3Jlc3NpdmVUYXhCcmFja2V0IH0gZnJvbSAnLi9kb21haW4vdHlwZXMnO1xuaW1wb3J0IHsgU291dGhBZnJpY2FDb3Jwb3JhdGVUYXhTZXJ2aWNlIH0gZnJvbSAnLi9Tb3V0aEFmcmljYUNvcnBvcmF0ZVRheFNlcnZpY2UnO1xuXG5leHBvcnQgY2xhc3MgU291dGhBZnJpY2FDb3Jwb3JhdGVUYXhTZXJ2aWNlSW1wbCBpbXBsZW1lbnRzIFNvdXRoQWZyaWNhQ29ycG9yYXRlVGF4U2VydmljZSB7XG4gICAgcHJpdmF0ZSBfaW5wdXQ6IElucHV0O1xuICAgIHByaXZhdGUgX3J1bGVzOiBSdWxlcztcblxuICAgIGNvbnN0cnVjdG9yKGlucHV0OiBJbnB1dCwgcnVsZXM6IFJ1bGVzKSB7XG4gICAgICAgIHRoaXMuX2lucHV0ID0gaW5wdXQ7XG4gICAgICAgIHRoaXMuX3J1bGVzID0gcnVsZXM7XG4gICAgfVxuXG4gICAgY2FsY3VsYXRlKCk6IFJlc3VsdCB7XG4gICAgICAgIGNvbnN0IHJ1bGUgPSB0aGlzLl9ydWxlcy5yZWdpbWVzW3RoaXMuX2lucHV0LnJlZ2ltZV07XG5cbiAgICAgICAgaWYgKCFydWxlKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gdGF4IHJlZ2ltZTogJHt0aGlzLl9pbnB1dC5yZWdpbWV9YCk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgdGF4ID0gMDtcbiAgICAgICAgbGV0IGJyZWFrZG93bnM6IEJyZWFrZG93bltdID0gW107XG5cbiAgICAgICAgaWYgKHJ1bGUudHlwZSA9PT0gJ2ZsYXQnKSB7XG4gICAgICAgICAgICB0YXggPSB0aGlzLl9pbnB1dC50YXhhYmxlSW5jb21lICogcnVsZS5yYXRlO1xuICAgICAgICAgICAgYnJlYWtkb3ducyA9IFt7XG4gICAgICAgICAgICAgICAgZnJvbTogJzAnLFxuICAgICAgICAgICAgICAgIHRvOiAnQWJvdmUnLFxuICAgICAgICAgICAgICAgIHJhdGU6IHJ1bGUucmF0ZSxcbiAgICAgICAgICAgICAgICBhbW91bnQ6IHRheFxuICAgICAgICAgICAgfV07XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocnVsZS50eXBlID09PSAncHJvZ3Jlc3NpdmUnKSB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSB0aGlzLmNhbGN1bGF0ZVByb2dyZXNzaXZlVGF4KFxuICAgICAgICAgICAgICAgIHRoaXMuX2lucHV0LnRheGFibGVJbmNvbWUsXG4gICAgICAgICAgICAgICAgcnVsZS5icmFja2V0c1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRheCA9IHJlc3VsdC50b3RhbDtcbiAgICAgICAgICAgIGJyZWFrZG93bnMgPSByZXN1bHQuYnJlYWtkb3ducztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBjb3Jwb3JhdGVUYXg6IHRheCxcbiAgICAgICAgICAgIGVmZmVjdGl2ZVRheFJhdGU6XG4gICAgICAgICAgICB0aGlzLl9pbnB1dC50YXhhYmxlSW5jb21lID4gMFxuICAgICAgICAgICAgICAgID8gKHRheCAvIHRoaXMuX2lucHV0LnRheGFibGVJbmNvbWUpICogMTAwXG4gICAgICAgICAgICAgICAgOiAwLFxuICAgICAgICAgICAgYnJlYWtkb3ducyxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNhbGN1bGF0ZVByb2dyZXNzaXZlVGF4KGluY29tZTogbnVtYmVyLCBicmFja2V0czogUHJvZ3Jlc3NpdmVUYXhCcmFja2V0W10pOiB7IHRvdGFsOiBudW1iZXI7IGJyZWFrZG93bnM6IEJyZWFrZG93bltdIH0ge1xuICAgICAgICBsZXQgdGF4ID0gMDtcbiAgICAgICAgY29uc3QgYnJlYWtkb3duczogQnJlYWtkb3duW10gPSBbXTtcblxuICAgICAgICBmb3IgKGNvbnN0IGJyYWNrZXQgb2YgYnJhY2tldHMpIHtcbiAgICAgICAgICAgIGlmIChpbmNvbWUgPD0gYnJhY2tldC5mcm9tKSBjb250aW51ZTtcblxuICAgICAgICAgICAgY29uc3QgdXBwZXJMaW1pdCA9XG4gICAgICAgICAgICBicmFja2V0LnRvID09PSBudWxsID8gaW5jb21lIDogTWF0aC5taW4oaW5jb21lLCBicmFja2V0LnRvKTtcblxuICAgICAgICAgICAgY29uc3QgdGF4YWJsZUFtb3VudCA9IHVwcGVyTGltaXQgLSBicmFja2V0LmZyb207XG5cbiAgICAgICAgICAgIGlmICh0YXhhYmxlQW1vdW50ID4gMCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGJyYWNrZXRUYXggPSB0YXhhYmxlQW1vdW50ICogYnJhY2tldC5yYXRlO1xuICAgICAgICAgICAgICAgIHRheCArPSBicmFja2V0VGF4O1xuXG4gICAgICAgICAgICAgICAgYnJlYWtkb3ducy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogYCR7YnJhY2tldC5mcm9tfWAsXG4gICAgICAgICAgICAgICAgICAgIHRvOiBgJHticmFja2V0LnRvID8/ICdBYm92ZSd9YCxcbiAgICAgICAgICAgICAgICAgICAgcmF0ZTogYnJhY2tldC5yYXRlLFxuICAgICAgICAgICAgICAgICAgICBhbW91bnQ6IGJyYWNrZXRUYXgsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4geyB0b3RhbDogdGF4LCBicmVha2Rvd25zIH07XG4gICAgfVxufSAiXX0=
|
|
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29ycG9yYXRlL3NvdXRoLWFmcmljYS9kb21haW4vdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJyZWFrZG93biB9IGZyb20gXCIuLi8uLi9kb21haW4vdHlwZXNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBJbnB1dCB7XG5cdHRheGFibGVJbmNvbWU6IG51bWJlcjtcbiAgICByZWdpbWU6ICdMQVJHRScgfCAnU0JDJztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPdXRwdXQge1xuXHRuYW1lOiBzdHJpbmc7XG5cdHR5cGU6ICdudW1iZXInIHwgJ3N0cmluZyc7XG5cdHVuaXQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmxhdFRheFJ1bGUge1xuXHR0eXBlOiAnZmxhdCc7XG5cdHJhdGU6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcm9ncmVzc2l2ZVRheEJyYWNrZXQge1xuXHRmcm9tOiBudW1iZXI7XG5cdHRvOiBudW1iZXIgfCBudWxsO1xuXHRyYXRlOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvZ3Jlc3NpdmVUYXhSdWxlIHtcblx0dHlwZTogJ3Byb2dyZXNzaXZlJztcblx0YnJhY2tldHM6IFByb2dyZXNzaXZlVGF4QnJhY2tldFtdO1xuXHRlbGlnaWJpbGl0eT86IFJlY29yZDxzdHJpbmcsIGFueT47XG59XG5cbmV4cG9ydCB0eXBlIFRheFJ1bGUgPSBGbGF0VGF4UnVsZSB8IFByb2dyZXNzaXZlVGF4UnVsZTtcblxuZXhwb3J0IGludGVyZmFjZSBSdWxlcyB7XG4gIFx0cmVnaW1lczogUmVjb3JkPHN0cmluZywgVGF4UnVsZT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzdWx0IHtcblx0Y29ycG9yYXRlVGF4OiBudW1iZXI7XG5cdGVmZmVjdGl2ZVRheFJhdGU6IG51bWJlcjtcblx0YnJlYWtkb3duczogQnJlYWtkb3duW107XG59XG5cbiJdfQ==
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXVzdHJhbGlhSW5jb21lVGF4U2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9pbmNvbWUtdGF4L2F1c3RyYWxpYS9BdXN0cmFsaWFJbmNvbWVUYXhTZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wdXRlZEluY29tZVRheFZhbHVlcywgSW5jb21lVGF4UnVsZXMgfSBmcm9tIFwiLi9kb21haW4vdHlwZXNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBBdXN0cmFsaWFJbmNvbWVUYXhTZXJ2aWNlIHtcbiAgICBjYWxjdWxhdGVOZXRJbmNvbWUoXG4gICAgICAgIGluY29tZTogbnVtYmVyLFxuICAgICAgICBydWxlczogSW5jb21lVGF4UnVsZXMsXG4gICAgKTogQ29tcHV0ZWRJbmNvbWVUYXhWYWx1ZXM7XG59XG4iXX0=
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AustraliaIncomeTaxServiceImpl = void 0;
|
|
4
|
+
class AustraliaIncomeTaxServiceImpl {
|
|
5
|
+
constructor(income, rules) {
|
|
6
|
+
this._income = income;
|
|
7
|
+
this._rules = rules;
|
|
8
|
+
}
|
|
9
|
+
calculateNetIncome() {
|
|
10
|
+
const { grossTax, bracketBreakdown } = this.computeTaxBracketBreakdown(this._income, this._rules);
|
|
11
|
+
const lito = this.computeLowIncomeTaxOffset(this._income, this._rules.lowIncomeTaxOffset);
|
|
12
|
+
const incomeTax = Math.max(0, grossTax - lito);
|
|
13
|
+
const medicareLevy = this.computeMedicareLevy(this._income, this._rules.medicareLevy);
|
|
14
|
+
const totalDeductions = incomeTax + medicareLevy;
|
|
15
|
+
const netIncome = this._income - totalDeductions;
|
|
16
|
+
return {
|
|
17
|
+
grossIncome: this._income,
|
|
18
|
+
incomeTax: this.round(incomeTax),
|
|
19
|
+
medicareLevy: this.round(medicareLevy),
|
|
20
|
+
lowIncomeTaxOffset: this.round(lito),
|
|
21
|
+
totalDeductions: this.round(totalDeductions),
|
|
22
|
+
netIncome: this.round(netIncome),
|
|
23
|
+
effectiveTaxRate: this._income > 0 ? this.round(incomeTax / this._income, 4) : 0,
|
|
24
|
+
taxBracketBreakdown: bracketBreakdown,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
computeTaxBracketBreakdown(income, rules) {
|
|
28
|
+
let tax = 0;
|
|
29
|
+
const bracketBreakdown = [];
|
|
30
|
+
for (let index = 0; index < rules.taxBrackets.length; index++) {
|
|
31
|
+
const bracket = rules.taxBrackets[index];
|
|
32
|
+
if (income <= bracket.from) {
|
|
33
|
+
bracketBreakdown.push({
|
|
34
|
+
bracketIndex: index,
|
|
35
|
+
bracketName: `Bracket ${index + 1}`,
|
|
36
|
+
from: bracket.from,
|
|
37
|
+
to: bracket.to ?? null,
|
|
38
|
+
rate: bracket.rate,
|
|
39
|
+
amountInBracket: 0,
|
|
40
|
+
taxOnAmount: 0,
|
|
41
|
+
});
|
|
42
|
+
break;
|
|
43
|
+
}
|
|
44
|
+
const upper = bracket.to ?? income;
|
|
45
|
+
const taxableAmount = Math.min(upper, income) - bracket.from;
|
|
46
|
+
if (taxableAmount > 0) {
|
|
47
|
+
const taxOnAmount = taxableAmount * bracket.rate;
|
|
48
|
+
tax += taxOnAmount;
|
|
49
|
+
bracketBreakdown.push({
|
|
50
|
+
bracketIndex: index,
|
|
51
|
+
bracketName: `Bracket ${index + 1}`,
|
|
52
|
+
from: bracket.from,
|
|
53
|
+
to: bracket.to ?? null,
|
|
54
|
+
rate: bracket.rate,
|
|
55
|
+
amountInBracket: taxableAmount,
|
|
56
|
+
taxOnAmount,
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
bracketBreakdown.push({
|
|
61
|
+
bracketIndex: index,
|
|
62
|
+
bracketName: `Bracket ${index + 1}`,
|
|
63
|
+
from: bracket.from,
|
|
64
|
+
to: bracket.to ?? null,
|
|
65
|
+
rate: bracket.rate,
|
|
66
|
+
amountInBracket: 0,
|
|
67
|
+
taxOnAmount: 0,
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return { grossTax: tax, bracketBreakdown };
|
|
72
|
+
}
|
|
73
|
+
computeLowIncomeTaxOffset(income, lito) {
|
|
74
|
+
if (income <= lito.phaseOutStart) {
|
|
75
|
+
return lito.maxOffset;
|
|
76
|
+
}
|
|
77
|
+
if (income >= lito.phaseOutEnd) {
|
|
78
|
+
return 0;
|
|
79
|
+
}
|
|
80
|
+
const reduction = (income - lito.phaseOutStart) * lito.phaseOutRate;
|
|
81
|
+
return Math.max(0, lito.maxOffset - reduction);
|
|
82
|
+
}
|
|
83
|
+
computeMedicareLevy(income, medicare) {
|
|
84
|
+
if (income <= medicare.shadingInThreshold) {
|
|
85
|
+
return 0;
|
|
86
|
+
}
|
|
87
|
+
if (income <= medicare.fullLevyThreshold) {
|
|
88
|
+
return (income - medicare.shadingInThreshold) * medicare.reductionRate;
|
|
89
|
+
}
|
|
90
|
+
return income * medicare.rate;
|
|
91
|
+
}
|
|
92
|
+
round(value, decimals = 2) {
|
|
93
|
+
return Number(value.toFixed(decimals));
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
exports.AustraliaIncomeTaxServiceImpl = AustraliaIncomeTaxServiceImpl;
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXVzdHJhbGlhSW5jb21lVGF4U2VydmljZUltcGwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaW5jb21lLXRheC9hdXN0cmFsaWEvQXVzdHJhbGlhSW5jb21lVGF4U2VydmljZUltcGwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBU0EsTUFBYSw2QkFBNkI7SUFJdEMsWUFBWSxNQUFjLEVBQUUsS0FBcUI7UUFDN0MsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDdEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDeEIsQ0FBQztJQUVNLGtCQUFrQjtRQUNyQixNQUFNLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixDQUNsRSxJQUFJLENBQUMsT0FBTyxFQUNaLElBQUksQ0FBQyxNQUFNLENBQ2QsQ0FBQztRQUVGLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FDdkMsSUFBSSxDQUFDLE9BQU8sRUFDWixJQUFJLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUNqQyxDQUFDO1FBRUYsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsUUFBUSxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQy9DLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FDekMsSUFBSSxDQUFDLE9BQU8sRUFDWixJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FDM0IsQ0FBQztRQUVGLE1BQU0sZUFBZSxHQUFHLFNBQVMsR0FBRyxZQUFZLENBQUM7UUFDakQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sR0FBRyxlQUFlLENBQUM7UUFFakQsT0FBTztZQUNILFdBQVcsRUFBRSxJQUFJLENBQUMsT0FBTztZQUN6QixTQUFTLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7WUFDaEMsWUFBWSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDO1lBQ3RDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDO1lBQ3BDLGVBQWUsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQztZQUM1QyxTQUFTLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7WUFDaEMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDaEYsbUJBQW1CLEVBQUUsZ0JBQWdCO1NBQ3hDLENBQUM7SUFDTixDQUFDO0lBRU8sMEJBQTBCLENBQzlCLE1BQWMsRUFDZCxLQUFxQjtRQUVyQixJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDWixNQUFNLGdCQUFnQixHQUF3QixFQUFFLENBQUM7UUFFakQsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7WUFDNUQsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUV6QyxJQUFJLE1BQU0sSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ3pCLGdCQUFnQixDQUFDLElBQUksQ0FBQztvQkFDbEIsWUFBWSxFQUFFLEtBQUs7b0JBQ25CLFdBQVcsRUFBRSxXQUFXLEtBQUssR0FBRyxDQUFDLEVBQUU7b0JBQ25DLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSTtvQkFDbEIsRUFBRSxFQUFFLE9BQU8sQ0FBQyxFQUFFLElBQUksSUFBSTtvQkFDdEIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO29CQUNsQixlQUFlLEVBQUUsQ0FBQztvQkFDbEIsV0FBVyxFQUFFLENBQUM7aUJBQ2pCLENBQUMsQ0FBQztnQkFDSCxNQUFNO1lBQ1YsQ0FBQztZQUVELE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxFQUFFLElBQUksTUFBTSxDQUFDO1lBQ25DLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7WUFFN0QsSUFBSSxhQUFhLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3BCLE1BQU0sV0FBVyxHQUFHLGFBQWEsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDO2dCQUNqRCxHQUFHLElBQUksV0FBVyxDQUFDO2dCQUNuQixnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7b0JBQ2xCLFlBQVksRUFBRSxLQUFLO29CQUNuQixXQUFXLEVBQUUsV0FBVyxLQUFLLEdBQUcsQ0FBQyxFQUFFO29CQUNuQyxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7b0JBQ2xCLEVBQUUsRUFBRSxPQUFPLENBQUMsRUFBRSxJQUFJLElBQUk7b0JBQ3RCLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSTtvQkFDbEIsZUFBZSxFQUFFLGFBQWE7b0JBQzlCLFdBQVc7aUJBQ2QsQ0FBQyxDQUFDO1lBQ1AsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLGdCQUFnQixDQUFDLElBQUksQ0FBQztvQkFDbEIsWUFBWSxFQUFFLEtBQUs7b0JBQ25CLFdBQVcsRUFBRSxXQUFXLEtBQUssR0FBRyxDQUFDLEVBQUU7b0JBQ25DLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSTtvQkFDbEIsRUFBRSxFQUFFLE9BQU8sQ0FBQyxFQUFFLElBQUksSUFBSTtvQkFDdEIsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO29CQUNsQixlQUFlLEVBQUUsQ0FBQztvQkFDbEIsV0FBVyxFQUFFLENBQUM7aUJBQ2pCLENBQUMsQ0FBQztZQUNQLENBQUM7UUFDTCxDQUFDO1FBRUQsT0FBTyxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQztJQUMvQyxDQUFDO0lBRU8seUJBQXlCLENBQUMsTUFBYyxFQUFFLElBQXdCO1FBQ3RFLElBQUksTUFBTSxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUMvQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDMUIsQ0FBQztRQUVELElBQUksTUFBTSxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUM3QixPQUFPLENBQUMsQ0FBQztRQUNiLENBQUM7UUFFRCxNQUFNLFNBQVMsR0FBRyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUNwRSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVPLG1CQUFtQixDQUFDLE1BQWMsRUFBRSxRQUEyQjtRQUNuRSxJQUFJLE1BQU0sSUFBSSxRQUFRLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUN4QyxPQUFPLENBQUMsQ0FBQztRQUNiLENBQUM7UUFFRCxJQUFJLE1BQU0sSUFBSSxRQUFRLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUN2QyxPQUFPLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUM7UUFDM0UsQ0FBQztRQUVELE9BQU8sTUFBTSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7SUFDbEMsQ0FBQztJQUVPLEtBQUssQ0FBQyxLQUFhLEVBQUUsUUFBUSxHQUFHLENBQUM7UUFDckMsT0FBTyxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQzNDLENBQUM7Q0FDSjtBQTNIRCxzRUEySEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCcmFja2V0QWxsb2NhdGlvbiB9IGZyb20gXCIuLi9kb21haW4vdHlwZXNcIjtcbmltcG9ydCB7IEF1c3RyYWxpYUluY29tZVRheFNlcnZpY2UgfSBmcm9tIFwiLi9BdXN0cmFsaWFJbmNvbWVUYXhTZXJ2aWNlXCI7XG5pbXBvcnQge1xuICAgIENvbXB1dGVkSW5jb21lVGF4VmFsdWVzLFxuICAgIEluY29tZVRheFJ1bGVzLFxuICAgIExvd0luY29tZVRheE9mZnNldCxcbiAgICBNZWRpY2FyZUxldnlSdWxlcyxcbn0gZnJvbSBcIi4vZG9tYWluL3R5cGVzXCI7XG5cbmV4cG9ydCBjbGFzcyBBdXN0cmFsaWFJbmNvbWVUYXhTZXJ2aWNlSW1wbCBpbXBsZW1lbnRzIEF1c3RyYWxpYUluY29tZVRheFNlcnZpY2Uge1xuICAgIHByaXZhdGUgX2luY29tZTogbnVtYmVyO1xuICAgIHByaXZhdGUgX3J1bGVzOiBJbmNvbWVUYXhSdWxlcztcblxuICAgIGNvbnN0cnVjdG9yKGluY29tZTogbnVtYmVyLCBydWxlczogSW5jb21lVGF4UnVsZXMpIHtcbiAgICAgICAgdGhpcy5faW5jb21lID0gaW5jb21lO1xuICAgICAgICB0aGlzLl9ydWxlcyA9IHJ1bGVzO1xuICAgIH1cblxuICAgIHB1YmxpYyBjYWxjdWxhdGVOZXRJbmNvbWUoKTogQ29tcHV0ZWRJbmNvbWVUYXhWYWx1ZXMge1xuICAgICAgICBjb25zdCB7IGdyb3NzVGF4LCBicmFja2V0QnJlYWtkb3duIH0gPSB0aGlzLmNvbXB1dGVUYXhCcmFja2V0QnJlYWtkb3duKFxuICAgICAgICAgICAgdGhpcy5faW5jb21lLFxuICAgICAgICAgICAgdGhpcy5fcnVsZXMsXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3QgbGl0byA9IHRoaXMuY29tcHV0ZUxvd0luY29tZVRheE9mZnNldChcbiAgICAgICAgICAgIHRoaXMuX2luY29tZSxcbiAgICAgICAgICAgIHRoaXMuX3J1bGVzLmxvd0luY29tZVRheE9mZnNldCxcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBpbmNvbWVUYXggPSBNYXRoLm1heCgwLCBncm9zc1RheCAtIGxpdG8pO1xuICAgICAgICBjb25zdCBtZWRpY2FyZUxldnkgPSB0aGlzLmNvbXB1dGVNZWRpY2FyZUxldnkoXG4gICAgICAgICAgICB0aGlzLl9pbmNvbWUsXG4gICAgICAgICAgICB0aGlzLl9ydWxlcy5tZWRpY2FyZUxldnksXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3QgdG90YWxEZWR1Y3Rpb25zID0gaW5jb21lVGF4ICsgbWVkaWNhcmVMZXZ5O1xuICAgICAgICBjb25zdCBuZXRJbmNvbWUgPSB0aGlzLl9pbmNvbWUgLSB0b3RhbERlZHVjdGlvbnM7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGdyb3NzSW5jb21lOiB0aGlzLl9pbmNvbWUsXG4gICAgICAgICAgICBpbmNvbWVUYXg6IHRoaXMucm91bmQoaW5jb21lVGF4KSxcbiAgICAgICAgICAgIG1lZGljYXJlTGV2eTogdGhpcy5yb3VuZChtZWRpY2FyZUxldnkpLFxuICAgICAgICAgICAgbG93SW5jb21lVGF4T2Zmc2V0OiB0aGlzLnJvdW5kKGxpdG8pLFxuICAgICAgICAgICAgdG90YWxEZWR1Y3Rpb25zOiB0aGlzLnJvdW5kKHRvdGFsRGVkdWN0aW9ucyksXG4gICAgICAgICAgICBuZXRJbmNvbWU6IHRoaXMucm91bmQobmV0SW5jb21lKSxcbiAgICAgICAgICAgIGVmZmVjdGl2ZVRheFJhdGU6IHRoaXMuX2luY29tZSA+IDAgPyB0aGlzLnJvdW5kKGluY29tZVRheCAvIHRoaXMuX2luY29tZSwgNCkgOiAwLFxuICAgICAgICAgICAgdGF4QnJhY2tldEJyZWFrZG93bjogYnJhY2tldEJyZWFrZG93bixcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbXB1dGVUYXhCcmFja2V0QnJlYWtkb3duKFxuICAgICAgICBpbmNvbWU6IG51bWJlcixcbiAgICAgICAgcnVsZXM6IEluY29tZVRheFJ1bGVzLFxuICAgICk6IHsgZ3Jvc3NUYXg6IG51bWJlcjsgYnJhY2tldEJyZWFrZG93bjogQnJhY2tldEFsbG9jYXRpb25bXSB9IHtcbiAgICAgICAgbGV0IHRheCA9IDA7XG4gICAgICAgIGNvbnN0IGJyYWNrZXRCcmVha2Rvd246IEJyYWNrZXRBbGxvY2F0aW9uW10gPSBbXTtcblxuICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgcnVsZXMudGF4QnJhY2tldHMubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgICAgICBjb25zdCBicmFja2V0ID0gcnVsZXMudGF4QnJhY2tldHNbaW5kZXhdO1xuXG4gICAgICAgICAgICBpZiAoaW5jb21lIDw9IGJyYWNrZXQuZnJvbSkge1xuICAgICAgICAgICAgICAgIGJyYWNrZXRCcmVha2Rvd24ucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIGJyYWNrZXRJbmRleDogaW5kZXgsXG4gICAgICAgICAgICAgICAgICAgIGJyYWNrZXROYW1lOiBgQnJhY2tldCAke2luZGV4ICsgMX1gLFxuICAgICAgICAgICAgICAgICAgICBmcm9tOiBicmFja2V0LmZyb20sXG4gICAgICAgICAgICAgICAgICAgIHRvOiBicmFja2V0LnRvID8/IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIHJhdGU6IGJyYWNrZXQucmF0ZSxcbiAgICAgICAgICAgICAgICAgICAgYW1vdW50SW5CcmFja2V0OiAwLFxuICAgICAgICAgICAgICAgICAgICB0YXhPbkFtb3VudDogMCxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgdXBwZXIgPSBicmFja2V0LnRvID8/IGluY29tZTtcbiAgICAgICAgICAgIGNvbnN0IHRheGFibGVBbW91bnQgPSBNYXRoLm1pbih1cHBlciwgaW5jb21lKSAtIGJyYWNrZXQuZnJvbTtcblxuICAgICAgICAgICAgaWYgKHRheGFibGVBbW91bnQgPiAwKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdGF4T25BbW91bnQgPSB0YXhhYmxlQW1vdW50ICogYnJhY2tldC5yYXRlO1xuICAgICAgICAgICAgICAgIHRheCArPSB0YXhPbkFtb3VudDtcbiAgICAgICAgICAgICAgICBicmFja2V0QnJlYWtkb3duLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICBicmFja2V0SW5kZXg6IGluZGV4LFxuICAgICAgICAgICAgICAgICAgICBicmFja2V0TmFtZTogYEJyYWNrZXQgJHtpbmRleCArIDF9YCxcbiAgICAgICAgICAgICAgICAgICAgZnJvbTogYnJhY2tldC5mcm9tLFxuICAgICAgICAgICAgICAgICAgICB0bzogYnJhY2tldC50byA/PyBudWxsLFxuICAgICAgICAgICAgICAgICAgICByYXRlOiBicmFja2V0LnJhdGUsXG4gICAgICAgICAgICAgICAgICAgIGFtb3VudEluQnJhY2tldDogdGF4YWJsZUFtb3VudCxcbiAgICAgICAgICAgICAgICAgICAgdGF4T25BbW91bnQsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGJyYWNrZXRCcmVha2Rvd24ucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIGJyYWNrZXRJbmRleDogaW5kZXgsXG4gICAgICAgICAgICAgICAgICAgIGJyYWNrZXROYW1lOiBgQnJhY2tldCAke2luZGV4ICsgMX1gLFxuICAgICAgICAgICAgICAgICAgICBmcm9tOiBicmFja2V0LmZyb20sXG4gICAgICAgICAgICAgICAgICAgIHRvOiBicmFja2V0LnRvID8/IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIHJhdGU6IGJyYWNrZXQucmF0ZSxcbiAgICAgICAgICAgICAgICAgICAgYW1vdW50SW5CcmFja2V0OiAwLFxuICAgICAgICAgICAgICAgICAgICB0YXhPbkFtb3VudDogMCxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7IGdyb3NzVGF4OiB0YXgsIGJyYWNrZXRCcmVha2Rvd24gfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbXB1dGVMb3dJbmNvbWVUYXhPZmZzZXQoaW5jb21lOiBudW1iZXIsIGxpdG86IExvd0luY29tZVRheE9mZnNldCk6IG51bWJlciB7XG4gICAgICAgIGlmIChpbmNvbWUgPD0gbGl0by5waGFzZU91dFN0YXJ0KSB7XG4gICAgICAgICAgICByZXR1cm4gbGl0by5tYXhPZmZzZXQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaW5jb21lID49IGxpdG8ucGhhc2VPdXRFbmQpIHtcbiAgICAgICAgICAgIHJldHVybiAwO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVkdWN0aW9uID0gKGluY29tZSAtIGxpdG8ucGhhc2VPdXRTdGFydCkgKiBsaXRvLnBoYXNlT3V0UmF0ZTtcbiAgICAgICAgcmV0dXJuIE1hdGgubWF4KDAsIGxpdG8ubWF4T2Zmc2V0IC0gcmVkdWN0aW9uKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbXB1dGVNZWRpY2FyZUxldnkoaW5jb21lOiBudW1iZXIsIG1lZGljYXJlOiBNZWRpY2FyZUxldnlSdWxlcyk6IG51bWJlciB7XG4gICAgICAgIGlmIChpbmNvbWUgPD0gbWVkaWNhcmUuc2hhZGluZ0luVGhyZXNob2xkKSB7XG4gICAgICAgICAgICByZXR1cm4gMDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChpbmNvbWUgPD0gbWVkaWNhcmUuZnVsbExldnlUaHJlc2hvbGQpIHtcbiAgICAgICAgICAgIHJldHVybiAoaW5jb21lIC0gbWVkaWNhcmUuc2hhZGluZ0luVGhyZXNob2xkKSAqIG1lZGljYXJlLnJlZHVjdGlvblJhdGU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaW5jb21lICogbWVkaWNhcmUucmF0ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHJvdW5kKHZhbHVlOiBudW1iZXIsIGRlY2ltYWxzID0gMik6IG51bWJlciB7XG4gICAgICAgIHJldHVybiBOdW1iZXIodmFsdWUudG9GaXhlZChkZWNpbWFscykpO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvaW5jb21lLXRheC9hdXN0cmFsaWEvZG9tYWluL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCcmFja2V0QWxsb2NhdGlvbiwgVGF4QnJhY2tldCB9IGZyb20gXCIuLi8uLi9kb21haW4vdHlwZXNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBJbmNvbWVUYXhSdWxlcyB7XG4gICAgdGF4QnJhY2tldHM6IFRheEJyYWNrZXRbXTtcbiAgICBtZWRpY2FyZUxldnk6IE1lZGljYXJlTGV2eVJ1bGVzO1xuICAgIGxvd0luY29tZVRheE9mZnNldDogTG93SW5jb21lVGF4T2Zmc2V0O1xuICAgIGxvd0FuZE1pZGRsZUluY29tZVRheE9mZnNldD86IExvd0FuZE1pZGRsZUluY29tZVRheE9mZnNldDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNZWRpY2FyZUxldnlSdWxlcyB7XG4gICAgcmF0ZTogbnVtYmVyO1xuICAgIHNoYWRpbmdJblRocmVzaG9sZDogbnVtYmVyO1xuICAgIGZ1bGxMZXZ5VGhyZXNob2xkOiBudW1iZXI7XG4gICAgcmVkdWN0aW9uUmF0ZTogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExvd0luY29tZVRheE9mZnNldCB7XG4gICAgbWF4T2Zmc2V0OiBudW1iZXI7XG4gICAgcGhhc2VPdXRTdGFydDogbnVtYmVyO1xuICAgIHBoYXNlT3V0RW5kOiBudW1iZXI7XG4gICAgcGhhc2VPdXRSYXRlOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTG93QW5kTWlkZGxlSW5jb21lVGF4T2Zmc2V0IHtcbiAgICBtYXhPZmZzZXQ6IG51bWJlcjtcbiAgICBwaGFzZU91dFN0YXJ0OiBudW1iZXI7XG4gICAgcGhhc2VPdXRFbmQ6IG51bWJlcjtcbiAgICBwaGFzZU91dFJhdGU6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBDb21wdXRlZEluY29tZVRheFZhbHVlcyB7XG4gICAgZ3Jvc3NJbmNvbWU6IG51bWJlcjtcbiAgICBpbmNvbWVUYXg6IG51bWJlcjtcbiAgICBtZWRpY2FyZUxldnk6IG51bWJlcjtcbiAgICBsb3dJbmNvbWVUYXhPZmZzZXQ6IG51bWJlcjtcbiAgICB0b3RhbERlZHVjdGlvbnM6IG51bWJlcjtcbiAgICBuZXRJbmNvbWU6IG51bWJlcjtcbiAgICBlZmZlY3RpdmVUYXhSYXRlOiBudW1iZXI7XG4gICAgdGF4QnJhY2tldEJyZWFrZG93bjogQnJhY2tldEFsbG9jYXRpb25bXTtcbn1cbiJdfQ==
|
package/dist/index.js
CHANGED
|
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
exports.SouthAfricaCorporateTaxService = exports.SouthAfricaMortgageService = exports.SouthAfricaIncomeTaxService = exports.FranceCorporateTaxService = exports.FranceMortgageService = exports.FranceIncomeTaxService = exports.CanadaCorporateTaxService = exports.CanadaMortgageService = exports.CanadaIncomeTaxService = exports.CalculatorType = void 0;
|
|
17
|
+
exports.AustraliaCorporateTaxService = exports.AustraliaMortgageService = exports.AustraliaIncomeTaxService = exports.SouthAfricaCorporateTaxService = exports.SouthAfricaMortgageService = exports.SouthAfricaIncomeTaxService = exports.FranceCorporateTaxService = exports.FranceMortgageService = exports.FranceIncomeTaxService = exports.CanadaCorporateTaxService = exports.CanadaMortgageService = exports.CanadaIncomeTaxService = exports.CalculatorType = void 0;
|
|
18
18
|
var types_1 = require("./shared/domain/types");
|
|
19
19
|
Object.defineProperty(exports, "CalculatorType", { enumerable: true, get: function () { return types_1.CalculatorType; } });
|
|
20
20
|
// Canada
|
|
@@ -38,5 +38,12 @@ var SouthAfricaMortgageServiceImpl_1 = require("./mortgage/south-africa/SouthAfr
|
|
|
38
38
|
Object.defineProperty(exports, "SouthAfricaMortgageService", { enumerable: true, get: function () { return SouthAfricaMortgageServiceImpl_1.SouthAfricaMortgageServiceImpl; } });
|
|
39
39
|
var SouthAfricaCorporateTaxServiceImpl_1 = require("./corporate/south-africa/SouthAfricaCorporateTaxServiceImpl");
|
|
40
40
|
Object.defineProperty(exports, "SouthAfricaCorporateTaxService", { enumerable: true, get: function () { return SouthAfricaCorporateTaxServiceImpl_1.SouthAfricaCorporateTaxServiceImpl; } });
|
|
41
|
+
// Australia
|
|
42
|
+
var AustraliaIncomeTaxServiceImpl_1 = require("./income-tax/australia/AustraliaIncomeTaxServiceImpl");
|
|
43
|
+
Object.defineProperty(exports, "AustraliaIncomeTaxService", { enumerable: true, get: function () { return AustraliaIncomeTaxServiceImpl_1.AustraliaIncomeTaxServiceImpl; } });
|
|
44
|
+
var AustraliaMortgageServiceImpl_1 = require("./mortgage/australia/AustraliaMortgageServiceImpl");
|
|
45
|
+
Object.defineProperty(exports, "AustraliaMortgageService", { enumerable: true, get: function () { return AustraliaMortgageServiceImpl_1.AustraliaMortgageServiceImpl; } });
|
|
46
|
+
var AustraliaCorporateTaxServiceImpl_1 = require("./corporate/australia/AustraliaCorporateTaxServiceImpl");
|
|
47
|
+
Object.defineProperty(exports, "AustraliaCorporateTaxService", { enumerable: true, get: function () { return AustraliaCorporateTaxServiceImpl_1.AustraliaCorporateTaxServiceImpl; } });
|
|
41
48
|
__exportStar(require("./income-tax/domain/types"), exports);
|
|
42
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQ0FBdUQ7QUFBOUMsdUdBQUEsY0FBYyxPQUFBO0FBRXZCLFNBQVM7QUFDVCw2RkFBc0g7QUFBN0csb0lBQUEsMEJBQTBCLE9BQTBCO0FBQzdELHlGQUFpSDtBQUF4RyxrSUFBQSx5QkFBeUIsT0FBeUI7QUFXM0Qsa0dBQThIO0FBQXJILDBJQUFBLDZCQUE2QixPQUE2QjtBQU9uRSxTQUFTO0FBQ1QsNkZBQXNIO0FBQTdHLG9JQUFBLDBCQUEwQixPQUEwQjtBQUM3RCx5RkFBaUg7QUFBeEcsa0lBQUEseUJBQXlCLE9BQXlCO0FBVzNELGtHQUE4SDtBQUFySCwwSUFBQSw2QkFBNkIsT0FBNkI7QUFPbkUsZUFBZTtBQUNmLDZHQUEySTtBQUFsSSw4SUFBQSwrQkFBK0IsT0FBK0I7QUFDdkUseUdBQXNJO0FBQTdILDRJQUFBLDhCQUE4QixPQUE4QjtBQVdyRSxrSEFBbUo7QUFBMUksb0pBQUEsa0NBQWtDLE9BQWtDO0FBTzdFLFlBQVk7QUFDWixzR0FBa0k7QUFBekgsMElBQUEsNkJBQTZCLE9BQTZCO0FBTW5FLGtHQUE2SDtBQUFwSCx3SUFBQSw0QkFBNEIsT0FBNEI7QUFPakUsMkdBQTBJO0FBQWpJLGdKQUFBLGdDQUFnQyxPQUFnQztBQVF6RSw0REFBMEMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBDYWxjdWxhdG9yVHlwZSB9IGZyb20gJy4vc2hhcmVkL2RvbWFpbi90eXBlcyc7XG5cbi8vIENhbmFkYVxuZXhwb3J0IHsgQ2FuYWRhSW5jb21lVGF4U2VydmljZUltcGwgYXMgQ2FuYWRhSW5jb21lVGF4U2VydmljZSB9IGZyb20gJy4vaW5jb21lLXRheC9jYW5hZGEvQ2FuYWRhSW5jb21lVGF4U2VydmljZUltcGwnO1xuZXhwb3J0IHsgQ2FuYWRhTW9ydGdhZ2VTZXJ2aWNlSW1wbCBhcyBDYW5hZGFNb3J0Z2FnZVNlcnZpY2UgfSBmcm9tICcuL21vcnRnYWdlL2NhbmFkYS9DYW5hZGFNb3J0Z2FnZVNlcnZpY2VJbXBsJztcbmV4cG9ydCB7XG4gICAgQ29tcHV0ZWRJbmNvbWVUYXhWYWx1ZXMgYXMgQ2FuYWRhQ29tcHV0ZWRJbmNvbWVUYXhWYWx1ZXMsXG4gICAgSW5jb21lVGF4UnVsZXMgYXMgQ2FuYWRhSW5jb21lVGF4UnVsZXMsXG59IGZyb20gJy4vaW5jb21lLXRheC9jYW5hZGEvZG9tYWluL3R5cGVzJztcbmV4cG9ydCB7XG4gICAgTW9ydGdhZ2VSdWxlcyBhcyBDYW5hZGFNb3J0Z2FnZVJ1bGVzLFxuICAgIE1vcnRnYWdlQ2FsY3VsYXRpb25JbnB1dCBhcyBDYW5hZGFNb3J0Z2FnZUNhbGN1bGF0aW9uSW5wdXQsXG4gICAgTW9ydGdhZ2VDYWxjdWxhdGlvblJlc3VsdCBhcyBDYW5hZGFNb3J0Z2FnZUNhbGN1bGF0aW9uUmVzdWx0LFxufSBmcm9tICcuL21vcnRnYWdlL2NhbmFkYS9kb21haW4vdHlwZXMnO1xuXG5leHBvcnQgeyBDYW5hZGFDb3Jwb3JhdGVUYXhTZXJ2aWNlSW1wbCBhcyBDYW5hZGFDb3Jwb3JhdGVUYXhTZXJ2aWNlIH0gZnJvbSAnLi9jb3Jwb3JhdGUvY2FuYWRhL0NhbmFkYUNvcnBvcmF0ZVRheFNlcnZpY2VJbXBsJztcbmV4cG9ydCB7XG4gICAgSW5wdXQgYXMgQ2FuYWRhQ29ycG9yYXRlVGF4SW5wdXQsXG4gICAgUnVsZXMgYXMgQ2FuYWRhQ29ycG9yYXRlVGF4UnVsZXMsXG4gICAgUmVzdWx0IGFzIENhbmFkYUNvcnBvcmF0ZVRheFJlc3VsdCxcbn0gZnJvbSAnLi9jb3Jwb3JhdGUvY2FuYWRhL2RvbWFpbi90eXBlcyc7XG5cbi8vIEZyYW5jZVxuZXhwb3J0IHsgRnJhbmNlSW5jb21lVGF4U2VydmljZUltcGwgYXMgRnJhbmNlSW5jb21lVGF4U2VydmljZSB9IGZyb20gJy4vaW5jb21lLXRheC9mcmFuY2UvRnJhbmNlSW5jb21lVGF4U2VydmljZUltcGwnO1xuZXhwb3J0IHsgRnJhbmNlTW9ydGdhZ2VTZXJ2aWNlSW1wbCBhcyBGcmFuY2VNb3J0Z2FnZVNlcnZpY2UgfSBmcm9tICcuL21vcnRnYWdlL2ZyYW5jZS9GcmFuY2VNb3J0Z2FnZVNlcnZpY2VJbXBsJztcbmV4cG9ydCB7IFxuICAgIENvbXB1dGVkSW5jb21lVGF4VmFsdWVzIGFzIEZyYW5jZUNvbXB1dGVkSW5jb21lVGF4VmFsdWVzLFxuICAgIEluY29tZVRheFJ1bGVzIGFzIEZyYW5jZUluY29tZVRheFJ1bGVzLFxufSBmcm9tICcuL2luY29tZS10YXgvZnJhbmNlL2RvbWFpbi90eXBlcyc7XG5leHBvcnQge1xuICAgIE1vcnRnYWdlUnVsZXMgYXMgRnJhbmNlTW9ydGdhZ2VSdWxlcyxcbiAgICBNb3J0Z2FnZUlucHV0IGFzIEZyYW5jZU1vcnRnYWdlSW5wdXQsXG4gICAgTW9ydGdhZ2VPdXRwdXQgYXMgRnJhbmNlTW9ydGdhZ2VDYWxjdWxhdGlvblJlc3VsdCxcbn0gZnJvbSAnLi9tb3J0Z2FnZS9mcmFuY2UvZG9tYWluL3R5cGVzJztcblxuZXhwb3J0IHsgRnJhbmNlQ29ycG9yYXRlVGF4U2VydmljZUltcGwgYXMgRnJhbmNlQ29ycG9yYXRlVGF4U2VydmljZSB9IGZyb20gJy4vY29ycG9yYXRlL2ZyYW5jZS9GcmFuY2VDb3Jwb3JhdGVUYXhTZXJ2aWNlSW1wbCc7XG5leHBvcnQge1xuICAgIElucHV0IGFzIEZyYW5jZUNvcnBvcmF0ZVRheElucHV0LFxuICAgIFJ1bGVzIGFzIEZyYW5jZUNvcnBvcmF0ZVRheFJ1bGVzLFxuICAgIFJlc3VsdCBhcyBGcmFuY2VDb3Jwb3JhdGVUYXhSZXN1bHQsXG59IGZyb20gJy4vY29ycG9yYXRlL2ZyYW5jZS9kb21haW4vdHlwZXMnO1xuXG4vLyBTb3V0aCBBZnJpY2FcbmV4cG9ydCB7IFNvdXRoQWZyaWNhSW5jb21lVGF4U2VydmljZUltcGwgYXMgU291dGhBZnJpY2FJbmNvbWVUYXhTZXJ2aWNlIH0gZnJvbSAnLi9pbmNvbWUtdGF4L3NvdXRoLWFmcmljYS9Tb3V0aEFmcmljYUluY29tZVRheFNlcnZpY2VJbXBsJztcbmV4cG9ydCB7IFNvdXRoQWZyaWNhTW9ydGdhZ2VTZXJ2aWNlSW1wbCBhcyBTb3V0aEFmcmljYU1vcnRnYWdlU2VydmljZSB9IGZyb20gJy4vbW9ydGdhZ2Uvc291dGgtYWZyaWNhL1NvdXRoQWZyaWNhTW9ydGdhZ2VTZXJ2aWNlSW1wbCc7XG5leHBvcnQge1xuICAgIENvbXB1dGVkSW5jb21lVGF4VmFsdWVzIGFzIFNvdXRoQWZyaWNhQ29tcHV0ZWRJbmNvbWVUYXhWYWx1ZXMsXG4gICAgSW5jb21lVGF4UnVsZXMgYXMgU291dGhBZnJpY2FJbmNvbWVUYXhSdWxlcyxcbn0gZnJvbSAnLi9pbmNvbWUtdGF4L3NvdXRoLWFmcmljYS9kb21haW4vdHlwZXMnO1xuZXhwb3J0IHtcbiAgICBNb3J0Z2FnZVJ1bGVzIGFzIFNvdXRoQWZyaWNhTW9ydGdhZ2VSdWxlcyxcbiAgICBNb3J0Z2FnZUlucHV0IGFzIFNvdXRoQWZyaWNhTW9ydGdhZ2VJbnB1dCxcbiAgICBNb3J0Z2FnZU91dHB1dCBhcyBTb3V0aEFmcmljYU1vcnRnYWdlT3V0cHV0LFxufSBmcm9tICcuL21vcnRnYWdlL3NvdXRoLWFmcmljYS9kb21haW4vdHlwZXMnO1xuXG5leHBvcnQgeyBTb3V0aEFmcmljYUNvcnBvcmF0ZVRheFNlcnZpY2VJbXBsIGFzIFNvdXRoQWZyaWNhQ29ycG9yYXRlVGF4U2VydmljZSB9IGZyb20gJy4vY29ycG9yYXRlL3NvdXRoLWFmcmljYS9Tb3V0aEFmcmljYUNvcnBvcmF0ZVRheFNlcnZpY2VJbXBsJztcbmV4cG9ydCB7XG4gICAgUnVsZXMgYXMgU291dGhBZnJpY2FDb3Jwb3JhdGVUYXhSdWxlcyxcbiAgICBJbnB1dCBhcyBTb3V0aEFmcmljYUNvcnBvcmF0ZVRheElucHV0LFxuICAgIFJlc3VsdCBhcyBTb3V0aEFmcmljYUNvcnBvcmF0ZVRheFJlc3VsdCxcbn0gZnJvbSAnLi9jb3Jwb3JhdGUvc291dGgtYWZyaWNhL2RvbWFpbi90eXBlcyc7XG5cbi8vIEF1c3RyYWxpYVxuZXhwb3J0IHsgQXVzdHJhbGlhSW5jb21lVGF4U2VydmljZUltcGwgYXMgQXVzdHJhbGlhSW5jb21lVGF4U2VydmljZSB9IGZyb20gJy4vaW5jb21lLXRheC9hdXN0cmFsaWEvQXVzdHJhbGlhSW5jb21lVGF4U2VydmljZUltcGwnO1xuZXhwb3J0IHtcbiAgICBDb21wdXRlZEluY29tZVRheFZhbHVlcyBhcyBBdXN0cmFsaWFDb21wdXRlZEluY29tZVRheFZhbHVlcyxcbiAgICBJbmNvbWVUYXhSdWxlcyBhcyBBdXN0cmFsaWFJbmNvbWVUYXhSdWxlcyxcbn0gZnJvbSAnLi9pbmNvbWUtdGF4L2F1c3RyYWxpYS9kb21haW4vdHlwZXMnO1xuXG5leHBvcnQgeyBBdXN0cmFsaWFNb3J0Z2FnZVNlcnZpY2VJbXBsIGFzIEF1c3RyYWxpYU1vcnRnYWdlU2VydmljZSB9IGZyb20gJy4vbW9ydGdhZ2UvYXVzdHJhbGlhL0F1c3RyYWxpYU1vcnRnYWdlU2VydmljZUltcGwnO1xuZXhwb3J0IHtcbiAgICBNb3J0Z2FnZVJ1bGVzIGFzIEF1c3RyYWxpYU1vcnRnYWdlUnVsZXMsXG4gICAgTW9ydGdhZ2VJbnB1dCBhcyBBdXN0cmFsaWFNb3J0Z2FnZUlucHV0LFxuICAgIE1vcnRnYWdlT3V0cHV0IGFzIEF1c3RyYWxpYU1vcnRnYWdlT3V0cHV0LFxufSBmcm9tICcuL21vcnRnYWdlL2F1c3RyYWxpYS9kb21haW4vdHlwZXMnO1xuXG5leHBvcnQgeyBBdXN0cmFsaWFDb3Jwb3JhdGVUYXhTZXJ2aWNlSW1wbCBhcyBBdXN0cmFsaWFDb3Jwb3JhdGVUYXhTZXJ2aWNlIH0gZnJvbSAnLi9jb3Jwb3JhdGUvYXVzdHJhbGlhL0F1c3RyYWxpYUNvcnBvcmF0ZVRheFNlcnZpY2VJbXBsJztcbmV4cG9ydCB7XG4gICAgSW5wdXQgYXMgQXVzdHJhbGlhQ29ycG9yYXRlVGF4SW5wdXQsXG4gICAgUnVsZXMgYXMgQXVzdHJhbGlhQ29ycG9yYXRlVGF4UnVsZXMsXG4gICAgUmVzdWx0IGFzIEF1c3RyYWxpYUNvcnBvcmF0ZVRheFJlc3VsdCxcbn0gZnJvbSAnLi9jb3Jwb3JhdGUvYXVzdHJhbGlhL2RvbWFpbi90eXBlcyc7XG5cbmV4cG9ydCB7IEluY29tZVRheENhbGN1bGF0b3JTY2hlbWEgfSBmcm9tICcuL2luY29tZS10YXgvZG9tYWluL3R5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vaW5jb21lLXRheC9kb21haW4vdHlwZXMnOyJdfQ==
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXVzdHJhbGlhTW9ydGdhZ2VTZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21vcnRnYWdlL2F1c3RyYWxpYS9BdXN0cmFsaWFNb3J0Z2FnZVNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1vcnRnYWdlSW5wdXQsIE1vcnRnYWdlT3V0cHV0LCBNb3J0Z2FnZVJ1bGVzIH0gZnJvbSBcIi4vZG9tYWluL3R5cGVzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXVzdHJhbGlhTW9ydGdhZ2VTZXJ2aWNlIHtcbiAgICBjYWxjdWxhdGUoaW5wdXQ6IE1vcnRnYWdlSW5wdXQsIHJ1bGVzOiBNb3J0Z2FnZVJ1bGVzKTogTW9ydGdhZ2VPdXRwdXQ7XG59XG4iXX0=
|