@procedures/client 0.0.0-stage → 0.1.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 +16 -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 +561 -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 +48 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +86 -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 +517 -0
- package/dist/client/client.d.ts.map +1 -0
- package/dist/client/client.js +990 -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 +296 -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/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 +201 -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 +198 -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 +637 -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 +156 -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 +585 -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 +273 -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 +239 -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 +270 -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 +268 -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 +208 -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 +356 -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/index.d.ts +24 -0
- package/dist/procedures/index.d.ts.map +1 -0
- package/dist/procedures/index.js +69 -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 +193 -0
- package/dist/procedures/interceptors.js.map +1 -0
- package/dist/procedures/invoke.d.ts +127 -0
- package/dist/procedures/invoke.d.ts.map +1 -0
- package/dist/procedures/invoke.js +277 -0
- package/dist/procedures/invoke.js.map +1 -0
- package/dist/procedures/module.d.ts +49 -0
- package/dist/procedures/module.d.ts.map +1 -0
- package/dist/procedures/module.js +93 -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 +370 -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/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 +59 -0
- package/dist/server/host-policy.d.ts.map +1 -0
- package/dist/server/host-policy.js +82 -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 +212 -0
- package/dist/server/procedure-server.d.ts.map +1 -0
- package/dist/server/procedure-server.js +323 -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 +115 -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 +622 -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 +373 -0
- package/src/client/batch-executor.ts +514 -0
- package/src/client/call-types.ts +491 -0
- package/src/client/client.ts +1202 -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 +361 -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/cli/announce.ts +470 -0
- package/src/procedures/cli/discover.ts +390 -0
- package/src/procedures/cli/index.ts +229 -0
- package/src/procedures/cli/init.ts +370 -0
- package/src/procedures/collection/index.ts +51 -0
- package/src/procedures/collection/procedures.ts +245 -0
- package/src/procedures/collection/schemas.ts +550 -0
- package/src/procedures/collection/storage.ts +53 -0
- package/src/procedures/core/array.ts +1024 -0
- package/src/procedures/core/comparison.ts +263 -0
- package/src/procedures/core/index.ts +895 -0
- package/src/procedures/core/logic.ts +225 -0
- package/src/procedures/core/math.ts +469 -0
- package/src/procedures/core/meta.ts +384 -0
- package/src/procedures/core/object.ts +427 -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 +458 -0
- package/src/procedures/core/type.ts +344 -0
- package/src/procedures/define-procedure.ts +531 -0
- package/src/procedures/define.ts +387 -0
- package/src/procedures/discovery.ts +76 -0
- package/src/procedures/index.ts +228 -0
- package/src/procedures/interceptors.ts +272 -0
- package/src/procedures/invoke.ts +413 -0
- package/src/procedures/module.ts +107 -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 +485 -0
- package/src/server/browser-guard.ts +147 -0
- package/src/server/host-policy.ts +121 -0
- package/src/server/index.ts +70 -0
- package/src/server/method.ts +33 -0
- package/src/server/procedure-server.ts +417 -0
- package/src/server/server.ts +364 -0
- package/src/server/types.ts +147 -0
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Procedure System
|
|
3
|
+
*
|
|
4
|
+
* Type-safe procedure definitions with schema validation,
|
|
5
|
+
* registry for auto-discovery, and server integration.
|
|
6
|
+
*/
|
|
7
|
+
export type { ProcedurePath, ProcedureMetadata, RepositoryProvider, ProcedureContext, ProcedureHandler, Procedure, AnyProcedure, ProcedureResult, ProcedureError, InferProcedureInput, InferProcedureOutput, InferProcedureMetadata, RegistryEventType, RegistryListener, ProcedureModule, RegistrationOptions, ProcedureRegistryLike, } from "./types.js";
|
|
8
|
+
export { pathToKey, keyToPath } from "./types.js";
|
|
9
|
+
export { ProcedureRegistry, RegistryError, PROCEDURE_REGISTRY, assertValidPath } from "./registry.js";
|
|
10
|
+
export { defineProcedure, defineStub, createProcedure, ProcedureBuilder, namespace, validateProcedure, } from "./define.js";
|
|
11
|
+
export type { ProcedureDefinition, ProcedureStub } from "./define.js";
|
|
12
|
+
export { createCollectionProcedures } from "./collection/index.js";
|
|
13
|
+
export type { CollectionStorage, StorageMetadata } from "./collection/index.js";
|
|
14
|
+
export { registerModule, registerProcedures, createAndRegister, } from "./discovery.js";
|
|
15
|
+
export { clientModule, defineModule, moduleClosure, registerModules, createRegistry, } from "./module.js";
|
|
16
|
+
export type { ModuleInput } from "./module.js";
|
|
17
|
+
export { PROCEDURE_SYMBOL, PROCEDURE_JSON_KEY, PROCEDURE_WHEN_KEY, PROCEDURE_NAME_KEY, WHEN_IMMEDIATE, WHEN_NEVER, WHEN_PARENT, isProcedureRef, isProcedureRefJson, isAnyProcedureRef, getRefWhen, getRefName, shouldExecuteRef, proc, ProcedureRefBuilder, fromJson, toJson, normalizeRef, hydrateInput, prepareRootCall, observeHydration, isControlFlowPath, isDataDriven, markDataDriven, RUNS_REFS_TAG, RAW_INPUT_TAG, takesRawInput, rawInputRule, MAX_DATA_DEPTH, LITERAL_KEY, isLiteral, isPlainObject, createRefScope, lookupOutputRef, resolveOutputRef, withScope, scopeOf, executeRef, extractTemplate, parseProcedureJson, stringifyProcedureJson, } from "./ref.js";
|
|
18
|
+
export type { ProcedureWhen, ProcedureRef, ProcedureRefJson, AnyProcedureRef, RefExecutor, HydrateOptions, HydrationEvent, StepResultInfo, ContinueDecision, OutputRef, RefScope, } from "./ref.js";
|
|
19
|
+
export { coreProcedures, coreModule, allCoreProcedures, allCoreModules, chainProcedure, parallelProcedure, conditionalProcedure, andProcedure, orProcedure, notProcedure, allProcedure, anyProcedure, noneProcedure, mapProcedure, reduceProcedure, identityProcedure, constantProcedure, throwProcedure, tryCatchProcedure, anySchema, typedAnySchema, zodAdapter, outputSchema, type ZodLikeSchema, } from "./core/index.js";
|
|
20
|
+
export { validateSchema, validateSchemaAsync, jsonSchemaOf, isStandardSchema, describeIssues, } from "./schema.js";
|
|
21
|
+
export type { StandardSchemaV1, StandardJSONSchemaConverter, ProcedureSchema, InferSchema, SchemaResult, JsonSchema, JsonSchemaTarget, JsonSchemaSource, } from "./schema.js";
|
|
22
|
+
export { defineProcedureProcedure, getProcedureProcedure, listProceduresProcedure, deleteProcedureProcedure, metaProcedures, getRuntimeProcedure, hasRuntimeProcedure, getAllRuntimeProcedures, clearRuntimeProcedures, isRuntimeDefined, runtimeProgramOf, } from "./define-procedure.js";
|
|
23
|
+
export type { AggregationDefinition, DefineProcedureInput, DefineProcedureOutput, } from "./define-procedure.js";
|
|
24
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/procedures/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Procedure System
|
|
3
|
+
*
|
|
4
|
+
* Type-safe procedure definitions with schema validation,
|
|
5
|
+
* registry for auto-discovery, and server integration.
|
|
6
|
+
*/
|
|
7
|
+
// Type utilities
|
|
8
|
+
export { pathToKey, keyToPath } from "./types.js";
|
|
9
|
+
// Registry
|
|
10
|
+
export { ProcedureRegistry, RegistryError, PROCEDURE_REGISTRY, assertValidPath } from "./registry.js";
|
|
11
|
+
// Definition helpers
|
|
12
|
+
export { defineProcedure, defineStub, createProcedure, ProcedureBuilder, namespace, validateProcedure, } from "./define.js";
|
|
13
|
+
// Collection procedures
|
|
14
|
+
export { createCollectionProcedures } from "./collection/index.js";
|
|
15
|
+
// Manual registration helpers
|
|
16
|
+
export { registerModule, registerProcedures, createAndRegister, } from "./discovery.js";
|
|
17
|
+
// Modules and explicit registries (roadmap 3.1)
|
|
18
|
+
export { clientModule, defineModule, moduleClosure, registerModules, createRegistry, } from "./module.js";
|
|
19
|
+
// Procedure reference system (procedure-as-data)
|
|
20
|
+
export {
|
|
21
|
+
// Constants
|
|
22
|
+
PROCEDURE_SYMBOL, PROCEDURE_JSON_KEY, PROCEDURE_WHEN_KEY, PROCEDURE_NAME_KEY, WHEN_IMMEDIATE, WHEN_NEVER, WHEN_PARENT,
|
|
23
|
+
// Type guards
|
|
24
|
+
isProcedureRef, isProcedureRefJson, isAnyProcedureRef, getRefWhen, getRefName, shouldExecuteRef,
|
|
25
|
+
// Builder
|
|
26
|
+
proc, ProcedureRefBuilder,
|
|
27
|
+
// Conversion
|
|
28
|
+
fromJson, toJson, normalizeRef,
|
|
29
|
+
// Hydration
|
|
30
|
+
hydrateInput, prepareRootCall, observeHydration, isControlFlowPath, isDataDriven, markDataDriven, RUNS_REFS_TAG, RAW_INPUT_TAG, takesRawInput, rawInputRule, MAX_DATA_DEPTH, LITERAL_KEY, isLiteral, isPlainObject, createRefScope, lookupOutputRef, resolveOutputRef, withScope, scopeOf, executeRef,
|
|
31
|
+
// Templates
|
|
32
|
+
extractTemplate, parseProcedureJson, stringifyProcedureJson, } from "./ref.js";
|
|
33
|
+
// Core language procedures (chain, parallel, if, etc.)
|
|
34
|
+
export { coreProcedures, coreModule,
|
|
35
|
+
// Every core procedure (math, comparison, string, type, object, array, meta too). Not registered by default.
|
|
36
|
+
allCoreProcedures, allCoreModules, chainProcedure, parallelProcedure, conditionalProcedure, andProcedure, orProcedure, notProcedure, allProcedure, anyProcedure, noneProcedure, mapProcedure, reduceProcedure, identityProcedure, constantProcedure, throwProcedure, tryCatchProcedure,
|
|
37
|
+
// Schemas and result types
|
|
38
|
+
anySchema, typedAnySchema, zodAdapter, outputSchema, } from "./core/index.js";
|
|
39
|
+
// Schemas: Standard Schema v1, validation and JSON Schema (roadmap 2.1)
|
|
40
|
+
export { validateSchema, validateSchemaAsync, jsonSchemaOf, isStandardSchema, describeIssues, } from "./schema.js";
|
|
41
|
+
// Meta-procedures for runtime procedure definition
|
|
42
|
+
export { defineProcedureProcedure, getProcedureProcedure, listProceduresProcedure, deleteProcedureProcedure, metaProcedures, getRuntimeProcedure, hasRuntimeProcedure, getAllRuntimeProcedures, clearRuntimeProcedures, isRuntimeDefined, runtimeProgramOf, } from "./define-procedure.js";
|
|
43
|
+
// The storage layer, the synced registry and the procedure.store/load/sync/remote/register
|
|
44
|
+
// procedures moved to @procedures/store (roadmap 3.2): the program store.
|
|
45
|
+
// =============================================================================
|
|
46
|
+
// Auto-register core procedures
|
|
47
|
+
// =============================================================================
|
|
48
|
+
import { coreProcedures as _coreProcedures } from "./core/index.js";
|
|
49
|
+
import { metaProcedures as _metaProcedures } from "./define-procedure.js";
|
|
50
|
+
import { PROCEDURE_REGISTRY } from "./registry.js";
|
|
51
|
+
// Register core procedures when this module is imported
|
|
52
|
+
// This ensures client.* procedures are available without explicit registration
|
|
53
|
+
try {
|
|
54
|
+
for (const proc of _coreProcedures) {
|
|
55
|
+
if (!PROCEDURE_REGISTRY.has(proc.path)) {
|
|
56
|
+
PROCEDURE_REGISTRY.register(proc);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
// Also register meta-procedures
|
|
60
|
+
for (const proc of _metaProcedures) {
|
|
61
|
+
if (!PROCEDURE_REGISTRY.has(proc.path)) {
|
|
62
|
+
PROCEDURE_REGISTRY.register(proc);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
// Ignore errors during auto-registration (e.g., if already registered)
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/procedures/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Interceptors for every host (roadmap 1.2): a timeout, tracing and metrics.
|
|
3
|
+
*
|
|
4
|
+
* An interceptor runs around each invocation of `invokeProcedure()`, also the nested calls. A
|
|
5
|
+
* host takes a list: `ProcedureServer({ interceptors })`, `new Client({ interceptors })` or
|
|
6
|
+
* `invokeProcedure(procedure, input, { interceptors })`. See `invoke.ts` for the types.
|
|
7
|
+
*/
|
|
8
|
+
import { type Interceptor, type Invocation } from "./invoke.js";
|
|
9
|
+
import { type ProcedurePath } from "./types.js";
|
|
10
|
+
export interface TimeoutInterceptorOptions {
|
|
11
|
+
/** The time limit in milliseconds. 0 or less: no limit. */
|
|
12
|
+
ms: number;
|
|
13
|
+
/**
|
|
14
|
+
* The invocations to limit. The default is the calls of the host (depth 0): a nested call gets
|
|
15
|
+
* the signal of its parent, so the limit of the parent ends it too.
|
|
16
|
+
*/
|
|
17
|
+
appliesTo?: ((invocation: Invocation) => boolean) | undefined;
|
|
18
|
+
/** This function gets each invocation that the interceptor limits (for tests and logs). */
|
|
19
|
+
onLimit?: ((invocation: Invocation) => void) | undefined;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* This interceptor ends an invocation that runs longer than `ms`: the reader gets a TIMEOUT
|
|
23
|
+
* error, and the handler's signal aborts. A handler that ignores its signal can run on, but its
|
|
24
|
+
* result is not used. For a stream, the limit covers the whole stream.
|
|
25
|
+
*/
|
|
26
|
+
export declare function timeoutInterceptor(options: TimeoutInterceptorOptions): Interceptor;
|
|
27
|
+
/** One invocation as a span of a trace. */
|
|
28
|
+
export interface InvocationSpan {
|
|
29
|
+
readonly id: string;
|
|
30
|
+
/** The span of the invocation whose handler made this call. A call of a host has none. */
|
|
31
|
+
readonly parentId: string | undefined;
|
|
32
|
+
/** The same for every span of one call of a host. */
|
|
33
|
+
readonly traceId: string;
|
|
34
|
+
readonly path: ProcedurePath;
|
|
35
|
+
readonly key: string;
|
|
36
|
+
readonly depth: number;
|
|
37
|
+
/** The start, in milliseconds from `now()`. */
|
|
38
|
+
readonly start: number;
|
|
39
|
+
end: number | undefined;
|
|
40
|
+
durationMs: number | undefined;
|
|
41
|
+
status: "running" | "ok" | "error";
|
|
42
|
+
/** The message of the error. */
|
|
43
|
+
error?: string | undefined;
|
|
44
|
+
/** The code of an invocation error (`TIMEOUT`, `VALIDATION_ERROR` and so on). */
|
|
45
|
+
code?: string | undefined;
|
|
46
|
+
kind?: "value" | "stream" | undefined;
|
|
47
|
+
/** The number of items of a stream. */
|
|
48
|
+
items?: number | undefined;
|
|
49
|
+
}
|
|
50
|
+
export interface TracingInterceptorOptions {
|
|
51
|
+
/** This function gets each span when its invocation ends (a stream: when the stream ends). */
|
|
52
|
+
onSpan: (span: InvocationSpan) => void;
|
|
53
|
+
/** This function gets each span when its invocation starts. */
|
|
54
|
+
onStart?: ((span: InvocationSpan) => void) | undefined;
|
|
55
|
+
/** The clock. The default is `performance.now()`. */
|
|
56
|
+
now?: (() => number) | undefined;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* This interceptor makes a span for each invocation, with the span of its parent. A host can
|
|
60
|
+
* send the spans to a trace backend, a log or the site's trace view.
|
|
61
|
+
*/
|
|
62
|
+
export declare function tracingInterceptor(options: TracingInterceptorOptions): Interceptor;
|
|
63
|
+
/** The counts of one procedure. */
|
|
64
|
+
export interface ProcedureMetrics {
|
|
65
|
+
calls: number;
|
|
66
|
+
errors: number;
|
|
67
|
+
/** The sum of the durations, in milliseconds. */
|
|
68
|
+
totalMs: number;
|
|
69
|
+
maxMs: number;
|
|
70
|
+
}
|
|
71
|
+
/** A metrics interceptor and its counts. */
|
|
72
|
+
export interface MetricsInterceptor {
|
|
73
|
+
interceptor: Interceptor;
|
|
74
|
+
/** A copy of the counts, by procedure key. */
|
|
75
|
+
snapshot(): Record<string, ProcedureMetrics>;
|
|
76
|
+
reset(): void;
|
|
77
|
+
}
|
|
78
|
+
/** This function makes an interceptor that counts the calls, the errors and the time of each procedure. */
|
|
79
|
+
export declare function metricsInterceptor(options?: {
|
|
80
|
+
now?: () => number;
|
|
81
|
+
}): MetricsInterceptor;
|
|
82
|
+
//# sourceMappingURL=interceptors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interceptors.d.ts","sourceRoot":"","sources":["../../src/procedures/interceptors.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAmB,KAAK,WAAW,EAAE,KAAK,UAAU,EAAwB,MAAM,aAAa,CAAC;AACvG,OAAO,EAAa,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAM3D,MAAM,WAAW,yBAAyB;IACxC,2DAA2D;IAC3D,EAAE,EAAE,MAAM,CAAC;IACX;;;OAGG;IACH,SAAS,CAAC,EAAE,CAAC,CAAC,UAAU,EAAE,UAAU,KAAK,OAAO,CAAC,GAAG,SAAS,CAAC;IAC9D,2FAA2F;IAC3F,OAAO,CAAC,EAAE,CAAC,CAAC,UAAU,EAAE,UAAU,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;CAC1D;AA+CD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,yBAAyB,GAAG,WAAW,CAkClF;AAMD,2CAA2C;AAC3C,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,0FAA0F;IAC1F,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,qDAAqD;IACrD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,+CAA+C;IAC/C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;IACxB,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,MAAM,EAAE,SAAS,GAAG,IAAI,GAAG,OAAO,CAAC;IACnC,gCAAgC;IAChC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,iFAAiF;IACjF,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,IAAI,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;IACtC,uCAAuC;IACvC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5B;AAED,MAAM,WAAW,yBAAyB;IACxC,8FAA8F;IAC9F,MAAM,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,IAAI,CAAC;IACvC,+DAA+D;IAC/D,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,cAAc,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IACvD,qDAAqD;IACrD,GAAG,CAAC,EAAE,CAAC,MAAM,MAAM,CAAC,GAAG,SAAS,CAAC;CAClC;AAID;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,yBAAyB,GAAG,WAAW,CAyElF;AAMD,mCAAmC;AACnC,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,iDAAiD;IACjD,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,4CAA4C;AAC5C,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,WAAW,CAAC;IACzB,8CAA8C;IAC9C,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC7C,KAAK,IAAI,IAAI,CAAC;CACf;AAED,2GAA2G;AAC3G,wBAAgB,kBAAkB,CAAC,OAAO,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;CAAO,GAAG,kBAAkB,CAkB3F"}
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Interceptors for every host (roadmap 1.2): a timeout, tracing and metrics.
|
|
3
|
+
*
|
|
4
|
+
* An interceptor runs around each invocation of `invokeProcedure()`, also the nested calls. A
|
|
5
|
+
* host takes a list: `ProcedureServer({ interceptors })`, `new Client({ interceptors })` or
|
|
6
|
+
* `invokeProcedure(procedure, input, { interceptors })`. See `invoke.ts` for the types.
|
|
7
|
+
*/
|
|
8
|
+
import { InvocationError } from "./invoke.js";
|
|
9
|
+
import { pathToKey } from "./types.js";
|
|
10
|
+
/** A signal that aborts when one of the signals aborts. */
|
|
11
|
+
function anySignal(signals) {
|
|
12
|
+
const any = AbortSignal.any;
|
|
13
|
+
if (any)
|
|
14
|
+
return any(signals);
|
|
15
|
+
const controller = new AbortController();
|
|
16
|
+
for (const signal of signals) {
|
|
17
|
+
if (signal.aborted) {
|
|
18
|
+
controller.abort(signal.reason);
|
|
19
|
+
break;
|
|
20
|
+
}
|
|
21
|
+
signal.addEventListener("abort", () => controller.abort(signal.reason), { once: true });
|
|
22
|
+
}
|
|
23
|
+
return controller.signal;
|
|
24
|
+
}
|
|
25
|
+
function timeoutError(path, ms) {
|
|
26
|
+
return new InvocationError("TIMEOUT", `Procedure timed out after ${ms} ms: ${pathToKey(path)}`, path);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* The items of a stream until the deadline. At the deadline, the reader gets the TIMEOUT error
|
|
30
|
+
* and the stream gets `return()`.
|
|
31
|
+
*/
|
|
32
|
+
async function* itemsUntil(items, deadline, done) {
|
|
33
|
+
let finished = false;
|
|
34
|
+
try {
|
|
35
|
+
for (;;) {
|
|
36
|
+
const step = await Promise.race([items.next(), deadline]);
|
|
37
|
+
if (step.done) {
|
|
38
|
+
finished = true;
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
yield step.value;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
finally {
|
|
45
|
+
done();
|
|
46
|
+
// The generator can wait on an await that the aborted signal ends later: do not wait for it
|
|
47
|
+
if (!finished)
|
|
48
|
+
void items.return(undefined).catch(() => undefined);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* This interceptor ends an invocation that runs longer than `ms`: the reader gets a TIMEOUT
|
|
53
|
+
* error, and the handler's signal aborts. A handler that ignores its signal can run on, but its
|
|
54
|
+
* result is not used. For a stream, the limit covers the whole stream.
|
|
55
|
+
*/
|
|
56
|
+
export function timeoutInterceptor(options) {
|
|
57
|
+
const { ms } = options;
|
|
58
|
+
const appliesTo = options.appliesTo ?? ((invocation) => invocation.depth === 0);
|
|
59
|
+
return async (invocation, next) => {
|
|
60
|
+
if (!(ms > 0) || !appliesTo(invocation))
|
|
61
|
+
return next();
|
|
62
|
+
options.onLimit?.(invocation);
|
|
63
|
+
const controller = new AbortController();
|
|
64
|
+
const signal = invocation.signal ? anySignal([invocation.signal, controller.signal]) : controller.signal;
|
|
65
|
+
let timer;
|
|
66
|
+
const deadline = new Promise((_resolve, reject) => {
|
|
67
|
+
timer = setTimeout(() => {
|
|
68
|
+
const error = timeoutError(invocation.path, ms);
|
|
69
|
+
controller.abort(error);
|
|
70
|
+
reject(error);
|
|
71
|
+
}, ms);
|
|
72
|
+
});
|
|
73
|
+
// A deadline that no one waits for must not be an unhandled rejection
|
|
74
|
+
deadline.catch(() => undefined);
|
|
75
|
+
const stop = () => clearTimeout(timer);
|
|
76
|
+
let output;
|
|
77
|
+
try {
|
|
78
|
+
output = await Promise.race([next({ signal }), deadline]);
|
|
79
|
+
}
|
|
80
|
+
catch (error) {
|
|
81
|
+
stop();
|
|
82
|
+
throw error;
|
|
83
|
+
}
|
|
84
|
+
if (output.kind === "value") {
|
|
85
|
+
stop();
|
|
86
|
+
return output;
|
|
87
|
+
}
|
|
88
|
+
return { kind: "stream", items: itemsUntil(output.items, deadline, stop) };
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
let traceCount = 0;
|
|
92
|
+
/**
|
|
93
|
+
* This interceptor makes a span for each invocation, with the span of its parent. A host can
|
|
94
|
+
* send the spans to a trace backend, a log or the site's trace view.
|
|
95
|
+
*/
|
|
96
|
+
export function tracingInterceptor(options) {
|
|
97
|
+
const now = options.now ?? (() => performance.now());
|
|
98
|
+
const prefix = `t${++traceCount}-${Math.random().toString(36).slice(2, 8)}`;
|
|
99
|
+
let spanCount = 0;
|
|
100
|
+
/** The open spans, by the id of their invocation */
|
|
101
|
+
const open = new Map();
|
|
102
|
+
const finish = (span, invocationId, error) => {
|
|
103
|
+
span.end = now();
|
|
104
|
+
span.durationMs = span.end - span.start;
|
|
105
|
+
if (error !== undefined) {
|
|
106
|
+
span.status = "error";
|
|
107
|
+
span.error = error instanceof Error ? error.message : String(error);
|
|
108
|
+
const code = error.code;
|
|
109
|
+
if (typeof code === "string")
|
|
110
|
+
span.code = code;
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
span.status = "ok";
|
|
114
|
+
}
|
|
115
|
+
open.delete(invocationId);
|
|
116
|
+
options.onSpan(span);
|
|
117
|
+
};
|
|
118
|
+
return async (invocation, next) => {
|
|
119
|
+
const parent = invocation.parent ? open.get(invocation.parent.id) : undefined;
|
|
120
|
+
const id = `${prefix}-${++spanCount}`;
|
|
121
|
+
const span = {
|
|
122
|
+
id,
|
|
123
|
+
parentId: parent?.id,
|
|
124
|
+
traceId: parent?.traceId ?? id,
|
|
125
|
+
path: invocation.path,
|
|
126
|
+
key: pathToKey(invocation.path),
|
|
127
|
+
depth: invocation.depth,
|
|
128
|
+
start: now(),
|
|
129
|
+
end: undefined,
|
|
130
|
+
durationMs: undefined,
|
|
131
|
+
status: "running",
|
|
132
|
+
};
|
|
133
|
+
open.set(invocation.id, span);
|
|
134
|
+
options.onStart?.(span);
|
|
135
|
+
let output;
|
|
136
|
+
try {
|
|
137
|
+
output = await next();
|
|
138
|
+
}
|
|
139
|
+
catch (error) {
|
|
140
|
+
finish(span, invocation.id, error);
|
|
141
|
+
throw error;
|
|
142
|
+
}
|
|
143
|
+
if (output.kind === "value") {
|
|
144
|
+
span.kind = "value";
|
|
145
|
+
finish(span, invocation.id);
|
|
146
|
+
return output;
|
|
147
|
+
}
|
|
148
|
+
span.kind = "stream";
|
|
149
|
+
span.items = 0;
|
|
150
|
+
const items = output.items;
|
|
151
|
+
return {
|
|
152
|
+
kind: "stream",
|
|
153
|
+
items: (async function* () {
|
|
154
|
+
let failure;
|
|
155
|
+
try {
|
|
156
|
+
for await (const item of items) {
|
|
157
|
+
span.items = (span.items ?? 0) + 1;
|
|
158
|
+
yield item;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
catch (error) {
|
|
162
|
+
failure = error;
|
|
163
|
+
throw error;
|
|
164
|
+
}
|
|
165
|
+
finally {
|
|
166
|
+
finish(span, invocation.id, failure);
|
|
167
|
+
}
|
|
168
|
+
})(),
|
|
169
|
+
};
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
/** This function makes an interceptor that counts the calls, the errors and the time of each procedure. */
|
|
173
|
+
export function metricsInterceptor(options = {}) {
|
|
174
|
+
const counts = new Map();
|
|
175
|
+
const record = (key, duration, failed) => {
|
|
176
|
+
const entry = counts.get(key) ?? { calls: 0, errors: 0, totalMs: 0, maxMs: 0 };
|
|
177
|
+
entry.calls++;
|
|
178
|
+
if (failed)
|
|
179
|
+
entry.errors++;
|
|
180
|
+
entry.totalMs += duration;
|
|
181
|
+
entry.maxMs = Math.max(entry.maxMs, duration);
|
|
182
|
+
counts.set(key, entry);
|
|
183
|
+
};
|
|
184
|
+
return {
|
|
185
|
+
interceptor: tracingInterceptor({
|
|
186
|
+
onSpan: (span) => record(span.key, span.durationMs ?? 0, span.status === "error"),
|
|
187
|
+
...(options.now ? { now: options.now } : {}),
|
|
188
|
+
}),
|
|
189
|
+
snapshot: () => Object.fromEntries([...counts].map(([key, value]) => [key, { ...value }])),
|
|
190
|
+
reset: () => counts.clear(),
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
//# sourceMappingURL=interceptors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interceptors.js","sourceRoot":"","sources":["../../src/procedures/interceptors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Procedure invocation: the one way to run a procedure.
|
|
3
|
+
*
|
|
4
|
+
* `Client.exec()`, `Client.route()`, the local transport and `ProcedureServer` run each
|
|
5
|
+
* procedure through `invokeProcedure()`. The function validates the input, makes the context,
|
|
6
|
+
* runs the handler and validates each output. Thus every host applies the same rules
|
|
7
|
+
* (ARCHITECTURE-PROPOSALS-2026-10 P1).
|
|
8
|
+
*
|
|
9
|
+
* A handler gives one value, or it is a generator that yields values (a stream). The result
|
|
10
|
+
* tells which: `{ kind: "value" }` or `{ kind: "stream" }`. A caller that wants one value uses
|
|
11
|
+
* `outputValue()` (the last item of a stream). A caller that wants each value uses `outputItems()`.
|
|
12
|
+
*
|
|
13
|
+
* Interceptors run around each invocation, the nested calls too (roadmap 1.2): policy, tracing,
|
|
14
|
+
* timeouts and metrics for every host. `interceptors.ts` has a timeout, a tracing and a metrics
|
|
15
|
+
* interceptor.
|
|
16
|
+
*/
|
|
17
|
+
import type { AnyProcedure, ProcedureClient, ProcedureContext, ProcedurePath, RepositoryProvider } from "./types.js";
|
|
18
|
+
import type { ProcedureRegistry } from "./registry.js";
|
|
19
|
+
import { type HydrationEvent } from "./ref.js";
|
|
20
|
+
import type { EventBus } from "../events/types.js";
|
|
21
|
+
/** The reasons for which an invocation fails before or after the handler. */
|
|
22
|
+
export type InvocationErrorCode = "NOT_FOUND" | "NO_HANDLER" | "NOT_EXPOSED" | "NOT_DECLARED" | "VALIDATION_ERROR" | "OUTPUT_VALIDATION_ERROR" | "NO_OUTPUT" | "ABORTED" | "TIMEOUT";
|
|
23
|
+
/** An error of the invocation itself. An error that the handler throws passes through unchanged. */
|
|
24
|
+
export declare class InvocationError extends Error {
|
|
25
|
+
readonly name = "InvocationError";
|
|
26
|
+
readonly code: InvocationErrorCode;
|
|
27
|
+
readonly path: ProcedurePath;
|
|
28
|
+
readonly retryable: boolean;
|
|
29
|
+
constructor(code: InvocationErrorCode, message: string, path: ProcedurePath);
|
|
30
|
+
}
|
|
31
|
+
/** The output of an invocation: one value, or a stream of values. */
|
|
32
|
+
export type ProcedureOutput<T = unknown> = {
|
|
33
|
+
readonly kind: "value";
|
|
34
|
+
readonly value: T;
|
|
35
|
+
} | {
|
|
36
|
+
readonly kind: "stream";
|
|
37
|
+
readonly items: AsyncGenerator<T, void, undefined>;
|
|
38
|
+
};
|
|
39
|
+
export interface InvokeOptions {
|
|
40
|
+
/**
|
|
41
|
+
* The hydration observer of the program (see `HydrateOptions.onRef`). It goes to the context
|
|
42
|
+
* (`ctx.onRef`) and to the nested calls, so the hydrations of this program report to it.
|
|
43
|
+
*/
|
|
44
|
+
onRef?: ((event: HydrationEvent) => void) | undefined;
|
|
45
|
+
/** The nested calls of `ctx.client` find their procedures here. The default is `PROCEDURE_REGISTRY`. */
|
|
46
|
+
registry?: ProcedureRegistry | undefined;
|
|
47
|
+
metadata?: Record<string, unknown> | undefined;
|
|
48
|
+
/** When the signal aborts, a stream stops, and its handler gets `return()`. */
|
|
49
|
+
signal?: AbortSignal | undefined;
|
|
50
|
+
repository?: RepositoryProvider | undefined;
|
|
51
|
+
/** The bus of `ctx.bus`. The default is the global bus of `getGlobalEventBus()`. */
|
|
52
|
+
bus?: EventBus | undefined;
|
|
53
|
+
/** The input is valid already (for example, the route resolver validated it). */
|
|
54
|
+
inputValidated?: boolean | undefined;
|
|
55
|
+
/**
|
|
56
|
+
* This client replaces the default `ctx.client`, for example a Client that sends unknown paths
|
|
57
|
+
* to its transport. A function gets the invocation, so its nested calls can name their parent.
|
|
58
|
+
*/
|
|
59
|
+
client?: ProcedureClient | ((invocation: Invocation) => ProcedureClient) | undefined;
|
|
60
|
+
/**
|
|
61
|
+
* The expose rule of a server. A data-driven procedure (control flow, `runs-refs`, a procedure
|
|
62
|
+
* that `procedure.define` made) can call only the paths for which it gives true. A code
|
|
63
|
+
* procedure with `metadata.calls` can call what it declares and the exposed paths. See
|
|
64
|
+
* `policy.ts` (deep dive MCP-3).
|
|
65
|
+
*/
|
|
66
|
+
expose?: ((path: ProcedurePath) => boolean) | undefined;
|
|
67
|
+
/** True: a code procedure without `metadata.calls` can call only the exposed paths. */
|
|
68
|
+
strictCalls?: boolean | undefined;
|
|
69
|
+
/** The interceptors of each invocation, the outermost first. The nested calls get them too. */
|
|
70
|
+
interceptors?: readonly Interceptor[] | undefined;
|
|
71
|
+
/** The invocation whose handler makes this call. The context client sets it for a nested call. */
|
|
72
|
+
parent?: Invocation | undefined;
|
|
73
|
+
}
|
|
74
|
+
/** One invocation, as an interceptor sees it. */
|
|
75
|
+
export interface Invocation {
|
|
76
|
+
/** A number that identifies the invocation in this process. `next()` keeps it. */
|
|
77
|
+
readonly id: number;
|
|
78
|
+
readonly procedure: AnyProcedure;
|
|
79
|
+
readonly path: ProcedurePath;
|
|
80
|
+
/** The input before its validation. */
|
|
81
|
+
readonly input: unknown;
|
|
82
|
+
readonly metadata: Record<string, unknown>;
|
|
83
|
+
readonly signal: AbortSignal | undefined;
|
|
84
|
+
/** The invocation whose handler made this nested call. A call of a host has none. */
|
|
85
|
+
readonly parent: Invocation | undefined;
|
|
86
|
+
/** 0 for a call of a host, 1 for its nested calls, and so on. */
|
|
87
|
+
readonly depth: number;
|
|
88
|
+
}
|
|
89
|
+
/** The changes that an interceptor gives to the next step: the handler and the nested calls get them. */
|
|
90
|
+
export interface InvocationChanges {
|
|
91
|
+
signal?: AbortSignal | undefined;
|
|
92
|
+
metadata?: Record<string, unknown> | undefined;
|
|
93
|
+
}
|
|
94
|
+
/** The rest of the chain: the next interceptors, then the validation and the handler. */
|
|
95
|
+
export type InvocationNext = (changes?: InvocationChanges) => Promise<ProcedureOutput<unknown>>;
|
|
96
|
+
/**
|
|
97
|
+
* A function around an invocation. It can examine the invocation, refuse it (throw), change its
|
|
98
|
+
* signal or metadata (`next(changes)`), and examine or wrap the output.
|
|
99
|
+
*/
|
|
100
|
+
export type Interceptor = (invocation: Invocation, next: InvocationNext) => Promise<ProcedureOutput<unknown>>;
|
|
101
|
+
/** True for a value that `for await` can read: a generator, a stream. A string is not one. */
|
|
102
|
+
export declare function isAsyncIterable(value: unknown): value is AsyncIterable<unknown>;
|
|
103
|
+
/**
|
|
104
|
+
* This function runs a procedure: it validates the input, makes the context, runs the handler
|
|
105
|
+
* and validates the output. It throws an `InvocationError` for an invocation that cannot run,
|
|
106
|
+
* and the handler's own error when the handler throws. The interceptors of the options run
|
|
107
|
+
* around these steps.
|
|
108
|
+
*/
|
|
109
|
+
export declare function invokeProcedure<TOutput = unknown>(procedure: AnyProcedure, input: unknown, options?: InvokeOptions): Promise<ProcedureOutput<TOutput>>;
|
|
110
|
+
/** This function finds the procedure at a path in the registry of the options, then runs it. */
|
|
111
|
+
export declare function invokePath<TOutput = unknown>(path: ProcedurePath, input: unknown, options?: InvokeOptions): Promise<ProcedureOutput<TOutput>>;
|
|
112
|
+
/**
|
|
113
|
+
* One value of an output: the value, or the last item of a stream (the "sponge" mode). An
|
|
114
|
+
* empty stream is an error.
|
|
115
|
+
*/
|
|
116
|
+
export declare function outputValue<T>(output: ProcedureOutput<T>, path?: ProcedurePath): Promise<T>;
|
|
117
|
+
/** Each value of an output: the items of a stream, or the one value. */
|
|
118
|
+
export declare function outputItems<T>(output: ProcedureOutput<T>): AsyncGenerator<T, void, undefined>;
|
|
119
|
+
/** The items of an output that `start` gives. Nothing runs until the reader asks for the first item. */
|
|
120
|
+
export declare function streamOutput<T>(start: () => Promise<ProcedureOutput<T>>): AsyncGenerator<T, void, undefined>;
|
|
121
|
+
/**
|
|
122
|
+
* The context of a procedure. Its `client` calls other procedures through `invokePath()` with
|
|
123
|
+
* the same options, so the nested calls get the same metadata, signal, rules and interceptors.
|
|
124
|
+
* With an invocation, the nested calls name it as their parent.
|
|
125
|
+
*/
|
|
126
|
+
export declare function createProcedureContext(procedure: AnyProcedure, options?: InvokeOptions, invocation?: Invocation): ProcedureContext;
|
|
127
|
+
//# sourceMappingURL=invoke.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"invoke.d.ts","sourceRoot":"","sources":["../../src/procedures/invoke.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAGpB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAGvD,OAAO,EAAsB,KAAK,cAAc,EAAE,MAAM,UAAU,CAAC;AACnE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAOnD,6EAA6E;AAC7E,MAAM,MAAM,mBAAmB,GAC3B,WAAW,GACX,YAAY,GACZ,aAAa,GACb,cAAc,GACd,kBAAkB,GAClB,yBAAyB,GACzB,WAAW,GACX,SAAS,GACT,SAAS,CAAC;AAEd,oGAAoG;AACpG,qBAAa,eAAgB,SAAQ,KAAK;IACxC,SAAkB,IAAI,qBAAqB;IAC3C,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;IACnC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAS;IAEpC,YAAY,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAI1E;CACF;AAUD,qEAAqE;AACrE,MAAM,MAAM,eAAe,CAAC,CAAC,GAAG,OAAO,IACnC;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAA;CAAE,GAC7C;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,CAAA;CAAE,CAAC;AAEpF,MAAM,WAAW,aAAa;IAC5B;;;OAGG;IACH,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IACtD,wGAAwG;IACxG,QAAQ,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;IAC/C,+EAA+E;IAC/E,MAAM,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IACjC,UAAU,CAAC,EAAE,kBAAkB,GAAG,SAAS,CAAC;IAC5C,oFAAoF;IACpF,GAAG,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAC3B,iFAAiF;IACjF,cAAc,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACrC;;;OAGG;IACH,MAAM,CAAC,EAAE,eAAe,GAAG,CAAC,CAAC,UAAU,EAAE,UAAU,KAAK,eAAe,CAAC,GAAG,SAAS,CAAC;IACrF;;;;;OAKG;IACH,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,aAAa,KAAK,OAAO,CAAC,GAAG,SAAS,CAAC;IACxD,uFAAuF;IACvF,WAAW,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAClC,+FAA+F;IAC/F,YAAY,CAAC,EAAE,SAAS,WAAW,EAAE,GAAG,SAAS,CAAC;IAClD,kGAAkG;IAClG,MAAM,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;CACjC;AAQD,iDAAiD;AACjD,MAAM,WAAW,UAAU;IACzB,kFAAkF;IAClF,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC;IACjC,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAC7B,uCAAuC;IACvC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3C,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,CAAC;IACzC,qFAAqF;IACrF,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,SAAS,CAAC;IACxC,iEAAiE;IACjE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,yGAAyG;AACzG,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;CAChD;AAED,yFAAyF;AACzF,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,CAAC,EAAE,iBAAiB,KAAK,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;AAEhG;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,KAAK,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;AAM9G,8FAA8F;AAC9F,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CAAC,OAAO,CAAC,CAM/E;AAwED;;;;;GAKG;AACH,wBAAsB,eAAe,CAAC,OAAO,GAAG,OAAO,EACrD,SAAS,EAAE,YAAY,EACvB,KAAK,EAAE,OAAO,EACd,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAkCnC;AAkCD,gGAAgG;AAChG,wBAAsB,UAAU,CAAC,OAAO,GAAG,OAAO,EAChD,IAAI,EAAE,aAAa,EACnB,KAAK,EAAE,OAAO,EACd,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAMnC;AAMD;;;GAGG;AACH,wBAAsB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC,EAAE,IAAI,GAAE,aAAkB,GAAG,OAAO,CAAC,CAAC,CAAC,CAQrG;AAED,wEAAwE;AACxE,wBAAuB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,CAMpG;AAED,wGAAwG;AACxG,wBAAuB,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,CAEnH;AAMD;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,YAAY,EACvB,OAAO,GAAE,aAAkB,EAC3B,UAAU,CAAC,EAAE,UAAU,GACtB,gBAAgB,CAuBlB"}
|