@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.
Files changed (191) hide show
  1. package/dist/{defineProperty-DblGXmzD.js → defineProperty-Bjg6wMoX.js} +4 -4
  2. package/dist/library.js +1 -1
  3. package/dist/media.js +12 -0
  4. package/dist/storybook.js +1 -1
  5. package/package.json +1 -1
  6. package/src/media/functional/functional-basic/api/api.en.mdx +45 -0
  7. package/src/media/functional/functional-basic/api/api.ru.mdx +45 -0
  8. package/src/media/functional/functional-basic/api/api.vi.mdx +45 -0
  9. package/src/media/functional/functional-basic/classes/Api/Api.en.mdx +54 -54
  10. package/src/media/functional/functional-basic/classes/Api/Api.ru.mdx +54 -54
  11. package/src/media/functional/functional-basic/classes/Api/Api.vi.mdx +54 -54
  12. package/src/media/functional/functional-basic/classes/ApiCache/ApiCache.en.mdx +111 -0
  13. package/src/media/functional/functional-basic/classes/ApiCache/ApiCache.ru.mdx +111 -0
  14. package/src/media/functional/functional-basic/classes/ApiCache/ApiCache.vi.mdx +111 -0
  15. package/src/media/functional/functional-basic/classes/ApiDataReturn/ApiDataReturn.en.mdx +32 -0
  16. package/src/media/functional/functional-basic/classes/ApiDataReturn/ApiDataReturn.ru.mdx +32 -0
  17. package/src/media/functional/functional-basic/classes/ApiDataReturn/ApiDataReturn.vi.mdx +32 -0
  18. package/src/media/functional/functional-basic/classes/ApiDefault/ApiDefault.en.mdx +24 -28
  19. package/src/media/functional/functional-basic/classes/ApiDefault/ApiDefault.ru.mdx +24 -28
  20. package/src/media/functional/functional-basic/classes/ApiDefault/ApiDefault.vi.mdx +24 -28
  21. package/src/media/functional/functional-basic/classes/ApiHeaders/ApiHeaders.en.mdx +28 -14
  22. package/src/media/functional/functional-basic/classes/ApiHeaders/ApiHeaders.ru.mdx +33 -19
  23. package/src/media/functional/functional-basic/classes/ApiHeaders/ApiHeaders.vi.mdx +33 -19
  24. package/src/media/functional/functional-basic/classes/ApiHydration/ApiHydration.en.mdx +56 -0
  25. package/src/media/functional/functional-basic/classes/ApiHydration/ApiHydration.ru.mdx +56 -0
  26. package/src/media/functional/functional-basic/classes/ApiHydration/ApiHydration.vi.mdx +55 -0
  27. package/src/media/functional/functional-basic/classes/ApiInstance/ApiInstance.en.mdx +101 -49
  28. package/src/media/functional/functional-basic/classes/ApiInstance/ApiInstance.ru.mdx +101 -49
  29. package/src/media/functional/functional-basic/classes/ApiInstance/ApiInstance.vi.mdx +98 -47
  30. package/src/media/functional/functional-basic/classes/ApiPreparation/ApiPreparation.en.mdx +44 -26
  31. package/src/media/functional/functional-basic/classes/ApiPreparation/ApiPreparation.ru.mdx +45 -27
  32. package/src/media/functional/functional-basic/classes/ApiPreparation/ApiPreparation.vi.mdx +44 -26
  33. package/src/media/functional/functional-basic/classes/ApiResponse/ApiResponse.en.mdx +50 -21
  34. package/src/media/functional/functional-basic/classes/ApiResponse/ApiResponse.ru.mdx +54 -25
  35. package/src/media/functional/functional-basic/classes/ApiResponse/ApiResponse.vi.mdx +55 -26
  36. package/src/media/functional/functional-basic/classes/ApiStatus/ApiStatus.en.mdx +29 -32
  37. package/src/media/functional/functional-basic/classes/ApiStatus/ApiStatus.ru.mdx +33 -36
  38. package/src/media/functional/functional-basic/classes/ApiStatus/ApiStatus.vi.mdx +33 -36
  39. package/src/media/functional/functional-basic/classes/BroadcastMessage/BroadcastMessage.en.mdx +34 -53
  40. package/src/media/functional/functional-basic/classes/BroadcastMessage/BroadcastMessage.ru.mdx +33 -52
  41. package/src/media/functional/functional-basic/classes/BroadcastMessage/BroadcastMessage.vi.mdx +39 -58
  42. package/src/media/functional/functional-basic/classes/Cache/Cache.en.mdx +7 -4
  43. package/src/media/functional/functional-basic/classes/Cache/Cache.ru.mdx +7 -4
  44. package/src/media/functional/functional-basic/classes/Cache/Cache.vi.mdx +28 -25
  45. package/src/media/functional/functional-basic/classes/CacheItem/CacheItem.en.mdx +45 -53
  46. package/src/media/functional/functional-basic/classes/CacheItem/CacheItem.ru.mdx +46 -54
  47. package/src/media/functional/functional-basic/classes/CacheItem/CacheItem.vi.mdx +47 -55
  48. package/src/media/functional/functional-basic/classes/CacheStatic/CacheStatic.en.mdx +13 -1
  49. package/src/media/functional/functional-basic/classes/CacheStatic/CacheStatic.ru.mdx +13 -1
  50. package/src/media/functional/functional-basic/classes/CacheStatic/CacheStatic.vi.mdx +13 -0
  51. package/src/media/functional/functional-basic/classes/Cookie/Cookie.en.mdx +88 -44
  52. package/src/media/functional/functional-basic/classes/Cookie/Cookie.ru.mdx +88 -44
  53. package/src/media/functional/functional-basic/classes/Cookie/Cookie.vi.mdx +85 -41
  54. package/src/media/functional/functional-basic/classes/CookieBlock/CookieBlock.en.mdx +43 -22
  55. package/src/media/functional/functional-basic/classes/CookieBlock/CookieBlock.ru.mdx +46 -25
  56. package/src/media/functional/functional-basic/classes/CookieBlock/CookieBlock.vi.mdx +43 -22
  57. package/src/media/functional/functional-basic/classes/CookieBlockInstance/CookieBlockInstance.en.mdx +84 -0
  58. package/src/media/functional/functional-basic/classes/CookieBlockInstance/CookieBlockInstance.ru.mdx +84 -0
  59. package/src/media/functional/functional-basic/classes/CookieBlockInstance/CookieBlockInstance.vi.mdx +100 -0
  60. package/src/media/functional/functional-basic/classes/CookieStorage/CookieStorage.en.mdx +153 -0
  61. package/src/media/functional/functional-basic/classes/CookieStorage/CookieStorage.ru.mdx +153 -0
  62. package/src/media/functional/functional-basic/classes/CookieStorage/CookieStorage.vi.mdx +153 -0
  63. package/src/media/functional/functional-basic/classes/DataStorage/DataStorage.en.mdx +32 -25
  64. package/src/media/functional/functional-basic/classes/DataStorage/DataStorage.ru.mdx +32 -25
  65. package/src/media/functional/functional-basic/classes/DataStorage/DataStorage.vi.mdx +32 -27
  66. package/src/media/functional/functional-basic/classes/Datetime/Datetime.en.mdx +36 -4
  67. package/src/media/functional/functional-basic/classes/Datetime/Datetime.ru.mdx +36 -4
  68. package/src/media/functional/functional-basic/classes/Datetime/Datetime.vi.mdx +36 -4
  69. package/src/media/functional/functional-basic/classes/ErrorCenter/ErrorCenter.en.mdx +101 -70
  70. package/src/media/functional/functional-basic/classes/ErrorCenter/ErrorCenter.ru.mdx +100 -69
  71. package/src/media/functional/functional-basic/classes/ErrorCenter/ErrorCenter.vi.mdx +101 -70
  72. package/src/media/functional/functional-basic/classes/ErrorCenterHandler/ErrorCenterHandler.en.mdx +46 -42
  73. package/src/media/functional/functional-basic/classes/ErrorCenterHandler/ErrorCenterHandler.ru.mdx +46 -42
  74. package/src/media/functional/functional-basic/classes/ErrorCenterHandler/ErrorCenterHandler.vi.mdx +46 -42
  75. package/src/media/functional/functional-basic/classes/ErrorCenterInstance/ErrorCenterInstance.en.mdx +44 -96
  76. package/src/media/functional/functional-basic/classes/ErrorCenterInstance/ErrorCenterInstance.ru.mdx +44 -96
  77. package/src/media/functional/functional-basic/classes/ErrorCenterInstance/ErrorCenterInstance.vi.mdx +44 -96
  78. package/src/media/functional/functional-basic/classes/EventItem/EventItem.en.mdx +49 -28
  79. package/src/media/functional/functional-basic/classes/EventItem/EventItem.ru.mdx +21 -0
  80. package/src/media/functional/functional-basic/classes/EventItem/EventItem.vi.mdx +63 -42
  81. package/src/media/functional/functional-basic/classes/Formatters/Formatters.en.mdx +97 -109
  82. package/src/media/functional/functional-basic/classes/Formatters/Formatters.ru.mdx +86 -98
  83. package/src/media/functional/functional-basic/classes/Formatters/Formatters.vi.mdx +99 -111
  84. package/src/media/functional/functional-basic/classes/Geo/Geo.en.mdx +3 -3
  85. package/src/media/functional/functional-basic/classes/Geo/Geo.ru.mdx +5 -5
  86. package/src/media/functional/functional-basic/classes/Geo/Geo.vi.mdx +5 -5
  87. package/src/media/functional/functional-basic/classes/GeoFlag/GeoFlag.en.mdx +83 -40
  88. package/src/media/functional/functional-basic/classes/GeoFlag/GeoFlag.ru.mdx +83 -40
  89. package/src/media/functional/functional-basic/classes/GeoFlag/GeoFlag.vi.mdx +87 -44
  90. package/src/media/functional/functional-basic/classes/GeoInstance/GeoInstance.en.mdx +81 -0
  91. package/src/media/functional/functional-basic/classes/GeoInstance/GeoInstance.ru.mdx +81 -0
  92. package/src/media/functional/functional-basic/classes/GeoInstance/GeoInstance.vi.mdx +81 -0
  93. package/src/media/functional/functional-basic/classes/GeoPhone/GeoPhone.en.mdx +56 -105
  94. package/src/media/functional/functional-basic/classes/GeoPhone/GeoPhone.ru.mdx +53 -102
  95. package/src/media/functional/functional-basic/classes/GeoPhone/GeoPhone.vi.mdx +55 -105
  96. package/src/media/functional/functional-basic/classes/Hash/Hash.en.mdx +18 -7
  97. package/src/media/functional/functional-basic/classes/Hash/Hash.ru.mdx +18 -7
  98. package/src/media/functional/functional-basic/classes/Hash/Hash.vi.mdx +18 -7
  99. package/src/media/functional/functional-basic/classes/HashInstance/HashInstance.en.mdx +54 -0
  100. package/src/media/functional/functional-basic/classes/HashInstance/HashInstance.ru.mdx +54 -0
  101. package/src/media/functional/functional-basic/classes/HashInstance/HashInstance.vi.mdx +54 -0
  102. package/src/media/functional/functional-basic/classes/MetaStatic/MetaStatic.en.mdx +78 -0
  103. package/src/media/functional/functional-basic/classes/MetaStatic/MetaStatic.ru.mdx +78 -0
  104. package/src/media/functional/functional-basic/classes/MetaStatic/MetaStatic.vi.mdx +78 -0
  105. package/src/media/functional/functional-basic/classes/ResumableTimer/ResumableTimer.en.mdx +50 -0
  106. package/src/media/functional/functional-basic/classes/ResumableTimer/ResumableTimer.ru.mdx +50 -0
  107. package/src/media/functional/functional-basic/classes/ResumableTimer/ResumableTimer.vi.mdx +50 -0
  108. package/src/media/functional/functional-basic/classes/ServerStorage/ServerStorage.en.mdx +131 -0
  109. package/src/media/functional/functional-basic/classes/ServerStorage/ServerStorage.ru.mdx +131 -0
  110. package/src/media/functional/functional-basic/classes/ServerStorage/ServerStorage.vi.mdx +131 -0
  111. package/src/media/functional/functional-basic/classes/StorageCallback/StorageCallback.en.mdx +97 -0
  112. package/src/media/functional/functional-basic/classes/StorageCallback/StorageCallback.ru.mdx +97 -0
  113. package/src/media/functional/functional-basic/classes/StorageCallback/StorageCallback.vi.mdx +97 -0
  114. package/src/media/functional/functional-basic/functions/addTagHighlightMatch/addTagHighlightMatch.en.mdx +13 -5
  115. package/src/media/functional/functional-basic/functions/addTagHighlightMatch/addTagHighlightMatch.ru.mdx +13 -5
  116. package/src/media/functional/functional-basic/functions/addTagHighlightMatch/addTagHighlightMatch.vi.mdx +13 -5
  117. package/src/media/functional/functional-basic/functions/anyToString/anyToString.en.mdx +37 -19
  118. package/src/media/functional/functional-basic/functions/anyToString/anyToString.ru.mdx +37 -19
  119. package/src/media/functional/functional-basic/functions/anyToString/anyToString.vi.mdx +35 -17
  120. package/src/media/functional/functional-basic/functions/applyTemplate/applyTemplate.en.mdx +31 -19
  121. package/src/media/functional/functional-basic/functions/applyTemplate/applyTemplate.ru.mdx +31 -19
  122. package/src/media/functional/functional-basic/functions/applyTemplate/applyTemplate.vi.mdx +32 -20
  123. package/src/media/functional/functional-basic/functions/blobToBase64/blobToBase64.en.mdx +29 -15
  124. package/src/media/functional/functional-basic/functions/blobToBase64/blobToBase64.ru.mdx +28 -14
  125. package/src/media/functional/functional-basic/functions/blobToBase64/blobToBase64.vi.mdx +28 -14
  126. package/src/media/functional/functional-basic/functions/capitalize/capitalize.en.mdx +7 -3
  127. package/src/media/functional/functional-basic/functions/capitalize/capitalize.ru.mdx +7 -3
  128. package/src/media/functional/functional-basic/functions/capitalize/capitalize.vi.mdx +7 -3
  129. package/src/media/functional/functional-basic/functions/copyObject/copyObject.en.mdx +17 -13
  130. package/src/media/functional/functional-basic/functions/copyObject/copyObject.ru.mdx +17 -13
  131. package/src/media/functional/functional-basic/functions/copyObject/copyObject.vi.mdx +17 -13
  132. package/src/media/functional/functional-basic/functions/createElement/createElement.en.mdx +2 -0
  133. package/src/media/functional/functional-basic/functions/createElement/createElement.ru.mdx +2 -0
  134. package/src/media/functional/functional-basic/functions/createElement/createElement.vi.mdx +2 -0
  135. package/src/media/functional/functional-basic/functions/encodeAttribute/encodeAttribute.en.mdx +1 -3
  136. package/src/media/functional/functional-basic/functions/encodeAttribute/encodeAttribute.ru.mdx +1 -3
  137. package/src/media/functional/functional-basic/functions/encodeAttribute/encodeAttribute.vi.mdx +1 -3
  138. package/src/media/functional/functional-basic/functions/executeFunction/executeFunction.en.mdx +13 -10
  139. package/src/media/functional/functional-basic/functions/executeFunction/executeFunction.ru.mdx +14 -11
  140. package/src/media/functional/functional-basic/functions/executeFunction/executeFunction.vi.mdx +12 -9
  141. package/src/media/functional/functional-basic/functions/executePromise/executePromise.en.mdx +14 -13
  142. package/src/media/functional/functional-basic/functions/executePromise/executePromise.ru.mdx +15 -14
  143. package/src/media/functional/functional-basic/functions/executePromise/executePromise.vi.mdx +14 -13
  144. package/src/media/functional/functional-basic/functions/forEach/forEach.en.mdx +1 -1
  145. package/src/media/functional/functional-basic/functions/forEach/forEach.ru.mdx +1 -1
  146. package/src/media/functional/functional-basic/functions/forEach/forEach.vi.mdx +1 -1
  147. package/src/media/functional/functional-basic/functions/frame/frame.en.mdx +7 -4
  148. package/src/media/functional/functional-basic/functions/frame/frame.ru.mdx +6 -3
  149. package/src/media/functional/functional-basic/functions/frame/frame.vi.mdx +7 -4
  150. package/src/media/functional/functional-basic/functions/getArrayHighlightMatch/getArrayHighlightMatch.en.mdx +34 -0
  151. package/src/media/functional/functional-basic/functions/getArrayHighlightMatch/getArrayHighlightMatch.ru.mdx +34 -0
  152. package/src/media/functional/functional-basic/functions/getArrayHighlightMatch/getArrayHighlightMatch.vi.mdx +35 -0
  153. package/src/media/functional/functional-basic/functions/getCurrentDate/getCurrentDate.en.mdx +2 -0
  154. package/src/media/functional/functional-basic/functions/getCurrentDate/getCurrentDate.ru.mdx +2 -0
  155. package/src/media/functional/functional-basic/functions/getCurrentDate/getCurrentDate.vi.mdx +2 -0
  156. package/src/media/functional/functional-basic/functions/getCurrentTime/getCurrentTime.en.mdx +21 -0
  157. package/src/media/functional/functional-basic/functions/getCurrentTime/getCurrentTime.ru.mdx +21 -0
  158. package/src/media/functional/functional-basic/functions/getCurrentTime/getCurrentTime.vi.mdx +21 -0
  159. package/src/media/functional/functional-basic/functions/getElementId/getElementId.en.mdx +17 -3
  160. package/src/media/functional/functional-basic/functions/getElementId/getElementId.ru.mdx +17 -3
  161. package/src/media/functional/functional-basic/functions/getElementId/getElementId.vi.mdx +18 -4
  162. package/src/media/functional/functional-basic/functions/getElementSafeScript/getElementSafeScript.en.mdx +31 -0
  163. package/src/media/functional/functional-basic/functions/getElementSafeScript/getElementSafeScript.ru.mdx +31 -0
  164. package/src/media/functional/functional-basic/functions/getElementSafeScript/getElementSafeScript.vi.mdx +31 -0
  165. package/src/media/functional/functional-basic/functions/getOnlyText/getOnlyText.en.mdx +25 -0
  166. package/src/media/functional/functional-basic/functions/getOnlyText/getOnlyText.ru.mdx +25 -0
  167. package/src/media/functional/functional-basic/functions/getOnlyText/getOnlyText.vi.mdx +25 -0
  168. package/src/media/functional/functional-basic/functions/getSearchExp/getSearchExp.en.mdx +11 -4
  169. package/src/media/functional/functional-basic/functions/getSearchExp/getSearchExp.ru.mdx +14 -7
  170. package/src/media/functional/functional-basic/functions/getSearchExp/getSearchExp.vi.mdx +13 -6
  171. package/src/media/functional/functional-basic/functions/getSeparatingSearchExp/getSeparatingSearchExp.en.mdx +3 -2
  172. package/src/media/functional/functional-basic/functions/getSeparatingSearchExp/getSeparatingSearchExp.ru.mdx +3 -2
  173. package/src/media/functional/functional-basic/functions/getSeparatingSearchExp/getSeparatingSearchExp.vi.mdx +3 -2
  174. package/src/media/functional/functional-basic/functions/toNumber/toNumber.en.mdx +25 -9
  175. package/src/media/functional/functional-basic/functions/toNumber/toNumber.ru.mdx +25 -9
  176. package/src/media/functional/functional-basic/functions/toNumber/toNumber.vi.mdx +25 -9
  177. package/src/media/functional/functional-basic/functions/toString/toString.en.mdx +28 -0
  178. package/src/media/functional/functional-basic/functions/toString/toString.ru.mdx +28 -0
  179. package/src/media/functional/functional-basic/functions/toString/toString.vi.mdx +28 -0
  180. package/src/media/functional/ui/about/about.en.mdx +45 -0
  181. package/src/media/functional/ui/about/about.ru.mdx +45 -0
  182. package/src/media/functional/ui/about/about.vi.mdx +45 -0
  183. package/src/media/functional/ui/component/component.en.mdx +104 -0
  184. package/src/media/functional/ui/component/component.ru.mdx +106 -0
  185. package/src/media/functional/ui/component/component.vi.mdx +104 -0
  186. package/src/media/functional/ui/setup/setup.en.mdx +72 -0
  187. package/src/media/functional/ui/setup/setup.ru.mdx +72 -0
  188. package/src/media/functional/ui/setup/setup.vi.mdx +72 -0
  189. package/src/media/functional/ui/wiki-data.en.mdx +114 -0
  190. package/src/media/functional/ui/wiki-data.ru.mdx +114 -0
  191. package/src/media/functional/ui/wiki-data.vi.mdx +114 -0
@@ -4,54 +4,75 @@ import {Meta} from '@storybook/addon-docs/blocks'
4
4
 
5
5
  # Класс CookieBlock
6
6
 
7
- Статический служебный класс, который служит глобальным "аварийным выключателем" для изменений куки в DOM. Он предоставляет простое логическое состояние, которое другие классы, в частности `Cookie`, проверяют перед попыткой записи в `document.cookie`.
7
+ Статический служебный класс, служащий глобальным "аварийным выключателем" для изменений куки в DOM. Предоставляет простое логическое состояние, которое другие классы, в частности `Cookie`, проверяют перед попыткой записи в `document.cookie`.
8
+
9
+ Включает тесную интеграцию с `ServerStorage` для изоляции состояния между запросами в SSR окружении.
8
10
 
9
11
  ## Ключевые особенности
10
12
 
11
- - **Глобальная истина** — единая точка конфигурации для остановки операций с куки в масштабах всего приложения.
12
- - **Соответствие конфиденциальности** — крайне полезно для реализации баннеров "Согласие на использование файлов cookie". Просто установите блокировку в `true`, пока пользователь явно не примет все куки.
13
- - **Поддержка DataStorage** — внутренне использует абстракцию `DataStorage` для надежного поддержания заблокированного состояния.
13
+ - **Глобальная истина** — единая точка конфигурации для остановки операций с куки в масштабах всего приложения
14
+ - **Соответствие конфиденциальности** — крайне полезно для реализации баннеров "Согласие на использование файлов cookie"
15
+ - **SSR-совместимость** — использует `ServerStorage` для надежного поддержания заблокированного состояния в изолированном контексте каждого запроса
14
16
 
17
+ ## Статические методы
15
18
 
16
- Поскольку все методы `static`, вы взаимодействуете с классом напрямую.
19
+ ### Действие
17
20
 
18
- ## Управление доступом
21
+ #### `set`
19
22
 
20
- ### `get`
23
+ Включает или отключает возможности записи куки в DOM. При значении `true` все операции записи будут сохранять данные только в памяти, не затрагивая `document.cookie`.
21
24
 
22
- Используйте метод `get()` для чтения текущего статуса блокировки. Возвращает логическое значение.
25
+ **Параметры:**
26
+ - `value: boolean` — `true` для блокировки записи куки, `false` для разрешения
23
27
 
24
- **Возвращает:** `boolean` — `true`, если запись куки заблокирована.
28
+ **Возвращает:** `void`
25
29
 
26
- ```javascript
27
- if (CookieBlock.get()) {
28
- console.log('Запись куки в настоящее время заблокирована настройками пользователя.')
29
- }
30
- ```
30
+ ### Проверка
31
31
 
32
- ### `set`
32
+ - `get(): boolean` — Возвращает текущий статус блокировки. `true`, если запись куки заблокирована
33
33
 
34
- Используйте метод `set()` для включения или отключения возможностей записи куки.
34
+ ## Примеры
35
35
 
36
- **Параметры:**
37
- - `value: boolean` — `true` для блокировки записи куки, `false` для разрешения.
36
+ ### Базовое использование
38
37
 
39
- ```javascript
38
+ ```typescript
40
39
  import { CookieBlock } from '@dxtmisha/functional'
41
40
 
42
- // Заблокировать все будущие записи куки в DOM
41
+ // Блокировать все будущие записи куки в DOM
43
42
  CookieBlock.set(true)
44
43
 
45
- // Разрешить записи куки в DOM (поведение по умолчанию)
44
+ if (CookieBlock.get()) {
45
+ console.log('Запись куки в настоящее время заблокирована')
46
+ }
47
+
48
+ // Разрешить записи куки в DOM
46
49
  CookieBlock.set(false)
47
50
  ```
48
51
 
52
+ ### Реализация баннера согласия
53
+
54
+ ```typescript
55
+ import { CookieBlock, Cookie } from '@dxtmisha/functional'
56
+
57
+ // При загрузке приложения блокируем cookie
58
+ CookieBlock.set(true)
59
+
60
+ // После принятия пользователем
61
+ function onCookieConsentAccepted() {
62
+ CookieBlock.set(false)
63
+
64
+ // Теперь можно устанавливать cookie
65
+ const theme = new Cookie('theme')
66
+ theme.set('dark')
67
+ }
68
+ ```
69
+
49
70
  ## Как это взаимодействует с `Cookie`
50
71
 
51
72
  Базовый класс `Cookie` строго следит за этой блокировкой. Если `CookieBlock.get()` возвращает `true`:
52
73
 
53
- 1. Логика вашего приложения технически все еще может вызывать `cookieInstance.set('value')`.
54
- 2. Экземпляр `Cookie` обновит свое *внутреннее хранилище в памяти* новым значением.
55
- 3. Экземпляр `Cookie` **молча откажется** от фактической записи в DOM `document.cookie = ...`.
74
+ 1. Логика приложения может технически вызывать `cookieInstance.set('value')`
75
+ 2. Экземпляр `Cookie` обновит свое *внутреннее хранилище в памяти* новым значением
76
+ 3. Экземпляр `Cookie` **молча откажется** от фактической записи в DOM `document.cookie = ...`
56
77
 
57
- Это гарантирует, что ваше приложение не сломается от неопределенных чтений в памяти, при этом строго соблюдая настройки браузера по сохранению на диск.
78
+ Это гарантирует, что приложение не сломается от неопределенных чтений в памяти, при этом строго соблюдая настройки браузера по сохранению на диск.
@@ -6,52 +6,73 @@ import {Meta} from '@storybook/addon-docs/blocks'
6
6
 
7
7
  Lớp tiện ích static dùng để định nghĩa quy luật truy cập ("kill switch" hoặc cầu dao tổng) nhắm thẳng vào quá trình hệ thống có cho phép chỉnh/sửa nội dung DOM cookie trên website hay không. Bằng cách thiết lập chuẩn khoá chặn (boolean logic), các node class lớn hơn (ví dụ Class gốc `Cookie`) sẽ liên tục móc và lắng nghe lệnh này trước khi tiến hành bước in/thực thi ghi data vào `document.cookie`.
8
8
 
9
+ Bao gồm tích hợp chặt chẽ với `ServerStorage` để cách ly trạng thái giữa các yêu cầu trong SSR.
10
+
9
11
  ## Các tính năng chính
10
12
 
11
- - **Chấp Nhận Quy Trình Định Mức Chung (Global Truth)** — cổng tuỳ chỉnh/kiểm soát chung đối với quá trình lưu tạo/in cookie dọc toàn bộ mã lệnh ứng dụng.
12
- - **Chuẩn Cấu Hình Quyền Riêng Tư Đặc thù (Privacy Compliance)** — một mẫu logic tuyệt vời dùng lập trình những phần banner xác nhận "Cookie Consent" (Xin quyền nạp Tracking). Người code chỉ việc nối logic nút bật class thành giá trị `true` đến chừng nào user chốt chấp nhận quy tắc lấy thông tin ở nút 'Đồng Ý'.
13
- - **Class Truy Vấn Cải Biên (DataStorage Backed)** vận hành chuẩn dữ liệu `DataStorage` qua cấp độ trừu tượng để việc chặn ghi được tối ưu thông lượng trong background, gia tăng tính tin cậy.
13
+ - **Chấp Nhận Quy Trình Định Mức Chung (Global Truth)** — cổng tuỳ chỉnh/kiểm soát chung đối với quá trình lưu tạo/in cookie dọc toàn bộ mã lệnh ứng dụng
14
+ - **Chuẩn Cấu Hình Quyền Riêng Tư Đặc thù (Privacy Compliance)** — một mẫu logic tuyệt vời dùng lập trình những phần banner xác nhận "Cookie Consent" (Xin quyền nạp Tracking). Người code chỉ việc nối logic nút bật class thành giá trị `true` đến chừng nào user chốt chấp nhận quy tắc lấy thông tin ở nút 'Đồng Ý'
15
+ - **SSR-совместимость**sử dụng `ServerStorage` để duy trì trạng thái chặn đáng tin cậy trong bối cảnh yêu cầu cách ly
14
16
 
17
+ ## Phương thức tĩnh
15
18
 
16
- Tất cả là lớp static nên bạn chạy lệnh trượt và trỏ trực tiếp bằng dấu chấm (`.`).
19
+ ### Hành động
17
20
 
18
- ## Quản lý quyền truy cập
21
+ #### `set`
19
22
 
20
- ### `get`
23
+ Bật hoặc tắt khả năng ghi cookie. Khi đặt thành `true`, tất cả hoạt động ghi sẽ chỉ lưu dữ liệu trong bộ nhớ, không chạm đến `document.cookie`.
21
24
 
22
- `get()` trả về 100% chuẩn cấu trúc kiểu nhị phân boolean.
25
+ **Tham số:**
26
+ - `value: boolean` — `true` để chặn ghi cookie, `false` để cho phép
23
27
 
24
- **Trả về:** `boolean` — `true` nếu trình kiểm duyệt khóa chức năng tạo cookie.
28
+ **Trả về:** `void`
25
29
 
26
- ```javascript
27
- if (CookieBlock.get()) {
28
- console.log('Quá trình nạp DOM/ghi chép Cookie đang khoá do cài đặt phía user chưa cho quyền truy cập.')
29
- }
30
- ```
30
+ ### Kiểm tra
31
31
 
32
- ### `set`
32
+ - `get(): boolean` — Trả về trạng thái chặn hiện tại. `true` nếu ghi cookie bị chặn
33
33
 
34
- Truy vấn tham số boolean qua `set()` để class hiểu website/app được hay không thể được viết biến cache cookie nữa.
34
+ ## dụ
35
35
 
36
- **Tham số:**
37
- - `value: boolean` — `true` đồng nghĩa chặn toàn bộ biến muốn viết cookie ra ngoài trỏ lên web, `false` hệ thống lại bật tắt mượt mà bình thường.
36
+ ### Sử dụng cơ bản
38
37
 
39
- ```javascript
38
+ ```typescript
40
39
  import { CookieBlock } from '@dxtmisha/functional'
41
40
 
42
41
  // Lệnh chặn khẩn cấp toàn bộ dữ liệu ghi DOM cookie
43
42
  CookieBlock.set(true)
44
43
 
44
+ if (CookieBlock.get()) {
45
+ console.log('Quá trình nạp DOM/ghi chép Cookie đang khoá do cài đặt phía user chưa cho quyền truy cập.')
46
+ }
47
+
45
48
  // Dỡ bỏ cảnh bảo / Cấp quyền DOM in cookie (Cấu hình chuẩn của object mới)
46
49
  CookieBlock.set(false)
47
50
  ```
48
51
 
49
- ## Phương Phức Logic Khi Mắc Nối Với Lớp `Cookie`
52
+ ### Triển khai banner đồng ý
53
+
54
+ ```typescript
55
+ import { CookieBlock, Cookie } from '@dxtmisha/functional'
56
+
57
+ // Chặn cookie khi tải ứng dụng
58
+ CookieBlock.set(true)
59
+
60
+ // Sau khi người dùng đồng ý
61
+ function onCookieConsentAccepted() {
62
+ CookieBlock.set(false)
63
+
64
+ // Bây giờ có thể đặt cookie
65
+ const theme = new Cookie('theme')
66
+ theme.set('dark')
67
+ }
68
+ ```
69
+
70
+ ## Phương thức logic khi mắc nối với lớp `Cookie`
50
71
 
51
72
  Nhân/Bộ cấu trúc tổng của class `Cookie` được code giám sát nghiêm ngặt mọi lệnh do luồng chặn phát đi. Lúc biến nhị phân `CookieBlock.get()` bị chốt ở mode `true`:
52
73
 
53
- 1. Ở nội bộ luồng mã, quá trình chạy vẫn ngầm hiểu là hệ thống gọi app bằng node lưu biến `cookieInstance.set('value')`.
54
- 2. Tiến trình instance trực thuộc `Cookie` kích hoạt việc in giá trị cập nhật/ghi đè thay thế nằm vào hàng đợi của *cơ sở memory ảo* (internal memory).
55
- 3. Tuyệt nhiên tại chính node instance của `Cookie` **hệ thống tự phát sinh quyền bác bỏ im lặng (silently refuse)** đối với hàm ghi biến tĩnh `document.cookie = ...` tại nhánh DOM ảo lẫn DOM thật.
74
+ 1. Ở nội bộ luồng mã, quá trình chạy vẫn ngầm hiểu là hệ thống gọi app bằng node lưu biến `cookieInstance.set('value')`
75
+ 2. Tiến trình instance trực thuộc `Cookie` kích hoạt việc in giá trị cập nhật/ghi đè thay thế nằm vào hàng đợi của *cơ sở memory ảo* (internal memory)
76
+ 3. Tuyệt nhiên tại chính node instance của `Cookie` **hệ thống tự phát sinh quyền bác bỏ im lặng (silently refuse)** đối với hàm ghi biến tĩnh `document.cookie = ...` tại nhánh DOM ảo lẫn DOM thật
56
77
 
57
78
  Luồng giao thức 3 buớc phía trên đáp ứng hoàn hảo hai tiêu chí tối thượng trong quy chuẩn kỹ thuật: Giúp DOM website không bị bóp băng thông khi chạy lỗi code lấy lệnh từ hệ memory chưa cấp dữ liệu (ngăn văng bug), cũng như giữ thiết lập tôn trọng chính sách truy vấn riêng tư bảo mật đĩa cứng phía Browser theo chuẩn Âu/Mỹ.
@@ -0,0 +1,84 @@
1
+ import {Meta} from '@storybook/addon-docs/blocks'
2
+
3
+ <Meta title='@dxtmisha/en/functional-basic/Classes/CookieBlockInstance - Cookie Access Status Instance'/>
4
+
5
+ # CookieBlockInstance Class
6
+
7
+ The `CookieBlockInstance` class is responsible for managing the cookie access status at the instance level. It provides a localized state for blocking or allowing cookie operations, which is essential for request isolation in Server-Side Rendering (SSR) or when multiple independent contexts are required.
8
+
9
+ Includes tight integration with `DataStorage` for reliable state persistence.
10
+
11
+ ## Key Features
12
+
13
+ - **Instance-Based** — allows creating separate instances with their own block status
14
+ - **DataStorage Integration** — automatically persists the block status using the `DataStorage` class
15
+ - **SSR Compatible** — designed to work seamlessly in server-side environments by leveraging the singleton-per-request pattern when wrapped by `CookieBlock`
16
+
17
+ ## Methods
18
+
19
+ ### Action
20
+
21
+ #### `set`
22
+
23
+ Updates the cookie access status. When set to `true`, blocks all cookie write operations within this instance's context.
24
+
25
+ **Parameters:**
26
+ - `value: boolean` — the new status to set
27
+
28
+ ### Check
29
+
30
+ - `get(): boolean` — Returns the current cookie access status. `true` if cookies are blocked, `false` otherwise
31
+
32
+ ## Examples
33
+
34
+ ### Basic Usage
35
+
36
+ ```typescript
37
+ import { CookieBlockInstance } from '@dxtmisha/functional-basic'
38
+
39
+ const cookieBlock = new CookieBlockInstance()
40
+
41
+ // Get the current status
42
+ console.log(cookieBlock.get()) // false (default)
43
+
44
+ // Set status to blocked
45
+ cookieBlock.set(true)
46
+
47
+ console.log(cookieBlock.get()) // true
48
+
49
+ // Unblock
50
+ cookieBlock.set(false)
51
+
52
+ console.log(cookieBlock.get()) // false
53
+ ```
54
+
55
+ ### Using via CookieBlock
56
+
57
+ While `CookieBlockInstance` can be used directly, it is typically accessed through the static `CookieBlock` wrapper:
58
+
59
+ ```typescript
60
+ import { CookieBlock } from '@dxtmisha/functional-basic'
61
+
62
+ // CookieBlock automatically creates an isolated instance for each request
63
+ CookieBlock.set(true)
64
+
65
+ // Status is accessible through static methods
66
+ if (CookieBlock.get()) {
67
+ console.log('Cookies are blocked in the current context')
68
+ }
69
+ ```
70
+
71
+ ### Independent Contexts
72
+
73
+ ```typescript
74
+ import { CookieBlockInstance } from '@dxtmisha/functional-basic'
75
+
76
+ // Create independent instances
77
+ const block1 = new CookieBlockInstance()
78
+ const block2 = new CookieBlockInstance()
79
+
80
+ block1.set(true)
81
+
82
+ console.log(block1.get()) // true
83
+ console.log(block2.get()) // false (independent instance)
84
+ ```
@@ -0,0 +1,84 @@
1
+ import {Meta} from '@storybook/addon-docs/blocks'
2
+
3
+ <Meta title='@dxtmisha/ru/functional-basic/Classes/CookieBlockInstance - Экземпляр статуса доступа к куки'/>
4
+
5
+ # Класс CookieBlockInstance
6
+
7
+ Класс `CookieBlockInstance` отвечает за управление статусом доступа к куки на уровне экземпляра. Предоставляет локализованное состояние для блокировки или разрешения операций с куки, что необходимо для изоляции запросов в Server-Side Rendering (SSR) или когда требуются несколько независимых контекстов.
8
+
9
+ Включает тесную интеграцию с `DataStorage` для надежного сохранения статуса.
10
+
11
+ ## Ключевые особенности
12
+
13
+ - **На основе экземпляров** — позволяет создавать отдельные экземпляры с их собственным статусом блокировки
14
+ - **Интеграция с DataStorage** — автоматически сохраняет статус блокировки, используя класс `DataStorage`
15
+ - **Совместимость с SSR** — разработан для бесшовной работы в серверных средах, используя паттерн "один экземпляр на запрос" при использовании через обертку `CookieBlock`
16
+
17
+ ## Методы
18
+
19
+ ### Действие
20
+
21
+ #### `set`
22
+
23
+ Обновляет статус доступа к куки. При значении `true` блокирует все операции записи с куки в контексте этого экземпляра.
24
+
25
+ **Параметры:**
26
+ - `value: boolean` — новый статус для установки
27
+
28
+ ### Проверка
29
+
30
+ - `get(): boolean` — Возвращает текущий статус доступа к куки. `true`, если куки заблокированы, иначе `false`
31
+
32
+ ## Примеры
33
+
34
+ ### Базовое использование
35
+
36
+ ```typescript
37
+ import { CookieBlockInstance } from '@dxtmisha/functional-basic'
38
+
39
+ const cookieBlock = new CookieBlockInstance()
40
+
41
+ // Получить текущий статус
42
+ console.log(cookieBlock.get()) // false (по умолчанию)
43
+
44
+ // Заблокировать куки
45
+ cookieBlock.set(true)
46
+
47
+ console.log(cookieBlock.get()) // true
48
+
49
+ // Разблокировать куки
50
+ cookieBlock.set(false)
51
+
52
+ console.log(cookieBlock.get()) // false
53
+ ```
54
+
55
+ ### Использование через CookieBlock
56
+
57
+ Хотя `CookieBlockInstance` можно использовать напрямую, обычно к нему обращаются через статическую обертку `CookieBlock`:
58
+
59
+ ```typescript
60
+ import { CookieBlock } from '@dxtmisha/functional-basic'
61
+
62
+ // CookieBlock автоматически создает изолированный экземпляр для каждого запроса
63
+ CookieBlock.set(true)
64
+
65
+ // Статус доступен через статические методы
66
+ if (CookieBlock.get()) {
67
+ console.log('Куки заблокированы в текущем контексте')
68
+ }
69
+ ```
70
+
71
+ ### Независимые контексты
72
+
73
+ ```typescript
74
+ import { CookieBlockInstance } from '@dxtmisha/functional-basic'
75
+
76
+ // Создание независимых экземпляров
77
+ const block1 = new CookieBlockInstance()
78
+ const block2 = new CookieBlockInstance()
79
+
80
+ block1.set(true)
81
+
82
+ console.log(block1.get()) // true
83
+ console.log(block2.get()) // false (независимый экземпляр)
84
+ ```
@@ -0,0 +1,100 @@
1
+ import {Meta} from '@storybook/addon-docs/blocks'
2
+
3
+ <Meta title='@dxtmisha/vi/functional-basic/Classes/CookieBlockInstance - Phiên bản trạng thái truy cập Cookie'/>
4
+
5
+ # Lớp CookieBlockInstance
6
+
7
+ Lớp `CookieBlockInstance` chịu trách nhiệm quản lý trạng thái truy cập cookie ở cấp độ phiên bản (instance). Nó cung cấp một trạng thái cục bộ để chặn hoặc cho phép các thao tác cookie, điều này rất quan trọng để cách ly các yêu cầu trong Server-Side Rendering (SSR) hoặc khi cần nhiều ngữ cảnh độc lập.
8
+
9
+ Bao gồm tích hợp chặt chẽ với `DataStorage` để lưu trữ trạng thái chặn đáng tin cậy.
10
+
11
+ ## Các tính năng chính
12
+
13
+ - **Dựa trên phiên bản (Instance-Based)** — cho phép tạo các phiên bản riêng biệt với trạng thái chặn của riêng chúng
14
+ - **Tích hợp DataStorage** — tự động lưu trữ trạng thái chặn bằng cách sử dụng lớp `DataStorage`
15
+ - **Tương thích với SSR** — được thiết kế để hoạt động trơn tru trong môi trường phía máy chủ bằng cách tận dụng mô hình singleton-mỗi-yêu-cầu khi được bao bọc bởi `CookieBlock`
16
+
17
+ ## Phương thức
18
+
19
+ ### Hành động
20
+
21
+ #### `set`
22
+
23
+ Cập nhật trạng thái truy cập cookie. Khi đặt thành `true`, chặn tất cả hoạt động ghi cookie trong ngữ cảnh của phiên bản này.
24
+
25
+ **Tham số:**
26
+ - `value: boolean` — trạng thái mới cần thiết lập
27
+
28
+ ### Kiểm tra
29
+
30
+ - `get(): boolean` — Trả về trạng thái truy cập cookie hiện tại. `true` nếu cookie bị chặn, `false` nếu ngược lại
31
+
32
+ ## Cách sử dụng cơ bản
33
+
34
+ Mặc dù `CookieBlockInstance` có thể được sử dụng trực tiếp, nhưng thông thường nó được truy cập thông qua lớp bọc tĩnh `CookieBlock`. Tuy nhiên, đối với logic chuyên biệt, bạn có thể khởi tạo nó theo cách thủ công:
35
+
36
+ ```javascript
37
+ import { CookieBlockInstance } from '@dxtmisha/functional-basic'
38
+
39
+ const cookieBlock = new CookieBlockInstance()
40
+
41
+ // Lấy trạng thái hiện tại
42
+ console.log(cookieBlock.get()) // false (mặc định)
43
+
44
+ // Đặt trạng thái thành bị chặn
45
+ cookieBlock.set(true)
46
+
47
+ console.log(cookieBlock.get()) // true
48
+ ```
49
+
50
+ ## Ví dụ
51
+
52
+ ### Sử dụng trực tiếp
53
+
54
+ ```typescript
55
+ import { CookieBlockInstance } from '@dxtmisha/functional-basic'
56
+
57
+ const cookieBlock = new CookieBlockInstance()
58
+
59
+ // Lấy trạng thái hiện tại
60
+ console.log(cookieBlock.get()) // false (mặc định)
61
+
62
+ // Đặt trạng thái thành bị chặn
63
+ cookieBlock.set(true)
64
+
65
+ console.log(cookieBlock.get()) // true
66
+
67
+ // Mở chặn
68
+ cookieBlock.set(false)
69
+
70
+ console.log(cookieBlock.get()) // false
71
+ ```
72
+
73
+ ### Sử dụng qua CookieBlock
74
+
75
+ ```typescript
76
+ import { CookieBlock } from '@dxtmisha/functional-basic'
77
+
78
+ // CookieBlock tự động tạo phiên bản cách ly cho mỗi yêu cầu
79
+ CookieBlock.set(true)
80
+
81
+ // Trạng thái có thể truy cập qua các phương thức tĩnh
82
+ if (CookieBlock.get()) {
83
+ console.log('Cookies bị chặn trong ngữ cảnh hiện tại')
84
+ }
85
+ ```
86
+
87
+ ### Ngữ cảnh độc lập
88
+
89
+ ```typescript
90
+ import { CookieBlockInstance } from '@dxtmisha/functional-basic'
91
+
92
+ // Tạo các phiên bản độc lập
93
+ const block1 = new CookieBlockInstance()
94
+ const block2 = new CookieBlockInstance()
95
+
96
+ block1.set(true)
97
+
98
+ console.log(block1.get()) // true
99
+ console.log(block2.get()) // false (phiên bản độc lập)
100
+ ```
@@ -0,0 +1,153 @@
1
+ import {Meta} from '@storybook/addon-docs/blocks'
2
+
3
+ <Meta title='@dxtmisha/en/functional-basic/Classes/CookieStorage - Cookie Storage'/>
4
+
5
+ # CookieStorage Class
6
+
7
+ A class for managing cookie storage with support for custom listeners. Provides a low-level interface for working with cookies in different environments (DOM, SSR) with automatic type parsing and secure data handling.
8
+
9
+ Includes tight integration with `CookieBlock` for access control and supports URL-encoded value decoding.
10
+
11
+ ## Key Features
12
+
13
+ - **Flexible Storage** — supports in-memory storage and external storage mechanisms through listeners
14
+ - **Automatic Parsing** — intelligently converts string values to appropriate data types
15
+ - **Block Integration** — respects global write blocking via `CookieBlock`
16
+ - **Environment Awareness** — automatically detects DOM environment and adapts behavior
17
+ - **URL Decoding** — automatically decodes names and values when reading from DOM
18
+
19
+ ## Static Methods
20
+
21
+ ### Action
22
+
23
+ #### `get`
24
+
25
+ Retrieves a cookie value by name with automatic type conversion. If the value doesn't exist and a default is provided, it will be set and stored.
26
+
27
+ **Parameters:**
28
+ - `name: string` — the cookie name
29
+ - `defaultValue?: T | (() => T)` — default value or function returning the value
30
+
31
+ **Returns:** `T | undefined` — the converted cookie value or default value
32
+
33
+ #### `set`
34
+
35
+ Stores a cookie value with specified options and automatically updates both memory and DOM. If blocking is active via `CookieBlock`, the value is stored in memory only.
36
+
37
+ **Parameters:**
38
+ - `name: string` — the cookie name
39
+ - `value: T | (() => T)` — the value or a function returning the value
40
+ - `options?: CookieOptions` — additional cookie options
41
+
42
+ **Returns:** `T` — the stored value
43
+
44
+ #### `remove`
45
+
46
+ Removes a cookie by setting an empty value and negative expiration. Equivalent to calling `set(name, '', { age: -1 })`.
47
+
48
+ **Parameters:**
49
+ - `name: string` — the cookie name
50
+
51
+ ### Configuration
52
+
53
+ - `init(getListener, setListener)` — Initializes the storage with custom listeners for reading and writing data
54
+ - `reset()` — Resets the storage by clearing all in-memory items and removing listeners
55
+
56
+ ### Auxiliary
57
+
58
+ - `update()` — Updates in-memory data by parsing values from `document.cookie`
59
+
60
+ ## Types
61
+
62
+ ### `CookieOptions`
63
+
64
+ Configuration object for cookie parameters:
65
+
66
+ - `age?: number` — lifetime in seconds (Max-Age attribute)
67
+ - `sameSite?: 'strict' | 'lax'` — SameSite policy
68
+ - `arguments?: string[]` — additional directives for the cookie string
69
+
70
+ ## Built-in Type Conversion
71
+
72
+ `CookieStorage` automatically converts string values when reading:
73
+
74
+ - `'undefined'` → `undefined`
75
+ - `'null'` → `null`
76
+ - `'true'` → `true`
77
+ - `'false'` → `false`
78
+ - `'123'` → `123` (number)
79
+ - `'{"key":"value"}'` → `{key: 'value'}` (JSON object)
80
+
81
+ ## Examples
82
+
83
+ ### Basic Usage
84
+
85
+ ```typescript
86
+ import { CookieStorage } from '@dxtmisha/functional-basic'
87
+
88
+ // Get with default value
89
+ const theme = CookieStorage.get<string>('theme', 'dark')
90
+
91
+ // Store value
92
+ CookieStorage.set('user', 'john', {
93
+ age: 3600,
94
+ sameSite: 'lax'
95
+ })
96
+
97
+ // Remove
98
+ CookieStorage.remove('user')
99
+ ```
100
+
101
+ ### Initialize with External Storage
102
+
103
+ ```typescript
104
+ import { CookieStorage } from '@dxtmisha/functional-basic'
105
+
106
+ CookieStorage.init(
107
+ (key) => myStorage.get(key),
108
+ (key, value, options) => myStorage.set(key, value, options)
109
+ )
110
+ ```
111
+
112
+ ### Update and Reset
113
+
114
+ ```typescript
115
+ import { CookieStorage } from '@dxtmisha/functional-basic'
116
+
117
+ // Update in-memory data from document.cookie
118
+ // Useful when cookies were set externally
119
+ CookieStorage.update()
120
+
121
+ // Reset storage (clear listeners and in-memory data)
122
+ // Useful for testing or cleanup
123
+ CookieStorage.reset()
124
+ ```
125
+
126
+ ### Complete Workflow
127
+
128
+ ```typescript
129
+ import { CookieStorage } from '@dxtmisha/functional-basic'
130
+
131
+ // Initialize with custom storage
132
+ CookieStorage.init(
133
+ (key) => redis.get(key),
134
+ (key, value, options) => redis.set(key, value, options)
135
+ )
136
+
137
+ // Set value with options
138
+ CookieStorage.set('user', 'john', {
139
+ age: 3600, // 1 hour
140
+ sameSite: 'lax', // SameSite policy
141
+ arguments: ['Secure', 'Path=/'] // Additional directives
142
+ })
143
+
144
+ // Get with type conversion
145
+ const user = CookieStorage.get<string>('user')
146
+
147
+ // Update from external source
148
+ CookieStorage.update()
149
+
150
+ // Clean up
151
+ CookieStorage.remove('user')
152
+ CookieStorage.reset()
153
+ ```