raffel 1.0.6 → 1.0.7
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/README.md +80 -33
- package/dist/adapters/grpc.d.ts +2 -2
- package/dist/adapters/grpc.d.ts.map +1 -1
- package/dist/adapters/grpc.js +37 -7
- package/dist/adapters/grpc.js.map +1 -1
- package/dist/adapters/http.d.ts +2 -2
- package/dist/adapters/http.d.ts.map +1 -1
- package/dist/adapters/http.js +56 -2
- package/dist/adapters/http.js.map +1 -1
- package/dist/adapters/inbound/grpc.d.ts +9 -0
- package/dist/adapters/inbound/grpc.d.ts.map +1 -0
- package/dist/adapters/inbound/grpc.js +8 -0
- package/dist/adapters/inbound/grpc.js.map +1 -0
- package/dist/adapters/inbound/http.d.ts +9 -0
- package/dist/adapters/inbound/http.d.ts.map +1 -0
- package/dist/adapters/inbound/http.js +8 -0
- package/dist/adapters/inbound/http.js.map +1 -0
- package/dist/adapters/inbound/index.d.ts +22 -0
- package/dist/adapters/inbound/index.d.ts.map +1 -0
- package/dist/adapters/inbound/index.js +22 -0
- package/dist/adapters/inbound/index.js.map +1 -0
- package/dist/adapters/inbound/jsonrpc.d.ts +9 -0
- package/dist/adapters/inbound/jsonrpc.d.ts.map +1 -0
- package/dist/adapters/inbound/jsonrpc.js +8 -0
- package/dist/adapters/inbound/jsonrpc.js.map +1 -0
- package/dist/adapters/inbound/tcp.d.ts +9 -0
- package/dist/adapters/inbound/tcp.d.ts.map +1 -0
- package/dist/adapters/inbound/tcp.js +8 -0
- package/dist/adapters/inbound/tcp.js.map +1 -0
- package/dist/adapters/inbound/udp.d.ts +9 -0
- package/dist/adapters/inbound/udp.d.ts.map +1 -0
- package/dist/adapters/inbound/udp.js +8 -0
- package/dist/adapters/inbound/udp.js.map +1 -0
- package/dist/adapters/inbound/utils/connection-filter.d.ts +9 -0
- package/dist/adapters/inbound/utils/connection-filter.d.ts.map +1 -0
- package/dist/adapters/inbound/utils/connection-filter.js +8 -0
- package/dist/adapters/inbound/utils/connection-filter.js.map +1 -0
- package/dist/adapters/inbound/websocket.d.ts +9 -0
- package/dist/adapters/inbound/websocket.d.ts.map +1 -0
- package/dist/adapters/inbound/websocket.js +8 -0
- package/dist/adapters/inbound/websocket.js.map +1 -0
- package/dist/adapters/index.d.ts +12 -0
- package/dist/adapters/index.d.ts.map +1 -1
- package/dist/adapters/index.js +13 -0
- package/dist/adapters/index.js.map +1 -1
- package/dist/adapters/jsonrpc.d.ts.map +1 -1
- package/dist/adapters/jsonrpc.js +39 -5
- package/dist/adapters/jsonrpc.js.map +1 -1
- package/dist/adapters/outbound/cache/file.d.ts +6 -0
- package/dist/adapters/outbound/cache/file.d.ts.map +1 -0
- package/dist/adapters/outbound/cache/file.js +6 -0
- package/dist/adapters/outbound/cache/file.js.map +1 -0
- package/dist/adapters/outbound/cache/index.d.ts +9 -0
- package/dist/adapters/outbound/cache/index.d.ts.map +1 -0
- package/dist/adapters/outbound/cache/index.js +9 -0
- package/dist/adapters/outbound/cache/index.js.map +1 -0
- package/dist/adapters/outbound/cache/memory.d.ts +6 -0
- package/dist/adapters/outbound/cache/memory.d.ts.map +1 -0
- package/dist/adapters/outbound/cache/memory.js +6 -0
- package/dist/adapters/outbound/cache/memory.js.map +1 -0
- package/dist/adapters/outbound/cache/redis.d.ts +6 -0
- package/dist/adapters/outbound/cache/redis.d.ts.map +1 -0
- package/dist/adapters/outbound/cache/redis.js +6 -0
- package/dist/adapters/outbound/cache/redis.js.map +1 -0
- package/dist/adapters/outbound/index.d.ts +15 -0
- package/dist/adapters/outbound/index.d.ts.map +1 -0
- package/dist/adapters/outbound/index.js +17 -0
- package/dist/adapters/outbound/index.js.map +1 -0
- package/dist/adapters/outbound/logger/index.d.ts +7 -0
- package/dist/adapters/outbound/logger/index.d.ts.map +1 -0
- package/dist/adapters/outbound/logger/index.js +7 -0
- package/dist/adapters/outbound/logger/index.js.map +1 -0
- package/dist/adapters/outbound/logger/pino.d.ts +12 -0
- package/dist/adapters/outbound/logger/pino.d.ts.map +1 -0
- package/dist/adapters/outbound/logger/pino.js +58 -0
- package/dist/adapters/outbound/logger/pino.js.map +1 -0
- package/dist/adapters/outbound/rate-limit/filesystem.d.ts +6 -0
- package/dist/adapters/outbound/rate-limit/filesystem.d.ts.map +1 -0
- package/dist/adapters/outbound/rate-limit/filesystem.js +6 -0
- package/dist/adapters/outbound/rate-limit/filesystem.js.map +1 -0
- package/dist/adapters/outbound/rate-limit/index.d.ts +10 -0
- package/dist/adapters/outbound/rate-limit/index.d.ts.map +1 -0
- package/dist/adapters/outbound/rate-limit/index.js +10 -0
- package/dist/adapters/outbound/rate-limit/index.js.map +1 -0
- package/dist/adapters/outbound/rate-limit/memory.d.ts +8 -0
- package/dist/adapters/outbound/rate-limit/memory.d.ts.map +1 -0
- package/dist/adapters/outbound/rate-limit/memory.js +8 -0
- package/dist/adapters/outbound/rate-limit/memory.js.map +1 -0
- package/dist/adapters/outbound/rate-limit/redis.d.ts +6 -0
- package/dist/adapters/outbound/rate-limit/redis.d.ts.map +1 -0
- package/dist/adapters/outbound/rate-limit/redis.js +6 -0
- package/dist/adapters/outbound/rate-limit/redis.js.map +1 -0
- package/dist/adapters/outbound/rate-limit/s3db.d.ts +6 -0
- package/dist/adapters/outbound/rate-limit/s3db.d.ts.map +1 -0
- package/dist/adapters/outbound/rate-limit/s3db.js +6 -0
- package/dist/adapters/outbound/rate-limit/s3db.js.map +1 -0
- package/dist/adapters/outbound/session/index.d.ts +12 -0
- package/dist/adapters/outbound/session/index.d.ts.map +1 -0
- package/dist/adapters/outbound/session/index.js +9 -0
- package/dist/adapters/outbound/session/index.js.map +1 -0
- package/dist/adapters/outbound/session/memory.d.ts +9 -0
- package/dist/adapters/outbound/session/memory.d.ts.map +1 -0
- package/dist/adapters/outbound/session/memory.js +8 -0
- package/dist/adapters/outbound/session/memory.js.map +1 -0
- package/dist/adapters/outbound/session/redis.d.ts +9 -0
- package/dist/adapters/outbound/session/redis.d.ts.map +1 -0
- package/dist/adapters/outbound/session/redis.js +8 -0
- package/dist/adapters/outbound/session/redis.js.map +1 -0
- package/dist/adapters/outbound/session/s3db.d.ts +9 -0
- package/dist/adapters/outbound/session/s3db.d.ts.map +1 -0
- package/dist/adapters/outbound/session/s3db.js +8 -0
- package/dist/adapters/outbound/session/s3db.js.map +1 -0
- package/dist/adapters/tcp.d.ts +2 -2
- package/dist/adapters/tcp.d.ts.map +1 -1
- package/dist/adapters/tcp.js +16 -3
- package/dist/adapters/tcp.js.map +1 -1
- package/dist/adapters/udp.d.ts +2 -2
- package/dist/adapters/udp.d.ts.map +1 -1
- package/dist/adapters/udp.js +16 -4
- package/dist/adapters/udp.js.map +1 -1
- package/dist/adapters/websocket.d.ts +2 -2
- package/dist/adapters/websocket.d.ts.map +1 -1
- package/dist/adapters/websocket.js +33 -9
- package/dist/adapters/websocket.js.map +1 -1
- package/dist/application/config-preview.d.ts +147 -0
- package/dist/application/config-preview.d.ts.map +1 -0
- package/dist/application/config-preview.js +122 -0
- package/dist/application/config-preview.js.map +1 -0
- package/dist/application/index.d.ts +13 -0
- package/dist/application/index.d.ts.map +1 -0
- package/dist/application/index.js +13 -0
- package/dist/application/index.js.map +1 -0
- package/dist/application/registration.d.ts +71 -0
- package/dist/application/registration.d.ts.map +1 -0
- package/dist/application/registration.js +99 -0
- package/dist/application/registration.js.map +1 -0
- package/dist/application/runtime-preview.d.ts +67 -0
- package/dist/application/runtime-preview.d.ts.map +1 -0
- package/dist/application/runtime-preview.js +43 -0
- package/dist/application/runtime-preview.js.map +1 -0
- package/dist/bootstrap/config-normalization.d.ts +10 -0
- package/dist/bootstrap/config-normalization.d.ts.map +1 -0
- package/dist/bootstrap/config-normalization.js +14 -0
- package/dist/bootstrap/config-normalization.js.map +1 -0
- package/dist/bootstrap/create-server.d.ts +15 -0
- package/dist/bootstrap/create-server.d.ts.map +1 -0
- package/dist/bootstrap/create-server.js +17 -0
- package/dist/bootstrap/create-server.js.map +1 -0
- package/dist/bootstrap/index.d.ts +11 -0
- package/dist/bootstrap/index.d.ts.map +1 -0
- package/dist/bootstrap/index.js +13 -0
- package/dist/bootstrap/index.js.map +1 -0
- package/dist/bootstrap/protocol-wiring.d.ts +13 -0
- package/dist/bootstrap/protocol-wiring.d.ts.map +1 -0
- package/dist/bootstrap/protocol-wiring.js +11 -0
- package/dist/bootstrap/protocol-wiring.js.map +1 -0
- package/dist/channels/channel-manager.d.ts +2 -1
- package/dist/channels/channel-manager.d.ts.map +1 -1
- package/dist/channels/channel-manager.js +52 -19
- package/dist/channels/channel-manager.js.map +1 -1
- package/dist/core/registry.d.ts +4 -0
- package/dist/core/registry.d.ts.map +1 -1
- package/dist/core/registry.js +23 -3
- package/dist/core/registry.js.map +1 -1
- package/dist/core/router.d.ts.map +1 -1
- package/dist/core/router.js +61 -10
- package/dist/core/router.js.map +1 -1
- package/dist/docs/generators/code-samples.d.ts.map +1 -1
- package/dist/docs/generators/code-samples.js +7 -75
- package/dist/docs/generators/code-samples.js.map +1 -1
- package/dist/docs/generators/grpc-generator.js +2 -2
- package/dist/docs/generators/grpc-generator.js.map +1 -1
- package/dist/docs/generators/http-generator.js +3 -2
- package/dist/docs/generators/http-generator.js.map +1 -1
- package/dist/docs/generators/index.d.ts +1 -1
- package/dist/docs/generators/index.d.ts.map +1 -1
- package/dist/docs/generators/index.js +1 -1
- package/dist/docs/generators/index.js.map +1 -1
- package/dist/docs/generators/jsonrpc-generator.js +2 -2
- package/dist/docs/generators/jsonrpc-generator.js.map +1 -1
- package/dist/docs/generators/schema-converter.d.ts +3 -3
- package/dist/docs/generators/schema-converter.d.ts.map +1 -1
- package/dist/docs/generators/schema-converter.js +8 -60
- package/dist/docs/generators/schema-converter.js.map +1 -1
- package/dist/docs/generators/streams-generator.js +2 -2
- package/dist/docs/generators/streams-generator.js.map +1 -1
- package/dist/docs/generators/tcp-generator.js +2 -2
- package/dist/docs/generators/tcp-generator.js.map +1 -1
- package/dist/docs/generators/udp-generator.js +2 -2
- package/dist/docs/generators/udp-generator.js.map +1 -1
- package/dist/docs/generators/websocket-generator.js +3 -3
- package/dist/docs/generators/websocket-generator.js.map +1 -1
- package/dist/docs/index.d.ts +1 -1
- package/dist/docs/index.d.ts.map +1 -1
- package/dist/docs/index.js +1 -1
- package/dist/docs/index.js.map +1 -1
- package/dist/docs/openapi/generator.d.ts +2 -0
- package/dist/docs/openapi/generator.d.ts.map +1 -1
- package/dist/docs/openapi/generator.js +16 -51
- package/dist/docs/openapi/generator.js.map +1 -1
- package/dist/dx/index.d.ts +2 -0
- package/dist/dx/index.d.ts.map +1 -1
- package/dist/dx/index.js +1 -0
- package/dist/dx/index.js.map +1 -1
- package/dist/dx/scaffold/index.d.ts +32 -0
- package/dist/dx/scaffold/index.d.ts.map +1 -0
- package/dist/dx/scaffold/index.js +471 -0
- package/dist/dx/scaffold/index.js.map +1 -0
- package/dist/graphql/adapter.d.ts.map +1 -1
- package/dist/graphql/adapter.js +58 -6
- package/dist/graphql/adapter.js.map +1 -1
- package/dist/graphql/schema-generator.d.ts +2 -2
- package/dist/graphql/schema-generator.d.ts.map +1 -1
- package/dist/graphql/schema-generator.js +228 -215
- package/dist/graphql/schema-generator.js.map +1 -1
- package/dist/http/app.d.ts +9 -4
- package/dist/http/app.d.ts.map +1 -1
- package/dist/http/app.js +125 -50
- package/dist/http/app.js.map +1 -1
- package/dist/http/context.d.ts +8 -1
- package/dist/http/context.d.ts.map +1 -1
- package/dist/http/context.js +2 -1
- package/dist/http/context.js.map +1 -1
- package/dist/http/cookie.d.ts +2 -2
- package/dist/http/cookie.js +1 -1
- package/dist/http/cors.d.ts +1 -1
- package/dist/http/cors.js +1 -1
- package/dist/http/guards.d.ts.map +1 -1
- package/dist/http/guards.js +38 -28
- package/dist/http/guards.js.map +1 -1
- package/dist/http/index.d.ts +1 -1
- package/dist/http/index.js +2 -2
- package/dist/http/index.js.map +1 -1
- package/dist/http/stream-auth.d.ts +1 -1
- package/dist/http/stream-auth.d.ts.map +1 -1
- package/dist/http/stream-auth.js +6 -5
- package/dist/http/stream-auth.js.map +1 -1
- package/dist/index.d.ts +23 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +22 -3
- package/dist/index.js.map +1 -1
- package/dist/inspect/contracts.d.ts +47 -0
- package/dist/inspect/contracts.d.ts.map +1 -0
- package/dist/inspect/contracts.js +237 -0
- package/dist/inspect/contracts.js.map +1 -0
- package/dist/inspect/format-utils.d.ts +18 -0
- package/dist/inspect/format-utils.d.ts.map +1 -0
- package/dist/inspect/format-utils.js +55 -0
- package/dist/inspect/format-utils.js.map +1 -0
- package/dist/inspect/index.d.ts +13 -0
- package/dist/inspect/index.d.ts.map +1 -0
- package/dist/inspect/index.js +8 -0
- package/dist/inspect/index.js.map +1 -0
- package/dist/inspect/loader.d.ts +13 -0
- package/dist/inspect/loader.d.ts.map +1 -0
- package/dist/inspect/loader.js +115 -0
- package/dist/inspect/loader.js.map +1 -0
- package/dist/inspect/playground-html.d.ts +8 -0
- package/dist/inspect/playground-html.d.ts.map +1 -0
- package/dist/inspect/playground-html.js +381 -0
- package/dist/inspect/playground-html.js.map +1 -0
- package/dist/inspect/playground-invokers.d.ts +37 -0
- package/dist/inspect/playground-invokers.d.ts.map +1 -0
- package/dist/inspect/playground-invokers.js +950 -0
- package/dist/inspect/playground-invokers.js.map +1 -0
- package/dist/inspect/playground.d.ts +97 -0
- package/dist/inspect/playground.d.ts.map +1 -0
- package/dist/inspect/playground.js +412 -0
- package/dist/inspect/playground.js.map +1 -0
- package/dist/inspect/reports.d.ts +52 -0
- package/dist/inspect/reports.d.ts.map +1 -0
- package/dist/inspect/reports.js +400 -0
- package/dist/inspect/reports.js.map +1 -0
- package/dist/inspect/runtime-graph.d.ts +52 -0
- package/dist/inspect/runtime-graph.d.ts.map +1 -0
- package/dist/inspect/runtime-graph.js +739 -0
- package/dist/inspect/runtime-graph.js.map +1 -0
- package/dist/inspect/schema-samples.d.ts +18 -0
- package/dist/inspect/schema-samples.d.ts.map +1 -0
- package/dist/inspect/schema-samples.js +137 -0
- package/dist/inspect/schema-samples.js.map +1 -0
- package/dist/inspect/types.d.ts +146 -0
- package/dist/inspect/types.d.ts.map +1 -0
- package/dist/inspect/types.js +2 -0
- package/dist/inspect/types.js.map +1 -0
- package/dist/mcp/cli.d.ts +11 -12
- package/dist/mcp/cli.d.ts.map +1 -1
- package/dist/mcp/cli.js +303 -65
- package/dist/mcp/cli.js.map +1 -1
- package/dist/mcp/docs/patterns.d.ts.map +1 -1
- package/dist/mcp/docs/patterns.js +82 -29
- package/dist/mcp/docs/patterns.js.map +1 -1
- package/dist/mcp/docs/quickstart.d.ts +1 -1
- package/dist/mcp/docs/quickstart.d.ts.map +1 -1
- package/dist/mcp/docs/quickstart.js +65 -25
- package/dist/mcp/docs/quickstart.js.map +1 -1
- package/dist/mcp/resources/index.d.ts.map +1 -1
- package/dist/mcp/resources/index.js +82 -5
- package/dist/mcp/resources/index.js.map +1 -1
- package/dist/mcp/tools/definitions.d.ts.map +1 -1
- package/dist/mcp/tools/definitions.js +36 -0
- package/dist/mcp/tools/definitions.js.map +1 -1
- package/dist/mcp/tools/handlers.d.ts.map +1 -1
- package/dist/mcp/tools/handlers.js +148 -12
- package/dist/mcp/tools/handlers.js.map +1 -1
- package/dist/middleware/auth.d.ts.map +1 -1
- package/dist/middleware/auth.js +3 -2
- package/dist/middleware/auth.js.map +1 -1
- package/dist/mock-server/cli.d.ts +14 -0
- package/dist/mock-server/cli.d.ts.map +1 -0
- package/dist/mock-server/cli.js +314 -0
- package/dist/mock-server/cli.js.map +1 -0
- package/dist/mock-server/fake-data.d.ts +14 -0
- package/dist/mock-server/fake-data.d.ts.map +1 -0
- package/dist/mock-server/fake-data.js +21 -0
- package/dist/mock-server/fake-data.js.map +1 -0
- package/dist/mock-server/index.d.ts +69 -0
- package/dist/mock-server/index.d.ts.map +1 -0
- package/dist/mock-server/index.js +400 -0
- package/dist/mock-server/index.js.map +1 -0
- package/dist/mock-server/route-extractor.d.ts +40 -0
- package/dist/mock-server/route-extractor.d.ts.map +1 -0
- package/dist/mock-server/route-extractor.js +211 -0
- package/dist/mock-server/route-extractor.js.map +1 -0
- package/dist/mock-server/types.d.ts +64 -0
- package/dist/mock-server/types.d.ts.map +1 -0
- package/dist/mock-server/types.js +5 -0
- package/dist/mock-server/types.js.map +1 -0
- package/dist/policy/runtime.d.ts +7 -0
- package/dist/policy/runtime.d.ts.map +1 -0
- package/dist/policy/runtime.js +82 -0
- package/dist/policy/runtime.js.map +1 -0
- package/dist/ports/index.d.ts +18 -0
- package/dist/ports/index.d.ts.map +1 -0
- package/dist/ports/index.js +11 -0
- package/dist/ports/index.js.map +1 -0
- package/dist/ports/outbound/cache-driver.d.ts +9 -0
- package/dist/ports/outbound/cache-driver.d.ts.map +1 -0
- package/dist/ports/outbound/cache-driver.js +9 -0
- package/dist/ports/outbound/cache-driver.js.map +1 -0
- package/dist/ports/outbound/cache-store.d.ts +8 -0
- package/dist/ports/outbound/cache-store.d.ts.map +1 -0
- package/dist/ports/outbound/cache-store.js +8 -0
- package/dist/ports/outbound/cache-store.js.map +1 -0
- package/dist/ports/outbound/channel-presence.d.ts +30 -0
- package/dist/ports/outbound/channel-presence.d.ts.map +1 -0
- package/dist/ports/outbound/channel-presence.js +9 -0
- package/dist/ports/outbound/channel-presence.js.map +1 -0
- package/dist/ports/outbound/event-store.d.ts +9 -0
- package/dist/ports/outbound/event-store.d.ts.map +1 -0
- package/dist/ports/outbound/event-store.js +9 -0
- package/dist/ports/outbound/event-store.js.map +1 -0
- package/dist/ports/outbound/logger.d.ts +31 -0
- package/dist/ports/outbound/logger.d.ts.map +1 -0
- package/dist/ports/outbound/logger.js +8 -0
- package/dist/ports/outbound/logger.js.map +1 -0
- package/dist/ports/outbound/rate-limit-driver.d.ts +9 -0
- package/dist/ports/outbound/rate-limit-driver.d.ts.map +1 -0
- package/dist/ports/outbound/rate-limit-driver.js +9 -0
- package/dist/ports/outbound/rate-limit-driver.js.map +1 -0
- package/dist/ports/outbound/session-store.d.ts +9 -0
- package/dist/ports/outbound/session-store.d.ts.map +1 -0
- package/dist/ports/outbound/session-store.js +9 -0
- package/dist/ports/outbound/session-store.js.map +1 -0
- package/dist/ports/outbound/validator.d.ts +9 -0
- package/dist/ports/outbound/validator.d.ts.map +1 -0
- package/dist/ports/outbound/validator.js +9 -0
- package/dist/ports/outbound/validator.js.map +1 -0
- package/dist/server/builder/config-preview.d.ts +2 -33
- package/dist/server/builder/config-preview.d.ts.map +1 -1
- package/dist/server/builder/config-preview.js +1 -94
- package/dist/server/builder/config-preview.js.map +1 -1
- package/dist/server/builder/lifecycle.d.ts +11 -1
- package/dist/server/builder/lifecycle.d.ts.map +1 -1
- package/dist/server/builder/lifecycle.js +117 -3
- package/dist/server/builder/lifecycle.js.map +1 -1
- package/dist/server/builder/single-port-utils.d.ts +11 -2
- package/dist/server/builder/single-port-utils.d.ts.map +1 -1
- package/dist/server/builder/single-port-utils.js +88 -16
- package/dist/server/builder/single-port-utils.js.map +1 -1
- package/dist/server/builder.d.ts.map +1 -1
- package/dist/server/builder.js +203 -78
- package/dist/server/builder.js.map +1 -1
- package/dist/server/discovery-utils.d.ts +5 -1
- package/dist/server/discovery-utils.d.ts.map +1 -1
- package/dist/server/discovery-utils.js +4 -1
- package/dist/server/discovery-utils.js.map +1 -1
- package/dist/server/front-door.d.ts +3 -1
- package/dist/server/front-door.d.ts.map +1 -1
- package/dist/server/front-door.js +80 -18
- package/dist/server/front-door.js.map +1 -1
- package/dist/server/fs-routes/middleware-processor.d.ts.map +1 -1
- package/dist/server/fs-routes/middleware-processor.js +9 -8
- package/dist/server/fs-routes/middleware-processor.js.map +1 -1
- package/dist/server/handler-builders.d.ts +2 -1
- package/dist/server/handler-builders.d.ts.map +1 -1
- package/dist/server/handler-builders.js +21 -0
- package/dist/server/handler-builders.js.map +1 -1
- package/dist/server/index.d.ts +4 -2
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +2 -1
- package/dist/server/index.js.map +1 -1
- package/dist/server/port-binding.d.ts +8 -2
- package/dist/server/port-binding.d.ts.map +1 -1
- package/dist/server/port-binding.js +11 -1
- package/dist/server/port-binding.js.map +1 -1
- package/dist/server/protocol-config.d.ts.map +1 -1
- package/dist/server/protocol-config.js +1 -0
- package/dist/server/protocol-config.js.map +1 -1
- package/dist/server/protocol-fusion-diagnostics.d.ts +20 -0
- package/dist/server/protocol-fusion-diagnostics.d.ts.map +1 -0
- package/dist/server/protocol-fusion-diagnostics.js +51 -0
- package/dist/server/protocol-fusion-diagnostics.js.map +1 -0
- package/dist/server/rest-middleware.d.ts +3 -3
- package/dist/server/rest-middleware.d.ts.map +1 -1
- package/dist/server/rest-middleware.js +37 -5
- package/dist/server/rest-middleware.js.map +1 -1
- package/dist/server/router-module.d.ts +3 -1
- package/dist/server/router-module.d.ts.map +1 -1
- package/dist/server/router-module.js +14 -0
- package/dist/server/router-module.js.map +1 -1
- package/dist/server/shared-context.d.ts +3 -3
- package/dist/server/shared-context.d.ts.map +1 -1
- package/dist/server/shared-context.js +7 -9
- package/dist/server/shared-context.js.map +1 -1
- package/dist/server/single-port/dispatcher.d.ts.map +1 -1
- package/dist/server/single-port/dispatcher.js +20 -13
- package/dist/server/single-port/dispatcher.js.map +1 -1
- package/dist/server/types.d.ts +104 -7
- package/dist/server/types.d.ts.map +1 -1
- package/dist/types/context.d.ts +167 -4
- package/dist/types/context.d.ts.map +1 -1
- package/dist/types/context.js +168 -2
- package/dist/types/context.js.map +1 -1
- package/dist/types/handlers.d.ts +3 -0
- package/dist/types/handlers.d.ts.map +1 -1
- package/dist/types/index.d.ts +4 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +2 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/policies.d.ts +54 -0
- package/dist/types/policies.d.ts.map +1 -0
- package/dist/types/policies.js +109 -0
- package/dist/types/policies.js.map +1 -0
- package/dist/ui/core/registry.d.ts +4 -0
- package/dist/ui/core/registry.d.ts.map +1 -1
- package/dist/ui/core/router.d.ts.map +1 -1
- package/dist/ui/docs/generators/code-samples.d.ts.map +1 -1
- package/dist/ui/docs/generators/index.d.ts +1 -1
- package/dist/ui/docs/generators/index.d.ts.map +1 -1
- package/dist/ui/docs/generators/schema-converter.d.ts +3 -3
- package/dist/ui/docs/generators/schema-converter.d.ts.map +1 -1
- package/dist/ui/docs/index.d.ts +1 -1
- package/dist/ui/docs/index.d.ts.map +1 -1
- package/dist/ui/docs/openapi/generator.d.ts +2 -0
- package/dist/ui/docs/openapi/generator.d.ts.map +1 -1
- package/dist/ui/middleware/interceptors/rate-limit.d.ts +147 -0
- package/dist/ui/middleware/interceptors/rate-limit.d.ts.map +1 -0
- package/dist/ui/middleware/interceptors/timeout.d.ts +121 -0
- package/dist/ui/middleware/interceptors/timeout.d.ts.map +1 -0
- package/dist/ui/middleware/types.d.ts +396 -0
- package/dist/ui/middleware/types.d.ts.map +1 -0
- package/dist/ui/policy/runtime.d.ts +7 -0
- package/dist/ui/policy/runtime.d.ts.map +1 -0
- package/dist/ui/rate-limit/drivers/filesystem.d.ts +19 -0
- package/dist/ui/rate-limit/drivers/filesystem.d.ts.map +1 -0
- package/dist/ui/rate-limit/drivers/memory.d.ts +17 -0
- package/dist/ui/rate-limit/drivers/memory.d.ts.map +1 -0
- package/dist/ui/rate-limit/drivers/redis.d.ts +14 -0
- package/dist/ui/rate-limit/drivers/redis.d.ts.map +1 -0
- package/dist/ui/rate-limit/drivers/s3db.d.ts +31 -0
- package/dist/ui/rate-limit/drivers/s3db.d.ts.map +1 -0
- package/dist/ui/rate-limit/factory.d.ts +12 -0
- package/dist/ui/rate-limit/factory.d.ts.map +1 -0
- package/dist/ui/rate-limit/types.d.ts +81 -0
- package/dist/ui/rate-limit/types.d.ts.map +1 -0
- package/dist/ui/server/fs-routes/middleware-processor.d.ts.map +1 -1
- package/dist/ui/types/context.d.ts +167 -4
- package/dist/ui/types/context.d.ts.map +1 -1
- package/dist/ui/types/handlers.d.ts +3 -0
- package/dist/ui/types/handlers.d.ts.map +1 -1
- package/dist/ui/types/index.d.ts +4 -2
- package/dist/ui/types/index.d.ts.map +1 -1
- package/dist/ui/types/policies.d.ts +54 -0
- package/dist/ui/types/policies.d.ts.map +1 -0
- package/dist/ui/usd/spec/types.d.ts +3 -0
- package/dist/ui/usd/spec/types.d.ts.map +1 -1
- package/dist/ui/utils/schema-examples.d.ts +39 -0
- package/dist/ui/utils/schema-examples.d.ts.map +1 -0
- package/dist/ui/validation/descriptor.d.ts +26 -0
- package/dist/ui/validation/descriptor.d.ts.map +1 -0
- package/dist/ui/validation/index.d.ts +1 -0
- package/dist/ui/validation/index.d.ts.map +1 -1
- package/dist/usd/spec/types.d.ts +3 -0
- package/dist/usd/spec/types.d.ts.map +1 -1
- package/dist/usd/spec/types.js.map +1 -1
- package/dist/utils/context-utils.d.ts +3 -2
- package/dist/utils/context-utils.d.ts.map +1 -1
- package/dist/utils/context-utils.js +4 -0
- package/dist/utils/context-utils.js.map +1 -1
- package/dist/utils/schema-examples.d.ts +39 -0
- package/dist/utils/schema-examples.d.ts.map +1 -0
- package/dist/utils/schema-examples.js +240 -0
- package/dist/utils/schema-examples.js.map +1 -0
- package/dist/validation/descriptor.d.ts +26 -0
- package/dist/validation/descriptor.d.ts.map +1 -0
- package/dist/validation/descriptor.js +155 -0
- package/dist/validation/descriptor.js.map +1 -0
- package/dist/validation/index.d.ts +1 -0
- package/dist/validation/index.d.ts.map +1 -1
- package/dist/validation/index.js +1 -0
- package/dist/validation/index.js.map +1 -1
- package/package.json +11 -3
package/dist/server/builder.js
CHANGED
|
@@ -13,15 +13,39 @@ import { createLogger } from '../utils/logger.js';
|
|
|
13
13
|
import { createProcedureBuilder, createStreamBuilder, createEventBuilder, createGroupBuilder, joinHandlerName, } from './handler-builders.js';
|
|
14
14
|
import { createResourceBuilder } from './resource-builder.js';
|
|
15
15
|
import { registerDiscoveredHandlers, resolveHooksForProcedure } from './discovery-utils.js';
|
|
16
|
+
import { createRegistrationService } from '../application/registration.js';
|
|
17
|
+
import { createRuntimePreviewService } from '../application/runtime-preview.js';
|
|
16
18
|
import { buildProtocolConfig, resolveSinglePortConfig } from './protocol-config.js';
|
|
17
19
|
import { normalizeInterceptors as normalizeInterceptorsShared } from './interceptor-utils.js';
|
|
18
|
-
import { buildServerConfigPreview, emitConfigWarnings, logSinglePortConfig, } from './builder/config-preview.js';
|
|
19
20
|
import { createFrontDoorBootstrap, normalizeFrontDoorProtocol } from './front-door.js';
|
|
21
|
+
import { createProtocolFusionDiagnosticsStore, resolveProtocolFusionMode, } from './protocol-fusion-diagnostics.js';
|
|
20
22
|
import { createDiscoveryBootstrap } from './discovery-bootstrap.js';
|
|
21
23
|
import { createServerLifecycle } from './builder/lifecycle.js';
|
|
22
24
|
import { configureMetrics, configureTracing, createTelemetryState, } from './telemetry-bootstrap.js';
|
|
23
|
-
import { isSinglePortTcpRouteEnabled as detectSinglePortTcpRouteEnabled, isSinglePortUdpRouteEnabled as detectSinglePortUdpRouteEnabled, } from './builder/single-port-utils.js';
|
|
25
|
+
import { isSinglePortTcpRouteEnabled as detectSinglePortTcpRouteEnabled, isSinglePortGrpcRouteEnabled as detectSinglePortGrpcRouteEnabled, isSinglePortUdpRouteEnabled as detectSinglePortUdpRouteEnabled, } from './builder/single-port-utils.js';
|
|
26
|
+
import { mergeContractPolicies } from '../types/policies.js';
|
|
27
|
+
import { adaptPinoLogger } from '../adapters/outbound/logger/pino.js';
|
|
24
28
|
const logger = createLogger('server');
|
|
29
|
+
const loggerPort = adaptPinoLogger(logger);
|
|
30
|
+
function policyMetadataFromRouteMeta(meta) {
|
|
31
|
+
if (!meta)
|
|
32
|
+
return undefined;
|
|
33
|
+
return mergeContractPolicies(meta.auth && meta.auth !== 'none'
|
|
34
|
+
? {
|
|
35
|
+
auth: {
|
|
36
|
+
mode: meta.auth,
|
|
37
|
+
...(meta.roles && meta.roles.length > 0 && { roles: meta.roles }),
|
|
38
|
+
},
|
|
39
|
+
}
|
|
40
|
+
: undefined, meta.rateLimit
|
|
41
|
+
? {
|
|
42
|
+
rateLimit: {
|
|
43
|
+
maxRequests: meta.rateLimit.limit,
|
|
44
|
+
windowMs: meta.rateLimit.window,
|
|
45
|
+
},
|
|
46
|
+
}
|
|
47
|
+
: undefined);
|
|
48
|
+
}
|
|
25
49
|
/**
|
|
26
50
|
* Check if a value is an async iterable
|
|
27
51
|
*/
|
|
@@ -32,7 +56,7 @@ function isAsyncIterable(value) {
|
|
|
32
56
|
* Create a unified Raffel server
|
|
33
57
|
*/
|
|
34
58
|
export function createServer(options) {
|
|
35
|
-
const { port, host = '0.0.0.0', basePath = '/', cors = true, eventDelivery, websocket, jsonrpc, tcp, grpc, graphql, middleware, http: httpOptions, frontDoor, singlePort, envelope, discovery, hotReload = isDevelopment(), providers: initialProviders, protocolExtensions: initialProtocolExtensions, protocolAliasMode: serverProtocolAliasMode = 'standard', } = options;
|
|
59
|
+
const { port, host = '0.0.0.0', basePath = '/', cors = true, eventDelivery, websocket, jsonrpc, tcp, grpc, graphql, middleware, http: httpOptions, frontDoor, sharedPort, singlePort, envelope, discovery, hotReload = isDevelopment(), providers: initialProviders, protocolExtensions: initialProtocolExtensions, protocolAliasMode: serverProtocolAliasMode = 'standard', } = options;
|
|
36
60
|
// Core components
|
|
37
61
|
const registry = createRegistry();
|
|
38
62
|
const router = createRouter(registry, { eventDelivery });
|
|
@@ -66,7 +90,9 @@ export function createServer(options) {
|
|
|
66
90
|
const frontDoorEnabled = frontDoor?.enabled === true;
|
|
67
91
|
const frontDoorHost = frontDoor?.host ?? host;
|
|
68
92
|
const frontDoorPort = frontDoor?.port ?? port;
|
|
69
|
-
let singlePortConfigInput =
|
|
93
|
+
let singlePortConfigInput = sharedPort
|
|
94
|
+
? { ...(singlePort ?? {}), ...sharedPort }
|
|
95
|
+
: singlePort;
|
|
70
96
|
let singlePortConfig = resolveSinglePortConfig(singlePortConfigInput);
|
|
71
97
|
const frontDoorAliasMode = frontDoor?.protocolAliasMode ?? serverProtocolAliasMode;
|
|
72
98
|
const effectiveHost = frontDoorEnabled ? frontDoorHost : host;
|
|
@@ -80,6 +106,16 @@ export function createServer(options) {
|
|
|
80
106
|
const getSinglePortSource = () => {
|
|
81
107
|
return singlePortConfig.enabled ? 'singlePort' : 'native';
|
|
82
108
|
};
|
|
109
|
+
const protocolFusionDiagnostics = createProtocolFusionDiagnosticsStore({
|
|
110
|
+
getMode: () => resolveProtocolFusionMode(frontDoorEnabled, singlePortConfig.enabled),
|
|
111
|
+
getEntrypoint: () => (singlePortConfig.enabled ? 'tcp' : 'http'),
|
|
112
|
+
getTarget: () => ({
|
|
113
|
+
host: effectiveHost,
|
|
114
|
+
port: effectivePort,
|
|
115
|
+
}),
|
|
116
|
+
getFrontDoorProtocols: () => frontDoorProtocols,
|
|
117
|
+
getSharedPortProtocols: () => singlePortConfig.protocols,
|
|
118
|
+
});
|
|
83
119
|
const updateSinglePortConfig = (next) => {
|
|
84
120
|
if (next === undefined)
|
|
85
121
|
return;
|
|
@@ -124,6 +160,7 @@ export function createServer(options) {
|
|
|
124
160
|
basePath,
|
|
125
161
|
effectiveHost,
|
|
126
162
|
effectivePort,
|
|
163
|
+
onDecision: (decision) => protocolFusionDiagnostics.record(decision),
|
|
127
164
|
});
|
|
128
165
|
// Global interceptors (from options + added via .use())
|
|
129
166
|
const globalInterceptors = middleware ? [...middleware] : [];
|
|
@@ -160,6 +197,7 @@ export function createServer(options) {
|
|
|
160
197
|
sniffTimeoutMs: singlePortConfig.sniffTimeoutMs,
|
|
161
198
|
sniffMaxBytes: singlePortConfig.sniffMaxBytes,
|
|
162
199
|
maxConcurrentDetections: singlePortConfig.maxConcurrentDetections,
|
|
200
|
+
sniffers: singlePortConfig.sniffers,
|
|
163
201
|
protocols: singlePortConfig.protocols,
|
|
164
202
|
alpn: singlePortConfig.alpn,
|
|
165
203
|
}),
|
|
@@ -167,15 +205,6 @@ export function createServer(options) {
|
|
|
167
205
|
getSinglePortSource,
|
|
168
206
|
protocols,
|
|
169
207
|
};
|
|
170
|
-
function emitConfiguredWarnings() {
|
|
171
|
-
emitConfigWarnings(serverConfigPreviewContext, logger);
|
|
172
|
-
}
|
|
173
|
-
function getPreviewConfig() {
|
|
174
|
-
return buildServerConfigPreview(serverConfigPreviewContext);
|
|
175
|
-
}
|
|
176
|
-
function logSinglePortConfiguration() {
|
|
177
|
-
logSinglePortConfig(serverConfigPreviewContext, logger);
|
|
178
|
-
}
|
|
179
208
|
// Namespace-level interceptors (for shared middleware per protocol)
|
|
180
209
|
// These are persistent across getter calls, enabling shared middleware chains
|
|
181
210
|
const httpInterceptors = [];
|
|
@@ -198,6 +227,7 @@ export function createServer(options) {
|
|
|
198
227
|
providerMiddlewareInstalled: { value: false },
|
|
199
228
|
portBinding: { value: null },
|
|
200
229
|
singlePortTcpConnectionHandler: { value: null },
|
|
230
|
+
singlePortGrpcConnectionHandler: { value: null },
|
|
201
231
|
httpServer: { value: null },
|
|
202
232
|
wsAdapter: { value: null },
|
|
203
233
|
jsonRpcAdapter: { value: null },
|
|
@@ -244,76 +274,64 @@ export function createServer(options) {
|
|
|
244
274
|
const udpServers = [];
|
|
245
275
|
// Channel definitions discovered from filesystem or added manually
|
|
246
276
|
const channelRegistry = new Map();
|
|
277
|
+
const operationRegistrations = new Map();
|
|
247
278
|
// REST resources for HTTP routing
|
|
248
279
|
const restResourceRegistry = [];
|
|
280
|
+
function recordOperationRegistration(name, registration) {
|
|
281
|
+
operationRegistrations.set(name, registration);
|
|
282
|
+
}
|
|
283
|
+
function programmaticSource(kind = 'programmatic') {
|
|
284
|
+
return { kind, location: '<programmatic>' };
|
|
285
|
+
}
|
|
286
|
+
// Registration service (extracted to application/registration.ts)
|
|
287
|
+
const registrationService = createRegistrationService({
|
|
288
|
+
registry,
|
|
289
|
+
schemaRegistry,
|
|
290
|
+
globalInterceptors,
|
|
291
|
+
logger: loggerPort,
|
|
292
|
+
recordOperationRegistration,
|
|
293
|
+
generateResourceRoutes,
|
|
294
|
+
registerDiscoveredHandlers: (result, targetRegistry, targetSchemaRegistry, interceptors, onRegistered) => {
|
|
295
|
+
registerDiscoveredHandlers(result, targetRegistry, targetSchemaRegistry, interceptors, onRegistered);
|
|
296
|
+
},
|
|
297
|
+
});
|
|
249
298
|
function registerChannel(channel) {
|
|
250
|
-
|
|
299
|
+
registrationService.registerChannel(channelRegistry, channel);
|
|
251
300
|
}
|
|
252
301
|
function registerRestResource(resource) {
|
|
253
|
-
|
|
254
|
-
restResourceRegistry.push(resource);
|
|
255
|
-
for (const route of resource.routes) {
|
|
256
|
-
// HEAD and OPTIONS have both collection and item routes - differentiate them
|
|
257
|
-
const suffix = (route.operation === 'head' || route.operation === 'options')
|
|
258
|
-
? (route.isCollection ? ':collection' : ':item')
|
|
259
|
-
: '';
|
|
260
|
-
const name = `${resource.name}.${route.operation}${suffix}`;
|
|
261
|
-
if (route.inputSchema || route.outputSchema) {
|
|
262
|
-
const schema = {};
|
|
263
|
-
if (route.inputSchema)
|
|
264
|
-
schema.input = route.inputSchema;
|
|
265
|
-
if (route.outputSchema)
|
|
266
|
-
schema.output = route.outputSchema;
|
|
267
|
-
schemaRegistry.register(name, schema);
|
|
268
|
-
}
|
|
269
|
-
registry.procedure(name, route.handler, {
|
|
270
|
-
interceptors: globalInterceptors.length > 0 ? [...globalInterceptors] : undefined,
|
|
271
|
-
});
|
|
272
|
-
}
|
|
273
|
-
logger.debug({ name: resource.name, routes: resource.routes.length }, 'Added REST resource');
|
|
302
|
+
registrationService.registerRestResource(restResourceRegistry, resource);
|
|
274
303
|
}
|
|
275
304
|
function registerResource(resource) {
|
|
276
|
-
|
|
277
|
-
for (const route of routes) {
|
|
278
|
-
const name = `${resource.name}.${route.operation}`;
|
|
279
|
-
registry.procedure(name, route.handler, {
|
|
280
|
-
interceptors: globalInterceptors.length > 0 ? [...globalInterceptors] : undefined,
|
|
281
|
-
});
|
|
282
|
-
}
|
|
283
|
-
logger.debug({ name: resource.name, operations: routes.length }, 'Added resource');
|
|
305
|
+
registrationService.registerResource(resource);
|
|
284
306
|
}
|
|
285
307
|
function registerTcpHandler(handler) {
|
|
286
|
-
|
|
287
|
-
logger.debug({ name: handler.name, port: handler.config.port }, 'Added TCP handler');
|
|
308
|
+
registrationService.registerTcpHandler(tcpHandlers, handler);
|
|
288
309
|
}
|
|
289
310
|
function registerUdpHandler(handler) {
|
|
290
|
-
|
|
291
|
-
logger.debug({ name: handler.name, port: handler.config.port }, 'Added UDP handler');
|
|
311
|
+
registrationService.registerUdpHandler(udpHandlers, handler);
|
|
292
312
|
}
|
|
293
313
|
function applyDiscoveryResult(result) {
|
|
294
|
-
|
|
295
|
-
for (const channel of result.channels) {
|
|
296
|
-
registerChannel(channel);
|
|
297
|
-
}
|
|
298
|
-
for (const resource of result.restResources) {
|
|
299
|
-
registerRestResource(resource);
|
|
300
|
-
}
|
|
301
|
-
for (const resource of result.resources) {
|
|
302
|
-
registerResource(resource);
|
|
303
|
-
}
|
|
304
|
-
for (const handler of result.tcpHandlers) {
|
|
305
|
-
registerTcpHandler(handler);
|
|
306
|
-
}
|
|
307
|
-
for (const handler of result.udpHandlers) {
|
|
308
|
-
registerUdpHandler(handler);
|
|
309
|
-
}
|
|
314
|
+
registrationService.applyDiscoveryResult(result, channelRegistry, restResourceRegistry, tcpHandlers, udpHandlers);
|
|
310
315
|
}
|
|
316
|
+
const runtimePreviewService = createRuntimePreviewService({
|
|
317
|
+
registry,
|
|
318
|
+
schemaRegistry,
|
|
319
|
+
basePath,
|
|
320
|
+
channelRegistry,
|
|
321
|
+
tcpHandlers,
|
|
322
|
+
udpHandlers,
|
|
323
|
+
operationRegistrations,
|
|
324
|
+
protocols,
|
|
325
|
+
serverConfigPreviewContext,
|
|
326
|
+
logger: loggerPort,
|
|
327
|
+
});
|
|
311
328
|
const createFrontDoorDecisionMiddleware = () => frontDoorBootstrap.createDecisionMiddleware({
|
|
312
329
|
info: logger.info.bind(logger),
|
|
313
330
|
debug: logger.debug.bind(logger),
|
|
314
331
|
warn: logger.warn.bind(logger),
|
|
315
332
|
});
|
|
316
333
|
const isSinglePortTcpRouteEnabled = () => detectSinglePortTcpRouteEnabled(singlePortConfig.enabled, protocols.tcp?.enabled ?? false, protocols.tcp?.options.port, protocols.tcp?.options.host, effectiveHost, effectivePort);
|
|
334
|
+
const isSinglePortGrpcRouteEnabled = () => detectSinglePortGrpcRouteEnabled(singlePortConfig.enabled, protocols.grpc?.enabled ?? false, protocols.grpc?.options.port, protocols.grpc?.options.host, effectiveHost, effectivePort);
|
|
317
335
|
const isSinglePortUdpRouteEnabled = (handler) => detectSinglePortUdpRouteEnabled(singlePortConfig.enabled, handler.config.port, handler.config.host, effectiveHost, effectivePort);
|
|
318
336
|
const serverLifecycle = createServerLifecycle({
|
|
319
337
|
logger,
|
|
@@ -339,12 +357,14 @@ export function createServer(options) {
|
|
|
339
357
|
udpServers,
|
|
340
358
|
singlePortConfig,
|
|
341
359
|
isSinglePortTcpRouteEnabled,
|
|
360
|
+
isSinglePortGrpcRouteEnabled,
|
|
342
361
|
isSinglePortUdpRouteEnabled,
|
|
343
362
|
getSinglePortSource,
|
|
344
363
|
getSinglePortAliasMode,
|
|
364
|
+
recordProtocolFusionDecision: (decision) => protocolFusionDiagnostics.record(decision),
|
|
345
365
|
createFrontDoorDecisionMiddleware,
|
|
346
366
|
applyDiscoveryResult,
|
|
347
|
-
logSinglePortConfig: logSinglePortConfiguration,
|
|
367
|
+
logSinglePortConfig: runtimePreviewService.logSinglePortConfiguration,
|
|
348
368
|
host,
|
|
349
369
|
effectiveHost,
|
|
350
370
|
effectivePort,
|
|
@@ -355,7 +375,7 @@ export function createServer(options) {
|
|
|
355
375
|
usdDocsConfig,
|
|
356
376
|
});
|
|
357
377
|
/**
|
|
358
|
-
* Register
|
|
378
|
+
* Register a native HTTP route.
|
|
359
379
|
* Creates a procedure with the method and path as name (e.g., `get:/users/:id`).
|
|
360
380
|
*
|
|
361
381
|
* Interceptor chain order:
|
|
@@ -394,6 +414,7 @@ export function createServer(options) {
|
|
|
394
414
|
httpMethod: method,
|
|
395
415
|
interceptors: interceptors.length > 0 ? interceptors : undefined,
|
|
396
416
|
});
|
|
417
|
+
recordOperationRegistration(name, { source: programmaticSource('http-namespace') });
|
|
397
418
|
logger.debug({ name, path, method }, 'Added HTTP route');
|
|
398
419
|
return server;
|
|
399
420
|
}
|
|
@@ -591,7 +612,7 @@ export function createServer(options) {
|
|
|
591
612
|
server.grpc(grpcCfg);
|
|
592
613
|
}
|
|
593
614
|
}
|
|
594
|
-
|
|
615
|
+
runtimePreviewService.emitWarnings();
|
|
595
616
|
return server;
|
|
596
617
|
},
|
|
597
618
|
withProfile(profile, overrides) {
|
|
@@ -633,6 +654,9 @@ export function createServer(options) {
|
|
|
633
654
|
return server;
|
|
634
655
|
},
|
|
635
656
|
enableSinglePort(config = true) {
|
|
657
|
+
return server.enableSharedPort(config);
|
|
658
|
+
},
|
|
659
|
+
enableSharedPort(config = true) {
|
|
636
660
|
updateSinglePortConfig(config);
|
|
637
661
|
return server;
|
|
638
662
|
},
|
|
@@ -741,10 +765,25 @@ export function createServer(options) {
|
|
|
741
765
|
...opts,
|
|
742
766
|
interceptors: interceptors.length > 0 ? interceptors : undefined,
|
|
743
767
|
});
|
|
768
|
+
recordOperationRegistration(nameOrHandler, { source: programmaticSource() });
|
|
744
769
|
return;
|
|
745
770
|
}
|
|
746
771
|
// Fluent builder with hooks resolver
|
|
747
|
-
return createProcedureBuilder(registry, schemaRegistry, nameOrHandler, [...globalInterceptors], hooksResolver, envelopeInterceptor)
|
|
772
|
+
return createProcedureBuilder(registry, schemaRegistry, nameOrHandler, [...globalInterceptors], hooksResolver, envelopeInterceptor, (procedureName, procedureHandler, registration) => {
|
|
773
|
+
registry.procedure(procedureName, procedureHandler, {
|
|
774
|
+
summary: registration.summary,
|
|
775
|
+
description: registration.description,
|
|
776
|
+
tags: registration.tags,
|
|
777
|
+
graphql: registration.graphql,
|
|
778
|
+
httpPath: registration.httpPath,
|
|
779
|
+
httpMethod: registration.httpMethod,
|
|
780
|
+
jsonrpc: registration.jsonrpc,
|
|
781
|
+
grpc: registration.grpc,
|
|
782
|
+
policies: registration.policies,
|
|
783
|
+
interceptors: registration.interceptors,
|
|
784
|
+
});
|
|
785
|
+
recordOperationRegistration(procedureName, { source: programmaticSource() });
|
|
786
|
+
});
|
|
748
787
|
},
|
|
749
788
|
stream(name) {
|
|
750
789
|
return createStreamBuilder(registry, schemaRegistry, name, [...globalInterceptors]);
|
|
@@ -763,7 +802,7 @@ export function createServer(options) {
|
|
|
763
802
|
tags: [name],
|
|
764
803
|
});
|
|
765
804
|
},
|
|
766
|
-
// === HTTP Routes
|
|
805
|
+
// === HTTP Routes ===
|
|
767
806
|
get(path, optionsOrHandler, maybeHandler) {
|
|
768
807
|
return registerHttpRoute('GET', path, optionsOrHandler, maybeHandler);
|
|
769
808
|
},
|
|
@@ -823,6 +862,7 @@ export function createServer(options) {
|
|
|
823
862
|
tags: def.tags,
|
|
824
863
|
httpPath,
|
|
825
864
|
httpMethod,
|
|
865
|
+
policies: def.policies,
|
|
826
866
|
interceptors: interceptors.length > 0 ? interceptors : undefined,
|
|
827
867
|
});
|
|
828
868
|
logger.debug({ name, httpPath, httpMethod }, 'Added procedure from map');
|
|
@@ -989,6 +1029,9 @@ export function createServer(options) {
|
|
|
989
1029
|
const httpMethod = 'meta' in input ? input.meta?.httpMethod : input.httpMethod;
|
|
990
1030
|
const jsonrpc = 'meta' in input ? input.meta?.jsonrpc : input.jsonrpc;
|
|
991
1031
|
const grpc = 'meta' in input ? input.meta?.grpc : input.grpc;
|
|
1032
|
+
const policies = 'meta' in input
|
|
1033
|
+
? policyMetadataFromRouteMeta(input.meta)
|
|
1034
|
+
: input.policies;
|
|
992
1035
|
const routeInterceptors = 'middlewares' in input ? createRouteInterceptors(input) : [];
|
|
993
1036
|
const inputInterceptors = 'interceptors' in input ? input.interceptors ?? [] : [];
|
|
994
1037
|
let interceptors = normalizeInterceptors([...globalInterceptors, ...routeInterceptors, ...inputInterceptors]);
|
|
@@ -1011,8 +1054,14 @@ export function createServer(options) {
|
|
|
1011
1054
|
httpMethod,
|
|
1012
1055
|
jsonrpc,
|
|
1013
1056
|
grpc,
|
|
1057
|
+
policies,
|
|
1014
1058
|
interceptors: interceptors.length > 0 ? interceptors : undefined,
|
|
1015
1059
|
});
|
|
1060
|
+
recordOperationRegistration(name, {
|
|
1061
|
+
source: 'filePath' in input
|
|
1062
|
+
? { kind: 'discovery', location: input.filePath }
|
|
1063
|
+
: programmaticSource(),
|
|
1064
|
+
});
|
|
1016
1065
|
logger.debug({ name }, 'Added procedure');
|
|
1017
1066
|
return server;
|
|
1018
1067
|
},
|
|
@@ -1023,6 +1072,9 @@ export function createServer(options) {
|
|
|
1023
1072
|
const outputSchema = input.outputSchema;
|
|
1024
1073
|
const description = 'meta' in input ? input.meta?.description : input.description;
|
|
1025
1074
|
const direction = 'meta' in input ? input.meta?.direction : input.direction;
|
|
1075
|
+
const policies = 'meta' in input
|
|
1076
|
+
? policyMetadataFromRouteMeta(input.meta)
|
|
1077
|
+
: input.policies;
|
|
1026
1078
|
const routeInterceptors = 'middlewares' in input ? createRouteInterceptors(input) : [];
|
|
1027
1079
|
const inputInterceptors = 'interceptors' in input ? input.interceptors ?? [] : [];
|
|
1028
1080
|
const interceptors = [...globalInterceptors, ...routeInterceptors, ...inputInterceptors];
|
|
@@ -1037,8 +1089,14 @@ export function createServer(options) {
|
|
|
1037
1089
|
registry.stream(name, handler, {
|
|
1038
1090
|
description,
|
|
1039
1091
|
direction,
|
|
1092
|
+
policies,
|
|
1040
1093
|
interceptors: interceptors.length > 0 ? interceptors : undefined,
|
|
1041
1094
|
});
|
|
1095
|
+
recordOperationRegistration(name, {
|
|
1096
|
+
source: 'filePath' in input
|
|
1097
|
+
? { kind: 'discovery', location: input.filePath }
|
|
1098
|
+
: programmaticSource(),
|
|
1099
|
+
});
|
|
1042
1100
|
logger.debug({ name }, 'Added stream');
|
|
1043
1101
|
return server;
|
|
1044
1102
|
},
|
|
@@ -1050,6 +1108,9 @@ export function createServer(options) {
|
|
|
1050
1108
|
const delivery = 'meta' in input ? input.meta?.delivery : input.delivery;
|
|
1051
1109
|
const retryPolicy = 'meta' in input ? input.meta?.retryPolicy : input.retryPolicy;
|
|
1052
1110
|
const deduplicationWindow = 'meta' in input ? input.meta?.deduplicationWindow : input.deduplicationWindow;
|
|
1111
|
+
const policies = 'meta' in input
|
|
1112
|
+
? policyMetadataFromRouteMeta(input.meta)
|
|
1113
|
+
: input.policies;
|
|
1053
1114
|
const routeInterceptors = 'middlewares' in input ? createRouteInterceptors(input) : [];
|
|
1054
1115
|
const inputInterceptors = 'interceptors' in input ? input.interceptors ?? [] : [];
|
|
1055
1116
|
const interceptors = [...globalInterceptors, ...routeInterceptors, ...inputInterceptors];
|
|
@@ -1061,8 +1122,14 @@ export function createServer(options) {
|
|
|
1061
1122
|
delivery,
|
|
1062
1123
|
retryPolicy,
|
|
1063
1124
|
deduplicationWindow,
|
|
1125
|
+
policies,
|
|
1064
1126
|
interceptors: interceptors.length > 0 ? interceptors : undefined,
|
|
1065
1127
|
});
|
|
1128
|
+
recordOperationRegistration(name, {
|
|
1129
|
+
source: 'filePath' in input
|
|
1130
|
+
? { kind: 'discovery', location: input.filePath }
|
|
1131
|
+
: programmaticSource(),
|
|
1132
|
+
});
|
|
1066
1133
|
logger.debug({ name }, 'Added event');
|
|
1067
1134
|
return server;
|
|
1068
1135
|
},
|
|
@@ -1222,6 +1289,7 @@ export function createServer(options) {
|
|
|
1222
1289
|
direction: 'server',
|
|
1223
1290
|
interceptors: interceptors.length > 0 ? interceptors : undefined,
|
|
1224
1291
|
});
|
|
1292
|
+
recordOperationRegistration(streamName, { source: programmaticSource() });
|
|
1225
1293
|
logger.debug({ name: streamName, path: options.path ?? `/${name}` }, 'Added stream source');
|
|
1226
1294
|
return streamsNamespace;
|
|
1227
1295
|
},
|
|
@@ -1241,6 +1309,7 @@ export function createServer(options) {
|
|
|
1241
1309
|
direction: 'client',
|
|
1242
1310
|
interceptors: interceptors.length > 0 ? interceptors : undefined,
|
|
1243
1311
|
});
|
|
1312
|
+
recordOperationRegistration(streamName, { source: programmaticSource() });
|
|
1244
1313
|
logger.debug({ name: streamName, path: options.path ?? `/${name}` }, 'Added stream sink');
|
|
1245
1314
|
return streamsNamespace;
|
|
1246
1315
|
},
|
|
@@ -1260,6 +1329,7 @@ export function createServer(options) {
|
|
|
1260
1329
|
direction: 'bidi',
|
|
1261
1330
|
interceptors: interceptors.length > 0 ? interceptors : undefined,
|
|
1262
1331
|
});
|
|
1332
|
+
recordOperationRegistration(streamName, { source: programmaticSource() });
|
|
1263
1333
|
logger.debug({ name: streamName, path: options.path ?? `/${name}` }, 'Added stream duplex');
|
|
1264
1334
|
return streamsNamespace;
|
|
1265
1335
|
},
|
|
@@ -1288,6 +1358,7 @@ export function createServer(options) {
|
|
|
1288
1358
|
jsonrpc: { notification: isNotification },
|
|
1289
1359
|
interceptors: interceptors.length > 0 ? interceptors : undefined,
|
|
1290
1360
|
});
|
|
1361
|
+
recordOperationRegistration(name, { source: programmaticSource('rpc-namespace') });
|
|
1291
1362
|
logger.debug({ name, notification: isNotification }, 'Added RPC method');
|
|
1292
1363
|
};
|
|
1293
1364
|
const rpcNamespace = {
|
|
@@ -1332,14 +1403,25 @@ export function createServer(options) {
|
|
|
1332
1403
|
return handlerBuilder;
|
|
1333
1404
|
},
|
|
1334
1405
|
end() {
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
|
|
1341
|
-
|
|
1342
|
-
|
|
1406
|
+
let framingConfig = null;
|
|
1407
|
+
if (options?.framing === 'length-prefixed') {
|
|
1408
|
+
framingConfig = {
|
|
1409
|
+
type: 'length-prefixed',
|
|
1410
|
+
lengthBytes: 4,
|
|
1411
|
+
lengthEncoding: 'BE',
|
|
1412
|
+
maxMessageSize: 16 * 1024 * 1024,
|
|
1413
|
+
delimiter: undefined,
|
|
1414
|
+
};
|
|
1415
|
+
}
|
|
1416
|
+
else if (options?.framing === 'delimiter' || options?.framing === 'line') {
|
|
1417
|
+
framingConfig = {
|
|
1418
|
+
type: 'delimiter',
|
|
1419
|
+
lengthBytes: 4,
|
|
1420
|
+
lengthEncoding: 'BE',
|
|
1421
|
+
maxMessageSize: 16 * 1024 * 1024,
|
|
1422
|
+
delimiter: Buffer.from(options.delimiter ?? '\n'),
|
|
1423
|
+
};
|
|
1424
|
+
}
|
|
1343
1425
|
// Store TCP handler configuration for later startup
|
|
1344
1426
|
const tcpHandler = {
|
|
1345
1427
|
name,
|
|
@@ -1356,7 +1438,12 @@ export function createServer(options) {
|
|
|
1356
1438
|
},
|
|
1357
1439
|
handlers: {
|
|
1358
1440
|
onConnect: connectHandler,
|
|
1359
|
-
onData:
|
|
1441
|
+
onData: framingConfig
|
|
1442
|
+
? undefined
|
|
1443
|
+
: dataHandler,
|
|
1444
|
+
onMessage: framingConfig
|
|
1445
|
+
? dataHandler
|
|
1446
|
+
: undefined,
|
|
1360
1447
|
onClose: closeHandler,
|
|
1361
1448
|
onError: errorHandler,
|
|
1362
1449
|
},
|
|
@@ -1458,6 +1545,14 @@ export function createServer(options) {
|
|
|
1458
1545
|
grpc: { serviceName, methodName: name, type: 'unary' },
|
|
1459
1546
|
interceptors: interceptors.length > 0 ? interceptors : undefined,
|
|
1460
1547
|
});
|
|
1548
|
+
recordOperationRegistration(procedureName, {
|
|
1549
|
+
source: programmaticSource('grpc-namespace'),
|
|
1550
|
+
grpc: {
|
|
1551
|
+
serviceName: packageName ? `${packageName}.${serviceName}` : serviceName,
|
|
1552
|
+
methodName: name,
|
|
1553
|
+
type: 'unary',
|
|
1554
|
+
},
|
|
1555
|
+
});
|
|
1461
1556
|
logger.debug({ name: procedureName, type: 'unary' }, 'Added gRPC method');
|
|
1462
1557
|
return serviceBuilder;
|
|
1463
1558
|
},
|
|
@@ -1480,6 +1575,14 @@ export function createServer(options) {
|
|
|
1480
1575
|
direction: 'server',
|
|
1481
1576
|
interceptors: interceptors.length > 0 ? interceptors : undefined,
|
|
1482
1577
|
});
|
|
1578
|
+
recordOperationRegistration(procedureName, {
|
|
1579
|
+
source: programmaticSource('grpc-namespace'),
|
|
1580
|
+
grpc: {
|
|
1581
|
+
serviceName: packageName ? `${packageName}.${serviceName}` : serviceName,
|
|
1582
|
+
methodName: name,
|
|
1583
|
+
type: 'server-streaming',
|
|
1584
|
+
},
|
|
1585
|
+
});
|
|
1483
1586
|
logger.debug({ name: procedureName, type: 'server-stream' }, 'Added gRPC server stream');
|
|
1484
1587
|
return serviceBuilder;
|
|
1485
1588
|
},
|
|
@@ -1502,6 +1605,14 @@ export function createServer(options) {
|
|
|
1502
1605
|
direction: 'client',
|
|
1503
1606
|
interceptors: interceptors.length > 0 ? interceptors : undefined,
|
|
1504
1607
|
});
|
|
1608
|
+
recordOperationRegistration(procedureName, {
|
|
1609
|
+
source: programmaticSource('grpc-namespace'),
|
|
1610
|
+
grpc: {
|
|
1611
|
+
serviceName: packageName ? `${packageName}.${serviceName}` : serviceName,
|
|
1612
|
+
methodName: name,
|
|
1613
|
+
type: 'client-streaming',
|
|
1614
|
+
},
|
|
1615
|
+
});
|
|
1505
1616
|
logger.debug({ name: procedureName, type: 'client-stream' }, 'Added gRPC client stream');
|
|
1506
1617
|
return serviceBuilder;
|
|
1507
1618
|
},
|
|
@@ -1524,6 +1635,14 @@ export function createServer(options) {
|
|
|
1524
1635
|
direction: 'bidi',
|
|
1525
1636
|
interceptors: interceptors.length > 0 ? interceptors : undefined,
|
|
1526
1637
|
});
|
|
1638
|
+
recordOperationRegistration(procedureName, {
|
|
1639
|
+
source: programmaticSource('grpc-namespace'),
|
|
1640
|
+
grpc: {
|
|
1641
|
+
serviceName: packageName ? `${packageName}.${serviceName}` : serviceName,
|
|
1642
|
+
methodName: name,
|
|
1643
|
+
type: 'bidirectional',
|
|
1644
|
+
},
|
|
1645
|
+
});
|
|
1527
1646
|
logger.debug({ name: procedureName, type: 'bidi-stream' }, 'Added gRPC bidi stream');
|
|
1528
1647
|
return serviceBuilder;
|
|
1529
1648
|
},
|
|
@@ -1562,7 +1681,13 @@ export function createServer(options) {
|
|
|
1562
1681
|
get metrics() { return telemetryState.metricsRegistry; },
|
|
1563
1682
|
get tracer() { return telemetryState.tracerInstance; },
|
|
1564
1683
|
previewConfig() {
|
|
1565
|
-
return getPreviewConfig();
|
|
1684
|
+
return runtimePreviewService.getPreviewConfig();
|
|
1685
|
+
},
|
|
1686
|
+
preview() {
|
|
1687
|
+
return runtimePreviewService.getRuntimeInspectionPreview();
|
|
1688
|
+
},
|
|
1689
|
+
getProtocolFusionState() {
|
|
1690
|
+
return protocolFusionDiagnostics.snapshot();
|
|
1566
1691
|
},
|
|
1567
1692
|
get usd() { return serverState.usdDocsHandlers.value; },
|
|
1568
1693
|
// === USD Document Access ===
|