Updated definitions for dinero.js 1.6 (#38198)

* Updated definitions for dinero.js 1.6

* Use ReadonlArray to improve compatibility.

* Corrected TypeScript version.
This commit is contained in:
David Acosta
2019-10-07 10:51:41 -07:00
committed by Ben Lichtman
parent 5649785dfe
commit 8e8fe5bbb5
2 changed files with 245 additions and 44 deletions
+39 -29
View File
@@ -1,21 +1,30 @@
import Dinero = require("dinero.js");
import Dinero = require('dinero.js');
// Defaults
Dinero.defaultAmount = 100;
Dinero.defaultCurrency = 'USD';
Dinero.defaultPrecision = 2;
// Globals
Dinero.globalLocale = 'en-US';
Dinero.globalFormat = '0,0 dollar';
Dinero.globalRoundingMode = 'HALF_UP';
Dinero.globalFormatRoundingMode = '0,0 dollar';
Dinero.globalExchangeRatesApi = {
endpoint: "https://yourexchangerates.api/latest?base={{from}}",
propertyPath: "data.rates.{{to}}",
headers: {
"user-key": "xxxxxxxxx",
},
endpoint: 'https://yourexchangerates.api/latest?base={{from}}',
propertyPath: 'data.rates.{{to}}',
headers: {
'user-key': 'xxxxxxxxx',
},
};
Dinero.globalExchangeRatesApi = {
endpoint: "https://yourexchangerates.api/latest?base={{from}}",
propertyPath: "data.rates.{{to}}",
roundingMode: "HALF_UP",
endpoint: 'https://yourexchangerates.api/latest?base={{from}}',
propertyPath: 'data.rates.{{to}}',
roundingMode: 'HALF_UP',
};
Dinero();
Dinero({ amount: 1 });
Dinero({ currency: "USD" });
Dinero({ currency: 'USD' });
Dinero({ precision: 2 });
let number: number;
@@ -28,26 +37,27 @@ let dineroObject: Dinero.DineroObject;
number = dinero.getAmount();
string = dinero.getCurrency();
string = dinero.setLocale("fr-FR").getLocale();
string = dinero.setLocale('fr-FR').getLocale();
number = dinero.convertPrecision(4).getPrecision();
number = dinero.convertPrecision(4, 'HALF_DOWN').getPrecision();
dinero = dinero.add(Dinero({ amount: 104545, precision: 4 }));
dinero = dinero.subtract(Dinero({ amount: 104545, precision: 4 }));
dinero = dinero.multiply(2.00125);
dinero = dinero.multiply(2.00125, "HALF_UP");
dinero = dinero.multiply(2.00125, 'HALF_UP');
dinero = dinero.divide(2);
dinero = dinero.divide(2, "HALF_UP");
dinero = dinero.divide(2, 'HALF_UP');
dinero = dinero.percentage(50);
dineroArr = dinero.allocate([50, 50]);
dinero.convert("EUR").then(d => (dinero = d));
dinero.convert("XBT", {
endpoint: "https://yourexchangerates.api/latest?base={{from}}",
propertyPath: "data.rates.{{to}}",
headers: {
"user-key": "xxxxxxxxx",
},
roundingMode: "HALF_UP",
dinero.convert('EUR').then(d => (dinero = d));
dinero.convert('XBT', {
endpoint: 'https://yourexchangerates.api/latest?base={{from}}',
propertyPath: 'data.rates.{{to}}',
headers: {
'user-key': 'xxxxxxxxx',
},
roundingMode: 'HALF_UP',
});
boolean = dinero.equalsTo(Dinero({ amount: 500, currency: "EUR" }));
boolean = dinero.equalsTo(Dinero({ amount: 500, currency: 'EUR' }));
boolean = dinero.lessThan(Dinero({ amount: 800 }));
boolean = dinero.lessThanOrEqual(Dinero({ amount: 800 }));
boolean = dinero.greaterThan(Dinero({ amount: 800 }));
@@ -57,15 +67,15 @@ boolean = dinero.isPositive();
boolean = dinero.isNegative();
boolean = dinero.hasSubUnits();
boolean = dinero.hasCents();
boolean = dinero.hasSameCurrency(Dinero({ amount: 1000, currency: "EUR" }));
boolean = dinero.hasSameAmount(Dinero({ amount: 1000, currency: "EUR" }));
string = dinero.toFormat("0,0 dollar");
string = dinero.toFormat("0,0 dollar", "HALF_EVEN");
boolean = dinero.hasSameCurrency(Dinero({ amount: 1000, currency: 'EUR' }));
boolean = dinero.hasSameAmount(Dinero({ amount: 1000, currency: 'EUR' }));
string = dinero.toFormat('0,0 dollar');
string = dinero.toFormat('0,0 dollar', 'HALF_EVEN');
number = dinero.toUnit();
number = dinero.toRoundedUnit(1);
number = dinero.toRoundedUnit(1, "HALF_EVEN");
number = dinero.toRoundedUnit(1, 'HALF_EVEN');
dineroObject = dinero.toObject();
dineroArr = Dinero.normalizePrecision([
Dinero({ amount: 100, precision: 2 }),
Dinero({ amount: 1000, precision: 3 }),
Dinero({ amount: 100, precision: 2 }),
Dinero({ amount: 1000, precision: 3 }),
]);
+206 -15
View File
@@ -1,6 +1,7 @@
// Type definitions for dinero.js 1.4
// Type definitions for dinero.js 1.6
// Project: https://sarahdayan.github.io/dinero.js
// Definitions by: BendingBender <https://github.com/BendingBender>
// David Acosta <https://github.com/juandaco>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
// TypeScript Version: 2.1
@@ -11,15 +12,19 @@ export = DineroFactory;
declare function DineroFactory(options?: Dinero.Options): DineroFactory.Dinero;
declare namespace DineroFactory {
let globalExchangeRatesApi: ExchangeRatesApiOptions;
let globalFormat: string;
let defaultAmount: number;
let defaultCurrency: Currency;
let defaultPrecision: number;
let globalLocale: string;
let globalRoundingMode: string;
function normalizePrecision(objects: Dinero[]): Dinero[];
let globalFormat: string;
let globalRoundingMode: RoundingMode;
let globalFormatRoundingMode: string;
let globalExchangeRatesApi: ExchangeRatesApiOptions;
function normalizePrecision(objects: ReadonlyArray<Dinero>): Dinero[];
interface Options {
amount?: number;
currency?: string;
currency?: Currency;
precision?: number;
}
@@ -29,13 +34,13 @@ declare namespace DineroFactory {
getLocale(): string;
setLocale(newLocale: string): Dinero;
getPrecision(): number;
convertPrecision(newPrecision: number): Dinero;
convertPrecision(newPrecision: number, roundingMode?: RoundingMode): Dinero;
add(addend: Dinero): Dinero;
subtract(subtrahend: Dinero): Dinero;
multiply(multiplier: number, roundingMode?: RoundingMode): Dinero;
divide(divisor: number, roundingMode?: RoundingMode): Dinero;
percentage(percentage: number): Dinero;
allocate(ratios: number[]): Dinero[];
allocate(ratios: ReadonlyArray<number>): Dinero[];
convert(currency: string, options?: ExchangeRatesApiOptions): Promise<Dinero>;
equalsTo(comparator: Dinero): boolean;
lessThan(comparator: Dinero): boolean;
@@ -59,12 +64,12 @@ declare namespace DineroFactory {
}
type RoundingMode =
| "HALF_ODD"
| "HALF_EVEN"
| "HALF_UP"
| "HALF_DOWN"
| "HALF_TOWARDS_ZERO"
| "HALF_AWAY_FROM_ZERO";
| 'HALF_ODD'
| 'HALF_EVEN'
| 'HALF_UP'
| 'HALF_DOWN'
| 'HALF_TOWARDS_ZERO'
| 'HALF_AWAY_FROM_ZERO';
interface ExchangeRatesApiOptions {
endpoint: string;
@@ -75,7 +80,193 @@ declare namespace DineroFactory {
interface DineroObject {
amount: number;
currency: string;
currency: Currency;
precision: number;
}
/**
* ISO 4217 CURRENCY CODES as specified in the documentation
* Taken from https://www.iso.org/iso-4217-currency-codes.html
* sorted and parsed
*/
type Currency =
| 'AED'
| 'AFN'
| 'ALL'
| 'AMD'
| 'ANG'
| 'AOA'
| 'ARS'
| 'AUD'
| 'AWG'
| 'AZN'
| 'BAM'
| 'BBD'
| 'BDT'
| 'BGN'
| 'BHD'
| 'BIF'
| 'BMD'
| 'BND'
| 'BOB'
| 'BOV'
| 'BRL'
| 'BSD'
| 'BTN'
| 'BWP'
| 'BYN'
| 'BZD'
| 'CAD'
| 'CDF'
| 'CHE'
| 'CHF'
| 'CHW'
| 'CLF'
| 'CLP'
| 'CNY'
| 'COP'
| 'COU'
| 'CRC'
| 'CUC'
| 'CUP'
| 'CVE'
| 'CZK'
| 'DJF'
| 'DKK'
| 'DOP'
| 'DZD'
| 'EGP'
| 'ERN'
| 'ETB'
| 'EUR'
| 'FJD'
| 'FKP'
| 'GBP'
| 'GEL'
| 'GHS'
| 'GIP'
| 'GMD'
| 'GNF'
| 'GTQ'
| 'GYD'
| 'HKD'
| 'HNL'
| 'HRK'
| 'HTG'
| 'HUF'
| 'IDR'
| 'ILS'
| 'INR'
| 'IQD'
| 'IRR'
| 'ISK'
| 'JMD'
| 'JOD'
| 'JPY'
| 'KES'
| 'KGS'
| 'KHR'
| 'KMF'
| 'KPW'
| 'KRW'
| 'KWD'
| 'KYD'
| 'KZT'
| 'LAK'
| 'LBP'
| 'LKR'
| 'LRD'
| 'LSL'
| 'LYD'
| 'MAD'
| 'MDL'
| 'MGA'
| 'MKD'
| 'MMK'
| 'MNT'
| 'MOP'
| 'MRU'
| 'MUR'
| 'MVR'
| 'MWK'
| 'MXN'
| 'MXV'
| 'MYR'
| 'MZN'
| 'NAD'
| 'NGN'
| 'NIO'
| 'NOK'
| 'NPR'
| 'NZD'
| 'OMR'
| 'PAB'
| 'PEN'
| 'PGK'
| 'PHP'
| 'PKR'
| 'PLN'
| 'PYG'
| 'QAR'
| 'RON'
| 'RSD'
| 'RUB'
| 'RWF'
| 'SAR'
| 'SBD'
| 'SCR'
| 'SDG'
| 'SEK'
| 'SGD'
| 'SHP'
| 'SLL'
| 'SOS'
| 'SRD'
| 'SSP'
| 'STN'
| 'SVC'
| 'SYP'
| 'SZL'
| 'THB'
| 'TJS'
| 'TMT'
| 'TND'
| 'TOP'
| 'TRY'
| 'TTD'
| 'TWD'
| 'TZS'
| 'UAH'
| 'UGX'
| 'USD'
| 'USN'
| 'UYI'
| 'UYU'
| 'UYW'
| 'UZS'
| 'VES'
| 'VND'
| 'VUV'
| 'WST'
| 'XAF'
| 'XAG'
| 'XAU'
| 'XBA'
| 'XBB'
| 'XBC'
| 'XBD'
| 'XCD'
| 'XDR'
| 'XOF'
| 'XPD'
| 'XPF'
| 'XPT'
| 'XSU'
| 'XTS'
| 'XUA'
| 'XXX'
| 'YER'
| 'ZAR'
| 'ZMW'
| 'ZWL';
}