synapse-storage 3.0.19 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +661 -104
- package/dist/_utils/chunk.util.d.ts +8 -0
- package/dist/_utils/chunk.util.d.ts.map +1 -0
- package/dist/_utils/chunk.util.js +21 -0
- package/dist/_utils/chunk.util.js.map +1 -0
- package/dist/_utils/deepMerge.util.d.ts +2 -0
- package/dist/_utils/deepMerge.util.d.ts.map +1 -0
- package/dist/_utils/deepMerge.util.js +19 -0
- package/dist/_utils/deepMerge.util.js.map +1 -0
- package/dist/_utils/error-handling.util.d.ts +50 -0
- package/dist/_utils/error-handling.util.d.ts.map +1 -0
- package/dist/_utils/error-handling.util.js +67 -0
- package/dist/_utils/error-handling.util.js.map +1 -0
- package/dist/_utils/flatMap.util.d.ts +10 -0
- package/dist/_utils/flatMap.util.d.ts.map +1 -0
- package/dist/_utils/flatMap.util.js +23 -0
- package/dist/_utils/flatMap.util.js.map +1 -0
- package/dist/_utils/index.d.ts +6 -0
- package/dist/_utils/index.d.ts.map +1 -0
- package/dist/_utils/index.js +13 -0
- package/dist/_utils/index.js.map +1 -0
- package/dist/_utils/logger-console.util.d.ts +9 -0
- package/dist/_utils/logger-console.util.d.ts.map +1 -0
- package/dist/_utils/logger-console.util.js +14 -0
- package/dist/_utils/logger-console.util.js.map +1 -0
- package/dist/api/api.module.d.ts +46 -0
- package/dist/api/api.module.d.ts.map +1 -0
- package/dist/api/api.module.js +121 -0
- package/dist/api/api.module.js.map +1 -0
- package/dist/api/components/endpoint.d.ts +57 -0
- package/dist/api/components/endpoint.d.ts.map +1 -0
- package/dist/api/components/endpoint.js +385 -0
- package/dist/api/components/endpoint.js.map +1 -0
- package/dist/api/components/query-storage.d.ts +100 -0
- package/dist/api/components/query-storage.d.ts.map +1 -0
- package/dist/api/components/query-storage.js +293 -0
- package/dist/api/components/query-storage.js.map +1 -0
- package/dist/api/example.d.ts +83 -0
- package/dist/api/example.d.ts.map +1 -0
- package/dist/api/example.js +90 -0
- package/dist/api/example.js.map +1 -0
- package/dist/api/index.d.ts +4 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +11 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/types/api.interface.d.ts +126 -0
- package/dist/api/types/api.interface.d.ts.map +1 -0
- package/dist/api/types/api.interface.js +15 -0
- package/dist/api/types/api.interface.js.map +1 -0
- package/dist/api/types/endpoint.interface.d.ts +118 -0
- package/dist/api/types/endpoint.interface.d.ts.map +1 -0
- package/dist/api/types/endpoint.interface.js +6 -0
- package/dist/api/types/endpoint.interface.js.map +1 -0
- package/dist/api/types/query.interface.d.ts +85 -0
- package/dist/api/types/query.interface.d.ts.map +1 -0
- package/dist/api/types/query.interface.js +6 -0
- package/dist/api/types/query.interface.js.map +1 -0
- package/dist/api/utils/api-helpers.d.ts +22 -0
- package/dist/api/utils/api-helpers.d.ts.map +1 -0
- package/dist/api/utils/api-helpers.js +44 -0
- package/dist/api/utils/api-helpers.js.map +1 -0
- package/dist/api/utils/create-header-context.d.ts +10 -0
- package/dist/api/utils/create-header-context.d.ts.map +1 -0
- package/dist/api/utils/create-header-context.js +40 -0
- package/dist/api/utils/create-header-context.js.map +1 -0
- package/dist/api/utils/endpoint-headers.d.ts +23 -0
- package/dist/api/utils/endpoint-headers.d.ts.map +1 -0
- package/dist/api/utils/endpoint-headers.js +61 -0
- package/dist/api/utils/endpoint-headers.js.map +1 -0
- package/dist/api/utils/fetch-base-query.d.ts +9 -0
- package/dist/api/utils/fetch-base-query.d.ts.map +1 -0
- package/dist/api/utils/fetch-base-query.js +242 -0
- package/dist/api/utils/fetch-base-query.js.map +1 -0
- package/dist/api/utils/file-utils.d.ts +43 -0
- package/dist/api/utils/file-utils.d.ts.map +1 -0
- package/dist/api/utils/file-utils.js +102 -0
- package/dist/api/utils/file-utils.js.map +1 -0
- package/dist/api/utils/get-cacheable-headers.d.ts +8 -0
- package/dist/api/utils/get-cacheable-headers.d.ts.map +1 -0
- package/dist/api/utils/get-cacheable-headers.js +23 -0
- package/dist/api/utils/get-cacheable-headers.js.map +1 -0
- package/dist/core/index.d.ts +3 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +7 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/selector/index.d.ts +3 -0
- package/dist/core/selector/index.d.ts.map +1 -0
- package/dist/core/selector/index.js +5 -0
- package/dist/core/selector/index.js.map +1 -0
- package/dist/{selector.interface-CA5y-kD_.d.ts → core/selector/selector.interface.d.ts} +41 -8
- package/dist/core/selector/selector.interface.d.ts.map +1 -0
- package/dist/core/selector/selector.interface.js +7 -0
- package/dist/core/selector/selector.interface.js.map +1 -0
- package/dist/core/selector/selector.module.d.ts +36 -0
- package/dist/core/selector/selector.module.d.ts.map +1 -0
- package/dist/core/selector/selector.module.js +412 -0
- package/dist/core/selector/selector.module.js.map +1 -0
- package/dist/core/storage/adapters/async-base-storage.service.d.ts +49 -0
- package/dist/core/storage/adapters/async-base-storage.service.d.ts.map +1 -0
- package/dist/core/storage/adapters/async-base-storage.service.js +505 -0
- package/dist/core/storage/adapters/async-base-storage.service.js.map +1 -0
- package/dist/core/storage/adapters/indexed-DB.service.d.ts +89 -0
- package/dist/core/storage/adapters/indexed-DB.service.d.ts.map +1 -0
- package/dist/core/storage/adapters/indexed-DB.service.js +596 -0
- package/dist/core/storage/adapters/indexed-DB.service.js.map +1 -0
- package/dist/core/storage/adapters/local-storage.service.d.ts +23 -0
- package/dist/core/storage/adapters/local-storage.service.d.ts.map +1 -0
- package/dist/core/storage/adapters/local-storage.service.js +111 -0
- package/dist/core/storage/adapters/local-storage.service.js.map +1 -0
- package/dist/core/storage/adapters/memory-storage.service.d.ts +24 -0
- package/dist/core/storage/adapters/memory-storage.service.d.ts.map +1 -0
- package/dist/core/storage/adapters/memory-storage.service.js +110 -0
- package/dist/core/storage/adapters/memory-storage.service.js.map +1 -0
- package/dist/core/storage/adapters/path.utils.d.ts +5 -0
- package/dist/core/storage/adapters/path.utils.d.ts.map +1 -0
- package/dist/core/storage/adapters/path.utils.js +42 -0
- package/dist/core/storage/adapters/path.utils.js.map +1 -0
- package/dist/core/storage/adapters/storage-core.d.ts +61 -0
- package/dist/core/storage/adapters/storage-core.d.ts.map +1 -0
- package/dist/core/storage/adapters/storage-core.js +221 -0
- package/dist/core/storage/adapters/storage-core.js.map +1 -0
- package/dist/core/storage/adapters/sync-base-storage.service.d.ts +56 -0
- package/dist/core/storage/adapters/sync-base-storage.service.d.ts.map +1 -0
- package/dist/core/storage/adapters/sync-base-storage.service.js +481 -0
- package/dist/core/storage/adapters/sync-base-storage.service.js.map +1 -0
- package/dist/core/storage/index.d.ts +16 -0
- package/dist/core/storage/index.d.ts.map +1 -0
- package/dist/core/storage/index.js +38 -0
- package/dist/core/storage/index.js.map +1 -0
- package/dist/core/storage/middlewares/broadcast.middleware.d.ts +9 -0
- package/dist/core/storage/middlewares/broadcast.middleware.d.ts.map +1 -0
- package/dist/core/storage/middlewares/broadcast.middleware.js +197 -0
- package/dist/core/storage/middlewares/broadcast.middleware.js.map +1 -0
- package/dist/core/storage/middlewares/index.d.ts +9 -0
- package/dist/core/storage/middlewares/index.d.ts.map +1 -0
- package/dist/core/storage/middlewares/index.js +17 -0
- package/dist/core/storage/middlewares/index.js.map +1 -0
- package/dist/core/storage/middlewares/storage-batching.middleware.d.ts +7 -0
- package/dist/core/storage/middlewares/storage-batching.middleware.d.ts.map +1 -0
- package/dist/core/storage/middlewares/storage-batching.middleware.js +108 -0
- package/dist/core/storage/middlewares/storage-batching.middleware.js.map +1 -0
- package/dist/core/storage/middlewares/storage-shallow-compare.middleware.d.ts +7 -0
- package/dist/core/storage/middlewares/storage-shallow-compare.middleware.d.ts.map +1 -0
- package/dist/core/storage/middlewares/storage-shallow-compare.middleware.js +43 -0
- package/dist/core/storage/middlewares/storage-shallow-compare.middleware.js.map +1 -0
- package/dist/core/storage/middlewares/sync-broadcast.middleware.d.ts +9 -0
- package/dist/core/storage/middlewares/sync-broadcast.middleware.d.ts.map +1 -0
- package/dist/core/storage/middlewares/sync-broadcast.middleware.js +177 -0
- package/dist/core/storage/middlewares/sync-broadcast.middleware.js.map +1 -0
- package/dist/core/storage/middlewares/sync-storage-batching.middleware.d.ts +6 -0
- package/dist/core/storage/middlewares/sync-storage-batching.middleware.d.ts.map +1 -0
- package/dist/core/storage/middlewares/sync-storage-batching.middleware.js +56 -0
- package/dist/core/storage/middlewares/sync-storage-batching.middleware.js.map +1 -0
- package/dist/core/storage/middlewares/sync-storage-shallow-compare.middleware.d.ts +7 -0
- package/dist/core/storage/middlewares/sync-storage-shallow-compare.middleware.d.ts.map +1 -0
- package/dist/core/storage/middlewares/sync-storage-shallow-compare.middleware.js +39 -0
- package/dist/core/storage/middlewares/sync-storage-shallow-compare.middleware.js.map +1 -0
- package/dist/core/storage/modules/plugin/plugin.interface.d.ts +101 -0
- package/dist/core/storage/modules/plugin/plugin.interface.d.ts.map +1 -0
- package/dist/core/storage/modules/plugin/plugin.interface.js +8 -0
- package/dist/core/storage/modules/plugin/plugin.interface.js.map +1 -0
- package/dist/core/storage/modules/plugin/plugin.service.d.ts +49 -0
- package/dist/core/storage/modules/plugin/plugin.service.d.ts.map +1 -0
- package/dist/core/storage/modules/plugin/plugin.service.js +406 -0
- package/dist/core/storage/modules/plugin/plugin.service.js.map +1 -0
- package/dist/core/storage/modules/singleton/mixin.util.d.ts +6 -0
- package/dist/core/storage/modules/singleton/mixin.util.d.ts.map +1 -0
- package/dist/core/storage/modules/singleton/mixin.util.js +30 -0
- package/dist/core/storage/modules/singleton/mixin.util.js.map +1 -0
- package/dist/core/storage/modules/singleton/models.d.ts +143 -0
- package/dist/core/storage/modules/singleton/models.d.ts.map +1 -0
- package/dist/core/storage/modules/singleton/models.js +60 -0
- package/dist/core/storage/modules/singleton/models.js.map +1 -0
- package/dist/core/storage/modules/singleton/singleton.util.d.ts +36 -0
- package/dist/core/storage/modules/singleton/singleton.util.d.ts.map +1 -0
- package/dist/core/storage/modules/singleton/singleton.util.js +216 -0
- package/dist/core/storage/modules/singleton/singleton.util.js.map +1 -0
- package/dist/core/storage/storage.interface.d.ts +168 -0
- package/dist/core/storage/storage.interface.d.ts.map +1 -0
- package/dist/core/storage/storage.interface.js +23 -0
- package/dist/core/storage/storage.interface.js.map +1 -0
- package/dist/core/storage/utils/broadcast.util.d.ts +49 -0
- package/dist/core/storage/utils/broadcast.util.d.ts.map +1 -0
- package/dist/core/storage/utils/broadcast.util.js +141 -0
- package/dist/core/storage/utils/broadcast.util.js.map +1 -0
- package/dist/core/storage/utils/cache.util.d.ts +33 -0
- package/dist/core/storage/utils/cache.util.d.ts.map +1 -0
- package/dist/core/storage/utils/cache.util.js +54 -0
- package/dist/core/storage/utils/cache.util.js.map +1 -0
- package/dist/core/storage/utils/middleware-module.d.ts +94 -0
- package/dist/core/storage/utils/middleware-module.d.ts.map +1 -0
- package/dist/core/storage/utils/middleware-module.js +258 -0
- package/dist/core/storage/utils/middleware-module.js.map +1 -0
- package/dist/core/storage/utils/path-selector.util.d.ts +15 -0
- package/dist/core/storage/utils/path-selector.util.d.ts.map +1 -0
- package/dist/core/storage/utils/path-selector.util.js +58 -0
- package/dist/core/storage/utils/path-selector.util.js.map +1 -0
- package/dist/core/storage/utils/state-diff.util.d.ts +14 -0
- package/dist/core/storage/utils/state-diff.util.d.ts.map +1 -0
- package/dist/core/storage/utils/state-diff.util.js +88 -0
- package/dist/core/storage/utils/state-diff.util.js.map +1 -0
- package/dist/core/storage/utils/storage-factory.util.d.ts +21 -0
- package/dist/core/storage/utils/storage-factory.util.d.ts.map +1 -0
- package/dist/core/storage/utils/storage-factory.util.js +40 -0
- package/dist/core/storage/utils/storage-factory.util.js.map +1 -0
- package/dist/core/storage/utils/storage-key.d.ts +11 -0
- package/dist/core/storage/utils/storage-key.d.ts.map +1 -0
- package/dist/core/storage/utils/storage-key.js +24 -0
- package/dist/core/storage/utils/storage-key.js.map +1 -0
- package/dist/core/storage/utils/storage.utils.d.ts +17 -0
- package/dist/core/storage/utils/storage.utils.d.ts.map +1 -0
- package/dist/core/storage/utils/storage.utils.js +57 -0
- package/dist/core/storage/utils/storage.utils.js.map +1 -0
- package/dist/index.d.ts +10 -12
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +17 -1
- package/dist/index.js.map +1 -0
- package/dist/react/hooks/index.d.ts +5 -0
- package/dist/react/hooks/index.d.ts.map +1 -0
- package/dist/react/hooks/index.js +11 -0
- package/dist/react/hooks/index.js.map +1 -0
- package/dist/react/hooks/useCreateStorage.d.ts +39 -0
- package/dist/react/hooks/useCreateStorage.d.ts.map +1 -0
- package/dist/react/hooks/useCreateStorage.js +137 -0
- package/dist/react/hooks/useCreateStorage.js.map +1 -0
- package/dist/react/hooks/useSelector.d.ts +21 -0
- package/dist/react/hooks/useSelector.d.ts.map +1 -0
- package/dist/react/hooks/useSelector.js +56 -0
- package/dist/react/hooks/useSelector.js.map +1 -0
- package/dist/react/hooks/useStorage.d.ts +39 -0
- package/dist/react/hooks/useStorage.d.ts.map +1 -0
- package/dist/react/hooks/useStorage.js +78 -0
- package/dist/react/hooks/useStorage.js.map +1 -0
- package/dist/react/hooks/useStorageSubscribe.d.ts +16 -0
- package/dist/react/hooks/useStorageSubscribe.d.ts.map +1 -0
- package/dist/react/hooks/useStorageSubscribe.js +55 -0
- package/dist/react/hooks/useStorageSubscribe.js.map +1 -0
- package/dist/react/index.d.ts +3 -0
- package/dist/react/index.d.ts.map +1 -0
- package/dist/react/index.js +7 -0
- package/dist/react/index.js.map +1 -0
- package/dist/react/utils/awaitSynapse.d.ts +34 -0
- package/dist/react/utils/awaitSynapse.d.ts.map +1 -0
- package/dist/react/utils/awaitSynapse.js +87 -0
- package/dist/react/utils/awaitSynapse.js.map +1 -0
- package/dist/react/utils/createSynapseCtx.d.ts +33 -0
- package/dist/react/utils/createSynapseCtx.d.ts.map +1 -0
- package/dist/react/utils/createSynapseCtx.js +139 -0
- package/dist/react/utils/createSynapseCtx.js.map +1 -0
- package/dist/react/utils/index.d.ts +3 -0
- package/dist/react/utils/index.d.ts.map +1 -0
- package/dist/react/utils/index.js +9 -0
- package/dist/react/utils/index.js.map +1 -0
- package/dist/reactive/dispatcher/dispatcher.module.d.ts +216 -0
- package/dist/reactive/dispatcher/dispatcher.module.d.ts.map +1 -0
- package/dist/reactive/dispatcher/dispatcher.module.js +384 -0
- package/dist/reactive/dispatcher/dispatcher.module.js.map +1 -0
- package/dist/reactive/dispatcher/index.d.ts +4 -0
- package/dist/reactive/dispatcher/index.d.ts.map +1 -0
- package/dist/reactive/dispatcher/index.js +9 -0
- package/dist/reactive/dispatcher/index.js.map +1 -0
- package/dist/reactive/dispatcher/middlewares/index.d.ts +2 -0
- package/dist/reactive/dispatcher/middlewares/index.d.ts.map +1 -0
- package/dist/reactive/dispatcher/middlewares/index.js +5 -0
- package/dist/reactive/dispatcher/middlewares/index.js.map +1 -0
- package/dist/reactive/dispatcher/middlewares/logger.middleware.d.ts +37 -0
- package/dist/reactive/dispatcher/middlewares/logger.middleware.d.ts.map +1 -0
- package/dist/reactive/dispatcher/middlewares/logger.middleware.js +188 -0
- package/dist/reactive/dispatcher/middlewares/logger.middleware.js.map +1 -0
- package/dist/reactive/dispatcher/standalone.d.ts +112 -0
- package/dist/reactive/dispatcher/standalone.d.ts.map +1 -0
- package/dist/reactive/dispatcher/standalone.js +142 -0
- package/dist/reactive/dispatcher/standalone.js.map +1 -0
- package/dist/reactive/effects/effects.module.d.ts +225 -0
- package/dist/reactive/effects/effects.module.d.ts.map +1 -0
- package/dist/reactive/effects/effects.module.js +356 -0
- package/dist/reactive/effects/effects.module.js.map +1 -0
- package/dist/reactive/effects/index.d.ts +4 -0
- package/dist/reactive/effects/index.d.ts.map +1 -0
- package/dist/reactive/effects/index.js +11 -0
- package/dist/reactive/effects/index.js.map +1 -0
- package/dist/reactive/effects/utils/chunkRequestConsistent.d.ts +12 -0
- package/dist/reactive/effects/utils/chunkRequestConsistent.d.ts.map +1 -0
- package/dist/reactive/effects/utils/chunkRequestConsistent.js +25 -0
- package/dist/reactive/effects/utils/chunkRequestConsistent.js.map +1 -0
- package/dist/reactive/effects/utils/chunkRequestParallel.d.ts +12 -0
- package/dist/reactive/effects/utils/chunkRequestParallel.d.ts.map +1 -0
- package/dist/reactive/effects/utils/chunkRequestParallel.js +22 -0
- package/dist/reactive/effects/utils/chunkRequestParallel.js.map +1 -0
- package/dist/reactive/effects/utils/fromRequest.d.ts +40 -0
- package/dist/reactive/effects/utils/fromRequest.d.ts.map +1 -0
- package/dist/reactive/effects/utils/fromRequest.js +64 -0
- package/dist/reactive/effects/utils/fromRequest.js.map +1 -0
- package/dist/reactive/effects/utils/index.d.ts +5 -0
- package/dist/reactive/effects/utils/index.d.ts.map +1 -0
- package/dist/reactive/effects/utils/index.js +11 -0
- package/dist/reactive/effects/utils/index.js.map +1 -0
- package/dist/reactive/effects/utils/toObservable.d.ts +23 -0
- package/dist/reactive/effects/utils/toObservable.d.ts.map +1 -0
- package/dist/reactive/effects/utils/toObservable.js +39 -0
- package/dist/reactive/effects/utils/toObservable.js.map +1 -0
- package/dist/reactive/index.d.ts +3 -0
- package/dist/reactive/index.d.ts.map +1 -0
- package/dist/reactive/index.js +7 -0
- package/dist/reactive/index.js.map +1 -0
- package/dist/utils/createEventBus.d.ts +87 -0
- package/dist/utils/createEventBus.d.ts.map +1 -0
- package/dist/utils/createEventBus.js +215 -0
- package/dist/utils/createEventBus.js.map +1 -0
- package/dist/utils/createSynapse/createSynapse.d.ts +9 -0
- package/dist/utils/createSynapse/createSynapse.d.ts.map +1 -0
- package/dist/utils/createSynapse/createSynapse.js +103 -0
- package/dist/utils/createSynapse/createSynapse.js.map +1 -0
- package/dist/utils/createSynapse/index.d.ts +3 -0
- package/dist/utils/createSynapse/index.d.ts.map +1 -0
- package/dist/utils/createSynapse/index.js +6 -0
- package/dist/utils/createSynapse/index.js.map +1 -0
- package/dist/utils/createSynapse/types.d.ts +93 -0
- package/dist/utils/createSynapse/types.d.ts.map +1 -0
- package/dist/utils/createSynapse/types.js +6 -0
- package/dist/utils/createSynapse/types.js.map +1 -0
- package/dist/utils/createSynapse/validate.d.ts +2 -0
- package/dist/utils/createSynapse/validate.d.ts.map +1 -0
- package/dist/utils/createSynapse/validate.js +76 -0
- package/dist/utils/createSynapse/validate.js.map +1 -0
- package/dist/utils/createSynapse/waitForDependencies.d.ts +3 -0
- package/dist/utils/createSynapse/waitForDependencies.d.ts.map +1 -0
- package/dist/utils/createSynapse/waitForDependencies.js +40 -0
- package/dist/utils/createSynapse/waitForDependencies.js.map +1 -0
- package/dist/utils/createSynapseAwaiter.d.ts +46 -0
- package/dist/utils/createSynapseAwaiter.d.ts.map +1 -0
- package/dist/utils/createSynapseAwaiter.js +102 -0
- package/dist/utils/createSynapseAwaiter.js.map +1 -0
- package/dist/utils/index.d.ts +4 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +12 -0
- package/dist/utils/index.js.map +1 -0
- package/package.json +17 -21
- package/dist/api.d.ts +0 -365
- package/dist/api.js +0 -1
- package/dist/core.d.ts +0 -106
- package/dist/core.js +0 -1
- package/dist/createSynapse-vkfKjRob.d.ts +0 -97
- package/dist/dispatcher.module-BOsMHbD5.d.ts +0 -360
- package/dist/react.d.ts +0 -119
- package/dist/react.js +0 -1
- package/dist/reactive.d.ts +0 -35
- package/dist/reactive.js +0 -1
- package/dist/storage.interface-BA_ktyDz.d.ts +0 -591
- package/dist/utils.d.ts +0 -139
- package/dist/utils.js +0 -1
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Разбивает массив на группы элементов указанного размера.
|
|
3
|
+
* @param array - Массив для разбиения
|
|
4
|
+
* @param size - Размер каждой группы
|
|
5
|
+
* @returns Массив групп элементов
|
|
6
|
+
*/
|
|
7
|
+
export declare function chunk<T>(array: T[], size?: number): T[][];
|
|
8
|
+
//# sourceMappingURL=chunk.util.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chunk.util.d.ts","sourceRoot":"","sources":["../../src/_utils/chunk.util.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,IAAI,GAAE,MAAU,GAAG,CAAC,EAAE,EAAE,CAe5D"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Разбивает массив на группы элементов указанного размера.
|
|
3
|
+
* @param array - Массив для разбиения
|
|
4
|
+
* @param size - Размер каждой группы
|
|
5
|
+
* @returns Массив групп элементов
|
|
6
|
+
*/ function chunk(array, size = 1) {
|
|
7
|
+
if (size <= 0) throw new Error('Size must be greater than 0');
|
|
8
|
+
if (!array || !array.length) return [];
|
|
9
|
+
const result = [];
|
|
10
|
+
const length = array.length;
|
|
11
|
+
let index = 0;
|
|
12
|
+
while(index < length){
|
|
13
|
+
result.push(array.slice(index, index + size));
|
|
14
|
+
index += size;
|
|
15
|
+
}
|
|
16
|
+
return result;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export { chunk };
|
|
20
|
+
|
|
21
|
+
//# sourceMappingURL=chunk.util.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_utils/chunk.util.js","sources":["../../src/_utils/chunk.util.ts"],"sourcesContent":["/**\n * Разбивает массив на группы элементов указанного размера.\n * @param array - Массив для разбиения\n * @param size - Размер каждой группы\n * @returns Массив групп элементов\n */\nexport function chunk<T>(array: T[], size: number = 1): T[][] {\n if (size <= 0) throw new Error('Size must be greater than 0')\n\n if (!array || !array.length) return []\n\n const result: T[][] = []\n const length = array.length\n let index = 0\n\n while (index < length) {\n result.push(array.slice(index, index + size))\n index += size\n }\n\n return result\n}\n"],"names":["chunk","array","size","Error","result","length","index"],"mappings":"AAAA;;;;;CAKC,GACM,SAASA,KAAKA,CAAIC,KAAU,EAAEC,OAAe,CAAC;IACnD,IAAIA,QAAQ,GAAG,MAAM,IAAIC,MAAM;IAE/B,IAAI,CAACF,SAAS,CAACA,MAAM,MAAM,EAAE,OAAO,EAAE;IAEtC,MAAMG,SAAgB,EAAE;IACxB,MAAMC,SAASJ,MAAM,MAAM;IAC3B,IAAIK,QAAQ;IAEZ,MAAOA,QAAQD,OAAQ;QACrBD,OAAO,IAAI,CAACH,MAAM,KAAK,CAACK,OAAOA,QAAQJ;QACvCI,SAASJ;IACX;IAEA,OAAOE;AACT"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deepMerge.util.d.ts","sourceRoot":"","sources":["../../src/_utils/deepMerge.util.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,SAAS,GAAI,QAAQ,GAAG,EAAE,QAAQ,GAAG,QAcjD,CAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
const deepMerge = (target, source)=>{
|
|
2
|
+
for(const key in source){
|
|
3
|
+
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
4
|
+
if (typeof source[key] === 'object' && source[key] !== null && !Array.isArray(source[key])) {
|
|
5
|
+
if (!target[key] || typeof target[key] !== 'object') {
|
|
6
|
+
target[key] = {};
|
|
7
|
+
}
|
|
8
|
+
deepMerge(target[key], source[key]);
|
|
9
|
+
} else {
|
|
10
|
+
target[key] = source[key];
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
return target;
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
export { deepMerge };
|
|
18
|
+
|
|
19
|
+
//# sourceMappingURL=deepMerge.util.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_utils/deepMerge.util.js","sources":["../../src/_utils/deepMerge.util.ts"],"sourcesContent":["export const deepMerge = (target: any, source: any) => {\n for (const key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n if (typeof source[key] === 'object' && source[key] !== null && !Array.isArray(source[key])) {\n if (!target[key] || typeof target[key] !== 'object') {\n target[key] = {}\n }\n deepMerge(target[key], source[key])\n } else {\n target[key] = source[key]\n }\n }\n }\n return target\n}\n"],"names":["deepMerge","target","source","key","Object","Array"],"mappings":"AAAO,MAAMA,SAASA,GAAG,CAACC,QAAaC;IACrC,IAAK,MAAMC,OAAOD,OAAQ;QACxB,IAAIE,OAAO,SAAS,CAAC,cAAc,CAAC,IAAI,CAACF,QAAQC,MAAM;YACrD,IAAI,OAAOD,MAAM,CAACC,IAAI,KAAK,YAAYD,MAAM,CAACC,IAAI,KAAK,QAAQ,CAACE,MAAM,OAAO,CAACH,MAAM,CAACC,IAAI,GAAG;gBAC1F,IAAI,CAACF,MAAM,CAACE,IAAI,IAAI,OAAOF,MAAM,CAACE,IAAI,KAAK,UAAU;oBACnDF,MAAM,CAACE,IAAI,GAAG,CAAC;gBACjB;gBACAH,SAASA,CAACC,MAAM,CAACE,IAAI,EAAED,MAAM,CAACC,IAAI;YACpC,OAAO;gBACLF,MAAM,CAACE,IAAI,GAAGD,MAAM,CAACC,IAAI;YAC3B;QACF;IACF;IACA,OAAOF;AACT,EAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { ILogger } from '../core/storage/storage.interface';
|
|
2
|
+
/**
|
|
3
|
+
* Базовый класс ошибок Synapse.
|
|
4
|
+
* Позволяет отличать ошибки библиотеки от прочих через `instanceof`.
|
|
5
|
+
*/
|
|
6
|
+
export declare class SynapseError extends Error {
|
|
7
|
+
readonly context?: string | undefined;
|
|
8
|
+
readonly cause?: unknown | undefined;
|
|
9
|
+
constructor(message: string, context?: string | undefined, cause?: unknown | undefined);
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Категории обработки ошибок в Synapse:
|
|
13
|
+
*
|
|
14
|
+
* - CRITICAL: Ошибки конфигурации/инициализации → log + throw (fail fast)
|
|
15
|
+
* - OPERATION: Ошибки CRUD-операций → log + rethrow (вызывающий код решает)
|
|
16
|
+
* - CALLBACK: Ошибки в пользовательских callback'ах → log + swallow (не крашим приложение)
|
|
17
|
+
* - CLEANUP: Ошибки при destroy/unsubscribe → log + swallow (best-effort)
|
|
18
|
+
*/
|
|
19
|
+
type LogMethod = 'error' | 'warn';
|
|
20
|
+
/**
|
|
21
|
+
* Логирует ошибку через ILogger (если есть) или через console-fallback.
|
|
22
|
+
*/
|
|
23
|
+
export declare function logError(message: string, error: unknown, logger?: ILogger | null, level?: LogMethod): void;
|
|
24
|
+
/**
|
|
25
|
+
* OPERATION pattern: логирует и пробрасывает ошибку.
|
|
26
|
+
* Для CRUD-операций (get, set, update, delete) и инициализации.
|
|
27
|
+
*/
|
|
28
|
+
export declare function handleOperationError(context: string, error: unknown, logger?: ILogger | null): never;
|
|
29
|
+
/**
|
|
30
|
+
* CALLBACK pattern: логирует и проглатывает ошибку.
|
|
31
|
+
* Для пользовательских callback'ов, подписчиков, эффектов.
|
|
32
|
+
* Ошибка в одном callback'е не должна ломать остальные.
|
|
33
|
+
*/
|
|
34
|
+
export declare function handleCallbackError(context: string, error: unknown, logger?: ILogger | null): void;
|
|
35
|
+
/**
|
|
36
|
+
* CLEANUP pattern: логирует предупреждение и продолжает.
|
|
37
|
+
* Для destroy(), unsubscribe() и прочих cleanup-операций.
|
|
38
|
+
*/
|
|
39
|
+
export declare function handleCleanupError(context: string, error: unknown, logger?: ILogger | null): void;
|
|
40
|
+
/**
|
|
41
|
+
* Обёртка для безопасного вызова callback'а (CALLBACK pattern).
|
|
42
|
+
* Возвращает результат или undefined при ошибке.
|
|
43
|
+
*/
|
|
44
|
+
export declare function safeCallback<T>(fn: () => T, context: string, logger?: ILogger | null): T | undefined;
|
|
45
|
+
/**
|
|
46
|
+
* Обёртка для promise в fire-and-forget сценариях (CLEANUP pattern).
|
|
47
|
+
*/
|
|
48
|
+
export declare function safePromise(promise: Promise<unknown>, context: string, logger?: ILogger | null): void;
|
|
49
|
+
export {};
|
|
50
|
+
//# sourceMappingURL=error-handling.util.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-handling.util.d.ts","sourceRoot":"","sources":["../../src/_utils/error-handling.util.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAA;AAGhE;;;GAGG;AACH,qBAAa,YAAa,SAAQ,KAAK;aAGnB,OAAO,CAAC,EAAE,MAAM;aAChB,KAAK,CAAC,EAAE,OAAO;gBAF/B,OAAO,EAAE,MAAM,EACC,OAAO,CAAC,EAAE,MAAM,YAAA,EAChB,KAAK,CAAC,EAAE,OAAO,YAAA;CAKlC;AAED;;;;;;;GAOG;AAEH,KAAK,SAAS,GAAG,OAAO,GAAG,MAAM,CAAA;AAEjC;;GAEG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI,EAAE,KAAK,GAAE,SAAmB,GAAG,IAAI,CAOnH;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI,GAAG,KAAK,CAGpG;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI,GAAG,IAAI,CAElG;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI,GAAG,IAAI,CAEjG;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI,GAAG,CAAC,GAAG,SAAS,CAOpG;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI,GAAG,IAAI,CAErG"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { loggerConsole } from "./logger-console.util.js";
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Базовый класс ошибок Synapse.
|
|
7
|
+
* Позволяет отличать ошибки библиотеки от прочих через `instanceof`.
|
|
8
|
+
*/ class SynapseError extends Error {
|
|
9
|
+
context;
|
|
10
|
+
cause;
|
|
11
|
+
constructor(message, context, cause){
|
|
12
|
+
super(context ? `[${context}] ${message}` : message), this.context = context, this.cause = cause;
|
|
13
|
+
this.name = 'SynapseError';
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Логирует ошибку через ILogger (если есть) или через console-fallback.
|
|
18
|
+
*/ function logError(message, error, logger, level = 'error') {
|
|
19
|
+
const meta = {
|
|
20
|
+
error: error instanceof Error ? error.message : String(error)
|
|
21
|
+
};
|
|
22
|
+
if (logger) {
|
|
23
|
+
logger[level](message, meta);
|
|
24
|
+
} else {
|
|
25
|
+
loggerConsole[level](`[Synapse] ${message}`, error);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* OPERATION pattern: логирует и пробрасывает ошибку.
|
|
30
|
+
* Для CRUD-операций (get, set, update, delete) и инициализации.
|
|
31
|
+
*/ function handleOperationError(context, error, logger) {
|
|
32
|
+
logError(context, error, logger);
|
|
33
|
+
throw error;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* CALLBACK pattern: логирует и проглатывает ошибку.
|
|
37
|
+
* Для пользовательских callback'ов, подписчиков, эффектов.
|
|
38
|
+
* Ошибка в одном callback'е не должна ломать остальные.
|
|
39
|
+
*/ function handleCallbackError(context, error, logger) {
|
|
40
|
+
logError(context, error, logger);
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* CLEANUP pattern: логирует предупреждение и продолжает.
|
|
44
|
+
* Для destroy(), unsubscribe() и прочих cleanup-операций.
|
|
45
|
+
*/ function handleCleanupError(context, error, logger) {
|
|
46
|
+
logError(context, error, logger, 'warn');
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Обёртка для безопасного вызова callback'а (CALLBACK pattern).
|
|
50
|
+
* Возвращает результат или undefined при ошибке.
|
|
51
|
+
*/ function safeCallback(fn, context, logger) {
|
|
52
|
+
try {
|
|
53
|
+
return fn();
|
|
54
|
+
} catch (error) {
|
|
55
|
+
handleCallbackError(context, error, logger);
|
|
56
|
+
return undefined;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Обёртка для promise в fire-and-forget сценариях (CLEANUP pattern).
|
|
61
|
+
*/ function safePromise(promise, context, logger) {
|
|
62
|
+
promise.catch((error)=>handleCleanupError(context, error, logger));
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
export { SynapseError, handleCallbackError, handleCleanupError, handleOperationError, logError, safeCallback, safePromise };
|
|
66
|
+
|
|
67
|
+
//# sourceMappingURL=error-handling.util.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_utils/error-handling.util.js","sources":["../../src/_utils/error-handling.util.ts"],"sourcesContent":["import type { ILogger } from '../core/storage/storage.interface'\nimport { loggerConsole } from './logger-console.util'\n\n/**\n * Базовый класс ошибок Synapse.\n * Позволяет отличать ошибки библиотеки от прочих через `instanceof`.\n */\nexport class SynapseError extends Error {\n constructor(\n message: string,\n public readonly context?: string,\n public readonly cause?: unknown,\n ) {\n super(context ? `[${context}] ${message}` : message)\n this.name = 'SynapseError'\n }\n}\n\n/**\n * Категории обработки ошибок в Synapse:\n *\n * - CRITICAL: Ошибки конфигурации/инициализации → log + throw (fail fast)\n * - OPERATION: Ошибки CRUD-операций → log + rethrow (вызывающий код решает)\n * - CALLBACK: Ошибки в пользовательских callback'ах → log + swallow (не крашим приложение)\n * - CLEANUP: Ошибки при destroy/unsubscribe → log + swallow (best-effort)\n */\n\ntype LogMethod = 'error' | 'warn'\n\n/**\n * Логирует ошибку через ILogger (если есть) или через console-fallback.\n */\nexport function logError(message: string, error: unknown, logger?: ILogger | null, level: LogMethod = 'error'): void {\n const meta = { error: error instanceof Error ? error.message : String(error) }\n if (logger) {\n logger[level](message, meta)\n } else {\n loggerConsole[level](`[Synapse] ${message}`, error)\n }\n}\n\n/**\n * OPERATION pattern: логирует и пробрасывает ошибку.\n * Для CRUD-операций (get, set, update, delete) и инициализации.\n */\nexport function handleOperationError(context: string, error: unknown, logger?: ILogger | null): never {\n logError(context, error, logger)\n throw error\n}\n\n/**\n * CALLBACK pattern: логирует и проглатывает ошибку.\n * Для пользовательских callback'ов, подписчиков, эффектов.\n * Ошибка в одном callback'е не должна ломать остальные.\n */\nexport function handleCallbackError(context: string, error: unknown, logger?: ILogger | null): void {\n logError(context, error, logger)\n}\n\n/**\n * CLEANUP pattern: логирует предупреждение и продолжает.\n * Для destroy(), unsubscribe() и прочих cleanup-операций.\n */\nexport function handleCleanupError(context: string, error: unknown, logger?: ILogger | null): void {\n logError(context, error, logger, 'warn')\n}\n\n/**\n * Обёртка для безопасного вызова callback'а (CALLBACK pattern).\n * Возвращает результат или undefined при ошибке.\n */\nexport function safeCallback<T>(fn: () => T, context: string, logger?: ILogger | null): T | undefined {\n try {\n return fn()\n } catch (error) {\n handleCallbackError(context, error, logger)\n return undefined\n }\n}\n\n/**\n * Обёртка для promise в fire-and-forget сценариях (CLEANUP pattern).\n */\nexport function safePromise(promise: Promise<unknown>, context: string, logger?: ILogger | null): void {\n promise.catch((error) => handleCleanupError(context, error, logger))\n}\n"],"names":["loggerConsole","SynapseError","Error","message","context","cause","logError","error","logger","level","meta","String","handleOperationError","handleCallbackError","handleCleanupError","safeCallback","fn","undefined","safePromise","promise"],"mappings":";;;AACqD;AAErD;;;CAGC,GACM,MAAMC,YAAYA,SAASC;;;IAChC,YACEC,OAAe,EACCC,OAAgB,EAChBC,KAAe,CAC/B;QACA,KAAK,CAACD,UAAU,CAAC,CAAC,EAAEA,QAAQ,EAAE,EAAED,SAAS,GAAGA,eAH5BC,UAAAA,cACAC,QAAAA;QAGhB,IAAI,CAAC,IAAI,GAAG;IACd;AACF;AAaA;;CAEC,GACM,SAASC,QAAQA,CAACH,OAAe,EAAEI,KAAc,EAAEC,MAAuB,EAAEC,QAAmB,OAAO;IAC3G,MAAMC,OAAO;QAAE,OAAOH,iBAAiBL,QAAQK,MAAM,OAAO,GAAGI,OAAOJ;IAAO;IAC7E,IAAIC,QAAQ;QACVA,MAAM,CAACC,MAAM,CAACN,SAASO;IACzB,OAAO;QACLV,aAAa,CAACS,MAAM,CAAC,CAAC,UAAU,EAAEN,SAAS,EAAEI;IAC/C;AACF;AAEA;;;CAGC,GACM,SAASK,oBAAoBA,CAACR,OAAe,EAAEG,KAAc,EAAEC,MAAuB;IAC3FF,QAAQA,CAACF,SAASG,OAAOC;IACzB,MAAMD;AACR;AAEA;;;;CAIC,GACM,SAASM,mBAAmBA,CAACT,OAAe,EAAEG,KAAc,EAAEC,MAAuB;IAC1FF,QAAQA,CAACF,SAASG,OAAOC;AAC3B;AAEA;;;CAGC,GACM,SAASM,kBAAkBA,CAACV,OAAe,EAAEG,KAAc,EAAEC,MAAuB;IACzFF,QAAQA,CAACF,SAASG,OAAOC,QAAQ;AACnC;AAEA;;;CAGC,GACM,SAASO,YAAYA,CAAIC,EAAW,EAAEZ,OAAe,EAAEI,MAAuB;IACnF,IAAI;QACF,OAAOQ;IACT,EAAE,OAAOT,OAAO;QACdM,mBAAmBA,CAACT,SAASG,OAAOC;QACpC,OAAOS;IACT;AACF;AAEA;;CAEC,GACM,SAASC,WAAWA,CAACC,OAAyB,EAAEf,OAAe,EAAEI,MAAuB;IAC7FW,QAAQ,KAAK,CAAC,CAACZ,QAAUO,kBAAkBA,CAACV,SAASG,OAAOC;AAC9D"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Создает новый массив, применяя функцию к каждому элементу массива,
|
|
3
|
+
* а затем сглаживает результат на один уровень.
|
|
4
|
+
*
|
|
5
|
+
* @param array - Исходный массив
|
|
6
|
+
* @param iteratee - Функция, применяемая к каждому элементу
|
|
7
|
+
* @returns Новый сглаженный массив
|
|
8
|
+
*/
|
|
9
|
+
export declare function flatMap<T, R>(array: T[], iteratee: (value: T, index: number, array: T[]) => R | R[]): R[];
|
|
10
|
+
//# sourceMappingURL=flatMap.util.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"flatMap.util.d.ts","sourceRoot":"","sources":["../../src/_utils/flatMap.util.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAczG"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Создает новый массив, применяя функцию к каждому элементу массива,
|
|
3
|
+
* а затем сглаживает результат на один уровень.
|
|
4
|
+
*
|
|
5
|
+
* @param array - Исходный массив
|
|
6
|
+
* @param iteratee - Функция, применяемая к каждому элементу
|
|
7
|
+
* @returns Новый сглаженный массив
|
|
8
|
+
*/ function flatMap(array, iteratee) {
|
|
9
|
+
if (!array || !array.length) return [];
|
|
10
|
+
return array.reduce((acc, value, index)=>{
|
|
11
|
+
const mapped = iteratee(value, index, array);
|
|
12
|
+
if (Array.isArray(mapped)) {
|
|
13
|
+
acc.push(...mapped);
|
|
14
|
+
} else {
|
|
15
|
+
acc.push(mapped);
|
|
16
|
+
}
|
|
17
|
+
return acc;
|
|
18
|
+
}, []);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export { flatMap };
|
|
22
|
+
|
|
23
|
+
//# sourceMappingURL=flatMap.util.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_utils/flatMap.util.js","sources":["../../src/_utils/flatMap.util.ts"],"sourcesContent":["/**\n * Создает новый массив, применяя функцию к каждому элементу массива,\n * а затем сглаживает результат на один уровень.\n *\n * @param array - Исходный массив\n * @param iteratee - Функция, применяемая к каждому элементу\n * @returns Новый сглаженный массив\n */\nexport function flatMap<T, R>(array: T[], iteratee: (value: T, index: number, array: T[]) => R | R[]): R[] {\n if (!array || !array.length) return []\n\n return array.reduce((acc: R[], value: T, index: number) => {\n const mapped = iteratee(value, index, array)\n\n if (Array.isArray(mapped)) {\n acc.push(...mapped)\n } else {\n acc.push(mapped)\n }\n\n return acc\n }, [])\n}\n"],"names":["flatMap","array","iteratee","acc","value","index","mapped","Array"],"mappings":"AAAA;;;;;;;CAOC,GACM,SAASA,OAAOA,CAAOC,KAAU,EAAEC,QAA0D;IAClG,IAAI,CAACD,SAAS,CAACA,MAAM,MAAM,EAAE,OAAO,EAAE;IAEtC,OAAOA,MAAM,MAAM,CAAC,CAACE,KAAUC,OAAUC;QACvC,MAAMC,SAASJ,SAASE,OAAOC,OAAOJ;QAEtC,IAAIM,MAAM,OAAO,CAACD,SAAS;YACzBH,IAAI,IAAI,IAAIG;QACd,OAAO;YACLH,IAAI,IAAI,CAACG;QACX;QAEA,OAAOH;IACT,GAAG,EAAE;AACP"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/_utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,kBAAkB,CAAA;AAChC,cAAc,uBAAuB,CAAA;AACrC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,uBAAuB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_utils/index.js","sources":["../../src/_utils/index.ts"],"sourcesContent":["export * from './chunk.util'\nexport * from './deepMerge.util'\nexport * from './error-handling.util'\nexport * from './flatMap.util'\nexport * from './logger-console.util'\n"],"names":[],"mappings":";;;;;AAA4B;AACI;AACK;AACP;AACO"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare const loggerConsole: {
|
|
2
|
+
log: (...args: any[]) => void;
|
|
3
|
+
warn: (...args: any[]) => void;
|
|
4
|
+
error: (...args: any[]) => void;
|
|
5
|
+
group: (...args: any[]) => void;
|
|
6
|
+
groupEnd: () => void;
|
|
7
|
+
groupCollapsed: (...args: any[]) => void;
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=logger-console.util.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger-console.util.d.ts","sourceRoot":"","sources":["../../src/_utils/logger-console.util.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,aAAa;mBACT,GAAG,EAAE;oBACJ,GAAG,EAAE;qBACJ,GAAG,EAAE;qBACL,GAAG,EAAE;;8BAEI,GAAG,EAAE;CAChC,CAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
const globalConsole = globalThis.console;
|
|
2
|
+
// Экспортируем обертку, которая использует console через globalThis
|
|
3
|
+
const loggerConsole = {
|
|
4
|
+
log: (...args)=>globalConsole.log(...args),
|
|
5
|
+
warn: (...args)=>globalConsole.warn(...args),
|
|
6
|
+
error: (...args)=>globalConsole.error(...args),
|
|
7
|
+
group: (...args)=>globalConsole.group(...args),
|
|
8
|
+
groupEnd: ()=>globalConsole.groupEnd(),
|
|
9
|
+
groupCollapsed: (...args)=>globalConsole.groupCollapsed(...args)
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
export { loggerConsole };
|
|
13
|
+
|
|
14
|
+
//# sourceMappingURL=logger-console.util.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"_utils/logger-console.util.js","sources":["../../src/_utils/logger-console.util.ts"],"sourcesContent":["const globalConsole = globalThis.console\n\n// Экспортируем обертку, которая использует console через globalThis\nexport const loggerConsole = {\n log: (...args: any[]) => globalConsole.log(...args),\n warn: (...args: any[]) => globalConsole.warn(...args),\n error: (...args: any[]) => globalConsole.error(...args),\n group: (...args: any[]) => globalConsole.group(...args),\n groupEnd: () => globalConsole.groupEnd(),\n groupCollapsed: (...args: any[]) => globalConsole.groupCollapsed(...args),\n}\n"],"names":["globalConsole","globalThis","loggerConsole","args"],"mappings":"AAAA,MAAMA,aAAaA,GAAGC,WAAW,OAAO;AAExC,oEAAoE;AAC7D,MAAMC,aAAaA,GAAG;IAC3B,KAAK,CAAC,GAAGC,OAAgBH,aAAaA,CAAC,GAAG,IAAIG;IAC9C,MAAM,CAAC,GAAGA,OAAgBH,aAAaA,CAAC,IAAI,IAAIG;IAChD,OAAO,CAAC,GAAGA,OAAgBH,aAAaA,CAAC,KAAK,IAAIG;IAClD,OAAO,CAAC,GAAGA,OAAgBH,aAAaA,CAAC,KAAK,IAAIG;IAClD,UAAU,IAAMH,aAAaA,CAAC,QAAQ;IACtC,gBAAgB,CAAC,GAAGG,OAAgBH,aAAaA,CAAC,cAAc,IAAIG;AACtE,EAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { CreateApiClientOptions, ExtractParamsType, ExtractResultType } from './types/api.interface';
|
|
2
|
+
import { CreateEndpoint, Endpoint as EndpointType, EndpointConfig } from './types/endpoint.interface';
|
|
3
|
+
import { QueryOptions, QueryResult } from './types/query.interface';
|
|
4
|
+
type EndpointsResult<F> = F extends (create: any) => Promise<infer R> ? R : never;
|
|
5
|
+
type EndpointsMap<EndpointsFn> = {
|
|
6
|
+
[K in keyof EndpointsResult<EndpointsFn>]: EndpointType<ExtractParamsType<EndpointsResult<EndpointsFn>[K]>, ExtractResultType<EndpointsResult<EndpointsFn>[K]>>;
|
|
7
|
+
};
|
|
8
|
+
export declare class ApiClient<EndpointsFn extends (create: CreateEndpoint) => Promise<Record<string, EndpointConfig<any, any>>>> {
|
|
9
|
+
/** Хранилище запросов */
|
|
10
|
+
private queryStorage;
|
|
11
|
+
/** Флаг завершённой инициализации */
|
|
12
|
+
private _initialized;
|
|
13
|
+
/** Промис текущей инициализации (для дедупликации параллельных вызовов) */
|
|
14
|
+
private _initPromise;
|
|
15
|
+
private readonly cacheableHeaderKeys;
|
|
16
|
+
private readonly globalCacheConfig;
|
|
17
|
+
private readonly baseQueryConfig;
|
|
18
|
+
private readonly storageExternal;
|
|
19
|
+
private readonly globalRetryConfig;
|
|
20
|
+
private readonly createEndpoints;
|
|
21
|
+
/** Реестр эндпоинтов */
|
|
22
|
+
private endpoints;
|
|
23
|
+
constructor(options: Omit<CreateApiClientOptions, 'endpoints'> & {
|
|
24
|
+
endpoints: EndpointsFn;
|
|
25
|
+
});
|
|
26
|
+
init(): Promise<this>;
|
|
27
|
+
private _doInit;
|
|
28
|
+
private initializeEndpoints;
|
|
29
|
+
private ensureInitialized;
|
|
30
|
+
/**
|
|
31
|
+
* Получает все эндпоинты с улучшенной типизацией
|
|
32
|
+
* @returns Типизированный объект эндпоинтов
|
|
33
|
+
*/
|
|
34
|
+
getEndpoints(): EndpointsMap<EndpointsFn>;
|
|
35
|
+
/**
|
|
36
|
+
* Выполняет запрос к API с типизацией и обработкой ошибок
|
|
37
|
+
* @param endpointName Имя эндпоинта (с подсказками TypeScript)
|
|
38
|
+
* @param params Параметры запроса (с типизацией)
|
|
39
|
+
* @param options Опции запроса
|
|
40
|
+
* @returns Promise с типизированным результатом запроса
|
|
41
|
+
*/
|
|
42
|
+
request<K extends keyof EndpointsResult<EndpointsFn> & string>(endpointName: K, params: ExtractParamsType<EndpointsResult<EndpointsFn>[K]>, options?: QueryOptions): Promise<QueryResult<ExtractResultType<EndpointsResult<EndpointsFn>[K]>, Error>>;
|
|
43
|
+
destroy(): Promise<void>;
|
|
44
|
+
}
|
|
45
|
+
export {};
|
|
46
|
+
//# sourceMappingURL=api.module.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.module.d.ts","sourceRoot":"","sources":["../../src/api/api.module.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACpG,OAAO,EAAE,cAAc,EAAE,QAAQ,IAAI,YAAY,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AACrG,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAInE,KAAK,eAAe,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;AAGjF,KAAK,YAAY,CAAC,WAAW,IAAI;KAC9B,CAAC,IAAI,MAAM,eAAe,CAAC,WAAW,CAAC,GAAG,YAAY,CAAC,iBAAiB,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,iBAAiB,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAChK,CAAA;AAED,qBAAa,SAAS,CAAC,WAAW,SAAS,CAAC,MAAM,EAAE,cAAc,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IACtH,yBAAyB;IACzB,OAAO,CAAC,YAAY,CAAe;IAEnC,qCAAqC;IACrC,OAAO,CAAC,YAAY,CAAQ;IAE5B,2EAA2E;IAC3E,OAAO,CAAC,YAAY,CAA6B;IAEjD,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAA+C;IAEnF,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAiC;IAEnE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAqC;IAErE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAmC;IAEnE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAiC;IAEnE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAa;IAE7C,wBAAwB;IACxB,OAAO,CAAC,SAAS,CAEX;gBAEM,OAAO,EAAE,IAAI,CAAC,sBAAsB,EAAE,WAAW,CAAC,GAAG;QAAE,SAAS,EAAE,WAAW,CAAA;KAAE;IAU9E,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAQpB,OAAO;YAgBP,mBAAmB;IAqBjC,OAAO,CAAC,iBAAiB;IAMzB;;;OAGG;IACI,YAAY,IAAI,YAAY,CAAC,WAAW,CAAC;IAKhD;;;;;;OAMG;IACU,OAAO,CAAC,CAAC,SAAS,MAAM,eAAe,CAAC,WAAW,CAAC,GAAG,MAAM,EACxE,YAAY,EAAE,CAAC,EACf,MAAM,EAAE,iBAAiB,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAC1D,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,WAAW,CAAC,iBAAiB,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAmBrE,OAAO;CAerB"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { EndpointClass } from "./components/endpoint.js";
|
|
2
|
+
import { QueryStorage } from "./components/query-storage.js";
|
|
3
|
+
import { apiLogger } from "./utils/api-helpers.js";
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class ApiClient {
|
|
12
|
+
/** Хранилище запросов */ queryStorage;
|
|
13
|
+
/** Флаг завершённой инициализации */ _initialized = false;
|
|
14
|
+
/** Промис текущей инициализации (для дедупликации параллельных вызовов) */ _initPromise = null;
|
|
15
|
+
cacheableHeaderKeys;
|
|
16
|
+
globalCacheConfig;
|
|
17
|
+
baseQueryConfig;
|
|
18
|
+
storageExternal;
|
|
19
|
+
globalRetryConfig;
|
|
20
|
+
createEndpoints;
|
|
21
|
+
/** Реестр эндпоинтов */ endpoints = {};
|
|
22
|
+
constructor(options){
|
|
23
|
+
// Сохраняем переданные параметры
|
|
24
|
+
this.cacheableHeaderKeys = options.cacheableHeaderKeys;
|
|
25
|
+
this.globalCacheConfig = options.cache;
|
|
26
|
+
this.baseQueryConfig = options.baseQuery;
|
|
27
|
+
this.storageExternal = options.storage;
|
|
28
|
+
this.globalRetryConfig = options.retry;
|
|
29
|
+
this.createEndpoints = options.endpoints;
|
|
30
|
+
}
|
|
31
|
+
async init() {
|
|
32
|
+
if (this._initialized) return this;
|
|
33
|
+
if (this._initPromise) return this._initPromise;
|
|
34
|
+
this._initPromise = this._doInit();
|
|
35
|
+
return this._initPromise;
|
|
36
|
+
}
|
|
37
|
+
async _doInit() {
|
|
38
|
+
try {
|
|
39
|
+
// 1. Создаем кэшированное хранилище запросов (storage инициализируется внутри QueryStorage)
|
|
40
|
+
this.queryStorage = await new QueryStorage(this.storageExternal, this.globalCacheConfig).initialize();
|
|
41
|
+
// 2. Создаем эндпоинты
|
|
42
|
+
await this.initializeEndpoints();
|
|
43
|
+
this._initialized = true;
|
|
44
|
+
return this;
|
|
45
|
+
} catch (error) {
|
|
46
|
+
this._initPromise = null;
|
|
47
|
+
throw error;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
async initializeEndpoints() {
|
|
51
|
+
// Получаем конфигурацию будущих эндпоинтов
|
|
52
|
+
const create = (config)=>config;
|
|
53
|
+
// Создаем объект с конфигурациями для эндпоинтов
|
|
54
|
+
const endpointsConfig = await this.createEndpoints(create);
|
|
55
|
+
// Создаем эндпоинты
|
|
56
|
+
for (const [endpointKey, endpointConfig] of Object.entries(endpointsConfig)){
|
|
57
|
+
const key = endpointKey;
|
|
58
|
+
this.endpoints[key] = new EndpointClass({
|
|
59
|
+
name: endpointKey,
|
|
60
|
+
queryStorage: this.queryStorage,
|
|
61
|
+
config: endpointConfig,
|
|
62
|
+
cacheableHeaderKeys: this.cacheableHeaderKeys,
|
|
63
|
+
globalCacheConfig: this.globalCacheConfig,
|
|
64
|
+
globalRetryConfig: this.globalRetryConfig,
|
|
65
|
+
baseQueryConfig: this.baseQueryConfig
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
ensureInitialized() {
|
|
70
|
+
if (!this._initialized) {
|
|
71
|
+
throw new Error('ApiClient не инициализирован. Вызовите await api.init() перед использованием.');
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Получает все эндпоинты с улучшенной типизацией
|
|
76
|
+
* @returns Типизированный объект эндпоинтов
|
|
77
|
+
*/ getEndpoints() {
|
|
78
|
+
this.ensureInitialized();
|
|
79
|
+
return this.endpoints;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Выполняет запрос к API с типизацией и обработкой ошибок
|
|
83
|
+
* @param endpointName Имя эндпоинта (с подсказками TypeScript)
|
|
84
|
+
* @param params Параметры запроса (с типизацией)
|
|
85
|
+
* @param options Опции запроса
|
|
86
|
+
* @returns Promise с типизированным результатом запроса
|
|
87
|
+
*/ async request(endpointName, params, options) {
|
|
88
|
+
this.ensureInitialized();
|
|
89
|
+
const endpoints = this.getEndpoints();
|
|
90
|
+
const endpoint = endpoints[endpointName];
|
|
91
|
+
if (!endpoint) {
|
|
92
|
+
throw new Error(`Эндпоинт ${String(endpointName)} не найден`);
|
|
93
|
+
}
|
|
94
|
+
try {
|
|
95
|
+
const stateRequest = endpoint.request(params, options);
|
|
96
|
+
return await stateRequest.wait();
|
|
97
|
+
} catch (error) {
|
|
98
|
+
apiLogger.error(`Ошибка запроса к ${String(endpointName)}`, {
|
|
99
|
+
error,
|
|
100
|
+
params
|
|
101
|
+
});
|
|
102
|
+
throw error;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
async destroy() {
|
|
106
|
+
if (!this._initialized) return;
|
|
107
|
+
// 1. Уничтожаем каждый эндпоинт
|
|
108
|
+
Object.values(this.endpoints).forEach((endpoint)=>endpoint.destroy());
|
|
109
|
+
// 2. Очищаем коллекцию эндпоинтов
|
|
110
|
+
this.endpoints = {};
|
|
111
|
+
// 3. Уничтожаем хранилище
|
|
112
|
+
await this.queryStorage.destroy();
|
|
113
|
+
// 4. Сбрасываем состояние инициализации (позволяет повторный init)
|
|
114
|
+
this._initialized = false;
|
|
115
|
+
this._initPromise = null;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
export { ApiClient };
|
|
120
|
+
|
|
121
|
+
//# sourceMappingURL=api.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api/api.module.js","sources":["../../src/api/api.module.ts"],"sourcesContent":["import { EndpointClass } from './components/endpoint'\nimport { QueryStorage } from './components/query-storage'\nimport { CreateApiClientOptions, ExtractParamsType, ExtractResultType } from './types/api.interface'\nimport { CreateEndpoint, Endpoint as EndpointType, EndpointConfig } from './types/endpoint.interface'\nimport { QueryOptions, QueryResult } from './types/query.interface'\nimport { apiLogger } from './utils/api-helpers'\n\n// Тип для извлечения типов из функции endpoints\ntype EndpointsResult<F> = F extends (create: any) => Promise<infer R> ? R : never\n\n// Тип для готовой карты эндпоинтов (без optional)\ntype EndpointsMap<EndpointsFn> = {\n [K in keyof EndpointsResult<EndpointsFn>]: EndpointType<ExtractParamsType<EndpointsResult<EndpointsFn>[K]>, ExtractResultType<EndpointsResult<EndpointsFn>[K]>>\n}\n\nexport class ApiClient<EndpointsFn extends (create: CreateEndpoint) => Promise<Record<string, EndpointConfig<any, any>>>> {\n /** Хранилище запросов */\n private queryStorage!: QueryStorage\n\n /** Флаг завершённой инициализации */\n private _initialized = false\n\n /** Промис текущей инициализации (для дедупликации параллельных вызовов) */\n private _initPromise: Promise<this> | null = null\n\n private readonly cacheableHeaderKeys: CreateApiClientOptions['cacheableHeaderKeys']\n\n private readonly globalCacheConfig: CreateApiClientOptions['cache']\n\n private readonly baseQueryConfig: CreateApiClientOptions['baseQuery']\n\n private readonly storageExternal: CreateApiClientOptions['storage']\n\n private readonly globalRetryConfig: CreateApiClientOptions['retry']\n\n private readonly createEndpoints: EndpointsFn\n\n /** Реестр эндпоинтов */\n private endpoints: {\n [K in keyof EndpointsResult<EndpointsFn>]?: EndpointType<ExtractParamsType<EndpointsResult<EndpointsFn>[K]>, ExtractResultType<EndpointsResult<EndpointsFn>[K]>>\n } = {}\n\n constructor(options: Omit<CreateApiClientOptions, 'endpoints'> & { endpoints: EndpointsFn }) {\n // Сохраняем переданные параметры\n this.cacheableHeaderKeys = options.cacheableHeaderKeys\n this.globalCacheConfig = options.cache\n this.baseQueryConfig = options.baseQuery\n this.storageExternal = options.storage\n this.globalRetryConfig = options.retry\n this.createEndpoints = options.endpoints\n }\n\n public async init(): Promise<this> {\n if (this._initialized) return this\n if (this._initPromise) return this._initPromise\n\n this._initPromise = this._doInit()\n return this._initPromise\n }\n\n private async _doInit(): Promise<this> {\n try {\n // 1. Создаем кэшированное хранилище запросов (storage инициализируется внутри QueryStorage)\n this.queryStorage = await new QueryStorage(this.storageExternal, this.globalCacheConfig).initialize()\n\n // 2. Создаем эндпоинты\n await this.initializeEndpoints()\n\n this._initialized = true\n return this\n } catch (error) {\n this._initPromise = null\n throw error\n }\n }\n\n private async initializeEndpoints() {\n // Получаем конфигурацию будущих эндпоинтов\n const create: CreateEndpoint = <TParams extends Record<string, any>, TResult>(config: EndpointConfig<TParams, TResult>) => config\n // Создаем объект с конфигурациями для эндпоинтов\n const endpointsConfig = await this.createEndpoints(create)\n\n // Создаем эндпоинты\n for (const [endpointKey, endpointConfig] of Object.entries(endpointsConfig)) {\n const key = endpointKey as keyof EndpointsResult<EndpointsFn>\n this.endpoints[key] = new EndpointClass({\n name: endpointKey,\n queryStorage: this.queryStorage,\n config: endpointConfig,\n cacheableHeaderKeys: this.cacheableHeaderKeys,\n globalCacheConfig: this.globalCacheConfig,\n globalRetryConfig: this.globalRetryConfig,\n baseQueryConfig: this.baseQueryConfig,\n })\n }\n }\n\n private ensureInitialized(): void {\n if (!this._initialized) {\n throw new Error('ApiClient не инициализирован. Вызовите await api.init() перед использованием.')\n }\n }\n\n /**\n * Получает все эндпоинты с улучшенной типизацией\n * @returns Типизированный объект эндпоинтов\n */\n public getEndpoints(): EndpointsMap<EndpointsFn> {\n this.ensureInitialized()\n return this.endpoints as EndpointsMap<EndpointsFn>\n }\n\n /**\n * Выполняет запрос к API с типизацией и обработкой ошибок\n * @param endpointName Имя эндпоинта (с подсказками TypeScript)\n * @param params Параметры запроса (с типизацией)\n * @param options Опции запроса\n * @returns Promise с типизированным результатом запроса\n */\n public async request<K extends keyof EndpointsResult<EndpointsFn> & string>(\n endpointName: K,\n params: ExtractParamsType<EndpointsResult<EndpointsFn>[K]>,\n options?: QueryOptions,\n ): Promise<QueryResult<ExtractResultType<EndpointsResult<EndpointsFn>[K]>, Error>> {\n this.ensureInitialized()\n\n const endpoints = this.getEndpoints()\n const endpoint = endpoints[endpointName]\n\n if (!endpoint) {\n throw new Error(`Эндпоинт ${String(endpointName)} не найден`)\n }\n\n try {\n const stateRequest = endpoint.request(params, options)\n return await stateRequest.wait()\n } catch (error) {\n apiLogger.error(`Ошибка запроса к ${String(endpointName)}`, { error, params })\n throw error\n }\n }\n\n public async destroy() {\n if (!this._initialized) return\n\n // 1. Уничтожаем каждый эндпоинт\n Object.values(this.endpoints).forEach((endpoint) => endpoint.destroy())\n\n // 2. Очищаем коллекцию эндпоинтов\n this.endpoints = {}\n // 3. Уничтожаем хранилище\n await this.queryStorage.destroy()\n\n // 4. Сбрасываем состояние инициализации (позволяет повторный init)\n this._initialized = false\n this._initPromise = null\n }\n}\n"],"names":["EndpointClass","QueryStorage","apiLogger","ApiClient","options","error","create","config","endpointsConfig","endpointKey","endpointConfig","Object","key","Error","endpointName","params","endpoints","endpoint","String","stateRequest"],"mappings":";;;;;;;AAAqD;AACI;AAIV;AAUxC,MAAMG,SAASA;IACpB,uBAAuB,GACf,aAA2B;IAEnC,mCAAmC,GAC3B,eAAe,MAAK;IAE5B,yEAAyE,GACjE,eAAqC,KAAI;IAEhC,oBAAkE;IAElE,kBAAkD;IAElD,gBAAoD;IAEpD,gBAAkD;IAElD,kBAAkD;IAElD,gBAA4B;IAE7C,sBAAsB,GACd,YAEJ,CAAC,EAAC;IAEN,YAAYC,OAA+E,CAAE;QAC3F,iCAAiC;QACjC,IAAI,CAAC,mBAAmB,GAAGA,QAAQ,mBAAmB;QACtD,IAAI,CAAC,iBAAiB,GAAGA,QAAQ,KAAK;QACtC,IAAI,CAAC,eAAe,GAAGA,QAAQ,SAAS;QACxC,IAAI,CAAC,eAAe,GAAGA,QAAQ,OAAO;QACtC,IAAI,CAAC,iBAAiB,GAAGA,QAAQ,KAAK;QACtC,IAAI,CAAC,eAAe,GAAGA,QAAQ,SAAS;IAC1C;IAEA,MAAa,OAAsB;QACjC,IAAI,IAAI,CAAC,YAAY,EAAE,OAAO,IAAI;QAClC,IAAI,IAAI,CAAC,YAAY,EAAE,OAAO,IAAI,CAAC,YAAY;QAE/C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO;QAChC,OAAO,IAAI,CAAC,YAAY;IAC1B;IAEA,MAAc,UAAyB;QACrC,IAAI;YACF,4FAA4F;YAC5F,IAAI,CAAC,YAAY,GAAG,MAAM,IAAIH,YAAYA,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,iBAAiB,EAAE,UAAU;YAEnG,uBAAuB;YACvB,MAAM,IAAI,CAAC,mBAAmB;YAE9B,IAAI,CAAC,YAAY,GAAG;YACpB,OAAO,IAAI;QACb,EAAE,OAAOI,OAAO;YACd,IAAI,CAAC,YAAY,GAAG;YACpB,MAAMA;QACR;IACF;IAEA,MAAc,sBAAsB;QAClC,2CAA2C;QAC3C,MAAMC,SAAyB,CAA+CC,SAA6CA;QAC3H,iDAAiD;QACjD,MAAMC,kBAAkB,MAAM,IAAI,CAAC,eAAe,CAACF;QAEnD,oBAAoB;QACpB,KAAK,MAAM,CAACG,aAAaC,eAAe,IAAIC,OAAO,OAAO,CAACH,iBAAkB;YAC3E,MAAMI,MAAMH;YACZ,IAAI,CAAC,SAAS,CAACG,IAAI,GAAG,IAAIZ,aAAaA,CAAC;gBACtC,MAAMS;gBACN,cAAc,IAAI,CAAC,YAAY;gBAC/B,QAAQC;gBACR,qBAAqB,IAAI,CAAC,mBAAmB;gBAC7C,mBAAmB,IAAI,CAAC,iBAAiB;gBACzC,mBAAmB,IAAI,CAAC,iBAAiB;gBACzC,iBAAiB,IAAI,CAAC,eAAe;YACvC;QACF;IACF;IAEQ,oBAA0B;QAChC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACtB,MAAM,IAAIG,MAAM;QAClB;IACF;IAEA;;;GAGC,GACM,eAA0C;QAC/C,IAAI,CAAC,iBAAiB;QACtB,OAAO,IAAI,CAAC,SAAS;IACvB;IAEA;;;;;;GAMC,GACD,MAAa,QACXC,YAAe,EACfC,MAA0D,EAC1DX,OAAsB,EAC2D;QACjF,IAAI,CAAC,iBAAiB;QAEtB,MAAMY,YAAY,IAAI,CAAC,YAAY;QACnC,MAAMC,WAAWD,SAAS,CAACF,aAAa;QAExC,IAAI,CAACG,UAAU;YACb,MAAM,IAAIJ,MAAM,CAAC,SAAS,EAAEK,OAAOJ,cAAc,UAAU,CAAC;QAC9D;QAEA,IAAI;YACF,MAAMK,eAAeF,SAAS,OAAO,CAACF,QAAQX;YAC9C,OAAO,MAAMe,aAAa,IAAI;QAChC,EAAE,OAAOd,OAAO;YACdH,eAAe,CAAC,CAAC,iBAAiB,EAAEgB,OAAOJ,eAAe,EAAE;gBAAET;gBAAOU;YAAO;YAC5E,MAAMV;QACR;IACF;IAEA,MAAa,UAAU;QACrB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;QAExB,gCAAgC;QAChCM,OAAO,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAACM,WAAaA,SAAS,OAAO;QAEpE,kCAAkC;QAClC,IAAI,CAAC,SAAS,GAAG,CAAC;QAClB,0BAA0B;QAC1B,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO;QAE/B,mEAAmE;QACnE,IAAI,CAAC,YAAY,GAAG;QACpB,IAAI,CAAC,YAAY,GAAG;IACtB;AACF"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { CreateApiClientOptions } from '../types/api.interface';
|
|
2
|
+
import { Endpoint as EndpointType, EndpointConfig, EndpointState, RequestResponseModify } from '../types/endpoint.interface';
|
|
3
|
+
import { QueryOptions, Unsubscribe } from '../types/query.interface';
|
|
4
|
+
import { QueryStorage } from './query-storage';
|
|
5
|
+
export interface EndpointClassOptions<RequestParams extends Record<string, any>, RequestResponse> {
|
|
6
|
+
name: string;
|
|
7
|
+
queryStorage: QueryStorage;
|
|
8
|
+
config: EndpointConfig<RequestParams, RequestResponse>;
|
|
9
|
+
cacheableHeaderKeys: CreateApiClientOptions['cacheableHeaderKeys'];
|
|
10
|
+
globalCacheConfig: CreateApiClientOptions['cache'];
|
|
11
|
+
globalRetryConfig: CreateApiClientOptions['retry'];
|
|
12
|
+
baseQueryConfig: CreateApiClientOptions['baseQuery'];
|
|
13
|
+
}
|
|
14
|
+
export declare class EndpointClass<RequestParams extends Record<string, any>, RequestResponse> implements EndpointType<RequestParams, RequestResponse> {
|
|
15
|
+
private readonly endpointSubscribers;
|
|
16
|
+
/** Сколько раз был вызван метод request */
|
|
17
|
+
fetchCounts: number;
|
|
18
|
+
meta: EndpointType['meta'];
|
|
19
|
+
private readonly name;
|
|
20
|
+
private readonly queryStorage;
|
|
21
|
+
private readonly configCurrentEndpoint;
|
|
22
|
+
private readonly cacheableHeaderKeys;
|
|
23
|
+
private readonly globalRetryConfig;
|
|
24
|
+
private readonly baseQueryConfig;
|
|
25
|
+
private readonly queryFunction;
|
|
26
|
+
/** Массив заголовков, которые нужно включить в ключ кэширования */
|
|
27
|
+
private readonly cacheableHeaders;
|
|
28
|
+
private readonly prepareHeaders;
|
|
29
|
+
/** Карта in-flight запросов для дедупликации (cacheKey → Promise) */
|
|
30
|
+
private readonly inflightRequests;
|
|
31
|
+
constructor(options: EndpointClassOptions<RequestParams, RequestResponse>);
|
|
32
|
+
request(params: RequestParams, options?: QueryOptions): RequestResponseModify<RequestResponse>;
|
|
33
|
+
/**
|
|
34
|
+
* Определяет итоговую конфигурацию retry: вызов → эндпоинт → глобальная
|
|
35
|
+
*/
|
|
36
|
+
private resolveRetryConfig;
|
|
37
|
+
/**
|
|
38
|
+
* Выполняет сетевой запрос с кэшированием, дедупликацией и retry
|
|
39
|
+
*/
|
|
40
|
+
private executeRequest;
|
|
41
|
+
/**
|
|
42
|
+
* Выполняет HTTP-запрос с retry, инвалидацией тегов и кэшированием результата
|
|
43
|
+
*/
|
|
44
|
+
private executeFetch;
|
|
45
|
+
/**
|
|
46
|
+
* Выполняет HTTP-запрос с повторными попытками
|
|
47
|
+
*/
|
|
48
|
+
private fetchWithRetry;
|
|
49
|
+
/**
|
|
50
|
+
* Уведомляет подписчиков эндпоинта об изменении состояния
|
|
51
|
+
*/
|
|
52
|
+
private notifyEndpointSubscribers;
|
|
53
|
+
subscribe(cb: (state: EndpointState) => void): Unsubscribe;
|
|
54
|
+
reset(): Promise<void>;
|
|
55
|
+
destroy(): void;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=endpoint.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"endpoint.d.ts","sourceRoot":"","sources":["../../../src/api/components/endpoint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAe,MAAM,wBAAwB,CAAA;AAC5E,OAAO,EAAE,QAAQ,IAAI,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,qBAAqB,EAAgB,MAAM,6BAA6B,CAAA;AAC1I,OAAO,EAAE,YAAY,EAAe,WAAW,EAAE,MAAM,0BAA0B,CAAA;AAMjF,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAK9C,MAAM,WAAW,oBAAoB,CAAC,aAAa,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,eAAe;IAC9F,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,EAAE,YAAY,CAAA;IAC1B,MAAM,EAAE,cAAc,CAAC,aAAa,EAAE,eAAe,CAAC,CAAA;IACtD,mBAAmB,EAAE,sBAAsB,CAAC,qBAAqB,CAAC,CAAA;IAClE,iBAAiB,EAAE,sBAAsB,CAAC,OAAO,CAAC,CAAA;IAClD,iBAAiB,EAAE,sBAAsB,CAAC,OAAO,CAAC,CAAA;IAClD,eAAe,EAAE,sBAAsB,CAAC,WAAW,CAAC,CAAA;CACrD;AAED,qBAAa,aAAa,CAAC,aAAa,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,eAAe,CAAE,YAAW,YAAY,CAAC,aAAa,EAAE,eAAe,CAAC;IAC5I,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAA4C;IAEhF,2CAA2C;IAC3C,WAAW,EAAE,MAAM,CAAI;IAEvB,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,CAKzB;IAED,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAQ;IAC7B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAc;IAC3C,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAgD;IACtF,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAA+C;IACnF,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAiC;IACnE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAqC;IAErE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAmC;IAEjE,mEAAmE;IACnE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAU;IAE3C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAyC;IAExE,qEAAqE;IACrE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAkE;gBAEvF,OAAO,EAAE,oBAAoB,CAAC,aAAa,EAAE,eAAe,CAAC;IA4BlE,OAAO,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,qBAAqB,CAAC,eAAe,CAAC;IA2FrG;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAI1B;;OAEG;YACW,cAAc;IA0H5B;;OAEG;YACW,YAAY;IAsC1B;;OAEG;YACW,cAAc;IA+C5B;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAW1B,SAAS,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,GAAG,WAAW;IAepD,KAAK;IASX,OAAO;CAIf"}
|