@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,181 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Route Resolver
|
|
3
|
+
*
|
|
4
|
+
* Resolves nested route structures to procedure definitions.
|
|
5
|
+
* Validates routes against the procedure registry.
|
|
6
|
+
*/
|
|
7
|
+
import type { AnyProcedure, ProcedurePath } from "../procedures/types.js";
|
|
8
|
+
import type { ProcedureRegistry } from "../procedures/registry.js";
|
|
9
|
+
import type { Route } from "./call-types.js";
|
|
10
|
+
import type { OutputConfig } from "./consumption.js";
|
|
11
|
+
/**
|
|
12
|
+
* Resolved route entry with procedure and input.
|
|
13
|
+
*/
|
|
14
|
+
export interface ResolvedRoute {
|
|
15
|
+
/** Path to the procedure */
|
|
16
|
+
path: ProcedurePath;
|
|
17
|
+
/** The procedure definition */
|
|
18
|
+
procedure: AnyProcedure;
|
|
19
|
+
/** Input payload for the procedure handler (validated, with schema defaults) */
|
|
20
|
+
input: unknown;
|
|
21
|
+
/** How the caller reads the output: sponge (the default), stream or handlers (the `out` of the leaf) */
|
|
22
|
+
outputConfig: OutputConfig;
|
|
23
|
+
/**
|
|
24
|
+
* True when the resolver validated the input. A schema that validates asynchronously cannot
|
|
25
|
+
* be checked by the synchronous resolver: the invocation validates that input.
|
|
26
|
+
*/
|
|
27
|
+
inputValidated?: boolean;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Resolution error for a specific path.
|
|
31
|
+
*/
|
|
32
|
+
export interface RouteResolutionError {
|
|
33
|
+
/** Path that failed to resolve */
|
|
34
|
+
path: ProcedurePath;
|
|
35
|
+
/** Error type */
|
|
36
|
+
type: "not_found" | "invalid_input" | "validation_error";
|
|
37
|
+
/** Error message */
|
|
38
|
+
message: string;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Result of route resolution.
|
|
42
|
+
*/
|
|
43
|
+
export interface RouteResolutionResult {
|
|
44
|
+
/** Successfully resolved routes */
|
|
45
|
+
resolved: ResolvedRoute[];
|
|
46
|
+
/** Errors encountered during resolution */
|
|
47
|
+
errors: RouteResolutionError[];
|
|
48
|
+
/**
|
|
49
|
+
* The routes that the resolver did not examine: it stopped at the first error. A caller
|
|
50
|
+
* reports each of them, so no leaf of the route is missing from the response (deep dive CORE-14).
|
|
51
|
+
*/
|
|
52
|
+
skipped: ProcedurePath[];
|
|
53
|
+
/** Whether all routes resolved successfully */
|
|
54
|
+
success: boolean;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Resolves nested route structures to procedures.
|
|
58
|
+
*
|
|
59
|
+
* Features:
|
|
60
|
+
* - Path-based procedure lookup
|
|
61
|
+
* - Input validation against schemas
|
|
62
|
+
* - Batch resolution for multi-route calls
|
|
63
|
+
* - Detailed error reporting
|
|
64
|
+
*
|
|
65
|
+
* @example
|
|
66
|
+
* ```typescript
|
|
67
|
+
* const resolver = new RouteResolver(registry);
|
|
68
|
+
*
|
|
69
|
+
* const result = resolver.resolve({
|
|
70
|
+
* collections: {
|
|
71
|
+
* users: {
|
|
72
|
+
* get: { id: '123' }
|
|
73
|
+
* }
|
|
74
|
+
* }
|
|
75
|
+
* });
|
|
76
|
+
*
|
|
77
|
+
* if (result.success) {
|
|
78
|
+
* for (const { path, procedure, input } of result.resolved) {
|
|
79
|
+
* // Execute procedure with input
|
|
80
|
+
* }
|
|
81
|
+
* }
|
|
82
|
+
* ```
|
|
83
|
+
*/
|
|
84
|
+
export declare class RouteResolver {
|
|
85
|
+
private readonly registry;
|
|
86
|
+
constructor(registry: ProcedureRegistry);
|
|
87
|
+
/**
|
|
88
|
+
* Resolve a route structure to procedures.
|
|
89
|
+
*
|
|
90
|
+
* @param route - Nested route object
|
|
91
|
+
* @param options - Resolution options
|
|
92
|
+
* @returns Resolution result with procedures or errors
|
|
93
|
+
*/
|
|
94
|
+
resolve(route: Route, options?: RouteResolverOptions): RouteResolutionResult;
|
|
95
|
+
/**
|
|
96
|
+
* Resolve a single path to a procedure.
|
|
97
|
+
*
|
|
98
|
+
* @param path - Procedure path
|
|
99
|
+
* @returns Procedure or undefined if not found
|
|
100
|
+
*/
|
|
101
|
+
getProcedure(path: ProcedurePath): AnyProcedure | undefined;
|
|
102
|
+
/**
|
|
103
|
+
* Check if a path resolves to a valid procedure.
|
|
104
|
+
*
|
|
105
|
+
* @param path - Procedure path
|
|
106
|
+
* @returns true if procedure exists at path
|
|
107
|
+
*/
|
|
108
|
+
hasProcedure(path: ProcedurePath): boolean;
|
|
109
|
+
/**
|
|
110
|
+
* Validate route structure without resolving.
|
|
111
|
+
* Useful for compile-time or early validation.
|
|
112
|
+
*
|
|
113
|
+
* @param route - Route to validate
|
|
114
|
+
* @returns Validation errors or empty array if valid
|
|
115
|
+
*/
|
|
116
|
+
validate(route: Route): RouteResolutionError[];
|
|
117
|
+
/**
|
|
118
|
+
* Get all procedures that would be invoked by a route.
|
|
119
|
+
* Does not validate inputs.
|
|
120
|
+
*
|
|
121
|
+
* @param route - Route structure
|
|
122
|
+
* @returns Array of [path, procedure] tuples for found procedures
|
|
123
|
+
*/
|
|
124
|
+
getProceduresForRoute(route: Route): Array<[ProcedurePath, AnyProcedure]>;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Options for route resolution.
|
|
128
|
+
*/
|
|
129
|
+
export interface RouteResolverOptions {
|
|
130
|
+
/** Whether to validate input against schemas (default: true) */
|
|
131
|
+
validateInput?: boolean;
|
|
132
|
+
/** Continue resolving even if some routes fail (default: false) */
|
|
133
|
+
continueOnError?: boolean;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Create a route resolver for a registry.
|
|
137
|
+
*
|
|
138
|
+
* @param registry - Procedure registry
|
|
139
|
+
* @returns Route resolver instance
|
|
140
|
+
*/
|
|
141
|
+
export declare function createRouteResolver(registry: ProcedureRegistry): RouteResolver;
|
|
142
|
+
/**
|
|
143
|
+
* Quickly validate a route against a registry.
|
|
144
|
+
*
|
|
145
|
+
* @param route - Route to validate
|
|
146
|
+
* @param registry - Procedure registry
|
|
147
|
+
* @returns true if all paths in route are valid procedures
|
|
148
|
+
*/
|
|
149
|
+
export declare function isValidRoute(route: Route, registry: ProcedureRegistry): boolean;
|
|
150
|
+
/**
|
|
151
|
+
* Get missing paths from a route.
|
|
152
|
+
*
|
|
153
|
+
* @param route - Route to check
|
|
154
|
+
* @param registry - Procedure registry
|
|
155
|
+
* @returns Array of paths not found in registry
|
|
156
|
+
*/
|
|
157
|
+
export declare function getMissingPaths(route: Route, registry: ProcedureRegistry): ProcedurePath[];
|
|
158
|
+
/**
|
|
159
|
+
* Check if a path matches a pattern with wildcards.
|
|
160
|
+
* Supports '*' for single segment and '**' for multiple segments.
|
|
161
|
+
*
|
|
162
|
+
* @param path - Path to check
|
|
163
|
+
* @param pattern - Pattern to match against
|
|
164
|
+
* @returns true if path matches pattern
|
|
165
|
+
*
|
|
166
|
+
* @example
|
|
167
|
+
* ```typescript
|
|
168
|
+
* matchPath(['users', 'get'], ['users', '*']); // true
|
|
169
|
+
* matchPath(['users', 'orders', 'list'], ['users', '**']); // true
|
|
170
|
+
* ```
|
|
171
|
+
*/
|
|
172
|
+
export declare function matchPath(path: ProcedurePath, pattern: ProcedurePath): boolean;
|
|
173
|
+
/**
|
|
174
|
+
* Filter routes by path pattern.
|
|
175
|
+
*
|
|
176
|
+
* @param route - Route to filter
|
|
177
|
+
* @param pattern - Pattern to match
|
|
178
|
+
* @returns Route with only matching paths
|
|
179
|
+
*/
|
|
180
|
+
export declare function filterRouteByPattern(route: Route, pattern: ProcedurePath): Route;
|
|
181
|
+
//# sourceMappingURL=route-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"route-resolver.d.ts","sourceRoot":"","sources":["../../src/client/route-resolver.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EAAE,KAAK,EAAa,MAAM,iBAAiB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAQrD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,4BAA4B;IAC5B,IAAI,EAAE,aAAa,CAAC;IACpB,+BAA+B;IAC/B,SAAS,EAAE,YAAY,CAAC;IACxB,gFAAgF;IAChF,KAAK,EAAE,OAAO,CAAC;IAEf,wGAAwG;IACxG,YAAY,EAAE,YAAY,CAAC;IAE3B;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,kCAAkC;IAClC,IAAI,EAAE,aAAa,CAAC;IACpB,iBAAiB;IACjB,IAAI,EAAE,WAAW,GAAG,eAAe,GAAG,kBAAkB,CAAC;IACzD,oBAAoB;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,mCAAmC;IACnC,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,2CAA2C;IAC3C,MAAM,EAAE,oBAAoB,EAAE,CAAC;IAC/B;;;OAGG;IACH,OAAO,EAAE,aAAa,EAAE,CAAC;IACzB,+CAA+C;IAC/C,OAAO,EAAE,OAAO,CAAC;CAClB;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,aAAa;IACZ,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAArC,YAA6B,QAAQ,EAAE,iBAAiB,EAAI;IAE5D;;;;;;OAMG;IACH,OAAO,CACL,KAAK,EAAE,KAAK,EACZ,OAAO,GAAE,oBAAyB,GACjC,qBAAqB,CA0DvB;IAED;;;;;OAKG;IACH,YAAY,CAAC,IAAI,EAAE,aAAa,GAAG,YAAY,GAAG,SAAS,CAE1D;IAED;;;;;OAKG;IACH,YAAY,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAEzC;IAED;;;;;;OAMG;IACH,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,oBAAoB,EAAE,CA6B7C;IAED;;;;;;OAMG;IACH,qBAAqB,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,CAAC,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC,CAYxE;CACF;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,gEAAgE;IAChE,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,mEAAmE;IACnE,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAMD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,aAAa,CAE9E;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAU/E;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,iBAAiB,GAC1B,aAAa,EAAE,CAWjB;AAMD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAkC9E;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,GAAG,KAAK,CA0BhF"}
|
|
@@ -0,0 +1,300 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Route Resolver
|
|
3
|
+
*
|
|
4
|
+
* Resolves nested route structures to procedure definitions.
|
|
5
|
+
* Validates routes against the procedure registry.
|
|
6
|
+
*/
|
|
7
|
+
import { flattenRoute } from "./call-types.js";
|
|
8
|
+
import { validateSchema } from "../procedures/schema.js";
|
|
9
|
+
// =============================================================================
|
|
10
|
+
// Route Resolver Class
|
|
11
|
+
// =============================================================================
|
|
12
|
+
/**
|
|
13
|
+
* Resolves nested route structures to procedures.
|
|
14
|
+
*
|
|
15
|
+
* Features:
|
|
16
|
+
* - Path-based procedure lookup
|
|
17
|
+
* - Input validation against schemas
|
|
18
|
+
* - Batch resolution for multi-route calls
|
|
19
|
+
* - Detailed error reporting
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```typescript
|
|
23
|
+
* const resolver = new RouteResolver(registry);
|
|
24
|
+
*
|
|
25
|
+
* const result = resolver.resolve({
|
|
26
|
+
* collections: {
|
|
27
|
+
* users: {
|
|
28
|
+
* get: { id: '123' }
|
|
29
|
+
* }
|
|
30
|
+
* }
|
|
31
|
+
* });
|
|
32
|
+
*
|
|
33
|
+
* if (result.success) {
|
|
34
|
+
* for (const { path, procedure, input } of result.resolved) {
|
|
35
|
+
* // Execute procedure with input
|
|
36
|
+
* }
|
|
37
|
+
* }
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
export class RouteResolver {
|
|
41
|
+
registry;
|
|
42
|
+
constructor(registry) {
|
|
43
|
+
this.registry = registry;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Resolve a route structure to procedures.
|
|
47
|
+
*
|
|
48
|
+
* @param route - Nested route object
|
|
49
|
+
* @param options - Resolution options
|
|
50
|
+
* @returns Resolution result with procedures or errors
|
|
51
|
+
*/
|
|
52
|
+
resolve(route, options = {}) {
|
|
53
|
+
const flattened = flattenRoute(route);
|
|
54
|
+
const resolved = [];
|
|
55
|
+
const errors = [];
|
|
56
|
+
const skipped = [];
|
|
57
|
+
for (const [index, entry] of flattened.entries()) {
|
|
58
|
+
const { path, input, outputConfig } = entry;
|
|
59
|
+
const procedure = this.registry.get(path);
|
|
60
|
+
if (!procedure) {
|
|
61
|
+
errors.push({
|
|
62
|
+
path,
|
|
63
|
+
type: "not_found",
|
|
64
|
+
message: `No procedure registered at path: ${path.join(".")}`,
|
|
65
|
+
});
|
|
66
|
+
continue;
|
|
67
|
+
}
|
|
68
|
+
// Validate input if schema validation is enabled. The handler gets the validated data
|
|
69
|
+
// (with schema defaults), as in exec() and on the server - not the raw leaf, which for
|
|
70
|
+
// an { in, out } leaf is the whole wrapper (BUGS-2026-07 H31).
|
|
71
|
+
let handlerInput = input;
|
|
72
|
+
let inputValidated = false;
|
|
73
|
+
const validationResult = options.validateInput !== false ? validateSchema(procedure.input, input) : undefined;
|
|
74
|
+
if (validationResult && !(validationResult instanceof Promise)) {
|
|
75
|
+
if (!validationResult.ok) {
|
|
76
|
+
errors.push({
|
|
77
|
+
path,
|
|
78
|
+
type: "validation_error",
|
|
79
|
+
message: `Input validation failed: ${validationResult.message}`,
|
|
80
|
+
});
|
|
81
|
+
if (!options.continueOnError) {
|
|
82
|
+
skipped.push(...flattened.slice(index + 1).map((rest) => rest.path));
|
|
83
|
+
break;
|
|
84
|
+
}
|
|
85
|
+
continue;
|
|
86
|
+
}
|
|
87
|
+
handlerInput = validationResult.value;
|
|
88
|
+
inputValidated = true;
|
|
89
|
+
}
|
|
90
|
+
resolved.push({
|
|
91
|
+
path,
|
|
92
|
+
procedure,
|
|
93
|
+
input: handlerInput,
|
|
94
|
+
outputConfig,
|
|
95
|
+
inputValidated,
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
return {
|
|
99
|
+
resolved,
|
|
100
|
+
errors,
|
|
101
|
+
skipped,
|
|
102
|
+
success: errors.length === 0,
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Resolve a single path to a procedure.
|
|
107
|
+
*
|
|
108
|
+
* @param path - Procedure path
|
|
109
|
+
* @returns Procedure or undefined if not found
|
|
110
|
+
*/
|
|
111
|
+
getProcedure(path) {
|
|
112
|
+
return this.registry.get(path);
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Check if a path resolves to a valid procedure.
|
|
116
|
+
*
|
|
117
|
+
* @param path - Procedure path
|
|
118
|
+
* @returns true if procedure exists at path
|
|
119
|
+
*/
|
|
120
|
+
hasProcedure(path) {
|
|
121
|
+
return this.registry.has(path);
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Validate route structure without resolving.
|
|
125
|
+
* Useful for compile-time or early validation.
|
|
126
|
+
*
|
|
127
|
+
* @param route - Route to validate
|
|
128
|
+
* @returns Validation errors or empty array if valid
|
|
129
|
+
*/
|
|
130
|
+
validate(route) {
|
|
131
|
+
const flattened = flattenRoute(route);
|
|
132
|
+
const errors = [];
|
|
133
|
+
for (const entry of flattened) {
|
|
134
|
+
const { path, input } = entry;
|
|
135
|
+
const procedure = this.registry.get(path);
|
|
136
|
+
if (!procedure) {
|
|
137
|
+
errors.push({
|
|
138
|
+
path,
|
|
139
|
+
type: "not_found",
|
|
140
|
+
message: `No procedure registered at path: ${path.join(".")}`,
|
|
141
|
+
});
|
|
142
|
+
continue;
|
|
143
|
+
}
|
|
144
|
+
const validationResult = validateSchema(procedure.input, input);
|
|
145
|
+
// An asynchronous schema is checked when the procedure runs
|
|
146
|
+
if (!(validationResult instanceof Promise) && !validationResult.ok) {
|
|
147
|
+
errors.push({
|
|
148
|
+
path,
|
|
149
|
+
type: "validation_error",
|
|
150
|
+
message: `Input validation failed: ${validationResult.message}`,
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
return errors;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Get all procedures that would be invoked by a route.
|
|
158
|
+
* Does not validate inputs.
|
|
159
|
+
*
|
|
160
|
+
* @param route - Route structure
|
|
161
|
+
* @returns Array of [path, procedure] tuples for found procedures
|
|
162
|
+
*/
|
|
163
|
+
getProceduresForRoute(route) {
|
|
164
|
+
const flattened = flattenRoute(route);
|
|
165
|
+
const results = [];
|
|
166
|
+
for (const entry of flattened) {
|
|
167
|
+
const procedure = this.registry.get(entry.path);
|
|
168
|
+
if (procedure) {
|
|
169
|
+
results.push([entry.path, procedure]);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
return results;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
// =============================================================================
|
|
176
|
+
// Helper Functions
|
|
177
|
+
// =============================================================================
|
|
178
|
+
/**
|
|
179
|
+
* Create a route resolver for a registry.
|
|
180
|
+
*
|
|
181
|
+
* @param registry - Procedure registry
|
|
182
|
+
* @returns Route resolver instance
|
|
183
|
+
*/
|
|
184
|
+
export function createRouteResolver(registry) {
|
|
185
|
+
return new RouteResolver(registry);
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Quickly validate a route against a registry.
|
|
189
|
+
*
|
|
190
|
+
* @param route - Route to validate
|
|
191
|
+
* @param registry - Procedure registry
|
|
192
|
+
* @returns true if all paths in route are valid procedures
|
|
193
|
+
*/
|
|
194
|
+
export function isValidRoute(route, registry) {
|
|
195
|
+
const flattened = flattenRoute(route);
|
|
196
|
+
for (const entry of flattened) {
|
|
197
|
+
if (!registry.has(entry.path)) {
|
|
198
|
+
return false;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
return true;
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Get missing paths from a route.
|
|
205
|
+
*
|
|
206
|
+
* @param route - Route to check
|
|
207
|
+
* @param registry - Procedure registry
|
|
208
|
+
* @returns Array of paths not found in registry
|
|
209
|
+
*/
|
|
210
|
+
export function getMissingPaths(route, registry) {
|
|
211
|
+
const flattened = flattenRoute(route);
|
|
212
|
+
const missing = [];
|
|
213
|
+
for (const entry of flattened) {
|
|
214
|
+
if (!registry.has(entry.path)) {
|
|
215
|
+
missing.push(entry.path);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
return missing;
|
|
219
|
+
}
|
|
220
|
+
// =============================================================================
|
|
221
|
+
// Path Matching Utilities
|
|
222
|
+
// =============================================================================
|
|
223
|
+
/**
|
|
224
|
+
* Check if a path matches a pattern with wildcards.
|
|
225
|
+
* Supports '*' for single segment and '**' for multiple segments.
|
|
226
|
+
*
|
|
227
|
+
* @param path - Path to check
|
|
228
|
+
* @param pattern - Pattern to match against
|
|
229
|
+
* @returns true if path matches pattern
|
|
230
|
+
*
|
|
231
|
+
* @example
|
|
232
|
+
* ```typescript
|
|
233
|
+
* matchPath(['users', 'get'], ['users', '*']); // true
|
|
234
|
+
* matchPath(['users', 'orders', 'list'], ['users', '**']); // true
|
|
235
|
+
* ```
|
|
236
|
+
*/
|
|
237
|
+
export function matchPath(path, pattern) {
|
|
238
|
+
let pathIndex = 0;
|
|
239
|
+
let patternIndex = 0;
|
|
240
|
+
while (patternIndex < pattern.length) {
|
|
241
|
+
const segment = pattern[patternIndex];
|
|
242
|
+
if (segment === "**") {
|
|
243
|
+
// Match rest of path
|
|
244
|
+
if (patternIndex === pattern.length - 1) {
|
|
245
|
+
return true;
|
|
246
|
+
}
|
|
247
|
+
// Try to match remaining pattern at each position
|
|
248
|
+
for (let i = pathIndex; i <= path.length; i++) {
|
|
249
|
+
if (matchPath(path.slice(i), pattern.slice(patternIndex + 1))) {
|
|
250
|
+
return true;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
return false;
|
|
254
|
+
}
|
|
255
|
+
if (pathIndex >= path.length) {
|
|
256
|
+
return false;
|
|
257
|
+
}
|
|
258
|
+
if (segment === "*" || segment === path[pathIndex]) {
|
|
259
|
+
pathIndex++;
|
|
260
|
+
patternIndex++;
|
|
261
|
+
}
|
|
262
|
+
else {
|
|
263
|
+
return false;
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
return pathIndex === path.length;
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Filter routes by path pattern.
|
|
270
|
+
*
|
|
271
|
+
* @param route - Route to filter
|
|
272
|
+
* @param pattern - Pattern to match
|
|
273
|
+
* @returns Route with only matching paths
|
|
274
|
+
*/
|
|
275
|
+
export function filterRouteByPattern(route, pattern) {
|
|
276
|
+
const flattened = flattenRoute(route);
|
|
277
|
+
const filtered = {};
|
|
278
|
+
for (const entry of flattened) {
|
|
279
|
+
if (matchPath(entry.path, pattern)) {
|
|
280
|
+
// Rebuild nested structure for this path
|
|
281
|
+
let current = filtered;
|
|
282
|
+
for (let i = 0; i < entry.path.length; i++) {
|
|
283
|
+
const segment = entry.path[i];
|
|
284
|
+
const isLast = i === entry.path.length - 1;
|
|
285
|
+
if (isLast) {
|
|
286
|
+
current[segment] = entry.leaf;
|
|
287
|
+
}
|
|
288
|
+
else {
|
|
289
|
+
// An own key only (deep dive CORE-6). flattenRoute rejected the prototype keys.
|
|
290
|
+
if (!Object.hasOwn(current, segment)) {
|
|
291
|
+
current[segment] = {};
|
|
292
|
+
}
|
|
293
|
+
current = current[segment];
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
return filtered;
|
|
299
|
+
}
|
|
300
|
+
//# sourceMappingURL=route-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"route-resolver.js","sourceRoot":"","sources":["../../src/client/route-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type-safe Method construction from procedure registry
|
|
3
|
+
*
|
|
4
|
+
* This ensures that Method objects can only be created with valid
|
|
5
|
+
* service/operation combinations that exist in the registry.
|
|
6
|
+
*/
|
|
7
|
+
import type { Method } from './types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Generic typed method that constrains service and operation
|
|
10
|
+
* to values that exist in a procedure registry
|
|
11
|
+
*/
|
|
12
|
+
export interface TypedMethod<TRegistry extends Record<string, Record<string, any>>, TService extends keyof TRegistry & string = keyof TRegistry & string, TOperation extends keyof TRegistry[TService] & string = keyof TRegistry[TService] & string> extends Method {
|
|
13
|
+
service: TService;
|
|
14
|
+
operation: TOperation;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Create a type-safe method object
|
|
18
|
+
*
|
|
19
|
+
* Usage:
|
|
20
|
+
* const method = createMethod<ProcedureRegistry>('collections', 'getDocuments');
|
|
21
|
+
* // Autocomplete for both service and operation!
|
|
22
|
+
* // Compile error if service or operation doesn't exist
|
|
23
|
+
*/
|
|
24
|
+
export declare function createMethod<TRegistry extends Record<string, Record<string, any>>, TService extends keyof TRegistry & string, TOperation extends keyof TRegistry[TService] & string>(service: TService, operation: TOperation, version?: string): TypedMethod<TRegistry, TService, TOperation>;
|
|
25
|
+
/**
|
|
26
|
+
* Type guard to check if a Method matches the registry
|
|
27
|
+
*/
|
|
28
|
+
export declare function isValidMethod<TRegistry extends Record<string, Record<string, any>>>(method: Method, registry: TRegistry): method is TypedMethod<TRegistry>;
|
|
29
|
+
//# sourceMappingURL=typed-method.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typed-method.d.ts","sourceRoot":"","sources":["../../src/client/typed-method.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEzC;;;GAGG;AACH,MAAM,WAAW,WAAW,CAC1B,SAAS,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,EACrD,QAAQ,SAAS,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,SAAS,GAAG,MAAM,EACpE,UAAU,SAAS,MAAM,SAAS,CAAC,QAAQ,CAAC,GAAG,MAAM,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,GAAG,MAAM,CAC1F,SAAQ,MAAM;IACd,OAAO,EAAE,QAAQ,CAAC;IAClB,SAAS,EAAE,UAAU,CAAC;CACvB;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAC1B,SAAS,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,EACrD,QAAQ,SAAS,MAAM,SAAS,GAAG,MAAM,EACzC,UAAU,SAAS,MAAM,SAAS,CAAC,QAAQ,CAAC,GAAG,MAAM,EAErD,OAAO,EAAE,QAAQ,EACjB,SAAS,EAAE,UAAU,EACrB,OAAO,CAAC,EAAE,MAAM,GACf,WAAW,CAAC,SAAS,EAAE,QAAQ,EAAE,UAAU,CAAC,CAS9C;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,SAAS,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,EACjF,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,SAAS,GAClB,MAAM,IAAI,WAAW,CAAC,SAAS,CAAC,CASlC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type-safe Method construction from procedure registry
|
|
3
|
+
*
|
|
4
|
+
* This ensures that Method objects can only be created with valid
|
|
5
|
+
* service/operation combinations that exist in the registry.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Create a type-safe method object
|
|
9
|
+
*
|
|
10
|
+
* Usage:
|
|
11
|
+
* const method = createMethod<ProcedureRegistry>('collections', 'getDocuments');
|
|
12
|
+
* // Autocomplete for both service and operation!
|
|
13
|
+
* // Compile error if service or operation doesn't exist
|
|
14
|
+
*/
|
|
15
|
+
export function createMethod(service, operation, version) {
|
|
16
|
+
const method = {
|
|
17
|
+
service,
|
|
18
|
+
operation,
|
|
19
|
+
};
|
|
20
|
+
if (version !== undefined) {
|
|
21
|
+
method.version = version;
|
|
22
|
+
}
|
|
23
|
+
return method;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Type guard to check if a Method matches the registry
|
|
27
|
+
*/
|
|
28
|
+
export function isValidMethod(method, registry) {
|
|
29
|
+
const service = registry[method.service];
|
|
30
|
+
return (typeof method.service === 'string' &&
|
|
31
|
+
method.service in registry &&
|
|
32
|
+
typeof method.operation === 'string' &&
|
|
33
|
+
service !== undefined &&
|
|
34
|
+
method.operation in service);
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=typed-method.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typed-method.js","sourceRoot":"","sources":["../../src/client/typed-method.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAiBH;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAK1B,OAAiB,EACjB,SAAqB,EACrB,OAAgB;IAEhB,MAAM,MAAM,GAAiD;QAC3D,OAAO;QACP,SAAS;KACV,CAAC;IACF,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;IAC3B,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAC3B,MAAc,EACd,QAAmB;IAEnB,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACzC,OAAO,CACL,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ;QAClC,MAAM,CAAC,OAAO,IAAI,QAAQ;QAC1B,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ;QACpC,OAAO,KAAK,SAAS;QACrB,MAAM,CAAC,SAAS,IAAI,OAAO,CAC5B,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Typed Procedure Caller
|
|
3
|
+
*
|
|
4
|
+
* Creates a typed wrapper around a procedure caller function.
|
|
5
|
+
* Provides compile-time autocomplete for procedure paths, inputs, and outputs.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* import { createTypedCaller } from "@procedures/client";
|
|
10
|
+
* import type { MongoProcedures, ProcedureInput, ProcedureOutput } from "@procedures/mongo";
|
|
11
|
+
*
|
|
12
|
+
* // Create typed caller
|
|
13
|
+
* const call = createTypedCaller<MongoProcedures>(client.call.bind(client));
|
|
14
|
+
*
|
|
15
|
+
* // Full autocomplete on path and input!
|
|
16
|
+
* const result = await call(
|
|
17
|
+
* ["mongo", "documents", "find"],
|
|
18
|
+
* { query: { status: "active" } },
|
|
19
|
+
* { metadata: { collection: "users" } }
|
|
20
|
+
* );
|
|
21
|
+
* // result is typed as FindOutput
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
import type { CallOptions } from "./context.js";
|
|
25
|
+
/**
|
|
26
|
+
* Procedure definition with input and output types
|
|
27
|
+
*/
|
|
28
|
+
export interface ProcedureDef {
|
|
29
|
+
input: unknown;
|
|
30
|
+
output: unknown;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Nested procedure namespace
|
|
34
|
+
*/
|
|
35
|
+
export type ProcedureNamespace = {
|
|
36
|
+
[key: string]: ProcedureDef | ProcedureNamespace;
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Extract all valid paths from a procedures interface
|
|
40
|
+
*/
|
|
41
|
+
export type ProcedurePaths<T, Prefix extends string[] = []> = T extends ProcedureDef ? Prefix : T extends ProcedureNamespace ? {
|
|
42
|
+
[K in keyof T]: T[K] extends ProcedureDef ? [...Prefix, K & string] : T[K] extends ProcedureNamespace ? ProcedurePaths<T[K], [...Prefix, K & string]> : never;
|
|
43
|
+
}[keyof T] : never;
|
|
44
|
+
/**
|
|
45
|
+
* Get procedure definition at a path
|
|
46
|
+
*/
|
|
47
|
+
export type GetProcedure<T, P extends string[]> = P extends [infer K extends keyof T] ? T[K] : P extends [infer K extends keyof T, ...infer Rest extends string[]] ? GetProcedure<T[K], Rest> : never;
|
|
48
|
+
/**
|
|
49
|
+
* Extract input type for a path
|
|
50
|
+
*/
|
|
51
|
+
export type PathInput<T, P extends string[]> = GetProcedure<T, P> extends ProcedureDef ? GetProcedure<T, P>["input"] : never;
|
|
52
|
+
/**
|
|
53
|
+
* Extract output type for a path
|
|
54
|
+
*/
|
|
55
|
+
export type PathOutput<T, P extends string[]> = GetProcedure<T, P> extends ProcedureDef ? GetProcedure<T, P>["output"] : never;
|
|
56
|
+
/**
|
|
57
|
+
* Base caller function type
|
|
58
|
+
*/
|
|
59
|
+
export type BaseCaller = <TOutput>(path: string[], input: unknown, options?: CallOptions) => Promise<TOutput>;
|
|
60
|
+
/**
|
|
61
|
+
* Typed caller function
|
|
62
|
+
*/
|
|
63
|
+
export interface TypedCaller<T extends ProcedureNamespace> {
|
|
64
|
+
<P extends ProcedurePaths<T> & string[]>(path: P, input: PathInput<T, P>, options?: CallOptions): Promise<PathOutput<T, P>>;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Create a typed procedure caller
|
|
68
|
+
*
|
|
69
|
+
* Wraps a base caller function to provide compile-time type safety
|
|
70
|
+
* for procedure paths, inputs, and outputs.
|
|
71
|
+
*
|
|
72
|
+
* @param caller - Base caller function (e.g., client.call.bind(client))
|
|
73
|
+
* @returns Typed caller with autocomplete
|
|
74
|
+
*
|
|
75
|
+
* @example
|
|
76
|
+
* ```typescript
|
|
77
|
+
* import type { MongoProcedures } from "@procedures/mongo";
|
|
78
|
+
*
|
|
79
|
+
* const typedCall = createTypedCaller<MongoProcedures>(client.call.bind(client));
|
|
80
|
+
*
|
|
81
|
+
* // TypeScript knows:
|
|
82
|
+
* // - path must be a valid procedure path
|
|
83
|
+
* // - input must match the procedure's input type
|
|
84
|
+
* // - result is the procedure's output type
|
|
85
|
+
* const result = await typedCall(
|
|
86
|
+
* ["mongo", "documents", "find"],
|
|
87
|
+
* { query: {}, page: 1 }
|
|
88
|
+
* );
|
|
89
|
+
* ```
|
|
90
|
+
*/
|
|
91
|
+
export declare function createTypedCaller<T extends ProcedureNamespace>(caller: BaseCaller): TypedCaller<T>;
|
|
92
|
+
/**
|
|
93
|
+
* Type helper to merge multiple procedure interfaces
|
|
94
|
+
*
|
|
95
|
+
* @example
|
|
96
|
+
* ```typescript
|
|
97
|
+
* type AllProcedures = MergeProcedures<MongoProcedures & UIProcedures>;
|
|
98
|
+
* const call = createTypedCaller<AllProcedures>(client.call);
|
|
99
|
+
* ```
|
|
100
|
+
*/
|
|
101
|
+
export type MergeProcedures<T extends ProcedureNamespace> = T;
|
|
102
|
+
//# sourceMappingURL=typed.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typed.d.ts","sourceRoot":"","sources":["../../src/client/typed.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,GAAG,kBAAkB,CAAC;CAClD,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,EAAE,MAAM,SAAS,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS,YAAY,GAChF,MAAM,GACN,CAAC,SAAS,kBAAkB,GAC5B;KACG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,YAAY,GACrC,CAAC,GAAG,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,GACvB,CAAC,CAAC,CAAC,CAAC,SAAS,kBAAkB,GAC/B,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,GAC7C,KAAK;CACV,CAAC,MAAM,CAAC,CAAC,GACV,KAAK,CAAC;AAEV;;GAEG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,MAAM,CAAC,CAAC,GACjF,CAAC,CAAC,CAAC,CAAC,GACJ,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,MAAM,CAAC,EAAE,GAAG,MAAM,IAAI,SAAS,MAAM,EAAE,CAAC,GACnE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GACxB,KAAK,CAAC;AAEV;;GAEG;AACH,MAAM,MAAM,SAAS,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,EAAE,IAAI,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,YAAY,GAClF,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAC3B,KAAK,CAAC;AAEV;;GAEG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,EAAE,IAAI,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,YAAY,GACnF,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAC5B,KAAK,CAAC;AAEV;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,EAC/B,IAAI,EAAE,MAAM,EAAE,EACd,KAAK,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,WAAW,KAClB,OAAO,CAAC,OAAO,CAAC,CAAC;AAEtB;;GAEG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC,SAAS,kBAAkB;IACvD,CAAC,CAAC,SAAS,cAAc,CAAC,CAAC,CAAC,GAAG,MAAM,EAAE,EACrC,IAAI,EAAE,CAAC,EACP,KAAK,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EACtB,OAAO,CAAC,EAAE,WAAW,GACpB,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;CAC9B;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,kBAAkB,EAC5D,MAAM,EAAE,UAAU,GACjB,WAAW,CAAC,CAAC,CAAC,CAEhB;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,kBAAkB,IAAI,CAAC,CAAC"}
|