@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,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Helpers that the client middlewares share.
|
|
3
|
+
*
|
|
4
|
+
* The transports report a failure as an error item, not as a thrown error. The middlewares use
|
|
5
|
+
* the same style: a timeout, an abort or a refused retry is an error item, and `Client` throws
|
|
6
|
+
* it when `throwOnError` is on (deep dive TRN-7: before, the timeout middleware waited for a
|
|
7
|
+
* thrown error that the transports never threw).
|
|
8
|
+
*/
|
|
9
|
+
import type { ResponseItem } from "../types.js";
|
|
10
|
+
/** This function makes an error item. */
|
|
11
|
+
export declare function errorItem<TRes>(id: string, code: string, message: string, retryable: boolean): ResponseItem<TRes>;
|
|
12
|
+
/** The error item of a request that its caller aborted. A retry does not repeat it. */
|
|
13
|
+
export declare function abortedItem<TRes>(id: string): ResponseItem<TRes>;
|
|
14
|
+
/**
|
|
15
|
+
* This function tells if a thrown error is a network failure: the connection failed or broke.
|
|
16
|
+
* A retry can repair a network failure. A validation error, an open circuit breaker or a rate
|
|
17
|
+
* limit cannot be repaired by a retry (deep dive TRN-8).
|
|
18
|
+
*/
|
|
19
|
+
export declare function isNetworkError(error: unknown): boolean;
|
|
20
|
+
/**
|
|
21
|
+
* The item that stands for a thrown error, so that `shouldRetry` can decide about it. It is
|
|
22
|
+
* retryable only when the error is a network failure.
|
|
23
|
+
*/
|
|
24
|
+
export declare function thrownItem<TRes>(id: string, error: unknown): ResponseItem<TRes>;
|
|
25
|
+
/**
|
|
26
|
+
* This function waits `ms` milliseconds. It returns false at once when the signal aborts (deep
|
|
27
|
+
* dive TRN-8: before, the backoff of the retry middleware ignored the signal).
|
|
28
|
+
*/
|
|
29
|
+
export declare function sleep(ms: number, signal?: AbortSignal): Promise<boolean>;
|
|
30
|
+
/** The value that `nextOrAbort` gives when the signal aborts first. */
|
|
31
|
+
export declare const ABORTED_FIRST: unique symbol;
|
|
32
|
+
/**
|
|
33
|
+
* The next result of an iterator, or `ABORTED_FIRST` when the signal aborts first. A transport
|
|
34
|
+
* that ignores the signal cannot keep the caller waiting past its timeout.
|
|
35
|
+
*/
|
|
36
|
+
export declare function nextOrAbort<T>(iterator: AsyncIterator<T>, signal: AbortSignal): Promise<IteratorResult<T> | typeof ABORTED_FIRST>;
|
|
37
|
+
//# sourceMappingURL=items.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"items.d.ts","sourceRoot":"","sources":["../../../src/client/middleware/items.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,yCAAyC;AACzC,wBAAgB,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,CAEjH;AAED,uFAAuF;AACvF,wBAAgB,WAAW,CAAC,IAAI,EAAE,EAAE,EAAE,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,CAEhE;AAkBD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAUtD;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,CAQ/E;AAED;;;GAGG;AACH,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAaxE;AAED,uEAAuE;AACvE,eAAO,MAAM,aAAa,EAAE,OAAO,MAAgC,CAAC;AAEpE;;;GAGG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAC3B,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,EAC1B,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,OAAO,aAAa,CAAC,CAgBnD"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Helpers that the client middlewares share.
|
|
3
|
+
*
|
|
4
|
+
* The transports report a failure as an error item, not as a thrown error. The middlewares use
|
|
5
|
+
* the same style: a timeout, an abort or a refused retry is an error item, and `Client` throws
|
|
6
|
+
* it when `throwOnError` is on (deep dive TRN-7: before, the timeout middleware waited for a
|
|
7
|
+
* thrown error that the transports never threw).
|
|
8
|
+
*/
|
|
9
|
+
/** This function makes an error item. */
|
|
10
|
+
export function errorItem(id, code, message, retryable) {
|
|
11
|
+
return { id, status: { type: "error", code, message, retryable }, payload: null, metadata: {} };
|
|
12
|
+
}
|
|
13
|
+
/** The error item of a request that its caller aborted. A retry does not repeat it. */
|
|
14
|
+
export function abortedItem(id) {
|
|
15
|
+
return errorItem(id, "ABORTED", "Request was aborted", false);
|
|
16
|
+
}
|
|
17
|
+
const NETWORK_CODES = new Set([
|
|
18
|
+
"ECONNREFUSED",
|
|
19
|
+
"ECONNRESET",
|
|
20
|
+
"ECONNABORTED",
|
|
21
|
+
"EPIPE",
|
|
22
|
+
"ETIMEDOUT",
|
|
23
|
+
"ENETUNREACH",
|
|
24
|
+
"EHOSTUNREACH",
|
|
25
|
+
"ENOTFOUND",
|
|
26
|
+
"EAI_AGAIN",
|
|
27
|
+
"UND_ERR_SOCKET",
|
|
28
|
+
"UND_ERR_CONNECT_TIMEOUT",
|
|
29
|
+
"NETWORK_ERROR",
|
|
30
|
+
"CONNECTION_REFUSED",
|
|
31
|
+
]);
|
|
32
|
+
/**
|
|
33
|
+
* This function tells if a thrown error is a network failure: the connection failed or broke.
|
|
34
|
+
* A retry can repair a network failure. A validation error, an open circuit breaker or a rate
|
|
35
|
+
* limit cannot be repaired by a retry (deep dive TRN-8).
|
|
36
|
+
*/
|
|
37
|
+
export function isNetworkError(error) {
|
|
38
|
+
if (!(error instanceof Error))
|
|
39
|
+
return false;
|
|
40
|
+
const code = error.code;
|
|
41
|
+
if (typeof code === "string" && NETWORK_CODES.has(code))
|
|
42
|
+
return true;
|
|
43
|
+
const cause = error.cause;
|
|
44
|
+
if (cause !== undefined && cause !== error && isNetworkError(cause))
|
|
45
|
+
return true;
|
|
46
|
+
// fetch() rejects with TypeError("fetch failed") when the connection fails
|
|
47
|
+
if (error.name === "TypeError" && /fetch failed|network/i.test(error.message))
|
|
48
|
+
return true;
|
|
49
|
+
// The WebSocket transport fails the requests of a connection that closed or never opened
|
|
50
|
+
return /WebSocket (connection closed|disconnected)|Connection timeout/.test(error.message);
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* The item that stands for a thrown error, so that `shouldRetry` can decide about it. It is
|
|
54
|
+
* retryable only when the error is a network failure.
|
|
55
|
+
*/
|
|
56
|
+
export function thrownItem(id, error) {
|
|
57
|
+
const code = error?.code;
|
|
58
|
+
return errorItem(id, typeof code === "string" ? code : "THROWN", error instanceof Error ? error.message : String(error), isNetworkError(error));
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* This function waits `ms` milliseconds. It returns false at once when the signal aborts (deep
|
|
62
|
+
* dive TRN-8: before, the backoff of the retry middleware ignored the signal).
|
|
63
|
+
*/
|
|
64
|
+
export function sleep(ms, signal) {
|
|
65
|
+
if (signal?.aborted)
|
|
66
|
+
return Promise.resolve(false);
|
|
67
|
+
return new Promise((resolve) => {
|
|
68
|
+
const onAbort = () => {
|
|
69
|
+
clearTimeout(timer);
|
|
70
|
+
resolve(false);
|
|
71
|
+
};
|
|
72
|
+
const timer = setTimeout(() => {
|
|
73
|
+
signal?.removeEventListener("abort", onAbort);
|
|
74
|
+
resolve(true);
|
|
75
|
+
}, Math.max(0, ms));
|
|
76
|
+
signal?.addEventListener("abort", onAbort, { once: true });
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
/** The value that `nextOrAbort` gives when the signal aborts first. */
|
|
80
|
+
export const ABORTED_FIRST = Symbol("aborted first");
|
|
81
|
+
/**
|
|
82
|
+
* The next result of an iterator, or `ABORTED_FIRST` when the signal aborts first. A transport
|
|
83
|
+
* that ignores the signal cannot keep the caller waiting past its timeout.
|
|
84
|
+
*/
|
|
85
|
+
export function nextOrAbort(iterator, signal) {
|
|
86
|
+
if (signal.aborted)
|
|
87
|
+
return Promise.resolve(ABORTED_FIRST);
|
|
88
|
+
return new Promise((resolve, reject) => {
|
|
89
|
+
const onAbort = () => resolve(ABORTED_FIRST);
|
|
90
|
+
signal.addEventListener("abort", onAbort, { once: true });
|
|
91
|
+
iterator.next().then((result) => {
|
|
92
|
+
signal.removeEventListener("abort", onAbort);
|
|
93
|
+
resolve(result);
|
|
94
|
+
}, (error) => {
|
|
95
|
+
signal.removeEventListener("abort", onAbort);
|
|
96
|
+
reject(error);
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=items.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"items.js","sourceRoot":"","sources":["../../../src/client/middleware/items.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A map with a capacity, for the cache middleware.
|
|
3
|
+
*
|
|
4
|
+
* A JavaScript `Map` keeps its keys in the order of insertion. A read moves its key to the end,
|
|
5
|
+
* so the first key is always the least recently used one. A write that goes over the capacity
|
|
6
|
+
* removes the first key. The core has this small map itself, so it does not depend on
|
|
7
|
+
* `@procedures/collections` (roadmap 3.3: before, the cache composed `lruMap` and
|
|
8
|
+
* `hashMap` of that package).
|
|
9
|
+
*/
|
|
10
|
+
export declare class LruMap<K, V> {
|
|
11
|
+
private readonly capacity;
|
|
12
|
+
private readonly onEvict?;
|
|
13
|
+
private readonly entries;
|
|
14
|
+
/**
|
|
15
|
+
* @param capacity - The largest number of keys. A positive whole number.
|
|
16
|
+
* @param onEvict - Called for each key that a write removes to keep the capacity.
|
|
17
|
+
*/
|
|
18
|
+
constructor(capacity: number, onEvict?: ((key: K, value: V) => void) | undefined);
|
|
19
|
+
/** The number of keys. */
|
|
20
|
+
get size(): number;
|
|
21
|
+
/** True when the map has the key. This does not count as a use. */
|
|
22
|
+
has(key: K): boolean;
|
|
23
|
+
/** The value of the key, or undefined. A read makes the key the most recently used one. */
|
|
24
|
+
get(key: K): V | undefined;
|
|
25
|
+
/** Set the value of a key, as the most recently used one. Over the capacity, the oldest key goes. */
|
|
26
|
+
set(key: K, value: V): void;
|
|
27
|
+
/** Delete a key. True when it existed. */
|
|
28
|
+
delete(key: K): boolean;
|
|
29
|
+
/** Delete every key. */
|
|
30
|
+
clear(): void;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=lru.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lru.d.ts","sourceRoot":"","sources":["../../../src/client/middleware/lru.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,qBAAa,MAAM,CAAC,CAAC,EAAE,CAAC;IAQpB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;IAR3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmB;IAE3C;;;OAGG;IACH,YACmB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,GAAE,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,IAAI,aAAA,EAKtD;IAED,0BAA0B;IAC1B,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,mEAAmE;IACnE,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAEnB;IAED,2FAA2F;IAC3F,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS,CAMzB;IAED,qGAAqG;IACrG,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAS1B;IAED,0CAA0C;IAC1C,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAEtB;IAED,wBAAwB;IACxB,KAAK,IAAI,IAAI,CAEZ;CACF"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A map with a capacity, for the cache middleware.
|
|
3
|
+
*
|
|
4
|
+
* A JavaScript `Map` keeps its keys in the order of insertion. A read moves its key to the end,
|
|
5
|
+
* so the first key is always the least recently used one. A write that goes over the capacity
|
|
6
|
+
* removes the first key. The core has this small map itself, so it does not depend on
|
|
7
|
+
* `@procedures/collections` (roadmap 3.3: before, the cache composed `lruMap` and
|
|
8
|
+
* `hashMap` of that package).
|
|
9
|
+
*/
|
|
10
|
+
export class LruMap {
|
|
11
|
+
capacity;
|
|
12
|
+
onEvict;
|
|
13
|
+
entries = new Map();
|
|
14
|
+
/**
|
|
15
|
+
* @param capacity - The largest number of keys. A positive whole number.
|
|
16
|
+
* @param onEvict - Called for each key that a write removes to keep the capacity.
|
|
17
|
+
*/
|
|
18
|
+
constructor(capacity, onEvict) {
|
|
19
|
+
this.capacity = capacity;
|
|
20
|
+
this.onEvict = onEvict;
|
|
21
|
+
if (!Number.isInteger(capacity) || capacity < 1) {
|
|
22
|
+
throw new RangeError(`The capacity of an LRU map must be a positive whole number, not ${capacity}`);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
/** The number of keys. */
|
|
26
|
+
get size() {
|
|
27
|
+
return this.entries.size;
|
|
28
|
+
}
|
|
29
|
+
/** True when the map has the key. This does not count as a use. */
|
|
30
|
+
has(key) {
|
|
31
|
+
return this.entries.has(key);
|
|
32
|
+
}
|
|
33
|
+
/** The value of the key, or undefined. A read makes the key the most recently used one. */
|
|
34
|
+
get(key) {
|
|
35
|
+
if (!this.entries.has(key))
|
|
36
|
+
return undefined;
|
|
37
|
+
const value = this.entries.get(key);
|
|
38
|
+
this.entries.delete(key);
|
|
39
|
+
this.entries.set(key, value);
|
|
40
|
+
return value;
|
|
41
|
+
}
|
|
42
|
+
/** Set the value of a key, as the most recently used one. Over the capacity, the oldest key goes. */
|
|
43
|
+
set(key, value) {
|
|
44
|
+
this.entries.delete(key);
|
|
45
|
+
this.entries.set(key, value);
|
|
46
|
+
while (this.entries.size > this.capacity) {
|
|
47
|
+
const oldest = this.entries.keys().next().value;
|
|
48
|
+
const evicted = this.entries.get(oldest);
|
|
49
|
+
this.entries.delete(oldest);
|
|
50
|
+
this.onEvict?.(oldest, evicted);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/** Delete a key. True when it existed. */
|
|
54
|
+
delete(key) {
|
|
55
|
+
return this.entries.delete(key);
|
|
56
|
+
}
|
|
57
|
+
/** Delete every key. */
|
|
58
|
+
clear() {
|
|
59
|
+
this.entries.clear();
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=lru.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lru.js","sourceRoot":"","sources":["../../../src/client/middleware/lru.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,OAAO,MAAM;IAQE,QAAQ;IACR,OAAO;IART,OAAO,GAAG,IAAI,GAAG,EAAQ,CAAC;IAE3C;;;OAGG;IACH,YACmB,QAAgB,EAChB,OAAoC;wBADpC,QAAQ;uBACR,OAAO;QAExB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;YAChD,MAAM,IAAI,UAAU,CAAC,mEAAmE,QAAQ,EAAE,CAAC,CAAC;QACtG,CAAC;IACH,CAAC;IAED,0BAA0B;IAC1B,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IAC3B,CAAC;IAED,mEAAmE;IACnE,GAAG,CAAC,GAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IAED,2FAA2F;IAC3F,GAAG,CAAC,GAAM;QACR,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO,SAAS,CAAC;QAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAM,CAAC;QACzC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACzB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC7B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,qGAAqG;IACrG,GAAG,CAAC,GAAM,EAAE,KAAQ;QAClB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACzB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC7B,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YACzC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAU,CAAC;YACrD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAM,CAAC;YAC9C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC5B,IAAI,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAED,0CAA0C;IAC1C,MAAM,CAAC,GAAM;QACX,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IAED,wBAAwB;IACxB,KAAK;QACH,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;CACF"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Universal Pagination Middleware
|
|
3
|
+
*
|
|
4
|
+
* Protocol-agnostic pagination handling.
|
|
5
|
+
* Works with any transport!
|
|
6
|
+
*/
|
|
7
|
+
import type { TypedClientMiddleware } from "../types.js";
|
|
8
|
+
import type { PaginationContext } from "./contexts.js";
|
|
9
|
+
/**
|
|
10
|
+
* Pagination middleware options.
|
|
11
|
+
*/
|
|
12
|
+
export interface PaginationOptions {
|
|
13
|
+
/**
|
|
14
|
+
* Default page size
|
|
15
|
+
* @default 50
|
|
16
|
+
*/
|
|
17
|
+
defaultLimit?: number;
|
|
18
|
+
/**
|
|
19
|
+
* Maximum page size (prevents abuse)
|
|
20
|
+
* @default 1000
|
|
21
|
+
*/
|
|
22
|
+
maxLimit?: number;
|
|
23
|
+
/**
|
|
24
|
+
* Page parameter name in metadata
|
|
25
|
+
* @default "page"
|
|
26
|
+
*/
|
|
27
|
+
pageKey?: string;
|
|
28
|
+
/**
|
|
29
|
+
* Limit parameter name in metadata
|
|
30
|
+
* @default "limit"
|
|
31
|
+
*/
|
|
32
|
+
limitKey?: string;
|
|
33
|
+
/**
|
|
34
|
+
* Offset parameter name in metadata (alternative to page)
|
|
35
|
+
* @default "offset"
|
|
36
|
+
*/
|
|
37
|
+
offsetKey?: string;
|
|
38
|
+
/**
|
|
39
|
+
* Whether to use offset-based pagination instead of page-based
|
|
40
|
+
* @default false
|
|
41
|
+
*/
|
|
42
|
+
useOffset?: boolean;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Create pagination middleware.
|
|
46
|
+
*
|
|
47
|
+
* Automatically handles pagination parameters in request metadata:
|
|
48
|
+
* - Applies default limit if not specified
|
|
49
|
+
* - Enforces maximum limit to prevent abuse
|
|
50
|
+
* - Supports both page-based and offset-based pagination
|
|
51
|
+
*
|
|
52
|
+
* @param options - Pagination configuration
|
|
53
|
+
* @returns Middleware function
|
|
54
|
+
*
|
|
55
|
+
* @example
|
|
56
|
+
* ```typescript
|
|
57
|
+
* // Page-based pagination
|
|
58
|
+
* client.use(createPaginationMiddleware({
|
|
59
|
+
* defaultLimit: 50,
|
|
60
|
+
* maxLimit: 1000
|
|
61
|
+
* }));
|
|
62
|
+
*
|
|
63
|
+
* await client.call(
|
|
64
|
+
* { service: "users", operation: "list" },
|
|
65
|
+
* {},
|
|
66
|
+
* { page: 2, limit: 100 } // Metadata
|
|
67
|
+
* );
|
|
68
|
+
*
|
|
69
|
+
* // Offset-based pagination
|
|
70
|
+
* client.use(createPaginationMiddleware({
|
|
71
|
+
* useOffset: true,
|
|
72
|
+
* defaultLimit: 50
|
|
73
|
+
* }));
|
|
74
|
+
*
|
|
75
|
+
* await client.call(
|
|
76
|
+
* { service: "users", operation: "list" },
|
|
77
|
+
* {},
|
|
78
|
+
* { offset: 100, limit: 50 } // Metadata
|
|
79
|
+
* );
|
|
80
|
+
* ```
|
|
81
|
+
*/
|
|
82
|
+
export declare function createPaginationMiddleware(options?: PaginationOptions): TypedClientMiddleware<PaginationContext, {}>;
|
|
83
|
+
/**
|
|
84
|
+
* Helper to create an async iterator for paginated results.
|
|
85
|
+
*
|
|
86
|
+
* Automatically fetches all pages and yields items as they arrive.
|
|
87
|
+
*
|
|
88
|
+
* @param client - The client instance
|
|
89
|
+
* @param method - Method to call
|
|
90
|
+
* @param payload - Request payload
|
|
91
|
+
* @param options - Pagination options
|
|
92
|
+
* @returns Async iterable of all items across all pages
|
|
93
|
+
*
|
|
94
|
+
* @example
|
|
95
|
+
* ```typescript
|
|
96
|
+
* // Fetch all users across all pages
|
|
97
|
+
* for await (const user of paginateAll(client, { service: "users", operation: "list" }, {})) {
|
|
98
|
+
* console.log(user);
|
|
99
|
+
* }
|
|
100
|
+
* ```
|
|
101
|
+
*/
|
|
102
|
+
export declare function paginateAll<TReq, TRes extends {
|
|
103
|
+
items: any[];
|
|
104
|
+
hasMore?: boolean;
|
|
105
|
+
total?: number;
|
|
106
|
+
}>(client: {
|
|
107
|
+
call: (method: any, payload: TReq, metadata?: any) => Promise<TRes>;
|
|
108
|
+
}, method: any, payload: TReq, options?: {
|
|
109
|
+
limit?: number;
|
|
110
|
+
maxPages?: number;
|
|
111
|
+
}): AsyncIterable<TRes extends {
|
|
112
|
+
items: (infer U)[];
|
|
113
|
+
} ? U : never>;
|
|
114
|
+
//# sourceMappingURL=pagination.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../../../src/client/middleware/pagination.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAA+B,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACtF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEvD;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,GAAE,iBAAsB,GAC9B,qBAAqB,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAsE9C;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAuB,WAAW,CAAC,IAAI,EAAE,IAAI,SAAS;IAAE,KAAK,EAAE,GAAG,EAAE,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EACvG,MAAM,EAAE;IAAE,IAAI,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,EAC/E,MAAM,EAAE,GAAG,EACX,OAAO,EAAE,IAAI,EACb,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAO,GAClD,aAAa,CAAC,IAAI,SAAS;IAAE,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAA;CAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAyBhE"}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Universal Pagination Middleware
|
|
3
|
+
*
|
|
4
|
+
* Protocol-agnostic pagination handling.
|
|
5
|
+
* Works with any transport!
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Create pagination middleware.
|
|
9
|
+
*
|
|
10
|
+
* Automatically handles pagination parameters in request metadata:
|
|
11
|
+
* - Applies default limit if not specified
|
|
12
|
+
* - Enforces maximum limit to prevent abuse
|
|
13
|
+
* - Supports both page-based and offset-based pagination
|
|
14
|
+
*
|
|
15
|
+
* @param options - Pagination configuration
|
|
16
|
+
* @returns Middleware function
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```typescript
|
|
20
|
+
* // Page-based pagination
|
|
21
|
+
* client.use(createPaginationMiddleware({
|
|
22
|
+
* defaultLimit: 50,
|
|
23
|
+
* maxLimit: 1000
|
|
24
|
+
* }));
|
|
25
|
+
*
|
|
26
|
+
* await client.call(
|
|
27
|
+
* { service: "users", operation: "list" },
|
|
28
|
+
* {},
|
|
29
|
+
* { page: 2, limit: 100 } // Metadata
|
|
30
|
+
* );
|
|
31
|
+
*
|
|
32
|
+
* // Offset-based pagination
|
|
33
|
+
* client.use(createPaginationMiddleware({
|
|
34
|
+
* useOffset: true,
|
|
35
|
+
* defaultLimit: 50
|
|
36
|
+
* }));
|
|
37
|
+
*
|
|
38
|
+
* await client.call(
|
|
39
|
+
* { service: "users", operation: "list" },
|
|
40
|
+
* {},
|
|
41
|
+
* { offset: 100, limit: 50 } // Metadata
|
|
42
|
+
* );
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
export function createPaginationMiddleware(options = {}) {
|
|
46
|
+
const { defaultLimit = 50, maxLimit = 1000, pageKey = "page", limitKey = "limit", offsetKey = "offset", useOffset = false, } = options;
|
|
47
|
+
return (next) => {
|
|
48
|
+
return async function* (context) {
|
|
49
|
+
const { metadata } = context.message;
|
|
50
|
+
// Extract pagination params
|
|
51
|
+
let page = metadata[pageKey];
|
|
52
|
+
let limit = metadata[limitKey];
|
|
53
|
+
let offset = metadata[offsetKey];
|
|
54
|
+
// Apply defaults and limits
|
|
55
|
+
if (limit === undefined) {
|
|
56
|
+
limit = defaultLimit;
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
// Enforce maximum limit
|
|
60
|
+
limit = Math.min(Math.max(1, limit), maxLimit);
|
|
61
|
+
}
|
|
62
|
+
if (useOffset) {
|
|
63
|
+
// Offset-based pagination
|
|
64
|
+
if (offset === undefined) {
|
|
65
|
+
offset = 0;
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
offset = Math.max(0, offset);
|
|
69
|
+
}
|
|
70
|
+
// Update message metadata, with the state as one object (PaginationContext)
|
|
71
|
+
context.message.metadata = {
|
|
72
|
+
...metadata,
|
|
73
|
+
[offsetKey]: offset,
|
|
74
|
+
[limitKey]: limit,
|
|
75
|
+
pagination: { offset, limit },
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
// Page-based pagination
|
|
80
|
+
if (page === undefined) {
|
|
81
|
+
page = 1;
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
page = Math.max(1, page);
|
|
85
|
+
}
|
|
86
|
+
// Update message metadata, with the state as one object (PaginationContext)
|
|
87
|
+
context.message.metadata = {
|
|
88
|
+
...metadata,
|
|
89
|
+
[pageKey]: page,
|
|
90
|
+
[limitKey]: limit,
|
|
91
|
+
pagination: { page, limit },
|
|
92
|
+
};
|
|
93
|
+
// Optionally compute offset for backends that need it
|
|
94
|
+
const computedOffset = (page - 1) * limit;
|
|
95
|
+
if (metadata["includeOffset"]) {
|
|
96
|
+
context.message.metadata[offsetKey] = computedOffset;
|
|
97
|
+
context.message.metadata["pagination"] = { page, offset: computedOffset, limit };
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
// Execute request
|
|
101
|
+
yield* next(context);
|
|
102
|
+
};
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Helper to create an async iterator for paginated results.
|
|
107
|
+
*
|
|
108
|
+
* Automatically fetches all pages and yields items as they arrive.
|
|
109
|
+
*
|
|
110
|
+
* @param client - The client instance
|
|
111
|
+
* @param method - Method to call
|
|
112
|
+
* @param payload - Request payload
|
|
113
|
+
* @param options - Pagination options
|
|
114
|
+
* @returns Async iterable of all items across all pages
|
|
115
|
+
*
|
|
116
|
+
* @example
|
|
117
|
+
* ```typescript
|
|
118
|
+
* // Fetch all users across all pages
|
|
119
|
+
* for await (const user of paginateAll(client, { service: "users", operation: "list" }, {})) {
|
|
120
|
+
* console.log(user);
|
|
121
|
+
* }
|
|
122
|
+
* ```
|
|
123
|
+
*/
|
|
124
|
+
export async function* paginateAll(client, method, payload, options = {}) {
|
|
125
|
+
const { limit = 50, maxPages = Infinity } = options;
|
|
126
|
+
let page = 1;
|
|
127
|
+
let hasMore = true;
|
|
128
|
+
while (hasMore && page <= maxPages) {
|
|
129
|
+
const response = await client.call(method, payload, { page, limit });
|
|
130
|
+
// Yield all items from this page
|
|
131
|
+
for (const item of response.items) {
|
|
132
|
+
yield item;
|
|
133
|
+
}
|
|
134
|
+
// Check if there are more pages
|
|
135
|
+
if (response.hasMore !== undefined) {
|
|
136
|
+
hasMore = response.hasMore;
|
|
137
|
+
}
|
|
138
|
+
else if (response.total !== undefined) {
|
|
139
|
+
hasMore = page * limit < response.total;
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
// If no pagination metadata, check if we got a full page
|
|
143
|
+
hasMore = response.items.length === limit;
|
|
144
|
+
}
|
|
145
|
+
page++;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=pagination.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pagination.js","sourceRoot":"","sources":["../../../src/client/middleware/pagination.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA8CH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,MAAM,UAAU,0BAA0B,CACxC,OAAO,GAAsB,EAAE;IAE/B,MAAM,EACJ,YAAY,GAAG,EAAE,EACjB,QAAQ,GAAG,IAAI,EACf,OAAO,GAAG,MAAM,EAChB,QAAQ,GAAG,OAAO,EAClB,SAAS,GAAG,QAAQ,EACpB,SAAS,GAAG,KAAK,GAClB,GAAG,OAAO,CAAC;IAEZ,OAAO,CAAa,IAA8B,EAA4B,EAAE;QAC9E,OAAO,KAAK,SAAS,CAAC,EAAE,OAA4B;YAClD,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;YAErC,4BAA4B;YAC5B,IAAI,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAuB,CAAC;YACnD,IAAI,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAuB,CAAC;YACrD,IAAI,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAuB,CAAC;YAEvD,4BAA4B;YAC5B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,KAAK,GAAG,YAAY,CAAC;YACvB,CAAC;iBAAM,CAAC;gBACN,wBAAwB;gBACxB,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,QAAQ,CAAC,CAAC;YACjD,CAAC;YAED,IAAI,SAAS,EAAE,CAAC;gBACd,0BAA0B;gBAC1B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;oBACzB,MAAM,GAAG,CAAC,CAAC;gBACb,CAAC;qBAAM,CAAC;oBACN,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;gBAC/B,CAAC;gBAED,4EAA4E;gBAC5E,OAAO,CAAC,OAAO,CAAC,QAAQ,GAAG;oBACzB,GAAG,QAAQ;oBACX,CAAC,SAAS,CAAC,EAAE,MAAM;oBACnB,CAAC,QAAQ,CAAC,EAAE,KAAK;oBACjB,UAAU,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;iBAC9B,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,wBAAwB;gBACxB,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;oBACvB,IAAI,GAAG,CAAC,CAAC;gBACX,CAAC;qBAAM,CAAC;oBACN,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;gBAC3B,CAAC;gBAED,4EAA4E;gBAC5E,OAAO,CAAC,OAAO,CAAC,QAAQ,GAAG;oBACzB,GAAG,QAAQ;oBACX,CAAC,OAAO,CAAC,EAAE,IAAI;oBACf,CAAC,QAAQ,CAAC,EAAE,KAAK;oBACjB,UAAU,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;iBAC5B,CAAC;gBAEF,sDAAsD;gBACtD,MAAM,cAAc,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;gBAC1C,IAAI,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;oBAC9B,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,cAAc,CAAC;oBACrD,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC;gBACnF,CAAC;YACH,CAAC;YAED,kBAAkB;YAClB,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,WAAW,CAChC,MAA+E,EAC/E,MAAW,EACX,OAAa,EACb,OAAO,GAA0C,EAAE;IAEnD,MAAM,EAAE,KAAK,GAAG,EAAE,EAAE,QAAQ,GAAG,QAAQ,EAAE,GAAG,OAAO,CAAC;IACpD,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,OAAO,GAAG,IAAI,CAAC;IAEnB,OAAO,OAAO,IAAI,IAAI,IAAI,QAAQ,EAAE,CAAC;QACnC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAErE,iCAAiC;QACjC,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YAClC,MAAM,IAAI,CAAC;QACb,CAAC;QAED,gCAAgC;QAChC,IAAI,QAAQ,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YACnC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;QAC7B,CAAC;aAAM,IAAI,QAAQ,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YACxC,OAAO,GAAG,IAAI,GAAG,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;QAC1C,CAAC;aAAM,CAAC;YACN,yDAAyD;YACzD,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC;QAC5C,CAAC;QAED,IAAI,EAAE,CAAC;IACT,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rate Limiting Middleware
|
|
3
|
+
*
|
|
4
|
+
* Throttles requests using token bucket algorithm.
|
|
5
|
+
* Prevents overwhelming services with too many requests.
|
|
6
|
+
*
|
|
7
|
+
* Works with both client and server!
|
|
8
|
+
*/
|
|
9
|
+
import type { ClientMiddleware, TypedClientMiddleware } from "../types.js";
|
|
10
|
+
import type { RateLimitContext } from "./contexts.js";
|
|
11
|
+
/**
|
|
12
|
+
* Rate limiting options.
|
|
13
|
+
*/
|
|
14
|
+
export interface RateLimitOptions {
|
|
15
|
+
/**
|
|
16
|
+
* Maximum number of requests per time window.
|
|
17
|
+
* @default 100
|
|
18
|
+
*/
|
|
19
|
+
maxRequests?: number;
|
|
20
|
+
/**
|
|
21
|
+
* Time window in milliseconds.
|
|
22
|
+
* @default 60000 (1 minute)
|
|
23
|
+
*/
|
|
24
|
+
window?: number;
|
|
25
|
+
/**
|
|
26
|
+
* Behavior when rate limit is exceeded.
|
|
27
|
+
* - "reject": Throw error immediately
|
|
28
|
+
* - "queue": Queue requests and process when capacity available
|
|
29
|
+
* @default "reject"
|
|
30
|
+
*/
|
|
31
|
+
strategy?: "reject" | "queue";
|
|
32
|
+
/**
|
|
33
|
+
* Maximum queue size (only for "queue" strategy).
|
|
34
|
+
* @default 100
|
|
35
|
+
*/
|
|
36
|
+
maxQueueSize?: number;
|
|
37
|
+
/**
|
|
38
|
+
* Custom error message.
|
|
39
|
+
*/
|
|
40
|
+
message?: string;
|
|
41
|
+
/**
|
|
42
|
+
* Callback when rate limit is exceeded.
|
|
43
|
+
*/
|
|
44
|
+
onRateLimitExceeded?: (stats: RateLimitStats) => void;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Rate limit statistics.
|
|
48
|
+
*/
|
|
49
|
+
export interface RateLimitStats {
|
|
50
|
+
tokensAvailable: number;
|
|
51
|
+
maxTokens: number;
|
|
52
|
+
queueSize: number;
|
|
53
|
+
totalRequests: number;
|
|
54
|
+
rejectedRequests: number;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Rate limit error thrown when limit exceeded.
|
|
58
|
+
*/
|
|
59
|
+
export declare class RateLimitError extends Error {
|
|
60
|
+
readonly stats: RateLimitStats;
|
|
61
|
+
constructor(message: string, stats: RateLimitStats);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Create rate limiting middleware using token bucket algorithm.
|
|
65
|
+
*
|
|
66
|
+
* @param options - Rate limiting configuration
|
|
67
|
+
* @returns Middleware function
|
|
68
|
+
*
|
|
69
|
+
* @example
|
|
70
|
+
* ```typescript
|
|
71
|
+
* // Reject strategy (default)
|
|
72
|
+
* client.use(createRateLimitMiddleware({
|
|
73
|
+
* maxRequests: 100, // 100 requests
|
|
74
|
+
* window: 60000, // per minute
|
|
75
|
+
* strategy: "reject" // Throw error when exceeded
|
|
76
|
+
* }));
|
|
77
|
+
*
|
|
78
|
+
* // Queue strategy
|
|
79
|
+
* client.use(createRateLimitMiddleware({
|
|
80
|
+
* maxRequests: 10,
|
|
81
|
+
* window: 1000,
|
|
82
|
+
* strategy: "queue", // Queue requests when exceeded
|
|
83
|
+
* maxQueueSize: 50
|
|
84
|
+
* }));
|
|
85
|
+
* ```
|
|
86
|
+
*/
|
|
87
|
+
export declare function createRateLimitMiddleware(options?: RateLimitOptions): TypedClientMiddleware<RateLimitContext, {}>;
|
|
88
|
+
/**
|
|
89
|
+
* Create per-service rate limiter.
|
|
90
|
+
*
|
|
91
|
+
* Applies different rate limits based on service name.
|
|
92
|
+
*
|
|
93
|
+
* @example
|
|
94
|
+
* ```typescript
|
|
95
|
+
* client.use(createPerServiceRateLimiter({
|
|
96
|
+
* users: { maxRequests: 100, window: 60000 },
|
|
97
|
+
* orders: { maxRequests: 50, window: 60000 },
|
|
98
|
+
* default: { maxRequests: 200, window: 60000 }
|
|
99
|
+
* }));
|
|
100
|
+
* ```
|
|
101
|
+
*/
|
|
102
|
+
export declare function createPerServiceRateLimiter(limits: Record<string, RateLimitOptions> & {
|
|
103
|
+
default?: RateLimitOptions;
|
|
104
|
+
}): ClientMiddleware;
|
|
105
|
+
//# sourceMappingURL=rate-limit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rate-limit.d.ts","sourceRoot":"","sources":["../../../src/client/middleware/rate-limit.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAA+B,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACxG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAGtD;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IAE9B;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;CACvD;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,qBAAa,cAAe,SAAQ,KAAK;aAGrB,KAAK,EAAE,cAAc;IAFvC,YACE,OAAO,EAAE,MAAM,EACC,KAAK,EAAE,cAAc,EAItC;CACF;AAWD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,GAAE,gBAAqB,GAC7B,qBAAqB,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAwJ7C;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,GAAG;IAAE,OAAO,CAAC,EAAE,gBAAgB,CAAA;CAAE,GACxE,gBAAgB,CA+BlB"}
|