@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
@@ -33,6 +33,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
33
33
  Object.defineProperty(exports, "__esModule", { value: true });
34
34
  exports.CurrencyService = exports.Currency = void 0;
35
35
  const currencies_js_1 = __importDefault(require("../../data/currencies.js"));
36
+ const utils_js_1 = require("./utils.js");
36
37
  /**
37
38
  * Represents a currency with essential details.
38
39
  * @class Currency
@@ -45,7 +46,7 @@ class Currency {
45
46
  * @param {string} _symbolNative - The native symbol of the currency
46
47
  * @param {number} _decimalDigits - Number of decimal places typically used with this currency
47
48
  * @param {number} _rounding - Rounding increment used for this currency
48
- * @param {string} _code - The ISO 4217 currency code
49
+ * @param {CurrencyCode} _code - The ISO 4217 currency code
49
50
  * @param {string} _namePlural - The plural form of the currency name
50
51
  */
51
52
  constructor(_symbol, _name, _symbolNative, _decimalDigits, _rounding, _code, _namePlural) {
@@ -194,23 +195,41 @@ class Currency {
194
195
  return !!currency;
195
196
  }
196
197
  /**
197
- * Attempts to create a Currency instance from a currency name or ISO code
198
- * @param input The currency name or ISO code
199
- * @returns A Currency instance if valid input, undefined otherwise
198
+ * Attempts to create a Currency instance from a currency name or ISO code string.
199
+ * The `CurrencyCode` type provides type hints for valid ISO codes but resolves to `string`.
200
+ * @param input The currency name or ISO code string.
201
+ * @returns A Currency instance if valid input, undefined otherwise.
200
202
  */
201
203
  static from(input) {
202
- if (!input || typeof input !== "string")
204
+ // Handle null or undefined input explicitly
205
+ if (!input || typeof input === "object") {
203
206
  return undefined;
207
+ }
208
+ // Input is guaranteed to be a string here. Trim whitespace.
204
209
  const text = input.trim();
205
- if (text.length === 0)
210
+ // Check for empty string after trimming
211
+ if (text.length === 0) {
206
212
  return undefined;
207
- // deno-lint-ignore no-explicit-any
208
- const currency1 = Currency.fromCode(text);
209
- if (currency1)
210
- return currency1;
211
- const currency2 = Currency.fromName(text);
212
- if (currency2)
213
- return currency2;
213
+ }
214
+ // Check if the input string matches a known CurrencyCode
215
+ if ((0, utils_js_1.isCurrencyCode)(text)) {
216
+ // If it's a valid code format, try creating from code.
217
+ // 'text' is now known to be of type CurrencyCode within this block.
218
+ const currency = Currency.fromCode(text);
219
+ // Return if successful. Note: fromCode itself might return undefined
220
+ // even for a valid code if it's e.g., not supported/enabled.
221
+ if (currency) {
222
+ return currency;
223
+ }
224
+ }
225
+ // If input wasn't a valid CurrencyCode recognized by the type guard,
226
+ // OR if isCurrencyCode returned true but Currency.fromCode(text) returned undefined,
227
+ // then try interpreting the original input string as a name.
228
+ const currencyFromName = Currency.fromName(text);
229
+ if (currencyFromName) {
230
+ return currencyFromName;
231
+ }
232
+ // If neither code nor name interpretation worked
214
233
  return undefined;
215
234
  }
216
235
  /**
@@ -295,7 +314,16 @@ class CurrencyService {
295
314
  initialize() {
296
315
  try {
297
316
  const data = JSON.parse(JSON.stringify(currencies_js_1.default));
298
- 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));
317
+ const currencies = Object.values(data).map(function (c) {
318
+ let code;
319
+ if ((0, utils_js_1.isCurrencyCode)(c.code)) {
320
+ code = c.code;
321
+ }
322
+ else {
323
+ throw new Error(`Unknown currency code: ${c.code}`);
324
+ }
325
+ return new Currency(c.symbol, c.name, c.symbol_native, c.decimal_digits, c.rounding, code, c.name_plural);
326
+ });
299
327
  const codeRecord = {};
300
328
  const nameRecord = {};
301
329
  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"}
@@ -16,3 +16,4 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./currency.js"), exports);
18
18
  __exportStar(require("./types.js"), exports);
19
+ __exportStar(require("./utils.js"), exports);
@@ -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"}
@@ -12,3 +12,20 @@
12
12
  * - Protection against typos and invalid values
13
13
  */
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.ValidCurrencyCodesSet = void 0;
16
+ exports.ValidCurrencyCodesSet = new Set([
17
+ "USD", "CAD", "EUR", "AED", "AFN", "ALL", "AMD", "ARS", "AUD",
18
+ "AZN", "BAM", "BDT", "BGN", "BHD", "BIF", "BND", "BOB", "BRL",
19
+ "BWP", "BYN", "BZD", "CDF", "CHF", "CLP", "CNY", "COP", "CRC",
20
+ "CVE", "CZK", "DJF", "DKK", "DOP", "DZD", "EGP", "ERN", "ETB",
21
+ "GBP", "GEL", "GHS", "GNF", "GTQ", "HKD", "HNL", "HRK", "HUF",
22
+ "IDR", "ILS", "INR", "IQD", "IRR", "ISK", "JMD", "JOD", "JPY",
23
+ "KES", "KHR", "KMF", "KRW", "KWD", "KZT", "LBP", "LKR", "LYD",
24
+ "MAD", "MDL", "MGA", "MKD", "MMK", "MOP", "MUR", "MXN", "MYR",
25
+ "MZN", "NAD", "NGN", "NIO", "NOK", "NPR", "NZD", "OMR", "PAB",
26
+ "PEN", "PHP", "PKR", "PLN", "PYG", "QAR", "RON", "RSD", "RUB",
27
+ "RWF", "SAR", "SDG", "SEK", "SGD", "SOS", "SSP", "SYP", "THB",
28
+ "TND", "TOP", "TRY", "TTD", "TWD", "TZS", "UAH", "UGX", "UYU",
29
+ "UZS", "VES", "VND", "XAF", "XOF", "YER", "ZAR", "ZMW", "STN",
30
+ "MRU", "ZWG"
31
+ ]);
@@ -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,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isCurrencyCode = isCurrencyCode;
4
+ const index_js_1 = require("./index.js");
5
+ /**
6
+ * Type guard to check if a string is a valid CurrencyCode.
7
+ * @param code The string to check.
8
+ * @returns True if the string is a member of the CurrencyCode union type, false otherwise.
9
+ */
10
+ function isCurrencyCode(code) {
11
+ return index_js_1.ValidCurrencyCodesSet.has(code);
12
+ }