@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
@@ -10,11 +10,13 @@ It includes tight integration with dependency classes: `ApiStatus`, `ApiResponse
10
10
 
11
11
  ## Key Features
12
12
 
13
- - **CRUD Methods** — convenient aliases `get`, `post`, `put`, `delete` for handling HTTP requests
13
+ - **CRUD Methods** — convenient aliases `get`, `post`, `put`, `patch`, `delete` for handling HTTP requests
14
14
  - **Global Configuration** — setting base URL, default headers, and parameters for all requests
15
15
  - **Lifecycle Hooks** — ability to set custom callback functions executed before (`setPreparation`) and after (`setEnd`) each request
16
16
  - **Status Tracking** — access to the status and errors of the last request via `ApiStatus`
17
- - **Caching & Emulation** — managing mock responses and caching via `ApiResponse`
17
+ - **Hydration** — transferring data from server to client (SSR) for instant rendering
18
+ - **Caching** — saving responses in internal or external storage via `ApiCache`
19
+ - **Response Emulation** — flexible management of mock data via `ApiResponse`
18
20
  - **Automatic Parsing** — converting the request body into JSON/FormData and automatically extracting data from JSON responses
19
21
  - **Geolocation** — automatic substitution of `{locale}`, `{country}`, `{language}` placeholders into request paths
20
22
 
@@ -35,10 +37,13 @@ The `ApiInstance` can be configured during initialization with custom dependency
35
37
  - `preparationClass?: typeof ApiPreparation` — class for lifecycle hook management.
36
38
  - `loadingClass?: LoadingInstance` — instance of the loading indicator manager (defaults to `Loading.getItem()`).
37
39
  - `errorCenterClass?: ErrorCenterInstance` — instance of the error center for triggering events (defaults to `ErrorCenter.getItem()`).
40
+ - `hydrationClass?: typeof ApiHydration` — class for SSR hydration management.
38
41
 
39
- ## API Calling Methods
42
+ ## Methods
40
43
 
41
- ### `request`
44
+ ### Action
45
+
46
+ #### `request`
42
47
 
43
48
  Core executor sequence method managing pure physical network fetch pipelines. Should a solitary string serve as param context, default `GET` assumptions trigger automatically.
44
49
  In case of network failures (e.g., 500 status), the method explicitly throws an exception (`throw e`), allowing errors to be natively intercepted in `try/catch`. If the server returns a JSON object, the system automatically injects a `statusObject` field (instance of request status) to the returned payload.
@@ -48,49 +53,21 @@ In case of network failures (e.g., 500 status), the method explicitly throws an
48
53
 
49
54
  **Returns:** `Promise<ApiData<T>>` — decoded endpoint structural response formatted interface (including `data`, `statusObject`, etc., when returning an object payload).
50
55
 
51
- ### `get`
52
-
53
- Dispatches a basic query through HTTP `GET` methodologies natively optimizing inputs payload onto string search parameters formats automatically.
54
-
55
- **Parameters:**
56
- - `request: ApiFetch` — fetch execution configuration property mapping (`path`, `request` body, and so on).
57
-
58
- **Returns:** `Promise<T>`
59
-
60
- ### `post`
56
+ ### Shorthand
61
57
 
62
- Transfers query packets across standard REST/GraphQL pipelines formatted onto the HTTP `POST` specification.
58
+ - `get(request: ApiFetch): Promise<T>` Dispatches a basic query through HTTP `GET` methodologies natively optimizing inputs payload onto string search parameters formats automatically.
59
+ - `post(request: ApiFetch): Promise<T>` — Transfers query packets across standard REST/GraphQL pipelines formatted onto the HTTP `POST` specification.
60
+ - `put(request: ApiFetch): Promise<T>` — Directs object modifications over target remote points using typical system environment HTTP `PUT`.
61
+ - `patch(request: ApiFetch): Promise<T>` — Initiates partial resource updates using the standard HTTP `PATCH` method.
62
+ - `delete(request: ApiFetch): Promise<T>` — Forwards structural clearance/purge request using classic URL targeted HTTP `DELETE`.
63
63
 
64
- **Parameters:**
65
- - `request: ApiFetch` — parameters interface structure container including URL pointing directives.
66
-
67
- **Returns:** `Promise<T>`
68
-
69
- ### `put`
70
-
71
- Directs object modifications over target remote points using typical system environment HTTP `PUT`.
72
-
73
- **Parameters:**
74
- - `request: ApiFetch` — query options mapped against backend routing.
75
-
76
- **Returns:** `Promise<T>`
77
-
78
- ### `delete`
79
-
80
- Forwards structural clearance/purge request using classic URL targeted HTTP `DELETE`.
81
-
82
- **Parameters:**
83
- - `request: ApiFetch` — arguments package structure wrapper.
84
-
85
- **Returns:** `Promise<T>`
86
-
87
- ## Instance Retrieval Methods
64
+ ### Check
88
65
 
89
66
  - `isLocalhost(): boolean` — Returns `true` if the code is running on a local development server.
90
67
  - `getStatus(): ApiStatus` — Returns the `ApiStatus` manager for tracking the state, errors, and complete response object of the last network request.
91
68
  - `getResponse(): ApiResponse` — Returns the responses/emulation manager `ApiResponse` for controlling mock-responses.
92
69
 
93
- ## Configuration Methods
70
+ ### Configuration
94
71
 
95
72
  Methods to configure the API (support chaining, returning the `ApiInstance` object):
96
73
  - `setHeaders(headers: Record<string, string>): this` — Applies universal headers injected automatically toward outbound fetch activities.
@@ -98,22 +75,26 @@ Methods to configure the API (support chaining, returning the `ApiInstance` obje
98
75
  - `setUrl(url: string): this` — Overwrites generic target URL configurations prefix points.
99
76
  - `setPreparation(callback: (apiFetch: ApiFetch) => Promise<void>): this` — Connects a custom hook function actively running just _before_ execution trigger occurs.
100
77
  - `setEnd(callback: (query: Response, apiFetch: ApiFetch) => Promise<ApiPreparationEnd>): this` — Sets the hook triggered exactly _after_ network response returns.
78
+ - `setOrigin(origin: string): this` — Sets the origin (protocol and domain) for the base URL.
101
79
 
102
- ## Request Preparation Methods
80
+ ### Auxiliary
103
81
 
104
- - `getUrl(path: string, api?: boolean): string` — Generates the full target URL referencing the script, handling dynamic geography variables.
82
+ - `getUrl(path: string, api?: boolean): string` — Generates the full target URL referencing the script, handling `{locale}`, `{country}`, `{language}` placeholder substitution.
83
+ - `getOrigin(): string` — Returns the base origin URL combined with the API path.
105
84
  - `getBody(request?: ApiFetch['request'], method?: string): string | FormData | undefined` — Creates data to be passed into the request physical body.
106
85
  - `getBodyForGet(request: ApiFetch['request'], path?: string, method?: string): string` — Forms query parameters specifically for HTTP arguments assigned into the URL directly used when sending `GET` queries.
86
+ - `getHydration(): ApiHydration` — Returns the hydration manager.
87
+ - `getHydrationScript(): string` — Returns a string representation of the hydration data for the client.
107
88
 
108
89
  ## ApiFetch Object
109
90
 
110
- `ApiFetch` is the main configuration object passed to all request methods (`request`, `get`, `post`, `put`, `delete`). All fields are optional:
91
+ `ApiFetch` is the main configuration object passed to all request methods (`request`, `get`, `post`, `put`, `patch`, `delete`). All fields are optional:
111
92
 
112
93
  - `path?: string` — endpoint path relative to the base URL (e.g. `'users/list'`).
113
94
  - `pathFull?: string` — full request URL. If provided, overrides `api` and `path`.
114
95
  - `api?: boolean` — whether to prepend the base URL before `path`. Default: `true`.
115
- - `method?: ApiMethod` — HTTP method (`'GET'`, `'POST'`, `'PUT'`, `'DELETE'`). Default: `'GET'`.
116
- - `request?: FormData | Record<string, any> | string` — request body (for POST/PUT) or query parameters (for GET). Serialized as JSON or `FormData`.
96
+ - `method?: ApiMethod` — HTTP method (`'GET'`, `'POST'`, `'PUT'`, `'PATCH'`, `'DELETE'`). Default: `'GET'`.
97
+ - `request?: FormData | Record<string, any> | string` — request body (for POST/PUT/PATCH) or query parameters (for GET). Serialized as JSON or `FormData`.
117
98
  - `headers?: Record<string, string> | null` — additional request headers. Pass `null` to disable all headers.
118
99
  - `type?: string` — `Content-Type` header value. Default: `'application/json;charset=UTF-8'`.
119
100
  - `auth?: boolean` — include authentication headers.
@@ -125,10 +106,11 @@ Methods to configure the API (support chaining, returning the `ApiInstance` obje
125
106
  - `globalEnd?: boolean` — whether to run the global `setEnd` hook after the response. Default: `true`.
126
107
  - `queryReturn?: (query: Response) => Promise<any>` — custom response processor instead of the default JSON reader.
127
108
  - `init?: RequestInit` — additional options passed directly to native `fetch()` (CORS, cache mode, etc.).
128
- - `timeout?: number` — request timeout in milliseconds. Default: `16000`ms.
129
- - `controller?: AbortController` — controller for canceling the request.
109
+ - `timeout?: number` — request timeout in milliseconds. Default: `16000`ms (only used if `controller` is not provided).
110
+ - `controller?: AbortController` — controller for canceling the request. If provided, timeout is ignored.
130
111
  - `retry?: number` — number of retries on failure.
131
- - `retryDelay?: number` — base delay between retries in milliseconds. Default: `64`ms.
112
+ - `retryDelay?: number` — base delay between retries in milliseconds. Default: `64`ms. Jitter is used to prevent thundering herd problems.
113
+ - `endResetLimit?: number` — limit for recursive retries via `setEnd` with `reset: true`. Default: `8`.
132
114
 
133
115
  ## Response Data Structure
134
116
 
@@ -215,7 +197,7 @@ The `setEnd` method sets a callback function that is called after receiving a re
215
197
  - `apiFetch: ApiFetch` — the parameters object with which the request was performed.
216
198
 
217
199
  **Returns:** `Promise<ApiPreparationEnd>`. The result object can contain the following fields:
218
- - `reset?: boolean` — if set to `true`, the library will abort the current chain and **execute the request again** (recursively) after a jittered delay (see `retryDelay`). The entire process of preparation and execution will be restarted. This is used for automatic handling of refreshed access rights.
200
+ - `reset?: boolean` — if set to `true`, the library will abort the current chain and **execute the request again** (recursively) after a jittered delay (see `retryDelay`). The entire process of preparation and execution will be restarted. This is used for automatic handling of refreshed access rights. This recursion is limited by `endResetLimit` (default: 8).
219
201
  - `data?: any` — allows you to override the data returned by the API method. If this field is specified, the standard response reading mechanism (JSON/text) will be ignored.
220
202
 
221
203
  ```javascript
@@ -245,7 +227,80 @@ You can selectively disable global hooks in the `ApiFetch` object:
245
227
  - `globalPreparation: false` — skip the `setPreparation` hook execution.
246
228
  - `globalEnd: false` — skip the `setEnd` hook execution.
247
229
 
248
- ## Response Emulation (ApiResponse)
230
+ ## Hydration
231
+
232
+ Hydration is a mechanism for transferring data obtained during Server-Side Rendering (SSR) to the client side. This avoids re-executing the same network requests immediately after the page loads in the browser, which significantly speeds up rendering and reduces server load.
233
+
234
+ ### How it works
235
+
236
+ 1. **Server-side (SSR):**
237
+ - All executed requests (usually `GET` methods with `global: true`) are automatically saved in the hydration list.
238
+ - After the page is formed, you need to call `api.getHydrationScript()` and insert the resulting string into the HTML template (usually at the end of the `<body>` tag).
239
+
240
+ 2. **Client-side (Browser):**
241
+ - When an `ApiInstance` is created, it automatically looks for the hydration script on the page.
242
+ - Found data is loaded into the system and substituted for the first call of similar requests.
243
+ - Thus, the client code receives data instantly without waiting for a network response.
244
+
245
+ ### Usage Example (SSR)
246
+
247
+ ```javascript
248
+ // On the server
249
+ const api = new ApiInstance();
250
+ await api.get({ path: 'settings' });
251
+
252
+ // In the page template (e.g., at the end of body)
253
+ // The method returns a string: <script id="__ui:api:hydration:id__" type="application/json">[...]</script>
254
+ const hydrationScript = api.getHydrationScript();
255
+ ```
256
+
257
+
258
+ ## Caching
259
+
260
+ The library provides a built-in mechanism for caching responses, allowing you to save request results in memory or in external storage (e.g., `LocalStorage`).
261
+
262
+ ### Key Features
263
+
264
+ - **Time to Live (TTL)** — for each request, you can specify the cache validity time in seconds.
265
+ - **External Storage** — ability to integrate with any asynchronous data storage.
266
+ - **Automatic Cleanup** — old data is removed from memory when limits are exceeded.
267
+
268
+ ### Setting up External Storage
269
+
270
+ By default, the cache works only in RAM and is reset when the page is reloaded. To save data long-term, you need to initialize `ApiCache` with your own listeners (for example, using `LocalStorage` or `IndexedDB`):
271
+
272
+ ```javascript
273
+ import { ApiCache, DataStorage } from '@dxtmisha/functional';
274
+
275
+ // Example of initialization using LocalStorage via DataStorage wrapper
276
+ ApiCache.init(
277
+ async (key) => DataStorage.get(key),
278
+ async (key, value) => {
279
+ DataStorage.set(key, value);
280
+ return true;
281
+ },
282
+ async (key) => {
283
+ DataStorage.remove(key);
284
+ return true;
285
+ }
286
+ );
287
+ ```
288
+
289
+ ### Usage in Requests
290
+
291
+ To enable caching, just pass the time in seconds in the `cache` field of the `ApiFetch` object:
292
+
293
+ ```javascript
294
+ // Cache response for 1 hour (3600 seconds)
295
+ const data = await api.get({
296
+ path: 'catalog/list',
297
+ cache: 3600
298
+ });
299
+ ```
300
+
301
+ If the data is in the cache and its lifetime has not expired, the library will return it instantly without performing a real request to the server.
302
+
303
+ ## Response Emulation
249
304
 
250
305
  The emulator manager `ApiResponse` (accessible via `api.getResponse()`) allows configuring mock responses for specified paths. This is incredibly useful during frontend UI development without a completely ready backend API or for writing test fixtures.
251
306
 
@@ -255,7 +310,7 @@ The `add` method accepts an `ApiResponseItem` object or an array of such objects
255
310
 
256
311
  **Key `ApiResponseItem` fields:**
257
312
  - `path` — String (exact match) or Regular Expression (`RegExp`) to intercept the request URL.
258
- - `method` — HTTP method (`ApiMethodItem.get`, `post`, etc.).
313
+ - `method` — HTTP method (`ApiMethodItem.get`, `post`, `put`, `patch`, etc.).
259
314
  - `request` — (Optional) Request body filter. You can use the special marker `'*any'` to bypass payload validation and capture all requests to this path.
260
315
  - `response` — Static data object _or_ a dynamic factory function `(request) => any` that generates a response based on the incoming request payload.
261
316
  - `disable` — (Optional) Disable this mock (boolean or callback).
@@ -10,11 +10,13 @@ import {Meta} from '@storybook/addon-docs/blocks'
10
10
 
11
11
  ## Ключевые особенности
12
12
 
13
- - **CRUD методы** — удобные алиасы `get`, `post`, `put`, `delete` для работы с HTTP-запросами
13
+ - **CRUD методы** — удобные алиасы `get`, `post`, `put`, `patch`, `delete` для работы с HTTP-запросами
14
14
  - **Глобальная конфигурация** — установка базового URL, заголовков и параметров по умолчанию для всех запросов
15
15
  - **Хуки жизненного цикла** — возможность задать функции, выполняемые до (`setPreparation`) и после (`setEnd`) каждого запроса
16
16
  - **Отслеживание статуса** — доступ к статусу и ошибкам последнего запроса через `ApiStatus`
17
- - **Кэширование и эмуляция** управление мок-ответами и кэшированием через `ApiResponse`
17
+ - **Гидратация** передача данных от сервера к клиенту (SSR) для мгновенной отрисовки
18
+ - **Кэширование** — сохранение ответов во внутреннем или внешнем хранилище через `ApiCache`
19
+ - **Эмуляция ответов** — гибкое управление мок-данными через `ApiResponse`
18
20
  - **Автоматический парсинг** — преобразование тела запроса в JSON/FormData и автоматическое извлечение данных из JSON-ответов
19
21
  - **Геолокация** — автоматическая подстановка `{locale}`, `{country}`, `{language}` в пути запросов
20
22
 
@@ -35,10 +37,13 @@ import {Meta} from '@storybook/addon-docs/blocks'
35
37
  - `preparationClass?: typeof ApiPreparation` — класс для управления хуками жизненного цикла.
36
38
  - `loadingClass?: LoadingInstance` — экземпляр менеджера индикации загрузки (по умолчанию: `Loading.getItem()`).
37
39
  - `errorCenterClass?: ErrorCenterInstance` — экземпляр центра ошибок для вызова событий (по умолчанию: `ErrorCenter.getItem()`).
40
+ - `hydrationClass?: typeof ApiHydration` — класс для управления гидратацией SSR.
38
41
 
39
- ## Методы запросов
42
+ ## Методы
40
43
 
41
- ### `request`
44
+ ### Действие
45
+
46
+ #### `request`
42
47
 
43
48
  Универсальный метод для выполнения сетевого HTTP-запроса. Если передана строка, выполняется простой `GET` запрос по этому адресу.
44
49
  В случае сетевых сбоев (например, 500 статус) метод явно выбрасывает исключение (`throw e`), что позволяет перехватывать ошибки в `try/catch`. Если сервер возвращает JSON объект, к возвращаемым данным автоматически добавляется поле `statusObject` (инстанс статуса запроса).
@@ -48,49 +53,21 @@ import {Meta} from '@storybook/addon-docs/blocks'
48
53
 
49
54
  **Возвращает:** `Promise<ApiData<T>>` — возвращает спарсенные данные ответа сервера (с полями `data`, `statusObject` и др., если возвращается объект).
50
55
 
51
- ### `get`
52
-
53
- Отправляет запрос методом `GET`.
54
-
55
- **Параметры:**
56
- - `request: ApiFetch` — конфигурационный объект запроса (содержащий `path`, `request` и т.д.).
57
-
58
- **Возвращает:** `Promise<T>`
59
-
60
- ### `post`
56
+ ### Сокращенные методы
61
57
 
62
- Отправляет запрос методом `POST`. Идеально для создания/сохранения сущностей.
58
+ - `get(request: ApiFetch): Promise<T>` — Отправляет запрос методом `GET`.
59
+ - `post(request: ApiFetch): Promise<T>` — Отправляет запрос методом `POST`. Идеально для создания/сохранения сущностей.
60
+ - `put(request: ApiFetch): Promise<T>` — Отправляет запрос методом `PUT`. Применяется для обновления данных.
61
+ - `patch(request: ApiFetch): Promise<T>` — Отправляет запрос методом `PATCH`. Используется для частичного обновления данных ресурса.
62
+ - `delete(request: ApiFetch): Promise<T>` — Отправляет запрос методом `DELETE`. Применяется для удаления данных из системы.
63
63
 
64
- **Параметры:**
65
- - `request: ApiFetch` — конфигурационный объект запроса (содержащий `path`, `request` и т.д.).
66
-
67
- **Возвращает:** `Promise<T>`
68
-
69
- ### `put`
70
-
71
- Отправляет запрос методом `PUT`. Применяется для обновления данных.
72
-
73
- **Параметры:**
74
- - `request: ApiFetch` — конфигурационный объект запроса (содержащий `path`, `request` и т.д.).
75
-
76
- **Возвращает:** `Promise<T>`
77
-
78
- ### `delete`
79
-
80
- Отправляет запрос методом `DELETE`. Применяется для удаления данных из системы.
81
-
82
- **Параметры:**
83
- - `request: ApiFetch` — конфигурационный объект запроса (содержащий `path`, `request` и т.д.).
84
-
85
- **Возвращает:** `Promise<T>`
86
-
87
- ## Методы получения инстансов
64
+ ### Проверка
88
65
 
89
66
  - `isLocalhost(): boolean` — Возвращает `true`, если код запущен на локальном сервере.
90
67
  - `getStatus(): ApiStatus` — Возвращает менеджер `ApiStatus` для работы со статусом последнего запроса.
91
68
  - `getResponse(): ApiResponse` — Возвращает менеджер эмуляции `ApiResponse`.
92
69
 
93
- ## Конфигурация
70
+ ### Конфигурация
94
71
 
95
72
  Методы для настройки API (поддерживают чейнинг вызовов, возвращают объект `ApiInstance`):
96
73
  - `setHeaders(headers: Record<string, string>): this` — Устанавливает глобальные заголовки по умолчанию.
@@ -98,22 +75,26 @@ import {Meta} from '@storybook/addon-docs/blocks'
98
75
  - `setUrl(url: string): this` — Изменяет базовый URL путь для API скриптов.
99
76
  - `setPreparation(callback: (apiFetch: ApiFetch) => Promise<void>): this` — Устанавливает хук, выполняемый перед каждым сетевым запросом.
100
77
  - `setEnd(callback: (query: Response, apiFetch: ApiFetch) => Promise<ApiPreparationEnd>): this` — Устанавливает хук, выполняемый после получения ответа.
78
+ - `setOrigin(origin: string): this` — Устанавливает источник (протокол и домен) для формирования базового URL.
101
79
 
102
- ## Формирование запроса
80
+ ### Вспомогательные
103
81
 
104
- - `getUrl(path: string, api?: boolean): string` — Формирует полный адрес к скрипту запроса с подстановкой гео-меток.
82
+ - `getUrl(path: string, api?: boolean): string` — Формирует полный адрес к скрипту запроса с подстановкой плейсхолдеров `{locale}`, `{country}`, `{language}`.
83
+ - `getOrigin(): string` — Возвращает базовый URL источника, объединенный с путем API.
105
84
  - `getBody(request?: ApiFetch['request'], method?: string): string | FormData | undefined` — Формирует данные для тела запроса.
106
85
  - `getBodyForGet(request: ApiFetch['request'], path?: string, method?: string): string` — Формирует строку query-параметров для GET-запроса.
86
+ - `getHydration(): ApiHydration` — Возвращает менеджер гидратации.
87
+ - `getHydrationScript(): string` — Возвращает строковое представление данных гидратации для клиента.
107
88
 
108
89
  ## Объект ApiFetch
109
90
 
110
- `ApiFetch` — главный конфигурационный объект, передаваемый в методы `request`, `get`, `post`, `put`, `delete`. Все поля опциональны:
91
+ `ApiFetch` — главный конфигурационный объект, передаваемый в методы `request`, `get`, `post`, `put`, `patch`, `delete`. Все поля опциональны:
111
92
 
112
93
  - `path?: string` — путь к endpoint-скрипту относительно базового URL (например: `'users/list'`).
113
94
  - `pathFull?: string` — полный URL запроса. Если указан, игнорирует `api` и `path`.
114
95
  - `api?: boolean` — добавлять ли базовый URL перед `path`. По умолчанию: `true`.
115
- - `method?: ApiMethod` — HTTP-метод (`'GET'`, `'POST'`, `'PUT'`, `'DELETE'`). По умолчанию: `'GET'`.
116
- - `request?: FormData | Record<string, any> | string` — тело запроса (для POST/PUT) или query-параметры (для GET). Передается как JSON или `FormData`.
96
+ - `method?: ApiMethod` — HTTP-метод (`'GET'`, `'POST'`, `'PUT'`, `'PATCH'`, `'DELETE'`). По умолчанию: `'GET'`.
97
+ - `request?: FormData | Record<string, any> | string` — тело запроса (для POST/PUT/PATCH) или query-параметры (for GET). Передается как JSON или `FormData`.
117
98
  - `headers?: Record<string, string> | null` — дополнительные заголовки запроса. `null` — отключить все заголовки.
118
99
  - `type?: string` — значение `Content-Type`. По умолчанию: `'application/json;charset=UTF-8'`.
119
100
  - `auth?: boolean` — добавить заголовки аутентификации.
@@ -125,10 +106,11 @@ import {Meta} from '@storybook/addon-docs/blocks'
125
106
  - `globalEnd?: boolean` — запускать ли глобальный хук `setEnd` после ответа. По умолчанию: `true`.
126
107
  - `queryReturn?: (query: Response) => Promise<any>` — обработчик ответа вместо стандартного чтения JSON.
127
108
  - `init?: RequestInit` — дополнительные опции для нативного `fetch()` (CORS, режим кеша и др.).
128
- - `timeout?: number` — таймаут запроса в миллисекундах. По умолчанию: `16000`мс.
129
- - `controller?: AbortController` — контроллер для отмены запроса.
109
+ - `timeout?: number` — таймаут запроса в миллисекундах. По умолчанию: `16000`мс (используется только если не передан `controller`).
110
+ - `controller?: AbortController` — контроллер для отмены запроса. Если передан, таймаут игнорируется.
130
111
  - `retry?: number` — количество повторов при сбое.
131
- - `retryDelay?: number` — базовая задержка между повторами в миллисекундах. По умолчанию: `64`мс.
112
+ - `retryDelay?: number` — базовая задержка между повторами в миллисекундах. По умолчанию: `64`мс. Используется алгоритм с джиттером для предотвращения лавинообразных запросов.
113
+ - `endResetLimit?: number` — лимит рекурсивных повторов через `setEnd` с `reset: true`. По умолчанию: `8`.
132
114
 
133
115
  ## Структура данных ответа
134
116
 
@@ -187,7 +169,7 @@ controller.abort()
187
169
  Метод `setPreparation` устанавливает callback-функцию, которая вызывается непосредственно перед отправкой запроса на сервер (до выполнения нативного `fetch`).
188
170
 
189
171
  **Особенности работы:**
190
- - **Очередность исполнения**: Если одновременно запускается несколько запросов, класс гарантирует, что хук подготовки будет выполнен **последовательно**. Все последующие запросы будут ждать завершения текущего хука в режиме ожидания (с интервалом опроса 160мс). Это предотвращает конфликты, например, при одновременном обновлении токена несколькими запросами.
172
+ - **Очередность исполнения**: Если одновременно запускается несколько запросов, класс гарантирует, что хук подготовки будет выполнен **последовательно**. Все последующие запросы будут ждать завершения текущего хука в режиме ожидания (с интервалом опроса 16мс). Это предотвращает конфликты, например, при одновременном обновлении токена несколькими запросами.
191
173
  - **Параметры**: Получает объект `apiFetch`, содержащий все текущие настройки запроса. Вы можете изменять этот объект (например, добавляя заголовки или модифицируя тело запроса).
192
174
  - **Возвращает**: `Promise<void>`.
193
175
 
@@ -215,7 +197,7 @@ api.setPreparation(async (apiFetch) => {
215
197
  - `apiFetch: ApiFetch` — объект параметров, с которыми был выполнен запрос.
216
198
 
217
199
  **Возвращает:** `Promise<ApiPreparationEnd>`. Объект результата может содержать следующие поля:
218
- - `reset?: boolean` — если установлено в `true`, библиотека прервет текущую цепочку и **выполнит запрос заново** (рекурсивно) через рандомизированную задержку (см. `retryDelay`). Весь процесс подготовки и выполнения будет запущен повторно. Используется для автоматической обработки обновленных прав доступа.
200
+ - `reset?: boolean` — если установлено в `true`, библиотека прервет текущую цепочку и **выполнит запрос заново** (рекурсивно) через рандомизированную задержку (см. `retryDelay`). Весь процесс подготовки и выполнения будет запущен повторно. Используется для автоматической обработки обновленных прав доступа. Лимит таких повторов ограничен параметром `endResetLimit` (по умолчанию 8).
219
201
  - `data?: any` — позволяет переопределить данные, которые вернет метод API. Если это поле указано, стандартный механизм чтения ответа (JSON/текст) будет проигнорирован.
220
202
 
221
203
  ```javascript
@@ -245,7 +227,80 @@ api.setEnd(async (response, apiFetch) => {
245
227
  - `globalPreparation: false` — пропустить выполнение хука `setPreparation`.
246
228
  - `globalEnd: false` — пропустить выполнение хука `setEnd`.
247
229
 
248
- ## Эмуляция ответов (ApiResponse)
230
+ ## Гидратация
231
+
232
+ Гидратация — это механизм передачи данных, полученных в ходе серверного рендеринга (SSR), на сторону клиента. Это позволяет избежать повторного выполнения тех же самых сетевых запросов сразу после загрузки страницы в браузере, что значительно ускоряет отрисовку и снижает нагрузку на сервер.
233
+
234
+ ### Как это работает
235
+
236
+ 1. **На стороне сервера (SSR):**
237
+ - Все выполненные запросы (обычно метода `GET` с параметром `global: true`) автоматически сохраняются в списке гидратации.
238
+ - После завершения формирования страницы необходимо вызвать метод `api.getHydrationScript()` и вставить полученную строку в HTML-шаблон (обычно в конец тега `<body>`).
239
+
240
+ 2. **На стороне клиента (Браузер):**
241
+ - При создании экземпляра `ApiInstance` он автоматически ищет на странице скрипт с данными гидратации.
242
+ - Найденные данные загружаются в систему и подставляются вместо первого вызова аналогичных запросов.
243
+ - Таким образом, клиентский код получает данные мгновенно, не дожидаясь ответа от сети.
244
+
245
+ ### Пример использования (SSR)
246
+
247
+ ```javascript
248
+ // На сервере
249
+ const api = new ApiInstance();
250
+ await api.get({ path: 'settings' });
251
+
252
+ // В шаблоне страницы (например, в конце body)
253
+ // Метод вернет строку: <script id="__ui:api:hydration:id__" type="application/json">[...]</script>
254
+ const hydrationScript = api.getHydrationScript();
255
+ ```
256
+
257
+
258
+ ## Кэширование
259
+
260
+ Библиотека предоставляет встроенный механизм кэширования ответов, который позволяет сохранять результаты запросов в памяти или во внешнем хранилище (например, `LocalStorage`).
261
+
262
+ ### Основные возможности
263
+
264
+ - **Время жизни (TTL)** — для каждого запроса можно указать время актуальности кэша в секундах.
265
+ - **Внешние хранилища** — возможность интеграции с любым асинхронным хранилищем данных.
266
+ - **Автоматическая очистка** — старые данные удаляются из памяти при превышении лимитов.
267
+
268
+ ### Настройка внешнего хранилища
269
+
270
+ По умолчанию кэш работает только в оперативной памяти и сбрасывается при перезагрузке страницы. Чтобы сохранять данные надолго, необходимо инициализировать `ApiCache` своими слушателями (например, используя `LocalStorage` или `IndexedDB`):
271
+
272
+ ```javascript
273
+ import { ApiCache, DataStorage } from '@dxtmisha/functional';
274
+
275
+ // Пример инициализации с использованием LocalStorage через обертку DataStorage
276
+ ApiCache.init(
277
+ async (key) => DataStorage.get(key),
278
+ async (key, value) => {
279
+ DataStorage.set(key, value);
280
+ return true;
281
+ },
282
+ async (key) => {
283
+ DataStorage.remove(key);
284
+ return true;
285
+ }
286
+ );
287
+ ```
288
+
289
+ ### Использование в запросах
290
+
291
+ Для включения кэширования достаточно передать время в секундах в поле `cache` объекта `ApiFetch`:
292
+
293
+ ```javascript
294
+ // Кэшировать ответ на 1 час (3600 секунд)
295
+ const data = await api.get({
296
+ path: 'catalog/list',
297
+ cache: 3600
298
+ });
299
+ ```
300
+
301
+ Если данные есть в кэше и их время жизни не истекло, библиотека вернет их мгновенно, не выполняя реальный запрос к серверу.
302
+
303
+ ## Эмуляция ответов
249
304
 
250
305
  Менеджер эмуляции `ApiResponse` (доступен через `api.getResponse()`) позволяет настраивать мок-ответы для определенных путей — это невероятно полезно при разработке UI без готового Backend API или для написания тестов.
251
306
 
@@ -255,7 +310,7 @@ api.setEnd(async (response, apiFetch) => {
255
310
 
256
311
  **Важные поля `ApiResponseItem`:**
257
312
  - `path` — Строка (точное совпадение) или Регулярное выражение (`RegExp`) для перехвата пути.
258
- - `method` — HTTP метод (`ApiMethodItem.get`, `post` и т.д.).
313
+ - `method` — HTTP метод (`ApiMethodItem.get`, `post`, `put`, `patch` и т.д.).
259
314
  - `request` — (Опционально) Фильтр по телу запроса. Можно использовать специальный маркер `'*any'`, чтобы перехватывать любые данные.
260
315
  - `response` — Статический объект с данными ответа _или_ функция `(request) => any`, генерирующая ответ динамически на основе параметров запроса.
261
316
  - `disable` — (Опционально) Отключить этот мок (boolean или callback).