@dxtmisha/wiki 0.39.7 → 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.
- package/dist/{defineProperty-DblGXmzD.js → defineProperty-Bjg6wMoX.js} +4 -4
- package/dist/library.js +1 -1
- package/dist/media.js +12 -0
- package/dist/storybook.js +1 -1
- package/package.json +1 -1
- package/src/media/functional/functional-basic/api/api.en.mdx +45 -0
- package/src/media/functional/functional-basic/api/api.ru.mdx +45 -0
- package/src/media/functional/functional-basic/api/api.vi.mdx +45 -0
- package/src/media/functional/functional-basic/classes/Api/Api.en.mdx +54 -54
- package/src/media/functional/functional-basic/classes/Api/Api.ru.mdx +54 -54
- package/src/media/functional/functional-basic/classes/Api/Api.vi.mdx +54 -54
- package/src/media/functional/functional-basic/classes/ApiCache/ApiCache.en.mdx +111 -0
- package/src/media/functional/functional-basic/classes/ApiCache/ApiCache.ru.mdx +111 -0
- package/src/media/functional/functional-basic/classes/ApiCache/ApiCache.vi.mdx +111 -0
- package/src/media/functional/functional-basic/classes/ApiDataReturn/ApiDataReturn.en.mdx +32 -0
- package/src/media/functional/functional-basic/classes/ApiDataReturn/ApiDataReturn.ru.mdx +32 -0
- package/src/media/functional/functional-basic/classes/ApiDataReturn/ApiDataReturn.vi.mdx +32 -0
- package/src/media/functional/functional-basic/classes/ApiDefault/ApiDefault.en.mdx +24 -28
- package/src/media/functional/functional-basic/classes/ApiDefault/ApiDefault.ru.mdx +24 -28
- package/src/media/functional/functional-basic/classes/ApiDefault/ApiDefault.vi.mdx +24 -28
- package/src/media/functional/functional-basic/classes/ApiHeaders/ApiHeaders.en.mdx +28 -14
- package/src/media/functional/functional-basic/classes/ApiHeaders/ApiHeaders.ru.mdx +33 -19
- package/src/media/functional/functional-basic/classes/ApiHeaders/ApiHeaders.vi.mdx +33 -19
- package/src/media/functional/functional-basic/classes/ApiHydration/ApiHydration.en.mdx +56 -0
- package/src/media/functional/functional-basic/classes/ApiHydration/ApiHydration.ru.mdx +56 -0
- package/src/media/functional/functional-basic/classes/ApiHydration/ApiHydration.vi.mdx +55 -0
- package/src/media/functional/functional-basic/classes/ApiInstance/ApiInstance.en.mdx +101 -49
- package/src/media/functional/functional-basic/classes/ApiInstance/ApiInstance.ru.mdx +101 -49
- package/src/media/functional/functional-basic/classes/ApiInstance/ApiInstance.vi.mdx +98 -47
- package/src/media/functional/functional-basic/classes/ApiPreparation/ApiPreparation.en.mdx +44 -26
- package/src/media/functional/functional-basic/classes/ApiPreparation/ApiPreparation.ru.mdx +45 -27
- package/src/media/functional/functional-basic/classes/ApiPreparation/ApiPreparation.vi.mdx +44 -26
- package/src/media/functional/functional-basic/classes/ApiResponse/ApiResponse.en.mdx +50 -21
- package/src/media/functional/functional-basic/classes/ApiResponse/ApiResponse.ru.mdx +54 -25
- package/src/media/functional/functional-basic/classes/ApiResponse/ApiResponse.vi.mdx +55 -26
- package/src/media/functional/functional-basic/classes/ApiStatus/ApiStatus.en.mdx +29 -32
- package/src/media/functional/functional-basic/classes/ApiStatus/ApiStatus.ru.mdx +33 -36
- package/src/media/functional/functional-basic/classes/ApiStatus/ApiStatus.vi.mdx +33 -36
- package/src/media/functional/functional-basic/classes/BroadcastMessage/BroadcastMessage.en.mdx +34 -53
- package/src/media/functional/functional-basic/classes/BroadcastMessage/BroadcastMessage.ru.mdx +33 -52
- package/src/media/functional/functional-basic/classes/BroadcastMessage/BroadcastMessage.vi.mdx +39 -58
- package/src/media/functional/functional-basic/classes/Cache/Cache.en.mdx +7 -4
- package/src/media/functional/functional-basic/classes/Cache/Cache.ru.mdx +7 -4
- package/src/media/functional/functional-basic/classes/Cache/Cache.vi.mdx +28 -25
- package/src/media/functional/functional-basic/classes/CacheItem/CacheItem.en.mdx +45 -53
- package/src/media/functional/functional-basic/classes/CacheItem/CacheItem.ru.mdx +46 -54
- package/src/media/functional/functional-basic/classes/CacheItem/CacheItem.vi.mdx +47 -55
- package/src/media/functional/functional-basic/classes/CacheStatic/CacheStatic.en.mdx +13 -1
- package/src/media/functional/functional-basic/classes/CacheStatic/CacheStatic.ru.mdx +13 -1
- package/src/media/functional/functional-basic/classes/CacheStatic/CacheStatic.vi.mdx +13 -0
- package/src/media/functional/functional-basic/classes/Cookie/Cookie.en.mdx +88 -44
- package/src/media/functional/functional-basic/classes/Cookie/Cookie.ru.mdx +88 -44
- package/src/media/functional/functional-basic/classes/Cookie/Cookie.vi.mdx +85 -41
- package/src/media/functional/functional-basic/classes/CookieBlock/CookieBlock.en.mdx +43 -22
- package/src/media/functional/functional-basic/classes/CookieBlock/CookieBlock.ru.mdx +46 -25
- package/src/media/functional/functional-basic/classes/CookieBlock/CookieBlock.vi.mdx +43 -22
- package/src/media/functional/functional-basic/classes/CookieBlockInstance/CookieBlockInstance.en.mdx +84 -0
- package/src/media/functional/functional-basic/classes/CookieBlockInstance/CookieBlockInstance.ru.mdx +84 -0
- package/src/media/functional/functional-basic/classes/CookieBlockInstance/CookieBlockInstance.vi.mdx +100 -0
- package/src/media/functional/functional-basic/classes/CookieStorage/CookieStorage.en.mdx +153 -0
- package/src/media/functional/functional-basic/classes/CookieStorage/CookieStorage.ru.mdx +153 -0
- package/src/media/functional/functional-basic/classes/CookieStorage/CookieStorage.vi.mdx +153 -0
- package/src/media/functional/functional-basic/classes/DataStorage/DataStorage.en.mdx +32 -25
- package/src/media/functional/functional-basic/classes/DataStorage/DataStorage.ru.mdx +32 -25
- package/src/media/functional/functional-basic/classes/DataStorage/DataStorage.vi.mdx +32 -27
- package/src/media/functional/functional-basic/classes/Datetime/Datetime.en.mdx +36 -4
- package/src/media/functional/functional-basic/classes/Datetime/Datetime.ru.mdx +36 -4
- package/src/media/functional/functional-basic/classes/Datetime/Datetime.vi.mdx +36 -4
- package/src/media/functional/functional-basic/classes/ErrorCenter/ErrorCenter.en.mdx +101 -70
- package/src/media/functional/functional-basic/classes/ErrorCenter/ErrorCenter.ru.mdx +100 -69
- package/src/media/functional/functional-basic/classes/ErrorCenter/ErrorCenter.vi.mdx +101 -70
- package/src/media/functional/functional-basic/classes/ErrorCenterHandler/ErrorCenterHandler.en.mdx +46 -42
- package/src/media/functional/functional-basic/classes/ErrorCenterHandler/ErrorCenterHandler.ru.mdx +46 -42
- package/src/media/functional/functional-basic/classes/ErrorCenterHandler/ErrorCenterHandler.vi.mdx +46 -42
- package/src/media/functional/functional-basic/classes/ErrorCenterInstance/ErrorCenterInstance.en.mdx +44 -96
- package/src/media/functional/functional-basic/classes/ErrorCenterInstance/ErrorCenterInstance.ru.mdx +44 -96
- package/src/media/functional/functional-basic/classes/ErrorCenterInstance/ErrorCenterInstance.vi.mdx +44 -96
- package/src/media/functional/functional-basic/classes/EventItem/EventItem.en.mdx +49 -28
- package/src/media/functional/functional-basic/classes/EventItem/EventItem.ru.mdx +21 -0
- package/src/media/functional/functional-basic/classes/EventItem/EventItem.vi.mdx +63 -42
- package/src/media/functional/functional-basic/classes/Formatters/Formatters.en.mdx +97 -109
- package/src/media/functional/functional-basic/classes/Formatters/Formatters.ru.mdx +86 -98
- package/src/media/functional/functional-basic/classes/Formatters/Formatters.vi.mdx +99 -111
- package/src/media/functional/functional-basic/classes/Geo/Geo.en.mdx +3 -3
- package/src/media/functional/functional-basic/classes/Geo/Geo.ru.mdx +5 -5
- package/src/media/functional/functional-basic/classes/Geo/Geo.vi.mdx +5 -5
- package/src/media/functional/functional-basic/classes/GeoFlag/GeoFlag.en.mdx +83 -40
- package/src/media/functional/functional-basic/classes/GeoFlag/GeoFlag.ru.mdx +83 -40
- package/src/media/functional/functional-basic/classes/GeoFlag/GeoFlag.vi.mdx +87 -44
- package/src/media/functional/functional-basic/classes/GeoInstance/GeoInstance.en.mdx +81 -0
- package/src/media/functional/functional-basic/classes/GeoInstance/GeoInstance.ru.mdx +81 -0
- package/src/media/functional/functional-basic/classes/GeoInstance/GeoInstance.vi.mdx +81 -0
- package/src/media/functional/functional-basic/classes/GeoPhone/GeoPhone.en.mdx +56 -105
- package/src/media/functional/functional-basic/classes/GeoPhone/GeoPhone.ru.mdx +53 -102
- package/src/media/functional/functional-basic/classes/GeoPhone/GeoPhone.vi.mdx +55 -105
- package/src/media/functional/functional-basic/classes/Hash/Hash.en.mdx +18 -7
- package/src/media/functional/functional-basic/classes/Hash/Hash.ru.mdx +18 -7
- package/src/media/functional/functional-basic/classes/Hash/Hash.vi.mdx +18 -7
- package/src/media/functional/functional-basic/classes/HashInstance/HashInstance.en.mdx +54 -0
- package/src/media/functional/functional-basic/classes/HashInstance/HashInstance.ru.mdx +54 -0
- package/src/media/functional/functional-basic/classes/HashInstance/HashInstance.vi.mdx +54 -0
- package/src/media/functional/functional-basic/classes/MetaStatic/MetaStatic.en.mdx +78 -0
- package/src/media/functional/functional-basic/classes/MetaStatic/MetaStatic.ru.mdx +78 -0
- package/src/media/functional/functional-basic/classes/MetaStatic/MetaStatic.vi.mdx +78 -0
- package/src/media/functional/functional-basic/classes/ResumableTimer/ResumableTimer.en.mdx +50 -0
- package/src/media/functional/functional-basic/classes/ResumableTimer/ResumableTimer.ru.mdx +50 -0
- package/src/media/functional/functional-basic/classes/ResumableTimer/ResumableTimer.vi.mdx +50 -0
- package/src/media/functional/functional-basic/classes/ServerStorage/ServerStorage.en.mdx +131 -0
- package/src/media/functional/functional-basic/classes/ServerStorage/ServerStorage.ru.mdx +131 -0
- package/src/media/functional/functional-basic/classes/ServerStorage/ServerStorage.vi.mdx +131 -0
- package/src/media/functional/functional-basic/classes/StorageCallback/StorageCallback.en.mdx +97 -0
- package/src/media/functional/functional-basic/classes/StorageCallback/StorageCallback.ru.mdx +97 -0
- package/src/media/functional/functional-basic/classes/StorageCallback/StorageCallback.vi.mdx +97 -0
- package/src/media/functional/functional-basic/functions/addTagHighlightMatch/addTagHighlightMatch.en.mdx +13 -5
- package/src/media/functional/functional-basic/functions/addTagHighlightMatch/addTagHighlightMatch.ru.mdx +13 -5
- package/src/media/functional/functional-basic/functions/addTagHighlightMatch/addTagHighlightMatch.vi.mdx +13 -5
- package/src/media/functional/functional-basic/functions/anyToString/anyToString.en.mdx +37 -19
- package/src/media/functional/functional-basic/functions/anyToString/anyToString.ru.mdx +37 -19
- package/src/media/functional/functional-basic/functions/anyToString/anyToString.vi.mdx +35 -17
- package/src/media/functional/functional-basic/functions/applyTemplate/applyTemplate.en.mdx +31 -19
- package/src/media/functional/functional-basic/functions/applyTemplate/applyTemplate.ru.mdx +31 -19
- package/src/media/functional/functional-basic/functions/applyTemplate/applyTemplate.vi.mdx +32 -20
- package/src/media/functional/functional-basic/functions/blobToBase64/blobToBase64.en.mdx +29 -15
- package/src/media/functional/functional-basic/functions/blobToBase64/blobToBase64.ru.mdx +28 -14
- package/src/media/functional/functional-basic/functions/blobToBase64/blobToBase64.vi.mdx +28 -14
- package/src/media/functional/functional-basic/functions/capitalize/capitalize.en.mdx +7 -3
- package/src/media/functional/functional-basic/functions/capitalize/capitalize.ru.mdx +7 -3
- package/src/media/functional/functional-basic/functions/capitalize/capitalize.vi.mdx +7 -3
- package/src/media/functional/functional-basic/functions/copyObject/copyObject.en.mdx +17 -13
- package/src/media/functional/functional-basic/functions/copyObject/copyObject.ru.mdx +17 -13
- package/src/media/functional/functional-basic/functions/copyObject/copyObject.vi.mdx +17 -13
- package/src/media/functional/functional-basic/functions/createElement/createElement.en.mdx +2 -0
- package/src/media/functional/functional-basic/functions/createElement/createElement.ru.mdx +2 -0
- package/src/media/functional/functional-basic/functions/createElement/createElement.vi.mdx +2 -0
- package/src/media/functional/functional-basic/functions/encodeAttribute/encodeAttribute.en.mdx +1 -3
- package/src/media/functional/functional-basic/functions/encodeAttribute/encodeAttribute.ru.mdx +1 -3
- package/src/media/functional/functional-basic/functions/encodeAttribute/encodeAttribute.vi.mdx +1 -3
- package/src/media/functional/functional-basic/functions/executeFunction/executeFunction.en.mdx +13 -10
- package/src/media/functional/functional-basic/functions/executeFunction/executeFunction.ru.mdx +14 -11
- package/src/media/functional/functional-basic/functions/executeFunction/executeFunction.vi.mdx +12 -9
- package/src/media/functional/functional-basic/functions/executePromise/executePromise.en.mdx +14 -13
- package/src/media/functional/functional-basic/functions/executePromise/executePromise.ru.mdx +15 -14
- package/src/media/functional/functional-basic/functions/executePromise/executePromise.vi.mdx +14 -13
- package/src/media/functional/functional-basic/functions/forEach/forEach.en.mdx +1 -1
- package/src/media/functional/functional-basic/functions/forEach/forEach.ru.mdx +1 -1
- package/src/media/functional/functional-basic/functions/forEach/forEach.vi.mdx +1 -1
- package/src/media/functional/functional-basic/functions/frame/frame.en.mdx +7 -4
- package/src/media/functional/functional-basic/functions/frame/frame.ru.mdx +6 -3
- package/src/media/functional/functional-basic/functions/frame/frame.vi.mdx +7 -4
- package/src/media/functional/functional-basic/functions/getArrayHighlightMatch/getArrayHighlightMatch.en.mdx +34 -0
- package/src/media/functional/functional-basic/functions/getArrayHighlightMatch/getArrayHighlightMatch.ru.mdx +34 -0
- package/src/media/functional/functional-basic/functions/getArrayHighlightMatch/getArrayHighlightMatch.vi.mdx +35 -0
- package/src/media/functional/functional-basic/functions/getCurrentDate/getCurrentDate.en.mdx +2 -0
- package/src/media/functional/functional-basic/functions/getCurrentDate/getCurrentDate.ru.mdx +2 -0
- package/src/media/functional/functional-basic/functions/getCurrentDate/getCurrentDate.vi.mdx +2 -0
- package/src/media/functional/functional-basic/functions/getCurrentTime/getCurrentTime.en.mdx +21 -0
- package/src/media/functional/functional-basic/functions/getCurrentTime/getCurrentTime.ru.mdx +21 -0
- package/src/media/functional/functional-basic/functions/getCurrentTime/getCurrentTime.vi.mdx +21 -0
- package/src/media/functional/functional-basic/functions/getElementId/getElementId.en.mdx +17 -3
- package/src/media/functional/functional-basic/functions/getElementId/getElementId.ru.mdx +17 -3
- package/src/media/functional/functional-basic/functions/getElementId/getElementId.vi.mdx +18 -4
- package/src/media/functional/functional-basic/functions/getElementSafeScript/getElementSafeScript.en.mdx +31 -0
- package/src/media/functional/functional-basic/functions/getElementSafeScript/getElementSafeScript.ru.mdx +31 -0
- package/src/media/functional/functional-basic/functions/getElementSafeScript/getElementSafeScript.vi.mdx +31 -0
- package/src/media/functional/functional-basic/functions/getOnlyText/getOnlyText.en.mdx +25 -0
- package/src/media/functional/functional-basic/functions/getOnlyText/getOnlyText.ru.mdx +25 -0
- package/src/media/functional/functional-basic/functions/getOnlyText/getOnlyText.vi.mdx +25 -0
- package/src/media/functional/functional-basic/functions/getSearchExp/getSearchExp.en.mdx +11 -4
- package/src/media/functional/functional-basic/functions/getSearchExp/getSearchExp.ru.mdx +14 -7
- package/src/media/functional/functional-basic/functions/getSearchExp/getSearchExp.vi.mdx +13 -6
- package/src/media/functional/functional-basic/functions/getSeparatingSearchExp/getSeparatingSearchExp.en.mdx +3 -2
- package/src/media/functional/functional-basic/functions/getSeparatingSearchExp/getSeparatingSearchExp.ru.mdx +3 -2
- package/src/media/functional/functional-basic/functions/getSeparatingSearchExp/getSeparatingSearchExp.vi.mdx +3 -2
- package/src/media/functional/functional-basic/functions/toNumber/toNumber.en.mdx +25 -9
- package/src/media/functional/functional-basic/functions/toNumber/toNumber.ru.mdx +25 -9
- package/src/media/functional/functional-basic/functions/toNumber/toNumber.vi.mdx +25 -9
- package/src/media/functional/functional-basic/functions/toString/toString.en.mdx +28 -0
- package/src/media/functional/functional-basic/functions/toString/toString.ru.mdx +28 -0
- package/src/media/functional/functional-basic/functions/toString/toString.vi.mdx +28 -0
- package/src/media/functional/ui/about/about.en.mdx +45 -0
- package/src/media/functional/ui/about/about.ru.mdx +45 -0
- package/src/media/functional/ui/about/about.vi.mdx +45 -0
- package/src/media/functional/ui/component/component.en.mdx +104 -0
- package/src/media/functional/ui/component/component.ru.mdx +106 -0
- package/src/media/functional/ui/component/component.vi.mdx +104 -0
- package/src/media/functional/ui/setup/setup.en.mdx +72 -0
- package/src/media/functional/ui/setup/setup.ru.mdx +72 -0
- package/src/media/functional/ui/setup/setup.vi.mdx +72 -0
- package/src/media/functional/ui/wiki-data.en.mdx +114 -0
- package/src/media/functional/ui/wiki-data.ru.mdx +114 -0
- package/src/media/functional/ui/wiki-data.vi.mdx +114 -0
|
@@ -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
|
|
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
|
|
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
|
|
14
|
-
- **Prefix Tree Optimization** — Uses a specialized `map` structure (
|
|
15
|
-
- **Intelligent Normalization** — Automatically handles regional dialing variations
|
|
16
|
-
- **Standardized Formatting** — Converts raw numeric strings into
|
|
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
|
-
|
|
25
|
-
- `phone: string` — The target phone number to analyze (accepts raw or partially formatted strings).
|
|
16
|
+
## Basic Usage
|
|
26
17
|
|
|
27
|
-
|
|
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
|
-
|
|
33
|
-
|
|
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
|
-
|
|
48
|
-
|
|
49
|
-
|
|
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
|
-
|
|
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
|
-
|
|
62
|
-
|
|
63
|
-
```javascript
|
|
64
|
-
GeoPhone.getByCode('RU')
|
|
65
|
-
// { info: { phone: 7, ... }, mask: ['7 (***) ***-**-**'], ... }
|
|
66
|
-
```
|
|
34
|
+
### Information
|
|
67
35
|
|
|
68
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
###
|
|
45
|
+
### Auxiliary
|
|
76
46
|
|
|
77
|
-
|
|
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
|
-
|
|
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
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
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
|
-
|
|
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
|
-
|
|
95
|
-
- `phone: string` — The input phone number string.
|
|
73
|
+
## Examples
|
|
96
74
|
|
|
97
|
-
|
|
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.
|
|
101
|
-
|
|
81
|
+
const mapInfo = GeoPhone.getByCode('RU')
|
|
82
|
+
console.log(mapInfo.mask[0]) // '~ (***) ***-**-**'
|
|
102
83
|
```
|
|
103
84
|
|
|
104
|
-
|
|
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
|
-
|
|
123
|
-
|
|
124
|
-
//
|
|
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
|
|
15
|
-
- **Интеллектуальная нормализация** — автоматически обрабатывает региональные вариации набора, такие как ведущие нули или национальные
|
|
16
|
-
- **Стандартизированное форматирование** — преобразует сырые числовые строки в читаемые
|
|
17
|
-
|
|
18
|
-
## Методы поиска
|
|
19
|
-
|
|
20
|
-
### `getByPhone`
|
|
21
|
-
|
|
22
|
-
Основной метод идентификации, который анализирует строку номера телефона для извлечения географической информации и наиболее подходящей маски нумерации.
|
|
12
|
+
- **Оптимизация дерева префиксов** — использует специализированную структуру `map` (Trie) для высокопроизводительного поиска.
|
|
13
|
+
- **Интеллектуальная нормализация** — автоматически обрабатывает региональные вариации набора, такие как ведущие нули или национальные префиксы.
|
|
14
|
+
- **Стандартизированное форматирование** — преобразует сырые числовые строки в читаемые форматы.
|
|
23
15
|
|
|
24
|
-
|
|
25
|
-
- `phone: string` — целевой номер телефона для анализа (принимает как сырые, так и частично отформатированные строки).
|
|
16
|
+
## Базовое использование
|
|
26
17
|
|
|
27
|
-
|
|
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
|
-
|
|
48
|
-
|
|
49
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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` —
|
|
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
|
-
- `
|
|
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
|
-
|
|
123
|
-
|
|
124
|
-
//
|
|
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
|
```
|