New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@equisoft/tax-ca

Package Overview
Dependencies
Maintainers
12
Versions
367
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@equisoft/tax-ca - npm Package Compare versions

Comparing version 2020.4.4 to 2020.5.0

93

lib/index.d.ts

@@ -0,44 +1,5 @@

import * as LIF from './investments/lif';
declare const _default: {
INVESTMENTS: {
LIF: {
MAX_WITHDRAWAL_PCT: {
54: number;
55: number;
56: number;
57: number;
58: number;
59: number;
60: number;
61: number;
62: number;
63: number;
64: number;
65: number;
66: number;
67: number;
68: number;
69: number;
70: number;
71: number;
72: number;
73: number;
74: number;
75: number;
76: number;
77: number;
78: number;
79: number;
80: number;
81: number;
82: number;
83: number;
84: number;
85: number;
86: number;
87: number;
88: number;
89: number;
90: number;
};
};
LIF: typeof LIF;
RRIF: {

@@ -315,30 +276,30 @@ MIN_WITHDRAWAL_PCT: {

FEDERAL_CODE: "CA";
calculateEffectiveTaxRate(income: number, province: import("./taxes/income-tax").ProvinceCode): number;
getFederalMarginalRate(provincialCode: import("./taxes/income-tax").ProvinceCode, grossIncome: number, inflationRate?: number, yearsToInflate?: number): number;
calculateEffectiveTaxRate(income: number, province: import("./misc/code-types").ProvinceCode): number;
getFederalMarginalRate(provincialCode: import("./misc/code-types").ProvinceCode, grossIncome: number, inflationRate?: number, yearsToInflate?: number): number;
getFederalTaxAmount(grossIncome: number, inflationRate?: number, yearsToInflate?: number): number;
getFederalBaseCredit(inflationRate: number, yearsToInflate: number): number;
getProvincialAbatement(province: import("./taxes/income-tax").ProvinceCode, federalTaxAmount: number): number;
getProvincialTaxAmount(provincialCode: import("./taxes/income-tax").ProvinceCode, grossIncome: number, inflationRate?: number, yearsToInflate?: number): number;
getProvincialSurtaxAmount(province: import("./taxes/income-tax").ProvinceCode, baseTaxAmount: number, inflationRate?: number, yearsToInflate?: number): number;
getProvincialMarginalRate(provincialCode: import("./taxes/income-tax").ProvinceCode, grossIncome: number, inflationRate?: number, yearsToInflate?: number): number;
getProvincialBaseCredit(province: import("./taxes/income-tax").ProvinceCode, inflationRate: number, yearsToInflate: number): number;
getTotalMarginalRate(provincialCode: import("./taxes/income-tax").ProvinceCode, grossIncome: number, inflationRate?: number, yearsToInflate?: number): number;
getMaxProvincialMarginalRate(provincialCode: import("./taxes/income-tax").ProvinceCode): number;
getMaxFederalMarginalRate(provincialCode: import("./taxes/income-tax").ProvinceCode): number;
getTotalMaxMarginalRate(provincialCode: import("./taxes/income-tax").ProvinceCode): string;
getTotalTaxAmount(provincialCode: import("./taxes/income-tax").ProvinceCode, grossIncome: number, inflationRate?: number, yearsToInflate?: number): number;
getProvincialAbatement(province: import("./misc/code-types").ProvinceCode, federalTaxAmount: number): number;
getProvincialTaxAmount(provincialCode: import("./misc/code-types").ProvinceCode, grossIncome: number, inflationRate?: number, yearsToInflate?: number): number;
getProvincialSurtaxAmount(province: import("./misc/code-types").ProvinceCode, baseTaxAmount: number, inflationRate?: number, yearsToInflate?: number): number;
getProvincialMarginalRate(provincialCode: import("./misc/code-types").ProvinceCode, grossIncome: number, inflationRate?: number, yearsToInflate?: number): number;
getProvincialBaseCredit(province: import("./misc/code-types").ProvinceCode, inflationRate: number, yearsToInflate: number): number;
getTotalMarginalRate(provincialCode: import("./misc/code-types").ProvinceCode, grossIncome: number, inflationRate?: number, yearsToInflate?: number): number;
getMaxProvincialMarginalRate(provincialCode: import("./misc/code-types").ProvinceCode): number;
getMaxFederalMarginalRate(provincialCode: import("./misc/code-types").ProvinceCode): number;
getTotalMaxMarginalRate(provincialCode: import("./misc/code-types").ProvinceCode): string;
getTotalTaxAmount(provincialCode: import("./misc/code-types").ProvinceCode, grossIncome: number, inflationRate?: number, yearsToInflate?: number): number;
PROVINCIAL_CODES: {
ALBERTA: import("./taxes/income-tax").ProvinceCode;
BRITISH_COLUMBIA: import("./taxes/income-tax").ProvinceCode;
MANITOBA: import("./taxes/income-tax").ProvinceCode;
NEW_BRUNSWICK: import("./taxes/income-tax").ProvinceCode;
NEWFOUNDLAND: import("./taxes/income-tax").ProvinceCode;
NOVA_SCOTIA: import("./taxes/income-tax").ProvinceCode;
PRINCE_EDWARD_ISLAND: import("./taxes/income-tax").ProvinceCode;
ONTARIO: import("./taxes/income-tax").ProvinceCode;
QUEBEC: import("./taxes/income-tax").ProvinceCode;
SASKATCHEWAN: import("./taxes/income-tax").ProvinceCode;
NORTHWEST_TERRITORIES: import("./taxes/income-tax").ProvinceCode;
NUNAVUT: import("./taxes/income-tax").ProvinceCode;
YUKON: import("./taxes/income-tax").ProvinceCode;
ALBERTA: import("./misc/code-types").ProvinceCode;
BRITISH_COLUMBIA: import("./misc/code-types").ProvinceCode;
MANITOBA: import("./misc/code-types").ProvinceCode;
NEW_BRUNSWICK: import("./misc/code-types").ProvinceCode;
NEWFOUNDLAND: import("./misc/code-types").ProvinceCode;
NOVA_SCOTIA: import("./misc/code-types").ProvinceCode;
PRINCE_EDWARD_ISLAND: import("./misc/code-types").ProvinceCode;
ONTARIO: import("./misc/code-types").ProvinceCode;
QUEBEC: import("./misc/code-types").ProvinceCode;
SASKATCHEWAN: import("./misc/code-types").ProvinceCode;
NORTHWEST_TERRITORIES: import("./misc/code-types").ProvinceCode;
NUNAVUT: import("./misc/code-types").ProvinceCode;
YUKON: import("./misc/code-types").ProvinceCode;
};

@@ -345,0 +306,0 @@ TAX_BRACKETS: {

@@ -1,1 +0,1 @@

!function(T,E){if("object"==typeof exports&&"object"==typeof module)module.exports=E();else if("function"==typeof define&&define.amd)define([],E);else{var A=E();for(var R in A)("object"==typeof exports?exports:T)[R]=A[R]}}(this,(function(){return function(T){var E={};function A(R){if(E[R])return E[R].exports;var t=E[R]={i:R,l:!1,exports:{}};return T[R].call(t.exports,t,t.exports,A),t.l=!0,t.exports}return A.m=T,A.c=E,A.d=function(T,E,R){A.o(T,E)||Object.defineProperty(T,E,{enumerable:!0,get:R})},A.r=function(T){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(T,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(T,"__esModule",{value:!0})},A.t=function(T,E){if(1&E&&(T=A(T)),8&E)return T;if(4&E&&"object"==typeof T&&T&&T.__esModule)return T;var R=Object.create(null);if(A.r(R),Object.defineProperty(R,"default",{enumerable:!0,value:T}),2&E&&"string"!=typeof T)for(var t in T)A.d(R,t,function(E){return T[E]}.bind(null,t));return R},A.n=function(T){var E=T&&T.__esModule?function(){return T.default}:function(){return T};return A.d(E,"a",E),E},A.o=function(T,E){return Object.prototype.hasOwnProperty.call(T,E)},A.p="",A(A.s=2)}([function(T,E,A){"use strict";Object.defineProperty(E,"__esModule",{value:!0}),E.getMonthsDiff=function(T,E){return E.getUTCMonth()-T.getUTCMonth()+12*(E.getUTCFullYear()-T.getUTCFullYear())-(E.getUTCDate()<T.getUTCDate()?1:0)},E.addYearsToDate=function(T,E){const A=new Date(T.valueOf());return A.setUTCFullYear(T.getUTCFullYear()+E),A},E.now=function(){return new Date}},function(T,E,A){"use strict";Object.defineProperty(E,"__esModule",{value:!0}),E.clamp=function(T,E,A){return T<=E?E:T>=A?A:T},E.roundToPrecision=function(T,E=0){return isNaN(T)?0:Math.round(T*Math.pow(10,E))/Math.pow(10,E)}},function(T,E,A){"use strict";var R=this&&this.__importDefault||function(T){return T&&T.__esModule?T:{default:T}};const t=R(A(3)),e=R(A(4)),O=R(A(5)),M=R(A(6)),_=R(A(7)),r=R(A(8)),n=R(A(9)),N=R(A(10)),i=R(A(11)),a=R(A(12)),o=R(A(13)),S=R(A(14)),s=A(15),F=R(A(17));T.exports={INVESTMENTS:{LIF:t.default,RRIF:e.default,TFSA:M.default,RRSP:O.default},PENSION:{CPP:N.default,OAS:i.default,QPP:a.default,SPP:o.default},TAXES:{EI:S.default,INCOME_TAX:s.INCOME_TAX,QPIP:F.default},MISC:{CPI:_.default,IQPF:r.default,LIFE_EXPECTANCY:n.default}}},function(T,E,A){"use strict";T.exports={MAX_WITHDRAWAL_PCT:{54:.0424,55:.0428,56:.0432,57:.0437,58:.0443,59:.0448,60:.0455,61:.0462,62:.0469,63:.0478,64:.0487,65:.0497,66:.0508,67:.0521,68:.0535,69:.055,70:.0567,71:.0587,72:.061,73:.0635,74:.0665,75:.07,76:.0741,77:.0788,78:.0843,79:.0906,80:.0981,81:.1071,82:.1181,83:.1319,84:.1496,85:.1732,86:.2062,87:.2558,88:.3385,89:.5038,90:1}}},function(T,E,A){"use strict";T.exports={MIN_WITHDRAWAL_PCT:{50:.025,51:.0256,52:.0263,53:.027,54:.0278,55:.0286,56:.0294,57:.0303,58:.0313,59:.0323,60:.0333,61:.0345,62:.0357,63:.037,64:.0385,65:.04,66:.0417,67:.0435,68:.0455,69:.0476,70:.05,71:.0528,72:.054,73:.0553,74:.0567,75:.0582,76:.0598,77:.0617,78:.0636,79:.0658,80:.0682,81:.0708,82:.0738,83:.0771,84:.0808,85:.0851,86:.0899,87:.0955,88:.1021,89:.1099,90:.1192,91:.1306,92:.1449,93:.1634,94:.1879,95:.2}}},function(T,E,A){"use strict";T.exports={CONVERSION_AGE:{MIN:55,MAX:71},MAX_CONTRIBUTION:27230}},function(T,E,A){"use strict";T.exports={MAX_CONTRIBUTION:6e3,ROUNDING_FACTOR:500}},function(T,E,A){"use strict";T.exports={2009:{JAN:113,FEB:113.8,MAR:114,APR:113.9,MAY:114.7,JUN:115.1,JUL:114.7,AUG:114.7,SEP:114.7,OCT:114.6,NOV:115.2,DEC:114.8},2010:{JAN:115.1,FEB:115.6,MAR:115.6,APR:116,MAY:116.3,JUN:116.2,JUL:116.8,AUG:116.7,SEP:116.9,OCT:117.4,NOV:117.5,DEC:117.5},2011:{JAN:117.8,FEB:118.1,MAR:119.4,APR:119.8,MAY:120.6,JUN:119.8,JUL:120,AUG:120.3,SEP:120.6,OCT:120.8,NOV:120.9,DEC:120.2},2012:{JAN:120.7,FEB:121.2,MAR:121.7,APR:122.2,MAY:122.1,JUN:121.6,JUL:121.5,AUG:121.8,SEP:122,OCT:122.2,NOV:121.9,DEC:121.2},2013:{JAN:121.3,FEB:122.7,MAR:122.9,APR:122.7,MAY:123,JUN:123,JUL:123.1,AUG:123.1,SEP:123.3,OCT:123,NOV:123,DEC:122.7},2014:{JAN:123.1,FEB:124.1,MAR:124.8,APR:125.2,MAY:125.8,JUN:125.9,JUL:125.7,AUG:125.7,SEP:125.8,OCT:125.9,NOV:125.4,DEC:124.5},2015:{JAN:124.3,FEB:125.4,MAR:126.3,APR:126.2,MAY:126.9,JUN:127.2,JUL:127.3,AUG:127.3,SEP:127.1,OCT:127.2,NOV:127.1,DEC:126.5},2016:{JAN:126.8,FEB:127.1,MAR:127.9,APR:128.3,MAY:128.8,JUN:129.1,JUL:128.9,AUG:128.7,SEP:128.8,OCT:129.1,NOV:128.6,DEC:128.4},2017:{JAN:129.5,FEB:129.7,MAR:129.9,APR:130.4,MAY:130.5,JUN:130.4,JUL:130.4,AUG:130.5,SEP:130.8,OCT:130.9,NOV:131.3,DEC:130.8},2018:{JAN:131.7,FEB:132.5,MAR:132.9,APR:133.3,MAY:133.4,JUN:133.6,JUL:134.3,AUG:134.2,SEP:134.3,OCT:134.1,NOV:133.5,DEC:133.4},2019:{JAN:133.6,FEB:134.5,MAR:135.4,APR:136,MAY:136.6,JUN:136.3,JUL:137,AUG:136.8,SEP:136.2,OCT:136.6,NOV:136.4,DEC:136.4}}},function(T,E,A){"use strict";T.exports={INFLATION:.021,RETURN_RATES:{SHORT_TERM:.03,FIXED_INCOME:.039,CANADIAN_EQUITIES:.061,CONSERVATIVE_PORTFOLIO:.032,BALANCED_PORTFOLIO:.037,DYNAMIC_PORTFOLIO:.045},BORROWING_RATE:.05}},function(T,E,A){"use strict";T.exports={MALE:{0:95,5:95,10:95,15:95,20:95,25:95,30:95,35:94,40:94,45:94,50:94,55:94,60:94,65:94,70:94,75:94,80:94,85:95,90:96,95:99,100:102},FEMALE:{0:97,5:97,10:97,15:97,20:97,25:97,30:97,35:97,40:97,45:96,50:96,55:96,60:96,65:96,70:96,75:96,80:96,85:97,90:98,95:100,100:103}}},function(T,E,A){"use strict";const R=A(0),t=A(1);T.exports={CONTRIBUTIONS:{PENSIONABLE_EARNINGS:{MAX:58700,MIN:3500,AVG_MAX:56440,SUP_MAX:64300,SUP_FACTORS:[{FROM:2019,TO:2023,FACTOR:1},{FROM:2024,TO:2024,FACTOR:1.07},{FROM:2025,TO:Number.MAX_SAFE_INTEGER,FACTOR:1.14}]},RATES:{BASE:.054,ENHANCEMENT_STEP_1:[{FROM:2019,TO:2019,RATE:.0015},{FROM:2020,TO:2020,RATE:.003},{FROM:2021,TO:2021,RATE:.005},{FROM:2022,TO:2022,RATE:.0075},{FROM:2023,TO:Number.MAX_SAFE_INTEGER,RATE:.01}],ENHANCEMENT_STEP_2:.04}},DEATH_BENEFIT:{RATE:.5},DEFAULT_REFERENCE_AGE:65,FLAT_BENEFIT:{ORPHAN:3060.36,DISABILITY:16651.92,UNDER_45:7519.56,UNDER_45_WITH_CHILD:7659.36,UNDER_45_DISABLED:7659.36,FROM_45_TO_64:7659.36,OVER_64_WITHOUT_PENSION:8466},getRequestDateFactor(T,E){const{BONUS:A,PENALTY:e}=this.MONTHLY_DELAY,O=R.addYearsToDate(T,this.MIN_REQUEST_AGE),M=R.addYearsToDate(T,this.MAX_REQUEST_AGE),_=R.addYearsToDate(T,this.DEFAULT_REFERENCE_AGE),r=R.getMonthsDiff(T,R.now()),n=R.getMonthsDiff(T,O),N=R.getMonthsDiff(T,M),i=R.getMonthsDiff(T,_),a=R.getMonthsDiff(T,E),o=r-r%12;if(a<n)return 0;if(N<r)return 1;if(r>i&&a<o)return 1;let S=t.clamp(a,n,N);return 1+(S-=Math.max(o,i))*(S>=0?A:e)},getAverageIndexationRate(){const T=(this.INDEXATION_RATES_REFERENCES.reduce((T,E)=>T+E[1],0)/this.INDEXATION_RATES_REFERENCES.length).toString();return Number.parseFloat(T).toPrecision(3)},getMPEA(T){return(this.MAX_INCOME[T-4]+this.MAX_INCOME[T-3]+this.MAX_INCOME[T-2]+this.MAX_INCOME[T-1]+this.MAX_INCOME[T])/5},getPostRetirementBenefit:(T,E,A,R)=>T/E*.00625*A*R/12,INDEXATION_RATES_REFERENCES:[[2007,.02],[2008,.022],[2009,.023],[2010,.003],[2011,.018],[2012,.029],[2013,.015],[2014,.009],[2015,.02],[2016,.011],[2017,.014],[2018,.016],[2019,.023]],MAX_PENSION:{RETIREMENT:14109.96,COMBINED_RETIREMENT_SURVIVOR:14109.96,SURVIVOR_OVER_46:8466,SURVIVOR_UNDER_65:7659.36,DEATH_BENEFIT:2500},MAX_INCOME:{1966:5e3,1967:5e3,1968:5100,1969:5200,1970:5300,1971:5400,1972:5500,1973:5900,1974:6600,1975:7400,1976:8300,1977:9300,1978:10400,1979:11700,1980:13100,1981:14700,1982:16500,1983:18500,1984:20800,1985:23400,1986:25800,1987:25900,1988:26500,1989:27700,1990:28900,1991:30500,1992:32200,1993:33400,1994:34400,1995:34900,1996:35400,1997:35800,1998:36900,1999:37400,2e3:37600,2001:38300,2002:39100,2003:39900,2004:40500,2005:41100,2006:42100,2007:43700,2008:44900,2009:46300,2010:47200,2011:48300,2012:50100,2013:51100,2014:52500,2015:53600,2016:54900,2017:55300,2018:55900,2019:57400,2020:58700},MAX_REQUEST_AGE:70,MIN_REQUEST_AGE:60,MONTHLY_DELAY:{BONUS:.007,PENALTY:.006},REPLACEMENT_FACTOR:.25,SURVIVOR_RATES:{OVER_64:.6,UNDER_65:.375},YEARS_TO_FULL_PENSION:40}},function(T,E,A){"use strict";const R=A(0),t=A(1);T.exports={getRequestDateFactor(T,E){const A=R.addYearsToDate(T,this.MIN_AGE),e=R.addYearsToDate(T,this.MAX_AGE),O=R.getMonthsDiff(T,R.now()),M=R.getMonthsDiff(T,A),_=R.getMonthsDiff(T,e),r=R.getMonthsDiff(T,E),n=O-O%12;if(r<M)return 0;if(_<O||r<n)return 1;let N=t.clamp(r,M,_);return 1+(N-=Math.max(n,M))*this.MONTHLY_DELAY_BONUS},MAX_AGE:70,MIN_AGE:65,MONTHLY_PAYMENT_MAX:613.53,MONTHLY_DELAY_BONUS:.006,REPAYMENT:{MAX:126058,MIN:77580,RATIO:.15}}},function(T,E,A){"use strict";const R=A(0),t=A(1);T.exports={CONTRIBUTIONS:{PENSIONABLE_EARNINGS:{MAX:58700,MIN:3500,AVG_MAX:56440,SUP_MAX:64300,SUP_FACTORS:[{FROM:2019,TO:2023,FACTOR:1},{FROM:2024,TO:2024,FACTOR:1.07},{FROM:2025,TO:Number.MAX_SAFE_INTEGER,FACTOR:1.14}]},RATES:{BASE:.054,ENHANCEMENT_STEP_1:[{FROM:2019,TO:2019,RATE:.0015},{FROM:2020,TO:2020,RATE:.003},{FROM:2021,TO:2021,RATE:.005},{FROM:2022,TO:2022,RATE:.0075},{FROM:2023,TO:Number.MAX_SAFE_INTEGER,RATE:.01}],ENHANCEMENT_STEP_2:.04}},DEATH_BENEFIT:{RATE:.5},DEFAULT_REFERENCE_AGE:65,FLAT_BENEFIT:{ORPHAN:3060.36,DISABILITY:16661.52,UNDER_45:6857.76,UNDER_45_WITH_CHILD:10938.6,UNDER_45_DISABLED:11372.4,FROM_45_TO_64:11372.4,OVER_64_WITHOUT_PENSION:8479.8},getRequestDateFactor(T,E){const{BONUS:A,PENALTY:e}=this.MONTHLY_DELAY,O=R.addYearsToDate(T,this.MIN_REQUEST_AGE),M=R.addYearsToDate(T,this.MAX_REQUEST_AGE),_=R.addYearsToDate(T,this.DEFAULT_REFERENCE_AGE),r=R.getMonthsDiff(T,R.now()),n=R.getMonthsDiff(T,O),N=R.getMonthsDiff(T,M),i=R.getMonthsDiff(T,_),a=R.getMonthsDiff(T,E),o=r-r%12;if(a<n)return 0;if(N<r)return 1;if(r>i&&a<o)return 1;let S=t.clamp(a,n,N);return 1+(S-=Math.max(o,i))*(S>=0?A:e)},getAverageIndexationRate(){const T=this.INDEXATION_RATE_REFERENCES.reduce((T,E)=>T+E[1],0);return t.roundToPrecision(T/this.INDEXATION_RATE_REFERENCES.length,2)},INDEXATION_RATE_REFERENCES:[[2007,.021],[2008,.02],[2009,.025],[2010,.004],[2011,.017],[2012,.028],[2013,.018],[2014,.009],[2015,.018],[2016,.012],[2017,.02],[2018,.015],[2019,.023]],MAX_INCOME:{1966:5e3,1967:5e3,1968:5100,1969:5200,1970:5300,1971:5400,1972:5500,1973:5900,1974:6600,1975:7400,1976:8300,1977:9300,1978:10400,1979:11700,1980:13100,1981:14700,1982:16500,1983:18500,1984:20800,1985:23400,1986:25800,1987:25900,1988:26500,1989:27700,1990:28900,1991:30500,1992:32200,1993:33400,1994:34400,1995:34900,1996:35400,1997:35800,1998:36900,1999:37400,2e3:37600,2001:38300,2002:39100,2003:39900,2004:40500,2005:41100,2006:42100,2007:43700,2008:44900,2009:46300,2010:47200,2011:48300,2012:50100,2013:51100,2014:52500,2015:53600,2016:54900,2017:55300,2018:55900,2019:57400,2020:58700},MAX_PENSION:{RETIREMENT:14109.96,COMBINED_RETIREMENT_SURVIVOR:20196.72,SURVIVOR_OVER_64:8479.8,SURVIVOR_FROM_45_TO_64:11372.4,SURVIVOR_UNDER_45:6857.76,DEATH_BENEFIT:2500},MAX_REQUEST_AGE:70,MIN_REQUEST_AGE:60,MONTHLY_DELAY:{BONUS:.007,PENALTY:.006},REPLACEMENT_FACTOR:.25,SURVIVOR_RATES:{OVER_64:.6,UNDER_65:.375},YEARS_TO_FULL_PENSION:40}},function(T,E,A){"use strict";T.exports={MAX_BRIDGE_BENEFIT_AGE:65,MIN_AGE:55}},function(T,E,A){"use strict";T.exports={MAX_INSURABLE_EARNINGS:54200,PREMIUM_RATES:{CA:.0158,QC:.012}}},function(T,E,A){"use strict";Object.defineProperty(E,"__esModule",{value:!0});const R=A(16);E.INCOME_TAX={FEDERAL_CODE:"CA",calculateEffectiveTaxRate(T,E){if(T<=0)return 0;const A=this.getProvincialTaxAmount(E,T,0,0),R=this.getProvincialBaseCredit(E,0,0),t=this.getFederalTaxAmount(T,0,0),e=this.getFederalBaseCredit(0,0),O=this.getProvincialAbatement(E,t-e);return(Math.max(t-e-O,0)+Math.max(A-R,0))/T},getFederalMarginalRate(T,E,A=0,R=0){const t=this.getFederalTaxAmount(E,A,R),e=this.getFederalBaseCredit(A,R),O=this.getProvincialAbatement(T,t-e);return E<=0?0:Math.max(t-e-O,0)/E},getFederalTaxAmount(T,E=0,A=0){let R=0;return this.TAX_BRACKETS.CA.RATES.forEach(t=>{const e=t.FROM*Math.pow(1+E,A);if(e<T){const O=t.TO*Math.pow(1+E,A);R+=(Math.min(T,O)-e)*t.RATE}}),R},getFederalBaseCredit(T,E){return this.TAX_BRACKETS.CA.BASE_TAX_CREDIT*this.TAX_BRACKETS.CA.TAX_CREDIT_RATE*Math.pow(1+T,E)},getProvincialAbatement(T,E){return this.TAX_BRACKETS[T].ABATEMENT*E},getProvincialTaxAmount(T,E,A=0,R=0){let t=0;return this.TAX_BRACKETS[T].RATES.forEach(T=>{const e=T.FROM*Math.pow(1+A,R);if(e<E){const O=T.TO*Math.pow(1+A,R);t+=(Math.min(E,O)-e)*T.RATE}}),t},getProvincialSurtaxAmount(T,E,A=0,R=0){let t=0;return this.TAX_BRACKETS[T].SURTAX_RATES.forEach(T=>{const e=T.FROM*Math.pow(1+A,R);if(e<E){const O=T.TO*Math.pow(1+A,R);t+=(Math.min(E,O)-e)*T.RATE}}),t},getProvincialMarginalRate(T,E,A=0,R=0){let t=0;const e=this.getProvincialTaxAmount(T,E,A,R);this.TAX_BRACKETS[T].RATES.forEach(T=>{T.FROM*Math.pow(1+A,R)<E&&(t=T.RATE)});let O=0;return this.TAX_BRACKETS[T].SURTAX_RATES.forEach(T=>{T.FROM*Math.pow(1+A,R)<e&&(O=T.RATE)}),t*(1+O)},getProvincialBaseCredit(T,E,A){return this.TAX_BRACKETS[T].BASE_TAX_CREDIT*this.TAX_BRACKETS[T].RATES[0].RATE*Math.pow(1+E,A)},getTotalMarginalRate(T,E,A=0,R=0){return this.getProvincialMarginalRate(T,E,A,R)+this.getFederalMarginalRate(T,E,A,R)},getMaxProvincialMarginalRate(T){return R.maxBy(this.TAX_BRACKETS[T].RATES,T=>T.TO).RATE*(1+R.maxBy(this.TAX_BRACKETS[T].SURTAX_RATES,T=>T.TO).RATE)},getMaxFederalMarginalRate(T){return R.maxBy(this.TAX_BRACKETS[this.FEDERAL_CODE].RATES,T=>T.TO).RATE*(1-this.TAX_BRACKETS[T].ABATEMENT)},getTotalMaxMarginalRate(T){return(this.getMaxProvincialMarginalRate(T)+this.getMaxFederalMarginalRate(T)).toPrecision(4)},getTotalTaxAmount(T,E,A=0,R=0){const t=this.getProvincialTaxAmount(T,E,A,R);return t+this.getProvincialSurtaxAmount(T,t,A,R)+this.getFederalTaxAmount(E,A,R)},PROVINCIAL_CODES:{ALBERTA:"AB",BRITISH_COLUMBIA:"BC",MANITOBA:"MB",NEW_BRUNSWICK:"NB",NEWFOUNDLAND:"NL",NOVA_SCOTIA:"NS",PRINCE_EDWARD_ISLAND:"PE",ONTARIO:"ON",QUEBEC:"QC",SASKATCHEWAN:"SK",NORTHWEST_TERRITORIES:"NT",NUNAVUT:"NU",YUKON:"YT"},TAX_BRACKETS:{CA:{ABATEMENT:0,TAX_CREDIT_RATE:.15,BASE_TAX_CREDIT:12298,RATES:[{FROM:0,TO:48535,RATE:.15},{FROM:48535,TO:97069,RATE:.205},{FROM:97069,TO:150473,RATE:.26},{FROM:150473,TO:214368,RATE:.29},{FROM:214368,TO:999999999,RATE:.33}],SURTAX_RATES:[{FROM:0,TO:999999999,RATE:0}]},AB:{ABATEMENT:0,TAX_CREDIT_RATE:.1,BASE_TAX_CREDIT:19369,RATES:[{FROM:0,TO:131220,RATE:.1},{FROM:131220,TO:157464,RATE:.12},{FROM:157464,TO:209952,RATE:.13},{FROM:209952,TO:314928,RATE:.14},{FROM:314928,TO:999999999,RATE:.15}],SURTAX_RATES:[{FROM:0,TO:999999999,RATE:0}]},BC:{ABATEMENT:0,TAX_CREDIT_RATE:.0506,BASE_TAX_CREDIT:10949,RATES:[{FROM:0,TO:41725,RATE:.0506},{FROM:41725,TO:83451,RATE:.077},{FROM:83451,TO:95812,RATE:.105},{FROM:95812,TO:116344,RATE:.1229},{FROM:116344,TO:157748,RATE:.147},{FROM:157748,TO:999999999,RATE:.168}],SURTAX_RATES:[{FROM:0,TO:999999999,RATE:0}]},MB:{ABATEMENT:0,TAX_CREDIT_RATE:.108,BASE_TAX_CREDIT:9838,RATES:[{FROM:0,TO:33389,RATE:.108},{FROM:33389,TO:72164,RATE:.1275},{FROM:72164,TO:999999999,RATE:.174}],SURTAX_RATES:[{FROM:0,TO:999999999,RATE:0}]},NB:{ABATEMENT:0,TAX_CREDIT_RATE:.0968,BASE_TAX_CREDIT:10459,RATES:[{FROM:0,TO:43401,RATE:.0968},{FROM:43401,TO:86803,RATE:.1482},{FROM:86803,TO:141122,RATE:.1652},{FROM:141122,TO:160776,RATE:.1784},{FROM:160776,TO:999999999,RATE:.203}],SURTAX_RATES:[{FROM:0,TO:999999999,RATE:0}]},NL:{ABATEMENT:0,TAX_CREDIT_RATE:.087,BASE_TAX_CREDIT:9498,RATES:[{FROM:0,TO:37929,RATE:.087},{FROM:37929,TO:75858,RATE:.145},{FROM:75858,TO:135432,RATE:.158},{FROM:135432,TO:189604,RATE:.173},{FROM:189604,TO:999999999,RATE:.183}],SURTAX_RATES:[{FROM:0,TO:999999999,RATE:0}]},NS:{ABATEMENT:0,TAX_CREDIT_RATE:.0879,BASE_TAX_CREDIT:8481,RATES:[{FROM:0,TO:29590,RATE:.0879},{FROM:29590,TO:59180,RATE:.1495},{FROM:59180,TO:93e3,RATE:.1667},{FROM:93e3,TO:15e4,RATE:.175},{FROM:15e4,TO:999999999,RATE:.21}],SURTAX_RATES:[{FROM:0,TO:999999999,RATE:0}]},PE:{ABATEMENT:0,TAX_CREDIT_RATE:.098,BASE_TAX_CREDIT:1e4,RATES:[{FROM:0,TO:31984,RATE:.098},{FROM:31984,TO:63969,RATE:.138},{FROM:63969,TO:999999999,RATE:.167}],SURTAX_RATES:[{FROM:0,TO:12500,RATE:0},{FROM:12500,TO:999999999,RATE:.1}]},ON:{ABATEMENT:0,TAX_CREDIT_RATE:.0505,BASE_TAX_CREDIT:10783,RATES:[{FROM:0,TO:44740,RATE:.0505},{FROM:44740,TO:89482,RATE:.0915},{FROM:89482,TO:15e4,RATE:.1116},{FROM:15e4,TO:22e4,RATE:.1216},{FROM:22e4,TO:999999999,RATE:.1316}],SURTAX_RATES:[{FROM:0,TO:4830,RATE:0},{FROM:4830,TO:6182,RATE:.2},{FROM:6182,TO:999999999,RATE:.56}]},QC:{ABATEMENT:.165,TAX_CREDIT_RATE:.15,BASE_TAX_CREDIT:15532,RATES:[{FROM:0,TO:44545,RATE:.15},{FROM:44545,TO:89080,RATE:.2},{FROM:89080,TO:108390,RATE:.24},{FROM:108390,TO:999999999,RATE:.2575}],SURTAX_RATES:[{FROM:0,TO:999999999,RATE:0}]},SK:{ABATEMENT:0,TAX_CREDIT_RATE:.105,BASE_TAX_CREDIT:16065,RATES:[{FROM:0,TO:45225,RATE:.105},{FROM:45225,TO:129214,RATE:.125},{FROM:129214,TO:999999999,RATE:.145}],SURTAX_RATES:[{FROM:0,TO:999999999,RATE:0}]},NT:{ABATEMENT:0,TAX_CREDIT_RATE:.059,BASE_TAX_CREDIT:15093,RATES:[{FROM:0,TO:43957,RATE:.059},{FROM:43957,TO:87916,RATE:.086},{FROM:87916,TO:142932,RATE:.122},{FROM:142932,TO:999999999,RATE:.1405}],SURTAX_RATES:[{FROM:0,TO:999999999,RATE:0}]},NU:{ABATEMENT:0,TAX_CREDIT_RATE:.04,BASE_TAX_CREDIT:16304,RATES:[{FROM:0,TO:46277,RATE:.04},{FROM:46277,TO:92555,RATE:.07},{FROM:92555,TO:150473,RATE:.09},{FROM:150473,TO:999999999,RATE:.115}],SURTAX_RATES:[{FROM:0,TO:999999999,RATE:0}]},YT:{ABATEMENT:0,TAX_CREDIT_RATE:.064,BASE_TAX_CREDIT:12298,RATES:[{FROM:0,TO:48535,RATE:.064},{FROM:48535,TO:97069,RATE:.09},{FROM:97069,TO:150473,RATE:.109},{FROM:150473,TO:5e5,RATE:.128},{FROM:5e5,TO:999999999,RATE:.15}],SURTAX_RATES:[{FROM:0,TO:999999999,RATE:0}]}}}},function(T,E,A){"use strict";Object.defineProperty(E,"__esModule",{value:!0}),E.maxBy=function(T,E){const A=Math.max(...T.map(E));return T.find(T=>E(T)===A)}},function(T,E,A){"use strict";T.exports={MAX_INSURABLE_EARNINGS:78500,PREMIUM_RATES:{SELF_EMPLOYED:.00878,SALARIED:.00494}}}])}));
!function(T,E){if("object"==typeof exports&&"object"==typeof module)module.exports=E();else if("function"==typeof define&&define.amd)define([],E);else{var A=E();for(var R in A)("object"==typeof exports?exports:T)[R]=A[R]}}(this,(function(){return function(T){var E={};function A(R){if(E[R])return E[R].exports;var t=E[R]={i:R,l:!1,exports:{}};return T[R].call(t.exports,t,t.exports,A),t.l=!0,t.exports}return A.m=T,A.c=E,A.d=function(T,E,R){A.o(T,E)||Object.defineProperty(T,E,{enumerable:!0,get:R})},A.r=function(T){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(T,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(T,"__esModule",{value:!0})},A.t=function(T,E){if(1&E&&(T=A(T)),8&E)return T;if(4&E&&"object"==typeof T&&T&&T.__esModule)return T;var R=Object.create(null);if(A.r(R),Object.defineProperty(R,"default",{enumerable:!0,value:T}),2&E&&"string"!=typeof T)for(var t in T)A.d(R,t,function(E){return T[E]}.bind(null,t));return R},A.n=function(T){var E=T&&T.__esModule?function(){return T.default}:function(){return T};return A.d(E,"a",E),E},A.o=function(T,E){return Object.prototype.hasOwnProperty.call(T,E)},A.p="",A(A.s=2)}([function(T,E,A){"use strict";Object.defineProperty(E,"__esModule",{value:!0}),E.clamp=function(T,E,A){return T<=E?E:T>=A?A:T},E.roundToPrecision=function(T,E=0){return isNaN(T)?0:Math.round(T*Math.pow(10,E))/Math.pow(10,E)}},function(T,E,A){"use strict";Object.defineProperty(E,"__esModule",{value:!0}),E.getMonthsDiff=function(T,E){return E.getUTCMonth()-T.getUTCMonth()+12*(E.getUTCFullYear()-T.getUTCFullYear())-(E.getUTCDate()<T.getUTCDate()?1:0)},E.addYearsToDate=function(T,E){const A=new Date(T.valueOf());return A.setUTCFullYear(T.getUTCFullYear()+E),A},E.now=function(){return new Date}},function(T,E,A){"use strict";var R=this&&this.__importStar||function(T){if(T&&T.__esModule)return T;var E={};if(null!=T)for(var A in T)Object.hasOwnProperty.call(T,A)&&(E[A]=T[A]);return E.default=T,E},t=this&&this.__importDefault||function(T){return T&&T.__esModule?T:{default:T}};const e=R(A(3)),O=t(A(4)),M=t(A(5)),_=t(A(6)),r=t(A(7)),a=t(A(8)),n=t(A(9)),i=t(A(10)),N=t(A(11)),o=t(A(12)),S=t(A(13)),s=t(A(14)),u=A(15),F=t(A(17));T.exports={INVESTMENTS:{LIF:e,RRIF:O.default,TFSA:_.default,RRSP:M.default},PENSION:{CPP:i.default,OAS:N.default,QPP:o.default,SPP:S.default},TAXES:{EI:s.default,INCOME_TAX:u.INCOME_TAX,QPIP:F.default},MISC:{CPI:r.default,IQPF:a.default,LIFE_EXPECTANCY:n.default}}},function(T,E,A){"use strict";Object.defineProperty(E,"__esModule",{value:!0});const R=A(0);E.province1MaxWithdrawalPct={54:.064,55:.0645,56:.0651,57:.0657,58:.0663,59:.067,60:.0677,61:.0685,62:.0694,63:.0704,64:.0714,65:.0726,66:.0738,67:.0752,68:.0767,69:.0783,70:.0802,71:.0822,72:.0845,73:.0871,74:.09,75:.0934,76:.0971,77:.1015,78:.1066,79:.1125,80:.1196,81:.1282,82:.1387,83:.1519,84:.169,85:.1919,86:.224,87:.2723,88:.3529,89:.5146,90:1},E.province2MaxWithdrawalPct={54:.061,55:.061,56:.064,57:.065,58:.065,59:.066,60:.067,61:.067,62:.068,63:.069,64:.07,65:.071,66:.072,67:.073,68:.074,69:.076,70:.077,71:.079,72:.081,73:.083,74:.085,75:.088,76:.091,77:.094,78:.098,79:.103,80:.108,81:.115,82:.121,83:.129,84:.138,85:.148,86:.16,87:.173,88:.189,89:.2},E.federalMaxWithdrawalPct={54:.0424,55:.0428,56:.0432,57:.0437,58:.0443,59:.0448,60:.0455,61:.0462,62:.0469,63:.0478,64:.0487,65:.0497,66:.0508,67:.0521,68:.0535,69:.055,70:.0567,71:.0587,72:.061,73:.0635,74:.0665,75:.07,76:.0741,77:.0788,78:.0843,79:.0906,80:.0981,81:.1071,82:.1181,83:.1319,84:.1496,85:.1732,86:.2062,87:.2558,88:.3385,89:.5038,90:1},E.othersMaxWithdrawalPct={54:.027,55:.0278,56:.0286,57:.0294,58:.0303,59:.0313,60:.0323,61:.0333,62:.0345,63:.0357,64:.037,65:.0385,66:.04,67:.0417,68:.0435,69:.0455,70:.0476,71:.05,72:.0528,73:.054,74:.0553,75:.0567,76:.0582,77:.0598,78:.0617,79:.0636,80:.0658,81:.0682,82:.0708,83:.0738,84:.0771,85:.0808,86:.0851,87:.0899,88:.0955,89:.1021,90:.1099,91:.1192,92:.1306,93:.1449,94:.1634,95:.1879,96:.2},E.getMaxWithdrawalPct=function(T,A){switch(T){case"AB":case"BC":case"ON":case"NB":case"NL":case"SK":return E.province1MaxWithdrawalPct[R.clamp(A,54,90)];case"QC":case"MB":case"NS":return E.province2MaxWithdrawalPct[R.clamp(A,54,89)];case"CA":return E.federalMaxWithdrawalPct[R.clamp(A,54,90)];default:return E.othersMaxWithdrawalPct[R.clamp(A,54,96)]}}},function(T,E,A){"use strict";T.exports={MIN_WITHDRAWAL_PCT:{50:.025,51:.0256,52:.0263,53:.027,54:.0278,55:.0286,56:.0294,57:.0303,58:.0313,59:.0323,60:.0333,61:.0345,62:.0357,63:.037,64:.0385,65:.04,66:.0417,67:.0435,68:.0455,69:.0476,70:.05,71:.0528,72:.054,73:.0553,74:.0567,75:.0582,76:.0598,77:.0617,78:.0636,79:.0658,80:.0682,81:.0708,82:.0738,83:.0771,84:.0808,85:.0851,86:.0899,87:.0955,88:.1021,89:.1099,90:.1192,91:.1306,92:.1449,93:.1634,94:.1879,95:.2}}},function(T,E,A){"use strict";T.exports={CONVERSION_AGE:{MIN:55,MAX:71},MAX_CONTRIBUTION:27230}},function(T,E,A){"use strict";T.exports={MAX_CONTRIBUTION:6e3,ROUNDING_FACTOR:500}},function(T,E,A){"use strict";T.exports={2009:{JAN:113,FEB:113.8,MAR:114,APR:113.9,MAY:114.7,JUN:115.1,JUL:114.7,AUG:114.7,SEP:114.7,OCT:114.6,NOV:115.2,DEC:114.8},2010:{JAN:115.1,FEB:115.6,MAR:115.6,APR:116,MAY:116.3,JUN:116.2,JUL:116.8,AUG:116.7,SEP:116.9,OCT:117.4,NOV:117.5,DEC:117.5},2011:{JAN:117.8,FEB:118.1,MAR:119.4,APR:119.8,MAY:120.6,JUN:119.8,JUL:120,AUG:120.3,SEP:120.6,OCT:120.8,NOV:120.9,DEC:120.2},2012:{JAN:120.7,FEB:121.2,MAR:121.7,APR:122.2,MAY:122.1,JUN:121.6,JUL:121.5,AUG:121.8,SEP:122,OCT:122.2,NOV:121.9,DEC:121.2},2013:{JAN:121.3,FEB:122.7,MAR:122.9,APR:122.7,MAY:123,JUN:123,JUL:123.1,AUG:123.1,SEP:123.3,OCT:123,NOV:123,DEC:122.7},2014:{JAN:123.1,FEB:124.1,MAR:124.8,APR:125.2,MAY:125.8,JUN:125.9,JUL:125.7,AUG:125.7,SEP:125.8,OCT:125.9,NOV:125.4,DEC:124.5},2015:{JAN:124.3,FEB:125.4,MAR:126.3,APR:126.2,MAY:126.9,JUN:127.2,JUL:127.3,AUG:127.3,SEP:127.1,OCT:127.2,NOV:127.1,DEC:126.5},2016:{JAN:126.8,FEB:127.1,MAR:127.9,APR:128.3,MAY:128.8,JUN:129.1,JUL:128.9,AUG:128.7,SEP:128.8,OCT:129.1,NOV:128.6,DEC:128.4},2017:{JAN:129.5,FEB:129.7,MAR:129.9,APR:130.4,MAY:130.5,JUN:130.4,JUL:130.4,AUG:130.5,SEP:130.8,OCT:130.9,NOV:131.3,DEC:130.8},2018:{JAN:131.7,FEB:132.5,MAR:132.9,APR:133.3,MAY:133.4,JUN:133.6,JUL:134.3,AUG:134.2,SEP:134.3,OCT:134.1,NOV:133.5,DEC:133.4},2019:{JAN:133.6,FEB:134.5,MAR:135.4,APR:136,MAY:136.6,JUN:136.3,JUL:137,AUG:136.8,SEP:136.2,OCT:136.6,NOV:136.4,DEC:136.4}}},function(T,E,A){"use strict";T.exports={INFLATION:.021,RETURN_RATES:{SHORT_TERM:.03,FIXED_INCOME:.039,CANADIAN_EQUITIES:.061,CONSERVATIVE_PORTFOLIO:.032,BALANCED_PORTFOLIO:.037,DYNAMIC_PORTFOLIO:.045},BORROWING_RATE:.05}},function(T,E,A){"use strict";T.exports={MALE:{0:95,5:95,10:95,15:95,20:95,25:95,30:95,35:94,40:94,45:94,50:94,55:94,60:94,65:94,70:94,75:94,80:94,85:95,90:96,95:99,100:102},FEMALE:{0:97,5:97,10:97,15:97,20:97,25:97,30:97,35:97,40:97,45:96,50:96,55:96,60:96,65:96,70:96,75:96,80:96,85:97,90:98,95:100,100:103}}},function(T,E,A){"use strict";const R=A(1),t=A(0);T.exports={CONTRIBUTIONS:{PENSIONABLE_EARNINGS:{MAX:58700,MIN:3500,AVG_MAX:56440,SUP_MAX:64300,SUP_FACTORS:[{FROM:2019,TO:2023,FACTOR:1},{FROM:2024,TO:2024,FACTOR:1.07},{FROM:2025,TO:Number.MAX_SAFE_INTEGER,FACTOR:1.14}]},RATES:{BASE:.054,ENHANCEMENT_STEP_1:[{FROM:2019,TO:2019,RATE:.0015},{FROM:2020,TO:2020,RATE:.003},{FROM:2021,TO:2021,RATE:.005},{FROM:2022,TO:2022,RATE:.0075},{FROM:2023,TO:Number.MAX_SAFE_INTEGER,RATE:.01}],ENHANCEMENT_STEP_2:.04}},DEATH_BENEFIT:{RATE:.5},DEFAULT_REFERENCE_AGE:65,FLAT_BENEFIT:{ORPHAN:3060.36,DISABILITY:16651.92,UNDER_45:7519.56,UNDER_45_WITH_CHILD:7659.36,UNDER_45_DISABLED:7659.36,FROM_45_TO_64:7659.36,OVER_64_WITHOUT_PENSION:8466},getRequestDateFactor(T,E){const{BONUS:A,PENALTY:e}=this.MONTHLY_DELAY,O=R.addYearsToDate(T,this.MIN_REQUEST_AGE),M=R.addYearsToDate(T,this.MAX_REQUEST_AGE),_=R.addYearsToDate(T,this.DEFAULT_REFERENCE_AGE),r=R.getMonthsDiff(T,R.now()),a=R.getMonthsDiff(T,O),n=R.getMonthsDiff(T,M),i=R.getMonthsDiff(T,_),N=R.getMonthsDiff(T,E),o=r-r%12;if(N<a)return 0;if(n<r)return 1;if(r>i&&N<o)return 1;let S=t.clamp(N,a,n);return 1+(S-=Math.max(o,i))*(S>=0?A:e)},getAverageIndexationRate(){const T=(this.INDEXATION_RATES_REFERENCES.reduce((T,E)=>T+E[1],0)/this.INDEXATION_RATES_REFERENCES.length).toString();return Number.parseFloat(T).toPrecision(3)},getMPEA(T){return(this.MAX_INCOME[T-4]+this.MAX_INCOME[T-3]+this.MAX_INCOME[T-2]+this.MAX_INCOME[T-1]+this.MAX_INCOME[T])/5},getPostRetirementBenefit:(T,E,A,R)=>T/E*.00625*A*R/12,INDEXATION_RATES_REFERENCES:[[2007,.02],[2008,.022],[2009,.023],[2010,.003],[2011,.018],[2012,.029],[2013,.015],[2014,.009],[2015,.02],[2016,.011],[2017,.014],[2018,.016],[2019,.023]],MAX_PENSION:{RETIREMENT:14109.96,COMBINED_RETIREMENT_SURVIVOR:14109.96,SURVIVOR_OVER_46:8466,SURVIVOR_UNDER_65:7659.36,DEATH_BENEFIT:2500},MAX_INCOME:{1966:5e3,1967:5e3,1968:5100,1969:5200,1970:5300,1971:5400,1972:5500,1973:5900,1974:6600,1975:7400,1976:8300,1977:9300,1978:10400,1979:11700,1980:13100,1981:14700,1982:16500,1983:18500,1984:20800,1985:23400,1986:25800,1987:25900,1988:26500,1989:27700,1990:28900,1991:30500,1992:32200,1993:33400,1994:34400,1995:34900,1996:35400,1997:35800,1998:36900,1999:37400,2e3:37600,2001:38300,2002:39100,2003:39900,2004:40500,2005:41100,2006:42100,2007:43700,2008:44900,2009:46300,2010:47200,2011:48300,2012:50100,2013:51100,2014:52500,2015:53600,2016:54900,2017:55300,2018:55900,2019:57400,2020:58700},MAX_REQUEST_AGE:70,MIN_REQUEST_AGE:60,MONTHLY_DELAY:{BONUS:.007,PENALTY:.006},REPLACEMENT_FACTOR:.25,SURVIVOR_RATES:{OVER_64:.6,UNDER_65:.375},YEARS_TO_FULL_PENSION:40}},function(T,E,A){"use strict";const R=A(1),t=A(0);T.exports={getRequestDateFactor(T,E){const A=R.addYearsToDate(T,this.MIN_AGE),e=R.addYearsToDate(T,this.MAX_AGE),O=R.getMonthsDiff(T,R.now()),M=R.getMonthsDiff(T,A),_=R.getMonthsDiff(T,e),r=R.getMonthsDiff(T,E),a=O-O%12;if(r<M)return 0;if(_<O||r<a)return 1;let n=t.clamp(r,M,_);return 1+(n-=Math.max(a,M))*this.MONTHLY_DELAY_BONUS},MAX_AGE:70,MIN_AGE:65,MONTHLY_PAYMENT_MAX:613.53,MONTHLY_DELAY_BONUS:.006,REPAYMENT:{MAX:126058,MIN:77580,RATIO:.15}}},function(T,E,A){"use strict";const R=A(1),t=A(0);T.exports={CONTRIBUTIONS:{PENSIONABLE_EARNINGS:{MAX:58700,MIN:3500,AVG_MAX:56440,SUP_MAX:64300,SUP_FACTORS:[{FROM:2019,TO:2023,FACTOR:1},{FROM:2024,TO:2024,FACTOR:1.07},{FROM:2025,TO:Number.MAX_SAFE_INTEGER,FACTOR:1.14}]},RATES:{BASE:.054,ENHANCEMENT_STEP_1:[{FROM:2019,TO:2019,RATE:.0015},{FROM:2020,TO:2020,RATE:.003},{FROM:2021,TO:2021,RATE:.005},{FROM:2022,TO:2022,RATE:.0075},{FROM:2023,TO:Number.MAX_SAFE_INTEGER,RATE:.01}],ENHANCEMENT_STEP_2:.04}},DEATH_BENEFIT:{RATE:.5},DEFAULT_REFERENCE_AGE:65,FLAT_BENEFIT:{ORPHAN:3060.36,DISABILITY:16661.52,UNDER_45:6857.76,UNDER_45_WITH_CHILD:10938.6,UNDER_45_DISABLED:11372.4,FROM_45_TO_64:11372.4,OVER_64_WITHOUT_PENSION:8479.8},getRequestDateFactor(T,E){const{BONUS:A,PENALTY:e}=this.MONTHLY_DELAY,O=R.addYearsToDate(T,this.MIN_REQUEST_AGE),M=R.addYearsToDate(T,this.MAX_REQUEST_AGE),_=R.addYearsToDate(T,this.DEFAULT_REFERENCE_AGE),r=R.getMonthsDiff(T,R.now()),a=R.getMonthsDiff(T,O),n=R.getMonthsDiff(T,M),i=R.getMonthsDiff(T,_),N=R.getMonthsDiff(T,E),o=r-r%12;if(N<a)return 0;if(n<r)return 1;if(r>i&&N<o)return 1;let S=t.clamp(N,a,n);return 1+(S-=Math.max(o,i))*(S>=0?A:e)},getAverageIndexationRate(){const T=this.INDEXATION_RATE_REFERENCES.reduce((T,E)=>T+E[1],0);return t.roundToPrecision(T/this.INDEXATION_RATE_REFERENCES.length,2)},INDEXATION_RATE_REFERENCES:[[2007,.021],[2008,.02],[2009,.025],[2010,.004],[2011,.017],[2012,.028],[2013,.018],[2014,.009],[2015,.018],[2016,.012],[2017,.02],[2018,.015],[2019,.023]],MAX_INCOME:{1966:5e3,1967:5e3,1968:5100,1969:5200,1970:5300,1971:5400,1972:5500,1973:5900,1974:6600,1975:7400,1976:8300,1977:9300,1978:10400,1979:11700,1980:13100,1981:14700,1982:16500,1983:18500,1984:20800,1985:23400,1986:25800,1987:25900,1988:26500,1989:27700,1990:28900,1991:30500,1992:32200,1993:33400,1994:34400,1995:34900,1996:35400,1997:35800,1998:36900,1999:37400,2e3:37600,2001:38300,2002:39100,2003:39900,2004:40500,2005:41100,2006:42100,2007:43700,2008:44900,2009:46300,2010:47200,2011:48300,2012:50100,2013:51100,2014:52500,2015:53600,2016:54900,2017:55300,2018:55900,2019:57400,2020:58700},MAX_PENSION:{RETIREMENT:14109.96,COMBINED_RETIREMENT_SURVIVOR:20196.72,SURVIVOR_OVER_64:8479.8,SURVIVOR_FROM_45_TO_64:11372.4,SURVIVOR_UNDER_45:6857.76,DEATH_BENEFIT:2500},MAX_REQUEST_AGE:70,MIN_REQUEST_AGE:60,MONTHLY_DELAY:{BONUS:.007,PENALTY:.006},REPLACEMENT_FACTOR:.25,SURVIVOR_RATES:{OVER_64:.6,UNDER_65:.375},YEARS_TO_FULL_PENSION:40}},function(T,E,A){"use strict";T.exports={MAX_BRIDGE_BENEFIT_AGE:65,MIN_AGE:55}},function(T,E,A){"use strict";T.exports={MAX_INSURABLE_EARNINGS:54200,PREMIUM_RATES:{CA:.0158,QC:.012}}},function(T,E,A){"use strict";Object.defineProperty(E,"__esModule",{value:!0});const R=A(16);E.INCOME_TAX={FEDERAL_CODE:"CA",calculateEffectiveTaxRate(T,E){if(T<=0)return 0;const A=this.getProvincialTaxAmount(E,T,0,0),R=this.getProvincialBaseCredit(E,0,0),t=this.getFederalTaxAmount(T,0,0),e=this.getFederalBaseCredit(0,0),O=this.getProvincialAbatement(E,t-e);return(Math.max(t-e-O,0)+Math.max(A-R,0))/T},getFederalMarginalRate(T,E,A=0,R=0){const t=this.getFederalTaxAmount(E,A,R),e=this.getFederalBaseCredit(A,R),O=this.getProvincialAbatement(T,t-e);return E<=0?0:Math.max(t-e-O,0)/E},getFederalTaxAmount(T,E=0,A=0){let R=0;return this.TAX_BRACKETS.CA.RATES.forEach(t=>{const e=t.FROM*Math.pow(1+E,A);if(e<T){const O=t.TO*Math.pow(1+E,A);R+=(Math.min(T,O)-e)*t.RATE}}),R},getFederalBaseCredit(T,E){return this.TAX_BRACKETS.CA.BASE_TAX_CREDIT*this.TAX_BRACKETS.CA.TAX_CREDIT_RATE*Math.pow(1+T,E)},getProvincialAbatement(T,E){return this.TAX_BRACKETS[T].ABATEMENT*E},getProvincialTaxAmount(T,E,A=0,R=0){let t=0;return this.TAX_BRACKETS[T].RATES.forEach(T=>{const e=T.FROM*Math.pow(1+A,R);if(e<E){const O=T.TO*Math.pow(1+A,R);t+=(Math.min(E,O)-e)*T.RATE}}),t},getProvincialSurtaxAmount(T,E,A=0,R=0){let t=0;return this.TAX_BRACKETS[T].SURTAX_RATES.forEach(T=>{const e=T.FROM*Math.pow(1+A,R);if(e<E){const O=T.TO*Math.pow(1+A,R);t+=(Math.min(E,O)-e)*T.RATE}}),t},getProvincialMarginalRate(T,E,A=0,R=0){let t=0;const e=this.getProvincialTaxAmount(T,E,A,R);this.TAX_BRACKETS[T].RATES.forEach(T=>{T.FROM*Math.pow(1+A,R)<E&&(t=T.RATE)});let O=0;return this.TAX_BRACKETS[T].SURTAX_RATES.forEach(T=>{T.FROM*Math.pow(1+A,R)<e&&(O=T.RATE)}),t*(1+O)},getProvincialBaseCredit(T,E,A){return this.TAX_BRACKETS[T].BASE_TAX_CREDIT*this.TAX_BRACKETS[T].RATES[0].RATE*Math.pow(1+E,A)},getTotalMarginalRate(T,E,A=0,R=0){return this.getProvincialMarginalRate(T,E,A,R)+this.getFederalMarginalRate(T,E,A,R)},getMaxProvincialMarginalRate(T){return R.maxBy(this.TAX_BRACKETS[T].RATES,T=>T.TO).RATE*(1+R.maxBy(this.TAX_BRACKETS[T].SURTAX_RATES,T=>T.TO).RATE)},getMaxFederalMarginalRate(T){return R.maxBy(this.TAX_BRACKETS[this.FEDERAL_CODE].RATES,T=>T.TO).RATE*(1-this.TAX_BRACKETS[T].ABATEMENT)},getTotalMaxMarginalRate(T){return(this.getMaxProvincialMarginalRate(T)+this.getMaxFederalMarginalRate(T)).toPrecision(4)},getTotalTaxAmount(T,E,A=0,R=0){const t=this.getProvincialTaxAmount(T,E,A,R);return t+this.getProvincialSurtaxAmount(T,t,A,R)+this.getFederalTaxAmount(E,A,R)},PROVINCIAL_CODES:{ALBERTA:"AB",BRITISH_COLUMBIA:"BC",MANITOBA:"MB",NEW_BRUNSWICK:"NB",NEWFOUNDLAND:"NL",NOVA_SCOTIA:"NS",PRINCE_EDWARD_ISLAND:"PE",ONTARIO:"ON",QUEBEC:"QC",SASKATCHEWAN:"SK",NORTHWEST_TERRITORIES:"NT",NUNAVUT:"NU",YUKON:"YT"},TAX_BRACKETS:{CA:{ABATEMENT:0,TAX_CREDIT_RATE:.15,BASE_TAX_CREDIT:12298,RATES:[{FROM:0,TO:48535,RATE:.15},{FROM:48535,TO:97069,RATE:.205},{FROM:97069,TO:150473,RATE:.26},{FROM:150473,TO:214368,RATE:.29},{FROM:214368,TO:999999999,RATE:.33}],SURTAX_RATES:[{FROM:0,TO:999999999,RATE:0}]},AB:{ABATEMENT:0,TAX_CREDIT_RATE:.1,BASE_TAX_CREDIT:19369,RATES:[{FROM:0,TO:131220,RATE:.1},{FROM:131220,TO:157464,RATE:.12},{FROM:157464,TO:209952,RATE:.13},{FROM:209952,TO:314928,RATE:.14},{FROM:314928,TO:999999999,RATE:.15}],SURTAX_RATES:[{FROM:0,TO:999999999,RATE:0}]},BC:{ABATEMENT:0,TAX_CREDIT_RATE:.0506,BASE_TAX_CREDIT:10949,RATES:[{FROM:0,TO:41725,RATE:.0506},{FROM:41725,TO:83451,RATE:.077},{FROM:83451,TO:95812,RATE:.105},{FROM:95812,TO:116344,RATE:.1229},{FROM:116344,TO:157748,RATE:.147},{FROM:157748,TO:999999999,RATE:.168}],SURTAX_RATES:[{FROM:0,TO:999999999,RATE:0}]},MB:{ABATEMENT:0,TAX_CREDIT_RATE:.108,BASE_TAX_CREDIT:9838,RATES:[{FROM:0,TO:33389,RATE:.108},{FROM:33389,TO:72164,RATE:.1275},{FROM:72164,TO:999999999,RATE:.174}],SURTAX_RATES:[{FROM:0,TO:999999999,RATE:0}]},NB:{ABATEMENT:0,TAX_CREDIT_RATE:.0968,BASE_TAX_CREDIT:10459,RATES:[{FROM:0,TO:43401,RATE:.0968},{FROM:43401,TO:86803,RATE:.1482},{FROM:86803,TO:141122,RATE:.1652},{FROM:141122,TO:160776,RATE:.1784},{FROM:160776,TO:999999999,RATE:.203}],SURTAX_RATES:[{FROM:0,TO:999999999,RATE:0}]},NL:{ABATEMENT:0,TAX_CREDIT_RATE:.087,BASE_TAX_CREDIT:9498,RATES:[{FROM:0,TO:37929,RATE:.087},{FROM:37929,TO:75858,RATE:.145},{FROM:75858,TO:135432,RATE:.158},{FROM:135432,TO:189604,RATE:.173},{FROM:189604,TO:999999999,RATE:.183}],SURTAX_RATES:[{FROM:0,TO:999999999,RATE:0}]},NS:{ABATEMENT:0,TAX_CREDIT_RATE:.0879,BASE_TAX_CREDIT:8481,RATES:[{FROM:0,TO:29590,RATE:.0879},{FROM:29590,TO:59180,RATE:.1495},{FROM:59180,TO:93e3,RATE:.1667},{FROM:93e3,TO:15e4,RATE:.175},{FROM:15e4,TO:999999999,RATE:.21}],SURTAX_RATES:[{FROM:0,TO:999999999,RATE:0}]},PE:{ABATEMENT:0,TAX_CREDIT_RATE:.098,BASE_TAX_CREDIT:1e4,RATES:[{FROM:0,TO:31984,RATE:.098},{FROM:31984,TO:63969,RATE:.138},{FROM:63969,TO:999999999,RATE:.167}],SURTAX_RATES:[{FROM:0,TO:12500,RATE:0},{FROM:12500,TO:999999999,RATE:.1}]},ON:{ABATEMENT:0,TAX_CREDIT_RATE:.0505,BASE_TAX_CREDIT:10783,RATES:[{FROM:0,TO:44740,RATE:.0505},{FROM:44740,TO:89482,RATE:.0915},{FROM:89482,TO:15e4,RATE:.1116},{FROM:15e4,TO:22e4,RATE:.1216},{FROM:22e4,TO:999999999,RATE:.1316}],SURTAX_RATES:[{FROM:0,TO:4830,RATE:0},{FROM:4830,TO:6182,RATE:.2},{FROM:6182,TO:999999999,RATE:.56}]},QC:{ABATEMENT:.165,TAX_CREDIT_RATE:.15,BASE_TAX_CREDIT:15532,RATES:[{FROM:0,TO:44545,RATE:.15},{FROM:44545,TO:89080,RATE:.2},{FROM:89080,TO:108390,RATE:.24},{FROM:108390,TO:999999999,RATE:.2575}],SURTAX_RATES:[{FROM:0,TO:999999999,RATE:0}]},SK:{ABATEMENT:0,TAX_CREDIT_RATE:.105,BASE_TAX_CREDIT:16065,RATES:[{FROM:0,TO:45225,RATE:.105},{FROM:45225,TO:129214,RATE:.125},{FROM:129214,TO:999999999,RATE:.145}],SURTAX_RATES:[{FROM:0,TO:999999999,RATE:0}]},NT:{ABATEMENT:0,TAX_CREDIT_RATE:.059,BASE_TAX_CREDIT:15093,RATES:[{FROM:0,TO:43957,RATE:.059},{FROM:43957,TO:87916,RATE:.086},{FROM:87916,TO:142932,RATE:.122},{FROM:142932,TO:999999999,RATE:.1405}],SURTAX_RATES:[{FROM:0,TO:999999999,RATE:0}]},NU:{ABATEMENT:0,TAX_CREDIT_RATE:.04,BASE_TAX_CREDIT:16304,RATES:[{FROM:0,TO:46277,RATE:.04},{FROM:46277,TO:92555,RATE:.07},{FROM:92555,TO:150473,RATE:.09},{FROM:150473,TO:999999999,RATE:.115}],SURTAX_RATES:[{FROM:0,TO:999999999,RATE:0}]},YT:{ABATEMENT:0,TAX_CREDIT_RATE:.064,BASE_TAX_CREDIT:12298,RATES:[{FROM:0,TO:48535,RATE:.064},{FROM:48535,TO:97069,RATE:.09},{FROM:97069,TO:150473,RATE:.109},{FROM:150473,TO:5e5,RATE:.128},{FROM:5e5,TO:999999999,RATE:.15}],SURTAX_RATES:[{FROM:0,TO:999999999,RATE:0}]}}}},function(T,E,A){"use strict";Object.defineProperty(E,"__esModule",{value:!0}),E.maxBy=function(T,E){const A=Math.max(...T.map(E));return T.find(T=>E(T)===A)}},function(T,E,A){"use strict";T.exports={MAX_INSURABLE_EARNINGS:78500,PREMIUM_RATES:{SELF_EMPLOYED:.00878,SALARIED:.00494}}}])}));

@@ -1,42 +0,10 @@

declare const _default: {
MAX_WITHDRAWAL_PCT: {
54: number;
55: number;
56: number;
57: number;
58: number;
59: number;
60: number;
61: number;
62: number;
63: number;
64: number;
65: number;
66: number;
67: number;
68: number;
69: number;
70: number;
71: number;
72: number;
73: number;
74: number;
75: number;
76: number;
77: number;
78: number;
79: number;
80: number;
81: number;
82: number;
83: number;
84: number;
85: number;
86: number;
87: number;
88: number;
89: number;
90: number;
};
};
export = _default;
import { FederalCode, ProvinceCode } from '../misc/code-types';
interface MaxWithdrawalPctByAge {
[key: number]: number;
}
export declare const province1MaxWithdrawalPct: MaxWithdrawalPctByAge;
export declare const province2MaxWithdrawalPct: MaxWithdrawalPctByAge;
export declare const federalMaxWithdrawalPct: MaxWithdrawalPctByAge;
export declare const othersMaxWithdrawalPct: MaxWithdrawalPctByAge;
export declare function getMaxWithdrawalPct(jurisdiction: ProvinceCode | FederalCode, age: number): number;
export {};

@@ -0,4 +1,3 @@

import { ProvinceCode } from '../misc/code-types';
export declare type ProvinceName = 'ALBERTA' | 'BRITISH_COLUMBIA' | 'MANITOBA' | 'NEW_BRUNSWICK' | 'NEWFOUNDLAND' | 'NOVA_SCOTIA' | 'PRINCE_EDWARD_ISLAND' | 'ONTARIO' | 'QUEBEC' | 'SASKATCHEWAN' | 'NORTHWEST_TERRITORIES' | 'NUNAVUT' | 'YUKON';
export declare type ProvinceCode = 'AB' | 'BC' | 'MB' | 'NB' | 'NL' | 'NS' | 'PE' | 'ON' | 'QC' | 'SK' | 'NT' | 'NU' | 'YT';
export declare type FederalCode = 'CA';
export interface Rate {

@@ -5,0 +4,0 @@ FROM: number;

{
"name": "@equisoft/tax-ca",
"version": "2020.4.4",
"version": "2020.5.0",
"description": "Canadian tax data and calculation functions.",

@@ -5,0 +5,0 @@ "main": "lib/index.js",

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc