@dxtmisha/wiki 0.39.7 → 0.56.0

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 (227) hide show
  1. package/dist/{defineProperty-DblGXmzD.js → defineProperty-149Ahniv.js} +4 -4
  2. package/dist/library.js +1 -1
  3. package/dist/media/descriptions/wikiDescriptionsArea.d.ts +7 -0
  4. package/dist/media/descriptions/wikiDescriptionsClientOnly.d.ts +7 -0
  5. package/dist/media/descriptions/wikiDescriptionsContainer.d.ts +7 -0
  6. package/dist/media/descriptions/wikiDescriptionsHeader.d.ts +7 -0
  7. package/dist/media/descriptions/wikiDescriptionsPageArea.d.ts +7 -0
  8. package/dist/media/mdx/Area/wikiMdxArea.d.ts +7 -0
  9. package/dist/media/mdx/ClientOnly/wikiMdxClientOnly.d.ts +7 -0
  10. package/dist/media/mdx/Container/wikiMdxContainer.d.ts +7 -0
  11. package/dist/media/mdx/Header/wikiMdxHeader.d.ts +7 -0
  12. package/dist/media/mdx/PageArea/wikiMdxPageArea.d.ts +7 -0
  13. package/dist/media.d.ts +1 -1
  14. package/dist/media.js +127 -68
  15. package/dist/storybook.js +2707 -1841
  16. package/dist/{wikiDescriptions-Cv4WzSNL.js → wikiDescriptions-7XaHU3Yk.js} +182 -0
  17. package/package.json +1 -1
  18. package/src/media/functional/functional/composables/useApiAsyncRef/useApiAsyncRef.en.mdx +43 -0
  19. package/src/media/functional/functional/composables/useApiAsyncRef/useApiAsyncRef.ru.mdx +43 -0
  20. package/src/media/functional/functional/composables/useApiAsyncRef/useApiAsyncRef.vi.mdx +41 -0
  21. package/src/media/functional/functional/composables/useApiRef/useApiRef.en.mdx +20 -4
  22. package/src/media/functional/functional/composables/useApiRef/useApiRef.ru.mdx +21 -3
  23. package/src/media/functional/functional/composables/useApiRef/useApiRef.vi.mdx +20 -2
  24. package/src/media/functional/functional/functions/computedAsync/computedAsync.en.mdx +8 -0
  25. package/src/media/functional/functional/functions/computedAsync/computedAsync.ru.mdx +8 -0
  26. package/src/media/functional/functional/functions/computedAsync/computedAsync.vi.mdx +8 -0
  27. package/src/media/functional/functional/functions/computedEternity/computedEternity.en.mdx +8 -0
  28. package/src/media/functional/functional/functions/computedEternity/computedEternity.ru.mdx +8 -0
  29. package/src/media/functional/functional/functions/computedEternity/computedEternity.vi.mdx +8 -0
  30. package/src/media/functional/functional-basic/api/api.en.mdx +45 -0
  31. package/src/media/functional/functional-basic/api/api.ru.mdx +45 -0
  32. package/src/media/functional/functional-basic/api/api.vi.mdx +45 -0
  33. package/src/media/functional/functional-basic/classes/Api/Api.en.mdx +57 -54
  34. package/src/media/functional/functional-basic/classes/Api/Api.ru.mdx +57 -54
  35. package/src/media/functional/functional-basic/classes/Api/Api.vi.mdx +57 -54
  36. package/src/media/functional/functional-basic/classes/ApiCache/ApiCache.en.mdx +111 -0
  37. package/src/media/functional/functional-basic/classes/ApiCache/ApiCache.ru.mdx +111 -0
  38. package/src/media/functional/functional-basic/classes/ApiCache/ApiCache.vi.mdx +111 -0
  39. package/src/media/functional/functional-basic/classes/ApiDataReturn/ApiDataReturn.en.mdx +32 -0
  40. package/src/media/functional/functional-basic/classes/ApiDataReturn/ApiDataReturn.ru.mdx +32 -0
  41. package/src/media/functional/functional-basic/classes/ApiDataReturn/ApiDataReturn.vi.mdx +32 -0
  42. package/src/media/functional/functional-basic/classes/ApiDefault/ApiDefault.en.mdx +24 -28
  43. package/src/media/functional/functional-basic/classes/ApiDefault/ApiDefault.ru.mdx +24 -28
  44. package/src/media/functional/functional-basic/classes/ApiDefault/ApiDefault.vi.mdx +24 -28
  45. package/src/media/functional/functional-basic/classes/ApiHeaders/ApiHeaders.en.mdx +28 -14
  46. package/src/media/functional/functional-basic/classes/ApiHeaders/ApiHeaders.ru.mdx +33 -19
  47. package/src/media/functional/functional-basic/classes/ApiHeaders/ApiHeaders.vi.mdx +33 -19
  48. package/src/media/functional/functional-basic/classes/ApiHydration/ApiHydration.en.mdx +56 -0
  49. package/src/media/functional/functional-basic/classes/ApiHydration/ApiHydration.ru.mdx +56 -0
  50. package/src/media/functional/functional-basic/classes/ApiHydration/ApiHydration.vi.mdx +55 -0
  51. package/src/media/functional/functional-basic/classes/ApiInstance/ApiInstance.en.mdx +106 -51
  52. package/src/media/functional/functional-basic/classes/ApiInstance/ApiInstance.ru.mdx +107 -52
  53. package/src/media/functional/functional-basic/classes/ApiInstance/ApiInstance.vi.mdx +103 -49
  54. package/src/media/functional/functional-basic/classes/ApiPreparation/ApiPreparation.en.mdx +44 -26
  55. package/src/media/functional/functional-basic/classes/ApiPreparation/ApiPreparation.ru.mdx +45 -27
  56. package/src/media/functional/functional-basic/classes/ApiPreparation/ApiPreparation.vi.mdx +44 -26
  57. package/src/media/functional/functional-basic/classes/ApiResponse/ApiResponse.en.mdx +59 -21
  58. package/src/media/functional/functional-basic/classes/ApiResponse/ApiResponse.ru.mdx +63 -25
  59. package/src/media/functional/functional-basic/classes/ApiResponse/ApiResponse.vi.mdx +64 -26
  60. package/src/media/functional/functional-basic/classes/ApiStatus/ApiStatus.en.mdx +29 -32
  61. package/src/media/functional/functional-basic/classes/ApiStatus/ApiStatus.ru.mdx +33 -36
  62. package/src/media/functional/functional-basic/classes/ApiStatus/ApiStatus.vi.mdx +33 -36
  63. package/src/media/functional/functional-basic/classes/BroadcastMessage/BroadcastMessage.en.mdx +34 -53
  64. package/src/media/functional/functional-basic/classes/BroadcastMessage/BroadcastMessage.ru.mdx +33 -52
  65. package/src/media/functional/functional-basic/classes/BroadcastMessage/BroadcastMessage.vi.mdx +39 -58
  66. package/src/media/functional/functional-basic/classes/Cache/Cache.en.mdx +7 -4
  67. package/src/media/functional/functional-basic/classes/Cache/Cache.ru.mdx +7 -4
  68. package/src/media/functional/functional-basic/classes/Cache/Cache.vi.mdx +28 -25
  69. package/src/media/functional/functional-basic/classes/CacheItem/CacheItem.en.mdx +45 -53
  70. package/src/media/functional/functional-basic/classes/CacheItem/CacheItem.ru.mdx +46 -54
  71. package/src/media/functional/functional-basic/classes/CacheItem/CacheItem.vi.mdx +47 -55
  72. package/src/media/functional/functional-basic/classes/CacheStatic/CacheStatic.en.mdx +13 -1
  73. package/src/media/functional/functional-basic/classes/CacheStatic/CacheStatic.ru.mdx +13 -1
  74. package/src/media/functional/functional-basic/classes/CacheStatic/CacheStatic.vi.mdx +13 -0
  75. package/src/media/functional/functional-basic/classes/Cookie/Cookie.en.mdx +88 -44
  76. package/src/media/functional/functional-basic/classes/Cookie/Cookie.ru.mdx +88 -44
  77. package/src/media/functional/functional-basic/classes/Cookie/Cookie.vi.mdx +85 -41
  78. package/src/media/functional/functional-basic/classes/CookieBlock/CookieBlock.en.mdx +43 -22
  79. package/src/media/functional/functional-basic/classes/CookieBlock/CookieBlock.ru.mdx +46 -25
  80. package/src/media/functional/functional-basic/classes/CookieBlock/CookieBlock.vi.mdx +43 -22
  81. package/src/media/functional/functional-basic/classes/CookieBlockInstance/CookieBlockInstance.en.mdx +84 -0
  82. package/src/media/functional/functional-basic/classes/CookieBlockInstance/CookieBlockInstance.ru.mdx +84 -0
  83. package/src/media/functional/functional-basic/classes/CookieBlockInstance/CookieBlockInstance.vi.mdx +100 -0
  84. package/src/media/functional/functional-basic/classes/CookieStorage/CookieStorage.en.mdx +178 -0
  85. package/src/media/functional/functional-basic/classes/CookieStorage/CookieStorage.ru.mdx +178 -0
  86. package/src/media/functional/functional-basic/classes/CookieStorage/CookieStorage.vi.mdx +178 -0
  87. package/src/media/functional/functional-basic/classes/DataStorage/DataStorage.en.mdx +32 -25
  88. package/src/media/functional/functional-basic/classes/DataStorage/DataStorage.ru.mdx +32 -25
  89. package/src/media/functional/functional-basic/classes/DataStorage/DataStorage.vi.mdx +32 -27
  90. package/src/media/functional/functional-basic/classes/Datetime/Datetime.en.mdx +36 -4
  91. package/src/media/functional/functional-basic/classes/Datetime/Datetime.ru.mdx +36 -4
  92. package/src/media/functional/functional-basic/classes/Datetime/Datetime.vi.mdx +36 -4
  93. package/src/media/functional/functional-basic/classes/ErrorCenter/ErrorCenter.en.mdx +101 -70
  94. package/src/media/functional/functional-basic/classes/ErrorCenter/ErrorCenter.ru.mdx +100 -69
  95. package/src/media/functional/functional-basic/classes/ErrorCenter/ErrorCenter.vi.mdx +101 -70
  96. package/src/media/functional/functional-basic/classes/ErrorCenterHandler/ErrorCenterHandler.en.mdx +46 -42
  97. package/src/media/functional/functional-basic/classes/ErrorCenterHandler/ErrorCenterHandler.ru.mdx +46 -42
  98. package/src/media/functional/functional-basic/classes/ErrorCenterHandler/ErrorCenterHandler.vi.mdx +46 -42
  99. package/src/media/functional/functional-basic/classes/ErrorCenterInstance/ErrorCenterInstance.en.mdx +44 -96
  100. package/src/media/functional/functional-basic/classes/ErrorCenterInstance/ErrorCenterInstance.ru.mdx +44 -96
  101. package/src/media/functional/functional-basic/classes/ErrorCenterInstance/ErrorCenterInstance.vi.mdx +44 -96
  102. package/src/media/functional/functional-basic/classes/EventItem/EventItem.en.mdx +49 -28
  103. package/src/media/functional/functional-basic/classes/EventItem/EventItem.ru.mdx +21 -0
  104. package/src/media/functional/functional-basic/classes/EventItem/EventItem.vi.mdx +63 -42
  105. package/src/media/functional/functional-basic/classes/Formatters/Formatters.en.mdx +97 -109
  106. package/src/media/functional/functional-basic/classes/Formatters/Formatters.ru.mdx +86 -98
  107. package/src/media/functional/functional-basic/classes/Formatters/Formatters.vi.mdx +99 -111
  108. package/src/media/functional/functional-basic/classes/Geo/Geo.en.mdx +3 -3
  109. package/src/media/functional/functional-basic/classes/Geo/Geo.ru.mdx +5 -5
  110. package/src/media/functional/functional-basic/classes/Geo/Geo.vi.mdx +5 -5
  111. package/src/media/functional/functional-basic/classes/GeoFlag/GeoFlag.en.mdx +83 -40
  112. package/src/media/functional/functional-basic/classes/GeoFlag/GeoFlag.ru.mdx +83 -40
  113. package/src/media/functional/functional-basic/classes/GeoFlag/GeoFlag.vi.mdx +87 -44
  114. package/src/media/functional/functional-basic/classes/GeoInstance/GeoInstance.en.mdx +81 -0
  115. package/src/media/functional/functional-basic/classes/GeoInstance/GeoInstance.ru.mdx +81 -0
  116. package/src/media/functional/functional-basic/classes/GeoInstance/GeoInstance.vi.mdx +81 -0
  117. package/src/media/functional/functional-basic/classes/GeoPhone/GeoPhone.en.mdx +56 -105
  118. package/src/media/functional/functional-basic/classes/GeoPhone/GeoPhone.ru.mdx +53 -102
  119. package/src/media/functional/functional-basic/classes/GeoPhone/GeoPhone.vi.mdx +55 -105
  120. package/src/media/functional/functional-basic/classes/Hash/Hash.en.mdx +18 -7
  121. package/src/media/functional/functional-basic/classes/Hash/Hash.ru.mdx +18 -7
  122. package/src/media/functional/functional-basic/classes/Hash/Hash.vi.mdx +18 -7
  123. package/src/media/functional/functional-basic/classes/HashInstance/HashInstance.en.mdx +54 -0
  124. package/src/media/functional/functional-basic/classes/HashInstance/HashInstance.ru.mdx +54 -0
  125. package/src/media/functional/functional-basic/classes/HashInstance/HashInstance.vi.mdx +54 -0
  126. package/src/media/functional/functional-basic/classes/Meta/Meta.en.mdx +16 -0
  127. package/src/media/functional/functional-basic/classes/Meta/Meta.ru.mdx +16 -0
  128. package/src/media/functional/functional-basic/classes/Meta/Meta.vi.mdx +17 -1
  129. package/src/media/functional/functional-basic/classes/MetaManager/MetaManager.en.mdx +9 -0
  130. package/src/media/functional/functional-basic/classes/MetaManager/MetaManager.ru.mdx +9 -0
  131. package/src/media/functional/functional-basic/classes/MetaManager/MetaManager.vi.mdx +9 -0
  132. package/src/media/functional/functional-basic/classes/MetaStatic/MetaStatic.en.mdx +79 -0
  133. package/src/media/functional/functional-basic/classes/MetaStatic/MetaStatic.ru.mdx +79 -0
  134. package/src/media/functional/functional-basic/classes/MetaStatic/MetaStatic.vi.mdx +79 -0
  135. package/src/media/functional/functional-basic/classes/ResumableTimer/ResumableTimer.en.mdx +50 -0
  136. package/src/media/functional/functional-basic/classes/ResumableTimer/ResumableTimer.ru.mdx +50 -0
  137. package/src/media/functional/functional-basic/classes/ResumableTimer/ResumableTimer.vi.mdx +50 -0
  138. package/src/media/functional/functional-basic/classes/ServerStorage/ServerStorage.en.mdx +131 -0
  139. package/src/media/functional/functional-basic/classes/ServerStorage/ServerStorage.ru.mdx +131 -0
  140. package/src/media/functional/functional-basic/classes/ServerStorage/ServerStorage.vi.mdx +131 -0
  141. package/src/media/functional/functional-basic/classes/StorageCallback/StorageCallback.en.mdx +97 -0
  142. package/src/media/functional/functional-basic/classes/StorageCallback/StorageCallback.ru.mdx +97 -0
  143. package/src/media/functional/functional-basic/classes/StorageCallback/StorageCallback.vi.mdx +97 -0
  144. package/src/media/functional/functional-basic/functions/addTagHighlightMatch/addTagHighlightMatch.en.mdx +13 -5
  145. package/src/media/functional/functional-basic/functions/addTagHighlightMatch/addTagHighlightMatch.ru.mdx +13 -5
  146. package/src/media/functional/functional-basic/functions/addTagHighlightMatch/addTagHighlightMatch.vi.mdx +13 -5
  147. package/src/media/functional/functional-basic/functions/anyToString/anyToString.en.mdx +37 -19
  148. package/src/media/functional/functional-basic/functions/anyToString/anyToString.ru.mdx +37 -19
  149. package/src/media/functional/functional-basic/functions/anyToString/anyToString.vi.mdx +35 -17
  150. package/src/media/functional/functional-basic/functions/applyTemplate/applyTemplate.en.mdx +31 -19
  151. package/src/media/functional/functional-basic/functions/applyTemplate/applyTemplate.ru.mdx +31 -19
  152. package/src/media/functional/functional-basic/functions/applyTemplate/applyTemplate.vi.mdx +32 -20
  153. package/src/media/functional/functional-basic/functions/blobToBase64/blobToBase64.en.mdx +29 -15
  154. package/src/media/functional/functional-basic/functions/blobToBase64/blobToBase64.ru.mdx +28 -14
  155. package/src/media/functional/functional-basic/functions/blobToBase64/blobToBase64.vi.mdx +28 -14
  156. package/src/media/functional/functional-basic/functions/capitalize/capitalize.en.mdx +7 -3
  157. package/src/media/functional/functional-basic/functions/capitalize/capitalize.ru.mdx +7 -3
  158. package/src/media/functional/functional-basic/functions/capitalize/capitalize.vi.mdx +7 -3
  159. package/src/media/functional/functional-basic/functions/copyObject/copyObject.en.mdx +17 -13
  160. package/src/media/functional/functional-basic/functions/copyObject/copyObject.ru.mdx +17 -13
  161. package/src/media/functional/functional-basic/functions/copyObject/copyObject.vi.mdx +17 -13
  162. package/src/media/functional/functional-basic/functions/createElement/createElement.en.mdx +2 -0
  163. package/src/media/functional/functional-basic/functions/createElement/createElement.ru.mdx +2 -0
  164. package/src/media/functional/functional-basic/functions/createElement/createElement.vi.mdx +2 -0
  165. package/src/media/functional/functional-basic/functions/encodeAttribute/encodeAttribute.en.mdx +1 -3
  166. package/src/media/functional/functional-basic/functions/encodeAttribute/encodeAttribute.ru.mdx +1 -3
  167. package/src/media/functional/functional-basic/functions/encodeAttribute/encodeAttribute.vi.mdx +1 -3
  168. package/src/media/functional/functional-basic/functions/executeFunction/executeFunction.en.mdx +13 -10
  169. package/src/media/functional/functional-basic/functions/executeFunction/executeFunction.ru.mdx +14 -11
  170. package/src/media/functional/functional-basic/functions/executeFunction/executeFunction.vi.mdx +12 -9
  171. package/src/media/functional/functional-basic/functions/executePromise/executePromise.en.mdx +14 -13
  172. package/src/media/functional/functional-basic/functions/executePromise/executePromise.ru.mdx +15 -14
  173. package/src/media/functional/functional-basic/functions/executePromise/executePromise.vi.mdx +14 -13
  174. package/src/media/functional/functional-basic/functions/forEach/forEach.en.mdx +1 -1
  175. package/src/media/functional/functional-basic/functions/forEach/forEach.ru.mdx +1 -1
  176. package/src/media/functional/functional-basic/functions/forEach/forEach.vi.mdx +1 -1
  177. package/src/media/functional/functional-basic/functions/frame/frame.en.mdx +7 -4
  178. package/src/media/functional/functional-basic/functions/frame/frame.ru.mdx +6 -3
  179. package/src/media/functional/functional-basic/functions/frame/frame.vi.mdx +7 -4
  180. package/src/media/functional/functional-basic/functions/getArrayHighlightMatch/getArrayHighlightMatch.en.mdx +34 -0
  181. package/src/media/functional/functional-basic/functions/getArrayHighlightMatch/getArrayHighlightMatch.ru.mdx +34 -0
  182. package/src/media/functional/functional-basic/functions/getArrayHighlightMatch/getArrayHighlightMatch.vi.mdx +35 -0
  183. package/src/media/functional/functional-basic/functions/getCurrentDate/getCurrentDate.en.mdx +2 -0
  184. package/src/media/functional/functional-basic/functions/getCurrentDate/getCurrentDate.ru.mdx +2 -0
  185. package/src/media/functional/functional-basic/functions/getCurrentDate/getCurrentDate.vi.mdx +2 -0
  186. package/src/media/functional/functional-basic/functions/getCurrentTime/getCurrentTime.en.mdx +21 -0
  187. package/src/media/functional/functional-basic/functions/getCurrentTime/getCurrentTime.ru.mdx +21 -0
  188. package/src/media/functional/functional-basic/functions/getCurrentTime/getCurrentTime.vi.mdx +21 -0
  189. package/src/media/functional/functional-basic/functions/getElementId/getElementId.en.mdx +17 -3
  190. package/src/media/functional/functional-basic/functions/getElementId/getElementId.ru.mdx +17 -3
  191. package/src/media/functional/functional-basic/functions/getElementId/getElementId.vi.mdx +18 -4
  192. package/src/media/functional/functional-basic/functions/getElementSafeScript/getElementSafeScript.en.mdx +31 -0
  193. package/src/media/functional/functional-basic/functions/getElementSafeScript/getElementSafeScript.ru.mdx +31 -0
  194. package/src/media/functional/functional-basic/functions/getElementSafeScript/getElementSafeScript.vi.mdx +31 -0
  195. package/src/media/functional/functional-basic/functions/getOnlyText/getOnlyText.en.mdx +25 -0
  196. package/src/media/functional/functional-basic/functions/getOnlyText/getOnlyText.ru.mdx +25 -0
  197. package/src/media/functional/functional-basic/functions/getOnlyText/getOnlyText.vi.mdx +25 -0
  198. package/src/media/functional/functional-basic/functions/getSearchExp/getSearchExp.en.mdx +11 -4
  199. package/src/media/functional/functional-basic/functions/getSearchExp/getSearchExp.ru.mdx +14 -7
  200. package/src/media/functional/functional-basic/functions/getSearchExp/getSearchExp.vi.mdx +13 -6
  201. package/src/media/functional/functional-basic/functions/getSeparatingSearchExp/getSeparatingSearchExp.en.mdx +3 -2
  202. package/src/media/functional/functional-basic/functions/getSeparatingSearchExp/getSeparatingSearchExp.ru.mdx +3 -2
  203. package/src/media/functional/functional-basic/functions/getSeparatingSearchExp/getSeparatingSearchExp.vi.mdx +3 -2
  204. package/src/media/functional/functional-basic/functions/toNumber/toNumber.en.mdx +25 -9
  205. package/src/media/functional/functional-basic/functions/toNumber/toNumber.ru.mdx +25 -9
  206. package/src/media/functional/functional-basic/functions/toNumber/toNumber.vi.mdx +25 -9
  207. package/src/media/functional/functional-basic/functions/toString/toString.en.mdx +28 -0
  208. package/src/media/functional/functional-basic/functions/toString/toString.ru.mdx +28 -0
  209. package/src/media/functional/functional-basic/functions/toString/toString.vi.mdx +28 -0
  210. package/src/media/functional/functional-basic/icons/icons.en.mdx +3 -0
  211. package/src/media/functional/functional-basic/icons/icons.ru.mdx +3 -0
  212. package/src/media/functional/functional-basic/icons/icons.vi.mdx +3 -0
  213. package/src/media/functional/nitro-basic/functions/getInject.en.mdx +27 -0
  214. package/src/media/functional/nitro-basic/functions/getInject.ru.mdx +27 -0
  215. package/src/media/functional/nitro-basic/functions/getInject.vi.mdx +20 -0
  216. package/src/media/functional/ui/about/about.en.mdx +45 -0
  217. package/src/media/functional/ui/about/about.ru.mdx +45 -0
  218. package/src/media/functional/ui/about/about.vi.mdx +45 -0
  219. package/src/media/functional/ui/component/component.en.mdx +104 -0
  220. package/src/media/functional/ui/component/component.ru.mdx +106 -0
  221. package/src/media/functional/ui/component/component.vi.mdx +104 -0
  222. package/src/media/functional/ui/setup/setup.en.mdx +72 -0
  223. package/src/media/functional/ui/setup/setup.ru.mdx +72 -0
  224. package/src/media/functional/ui/setup/setup.vi.mdx +72 -0
  225. package/src/media/functional/ui/wiki-data.en.mdx +114 -0
  226. package/src/media/functional/ui/wiki-data.ru.mdx +114 -0
  227. package/src/media/functional/ui/wiki-data.vi.mdx +114 -0
@@ -8,6 +8,7 @@ import { Meta } from '@storybook/addon-docs/blocks'
8
8
 
9
9
  **Параметры:**
10
10
  - `getter: () => Promise<T> | T` — Функция, которая возвращает вычисляемое значение (может быть синхронной или асинхронной).
11
+ - `initialState?: T` — Начальное значение результата.
11
12
 
12
13
  **Возвращает:**
13
14
  `CustomRef<T>` — Реактивное вычисляемое свойство с результатом выполнения геттера.
@@ -15,6 +16,13 @@ import { Meta } from '@storybook/addon-docs/blocks'
15
16
  ```typescript
16
17
  import { computedEternity } from '@dxtmisha/functional'
17
18
 
19
+ // Начальное значение
20
+ const status = computedEternity(async () => {
21
+ await new Promise(resolve => setTimeout(resolve, 1000))
22
+ return 'online'
23
+ }, 'offline')
24
+ // Status.value будет 'offline' до завершения выполнения геттера
25
+
18
26
  // Асинхронный геттер - будет вызван только при первом обращении к 'data.value'
19
27
  const data = computedEternity(async () => {
20
28
  const response = await fetch('/api/data')
@@ -8,6 +8,7 @@ Tạo một thuộc tính tính toán được tính toán theo yêu cầu và
8
8
 
9
9
  **Các tham số:**
10
10
  - `getter: () => Promise<T> | T` — Một hàm trả về giá trị cần tính toán (có thể là đồng bộ hoặc bất đồng bộ).
11
+ - `initialState?: T` — Giá trị ban đầu của kết quả.
11
12
 
12
13
  **Trả về:**
13
14
  `CustomRef<T>` — Một ref tùy chỉnh phản ứng chứa kết quả đã giải quyết của getter.
@@ -15,6 +16,13 @@ Tạo một thuộc tính tính toán được tính toán theo yêu cầu và
15
16
  ```typescript
16
17
  import { computedEternity } from '@dxtmisha/functional'
17
18
 
19
+ // Trạng thái ban đầu
20
+ const status = computedEternity(async () => {
21
+ await new Promise(resolve => setTimeout(resolve, 1000))
22
+ return 'online'
23
+ }, 'offline')
24
+ // Status.value là 'offline' cho đến khi getter được giải quyết
25
+
18
26
  // Getter bất đồng bộ - sẽ chỉ được gọi khi 'data.value' được truy cập lần đầu tiên
19
27
  const data = computedEternity(async () => {
20
28
  const response = await fetch('/api/data')
@@ -6,6 +6,17 @@ import {Meta} from '@storybook/addon-docs/blocks'
6
6
 
7
7
  The `Api` class is a central utility for making HTTP requests. It provides a simple interface for common methods and manages global settings like base URL, default headers, and lifecycle hooks.
8
8
 
9
+ ### Key Capabilities
10
+
11
+ The class provides a comprehensive set of tools for managing network communication:
12
+ - **CRUD Methods** — execution of `GET`, `POST`, `PUT`, `PATCH`, `DELETE` requests.
13
+ - **Global Configuration** — setting up base URLs, headers, and parameters.
14
+ - **Lifecycle Hooks** — handling events before and after the request (e.g., for Refresh Token).
15
+ - **Hydration (SSR)** — transferring data from server to client to prevent duplicate requests.
16
+ - **Caching** — saving responses in memory or external storage (LocalStorage).
17
+ - **Response Emulation** — creating mock data for development and testing.
18
+ - **Loading and Error Management** — integration with global indicator components and error centers.
19
+
9
20
  ## Basic Usage
10
21
 
11
22
  The simplest way to make a request is by using the static methods `get`, `post`, `put`, or `delete`. All methods support response typing via Generics.
@@ -84,6 +95,40 @@ Api.setEnd(async (response, apiFetch) => {
84
95
  })
85
96
  ```
86
97
 
98
+ ## Hydration
99
+
100
+ Hydration allows transferring data obtained during server-side rendering (SSR) to the client side. This prevents the same requests from being executed again immediately after the page loads.
101
+
102
+ 1. **On the Server**: Perform the necessary requests and get the script via `Api.getHydrationScript()`.
103
+ 2. **In the Template**: Insert the resulting string into the HTML.
104
+ 3. **On the Client**: Upon `Api` initialization, the data will be automatically loaded into the response manager.
105
+
106
+ ```javascript
107
+ // SSR Example
108
+ await Api.get({ path: 'settings' });
109
+ const hydrationScript = Api.getHydrationScript(); // <script>...</script>
110
+ ```
111
+
112
+ ## Caching
113
+
114
+ The `Api` class supports automatic response caching. You can use either the built-in in-memory storage or connect external storage (e.g., `LocalStorage`).
115
+
116
+ ```javascript
117
+ import { ApiCache, DataStorage } from '@dxtmisha/functional-basic';
118
+
119
+ // Connecting external storage (optional)
120
+ ApiCache.init(
121
+ async (key) => DataStorage.get(key),
122
+ async (key, value) => DataStorage.set(key, value)
123
+ );
124
+
125
+ // Usage in a request
126
+ const data = await Api.get({
127
+ path: 'catalog/list',
128
+ cache: 3600 // Cache for 1 hour (in seconds)
129
+ });
130
+ ```
131
+
87
132
  ## Response Emulation
88
133
 
89
134
  The built-in `ApiResponse` manager (accessible via `Api.getResponse()`) allows you to intercept requests and return mock data. This is extremely useful for UI development when the backend is not ready, or for writing tests.
@@ -6,6 +6,17 @@ import {Meta} from '@storybook/addon-docs/blocks'
6
6
 
7
7
  Класс `Api` — это основной инструмент для работы с HTTP-запросами. Он предоставляет простой интерфейс для стандартных методов и управляет глобальными настройками, такими как базовый URL, заголовки по умолчанию и хуки жизненного цикла.
8
8
 
9
+ ### Основные возможности
10
+
11
+ Класс предоставляет полный набор инструментов для управления сетевым взаимодействием:
12
+ - **CRUD методы** — выполнение `GET`, `POST`, `PUT`, `PATCH`, `DELETE` запросов.
13
+ - **Глобальная конфигурация** — настройка базовых URL, заголовков и параметров.
14
+ - **Хуки жизненного цикла** — обработка событий до и после запроса (например, для Refresh Token).
15
+ - **Гидратация (SSR)** — передача данных от сервера к клиенту для предотвращения дублирования запросов.
16
+ - **Кэширование** — сохранение ответов в памяти или внешнем хранилище (LocalStorage).
17
+ - **Эмуляция ответов** — создание мок-данных для разработки и тестирования.
18
+ - **Управление загрузкой и ошибками** — интеграция с глобальными компонентами индикации и центрами ошибок.
19
+
9
20
  ## Базовое использование
10
21
 
11
22
  Самый простой способ выполнить запрос — использовать статические методы `get`, `post`, `put`, или `delete`. Все методы поддерживают типизацию ответа через Generic.
@@ -84,6 +95,40 @@ Api.setEnd(async (response, apiFetch) => {
84
95
  })
85
96
  ```
86
97
 
98
+ ## Гидратация
99
+
100
+ Гидратация позволяет передавать данные, полученные при серверном рендеринге (SSR), на клиентскую сторону. Это предотвращает повторное выполнение одних и тех же запросов сразу после загрузки страницы.
101
+
102
+ 1. **На сервере**: выполните нужные запросы и получите скрипт через `Api.getHydrationScript()`.
103
+ 2. **В шаблоне**: вставьте полученную строку в HTML.
104
+ 3. **На клиенте**: при инициализации `Api` данные будут автоматически загружены в менеджер ответов.
105
+
106
+ ```javascript
107
+ // Пример на сервере (SSR)
108
+ await Api.get({ path: 'settings' });
109
+ const hydrationScript = Api.getHydrationScript(); // <script>...</script>
110
+ ```
111
+
112
+ ## Кэширование
113
+
114
+ Класс `Api` поддерживает автоматическое кэширование ответов. Вы можете использовать как встроенное хранилище в памяти, так и подключить внешнее (например, `LocalStorage`).
115
+
116
+ ```javascript
117
+ import { ApiCache, DataStorage } from '@dxtmisha/functional-basic';
118
+
119
+ // Подключение внешнего хранилища (необязательно)
120
+ ApiCache.init(
121
+ async (key) => DataStorage.get(key),
122
+ async (key, value) => DataStorage.set(key, value)
123
+ );
124
+
125
+ // Использование в запросе
126
+ const data = await Api.get({
127
+ path: 'catalog/list',
128
+ cache: 3600 // Кэшировать на 1 час (в секундах)
129
+ });
130
+ ```
131
+
87
132
  ## Эмуляция ответов
88
133
 
89
134
  Встроенный менеджер `ApiResponse` (доступен через `Api.getResponse()`) позволяет перехватывать запросы и возвращать мок-данные. Это крайне полезно при разработке интерфейса, когда бэкенд еще не готов, или для написания тестов.
@@ -6,6 +6,17 @@ import {Meta} from '@storybook/addon-docs/blocks'
6
6
 
7
7
  Lớp `Api` là công cụ trung tâm để thực hiện các yêu cầu HTTP. Nó cung cấp một giao diện đơn giản cho các phương thức phổ biến và quản lý các cài đặt toàn cục như URL cơ sở, tiêu đề mặc định và các hook vòng đời.
8
8
 
9
+ ### Các khả năng chính
10
+
11
+ Lớp cung cấp một bộ công cụ toàn diện để quản lý tương tác mạng:
12
+ - **Các phương thức CRUD** — thực hiện các yêu cầu `GET`, `POST`, `PUT`, `PATCH`, `DELETE`.
13
+ - **Cấu hình toàn cục** — thiết lập URL cơ sở, tiêu đề và tham số.
14
+ - **Hook vòng đời** — xử lý các sự kiện trước và sau yêu cầu (ví dụ: cho Refresh Token).
15
+ - **Hydration (SSR)** — chuyển dữ liệu từ máy chủ sang máy khách để ngăn chặn các yêu cầu trùng lặp.
16
+ - **Bộ nhớ đệm (Caching)** — lưu các phản hồi trong bộ nhớ hoặc bộ nhớ ngoài (LocalStorage).
17
+ - **Giả lập phản hồi** — tạo dữ liệu giả để phát triển và kiểm thử.
18
+ - **Quản lý tải và lỗi** — tích hợp với các thành phần chỉ báo toàn cục và trung tâm lỗi.
19
+
9
20
  ## Cách dùng cơ bản
10
21
 
11
22
  Cách đơn giản nhất để thực hiện yêu cầu là sử dụng các phương thức tĩnh `get`, `post`, `put`, hoặc `delete`. Tất cả các phương thức đều hỗ trợ định nghĩa kiểu dữ liệu (typing) thông qua Generic.
@@ -84,6 +95,40 @@ Api.setEnd(async (response, apiFetch) => {
84
95
  })
85
96
  ```
86
97
 
98
+ ## Hydration
99
+
100
+ Hydration cho phép chuyển dữ liệu thu được trong quá trình server-side rendering (SSR) sang phía máy khách. Điều này ngăn chặn việc thực hiện lại các yêu cầu tương tự ngay sau khi trang tải xong.
101
+
102
+ 1. **Trên máy chủ**: Thực hiện các yêu cầu cần thiết và lấy script qua `Api.getHydrationScript()`.
103
+ 2. **Trong mẫu (Template)**: Chèn chuỗi kết quả vào HTML.
104
+ 3. **Trên máy khách**: Khi khởi tạo `Api`, dữ liệu sẽ tự động được tải vào trình quản lý phản hồi.
105
+
106
+ ```javascript
107
+ // Ví dụ SSR
108
+ await Api.get({ path: 'settings' });
109
+ const hydrationScript = Api.getHydrationScript(); // <script>...</script>
110
+ ```
111
+
112
+ ## Bộ nhớ đệm (Caching)
113
+
114
+ Lớp `Api` hỗ trợ tự động lưu bộ nhớ đệm cho các phản hồi. Bạn có thể sử dụng bộ nhớ trong tích hợp hoặc kết nối bộ nhớ ngoài (ví dụ: `LocalStorage`).
115
+
116
+ ```javascript
117
+ import { ApiCache, DataStorage } from '@dxtmisha/functional-basic';
118
+
119
+ // Kết nối bộ nhớ ngoài (tùy chọn)
120
+ ApiCache.init(
121
+ async (key) => DataStorage.get(key),
122
+ async (key, value) => DataStorage.set(key, value)
123
+ );
124
+
125
+ // Sử dụng trong một yêu cầu
126
+ const data = await Api.get({
127
+ path: 'catalog/list',
128
+ cache: 3600 // Lưu bộ nhớ đệm trong 1 giờ (tính bằng giây)
129
+ });
130
+ ```
131
+
87
132
  ## Giả lập phản hồi
88
133
 
89
134
  Trình quản lý `ApiResponse` tích hợp sẵn (có thể truy cập qua `Api.getResponse()`) cho phép bạn chặn các yêu cầu và trả về dữ liệu giả (mock). Điều này cực kỳ hữu ích cho việc phát triển giao diện khi backend chưa sẵn sàng hoặc để viết các bài kiểm thử.
@@ -1,78 +1,81 @@
1
1
  import {Meta} from '@storybook/addon-docs/blocks'
2
2
 
3
- <Meta title='@dxtmisha/en/functional-basic/Classes/Api - Request Management'/>
3
+ <Meta title='@dxtmisha/en/functional-basic/Classes/Api - Request Management (Static)'/>
4
4
 
5
5
  # Api Class
6
6
 
7
- `Api` is a static wrapper class around the `ApiInstance` instance for efficient network request operations.
7
+ The `Api` class is a **Primary Class (Static)** and serves as the main entry point for managing HTTP requests. It is a static wrapper around a globally managed `ApiInstance`, providing a clean, singleton-based interface for standard network operations.
8
8
 
9
- All methods of the `Api` class are automatically delegated to an internal global `ApiInstance` object. This allows you to work with HTTP requests without the need to manually instantiate objects:
9
+ ## Key Features
10
10
 
11
- ```typescript
12
- import { Api } from '@dxtmisha/functional'
11
+ - **Static Interface** — perform standard HTTP operations (`GET`, `POST`, etc.) without manual instantiation.
12
+ - **Global Lifecycle Hooks** configure request preparation and analysis once for the entire application.
13
+ - **SSR Isolation** — utilizes `ServerStorage` to manage individual instance isolation during server-side rendering.
14
+ - **Simplified Setup** — provides a unified `setConfig` method to apply multiple configuration layers at once.
13
15
 
14
- // These calls interact with the same global instance under the hood
15
- Api.setUrl('https://api.example.com/v1/')
16
- Api.setHeaders({ 'Authorization': 'Bearer token123' })
16
+ ## Methods
17
17
 
18
- const data = await Api.get({ path: 'users' })
19
- ```
18
+ ### Action
20
19
 
21
- ## Methods
20
+ Methods for performing physical network requests.
21
+
22
+ - `request<T>(pathRequest: string | ApiFetch): Promise<T>` — Core executor; accepts a path string or configuration object.
23
+ - `get<T>(request: ApiFetch): Promise<T>` — Sends a GET request.
24
+ - `post<T>(request: ApiFetch): Promise<T>` — Sends a POST request.
25
+ - `put<T>(request: ApiFetch): Promise<T>` — Sends a PUT request.
26
+ - `patch<T>(request: ApiFetch): Promise<T>` — Sends a PATCH request.
27
+ - `delete<T>(request: ApiFetch): Promise<T>` — Sends a DELETE request.
28
+
29
+ ### Check
30
+
31
+ - `isLocalhost(): boolean` — Checks if the current environment is a local development server.
22
32
 
23
- ### Instance Access
33
+ ### Configuration
24
34
 
25
- - `getItem(): ApiInstance` — Returns the internal `ApiInstance` object used by all static method delegations.
35
+ - `setUrl(url: string): void` — Changes the base API URL.
36
+ - `setHeaders(headers: Record<string, string>): void` — Sets default request headers.
37
+ - `setRequestDefault(request: Record<string, any>): void` — Sets default request body data.
38
+ - `setPreparation(callback): void` — Registers a hook to run before every enabled request.
39
+ - `setEnd(callback): void` — Registers a hook to run after every enabled response.
40
+ - `setTimeout(timeout: number): void` — Changes the global request timeout.
41
+ - `setOrigin(origin: string): void` — Changes the origin (protocol and domain) for the base URL.
42
+ - `setConfig(config?: ApiConfig): void` — Applies a complete configuration object.
26
43
 
27
- ### Information Methods
44
+ ### Auxiliary
28
45
 
29
- - `isLocalhost(): boolean` — Returns `true` if the code is running on a local development server.
30
- - `getStatus(): ApiStatus` — Returns the `ApiStatus` manager for tracking the state and errors of the last request.
31
- - `getResponse(): ApiResponse` — Returns the responses/emulation manager `ApiResponse`.
32
- - `getUrl(path: string, api?: boolean): string` — Returns the full URL for the request. Dynamic placeholders `{locale}`, `{country}`, `{language}` are automatically replaced.
33
- - `getBody(request?, method?): string | FormData | undefined` Returns data for the request body.
34
- - `getBodyForGet(request, path?, method?): string` — Returns the query string for GET method requests.
46
+ - `getStatus(): ApiStatus` — Accesses the status manager for the last request.
47
+ - `getResponse(): ApiResponse` — Accesses the response/emulation manager.
48
+ - `getHydration(): ApiHydration` — Accesses the hydration manager.
49
+ - `getHydrationScript(): string` — Returns the script block for SSR-to-client hydration.
50
+ - `getOrigin(): string` Returns the base origin URL combined with the API path.
51
+ - `getUrl(path: string, api?: boolean): string` — Returns the fully resolved URL with `{locale}`, `{country}`, `{language}` placeholder substitution.
52
+ - `getBody(request, method?): string | FormData | undefined` — Prepares the request body.
53
+ - `getBodyForGet(request, path?, method?): string` — Prepares the query string.
54
+ - `getItem(): ApiInstance` — Returns the underlying `ApiInstance` object.
35
55
 
36
- ### Configuration Methods
56
+ ## Types
37
57
 
38
- All configuration methods return the `Api` class itself for chaining:
58
+ ### ApiConfig
39
59
 
40
- - `setUrl(url: string): Api` — Sets the base URL for all requests.
41
- - `setHeaders(headers: Record<string, string>): Api` — Sets default headers for all requests.
42
- - `setRequestDefault(request: Record<string, any>): Api` Sets default request data merged into every request body.
43
- - `setPreparation(callback): Api`Sets a callback function executed before each request.
44
- - `setEnd(callback): Api` Sets a callback function executed after each request.
45
- - `setConfig(config?: ApiConfig): Api` Applies a full configuration object at once (`urlRoot`, `headers`, `requestDefault`, `preparation`, `end`).
60
+ - `urlRoot: string` — the base URL for the API.
61
+ - `origin: string` — protocol and domain for the base URL.
62
+ - `headers: Record<string, string>` — default request headers.
63
+ - `requestDefault: Record<string, any>` default request data.
64
+ - `preparation: (apiFetch: ApiFetch) => Promise<void>` entry hook.
65
+ - `end: (query: Response, apiFetch: ApiFetch) => Promise<ApiPreparationEnd>` exit hook.
66
+ - `timeout: number` — global timeout in milliseconds.
46
67
 
47
- ### Request Methods
68
+ ## Proxy Architecture
48
69
 
49
- - `request<T>(pathRequest: string | ApiFetch): Promise<T>` Core request executor. Accepts a string path or an `ApiFetch` configuration object.
50
- - `get<T>(request: ApiFetch): Promise<T>` — Sends an HTTP GET request.
51
- - `post<T>(request: ApiFetch): Promise<T>` — Sends an HTTP POST request.
52
- - `put<T>(request: ApiFetch): Promise<T>` — Sends an HTTP PUT request.
53
- - `delete<T>(request: ApiFetch): Promise<T>` — Sends an HTTP DELETE request.
70
+ The `Api` class operates as a **Static Proxy**. All method calls are redirected to an internal `ApiInstance`.
54
71
 
55
- ## setConfig
72
+ ### Instance Management
56
73
 
57
- The `setConfig` method allows applying multiple configuration options at once using an `ApiConfig` object:
74
+ The internal manager is stored in `ServerStorage` using a unique key (`__dxt_api_instance__`). This architecture solves two major problems:
58
75
 
59
- ```typescript
60
- import { Api } from '@dxtmisha/functional'
76
+ 1. **Thread Safety in SSR**: During server-side rendering, `ServerStorage` ensures that each incoming request has its own isolated API configuration and state, preventing data leaks between users.
77
+ 2. **Singleton Simplicity on Client**: On the client side, it behaves as a true singleton, allowing you to configure the API in your entry point and use it anywhere without passing instances.
61
78
 
62
- Api.setConfig({
63
- urlRoot: 'https://api.example.com/v1/',
64
- headers: { 'Authorization': 'Bearer token123' },
65
- requestDefault: { source: 'webapp' },
66
- preparation: async (apiFetch) => {
67
- console.log('Preparing:', apiFetch.path)
68
- },
69
- end: async (response, apiFetch) => {
70
- if (response.status === 401) {
71
- return { reset: true }
72
- }
73
- return {}
74
- }
75
- })
76
- ```
79
+ ### Delegation
77
80
 
78
- > **Important:** The exhaustive details on `ApiFetch` options, lifecycle hooks, response emulation, and response data structure are documented in the core **ApiInstance** documentation.
81
+ While `Api` is the preferred interface for standard application logic, the core logic (retries, hydration logic, jitter) resides within `ApiInstance`. For advanced scenarios involving multiple base URLs or different header sets simultaneously, you may instantiate `ApiInstance` directly.
@@ -1,78 +1,81 @@
1
1
  import {Meta} from '@storybook/addon-docs/blocks'
2
2
 
3
- <Meta title='@dxtmisha/ru/functional-basic/Classes/Api - Управление запросами'/>
3
+ <Meta title='@dxtmisha/ru/functional-basic/Classes/Api - Управление запросами (Static)'/>
4
4
 
5
5
  # Класс Api
6
6
 
7
- `Api` это статичная обертка над инстансом `ApiInstance`.
7
+ Класс `Api` является **основным классом (статическим)** и служит главной точкой входа для управления HTTP-запросами. Он представляет собой статическую обертку над глобально управляемым `ApiInstance`, предоставляя чистый интерфейс на основе синглтона для стандартных сетевых операций.
8
8
 
9
- Все вызовы методов `Api` автоматически делегируются внутреннему глобальному объекту `ApiInstance`. Это позволяет работать с HTTP запросами без необходимости самостоятельного создания инстансов:
9
+ ## Ключевые особенности
10
10
 
11
- ```typescript
12
- import { Api } from '@dxtmisha/functional'
11
+ - **Статический интерфейс** — выполнение стандартных HTTP-операций (`GET`, `POST` и т. д.) без необходимости ручного создания экземпляров.
12
+ - **Глобальные хуки жизненного цикла** — настройте подготовку и анализ запросов один раз для всего приложения.
13
+ - **Изоляция в SSR** — использует `ServerStorage` для управления изоляцией отдельных экземпляров во время рендеринга на стороне сервера.
14
+ - **Упрощенная настройка** — предоставляет унифицированный метод `setConfig` для одновременного применения нескольких слоев конфигурации.
13
15
 
14
- // Эти вызовы обращаются к одному и тому же глобальному инстансу под капотом
15
- Api.setUrl('https://api.example.com/v1/')
16
- Api.setHeaders({ 'Authorization': 'Bearer token123' })
16
+ ## Методы
17
17
 
18
- const data = await Api.get({ path: 'users' })
19
- ```
18
+ ### Действие
20
19
 
21
- ## Методы
20
+ Методы для выполнения физических сетевых запросов.
21
+
22
+ - `request<T>(pathRequest: string | ApiFetch): Promise<T>` — Основной исполнитель; принимает строку пути или объект конфигурации.
23
+ - `get<T>(request: ApiFetch): Promise<T>` — Отправляет GET-запрос.
24
+ - `post<T>(request: ApiFetch): Promise<T>` — Отправляет POST-запрос.
25
+ - `put<T>(request: ApiFetch): Promise<T>` — Отправляет PUT-запрос.
26
+ - `patch<T>(request: ApiFetch): Promise<T>` — Отправляет PATCH-запрос.
27
+ - `delete<T>(request: ApiFetch): Promise<T>` — Отправляет DELETE-запрос.
28
+
29
+ ### Проверка
30
+
31
+ - `isLocalhost(): boolean` — Проверяет, запущена ли среда на локальном сервере разработки.
22
32
 
23
- ### Доступ к инстансу
33
+ ### Конфигурация
24
34
 
25
- - `getItem(): ApiInstance` — Возвращает внутренний объект `ApiInstance`, используемый всеми статическими методами.
35
+ - `setUrl(url: string): void` — Изменяет базовый URL API.
36
+ - `setHeaders(headers: Record<string, string>): void` — Устанавливает заголовки запроса по умолчанию.
37
+ - `setRequestDefault(request: Record<string, any>): void` — Устанавливает данные тела запроса по умолчанию.
38
+ - `setPreparation(callback): void` — Регистрирует хук, запускаемый перед каждым включенным запросом.
39
+ - `setEnd(callback): void` — Регистрирует хук, запускаемый после каждого включенного ответа.
40
+ - `setTimeout(timeout: number): void` — Изменяет глобальный таймаут запроса.
41
+ - `setOrigin(origin: string): void` — Изменяет источник (протокол и домен) для базового URL.
42
+ - `setConfig(config?: ApiConfig): void` — Применяет полный объект конфигурации.
26
43
 
27
- ### Информационные методы
44
+ ### Вспомогательные
28
45
 
29
- - `isLocalhost(): boolean` — Возвращает `true`, если код работает на локальном сервере разработки.
30
- - `getStatus(): ApiStatus` — Возвращает менеджер `ApiStatus` для отслеживания состояния и ошибок последнего запроса.
31
- - `getResponse(): ApiResponse` — Возвращает менеджер ответов/эмуляции `ApiResponse`.
32
- - `getUrl(path: string, api?: boolean): string` — Возвращает полный URL запроса. Динамические заполнители `{locale}`, `{country}`, `{language}` заменяются автоматически.
33
- - `getBody(request?, method?): string | FormData | undefined` Возвращает данные для тела запроса.
34
- - `getBodyForGet(request, path?, method?): string` — Возвращает строку параметров запроса для метода GET.
46
+ - `getStatus(): ApiStatus` — Доступ к менеджеру статуса последнего запроса.
47
+ - `getResponse(): ApiResponse` — Доступ к менеджеру ответов/эмуляции.
48
+ - `getHydration(): ApiHydration` — Доступ к менеджеру гидратации.
49
+ - `getHydrationScript(): string` — Возвращает блок скрипта для гидратации SSR-клиент.
50
+ - `getOrigin(): string` Возвращает базовый URL источника, объединенный с путем API.
51
+ - `getUrl(path: string, api?: boolean): string` — Возвращает полностью разрешенный URL с подстановкой плейсхолдеров `{locale}`, `{country}`, `{language}`.
52
+ - `getBody(request?, method?): string | FormData | undefined` — Подготавливает тело запроса.
53
+ - `getBodyForGet(request, path?, method?): string` — Подготавливает строку запроса.
54
+ - `getItem(): ApiInstance` — Возвращает базовый объект `ApiInstance`.
35
55
 
36
- ### Методы конфигурации
56
+ ## Типы
37
57
 
38
- Все методы конфигурации возвращают сам класс `Api` для цепочечного вызова:
58
+ ### ApiConfig
39
59
 
40
- - `setUrl(url: string): Api` — Устанавливает базовый URL для всех запросов.
41
- - `setHeaders(headers: Record<string, string>): Api` — Устанавливает заголовки по умолчанию для всех запросов.
42
- - `setRequestDefault(request: Record<string, any>): Api` Устанавливает данные запроса по умолчанию, объединяемые с каждым телом запроса.
43
- - `setPreparation(callback): Api`Устанавливает функцию обратного вызова, выполняемую перед каждым запросом.
44
- - `setEnd(callback): Api` Устанавливает функцию обратного вызова, выполняемую после каждого запроса.
45
- - `setConfig(config?: ApiConfig): Api` Применяет полный объект конфигурации сразу (`urlRoot`, `headers`, `requestDefault`, `preparation`, `end`).
60
+ - `urlRoot: string` — базовый URL для API.
61
+ - `origin: string` — протокол и домен для формирования базового URL.
62
+ - `headers: Record<string, string>`заголовки запроса по умолчанию.
63
+ - `requestDefault: Record<string, any>` данные запроса по умолчанию.
64
+ - `preparation: (apiFetch: ApiFetch) => Promise<void>` входной хук.
65
+ - `end: (query: Response, apiFetch: ApiFetch) => Promise<ApiPreparationEnd>` выходной хук.
66
+ - `timeout: number` — глобальный таймаут в миллисекундах.
46
67
 
47
- ### Методы запросов
68
+ ## Прокси-архитектура
48
69
 
49
- - `request<T>(pathRequest: string | ApiFetch): Promise<T>` Основной исполнитель запросов. Принимает строку пути или объект конфигурации `ApiFetch`.
50
- - `get<T>(request: ApiFetch): Promise<T>` — Отправляет HTTP GET запрос.
51
- - `post<T>(request: ApiFetch): Promise<T>` — Отправляет HTTP POST запрос.
52
- - `put<T>(request: ApiFetch): Promise<T>` — Отправляет HTTP PUT запрос.
53
- - `delete<T>(request: ApiFetch): Promise<T>` — Отправляет HTTP DELETE запрос.
70
+ Класс `Api` работает как **статический прокси**. Все вызовы методов перенаправляются на внутренний `ApiInstance`.
54
71
 
55
- ## setConfig
72
+ ### Управление экземпляром
56
73
 
57
- Метод `setConfig` позволяет применить несколько параметров конфигурации одновременно с помощью объекта `ApiConfig`:
74
+ Внутренний менеджер хранится в `ServerStorage` под уникальным ключом (`__dxt_api_instance__`). Эта архитектура решает две основные проблемы:
58
75
 
59
- ```typescript
60
- import { Api } from '@dxtmisha/functional'
76
+ 1. **Потокобезопасность в SSR**: Во время рендеринга на стороне сервера `ServerStorage` гарантирует, что каждый входящий запрос имеет свою собственную изолированную конфигурацию и состояние API, предотвращая утечку данных между пользователями.
77
+ 2. **Простота синглтона на клиенте**: На стороне клиента он ведет себя как настоящий синглтон, позволяя настроить API в точке входа и использовать его где угодно без передачи экземпляров.
61
78
 
62
- Api.setConfig({
63
- urlRoot: 'https://api.example.com/v1/',
64
- headers: { 'Authorization': 'Bearer token123' },
65
- requestDefault: { source: 'webapp' },
66
- preparation: async (apiFetch) => {
67
- console.log('Подготовка:', apiFetch.path)
68
- },
69
- end: async (response, apiFetch) => {
70
- if (response.status === 401) {
71
- return { reset: true }
72
- }
73
- return {}
74
- }
75
- })
76
- ```
79
+ ### Делегирование
77
80
 
78
- > **Важно:** Полный список параметров (`ApiFetch`), хуков (Lifecycle Hooks), эмуляции ответов и структуры данных ответа описан в документации базового класса **ApiInstance**.
81
+ Хотя `Api` является предпочтительным интерфейсом для стандартной логики приложения, основная логика (повторы, гидратация, джиттер) находится внутри `ApiInstance`. Для сложных сценариев, включающих несколько базовых URL-адресов или разные наборы заголовков одновременно, вы можете создавать экземпляры `ApiInstance` напрямую.