@procedures/client 0.0.0-stage → 0.2.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/CHANGELOG.md +42 -0
- package/LICENSE +21 -0
- package/README.md +832 -2
- package/dist/.tsbuildinfo +1 -0
- package/dist/adapters/http/client/index.d.ts +11 -0
- package/dist/adapters/http/client/index.d.ts.map +1 -0
- package/dist/adapters/http/client/index.js +18 -0
- package/dist/adapters/http/client/index.js.map +1 -0
- package/dist/adapters/http/client/transport.d.ts +72 -0
- package/dist/adapters/http/client/transport.d.ts.map +1 -0
- package/dist/adapters/http/client/transport.js +282 -0
- package/dist/adapters/http/client/transport.js.map +1 -0
- package/dist/adapters/http/client/types.d.ts +27 -0
- package/dist/adapters/http/client/types.d.ts.map +1 -0
- package/dist/adapters/http/client/types.js +8 -0
- package/dist/adapters/http/client/types.js.map +1 -0
- package/dist/adapters/http/index.d.ts +7 -0
- package/dist/adapters/http/index.d.ts.map +1 -0
- package/dist/adapters/http/index.js +7 -0
- package/dist/adapters/http/index.js.map +1 -0
- package/dist/adapters/http/server/index.d.ts +9 -0
- package/dist/adapters/http/server/index.d.ts.map +1 -0
- package/dist/adapters/http/server/index.js +10 -0
- package/dist/adapters/http/server/index.js.map +1 -0
- package/dist/adapters/http/server/strategies.d.ts +39 -0
- package/dist/adapters/http/server/strategies.d.ts.map +1 -0
- package/dist/adapters/http/server/strategies.js +90 -0
- package/dist/adapters/http/server/strategies.js.map +1 -0
- package/dist/adapters/http/server/transport.d.ts +66 -0
- package/dist/adapters/http/server/transport.d.ts.map +1 -0
- package/dist/adapters/http/server/transport.js +562 -0
- package/dist/adapters/http/server/transport.js.map +1 -0
- package/dist/adapters/http/server/types.d.ts +71 -0
- package/dist/adapters/http/server/types.d.ts.map +1 -0
- package/dist/adapters/http/server/types.js +7 -0
- package/dist/adapters/http/server/types.js.map +1 -0
- package/dist/adapters/http/shared/constants.d.ts +95 -0
- package/dist/adapters/http/shared/constants.d.ts.map +1 -0
- package/dist/adapters/http/shared/constants.js +102 -0
- package/dist/adapters/http/shared/constants.js.map +1 -0
- package/dist/adapters/http/shared/errors.d.ts +78 -0
- package/dist/adapters/http/shared/errors.d.ts.map +1 -0
- package/dist/adapters/http/shared/errors.js +151 -0
- package/dist/adapters/http/shared/errors.js.map +1 -0
- package/dist/adapters/http/shared/headers.d.ts +122 -0
- package/dist/adapters/http/shared/headers.d.ts.map +1 -0
- package/dist/adapters/http/shared/headers.js +216 -0
- package/dist/adapters/http/shared/headers.js.map +1 -0
- package/dist/adapters/http/shared/index.d.ts +12 -0
- package/dist/adapters/http/shared/index.d.ts.map +1 -0
- package/dist/adapters/http/shared/index.js +17 -0
- package/dist/adapters/http/shared/index.js.map +1 -0
- package/dist/adapters/http/shared/status-codes.d.ts +92 -0
- package/dist/adapters/http/shared/status-codes.d.ts.map +1 -0
- package/dist/adapters/http/shared/status-codes.js +189 -0
- package/dist/adapters/http/shared/status-codes.js.map +1 -0
- package/dist/adapters/http/shared/strategies.d.ts +90 -0
- package/dist/adapters/http/shared/strategies.d.ts.map +1 -0
- package/dist/adapters/http/shared/strategies.js +180 -0
- package/dist/adapters/http/shared/strategies.js.map +1 -0
- package/dist/adapters/local/client/index.d.ts +8 -0
- package/dist/adapters/local/client/index.d.ts.map +1 -0
- package/dist/adapters/local/client/index.js +8 -0
- package/dist/adapters/local/client/index.js.map +1 -0
- package/dist/adapters/local/client/transport.d.ts +81 -0
- package/dist/adapters/local/client/transport.d.ts.map +1 -0
- package/dist/adapters/local/client/transport.js +172 -0
- package/dist/adapters/local/client/transport.js.map +1 -0
- package/dist/adapters/local/client/types.d.ts +39 -0
- package/dist/adapters/local/client/types.d.ts.map +1 -0
- package/dist/adapters/local/client/types.js +13 -0
- package/dist/adapters/local/client/types.js.map +1 -0
- package/dist/adapters/metadata.d.ts +10 -0
- package/dist/adapters/metadata.d.ts.map +1 -0
- package/dist/adapters/metadata.js +19 -0
- package/dist/adapters/metadata.js.map +1 -0
- package/dist/adapters/mock/client/builder.d.ts +35 -0
- package/dist/adapters/mock/client/builder.d.ts.map +1 -0
- package/dist/adapters/mock/client/builder.js +58 -0
- package/dist/adapters/mock/client/builder.js.map +1 -0
- package/dist/adapters/mock/client/index.d.ts +9 -0
- package/dist/adapters/mock/client/index.d.ts.map +1 -0
- package/dist/adapters/mock/client/index.js +10 -0
- package/dist/adapters/mock/client/index.js.map +1 -0
- package/dist/adapters/mock/client/transport.d.ts +149 -0
- package/dist/adapters/mock/client/transport.d.ts.map +1 -0
- package/dist/adapters/mock/client/transport.js +289 -0
- package/dist/adapters/mock/client/transport.js.map +1 -0
- package/dist/adapters/mock/client/types.d.ts +86 -0
- package/dist/adapters/mock/client/types.d.ts.map +1 -0
- package/dist/adapters/mock/client/types.js +7 -0
- package/dist/adapters/mock/client/types.js.map +1 -0
- package/dist/adapters/websocket/client/index.d.ts +9 -0
- package/dist/adapters/websocket/client/index.d.ts.map +1 -0
- package/dist/adapters/websocket/client/index.js +9 -0
- package/dist/adapters/websocket/client/index.js.map +1 -0
- package/dist/adapters/websocket/client/transport.d.ts +106 -0
- package/dist/adapters/websocket/client/transport.d.ts.map +1 -0
- package/dist/adapters/websocket/client/transport.js +647 -0
- package/dist/adapters/websocket/client/transport.js.map +1 -0
- package/dist/adapters/websocket/client/types.d.ts +192 -0
- package/dist/adapters/websocket/client/types.d.ts.map +1 -0
- package/dist/adapters/websocket/client/types.js +17 -0
- package/dist/adapters/websocket/client/types.js.map +1 -0
- package/dist/adapters/websocket/index.d.ts +8 -0
- package/dist/adapters/websocket/index.d.ts.map +1 -0
- package/dist/adapters/websocket/index.js +8 -0
- package/dist/adapters/websocket/index.js.map +1 -0
- package/dist/adapters/websocket/server/index.d.ts +8 -0
- package/dist/adapters/websocket/server/index.d.ts.map +1 -0
- package/dist/adapters/websocket/server/index.js +8 -0
- package/dist/adapters/websocket/server/index.js.map +1 -0
- package/dist/adapters/websocket/server/transport.d.ts +112 -0
- package/dist/adapters/websocket/server/transport.d.ts.map +1 -0
- package/dist/adapters/websocket/server/transport.js +619 -0
- package/dist/adapters/websocket/server/transport.js.map +1 -0
- package/dist/adapters/websocket/server/types.d.ts +140 -0
- package/dist/adapters/websocket/server/types.d.ts.map +1 -0
- package/dist/adapters/websocket/server/types.js +7 -0
- package/dist/adapters/websocket/server/types.js.map +1 -0
- package/dist/browser.d.ts +51 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +89 -0
- package/dist/browser.js.map +1 -0
- package/dist/client/batch-executor.d.ts +160 -0
- package/dist/client/batch-executor.d.ts.map +1 -0
- package/dist/client/batch-executor.js +397 -0
- package/dist/client/batch-executor.js.map +1 -0
- package/dist/client/call-types.d.ts +271 -0
- package/dist/client/call-types.d.ts.map +1 -0
- package/dist/client/call-types.js +208 -0
- package/dist/client/call-types.js.map +1 -0
- package/dist/client/client.d.ts +525 -0
- package/dist/client/client.d.ts.map +1 -0
- package/dist/client/client.js +1011 -0
- package/dist/client/client.js.map +1 -0
- package/dist/client/consumption.d.ts +191 -0
- package/dist/client/consumption.d.ts.map +1 -0
- package/dist/client/consumption.js +98 -0
- package/dist/client/consumption.js.map +1 -0
- package/dist/client/context.d.ts +116 -0
- package/dist/client/context.d.ts.map +1 -0
- package/dist/client/context.js +111 -0
- package/dist/client/context.js.map +1 -0
- package/dist/client/errors/codes.d.ts +71 -0
- package/dist/client/errors/codes.d.ts.map +1 -0
- package/dist/client/errors/codes.js +81 -0
- package/dist/client/errors/codes.js.map +1 -0
- package/dist/client/errors/factory.d.ts +102 -0
- package/dist/client/errors/factory.d.ts.map +1 -0
- package/dist/client/errors/factory.js +210 -0
- package/dist/client/errors/factory.js.map +1 -0
- package/dist/client/errors/http-errors.d.ts +47 -0
- package/dist/client/errors/http-errors.d.ts.map +1 -0
- package/dist/client/errors/http-errors.js +548 -0
- package/dist/client/errors/http-errors.js.map +1 -0
- package/dist/client/errors/http-status.d.ts +73 -0
- package/dist/client/errors/http-status.d.ts.map +1 -0
- package/dist/client/errors/http-status.js +79 -0
- package/dist/client/errors/http-status.js.map +1 -0
- package/dist/client/errors/index.d.ts +36 -0
- package/dist/client/errors/index.d.ts.map +1 -0
- package/dist/client/errors/index.js +40 -0
- package/dist/client/errors/index.js.map +1 -0
- package/dist/client/errors/registry.d.ts +38 -0
- package/dist/client/errors/registry.d.ts.map +1 -0
- package/dist/client/errors/registry.js +535 -0
- package/dist/client/errors/registry.js.map +1 -0
- package/dist/client/errors/types.d.ts +112 -0
- package/dist/client/errors/types.d.ts.map +1 -0
- package/dist/client/errors/types.js +45 -0
- package/dist/client/errors/types.js.map +1 -0
- package/dist/client/index.d.ts +44 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +36 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/middleware/auth.d.ts +90 -0
- package/dist/client/middleware/auth.d.ts.map +1 -0
- package/dist/client/middleware/auth.js +98 -0
- package/dist/client/middleware/auth.js.map +1 -0
- package/dist/client/middleware/batching.d.ts +102 -0
- package/dist/client/middleware/batching.d.ts.map +1 -0
- package/dist/client/middleware/batching.js +245 -0
- package/dist/client/middleware/batching.js.map +1 -0
- package/dist/client/middleware/cache.d.ts +124 -0
- package/dist/client/middleware/cache.d.ts.map +1 -0
- package/dist/client/middleware/cache.js +208 -0
- package/dist/client/middleware/cache.js.map +1 -0
- package/dist/client/middleware/circuit-breaker.d.ts +113 -0
- package/dist/client/middleware/circuit-breaker.d.ts.map +1 -0
- package/dist/client/middleware/circuit-breaker.js +236 -0
- package/dist/client/middleware/circuit-breaker.js.map +1 -0
- package/dist/client/middleware/contexts.d.ts +199 -0
- package/dist/client/middleware/contexts.d.ts.map +1 -0
- package/dist/client/middleware/contexts.js +74 -0
- package/dist/client/middleware/contexts.js.map +1 -0
- package/dist/client/middleware/items.d.ts +37 -0
- package/dist/client/middleware/items.d.ts.map +1 -0
- package/dist/client/middleware/items.js +100 -0
- package/dist/client/middleware/items.js.map +1 -0
- package/dist/client/middleware/lru.d.ts +32 -0
- package/dist/client/middleware/lru.d.ts.map +1 -0
- package/dist/client/middleware/lru.js +62 -0
- package/dist/client/middleware/lru.js.map +1 -0
- package/dist/client/middleware/pagination.d.ts +114 -0
- package/dist/client/middleware/pagination.d.ts.map +1 -0
- package/dist/client/middleware/pagination.js +148 -0
- package/dist/client/middleware/pagination.js.map +1 -0
- package/dist/client/middleware/rate-limit.d.ts +105 -0
- package/dist/client/middleware/rate-limit.d.ts.map +1 -0
- package/dist/client/middleware/rate-limit.js +222 -0
- package/dist/client/middleware/rate-limit.js.map +1 -0
- package/dist/client/middleware/retry.d.ts +100 -0
- package/dist/client/middleware/retry.d.ts.map +1 -0
- package/dist/client/middleware/retry.js +150 -0
- package/dist/client/middleware/retry.js.map +1 -0
- package/dist/client/middleware/timeout.d.ts +91 -0
- package/dist/client/middleware/timeout.d.ts.map +1 -0
- package/dist/client/middleware/timeout.js +253 -0
- package/dist/client/middleware/timeout.js.map +1 -0
- package/dist/client/middleware/tracing.d.ts +118 -0
- package/dist/client/middleware/tracing.d.ts.map +1 -0
- package/dist/client/middleware/tracing.js +152 -0
- package/dist/client/middleware/tracing.js.map +1 -0
- package/dist/client/route-resolver.d.ts +181 -0
- package/dist/client/route-resolver.d.ts.map +1 -0
- package/dist/client/route-resolver.js +300 -0
- package/dist/client/route-resolver.js.map +1 -0
- package/dist/client/typed-method.d.ts +29 -0
- package/dist/client/typed-method.d.ts.map +1 -0
- package/dist/client/typed-method.js +36 -0
- package/dist/client/typed-method.js.map +1 -0
- package/dist/client/typed.d.ts +102 -0
- package/dist/client/typed.d.ts.map +1 -0
- package/dist/client/typed.js +52 -0
- package/dist/client/typed.js.map +1 -0
- package/dist/client/types.d.ts +305 -0
- package/dist/client/types.d.ts.map +1 -0
- package/dist/client/types.js +26 -0
- package/dist/client/types.js.map +1 -0
- package/dist/client/validation/index.d.ts +34 -0
- package/dist/client/validation/index.d.ts.map +1 -0
- package/dist/client/validation/index.js +36 -0
- package/dist/client/validation/index.js.map +1 -0
- package/dist/client/validation/middleware.d.ts +82 -0
- package/dist/client/validation/middleware.d.ts.map +1 -0
- package/dist/client/validation/middleware.js +138 -0
- package/dist/client/validation/middleware.js.map +1 -0
- package/dist/client/validation/types.d.ts +118 -0
- package/dist/client/validation/types.d.ts.map +1 -0
- package/dist/client/validation/types.js +59 -0
- package/dist/client/validation/types.js.map +1 -0
- package/dist/collections/async/async-queue.d.ts +144 -0
- package/dist/collections/async/async-queue.d.ts.map +1 -0
- package/dist/collections/async/async-queue.js +347 -0
- package/dist/collections/async/async-queue.js.map +1 -0
- package/dist/collections/async/channels.d.ts +188 -0
- package/dist/collections/async/channels.d.ts.map +1 -0
- package/dist/collections/async/channels.js +312 -0
- package/dist/collections/async/channels.js.map +1 -0
- package/dist/collections/behaviors/bounded.d.ts +79 -0
- package/dist/collections/behaviors/bounded.d.ts.map +1 -0
- package/dist/collections/behaviors/bounded.js +384 -0
- package/dist/collections/behaviors/bounded.js.map +1 -0
- package/dist/collections/behaviors/evented.d.ts +154 -0
- package/dist/collections/behaviors/evented.d.ts.map +1 -0
- package/dist/collections/behaviors/evented.js +299 -0
- package/dist/collections/behaviors/evented.js.map +1 -0
- package/dist/collections/behaviors/lru.d.ts +84 -0
- package/dist/collections/behaviors/lru.d.ts.map +1 -0
- package/dist/collections/behaviors/lru.js +330 -0
- package/dist/collections/behaviors/lru.js.map +1 -0
- package/dist/collections/behaviors/readonly.d.ts +73 -0
- package/dist/collections/behaviors/readonly.d.ts.map +1 -0
- package/dist/collections/behaviors/readonly.js +158 -0
- package/dist/collections/behaviors/readonly.js.map +1 -0
- package/dist/collections/behaviors/safe.d.ts +163 -0
- package/dist/collections/behaviors/safe.d.ts.map +1 -0
- package/dist/collections/behaviors/safe.js +172 -0
- package/dist/collections/behaviors/safe.js.map +1 -0
- package/dist/collections/behaviors/synchronized.d.ts +88 -0
- package/dist/collections/behaviors/synchronized.d.ts.map +1 -0
- package/dist/collections/behaviors/synchronized.js +294 -0
- package/dist/collections/behaviors/synchronized.js.map +1 -0
- package/dist/collections/behaviors/ttl.d.ts +118 -0
- package/dist/collections/behaviors/ttl.d.ts.map +1 -0
- package/dist/collections/behaviors/ttl.js +338 -0
- package/dist/collections/behaviors/ttl.js.map +1 -0
- package/dist/collections/core/effects.d.ts +176 -0
- package/dist/collections/core/effects.d.ts.map +1 -0
- package/dist/collections/core/effects.js +180 -0
- package/dist/collections/core/effects.js.map +1 -0
- package/dist/collections/core/events.d.ts +192 -0
- package/dist/collections/core/events.d.ts.map +1 -0
- package/dist/collections/core/events.js +291 -0
- package/dist/collections/core/events.js.map +1 -0
- package/dist/collections/core/middleware.d.ts +231 -0
- package/dist/collections/core/middleware.d.ts.map +1 -0
- package/dist/collections/core/middleware.js +161 -0
- package/dist/collections/core/middleware.js.map +1 -0
- package/dist/collections/core/policies.d.ts +220 -0
- package/dist/collections/core/policies.d.ts.map +1 -0
- package/dist/collections/core/policies.js +48 -0
- package/dist/collections/core/policies.js.map +1 -0
- package/dist/collections/core/traits.d.ts +142 -0
- package/dist/collections/core/traits.d.ts.map +1 -0
- package/dist/collections/core/traits.js +8 -0
- package/dist/collections/core/traits.js.map +1 -0
- package/dist/collections/examples.d.ts +13 -0
- package/dist/collections/examples.d.ts.map +1 -0
- package/dist/collections/examples.js +302 -0
- package/dist/collections/examples.js.map +1 -0
- package/dist/collections/fx/collectors.d.ts +190 -0
- package/dist/collections/fx/collectors.d.ts.map +1 -0
- package/dist/collections/fx/collectors.js +369 -0
- package/dist/collections/fx/collectors.js.map +1 -0
- package/dist/collections/fx/iter.d.ts +166 -0
- package/dist/collections/fx/iter.d.ts.map +1 -0
- package/dist/collections/fx/iter.js +421 -0
- package/dist/collections/fx/iter.js.map +1 -0
- package/dist/collections/impl/array-deque.d.ts +107 -0
- package/dist/collections/impl/array-deque.d.ts.map +1 -0
- package/dist/collections/impl/array-deque.js +381 -0
- package/dist/collections/impl/array-deque.js.map +1 -0
- package/dist/collections/impl/array-list.d.ts +101 -0
- package/dist/collections/impl/array-list.d.ts.map +1 -0
- package/dist/collections/impl/array-list.js +387 -0
- package/dist/collections/impl/array-list.js.map +1 -0
- package/dist/collections/impl/hash-map.d.ts +141 -0
- package/dist/collections/impl/hash-map.d.ts.map +1 -0
- package/dist/collections/impl/hash-map.js +450 -0
- package/dist/collections/impl/hash-map.js.map +1 -0
- package/dist/collections/impl/hash-set.d.ts +125 -0
- package/dist/collections/impl/hash-set.d.ts.map +1 -0
- package/dist/collections/impl/hash-set.js +264 -0
- package/dist/collections/impl/hash-set.js.map +1 -0
- package/dist/collections/impl/linked-hash-map.d.ts +141 -0
- package/dist/collections/impl/linked-hash-map.d.ts.map +1 -0
- package/dist/collections/impl/linked-hash-map.js +472 -0
- package/dist/collections/impl/linked-hash-map.js.map +1 -0
- package/dist/collections/impl/linked-list.d.ts +109 -0
- package/dist/collections/impl/linked-list.d.ts.map +1 -0
- package/dist/collections/impl/linked-list.js +491 -0
- package/dist/collections/impl/linked-list.js.map +1 -0
- package/dist/collections/impl/priority-queue.d.ts +134 -0
- package/dist/collections/impl/priority-queue.d.ts.map +1 -0
- package/dist/collections/impl/priority-queue.js +336 -0
- package/dist/collections/impl/priority-queue.js.map +1 -0
- package/dist/collections/impl/tree-map.d.ts +146 -0
- package/dist/collections/impl/tree-map.d.ts.map +1 -0
- package/dist/collections/impl/tree-map.js +781 -0
- package/dist/collections/impl/tree-map.js.map +1 -0
- package/dist/collections/impl/tree-set.d.ts +112 -0
- package/dist/collections/impl/tree-set.d.ts.map +1 -0
- package/dist/collections/impl/tree-set.js +374 -0
- package/dist/collections/impl/tree-set.js.map +1 -0
- package/dist/collections/index.d.ts +105 -0
- package/dist/collections/index.d.ts.map +1 -0
- package/dist/collections/index.js +135 -0
- package/dist/collections/index.js.map +1 -0
- package/dist/collections/interfaces/collection.d.ts +119 -0
- package/dist/collections/interfaces/collection.d.ts.map +1 -0
- package/dist/collections/interfaces/collection.js +8 -0
- package/dist/collections/interfaces/collection.js.map +1 -0
- package/dist/collections/interfaces/list.d.ts +247 -0
- package/dist/collections/interfaces/list.d.ts.map +1 -0
- package/dist/collections/interfaces/list.js +8 -0
- package/dist/collections/interfaces/list.js.map +1 -0
- package/dist/collections/interfaces/map.d.ts +344 -0
- package/dist/collections/interfaces/map.d.ts.map +1 -0
- package/dist/collections/interfaces/map.js +8 -0
- package/dist/collections/interfaces/map.js.map +1 -0
- package/dist/collections/interfaces/queue.d.ts +304 -0
- package/dist/collections/interfaces/queue.d.ts.map +1 -0
- package/dist/collections/interfaces/queue.js +8 -0
- package/dist/collections/interfaces/queue.js.map +1 -0
- package/dist/collections/interfaces/set.d.ts +137 -0
- package/dist/collections/interfaces/set.d.ts.map +1 -0
- package/dist/collections/interfaces/set.js +8 -0
- package/dist/collections/interfaces/set.js.map +1 -0
- package/dist/collections/storage/api.d.ts +109 -0
- package/dist/collections/storage/api.d.ts.map +1 -0
- package/dist/collections/storage/api.js +182 -0
- package/dist/collections/storage/api.js.map +1 -0
- package/dist/collections/storage/hybrid.d.ts +164 -0
- package/dist/collections/storage/hybrid.d.ts.map +1 -0
- package/dist/collections/storage/hybrid.js +416 -0
- package/dist/collections/storage/hybrid.js.map +1 -0
- package/dist/collections/storage/index.d.ts +16 -0
- package/dist/collections/storage/index.d.ts.map +1 -0
- package/dist/collections/storage/index.js +13 -0
- package/dist/collections/storage/index.js.map +1 -0
- package/dist/collections/storage/interface.d.ts +141 -0
- package/dist/collections/storage/interface.d.ts.map +1 -0
- package/dist/collections/storage/interface.js +23 -0
- package/dist/collections/storage/interface.js.map +1 -0
- package/dist/collections/storage/memory.d.ts +68 -0
- package/dist/collections/storage/memory.d.ts.map +1 -0
- package/dist/collections/storage/memory.js +154 -0
- package/dist/collections/storage/memory.js.map +1 -0
- package/dist/collections/utils/defaults.d.ts +135 -0
- package/dist/collections/utils/defaults.d.ts.map +1 -0
- package/dist/collections/utils/defaults.js +322 -0
- package/dist/collections/utils/defaults.js.map +1 -0
- package/dist/collections/utils/factories.d.ts +144 -0
- package/dist/collections/utils/factories.d.ts.map +1 -0
- package/dist/collections/utils/factories.js +293 -0
- package/dist/collections/utils/factories.js.map +1 -0
- package/dist/collections/utils/helpers.d.ts +137 -0
- package/dist/collections/utils/helpers.d.ts.map +1 -0
- package/dist/collections/utils/helpers.js +221 -0
- package/dist/collections/utils/helpers.js.map +1 -0
- package/dist/collections.d.ts +12 -0
- package/dist/collections.d.ts.map +1 -0
- package/dist/collections.js +10 -0
- package/dist/collections.js.map +1 -0
- package/dist/components/define.d.ts +134 -0
- package/dist/components/define.d.ts.map +1 -0
- package/dist/components/define.js +486 -0
- package/dist/components/define.js.map +1 -0
- package/dist/components/index.d.ts +39 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +38 -0
- package/dist/components/index.js.map +1 -0
- package/dist/components/types.d.ts +264 -0
- package/dist/components/types.d.ts.map +1 -0
- package/dist/components/types.js +46 -0
- package/dist/components/types.js.map +1 -0
- package/dist/events/bus.d.ts +193 -0
- package/dist/events/bus.d.ts.map +1 -0
- package/dist/events/bus.js +511 -0
- package/dist/events/bus.js.map +1 -0
- package/dist/events/index.d.ts +34 -0
- package/dist/events/index.d.ts.map +1 -0
- package/dist/events/index.js +36 -0
- package/dist/events/index.js.map +1 -0
- package/dist/events/types.d.ts +242 -0
- package/dist/events/types.d.ts.map +1 -0
- package/dist/events/types.js +8 -0
- package/dist/events/types.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -0
- package/dist/middleware/compose.d.ts +88 -0
- package/dist/middleware/compose.d.ts.map +1 -0
- package/dist/middleware/compose.js +108 -0
- package/dist/middleware/compose.js.map +1 -0
- package/dist/middleware/index.d.ts +12 -0
- package/dist/middleware/index.d.ts.map +1 -0
- package/dist/middleware/index.js +11 -0
- package/dist/middleware/index.js.map +1 -0
- package/dist/middleware/types.d.ts +112 -0
- package/dist/middleware/types.d.ts.map +1 -0
- package/dist/middleware/types.js +14 -0
- package/dist/middleware/types.js.map +1 -0
- package/dist/procedures/capability.d.ts +111 -0
- package/dist/procedures/capability.d.ts.map +1 -0
- package/dist/procedures/capability.js +269 -0
- package/dist/procedures/capability.js.map +1 -0
- package/dist/procedures/cli/announce.d.ts +67 -0
- package/dist/procedures/cli/announce.d.ts.map +1 -0
- package/dist/procedures/cli/announce.js +392 -0
- package/dist/procedures/cli/announce.js.map +1 -0
- package/dist/procedures/cli/discover.d.ts +66 -0
- package/dist/procedures/cli/discover.d.ts.map +1 -0
- package/dist/procedures/cli/discover.js +310 -0
- package/dist/procedures/cli/discover.js.map +1 -0
- package/dist/procedures/cli/index.d.ts +13 -0
- package/dist/procedures/cli/index.d.ts.map +1 -0
- package/dist/procedures/cli/index.js +203 -0
- package/dist/procedures/cli/index.js.map +1 -0
- package/dist/procedures/cli/init.d.ts +17 -0
- package/dist/procedures/cli/init.d.ts.map +1 -0
- package/dist/procedures/cli/init.js +336 -0
- package/dist/procedures/cli/init.js.map +1 -0
- package/dist/procedures/collection/index.d.ts +10 -0
- package/dist/procedures/collection/index.d.ts.map +1 -0
- package/dist/procedures/collection/index.js +10 -0
- package/dist/procedures/collection/index.js.map +1 -0
- package/dist/procedures/collection/procedures.d.ts +21 -0
- package/dist/procedures/collection/procedures.d.ts.map +1 -0
- package/dist/procedures/collection/procedures.js +210 -0
- package/dist/procedures/collection/procedures.js.map +1 -0
- package/dist/procedures/collection/schemas.d.ts +131 -0
- package/dist/procedures/collection/schemas.d.ts.map +1 -0
- package/dist/procedures/collection/schemas.js +422 -0
- package/dist/procedures/collection/schemas.js.map +1 -0
- package/dist/procedures/collection/storage.d.ts +53 -0
- package/dist/procedures/collection/storage.d.ts.map +1 -0
- package/dist/procedures/collection/storage.js +2 -0
- package/dist/procedures/collection/storage.js.map +1 -0
- package/dist/procedures/core/array.d.ts +276 -0
- package/dist/procedures/core/array.d.ts.map +1 -0
- package/dist/procedures/core/array.js +639 -0
- package/dist/procedures/core/array.js.map +1 -0
- package/dist/procedures/core/comparison.d.ts +85 -0
- package/dist/procedures/core/comparison.d.ts.map +1 -0
- package/dist/procedures/core/comparison.js +158 -0
- package/dist/procedures/core/comparison.js.map +1 -0
- package/dist/procedures/core/index.d.ts +261 -0
- package/dist/procedures/core/index.d.ts.map +1 -0
- package/dist/procedures/core/index.js +588 -0
- package/dist/procedures/core/index.js.map +1 -0
- package/dist/procedures/core/logic.d.ts +144 -0
- package/dist/procedures/core/logic.d.ts.map +1 -0
- package/dist/procedures/core/logic.js +169 -0
- package/dist/procedures/core/logic.js.map +1 -0
- package/dist/procedures/core/math.d.ts +139 -0
- package/dist/procedures/core/math.d.ts.map +1 -0
- package/dist/procedures/core/math.js +275 -0
- package/dist/procedures/core/math.js.map +1 -0
- package/dist/procedures/core/meta.d.ts +111 -0
- package/dist/procedures/core/meta.d.ts.map +1 -0
- package/dist/procedures/core/meta.js +244 -0
- package/dist/procedures/core/meta.js.map +1 -0
- package/dist/procedures/core/object.d.ts +109 -0
- package/dist/procedures/core/object.d.ts.map +1 -0
- package/dist/procedures/core/object.js +272 -0
- package/dist/procedures/core/object.js.map +1 -0
- package/dist/procedures/core/operands.d.ts +51 -0
- package/dist/procedures/core/operands.d.ts.map +1 -0
- package/dist/procedures/core/operands.js +90 -0
- package/dist/procedures/core/operands.js.map +1 -0
- package/dist/procedures/core/outputs.d.ts +28 -0
- package/dist/procedures/core/outputs.d.ts.map +1 -0
- package/dist/procedures/core/outputs.js +42 -0
- package/dist/procedures/core/outputs.js.map +1 -0
- package/dist/procedures/core/results.d.ts +202 -0
- package/dist/procedures/core/results.d.ts.map +1 -0
- package/dist/procedures/core/results.js +106 -0
- package/dist/procedures/core/results.js.map +1 -0
- package/dist/procedures/core/schemas.d.ts +48 -0
- package/dist/procedures/core/schemas.d.ts.map +1 -0
- package/dist/procedures/core/schemas.js +102 -0
- package/dist/procedures/core/schemas.js.map +1 -0
- package/dist/procedures/core/string.d.ts +138 -0
- package/dist/procedures/core/string.d.ts.map +1 -0
- package/dist/procedures/core/string.js +270 -0
- package/dist/procedures/core/string.js.map +1 -0
- package/dist/procedures/core/type.d.ts +101 -0
- package/dist/procedures/core/type.d.ts.map +1 -0
- package/dist/procedures/core/type.js +210 -0
- package/dist/procedures/core/type.js.map +1 -0
- package/dist/procedures/define-procedure.d.ts +187 -0
- package/dist/procedures/define-procedure.d.ts.map +1 -0
- package/dist/procedures/define-procedure.js +357 -0
- package/dist/procedures/define-procedure.js.map +1 -0
- package/dist/procedures/define.d.ts +228 -0
- package/dist/procedures/define.d.ts.map +1 -0
- package/dist/procedures/define.js +300 -0
- package/dist/procedures/define.js.map +1 -0
- package/dist/procedures/discovery.d.ts +57 -0
- package/dist/procedures/discovery.d.ts.map +1 -0
- package/dist/procedures/discovery.js +68 -0
- package/dist/procedures/discovery.js.map +1 -0
- package/dist/procedures/effects.d.ts +15 -0
- package/dist/procedures/effects.d.ts.map +1 -0
- package/dist/procedures/effects.js +18 -0
- package/dist/procedures/effects.js.map +1 -0
- package/dist/procedures/index.d.ts +27 -0
- package/dist/procedures/index.d.ts.map +1 -0
- package/dist/procedures/index.js +54 -0
- package/dist/procedures/index.js.map +1 -0
- package/dist/procedures/interceptors.d.ts +82 -0
- package/dist/procedures/interceptors.d.ts.map +1 -0
- package/dist/procedures/interceptors.js +194 -0
- package/dist/procedures/interceptors.js.map +1 -0
- package/dist/procedures/invoke.d.ts +155 -0
- package/dist/procedures/invoke.d.ts.map +1 -0
- package/dist/procedures/invoke.js +343 -0
- package/dist/procedures/invoke.js.map +1 -0
- package/dist/procedures/module.d.ts +54 -0
- package/dist/procedures/module.d.ts.map +1 -0
- package/dist/procedures/module.js +103 -0
- package/dist/procedures/module.js.map +1 -0
- package/dist/procedures/policy.d.ts +70 -0
- package/dist/procedures/policy.d.ts.map +1 -0
- package/dist/procedures/policy.js +138 -0
- package/dist/procedures/policy.js.map +1 -0
- package/dist/procedures/ref.d.ts +606 -0
- package/dist/procedures/ref.d.ts.map +1 -0
- package/dist/procedures/ref.js +895 -0
- package/dist/procedures/ref.js.map +1 -0
- package/dist/procedures/registry.d.ts +208 -0
- package/dist/procedures/registry.d.ts.map +1 -0
- package/dist/procedures/registry.js +402 -0
- package/dist/procedures/registry.js.map +1 -0
- package/dist/procedures/schema.d.ts +126 -0
- package/dist/procedures/schema.d.ts.map +1 -0
- package/dist/procedures/schema.js +108 -0
- package/dist/procedures/schema.js.map +1 -0
- package/dist/procedures/storage/adapter.d.ts +148 -0
- package/dist/procedures/storage/adapter.d.ts.map +1 -0
- package/dist/procedures/storage/adapter.js +214 -0
- package/dist/procedures/storage/adapter.js.map +1 -0
- package/dist/procedures/storage/api.d.ts +125 -0
- package/dist/procedures/storage/api.d.ts.map +1 -0
- package/dist/procedures/storage/api.js +220 -0
- package/dist/procedures/storage/api.js.map +1 -0
- package/dist/procedures/storage/factory.d.ts +134 -0
- package/dist/procedures/storage/factory.d.ts.map +1 -0
- package/dist/procedures/storage/factory.js +166 -0
- package/dist/procedures/storage/factory.js.map +1 -0
- package/dist/procedures/storage/hybrid.d.ts +193 -0
- package/dist/procedures/storage/hybrid.d.ts.map +1 -0
- package/dist/procedures/storage/hybrid.js +519 -0
- package/dist/procedures/storage/hybrid.js.map +1 -0
- package/dist/procedures/storage/index.d.ts +17 -0
- package/dist/procedures/storage/index.d.ts.map +1 -0
- package/dist/procedures/storage/index.js +17 -0
- package/dist/procedures/storage/index.js.map +1 -0
- package/dist/procedures/storage/procedures.d.ts +39 -0
- package/dist/procedures/storage/procedures.d.ts.map +1 -0
- package/dist/procedures/storage/procedures.js +261 -0
- package/dist/procedures/storage/procedures.js.map +1 -0
- package/dist/procedures/storage/serialization.d.ts +123 -0
- package/dist/procedures/storage/serialization.d.ts.map +1 -0
- package/dist/procedures/storage/serialization.js +216 -0
- package/dist/procedures/storage/serialization.js.map +1 -0
- package/dist/procedures/storage/synced-registry.d.ts +246 -0
- package/dist/procedures/storage/synced-registry.d.ts.map +1 -0
- package/dist/procedures/storage/synced-registry.js +575 -0
- package/dist/procedures/storage/synced-registry.js.map +1 -0
- package/dist/procedures/storage/types.d.ts +130 -0
- package/dist/procedures/storage/types.d.ts.map +1 -0
- package/dist/procedures/storage/types.js +8 -0
- package/dist/procedures/storage/types.js.map +1 -0
- package/dist/procedures/types.d.ts +468 -0
- package/dist/procedures/types.d.ts.map +1 -0
- package/dist/procedures/types.js +23 -0
- package/dist/procedures/types.js.map +1 -0
- package/dist/register.d.ts +8 -0
- package/dist/register.d.ts.map +1 -0
- package/dist/register.js +9 -0
- package/dist/register.js.map +1 -0
- package/dist/server/browser-guard.d.ts +69 -0
- package/dist/server/browser-guard.d.ts.map +1 -0
- package/dist/server/browser-guard.js +103 -0
- package/dist/server/browser-guard.js.map +1 -0
- package/dist/server/host-policy.d.ts +81 -0
- package/dist/server/host-policy.d.ts.map +1 -0
- package/dist/server/host-policy.js +104 -0
- package/dist/server/host-policy.js.map +1 -0
- package/dist/server/index.d.ts +46 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +42 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/method.d.ts +24 -0
- package/dist/server/method.d.ts.map +1 -0
- package/dist/server/method.js +29 -0
- package/dist/server/method.js.map +1 -0
- package/dist/server/procedure-server.d.ts +226 -0
- package/dist/server/procedure-server.d.ts.map +1 -0
- package/dist/server/procedure-server.js +348 -0
- package/dist/server/procedure-server.js.map +1 -0
- package/dist/server/server.d.ts +161 -0
- package/dist/server/server.d.ts.map +1 -0
- package/dist/server/server.js +279 -0
- package/dist/server/server.js.map +1 -0
- package/dist/server/types.d.ts +106 -0
- package/dist/server/types.d.ts.map +1 -0
- package/dist/server/types.js +29 -0
- package/dist/server/types.js.map +1 -0
- package/package.json +117 -3
- package/src/adapters/http/client/index.ts +51 -0
- package/src/adapters/http/client/transport.ts +338 -0
- package/src/adapters/http/client/types.ts +33 -0
- package/src/adapters/http/index.ts +7 -0
- package/src/adapters/http/server/index.ts +14 -0
- package/src/adapters/http/server/strategies.ts +105 -0
- package/src/adapters/http/server/transport.ts +623 -0
- package/src/adapters/http/server/types.ts +81 -0
- package/src/adapters/http/shared/constants.ts +108 -0
- package/src/adapters/http/shared/errors.ts +199 -0
- package/src/adapters/http/shared/headers.ts +291 -0
- package/src/adapters/http/shared/index.ts +21 -0
- package/src/adapters/http/shared/status-codes.ts +212 -0
- package/src/adapters/http/shared/strategies.ts +255 -0
- package/src/adapters/local/client/index.ts +11 -0
- package/src/adapters/local/client/transport.ts +188 -0
- package/src/adapters/local/client/types.ts +50 -0
- package/src/adapters/metadata.ts +17 -0
- package/src/adapters/mock/client/builder.ts +64 -0
- package/src/adapters/mock/client/index.ts +19 -0
- package/src/adapters/mock/client/transport.ts +352 -0
- package/src/adapters/mock/client/types.ts +99 -0
- package/src/adapters/websocket/client/index.ts +18 -0
- package/src/adapters/websocket/client/transport.ts +733 -0
- package/src/adapters/websocket/client/types.ts +235 -0
- package/src/adapters/websocket/index.ts +24 -0
- package/src/adapters/websocket/server/index.ts +18 -0
- package/src/adapters/websocket/server/transport.ts +705 -0
- package/src/adapters/websocket/server/types.ts +169 -0
- package/src/browser.ts +401 -0
- package/src/client/batch-executor.ts +514 -0
- package/src/client/call-types.ts +491 -0
- package/src/client/client.ts +1229 -0
- package/src/client/consumption.ts +288 -0
- package/src/client/context.ts +228 -0
- package/src/client/errors/README.md +279 -0
- package/src/client/errors/codes.ts +88 -0
- package/src/client/errors/factory.ts +263 -0
- package/src/client/errors/http-errors.ts +601 -0
- package/src/client/errors/http-status.ts +82 -0
- package/src/client/errors/index.ts +72 -0
- package/src/client/errors/registry.ts +595 -0
- package/src/client/errors/types.ts +139 -0
- package/src/client/index.ts +124 -0
- package/src/client/middleware/auth.ts +132 -0
- package/src/client/middleware/cache.ts +316 -0
- package/src/client/middleware/circuit-breaker.ts +339 -0
- package/src/client/middleware/contexts.ts +319 -0
- package/src/client/middleware/items.ts +114 -0
- package/src/client/middleware/lru.ts +66 -0
- package/src/client/middleware/pagination.ts +213 -0
- package/src/client/middleware/rate-limit.ts +315 -0
- package/src/client/middleware/retry.ts +236 -0
- package/src/client/middleware/timeout.ts +308 -0
- package/src/client/middleware/tracing.ts +191 -0
- package/src/client/route-resolver.ts +407 -0
- package/src/client/typed-method.ts +65 -0
- package/src/client/typed.ts +140 -0
- package/src/client/types.ts +372 -0
- package/src/client/validation/index.ts +56 -0
- package/src/client/validation/middleware.ts +254 -0
- package/src/client/validation/types.ts +162 -0
- package/src/events/bus.ts +594 -0
- package/src/events/index.ts +67 -0
- package/src/events/types.ts +263 -0
- package/src/index.ts +33 -0
- package/src/middleware/compose.ts +159 -0
- package/src/middleware/index.ts +28 -0
- package/src/middleware/types.ts +166 -0
- package/src/procedures/capability.ts +333 -0
- package/src/procedures/cli/announce.ts +470 -0
- package/src/procedures/cli/discover.ts +390 -0
- package/src/procedures/cli/index.ts +231 -0
- package/src/procedures/cli/init.ts +370 -0
- package/src/procedures/collection/index.ts +51 -0
- package/src/procedures/collection/procedures.ts +257 -0
- package/src/procedures/collection/schemas.ts +550 -0
- package/src/procedures/collection/storage.ts +53 -0
- package/src/procedures/core/array.ts +1026 -0
- package/src/procedures/core/comparison.ts +265 -0
- package/src/procedures/core/index.ts +898 -0
- package/src/procedures/core/logic.ts +225 -0
- package/src/procedures/core/math.ts +471 -0
- package/src/procedures/core/meta.ts +389 -0
- package/src/procedures/core/object.ts +429 -0
- package/src/procedures/core/operands.ts +119 -0
- package/src/procedures/core/outputs.ts +48 -0
- package/src/procedures/core/results.ts +296 -0
- package/src/procedures/core/schemas.ts +123 -0
- package/src/procedures/core/string.ts +460 -0
- package/src/procedures/core/type.ts +346 -0
- package/src/procedures/define-procedure.ts +532 -0
- package/src/procedures/define.ts +387 -0
- package/src/procedures/discovery.ts +76 -0
- package/src/procedures/effects.ts +24 -0
- package/src/procedures/index.ts +239 -0
- package/src/procedures/interceptors.ts +273 -0
- package/src/procedures/invoke.ts +506 -0
- package/src/procedures/module.ts +117 -0
- package/src/procedures/policy.ts +171 -0
- package/src/procedures/ref.ts +1305 -0
- package/src/procedures/registry.ts +473 -0
- package/src/procedures/schema.ts +225 -0
- package/src/procedures/types.ts +596 -0
- package/src/register.ts +10 -0
- package/src/server/browser-guard.ts +147 -0
- package/src/server/host-policy.ts +163 -0
- package/src/server/index.ts +70 -0
- package/src/server/method.ts +33 -0
- package/src/server/procedure-server.ts +459 -0
- package/src/server/server.ts +364 -0
- package/src/server/types.ts +147 -0
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Circuit Breaker Middleware
|
|
3
|
+
*
|
|
4
|
+
* Prevents cascading failures by failing fast when a service is unhealthy.
|
|
5
|
+
* Implements the circuit breaker pattern with three states:
|
|
6
|
+
* - CLOSED: Normal operation (requests pass through)
|
|
7
|
+
* - OPEN: Service unhealthy (requests fail immediately)
|
|
8
|
+
* - HALF_OPEN: Testing if service recovered (limited requests)
|
|
9
|
+
*
|
|
10
|
+
* Works with both client and server!
|
|
11
|
+
*/
|
|
12
|
+
import type { ClientMiddleware, TypedClientMiddleware } from "../types.js";
|
|
13
|
+
import type { CircuitBreakerContext } from "./contexts.js";
|
|
14
|
+
/**
|
|
15
|
+
* Circuit breaker state.
|
|
16
|
+
*/
|
|
17
|
+
export type CircuitState = "CLOSED" | "OPEN" | "HALF_OPEN";
|
|
18
|
+
/**
|
|
19
|
+
* Circuit breaker options.
|
|
20
|
+
*/
|
|
21
|
+
export interface CircuitBreakerOptions {
|
|
22
|
+
/**
|
|
23
|
+
* Number of failures before opening circuit.
|
|
24
|
+
* @default 5
|
|
25
|
+
*/
|
|
26
|
+
failureThreshold?: number;
|
|
27
|
+
/**
|
|
28
|
+
* Time window for counting failures (in milliseconds).
|
|
29
|
+
* @default 10000 (10 seconds)
|
|
30
|
+
*/
|
|
31
|
+
failureWindow?: number;
|
|
32
|
+
/**
|
|
33
|
+
* Time to wait before attempting to close circuit (in milliseconds).
|
|
34
|
+
* @default 30000 (30 seconds)
|
|
35
|
+
*/
|
|
36
|
+
resetTimeout?: number;
|
|
37
|
+
/**
|
|
38
|
+
* Number of successful requests required to close circuit from HALF_OPEN.
|
|
39
|
+
* @default 2
|
|
40
|
+
*/
|
|
41
|
+
successThreshold?: number;
|
|
42
|
+
/**
|
|
43
|
+
* Number of probe requests that run at the same time in HALF_OPEN. The other requests fail
|
|
44
|
+
* fast with a CircuitBreakerError until a probe ends.
|
|
45
|
+
* @default successThreshold
|
|
46
|
+
*/
|
|
47
|
+
halfOpenMaxRequests?: number;
|
|
48
|
+
/**
|
|
49
|
+
* Custom error predicate.
|
|
50
|
+
* Return true if error should count as failure.
|
|
51
|
+
* @default All errors count as failures
|
|
52
|
+
*/
|
|
53
|
+
isFailure?: (error: Error) => boolean;
|
|
54
|
+
/**
|
|
55
|
+
* Callback when circuit state changes.
|
|
56
|
+
*/
|
|
57
|
+
onStateChange?: (oldState: CircuitState, newState: CircuitState) => void;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Circuit breaker statistics.
|
|
61
|
+
*/
|
|
62
|
+
export interface CircuitBreakerStats {
|
|
63
|
+
state: CircuitState;
|
|
64
|
+
failures: number;
|
|
65
|
+
successes: number;
|
|
66
|
+
totalRequests: number;
|
|
67
|
+
lastFailureTime: number | null;
|
|
68
|
+
lastStateChange: number;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Circuit breaker error thrown when circuit is open.
|
|
72
|
+
*/
|
|
73
|
+
export declare class CircuitBreakerError extends Error {
|
|
74
|
+
readonly state: CircuitState;
|
|
75
|
+
readonly lastError: Error | null;
|
|
76
|
+
constructor(state: CircuitState, lastError: Error | null);
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Create circuit breaker middleware.
|
|
80
|
+
*
|
|
81
|
+
* Automatically opens circuit when failure threshold is reached,
|
|
82
|
+
* preventing requests from reaching unhealthy services.
|
|
83
|
+
*
|
|
84
|
+
* @param options - Circuit breaker configuration
|
|
85
|
+
* @returns Middleware function
|
|
86
|
+
*
|
|
87
|
+
* @example
|
|
88
|
+
* ```typescript
|
|
89
|
+
* client.use(createCircuitBreakerMiddleware({
|
|
90
|
+
* failureThreshold: 5, // Open after 5 failures
|
|
91
|
+
* failureWindow: 10000, // Within 10 seconds
|
|
92
|
+
* resetTimeout: 30000, // Try again after 30 seconds
|
|
93
|
+
* successThreshold: 2 // Close after 2 successes
|
|
94
|
+
* }));
|
|
95
|
+
* ```
|
|
96
|
+
*/
|
|
97
|
+
export declare function createCircuitBreakerMiddleware(options?: CircuitBreakerOptions): TypedClientMiddleware<CircuitBreakerContext, {}>;
|
|
98
|
+
/**
|
|
99
|
+
* Get circuit breaker statistics.
|
|
100
|
+
*
|
|
101
|
+
* Note: This requires storing the middleware instance to access stats.
|
|
102
|
+
*
|
|
103
|
+
* @example
|
|
104
|
+
* ```typescript
|
|
105
|
+
* const breaker = createCircuitBreakerMiddleware();
|
|
106
|
+
* client.use(breaker);
|
|
107
|
+
*
|
|
108
|
+
* // Later...
|
|
109
|
+
* const stats = getCircuitBreakerStats(breaker);
|
|
110
|
+
* ```
|
|
111
|
+
*/
|
|
112
|
+
export declare function getCircuitBreakerStats(middleware: ClientMiddleware | TypedClientMiddleware<CircuitBreakerContext, {}>): CircuitBreakerStats | null;
|
|
113
|
+
//# sourceMappingURL=circuit-breaker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"circuit-breaker.d.ts","sourceRoot":"","sources":["../../../src/client/middleware/circuit-breaker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAA+B,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACxG,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAE3D;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;AAE3D;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B;;;;OAIG;IACH,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC;IAEtC;;OAEG;IACH,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,KAAK,IAAI,CAAC;CAC1E;AAUD;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,YAAY,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,eAAe,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;aAE1B,KAAK,EAAE,YAAY;aACnB,SAAS,EAAE,KAAK,GAAG,IAAI;IAFzC,YACkB,KAAK,EAAE,YAAY,EACnB,SAAS,EAAE,KAAK,GAAG,IAAI,EAMxC;CACF;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,8BAA8B,CAC5C,OAAO,GAAE,qBAA0B,GAClC,qBAAqB,CAAC,qBAAqB,EAAE,EAAE,CAAC,CA8LlD;AAKD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,gBAAgB,GAAG,qBAAqB,CAAC,qBAAqB,EAAE,EAAE,CAAC,GAC9E,mBAAmB,GAAG,IAAI,CAG5B"}
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Circuit Breaker Middleware
|
|
3
|
+
*
|
|
4
|
+
* Prevents cascading failures by failing fast when a service is unhealthy.
|
|
5
|
+
* Implements the circuit breaker pattern with three states:
|
|
6
|
+
* - CLOSED: Normal operation (requests pass through)
|
|
7
|
+
* - OPEN: Service unhealthy (requests fail immediately)
|
|
8
|
+
* - HALF_OPEN: Testing if service recovered (limited requests)
|
|
9
|
+
*
|
|
10
|
+
* Works with both client and server!
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Circuit breaker error thrown when circuit is open.
|
|
14
|
+
*/
|
|
15
|
+
export class CircuitBreakerError extends Error {
|
|
16
|
+
state;
|
|
17
|
+
lastError;
|
|
18
|
+
constructor(state, lastError) {
|
|
19
|
+
super(`Circuit breaker is ${state}${lastError ? `: ${lastError.message}` : ""}`);
|
|
20
|
+
this.state = state;
|
|
21
|
+
this.lastError = lastError;
|
|
22
|
+
this.name = "CircuitBreakerError";
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Create circuit breaker middleware.
|
|
27
|
+
*
|
|
28
|
+
* Automatically opens circuit when failure threshold is reached,
|
|
29
|
+
* preventing requests from reaching unhealthy services.
|
|
30
|
+
*
|
|
31
|
+
* @param options - Circuit breaker configuration
|
|
32
|
+
* @returns Middleware function
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* ```typescript
|
|
36
|
+
* client.use(createCircuitBreakerMiddleware({
|
|
37
|
+
* failureThreshold: 5, // Open after 5 failures
|
|
38
|
+
* failureWindow: 10000, // Within 10 seconds
|
|
39
|
+
* resetTimeout: 30000, // Try again after 30 seconds
|
|
40
|
+
* successThreshold: 2 // Close after 2 successes
|
|
41
|
+
* }));
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
export function createCircuitBreakerMiddleware(options = {}) {
|
|
45
|
+
const { failureThreshold = 5, failureWindow = 10000, resetTimeout = 30000, successThreshold = 2, isFailure = () => true, onStateChange, } = options;
|
|
46
|
+
const halfOpenMaxRequests = options.halfOpenMaxRequests ?? successThreshold;
|
|
47
|
+
let state = "CLOSED";
|
|
48
|
+
let failures = [];
|
|
49
|
+
let successes = 0;
|
|
50
|
+
let totalRequests = 0;
|
|
51
|
+
let probesInFlight = 0;
|
|
52
|
+
let lastStateChange = Date.now();
|
|
53
|
+
let resetTimer = null;
|
|
54
|
+
/**
|
|
55
|
+
* Change circuit state.
|
|
56
|
+
*/
|
|
57
|
+
function setState(newState) {
|
|
58
|
+
const oldState = state;
|
|
59
|
+
state = newState;
|
|
60
|
+
if (oldState !== newState)
|
|
61
|
+
lastStateChange = Date.now();
|
|
62
|
+
if (oldState !== newState && onStateChange) {
|
|
63
|
+
onStateChange(oldState, newState);
|
|
64
|
+
}
|
|
65
|
+
// Clear reset timer when moving to CLOSED
|
|
66
|
+
if (newState === "CLOSED" && resetTimer) {
|
|
67
|
+
clearTimeout(resetTimer);
|
|
68
|
+
resetTimer = null;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Record a failure.
|
|
73
|
+
*/
|
|
74
|
+
function recordFailure(error) {
|
|
75
|
+
const now = Date.now();
|
|
76
|
+
// Add failure
|
|
77
|
+
failures.push({ timestamp: now, error });
|
|
78
|
+
// Remove old failures outside window
|
|
79
|
+
failures = failures.filter((f) => now - f.timestamp < failureWindow);
|
|
80
|
+
if (state === "HALF_OPEN") {
|
|
81
|
+
// Any failure while testing reopens the circuit immediately — don't wait for the full
|
|
82
|
+
// failureThreshold. See documentation/BUGS-2026-07.md (H11).
|
|
83
|
+
setState("OPEN");
|
|
84
|
+
successes = 0;
|
|
85
|
+
scheduleReset();
|
|
86
|
+
}
|
|
87
|
+
else if (state === "CLOSED" && failures.length >= failureThreshold) {
|
|
88
|
+
setState("OPEN");
|
|
89
|
+
scheduleReset();
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Record a success.
|
|
94
|
+
*/
|
|
95
|
+
function recordSuccess() {
|
|
96
|
+
if (state === "HALF_OPEN") {
|
|
97
|
+
successes++;
|
|
98
|
+
if (successes >= successThreshold) {
|
|
99
|
+
// Enough successes - close circuit
|
|
100
|
+
setState("CLOSED");
|
|
101
|
+
failures = [];
|
|
102
|
+
successes = 0;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
else if (state === "CLOSED") {
|
|
106
|
+
// Clear old failures on success
|
|
107
|
+
const now = Date.now();
|
|
108
|
+
failures = failures.filter((f) => now - f.timestamp < failureWindow);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Schedule circuit reset attempt.
|
|
113
|
+
*/
|
|
114
|
+
function scheduleReset() {
|
|
115
|
+
if (resetTimer) {
|
|
116
|
+
clearTimeout(resetTimer);
|
|
117
|
+
}
|
|
118
|
+
resetTimer = setTimeout(() => {
|
|
119
|
+
if (state === "OPEN") {
|
|
120
|
+
setState("HALF_OPEN");
|
|
121
|
+
successes = 0;
|
|
122
|
+
}
|
|
123
|
+
}, resetTimeout);
|
|
124
|
+
// Don't keep the event loop alive just for the reset timer. See BUGS-2026-07.md (M4).
|
|
125
|
+
resetTimer.unref?.();
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Check if request should be allowed. In HALF_OPEN, only `halfOpenMaxRequests` probes run at
|
|
129
|
+
* the same time: the other requests fail fast until a probe ends (deep dive TRN-4: before,
|
|
130
|
+
* HALF_OPEN let all traffic through).
|
|
131
|
+
*/
|
|
132
|
+
function shouldAllowRequest() {
|
|
133
|
+
if (state === "CLOSED") {
|
|
134
|
+
return true;
|
|
135
|
+
}
|
|
136
|
+
if (state === "OPEN") {
|
|
137
|
+
return false;
|
|
138
|
+
}
|
|
139
|
+
return probesInFlight < halfOpenMaxRequests;
|
|
140
|
+
}
|
|
141
|
+
function getStats() {
|
|
142
|
+
const now = Date.now();
|
|
143
|
+
return {
|
|
144
|
+
state,
|
|
145
|
+
failures: failures.filter((f) => now - f.timestamp < failureWindow).length,
|
|
146
|
+
successes,
|
|
147
|
+
totalRequests,
|
|
148
|
+
lastFailureTime: failures.length > 0 ? failures[failures.length - 1].timestamp : null,
|
|
149
|
+
lastStateChange,
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
const middleware = (next) => {
|
|
153
|
+
return async function* (context) {
|
|
154
|
+
totalRequests++;
|
|
155
|
+
// The state for the other middlewares (CircuitBreakerContext)
|
|
156
|
+
const writeState = () => {
|
|
157
|
+
const now = Date.now();
|
|
158
|
+
context.message.metadata["circuitBreaker"] = {
|
|
159
|
+
state,
|
|
160
|
+
failures: failures.filter((f) => now - f.timestamp < failureWindow).length,
|
|
161
|
+
successes,
|
|
162
|
+
};
|
|
163
|
+
};
|
|
164
|
+
writeState();
|
|
165
|
+
// Check if circuit allows request
|
|
166
|
+
if (!shouldAllowRequest()) {
|
|
167
|
+
const lastFailure = failures.length > 0 ? failures[failures.length - 1] : null;
|
|
168
|
+
const lastError = lastFailure != null ? lastFailure.error : null;
|
|
169
|
+
throw new CircuitBreakerError(state, lastError);
|
|
170
|
+
}
|
|
171
|
+
const probe = state === "HALF_OPEN";
|
|
172
|
+
if (probe)
|
|
173
|
+
probesInFlight++;
|
|
174
|
+
// The outcome is recorded once, as soon as it is known. Transports report failures as
|
|
175
|
+
// error items (BUGS-2026-07 H11), and a Client with throwOnError stops reading at the
|
|
176
|
+
// error item: the generator then gets return() at the yield, and code after the loop
|
|
177
|
+
// never runs. So the failure is recorded before the error item goes out (deep dive TRN-4).
|
|
178
|
+
let recorded = false;
|
|
179
|
+
const fail = (error) => {
|
|
180
|
+
if (recorded)
|
|
181
|
+
return;
|
|
182
|
+
recorded = true;
|
|
183
|
+
if (isFailure(error))
|
|
184
|
+
recordFailure(error);
|
|
185
|
+
};
|
|
186
|
+
try {
|
|
187
|
+
for await (const item of next(context)) {
|
|
188
|
+
if (item.status.type === "error") {
|
|
189
|
+
const err = new Error(item.status.message);
|
|
190
|
+
err.code = item.status.code;
|
|
191
|
+
fail(err);
|
|
192
|
+
}
|
|
193
|
+
yield item;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
catch (error) {
|
|
197
|
+
// A thrown error (transport-level, not an error-status item) also counts as a failure.
|
|
198
|
+
fail(error);
|
|
199
|
+
throw error;
|
|
200
|
+
}
|
|
201
|
+
finally {
|
|
202
|
+
if (probe)
|
|
203
|
+
probesInFlight--;
|
|
204
|
+
// The stream ended, or the reader stopped early, with no error: a success
|
|
205
|
+
if (!recorded) {
|
|
206
|
+
recorded = true;
|
|
207
|
+
recordSuccess();
|
|
208
|
+
}
|
|
209
|
+
writeState();
|
|
210
|
+
}
|
|
211
|
+
};
|
|
212
|
+
};
|
|
213
|
+
statsOf.set(middleware, getStats);
|
|
214
|
+
return middleware;
|
|
215
|
+
}
|
|
216
|
+
/** The stats function of each circuit breaker middleware */
|
|
217
|
+
const statsOf = new WeakMap();
|
|
218
|
+
/**
|
|
219
|
+
* Get circuit breaker statistics.
|
|
220
|
+
*
|
|
221
|
+
* Note: This requires storing the middleware instance to access stats.
|
|
222
|
+
*
|
|
223
|
+
* @example
|
|
224
|
+
* ```typescript
|
|
225
|
+
* const breaker = createCircuitBreakerMiddleware();
|
|
226
|
+
* client.use(breaker);
|
|
227
|
+
*
|
|
228
|
+
* // Later...
|
|
229
|
+
* const stats = getCircuitBreakerStats(breaker);
|
|
230
|
+
* ```
|
|
231
|
+
*/
|
|
232
|
+
export function getCircuitBreakerStats(middleware) {
|
|
233
|
+
// Before, this function always returned null (deep dive TRN-4)
|
|
234
|
+
return statsOf.get(middleware)?.() ?? null;
|
|
235
|
+
}
|
|
236
|
+
//# sourceMappingURL=circuit-breaker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"circuit-breaker.js","sourceRoot":"","sources":["../../../src/client/middleware/circuit-breaker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Middleware Context Types
|
|
3
|
+
*
|
|
4
|
+
* Each middleware declares what context it provides and requires through
|
|
5
|
+
* these type definitions. This enables compile-time validation of middleware
|
|
6
|
+
* chains and type-safe context accumulation.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* // Middleware composition with type accumulation
|
|
11
|
+
* const client = new Client(transport)
|
|
12
|
+
* .use(createRetryMiddleware()) // Client<BaseContext & RetryContext>
|
|
13
|
+
* .use(createCacheMiddleware({ methods: ["users.get"] })) // Client<... & CacheContext>
|
|
14
|
+
* .use(createAuthMiddleware(...)) // Client<... & AuthContext>
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
/**
|
|
18
|
+
* Context provided by retry middleware.
|
|
19
|
+
* Tracks retry state for observability and dependent middleware.
|
|
20
|
+
*/
|
|
21
|
+
export interface RetryContext {
|
|
22
|
+
retry: {
|
|
23
|
+
/** Current attempt number (0-indexed). The middleware writes it: a call does not give it. */
|
|
24
|
+
attempt?: number;
|
|
25
|
+
/** Maximum number of attempts: an override of a call, then the value that the middleware uses */
|
|
26
|
+
maxAttempts?: number;
|
|
27
|
+
/** An override of the base delay, in milliseconds */
|
|
28
|
+
delay?: number;
|
|
29
|
+
/** An override of the factor of the delay from one attempt to the next */
|
|
30
|
+
backoffMultiplier?: number;
|
|
31
|
+
/** An override of the longest delay, in milliseconds */
|
|
32
|
+
maxDelay?: number;
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Context of the cache middleware: the overrides of a call, and the state after it.
|
|
37
|
+
*
|
|
38
|
+
* The cache key is not in the context: it holds the payload, and the metadata of a retry
|
|
39
|
+
* travels in a header of limited size. (Before, the type named a `key` that the middleware
|
|
40
|
+
* never wrote.)
|
|
41
|
+
*/
|
|
42
|
+
export interface CacheContext {
|
|
43
|
+
cache: {
|
|
44
|
+
/** The time-to-live of the entry that this call stores, in milliseconds */
|
|
45
|
+
ttl?: number;
|
|
46
|
+
/** True: the call skips the cache (no read, no write) */
|
|
47
|
+
bypass?: boolean;
|
|
48
|
+
/** True: the call fetches and replaces the stored response */
|
|
49
|
+
refresh?: boolean;
|
|
50
|
+
/** After the call: whether the response came from the cache */
|
|
51
|
+
hit?: boolean;
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Context provided by timeout middleware.
|
|
56
|
+
* Tracks timeout configuration.
|
|
57
|
+
*/
|
|
58
|
+
export interface TimeoutContext {
|
|
59
|
+
timeout: {
|
|
60
|
+
/** Overall timeout in milliseconds (if configured) */
|
|
61
|
+
overall?: number;
|
|
62
|
+
/** Per-attempt timeout in milliseconds (if configured) */
|
|
63
|
+
perAttempt?: number;
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Context provided by auth middleware.
|
|
68
|
+
* Contains authentication credentials added to requests.
|
|
69
|
+
*/
|
|
70
|
+
export interface AuthContext {
|
|
71
|
+
auth: {
|
|
72
|
+
/** Bearer token (if provided) */
|
|
73
|
+
token?: string;
|
|
74
|
+
/** API key (if provided) */
|
|
75
|
+
apiKey?: string;
|
|
76
|
+
/** User ID (if provided) */
|
|
77
|
+
userId?: string;
|
|
78
|
+
/** Additional custom auth fields */
|
|
79
|
+
[key: string]: unknown;
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Context provided by tracing middleware.
|
|
84
|
+
* Contains distributed tracing identifiers.
|
|
85
|
+
*/
|
|
86
|
+
export interface TracingContext {
|
|
87
|
+
tracing: {
|
|
88
|
+
/** Trace ID for the entire distributed trace */
|
|
89
|
+
traceId: string;
|
|
90
|
+
/** Span ID for this specific operation */
|
|
91
|
+
spanId: string;
|
|
92
|
+
/** Parent span ID (if continuing existing trace) */
|
|
93
|
+
parentSpanId?: string;
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Circuit breaker state values.
|
|
98
|
+
*/
|
|
99
|
+
export type CircuitState = "CLOSED" | "OPEN" | "HALF_OPEN";
|
|
100
|
+
/**
|
|
101
|
+
* Context provided by circuit breaker middleware: the middleware writes the state when it
|
|
102
|
+
* admits a call, and again when the call ends.
|
|
103
|
+
*/
|
|
104
|
+
export interface CircuitBreakerContext {
|
|
105
|
+
circuitBreaker: {
|
|
106
|
+
/** Current circuit state */
|
|
107
|
+
state: CircuitState;
|
|
108
|
+
/** Number of recent failures */
|
|
109
|
+
failures: number;
|
|
110
|
+
/** Number of successes in HALF_OPEN state */
|
|
111
|
+
successes: number;
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Context provided by rate limit middleware: the middleware writes the state when a call gets
|
|
116
|
+
* its token.
|
|
117
|
+
*/
|
|
118
|
+
export interface RateLimitContext {
|
|
119
|
+
rateLimit: {
|
|
120
|
+
/** Tokens currently available */
|
|
121
|
+
tokensAvailable: number;
|
|
122
|
+
/** Maximum tokens */
|
|
123
|
+
maxTokens: number;
|
|
124
|
+
/** Requests currently queued */
|
|
125
|
+
queueSize: number;
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Context provided by pagination middleware: the normalized page (or offset) and limit, as one
|
|
130
|
+
* object. The middleware writes the single keys (`page`, `limit`, `offset`) too.
|
|
131
|
+
*/
|
|
132
|
+
export interface PaginationContext {
|
|
133
|
+
pagination: {
|
|
134
|
+
/** Current page (for page-based pagination) */
|
|
135
|
+
page?: number;
|
|
136
|
+
/** Current offset (for offset-based pagination) */
|
|
137
|
+
offset?: number;
|
|
138
|
+
/** Page size limit */
|
|
139
|
+
limit: number;
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Context provided by Zod validation middleware.
|
|
144
|
+
* Re-exported from validation module for consistency.
|
|
145
|
+
*/
|
|
146
|
+
export type { ZodValidationContext } from "../validation/types.js";
|
|
147
|
+
/**
|
|
148
|
+
* Base context that all clients start with.
|
|
149
|
+
* Contains the minimum required context for any request.
|
|
150
|
+
*/
|
|
151
|
+
export interface BaseClientContext {
|
|
152
|
+
/** The request message being processed */
|
|
153
|
+
message: {
|
|
154
|
+
id: string;
|
|
155
|
+
method: {
|
|
156
|
+
service: string;
|
|
157
|
+
operation: string;
|
|
158
|
+
version?: string;
|
|
159
|
+
};
|
|
160
|
+
payload: unknown;
|
|
161
|
+
metadata: Record<string, unknown>;
|
|
162
|
+
signal?: AbortSignal;
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Union of all middleware contexts.
|
|
167
|
+
* Useful for type guards and runtime checks.
|
|
168
|
+
*/
|
|
169
|
+
export type AnyMiddlewareContext = RetryContext | CacheContext | TimeoutContext | AuthContext | TracingContext | CircuitBreakerContext | RateLimitContext | PaginationContext;
|
|
170
|
+
/**
|
|
171
|
+
* All middleware contexts combined.
|
|
172
|
+
* Represents a fully-configured client with all middleware.
|
|
173
|
+
*/
|
|
174
|
+
export type FullContext = BaseClientContext & RetryContext & CacheContext & TimeoutContext & AuthContext & TracingContext & CircuitBreakerContext & RateLimitContext & PaginationContext;
|
|
175
|
+
/**
|
|
176
|
+
* Check if context has retry information.
|
|
177
|
+
*/
|
|
178
|
+
export declare function hasRetryContext(ctx: unknown): ctx is RetryContext;
|
|
179
|
+
/**
|
|
180
|
+
* Check if context has cache information.
|
|
181
|
+
*/
|
|
182
|
+
export declare function hasCacheContext(ctx: unknown): ctx is CacheContext;
|
|
183
|
+
/**
|
|
184
|
+
* Check if context has auth information.
|
|
185
|
+
*/
|
|
186
|
+
export declare function hasAuthContext(ctx: unknown): ctx is AuthContext;
|
|
187
|
+
/**
|
|
188
|
+
* Check if context has tracing information.
|
|
189
|
+
*/
|
|
190
|
+
export declare function hasTracingContext(ctx: unknown): ctx is TracingContext;
|
|
191
|
+
/**
|
|
192
|
+
* Check if context has circuit breaker information.
|
|
193
|
+
*/
|
|
194
|
+
export declare function hasCircuitBreakerContext(ctx: unknown): ctx is CircuitBreakerContext;
|
|
195
|
+
/**
|
|
196
|
+
* Check if context has rate limit information.
|
|
197
|
+
*/
|
|
198
|
+
export declare function hasRateLimitContext(ctx: unknown): ctx is RateLimitContext;
|
|
199
|
+
//# sourceMappingURL=contexts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contexts.d.ts","sourceRoot":"","sources":["../../../src/client/middleware/contexts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Middleware Context Types
|
|
3
|
+
*
|
|
4
|
+
* Each middleware declares what context it provides and requires through
|
|
5
|
+
* these type definitions. This enables compile-time validation of middleware
|
|
6
|
+
* chains and type-safe context accumulation.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* // Middleware composition with type accumulation
|
|
11
|
+
* const client = new Client(transport)
|
|
12
|
+
* .use(createRetryMiddleware()) // Client<BaseContext & RetryContext>
|
|
13
|
+
* .use(createCacheMiddleware({ methods: ["users.get"] })) // Client<... & CacheContext>
|
|
14
|
+
* .use(createAuthMiddleware(...)) // Client<... & AuthContext>
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
// =============================================================================
|
|
18
|
+
// Context Type Guards
|
|
19
|
+
// =============================================================================
|
|
20
|
+
/**
|
|
21
|
+
* Check if context has retry information.
|
|
22
|
+
*/
|
|
23
|
+
export function hasRetryContext(ctx) {
|
|
24
|
+
return (typeof ctx === "object" &&
|
|
25
|
+
ctx !== null &&
|
|
26
|
+
"retry" in ctx &&
|
|
27
|
+
typeof ctx.retry === "object");
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Check if context has cache information.
|
|
31
|
+
*/
|
|
32
|
+
export function hasCacheContext(ctx) {
|
|
33
|
+
return (typeof ctx === "object" &&
|
|
34
|
+
ctx !== null &&
|
|
35
|
+
"cache" in ctx &&
|
|
36
|
+
typeof ctx.cache === "object");
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Check if context has auth information.
|
|
40
|
+
*/
|
|
41
|
+
export function hasAuthContext(ctx) {
|
|
42
|
+
return (typeof ctx === "object" &&
|
|
43
|
+
ctx !== null &&
|
|
44
|
+
"auth" in ctx &&
|
|
45
|
+
typeof ctx.auth === "object");
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Check if context has tracing information.
|
|
49
|
+
*/
|
|
50
|
+
export function hasTracingContext(ctx) {
|
|
51
|
+
return (typeof ctx === "object" &&
|
|
52
|
+
ctx !== null &&
|
|
53
|
+
"tracing" in ctx &&
|
|
54
|
+
typeof ctx.tracing === "object");
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Check if context has circuit breaker information.
|
|
58
|
+
*/
|
|
59
|
+
export function hasCircuitBreakerContext(ctx) {
|
|
60
|
+
return (typeof ctx === "object" &&
|
|
61
|
+
ctx !== null &&
|
|
62
|
+
"circuitBreaker" in ctx &&
|
|
63
|
+
typeof ctx.circuitBreaker === "object");
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Check if context has rate limit information.
|
|
67
|
+
*/
|
|
68
|
+
export function hasRateLimitContext(ctx) {
|
|
69
|
+
return (typeof ctx === "object" &&
|
|
70
|
+
ctx !== null &&
|
|
71
|
+
"rateLimit" in ctx &&
|
|
72
|
+
typeof ctx.rateLimit === "object");
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=contexts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contexts.js","sourceRoot":"","sources":["../../../src/client/middleware/contexts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAqOH,gFAAgF;AAChF,sBAAsB;AACtB,gFAAgF;AAEhF;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,GAAY;IAC1C,OAAO,CACL,OAAO,GAAG,KAAK,QAAQ;QACvB,GAAG,KAAK,IAAI;QACZ,OAAO,IAAI,GAAG;QACd,OAAQ,GAAoB,CAAC,KAAK,KAAK,QAAQ,CAChD,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,GAAY;IAC1C,OAAO,CACL,OAAO,GAAG,KAAK,QAAQ;QACvB,GAAG,KAAK,IAAI;QACZ,OAAO,IAAI,GAAG;QACd,OAAQ,GAAoB,CAAC,KAAK,KAAK,QAAQ,CAChD,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,GAAY;IACzC,OAAO,CACL,OAAO,GAAG,KAAK,QAAQ;QACvB,GAAG,KAAK,IAAI;QACZ,MAAM,IAAI,GAAG;QACb,OAAQ,GAAmB,CAAC,IAAI,KAAK,QAAQ,CAC9C,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAY;IAC5C,OAAO,CACL,OAAO,GAAG,KAAK,QAAQ;QACvB,GAAG,KAAK,IAAI;QACZ,SAAS,IAAI,GAAG;QAChB,OAAQ,GAAsB,CAAC,OAAO,KAAK,QAAQ,CACpD,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,wBAAwB,CAAC,GAAY;IACnD,OAAO,CACL,OAAO,GAAG,KAAK,QAAQ;QACvB,GAAG,KAAK,IAAI;QACZ,gBAAgB,IAAI,GAAG;QACvB,OAAQ,GAA6B,CAAC,cAAc,KAAK,QAAQ,CAClE,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,GAAY;IAC9C,OAAO,CACL,OAAO,GAAG,KAAK,QAAQ;QACvB,GAAG,KAAK,IAAI;QACZ,WAAW,IAAI,GAAG;QAClB,OAAQ,GAAwB,CAAC,SAAS,KAAK,QAAQ,CACxD,CAAC;AACJ,CAAC"}
|