synapse-storage 3.0.19 → 4.0.1

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 (351) hide show
  1. package/README.md +28 -168
  2. package/dist/_utils/chunk.util.d.ts +8 -0
  3. package/dist/_utils/chunk.util.d.ts.map +1 -0
  4. package/dist/_utils/chunk.util.js +21 -0
  5. package/dist/_utils/chunk.util.js.map +1 -0
  6. package/dist/_utils/deepMerge.util.d.ts +2 -0
  7. package/dist/_utils/deepMerge.util.d.ts.map +1 -0
  8. package/dist/_utils/deepMerge.util.js +19 -0
  9. package/dist/_utils/deepMerge.util.js.map +1 -0
  10. package/dist/_utils/error-handling.util.d.ts +50 -0
  11. package/dist/_utils/error-handling.util.d.ts.map +1 -0
  12. package/dist/_utils/error-handling.util.js +67 -0
  13. package/dist/_utils/error-handling.util.js.map +1 -0
  14. package/dist/_utils/flatMap.util.d.ts +10 -0
  15. package/dist/_utils/flatMap.util.d.ts.map +1 -0
  16. package/dist/_utils/flatMap.util.js +23 -0
  17. package/dist/_utils/flatMap.util.js.map +1 -0
  18. package/dist/_utils/index.d.ts +6 -0
  19. package/dist/_utils/index.d.ts.map +1 -0
  20. package/dist/_utils/index.js +13 -0
  21. package/dist/_utils/index.js.map +1 -0
  22. package/dist/_utils/logger-console.util.d.ts +9 -0
  23. package/dist/_utils/logger-console.util.d.ts.map +1 -0
  24. package/dist/_utils/logger-console.util.js +14 -0
  25. package/dist/_utils/logger-console.util.js.map +1 -0
  26. package/dist/api/api.module.d.ts +46 -0
  27. package/dist/api/api.module.d.ts.map +1 -0
  28. package/dist/api/api.module.js +121 -0
  29. package/dist/api/api.module.js.map +1 -0
  30. package/dist/api/components/endpoint.d.ts +57 -0
  31. package/dist/api/components/endpoint.d.ts.map +1 -0
  32. package/dist/api/components/endpoint.js +385 -0
  33. package/dist/api/components/endpoint.js.map +1 -0
  34. package/dist/api/components/query-storage.d.ts +100 -0
  35. package/dist/api/components/query-storage.d.ts.map +1 -0
  36. package/dist/api/components/query-storage.js +293 -0
  37. package/dist/api/components/query-storage.js.map +1 -0
  38. package/dist/api/example.d.ts +83 -0
  39. package/dist/api/example.d.ts.map +1 -0
  40. package/dist/api/example.js +90 -0
  41. package/dist/api/example.js.map +1 -0
  42. package/dist/api/index.d.ts +4 -0
  43. package/dist/api/index.d.ts.map +1 -0
  44. package/dist/api/index.js +11 -0
  45. package/dist/api/index.js.map +1 -0
  46. package/dist/api/types/api.interface.d.ts +126 -0
  47. package/dist/api/types/api.interface.d.ts.map +1 -0
  48. package/dist/api/types/api.interface.js +15 -0
  49. package/dist/api/types/api.interface.js.map +1 -0
  50. package/dist/api/types/endpoint.interface.d.ts +118 -0
  51. package/dist/api/types/endpoint.interface.d.ts.map +1 -0
  52. package/dist/api/types/endpoint.interface.js +6 -0
  53. package/dist/api/types/endpoint.interface.js.map +1 -0
  54. package/dist/api/types/query.interface.d.ts +85 -0
  55. package/dist/api/types/query.interface.d.ts.map +1 -0
  56. package/dist/api/types/query.interface.js +6 -0
  57. package/dist/api/types/query.interface.js.map +1 -0
  58. package/dist/api/utils/api-helpers.d.ts +22 -0
  59. package/dist/api/utils/api-helpers.d.ts.map +1 -0
  60. package/dist/api/utils/api-helpers.js +44 -0
  61. package/dist/api/utils/api-helpers.js.map +1 -0
  62. package/dist/api/utils/create-header-context.d.ts +10 -0
  63. package/dist/api/utils/create-header-context.d.ts.map +1 -0
  64. package/dist/api/utils/create-header-context.js +40 -0
  65. package/dist/api/utils/create-header-context.js.map +1 -0
  66. package/dist/api/utils/endpoint-headers.d.ts +23 -0
  67. package/dist/api/utils/endpoint-headers.d.ts.map +1 -0
  68. package/dist/api/utils/endpoint-headers.js +61 -0
  69. package/dist/api/utils/endpoint-headers.js.map +1 -0
  70. package/dist/api/utils/fetch-base-query.d.ts +9 -0
  71. package/dist/api/utils/fetch-base-query.d.ts.map +1 -0
  72. package/dist/api/utils/fetch-base-query.js +242 -0
  73. package/dist/api/utils/fetch-base-query.js.map +1 -0
  74. package/dist/api/utils/file-utils.d.ts +43 -0
  75. package/dist/api/utils/file-utils.d.ts.map +1 -0
  76. package/dist/api/utils/file-utils.js +102 -0
  77. package/dist/api/utils/file-utils.js.map +1 -0
  78. package/dist/api/utils/get-cacheable-headers.d.ts +8 -0
  79. package/dist/api/utils/get-cacheable-headers.d.ts.map +1 -0
  80. package/dist/api/utils/get-cacheable-headers.js +23 -0
  81. package/dist/api/utils/get-cacheable-headers.js.map +1 -0
  82. package/dist/core/index.d.ts +3 -0
  83. package/dist/core/index.d.ts.map +1 -0
  84. package/dist/core/index.js +7 -0
  85. package/dist/core/index.js.map +1 -0
  86. package/dist/core/selector/index.d.ts +3 -0
  87. package/dist/core/selector/index.d.ts.map +1 -0
  88. package/dist/core/selector/index.js +5 -0
  89. package/dist/core/selector/index.js.map +1 -0
  90. package/dist/{selector.interface-CA5y-kD_.d.ts → core/selector/selector.interface.d.ts} +41 -8
  91. package/dist/core/selector/selector.interface.d.ts.map +1 -0
  92. package/dist/core/selector/selector.interface.js +7 -0
  93. package/dist/core/selector/selector.interface.js.map +1 -0
  94. package/dist/core/selector/selector.module.d.ts +36 -0
  95. package/dist/core/selector/selector.module.d.ts.map +1 -0
  96. package/dist/core/selector/selector.module.js +412 -0
  97. package/dist/core/selector/selector.module.js.map +1 -0
  98. package/dist/core/storage/adapters/async-base-storage.service.d.ts +49 -0
  99. package/dist/core/storage/adapters/async-base-storage.service.d.ts.map +1 -0
  100. package/dist/core/storage/adapters/async-base-storage.service.js +505 -0
  101. package/dist/core/storage/adapters/async-base-storage.service.js.map +1 -0
  102. package/dist/core/storage/adapters/indexed-DB.service.d.ts +89 -0
  103. package/dist/core/storage/adapters/indexed-DB.service.d.ts.map +1 -0
  104. package/dist/core/storage/adapters/indexed-DB.service.js +596 -0
  105. package/dist/core/storage/adapters/indexed-DB.service.js.map +1 -0
  106. package/dist/core/storage/adapters/local-storage.service.d.ts +23 -0
  107. package/dist/core/storage/adapters/local-storage.service.d.ts.map +1 -0
  108. package/dist/core/storage/adapters/local-storage.service.js +111 -0
  109. package/dist/core/storage/adapters/local-storage.service.js.map +1 -0
  110. package/dist/core/storage/adapters/memory-storage.service.d.ts +24 -0
  111. package/dist/core/storage/adapters/memory-storage.service.d.ts.map +1 -0
  112. package/dist/core/storage/adapters/memory-storage.service.js +110 -0
  113. package/dist/core/storage/adapters/memory-storage.service.js.map +1 -0
  114. package/dist/core/storage/adapters/path.utils.d.ts +5 -0
  115. package/dist/core/storage/adapters/path.utils.d.ts.map +1 -0
  116. package/dist/core/storage/adapters/path.utils.js +42 -0
  117. package/dist/core/storage/adapters/path.utils.js.map +1 -0
  118. package/dist/core/storage/adapters/storage-core.d.ts +61 -0
  119. package/dist/core/storage/adapters/storage-core.d.ts.map +1 -0
  120. package/dist/core/storage/adapters/storage-core.js +221 -0
  121. package/dist/core/storage/adapters/storage-core.js.map +1 -0
  122. package/dist/core/storage/adapters/sync-base-storage.service.d.ts +56 -0
  123. package/dist/core/storage/adapters/sync-base-storage.service.d.ts.map +1 -0
  124. package/dist/core/storage/adapters/sync-base-storage.service.js +481 -0
  125. package/dist/core/storage/adapters/sync-base-storage.service.js.map +1 -0
  126. package/dist/core/storage/index.d.ts +16 -0
  127. package/dist/core/storage/index.d.ts.map +1 -0
  128. package/dist/core/storage/index.js +38 -0
  129. package/dist/core/storage/index.js.map +1 -0
  130. package/dist/core/storage/middlewares/broadcast.middleware.d.ts +9 -0
  131. package/dist/core/storage/middlewares/broadcast.middleware.d.ts.map +1 -0
  132. package/dist/core/storage/middlewares/broadcast.middleware.js +197 -0
  133. package/dist/core/storage/middlewares/broadcast.middleware.js.map +1 -0
  134. package/dist/core/storage/middlewares/index.d.ts +9 -0
  135. package/dist/core/storage/middlewares/index.d.ts.map +1 -0
  136. package/dist/core/storage/middlewares/index.js +17 -0
  137. package/dist/core/storage/middlewares/index.js.map +1 -0
  138. package/dist/core/storage/middlewares/storage-batching.middleware.d.ts +7 -0
  139. package/dist/core/storage/middlewares/storage-batching.middleware.d.ts.map +1 -0
  140. package/dist/core/storage/middlewares/storage-batching.middleware.js +108 -0
  141. package/dist/core/storage/middlewares/storage-batching.middleware.js.map +1 -0
  142. package/dist/core/storage/middlewares/storage-shallow-compare.middleware.d.ts +7 -0
  143. package/dist/core/storage/middlewares/storage-shallow-compare.middleware.d.ts.map +1 -0
  144. package/dist/core/storage/middlewares/storage-shallow-compare.middleware.js +43 -0
  145. package/dist/core/storage/middlewares/storage-shallow-compare.middleware.js.map +1 -0
  146. package/dist/core/storage/middlewares/sync-broadcast.middleware.d.ts +9 -0
  147. package/dist/core/storage/middlewares/sync-broadcast.middleware.d.ts.map +1 -0
  148. package/dist/core/storage/middlewares/sync-broadcast.middleware.js +177 -0
  149. package/dist/core/storage/middlewares/sync-broadcast.middleware.js.map +1 -0
  150. package/dist/core/storage/middlewares/sync-storage-batching.middleware.d.ts +6 -0
  151. package/dist/core/storage/middlewares/sync-storage-batching.middleware.d.ts.map +1 -0
  152. package/dist/core/storage/middlewares/sync-storage-batching.middleware.js +56 -0
  153. package/dist/core/storage/middlewares/sync-storage-batching.middleware.js.map +1 -0
  154. package/dist/core/storage/middlewares/sync-storage-shallow-compare.middleware.d.ts +7 -0
  155. package/dist/core/storage/middlewares/sync-storage-shallow-compare.middleware.d.ts.map +1 -0
  156. package/dist/core/storage/middlewares/sync-storage-shallow-compare.middleware.js +39 -0
  157. package/dist/core/storage/middlewares/sync-storage-shallow-compare.middleware.js.map +1 -0
  158. package/dist/core/storage/modules/plugin/plugin.interface.d.ts +101 -0
  159. package/dist/core/storage/modules/plugin/plugin.interface.d.ts.map +1 -0
  160. package/dist/core/storage/modules/plugin/plugin.interface.js +8 -0
  161. package/dist/core/storage/modules/plugin/plugin.interface.js.map +1 -0
  162. package/dist/core/storage/modules/plugin/plugin.service.d.ts +49 -0
  163. package/dist/core/storage/modules/plugin/plugin.service.d.ts.map +1 -0
  164. package/dist/core/storage/modules/plugin/plugin.service.js +406 -0
  165. package/dist/core/storage/modules/plugin/plugin.service.js.map +1 -0
  166. package/dist/core/storage/modules/singleton/mixin.util.d.ts +6 -0
  167. package/dist/core/storage/modules/singleton/mixin.util.d.ts.map +1 -0
  168. package/dist/core/storage/modules/singleton/mixin.util.js +30 -0
  169. package/dist/core/storage/modules/singleton/mixin.util.js.map +1 -0
  170. package/dist/core/storage/modules/singleton/models.d.ts +143 -0
  171. package/dist/core/storage/modules/singleton/models.d.ts.map +1 -0
  172. package/dist/core/storage/modules/singleton/models.js +60 -0
  173. package/dist/core/storage/modules/singleton/models.js.map +1 -0
  174. package/dist/core/storage/modules/singleton/singleton.util.d.ts +36 -0
  175. package/dist/core/storage/modules/singleton/singleton.util.d.ts.map +1 -0
  176. package/dist/core/storage/modules/singleton/singleton.util.js +216 -0
  177. package/dist/core/storage/modules/singleton/singleton.util.js.map +1 -0
  178. package/dist/core/storage/storage.interface.d.ts +168 -0
  179. package/dist/core/storage/storage.interface.d.ts.map +1 -0
  180. package/dist/core/storage/storage.interface.js +23 -0
  181. package/dist/core/storage/storage.interface.js.map +1 -0
  182. package/dist/core/storage/utils/broadcast.util.d.ts +49 -0
  183. package/dist/core/storage/utils/broadcast.util.d.ts.map +1 -0
  184. package/dist/core/storage/utils/broadcast.util.js +141 -0
  185. package/dist/core/storage/utils/broadcast.util.js.map +1 -0
  186. package/dist/core/storage/utils/cache.util.d.ts +33 -0
  187. package/dist/core/storage/utils/cache.util.d.ts.map +1 -0
  188. package/dist/core/storage/utils/cache.util.js +54 -0
  189. package/dist/core/storage/utils/cache.util.js.map +1 -0
  190. package/dist/core/storage/utils/middleware-module.d.ts +94 -0
  191. package/dist/core/storage/utils/middleware-module.d.ts.map +1 -0
  192. package/dist/core/storage/utils/middleware-module.js +258 -0
  193. package/dist/core/storage/utils/middleware-module.js.map +1 -0
  194. package/dist/core/storage/utils/path-selector.util.d.ts +15 -0
  195. package/dist/core/storage/utils/path-selector.util.d.ts.map +1 -0
  196. package/dist/core/storage/utils/path-selector.util.js +58 -0
  197. package/dist/core/storage/utils/path-selector.util.js.map +1 -0
  198. package/dist/core/storage/utils/state-diff.util.d.ts +14 -0
  199. package/dist/core/storage/utils/state-diff.util.d.ts.map +1 -0
  200. package/dist/core/storage/utils/state-diff.util.js +88 -0
  201. package/dist/core/storage/utils/state-diff.util.js.map +1 -0
  202. package/dist/core/storage/utils/storage-factory.util.d.ts +21 -0
  203. package/dist/core/storage/utils/storage-factory.util.d.ts.map +1 -0
  204. package/dist/core/storage/utils/storage-factory.util.js +40 -0
  205. package/dist/core/storage/utils/storage-factory.util.js.map +1 -0
  206. package/dist/core/storage/utils/storage-key.d.ts +11 -0
  207. package/dist/core/storage/utils/storage-key.d.ts.map +1 -0
  208. package/dist/core/storage/utils/storage-key.js +24 -0
  209. package/dist/core/storage/utils/storage-key.js.map +1 -0
  210. package/dist/core/storage/utils/storage.utils.d.ts +17 -0
  211. package/dist/core/storage/utils/storage.utils.d.ts.map +1 -0
  212. package/dist/core/storage/utils/storage.utils.js +57 -0
  213. package/dist/core/storage/utils/storage.utils.js.map +1 -0
  214. package/dist/index.d.ts +10 -12
  215. package/dist/index.d.ts.map +1 -0
  216. package/dist/index.js +17 -1
  217. package/dist/index.js.map +1 -0
  218. package/dist/react/hooks/index.d.ts +5 -0
  219. package/dist/react/hooks/index.d.ts.map +1 -0
  220. package/dist/react/hooks/index.js +11 -0
  221. package/dist/react/hooks/index.js.map +1 -0
  222. package/dist/react/hooks/useCreateStorage.d.ts +39 -0
  223. package/dist/react/hooks/useCreateStorage.d.ts.map +1 -0
  224. package/dist/react/hooks/useCreateStorage.js +137 -0
  225. package/dist/react/hooks/useCreateStorage.js.map +1 -0
  226. package/dist/react/hooks/useSelector.d.ts +21 -0
  227. package/dist/react/hooks/useSelector.d.ts.map +1 -0
  228. package/dist/react/hooks/useSelector.js +56 -0
  229. package/dist/react/hooks/useSelector.js.map +1 -0
  230. package/dist/react/hooks/useStorage.d.ts +39 -0
  231. package/dist/react/hooks/useStorage.d.ts.map +1 -0
  232. package/dist/react/hooks/useStorage.js +78 -0
  233. package/dist/react/hooks/useStorage.js.map +1 -0
  234. package/dist/react/hooks/useStorageSubscribe.d.ts +16 -0
  235. package/dist/react/hooks/useStorageSubscribe.d.ts.map +1 -0
  236. package/dist/react/hooks/useStorageSubscribe.js +55 -0
  237. package/dist/react/hooks/useStorageSubscribe.js.map +1 -0
  238. package/dist/react/index.d.ts +3 -0
  239. package/dist/react/index.d.ts.map +1 -0
  240. package/dist/react/index.js +7 -0
  241. package/dist/react/index.js.map +1 -0
  242. package/dist/react/utils/awaitSynapse.d.ts +34 -0
  243. package/dist/react/utils/awaitSynapse.d.ts.map +1 -0
  244. package/dist/react/utils/awaitSynapse.js +87 -0
  245. package/dist/react/utils/awaitSynapse.js.map +1 -0
  246. package/dist/react/utils/createSynapseCtx.d.ts +33 -0
  247. package/dist/react/utils/createSynapseCtx.d.ts.map +1 -0
  248. package/dist/react/utils/createSynapseCtx.js +139 -0
  249. package/dist/react/utils/createSynapseCtx.js.map +1 -0
  250. package/dist/react/utils/index.d.ts +3 -0
  251. package/dist/react/utils/index.d.ts.map +1 -0
  252. package/dist/react/utils/index.js +9 -0
  253. package/dist/react/utils/index.js.map +1 -0
  254. package/dist/reactive/dispatcher/dispatcher.module.d.ts +216 -0
  255. package/dist/reactive/dispatcher/dispatcher.module.d.ts.map +1 -0
  256. package/dist/reactive/dispatcher/dispatcher.module.js +384 -0
  257. package/dist/reactive/dispatcher/dispatcher.module.js.map +1 -0
  258. package/dist/reactive/dispatcher/index.d.ts +4 -0
  259. package/dist/reactive/dispatcher/index.d.ts.map +1 -0
  260. package/dist/reactive/dispatcher/index.js +9 -0
  261. package/dist/reactive/dispatcher/index.js.map +1 -0
  262. package/dist/reactive/dispatcher/middlewares/index.d.ts +2 -0
  263. package/dist/reactive/dispatcher/middlewares/index.d.ts.map +1 -0
  264. package/dist/reactive/dispatcher/middlewares/index.js +5 -0
  265. package/dist/reactive/dispatcher/middlewares/index.js.map +1 -0
  266. package/dist/reactive/dispatcher/middlewares/logger.middleware.d.ts +37 -0
  267. package/dist/reactive/dispatcher/middlewares/logger.middleware.d.ts.map +1 -0
  268. package/dist/reactive/dispatcher/middlewares/logger.middleware.js +188 -0
  269. package/dist/reactive/dispatcher/middlewares/logger.middleware.js.map +1 -0
  270. package/dist/reactive/dispatcher/standalone.d.ts +112 -0
  271. package/dist/reactive/dispatcher/standalone.d.ts.map +1 -0
  272. package/dist/reactive/dispatcher/standalone.js +142 -0
  273. package/dist/reactive/dispatcher/standalone.js.map +1 -0
  274. package/dist/reactive/effects/effects.module.d.ts +225 -0
  275. package/dist/reactive/effects/effects.module.d.ts.map +1 -0
  276. package/dist/reactive/effects/effects.module.js +356 -0
  277. package/dist/reactive/effects/effects.module.js.map +1 -0
  278. package/dist/reactive/effects/index.d.ts +4 -0
  279. package/dist/reactive/effects/index.d.ts.map +1 -0
  280. package/dist/reactive/effects/index.js +11 -0
  281. package/dist/reactive/effects/index.js.map +1 -0
  282. package/dist/reactive/effects/utils/chunkRequestConsistent.d.ts +12 -0
  283. package/dist/reactive/effects/utils/chunkRequestConsistent.d.ts.map +1 -0
  284. package/dist/reactive/effects/utils/chunkRequestConsistent.js +25 -0
  285. package/dist/reactive/effects/utils/chunkRequestConsistent.js.map +1 -0
  286. package/dist/reactive/effects/utils/chunkRequestParallel.d.ts +12 -0
  287. package/dist/reactive/effects/utils/chunkRequestParallel.d.ts.map +1 -0
  288. package/dist/reactive/effects/utils/chunkRequestParallel.js +22 -0
  289. package/dist/reactive/effects/utils/chunkRequestParallel.js.map +1 -0
  290. package/dist/reactive/effects/utils/fromRequest.d.ts +40 -0
  291. package/dist/reactive/effects/utils/fromRequest.d.ts.map +1 -0
  292. package/dist/reactive/effects/utils/fromRequest.js +64 -0
  293. package/dist/reactive/effects/utils/fromRequest.js.map +1 -0
  294. package/dist/reactive/effects/utils/index.d.ts +5 -0
  295. package/dist/reactive/effects/utils/index.d.ts.map +1 -0
  296. package/dist/reactive/effects/utils/index.js +11 -0
  297. package/dist/reactive/effects/utils/index.js.map +1 -0
  298. package/dist/reactive/effects/utils/toObservable.d.ts +23 -0
  299. package/dist/reactive/effects/utils/toObservable.d.ts.map +1 -0
  300. package/dist/reactive/effects/utils/toObservable.js +39 -0
  301. package/dist/reactive/effects/utils/toObservable.js.map +1 -0
  302. package/dist/reactive/index.d.ts +3 -0
  303. package/dist/reactive/index.d.ts.map +1 -0
  304. package/dist/reactive/index.js +7 -0
  305. package/dist/reactive/index.js.map +1 -0
  306. package/dist/utils/createEventBus.d.ts +87 -0
  307. package/dist/utils/createEventBus.d.ts.map +1 -0
  308. package/dist/utils/createEventBus.js +215 -0
  309. package/dist/utils/createEventBus.js.map +1 -0
  310. package/dist/utils/createSynapse/createSynapse.d.ts +9 -0
  311. package/dist/utils/createSynapse/createSynapse.d.ts.map +1 -0
  312. package/dist/utils/createSynapse/createSynapse.js +103 -0
  313. package/dist/utils/createSynapse/createSynapse.js.map +1 -0
  314. package/dist/utils/createSynapse/index.d.ts +3 -0
  315. package/dist/utils/createSynapse/index.d.ts.map +1 -0
  316. package/dist/utils/createSynapse/index.js +6 -0
  317. package/dist/utils/createSynapse/index.js.map +1 -0
  318. package/dist/utils/createSynapse/types.d.ts +93 -0
  319. package/dist/utils/createSynapse/types.d.ts.map +1 -0
  320. package/dist/utils/createSynapse/types.js +6 -0
  321. package/dist/utils/createSynapse/types.js.map +1 -0
  322. package/dist/utils/createSynapse/validate.d.ts +2 -0
  323. package/dist/utils/createSynapse/validate.d.ts.map +1 -0
  324. package/dist/utils/createSynapse/validate.js +76 -0
  325. package/dist/utils/createSynapse/validate.js.map +1 -0
  326. package/dist/utils/createSynapse/waitForDependencies.d.ts +3 -0
  327. package/dist/utils/createSynapse/waitForDependencies.d.ts.map +1 -0
  328. package/dist/utils/createSynapse/waitForDependencies.js +40 -0
  329. package/dist/utils/createSynapse/waitForDependencies.js.map +1 -0
  330. package/dist/utils/createSynapseAwaiter.d.ts +46 -0
  331. package/dist/utils/createSynapseAwaiter.d.ts.map +1 -0
  332. package/dist/utils/createSynapseAwaiter.js +102 -0
  333. package/dist/utils/createSynapseAwaiter.js.map +1 -0
  334. package/dist/utils/index.d.ts +4 -0
  335. package/dist/utils/index.d.ts.map +1 -0
  336. package/dist/utils/index.js +12 -0
  337. package/dist/utils/index.js.map +1 -0
  338. package/package.json +17 -21
  339. package/dist/api.d.ts +0 -365
  340. package/dist/api.js +0 -1
  341. package/dist/core.d.ts +0 -106
  342. package/dist/core.js +0 -1
  343. package/dist/createSynapse-vkfKjRob.d.ts +0 -97
  344. package/dist/dispatcher.module-BOsMHbD5.d.ts +0 -360
  345. package/dist/react.d.ts +0 -119
  346. package/dist/react.js +0 -1
  347. package/dist/reactive.d.ts +0 -35
  348. package/dist/reactive.js +0 -1
  349. package/dist/storage.interface-BA_ktyDz.d.ts +0 -591
  350. package/dist/utils.d.ts +0 -139
  351. package/dist/utils.js +0 -1
@@ -0,0 +1,11 @@
1
+ export * from "./api.module.js";
2
+ export * from "./utils/api-helpers.js";
3
+
4
+
5
+
6
+ // export * from './_utils/file-_utils'
7
+ // export * from './_utils/get-cacheable-headers'
8
+
9
+ export { ResponseFormat } from "./types/api.interface.js";
10
+
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api/index.js","sources":["../../src/api/index.ts"],"sourcesContent":["export * from './api.module'\nexport { ResponseFormat, type RetryConfig } from './types/api.interface'\nexport * from './utils/api-helpers'\n// export * from './_utils/file-_utils'\n// export * from './_utils/get-cacheable-headers'\n"],"names":["ResponseFormat"],"mappings":";;;AAA4B;AAC4C;AACrC,CACnC,uCAAuC;CACvC,iDAAiD"}
@@ -0,0 +1,126 @@
1
+ import { IStorage } from '../../core';
2
+ import { CreateEndpoint, EndpointConfig } from './endpoint.interface';
3
+ /**
4
+ * Форматы ответа от сервера
5
+ */
6
+ export declare enum ResponseFormat {
7
+ /** JSON-объект (по умолчанию) */
8
+ Json = "json",
9
+ /** Blob-объект для файлов */
10
+ Blob = "blob",
11
+ /** ArrayBuffer для бинарных данных */
12
+ ArrayBuffer = "arrayBuffer",
13
+ /** Текстовый формат */
14
+ Text = "text",
15
+ /** FormData для форм */
16
+ FormData = "formData",
17
+ /** Без преобразования - возвращает сырой ответ */
18
+ Raw = "raw"
19
+ }
20
+ /**
21
+ * Настройки кэша
22
+ * Может быть объектом с параметрами или boolean (true для кэширования с настройками по умолчанию, false для отключения)
23
+ */
24
+ export type CacheConfig = boolean | {
25
+ /** Время жизни кэша в миллисекундах */
26
+ ttl?: number;
27
+ /** Настройки периодической очистки */
28
+ cleanup?: {
29
+ /** Включить периодическую очистку */
30
+ enabled: boolean;
31
+ /** Интервал очистки в миллисекундах */
32
+ interval?: number;
33
+ };
34
+ /** Инвалидировать кэш при ошибке */
35
+ invalidateOnError?: boolean;
36
+ };
37
+ /**
38
+ * Определение запроса
39
+ * Содержит всю необходимую информацию для выполнения HTTP-запроса
40
+ */
41
+ export interface RequestDefinition<RequestParams extends Record<string, any>> {
42
+ /** Путь запроса (относительный или абсолютный URL) */
43
+ path: string;
44
+ /** HTTP-метод */
45
+ method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';
46
+ /** Тело запроса (автоматически сериализуется) */
47
+ body?: any;
48
+ /** Параметры запроса (автоматически добавляются в URL) */
49
+ query?: RequestParams;
50
+ /** HTTP-заголовки */
51
+ headers?: Record<string, string>;
52
+ /** Формат ответа (по умолчанию json) */
53
+ responseFormat?: ResponseFormat;
54
+ /** Имя файла для автоматического скачивания */
55
+ fileName?: string;
56
+ /** Тип контента для автоматического скачивания */
57
+ fileType?: string;
58
+ }
59
+ /**
60
+ * Контекст API для использования в prepareHeaders и других функциях
61
+ * Содержит вспомогательные методы и информацию о запросе
62
+ */
63
+ export interface ApiContext<RequestParams extends Record<string, any> = any> {
64
+ /** Параметры запроса */
65
+ requestParams?: RequestParams;
66
+ /** Получить значение из localStorage */
67
+ getFromStorage: <T>(key: string) => T | undefined;
68
+ /** Получить значение cookie */
69
+ getCookie: (name: string) => string | undefined;
70
+ /** Поддержка для дополнительных свойств */
71
+ [key: string]: any;
72
+ }
73
+ /**
74
+ * Аргументы для создания fetch-запроса
75
+ */
76
+ export interface FetchBaseQueryArgs {
77
+ /** Базовый URL для всех запросов */
78
+ baseUrl: string;
79
+ /** Функция для подготовки заголовков, может быть асинхронной */
80
+ prepareHeaders?: (headers: Headers, context: ApiContext) => Promise<Headers>;
81
+ /** Таймаут запроса в миллисекундах */
82
+ timeout?: number;
83
+ /** Пользовательская fetch-функция */
84
+ fetchFn?: typeof fetch;
85
+ credentials?: RequestCredentials;
86
+ }
87
+ /**
88
+ * Конфигурация повторных попыток запроса
89
+ */
90
+ export interface RetryConfig {
91
+ /** Количество повторных попыток (0 = без retry) */
92
+ count: number;
93
+ /** Задержка между попытками в мс, или функция (attempt) => ms для кастомной стратегии */
94
+ delay?: number | ((attempt: number) => number);
95
+ /** HTTP-статусы, при которых делать retry (по умолчанию: 0, 408, 429, 500, 502, 503, 504) */
96
+ retryOn?: number[];
97
+ }
98
+ /**
99
+ * Storage или фабрика для ленивого создания storage
100
+ * Фабрика вызывается при init() — удобно для универсального кода (SSR + клиент)
101
+ */
102
+ export type StorageOption = IStorage | (() => IStorage | Promise<IStorage>);
103
+ export interface CreateApiClientOptions<T extends Record<string, EndpointConfig<any, any>> = Record<string, EndpointConfig<any, any>>> {
104
+ storage: StorageOption;
105
+ /** Настройки кэша
106
+ * если явно указан false - значит ни один запрос НЕ будет кэшироваться, даже если в эндпоинтах указаны параметры
107
+ * */
108
+ cache?: CacheConfig;
109
+ /** Базовый запрос или его настройки */
110
+ baseQuery: FetchBaseQueryArgs;
111
+ /** Функция для создания эндпоинтов */
112
+ endpoints?: (create: CreateEndpoint) => Promise<T>;
113
+ /** Глобальные заголовки, влияющие на кэш */
114
+ cacheableHeaderKeys?: string[];
115
+ /** Глобальная конфигурация retry (применяется ко всем эндпоинтам по умолчанию) */
116
+ retry?: RetryConfig;
117
+ }
118
+ /**
119
+ * Извлечение типа параметров из конфигурации эндпоинта
120
+ */
121
+ export type ExtractParamsType<T> = T extends EndpointConfig<infer P, any> ? P : never;
122
+ /**
123
+ * Извлечение типа результата из конфигурации эндпоинта
124
+ */
125
+ export type ExtractResultType<T> = T extends EndpointConfig<any, infer R> ? R : never;
126
+ //# sourceMappingURL=api.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.interface.d.ts","sourceRoot":"","sources":["../../../src/api/types/api.interface.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Форматы ответа от сервера
3
+ */ var api_interface_ResponseFormat = /*#__PURE__*/ function(ResponseFormat) {
4
+ /** JSON-объект (по умолчанию) */ ResponseFormat["Json"] = "json";
5
+ /** Blob-объект для файлов */ ResponseFormat["Blob"] = "blob";
6
+ /** ArrayBuffer для бинарных данных */ ResponseFormat["ArrayBuffer"] = "arrayBuffer";
7
+ /** Текстовый формат */ ResponseFormat["Text"] = "text";
8
+ /** FormData для форм */ ResponseFormat["FormData"] = "formData";
9
+ /** Без преобразования - возвращает сырой ответ */ ResponseFormat["Raw"] = "raw";
10
+ return ResponseFormat;
11
+ }({});
12
+
13
+ export { api_interface_ResponseFormat as ResponseFormat };
14
+
15
+ //# sourceMappingURL=api.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api/types/api.interface.js","sources":["../../../src/api/types/api.interface.ts"],"sourcesContent":["import { IStorage, StorageType } from '../../core'\nimport { CreateEndpoint, EndpointConfig } from './endpoint.interface'\n\n/**\n * Форматы ответа от сервера\n */\nexport enum ResponseFormat {\n /** JSON-объект (по умолчанию) */\n Json = 'json',\n /** Blob-объект для файлов */\n Blob = 'blob',\n /** ArrayBuffer для бинарных данных */\n ArrayBuffer = 'arrayBuffer',\n /** Текстовый формат */\n Text = 'text',\n /** FormData для форм */\n FormData = 'formData',\n /** Без преобразования - возвращает сырой ответ */\n Raw = 'raw',\n}\n\n/**\n * Настройки кэша\n * Может быть объектом с параметрами или boolean (true для кэширования с настройками по умолчанию, false для отключения)\n */\nexport type CacheConfig =\n | boolean\n | {\n /** Время жизни кэша в миллисекундах */\n ttl?: number\n /** Настройки периодической очистки */\n cleanup?: {\n /** Включить периодическую очистку */\n enabled: boolean\n /** Интервал очистки в миллисекундах */\n interval?: number\n }\n /** Инвалидировать кэш при ошибке */\n invalidateOnError?: boolean\n }\n\n/**\n * Определение запроса\n * Содержит всю необходимую информацию для выполнения HTTP-запроса\n */\nexport interface RequestDefinition<RequestParams extends Record<string, any>> {\n /** Путь запроса (относительный или абсолютный URL) */\n path: string\n /** HTTP-метод */\n method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH'\n /** Тело запроса (автоматически сериализуется) */\n body?: any\n /** Параметры запроса (автоматически добавляются в URL) */\n query?: RequestParams\n /** HTTP-заголовки */\n headers?: Record<string, string>\n /** Формат ответа (по умолчанию json) */\n responseFormat?: ResponseFormat\n /** Имя файла для автоматического скачивания */\n fileName?: string\n /** Тип контента для автоматического скачивания */\n fileType?: string\n}\n\n/**\n * Контекст API для использования в prepareHeaders и других функциях\n * Содержит вспомогательные методы и информацию о запросе\n */\nexport interface ApiContext<RequestParams extends Record<string, any> = any> {\n /** Параметры запроса */\n requestParams?: RequestParams\n /** Получить значение из localStorage */\n getFromStorage: <T>(key: string) => T | undefined\n /** Получить значение cookie */\n getCookie: (name: string) => string | undefined\n /** Поддержка для дополнительных свойств */\n [key: string]: any\n}\n\n/**\n * Аргументы для создания fetch-запроса\n */\nexport interface FetchBaseQueryArgs {\n /** Базовый URL для всех запросов */\n baseUrl: string\n /** Функция для подготовки заголовков, может быть асинхронной */\n prepareHeaders?: (headers: Headers, context: ApiContext) => Promise<Headers>\n /** Таймаут запроса в миллисекундах */\n timeout?: number\n /** Пользовательская fetch-функция */\n fetchFn?: typeof fetch\n credentials?: RequestCredentials\n}\n\n/**\n * Конфигурация повторных попыток запроса\n */\nexport interface RetryConfig {\n /** Количество повторных попыток (0 = без retry) */\n count: number\n /** Задержка между попытками в мс, или функция (attempt) => ms для кастомной стратегии */\n delay?: number | ((attempt: number) => number)\n /** HTTP-статусы, при которых делать retry (по умолчанию: 0, 408, 429, 500, 502, 503, 504) */\n retryOn?: number[]\n}\n\n/**\n * Storage или фабрика для ленивого создания storage\n * Фабрика вызывается при init() — удобно для универсального кода (SSR + клиент)\n */\nexport type StorageOption = IStorage | (() => IStorage | Promise<IStorage>)\n\nexport interface CreateApiClientOptions<T extends Record<string, EndpointConfig<any, any>> = Record<string, EndpointConfig<any, any>>> {\n storage: StorageOption\n /** Настройки кэша\n * если явно указан false - значит ни один запрос НЕ будет кэшироваться, даже если в эндпоинтах указаны параметры\n * */\n cache?: CacheConfig\n /** Базовый запрос или его настройки */\n baseQuery: FetchBaseQueryArgs\n /** Функция для создания эндпоинтов */\n endpoints?: (create: CreateEndpoint) => Promise<T>\n /** Глобальные заголовки, влияющие на кэш */\n cacheableHeaderKeys?: string[]\n /** Глобальная конфигурация retry (применяется ко всем эндпоинтам по умолчанию) */\n retry?: RetryConfig\n}\n\n/**\n * Извлечение типа параметров из конфигурации эндпоинта\n */\nexport type ExtractParamsType<T> = T extends EndpointConfig<infer P, any> ? P : never\n\n/**\n * Извлечение типа результата из конфигурации эндпоинта\n */\nexport type ExtractResultType<T> = T extends EndpointConfig<any, infer R> ? R : never\n"],"names":["ResponseFormat"],"mappings":"AAGA;;CAEC,GACM,IAAKA,4BAAcA,0BAAdA;IACV,+BAA+B;IAE/B,2BAA2B;IAE3B,oCAAoC;IAEpC,qBAAqB;IAErB,sBAAsB;IAEtB,gDAAgD;WAXtCA;MAaX"}
@@ -0,0 +1,118 @@
1
+ import { ApiContext, CacheConfig, RequestDefinition, RetryConfig } from './api.interface';
2
+ import { QueryOptions, QueryResult, Unsubscribe } from './query.interface';
3
+ /**
4
+ * Конфигурация эндпоинта
5
+ */
6
+ export interface EndpointConfig<RequestParams extends Record<string, any> = any, RequestResult = any> {
7
+ /** Функция для создания определения запроса из параметров */
8
+ request: (params: RequestParams, context?: Record<string, any>) => RequestDefinition<RequestParams>;
9
+ /** Настройки кэша для эндпоинта */
10
+ cache?: CacheConfig;
11
+ /** Теги эндпоинта для группировки в кэше */
12
+ tags?: string[];
13
+ /** Теги, которые инвалидируются при успешном запросе */
14
+ invalidatesTags?: string[];
15
+ /** Функция для подготовки заголовков (дополняет глобальную) */
16
+ prepareHeaders?: (headers: Headers, context: ApiContext<RequestParams>) => Promise<Headers>;
17
+ /** Добавить ключи заголовков, влияющие на кэш (Дополняет глобавльные ключи) */
18
+ includeCacheableHeaderKeys?: string[];
19
+ /** Исключить ключи заголовков, влияющие на кэш (Дополняет глобавльные ключи) */
20
+ excludeCacheableHeaderKeys?: string[];
21
+ /** Конфигурация retry для этого эндпоинта (переопределяет глобальную) */
22
+ retry?: RetryConfig;
23
+ }
24
+ /**
25
+ * Состояние эндпоинта
26
+ * Содержит информацию о текущем состоянии запроса и данные
27
+ */
28
+ export interface EndpointState {
29
+ /** Статус запроса */
30
+ status: 'idle' | 'loading' | 'success' | 'error';
31
+ /** Ошибка (при неуспешном запросе) */
32
+ error?: Error;
33
+ /** Количество вызовов */
34
+ fetchCounts: number;
35
+ /** Метаданные эндпоинта */
36
+ meta: Endpoint['meta'];
37
+ /** Какие заголовки участвовали в формировании ключа кэша (итоговые) */
38
+ cacheableHeaders: string[];
39
+ }
40
+ /**
41
+ * Состояние самого запроса
42
+ */
43
+ export interface RequestState<ResponseData = any, RequestParams extends Record<string, any> = any, E = Error> {
44
+ status: 'loading' | 'success' | 'error' | 'idle';
45
+ data?: ResponseData;
46
+ error?: E;
47
+ headers: Record<string, any> | Headers;
48
+ requestParams: RequestParams;
49
+ fromCache: boolean;
50
+ }
51
+ export interface SubscribeOptions {
52
+ /** Автоматически отписаться после завершения запроса */
53
+ autoUnsubscribe?: boolean;
54
+ }
55
+ /**
56
+ * Дополнительные методы для request
57
+ */
58
+ export interface RequestResponseModify<T, P extends Record<string, any> = any> {
59
+ id: string;
60
+ /**
61
+ * Подписка на изменения состояния запроса
62
+ */
63
+ subscribe: (listener: (state: RequestState<T, P>) => void, options?: SubscribeOptions) => VoidFunction;
64
+ /**
65
+ * Ожидание завершения запроса
66
+ * @returns Promise с результатом запроса
67
+ */
68
+ wait: () => Promise<QueryResult<T, Error>>;
69
+ waitWithCallbacks: (handlers: {
70
+ idle?: (request: RequestState<T, P>) => void;
71
+ loading?: (request: RequestState<T, P>) => void;
72
+ success?: (data: T | undefined, request: RequestState<T, P>) => void;
73
+ error?: (error: Error | undefined, request: RequestState<T, P>) => void;
74
+ }) => Promise<QueryResult<T, Error>>;
75
+ /**
76
+ * Отменить запрос
77
+ */
78
+ abort: VoidFunction;
79
+ then<TResult1 = QueryResult<T, Error>, TResult2 = never>(onfulfilled?: ((value: QueryResult<T, Error>) => TResult1 | PromiseLike<TResult1>) | undefined | null, onrejected?: ((reason: Error) => TResult2 | PromiseLike<TResult2>) | undefined | null): Promise<TResult1 | TResult2>;
80
+ catch<TResult = never>(onrejected?: ((reason: Error) => TResult | PromiseLike<TResult>) | undefined | null): Promise<QueryResult<T, Error> | TResult>;
81
+ finally(onfinally?: VoidFunction | undefined | null): Promise<QueryResult<T, Error>>;
82
+ }
83
+ /**
84
+ * Структура эндпоинта
85
+ *
86
+ * Эндпоинт - это всего лишь определение того6 как будет вызван метод
87
+ * Эндпоинт может быть вызван в разных частях приложения с разными параметрами
88
+ * По этому нет смысла хранить ответы так как они будут перезаписываться
89
+ * метод subscribe больше нужен для мониторинга
90
+ * meta - метаинформация по эндпоинту (то как он сконфигурирован)
91
+ */
92
+ export interface Endpoint<RequestParams extends Record<string, any> = any, ResponseData = any> {
93
+ /** Счетчик вызова конкретного эндпоинта в проекте */
94
+ fetchCounts: number;
95
+ /** Выполнить запрос с параметрами */
96
+ request: (params: RequestParams, options?: QueryOptions) => RequestResponseModify<ResponseData>;
97
+ /** Подписаться на изменения состояния эндпоинта (в основном для сбора статистики) */
98
+ subscribe: (callback: (state: EndpointState) => void) => Unsubscribe;
99
+ /** Сбросить состояние */
100
+ reset: () => Promise<void>;
101
+ /** Метаданные эндпоинта */
102
+ meta: {
103
+ /** Имя эндпоинта */
104
+ name: string;
105
+ /** Теги эндпоинта */
106
+ tags: string[];
107
+ /** Теги, которые инвалидируются */
108
+ invalidatesTags: string[];
109
+ /** Настройки кэша */
110
+ cache: CacheConfig;
111
+ };
112
+ destroy: VoidFunction;
113
+ }
114
+ /**
115
+ * Функция для создания типизированных эндпоинтов
116
+ */
117
+ export type CreateEndpoint = <RequestParams extends Record<string, any>, RequestResult>(config: EndpointConfig<RequestParams, RequestResult>) => EndpointConfig<RequestParams, RequestResult>;
118
+ //# sourceMappingURL=endpoint.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpoint.interface.d.ts","sourceRoot":"","sources":["../../../src/api/types/endpoint.interface.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Функция для создания типизированных эндпоинтов
3
+ */
4
+
5
+
6
+ //# sourceMappingURL=endpoint.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api/types/endpoint.interface.js","sources":["../../../src/api/types/endpoint.interface.ts"],"sourcesContent":["import { ApiContext, CacheConfig, RequestDefinition, RetryConfig } from './api.interface'\nimport { QueryOptions, QueryResult, Unsubscribe } from './query.interface'\n\n/**\n * Конфигурация эндпоинта\n */\nexport interface EndpointConfig<RequestParams extends Record<string, any> = any, RequestResult = any> {\n /** Функция для создания определения запроса из параметров */\n request: (params: RequestParams, context?: Record<string, any>) => RequestDefinition<RequestParams>\n /** Настройки кэша для эндпоинта */\n cache?: CacheConfig\n /** Теги эндпоинта для группировки в кэше */\n tags?: string[]\n /** Теги, которые инвалидируются при успешном запросе */\n invalidatesTags?: string[]\n /** Функция для подготовки заголовков (дополняет глобальную) */\n prepareHeaders?: (headers: Headers, context: ApiContext<RequestParams>) => Promise<Headers>\n /** Добавить ключи заголовков, влияющие на кэш (Дополняет глобавльные ключи) */\n includeCacheableHeaderKeys?: string[]\n /** Исключить ключи заголовков, влияющие на кэш (Дополняет глобавльные ключи) */\n excludeCacheableHeaderKeys?: string[]\n /** Конфигурация retry для этого эндпоинта (переопределяет глобальную) */\n retry?: RetryConfig\n}\n\n/**\n * Состояние эндпоинта\n * Содержит информацию о текущем состоянии запроса и данные\n */\nexport interface EndpointState {\n /** Статус запроса */\n status: 'idle' | 'loading' | 'success' | 'error'\n /** Ошибка (при неуспешном запросе) */\n error?: Error\n /** Количество вызовов */\n fetchCounts: number\n /** Метаданные эндпоинта */\n meta: Endpoint['meta']\n /** Какие заголовки участвовали в формировании ключа кэша (итоговые) */\n cacheableHeaders: string[]\n}\n\n/**\n * Состояние самого запроса\n */\nexport interface RequestState<ResponseData = any, RequestParams extends Record<string, any> = any, E = Error> {\n status: 'loading' | 'success' | 'error' | 'idle'\n data?: ResponseData\n error?: E\n headers: Record<string, any> | Headers\n requestParams: RequestParams\n fromCache: boolean\n}\n\nexport interface SubscribeOptions {\n /** Автоматически отписаться после завершения запроса */\n autoUnsubscribe?: boolean\n}\n\n/**\n * Дополнительные методы для request\n */\nexport interface RequestResponseModify<T, P extends Record<string, any> = any> {\n id: string\n\n /**\n * Подписка на изменения состояния запроса\n */\n subscribe: (listener: (state: RequestState<T, P>) => void, options?: SubscribeOptions) => VoidFunction\n\n /**\n * Ожидание завершения запроса\n * @returns Promise с результатом запроса\n */\n wait: () => Promise<QueryResult<T, Error>>\n\n waitWithCallbacks: (handlers: {\n idle?: (request: RequestState<T, P>) => void\n loading?: (request: RequestState<T, P>) => void\n success?: (data: T | undefined, request: RequestState<T, P>) => void\n error?: (error: Error | undefined, request: RequestState<T, P>) => void\n }) => Promise<QueryResult<T, Error>>\n\n /**\n * Отменить запрос\n */\n abort: VoidFunction\n\n // Promise API для поддержки await и .then()\n then<TResult1 = QueryResult<T, Error>, TResult2 = never>(\n onfulfilled?: ((value: QueryResult<T, Error>) => TResult1 | PromiseLike<TResult1>) | undefined | null,\n onrejected?: ((reason: Error) => TResult2 | PromiseLike<TResult2>) | undefined | null,\n ): Promise<TResult1 | TResult2>\n\n catch<TResult = never>(onrejected?: ((reason: Error) => TResult | PromiseLike<TResult>) | undefined | null): Promise<QueryResult<T, Error> | TResult>\n\n finally(onfinally?: VoidFunction | undefined | null): Promise<QueryResult<T, Error>>\n}\n\n/**\n * Структура эндпоинта\n *\n * Эндпоинт - это всего лишь определение того6 как будет вызван метод\n * Эндпоинт может быть вызван в разных частях приложения с разными параметрами\n * По этому нет смысла хранить ответы так как они будут перезаписываться\n * метод subscribe больше нужен для мониторинга\n * meta - метаинформация по эндпоинту (то как он сконфигурирован)\n */\nexport interface Endpoint<RequestParams extends Record<string, any> = any, ResponseData = any> {\n /** Счетчик вызова конкретного эндпоинта в проекте */\n fetchCounts: number\n /** Выполнить запрос с параметрами */\n request: (params: RequestParams, options?: QueryOptions) => RequestResponseModify<ResponseData>\n /** Подписаться на изменения состояния эндпоинта (в основном для сбора статистики) */\n subscribe: (callback: (state: EndpointState) => void) => Unsubscribe\n /** Сбросить состояние */\n reset: () => Promise<void>\n /** Метаданные эндпоинта */\n meta: {\n /** Имя эндпоинта */\n name: string\n /** Теги эндпоинта */\n tags: string[]\n /** Теги, которые инвалидируются */\n invalidatesTags: string[]\n /** Настройки кэша */\n cache: CacheConfig\n }\n destroy: VoidFunction\n}\n\n/**\n * Функция для создания типизированных эндпоинтов\n */\nexport type CreateEndpoint = <RequestParams extends Record<string, any>, RequestResult>(\n config: EndpointConfig<RequestParams, RequestResult>,\n) => EndpointConfig<RequestParams, RequestResult>\n"],"names":[],"mappings":"AAmIA;;CAEC,GAGgD"}
@@ -0,0 +1,85 @@
1
+ import { ResponseFormat, RetryConfig } from './api.interface';
2
+ /**
3
+ * Тип для функции отписки от событий
4
+ */
5
+ export type Unsubscribe = VoidFunction;
6
+ /**
7
+ * Опции для выполнения запроса
8
+ */
9
+ export interface QueryOptions {
10
+ /** Отключить кэширование для этого запроса */
11
+ disableCache?: boolean;
12
+ /** Signal для отмены запроса */
13
+ signal?: AbortSignal;
14
+ /** Таймаут в миллисекундах (переопределяет глобальный) */
15
+ timeout?: number;
16
+ /** Дополнительные заголовки */
17
+ headers?: Headers;
18
+ /** Пользовательский контекст */
19
+ context?: Record<string, any>;
20
+ /** Ключи заголовков, влияющие на кэш (для конкретного запроса) */
21
+ cacheableHeaderKeys?: string[];
22
+ /** Формат ответа (переопределяет формат из RequestDefinition) */
23
+ responseFormat?: ResponseFormat;
24
+ /** Название файла при скачивании (переопределяет fileName из RequestDefinition) */
25
+ fileName?: string;
26
+ /** Тип файла при скачивании (переопределяет fileType из RequestDefinition) */
27
+ fileType?: string;
28
+ /** Автоматически скачать файл после получения */
29
+ downloadFile?: boolean;
30
+ /** Конфигурация retry для этого запроса (переопределяет эндпоинт и глобальную) */
31
+ retry?: RetryConfig;
32
+ }
33
+ /**
34
+ * Метаданные для файла
35
+ */
36
+ export interface FileMetadata {
37
+ /** Имя файла */
38
+ fileName: string;
39
+ /** Тип файла (MIME-тип) */
40
+ fileType: string;
41
+ /** Размер файла в байтах */
42
+ size?: number;
43
+ /** Дата создания файла */
44
+ createdAt?: Date | string;
45
+ /** Дата изменения файла */
46
+ updatedAt?: Date | string;
47
+ }
48
+ /**
49
+ * Результат скачивания файла
50
+ */
51
+ export interface FileDownloadResult<T = Blob | ArrayBuffer> {
52
+ /** Данные файла */
53
+ data: T;
54
+ /** Метаданные файла */
55
+ metadata: FileMetadata;
56
+ /** HTTP-статус */
57
+ status: number;
58
+ /** Текст статуса */
59
+ statusText: string;
60
+ /** Заголовки ответа */
61
+ headers: Headers;
62
+ /** Успешна ли загрузка */
63
+ ok: boolean;
64
+ }
65
+ /**
66
+ * Результат выполнения запроса
67
+ */
68
+ export interface QueryResult<T = any, E = Error> {
69
+ /** Данные ответа (при успешном запросе) */
70
+ data?: T;
71
+ /** Ошибка (при неуспешном запросе) */
72
+ error?: E;
73
+ /** Флаг успешности запроса */
74
+ ok: boolean;
75
+ /** HTTP-статус */
76
+ status: number;
77
+ /** Текстовое описание статуса */
78
+ statusText: string;
79
+ /** Заголовки ответа */
80
+ headers: Headers;
81
+ /** Результат скачивания файла (если responseFormat - Blob или ArrayBuffer) */
82
+ fileDownloadResult?: FileDownloadResult;
83
+ fromCache?: boolean;
84
+ }
85
+ //# sourceMappingURL=query.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query.interface.d.ts","sourceRoot":"","sources":["../../../src/api/types/query.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAE7D;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,YAAY,CAAA;AAEtC;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,8CAA8C;IAC9C,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,gCAAgC;IAChC,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,0DAA0D;IAC1D,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,+BAA+B;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,gCAAgC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC7B,kEAAkE;IAClE,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC9B,iEAAiE;IACjE,cAAc,CAAC,EAAE,cAAc,CAAA;IAC/B,mFAAmF;IACnF,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,iDAAiD;IACjD,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,kFAAkF;IAClF,KAAK,CAAC,EAAE,WAAW,CAAA;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,gBAAgB;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,2BAA2B;IAC3B,QAAQ,EAAE,MAAM,CAAA;IAChB,4BAA4B;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,0BAA0B;IAC1B,SAAS,CAAC,EAAE,IAAI,GAAG,MAAM,CAAA;IACzB,2BAA2B;IAC3B,SAAS,CAAC,EAAE,IAAI,GAAG,MAAM,CAAA;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB,CAAC,CAAC,GAAG,IAAI,GAAG,WAAW;IACxD,mBAAmB;IACnB,IAAI,EAAE,CAAC,CAAA;IACP,uBAAuB;IACvB,QAAQ,EAAE,YAAY,CAAA;IACtB,kBAAkB;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,oBAAoB;IACpB,UAAU,EAAE,MAAM,CAAA;IAClB,uBAAuB;IACvB,OAAO,EAAE,OAAO,CAAA;IAChB,0BAA0B;IAC1B,EAAE,EAAE,OAAO,CAAA;CACZ;AAED;;GAEG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,KAAK;IAC7C,2CAA2C;IAC3C,IAAI,CAAC,EAAE,CAAC,CAAA;IACR,sCAAsC;IACtC,KAAK,CAAC,EAAE,CAAC,CAAA;IACT,8BAA8B;IAC9B,EAAE,EAAE,OAAO,CAAA;IACX,kBAAkB;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,iCAAiC;IACjC,UAAU,EAAE,MAAM,CAAA;IAClB,uBAAuB;IACvB,OAAO,EAAE,OAAO,CAAA;IAChB,8EAA8E;IAC9E,kBAAkB,CAAC,EAAE,kBAAkB,CAAA;IACvC,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Результат выполнения запроса
3
+ */
4
+
5
+
6
+ //# sourceMappingURL=query.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api/types/query.interface.js","sources":["../../../src/api/types/query.interface.ts"],"sourcesContent":["import { ResponseFormat, RetryConfig } from './api.interface'\n\n/**\n * Тип для функции отписки от событий\n */\nexport type Unsubscribe = VoidFunction\n\n/**\n * Опции для выполнения запроса\n */\nexport interface QueryOptions {\n /** Отключить кэширование для этого запроса */\n disableCache?: boolean\n /** Signal для отмены запроса */\n signal?: AbortSignal\n /** Таймаут в миллисекундах (переопределяет глобальный) */\n timeout?: number\n /** Дополнительные заголовки */\n headers?: Headers\n /** Пользовательский контекст */\n context?: Record<string, any>\n /** Ключи заголовков, влияющие на кэш (для конкретного запроса) */\n cacheableHeaderKeys?: string[]\n /** Формат ответа (переопределяет формат из RequestDefinition) */\n responseFormat?: ResponseFormat\n /** Название файла при скачивании (переопределяет fileName из RequestDefinition) */\n fileName?: string\n /** Тип файла при скачивании (переопределяет fileType из RequestDefinition) */\n fileType?: string\n /** Автоматически скачать файл после получения */\n downloadFile?: boolean\n /** Конфигурация retry для этого запроса (переопределяет эндпоинт и глобальную) */\n retry?: RetryConfig\n}\n\n/**\n * Метаданные для файла\n */\nexport interface FileMetadata {\n /** Имя файла */\n fileName: string\n /** Тип файла (MIME-тип) */\n fileType: string\n /** Размер файла в байтах */\n size?: number\n /** Дата создания файла */\n createdAt?: Date | string\n /** Дата изменения файла */\n updatedAt?: Date | string\n}\n\n/**\n * Результат скачивания файла\n */\nexport interface FileDownloadResult<T = Blob | ArrayBuffer> {\n /** Данные файла */\n data: T\n /** Метаданные файла */\n metadata: FileMetadata\n /** HTTP-статус */\n status: number\n /** Текст статуса */\n statusText: string\n /** Заголовки ответа */\n headers: Headers\n /** Успешна ли загрузка */\n ok: boolean\n}\n\n/**\n * Результат выполнения запроса\n */\nexport interface QueryResult<T = any, E = Error> {\n /** Данные ответа (при успешном запросе) */\n data?: T\n /** Ошибка (при неуспешном запросе) */\n error?: E\n /** Флаг успешности запроса */\n ok: boolean\n /** HTTP-статус */\n status: number\n /** Текстовое описание статуса */\n statusText: string\n /** Заголовки ответа */\n headers: Headers\n /** Результат скачивания файла (если responseFormat - Blob или ArrayBuffer) */\n fileDownloadResult?: FileDownloadResult\n fromCache?: boolean\n}\n"],"names":[],"mappings":"AAqEA;;CAEC,GAiBA"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Логгер для API
3
+ */
4
+ export declare const apiLogger: {
5
+ debug: (message: string, ...args: any[]) => void;
6
+ log: (message: string, ...args: any[]) => void;
7
+ info: (message: string, ...args: any[]) => void;
8
+ warn: (message: string, ...args: any[]) => void;
9
+ error: (message: string, ...args: any[]) => void;
10
+ };
11
+ /**
12
+ * Создает уникальный идентификатор
13
+ * @returns Строка с уникальным идентификатором
14
+ */
15
+ export declare function createUniqueId(name?: string): string;
16
+ /**
17
+ * Преобразует объект Headers в обычный объект
18
+ * @param headers Объект Headers
19
+ * @returns Обычный объект с заголовками
20
+ */
21
+ export declare function headersToObject(headers: Headers): Record<string, string>;
22
+ //# sourceMappingURL=api-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-helpers.d.ts","sourceRoot":"","sources":["../../../src/api/utils/api-helpers.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,SAAS;qBACH,MAAM,WAAW,GAAG,EAAE;mBAMxB,MAAM,WAAW,GAAG,EAAE;oBAMrB,MAAM,WAAW,GAAG,EAAE;oBAItB,MAAM,WAAW,GAAG,EAAE;qBAIrB,MAAM,WAAW,GAAG,EAAE;CAGxC,CAAA;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAMxE"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Логгер для API
3
+ */ const apiLogger = {
4
+ debug: (message, ...args)=>{
5
+ if (process.env.NODE_ENV !== 'production') {
6
+ console.debug(`[API] ${message}`, ...args);
7
+ }
8
+ },
9
+ log: (message, ...args)=>{
10
+ if (process.env.NODE_ENV !== 'production') {
11
+ console.log(`[API] ${message}`, ...args);
12
+ }
13
+ },
14
+ info: (message, ...args)=>{
15
+ console.info(`[API] ${message}`, ...args);
16
+ },
17
+ warn: (message, ...args)=>{
18
+ console.warn(`[API] ${message}`, ...args);
19
+ },
20
+ error: (message, ...args)=>{
21
+ console.error(`[API] ${message}`, ...args);
22
+ }
23
+ };
24
+ /**
25
+ * Создает уникальный идентификатор
26
+ * @returns Строка с уникальным идентификатором
27
+ */ function createUniqueId(name) {
28
+ return `${name ? `${name}|` : ''}${Math.random().toString(36).substring(2, 9) + Date.now().toString(36)}`;
29
+ }
30
+ /**
31
+ * Преобразует объект Headers в обычный объект
32
+ * @param headers Объект Headers
33
+ * @returns Обычный объект с заголовками
34
+ */ function headersToObject(headers) {
35
+ const result = {};
36
+ headers.forEach((value, key)=>{
37
+ result[key.toLowerCase()] = value;
38
+ });
39
+ return result;
40
+ }
41
+
42
+ export { apiLogger, createUniqueId, headersToObject };
43
+
44
+ //# sourceMappingURL=api-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api/utils/api-helpers.js","sources":["../../../src/api/utils/api-helpers.ts"],"sourcesContent":["/**\n * Логгер для API\n */\nexport const apiLogger = {\n debug: (message: string, ...args: any[]) => {\n if (process.env.NODE_ENV !== 'production') {\n console.debug(`[API] ${message}`, ...args)\n }\n },\n\n log: (message: string, ...args: any[]) => {\n if (process.env.NODE_ENV !== 'production') {\n console.log(`[API] ${message}`, ...args)\n }\n },\n\n info: (message: string, ...args: any[]) => {\n console.info(`[API] ${message}`, ...args)\n },\n\n warn: (message: string, ...args: any[]) => {\n console.warn(`[API] ${message}`, ...args)\n },\n\n error: (message: string, ...args: any[]) => {\n console.error(`[API] ${message}`, ...args)\n },\n}\n\n/**\n * Создает уникальный идентификатор\n * @returns Строка с уникальным идентификатором\n */\nexport function createUniqueId(name?: string): string {\n return `${name ? `${name}|` : ''}${Math.random().toString(36).substring(2, 9) + Date.now().toString(36)}`\n}\n\n/**\n * Преобразует объект Headers в обычный объект\n * @param headers Объект Headers\n * @returns Обычный объект с заголовками\n */\nexport function headersToObject(headers: Headers): Record<string, string> {\n const result: Record<string, string> = {}\n headers.forEach((value, key) => {\n result[key.toLowerCase()] = value\n })\n return result\n}\n"],"names":["apiLogger","message","args","process","console","createUniqueId","name","Math","Date","headersToObject","headers","result","value","key"],"mappings":"AAAA;;CAEC,GACM,MAAMA,SAASA,GAAG;IACvB,OAAO,CAACC,SAAiB,GAAGC;QAC1B,IAAIC,QAAQ,GAAG,CAAC,QAAQ,KAAK,cAAc;YACzCC,QAAQ,KAAK,CAAC,CAAC,MAAM,EAAEH,SAAS,KAAKC;QACvC;IACF;IAEA,KAAK,CAACD,SAAiB,GAAGC;QACxB,IAAIC,QAAQ,GAAG,CAAC,QAAQ,KAAK,cAAc;YACzCC,QAAQ,GAAG,CAAC,CAAC,MAAM,EAAEH,SAAS,KAAKC;QACrC;IACF;IAEA,MAAM,CAACD,SAAiB,GAAGC;QACzBE,QAAQ,IAAI,CAAC,CAAC,MAAM,EAAEH,SAAS,KAAKC;IACtC;IAEA,MAAM,CAACD,SAAiB,GAAGC;QACzBE,QAAQ,IAAI,CAAC,CAAC,MAAM,EAAEH,SAAS,KAAKC;IACtC;IAEA,OAAO,CAACD,SAAiB,GAAGC;QAC1BE,QAAQ,KAAK,CAAC,CAAC,MAAM,EAAEH,SAAS,KAAKC;IACvC;AACF,EAAC;AAED;;;CAGC,GACM,SAASG,cAAcA,CAACC,IAAa;IAC1C,OAAO,GAAGA,OAAO,GAAGA,KAAK,CAAC,CAAC,GAAG,KAAKC,KAAK,MAAM,GAAG,QAAQ,CAAC,IAAI,SAAS,CAAC,GAAG,KAAKC,KAAK,GAAG,GAAG,QAAQ,CAAC,KAAK;AAC3G;AAEA;;;;CAIC,GACM,SAASC,eAAeA,CAACC,OAAgB;IAC9C,MAAMC,SAAiC,CAAC;IACxCD,QAAQ,OAAO,CAAC,CAACE,OAAOC;QACtBF,MAAM,CAACE,IAAI,WAAW,GAAG,GAAGD;IAC9B;IACA,OAAOD;AACT"}
@@ -0,0 +1,10 @@
1
+ import { ApiContext } from '../types/api.interface';
2
+ /**
3
+ * Создает контекст для подготовки заголовков
4
+ *
5
+ * @param context - базовый контекст
6
+ * @param optionContext - дополнительный контекст из опций
7
+ * @returns - полный контекст для подготовки заголовков
8
+ */
9
+ export declare function createHeaderContext<RequestParams extends Record<string, any>>(context?: Partial<ApiContext>, optionContext?: Record<string, any>): ApiContext<RequestParams>;
10
+ //# sourceMappingURL=create-header-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-header-context.d.ts","sourceRoot":"","sources":["../../../src/api/utils/create-header-context.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAEnD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,aAAa,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC3E,OAAO,GAAE,OAAO,CAAC,UAAU,CAAmC,EAC9D,aAAa,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,GACtC,UAAU,CAAC,aAAa,CAAC,CA6B3B"}
@@ -0,0 +1,40 @@
1
+ import { logError } from "../../_utils/error-handling.util.js";
2
+
3
+
4
+
5
+ /**
6
+ * Создает контекст для подготовки заголовков
7
+ *
8
+ * @param context - базовый контекст
9
+ * @param optionContext - дополнительный контекст из опций
10
+ * @returns - полный контекст для подготовки заголовков
11
+ */ function createHeaderContext(context = {}, optionContext = {}) {
12
+ return {
13
+ ...context,
14
+ ...optionContext,
15
+ getFromStorage: context.getFromStorage || ((key)=>{
16
+ try {
17
+ if (typeof globalThis.localStorage === 'undefined') return undefined;
18
+ const item = localStorage.getItem(key);
19
+ return item ? JSON.parse(item) : undefined;
20
+ } catch (error) {
21
+ logError('createHeaderContext: error reading from localStorage', error, null, 'warn');
22
+ return undefined;
23
+ }
24
+ }),
25
+ getCookie: context.getCookie || ((name)=>{
26
+ try {
27
+ if (typeof globalThis.document === 'undefined') return undefined;
28
+ const matches = document.cookie.match(new RegExp(`(?:^|; )${name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1')}=([^;]*)`));
29
+ return matches ? decodeURIComponent(matches[1]) : undefined;
30
+ } catch (error) {
31
+ logError('createHeaderContext: error reading cookie', error, null, 'warn');
32
+ return undefined;
33
+ }
34
+ })
35
+ };
36
+ }
37
+
38
+ export { createHeaderContext };
39
+
40
+ //# sourceMappingURL=create-header-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api/utils/create-header-context.js","sources":["../../../src/api/utils/create-header-context.ts"],"sourcesContent":["import { logError } from '../../_utils/error-handling.util'\nimport { ApiContext } from '../types/api.interface'\n\n/**\n * Создает контекст для подготовки заголовков\n *\n * @param context - базовый контекст\n * @param optionContext - дополнительный контекст из опций\n * @returns - полный контекст для подготовки заголовков\n */\nexport function createHeaderContext<RequestParams extends Record<string, any>>(\n context: Partial<ApiContext> = {} as ApiContext<RequestParams>,\n optionContext: Record<string, any> = {},\n): ApiContext<RequestParams> {\n return {\n ...context,\n ...optionContext,\n getFromStorage:\n context.getFromStorage ||\n ((key: string) => {\n try {\n if (typeof globalThis.localStorage === 'undefined') return undefined\n const item = localStorage.getItem(key)\n return item ? JSON.parse(item) : undefined\n } catch (error) {\n logError('createHeaderContext: error reading from localStorage', error, null, 'warn')\n return undefined\n }\n }),\n getCookie:\n context.getCookie ||\n ((name: string) => {\n try {\n if (typeof globalThis.document === 'undefined') return undefined\n const matches = document.cookie.match(new RegExp(`(?:^|; )${name.replace(/([\\.$?*|{}\\(\\)\\[\\]\\\\\\/\\+^])/g, '\\\\$1')}=([^;]*)`))\n return matches ? decodeURIComponent(matches[1]) : undefined\n } catch (error) {\n logError('createHeaderContext: error reading cookie', error, null, 'warn')\n return undefined\n }\n }),\n }\n}\n"],"names":["logError","createHeaderContext","context","optionContext","key","globalThis","undefined","item","localStorage","JSON","error","name","matches","document","RegExp","decodeURIComponent"],"mappings":";;;AAA2D;AAG3D;;;;;;CAMC,GACM,SAASC,mBAAmBA,CACjCC,UAA+B,CAAC,CAA8B,EAC9DC,gBAAqC,CAAC,CAAC;IAEvC,OAAO;QACL,GAAGD,OAAO;QACV,GAAGC,aAAa;QAChB,gBACED,QAAQ,cAAc,IACrB,EAACE;YACA,IAAI;gBACF,IAAI,OAAOC,WAAW,YAAY,KAAK,aAAa,OAAOC;gBAC3D,MAAMC,OAAOC,aAAa,OAAO,CAACJ;gBAClC,OAAOG,OAAOE,KAAK,KAAK,CAACF,QAAQD;YACnC,EAAE,OAAOI,OAAO;gBACdV,QAAQA,CAAC,wDAAwDU,OAAO,MAAM;gBAC9E,OAAOJ;YACT;QACF;QACF,WACEJ,QAAQ,SAAS,IAChB,EAACS;YACA,IAAI;gBACF,IAAI,OAAON,WAAW,QAAQ,KAAK,aAAa,OAAOC;gBACvD,MAAMM,UAAUC,SAAS,MAAM,CAAC,KAAK,CAAC,IAAIC,OAAO,CAAC,QAAQ,EAAEH,KAAK,OAAO,CAAC,gCAAgC,QAAQ,QAAQ,CAAC;gBAC1H,OAAOC,UAAUG,mBAAmBH,OAAO,CAAC,EAAE,IAAIN;YACpD,EAAE,OAAOI,OAAO;gBACdV,QAAQA,CAAC,6CAA6CU,OAAO,MAAM;gBACnE,OAAOJ;YACT;QACF;IACJ;AACF"}
@@ -0,0 +1,23 @@
1
+ import { ApiContext } from '../types/api.interface';
2
+ /**
3
+ * Тип функции для подготовки заголовков запроса
4
+ */
5
+ export type PrepareHeadersFunction = (headers: Headers, context: ApiContext<any>) => Promise<Headers>;
6
+ /**
7
+ * Подготавливает заголовки для запроса на основе контекста и пользовательских функций
8
+ *
9
+ * @param prepareHeadersFn - функция подготовки заголовков
10
+ * @param context - контекст запроса
11
+ * @returns - подготовленные заголовки
12
+ */
13
+ export declare function prepareRequestHeaders<RequestParams extends Record<string, any>>(prepareHeadersFn?: PrepareHeadersFunction, context?: ApiContext<RequestParams>): Promise<Headers>;
14
+ /**
15
+ * Создает комбинированную функцию для подготовки заголовков, объединяющую
16
+ * глобальные заголовки и заголовки эндпоинта
17
+ *
18
+ * @param globalPrepareHeaders - функция подготовки заголовков на глобальном уровне
19
+ * @param endpointPrepareHeaders - функция подготовки заголовков на уровне эндпоинта
20
+ * @returns - функция для подготовки заголовков
21
+ */
22
+ export declare function createPrepareHeaders(globalPrepareHeaders?: PrepareHeadersFunction, endpointPrepareHeaders?: PrepareHeadersFunction): PrepareHeadersFunction;
23
+ //# sourceMappingURL=endpoint-headers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpoint-headers.d.ts","sourceRoot":"","sources":["../../../src/api/utils/endpoint-headers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AAGnD;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;AAErG;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CAAC,aAAa,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACnF,gBAAgB,CAAC,EAAE,sBAAsB,EACzC,OAAO,CAAC,EAAE,UAAU,CAAC,aAAa,CAAC,GAClC,OAAO,CAAC,OAAO,CAAC,CAiBlB;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,oBAAoB,CAAC,EAAE,sBAAsB,EAAE,sBAAsB,CAAC,EAAE,sBAAsB,GAAG,sBAAsB,CAwB3J"}