@temboplus/frontend-core 0.2.7 → 0.2.9
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/esm/src/data/currencies.d.ts +86 -86
- package/esm/src/data/currencies.js +47 -47
- package/esm/src/models/bank/bank.d.ts +1 -1
- package/esm/src/models/bank/bank.d.ts.map +1 -1
- package/esm/src/models/bank/bank.js +5 -6
- package/esm/src/models/bank/index.d.ts +2 -0
- package/esm/src/models/bank/index.d.ts.map +1 -1
- package/esm/src/models/bank/index.js +2 -0
- package/esm/src/models/bank/types.d.ts +7 -0
- package/esm/src/models/bank/types.d.ts.map +1 -0
- package/esm/src/models/bank/types.js +45 -0
- package/esm/src/models/bank/utils.d.ts +8 -0
- package/esm/src/models/bank/utils.d.ts.map +1 -0
- package/esm/src/models/bank/utils.js +9 -0
- package/esm/src/models/country/country.js +1 -1
- package/esm/src/models/country/index.d.ts +1 -0
- package/esm/src/models/country/index.d.ts.map +1 -1
- package/esm/src/models/country/index.js +1 -0
- package/esm/src/models/country/types.d.ts +10 -0
- package/esm/src/models/country/types.d.ts.map +1 -1
- package/esm/src/models/country/types.js +62 -0
- package/esm/src/models/country/utils.d.ts +21 -0
- package/esm/src/models/country/utils.d.ts.map +1 -0
- package/esm/src/models/country/utils.js +25 -0
- package/esm/src/models/currency/currency.d.ts +7 -6
- package/esm/src/models/currency/currency.d.ts.map +1 -1
- package/esm/src/models/currency/currency.js +42 -14
- package/esm/src/models/currency/index.d.ts +1 -0
- package/esm/src/models/currency/index.d.ts.map +1 -1
- package/esm/src/models/currency/index.js +1 -0
- package/esm/src/models/currency/types.d.ts +2 -1
- package/esm/src/models/currency/types.d.ts.map +1 -1
- package/esm/src/models/currency/types.js +16 -1
- package/esm/src/models/currency/utils.d.ts +8 -0
- package/esm/src/models/currency/utils.d.ts.map +1 -0
- package/esm/src/models/currency/utils.js +9 -0
- package/package.json +1 -1
- package/script/src/data/currencies.d.ts +86 -86
- package/script/src/data/currencies.js +47 -47
- package/script/src/models/bank/bank.d.ts +1 -1
- package/script/src/models/bank/bank.d.ts.map +1 -1
- package/script/src/models/bank/bank.js +5 -6
- package/script/src/models/bank/index.d.ts +2 -0
- package/script/src/models/bank/index.d.ts.map +1 -1
- package/script/src/models/bank/index.js +2 -0
- package/script/src/models/bank/types.d.ts +7 -0
- package/script/src/models/bank/types.d.ts.map +1 -0
- package/script/src/models/bank/types.js +48 -0
- package/script/src/models/bank/utils.d.ts +8 -0
- package/script/src/models/bank/utils.d.ts.map +1 -0
- package/script/src/models/bank/utils.js +12 -0
- package/script/src/models/country/country.js +1 -1
- package/script/src/models/country/index.d.ts +1 -0
- package/script/src/models/country/index.d.ts.map +1 -1
- package/script/src/models/country/index.js +1 -0
- package/script/src/models/country/types.d.ts +10 -0
- package/script/src/models/country/types.d.ts.map +1 -1
- package/script/src/models/country/types.js +63 -1
- package/script/src/models/country/utils.d.ts +21 -0
- package/script/src/models/country/utils.d.ts.map +1 -0
- package/script/src/models/country/utils.js +30 -0
- package/script/src/models/currency/currency.d.ts +7 -6
- package/script/src/models/currency/currency.d.ts.map +1 -1
- package/script/src/models/currency/currency.js +42 -14
- package/script/src/models/currency/index.d.ts +1 -0
- package/script/src/models/currency/index.d.ts.map +1 -1
- package/script/src/models/currency/index.js +1 -0
- package/script/src/models/currency/types.d.ts +2 -1
- package/script/src/models/currency/types.d.ts.map +1 -1
- package/script/src/models/currency/types.js +17 -0
- package/script/src/models/currency/utils.d.ts +8 -0
- package/script/src/models/currency/utils.d.ts.map +1 -0
- package/script/src/models/currency/utils.js +12 -0
|
@@ -27,6 +27,7 @@
|
|
|
27
27
|
* dependencies are best managed in a unified module.
|
|
28
28
|
*/
|
|
29
29
|
import file from "../../data/currencies.js";
|
|
30
|
+
import { isCurrencyCode } from "./utils.js";
|
|
30
31
|
/**
|
|
31
32
|
* Represents a currency with essential details.
|
|
32
33
|
* @class Currency
|
|
@@ -39,7 +40,7 @@ export class Currency {
|
|
|
39
40
|
* @param {string} _symbolNative - The native symbol of the currency
|
|
40
41
|
* @param {number} _decimalDigits - Number of decimal places typically used with this currency
|
|
41
42
|
* @param {number} _rounding - Rounding increment used for this currency
|
|
42
|
-
* @param {
|
|
43
|
+
* @param {CurrencyCode} _code - The ISO 4217 currency code
|
|
43
44
|
* @param {string} _namePlural - The plural form of the currency name
|
|
44
45
|
*/
|
|
45
46
|
constructor(_symbol, _name, _symbolNative, _decimalDigits, _rounding, _code, _namePlural) {
|
|
@@ -188,23 +189,41 @@ export class Currency {
|
|
|
188
189
|
return !!currency;
|
|
189
190
|
}
|
|
190
191
|
/**
|
|
191
|
-
* Attempts to create a Currency instance from a currency name or ISO code
|
|
192
|
-
*
|
|
193
|
-
* @
|
|
192
|
+
* Attempts to create a Currency instance from a currency name or ISO code string.
|
|
193
|
+
* The `CurrencyCode` type provides type hints for valid ISO codes but resolves to `string`.
|
|
194
|
+
* @param input The currency name or ISO code string.
|
|
195
|
+
* @returns A Currency instance if valid input, undefined otherwise.
|
|
194
196
|
*/
|
|
195
197
|
static from(input) {
|
|
196
|
-
|
|
198
|
+
// Handle null or undefined input explicitly
|
|
199
|
+
if (!input || typeof input === "object") {
|
|
197
200
|
return undefined;
|
|
201
|
+
}
|
|
202
|
+
// Input is guaranteed to be a string here. Trim whitespace.
|
|
198
203
|
const text = input.trim();
|
|
199
|
-
|
|
204
|
+
// Check for empty string after trimming
|
|
205
|
+
if (text.length === 0) {
|
|
200
206
|
return undefined;
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
if (
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
return
|
|
207
|
+
}
|
|
208
|
+
// Check if the input string matches a known CurrencyCode
|
|
209
|
+
if (isCurrencyCode(text)) {
|
|
210
|
+
// If it's a valid code format, try creating from code.
|
|
211
|
+
// 'text' is now known to be of type CurrencyCode within this block.
|
|
212
|
+
const currency = Currency.fromCode(text);
|
|
213
|
+
// Return if successful. Note: fromCode itself might return undefined
|
|
214
|
+
// even for a valid code if it's e.g., not supported/enabled.
|
|
215
|
+
if (currency) {
|
|
216
|
+
return currency;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
// If input wasn't a valid CurrencyCode recognized by the type guard,
|
|
220
|
+
// OR if isCurrencyCode returned true but Currency.fromCode(text) returned undefined,
|
|
221
|
+
// then try interpreting the original input string as a name.
|
|
222
|
+
const currencyFromName = Currency.fromName(text);
|
|
223
|
+
if (currencyFromName) {
|
|
224
|
+
return currencyFromName;
|
|
225
|
+
}
|
|
226
|
+
// If neither code nor name interpretation worked
|
|
208
227
|
return undefined;
|
|
209
228
|
}
|
|
210
229
|
/**
|
|
@@ -288,7 +307,16 @@ export class CurrencyService {
|
|
|
288
307
|
initialize() {
|
|
289
308
|
try {
|
|
290
309
|
const data = JSON.parse(JSON.stringify(file));
|
|
291
|
-
const currencies = Object.values(data).map((c)
|
|
310
|
+
const currencies = Object.values(data).map(function (c) {
|
|
311
|
+
let code;
|
|
312
|
+
if (isCurrencyCode(c.code)) {
|
|
313
|
+
code = c.code;
|
|
314
|
+
}
|
|
315
|
+
else {
|
|
316
|
+
throw new Error(`Unknown currency code: ${c.code}`);
|
|
317
|
+
}
|
|
318
|
+
return new Currency(c.symbol, c.name, c.symbol_native, c.decimal_digits, c.rounding, code, c.name_plural);
|
|
319
|
+
});
|
|
292
320
|
const codeRecord = {};
|
|
293
321
|
const nameRecord = {};
|
|
294
322
|
currencies.forEach((currency) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/src/models/currency/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA;AAC7B,cAAc,YAAY,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/src/models/currency/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA;AAC7B,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA"}
|
|
@@ -16,5 +16,6 @@
|
|
|
16
16
|
* These three-letter codes represent currencies based on the ISO 4217 standard.
|
|
17
17
|
* Example: "USD" for US Dollar, "EUR" for Euro, "JPY" for Japanese Yen
|
|
18
18
|
*/
|
|
19
|
-
export type CurrencyCode = "USD" | "CAD" | "EUR" | "AED" | "AFN" | "ALL" | "AMD" | "ARS" | "AUD" | "AZN" | "BAM" | "BDT" | "BGN" | "BHD" | "BIF" | "BND" | "BOB" | "BRL" | "BWP" | "BYN" | "BZD" | "CDF" | "CHF" | "CLP" | "CNY" | "COP" | "CRC" | "CVE" | "CZK" | "DJF" | "DKK" | "DOP" | "DZD" | "
|
|
19
|
+
export type CurrencyCode = "USD" | "CAD" | "EUR" | "AED" | "AFN" | "ALL" | "AMD" | "ARS" | "AUD" | "AZN" | "BAM" | "BDT" | "BGN" | "BHD" | "BIF" | "BND" | "BOB" | "BRL" | "BWP" | "BYN" | "BZD" | "CDF" | "CHF" | "CLP" | "CNY" | "COP" | "CRC" | "CVE" | "CZK" | "DJF" | "DKK" | "DOP" | "DZD" | "EGP" | "ERN" | "ETB" | "GBP" | "GEL" | "GHS" | "GNF" | "GTQ" | "HKD" | "HNL" | "HRK" | "HUF" | "IDR" | "ILS" | "INR" | "IQD" | "IRR" | "ISK" | "JMD" | "JOD" | "JPY" | "KES" | "KHR" | "KMF" | "KRW" | "KWD" | "KZT" | "LBP" | "LKR" | "LYD" | "MAD" | "MDL" | "MGA" | "MKD" | "MMK" | "MOP" | "MUR" | "MXN" | "MYR" | "MZN" | "NAD" | "NGN" | "NIO" | "NOK" | "NPR" | "NZD" | "OMR" | "PAB" | "PEN" | "PHP" | "PKR" | "PLN" | "PYG" | "QAR" | "RON" | "RSD" | "RUB" | "RWF" | "SAR" | "SDG" | "SEK" | "SGD" | "SOS" | "SSP" | "SYP" | "THB" | "TND" | "TOP" | "TRY" | "TTD" | "TWD" | "TZS" | "UAH" | "UGX" | "UYU" | "UZS" | "VES" | "VND" | "XAF" | "XOF" | "YER" | "ZAR" | "ZMW" | "STN" | "MRU" | "ZWG";
|
|
20
|
+
export declare const ValidCurrencyCodesSet: Set<CurrencyCode>;
|
|
20
21
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/src/models/currency/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GACpB,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GACrE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GACrE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GACrE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GACrE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GACrE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GACrE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GACrE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GACrE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GACrE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GACrE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GACrE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GACrE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GACrE,KAAK,GAAG,KAAK,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/src/models/currency/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GACpB,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GACrE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GACrE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GACrE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GACrE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GACrE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GACrE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GACrE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GACrE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GACrE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GACrE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GACrE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GACrE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GACrE,KAAK,GAAG,KAAK,CAAC;AAElB,eAAO,MAAM,qBAAqB,mBAehC,CAAC"}
|
|
@@ -10,4 +10,19 @@
|
|
|
10
10
|
* - Autocompletion in modern IDEs
|
|
11
11
|
* - Protection against typos and invalid values
|
|
12
12
|
*/
|
|
13
|
-
export
|
|
13
|
+
export const ValidCurrencyCodesSet = new Set([
|
|
14
|
+
"USD", "CAD", "EUR", "AED", "AFN", "ALL", "AMD", "ARS", "AUD",
|
|
15
|
+
"AZN", "BAM", "BDT", "BGN", "BHD", "BIF", "BND", "BOB", "BRL",
|
|
16
|
+
"BWP", "BYN", "BZD", "CDF", "CHF", "CLP", "CNY", "COP", "CRC",
|
|
17
|
+
"CVE", "CZK", "DJF", "DKK", "DOP", "DZD", "EGP", "ERN", "ETB",
|
|
18
|
+
"GBP", "GEL", "GHS", "GNF", "GTQ", "HKD", "HNL", "HRK", "HUF",
|
|
19
|
+
"IDR", "ILS", "INR", "IQD", "IRR", "ISK", "JMD", "JOD", "JPY",
|
|
20
|
+
"KES", "KHR", "KMF", "KRW", "KWD", "KZT", "LBP", "LKR", "LYD",
|
|
21
|
+
"MAD", "MDL", "MGA", "MKD", "MMK", "MOP", "MUR", "MXN", "MYR",
|
|
22
|
+
"MZN", "NAD", "NGN", "NIO", "NOK", "NPR", "NZD", "OMR", "PAB",
|
|
23
|
+
"PEN", "PHP", "PKR", "PLN", "PYG", "QAR", "RON", "RSD", "RUB",
|
|
24
|
+
"RWF", "SAR", "SDG", "SEK", "SGD", "SOS", "SSP", "SYP", "THB",
|
|
25
|
+
"TND", "TOP", "TRY", "TTD", "TWD", "TZS", "UAH", "UGX", "UYU",
|
|
26
|
+
"UZS", "VES", "VND", "XAF", "XOF", "YER", "ZAR", "ZMW", "STN",
|
|
27
|
+
"MRU", "ZWG"
|
|
28
|
+
]);
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { CurrencyCode } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Type guard to check if a string is a valid CurrencyCode.
|
|
4
|
+
* @param code The string to check.
|
|
5
|
+
* @returns True if the string is a member of the CurrencyCode union type, false otherwise.
|
|
6
|
+
*/
|
|
7
|
+
export declare function isCurrencyCode(code: string): code is CurrencyCode;
|
|
8
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/src/models/currency/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,YAAY,CAEjE"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ValidCurrencyCodesSet } from "./index.js";
|
|
2
|
+
/**
|
|
3
|
+
* Type guard to check if a string is a valid CurrencyCode.
|
|
4
|
+
* @param code The string to check.
|
|
5
|
+
* @returns True if the string is a member of the CurrencyCode union type, false otherwise.
|
|
6
|
+
*/
|
|
7
|
+
export function isCurrencyCode(code) {
|
|
8
|
+
return ValidCurrencyCodesSet.has(code);
|
|
9
|
+
}
|
package/package.json
CHANGED