@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.
Files changed (73) hide show
  1. package/esm/src/data/currencies.d.ts +86 -86
  2. package/esm/src/data/currencies.js +47 -47
  3. package/esm/src/models/bank/bank.d.ts +1 -1
  4. package/esm/src/models/bank/bank.d.ts.map +1 -1
  5. package/esm/src/models/bank/bank.js +5 -6
  6. package/esm/src/models/bank/index.d.ts +2 -0
  7. package/esm/src/models/bank/index.d.ts.map +1 -1
  8. package/esm/src/models/bank/index.js +2 -0
  9. package/esm/src/models/bank/types.d.ts +7 -0
  10. package/esm/src/models/bank/types.d.ts.map +1 -0
  11. package/esm/src/models/bank/types.js +45 -0
  12. package/esm/src/models/bank/utils.d.ts +8 -0
  13. package/esm/src/models/bank/utils.d.ts.map +1 -0
  14. package/esm/src/models/bank/utils.js +9 -0
  15. package/esm/src/models/country/country.js +1 -1
  16. package/esm/src/models/country/index.d.ts +1 -0
  17. package/esm/src/models/country/index.d.ts.map +1 -1
  18. package/esm/src/models/country/index.js +1 -0
  19. package/esm/src/models/country/types.d.ts +10 -0
  20. package/esm/src/models/country/types.d.ts.map +1 -1
  21. package/esm/src/models/country/types.js +62 -0
  22. package/esm/src/models/country/utils.d.ts +21 -0
  23. package/esm/src/models/country/utils.d.ts.map +1 -0
  24. package/esm/src/models/country/utils.js +25 -0
  25. package/esm/src/models/currency/currency.d.ts +7 -6
  26. package/esm/src/models/currency/currency.d.ts.map +1 -1
  27. package/esm/src/models/currency/currency.js +42 -14
  28. package/esm/src/models/currency/index.d.ts +1 -0
  29. package/esm/src/models/currency/index.d.ts.map +1 -1
  30. package/esm/src/models/currency/index.js +1 -0
  31. package/esm/src/models/currency/types.d.ts +2 -1
  32. package/esm/src/models/currency/types.d.ts.map +1 -1
  33. package/esm/src/models/currency/types.js +16 -1
  34. package/esm/src/models/currency/utils.d.ts +8 -0
  35. package/esm/src/models/currency/utils.d.ts.map +1 -0
  36. package/esm/src/models/currency/utils.js +9 -0
  37. package/package.json +1 -1
  38. package/script/src/data/currencies.d.ts +86 -86
  39. package/script/src/data/currencies.js +47 -47
  40. package/script/src/models/bank/bank.d.ts +1 -1
  41. package/script/src/models/bank/bank.d.ts.map +1 -1
  42. package/script/src/models/bank/bank.js +5 -6
  43. package/script/src/models/bank/index.d.ts +2 -0
  44. package/script/src/models/bank/index.d.ts.map +1 -1
  45. package/script/src/models/bank/index.js +2 -0
  46. package/script/src/models/bank/types.d.ts +7 -0
  47. package/script/src/models/bank/types.d.ts.map +1 -0
  48. package/script/src/models/bank/types.js +48 -0
  49. package/script/src/models/bank/utils.d.ts +8 -0
  50. package/script/src/models/bank/utils.d.ts.map +1 -0
  51. package/script/src/models/bank/utils.js +12 -0
  52. package/script/src/models/country/country.js +1 -1
  53. package/script/src/models/country/index.d.ts +1 -0
  54. package/script/src/models/country/index.d.ts.map +1 -1
  55. package/script/src/models/country/index.js +1 -0
  56. package/script/src/models/country/types.d.ts +10 -0
  57. package/script/src/models/country/types.d.ts.map +1 -1
  58. package/script/src/models/country/types.js +63 -1
  59. package/script/src/models/country/utils.d.ts +21 -0
  60. package/script/src/models/country/utils.d.ts.map +1 -0
  61. package/script/src/models/country/utils.js +30 -0
  62. package/script/src/models/currency/currency.d.ts +7 -6
  63. package/script/src/models/currency/currency.d.ts.map +1 -1
  64. package/script/src/models/currency/currency.js +42 -14
  65. package/script/src/models/currency/index.d.ts +1 -0
  66. package/script/src/models/currency/index.d.ts.map +1 -1
  67. package/script/src/models/currency/index.js +1 -0
  68. package/script/src/models/currency/types.d.ts +2 -1
  69. package/script/src/models/currency/types.d.ts.map +1 -1
  70. package/script/src/models/currency/types.js +17 -0
  71. package/script/src/models/currency/utils.d.ts +8 -0
  72. package/script/src/models/currency/utils.d.ts.map +1 -0
  73. 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 {string} _code - The ISO 4217 currency code
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
- * @param input The currency name or ISO code
193
- * @returns A Currency instance if valid input, undefined otherwise
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
- if (!input || typeof input !== "string")
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
- if (text.length === 0)
204
+ // Check for empty string after trimming
205
+ if (text.length === 0) {
200
206
  return undefined;
201
- // deno-lint-ignore no-explicit-any
202
- const currency1 = Currency.fromCode(text);
203
- if (currency1)
204
- return currency1;
205
- const currency2 = Currency.fromName(text);
206
- if (currency2)
207
- return currency2;
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) => new Currency(c.symbol, c.name, c.symbol_native, c.decimal_digits, c.rounding, c.code, c.name_plural));
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,3 +1,4 @@
1
1
  export * from "./currency.js";
2
2
  export * from "./types.js";
3
+ export * from "./utils.js";
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -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"}
@@ -1,2 +1,3 @@
1
1
  export * from "./currency.js";
2
2
  export * from "./types.js";
3
+ export * from "./utils.js";
@@ -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" | "EEK" | "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" | "LTL" | "LVL" | "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" | "SYP" | "THB" | "TND" | "TOP" | "TRY" | "TTD" | "TWD" | "TZS" | "UAH" | "UGX" | "UYU" | "UZS" | "VEF" | "VND" | "XAF" | "XOF" | "YER" | "ZAR" | "ZMK" | "ZWL";
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@temboplus/frontend-core",
3
- "version": "0.2.7",
3
+ "version": "0.2.9",
4
4
  "description": "A JavaScript/TypeScript package providing common utilities and logic shared across front-end TemboPlus projects.",
5
5
  "repository": {
6
6
  "type": "git",