@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,228 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Procedure Definition Helper
|
|
3
|
+
*
|
|
4
|
+
* Factory functions for creating well-typed procedure definitions.
|
|
5
|
+
*
|
|
6
|
+
* ## defineProcedure vs createProcedure
|
|
7
|
+
*
|
|
8
|
+
* This module provides two ways to create procedures:
|
|
9
|
+
*
|
|
10
|
+
* ### 1. defineProcedure (Declarative - Recommended for most cases)
|
|
11
|
+
*
|
|
12
|
+
* Use `defineProcedure` when:
|
|
13
|
+
* - You have all the procedure properties available upfront
|
|
14
|
+
* - You want a concise, single-expression definition
|
|
15
|
+
* - You're defining static procedures at module load time
|
|
16
|
+
* - You prefer declarative configuration
|
|
17
|
+
*
|
|
18
|
+
* ```typescript
|
|
19
|
+
* const myProcedure = defineProcedure({
|
|
20
|
+
* path: ['users', 'get'],
|
|
21
|
+
* input: z.object({ id: z.string() }),
|
|
22
|
+
* output: z.object({ id: z.string(), name: z.string() }),
|
|
23
|
+
* metadata: { description: 'Get a user' },
|
|
24
|
+
* handler: async ({ id }) => fetchUser(id),
|
|
25
|
+
* });
|
|
26
|
+
* ```
|
|
27
|
+
*
|
|
28
|
+
* ### 2. createProcedure (Builder - For complex/dynamic scenarios)
|
|
29
|
+
*
|
|
30
|
+
* Use `createProcedure` (builder pattern) when:
|
|
31
|
+
* - Building procedures conditionally or dynamically
|
|
32
|
+
* - Composing procedures from multiple sources
|
|
33
|
+
* - Schemas are determined at runtime
|
|
34
|
+
* - You want to reuse partial configurations
|
|
35
|
+
* - Working with code generation or metaprogramming
|
|
36
|
+
*
|
|
37
|
+
* ```typescript
|
|
38
|
+
* const builder = createProcedure()
|
|
39
|
+
* .path(['users', 'get'])
|
|
40
|
+
* .input(inputSchema);
|
|
41
|
+
*
|
|
42
|
+
* if (featureFlags.includeExtendedOutput) {
|
|
43
|
+
* builder.output(extendedOutputSchema);
|
|
44
|
+
* } else {
|
|
45
|
+
* builder.output(basicOutputSchema);
|
|
46
|
+
* }
|
|
47
|
+
*
|
|
48
|
+
* const myProcedure = builder.handler(myHandler).build();
|
|
49
|
+
* ```
|
|
50
|
+
*
|
|
51
|
+
* ### 3. defineStub (Client-side type stubs)
|
|
52
|
+
*
|
|
53
|
+
* Use `defineStub` when:
|
|
54
|
+
* - You need type definitions without implementation
|
|
55
|
+
* - Building client-side code that calls remote procedures
|
|
56
|
+
* - Generating TypeScript types from procedure definitions
|
|
57
|
+
*
|
|
58
|
+
* ### Summary
|
|
59
|
+
*
|
|
60
|
+
* | Function | Use Case | Returns |
|
|
61
|
+
* |-------------------|--------------------------------|-----------------|
|
|
62
|
+
* | `defineProcedure` | Static, declarative definition | Procedure |
|
|
63
|
+
* | `createProcedure` | Dynamic, builder pattern | ProcedureBuilder|
|
|
64
|
+
* | `defineStub` | Client-side type stubs | Procedure (no handler) |
|
|
65
|
+
*/
|
|
66
|
+
import { type ProcedureSchema } from "./schema.js";
|
|
67
|
+
import type { Procedure, ProcedurePath, ProcedureMetadata, ProcedureHandler } from "./types.js";
|
|
68
|
+
/**
|
|
69
|
+
* Input for defining a procedure.
|
|
70
|
+
* Type parameters are inferred from schemas.
|
|
71
|
+
*/
|
|
72
|
+
export interface ProcedureDefinition<TInput, TOutput, TMeta extends ProcedureMetadata = ProcedureMetadata> {
|
|
73
|
+
/** Path in the route tree (e.g., ['collections', 'users', 'get']) */
|
|
74
|
+
path: ProcedurePath;
|
|
75
|
+
/** Input validation schema: a Standard Schema (zod 4, valibot, arktype) or a `ZodLike` */
|
|
76
|
+
input: ProcedureSchema<TInput>;
|
|
77
|
+
/** Output validation schema: a Standard Schema or a `ZodLike` */
|
|
78
|
+
output: ProcedureSchema<TOutput>;
|
|
79
|
+
/** Procedure metadata */
|
|
80
|
+
metadata?: TMeta;
|
|
81
|
+
/** Optional handler implementation */
|
|
82
|
+
handler?: ProcedureHandler<TInput, TOutput>;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Minimal definition without handler.
|
|
86
|
+
* Useful for client-side procedure stubs.
|
|
87
|
+
*/
|
|
88
|
+
export interface ProcedureStub<TInput, TOutput> {
|
|
89
|
+
path: ProcedurePath;
|
|
90
|
+
input: ProcedureSchema<TInput>;
|
|
91
|
+
output: ProcedureSchema<TOutput>;
|
|
92
|
+
metadata?: ProcedureMetadata;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Define a procedure with type inference from schemas.
|
|
96
|
+
*
|
|
97
|
+
* Creates a well-typed procedure definition that can be registered
|
|
98
|
+
* with the procedure registry.
|
|
99
|
+
*
|
|
100
|
+
* @param definition - Procedure definition with path, schemas, and optional handler
|
|
101
|
+
* @returns Fully typed procedure object
|
|
102
|
+
*
|
|
103
|
+
* @example
|
|
104
|
+
* ```typescript
|
|
105
|
+
* const getUserProcedure = defineProcedure({
|
|
106
|
+
* path: ['users', 'get'],
|
|
107
|
+
* input: z.object({ id: z.string() }),
|
|
108
|
+
* output: z.object({ id: z.string(), name: z.string(), email: z.string() }),
|
|
109
|
+
* metadata: {
|
|
110
|
+
* description: 'Get user by ID',
|
|
111
|
+
* tags: ['users', 'read'],
|
|
112
|
+
* },
|
|
113
|
+
* handler: async ({ id }, ctx) => {
|
|
114
|
+
* const storage = ctx.repository?.getStorage<User>('users');
|
|
115
|
+
* const user = await storage?.get(id);
|
|
116
|
+
* if (!user) throw new Error('User not found');
|
|
117
|
+
* return user;
|
|
118
|
+
* },
|
|
119
|
+
* });
|
|
120
|
+
* ```
|
|
121
|
+
*/
|
|
122
|
+
export declare function defineProcedure<TInput, TOutput, TMeta extends ProcedureMetadata = ProcedureMetadata>(definition: ProcedureDefinition<TInput, TOutput, TMeta>): Procedure<TInput, TOutput, TMeta>;
|
|
123
|
+
/**
|
|
124
|
+
* Define a procedure stub without handler.
|
|
125
|
+
* Useful for client-side type definitions.
|
|
126
|
+
*
|
|
127
|
+
* @param stub - Procedure stub with path and schemas
|
|
128
|
+
* @returns Procedure object without handler
|
|
129
|
+
*
|
|
130
|
+
* @example
|
|
131
|
+
* ```typescript
|
|
132
|
+
* // Client-side stub for type inference
|
|
133
|
+
* const getUserStub = defineStub({
|
|
134
|
+
* path: ['users', 'get'],
|
|
135
|
+
* input: z.object({ id: z.string() }),
|
|
136
|
+
* output: z.object({ id: z.string(), name: z.string() }),
|
|
137
|
+
* });
|
|
138
|
+
* ```
|
|
139
|
+
*/
|
|
140
|
+
export declare function defineStub<TInput, TOutput>(stub: ProcedureStub<TInput, TOutput>): Procedure<TInput, TOutput, ProcedureMetadata>;
|
|
141
|
+
/**
|
|
142
|
+
* Fluent builder for procedure definitions.
|
|
143
|
+
* Provides a chainable API for building procedures.
|
|
144
|
+
*/
|
|
145
|
+
export declare class ProcedureBuilder<TInput = unknown, TOutput = unknown, TMeta extends ProcedureMetadata = ProcedureMetadata> {
|
|
146
|
+
private _path;
|
|
147
|
+
private _input?;
|
|
148
|
+
private _output?;
|
|
149
|
+
private _metadata;
|
|
150
|
+
private _handler?;
|
|
151
|
+
/**
|
|
152
|
+
* Set the procedure path.
|
|
153
|
+
*/
|
|
154
|
+
path(path: ProcedurePath): this;
|
|
155
|
+
/**
|
|
156
|
+
* Set the input schema.
|
|
157
|
+
*/
|
|
158
|
+
input<T>(schema: ProcedureSchema<T>): ProcedureBuilder<T, TOutput, TMeta>;
|
|
159
|
+
/**
|
|
160
|
+
* Set the output schema.
|
|
161
|
+
*/
|
|
162
|
+
output<T>(schema: ProcedureSchema<T>): ProcedureBuilder<TInput, T, TMeta>;
|
|
163
|
+
/**
|
|
164
|
+
* Set procedure metadata.
|
|
165
|
+
*/
|
|
166
|
+
meta<T extends ProcedureMetadata>(metadata: T): ProcedureBuilder<TInput, TOutput, T>;
|
|
167
|
+
/**
|
|
168
|
+
* Set the handler implementation.
|
|
169
|
+
*/
|
|
170
|
+
handler(fn: ProcedureHandler<TInput, TOutput>): this;
|
|
171
|
+
/**
|
|
172
|
+
* Build the procedure definition.
|
|
173
|
+
*
|
|
174
|
+
* @throws Error if path, input, or output are not set
|
|
175
|
+
*/
|
|
176
|
+
build(): Procedure<TInput, TOutput, TMeta>;
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Create a new procedure builder.
|
|
180
|
+
*
|
|
181
|
+
* @example
|
|
182
|
+
* ```typescript
|
|
183
|
+
* const procedure = createProcedure()
|
|
184
|
+
* .path(['users', 'get'])
|
|
185
|
+
* .input(z.object({ id: z.string() }))
|
|
186
|
+
* .output(z.object({ id: z.string(), name: z.string() }))
|
|
187
|
+
* .meta({ description: 'Get user by ID' })
|
|
188
|
+
* .handler(async ({ id }, ctx) => {
|
|
189
|
+
* // Implementation
|
|
190
|
+
* })
|
|
191
|
+
* .build();
|
|
192
|
+
* ```
|
|
193
|
+
*/
|
|
194
|
+
export declare function createProcedure(): ProcedureBuilder;
|
|
195
|
+
/**
|
|
196
|
+
* Create procedures under a common namespace.
|
|
197
|
+
* Automatically prefixes all procedure paths.
|
|
198
|
+
*
|
|
199
|
+
* @param namespace - Namespace path prefix
|
|
200
|
+
* @param procedures - Procedures to namespace
|
|
201
|
+
* @returns Procedures with prefixed paths
|
|
202
|
+
*
|
|
203
|
+
* @example
|
|
204
|
+
* ```typescript
|
|
205
|
+
* const collectionProcedures = namespace(['collections', 'users'], [
|
|
206
|
+
* defineProcedure({
|
|
207
|
+
* path: ['get'], // Becomes ['collections', 'users', 'get']
|
|
208
|
+
* input: z.object({ id: z.string() }),
|
|
209
|
+
* output: userSchema,
|
|
210
|
+
* }),
|
|
211
|
+
* defineProcedure({
|
|
212
|
+
* path: ['set'], // Becomes ['collections', 'users', 'set']
|
|
213
|
+
* input: z.object({ id: z.string(), value: userSchema }),
|
|
214
|
+
* output: z.void(),
|
|
215
|
+
* }),
|
|
216
|
+
* ]);
|
|
217
|
+
* ```
|
|
218
|
+
*/
|
|
219
|
+
export declare function namespace<T extends Procedure<unknown, unknown, ProcedureMetadata>[]>(namespacePath: ProcedurePath, procedures: T): T;
|
|
220
|
+
/**
|
|
221
|
+
* Validate a procedure definition.
|
|
222
|
+
* Throws if the definition is invalid.
|
|
223
|
+
*
|
|
224
|
+
* @param procedure - Procedure to validate
|
|
225
|
+
* @throws Error if validation fails
|
|
226
|
+
*/
|
|
227
|
+
export declare function validateProcedure(procedure: Procedure<unknown, unknown, ProcedureMetadata>): void;
|
|
228
|
+
//# sourceMappingURL=define.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"define.d.ts","sourceRoot":"","sources":["../../src/procedures/define.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,300 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Procedure Definition Helper
|
|
3
|
+
*
|
|
4
|
+
* Factory functions for creating well-typed procedure definitions.
|
|
5
|
+
*
|
|
6
|
+
* ## defineProcedure vs createProcedure
|
|
7
|
+
*
|
|
8
|
+
* This module provides two ways to create procedures:
|
|
9
|
+
*
|
|
10
|
+
* ### 1. defineProcedure (Declarative - Recommended for most cases)
|
|
11
|
+
*
|
|
12
|
+
* Use `defineProcedure` when:
|
|
13
|
+
* - You have all the procedure properties available upfront
|
|
14
|
+
* - You want a concise, single-expression definition
|
|
15
|
+
* - You're defining static procedures at module load time
|
|
16
|
+
* - You prefer declarative configuration
|
|
17
|
+
*
|
|
18
|
+
* ```typescript
|
|
19
|
+
* const myProcedure = defineProcedure({
|
|
20
|
+
* path: ['users', 'get'],
|
|
21
|
+
* input: z.object({ id: z.string() }),
|
|
22
|
+
* output: z.object({ id: z.string(), name: z.string() }),
|
|
23
|
+
* metadata: { description: 'Get a user' },
|
|
24
|
+
* handler: async ({ id }) => fetchUser(id),
|
|
25
|
+
* });
|
|
26
|
+
* ```
|
|
27
|
+
*
|
|
28
|
+
* ### 2. createProcedure (Builder - For complex/dynamic scenarios)
|
|
29
|
+
*
|
|
30
|
+
* Use `createProcedure` (builder pattern) when:
|
|
31
|
+
* - Building procedures conditionally or dynamically
|
|
32
|
+
* - Composing procedures from multiple sources
|
|
33
|
+
* - Schemas are determined at runtime
|
|
34
|
+
* - You want to reuse partial configurations
|
|
35
|
+
* - Working with code generation or metaprogramming
|
|
36
|
+
*
|
|
37
|
+
* ```typescript
|
|
38
|
+
* const builder = createProcedure()
|
|
39
|
+
* .path(['users', 'get'])
|
|
40
|
+
* .input(inputSchema);
|
|
41
|
+
*
|
|
42
|
+
* if (featureFlags.includeExtendedOutput) {
|
|
43
|
+
* builder.output(extendedOutputSchema);
|
|
44
|
+
* } else {
|
|
45
|
+
* builder.output(basicOutputSchema);
|
|
46
|
+
* }
|
|
47
|
+
*
|
|
48
|
+
* const myProcedure = builder.handler(myHandler).build();
|
|
49
|
+
* ```
|
|
50
|
+
*
|
|
51
|
+
* ### 3. defineStub (Client-side type stubs)
|
|
52
|
+
*
|
|
53
|
+
* Use `defineStub` when:
|
|
54
|
+
* - You need type definitions without implementation
|
|
55
|
+
* - Building client-side code that calls remote procedures
|
|
56
|
+
* - Generating TypeScript types from procedure definitions
|
|
57
|
+
*
|
|
58
|
+
* ### Summary
|
|
59
|
+
*
|
|
60
|
+
* | Function | Use Case | Returns |
|
|
61
|
+
* |-------------------|--------------------------------|-----------------|
|
|
62
|
+
* | `defineProcedure` | Static, declarative definition | Procedure |
|
|
63
|
+
* | `createProcedure` | Dynamic, builder pattern | ProcedureBuilder|
|
|
64
|
+
* | `defineStub` | Client-side type stubs | Procedure (no handler) |
|
|
65
|
+
*/
|
|
66
|
+
import { isStandardSchema } from "./schema.js";
|
|
67
|
+
/** True for a schema that the core can validate with: a Standard Schema or a `ZodLike`. */
|
|
68
|
+
function isProcedureSchema(schema) {
|
|
69
|
+
return isStandardSchema(schema) || typeof schema?.safeParse === "function";
|
|
70
|
+
}
|
|
71
|
+
// =============================================================================
|
|
72
|
+
// Define Procedure
|
|
73
|
+
// =============================================================================
|
|
74
|
+
/**
|
|
75
|
+
* Define a procedure with type inference from schemas.
|
|
76
|
+
*
|
|
77
|
+
* Creates a well-typed procedure definition that can be registered
|
|
78
|
+
* with the procedure registry.
|
|
79
|
+
*
|
|
80
|
+
* @param definition - Procedure definition with path, schemas, and optional handler
|
|
81
|
+
* @returns Fully typed procedure object
|
|
82
|
+
*
|
|
83
|
+
* @example
|
|
84
|
+
* ```typescript
|
|
85
|
+
* const getUserProcedure = defineProcedure({
|
|
86
|
+
* path: ['users', 'get'],
|
|
87
|
+
* input: z.object({ id: z.string() }),
|
|
88
|
+
* output: z.object({ id: z.string(), name: z.string(), email: z.string() }),
|
|
89
|
+
* metadata: {
|
|
90
|
+
* description: 'Get user by ID',
|
|
91
|
+
* tags: ['users', 'read'],
|
|
92
|
+
* },
|
|
93
|
+
* handler: async ({ id }, ctx) => {
|
|
94
|
+
* const storage = ctx.repository?.getStorage<User>('users');
|
|
95
|
+
* const user = await storage?.get(id);
|
|
96
|
+
* if (!user) throw new Error('User not found');
|
|
97
|
+
* return user;
|
|
98
|
+
* },
|
|
99
|
+
* });
|
|
100
|
+
* ```
|
|
101
|
+
*/
|
|
102
|
+
export function defineProcedure(definition) {
|
|
103
|
+
const procedure = {
|
|
104
|
+
path: definition.path,
|
|
105
|
+
input: definition.input,
|
|
106
|
+
output: definition.output,
|
|
107
|
+
metadata: (definition.metadata ?? {}),
|
|
108
|
+
};
|
|
109
|
+
// Only set handler if provided (exactOptionalPropertyTypes)
|
|
110
|
+
if (definition.handler) {
|
|
111
|
+
procedure.handler = definition.handler;
|
|
112
|
+
}
|
|
113
|
+
return procedure;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Define a procedure stub without handler.
|
|
117
|
+
* Useful for client-side type definitions.
|
|
118
|
+
*
|
|
119
|
+
* @param stub - Procedure stub with path and schemas
|
|
120
|
+
* @returns Procedure object without handler
|
|
121
|
+
*
|
|
122
|
+
* @example
|
|
123
|
+
* ```typescript
|
|
124
|
+
* // Client-side stub for type inference
|
|
125
|
+
* const getUserStub = defineStub({
|
|
126
|
+
* path: ['users', 'get'],
|
|
127
|
+
* input: z.object({ id: z.string() }),
|
|
128
|
+
* output: z.object({ id: z.string(), name: z.string() }),
|
|
129
|
+
* });
|
|
130
|
+
* ```
|
|
131
|
+
*/
|
|
132
|
+
export function defineStub(stub) {
|
|
133
|
+
return {
|
|
134
|
+
path: stub.path,
|
|
135
|
+
input: stub.input,
|
|
136
|
+
output: stub.output,
|
|
137
|
+
metadata: stub.metadata ?? {},
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
// =============================================================================
|
|
141
|
+
// Procedure Builder (Fluent API)
|
|
142
|
+
// =============================================================================
|
|
143
|
+
/**
|
|
144
|
+
* Fluent builder for procedure definitions.
|
|
145
|
+
* Provides a chainable API for building procedures.
|
|
146
|
+
*/
|
|
147
|
+
export class ProcedureBuilder {
|
|
148
|
+
_path = [];
|
|
149
|
+
_input;
|
|
150
|
+
_output;
|
|
151
|
+
_metadata = {};
|
|
152
|
+
_handler;
|
|
153
|
+
/**
|
|
154
|
+
* Set the procedure path.
|
|
155
|
+
*/
|
|
156
|
+
path(path) {
|
|
157
|
+
this._path = path;
|
|
158
|
+
return this;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Set the input schema.
|
|
162
|
+
*/
|
|
163
|
+
input(schema) {
|
|
164
|
+
const builder = this;
|
|
165
|
+
builder._input = schema;
|
|
166
|
+
return builder;
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Set the output schema.
|
|
170
|
+
*/
|
|
171
|
+
output(schema) {
|
|
172
|
+
const builder = this;
|
|
173
|
+
builder._output = schema;
|
|
174
|
+
return builder;
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Set procedure metadata.
|
|
178
|
+
*/
|
|
179
|
+
meta(metadata) {
|
|
180
|
+
const builder = this;
|
|
181
|
+
builder._metadata = metadata;
|
|
182
|
+
return builder;
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Set the handler implementation.
|
|
186
|
+
*/
|
|
187
|
+
handler(fn) {
|
|
188
|
+
this._handler = fn;
|
|
189
|
+
return this;
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Build the procedure definition.
|
|
193
|
+
*
|
|
194
|
+
* @throws Error if path, input, or output are not set
|
|
195
|
+
*/
|
|
196
|
+
build() {
|
|
197
|
+
if (this._path.length === 0) {
|
|
198
|
+
throw new Error("Procedure path is required");
|
|
199
|
+
}
|
|
200
|
+
if (!this._input) {
|
|
201
|
+
throw new Error("Input schema is required");
|
|
202
|
+
}
|
|
203
|
+
if (!this._output) {
|
|
204
|
+
throw new Error("Output schema is required");
|
|
205
|
+
}
|
|
206
|
+
const procedure = {
|
|
207
|
+
path: this._path,
|
|
208
|
+
input: this._input,
|
|
209
|
+
output: this._output,
|
|
210
|
+
metadata: this._metadata,
|
|
211
|
+
};
|
|
212
|
+
// Only set handler if provided (exactOptionalPropertyTypes)
|
|
213
|
+
if (this._handler) {
|
|
214
|
+
procedure.handler = this._handler;
|
|
215
|
+
}
|
|
216
|
+
return procedure;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Create a new procedure builder.
|
|
221
|
+
*
|
|
222
|
+
* @example
|
|
223
|
+
* ```typescript
|
|
224
|
+
* const procedure = createProcedure()
|
|
225
|
+
* .path(['users', 'get'])
|
|
226
|
+
* .input(z.object({ id: z.string() }))
|
|
227
|
+
* .output(z.object({ id: z.string(), name: z.string() }))
|
|
228
|
+
* .meta({ description: 'Get user by ID' })
|
|
229
|
+
* .handler(async ({ id }, ctx) => {
|
|
230
|
+
* // Implementation
|
|
231
|
+
* })
|
|
232
|
+
* .build();
|
|
233
|
+
* ```
|
|
234
|
+
*/
|
|
235
|
+
export function createProcedure() {
|
|
236
|
+
return new ProcedureBuilder();
|
|
237
|
+
}
|
|
238
|
+
// =============================================================================
|
|
239
|
+
// Namespace Helper
|
|
240
|
+
// =============================================================================
|
|
241
|
+
/**
|
|
242
|
+
* Create procedures under a common namespace.
|
|
243
|
+
* Automatically prefixes all procedure paths.
|
|
244
|
+
*
|
|
245
|
+
* @param namespace - Namespace path prefix
|
|
246
|
+
* @param procedures - Procedures to namespace
|
|
247
|
+
* @returns Procedures with prefixed paths
|
|
248
|
+
*
|
|
249
|
+
* @example
|
|
250
|
+
* ```typescript
|
|
251
|
+
* const collectionProcedures = namespace(['collections', 'users'], [
|
|
252
|
+
* defineProcedure({
|
|
253
|
+
* path: ['get'], // Becomes ['collections', 'users', 'get']
|
|
254
|
+
* input: z.object({ id: z.string() }),
|
|
255
|
+
* output: userSchema,
|
|
256
|
+
* }),
|
|
257
|
+
* defineProcedure({
|
|
258
|
+
* path: ['set'], // Becomes ['collections', 'users', 'set']
|
|
259
|
+
* input: z.object({ id: z.string(), value: userSchema }),
|
|
260
|
+
* output: z.void(),
|
|
261
|
+
* }),
|
|
262
|
+
* ]);
|
|
263
|
+
* ```
|
|
264
|
+
*/
|
|
265
|
+
export function namespace(namespacePath, procedures) {
|
|
266
|
+
return procedures.map((proc) => ({
|
|
267
|
+
...proc,
|
|
268
|
+
path: [...namespacePath, ...proc.path],
|
|
269
|
+
}));
|
|
270
|
+
}
|
|
271
|
+
// =============================================================================
|
|
272
|
+
// Validation Helpers
|
|
273
|
+
// =============================================================================
|
|
274
|
+
/**
|
|
275
|
+
* Validate a procedure definition.
|
|
276
|
+
* Throws if the definition is invalid.
|
|
277
|
+
*
|
|
278
|
+
* @param procedure - Procedure to validate
|
|
279
|
+
* @throws Error if validation fails
|
|
280
|
+
*/
|
|
281
|
+
export function validateProcedure(procedure) {
|
|
282
|
+
if (!procedure.path || procedure.path.length === 0) {
|
|
283
|
+
throw new Error("Procedure path cannot be empty");
|
|
284
|
+
}
|
|
285
|
+
for (const segment of procedure.path) {
|
|
286
|
+
if (typeof segment !== "string" || segment.length === 0) {
|
|
287
|
+
throw new Error(`Invalid path segment: ${segment}`);
|
|
288
|
+
}
|
|
289
|
+
if (segment.includes(".")) {
|
|
290
|
+
throw new Error(`Path segment cannot contain dots: ${segment}`);
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
if (!isProcedureSchema(procedure.input)) {
|
|
294
|
+
throw new Error("Input schema must be a Standard Schema (zod 4, valibot, arktype) or have a safeParse method");
|
|
295
|
+
}
|
|
296
|
+
if (!isProcedureSchema(procedure.output)) {
|
|
297
|
+
throw new Error("Output schema must be a Standard Schema (zod 4, valibot, arktype) or have a safeParse method");
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
//# sourceMappingURL=define.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"define.js","sourceRoot":"","sources":["../../src/procedures/define.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Procedure Registration Helpers
|
|
3
|
+
*
|
|
4
|
+
* Manual registration helpers for procedures. For compile-time auto-discovery,
|
|
5
|
+
* use the CLI: `npx client-registry discover`
|
|
6
|
+
*
|
|
7
|
+
* Libraries that depend on client should:
|
|
8
|
+
* 1. Add `"client": { "procedures": "./dist/register.js" }` to package.json
|
|
9
|
+
* 2. Create a register.ts that uses createAndRegister()
|
|
10
|
+
* 3. Consumers run `npx client-registry discover` to generate imports
|
|
11
|
+
*/
|
|
12
|
+
import type { AnyProcedure, ProcedureModule } from "./types.js";
|
|
13
|
+
/**
|
|
14
|
+
* Register procedures from a module.
|
|
15
|
+
* Use this for explicit registration when auto-discovery isn't suitable.
|
|
16
|
+
*
|
|
17
|
+
* @param module - Module with procedures array
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```typescript
|
|
21
|
+
* // In repo-b/src/register.ts
|
|
22
|
+
* import { registerModule } from 'client/procedures';
|
|
23
|
+
* import { weatherModule } from './procedures';
|
|
24
|
+
*
|
|
25
|
+
* registerModule(weatherModule);
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export declare function registerModule(module: ProcedureModule): void;
|
|
29
|
+
/**
|
|
30
|
+
* Register an array of procedures.
|
|
31
|
+
*
|
|
32
|
+
* @param procedures - Procedures to register
|
|
33
|
+
*/
|
|
34
|
+
export declare function registerProcedures(procedures: AnyProcedure[]): void;
|
|
35
|
+
/**
|
|
36
|
+
* Create a self-registering module.
|
|
37
|
+
* Returns the module and registers it immediately.
|
|
38
|
+
*
|
|
39
|
+
* @param name - Module name
|
|
40
|
+
* @param procedures - Procedures in the module
|
|
41
|
+
* @returns The registered module
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* ```typescript
|
|
45
|
+
* // In repo-b/src/register.ts
|
|
46
|
+
* import { createAndRegister } from 'client/procedures';
|
|
47
|
+
* import { forecastProcedure, currentWeatherProcedure } from './procedures';
|
|
48
|
+
*
|
|
49
|
+
* // Registers immediately when this file is imported
|
|
50
|
+
* export const weatherModule = createAndRegister('weather', [
|
|
51
|
+
* forecastProcedure,
|
|
52
|
+
* currentWeatherProcedure,
|
|
53
|
+
* ]);
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
56
|
+
export declare function createAndRegister(name: string, procedures: AnyProcedure[]): ProcedureModule;
|
|
57
|
+
//# sourceMappingURL=discovery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../src/procedures/discovery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAMhE;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CAE5D;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,YAAY,EAAE,GAAG,IAAI,CAEnE;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,YAAY,EAAE,GACzB,eAAe,CAIjB"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Procedure Registration Helpers
|
|
3
|
+
*
|
|
4
|
+
* Manual registration helpers for procedures. For compile-time auto-discovery,
|
|
5
|
+
* use the CLI: `npx client-registry discover`
|
|
6
|
+
*
|
|
7
|
+
* Libraries that depend on client should:
|
|
8
|
+
* 1. Add `"client": { "procedures": "./dist/register.js" }` to package.json
|
|
9
|
+
* 2. Create a register.ts that uses createAndRegister()
|
|
10
|
+
* 3. Consumers run `npx client-registry discover` to generate imports
|
|
11
|
+
*/
|
|
12
|
+
import { PROCEDURE_REGISTRY } from "./registry.js";
|
|
13
|
+
// =============================================================================
|
|
14
|
+
// Manual Registration Helpers
|
|
15
|
+
// =============================================================================
|
|
16
|
+
/**
|
|
17
|
+
* Register procedures from a module.
|
|
18
|
+
* Use this for explicit registration when auto-discovery isn't suitable.
|
|
19
|
+
*
|
|
20
|
+
* @param module - Module with procedures array
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```typescript
|
|
24
|
+
* // In repo-b/src/register.ts
|
|
25
|
+
* import { registerModule } from 'client/procedures';
|
|
26
|
+
* import { weatherModule } from './procedures';
|
|
27
|
+
*
|
|
28
|
+
* registerModule(weatherModule);
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
export function registerModule(module) {
|
|
32
|
+
PROCEDURE_REGISTRY.registerModule(module);
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Register an array of procedures.
|
|
36
|
+
*
|
|
37
|
+
* @param procedures - Procedures to register
|
|
38
|
+
*/
|
|
39
|
+
export function registerProcedures(procedures) {
|
|
40
|
+
PROCEDURE_REGISTRY.registerAll(procedures);
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Create a self-registering module.
|
|
44
|
+
* Returns the module and registers it immediately.
|
|
45
|
+
*
|
|
46
|
+
* @param name - Module name
|
|
47
|
+
* @param procedures - Procedures in the module
|
|
48
|
+
* @returns The registered module
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* ```typescript
|
|
52
|
+
* // In repo-b/src/register.ts
|
|
53
|
+
* import { createAndRegister } from 'client/procedures';
|
|
54
|
+
* import { forecastProcedure, currentWeatherProcedure } from './procedures';
|
|
55
|
+
*
|
|
56
|
+
* // Registers immediately when this file is imported
|
|
57
|
+
* export const weatherModule = createAndRegister('weather', [
|
|
58
|
+
* forecastProcedure,
|
|
59
|
+
* currentWeatherProcedure,
|
|
60
|
+
* ]);
|
|
61
|
+
* ```
|
|
62
|
+
*/
|
|
63
|
+
export function createAndRegister(name, procedures) {
|
|
64
|
+
const module = { name, procedures };
|
|
65
|
+
PROCEDURE_REGISTRY.registerModule(module);
|
|
66
|
+
return module;
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=discovery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"discovery.js","sourceRoot":"","sources":["../../src/procedures/discovery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAGnD,gFAAgF;AAChF,8BAA8B;AAC9B,gFAAgF;AAEhF;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,cAAc,CAAC,MAAuB;IACpD,kBAAkB,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;AAC5C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,UAA0B;IAC3D,kBAAkB,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;AAC7C,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,iBAAiB,CAC/B,IAAY,EACZ,UAA0B;IAE1B,MAAM,MAAM,GAAoB,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;IACrD,kBAAkB,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IAC1C,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Effect declarations for groups of procedures (CAPABILITIES-2026-10). This file imports only
|
|
3
|
+
* types, so each file of procedures can use it without an import cycle.
|
|
4
|
+
*/
|
|
5
|
+
import type { AnyProcedure, Effects } from "./types.js";
|
|
6
|
+
/** The effects of a procedure that reads and changes nothing: its output comes from its input. */
|
|
7
|
+
export declare const PURE_EFFECTS: Effects;
|
|
8
|
+
/** The effects of a procedure that reads the procedure registry and changes nothing. */
|
|
9
|
+
export declare const REGISTRY_READ_EFFECTS: Effects;
|
|
10
|
+
/**
|
|
11
|
+
* This function gives copies of the procedures with the effects in their metadata. A procedure
|
|
12
|
+
* that declares its own effects keeps them.
|
|
13
|
+
*/
|
|
14
|
+
export declare function withEffects<T extends AnyProcedure>(effects: Effects, procedures: readonly T[]): T[];
|
|
15
|
+
//# sourceMappingURL=effects.d.ts.map
|