@dxtmisha/wiki 0.39.6 → 0.39.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (194) hide show
  1. package/dist/defineProperty-Bjg6wMoX.js +39 -0
  2. package/dist/library.d.ts +0 -1
  3. package/dist/library.js +25 -25
  4. package/dist/media.js +12 -0
  5. package/dist/storybook.js +26929 -11
  6. package/package.json +1 -1
  7. package/src/library.ts +0 -1
  8. package/src/media/functional/functional-basic/api/api.en.mdx +45 -0
  9. package/src/media/functional/functional-basic/api/api.ru.mdx +45 -0
  10. package/src/media/functional/functional-basic/api/api.vi.mdx +45 -0
  11. package/src/media/functional/functional-basic/classes/Api/Api.en.mdx +54 -54
  12. package/src/media/functional/functional-basic/classes/Api/Api.ru.mdx +54 -54
  13. package/src/media/functional/functional-basic/classes/Api/Api.vi.mdx +54 -54
  14. package/src/media/functional/functional-basic/classes/ApiCache/ApiCache.en.mdx +111 -0
  15. package/src/media/functional/functional-basic/classes/ApiCache/ApiCache.ru.mdx +111 -0
  16. package/src/media/functional/functional-basic/classes/ApiCache/ApiCache.vi.mdx +111 -0
  17. package/src/media/functional/functional-basic/classes/ApiDataReturn/ApiDataReturn.en.mdx +32 -0
  18. package/src/media/functional/functional-basic/classes/ApiDataReturn/ApiDataReturn.ru.mdx +32 -0
  19. package/src/media/functional/functional-basic/classes/ApiDataReturn/ApiDataReturn.vi.mdx +32 -0
  20. package/src/media/functional/functional-basic/classes/ApiDefault/ApiDefault.en.mdx +24 -28
  21. package/src/media/functional/functional-basic/classes/ApiDefault/ApiDefault.ru.mdx +24 -28
  22. package/src/media/functional/functional-basic/classes/ApiDefault/ApiDefault.vi.mdx +24 -28
  23. package/src/media/functional/functional-basic/classes/ApiHeaders/ApiHeaders.en.mdx +28 -14
  24. package/src/media/functional/functional-basic/classes/ApiHeaders/ApiHeaders.ru.mdx +33 -19
  25. package/src/media/functional/functional-basic/classes/ApiHeaders/ApiHeaders.vi.mdx +33 -19
  26. package/src/media/functional/functional-basic/classes/ApiHydration/ApiHydration.en.mdx +56 -0
  27. package/src/media/functional/functional-basic/classes/ApiHydration/ApiHydration.ru.mdx +56 -0
  28. package/src/media/functional/functional-basic/classes/ApiHydration/ApiHydration.vi.mdx +55 -0
  29. package/src/media/functional/functional-basic/classes/ApiInstance/ApiInstance.en.mdx +101 -49
  30. package/src/media/functional/functional-basic/classes/ApiInstance/ApiInstance.ru.mdx +101 -49
  31. package/src/media/functional/functional-basic/classes/ApiInstance/ApiInstance.vi.mdx +98 -47
  32. package/src/media/functional/functional-basic/classes/ApiPreparation/ApiPreparation.en.mdx +44 -26
  33. package/src/media/functional/functional-basic/classes/ApiPreparation/ApiPreparation.ru.mdx +45 -27
  34. package/src/media/functional/functional-basic/classes/ApiPreparation/ApiPreparation.vi.mdx +44 -26
  35. package/src/media/functional/functional-basic/classes/ApiResponse/ApiResponse.en.mdx +50 -21
  36. package/src/media/functional/functional-basic/classes/ApiResponse/ApiResponse.ru.mdx +54 -25
  37. package/src/media/functional/functional-basic/classes/ApiResponse/ApiResponse.vi.mdx +55 -26
  38. package/src/media/functional/functional-basic/classes/ApiStatus/ApiStatus.en.mdx +29 -32
  39. package/src/media/functional/functional-basic/classes/ApiStatus/ApiStatus.ru.mdx +33 -36
  40. package/src/media/functional/functional-basic/classes/ApiStatus/ApiStatus.vi.mdx +33 -36
  41. package/src/media/functional/functional-basic/classes/BroadcastMessage/BroadcastMessage.en.mdx +34 -53
  42. package/src/media/functional/functional-basic/classes/BroadcastMessage/BroadcastMessage.ru.mdx +33 -52
  43. package/src/media/functional/functional-basic/classes/BroadcastMessage/BroadcastMessage.vi.mdx +39 -58
  44. package/src/media/functional/functional-basic/classes/Cache/Cache.en.mdx +7 -4
  45. package/src/media/functional/functional-basic/classes/Cache/Cache.ru.mdx +7 -4
  46. package/src/media/functional/functional-basic/classes/Cache/Cache.vi.mdx +28 -25
  47. package/src/media/functional/functional-basic/classes/CacheItem/CacheItem.en.mdx +45 -53
  48. package/src/media/functional/functional-basic/classes/CacheItem/CacheItem.ru.mdx +46 -54
  49. package/src/media/functional/functional-basic/classes/CacheItem/CacheItem.vi.mdx +47 -55
  50. package/src/media/functional/functional-basic/classes/CacheStatic/CacheStatic.en.mdx +13 -1
  51. package/src/media/functional/functional-basic/classes/CacheStatic/CacheStatic.ru.mdx +13 -1
  52. package/src/media/functional/functional-basic/classes/CacheStatic/CacheStatic.vi.mdx +13 -0
  53. package/src/media/functional/functional-basic/classes/Cookie/Cookie.en.mdx +88 -44
  54. package/src/media/functional/functional-basic/classes/Cookie/Cookie.ru.mdx +88 -44
  55. package/src/media/functional/functional-basic/classes/Cookie/Cookie.vi.mdx +85 -41
  56. package/src/media/functional/functional-basic/classes/CookieBlock/CookieBlock.en.mdx +43 -22
  57. package/src/media/functional/functional-basic/classes/CookieBlock/CookieBlock.ru.mdx +46 -25
  58. package/src/media/functional/functional-basic/classes/CookieBlock/CookieBlock.vi.mdx +43 -22
  59. package/src/media/functional/functional-basic/classes/CookieBlockInstance/CookieBlockInstance.en.mdx +84 -0
  60. package/src/media/functional/functional-basic/classes/CookieBlockInstance/CookieBlockInstance.ru.mdx +84 -0
  61. package/src/media/functional/functional-basic/classes/CookieBlockInstance/CookieBlockInstance.vi.mdx +100 -0
  62. package/src/media/functional/functional-basic/classes/CookieStorage/CookieStorage.en.mdx +153 -0
  63. package/src/media/functional/functional-basic/classes/CookieStorage/CookieStorage.ru.mdx +153 -0
  64. package/src/media/functional/functional-basic/classes/CookieStorage/CookieStorage.vi.mdx +153 -0
  65. package/src/media/functional/functional-basic/classes/DataStorage/DataStorage.en.mdx +32 -25
  66. package/src/media/functional/functional-basic/classes/DataStorage/DataStorage.ru.mdx +32 -25
  67. package/src/media/functional/functional-basic/classes/DataStorage/DataStorage.vi.mdx +32 -27
  68. package/src/media/functional/functional-basic/classes/Datetime/Datetime.en.mdx +36 -4
  69. package/src/media/functional/functional-basic/classes/Datetime/Datetime.ru.mdx +36 -4
  70. package/src/media/functional/functional-basic/classes/Datetime/Datetime.vi.mdx +36 -4
  71. package/src/media/functional/functional-basic/classes/ErrorCenter/ErrorCenter.en.mdx +101 -70
  72. package/src/media/functional/functional-basic/classes/ErrorCenter/ErrorCenter.ru.mdx +100 -69
  73. package/src/media/functional/functional-basic/classes/ErrorCenter/ErrorCenter.vi.mdx +101 -70
  74. package/src/media/functional/functional-basic/classes/ErrorCenterHandler/ErrorCenterHandler.en.mdx +46 -42
  75. package/src/media/functional/functional-basic/classes/ErrorCenterHandler/ErrorCenterHandler.ru.mdx +46 -42
  76. package/src/media/functional/functional-basic/classes/ErrorCenterHandler/ErrorCenterHandler.vi.mdx +46 -42
  77. package/src/media/functional/functional-basic/classes/ErrorCenterInstance/ErrorCenterInstance.en.mdx +44 -96
  78. package/src/media/functional/functional-basic/classes/ErrorCenterInstance/ErrorCenterInstance.ru.mdx +44 -96
  79. package/src/media/functional/functional-basic/classes/ErrorCenterInstance/ErrorCenterInstance.vi.mdx +44 -96
  80. package/src/media/functional/functional-basic/classes/EventItem/EventItem.en.mdx +49 -28
  81. package/src/media/functional/functional-basic/classes/EventItem/EventItem.ru.mdx +21 -0
  82. package/src/media/functional/functional-basic/classes/EventItem/EventItem.vi.mdx +63 -42
  83. package/src/media/functional/functional-basic/classes/Formatters/Formatters.en.mdx +97 -109
  84. package/src/media/functional/functional-basic/classes/Formatters/Formatters.ru.mdx +86 -98
  85. package/src/media/functional/functional-basic/classes/Formatters/Formatters.vi.mdx +99 -111
  86. package/src/media/functional/functional-basic/classes/Geo/Geo.en.mdx +3 -3
  87. package/src/media/functional/functional-basic/classes/Geo/Geo.ru.mdx +5 -5
  88. package/src/media/functional/functional-basic/classes/Geo/Geo.vi.mdx +5 -5
  89. package/src/media/functional/functional-basic/classes/GeoFlag/GeoFlag.en.mdx +83 -40
  90. package/src/media/functional/functional-basic/classes/GeoFlag/GeoFlag.ru.mdx +83 -40
  91. package/src/media/functional/functional-basic/classes/GeoFlag/GeoFlag.vi.mdx +87 -44
  92. package/src/media/functional/functional-basic/classes/GeoInstance/GeoInstance.en.mdx +81 -0
  93. package/src/media/functional/functional-basic/classes/GeoInstance/GeoInstance.ru.mdx +81 -0
  94. package/src/media/functional/functional-basic/classes/GeoInstance/GeoInstance.vi.mdx +81 -0
  95. package/src/media/functional/functional-basic/classes/GeoPhone/GeoPhone.en.mdx +56 -105
  96. package/src/media/functional/functional-basic/classes/GeoPhone/GeoPhone.ru.mdx +53 -102
  97. package/src/media/functional/functional-basic/classes/GeoPhone/GeoPhone.vi.mdx +55 -105
  98. package/src/media/functional/functional-basic/classes/Hash/Hash.en.mdx +18 -7
  99. package/src/media/functional/functional-basic/classes/Hash/Hash.ru.mdx +18 -7
  100. package/src/media/functional/functional-basic/classes/Hash/Hash.vi.mdx +18 -7
  101. package/src/media/functional/functional-basic/classes/HashInstance/HashInstance.en.mdx +54 -0
  102. package/src/media/functional/functional-basic/classes/HashInstance/HashInstance.ru.mdx +54 -0
  103. package/src/media/functional/functional-basic/classes/HashInstance/HashInstance.vi.mdx +54 -0
  104. package/src/media/functional/functional-basic/classes/MetaStatic/MetaStatic.en.mdx +78 -0
  105. package/src/media/functional/functional-basic/classes/MetaStatic/MetaStatic.ru.mdx +78 -0
  106. package/src/media/functional/functional-basic/classes/MetaStatic/MetaStatic.vi.mdx +78 -0
  107. package/src/media/functional/functional-basic/classes/ResumableTimer/ResumableTimer.en.mdx +50 -0
  108. package/src/media/functional/functional-basic/classes/ResumableTimer/ResumableTimer.ru.mdx +50 -0
  109. package/src/media/functional/functional-basic/classes/ResumableTimer/ResumableTimer.vi.mdx +50 -0
  110. package/src/media/functional/functional-basic/classes/ServerStorage/ServerStorage.en.mdx +131 -0
  111. package/src/media/functional/functional-basic/classes/ServerStorage/ServerStorage.ru.mdx +131 -0
  112. package/src/media/functional/functional-basic/classes/ServerStorage/ServerStorage.vi.mdx +131 -0
  113. package/src/media/functional/functional-basic/classes/StorageCallback/StorageCallback.en.mdx +97 -0
  114. package/src/media/functional/functional-basic/classes/StorageCallback/StorageCallback.ru.mdx +97 -0
  115. package/src/media/functional/functional-basic/classes/StorageCallback/StorageCallback.vi.mdx +97 -0
  116. package/src/media/functional/functional-basic/functions/addTagHighlightMatch/addTagHighlightMatch.en.mdx +13 -5
  117. package/src/media/functional/functional-basic/functions/addTagHighlightMatch/addTagHighlightMatch.ru.mdx +13 -5
  118. package/src/media/functional/functional-basic/functions/addTagHighlightMatch/addTagHighlightMatch.vi.mdx +13 -5
  119. package/src/media/functional/functional-basic/functions/anyToString/anyToString.en.mdx +37 -19
  120. package/src/media/functional/functional-basic/functions/anyToString/anyToString.ru.mdx +37 -19
  121. package/src/media/functional/functional-basic/functions/anyToString/anyToString.vi.mdx +35 -17
  122. package/src/media/functional/functional-basic/functions/applyTemplate/applyTemplate.en.mdx +31 -19
  123. package/src/media/functional/functional-basic/functions/applyTemplate/applyTemplate.ru.mdx +31 -19
  124. package/src/media/functional/functional-basic/functions/applyTemplate/applyTemplate.vi.mdx +32 -20
  125. package/src/media/functional/functional-basic/functions/blobToBase64/blobToBase64.en.mdx +29 -15
  126. package/src/media/functional/functional-basic/functions/blobToBase64/blobToBase64.ru.mdx +28 -14
  127. package/src/media/functional/functional-basic/functions/blobToBase64/blobToBase64.vi.mdx +28 -14
  128. package/src/media/functional/functional-basic/functions/capitalize/capitalize.en.mdx +7 -3
  129. package/src/media/functional/functional-basic/functions/capitalize/capitalize.ru.mdx +7 -3
  130. package/src/media/functional/functional-basic/functions/capitalize/capitalize.vi.mdx +7 -3
  131. package/src/media/functional/functional-basic/functions/copyObject/copyObject.en.mdx +17 -13
  132. package/src/media/functional/functional-basic/functions/copyObject/copyObject.ru.mdx +17 -13
  133. package/src/media/functional/functional-basic/functions/copyObject/copyObject.vi.mdx +17 -13
  134. package/src/media/functional/functional-basic/functions/createElement/createElement.en.mdx +2 -0
  135. package/src/media/functional/functional-basic/functions/createElement/createElement.ru.mdx +2 -0
  136. package/src/media/functional/functional-basic/functions/createElement/createElement.vi.mdx +2 -0
  137. package/src/media/functional/functional-basic/functions/encodeAttribute/encodeAttribute.en.mdx +1 -3
  138. package/src/media/functional/functional-basic/functions/encodeAttribute/encodeAttribute.ru.mdx +1 -3
  139. package/src/media/functional/functional-basic/functions/encodeAttribute/encodeAttribute.vi.mdx +1 -3
  140. package/src/media/functional/functional-basic/functions/executeFunction/executeFunction.en.mdx +13 -10
  141. package/src/media/functional/functional-basic/functions/executeFunction/executeFunction.ru.mdx +14 -11
  142. package/src/media/functional/functional-basic/functions/executeFunction/executeFunction.vi.mdx +12 -9
  143. package/src/media/functional/functional-basic/functions/executePromise/executePromise.en.mdx +14 -13
  144. package/src/media/functional/functional-basic/functions/executePromise/executePromise.ru.mdx +15 -14
  145. package/src/media/functional/functional-basic/functions/executePromise/executePromise.vi.mdx +14 -13
  146. package/src/media/functional/functional-basic/functions/forEach/forEach.en.mdx +1 -1
  147. package/src/media/functional/functional-basic/functions/forEach/forEach.ru.mdx +1 -1
  148. package/src/media/functional/functional-basic/functions/forEach/forEach.vi.mdx +1 -1
  149. package/src/media/functional/functional-basic/functions/frame/frame.en.mdx +7 -4
  150. package/src/media/functional/functional-basic/functions/frame/frame.ru.mdx +6 -3
  151. package/src/media/functional/functional-basic/functions/frame/frame.vi.mdx +7 -4
  152. package/src/media/functional/functional-basic/functions/getArrayHighlightMatch/getArrayHighlightMatch.en.mdx +34 -0
  153. package/src/media/functional/functional-basic/functions/getArrayHighlightMatch/getArrayHighlightMatch.ru.mdx +34 -0
  154. package/src/media/functional/functional-basic/functions/getArrayHighlightMatch/getArrayHighlightMatch.vi.mdx +35 -0
  155. package/src/media/functional/functional-basic/functions/getCurrentDate/getCurrentDate.en.mdx +2 -0
  156. package/src/media/functional/functional-basic/functions/getCurrentDate/getCurrentDate.ru.mdx +2 -0
  157. package/src/media/functional/functional-basic/functions/getCurrentDate/getCurrentDate.vi.mdx +2 -0
  158. package/src/media/functional/functional-basic/functions/getCurrentTime/getCurrentTime.en.mdx +21 -0
  159. package/src/media/functional/functional-basic/functions/getCurrentTime/getCurrentTime.ru.mdx +21 -0
  160. package/src/media/functional/functional-basic/functions/getCurrentTime/getCurrentTime.vi.mdx +21 -0
  161. package/src/media/functional/functional-basic/functions/getElementId/getElementId.en.mdx +17 -3
  162. package/src/media/functional/functional-basic/functions/getElementId/getElementId.ru.mdx +17 -3
  163. package/src/media/functional/functional-basic/functions/getElementId/getElementId.vi.mdx +18 -4
  164. package/src/media/functional/functional-basic/functions/getElementSafeScript/getElementSafeScript.en.mdx +31 -0
  165. package/src/media/functional/functional-basic/functions/getElementSafeScript/getElementSafeScript.ru.mdx +31 -0
  166. package/src/media/functional/functional-basic/functions/getElementSafeScript/getElementSafeScript.vi.mdx +31 -0
  167. package/src/media/functional/functional-basic/functions/getOnlyText/getOnlyText.en.mdx +25 -0
  168. package/src/media/functional/functional-basic/functions/getOnlyText/getOnlyText.ru.mdx +25 -0
  169. package/src/media/functional/functional-basic/functions/getOnlyText/getOnlyText.vi.mdx +25 -0
  170. package/src/media/functional/functional-basic/functions/getSearchExp/getSearchExp.en.mdx +11 -4
  171. package/src/media/functional/functional-basic/functions/getSearchExp/getSearchExp.ru.mdx +14 -7
  172. package/src/media/functional/functional-basic/functions/getSearchExp/getSearchExp.vi.mdx +13 -6
  173. package/src/media/functional/functional-basic/functions/getSeparatingSearchExp/getSeparatingSearchExp.en.mdx +3 -2
  174. package/src/media/functional/functional-basic/functions/getSeparatingSearchExp/getSeparatingSearchExp.ru.mdx +3 -2
  175. package/src/media/functional/functional-basic/functions/getSeparatingSearchExp/getSeparatingSearchExp.vi.mdx +3 -2
  176. package/src/media/functional/functional-basic/functions/toNumber/toNumber.en.mdx +25 -9
  177. package/src/media/functional/functional-basic/functions/toNumber/toNumber.ru.mdx +25 -9
  178. package/src/media/functional/functional-basic/functions/toNumber/toNumber.vi.mdx +25 -9
  179. package/src/media/functional/functional-basic/functions/toString/toString.en.mdx +28 -0
  180. package/src/media/functional/functional-basic/functions/toString/toString.ru.mdx +28 -0
  181. package/src/media/functional/functional-basic/functions/toString/toString.vi.mdx +28 -0
  182. package/src/media/functional/ui/about/about.en.mdx +45 -0
  183. package/src/media/functional/ui/about/about.ru.mdx +45 -0
  184. package/src/media/functional/ui/about/about.vi.mdx +45 -0
  185. package/src/media/functional/ui/component/component.en.mdx +104 -0
  186. package/src/media/functional/ui/component/component.ru.mdx +106 -0
  187. package/src/media/functional/ui/component/component.vi.mdx +104 -0
  188. package/src/media/functional/ui/setup/setup.en.mdx +72 -0
  189. package/src/media/functional/ui/setup/setup.ru.mdx +72 -0
  190. package/src/media/functional/ui/setup/setup.vi.mdx +72 -0
  191. package/src/media/functional/ui/wiki-data.en.mdx +114 -0
  192. package/src/media/functional/ui/wiki-data.ru.mdx +114 -0
  193. package/src/media/functional/ui/wiki-data.vi.mdx +114 -0
  194. package/dist/WikiStorybookDescriptions-IKMchHA-.js +0 -26959
@@ -0,0 +1,111 @@
1
+ import {Meta} from '@storybook/addon-docs/blocks'
2
+
3
+ <Meta title='@dxtmisha/en/functional-basic/Classes/ApiCache - API Response Caching'/>
4
+
5
+ # ApiCache Class
6
+
7
+ A class for caching API responses. It allows storing query results in memory or an external storage, preventing redundant network calls within a specified period. In the current implementation, caching is active by default only on the server side (SSR) to speed up rendering and reduce API load during concurrent requests.
8
+
9
+ > `ApiCache` is an **auxiliary class**, designed for low-level cache management. In most cases, it is recommended to interact with caching through the `cache` parameter in `ApiInstance` or the global `Api` object.
10
+
11
+ ## Key Features
12
+
13
+ - **Automated Key Management** — generates unique cache keys based on request parameters (path, method, body, etc.).
14
+ - **Flexible TTL (Time To Live)** — allows setting the storage duration for each request individually or using a default (24 hours).
15
+ - **SSR Optimization** — prevents unnecessary API calls in the Node.js environment. Disabled by default in the browser (only works if explicitly enabled through configuration parameters).
16
+ - **Listener Support** — ability to connect external storage (e.g., Redis, Nitro Storage) via callback functions.
17
+ - **Background Cleanup** — automatically removes expired entries when accessing the cache.
18
+
19
+ ## Methods
20
+
21
+ ### Action
22
+
23
+ Methods for managing cache entries.
24
+
25
+ - `get<T>(key: string): Promise<T | undefined>` — Retrieves a value from the cache.
26
+ - `getByFetch<T>(fetch: ApiFetch): Promise<T | undefined>` — Retrieves a value using request options as the key source.
27
+ - `set<T>(key: string, value: T, age?: number): Promise<void>` — Stores a value in the cache.
28
+ - `setByFetch<T>(fetch: ApiFetch, value: T): Promise<void>` — Stores a value using request options.
29
+ - `remove(key: string): Promise<void>` — Manually removes an entry.
30
+
31
+ ### Configuration
32
+
33
+ - `init(getListener, setListener, removeListener, cacheStepAgeClearOld?): void` — Configures the cache with storage listeners.
34
+ - `reset(): void` — Clears in-memory items and detaches listeners.
35
+
36
+ ## Types
37
+
38
+ #### `ApiCacheItem<T>`
39
+ The structure of a cached record.
40
+ - `value: T` — The cached data.
41
+ - `age: number` — TTL in seconds.
42
+ - `cacheAge: number` — Creation timestamp (ms).
43
+
44
+ #### `ApiCacheList`
45
+ An internal dictionary for in-memory storage fallback.
46
+ - `[key: string]: ApiCacheItem` — Key-value pairs of cached items.
47
+
48
+ ## Initialization and External Storage
49
+
50
+ By default, `ApiCache` stores records in the process RAM and works only on the server side. While this is fast, it has limitations in production environments:
51
+ 1. **Cluster Synchronization**: In a multi-instance setup, caches are not shared between processes.
52
+ 2. **Process Restarts**: Memory is cleared whenever the server restarts or a serverless function "cold starts".
53
+ 3. **Memory Limits**: Storing large amounts of data in RAM can lead to increased memory consumption.
54
+
55
+ To solve these issues, you must initialize `ApiCache` with the `init` method, providing listeners that bridge it to an external storage mechanism.
56
+
57
+ > Important: You must call `ApiCache.init()` during your application's bootstrap phase (before the first API request) to ensure the cache is correctly configured.
58
+
59
+ ### Node.js (Custom Storage)
60
+
61
+ In a standard Node.js environment, you can use listeners to interact with a centralized database or a persistent cache like Redis.
62
+
63
+ ```typescript
64
+ import { ApiCache } from '@dxtmisha/functional-basic'
65
+
66
+ // Configuration with storage listeners
67
+ ApiCache.init(
68
+ // 1. Get data from external storage
69
+ async (key) => await myExternalStorage.get(key),
70
+
71
+ // 2. Save data to external storage
72
+ async (key, value) => {
73
+ await myExternalStorage.put(key, value)
74
+ return true // Return true to indicate successful external storage
75
+ },
76
+
77
+ // 3. Remove data from external storage
78
+ async (key) => {
79
+ await myExternalStorage.delete(key)
80
+ return true
81
+ },
82
+
83
+ // 4. Optional: threshold for background cleanup trigger
84
+ 16384
85
+ )
86
+ ```
87
+
88
+ ### Nuxt / Nitro
89
+
90
+ In Nuxt/Nitro, the recommended approach is to use the built-in `useStorage` helper within a server plugin. This allows you to leverage Redis, FS, or other Nitro-supported storage drivers.
91
+
92
+ ```typescript
93
+ // server/plugins/api-cache.ts
94
+ import { ApiCache } from '@dxtmisha/functional-basic'
95
+
96
+ export default defineNitroPlugin(() => {
97
+ const storage = useStorage('cache') // Nitro Cache region
98
+
99
+ ApiCache.init(
100
+ async (key) => await storage.getItem(key),
101
+ async (key, value) => {
102
+ await storage.setItem(key, value)
103
+ return true
104
+ },
105
+ async (key) => {
106
+ await storage.removeItem(key)
107
+ return true
108
+ }
109
+ )
110
+ })
111
+ ```
@@ -0,0 +1,111 @@
1
+ import {Meta} from '@storybook/addon-docs/blocks'
2
+
3
+ <Meta title='@dxtmisha/ru/functional-basic/Classes/ApiCache - Кэширование ответов API'/>
4
+
5
+ # Класс ApiCache
6
+
7
+ Класс для кэширования ответов API. Он позволяет сохранять результаты запросов в памяти или во внешнем хранилище, предотвращая избыточные сетевые вызовы в течение заданного периода. В текущей реализации кэширование по умолчанию активно только на стороне сервера (SSR) для ускорения рендеринга и снижения нагрузки на API при одновременных запросах.
8
+
9
+ > `ApiCache` является **вспомогательным классом**, предназначенным для низкоуровневого управления кэшем. В большинстве случаев рекомендуется взаимодействовать с кэшированием через параметр `cache` в `ApiInstance` или глобальный объект `Api`.
10
+
11
+ ## Основные возможности
12
+
13
+ - **Автоматическое управление ключами** — генерирует уникальные ключи кэша на основе параметров запроса (путь, метод, тело запроса и т.д.).
14
+ - **Гибкий TTL (Time To Live)** — позволяет устанавливать время хранения для каждого запроса индивидуально или использовать значение по умолчанию (24 часа).
15
+ - **Оптимизация SSR** — предотвращает ненужные вызовы API в среде Node.js. По умолчанию отключено в браузере (работает только если явно включено через параметры конфигурации).
16
+ - **Поддержка слушателей** — возможность подключения внешнего хранилища (например, Redis, Nitro Storage) через функции обратного вызова.
17
+ - **Фоновая очистка** — автоматически удаляет устаревшие записи при обращении к кэшу.
18
+
19
+ ## Методы
20
+
21
+ ### Действие
22
+
23
+ Методы для управления записями кэша.
24
+
25
+ - `get<T>(key: string): Promise<T | undefined>` — Извлекает значение из кэша.
26
+ - `getByFetch<T>(fetch: ApiFetch): Promise<T | undefined>` — Извлекает значение, используя опции запроса как источник ключа.
27
+ - `set<T>(key: string, value: T, age?: number): Promise<void>` — Сохраняет значение в кэше.
28
+ - `setByFetch<T>(fetch: ApiFetch, value: T): Promise<void>` — Сохраняет значение на основе опций запроса.
29
+ - `remove(key: string): Promise<void>` — Удаляет запись вручную.
30
+
31
+ ### Конфигурация
32
+
33
+ - `init(getListener, setListener, removeListener, cacheStepAgeClearOld?): void` — Настраивает кэш слушателями хранилища.
34
+ - `reset(): void` — Очищает элементы в памяти и отключает слушателей.
35
+
36
+ ## Типы данных
37
+
38
+ #### `ApiCacheItem<T>`
39
+ Структура кэшированной записи.
40
+ - `value: T` — Значение данных.
41
+ - `age: number` — TTL в секундах.
42
+ - `cacheAge: number` — Метка времени создания (мс).
43
+
44
+ #### `ApiCacheList`
45
+ Внутренний словарь для резервного хранения в оперативной памяти.
46
+ - `[key: string]: ApiCacheItem` — Пары ключ-значение кэшированных элементов.
47
+
48
+ ## Инициализация и внешнее хранилище
49
+
50
+ По умолчанию `ApiCache` сохраняет записи в оперативной памяти (RAM) процесса и работает только на стороне сервера. Хотя это очень быстро, в продуктовой среде такой подход имеет ограничения:
51
+ 1. **Синхронизация в кластере**: В многоэкземплярной конфигурации кэши не разделяются между процессами.
52
+ 2. **Перезагрузка процесса**: Память очищается при каждом перезапуск сервера или «холодном старте» серверных функций.
53
+ 3. **Лимиты памяти**: Хранение больших объемов данных в RAM может привести к чрезмерному потреблению ресурсов.
54
+
55
+ Для решения этих задач необходимо инициализировать `ApiCache` с помощью метода `init`, предоставив слушателей (listeners) для связи с внешним механизмом хранения.
56
+
57
+ > Важно: Метод `ApiCache.init()` должен быть вызван на этапе запуска приложения (до первого API-запроса), чтобы гарантировать правильную конфигурацию кэша.
58
+
59
+ ### Node.js (Произвольное хранилище)
60
+
61
+ В стандартной среде Node.js вы можете использовать слушателей для взаимодействия с централизованной базой данных или персистентным кэшем, таким как Redis.
62
+
63
+ ```typescript
64
+ import { ApiCache } from '@dxtmisha/functional-basic'
65
+
66
+ // Конфигурация со слушателями хранилища
67
+ ApiCache.init(
68
+ // 1. Получение данных из внешнего хранилища
69
+ async (key) => await myExternalStorage.get(key),
70
+
71
+ // 2. Сохранение данных во внешнее хранилище
72
+ async (key, value) => {
73
+ await myExternalStorage.put(key, value)
74
+ return true // Возвращаем true для подтверждения внешнего сохранения
75
+ },
76
+
77
+ // 3. Удаление данных из внешнего хранилища
78
+ async (key) => {
79
+ await myExternalStorage.delete(key)
80
+ return true
81
+ },
82
+
83
+ // 4. Опционально: порог срабатывания фоновой очистки
84
+ 16384
85
+ )
86
+ ```
87
+
88
+ ### Nuxt / Nitro
89
+
90
+ В Nuxt/Nitro рекомендуемый подход — использование встроенного хелпера `useStorage` внутри серверного плагина. Это позволяет задействовать Redis, файловую систему или любой другой драйвер, поддерживаемый Nitro.
91
+
92
+ ```typescript
93
+ // server/plugins/api-cache.ts
94
+ import { ApiCache } from '@dxtmisha/functional-basic'
95
+
96
+ export default defineNitroPlugin(() => {
97
+ const storage = useStorage('cache') // Регион кэша Nitro
98
+
99
+ ApiCache.init(
100
+ async (key) => await storage.getItem(key),
101
+ async (key, value) => {
102
+ await storage.setItem(key, value)
103
+ return true
104
+ },
105
+ async (key) => {
106
+ await storage.removeItem(key)
107
+ return true
108
+ }
109
+ )
110
+ })
111
+ ```
@@ -0,0 +1,111 @@
1
+ import {Meta} from '@storybook/addon-docs/blocks'
2
+
3
+ <Meta title='@dxtmisha/vi/functional-basic/Classes/ApiCache - Bộ nhớ đệm phản hồi API'/>
4
+
5
+ # Lớp ApiCache
6
+
7
+ Một lớp để lưu bộ nhớ đệm (caching) cho các phản hồi API. Nó cho phép lưu trữ kết quả truy vấn trong bộ nhớ hoặc kho lưu trữ bên ngoài, ngăn chặn các cuộc gọi mạng dư thừa trong một khoảng thời gian cụ thể. Trong phiên bản hiện tại, việc lưu bộ nhớ đệm chỉ hoạt động ở phía máy chủ (SSR) để tăng tốc độ hiển thị và giảm tải API trong quá trình xử lý nhiều yêu cầu đồng thời.
8
+
9
+ > `ApiCache` là một **lớp bổ trợ**, được thiết kế để quản lý bộ nhớ đệm ở cấp độ thấp. Trong hầu hết các trường hợp, bạn nên tương tác với việc lưu bộ nhớ đệm thông qua tham số `cache` trong `ApiInstance` hoặc đối tượng `Api` toàn cục.
10
+
11
+ ## Các tính năng chính
12
+
13
+ - **Quản lý khóa tự động** — tạo các khóa cache duy nhất dựa trên các tham số yêu cầu (đường dẫn, phương thức, thân yêu cầu, v.v.).
14
+ - **TTL linh hoạt (Time To Live)** — cho phép thiết lập thời gian lưu trữ cho từng yêu cầu riêng lẻ hoặc sử dụng mặc định (24 giờ).
15
+ - **Tối ưu hóa SSR** — ngăn chặn các cuộc gọi API không cần thiết trong môi trường Node.js. Chế độ này mặc định bị tắt trong trình duyệt.
16
+ - **Hỗ trợ Bộ lắng nghe (Listener)** — khả năng kết nối kho lưu trữ bên ngoài (ví dụ: Redis, Nitro Storage) thông qua các hàm callback.
17
+ - **Dọn dẹp chạy ngầm** — tự động xóa các mục đã hết hạn khi truy cập bộ nhớ đệm.
18
+
19
+ ## Các phương thức
20
+
21
+ ### Hành động
22
+
23
+ Các phương thức để quản lý các mục lưu trữ trong cache.
24
+
25
+ - `get<T>(key: string): Promise<T | undefined>` — Lấy một giá trị từ cache.
26
+ - `getByFetch<T>(fetch: ApiFetch): Promise<T | undefined>` — Lấy một giá trị sử dụng các tùy chọn yêu cầu làm nguồn tạo khóa.
27
+ - `set<T>(key: string, value: T, age?: number): Promise<void>` — Lưu một giá trị vào cache.
28
+ - `setByFetch<T>(fetch: ApiFetch, value: T): Promise<void>` — Lưu một giá trị dựa trên các tùy chọn yêu cầu.
29
+ - `remove(key: string): Promise<void>` — Xóa một mục cache thủ công.
30
+
31
+ ### Cấu hình
32
+
33
+ - `init(getListener, setListener, removeListener, cacheStepAgeClearOld?): void` — Cấu hình cache với các listener của bộ lưu trữ.
34
+ - `reset(): void` — Xóa các mục trong bộ nhớ RAM và ngắt kết nối các listener.
35
+
36
+ ## Các kiểu dữ liệu
37
+
38
+ #### `ApiCacheItem<T>`
39
+ Cấu trúc của một bản ghi trong bộ nhớ đệm.
40
+ - `value: T` — Dữ liệu được lưu.
41
+ - `age: number` — TTL tính bằng giây.
42
+ - `cacheAge: number` — Dấu thời gian (ms) khi bản ghi được tạo.
43
+
44
+ #### `ApiCacheList`
45
+ Từ điển nội bộ dành cho việc lưu trữ dự phòng trong bộ nhớ RAM.
46
+ - `[key: string]: ApiCacheItem` — Các cặp khóa-giá trị của các mục được lưu vào bộ nhớ đệm.
47
+
48
+ ## Khởi tạo và Kho lưu trữ bên ngoài
49
+
50
+ Theo mặc định, `ApiCache` lưu trữ các bản ghi trong RAM của tiến trình. Mặc dù cách này rất nhanh, nhưng nó có những hạn chế khi triển khai thực tế:
51
+ 1. **Đồng bộ hóa trong cụм (Cluster)**: Trong thiết lập đa thực thể, bộ nhớ đệm không được chia sẻ giữa các tiến trình.
52
+ 2. **Khởi động lại tiến trình**: Bộ nhớ sẽ bị xóa bất khi nào máy chủ khởi động lại hoặc có một "cold start" của các hàm serverless.
53
+ 3. **Giới hạn bộ nhớ**: Lưu trữ lượng lớn dữ liệu trong RAM có thể dẫnถึง việc tiêu thụ bộ nhớ quá mức.
54
+
55
+ Để giải quyết những vấn đề này, bạn phải khởi tạo `ApiCache` bằng phương thức `init`, cung cấp các bộ lắng nghe (listeners) đóng vai trò cầu nối với cơ chế lưu trữ bên ngoài.
56
+
57
+ > Quan trọng: Bạn phải gọi `ApiCache.init()` trong giai đoạn khởi tạo ứng dụng (trước yêu cầu API đầu tiên) để đảm bảo bộ nhớ đệm được cấu hình chính xác.
58
+
59
+ ### Node.js (Kho lưu trữ tùy chỉnh)
60
+
61
+ Trong môi trường Node.js tiêu chuẩn, bạn có thể sử dụng các bộ lắng nghe để tương tác với một cơ sở dữ liệu tập trung hoặc một bộ nhớ đệm bền vững như Redis.
62
+
63
+ ```typescript
64
+ import { ApiCache } from '@dxtmisha/functional-basic'
65
+
66
+ // Cấu hình với các bộ lắng nghe lưu trữ
67
+ ApiCache.init(
68
+ // 1. Lấy dữ liệu từ kho lưu trữ bên ngoài
69
+ async (key) => await myExternalStorage.get(key),
70
+
71
+ // 2. Lưu dữ liệu vào kho lưu trữ bên ngoài
72
+ async (key, value) => {
73
+ await myExternalStorage.put(key, value)
74
+ return true // Trả về true để xác nhận đã lưu trữ bên ngoài thành công
75
+ },
76
+
77
+ // 3. Xóa dữ liệu khỏi kho lưu trữ bên ngoài
78
+ async (key) => {
79
+ await myExternalStorage.delete(key)
80
+ return true
81
+ },
82
+
83
+ // 4. Tùy chọn: ngưỡng kích hoạt dọn dẹp chạy ngầm
84
+ 16384
85
+ )
86
+ ```
87
+
88
+ ### Nuxt / Nitro
89
+
90
+ Trong Nuxt/Nitro, cách tiếp cận được khuyến nghị là sử dụng helper `useStorage` tích hợp sẵn bên trong một plugin máy chủ. Điều này cho phép bạn tận dụng Redis, FS, hoặc bất kỳ trình điều khiển lưu trữ nào khác được Nitro hỗ trợ.
91
+
92
+ ```typescript
93
+ // server/plugins/api-cache.ts
94
+ import { ApiCache } from '@dxtmisha/functional-basic'
95
+
96
+ export default defineNitroPlugin(() => {
97
+ const storage = useStorage('cache') // Nitro Cache region
98
+
99
+ ApiCache.init(
100
+ async (key) => await storage.getItem(key),
101
+ async (key, value) => {
102
+ await storage.setItem(key, value)
103
+ return true
104
+ },
105
+ async (key) => {
106
+ await storage.removeItem(key)
107
+ return true
108
+ }
109
+ )
110
+ })
111
+ ```
@@ -0,0 +1,32 @@
1
+ import {Meta} from '@storybook/addon-docs/blocks'
2
+
3
+ <Meta title='@dxtmisha/en/functional-basic/Classes/ApiDataReturn - API Response Data Processing'/>
4
+
5
+ # ApiDataReturn Class
6
+
7
+ A class for handling and processing data received from an API request. It transforms raw response data into a structured format, extracts metadata, and maps content according to the requested configuration.
8
+
9
+ > `ApiDataReturn` is an **auxiliary class**, designed for handling and formatting API response data. In most cases, it is recommended to interact with results through the response returned by `ApiInstance` methods or the global `Api` object.
10
+
11
+ ## Key Features
12
+
13
+ - **Automated Parsing** — intelligently parses JSON responses or returns raw text based on Content-Type headers.
14
+ - **Data Normalization** — ensures that the returned object follows a consistent structure, even if the server response varies.
15
+ - **Metadata Extraction** — automatically extracts common fields like `success`, `status`, `code`, and `message` from the root of the response and merges them into the data object.
16
+ - **Flexible Configuration** — supports custom processing logic via `queryReturn` and controls whether to unwrap the `data` field using `toData`.
17
+
18
+ ## Methods
19
+
20
+ ### Action
21
+
22
+ - `async init(): Promise<this>` — Initializes the class by reading and parsing data from the response object.
23
+ - `get(): ApiData<T>` — Returns the processed and formatted data.
24
+ - `getAndStatus(status: ApiStatus): ApiData<T>` — Returns the processed data injected with a `statusObject` from the provided status instance.
25
+ - `getData(): ApiData<T> | undefined` — Returns the raw, unformatted data as initially read from the response.
26
+
27
+ ## Internal Logic (Protected)
28
+
29
+ - `readData<T>(): Promise<ApiData<T>>` — Low-level method that reads the response body and parses it as JSON or text.
30
+ - `initData(): ApiData<T>` — Formats the raw data according to configuration, handling property unwrapping.
31
+ - `initItem(data: Record<string, any>): ApiData<T>` — Merges metadata fields from the response root into the main data object.
32
+
@@ -0,0 +1,32 @@
1
+ import {Meta} from '@storybook/addon-docs/blocks'
2
+
3
+ <Meta title='@dxtmisha/ru/functional-basic/Classes/ApiDataReturn - Обработка данных ответа API'/>
4
+
5
+ # Класс ApiDataReturn
6
+
7
+ Класс для обработки и подготовки данных, полученных в результате запроса к API. Он преобразует необработанные данные ответа в структурированный формат, извлекает метаданные и сопоставляет содержимое в соответствии с запрошенной конфигурацией.
8
+
9
+ > `ApiDataReturn` является **вспомогательным классом**, предназначенным для обработки и форматирования данных ответа API. В большинстве случаев рекомендуется взаимодействовать с результатами через ответ, возвращаемый методами `ApiInstance` или глобальным объектом `Api`.
10
+
11
+ ## Ключевые особенности
12
+
13
+ - **Автоматический парсинг** — интеллектуально анализирует JSON-ответы или возвращает необработанный текст на основе заголовков Content-Type.
14
+ - **Нормализация данных** — гарантирует, что возвращаемый объект соответствует согласованной структуре, даже если ответ сервера различается.
15
+ - **Извлечение метаданных** — автоматически извлекает общие поля, такие как `success`, `status`, `code` и `message`, из корня ответа и объединяет их с объектом данных.
16
+ - **Гибкая конфигурация** — поддерживает пользовательскую логику обработки через `queryReturn` и управляет развертыванием поля `data` с помощью `toData`.
17
+
18
+ ## Методы
19
+
20
+ ### Действие
21
+
22
+ - `async init(): Promise<this>` — Инициализирует класс, считывая и анализируя данные из объекта ответа.
23
+ - `get(): ApiData<T>` — Возвращает обработанные и отформатированные данные.
24
+ - `getAndStatus(status: ApiStatus): ApiData<T>` — Возвращает обработанные данные с внедренным объектом `statusObject` из предоставленного экземпляра статуса.
25
+ - `getData(): ApiData<T> | undefined` — Возвращает исходные, неотформатированные данные, как они были изначально считаны из ответа.
26
+
27
+ ## Внутренняя логика (Protected)
28
+
29
+ - `readData<T>(): Promise<ApiData<T>>` — Низкоуровневый метод, который считывает тело ответа и парсит его как JSON или текст.
30
+ - `initData(): ApiData<T>` — Форматирует необработанные данные в соответствии с конфигурацией, обрабатывая развертывание свойств.
31
+ - `initItem(data: Record<string, any>): ApiData<T>` — Переносит поля метаданных из корня ответа в основной объект данных.
32
+
@@ -0,0 +1,32 @@
1
+ import {Meta} from '@storybook/addon-docs/blocks'
2
+
3
+ <Meta title='@dxtmisha/vi/functional-basic/Classes/ApiDataReturn - Xử lý dữ liệu phản hồi API'/>
4
+
5
+ # Lớp ApiDataReturn
6
+
7
+ Lớp dùng để xử lý và chuẩn bị dữ liệu nhận được từ yêu cầu API. Nó chuyển đổi dữ liệu phản hồi thô thành định dạng có cấu trúc, trích xuất metadata và ánh xạ nội dung theo cấu hình đã yêu cầu.
8
+
9
+ > `ApiDataReturn` là một **lớp phụ trợ**, được thiết kế để xử lý và định dạng dữ liệu phản hồi API. Trong hầu hết các trường hợp, khuyến khích tương tác với kết quả thông qua phản hồi được trả về bởi các phương thức của `ApiInstance` hoặc đối tượng `Api` toàn cục.
10
+
11
+ ## Các tính năng chính
12
+
13
+ - **Phân tích tự động** — phân tích thông minh các phản hồi JSON hoặc trả về văn bản thô dựa trên tiêu đề Content-Type.
14
+ - **Chuẩn hóa dữ liệu** — đảm bảo rằng đối tượng trả về tuân theo một cấu trúc nhất quán, ngay cả khi phản hồi của máy chủ thay đổi.
15
+ - **Trích xuất Metadata** — tự động trích xuất các trường chung như `success`, `status`, `code` và `message` từ gốc của phản hồi và hợp nhất chúng vào đối tượng dữ liệu.
16
+ - **Cấu hình linh hoạt** — hỗ trợ logic xử lý tùy chỉnh thông qua `queryReturn` và kiểm soát việc giải nén trường `data` bằng `toData`.
17
+
18
+ ## Các phương thức
19
+
20
+ ### Hành động
21
+
22
+ - `async init(): Promise<this>` — Khởi tạo lớp bằng cách đọc và phân tích dữ liệu từ đối tượng phản hồi.
23
+ - `get(): ApiData<T>` — Trả về dữ liệu đã được xử lý và định dạng.
24
+ - `getAndStatus(status: ApiStatus): ApiData<T>` — Trả về dữ liệu đã xử lý được chèn thêm `statusObject` từ đối tượng status được cung cấp.
25
+ - `getData(): ApiData<T> | undefined` — Trả về dữ liệu thô, chưa định dạng như lúc ban đầu được đọc từ phản hồi.
26
+
27
+ ## Logic nội bộ (Protected)
28
+
29
+ - `readData<T>(): Promise<ApiData<T>>` — Phương thức cấp thấp đọc thân phản hồi và phân tích nó dưới dạng JSON hoặc văn bản.
30
+ - `initData(): ApiData<T>` — Định dạng dữ liệu thô theo cấu hình, xử lý việc giải nén các thuộc tính.
31
+ - `initItem(data: Record<string, any>): ApiData<T>` — Hợp nhất các trường metadata từ gốc phản hồi vào đối tượng dữ liệu chính.
32
+
@@ -4,45 +4,41 @@ import {Meta} from '@storybook/addon-docs/blocks'
4
4
 
5
5
  # ApiDefault Class
6
6
 
7
- A class for managing default data for API requests. It allows setting base parameters that should be included in every request, supporting both standard objects and `FormData`.
7
+ A class for managing default data for API requests. It allows setting base parameters that should be included in every request, supporting both standard objects and `FormData`. This is useful for centrally defining common fields such as tokens, application IDs, or localization settings.
8
8
 
9
- ## Key Features
9
+ > `ApiDefault` is an **auxiliary class**, designed for managing request defaults. In most cases, it is recommended to define these through the `requestDefault` parameter in the global `Api` configuration.
10
10
 
11
- - **Centralized Defaults** — define common parameters (like tokens or locale) once for all API calls.
12
- - **Support for Multiple Formats** — works seamlessly with both plain JavaScript objects and `FormData`.
13
- - **Intelligent Merging** — merges defaults with request-specific data, prioritizing the actual request data if keys overlap.
14
- - **Easy Checks** — simple methods to check if any default data is currently set.
11
+ ## Key Features
15
12
 
16
- ## Initialization
13
+ - **Centralized Defaults** — Define common parameters once for all API calls.
14
+ - **Support for Multiple Formats** — Works seamlessly with both plain JavaScript objects and `FormData`.
15
+ - **Intelligent Merging** — Merges defaults with request-specific data, prioritizing the actual request data if keys overlap.
16
+ - **Chainable API** — Supports a fluent interface for setting parameters.
17
17
 
18
- To initialize the object, call the `ApiDefault()` constructor.
18
+ ## Methods
19
19
 
20
- ```typescript
21
- import { ApiDefault } from '@dxtmisha/functional'
20
+ ### Action
22
21
 
23
- // 1. Simple initialization
24
- const apiDefault = new ApiDefault()
22
+ #### `request`
25
23
 
26
- // 2. Setting default data
27
- apiDefault.set({ lang: 'en', version: 'v1' })
24
+ Merges the stored default data into a provided request object or `FormData` instance. If the input is a plain object, it returns a new merged object. If the input is `FormData`, it adds missing keys directly to the instance.
28
25
 
29
- // 3. Example usage with a request object
30
- const requestData = { user_id: 5 }
31
- const mergedRequest = apiDefault.request(requestData)
32
- // Result: { lang: 'en', version: 'v1', user_id: 5 }
26
+ **Parameters:**
27
+ - `request: ApiFetch['request']` The original request data (Object, FormData, or String).
33
28
 
34
- // 4. Example usage with FormData
35
- const fd = new FormData()
36
- fd.append('photo', fileBlob)
37
- apiDefault.request(fd)
38
- // Result: fd now contains 'lang' and 'version' if they were missing
39
- ```
29
+ **Returns:** `ApiFetch['request']` The transformed request data.
40
30
 
41
- ## Methods
31
+ ### Check
42
32
 
43
33
  - `is(): boolean` — Checks if any default data has been set.
44
- - `get(): ApiDefaultValue` — Returns the current default data.
45
- - `request(request: ApiFetch['request']): ApiFetch['request']` — Merges the stored default data into a provided request object or `FormData` instance.
46
- - `set(request: ApiDefaultValue)` — Sets the default data object for requests.
34
+ - `get(): ApiDefaultValue | undefined` — Returns the current default data object.
35
+
36
+ ### Configuration
37
+
38
+ - `set(request: ApiDefaultValue): this` — Sets the default data for all future requests.
47
39
 
40
+ ## Types
48
41
 
42
+ #### `ApiDefaultValue`
43
+ A plain object representing default parameters.
44
+ - `[key: string]: any` — Key-value pairs to be used as defaults.
@@ -4,45 +4,41 @@ import {Meta} from '@storybook/addon-docs/blocks'
4
4
 
5
5
  # Класс ApiDefault
6
6
 
7
- Класс для управления данными по умолчанию для API-запросов. Он позволяет устанавливать базовые параметры, которые должны быть включены в каждый запрос, поддерживая как стандартные объекты, так и `FormData`.
7
+ Класс для управления данными по умолчанию для API-запросов. Он позволяет устанавливать базовые параметры, которые должны быть включены в каждый запрос, поддерживая как стандартные объекты, так и `FormData`. Это полезно для централизованного определения общих полей, таких как токены, ID приложения или настройки локализации.
8
8
 
9
- ## Ключевые особенности
9
+ > `ApiDefault` является **вспомогательным классом**, предназначенным для управления значениями по умолчанию в запросах. В большинстве случаев рекомендуется определять их через параметр `requestDefault` в глобальной конфигурации `Api`.
10
10
 
11
- - **Централизованные значения** — определите общие параметры (например, токены или локаль) один раз для всех вызовов API.
12
- - **Поддержка различных форматов** — бесшовно работает как с обычными объектами JavaScript, так и с `FormData`.
13
- - **Интеллектуальное слияние** — объединяет значения по умолчанию с данными конкретного запроса, отдавая приоритет данным запроса при совпадении ключей.
14
- - **Простые проверки** — удобные методы для проверки наличия установленных данных по умолчанию.
11
+ ## Ключевые особенности
15
12
 
16
- ## Инициализация
13
+ - **Централизованные значения** — Определите общие параметры один раз для всех вызовов API.
14
+ - **Поддержка различных форматов** — Бесшовно работает как с обычными объектами JavaScript, так и с `FormData`.
15
+ - **Интеллектуальное слияние** — Объединяет значения по умолчанию с данными конкретного запроса, отдавая приоритет данным запроса при совпадении ключей.
16
+ - **Chainable API** — Поддерживает цепочку вызовов при установке параметров.
17
17
 
18
- Для инициализации объекта вызовите конструктор `ApiDefault()`.
18
+ ## Методы
19
19
 
20
- ```typescript
21
- import { ApiDefault } from '@dxtmisha/functional'
20
+ ### Действие
22
21
 
23
- // 1. Простая инициализация
24
- const apiDefault = new ApiDefault()
22
+ #### `request`
25
23
 
26
- // 2. Установка данных по умолчанию
27
- apiDefault.set({ lang: 'ru', version: 'v1' })
24
+ Объединяет сохраненные данные по умолчанию с предоставленным объектом запроса или экземпляром `FormData`. Если входные данные являются объектом, метод возвращает новый объединенный объект. Если входные данные — `FormData`, недостающие ключи добавляются напрямую в экземпляр.
28
25
 
29
- // 3. Пример использования с объектом запроса
30
- const requestData = { user_id: 5 }
31
- const mergedRequest = apiDefault.request(requestData)
32
- // Результат: { lang: 'ru', version: 'v1', user_id: 5 }
26
+ **Параметры:**
27
+ - `request: ApiFetch['request']` Исходные данные запроса (Object, FormData или String).
33
28
 
34
- // 4. Пример использования с FormData
35
- const fd = new FormData()
36
- fd.append('photo', fileBlob)
37
- apiDefault.request(fd)
38
- // Результат: fd теперь содержит 'lang' и 'version', если они отсутствовали
39
- ```
29
+ **Возвращает:** `ApiFetch['request']` Трансформированные данные запроса.
40
30
 
41
- ## Методы
31
+ ### Проверка
42
32
 
43
33
  - `is(): boolean` — Проверяет, были ли установлены какие-либо данные по умолчанию.
44
- - `get(): ApiDefaultValue` — Возвращает текущие данные по умолчанию.
45
- - `request(request: ApiFetch['request']): ApiFetch['request']` — Объединяет сохраненные данные по умолчанию с предоставленным объектом запроса или экземпляром `FormData`.
46
- - `set(request: ApiDefaultValue)` — Устанавливает объект данных по умолчанию для всех запросов.
34
+ - `get(): ApiDefaultValue | undefined` — Возвращает текущий объект данных по умолчанию.
35
+
36
+ ### Конфигурация
37
+
38
+ - `set(request: ApiDefaultValue): this` — Устанавливает данные по умолчанию для всех будущих запросов.
47
39
 
40
+ ## Типы
48
41
 
42
+ #### `ApiDefaultValue`
43
+ Обычный объект, представляющий параметры по умолчанию.
44
+ - `[key: string]: any` — Пары ключе-значение, используемые по умолчанию.