@temboplus/frontend-core 0.2.5 → 0.2.7

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 +63 -14
  2. package/esm/src/data/countries.d.ts +12 -2
  3. package/esm/src/data/countries.js +496 -248
  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 +162 -24
  13. package/esm/src/models/country/country.d.ts.map +1 -1
  14. package/esm/src/models/country/country.js +442 -42
  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 +12 -2
  37. package/script/src/data/countries.js +496 -248
  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 +162 -24
  47. package/script/src/models/country/country.d.ts.map +1 -1
  48. package/script/src/models/country/country.js +453 -49
  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 -111
  73. package/esm/src/models/country/service.d.ts.map +0 -1
  74. package/esm/src/models/country/service.js +0 -366
  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 -111
  82. package/script/src/models/country/service.d.ts.map +0 -1
  83. package/script/src/models/country/service.js +0 -373
  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
@@ -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":"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"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../../../src/src/models/phone_number/global/service.ts"],"names":[],"mappings":"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"}
@@ -69,12 +69,13 @@ export class GlobalPhoneNumberService {
69
69
  * Private constructor to enforce singleton pattern
70
70
  */
71
71
  constructor() {
72
+ // Use Map for countryMetadata
72
73
  Object.defineProperty(this, "countryMetadata", {
73
74
  enumerable: true,
74
75
  configurable: true,
75
76
  writable: true,
76
- value: {}
77
- });
77
+ value: new Map()
78
+ }); // <--- CHANGED
78
79
  Object.defineProperty(this, "sharedCountryCodes", {
79
80
  enumerable: true,
80
81
  configurable: true,
@@ -113,13 +114,14 @@ export class GlobalPhoneNumberService {
113
114
  const data = JSON.parse(JSON.stringify(phonePatterns));
114
115
  // Extract shared country codes
115
116
  this.sharedCountryCodes = data._shared_country_codes || {};
116
- const countries = Object.entries(data)
117
+ // Populate the countryMetadata Map
118
+ const countriesMap = new Map(); // <--- CHANGED
119
+ Object.entries(data)
117
120
  .filter(([key]) => !key.startsWith("_"))
118
- .reduce((result, [key, value]) => {
119
- result[key] = value;
120
- return result;
121
- }, {});
122
- this.countryMetadata = countries;
121
+ .forEach(([key, value]) => {
122
+ countriesMap.set(key, value); // <--- CHANGED (using .set())
123
+ });
124
+ this.countryMetadata = countriesMap; // <--- CHANGED
123
125
  this.initialized = true;
124
126
  }
125
127
  catch (error) {
@@ -129,16 +131,16 @@ export class GlobalPhoneNumberService {
129
131
  /**
130
132
  * Gets the metadata for a specific country
131
133
  *
132
- * @param {string} countryCode - The ISO country code
134
+ * @param {ISO2CountryCode} countryCode - The ISO country code
133
135
  * @returns {CountryMetadata | undefined} The country metadata or undefined if not found
134
136
  */
135
137
  getCountryMetadata(countryCode) {
136
- return this.countryMetadata[countryCode];
138
+ return this.countryMetadata.get(countryCode); // <--- CHANGED (using .get())
137
139
  }
138
140
  /**
139
141
  * Gets all country metadata
140
142
  *
141
- * @returns {CountryMetadataMap} All country metadata
143
+ * @returns {CountryMetadataMap} All country metadata (as a Map)
142
144
  */
143
145
  getAllCountryMetadata() {
144
146
  return this.countryMetadata;
@@ -151,6 +153,7 @@ export class GlobalPhoneNumberService {
151
153
  */
152
154
  getCountriesWithDialCode(dialCode) {
153
155
  const dialCodeStr = dialCode.toString();
156
+ // sharedCountryCodes remains an object, access is unchanged
154
157
  return this.sharedCountryCodes[dialCodeStr] || [];
155
158
  }
156
159
  /**
@@ -161,6 +164,7 @@ export class GlobalPhoneNumberService {
161
164
  */
162
165
  isSharedDialCode(dialCode) {
163
166
  const dialCodeStr = dialCode.toString();
167
+ // sharedCountryCodes remains an object, access is unchanged
164
168
  const countries = this.sharedCountryCodes[dialCodeStr];
165
169
  return countries !== undefined && countries.length > 1;
166
170
  }
@@ -171,9 +175,10 @@ export class GlobalPhoneNumberService {
171
175
  * @returns The country code or undefined if not found
172
176
  */
173
177
  getCountryForDialCode(dialCode) {
174
- for (const [countryCode, metadata] of Object.entries(this.countryMetadata)) {
178
+ // Iterate over Map entries
179
+ for (const [countryCode, metadata] of this.countryMetadata.entries()) { // <--- CHANGED (using .entries())
175
180
  if (metadata.code.toString() === dialCode) {
176
- return countryCode;
181
+ return countryCode; // No need for type assertion here
177
182
  }
178
183
  }
179
184
  return undefined;
@@ -193,23 +198,24 @@ export class GlobalPhoneNumberService {
193
198
  for (let i = 3; i >= 1; i--) {
194
199
  if (numberWithoutPlus.length <= i)
195
200
  continue;
196
- const dialCode = numberWithoutPlus.substring(0, i);
197
- // Check if any country has this dial code
201
+ const potentialDialCode = numberWithoutPlus.substring(0, i); // Renamed for clarity
202
+ // Check if any country has this dial code by iterating Map values
198
203
  let countryFound = false;
199
- for (const [_, metadata] of Object.entries(this.countryMetadata)) {
200
- if (metadata.code.toString() === dialCode) {
204
+ for (const metadata of this.countryMetadata.values()) { // <--- CHANGED (using .values())
205
+ if (metadata.code.toString() === potentialDialCode) {
201
206
  countryFound = true;
202
207
  break;
203
208
  }
204
209
  }
205
210
  if (countryFound) {
206
- const nationalNumber = numberWithoutPlus.substring(dialCode.length);
207
- const isShared = this.isSharedDialCode(dialCode);
211
+ const nationalNumber = numberWithoutPlus.substring(potentialDialCode.length);
212
+ const isShared = this.isSharedDialCode(potentialDialCode);
213
+ // Use the existing methods which now work with the Map internally
208
214
  const possibleCountries = isShared
209
- ? this.sharedCountryCodes[dialCode]
210
- : [this.getCountryForDialCode(dialCode) ?? ""];
215
+ ? this.sharedCountryCodes[potentialDialCode] // Access shared codes directly
216
+ : this.getCountryForDialCode(potentialDialCode) ? [this.getCountryForDialCode(potentialDialCode)] : [];
211
217
  return {
212
- dialCode,
218
+ dialCode: potentialDialCode,
213
219
  isShared,
214
220
  nationalNumber,
215
221
  possibleCountries,
@@ -242,7 +248,7 @@ export class GlobalPhoneNumberService {
242
248
  /**
243
249
  * Determines the most likely type of a phone number
244
250
  *
245
- * @param {string} countryCode - ISO country code
251
+ * @param {ISO2CountryCode} countryCode - ISO country code
246
252
  * @param {string} nationalNumber - The national number to check
247
253
  * @returns {PhoneNumberType} The type of the phone number
248
254
  */
@@ -250,8 +256,10 @@ export class GlobalPhoneNumberService {
250
256
  if (!countryCode || !nationalNumber) {
251
257
  return PhoneNumberType.UNKNOWN;
252
258
  }
253
- const metadata = this.countryMetadata[countryCode];
254
- if (!metadata || !metadata.patterns) {
259
+ // Use .get() to retrieve metadata
260
+ const metadata = this.countryMetadata.get(countryCode); // <--- CHANGED (using .get())
261
+ // Check if metadata exists after .get()
262
+ if (!metadata || !metadata.patterns) { // <--- ADDED Check for undefined
255
263
  return PhoneNumberType.UNKNOWN;
256
264
  }
257
265
  // Verify that required patterns exist
@@ -278,7 +286,7 @@ export class GlobalPhoneNumberService {
278
286
  /**
279
287
  * Validates a phone number against country-specific patterns
280
288
  *
281
- * @param {string} countryCode - ISO country code
289
+ * @param {ISO2CountryCode} countryCode - ISO country code
282
290
  * @param {string} nationalNumber - The national number to validate
283
291
  * @returns {boolean} True if the phone number is valid, false otherwise
284
292
  */
@@ -286,8 +294,10 @@ export class GlobalPhoneNumberService {
286
294
  if (!countryCode || !nationalNumber) {
287
295
  return false;
288
296
  }
289
- const metadata = this.countryMetadata[countryCode];
290
- if (!metadata || !metadata.patterns) {
297
+ // Use .get() to retrieve metadata
298
+ const metadata = this.countryMetadata.get(countryCode); // <--- CHANGED (using .get())
299
+ // Check if metadata exists after .get()
300
+ if (!metadata || !metadata.patterns) { // <--- ADDED Check for undefined
291
301
  return false;
292
302
  }
293
303
  // Verify that required patterns exist
@@ -313,6 +323,7 @@ export class GlobalPhoneNumberService {
313
323
  }
314
324
  /**
315
325
  * Formats a phone number according to the country's formatting rules
326
+ * (No changes needed in this method's logic)
316
327
  *
317
328
  * @param {string} phoneNumber - The phone number to format
318
329
  * @param {PhoneNumberFormat} format - The desired format
@@ -326,6 +337,7 @@ export class GlobalPhoneNumberService {
326
337
  }
327
338
  /**
328
339
  * Creates a PhoneNumber from an international format string
340
+ * (No changes needed in this method's logic)
329
341
  *
330
342
  * @param {string} phoneNumber - The phone number in international format
331
343
  * @returns {PhoneNumber | undefined} The parsed phone number or undefined if invalid
@@ -335,6 +347,7 @@ export class GlobalPhoneNumberService {
335
347
  }
336
348
  /**
337
349
  * Creates a PhoneNumber from a phone number with explicit country
350
+ * (No changes needed in this method's logic)
338
351
  *
339
352
  * @param {string} phoneNumber - The phone number in any format
340
353
  * @param {Country | string} country - The country or country code
@@ -350,6 +363,7 @@ export class GlobalPhoneNumberService {
350
363
  }
351
364
  /**
352
365
  * Extracts the information needed for dialing from one country to another
366
+ * (No changes needed in this method's logic)
353
367
  *
354
368
  * @param {string} fromCountry - ISO code of the country dialing from
355
369
  * @param {PhoneNumber} phoneNumber - The phone number to dial
@@ -365,6 +379,7 @@ export class GlobalPhoneNumberService {
365
379
  }
366
380
  /**
367
381
  * Cleans a phone number by removing all non-digit characters except the leading plus
382
+ * (No changes needed in this method's logic)
368
383
  *
369
384
  * @param {string} phoneNumber - The phone number to clean
370
385
  * @returns {string} The cleaned phone number
@@ -381,6 +396,7 @@ export class GlobalPhoneNumberService {
381
396
  }
382
397
  /**
383
398
  * Extracts the country and national number from an international phone number
399
+ * (No changes needed in this method's logic - relies on extractDialCode which was updated)
384
400
  *
385
401
  * @param {string} phoneNumber - The phone number in international format
386
402
  * @returns {[Country | undefined, string]} The country and national number
@@ -406,25 +422,29 @@ export class GlobalPhoneNumberService {
406
422
  /**
407
423
  * Gets a list of commonly used examples of valid phone numbers for a country
408
424
  *
409
- * @param {string} countryCode - The ISO country code
425
+ * @param {ISO2CountryCode} countryCode - The ISO country code
410
426
  * @returns {string[]} Array of example phone numbers
411
427
  */
412
428
  getExampleNumbers(countryCode) {
413
- const metadata = this.countryMetadata[countryCode];
429
+ // Use .get() to retrieve metadata
430
+ const metadata = this.countryMetadata.get(countryCode); // <--- CHANGED (using .get())
414
431
  if (!metadata)
415
- return [];
432
+ return []; // <--- ADDED Check for undefined
416
433
  const dialCode = metadata.code;
417
434
  const examples = [];
418
- // Since landline and mobile patterns are required, we can always generate examples
419
- // Landline example
420
- examples.push(`+${dialCode}${this.generateExampleFromPattern(metadata.patterns.landline)}`);
421
- // Mobile example
422
- examples.push(`+${dialCode}${this.generateExampleFromPattern(metadata.patterns.mobile)}`);
435
+ // Ensure patterns exist before trying to generate examples
436
+ if (metadata.patterns.landline) {
437
+ examples.push(`+${dialCode}${this.generateExampleFromPattern(metadata.patterns.landline)}`);
438
+ }
439
+ if (metadata.patterns.mobile) {
440
+ examples.push(`+${dialCode}${this.generateExampleFromPattern(metadata.patterns.mobile)}`);
441
+ }
423
442
  return examples;
424
443
  }
425
444
  /**
426
445
  * Generates an example phone number that would match a given pattern
427
446
  * This is a simple implementation that handles basic patterns
447
+ * (No changes needed in this method's logic)
428
448
  *
429
449
  * @param pattern - The regex pattern
430
450
  * @returns A string that would match the pattern
@@ -443,9 +463,10 @@ export class GlobalPhoneNumberService {
443
463
  }
444
464
  /**
445
465
  * Checks if a phone number is valid for a specific country
466
+ * (No changes needed in this method's logic)
446
467
  *
447
468
  * @param {string} phoneNumber - The phone number to validate
448
- * @param {string} countryCode - The ISO country code
469
+ * @param {ISO2CountryCode} countryCode - The ISO country code
449
470
  * @returns {boolean} True if the phone number is valid for the country, false otherwise
450
471
  */
451
472
  isValidForCountry(phoneNumber, countryCode) {
@@ -462,12 +483,12 @@ export class GlobalPhoneNumberService {
462
483
  * @returns True if the dial code exists, false otherwise
463
484
  */
464
485
  hasDialCode(dialCode) {
465
- // Check if it's a shared dial code
486
+ // Check if it's a shared dial code (access unchanged)
466
487
  if (this.sharedCountryCodes[dialCode]?.length > 0) {
467
488
  return true;
468
489
  }
469
- // Check if any country has this dial code
470
- for (const metadata of Object.values(this.countryMetadata)) {
490
+ // Check if any country has this dial code by iterating Map values
491
+ for (const metadata of this.countryMetadata.values()) { // <--- CHANGED (using .values())
471
492
  if (metadata.code.toString() === dialCode) {
472
493
  return true;
473
494
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@temboplus/frontend-core",
3
- "version": "0.2.5",
3
+ "version": "0.2.7",
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",
@@ -15,7 +15,7 @@ declare const _default: {
15
15
  coverage: string;
16
16
  contact_info: string;
17
17
  notes: string;
18
- countries: {
18
+ countries: ({
19
19
  name: string;
20
20
  name_official: string;
21
21
  iso_2: string;
@@ -23,7 +23,17 @@ declare const _default: {
23
23
  flag_emoji: string;
24
24
  continent: string;
25
25
  region: string;
26
- }[];
26
+ currency_iso_code: string;
27
+ } | {
28
+ name: string;
29
+ name_official: string;
30
+ iso_2: string;
31
+ iso_3: string;
32
+ flag_emoji: string;
33
+ continent: string;
34
+ region: string;
35
+ currency_iso_code: null;
36
+ })[];
27
37
  };
28
38
  export default _default;
29
39
  //# sourceMappingURL=countries.d.ts.map