@temboplus/frontend-core 0.2.4 → 0.2.6

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 (86) hide show
  1. package/README.md +74 -20
  2. package/esm/src/data/countries.d.ts +36 -3
  3. package/esm/src/data/countries.js +2475 -974
  4. package/esm/src/models/amount/amount.d.ts.map +1 -1
  5. package/esm/src/models/amount/amount.js +1 -1
  6. package/esm/src/models/bank/bank.d.ts +127 -0
  7. package/esm/src/models/bank/bank.d.ts.map +1 -1
  8. package/esm/src/models/bank/bank.js +264 -7
  9. package/esm/src/models/bank/index.d.ts +0 -1
  10. package/esm/src/models/bank/index.d.ts.map +1 -1
  11. package/esm/src/models/bank/index.js +0 -1
  12. package/esm/src/models/country/country.d.ts +278 -24
  13. package/esm/src/models/country/country.d.ts.map +1 -1
  14. package/esm/src/models/country/country.js +603 -31
  15. package/esm/src/models/country/index.d.ts +1 -1
  16. package/esm/src/models/country/index.d.ts.map +1 -1
  17. package/esm/src/models/country/index.js +1 -1
  18. package/esm/src/models/country/types.d.ts +53 -0
  19. package/esm/src/models/country/types.d.ts.map +1 -0
  20. package/esm/src/models/country/types.js +43 -0
  21. package/esm/src/models/currency/currency.d.ts +127 -4
  22. package/esm/src/models/currency/currency.d.ts.map +1 -1
  23. package/esm/src/models/currency/currency.js +229 -11
  24. package/esm/src/models/currency/index.d.ts +1 -1
  25. package/esm/src/models/currency/index.d.ts.map +1 -1
  26. package/esm/src/models/currency/index.js +1 -1
  27. package/esm/src/models/currency/types.d.ts +20 -0
  28. package/esm/src/models/currency/types.d.ts.map +1 -0
  29. package/esm/src/models/currency/types.js +13 -0
  30. package/esm/src/models/phone_number/global/phone_number.d.ts +3 -2
  31. package/esm/src/models/phone_number/global/phone_number.d.ts.map +1 -1
  32. package/esm/src/models/phone_number/global/service.d.ts +27 -20
  33. package/esm/src/models/phone_number/global/service.d.ts.map +1 -1
  34. package/esm/src/models/phone_number/global/service.js +61 -40
  35. package/package.json +1 -1
  36. package/script/src/data/countries.d.ts +36 -3
  37. package/script/src/data/countries.js +2475 -974
  38. package/script/src/models/amount/amount.d.ts.map +1 -1
  39. package/script/src/models/amount/amount.js +4 -4
  40. package/script/src/models/bank/bank.d.ts +127 -0
  41. package/script/src/models/bank/bank.d.ts.map +1 -1
  42. package/script/src/models/bank/bank.js +273 -12
  43. package/script/src/models/bank/index.d.ts +0 -1
  44. package/script/src/models/bank/index.d.ts.map +1 -1
  45. package/script/src/models/bank/index.js +0 -1
  46. package/script/src/models/country/country.d.ts +278 -24
  47. package/script/src/models/country/country.d.ts.map +1 -1
  48. package/script/src/models/country/country.js +611 -35
  49. package/script/src/models/country/index.d.ts +1 -1
  50. package/script/src/models/country/index.d.ts.map +1 -1
  51. package/script/src/models/country/index.js +1 -1
  52. package/script/src/models/country/types.d.ts +53 -0
  53. package/script/src/models/country/types.d.ts.map +1 -0
  54. package/script/src/models/country/types.js +46 -0
  55. package/script/src/models/currency/currency.d.ts +127 -4
  56. package/script/src/models/currency/currency.d.ts.map +1 -1
  57. package/script/src/models/currency/currency.js +237 -15
  58. package/script/src/models/currency/index.d.ts +1 -1
  59. package/script/src/models/currency/index.d.ts.map +1 -1
  60. package/script/src/models/currency/index.js +1 -1
  61. package/script/src/models/currency/types.d.ts +20 -0
  62. package/script/src/models/currency/types.d.ts.map +1 -0
  63. package/script/src/models/currency/types.js +14 -0
  64. package/script/src/models/phone_number/global/phone_number.d.ts +3 -2
  65. package/script/src/models/phone_number/global/phone_number.d.ts.map +1 -1
  66. package/script/src/models/phone_number/global/service.d.ts +27 -20
  67. package/script/src/models/phone_number/global/service.d.ts.map +1 -1
  68. package/script/src/models/phone_number/global/service.js +61 -40
  69. package/esm/src/models/bank/service.d.ts +0 -106
  70. package/esm/src/models/bank/service.d.ts.map +0 -1
  71. package/esm/src/models/bank/service.js +0 -240
  72. package/esm/src/models/country/service.d.ts +0 -75
  73. package/esm/src/models/country/service.d.ts.map +0 -1
  74. package/esm/src/models/country/service.js +0 -267
  75. package/esm/src/models/currency/service.d.ts +0 -96
  76. package/esm/src/models/currency/service.d.ts.map +0 -1
  77. package/esm/src/models/currency/service.js +0 -194
  78. package/script/src/models/bank/service.d.ts +0 -106
  79. package/script/src/models/bank/service.d.ts.map +0 -1
  80. package/script/src/models/bank/service.js +0 -247
  81. package/script/src/models/country/service.d.ts +0 -75
  82. package/script/src/models/country/service.d.ts.map +0 -1
  83. package/script/src/models/country/service.js +0 -274
  84. package/script/src/models/currency/service.d.ts +0 -96
  85. package/script/src/models/currency/service.d.ts.map +0 -1
  86. package/script/src/models/currency/service.js +0 -201
@@ -1,7 +1,38 @@
1
1
  "use strict";
2
+ /**
3
+ * @fileoverview This file contains both the Currency class and CurrencyService class.
4
+ *
5
+ * ARCHITECTURE NOTE: Currency and CurrencyService Classes
6
+ * ======================================================
7
+ *
8
+ * These two classes have been intentionally placed in the same file to resolve
9
+ * a circular dependency issue. The original implementation had these in separate files:
10
+ *
11
+ * - Currency class: Defines currency properties and static accessors
12
+ * - CurrencyService class: Loads currency data and provides instance methods
13
+ *
14
+ * The circular dependency occurred because:
15
+ * 1. Currency needed CurrencyService to initialize its static properties
16
+ * 2. CurrencyService needed Currency to create Currency instances
17
+ *
18
+ * Previous attempts to solve this used setTimeout(0) to defer static initialization,
19
+ * but this created race conditions where static properties weren't immediately available
20
+ * after import (Currency.AFN would be undefined on first access).
21
+ *
22
+ * By combining both classes in a single file:
23
+ * - We ensure proper initialization order
24
+ * - All static properties are immediately available after import
25
+ * - The public API remains unchanged
26
+ *
27
+ * This approach follows the principle that closely related classes with circular
28
+ * dependencies are best managed in a unified module.
29
+ */
30
+ var __importDefault = (this && this.__importDefault) || function (mod) {
31
+ return (mod && mod.__esModule) ? mod : { "default": mod };
32
+ };
2
33
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Currency = void 0;
4
- const service_js_1 = require("./service.js");
34
+ exports.CurrencyService = exports.Currency = void 0;
35
+ const currencies_js_1 = __importDefault(require("../../data/currencies.js"));
5
36
  /**
6
37
  * Represents a currency with essential details.
7
38
  * @class Currency
@@ -119,11 +150,11 @@ class Currency {
119
150
  }
120
151
  /**
121
152
  * Retrieves a currency by its ISO code.
122
- * @param {string} code The ISO code of the currency.
153
+ * @param {CurrencyCode} code The ISO code of the currency.
123
154
  * @returns {Currency | undefined} The currency corresponding to the ISO code or `undefined` if not found.
124
155
  */
125
156
  static fromCode(code) {
126
- return service_js_1.CurrencyService.getInstance().fromCode(code);
157
+ return CurrencyService.getInstance().fromCode(code);
127
158
  }
128
159
  /**
129
160
  * Retrieves a currency by its name.
@@ -131,14 +162,14 @@ class Currency {
131
162
  * @returns {Currency | undefined} The currency corresponding to the name or `undefined` if not found.
132
163
  */
133
164
  static fromName(currencyName) {
134
- return service_js_1.CurrencyService.getInstance().fromName(currencyName);
165
+ return CurrencyService.getInstance().fromName(currencyName);
135
166
  }
136
167
  /**
137
168
  * Returns all available currencies.
138
169
  * @returns {Currency[]} Array of all currencies
139
170
  */
140
171
  static getAll() {
141
- return service_js_1.CurrencyService.getInstance().getAll();
172
+ return CurrencyService.getInstance().getAll();
142
173
  }
143
174
  /**
144
175
  * Validates if a given currency code is valid
@@ -173,6 +204,7 @@ class Currency {
173
204
  const text = input.trim();
174
205
  if (text.length === 0)
175
206
  return undefined;
207
+ // deno-lint-ignore no-explicit-any
176
208
  const currency1 = Currency.fromCode(text);
177
209
  if (currency1)
178
210
  return currency1;
@@ -211,19 +243,209 @@ class Currency {
211
243
  }
212
244
  }
213
245
  exports.Currency = Currency;
246
+ /**
247
+ * Service for managing currency data.
248
+ * @class CurrencyService
249
+ */
250
+ class CurrencyService {
251
+ constructor() {
252
+ Object.defineProperty(this, "currencyList", {
253
+ enumerable: true,
254
+ configurable: true,
255
+ writable: true,
256
+ value: []
257
+ });
258
+ Object.defineProperty(this, "currencyRecord", {
259
+ enumerable: true,
260
+ configurable: true,
261
+ writable: true,
262
+ value: {}
263
+ });
264
+ Object.defineProperty(this, "nameRecord", {
265
+ enumerable: true,
266
+ configurable: true,
267
+ writable: true,
268
+ value: {}
269
+ });
270
+ // Static references for direct access through Currency class
271
+ Object.defineProperty(this, "staticReferences", {
272
+ enumerable: true,
273
+ configurable: true,
274
+ writable: true,
275
+ value: new Map()
276
+ });
277
+ }
278
+ /**
279
+ * Gets the singleton instance of CurrencyService.
280
+ * Creates the instance if it doesn't exist.
281
+ * @static
282
+ * @returns {CurrencyService} The singleton instance
283
+ */
284
+ static getInstance() {
285
+ if (!CurrencyService.instance) {
286
+ CurrencyService.instance = new CurrencyService();
287
+ CurrencyService.instance.initialize();
288
+ }
289
+ return CurrencyService.instance;
290
+ }
291
+ /**
292
+ * Initializes the service with currency data.
293
+ * Should be called once when your application starts.
294
+ */
295
+ initialize() {
296
+ try {
297
+ 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));
299
+ const codeRecord = {};
300
+ const nameRecord = {};
301
+ currencies.forEach((currency) => {
302
+ // Populate code record
303
+ codeRecord[currency.code] = currency;
304
+ // Add to record by name
305
+ nameRecord[currency.name.toUpperCase()] = currency;
306
+ const upperCode = currency.code.toUpperCase();
307
+ // Add to static references for uppercase code
308
+ this.staticReferences.set(upperCode, currency);
309
+ // Add formatted full name static reference based on name property
310
+ // Transform from "US Dollar" to "US_DOLLAR"
311
+ const nameKey = currency.name
312
+ .toUpperCase()
313
+ .replace(/\s+/g, "_")
314
+ .replace(/[-(),.']/g, "")
315
+ .replace(/&/g, "AND");
316
+ this.staticReferences.set(nameKey, currency);
317
+ });
318
+ this.currencyRecord = codeRecord;
319
+ this.nameRecord = nameRecord;
320
+ this.currencyList = currencies;
321
+ }
322
+ catch (error) {
323
+ console.error("Failed to initialize CurrencyService:", error);
324
+ }
325
+ }
326
+ /**
327
+ * Gets all currencies.
328
+ * @returns {Currency[]} Array of all currencies
329
+ */
330
+ getAll() {
331
+ return this.currencyList;
332
+ }
333
+ /**
334
+ * Gets all currencies as a record.
335
+ * @returns {Record<string, Currency>} Record of currency codes and currency objects
336
+ */
337
+ getAllAsRecord() {
338
+ return this.currencyRecord;
339
+ }
340
+ /**
341
+ * Gets static currency references to be used by the Currency class.
342
+ * @returns {Map<string, Currency>} Map of static references
343
+ */
344
+ getStaticReferences() {
345
+ return this.staticReferences;
346
+ }
347
+ /**
348
+ * Retrieves a currency by its ISO code.
349
+ * @param {string} code The ISO code of the currency.
350
+ * @returns {Currency | undefined} The currency corresponding to the ISO code or `undefined` if not found.
351
+ */
352
+ fromCode(code) {
353
+ return this.currencyRecord[code.trim().toUpperCase()];
354
+ }
355
+ /**
356
+ * Retrieves a currency by its name.
357
+ * @param {string} currencyName The name of the currency.
358
+ * @returns {Currency | undefined} The currency corresponding to the name or `undefined` if not found.
359
+ */
360
+ fromName(currencyName) {
361
+ const input = currencyName.trim().toUpperCase();
362
+ // First try direct lookup in name record
363
+ const directMatch = this.nameRecord[input];
364
+ if (directMatch)
365
+ return directMatch;
366
+ // If not found, try more lenient matching
367
+ for (const [name, currObj] of Object.entries(this.nameRecord)) {
368
+ if (name.toUpperCase() === input) {
369
+ return currObj;
370
+ }
371
+ }
372
+ // Finally, try case-insensitive exact match
373
+ return this.currencyList.find((currency) => currency.name.toUpperCase() === input);
374
+ }
375
+ /**
376
+ * Validates if a given ISO currency code is valid
377
+ *
378
+ * @param {string | null | undefined} code - The currency code to validate.
379
+ * Should be a three-letter ISO currency code (e.g., 'USD', 'EUR').
380
+ *
381
+ * @returns {boolean} Returns true if:
382
+ * - The currency code is not null/undefined
383
+ * - The currency code successfully resolves to a valid Currency instance
384
+ * Returns false otherwise.
385
+ */
386
+ isValidCode(code) {
387
+ if (!code)
388
+ return false;
389
+ const currency = this.fromCode(code);
390
+ return !!currency;
391
+ }
392
+ /**
393
+ * Validates if a given currency name is valid
394
+ *
395
+ * @param {string | null | undefined} currencyName - The currency name to validate.
396
+ *
397
+ * @returns {boolean} Returns true if:
398
+ * - The currency name is not null/undefined
399
+ * - The currency name successfully resolves to a valid Currency instance
400
+ * Returns false otherwise.
401
+ */
402
+ isValidName(currencyName) {
403
+ if (!currencyName)
404
+ return false;
405
+ const currency = this.fromName(currencyName);
406
+ return !!currency;
407
+ }
408
+ /**
409
+ * Gets a regex-ready pattern matching all currency symbols
410
+ * Pattern is memoized for performance
411
+ * @returns {string} Pipe-separated pattern of escaped currency symbols
412
+ *
413
+ * @example
414
+ * const pattern = currencyService.getCurrencySymbolPattern();
415
+ * // Returns something like: "\$|€|\£|¥"
416
+ */
417
+ getCurrencySymbolPattern() {
418
+ const symbols = new Set();
419
+ Object.values(this.currencyList).forEach((currency) => {
420
+ symbols.add(this.escapeRegExp(currency.symbol));
421
+ symbols.add(this.escapeRegExp(currency.symbolNative));
422
+ });
423
+ return Array.from(symbols).join("|");
424
+ }
425
+ /**
426
+ * Escapes special characters in a string for use in regular expressions
427
+ * @private
428
+ * @param {string} string - The string to escape
429
+ * @returns {string} The escaped string
430
+ *
431
+ * @example
432
+ * private escapeRegExp("$") // Returns "\$"
433
+ */
434
+ escapeRegExp(string) {
435
+ return string.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
436
+ }
437
+ }
438
+ exports.CurrencyService = CurrencyService;
214
439
  // Initialize static properties by applying the references from CurrencyService.
215
- // zero-timeout to defer the initialization until after both modules have been fully loaded.
216
- // The setTimeout pushes the initialization code to the end of the JavaScript event loop,
217
- // which happens after all modules are loaded.
218
- setTimeout(() => {
440
+ (function setupStaticReferences() {
219
441
  try {
220
- const staticRefs = service_js_1.CurrencyService.getInstance().getStaticReferences();
221
- staticRefs.forEach((currency, key) => {
442
+ const refs = CurrencyService.getInstance().getStaticReferences();
443
+ refs.forEach((country, key) => {
222
444
  // deno-lint-ignore no-explicit-any
223
- Currency[key] = currency;
445
+ Currency[key] = country;
224
446
  });
225
447
  }
226
448
  catch (error) {
227
- console.error("Failed to initialize Currency static properties:", error);
449
+ console.log("Failed to set up static references: ", error);
228
450
  }
229
- }, 0);
451
+ })();
@@ -1,3 +1,3 @@
1
1
  export * from "./currency.js";
2
- export * from "./service.js";
2
+ export * from "./types.js";
3
3
  //# 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,cAAc,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"}
@@ -15,4 +15,4 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./currency.js"), exports);
18
- __exportStar(require("./service.js"), exports);
18
+ __exportStar(require("./types.js"), exports);
@@ -0,0 +1,20 @@
1
+ /**
2
+ * @fileoverview Type definitions for ISO currency codes
3
+ *
4
+ * These types provide type-safe representations of standard ISO codes:
5
+ * - CurrencyCode: ISO 4217 currency codes
6
+ *
7
+ * Benefits:
8
+ * - Type-safety at compile time
9
+ * - Zero runtime overhead (compile away to strings)
10
+ * - Autocompletion in modern IDEs
11
+ * - Protection against typos and invalid values
12
+ */
13
+ /**
14
+ * ISO 4217 currency codes
15
+ *
16
+ * These three-letter codes represent currencies based on the ISO 4217 standard.
17
+ * Example: "USD" for US Dollar, "EUR" for Euro, "JPY" for Japanese Yen
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";
20
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ /**
3
+ * @fileoverview Type definitions for ISO currency codes
4
+ *
5
+ * These types provide type-safe representations of standard ISO codes:
6
+ * - CurrencyCode: ISO 4217 currency codes
7
+ *
8
+ * Benefits:
9
+ * - Type-safety at compile time
10
+ * - Zero runtime overhead (compile away to strings)
11
+ * - Autocompletion in modern IDEs
12
+ * - Protection against typos and invalid values
13
+ */
14
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -16,6 +16,7 @@
16
16
  */
17
17
  import { Country } from "../../country/country.js";
18
18
  import { PhoneNumberFormat } from "../format.js";
19
+ import type { CountryCode, ISO2CountryCode } from "../../country/types.js";
19
20
  /**
20
21
  * Options for parsing phone numbers
21
22
  */
@@ -24,7 +25,7 @@ export interface PhoneNumberParseOptions {
24
25
  * Default country to use when a dial code is shared by multiple countries
25
26
  * This can be either a Country object or an ISO country code string
26
27
  */
27
- defaultCountry?: Country | string;
28
+ defaultCountry?: Country | CountryCode;
28
29
  /**
29
30
  * Whether to throw an error when encountering an ambiguous phone number
30
31
  * with a shared dial code
@@ -54,7 +55,7 @@ export declare class PhoneNumber {
54
55
  /**
55
56
  * Gets the country code (ISO) of the phone number
56
57
  */
57
- get countryCode(): string;
58
+ get countryCode(): ISO2CountryCode;
58
59
  /**
59
60
  * Gets the dial code (numeric) of the phone number
60
61
  */
@@ -1 +1 @@
1
- {"version":3,"file":"phone_number.d.ts","sourceRoot":"","sources":["../../../../../src/src/models/phone_number/global/phone_number.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAKnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEjD;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IAElC;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;GAEG;AACH,qBAAa,WAAW;IACtB,oCAAoC;IACpC,OAAO,CAAC,QAAQ,CAAU;IAC1B,gEAAgE;IAChE,OAAO,CAAC,cAAc,CAAS;IAE/B;;;;;;OAMG;IACH,OAAO;IAKP;;OAEG;IACH,IAAI,OAAO,IAAI,OAAO,CAErB;IAED;;OAEG;IACH,IAAI,WAAW,IAAI,MAAM,CAExB;IAED;;OAEG;IACH,IAAI,QAAQ,IAAI,MAAM,CAKrB;IAED;;OAEG;IACH,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED;;OAEG;IACH,IAAI,eAAe,IAAI,MAAM,CAE5B;IAED;;;OAGG;IACH,IAAI,KAAK,IAAI,MAAM,CAElB;IAED;;;;;OAKG;IACH,aAAa,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM;IAoBhD;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAI3B;;;OAGG;IACH,OAAO,CAAC,aAAa;IAIrB;;;;;OAKG;IACH,QAAQ,IAAI,OAAO;IAuCnB;;;;;;;;;OASG;WACW,IAAI,CAChB,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,uBAAuB,GAChC,WAAW,GAAG,SAAS;IAsG1B;;;;;;;;;;;;;OAaG;WACW,eAAe,CAC3B,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,OAAO,GACf,WAAW,GAAG,SAAS;IA0D1B;;;;;;OAMG;WACW,YAAY,CACxB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,EACrB,OAAO,CAAC,EAAE,uBAAuB,GAChC,OAAO;IAsBV;;;;;;OAMG;WACW,uBAAuB,CACnC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,EACrB,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,GACvB,OAAO;IAaV;;;;;OAKG;WACW,EAAE,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,WAAW;IA2BlD;;;;;;;;;OASG;WACW,UAAU,CACtB,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,uBAAuB,GAChC,OAAO,GAAG,SAAS;CAwDvB"}
1
+ {"version":3,"file":"phone_number.d.ts","sourceRoot":"","sources":["../../../../../src/src/models/phone_number/global/phone_number.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAKnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE3E;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,GAAG,WAAW,CAAC;IAEvC;;;OAGG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;GAEG;AACH,qBAAa,WAAW;IACtB,oCAAoC;IACpC,OAAO,CAAC,QAAQ,CAAU;IAC1B,gEAAgE;IAChE,OAAO,CAAC,cAAc,CAAS;IAE/B;;;;;;OAMG;IACH,OAAO;IAKP;;OAEG;IACH,IAAI,OAAO,IAAI,OAAO,CAErB;IAED;;OAEG;IACH,IAAI,WAAW,IAAI,eAAe,CAEjC;IAED;;OAEG;IACH,IAAI,QAAQ,IAAI,MAAM,CAKrB;IAED;;OAEG;IACH,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED;;OAEG;IACH,IAAI,eAAe,IAAI,MAAM,CAE5B;IAED;;;OAGG;IACH,IAAI,KAAK,IAAI,MAAM,CAElB;IAED;;;;;OAKG;IACH,aAAa,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM;IAoBhD;;;OAGG;IACH,OAAO,CAAC,mBAAmB;IAI3B;;;OAGG;IACH,OAAO,CAAC,aAAa;IAIrB;;;;;OAKG;IACH,QAAQ,IAAI,OAAO;IAuCnB;;;;;;;;;OASG;WACW,IAAI,CAChB,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,uBAAuB,GAChC,WAAW,GAAG,SAAS;IAsG1B;;;;;;;;;;;;;OAaG;WACW,eAAe,CAC3B,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,OAAO,GACf,WAAW,GAAG,SAAS;IA0D1B;;;;;;OAMG;WACW,YAAY,CACxB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,EACrB,OAAO,CAAC,EAAE,uBAAuB,GAChC,OAAO;IAsBV;;;;;;OAMG;WACW,uBAAuB,CACnC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,EACrB,OAAO,CAAC,EAAE,OAAO,GAAG,IAAI,GACvB,OAAO;IAaV;;;;;OAKG;WACW,EAAE,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,WAAW;IA2BlD;;;;;;;;;OASG;WACW,UAAU,CACtB,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,uBAAuB,GAChC,OAAO,GAAG,SAAS;CAwDvB"}
@@ -12,6 +12,7 @@
12
12
  import { Country } from "../../country/country.js";
13
13
  import { PhoneNumber } from "./phone_number.js";
14
14
  import { PhoneNumberFormat } from "../format.js";
15
+ import type { ISO2CountryCode } from "../../country/types.js";
15
16
  /**
16
17
  * Complete metadata for a country's phone number system
17
18
  */
@@ -43,11 +44,9 @@ export interface CountryMetadata {
43
44
  _source: string;
44
45
  }
45
46
  /**
46
- * Mapping of ISO country codes to their phone metadata
47
+ * Mapping of ISO country codes to their phone metadata using a Map
47
48
  */
48
- type CountryMetadataMap = {
49
- [isoCode: string]: CountryMetadata;
50
- };
49
+ type CountryMetadataMap = Map<ISO2CountryCode, CountryMetadata>;
51
50
  /**
52
51
  * Phone number pattern type
53
52
  */
@@ -74,7 +73,7 @@ export interface DialCodeInfo {
74
73
  /** The national number (without the dial code) */
75
74
  nationalNumber: string;
76
75
  /** List of country codes that use this dial code */
77
- possibleCountries: string[];
76
+ possibleCountries: ISO2CountryCode[];
78
77
  }
79
78
  /**
80
79
  * Error thrown when a phone number has an ambiguous country due to shared dial code
@@ -83,14 +82,14 @@ export declare class SharedDialCodeError extends Error {
83
82
  /** The dial code that's shared */
84
83
  dialCode: string;
85
84
  /** List of country codes that share this dial code */
86
- countries: string[];
85
+ countries: ISO2CountryCode[];
87
86
  /**
88
87
  * Creates a new SharedDialCodeError
89
88
  *
90
89
  * @param dialCode - The shared dial code
91
90
  * @param countries - Countries that share this dial code
92
91
  */
93
- constructor(dialCode: string, countries: string[]);
92
+ constructor(dialCode: string, countries: ISO2CountryCode[]);
94
93
  }
95
94
  /**
96
95
  * Service for managing global phone number operations
@@ -119,14 +118,14 @@ export declare class GlobalPhoneNumberService {
119
118
  /**
120
119
  * Gets the metadata for a specific country
121
120
  *
122
- * @param {string} countryCode - The ISO country code
121
+ * @param {ISO2CountryCode} countryCode - The ISO country code
123
122
  * @returns {CountryMetadata | undefined} The country metadata or undefined if not found
124
123
  */
125
- getCountryMetadata(countryCode: string): CountryMetadata | undefined;
124
+ getCountryMetadata(countryCode: ISO2CountryCode): CountryMetadata | undefined;
126
125
  /**
127
126
  * Gets all country metadata
128
127
  *
129
- * @returns {CountryMetadataMap} All country metadata
128
+ * @returns {CountryMetadataMap} All country metadata (as a Map)
130
129
  */
131
130
  getAllCountryMetadata(): CountryMetadataMap;
132
131
  /**
@@ -149,7 +148,7 @@ export declare class GlobalPhoneNumberService {
149
148
  * @param dialCode - The dial code to look up
150
149
  * @returns The country code or undefined if not found
151
150
  */
152
- getCountryForDialCode(dialCode: string): string | undefined;
151
+ getCountryForDialCode(dialCode: string): ISO2CountryCode | undefined;
153
152
  /**
154
153
  * Extracts dial code information from a phone number
155
154
  *
@@ -167,21 +166,22 @@ export declare class GlobalPhoneNumberService {
167
166
  /**
168
167
  * Determines the most likely type of a phone number
169
168
  *
170
- * @param {string} countryCode - ISO country code
169
+ * @param {ISO2CountryCode} countryCode - ISO country code
171
170
  * @param {string} nationalNumber - The national number to check
172
171
  * @returns {PhoneNumberType} The type of the phone number
173
172
  */
174
- getNumberType(countryCode: string, nationalNumber: string): PhoneNumberType;
173
+ getNumberType(countryCode: ISO2CountryCode, nationalNumber: string): PhoneNumberType;
175
174
  /**
176
175
  * Validates a phone number against country-specific patterns
177
176
  *
178
- * @param {string} countryCode - ISO country code
177
+ * @param {ISO2CountryCode} countryCode - ISO country code
179
178
  * @param {string} nationalNumber - The national number to validate
180
179
  * @returns {boolean} True if the phone number is valid, false otherwise
181
180
  */
182
- validatePattern(countryCode: string, nationalNumber: string): boolean;
181
+ validatePattern(countryCode: ISO2CountryCode, nationalNumber: string): boolean;
183
182
  /**
184
183
  * Formats a phone number according to the country's formatting rules
184
+ * (No changes needed in this method's logic)
185
185
  *
186
186
  * @param {string} phoneNumber - The phone number to format
187
187
  * @param {PhoneNumberFormat} format - The desired format
@@ -190,6 +190,7 @@ export declare class GlobalPhoneNumberService {
190
190
  formatNumber(phoneNumber: string, format?: PhoneNumberFormat): string;
191
191
  /**
192
192
  * Creates a PhoneNumber from an international format string
193
+ * (No changes needed in this method's logic)
193
194
  *
194
195
  * @param {string} phoneNumber - The phone number in international format
195
196
  * @returns {PhoneNumber | undefined} The parsed phone number or undefined if invalid
@@ -197,14 +198,16 @@ export declare class GlobalPhoneNumberService {
197
198
  parsePhoneNumber(phoneNumber: string): PhoneNumber | undefined;
198
199
  /**
199
200
  * Creates a PhoneNumber from a phone number with explicit country
201
+ * (No changes needed in this method's logic)
200
202
  *
201
203
  * @param {string} phoneNumber - The phone number in any format
202
204
  * @param {Country | string} country - The country or country code
203
205
  * @returns {PhoneNumber | undefined} The parsed phone number or undefined if invalid
204
206
  */
205
- parsePhoneNumberWithCountry(phoneNumber: string, country: Country | string): PhoneNumber | undefined;
207
+ parsePhoneNumberWithCountry(phoneNumber: string, country: Country | ISO2CountryCode): PhoneNumber | undefined;
206
208
  /**
207
209
  * Extracts the information needed for dialing from one country to another
210
+ * (No changes needed in this method's logic)
208
211
  *
209
212
  * @param {string} fromCountry - ISO code of the country dialing from
210
213
  * @param {PhoneNumber} phoneNumber - The phone number to dial
@@ -213,6 +216,7 @@ export declare class GlobalPhoneNumberService {
213
216
  getDialingString(fromCountry: string, phoneNumber: PhoneNumber): string;
214
217
  /**
215
218
  * Cleans a phone number by removing all non-digit characters except the leading plus
219
+ * (No changes needed in this method's logic)
216
220
  *
217
221
  * @param {string} phoneNumber - The phone number to clean
218
222
  * @returns {string} The cleaned phone number
@@ -220,6 +224,7 @@ export declare class GlobalPhoneNumberService {
220
224
  cleanPhoneNumber(phoneNumber: string): string;
221
225
  /**
222
226
  * Extracts the country and national number from an international phone number
227
+ * (No changes needed in this method's logic - relies on extractDialCode which was updated)
223
228
  *
224
229
  * @param {string} phoneNumber - The phone number in international format
225
230
  * @returns {[Country | undefined, string]} The country and national number
@@ -228,13 +233,14 @@ export declare class GlobalPhoneNumberService {
228
233
  /**
229
234
  * Gets a list of commonly used examples of valid phone numbers for a country
230
235
  *
231
- * @param {string} countryCode - The ISO country code
236
+ * @param {ISO2CountryCode} countryCode - The ISO country code
232
237
  * @returns {string[]} Array of example phone numbers
233
238
  */
234
- getExampleNumbers(countryCode: string): string[];
239
+ getExampleNumbers(countryCode: ISO2CountryCode): string[];
235
240
  /**
236
241
  * Generates an example phone number that would match a given pattern
237
242
  * This is a simple implementation that handles basic patterns
243
+ * (No changes needed in this method's logic)
238
244
  *
239
245
  * @param pattern - The regex pattern
240
246
  * @returns A string that would match the pattern
@@ -242,12 +248,13 @@ export declare class GlobalPhoneNumberService {
242
248
  private generateExampleFromPattern;
243
249
  /**
244
250
  * Checks if a phone number is valid for a specific country
251
+ * (No changes needed in this method's logic)
245
252
  *
246
253
  * @param {string} phoneNumber - The phone number to validate
247
- * @param {string} countryCode - The ISO country code
254
+ * @param {ISO2CountryCode} countryCode - The ISO country code
248
255
  * @returns {boolean} True if the phone number is valid for the country, false otherwise
249
256
  */
250
- isValidForCountry(phoneNumber: string, countryCode: string): boolean;
257
+ isValidForCountry(phoneNumber: string, countryCode: ISO2CountryCode): boolean;
251
258
  /**
252
259
  * Checks if a given dial code exists in our database
253
260
  *
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../../../src/src/models/phone_number/global/service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEjD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,uDAAuD;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,oDAAoD;IACpD,QAAQ,EAAE;QACR,8CAA8C;QAC9C,QAAQ,EAAE,MAAM,CAAC;QACjB,4CAA4C;QAC5C,MAAM,EAAE,MAAM,CAAC;QACf,oCAAoC;QACpC,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,uCAAuC;QACvC,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,sCAAsC;QACtC,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,oCAAoC;QACpC,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,mCAAmC;QACnC,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,+BAA+B;QAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,mCAAmC;QACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,yBAAyB;IACzB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,KAAK,kBAAkB,GAAG;IACxB,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,CAAC;CACpC,CAAC;AASF;;GAEG;AACH,oBAAY,eAAe;IACzB,QAAQ,aAAa;IACrB,MAAM,WAAW;IACjB,SAAS,cAAc;IACvB,YAAY,iBAAiB;IAC7B,WAAW,gBAAgB;IAC3B,SAAS,cAAc;IACvB,gBAAgB,qBAAqB;IACrC,IAAI,SAAS;IACb,QAAQ,aAAa;IACrB,OAAO,YAAY;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,4CAA4C;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,6DAA6D;IAC7D,QAAQ,EAAE,OAAO,CAAC;IAClB,kDAAkD;IAClD,cAAc,EAAE,MAAM,CAAC;IACvB,oDAAoD;IACpD,iBAAiB,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;IAC5C,kCAAkC;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,sDAAsD;IACtD,SAAS,EAAE,MAAM,EAAE,CAAC;IAEpB;;;;;OAKG;gBACS,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE;CASlD;AAED;;GAEG;AACH,qBAAa,wBAAwB;IACnC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAA2B;IAClD,OAAO,CAAC,eAAe,CAA0B;IACjD,OAAO,CAAC,kBAAkB,CAA6B;IACvD,OAAO,CAAC,WAAW,CAAkB;IAErC;;OAEG;IACH,OAAO;IAEP;;;;;OAKG;WACW,WAAW,IAAI,wBAAwB;IAQrD;;;OAGG;IACH,OAAO,CAAC,UAAU;IAwBlB;;;;;OAKG;IACI,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAI3E;;;;OAIG;IACI,qBAAqB,IAAI,kBAAkB;IAIlD;;;;;OAKG;IACI,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE;IAKpE;;;;;OAKG;IACI,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO;IAM3D;;;;;OAKG;IACI,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAWlE;;;;;OAKG;IACI,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAwCrE;;;;;OAKG;IACI,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,EAAE;IAgB3D;;;;;;OAMG;IACI,aAAa,CAClB,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,GACrB,eAAe;IAoClB;;;;;;OAMG;IACI,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO;IAmC5E;;;;;;OAMG;IACI,YAAY,CACjB,WAAW,EAAE,MAAM,EACnB,MAAM,GAAE,iBAAmD,GAC1D,MAAM;IAOT;;;;;OAKG;IACI,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAIrE;;;;;;OAMG;IACI,2BAA2B,CAChC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,OAAO,GAAG,MAAM,GACxB,WAAW,GAAG,SAAS;IAU1B;;;;;;OAMG;IACI,gBAAgB,CACrB,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,WAAW,GACvB,MAAM;IAUT;;;;;OAKG;IACI,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;IAapD;;;;;OAKG;IACI,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,CAAC,OAAO,GAAG,SAAS,EAAE,MAAM,CAAC;IAkBvE;;;;;OAKG;IACI,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE;IAyBvD;;;;;;OAMG;IACH,OAAO,CAAC,0BAA0B;IAgBlC;;;;;;OAMG;IACI,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO;IAQ3E;;;;;OAKG;IACI,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;CAe9C"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../../../src/src/models/phone_number/global/service.ts"],"names":[],"mappings":"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"}