@dxtmisha/wiki 0.39.6 → 0.39.8

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 (194) hide show
  1. package/dist/defineProperty-Bjg6wMoX.js +39 -0
  2. package/dist/library.d.ts +0 -1
  3. package/dist/library.js +25 -25
  4. package/dist/media.js +12 -0
  5. package/dist/storybook.js +26929 -11
  6. package/package.json +1 -1
  7. package/src/library.ts +0 -1
  8. package/src/media/functional/functional-basic/api/api.en.mdx +45 -0
  9. package/src/media/functional/functional-basic/api/api.ru.mdx +45 -0
  10. package/src/media/functional/functional-basic/api/api.vi.mdx +45 -0
  11. package/src/media/functional/functional-basic/classes/Api/Api.en.mdx +54 -54
  12. package/src/media/functional/functional-basic/classes/Api/Api.ru.mdx +54 -54
  13. package/src/media/functional/functional-basic/classes/Api/Api.vi.mdx +54 -54
  14. package/src/media/functional/functional-basic/classes/ApiCache/ApiCache.en.mdx +111 -0
  15. package/src/media/functional/functional-basic/classes/ApiCache/ApiCache.ru.mdx +111 -0
  16. package/src/media/functional/functional-basic/classes/ApiCache/ApiCache.vi.mdx +111 -0
  17. package/src/media/functional/functional-basic/classes/ApiDataReturn/ApiDataReturn.en.mdx +32 -0
  18. package/src/media/functional/functional-basic/classes/ApiDataReturn/ApiDataReturn.ru.mdx +32 -0
  19. package/src/media/functional/functional-basic/classes/ApiDataReturn/ApiDataReturn.vi.mdx +32 -0
  20. package/src/media/functional/functional-basic/classes/ApiDefault/ApiDefault.en.mdx +24 -28
  21. package/src/media/functional/functional-basic/classes/ApiDefault/ApiDefault.ru.mdx +24 -28
  22. package/src/media/functional/functional-basic/classes/ApiDefault/ApiDefault.vi.mdx +24 -28
  23. package/src/media/functional/functional-basic/classes/ApiHeaders/ApiHeaders.en.mdx +28 -14
  24. package/src/media/functional/functional-basic/classes/ApiHeaders/ApiHeaders.ru.mdx +33 -19
  25. package/src/media/functional/functional-basic/classes/ApiHeaders/ApiHeaders.vi.mdx +33 -19
  26. package/src/media/functional/functional-basic/classes/ApiHydration/ApiHydration.en.mdx +56 -0
  27. package/src/media/functional/functional-basic/classes/ApiHydration/ApiHydration.ru.mdx +56 -0
  28. package/src/media/functional/functional-basic/classes/ApiHydration/ApiHydration.vi.mdx +55 -0
  29. package/src/media/functional/functional-basic/classes/ApiInstance/ApiInstance.en.mdx +101 -49
  30. package/src/media/functional/functional-basic/classes/ApiInstance/ApiInstance.ru.mdx +101 -49
  31. package/src/media/functional/functional-basic/classes/ApiInstance/ApiInstance.vi.mdx +98 -47
  32. package/src/media/functional/functional-basic/classes/ApiPreparation/ApiPreparation.en.mdx +44 -26
  33. package/src/media/functional/functional-basic/classes/ApiPreparation/ApiPreparation.ru.mdx +45 -27
  34. package/src/media/functional/functional-basic/classes/ApiPreparation/ApiPreparation.vi.mdx +44 -26
  35. package/src/media/functional/functional-basic/classes/ApiResponse/ApiResponse.en.mdx +50 -21
  36. package/src/media/functional/functional-basic/classes/ApiResponse/ApiResponse.ru.mdx +54 -25
  37. package/src/media/functional/functional-basic/classes/ApiResponse/ApiResponse.vi.mdx +55 -26
  38. package/src/media/functional/functional-basic/classes/ApiStatus/ApiStatus.en.mdx +29 -32
  39. package/src/media/functional/functional-basic/classes/ApiStatus/ApiStatus.ru.mdx +33 -36
  40. package/src/media/functional/functional-basic/classes/ApiStatus/ApiStatus.vi.mdx +33 -36
  41. package/src/media/functional/functional-basic/classes/BroadcastMessage/BroadcastMessage.en.mdx +34 -53
  42. package/src/media/functional/functional-basic/classes/BroadcastMessage/BroadcastMessage.ru.mdx +33 -52
  43. package/src/media/functional/functional-basic/classes/BroadcastMessage/BroadcastMessage.vi.mdx +39 -58
  44. package/src/media/functional/functional-basic/classes/Cache/Cache.en.mdx +7 -4
  45. package/src/media/functional/functional-basic/classes/Cache/Cache.ru.mdx +7 -4
  46. package/src/media/functional/functional-basic/classes/Cache/Cache.vi.mdx +28 -25
  47. package/src/media/functional/functional-basic/classes/CacheItem/CacheItem.en.mdx +45 -53
  48. package/src/media/functional/functional-basic/classes/CacheItem/CacheItem.ru.mdx +46 -54
  49. package/src/media/functional/functional-basic/classes/CacheItem/CacheItem.vi.mdx +47 -55
  50. package/src/media/functional/functional-basic/classes/CacheStatic/CacheStatic.en.mdx +13 -1
  51. package/src/media/functional/functional-basic/classes/CacheStatic/CacheStatic.ru.mdx +13 -1
  52. package/src/media/functional/functional-basic/classes/CacheStatic/CacheStatic.vi.mdx +13 -0
  53. package/src/media/functional/functional-basic/classes/Cookie/Cookie.en.mdx +88 -44
  54. package/src/media/functional/functional-basic/classes/Cookie/Cookie.ru.mdx +88 -44
  55. package/src/media/functional/functional-basic/classes/Cookie/Cookie.vi.mdx +85 -41
  56. package/src/media/functional/functional-basic/classes/CookieBlock/CookieBlock.en.mdx +43 -22
  57. package/src/media/functional/functional-basic/classes/CookieBlock/CookieBlock.ru.mdx +46 -25
  58. package/src/media/functional/functional-basic/classes/CookieBlock/CookieBlock.vi.mdx +43 -22
  59. package/src/media/functional/functional-basic/classes/CookieBlockInstance/CookieBlockInstance.en.mdx +84 -0
  60. package/src/media/functional/functional-basic/classes/CookieBlockInstance/CookieBlockInstance.ru.mdx +84 -0
  61. package/src/media/functional/functional-basic/classes/CookieBlockInstance/CookieBlockInstance.vi.mdx +100 -0
  62. package/src/media/functional/functional-basic/classes/CookieStorage/CookieStorage.en.mdx +153 -0
  63. package/src/media/functional/functional-basic/classes/CookieStorage/CookieStorage.ru.mdx +153 -0
  64. package/src/media/functional/functional-basic/classes/CookieStorage/CookieStorage.vi.mdx +153 -0
  65. package/src/media/functional/functional-basic/classes/DataStorage/DataStorage.en.mdx +32 -25
  66. package/src/media/functional/functional-basic/classes/DataStorage/DataStorage.ru.mdx +32 -25
  67. package/src/media/functional/functional-basic/classes/DataStorage/DataStorage.vi.mdx +32 -27
  68. package/src/media/functional/functional-basic/classes/Datetime/Datetime.en.mdx +36 -4
  69. package/src/media/functional/functional-basic/classes/Datetime/Datetime.ru.mdx +36 -4
  70. package/src/media/functional/functional-basic/classes/Datetime/Datetime.vi.mdx +36 -4
  71. package/src/media/functional/functional-basic/classes/ErrorCenter/ErrorCenter.en.mdx +101 -70
  72. package/src/media/functional/functional-basic/classes/ErrorCenter/ErrorCenter.ru.mdx +100 -69
  73. package/src/media/functional/functional-basic/classes/ErrorCenter/ErrorCenter.vi.mdx +101 -70
  74. package/src/media/functional/functional-basic/classes/ErrorCenterHandler/ErrorCenterHandler.en.mdx +46 -42
  75. package/src/media/functional/functional-basic/classes/ErrorCenterHandler/ErrorCenterHandler.ru.mdx +46 -42
  76. package/src/media/functional/functional-basic/classes/ErrorCenterHandler/ErrorCenterHandler.vi.mdx +46 -42
  77. package/src/media/functional/functional-basic/classes/ErrorCenterInstance/ErrorCenterInstance.en.mdx +44 -96
  78. package/src/media/functional/functional-basic/classes/ErrorCenterInstance/ErrorCenterInstance.ru.mdx +44 -96
  79. package/src/media/functional/functional-basic/classes/ErrorCenterInstance/ErrorCenterInstance.vi.mdx +44 -96
  80. package/src/media/functional/functional-basic/classes/EventItem/EventItem.en.mdx +49 -28
  81. package/src/media/functional/functional-basic/classes/EventItem/EventItem.ru.mdx +21 -0
  82. package/src/media/functional/functional-basic/classes/EventItem/EventItem.vi.mdx +63 -42
  83. package/src/media/functional/functional-basic/classes/Formatters/Formatters.en.mdx +97 -109
  84. package/src/media/functional/functional-basic/classes/Formatters/Formatters.ru.mdx +86 -98
  85. package/src/media/functional/functional-basic/classes/Formatters/Formatters.vi.mdx +99 -111
  86. package/src/media/functional/functional-basic/classes/Geo/Geo.en.mdx +3 -3
  87. package/src/media/functional/functional-basic/classes/Geo/Geo.ru.mdx +5 -5
  88. package/src/media/functional/functional-basic/classes/Geo/Geo.vi.mdx +5 -5
  89. package/src/media/functional/functional-basic/classes/GeoFlag/GeoFlag.en.mdx +83 -40
  90. package/src/media/functional/functional-basic/classes/GeoFlag/GeoFlag.ru.mdx +83 -40
  91. package/src/media/functional/functional-basic/classes/GeoFlag/GeoFlag.vi.mdx +87 -44
  92. package/src/media/functional/functional-basic/classes/GeoInstance/GeoInstance.en.mdx +81 -0
  93. package/src/media/functional/functional-basic/classes/GeoInstance/GeoInstance.ru.mdx +81 -0
  94. package/src/media/functional/functional-basic/classes/GeoInstance/GeoInstance.vi.mdx +81 -0
  95. package/src/media/functional/functional-basic/classes/GeoPhone/GeoPhone.en.mdx +56 -105
  96. package/src/media/functional/functional-basic/classes/GeoPhone/GeoPhone.ru.mdx +53 -102
  97. package/src/media/functional/functional-basic/classes/GeoPhone/GeoPhone.vi.mdx +55 -105
  98. package/src/media/functional/functional-basic/classes/Hash/Hash.en.mdx +18 -7
  99. package/src/media/functional/functional-basic/classes/Hash/Hash.ru.mdx +18 -7
  100. package/src/media/functional/functional-basic/classes/Hash/Hash.vi.mdx +18 -7
  101. package/src/media/functional/functional-basic/classes/HashInstance/HashInstance.en.mdx +54 -0
  102. package/src/media/functional/functional-basic/classes/HashInstance/HashInstance.ru.mdx +54 -0
  103. package/src/media/functional/functional-basic/classes/HashInstance/HashInstance.vi.mdx +54 -0
  104. package/src/media/functional/functional-basic/classes/MetaStatic/MetaStatic.en.mdx +78 -0
  105. package/src/media/functional/functional-basic/classes/MetaStatic/MetaStatic.ru.mdx +78 -0
  106. package/src/media/functional/functional-basic/classes/MetaStatic/MetaStatic.vi.mdx +78 -0
  107. package/src/media/functional/functional-basic/classes/ResumableTimer/ResumableTimer.en.mdx +50 -0
  108. package/src/media/functional/functional-basic/classes/ResumableTimer/ResumableTimer.ru.mdx +50 -0
  109. package/src/media/functional/functional-basic/classes/ResumableTimer/ResumableTimer.vi.mdx +50 -0
  110. package/src/media/functional/functional-basic/classes/ServerStorage/ServerStorage.en.mdx +131 -0
  111. package/src/media/functional/functional-basic/classes/ServerStorage/ServerStorage.ru.mdx +131 -0
  112. package/src/media/functional/functional-basic/classes/ServerStorage/ServerStorage.vi.mdx +131 -0
  113. package/src/media/functional/functional-basic/classes/StorageCallback/StorageCallback.en.mdx +97 -0
  114. package/src/media/functional/functional-basic/classes/StorageCallback/StorageCallback.ru.mdx +97 -0
  115. package/src/media/functional/functional-basic/classes/StorageCallback/StorageCallback.vi.mdx +97 -0
  116. package/src/media/functional/functional-basic/functions/addTagHighlightMatch/addTagHighlightMatch.en.mdx +13 -5
  117. package/src/media/functional/functional-basic/functions/addTagHighlightMatch/addTagHighlightMatch.ru.mdx +13 -5
  118. package/src/media/functional/functional-basic/functions/addTagHighlightMatch/addTagHighlightMatch.vi.mdx +13 -5
  119. package/src/media/functional/functional-basic/functions/anyToString/anyToString.en.mdx +37 -19
  120. package/src/media/functional/functional-basic/functions/anyToString/anyToString.ru.mdx +37 -19
  121. package/src/media/functional/functional-basic/functions/anyToString/anyToString.vi.mdx +35 -17
  122. package/src/media/functional/functional-basic/functions/applyTemplate/applyTemplate.en.mdx +31 -19
  123. package/src/media/functional/functional-basic/functions/applyTemplate/applyTemplate.ru.mdx +31 -19
  124. package/src/media/functional/functional-basic/functions/applyTemplate/applyTemplate.vi.mdx +32 -20
  125. package/src/media/functional/functional-basic/functions/blobToBase64/blobToBase64.en.mdx +29 -15
  126. package/src/media/functional/functional-basic/functions/blobToBase64/blobToBase64.ru.mdx +28 -14
  127. package/src/media/functional/functional-basic/functions/blobToBase64/blobToBase64.vi.mdx +28 -14
  128. package/src/media/functional/functional-basic/functions/capitalize/capitalize.en.mdx +7 -3
  129. package/src/media/functional/functional-basic/functions/capitalize/capitalize.ru.mdx +7 -3
  130. package/src/media/functional/functional-basic/functions/capitalize/capitalize.vi.mdx +7 -3
  131. package/src/media/functional/functional-basic/functions/copyObject/copyObject.en.mdx +17 -13
  132. package/src/media/functional/functional-basic/functions/copyObject/copyObject.ru.mdx +17 -13
  133. package/src/media/functional/functional-basic/functions/copyObject/copyObject.vi.mdx +17 -13
  134. package/src/media/functional/functional-basic/functions/createElement/createElement.en.mdx +2 -0
  135. package/src/media/functional/functional-basic/functions/createElement/createElement.ru.mdx +2 -0
  136. package/src/media/functional/functional-basic/functions/createElement/createElement.vi.mdx +2 -0
  137. package/src/media/functional/functional-basic/functions/encodeAttribute/encodeAttribute.en.mdx +1 -3
  138. package/src/media/functional/functional-basic/functions/encodeAttribute/encodeAttribute.ru.mdx +1 -3
  139. package/src/media/functional/functional-basic/functions/encodeAttribute/encodeAttribute.vi.mdx +1 -3
  140. package/src/media/functional/functional-basic/functions/executeFunction/executeFunction.en.mdx +13 -10
  141. package/src/media/functional/functional-basic/functions/executeFunction/executeFunction.ru.mdx +14 -11
  142. package/src/media/functional/functional-basic/functions/executeFunction/executeFunction.vi.mdx +12 -9
  143. package/src/media/functional/functional-basic/functions/executePromise/executePromise.en.mdx +14 -13
  144. package/src/media/functional/functional-basic/functions/executePromise/executePromise.ru.mdx +15 -14
  145. package/src/media/functional/functional-basic/functions/executePromise/executePromise.vi.mdx +14 -13
  146. package/src/media/functional/functional-basic/functions/forEach/forEach.en.mdx +1 -1
  147. package/src/media/functional/functional-basic/functions/forEach/forEach.ru.mdx +1 -1
  148. package/src/media/functional/functional-basic/functions/forEach/forEach.vi.mdx +1 -1
  149. package/src/media/functional/functional-basic/functions/frame/frame.en.mdx +7 -4
  150. package/src/media/functional/functional-basic/functions/frame/frame.ru.mdx +6 -3
  151. package/src/media/functional/functional-basic/functions/frame/frame.vi.mdx +7 -4
  152. package/src/media/functional/functional-basic/functions/getArrayHighlightMatch/getArrayHighlightMatch.en.mdx +34 -0
  153. package/src/media/functional/functional-basic/functions/getArrayHighlightMatch/getArrayHighlightMatch.ru.mdx +34 -0
  154. package/src/media/functional/functional-basic/functions/getArrayHighlightMatch/getArrayHighlightMatch.vi.mdx +35 -0
  155. package/src/media/functional/functional-basic/functions/getCurrentDate/getCurrentDate.en.mdx +2 -0
  156. package/src/media/functional/functional-basic/functions/getCurrentDate/getCurrentDate.ru.mdx +2 -0
  157. package/src/media/functional/functional-basic/functions/getCurrentDate/getCurrentDate.vi.mdx +2 -0
  158. package/src/media/functional/functional-basic/functions/getCurrentTime/getCurrentTime.en.mdx +21 -0
  159. package/src/media/functional/functional-basic/functions/getCurrentTime/getCurrentTime.ru.mdx +21 -0
  160. package/src/media/functional/functional-basic/functions/getCurrentTime/getCurrentTime.vi.mdx +21 -0
  161. package/src/media/functional/functional-basic/functions/getElementId/getElementId.en.mdx +17 -3
  162. package/src/media/functional/functional-basic/functions/getElementId/getElementId.ru.mdx +17 -3
  163. package/src/media/functional/functional-basic/functions/getElementId/getElementId.vi.mdx +18 -4
  164. package/src/media/functional/functional-basic/functions/getElementSafeScript/getElementSafeScript.en.mdx +31 -0
  165. package/src/media/functional/functional-basic/functions/getElementSafeScript/getElementSafeScript.ru.mdx +31 -0
  166. package/src/media/functional/functional-basic/functions/getElementSafeScript/getElementSafeScript.vi.mdx +31 -0
  167. package/src/media/functional/functional-basic/functions/getOnlyText/getOnlyText.en.mdx +25 -0
  168. package/src/media/functional/functional-basic/functions/getOnlyText/getOnlyText.ru.mdx +25 -0
  169. package/src/media/functional/functional-basic/functions/getOnlyText/getOnlyText.vi.mdx +25 -0
  170. package/src/media/functional/functional-basic/functions/getSearchExp/getSearchExp.en.mdx +11 -4
  171. package/src/media/functional/functional-basic/functions/getSearchExp/getSearchExp.ru.mdx +14 -7
  172. package/src/media/functional/functional-basic/functions/getSearchExp/getSearchExp.vi.mdx +13 -6
  173. package/src/media/functional/functional-basic/functions/getSeparatingSearchExp/getSeparatingSearchExp.en.mdx +3 -2
  174. package/src/media/functional/functional-basic/functions/getSeparatingSearchExp/getSeparatingSearchExp.ru.mdx +3 -2
  175. package/src/media/functional/functional-basic/functions/getSeparatingSearchExp/getSeparatingSearchExp.vi.mdx +3 -2
  176. package/src/media/functional/functional-basic/functions/toNumber/toNumber.en.mdx +25 -9
  177. package/src/media/functional/functional-basic/functions/toNumber/toNumber.ru.mdx +25 -9
  178. package/src/media/functional/functional-basic/functions/toNumber/toNumber.vi.mdx +25 -9
  179. package/src/media/functional/functional-basic/functions/toString/toString.en.mdx +28 -0
  180. package/src/media/functional/functional-basic/functions/toString/toString.ru.mdx +28 -0
  181. package/src/media/functional/functional-basic/functions/toString/toString.vi.mdx +28 -0
  182. package/src/media/functional/ui/about/about.en.mdx +45 -0
  183. package/src/media/functional/ui/about/about.ru.mdx +45 -0
  184. package/src/media/functional/ui/about/about.vi.mdx +45 -0
  185. package/src/media/functional/ui/component/component.en.mdx +104 -0
  186. package/src/media/functional/ui/component/component.ru.mdx +106 -0
  187. package/src/media/functional/ui/component/component.vi.mdx +104 -0
  188. package/src/media/functional/ui/setup/setup.en.mdx +72 -0
  189. package/src/media/functional/ui/setup/setup.ru.mdx +72 -0
  190. package/src/media/functional/ui/setup/setup.vi.mdx +72 -0
  191. package/src/media/functional/ui/wiki-data.en.mdx +114 -0
  192. package/src/media/functional/ui/wiki-data.ru.mdx +114 -0
  193. package/src/media/functional/ui/wiki-data.vi.mdx +114 -0
  194. package/dist/WikiStorybookDescriptions-IKMchHA-.js +0 -26959
@@ -0,0 +1,81 @@
1
+ import {Meta} from '@storybook/addon-docs/blocks'
2
+
3
+ <Meta title='@dxtmisha/ru/functional-basic/Classes/GeoInstance - Экземпляр Географических Данных'/>
4
+
5
+ # Класс GeoInstance
6
+
7
+ Класс для работы с географическими данными на уровне экземпляра. Он отвечает за обработку кодов языков (ISO 639-1), стран (ISO 3166-1 alpha-2), временных зон и локализации. В отличие от статического класса `Geo`, `GeoInstance` позволяет создавать независимые объекты со своим состоянием, что особенно важно для изоляции запросов в SSR или в приложениях с несколькими контекстами локализации.
8
+
9
+ ## Ключевые особенности
10
+
11
+ - **Объектно-ориентированность** — позволяет создавать несколько экземпляров с разными конфигурациями.
12
+ - **Автоматическое определение** — интеллектуально определяет локаль через хранилище или настройки окружения при инициализации.
13
+ - **Интеграция с медиа-базой** — предоставляет доступ к полной базе данных стран и языков из библиотеки `@dxtmisha/media`.
14
+ - **Динамическое управление временем** — установка и получение смещения часового пояса на уровне конкретного экземпляра.
15
+
16
+ ## Базовое использование
17
+
18
+ Вы можете создать новый экземпляр класса для управления специфическим географическим контекстом.
19
+
20
+ ```javascript
21
+ import { GeoInstance } from '@dxtmisha/functional-basic'
22
+
23
+ const geo = new GeoInstance()
24
+
25
+ // Получаем текущий код языка
26
+ console.log(geo.getLanguage()) // например, 'ru'
27
+
28
+ // Устанавливаем новую локаль для этого экземпляра
29
+ geo.set('en-US')
30
+
31
+ // Получаем форматированную временную зону
32
+ console.log(geo.getTimezoneFormat()) // например, '+03:00'
33
+ ```
34
+
35
+ ## Методы
36
+
37
+ ### Информация
38
+
39
+ - `get(): GeoItemFull` — Возвращает полный объект данных о текущей стране и языке.
40
+ - `getItem(): GeoItemFull` — Возвращает копию объекта текущих настроек с учетом динамически установленного языка.
41
+ - `getCountry(): string` — Возвращает 2-буквенный код текущей страны (в верхнем регистре).
42
+ - `getLanguage(): string` — Возвращает 2-буквенный код текущего языка (в нижнем регистре).
43
+ - `getStandard(): string` — Возвращает комбинированную строку локали на основе текущих настроек (например, `'en-VN'`).
44
+ - `getLocation(): string` — Возвращает текущую установленную локаль в виде "сырой" строки.
45
+ - `getFirstDay(): string` — Возвращает код первого дня недели для текущей локали (например, `'Mo'`).
46
+ - `getTimezone(): number` — Возвращает смещение часового пояса в минутах.
47
+ - `getTimezoneFormat(): string` — Возвращает смещение часового пояса в строковом формате (например, `'+03:00'`).
48
+
49
+ ### Выбор
50
+
51
+ - `getList(): GeoItem[]` — Возвращает полный список доступных стран и языков.
52
+ - `find(code: string): GeoItemFull` — Алиас для метода `getByCode`.
53
+ - `getByCode(code?: string): GeoItemFull` — Ищет данные по коду. **Приоритет: сначала язык**, затем страна. Если передан код `en-VN`, будет возвращена запись для английского языка (`en-US`).
54
+ - `getByCodeFull(code: string): GeoItem | undefined` — Ищет точное совпадение по полному коду локали (например, `ru-RU`).
55
+ - `getByCountry(country: string): GeoItem | undefined` — Ищет данные конкретно по коду страны.
56
+ - `getByLanguage(language: string): GeoItem | undefined` — Ищет данные конкретно по коду языка.
57
+
58
+ ### Конфигурация
59
+
60
+ - `set(code: string, save?: boolean): void` — Устанавливает локаль для текущего экземпляра.
61
+ - `setTimezone(timezone: number): void` — Устанавливает кастомное смещение часового пояса в минутах.
62
+
63
+ ### Вспомогательные методы
64
+
65
+ - `toStandard(item: GeoItem): string` — Метод для формирования стандартной строки `'язык-страна'` из объекта `GeoItem`.
66
+
67
+ ## Примеры
68
+
69
+ ### Изолированные контексты
70
+ ```javascript
71
+ import { GeoInstance } from '@dxtmisha/functional-basic'
72
+
73
+ const geoRU = new GeoInstance()
74
+ geoRU.set('ru-RU')
75
+
76
+ const geoEN = new GeoInstance()
77
+ geoEN.set('en-US')
78
+
79
+ console.log(geoRU.getLanguage()) // 'ru'
80
+ console.log(geoEN.getLanguage()) // 'en'
81
+ ```
@@ -0,0 +1,81 @@
1
+ import {Meta} from '@storybook/addon-docs/blocks'
2
+
3
+ <Meta title='@dxtmisha/vi/functional-basic/Classes/GeoInstance - Đối Tượng Dữ Liệu Địa Lý'/>
4
+
5
+ # Lớp GeoInstance
6
+
7
+ Một lớp dựa trên đối tượng (instance-based) để quản lý dữ liệu địa lý. Nó xử lý các mã ngôn ngữ (ISO 639-1), mã quốc gia (ISO 3166-1 alpha-2), múi giờ và địa phương hóa. Khác với lớp tĩnh `Geo`, `GeoInstance` cho phép tạo các đối tượng độc lập với trạng thái riêng, điều này đặc biệt hữu ích cho việc cô lập yêu cầu (request isolation) trong môi trường SSR hoặc các ứng dụng đa ngữ cảnh.
8
+
9
+ ## Tính năng chính
10
+
11
+ - **Hướng đối tượng** — cho phép tạo nhiều phiên bản (instances) with các cấu hình khác nhau.
12
+ - **Tự động phát hiện** — xác định thông minh địa phương (locale) thông qua bộ nhớ lưu trữ hoặc các mặc định của môi trường khi khởi tạo.
13
+ - **Tích hợp cơ sở dữ liệu truyền thông** — cung cấp quyền truy cập vào cơ sở dữ liệu toàn diện về các quốc gia và ngôn ngữ từ thư viện `@dxtmisha/media`.
14
+ - **Quản lý thời gian linh hoạt** — thiết lập và truy xuất độ lệch múi giờ ở cấp độ đối tượng.
15
+
16
+ ## Cách sử dụng cơ bản
17
+
18
+ Bạn có thể tạo một đối tượng mới của lớp để quản lý một ngữ cảnh địa lý cụ thể.
19
+
20
+ ```javascript
21
+ import { GeoInstance } from '@dxtmisha/functional-basic'
22
+
23
+ const geo = new GeoInstance()
24
+
25
+ // Lấy mã ngôn ngữ hiện tại
26
+ console.log(geo.getLanguage()) // ví dụ: 'vi'
27
+
28
+ // Thiết lập địa phương mới cho đối tượng này
29
+ geo.set('en-US')
30
+
31
+ // Lấy múi giờ đã định dạng
32
+ console.log(geo.getTimezoneFormat()) // ví dụ: '+07:00'
33
+ ```
34
+
35
+ ## Các phương thức
36
+
37
+ ### Thông tin
38
+
39
+ - `get(): GeoItemFull` — Trả về đối tượng dữ liệu đầy đủ cho quốc gia và ngôn ngữ hiện tại.
40
+ - `getItem(): GeoItemFull` — Trả về một bản sao của đối tượng cài đặt hiện tại, có tính đến ngôn ngữ động.
41
+ - `getCountry(): string` — Trả về mã 2 chữ cái của quốc gia hiện tại (viết hoa).
42
+ - `getLanguage(): string` — Trả về mã 2 chữ cái của ngôn ngữ hiện tại (viết thường).
43
+ - `getStandard(): string` — Trả về chuỗi địa phương kết hợp dựa trên cài đặt hiện tại (ví dụ: `'en-VN'`).
44
+ - `getLocation(): string` — Trả về chuỗi địa phương thô hiện đang được thiết lập.
45
+ - `getFirstDay(): string` — Trả về mã cho ngày đầu tiên của tuần của địa phương hiện tại (ví dụ: `'Mo'`).
46
+ - `getTimezone(): number` — Trả về độ lệch múi giờ tính bằng phút.
47
+ - `getTimezoneFormat(): string` — Trả về độ lệch múi giờ ở định dạng chuỗi (ví dụ: `'+07:00'`).
48
+
49
+ ### Lựa chọn
50
+
51
+ - `getList(): GeoItem[]` — Trả về danh sách đầy đủ các quốc gia và ngôn ngữ có sẵn.
52
+ - `find(code: string): GeoItemFull` — Một bí danh cho phương thức `getByCode`.
53
+ - `getByCode(code?: string): GeoItemFull` — Tìm kiếm dữ liệu theo mã. **Ưu tiên: Ngôn ngữ trước**, sau đó đến Quốc gia. Nếu cung cấp mã `en-VN`, nó sẽ trả về bản ghi cho tiếng Anh (`en-US`).
54
+ - `getByCodeFull(code: string): GeoItem | undefined` — Tìm kiếm kết quả khớp chính xác theo mã địa phương đầy đủ (ví dụ: `vi-VN`).
55
+ - `getByCountry(country: string): GeoItem | undefined` — Tìm kiếm dữ liệu cụ thể theo mã quốc gia.
56
+ - `getByLanguage(language: string): GeoItem | undefined` — Tìm kiếm dữ liệu cụ thể theo mã ngôn ngữ.
57
+
58
+ ### Cấu hình
59
+
60
+ - `set(code: string, save?: boolean): void` — Thiết lập địa phương cho đối tượng hiện tại.
61
+ - `setTimezone(timezone: number): void` — Thiết lập độ lệch múi giờ tùy chỉnh tính bằng phút.
62
+
63
+ ### Phụ trợ
64
+
65
+ - `toStandard(item: GeoItem): string` — Tạo chuỗi `'ngôn ngữ-quốc gia'` tiêu chuẩn từ đối tượng `GeoItem`.
66
+
67
+ ## Ví dụ
68
+
69
+ ### Ngữ cảnh độc lập
70
+ ```javascript
71
+ import { GeoInstance } from '@dxtmisha/functional-basic'
72
+
73
+ const geoVI = new GeoInstance()
74
+ geoVI.set('vi-VN')
75
+
76
+ const geoEN = new GeoInstance()
77
+ geoEN.set('en-US')
78
+
79
+ console.log(geoVI.getLanguage()) // 'vi'
80
+ console.log(geoEN.getLanguage()) // 'en'
81
+ ```
@@ -1,139 +1,90 @@
1
1
  import {Meta} from '@storybook/addon-docs/blocks'
2
2
 
3
- <Meta title='@dxtmisha/en/functional-basic/Classes/GeoPhone - Phone Number Masks'/>
3
+ <Meta title='@dxtmisha/en/functional-basic/Classes/GeoPhone - Phone Masks'/>
4
4
 
5
5
  # GeoPhone Class
6
6
 
7
- A specialized class for storing and processing international phone number masks. It provides a robust engine for identifying geographic country information by phone number strings, formatting raw numbers into localized mask specifications, and managing a comprehensive prefix-tree based map of international phone codes.
8
-
9
- It integrates deeply with `Geo` geolocation data to provide automatic mask resolution based on the current user locale or explicit country codes.
7
+ A specialized class for storing and processing international phone number masks. It provides a mechanism for identifying a country by a phone number string, formatting raw numbers into localized masks, and managing a complex map of phone codes based on a prefix tree. The class is closely integrated with `Geo` data, allowing for automatic mask determination based on the user's current locale or provided country codes.
10
8
 
11
9
  ## Key Features
12
10
 
13
- - **Automatic Mapping** — Resolves the appropriate country and mask pattern dynamically through a recursive prefix-tree lookup.
14
- - **Prefix Tree Optimization** — Uses a specialized `map` structure (Prefix Tree) for efficient, high-performance search across international numbering plans.
15
- - **Intelligent Normalization** — Automatically handles regional dialing variations, such as leading trunk zeros or national prefixes (e.g., Russian '8').
16
- - **Standardized Formatting** — Converts raw numeric strings into human-readable phone formats matching international telephony standards.
17
-
18
- ## Search Methods
19
-
20
- ### `getByPhone`
21
-
22
- Primary identification method that analyzes a phone number string to extract geographic information and the most suitable numbering mask.
11
+ - **Automatic Matching** — Dynamically determines the appropriate country and mask pattern through recursive searching in a prefix tree.
12
+ - **Prefix Tree Optimization** — Uses a specialized `map` structure (Trie) for high-performance searching.
13
+ - **Intelligent Normalization** — Automatically handles regional dialing variations such as leading zeros or national prefixes.
14
+ - **Standardized Formatting** — Converts raw numeric strings into readable formats.
23
15
 
24
- **Parameters:**
25
- - `phone: string` — The target phone number to analyze (accepts raw or partially formatted strings).
16
+ ## Basic Usage
26
17
 
27
- **Returns:** `GeoPhoneMapInfo` A structured payload containing the matched `GeoPhoneMap` item and the normalized numeric portion of the phone.
18
+ You can use the static methods of the class for rapid country identification by phone number or formatting.
28
19
 
29
20
  ```javascript
30
21
  import { GeoPhone } from '@dxtmisha/functional-basic'
31
22
 
32
- const info = GeoPhone.getByPhone('12025550123')
33
- // returns:
34
- // {
35
- // item: { info: { phone: 1, ... }, mask: ['1 (***) ***-****'], ... },
36
- // phone: '2025550123'
37
- // }
38
- ```
39
-
40
- ### `get`
41
-
42
- Retrieves localized phone metadata associated with a specific country code.
43
-
44
- **Parameters:**
45
- - `code: string` — Standard ISO 3166 country code (e.g., `'US'`, `'RU'`, `'VN'`).
23
+ // Identify country by phone number
24
+ const info = GeoPhone.getByPhone('79001234567')
25
+ console.log(info.item?.value) // 'RU'
46
26
 
47
- **Returns:** `GeoPhoneValue | undefined` — The raw metadata for the country, or `undefined` if not found in the dataset.
48
-
49
- ```javascript
50
- GeoPhone.get('US')
51
- // { phone: 1, within: 1, mask: ['* (***) ***-****'], value: 'US' }
27
+ // Formatting by mask
28
+ const formatted = GeoPhone.toMask('9001234567', ['+* (***) ***-**-**'])
29
+ console.log(formatted) // '+7 (900) 123-45-67'
52
30
  ```
53
31
 
54
- ### `getByCode`
55
-
56
- Extended retrieval method that returns complete mask data including the search tree node for a given country code.
57
-
58
- **Parameters:**
59
- - `code: string` — Target country code string.
32
+ ## Methods
60
33
 
61
- **Returns:** `GeoPhoneMap | undefined` — The full map node object for the requested code.
62
-
63
- ```javascript
64
- GeoPhone.getByCode('RU')
65
- // { info: { phone: 7, ... }, mask: ['7 (***) ***-**-**'], ... }
66
- ```
34
+ ### Information
67
35
 
68
- ## Data Access Methods
36
+ - `getList(): GeoPhoneValue[]` — Returns a complete, sorted, flat list of all registered international phone metadata.
37
+ - `getMap(): Record<string, GeoPhoneMap>` — Returns the root node of the internal prefix tree used for searching.
69
38
 
70
- - `getList(): GeoPhoneValue[]` — Returns the complete, sorted flat list of all registered international phone metadata.
71
- - `getMap(): Record<string, GeoPhoneMap>` — Returns the root node of the internal prefix-tree used for high-speed number identification.
39
+ ### Selection
72
40
 
73
- ## Formatting & Utility Methods
41
+ - `get(code: string): GeoPhoneValue | undefined` — Retrieves phone metadata associated with a specific country code.
42
+ - `getByPhone(phone: string): GeoPhoneMapInfo` — Analyzes a phone number string to extract information and the suitable mask.
43
+ - `getByCode(code: string): GeoPhoneMap | undefined` — Returns complete mask information, including the search tree node for a given code.
74
44
 
75
- ### `toMask`
45
+ ### Auxiliary
76
46
 
77
- Transforms a raw numeric phone string into a formatted version based on a specified set of masks.
47
+ - `toMask(phone: string, masks?: string[]): string | undefined` — Converts a raw numeric phone string into a formatted version.
48
+ - `removeZero(phone: string): string` — Standardizes the internal representation of a number by removing leading zeros or adjusting regional prefixes.
78
49
 
79
- **Parameters:**
80
- - `phone: string` — The raw numeric input.
81
- - `masks?: string[]` — An array of valid mask strings to iterate through for property matching.
50
+ ## Data Types
82
51
 
83
- **Returns:** `string | undefined` — The human-formatted string, or `undefined` if no mask length matches the input.
84
-
85
- ```javascript
86
- GeoPhone.toMask('2025550123', ['* (***) ***-****'])
87
- // '1 (202) 555-0123'
88
- ```
89
-
90
- ### `removeZero`
52
+ ### `GeoPhoneValue`
53
+ Basic metadata structure for each country's phone configuration:
54
+ - `phone: number` — Phone country code (e.g., `7`).
55
+ - `within: number` — Internal dialing rule code (used to select the special symbol in the mask).
56
+ - `mask: string[]` — Array of mask patterns assigned to the country.
57
+ - `value: string` — Country identifier (ISO 3166).
91
58
 
92
- Standardizes internal number representation by stripping leading trunk zeros or correcting regional dialing prefixes to ensure consistent search logic.
59
+ ### `GeoPhoneMap`
60
+ A node in the internal prefix tree (Trie) used for searching:
61
+ - `items: GeoPhoneValue[]` — List of all items available in this branch of the tree.
62
+ - `info: GeoPhoneValue | undefined` — Phone metadata if the current node is a complete code.
63
+ - `value: string | undefined` — Country identifier for this node.
64
+ - `mask: string[]` — Array of masks with substituted internal symbols (`~`, `=`, `$`).
65
+ - `maskFull: string[]` — Full masks including the international code.
66
+ - `next: Record<string, GeoPhoneMap>` — Pointers to the next digits in the search tree.
67
+
68
+ ### `GeoPhoneMapInfo`
69
+ Result of the `getByPhone` search method:
70
+ - `item?: GeoPhoneMap` — The found tree node with country and mask information.
71
+ - `phone?: string` — The remaining part of the number after separating the country code.
93
72
 
94
- **Parameters:**
95
- - `phone: string` — The input phone number string.
73
+ ## Examples
96
74
 
97
- **Returns:** `string` The normalized numeric string.
75
+ ### Internal Symbols (Within Logic)
76
+ The class's internal logic replaces the first "asterisk" in the mask with a special symbol depending on regional rules:
77
+ - `~` — for Russia (internal code 8).
78
+ - `=` — for default/other regions (e.g., USA).
98
79
 
99
80
  ```javascript
100
- GeoPhone.removeZero('0671234567') // '671234567'
101
- GeoPhone.removeZero('89001234567') // '9001234567'
81
+ const mapInfo = GeoPhone.getByCode('RU')
82
+ console.log(mapInfo.mask[0]) // '~ (***) ***-**-**'
102
83
  ```
103
84
 
104
- ## GeoPhone Objects
105
-
106
- ### `GeoPhoneValue`
107
- The basic metadata structure for each country's phone configuration:
108
- - `phone: number` — Dialing code (e.g., `7`).
109
- - `within: number` — Internal dialing rule code.
110
- - `mask: string[]` — Array of mask patterns.
111
- - `value: string` — Country identifier.
112
-
113
- ### `GeoPhoneMap`
114
- A node within the internal prefix-tree:
115
- - `items: GeoPhoneValue[]` — List of items under this branch.
116
- - `info: GeoPhoneValue | undefined` — The matched value at this specific numeric node.
117
- - `next: Record<string, GeoPhoneMap>` — Pointers to the next numeric digits in the tree.
118
-
119
- ## Examples
120
-
85
+ ### Multiple Masks
121
86
  ```javascript
122
- import { GeoPhone } from '@dxtmisha/functional'
123
-
124
- // 1. Identify country by phone number
125
- const lookup = GeoPhone.getByPhone('+79001234567')
126
- if (lookup.item) {
127
- console.log('Country:', lookup.item.value) // 'RU'
128
- console.log('Main Mask:', lookup.item.mask[0])
129
- }
130
-
131
- // 2. Manual formatting
132
- const formatted = GeoPhone.toMask('442071234567', ['+** (**) **** ****'])
133
- console.log(formatted) // '+44 (20) 7123 4567'
134
-
135
- // 3. Normalizing input for search
136
- const rawInput = '0084901234567'
137
- const normalized = GeoPhone.removeZero(rawInput.replace(/^00/, ''))
138
- console.log(normalized) // '84901234567'
87
+ const masks = ['+* (***) ***-**-**', '+* (***) ***-***']
88
+ console.log(GeoPhone.toMask('79991234567', masks)) // 11 digits -> '+7 (999) 123-45-67'
89
+ console.log(GeoPhone.toMask('7999123456', masks)) // 10 digits -> '+7 (999) 123-456'
139
90
  ```
@@ -4,136 +4,87 @@ import {Meta} from '@storybook/addon-docs/blocks'
4
4
 
5
5
  # Класс GeoPhone
6
6
 
7
- Специализированный класс для хранения и обработки масок международных телефонных номеров. Обеспечивает мощный механизм идентификации географической информации о стране по строке номера, форматирование необработанных чисел в локализованные маски и управление комплексной картой телефонных кодов на базе префиксного дерева.
8
-
9
- Класс тесно интегрирован с гео-данными `Geo`, что позволяет автоматически определять маску на основе текущей локали пользователя или переданных кодов стран.
7
+ Специализированный класс для хранения и обработки масок международных телефонных номеров. Обеспечивает механизм идентификации страны по строке номера, форматирование необработанных чисел в локализованные маски и управление комплексной картой телефонных кодов на базе префиксного дерева. Класс тесно интегрирован с гео-данными `Geo`, что позволяет автоматически определять маску на основе текущей локали пользователя или переданных кодов стран.
10
8
 
11
9
  ## Ключевые особенности
12
10
 
13
11
  - **Автоматическое сопоставление** — динамически определяет подходящую страну и паттерн маски через рекурсивный поиск по префиксному дереву.
14
- - **Оптимизация дерева префиксов** — использует специализированную структуру `map` (Trie/Prefix Tree) для высокопроизводительного поиска по международным планам нумерации.
15
- - **Интеллектуальная нормализация** — автоматически обрабатывает региональные вариации набора, такие как ведущие нули или национальные префиксы (например, российская «8»).
16
- - **Стандартизированное форматирование** — преобразует сырые числовые строки в читаемые форматы, соответствующие международным стандартам телефонии.
17
-
18
- ## Методы поиска
19
-
20
- ### `getByPhone`
21
-
22
- Основной метод идентификации, который анализирует строку номера телефона для извлечения географической информации и наиболее подходящей маски нумерации.
12
+ - **Оптимизация дерева префиксов** — использует специализированную структуру `map` (Trie) для высокопроизводительного поиска.
13
+ - **Интеллектуальная нормализация** — автоматически обрабатывает региональные вариации набора, такие как ведущие нули или национальные префиксы.
14
+ - **Стандартизированное форматирование** — преобразует сырые числовые строки в читаемые форматы.
23
15
 
24
- **Параметры:**
25
- - `phone: string` — целевой номер телефона для анализа (принимает как сырые, так и частично отформатированные строки).
16
+ ## Базовое использование
26
17
 
27
- **Возвращает:** `GeoPhoneMapInfo` структурированный объект, содержащий найденный элемент `GeoPhoneMap` и нормализованную числовую часть номера.
18
+ Вы можете использовать статические методы класса для быстрой идентификации страны по номеру телефона или форматирования.
28
19
 
29
20
  ```javascript
30
21
  import { GeoPhone } from '@dxtmisha/functional-basic'
31
22
 
23
+ // Идентификация страны по номеру
32
24
  const info = GeoPhone.getByPhone('79001234567')
33
- // возвращает:
34
- // {
35
- // item: { info: { phone: 7, ... }, mask: ['7 (***) ***-**-**'], ... },
36
- // phone: '9001234567'
37
- // }
38
- ```
39
-
40
- ### `get`
41
-
42
- Извлекает локализованные метаданные телефона, связанные с конкретным кодом страны.
43
-
44
- **Параметры:**
45
- - `code: string` — стандартный код страны ISO 3166 (например, `'RU'`, `'US'`, `'VN'`).
25
+ console.log(info.item?.value) // 'RU'
46
26
 
47
- **Возвращает:** `GeoPhoneValue | undefined` — сырые метаданные для страны или `undefined`, если код не найден в базе.
48
-
49
- ```javascript
50
- GeoPhone.get('RU')
51
- // { phone: 7, within: 8, mask: ['* (***) ***-**-**'], value: 'RU' }
27
+ // Форматирование по маске
28
+ const formatted = GeoPhone.toMask('9001234567', ['+* (***) ***-**-**'])
29
+ console.log(formatted) // '+7 (900) 123-45-67'
52
30
  ```
53
31
 
54
- ### `getByCode`
55
-
56
- Расширенный метод получения данных, который возвращает полную информацию о маске, включая узел дерева поиска для заданного кода страны.
57
-
58
- **Параметры:**
59
- - `code: string` — строка целевого кода страны.
60
-
61
- **Возвращает:** `GeoPhoneMap | undefined` — объект узла карты для запрошенного кода.
62
-
63
- ```javascript
64
- GeoPhone.getByCode('US')
65
- // { info: { phone: 1, ... }, mask: ['1 (***) ***-****'], ... }
66
- ```
32
+ ## Методы
67
33
 
68
- ## Методы доступа к данным
34
+ ### Информация
69
35
 
70
- - `getList(): GeoPhoneValue[]` — возвращает полный отсортированный плоский список всех зарегистрированных метаданных международных телефонов.
71
- - `getMap(): Record<string, GeoPhoneMap>` — возвращает корневой узел внутреннего префиксного дерева, используемого для высокоскоростной идентификации номеров.
36
+ - `getList(): GeoPhoneValue[]` — Возвращает полный отсортированный плоский список всех зарегистрированных метаданных международных телефонов.
37
+ - `getMap(): Record<string, GeoPhoneMap>` — Возвращает корневой узел внутреннего префиксного дерева для поиска.
72
38
 
73
- ## Форматирование и утилиты
39
+ ### Выбор
74
40
 
75
- ### `toMask`
41
+ - `get(code: string): GeoPhoneValue | undefined` — Извлекает метаданные телефона, связанные с конкретным кодом страны.
42
+ - `getByPhone(phone: string): GeoPhoneMapInfo` — Анализирует строку номера телефона для извлечения информации и подходящей маски.
43
+ - `getByCode(code: string): GeoPhoneMap | undefined` — Возвращает полную информацию о маске, включая узел дерева поиска для заданного кода.
76
44
 
77
- Преобразует сырую числовую строку телефона в отформатированную версию на основе заданного набора масок.
45
+ ### Вспомогательные методы
78
46
 
79
- **Параметры:**
80
- - `phone: string` — необработанный числовой ввод.
81
- - `masks?: string[]` — массив строк допустимых масок для сопоставления.
47
+ - `toMask(phone: string, masks?: string[]): string | undefined` — Преобразует сырую числовую строку телефона в отформатированную версию.
48
+ - `removeZero(phone: string): string` — Стандартизирует внутреннее представление номера, удаляя ведущие нули или корректируя региональные префиксы.
82
49
 
83
- **Возвращает:** `string | undefined` — отформатированная строка или `undefined`, если длина ввода не соответствует ни одной маске.
84
-
85
- ```javascript
86
- GeoPhone.toMask('9001234567', ['* (***) ***-**-**'])
87
- // '7 (900) 123-45-67'
88
- ```
89
-
90
- ### `removeZero`
91
-
92
- Стандартизирует внутреннее представление номера, удаляя ведущие нули или корректируя региональные префиксы для обеспечения согласованной логики поиска.
93
-
94
- **Параметры:**
95
- - `phone: string` — строка входящего номера телефона.
96
-
97
- **Возвращает:** `string` — нормализованная числовая строка.
98
-
99
- ```javascript
100
- GeoPhone.removeZero('0671234567') // '671234567'
101
- GeoPhone.removeZero('89001234567') // '9001234567'
102
- ```
103
-
104
- ## Объекты GeoPhone
50
+ ## Типы данных
105
51
 
106
52
  ### `GeoPhoneValue`
107
53
  Базовая структура метаданных для конфигурации телефона каждой страны:
108
- - `phone: number` — телефонный код (например, `7`).
109
- - `within: number` — код внутреннего правила набора.
110
- - `mask: string[]` — массив паттернов масок.
111
- - `value: string` — идентификатор страны.
54
+ - `phone: number` — Телефонный код страны (например, `7`).
55
+ - `within: number` — Код внутреннего правила набора (используется для выбора спецсимвола в маске).
56
+ - `mask: string[]` — Массив паттернов масок, закрепленных за страной.
57
+ - `value: string` — Идентификатор страны (ISO 3166).
112
58
 
113
59
  ### `GeoPhoneMap`
114
- Узел внутреннего префиксного дерева:
115
- - `items: GeoPhoneValue[]` — список элементов в этой ветви.
116
- - `info: GeoPhoneValue | undefined` — найденное значение в данном конкретном числовом узле.
117
- - `next: Record<string, GeoPhoneMap>`указатели на следующие цифры номера в дереве.
60
+ Узел внутреннего префиксного дерева (Trie), используемый для поиска:
61
+ - `items: GeoPhoneValue[]` — Список всех элементов, доступных в данной ветви дерева.
62
+ - `info: GeoPhoneValue | undefined` — Метаданные телефона, если текущий узел является завершенным кодом.
63
+ - `value: string | undefined` Идентификатор страны для данного узла.
64
+ - `mask: string[]` — Массив масок с подставленными спецсимволами (`~`, `=`, `$`).
65
+ - `maskFull: string[]` — Полные маски, включая международный код.
66
+ - `next: Record<string, GeoPhoneMap>` — Указатели на следующие цифры номера в дереве поиска.
67
+
68
+ ### `GeoPhoneMapInfo`
69
+ Результат выполнения метода поиска `getByPhone`:
70
+ - `item?: GeoPhoneMap` — Найденный узел дерева с информацией о стране и масках.
71
+ - `phone?: string` — Оставшаяся часть номера после отделения кода страны.
118
72
 
119
73
  ## Примеры
120
74
 
75
+ ### Работа со спецсимволами (Within)
76
+ Внутренняя логика класса заменяет первую "звездочку" в маске на спецсимвол в зависимости от региональных правил:
77
+ - `~` — для России (код внутри страны 8).
78
+ - `$` — для некоторых других регионов.
79
+
80
+ ```javascript
81
+ const mapInfo = GeoPhone.getByCode('RU')
82
+ console.log(mapInfo.mask[0]) // '~ (***) ***-**-**'
83
+ ```
84
+
85
+ ### Множественные маски
121
86
  ```javascript
122
- import { GeoPhone } from '@dxtmisha/functional'
123
-
124
- // 1. Идентификация страны по номеру телефона
125
- const lookup = GeoPhone.getByPhone('+79001234567')
126
- if (lookup.item) {
127
- console.log('Страна:', lookup.item.value) // 'RU'
128
- console.log('Основная маска:', lookup.item.mask[0])
129
- }
130
-
131
- // 2. Ручное форматирование
132
- const formatted = GeoPhone.toMask('442071234567', ['+** (**) **** ****'])
133
- console.log(formatted) // '+44 (20) 7123 4567'
134
-
135
- // 3. Нормализация ввода для поиска
136
- const rawInput = '0084901234567'
137
- const normalized = GeoPhone.removeZero(rawInput.replace(/^00/, ''))
138
- console.log(normalized) // '84901234567'
87
+ const masks = ['+* (***) ***-**-**', '+* (***) ***-***']
88
+ console.log(GeoPhone.toMask('79991234567', masks)) // 11 цифр -> '+7 (999) 123-45-67'
89
+ console.log(GeoPhone.toMask('7999123456', masks)) // 10 цифр -> '+7 (999) 123-456'
139
90
  ```