@lovrozagar/honey 0.7.2 → 1.0.0-rc.1
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/LICENSE +21 -0
- package/README.md +36 -1969
- package/bin/honey.js +87 -27
- package/dist/adapters/bun/serve.d.ts +18 -0
- package/dist/adapters/bun/serve.js +89 -0
- package/dist/adapters/fetch-request.d.ts +20 -0
- package/dist/adapters/fetch-request.js +29 -0
- package/dist/adapters/node/headers.d.ts +27 -0
- package/dist/adapters/node/headers.js +86 -0
- package/dist/adapters/node/request.d.ts +16 -0
- package/dist/adapters/node/request.js +214 -0
- package/dist/adapters/node/response.d.ts +11 -0
- package/dist/adapters/node/response.js +126 -0
- package/dist/adapters/node/serve.d.ts +39 -0
- package/dist/adapters/node/serve.js +205 -0
- package/dist/adapters/node/url.d.ts +13 -0
- package/dist/adapters/node/url.js +87 -0
- package/dist/adapters/serve.d.ts +36 -0
- package/dist/adapters/serve.js +52 -0
- package/dist/build/artifacts.d.ts +34 -0
- package/dist/build/artifacts.js +123 -0
- package/dist/build/cli-args.d.ts +30 -0
- package/dist/build/cli-args.js +97 -0
- package/dist/build/cli.d.ts +11 -0
- package/dist/build/cli.js +150 -0
- package/dist/build/config.d.ts +102 -0
- package/dist/build/config.js +89 -0
- package/dist/build/generate.d.ts +19 -0
- package/dist/build/generate.js +80 -0
- package/dist/build/glob.d.ts +8 -0
- package/dist/build/glob.js +97 -0
- package/dist/build/index.d.ts +3 -58
- package/dist/build/index.js +3 -173
- package/dist/build/init.d.ts +3 -0
- package/dist/build/init.js +131 -0
- package/dist/build/loaders.d.ts +33 -0
- package/dist/build/loaders.js +105 -0
- package/dist/build/plugin.d.ts +52 -0
- package/dist/build/plugin.js +146 -0
- package/dist/build/source.d.ts +21 -0
- package/dist/build/source.js +100 -0
- package/dist/build/targets.d.ts +59 -0
- package/dist/build/targets.js +107 -0
- package/dist/context/context.d.ts +111 -0
- package/dist/context/context.js +213 -0
- package/dist/context/cookie-sign.d.ts +38 -0
- package/dist/context/cookie-sign.js +113 -0
- package/dist/context/cookie.d.ts +28 -0
- package/dist/context/cookie.js +142 -0
- package/dist/context/peer.d.ts +34 -0
- package/dist/context/peer.js +190 -0
- package/dist/errors/error.d.ts +60 -0
- package/dist/errors/error.js +84 -0
- package/dist/errors/errors.d.ts +45 -0
- package/dist/errors/errors.js +31 -0
- package/dist/errors/on-error.d.ts +10 -0
- package/dist/errors/on-error.js +204 -0
- package/dist/errors/problem-json.d.ts +14 -0
- package/dist/errors/problem-json.js +58 -0
- package/dist/errors/projector.d.ts +50 -0
- package/dist/errors/projector.js +107 -0
- package/dist/i18n/error-i18n.d.ts +26 -0
- package/dist/i18n/error-i18n.js +77 -0
- package/dist/i18n/i18n.d.ts +21 -0
- package/dist/i18n/i18n.js +40 -0
- package/dist/i18n/icu.d.ts +29 -0
- package/dist/i18n/icu.js +170 -0
- package/dist/i18n/index.d.ts +4 -0
- package/dist/i18n/index.js +3 -0
- package/dist/index.d.ts +30 -744
- package/dist/index.js +12 -2363
- package/dist/input/accepts.d.ts +5 -0
- package/dist/input/accepts.js +105 -0
- package/dist/input/binary.d.ts +20 -0
- package/dist/input/binary.js +40 -0
- package/dist/input/body-kind.d.ts +15 -0
- package/dist/input/body-kind.js +47 -0
- package/dist/input/body-limit.d.ts +21 -0
- package/dist/input/body-limit.js +99 -0
- package/dist/input/cookies.d.ts +7 -0
- package/dist/input/cookies.js +8 -0
- package/dist/input/form.d.ts +10 -0
- package/dist/input/form.js +24 -0
- package/dist/input/headers.d.ts +7 -0
- package/dist/input/headers.js +8 -0
- package/dist/input/input.d.ts +91 -0
- package/dist/input/input.js +88 -0
- package/dist/input/json.d.ts +10 -0
- package/dist/input/json.js +22 -0
- package/dist/input/params.d.ts +7 -0
- package/dist/input/params.js +8 -0
- package/dist/input/query.d.ts +10 -0
- package/dist/input/query.js +17 -0
- package/dist/mcp/mount.d.ts +116 -0
- package/dist/mcp/mount.js +45 -0
- package/dist/mcp/oauth.d.ts +14 -0
- package/dist/mcp/oauth.js +88 -0
- package/dist/mcp/uploads.d.ts +36 -0
- package/dist/mcp/uploads.js +171 -0
- package/dist/mcp/url-files.d.ts +32 -0
- package/dist/mcp/url-files.js +75 -0
- package/dist/meta/meta-spec-apply.d.ts +25 -0
- package/dist/meta/meta-spec-apply.js +83 -0
- package/dist/meta/meta-spec-merge.d.ts +103 -0
- package/dist/meta/meta-spec-merge.js +50 -0
- package/dist/meta/meta-spec-validate.d.ts +61 -0
- package/dist/meta/meta-spec-validate.js +166 -0
- package/dist/meta/meta-spec.d.ts +49 -0
- package/dist/meta/meta-spec.js +197 -0
- package/dist/middleware/compress.d.ts +15 -0
- package/dist/middleware/compress.js +93 -0
- package/dist/middleware/cors.d.ts +18 -0
- package/dist/middleware/cors.js +80 -0
- package/dist/middleware/csrf.d.ts +11 -0
- package/dist/middleware/csrf.js +65 -0
- package/dist/middleware/ip-restrict.d.ts +10 -0
- package/dist/middleware/ip-restrict.js +82 -0
- package/dist/middleware/middleware.d.ts +53 -0
- package/dist/middleware/middleware.js +112 -0
- package/dist/middleware/powered-by.d.ts +6 -0
- package/dist/middleware/powered-by.js +13 -0
- package/dist/middleware/rate-limit.d.ts +40 -0
- package/dist/middleware/rate-limit.js +90 -0
- package/dist/middleware/request-id.d.ts +25 -0
- package/dist/middleware/request-id.js +30 -0
- package/dist/middleware/secure-headers.d.ts +18 -0
- package/dist/middleware/secure-headers.js +36 -0
- package/dist/middleware/server-timing.d.ts +8 -0
- package/dist/middleware/server-timing.js +52 -0
- package/dist/middleware/timeout.d.ts +6 -0
- package/dist/middleware/timeout.js +29 -0
- package/dist/observability/curl-logger.d.ts +46 -0
- package/dist/observability/curl-logger.js +175 -0
- package/dist/observability/request-to-curl.d.ts +17 -0
- package/dist/observability/request-to-curl.js +47 -0
- package/dist/openapi/collect.d.ts +56 -18
- package/dist/openapi/collect.js +109 -23
- package/dist/openapi/components.d.ts +9 -0
- package/dist/openapi/components.js +90 -0
- package/dist/openapi/docs-page.d.ts +20 -18
- package/dist/openapi/docs-page.js +28 -46
- package/dist/openapi/document.d.ts +33 -26
- package/dist/openapi/document.js +21 -776
- package/dist/openapi/extract-schemas.d.ts +11 -0
- package/dist/openapi/extract-schemas.js +31 -0
- package/dist/openapi/generate.d.ts +47 -0
- package/dist/openapi/generate.js +180 -0
- package/dist/openapi/manifest.d.ts +41 -0
- package/dist/openapi/manifest.js +49 -0
- package/dist/openapi/output-keys.d.ts +6 -0
- package/dist/openapi/output-keys.js +24 -0
- package/dist/openapi/paths.d.ts +35 -0
- package/dist/openapi/paths.js +175 -0
- package/dist/openapi/register.d.ts +14 -3
- package/dist/openapi/register.js +13 -20
- package/dist/openapi/responses.d.ts +44 -0
- package/dist/openapi/responses.js +159 -0
- package/dist/openapi/scalar.d.ts +4 -14
- package/dist/openapi/scalar.js +5 -7
- package/dist/openapi/security.d.ts +4 -0
- package/dist/openapi/security.js +25 -0
- package/dist/openapi/serve.d.ts +25 -9
- package/dist/openapi/serve.js +108 -29
- package/dist/openapi/servers.d.ts +19 -0
- package/dist/openapi/servers.js +72 -0
- package/dist/openapi/swagger.d.ts +4 -14
- package/dist/openapi/swagger.js +5 -7
- package/dist/openapi/tags.d.ts +20 -0
- package/dist/openapi/tags.js +20 -0
- package/dist/openapi/webhooks.d.ts +19 -0
- package/dist/openapi/webhooks.js +70 -0
- package/dist/openapi/yaml.d.ts +8 -0
- package/dist/openapi/yaml.js +74 -0
- package/dist/proxy/headers.d.ts +30 -0
- package/dist/proxy/headers.js +86 -0
- package/dist/proxy/proxy.d.ts +39 -0
- package/dist/proxy/proxy.js +103 -0
- package/dist/proxy/upstream.d.ts +30 -0
- package/dist/proxy/upstream.js +116 -0
- package/dist/realtime/bus.d.ts +10 -13
- package/dist/realtime/bus.js +48 -93
- package/dist/realtime/invoke-user.d.ts +36 -0
- package/dist/realtime/invoke-user.js +103 -0
- package/dist/realtime/realtime.d.ts +7 -0
- package/dist/realtime/realtime.js +40 -0
- package/dist/realtime/route.d.ts +33 -27
- package/dist/realtime/route.js +27 -43
- package/dist/realtime/server.d.ts +24 -28
- package/dist/realtime/server.js +202 -225
- package/dist/response/binary.d.ts +18 -0
- package/dist/response/binary.js +10 -0
- package/dist/response/builder.d.ts +73 -0
- package/dist/response/builder.js +214 -0
- package/dist/response/cache-control.d.ts +30 -0
- package/dist/response/cache-control.js +74 -0
- package/dist/response/etag.d.ts +15 -0
- package/dist/response/etag.js +83 -0
- package/dist/response/media-type.d.ts +28 -0
- package/dist/response/media-type.js +97 -0
- package/dist/response/out-headers.d.ts +31 -0
- package/dist/response/out-headers.js +130 -0
- package/dist/response/pretty-json.d.ts +10 -0
- package/dist/response/pretty-json.js +44 -0
- package/dist/response/range.d.ts +19 -0
- package/dist/response/range.js +98 -0
- package/dist/response/response-headers.d.ts +11 -0
- package/dist/response/response-headers.js +21 -0
- package/dist/response/response.d.ts +69 -0
- package/dist/response/response.js +208 -0
- package/dist/response/sse.d.ts +41 -0
- package/dist/response/sse.js +73 -0
- package/dist/response/static.d.ts +20 -0
- package/dist/response/static.js +181 -0
- package/dist/response/status.d.ts +5 -0
- package/dist/response/status.js +68 -0
- package/dist/response/with-headers.d.ts +11 -0
- package/dist/response/with-headers.js +47 -0
- package/dist/routing/app-types.d.ts +181 -0
- package/dist/routing/app-types.js +1 -0
- package/dist/routing/app.d.ts +76 -0
- package/dist/routing/app.js +137 -0
- package/dist/routing/codegen-types.d.ts +17 -0
- package/dist/routing/codegen-types.js +1 -0
- package/dist/routing/delegate.d.ts +9 -0
- package/dist/routing/delegate.js +75 -0
- package/dist/routing/dispatch.d.ts +22 -0
- package/dist/routing/dispatch.js +255 -0
- package/dist/routing/finalize.d.ts +47 -0
- package/dist/routing/finalize.js +169 -0
- package/dist/routing/gateway-tree.d.ts +19 -0
- package/dist/routing/gateway-tree.js +74 -0
- package/dist/routing/invalidate-check.d.ts +58 -0
- package/dist/routing/invalidate-check.js +124 -0
- package/dist/routing/match.d.ts +22 -0
- package/dist/routing/match.js +108 -0
- package/dist/routing/middleware-chain.d.ts +16 -0
- package/dist/routing/middleware-chain.js +41 -0
- package/dist/routing/output-types.d.ts +91 -0
- package/dist/routing/output-types.js +1 -0
- package/dist/routing/pattern.d.ts +55 -0
- package/dist/routing/pattern.js +219 -0
- package/dist/routing/record.d.ts +18 -0
- package/dist/routing/record.js +4 -0
- package/dist/routing/register.d.ts +135 -0
- package/dist/routing/register.js +155 -0
- package/dist/routing/request-path.d.ts +30 -0
- package/dist/routing/request-path.js +173 -0
- package/dist/routing/route-builder.d.ts +160 -0
- package/dist/routing/route-builder.js +86 -0
- package/dist/routing/route-tree.d.ts +18 -0
- package/dist/routing/route-tree.js +91 -0
- package/dist/routing/settings-chain.d.ts +75 -0
- package/dist/routing/settings-chain.js +137 -0
- package/dist/routing/settings.d.ts +90 -0
- package/dist/routing/settings.js +44 -0
- package/dist/routing/tap.d.ts +31 -0
- package/dist/routing/tap.js +77 -0
- package/dist/routing/tree-merge.d.ts +7 -0
- package/dist/routing/tree-merge.js +77 -0
- package/dist/routing/tree.d.ts +85 -0
- package/dist/routing/tree.js +196 -0
- package/dist/routing/types.d.ts +20 -0
- package/dist/routing/types.js +1 -0
- package/dist/routing/ws-builder.d.ts +62 -0
- package/dist/routing/ws-builder.js +109 -0
- package/dist/runtime/detect-runtime.d.ts +16 -0
- package/dist/runtime/detect-runtime.js +11 -0
- package/dist/runtime/optional-peer.d.ts +10 -0
- package/dist/runtime/optional-peer.js +19 -0
- package/dist/schema/arktype.d.ts +7 -0
- package/dist/schema/arktype.js +13 -0
- package/dist/schema/canonicalize.d.ts +8 -0
- package/dist/schema/canonicalize.js +19 -0
- package/dist/schema/effect.d.ts +7 -0
- package/dist/schema/effect.js +4 -0
- package/dist/schema/naming.d.ts +31 -0
- package/dist/schema/naming.js +116 -0
- package/dist/schema/sanitize-spec.d.ts +15 -0
- package/dist/schema/sanitize-spec.js +43 -0
- package/dist/schema/slots.d.ts +15 -0
- package/dist/schema/slots.js +179 -0
- package/dist/schema/to-json-schema.d.ts +34 -0
- package/dist/schema/to-json-schema.js +94 -0
- package/dist/schema/valibot.d.ts +4 -0
- package/dist/schema/valibot.js +153 -0
- package/dist/schema/yup.d.ts +3 -0
- package/dist/schema/yup.js +57 -0
- package/dist/schema/zod.d.ts +6 -0
- package/dist/schema/zod.js +192 -0
- package/dist/security/crypto.d.ts +7 -0
- package/dist/security/crypto.js +30 -0
- package/dist/streaming/producer-stream.d.ts +45 -0
- package/dist/streaming/producer-stream.js +251 -0
- package/dist/telemetry/fields.d.ts +43 -0
- package/dist/telemetry/fields.js +64 -0
- package/dist/telemetry/log-format.d.ts +7 -0
- package/dist/telemetry/log-format.js +43 -0
- package/dist/telemetry/logger.d.ts +44 -0
- package/dist/telemetry/logger.js +122 -0
- package/dist/telemetry/otel-subpath.d.ts +7 -0
- package/dist/telemetry/otel-subpath.js +5 -0
- package/dist/telemetry/otel.d.ts +50 -57
- package/dist/telemetry/otel.js +54 -130
- package/dist/telemetry/request-log.d.ts +22 -0
- package/dist/telemetry/request-log.js +83 -0
- package/dist/telemetry/request-trace.d.ts +123 -0
- package/dist/telemetry/request-trace.js +199 -0
- package/dist/telemetry/span-lifecycle.d.ts +11 -0
- package/dist/telemetry/span-lifecycle.js +114 -0
- package/dist/telemetry/traceparent.d.ts +40 -0
- package/dist/telemetry/traceparent.js +73 -0
- package/dist/testing/testing.d.ts +42 -0
- package/dist/testing/testing.js +101 -0
- package/dist/validation/content-type.d.ts +21 -0
- package/dist/validation/content-type.js +42 -0
- package/dist/validation/standard-schema.d.ts +41 -0
- package/dist/validation/standard-schema.js +5 -0
- package/dist/validation/validate-input.d.ts +45 -0
- package/dist/validation/validate-input.js +174 -0
- package/dist/validation/validate-output.d.ts +34 -0
- package/dist/validation/validate-output.js +107 -0
- package/dist/ws/bun.d.ts +30 -25
- package/dist/ws/bun.js +42 -46
- package/dist/ws/cloudflare.d.ts +6 -75
- package/dist/ws/cloudflare.js +37 -104
- package/dist/ws/contract.d.ts +74 -0
- package/dist/ws/contract.js +83 -0
- package/dist/ws/node.d.ts +12 -21
- package/dist/ws/node.js +103 -151
- package/dist/ws/origin.d.ts +23 -0
- package/dist/ws/origin.js +48 -0
- package/dist/ws/route.d.ts +14 -0
- package/dist/ws/route.js +5 -0
- package/dist/ws/session.d.ts +15 -6
- package/dist/ws/session.js +22 -23
- package/dist/ws/shared.d.ts +23 -33
- package/dist/ws/shared.js +53 -39
- package/package.json +169 -251
- package/dist/accepts.d.ts +0 -12
- package/dist/accepts.d.ts.map +0 -1
- package/dist/accepts.js +0 -126
- package/dist/accepts.js.map +0 -1
- package/dist/body-kind.d.ts +0 -26
- package/dist/body-kind.d.ts.map +0 -1
- package/dist/body-kind.js +0 -70
- package/dist/body-kind.js.map +0 -1
- package/dist/body-limit.d.ts +0 -26
- package/dist/body-limit.d.ts.map +0 -1
- package/dist/body-limit.js +0 -126
- package/dist/body-limit.js.map +0 -1
- package/dist/build/index.d.ts.map +0 -1
- package/dist/build/index.js.map +0 -1
- package/dist/cli-args.d.ts +0 -33
- package/dist/cli-args.d.ts.map +0 -1
- package/dist/cli-args.js +0 -102
- package/dist/cli-args.js.map +0 -1
- package/dist/cli-go/auth.go +0 -26
- package/dist/cli-go/config.go +0 -192
- package/dist/cli-go/errors.go +0 -75
- package/dist/cli-go/multipart.go +0 -79
- package/dist/cli-go/output.go +0 -163
- package/dist/cli-go/root.go +0 -30
- package/dist/cli-go/stream.go +0 -88
- package/dist/cli-go/version.go +0 -5
- package/dist/cli.d.ts +0 -3
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js +0 -209
- package/dist/cli.js.map +0 -1
- package/dist/client/defaults.d.ts +0 -12
- package/dist/client/defaults.d.ts.map +0 -1
- package/dist/client/defaults.js +0 -48
- package/dist/client/defaults.js.map +0 -1
- package/dist/client/error.d.ts +0 -49
- package/dist/client/error.d.ts.map +0 -1
- package/dist/client/error.js +0 -71
- package/dist/client/error.js.map +0 -1
- package/dist/client/http.d.ts +0 -155
- package/dist/client/http.d.ts.map +0 -1
- package/dist/client/http.js +0 -571
- package/dist/client/http.js.map +0 -1
- package/dist/client/index.d.ts +0 -23
- package/dist/client/index.d.ts.map +0 -1
- package/dist/client/index.js +0 -95
- package/dist/client/index.js.map +0 -1
- package/dist/client/path.d.ts +0 -26
- package/dist/client/path.d.ts.map +0 -1
- package/dist/client/path.js +0 -163
- package/dist/client/path.js.map +0 -1
- package/dist/client/redirect-policy.d.ts +0 -12
- package/dist/client/redirect-policy.d.ts.map +0 -1
- package/dist/client/redirect-policy.js +0 -20
- package/dist/client/redirect-policy.js.map +0 -1
- package/dist/client/sdk.d.ts +0 -70
- package/dist/client/sdk.d.ts.map +0 -1
- package/dist/client/sdk.js +0 -292
- package/dist/client/sdk.js.map +0 -1
- package/dist/client/sse.d.ts +0 -23
- package/dist/client/sse.d.ts.map +0 -1
- package/dist/client/sse.js +0 -129
- package/dist/client/sse.js.map +0 -1
- package/dist/client/types.d.ts +0 -124
- package/dist/client/types.d.ts.map +0 -1
- package/dist/client/types.js +0 -2
- package/dist/client/types.js.map +0 -1
- package/dist/client/ws.d.ts +0 -22
- package/dist/client/ws.d.ts.map +0 -1
- package/dist/client/ws.js +0 -112
- package/dist/client/ws.js.map +0 -1
- package/dist/client-go/errors.go +0 -236
- package/dist/client-go/export.go +0 -44
- package/dist/client-go/invalidation.go +0 -371
- package/dist/client-go/nullable.go +0 -62
- package/dist/client-go/realtime.go +0 -354
- package/dist/client-go/result.go +0 -20
- package/dist/client-go/runtime.go +0 -975
- package/dist/client-go/sse.go +0 -159
- package/dist/client-go/transport.go +0 -495
- package/dist/client-go/ws.go +0 -128
- package/dist/client-info.d.ts +0 -36
- package/dist/client-info.d.ts.map +0 -1
- package/dist/client-info.js +0 -53
- package/dist/client-info.js.map +0 -1
- package/dist/client-mcp/README.md +0 -10
- package/dist/client-mcp/server.ts +0 -221
- package/dist/client-mcp/types.ts +0 -19
- package/dist/client-python/_errors.py +0 -115
- package/dist/client-python/_invalidation.py +0 -494
- package/dist/client-python/_realtime.py +0 -179
- package/dist/client-python/_runtime.py +0 -860
- package/dist/client-python/_sse.py +0 -155
- package/dist/client-python/_transport.py +0 -366
- package/dist/client-python/_ws.py +0 -159
- package/dist/client-python/py.typed +0 -0
- package/dist/client-rust/errors.rs +0 -220
- package/dist/client-rust/invalidation.rs +0 -412
- package/dist/client-rust/invalidation_sync.rs +0 -93
- package/dist/client-rust/nullable.rs +0 -17
- package/dist/client-rust/realtime.rs +0 -702
- package/dist/client-rust/result.rs +0 -22
- package/dist/client-rust/runtime.rs +0 -980
- package/dist/client-rust/runtime_sync.rs +0 -484
- package/dist/client-rust/sse.rs +0 -188
- package/dist/client-rust/ws.rs +0 -167
- package/dist/codegen-go-cli.d.ts +0 -22
- package/dist/codegen-go-cli.d.ts.map +0 -1
- package/dist/codegen-go-cli.js +0 -964
- package/dist/codegen-go-cli.js.map +0 -1
- package/dist/codegen-go.d.ts +0 -41
- package/dist/codegen-go.d.ts.map +0 -1
- package/dist/codegen-go.js +0 -872
- package/dist/codegen-go.js.map +0 -1
- package/dist/codegen-hash.d.ts +0 -3
- package/dist/codegen-hash.d.ts.map +0 -1
- package/dist/codegen-hash.js +0 -9
- package/dist/codegen-hash.js.map +0 -1
- package/dist/codegen-ir.d.ts +0 -190
- package/dist/codegen-ir.d.ts.map +0 -1
- package/dist/codegen-ir.js +0 -661
- package/dist/codegen-ir.js.map +0 -1
- package/dist/codegen-lang.d.ts +0 -65
- package/dist/codegen-lang.d.ts.map +0 -1
- package/dist/codegen-lang.js +0 -526
- package/dist/codegen-lang.js.map +0 -1
- package/dist/codegen-load.d.ts +0 -31
- package/dist/codegen-load.d.ts.map +0 -1
- package/dist/codegen-load.js +0 -138
- package/dist/codegen-load.js.map +0 -1
- package/dist/codegen-loaders.d.ts +0 -12
- package/dist/codegen-loaders.d.ts.map +0 -1
- package/dist/codegen-loaders.js +0 -55
- package/dist/codegen-loaders.js.map +0 -1
- package/dist/codegen-mcp.d.ts +0 -13
- package/dist/codegen-mcp.d.ts.map +0 -1
- package/dist/codegen-mcp.js +0 -368
- package/dist/codegen-mcp.js.map +0 -1
- package/dist/codegen-python.d.ts +0 -33
- package/dist/codegen-python.d.ts.map +0 -1
- package/dist/codegen-python.js +0 -828
- package/dist/codegen-python.js.map +0 -1
- package/dist/codegen-route-tree-intern.d.ts +0 -40
- package/dist/codegen-route-tree-intern.d.ts.map +0 -1
- package/dist/codegen-route-tree-intern.js +0 -221
- package/dist/codegen-route-tree-intern.js.map +0 -1
- package/dist/codegen-rust.d.ts +0 -18
- package/dist/codegen-rust.d.ts.map +0 -1
- package/dist/codegen-rust.js +0 -1293
- package/dist/codegen-rust.js.map +0 -1
- package/dist/codegen-sanitize.d.ts +0 -3
- package/dist/codegen-sanitize.d.ts.map +0 -1
- package/dist/codegen-sanitize.js +0 -56
- package/dist/codegen-sanitize.js.map +0 -1
- package/dist/codegen-schema-naming.d.ts +0 -27
- package/dist/codegen-schema-naming.d.ts.map +0 -1
- package/dist/codegen-schema-naming.js +0 -150
- package/dist/codegen-schema-naming.js.map +0 -1
- package/dist/codegen-sdk-model.d.ts +0 -71
- package/dist/codegen-sdk-model.d.ts.map +0 -1
- package/dist/codegen-sdk-model.js +0 -179
- package/dist/codegen-sdk-model.js.map +0 -1
- package/dist/codegen.d.ts +0 -187
- package/dist/codegen.d.ts.map +0 -1
- package/dist/codegen.js +0 -4619
- package/dist/codegen.js.map +0 -1
- package/dist/context.d.ts +0 -86
- package/dist/context.d.ts.map +0 -1
- package/dist/context.js +0 -242
- package/dist/context.js.map +0 -1
- package/dist/cookie-sign.d.ts +0 -17
- package/dist/cookie-sign.d.ts.map +0 -1
- package/dist/cookie-sign.js +0 -104
- package/dist/cookie-sign.js.map +0 -1
- package/dist/cookie.d.ts +0 -24
- package/dist/cookie.d.ts.map +0 -1
- package/dist/cookie.js +0 -138
- package/dist/cookie.js.map +0 -1
- package/dist/cors.d.ts +0 -14
- package/dist/cors.d.ts.map +0 -1
- package/dist/cors.js +0 -87
- package/dist/cors.js.map +0 -1
- package/dist/crypto.d.ts +0 -7
- package/dist/crypto.d.ts.map +0 -1
- package/dist/crypto.js +0 -38
- package/dist/crypto.js.map +0 -1
- package/dist/csrf.d.ts +0 -28
- package/dist/csrf.d.ts.map +0 -1
- package/dist/csrf.js +0 -79
- package/dist/csrf.js.map +0 -1
- package/dist/curl-logger.d.ts +0 -44
- package/dist/curl-logger.d.ts.map +0 -1
- package/dist/curl-logger.js +0 -199
- package/dist/curl-logger.js.map +0 -1
- package/dist/detect-runtime.d.ts +0 -16
- package/dist/detect-runtime.d.ts.map +0 -1
- package/dist/detect-runtime.js +0 -13
- package/dist/detect-runtime.js.map +0 -1
- package/dist/dict.d.ts +0 -11
- package/dist/dict.d.ts.map +0 -1
- package/dist/dict.js +0 -13
- package/dist/dict.js.map +0 -1
- package/dist/error.d.ts +0 -21
- package/dist/error.d.ts.map +0 -1
- package/dist/error.js +0 -44
- package/dist/error.js.map +0 -1
- package/dist/errors.d.ts +0 -40
- package/dist/errors.d.ts.map +0 -1
- package/dist/errors.js +0 -39
- package/dist/errors.js.map +0 -1
- package/dist/etag.d.ts +0 -11
- package/dist/etag.d.ts.map +0 -1
- package/dist/etag.js +0 -82
- package/dist/etag.js.map +0 -1
- package/dist/feature-detect.d.ts +0 -25
- package/dist/feature-detect.d.ts.map +0 -1
- package/dist/feature-detect.js +0 -144
- package/dist/feature-detect.js.map +0 -1
- package/dist/feature-load.d.ts +0 -3
- package/dist/feature-load.d.ts.map +0 -1
- package/dist/feature-load.js +0 -36
- package/dist/feature-load.js.map +0 -1
- package/dist/feature-slots.d.ts +0 -44
- package/dist/feature-slots.d.ts.map +0 -1
- package/dist/feature-slots.js +0 -48
- package/dist/feature-slots.js.map +0 -1
- package/dist/fetch-request.d.ts +0 -10
- package/dist/fetch-request.d.ts.map +0 -1
- package/dist/fetch-request.js +0 -13
- package/dist/fetch-request.js.map +0 -1
- package/dist/gen-process.d.ts +0 -15
- package/dist/gen-process.d.ts.map +0 -1
- package/dist/gen-process.js +0 -43
- package/dist/gen-process.js.map +0 -1
- package/dist/gen-write.d.ts +0 -19
- package/dist/gen-write.d.ts.map +0 -1
- package/dist/gen-write.js +0 -120
- package/dist/gen-write.js.map +0 -1
- package/dist/glob.d.ts +0 -21
- package/dist/glob.d.ts.map +0 -1
- package/dist/glob.js +0 -115
- package/dist/glob.js.map +0 -1
- package/dist/go-type-emitter.d.ts +0 -47
- package/dist/go-type-emitter.d.ts.map +0 -1
- package/dist/go-type-emitter.js +0 -594
- package/dist/go-type-emitter.js.map +0 -1
- package/dist/honey-response.d.ts +0 -82
- package/dist/honey-response.d.ts.map +0 -1
- package/dist/honey-response.js +0 -338
- package/dist/honey-response.js.map +0 -1
- package/dist/i18n-slot.d.ts +0 -15
- package/dist/i18n-slot.d.ts.map +0 -1
- package/dist/i18n-slot.js +0 -14
- package/dist/i18n-slot.js.map +0 -1
- package/dist/i18n.d.ts +0 -29
- package/dist/i18n.d.ts.map +0 -1
- package/dist/i18n.js +0 -250
- package/dist/i18n.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/init.d.ts +0 -5
- package/dist/init.d.ts.map +0 -1
- package/dist/init.js +0 -140
- package/dist/init.js.map +0 -1
- package/dist/input.d.ts +0 -6
- package/dist/input.d.ts.map +0 -1
- package/dist/input.js +0 -4
- package/dist/input.js.map +0 -1
- package/dist/invalidate-check.d.ts +0 -61
- package/dist/invalidate-check.d.ts.map +0 -1
- package/dist/invalidate-check.js +0 -163
- package/dist/invalidate-check.js.map +0 -1
- package/dist/invoke-user.d.ts +0 -35
- package/dist/invoke-user.d.ts.map +0 -1
- package/dist/invoke-user.js +0 -73
- package/dist/invoke-user.js.map +0 -1
- package/dist/ip-restrict.d.ts +0 -24
- package/dist/ip-restrict.d.ts.map +0 -1
- package/dist/ip-restrict.js +0 -60
- package/dist/ip-restrict.js.map +0 -1
- package/dist/ip.d.ts +0 -39
- package/dist/ip.d.ts.map +0 -1
- package/dist/ip.js +0 -209
- package/dist/ip.js.map +0 -1
- package/dist/logger.d.ts +0 -45
- package/dist/logger.d.ts.map +0 -1
- package/dist/logger.js +0 -113
- package/dist/logger.js.map +0 -1
- package/dist/media-type.d.ts +0 -30
- package/dist/media-type.d.ts.map +0 -1
- package/dist/media-type.js +0 -97
- package/dist/media-type.js.map +0 -1
- package/dist/meta-spec-merge.d.ts +0 -32
- package/dist/meta-spec-merge.d.ts.map +0 -1
- package/dist/meta-spec-merge.js +0 -68
- package/dist/meta-spec-merge.js.map +0 -1
- package/dist/meta-spec.d.ts +0 -94
- package/dist/meta-spec.d.ts.map +0 -1
- package/dist/meta-spec.js +0 -535
- package/dist/meta-spec.js.map +0 -1
- package/dist/middleware.d.ts +0 -77
- package/dist/middleware.d.ts.map +0 -1
- package/dist/middleware.js +0 -253
- package/dist/middleware.js.map +0 -1
- package/dist/node-request.d.ts +0 -104
- package/dist/node-request.d.ts.map +0 -1
- package/dist/node-request.js +0 -407
- package/dist/node-request.js.map +0 -1
- package/dist/node.d.ts +0 -30
- package/dist/node.d.ts.map +0 -1
- package/dist/node.js +0 -396
- package/dist/node.js.map +0 -1
- package/dist/openapi/collect.d.ts.map +0 -1
- package/dist/openapi/collect.js.map +0 -1
- package/dist/openapi/docs-page.d.ts.map +0 -1
- package/dist/openapi/docs-page.js.map +0 -1
- package/dist/openapi/document.d.ts.map +0 -1
- package/dist/openapi/document.js.map +0 -1
- package/dist/openapi/json-schema-slot.d.ts +0 -12
- package/dist/openapi/json-schema-slot.d.ts.map +0 -1
- package/dist/openapi/json-schema-slot.js +0 -38
- package/dist/openapi/json-schema-slot.js.map +0 -1
- package/dist/openapi/register.d.ts.map +0 -1
- package/dist/openapi/register.js.map +0 -1
- package/dist/openapi/scalar.d.ts.map +0 -1
- package/dist/openapi/scalar.js.map +0 -1
- package/dist/openapi/serve.d.ts.map +0 -1
- package/dist/openapi/serve.js.map +0 -1
- package/dist/openapi/spec-factory.d.ts +0 -65
- package/dist/openapi/spec-factory.d.ts.map +0 -1
- package/dist/openapi/spec-factory.js +0 -52
- package/dist/openapi/spec-factory.js.map +0 -1
- package/dist/openapi/spec.d.ts +0 -29
- package/dist/openapi/spec.d.ts.map +0 -1
- package/dist/openapi/spec.js +0 -50
- package/dist/openapi/spec.js.map +0 -1
- package/dist/openapi/swagger.d.ts.map +0 -1
- package/dist/openapi/swagger.js.map +0 -1
- package/dist/pattern.d.ts +0 -71
- package/dist/pattern.d.ts.map +0 -1
- package/dist/pattern.js +0 -239
- package/dist/pattern.js.map +0 -1
- package/dist/peer.d.ts +0 -17
- package/dist/peer.d.ts.map +0 -1
- package/dist/peer.js +0 -50
- package/dist/peer.js.map +0 -1
- package/dist/plugin.d.ts +0 -228
- package/dist/plugin.d.ts.map +0 -1
- package/dist/plugin.js +0 -666
- package/dist/plugin.js.map +0 -1
- package/dist/powered-by.d.ts +0 -7
- package/dist/powered-by.d.ts.map +0 -1
- package/dist/powered-by.js +0 -11
- package/dist/powered-by.js.map +0 -1
- package/dist/pretty-json.d.ts +0 -10
- package/dist/pretty-json.d.ts.map +0 -1
- package/dist/pretty-json.js +0 -47
- package/dist/pretty-json.js.map +0 -1
- package/dist/producer-stream.d.ts +0 -47
- package/dist/producer-stream.d.ts.map +0 -1
- package/dist/producer-stream.js +0 -267
- package/dist/producer-stream.js.map +0 -1
- package/dist/proxy.d.ts +0 -90
- package/dist/proxy.d.ts.map +0 -1
- package/dist/proxy.js +0 -274
- package/dist/proxy.js.map +0 -1
- package/dist/python-type-emitter.d.ts +0 -24
- package/dist/python-type-emitter.d.ts.map +0 -1
- package/dist/python-type-emitter.js +0 -157
- package/dist/python-type-emitter.js.map +0 -1
- package/dist/realtime/bus.d.ts.map +0 -1
- package/dist/realtime/bus.js.map +0 -1
- package/dist/realtime/register.d.ts +0 -3
- package/dist/realtime/register.d.ts.map +0 -1
- package/dist/realtime/register.js +0 -10
- package/dist/realtime/register.js.map +0 -1
- package/dist/realtime/route.d.ts.map +0 -1
- package/dist/realtime/route.js.map +0 -1
- package/dist/realtime/server.d.ts.map +0 -1
- package/dist/realtime/server.js.map +0 -1
- package/dist/request-id.d.ts +0 -19
- package/dist/request-id.d.ts.map +0 -1
- package/dist/request-id.js +0 -16
- package/dist/request-id.js.map +0 -1
- package/dist/request-limits.d.ts +0 -3
- package/dist/request-limits.d.ts.map +0 -1
- package/dist/request-limits.js +0 -3
- package/dist/request-limits.js.map +0 -1
- package/dist/request-path.d.ts +0 -33
- package/dist/request-path.d.ts.map +0 -1
- package/dist/request-path.js +0 -178
- package/dist/request-path.js.map +0 -1
- package/dist/request-to-curl.d.ts +0 -15
- package/dist/request-to-curl.d.ts.map +0 -1
- package/dist/request-to-curl.js +0 -48
- package/dist/request-to-curl.js.map +0 -1
- package/dist/response.d.ts +0 -86
- package/dist/response.d.ts.map +0 -1
- package/dist/response.js +0 -313
- package/dist/response.js.map +0 -1
- package/dist/rust-type-emitter.d.ts +0 -44
- package/dist/rust-type-emitter.d.ts.map +0 -1
- package/dist/rust-type-emitter.js +0 -463
- package/dist/rust-type-emitter.js.map +0 -1
- package/dist/secure-headers.d.ts +0 -16
- package/dist/secure-headers.d.ts.map +0 -1
- package/dist/secure-headers.js +0 -53
- package/dist/secure-headers.js.map +0 -1
- package/dist/serve-register.d.ts +0 -6
- package/dist/serve-register.d.ts.map +0 -1
- package/dist/serve-register.js +0 -9
- package/dist/serve-register.js.map +0 -1
- package/dist/serve-slot.d.ts +0 -9
- package/dist/serve-slot.d.ts.map +0 -1
- package/dist/serve-slot.js +0 -52
- package/dist/serve-slot.js.map +0 -1
- package/dist/serve.d.ts +0 -38
- package/dist/serve.d.ts.map +0 -1
- package/dist/serve.js +0 -157
- package/dist/serve.js.map +0 -1
- package/dist/server-timing.d.ts +0 -9
- package/dist/server-timing.d.ts.map +0 -1
- package/dist/server-timing.js +0 -51
- package/dist/server-timing.js.map +0 -1
- package/dist/static.d.ts +0 -21
- package/dist/static.d.ts.map +0 -1
- package/dist/static.js +0 -102
- package/dist/static.js.map +0 -1
- package/dist/telemetry/otel.d.ts.map +0 -1
- package/dist/telemetry/otel.js.map +0 -1
- package/dist/testing.d.ts +0 -36
- package/dist/testing.d.ts.map +0 -1
- package/dist/testing.js +0 -124
- package/dist/testing.js.map +0 -1
- package/dist/timeout.d.ts +0 -13
- package/dist/timeout.d.ts.map +0 -1
- package/dist/timeout.js +0 -36
- package/dist/timeout.js.map +0 -1
- package/dist/tree.d.ts +0 -193
- package/dist/tree.d.ts.map +0 -1
- package/dist/tree.js +0 -437
- package/dist/tree.js.map +0 -1
- package/dist/trust.d.ts +0 -21
- package/dist/trust.d.ts.map +0 -1
- package/dist/trust.js +0 -100
- package/dist/trust.js.map +0 -1
- package/dist/ts-type-emitter.d.ts +0 -8
- package/dist/ts-type-emitter.d.ts.map +0 -1
- package/dist/ts-type-emitter.js +0 -150
- package/dist/ts-type-emitter.js.map +0 -1
- package/dist/type-emitter.d.ts +0 -36
- package/dist/type-emitter.d.ts.map +0 -1
- package/dist/type-emitter.js +0 -729
- package/dist/type-emitter.js.map +0 -1
- package/dist/type-extractor.d.ts +0 -43
- package/dist/type-extractor.d.ts.map +0 -1
- package/dist/type-extractor.js +0 -819
- package/dist/type-extractor.js.map +0 -1
- package/dist/types.d.ts +0 -467
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -96
- package/dist/types.js.map +0 -1
- package/dist/validation.d.ts +0 -31
- package/dist/validation.d.ts.map +0 -1
- package/dist/validation.js +0 -335
- package/dist/validation.js.map +0 -1
- package/dist/with-headers.d.ts +0 -15
- package/dist/with-headers.d.ts.map +0 -1
- package/dist/with-headers.js +0 -45
- package/dist/with-headers.js.map +0 -1
- package/dist/ws/bun.d.ts.map +0 -1
- package/dist/ws/bun.js.map +0 -1
- package/dist/ws/cloudflare.d.ts.map +0 -1
- package/dist/ws/cloudflare.js.map +0 -1
- package/dist/ws/deno.d.ts +0 -13
- package/dist/ws/deno.d.ts.map +0 -1
- package/dist/ws/deno.js +0 -133
- package/dist/ws/deno.js.map +0 -1
- package/dist/ws/node.d.ts.map +0 -1
- package/dist/ws/node.js.map +0 -1
- package/dist/ws/session.d.ts.map +0 -1
- package/dist/ws/session.js.map +0 -1
- package/dist/ws/shared.d.ts.map +0 -1
- package/dist/ws/shared.js.map +0 -1
- package/dist/ws-origin.d.ts +0 -20
- package/dist/ws-origin.d.ts.map +0 -1
- package/dist/ws-origin.js +0 -41
- package/dist/ws-origin.js.map +0 -1
- package/dist/yaml.d.ts +0 -18
- package/dist/yaml.d.ts.map +0 -1
- package/dist/yaml.js +0 -101
- package/dist/yaml.js.map +0 -1
- package/docs/api-ref/go.md +0 -399
- package/docs/api-ref/python.md +0 -399
- package/docs/api-ref/rust.md +0 -399
- package/docs/api-ref/typescript.md +0 -399
- package/docs/invalidate-spec.md +0 -333
- package/docs/meta-spec.md +0 -555
- package/docs/packaging.md +0 -104
- package/docs/regression-matrix/README.md +0 -32
- package/docs/regression-matrix/review.md +0 -44
- package/docs/regression-matrix/ws1-3.md +0 -97
- package/docs/regression-matrix/ws4-8.md +0 -107
- package/docs/regression-matrix/ws9-12.md +0 -266
- package/docs/sdk.md +0 -798
- package/src/accepts.ts +0 -136
- package/src/body-kind.ts +0 -67
- package/src/body-limit.ts +0 -152
- package/src/build/index.ts +0 -217
- package/src/cli-args.ts +0 -123
- package/src/cli-go/auth.go +0 -26
- package/src/cli-go/config.go +0 -192
- package/src/cli-go/errors.go +0 -75
- package/src/cli-go/multipart.go +0 -79
- package/src/cli-go/output.go +0 -163
- package/src/cli-go/root.go +0 -30
- package/src/cli-go/stream.go +0 -88
- package/src/cli-go/version.go +0 -5
- package/src/cli.ts +0 -209
- package/src/client/defaults.ts +0 -47
- package/src/client/error.ts +0 -82
- package/src/client/http.ts +0 -737
- package/src/client/index.ts +0 -157
- package/src/client/path.ts +0 -169
- package/src/client/redirect-policy.ts +0 -19
- package/src/client/sdk.ts +0 -351
- package/src/client/sse.ts +0 -128
- package/src/client/types.ts +0 -206
- package/src/client/ws.ts +0 -149
- package/src/client-go/errors.go +0 -236
- package/src/client-go/export.go +0 -44
- package/src/client-go/invalidation.go +0 -371
- package/src/client-go/nullable.go +0 -62
- package/src/client-go/realtime.go +0 -354
- package/src/client-go/result.go +0 -20
- package/src/client-go/runtime.go +0 -975
- package/src/client-go/sse.go +0 -159
- package/src/client-go/transport.go +0 -495
- package/src/client-go/ws.go +0 -128
- package/src/client-info.ts +0 -79
- package/src/client-mcp/README.md +0 -10
- package/src/client-mcp/server.ts +0 -221
- package/src/client-mcp/types.ts +0 -19
- package/src/client-python/_errors.py +0 -115
- package/src/client-python/_invalidation.py +0 -494
- package/src/client-python/_realtime.py +0 -179
- package/src/client-python/_runtime.py +0 -860
- package/src/client-python/_sse.py +0 -155
- package/src/client-python/_transport.py +0 -366
- package/src/client-python/_ws.py +0 -159
- package/src/client-python/py.typed +0 -0
- package/src/client-rust/errors.rs +0 -220
- package/src/client-rust/invalidation.rs +0 -412
- package/src/client-rust/invalidation_sync.rs +0 -93
- package/src/client-rust/nullable.rs +0 -17
- package/src/client-rust/realtime.rs +0 -702
- package/src/client-rust/result.rs +0 -22
- package/src/client-rust/runtime.rs +0 -980
- package/src/client-rust/runtime_sync.rs +0 -484
- package/src/client-rust/sse.rs +0 -188
- package/src/client-rust/ws.rs +0 -167
- package/src/codegen-go-cli.ts +0 -1066
- package/src/codegen-go.ts +0 -970
- package/src/codegen-hash.ts +0 -8
- package/src/codegen-ir.ts +0 -812
- package/src/codegen-lang.ts +0 -517
- package/src/codegen-load.ts +0 -150
- package/src/codegen-loaders.ts +0 -50
- package/src/codegen-mcp.ts +0 -445
- package/src/codegen-python.ts +0 -916
- package/src/codegen-route-tree-intern.ts +0 -198
- package/src/codegen-rust.ts +0 -1402
- package/src/codegen-sanitize.ts +0 -57
- package/src/codegen-schema-naming.ts +0 -165
- package/src/codegen-sdk-model.ts +0 -228
- package/src/codegen.ts +0 -5089
- package/src/context.ts +0 -325
- package/src/cookie-sign.ts +0 -119
- package/src/cookie.ts +0 -143
- package/src/cors.ts +0 -95
- package/src/crypto.ts +0 -38
- package/src/csrf.ts +0 -86
- package/src/curl-logger.ts +0 -258
- package/src/detect-runtime.ts +0 -17
- package/src/dict.ts +0 -12
- package/src/error.ts +0 -55
- package/src/errors.ts +0 -85
- package/src/etag.ts +0 -97
- package/src/feature-detect.ts +0 -147
- package/src/feature-load.ts +0 -23
- package/src/feature-slots.ts +0 -70
- package/src/fetch-request.ts +0 -13
- package/src/gen-process.ts +0 -42
- package/src/gen-write.ts +0 -127
- package/src/glob.ts +0 -109
- package/src/go-type-emitter.ts +0 -660
- package/src/honey-response.ts +0 -379
- package/src/i18n-slot.ts +0 -30
- package/src/i18n.ts +0 -300
- package/src/index.ts +0 -3829
- package/src/init.ts +0 -161
- package/src/input.ts +0 -8
- package/src/invalidate-check.ts +0 -205
- package/src/invoke-user.ts +0 -95
- package/src/ip-restrict.ts +0 -79
- package/src/ip.ts +0 -194
- package/src/logger.ts +0 -178
- package/src/media-type.ts +0 -104
- package/src/meta-spec-merge.ts +0 -80
- package/src/meta-spec.ts +0 -718
- package/src/middleware.ts +0 -331
- package/src/node-request.ts +0 -431
- package/src/node.ts +0 -454
- package/src/openapi/collect.ts +0 -50
- package/src/openapi/docs-page.ts +0 -89
- package/src/openapi/document.ts +0 -893
- package/src/openapi/json-schema-slot.ts +0 -53
- package/src/openapi/register.ts +0 -23
- package/src/openapi/scalar.ts +0 -34
- package/src/openapi/serve.ts +0 -39
- package/src/openapi/spec-factory.ts +0 -100
- package/src/openapi/spec.ts +0 -74
- package/src/openapi/swagger.ts +0 -35
- package/src/pattern.ts +0 -245
- package/src/peer.ts +0 -53
- package/src/plugin.ts +0 -864
- package/src/powered-by.ts +0 -18
- package/src/pretty-json.ts +0 -56
- package/src/producer-stream.ts +0 -296
- package/src/proxy.ts +0 -370
- package/src/python-type-emitter.ts +0 -181
- package/src/realtime/bus.ts +0 -140
- package/src/realtime/register.ts +0 -13
- package/src/realtime/route.ts +0 -153
- package/src/realtime/server.ts +0 -298
- package/src/request-id.ts +0 -32
- package/src/request-limits.ts +0 -2
- package/src/request-path.ts +0 -165
- package/src/request-to-curl.ts +0 -52
- package/src/response.ts +0 -411
- package/src/rust-type-emitter.ts +0 -548
- package/src/secure-headers.ts +0 -74
- package/src/serve-register.ts +0 -12
- package/src/serve-slot.ts +0 -58
- package/src/serve.ts +0 -220
- package/src/server-timing.ts +0 -71
- package/src/static.ts +0 -112
- package/src/telemetry/otel.ts +0 -156
- package/src/testing.ts +0 -167
- package/src/timeout.ts +0 -45
- package/src/tree.ts +0 -554
- package/src/trust.ts +0 -117
- package/src/ts-type-emitter.ts +0 -168
- package/src/type-emitter.ts +0 -760
- package/src/type-extractor.ts +0 -855
- package/src/types.ts +0 -756
- package/src/validation.ts +0 -413
- package/src/with-headers.ts +0 -45
- package/src/ws/bun.ts +0 -120
- package/src/ws/cloudflare.ts +0 -192
- package/src/ws/deno.ts +0 -188
- package/src/ws/node.ts +0 -240
- package/src/ws/session.ts +0 -73
- package/src/ws/shared.ts +0 -140
- package/src/ws-origin.ts +0 -53
- package/src/yaml.ts +0 -103
package/dist/index.d.ts
CHANGED
|
@@ -1,746 +1,32 @@
|
|
|
1
|
-
import { HoneyContext } from "./context.ts";
|
|
2
|
-
import { type TrustSetting } from "./client-info.ts";
|
|
3
|
-
import type { TrustProxy } from "./trust.ts";
|
|
4
|
-
import { HoneyError } from "./error.ts";
|
|
5
|
-
import { ERROR_META } from "./errors.ts";
|
|
6
|
-
import type { ChainErrorConverter, MiddlewareFn, RuntimeMiddleware } from "./middleware.ts";
|
|
7
|
-
import type { ProxyConfig } from "./proxy.ts";
|
|
8
|
-
import type { CustomErrorFormatter, ErrorFormatter, ResponseOptions, TypedResponse } from "./response.ts";
|
|
9
|
-
import { type HoneyRes } from "./response.ts";
|
|
10
|
-
import type { RouteId, Segment } from "./pattern.ts";
|
|
11
|
-
import type { RouteEntry, RouteHandler, RouteTree, TreeNode, WSRouteHandler } from "./tree.ts";
|
|
12
|
-
import type { RealtimeBus } from "./realtime/bus.ts";
|
|
13
|
-
import type { RealtimeConfig, RealtimeRouteOpts } from "./realtime/route.ts";
|
|
14
|
-
import type { RealtimePublisher } from "./realtime/server.ts";
|
|
15
|
-
import type { ComputeErrorsByStatus, DefaultMeta, ExtractSchemas, HttpMethod, InferInputMap, InferOutput, HoneyMetaSpec, InputSchemasDef, MergePath, MergeRoute, MetaSpecConfig, OutputSchemaDef, ParamsFromPath, PrefixRoutes, StandardSchemaLike, TapContext } from "./types.ts";
|
|
16
|
-
import type { WSAdapter, WSHandler } from "./ws/cloudflare.ts";
|
|
17
|
-
import { type WSOriginPolicy } from "./ws-origin.ts";
|
|
18
|
-
import type { MetaSpecSource } from "./meta-spec-merge.ts";
|
|
19
|
-
import type { HoneyServeOptions, ServeHandle } from "./serve.ts";
|
|
20
|
-
export { clientInfo, HoneyContext } from "./context.ts";
|
|
21
|
-
export { toFetchRequest } from "./fetch-request.ts";
|
|
22
|
-
export type { WSOriginPolicy } from "./ws-origin.ts";
|
|
23
|
-
export type { ClientInfo } from "./client-info.ts";
|
|
24
|
-
export type { TrustProxy } from "./trust.ts";
|
|
25
|
-
/** HoneyContext without internal backing fields — use this for consumer-facing types */
|
|
26
|
-
export type HoneyCtx<TEnv = Record<string, unknown>> = Omit<import("./context.ts").HoneyContext<TEnv>, "_errorToResponse" | "_isErrorResponse" | "_lzClient" | "_lzCookies" | "_lzHeaders" | "_lzSearch" | "_lzSearchAll" | "_lzUrlFn" | "_rq" | "_setErrors">;
|
|
27
|
-
export { HoneyError } from "./error.ts";
|
|
28
|
-
export { defineErrors, ERROR_META } from "./errors.ts";
|
|
29
|
-
export type { ErrorMetaEntry } from "./errors.ts";
|
|
30
|
-
export type { MiddlewareFn } from "./middleware.ts";
|
|
31
|
-
export { createMiddleware, defineMiddleware } from "./middleware.ts";
|
|
32
|
-
export type { ProxyConfig } from "./proxy.ts";
|
|
33
|
-
export type { PendingTap, TapContext, TapHandler } from "./types.ts";
|
|
34
|
-
export type { CookieOptions, CustomErrorFormatter, ErrorFormatter, ResponseOptions, SSEEvent, SSEOptions, SSEStream, TypedResponse, } from "./response.ts";
|
|
35
|
-
export { createErrorResponse, HoneyRes } from "./response.ts";
|
|
36
|
-
export { mergeTree } from "./tree.ts";
|
|
37
|
-
export type { DefaultMeta, HoneyCodegen, HoneyMeta, InferBasePath, InferCtx, InferEnv, InferErrorFactory, InferInputMap, InferMeta, InferMethods, InferOutput, InferRouteCtx, InferRouteErrors, InferRouteInput, InferRouteMeta, InferRouteMethods, InferRouteOutput, InferRoutePaths, InferRoutes, InputSchemasDef, MergePath, PrefixRoutes, HoneyMetaSpec, MetaSpecConfig, MetaSpecContext, MetaSpecEntry, MetaSpecMergeConflict, MetaSpecExpand, MetaSpecProfile, MetaSpecSchemaEntry, MetaSpecSchemaSearch, MetaSpecSchemaSource, MetaSpecSingle, MetaSpecStrictness, MetaSpecTarget, OpenApiMeta, OutputSchemaDef, Overwrite, ComputeErrorsByStatus, RouteRecord, StandardSchemaLike, StatusKey, SuccessStatusKey, } from "./types.ts";
|
|
38
|
-
export type { WSAdapter, WSAdapterOptions, WSContext, WSHandler, WSPreUpgrade } from "./ws/cloudflare.ts";
|
|
39
|
-
export type { ConnContext, RealtimeLimits, RealtimeRouteOpts } from "./realtime/route.ts";
|
|
40
|
-
export type { RealtimePublisher } from "./realtime/server.ts";
|
|
41
|
-
export type { RealtimeBus } from "./realtime/bus.ts";
|
|
42
|
-
export type { HoneyServeOptions, ServeHandle } from "./serve.ts";
|
|
43
|
-
export type { ServeRuntime } from "./detect-runtime.ts";
|
|
44
|
-
export { detectRuntime } from "./detect-runtime.ts";
|
|
45
|
-
type TelemetryAdapter = {
|
|
46
|
-
onError?(ctx: {
|
|
47
|
-
duration: number;
|
|
48
|
-
error: HoneyError;
|
|
49
|
-
method: string;
|
|
50
|
-
path: string;
|
|
51
|
-
}): void;
|
|
52
|
-
/** `path` is the request path; `route` the matched pattern (`/users/:id`). */
|
|
53
|
-
onHandler?(ctx: {
|
|
54
|
-
duration: number;
|
|
55
|
-
method: string;
|
|
56
|
-
path: string;
|
|
57
|
-
route: string;
|
|
58
|
-
status: number;
|
|
59
|
-
}): void;
|
|
60
|
-
onMethodNotAllowed?(ctx: {
|
|
61
|
-
allowed: string[];
|
|
62
|
-
method: string;
|
|
63
|
-
path: string;
|
|
64
|
-
req: Request;
|
|
65
|
-
}): void;
|
|
66
|
-
onMiddleware?(ctx: {
|
|
67
|
-
duration: number;
|
|
68
|
-
error?: unknown;
|
|
69
|
-
name: string;
|
|
70
|
-
}): void;
|
|
71
|
-
onNotFound?(ctx: {
|
|
72
|
-
method: string;
|
|
73
|
-
path: string;
|
|
74
|
-
req: Request;
|
|
75
|
-
}): void;
|
|
76
|
-
onRequest?(ctx: {
|
|
77
|
-
env: unknown;
|
|
78
|
-
req: Request;
|
|
79
|
-
}): void;
|
|
80
|
-
/** Fires exactly once per request that fired `onRequest`, whichever way it exits. */
|
|
81
|
-
onResponse?(ctx: {
|
|
82
|
-
duration: number;
|
|
83
|
-
req: Request;
|
|
84
|
-
status: number;
|
|
85
|
-
}): void;
|
|
86
|
-
/** `path` is the request path; `route` the matched pattern (`/users/:id`). */
|
|
87
|
-
onRoute?(ctx: {
|
|
88
|
-
method: string;
|
|
89
|
-
params: Record<string, string>;
|
|
90
|
-
path: string;
|
|
91
|
-
req: Request;
|
|
92
|
-
route: string;
|
|
93
|
-
}): void;
|
|
94
|
-
};
|
|
95
|
-
type ErrorI18nConfig<TEnv> = {
|
|
96
|
-
errors?: Record<string, Record<string, string>>;
|
|
97
|
-
fieldNames?: Record<string, Record<string, string>>;
|
|
98
|
-
resolveLocale: (ctx: {
|
|
99
|
-
cookies: Record<string, string>;
|
|
100
|
-
env: TEnv;
|
|
101
|
-
headers: Record<string, string>;
|
|
102
|
-
params: Record<string, string>;
|
|
103
|
-
req: Request;
|
|
104
|
-
search: Record<string, string>;
|
|
105
|
-
}) => string | Promise<string>;
|
|
106
|
-
};
|
|
107
|
-
/** The warn side of a structured logger (`warn(obj, msg)` or `warn(msg)`), e.g. honey/logger. */
|
|
108
|
-
type Logger = {
|
|
109
|
-
warn?(objOrMsg: Record<string, unknown> | string, msg?: string): void;
|
|
110
|
-
};
|
|
111
|
-
type ErrorCtx<TEnv> = {
|
|
112
|
-
env: TEnv;
|
|
113
|
-
jsonFromError: (err: HoneyError) => Response;
|
|
114
|
-
req: Request;
|
|
115
|
-
};
|
|
116
|
-
type OnErrorFn<TEnv> = (error: unknown, ctx: ErrorCtx<TEnv>) => HoneyError | Response | Promise<HoneyError | Response | undefined | void> | undefined | void;
|
|
117
|
-
type OnMethodNotAllowedFn<TEnv> = (ctx: ErrorCtx<TEnv> & {
|
|
118
|
-
allowed: string[];
|
|
119
|
-
}) => Response | Promise<Response>;
|
|
120
|
-
type OnNotFoundFn<TEnv> = (ctx: ErrorCtx<TEnv>) => Response | Promise<Response>;
|
|
121
|
-
type TapFn<TEnv> = (ctx: TapContext<TEnv>, payload: unknown) => void | Promise<void>;
|
|
122
|
-
type ErrorFactoryRecord = Record<string, (...args: never[]) => unknown>;
|
|
123
|
-
type OutputValidationMode = "always" | "dev" | "off";
|
|
124
|
-
/**
|
|
125
|
-
* Settings of one app — shared by every handle derived from it (`use()`, `basePath()`,
|
|
126
|
-
* `context()`, `meta()`), so a setter called on any handle applies to all of them and
|
|
127
|
-
* serving any handle behaves the same. Records point at the settings of the app they were
|
|
128
|
-
* registered on, so a mounted sub-app's routes keep their own error factory, default errors,
|
|
129
|
-
* boundary and output validation.
|
|
130
|
-
*/
|
|
131
|
-
type AppSettings<TEnv = unknown> = {
|
|
132
|
-
customErrorFormatter: CustomErrorFormatter | null;
|
|
133
|
-
customErrorSchema: StandardSchemaLike | null;
|
|
134
|
-
defaultBoundaryKey: string | null;
|
|
135
|
-
defaultErrorKeys: Set<string>;
|
|
136
|
-
errorFactory: ErrorFactoryRecord | null;
|
|
137
|
-
errorFormatter: ErrorFormatterFn;
|
|
138
|
-
errorI18n: ErrorI18nConfig<TEnv> | null;
|
|
139
|
-
errorSchema: StandardSchemaLike | null;
|
|
140
|
-
logger: Logger | null;
|
|
141
|
-
onError: OnErrorFn<TEnv> | null;
|
|
142
|
-
onMethodNotAllowed: OnMethodNotAllowedFn<TEnv> | null;
|
|
143
|
-
onNotFound: OnNotFoundFn<TEnv> | null;
|
|
144
|
-
/** null = never set: a mounted route follows the mounting app's mode */
|
|
145
|
-
outputValidation: OutputValidationMode | null;
|
|
146
|
-
stripPrefix: string | null;
|
|
147
|
-
taps: Map<string, TapFn<TEnv>> | null;
|
|
148
|
-
telemetry: TelemetryAdapter | null;
|
|
149
|
-
trailingSlash: "enforce" | "ignore" | "strip";
|
|
150
|
-
encodedSlashes: "allow" | "reject";
|
|
151
|
-
trust: TrustSetting;
|
|
152
|
-
wsAdapter: WSAdapter | null;
|
|
153
|
-
};
|
|
154
|
-
/**
|
|
155
|
-
* Everything a matched route runs, compiled once at finalize: the record (with its resolved
|
|
156
|
-
* error keys, meta and chain) and one function that runs chain + handler and never rejects.
|
|
157
|
-
*/
|
|
158
|
-
type Plan = {
|
|
159
|
-
/** `.context()` values copied onto each request context */
|
|
160
|
-
cv: Record<string, unknown> | null;
|
|
161
|
-
/** declared error keys are enforced (the route, its middleware or the app declared any) */
|
|
162
|
-
enf: boolean;
|
|
163
|
-
/** preflight runner — chain without input validation or handler; compiled on first preflight */
|
|
164
|
-
pf: CompiledChain | null;
|
|
165
|
-
/** what the preflight runner runs */
|
|
166
|
-
pfChain: RuntimeMiddleware[];
|
|
167
|
-
r: RouteHandler | WSRouteHandler;
|
|
168
|
-
/** realtime route config when this is a realtime route */
|
|
169
|
-
rt: RealtimeConfig | null;
|
|
170
|
-
run: CompiledChain;
|
|
171
|
-
/** taps of the serving app, plus those of the app the route came from */
|
|
172
|
-
taps: Map<string, TapFn<unknown>> | null;
|
|
173
|
-
};
|
|
174
|
-
type CompiledChain = (ctx: object) => Response | Promise<Response>;
|
|
175
|
-
/** What one app graph serves, resolved at finalize from records and the loaded tree. */
|
|
176
|
-
type FinalTable = {
|
|
177
|
-
byId: Map<RouteId, RouteHandler>;
|
|
178
|
-
convert: ChainErrorConverter;
|
|
179
|
-
epoch: number;
|
|
180
|
-
/** 404 / 405: the middleware every route runs, plus the scopes covering the request path */
|
|
181
|
-
miss: Plan;
|
|
182
|
-
plans: Map<RouteId, Plan>;
|
|
183
|
-
/** `METHOD /path` → plan, for routes without params or wildcards */
|
|
184
|
-
statics: Record<string, Plan>;
|
|
185
|
-
wsById: Map<RouteId, WSRouteHandler>;
|
|
186
|
-
wsPlans: Map<RouteId, Plan>;
|
|
187
|
-
};
|
|
188
|
-
/** One `app.use(mw)` — the handle it returns has to register a route, or `mw` runs nowhere. */
|
|
189
|
-
type ChainNode = {
|
|
190
|
-
mw: RuntimeMiddleware;
|
|
191
|
-
parent: ChainNode | null;
|
|
192
|
-
used: boolean;
|
|
193
|
-
};
|
|
194
|
-
/** A route builder still waiting for `.handler()` — reported at finalize. */
|
|
195
|
-
type PendingRoute = {
|
|
196
|
-
id: string;
|
|
197
|
-
};
|
|
198
|
-
/** @internal — runtime entry for a scoped middleware */
|
|
199
|
-
type ScopedEntry = {
|
|
200
|
-
/** cached from mw.errors at registration; undefined when none */
|
|
201
|
-
errors: readonly string[] | undefined;
|
|
202
|
-
/** the middleware behind a request-path check, for routes the scope covers only partly */
|
|
203
|
-
guard: RuntimeMiddleware;
|
|
204
|
-
mw: RuntimeMiddleware;
|
|
205
|
-
/** canonical full-path pattern (already rebased against basePath at .use time) */
|
|
206
|
-
prefix: string;
|
|
207
|
-
segs: Segment[];
|
|
208
|
-
};
|
|
209
|
-
/**
|
|
210
|
-
* One app graph — shared by every handle derived with `use()`, `basePath()`, `context()`,
|
|
211
|
-
* `meta()`. Records are per graph, keyed by `RouteId`; the tree holds ids only, so a loaded
|
|
212
|
-
* (shared, frozen) tree never carries another app's handlers.
|
|
213
|
-
*/
|
|
214
|
-
type HoneyGraph = {
|
|
215
|
-
/** metaSpec policies of mounted sub-apps, merged under `metaSpec` when codegen reads it */
|
|
216
|
-
absorbedMetaSpecs: MetaSpecSource[];
|
|
217
|
-
/** gateway catch-alls by method — root wildcards registered over a loaded tree that lacks them */
|
|
218
|
-
catchAll: Map<string, RouteHandler>;
|
|
219
|
-
/** every `use(mw)` handle — one that never registers a route is reported at finalize */
|
|
220
|
-
chains: ChainNode[];
|
|
221
|
-
/** bumped by every registration; finalize re-runs when it moves */
|
|
222
|
-
epoch: number;
|
|
223
|
-
final: FinalTable | null;
|
|
224
|
-
/** app-wide middleware that runs before every chain (serve({ cors })), keyed so a re-serve replaces it */
|
|
225
|
-
global: Map<string, RuntimeMiddleware>;
|
|
226
|
-
hasWs: boolean;
|
|
227
|
-
/** route data of the loaded tree (per-graph copies) — null when no tree was loaded */
|
|
228
|
-
loaded: Map<RouteId, RouteEntry> | null;
|
|
229
|
-
/** Codegen-time meta → OpenAPI policy declared on this app. Never read on the request path */
|
|
230
|
-
metaSpec: MetaSpecConfig | null;
|
|
231
|
-
/** route builders still waiting for `.handler()` */
|
|
232
|
-
pending: Set<PendingRoute>;
|
|
233
|
-
realtimeBus: RealtimeBus | null;
|
|
234
|
-
/** `ctx.realtime`, shared by every request of this graph */
|
|
235
|
-
realtimeCtx: RealtimePublisher | null;
|
|
236
|
-
realtimeRoutes: Map<string, RealtimeConfig>;
|
|
237
|
-
records: Map<RouteId, RouteHandler>;
|
|
238
|
-
root: TreeNode;
|
|
239
|
-
/** root is a loaded tree (frozen, possibly shared by other apps) — copy before inserting */
|
|
240
|
-
rootShared: boolean;
|
|
241
|
-
/** path-scoped middleware, in registration order */
|
|
242
|
-
scoped: ScopedEntry[];
|
|
243
|
-
/** chains of the handles that served a request — decide what 404 and 405 run when there are no routes */
|
|
244
|
-
served: Set<RuntimeMiddleware[]>;
|
|
245
|
-
settings: AppSettings<unknown>;
|
|
246
|
-
/** registered after routeTree() with no leaf in the loaded tree — stale generated file */
|
|
247
|
-
unexpected: Set<RouteId>;
|
|
248
|
-
/** the loaded tree came in while `honey generate` loaded the app: a stale one is replaced, not fatal */
|
|
249
|
-
unloadIfStale: boolean;
|
|
250
|
-
wsRecords: Map<RouteId, WSRouteHandler>;
|
|
251
|
-
};
|
|
252
|
-
type ErrorFormatterFn = ErrorFormatter;
|
|
253
|
-
export declare class Honey<TEnv, TCtx = HoneyContext<TEnv>, TRoutes = {}, TMeta = never, TErrorFactory = never, TDefaultErrors extends string = never, TBasePath extends string = "/", TTaps extends Record<string, unknown> = {}, TScopedMw extends readonly ScopedMwEntry[] = []> {
|
|
254
|
-
readonly $basePath: TBasePath;
|
|
255
|
-
readonly $ctx: TCtx;
|
|
256
|
-
readonly $env: TEnv;
|
|
257
|
-
readonly $errorFactory: TErrorFactory;
|
|
258
|
-
readonly $meta: TMeta;
|
|
259
|
-
readonly $routes: TRoutes;
|
|
260
|
-
readonly $taps: TTaps;
|
|
261
|
-
private _basePath;
|
|
262
|
-
private _chain;
|
|
263
|
-
private _chainMeta;
|
|
264
|
-
private _contextValues;
|
|
265
|
-
private _graph;
|
|
266
|
-
/** the `use(mw)` call that created this chain — null on the root handle */
|
|
267
|
-
private _node;
|
|
268
|
-
constructor(opts?: {
|
|
269
|
-
graph?: HoneyGraph;
|
|
270
|
-
});
|
|
271
|
-
private get _s();
|
|
272
|
-
/**
|
|
273
|
-
* @internal — read by codegen through `metaSpecOf()`: the declared policy and every mounted
|
|
274
|
-
* sub-app's, unmerged. Merged on read, so `metaSpec()` may come before or after `route(sub)`;
|
|
275
|
-
* the merge lives with codegen so a served app never loads it.
|
|
276
|
-
*/
|
|
277
|
-
private get _metaSpecSource();
|
|
278
|
-
/** @internal — read by codegen and OpenAPI */
|
|
279
|
-
get _errorFactory(): ErrorFactoryRecord | null;
|
|
280
|
-
set _errorFactory(factory: ErrorFactoryRecord | null);
|
|
281
|
-
/** @internal — read by OpenAPI */
|
|
282
|
-
get _errorSchema(): StandardSchemaLike | null;
|
|
283
|
-
/** @internal — read by OpenAPI */
|
|
284
|
-
get _customErrorSchema(): StandardSchemaLike | null;
|
|
285
|
-
private get _root();
|
|
286
|
-
private get _realtimeBus();
|
|
287
|
-
/** A new handle on the same graph, carrying this handle's view. */
|
|
288
|
-
private _derive;
|
|
289
|
-
/** This handle registers, mounts or serves — every `use()` on its way here is in use. */
|
|
290
|
-
private _markUsed;
|
|
291
|
-
/** @internal — used by RouteBuilder for pre-filtered error factory */
|
|
292
|
-
get _factory(): unknown;
|
|
293
|
-
/** @internal — used by runtime error boundary */
|
|
294
|
-
get _boundaryKey(): string | null;
|
|
295
|
-
/** Convert an unknown thrown value to a plain error Response — no boundary, no onError. */
|
|
296
|
-
private _toErrorResponse;
|
|
297
|
-
private _createBoundaryError;
|
|
298
|
-
private _createError;
|
|
299
|
-
/**
|
|
300
|
-
* The i18n-resolved copy of `honeyError`: message from the locale's template for its
|
|
301
|
-
* errorKey, field paths from the locale's field names. Returns `honeyError` itself when
|
|
302
|
-
* i18n is not configured or nothing matches. Never mutates it: an error instance can be
|
|
303
|
-
* thrown again, on another request, in another locale.
|
|
304
|
-
*/
|
|
305
|
-
private _resolveI18n;
|
|
306
|
-
/**
|
|
307
|
-
* The error boundary of every `next()`: turns what a handler or middleware threw into the
|
|
308
|
-
* Response that replaces it, so every middleware around it sees a Response. Never rejects.
|
|
309
|
-
*/
|
|
310
|
-
private _convertError;
|
|
311
|
-
/** Last resort when even the configured formatter throws. */
|
|
312
|
-
private _safeErrorResponse;
|
|
313
|
-
/**
|
|
314
|
-
* Convert thrown value into an error Response — resolves boundary wrapping, i18n
|
|
315
|
-
* translation, the onError callback, and error telemetry. `onResponse` telemetry is not
|
|
316
|
-
* fired here: the request fires it exactly once, on the way out.
|
|
317
|
-
*/
|
|
318
|
-
private _resolveErrorResponse;
|
|
319
|
-
basePath<P extends string>(prefix: P): Honey<TEnv, TCtx, TRoutes, TMeta, TErrorFactory, TDefaultErrors, MergePath<TBasePath, P>, TTaps, TScopedMw>;
|
|
320
|
-
context<TAdds extends Record<string, unknown>>(values: TAdds): Honey<TEnv, TCtx & Readonly<TAdds>, TRoutes, TMeta, TErrorFactory, TDefaultErrors, TBasePath, TTaps, TScopedMw>;
|
|
321
|
-
logger(logger: Logger): this;
|
|
322
|
-
outputValidation(mode: OutputValidationMode): this;
|
|
323
|
-
trailingSlash(mode: "enforce" | "ignore" | "strip"): this;
|
|
324
|
-
/**
|
|
325
|
-
* Request paths containing an encoded `/` or `\` (`%2F`, `%5C`) answer 400 by default.
|
|
326
|
-
* `"allow"` keeps them encoded in the path, so they decode into a param value
|
|
327
|
-
* (`/repos/:id` with `/repos/group%2Fproject` gives `id === "group/project"`). Only allow
|
|
328
|
-
* them when nothing downstream (a `proxy()` upstream, a file resolver) treats a decoded
|
|
329
|
-
* slash as a separator.
|
|
330
|
-
*/
|
|
331
|
-
encodedSlashes(mode: "allow" | "reject"): this;
|
|
332
|
-
/**
|
|
333
|
-
* Which reverse proxies in front of the app to believe. Decides `ctx.ip`, `clientInfo()`,
|
|
334
|
-
* `ipRestrict`, and every other feature that needs the client's address, scheme or host.
|
|
335
|
-
*
|
|
336
|
-
* - `false` (default): the peer address the runtime reports is the client; `X-Forwarded-*`
|
|
337
|
-
* headers are ignored, since any client can send them.
|
|
338
|
-
* - a hop count: exactly that many proxies, each appending its peer to `X-Forwarded-For`
|
|
339
|
-
* (nginx `$proxy_add_x_forwarded_for`, most load balancers). The client is the entry the
|
|
340
|
-
* outermost proxy wrote.
|
|
341
|
-
* - addresses and CIDR ranges of your proxies: hops from those addresses are skipped; the
|
|
342
|
-
* first other address is the client.
|
|
343
|
-
*
|
|
344
|
-
* A hop count or list needs `import "@lovrozagar/honey/trust"` in the app entry.
|
|
345
|
-
*/
|
|
346
|
-
trustProxy(value: TrustProxy): this;
|
|
347
|
-
/** Strip a URL path prefix before route matching — boundary-safe (won't strip partial segments), paths without the prefix pass through unchanged */
|
|
348
|
-
stripPrefix(prefix: string): this;
|
|
349
|
-
wsAdapter(adapter: WSAdapter): this;
|
|
350
|
-
/**
|
|
351
|
-
* Serve this app's OpenAPI document at `${path}.json`, `.yaml` and `.yml` (default
|
|
352
|
-
* `/openapi`), and optionally a docs UI. Each call serves its own document: two calls with
|
|
353
|
-
* different options (say an internal and a public profile) never share a cache. Documents
|
|
354
|
-
* are generated once per route change, serialized once, and sent with an `ETag` and
|
|
355
|
-
* `Cache-Control: no-cache`. Pass `enabled: false` (for example in production) to mount
|
|
356
|
-
* nothing while keeping the call in place.
|
|
357
|
-
*/
|
|
358
|
-
openapi(options: {
|
|
359
|
-
description?: string;
|
|
360
|
-
docs?: "scalar" | "swagger";
|
|
361
|
-
docsPath?: string;
|
|
362
|
-
/** Mount the document and docs routes. Default `true`. */
|
|
363
|
-
enabled?: boolean;
|
|
364
|
-
filterRoutes?: (route: {
|
|
365
|
-
meta: unknown;
|
|
366
|
-
method: string;
|
|
367
|
-
path: string;
|
|
368
|
-
}) => boolean;
|
|
369
|
-
path?: string;
|
|
370
|
-
/** Named metaSpec profile selecting which emitted keys this document carries */
|
|
371
|
-
profile?: string;
|
|
372
|
-
securitySchemes?: Record<string, unknown>;
|
|
373
|
-
title: string;
|
|
374
|
-
version: string;
|
|
375
|
-
}): this;
|
|
376
|
-
/**
|
|
377
|
-
* Serve the route manifest at `path` (default `/manifest.json`), filtered by the same
|
|
378
|
-
* visibility policy as the OpenAPI document. Cached per route change, sent with an `ETag`.
|
|
379
|
-
* `enabled: false` mounts nothing.
|
|
380
|
-
*/
|
|
381
|
-
manifest(options?: {
|
|
382
|
-
enabled?: boolean;
|
|
383
|
-
path?: string;
|
|
384
|
-
}): this;
|
|
385
|
-
/** Mount a served document; a path another route or an earlier call owns is an error. */
|
|
386
|
-
private _mountArtifact;
|
|
387
|
-
serve(options?: HoneyServeOptions): Promise<ServeHandle>;
|
|
388
|
-
/**
|
|
389
|
-
* Mount an internal GET (spec, docs, manifest). Reports who owns the path when it cannot:
|
|
390
|
-
* a user route (`"user"`) or an earlier internal mount (`"internal"`). Only an exact leaf
|
|
391
|
-
* counts: a `/:slug` or `/*rest` route does not block a static internal path, which wins
|
|
392
|
-
* over it on precedence, with backtracking, in both the runtime and a loaded tree.
|
|
393
|
-
*/
|
|
394
|
-
private _mountInternalGet;
|
|
395
|
-
private _bumpEpoch;
|
|
396
|
-
/** Place `id` at every leaf of `segments`, copying a shared (loaded) root first. */
|
|
397
|
-
private _placeLeaves;
|
|
398
|
-
/**
|
|
399
|
-
* @internal — register one route record. Over a loaded tree the record binds to the leaf
|
|
400
|
-
* the tree already holds for its id; a root wildcard the tree lacks becomes the gateway
|
|
401
|
-
* catch-all; any other unknown route marks the tree as stale (reported at finalize).
|
|
402
|
-
*/
|
|
403
|
-
_addRoute(method: string, segments: readonly Segment[], record: RouteHandler): void;
|
|
404
|
-
/** @internal — register one websocket (or realtime) route record. */
|
|
405
|
-
_addWsRoute(segments: readonly Segment[], record: WSRouteHandler): void;
|
|
406
|
-
/**
|
|
407
|
-
* Resolve what this graph serves: registered records, live records carried by a loaded
|
|
408
|
-
* snapshot, and delegated leaves the gateway catch-all serves. Then resolve every record —
|
|
409
|
-
* its full chain (`chain → scoped → route → input validation`), error keys, meta and error
|
|
410
|
-
* factory — and compile it once. Re-runs whenever the graph's epoch moved. Throws, naming
|
|
411
|
-
* every route, when a loaded tree and the registered routes disagree (the generated file is
|
|
412
|
-
* stale), and when a `use(mw)` handle or a route builder was left unused (the middleware or
|
|
413
|
-
* route would silently be missing).
|
|
414
|
-
*/
|
|
415
|
-
_finalize(): FinalTable;
|
|
416
|
-
/** `use(mw)` handles that never registered, mounted or served, and builders without `.handler()`. */
|
|
417
|
-
private _assertNothingDiscarded;
|
|
418
|
-
/**
|
|
419
|
-
* Resolve a record against this graph: chain = captured chain, the scopes that cover its
|
|
420
|
-
* pattern (behind a request-path check where only some of its paths are inside), then its
|
|
421
|
-
* route middleware. Error keys and contributed meta come from that chain, in run order.
|
|
422
|
-
* The error factory, default errors and boundary come from the app the route was
|
|
423
|
-
* registered on when that app has a factory, else from this one.
|
|
424
|
-
*/
|
|
425
|
-
private _resolve;
|
|
426
|
-
/** Wrap each middleware for `telemetry.onMiddleware`, once per finalize. */
|
|
427
|
-
private _timed;
|
|
428
|
-
private _planRoute;
|
|
429
|
-
private _planWs;
|
|
430
|
-
/**
|
|
431
|
-
* 404 and 405 run through the same pipeline as a route: the middleware every route of this
|
|
432
|
-
* graph starts with (with no routes: every handle that served a request), then every scope
|
|
433
|
-
* (behind its request-path check), then the 404/405 answer. So a logger or CORS policy on the whole app also covers unknown paths, and a
|
|
434
|
-
* scope's guard answers before "not found" leaks what exists under it.
|
|
435
|
-
*/
|
|
436
|
-
private _planMiss;
|
|
437
|
-
/**
|
|
438
|
-
* @internal — every served route as one entry per leaf (an optional param yields two
|
|
439
|
-
* paths), in tree order. Codegen and OpenAPI read routes through this.
|
|
440
|
-
*/
|
|
441
|
-
_collectRoutes(includeSkipped?: boolean): Array<{
|
|
442
|
-
handler: RouteHandler;
|
|
443
|
-
method: string;
|
|
444
|
-
path: string;
|
|
445
|
-
}>;
|
|
446
|
-
/** @internal — websocket routes, one entry per leaf. */
|
|
447
|
-
_collectWsRoutes(): Array<{
|
|
448
|
-
handler: WSRouteHandler;
|
|
449
|
-
path: string;
|
|
450
|
-
}>;
|
|
451
|
-
/** @internal — the route-graph epoch; served documents cache against it. */
|
|
452
|
-
get _epoch(): number;
|
|
453
|
-
defaultErrorFormatter<TSchema extends StandardSchemaLike>(schema: TSchema, fn: (error: HoneyError) => InferOutput<TSchema>): this;
|
|
454
|
-
defaultErrorFormatter(fn: ErrorFormatterFn): this;
|
|
455
|
-
customErrorFormatter<TSchema extends StandardSchemaLike>(schema: TSchema, fn: (error: HoneyError, data: Record<string, unknown>) => InferOutput<TSchema>): this;
|
|
456
|
-
customErrorFormatter(fn: CustomErrorFormatter): this;
|
|
457
|
-
errorI18n(config: ErrorI18nConfig<TEnv>): this;
|
|
458
|
-
onError(handler: OnErrorFn<TEnv>): this;
|
|
459
|
-
onMethodNotAllowed(handler: OnMethodNotAllowedFn<TEnv>): this;
|
|
460
|
-
onNotFound(handler: OnNotFoundFn<TEnv>): this;
|
|
461
|
-
/** Register a tap handler keyed by name — fires after successful handler response */
|
|
462
|
-
tap<K extends string>(key: K, handler: (ctx: TapContext<TEnv>, payload: K extends keyof TTaps ? TTaps[K] : unknown) => void | Promise<void>): this;
|
|
463
|
-
telemetry(adapter: TelemetryAdapter): this;
|
|
464
|
-
/**
|
|
465
|
-
* Load a route tree — a generated `routes.gen.ts`, an `app.toRouteTree()` snapshot, or a
|
|
466
|
-
* `mergeTree()` of either. The tree supplies the router topology; what each route runs
|
|
467
|
-
* comes from the routes this app registers afterwards (bound by `RouteId`), from live
|
|
468
|
-
* records in a snapshot, or — for leaves with neither — from a root wildcard the app
|
|
469
|
-
* registers as its gateway catch-all. Must be called before any route is registered.
|
|
470
|
-
*/
|
|
471
|
-
routeTree(tree: RouteTree): this;
|
|
472
|
-
/**
|
|
473
|
-
* Snapshot this app's routes as a tree: a copy of the topology plus, per route, its data
|
|
474
|
-
* and its live record. Internal routes (spec, docs, manifest) are left out. Loading the
|
|
475
|
-
* snapshot into another app serves these records; nothing in it is shared with this app.
|
|
476
|
-
* Each record keeps this app's settings (error factory, defaults, boundary) and context
|
|
477
|
-
* values, and carries the scoped middleware that covers it here as part of its chain —
|
|
478
|
-
* scopes themselves do not travel in a tree.
|
|
479
|
-
*/
|
|
480
|
-
toRouteTree(): RouteTree;
|
|
481
|
-
/** A resolved record as a standalone source: its resolved chain minus route middleware becomes its chain. */
|
|
482
|
-
private _bake;
|
|
483
|
-
/**
|
|
484
|
-
* @internal — generate-time: copy input/output schemas from `source` onto this app's
|
|
485
|
-
* routes that lack them (a gateway serves its generated tree, which carries none).
|
|
486
|
-
*/
|
|
487
|
-
_overlaySchemas(source: RouteTree): void;
|
|
488
|
-
/**
|
|
489
|
-
* @internal — generate-time: the route tree a gateway serves. `source` is the merged
|
|
490
|
-
* downstream tree (`codegen.mergeTree`); the gateway's own registered routes join it as
|
|
491
|
-
* ordinary leaves, while its root wildcards stay out of the tree — they are the catch-all
|
|
492
|
-
* the downstream leaves delegate to. An own route that is also a downstream route, or
|
|
493
|
-
* whose topology conflicts with one, throws here instead of at request time. The app is
|
|
494
|
-
* rebound to the result, so codegen that runs next (OpenAPI, manifest) sees what it serves.
|
|
495
|
-
*/
|
|
496
|
-
_gatewayTree(source: RouteTree): RouteTree;
|
|
497
|
-
/** @internal — drop the loaded tree and route by the registered routes alone. */
|
|
498
|
-
_unloadTree(): void;
|
|
499
|
-
/** @internal — swap the loaded tree, re-binding every registered route to it. */
|
|
500
|
-
_replaceLoadedTree(tree: RouteTree): void;
|
|
501
|
-
/**
|
|
502
|
-
* Set the app's error factory. Like every app setting it applies to every handle of this
|
|
503
|
-
* app, whenever it is called; routes mounted from another app keep that app's factory.
|
|
504
|
-
*/
|
|
505
|
-
errorFactory<TFactory extends Record<string, (...args: never[]) => unknown>>(factory: TFactory): Honey<TEnv, TCtx, TRoutes, TMeta, TFactory, TDefaultErrors, TBasePath, TTaps, TScopedMw>;
|
|
506
|
-
/** Error keys every route of this app declares — applies to routes registered before and after the call. */
|
|
507
|
-
defaultErrors<TKeys extends ([TErrorFactory] extends [never] ? never : keyof TErrorFactory & string)>(...keys: TKeys[]): Honey<TEnv, TCtx, TRoutes, TMeta, TErrorFactory, TDefaultErrors | TKeys, TBasePath, TTaps, TScopedMw>;
|
|
508
|
-
defaultBoundary<TKey extends ([TErrorFactory] extends [never] ? never : keyof TErrorFactory & string)>(key: TKey): Honey<TEnv, TCtx, TRoutes, TMeta, TErrorFactory, TDefaultErrors | TKey, TBasePath, TTaps, TScopedMw>;
|
|
509
|
-
/** Phantom overload — constrains what route-level .meta() accepts */
|
|
510
|
-
meta<TNewMeta extends Record<string, unknown>>(): Honey<TEnv, TCtx, TRoutes, TNewMeta, TErrorFactory, TDefaultErrors, TBasePath, TTaps, TScopedMw>;
|
|
511
|
-
/** Typed chain-level default meta — constrains route meta and sets runtime defaults in one call */
|
|
512
|
-
meta<TNewMeta extends Record<string, unknown>, TValues extends Partial<DefaultMeta> & Partial<TNewMeta>>(values: TValues): Honey<TEnv, TCtx, TRoutes, TNewMeta, TErrorFactory, TDefaultErrors, TBasePath, TTaps, TScopedMw>;
|
|
513
|
-
/** Chain-level default meta — merged into every route registered on this chain */
|
|
514
|
-
meta<TValues extends Partial<DefaultMeta> & ([TMeta] extends [never] ? {} : Partial<TMeta>)>(values: TValues): Honey<TEnv, TCtx, TRoutes, TMeta, TErrorFactory, TDefaultErrors, TBasePath, TTaps, TScopedMw>;
|
|
515
|
-
/**
|
|
516
|
-
* Declare what flows from route meta and route schemas into the OpenAPI document.
|
|
517
|
-
* Codegen-time only — never consulted on the request path. See docs/meta-spec.md.
|
|
518
|
-
*/
|
|
519
|
-
metaSpec<TSpec extends HoneyMetaSpec<TMeta>>(spec: TSpec): this;
|
|
520
|
-
/** Declare tap payload types — auto-extends meta with Partial<T> for meta-driven taps */
|
|
521
|
-
taps<TNewTaps extends Record<string, unknown>>(): Honey<TEnv, Omit<TCtx, "tap"> & {
|
|
522
|
-
tap<K extends keyof TNewTaps>(key: K, payload: TNewTaps[K]): void;
|
|
523
|
-
}, TRoutes, [
|
|
524
|
-
TMeta
|
|
525
|
-
] extends [never] ? Partial<TNewTaps> : TMeta & Partial<TNewTaps>, TErrorFactory, TDefaultErrors, TBasePath, TNewTaps, TScopedMw>;
|
|
526
|
-
use<TAdds>(mw: MiddlewareFn<TCtx, TAdds>): Honey<TEnv, TCtx & TAdds, TRoutes, TMeta, TErrorFactory, TDefaultErrors, TBasePath, TTaps, TScopedMw>;
|
|
527
|
-
use<const TPath extends string, TAdds>(path: TPath, mw: MiddlewareFn<TCtx, TAdds>): Honey<TEnv, TCtx, TRoutes, TMeta, TErrorFactory, TDefaultErrors, TBasePath, TTaps, readonly [...TScopedMw, {
|
|
528
|
-
readonly path: MergePath<TBasePath, TPath>;
|
|
529
|
-
readonly adds: TAdds;
|
|
530
|
-
}]>;
|
|
531
|
-
/**
|
|
532
|
-
* Mount a sub-app: its routes are served under this handle's basePath (and under `prefix`
|
|
533
|
-
* when given — `app.route("/v1", sub)` is `app.basePath("/v1").route(sub)`), and this
|
|
534
|
-
* handle's chain runs before theirs. The sub's own basePath stays part of each path.
|
|
535
|
-
*/
|
|
536
|
-
route<TSubRoutes, TSubMeta, TSubErrorFactory, TSubDefaultErrors extends string, TSubBasePath extends string>(sub: Honey<TEnv, TCtx, TSubRoutes, TSubMeta, TSubErrorFactory, TSubDefaultErrors, TSubBasePath>): Honey<TEnv, TCtx, TRoutes & PrefixRoutes<TBasePath, TSubRoutes>, TMeta, TErrorFactory, TDefaultErrors, TBasePath, TTaps, TScopedMw>;
|
|
537
|
-
route<const TPrefix extends string, TSubRoutes, TSubMeta, TSubErrorFactory, TSubDefaultErrors extends string, TSubBasePath extends string>(prefix: TPrefix, sub: Honey<TEnv, TCtx, TSubRoutes, TSubMeta, TSubErrorFactory, TSubDefaultErrors, TSubBasePath>): Honey<TEnv, TCtx, TRoutes & PrefixRoutes<MergePath<TBasePath, TPrefix>, TSubRoutes>, TMeta, TErrorFactory, TDefaultErrors, TBasePath, TTaps, TScopedMw>;
|
|
538
|
-
private _mount;
|
|
539
|
-
private _setBus;
|
|
540
|
-
private _registerRoute;
|
|
541
|
-
/** @internal — set (or clear, with null) one app-wide middleware; used by `serve()` */
|
|
542
|
-
_setGlobal(key: string, mw: RuntimeMiddleware | null): void;
|
|
543
|
-
/** @internal — what a route registered through this handle captures */
|
|
544
|
-
_view(): {
|
|
545
|
-
chain: RuntimeMiddleware[];
|
|
546
|
-
cv: Record<string, unknown> | null;
|
|
547
|
-
own: AppSettings<unknown>;
|
|
548
|
-
};
|
|
549
|
-
/** @internal — a builder got its handler (or was abandoned on purpose) */
|
|
550
|
-
_settle(pending: PendingRoute): void;
|
|
551
|
-
on<const TPath extends string, const TMethods extends readonly [HttpMethod | "ALL", ...(HttpMethod | "ALL")[]]>(methods: TMethods, path: TPath): BuilderChain<TEnv, TCtx & ApplyScoped<TScopedMw, MergePath<TBasePath, TPath>>, {}, never, {}, MergePath<TBasePath, TPath>, TMethods[number], TRoutes, never, TCtx, TMeta, InitAccMeta<TMeta>, TErrorFactory, TDefaultErrors, TBasePath, TTaps, TScopedMw>;
|
|
552
|
-
all<const TPath extends string>(path: TPath): BuilderChain<TEnv, TCtx & ApplyScoped<TScopedMw, MergePath<TBasePath, TPath>>, {}, never, {}, MergePath<TBasePath, TPath>, "ALL", TRoutes, never, TCtx, TMeta, InitAccMeta<TMeta>, TErrorFactory, TDefaultErrors, TBasePath, TTaps, TScopedMw>;
|
|
553
|
-
delete<const TPath extends string>(path: TPath): BuilderChain<TEnv, TCtx & ApplyScoped<TScopedMw, MergePath<TBasePath, TPath>>, {}, never, {}, MergePath<TBasePath, TPath>, "DELETE", TRoutes, never, TCtx, TMeta, InitAccMeta<TMeta>, TErrorFactory, TDefaultErrors, TBasePath, TTaps, TScopedMw>;
|
|
554
|
-
get<const TPath extends string>(path: TPath): BuilderChain<TEnv, TCtx & ApplyScoped<TScopedMw, MergePath<TBasePath, TPath>>, {}, never, {}, MergePath<TBasePath, TPath>, "GET", TRoutes, never, TCtx, TMeta, InitAccMeta<TMeta>, TErrorFactory, TDefaultErrors, TBasePath, TTaps, TScopedMw>;
|
|
555
|
-
head<const TPath extends string>(path: TPath): BuilderChain<TEnv, TCtx & ApplyScoped<TScopedMw, MergePath<TBasePath, TPath>>, {}, never, {}, MergePath<TBasePath, TPath>, "HEAD", TRoutes, never, TCtx, TMeta, InitAccMeta<TMeta>, TErrorFactory, TDefaultErrors, TBasePath, TTaps, TScopedMw>;
|
|
556
|
-
options<const TPath extends string>(path: TPath): BuilderChain<TEnv, TCtx & ApplyScoped<TScopedMw, MergePath<TBasePath, TPath>>, {}, never, {}, MergePath<TBasePath, TPath>, "OPTIONS", TRoutes, never, TCtx, TMeta, InitAccMeta<TMeta>, TErrorFactory, TDefaultErrors, TBasePath, TTaps, TScopedMw>;
|
|
557
|
-
patch<const TPath extends string>(path: TPath): BuilderChain<TEnv, TCtx & ApplyScoped<TScopedMw, MergePath<TBasePath, TPath>>, {}, never, {}, MergePath<TBasePath, TPath>, "PATCH", TRoutes, never, TCtx, TMeta, InitAccMeta<TMeta>, TErrorFactory, TDefaultErrors, TBasePath, TTaps, TScopedMw>;
|
|
558
|
-
post<const TPath extends string>(path: TPath): BuilderChain<TEnv, TCtx & ApplyScoped<TScopedMw, MergePath<TBasePath, TPath>>, {}, never, {}, MergePath<TBasePath, TPath>, "POST", TRoutes, never, TCtx, TMeta, InitAccMeta<TMeta>, TErrorFactory, TDefaultErrors, TBasePath, TTaps, TScopedMw>;
|
|
559
|
-
put<const TPath extends string>(path: TPath): BuilderChain<TEnv, TCtx & ApplyScoped<TScopedMw, MergePath<TBasePath, TPath>>, {}, never, {}, MergePath<TBasePath, TPath>, "PUT", TRoutes, never, TCtx, TMeta, InitAccMeta<TMeta>, TErrorFactory, TDefaultErrors, TBasePath, TTaps, TScopedMw>;
|
|
560
|
-
ws<const TPath extends string>(path: TPath): WSRouteBuilder<TEnv, TCtx & ApplyScoped<TScopedMw, MergePath<TBasePath, TPath>>, {}, never, Honey<TEnv, TCtx, TRoutes, TMeta, TErrorFactory, TDefaultErrors, TBasePath, TTaps, TScopedMw>>;
|
|
561
|
-
realtime<const TPath extends string>(path: TPath, opts: RealtimeRouteOpts<TCtx & ApplyScoped<TScopedMw, MergePath<TBasePath, TPath>>>): this;
|
|
562
|
-
/**
|
|
563
|
-
* Deno must call `Deno.upgradeWebSocket` in the same turn as the serve
|
|
564
|
-
* callback. When the adapter implements `preUpgrade`, we do that here
|
|
565
|
-
* and return the 101 response before any middleware Promise.
|
|
566
|
-
*/
|
|
567
|
-
fetch(request: Request, env: TEnv, executionCtx?: {
|
|
568
|
-
waitUntil?: (p: Promise<unknown>) => void;
|
|
569
|
-
}): Response | Promise<Response>;
|
|
570
|
-
/** @internal 400 for a request path the normalization policy rejects (see `normalizePath`), or an invalid `Host`. */
|
|
571
|
-
_badRequestTarget(): Response;
|
|
572
|
-
private trailingSlashRedirects;
|
|
573
|
-
private pathAfterPrefix;
|
|
574
|
-
private _doFetch;
|
|
575
|
-
private _route;
|
|
576
|
-
private _matchWs;
|
|
577
|
-
private _dispatchRecord;
|
|
578
|
-
private _makeErrorCtx;
|
|
579
|
-
/** A request context for `plan`: route data, context values, `ctx.errors`, `ctx.realtime`. */
|
|
580
|
-
private _newCtx;
|
|
581
|
-
private _handleWs;
|
|
582
|
-
/** Reject a cross-origin upgrade the route's origin policy does not allow (403). */
|
|
583
|
-
/** The websocket session runtime; a cross-origin upgrade the route does not allow is a 403. */
|
|
584
|
-
private _wsSession;
|
|
585
|
-
private _wsUpgrade;
|
|
586
|
-
/** Terminal of a realtime route's chain: identify, upgrade, and attach the connection to the bus. */
|
|
587
|
-
private _realtimeUpgrade;
|
|
588
|
-
/**
|
|
589
|
-
* 404 (`allowed === null`) and 405: one pipeline with a synthetic record — full context,
|
|
590
|
-
* the app-wide middleware and the scopes covering the path run once, telemetry fires once.
|
|
591
|
-
*/
|
|
592
|
-
private _handleMiss;
|
|
593
|
-
/** Fire `onResponse` once for the request's one exit and return. A dispatch that rejects
|
|
594
|
-
* (an adapter failure past every error boundary) still ends the request: it reports 500. */
|
|
595
|
-
private _withOnResponse;
|
|
596
|
-
private _make404;
|
|
597
|
-
private _make405;
|
|
598
|
-
/**
|
|
599
|
-
* CORS preflight for a path that has no OPTIONS route: run the chain of the route the
|
|
600
|
-
* preflight asks about (`Access-Control-Request-Method`) — chain, scoped and route
|
|
601
|
-
* middleware, never input validation or the handler. Middleware that answers the
|
|
602
|
-
* preflight (cors) short-circuits; otherwise the answer is the 405 with `Allow`.
|
|
603
|
-
*/
|
|
604
|
-
private _handlePreflight;
|
|
605
|
-
private _handleMatched;
|
|
606
|
-
/** Output validation, inside the chain: an invalid body becomes an error response the middleware sees. */
|
|
607
|
-
private _validateOutput;
|
|
608
|
-
private _finishMatched;
|
|
609
|
-
}
|
|
610
1
|
/**
|
|
611
|
-
*
|
|
612
|
-
*
|
|
613
|
-
* Narrowed methods return TypedResponse<CT, K> for compile-time CT+SK safety.
|
|
2
|
+
* `@lovrozagar/honey`: the app (`honey()`), its context, errors, middleware and responses, the tree merge, and the
|
|
3
|
+
* types an app is read through. Everything optional is its own subpath; nothing here registers itself (H23).
|
|
614
4
|
*/
|
|
615
|
-
|
|
616
|
-
type
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
}
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
};
|
|
627
|
-
|
|
628
|
-
type
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
};
|
|
639
|
-
|
|
640
|
-
export type
|
|
641
|
-
|
|
642
|
-
type
|
|
643
|
-
readonly path: string;
|
|
644
|
-
readonly adds: unknown;
|
|
645
|
-
};
|
|
646
|
-
/**
|
|
647
|
-
* Walk TScopedMw tuple, intersect `adds` for every entry whose `path` is a prefix of TFullPath.
|
|
648
|
-
* Prefix semantics: TFullPath extends `${P}` (exact) | `${P}/${string}` (descendant).
|
|
649
|
-
*
|
|
650
|
-
* Non-literal-path guard: if Head["path"] is the base `string` type (happens when
|
|
651
|
-
* the user passes a widened variable), skip the entry via `string extends Head["path"] ? {}`.
|
|
652
|
-
* This prevents the always-true `'/anywhere' extends string` from polluting every route.
|
|
653
|
-
*/
|
|
654
|
-
type ApplyScoped<TScopedMw extends readonly ScopedMwEntry[], TFullPath extends string> = TScopedMw extends readonly [
|
|
655
|
-
infer Head extends ScopedMwEntry,
|
|
656
|
-
...infer Rest extends readonly ScopedMwEntry[]
|
|
657
|
-
] ? (string extends Head["path"] ? {} : TFullPath extends Head["path"] ? Head["adds"] : TFullPath extends `${Head["path"] & string}/${string}` ? Head["adds"] : {}) & ApplyScoped<Rest, TFullPath> : {};
|
|
658
|
-
/** Apply typed params — override params with specific keys when route has :param segments */
|
|
659
|
-
type ApplyParams<TCtx, TParams> = [keyof TParams] extends [string] ? string extends keyof TParams ? TCtx : TCtx & {
|
|
660
|
-
readonly params: TParams;
|
|
661
|
-
} : TCtx;
|
|
662
|
-
/** Typed tap method — constrained to registered tap keys when TTaps is non-empty */
|
|
663
|
-
type TypedTap<TTaps extends Record<string, unknown>> = [keyof TTaps] extends [never] ? {
|
|
664
|
-
tap(key: string, payload: unknown): void;
|
|
665
|
-
} : {
|
|
666
|
-
tap<K extends string & keyof TTaps>(key: K, payload: TTaps[K]): void;
|
|
667
|
-
};
|
|
668
|
-
/** Build the full handler context: base ctx + params + input + meta + errors + taps + output-constrained methods */
|
|
669
|
-
type HandlerCtx<TCtx, TInput, TOutput, TParams, TAccMeta = {}, TErrorFactory = never, TErrorKeys extends string = never, TPath extends string = string, TTaps extends Record<string, unknown> = {}> = ApplyOutput<ApplyParams<[keyof TInput] extends [never] ? TCtx : TCtx & {
|
|
670
|
-
input: TInput;
|
|
671
|
-
}, TParams> & {
|
|
672
|
-
readonly meta: Readonly<Omit<TAccMeta, "openApi">>;
|
|
673
|
-
readonly routePattern: TPath;
|
|
674
|
-
} & ([TErrorFactory] extends [never] ? {} : [TErrorKeys] extends [never] ? {
|
|
675
|
-
readonly errors: TErrorFactory;
|
|
676
|
-
} : {
|
|
677
|
-
readonly errors: Pick<TErrorFactory, TErrorKeys & keyof TErrorFactory>;
|
|
678
|
-
}) & TypedTap<TTaps>, TOutput>;
|
|
679
|
-
type RouteBuilderState<TParent> = {
|
|
680
|
-
boundaryErrorKey: string | null;
|
|
681
|
-
/** keys the route declares itself (`.errors()`, `.boundary()`) */
|
|
682
|
-
errorKeys: Set<string>;
|
|
683
|
-
extraMethods: (HttpMethod | "ALL")[] | null;
|
|
684
|
-
inputSchemas: InputSchemasDef | null;
|
|
685
|
-
/** explicit meta — chain `.meta()` overlaid by route `.meta()` */
|
|
686
|
-
meta: Record<string, unknown> | null;
|
|
687
|
-
method: HttpMethod | "ALL";
|
|
688
|
-
/** route-level middleware */
|
|
689
|
-
middlewares: RuntimeMiddleware[];
|
|
690
|
-
outputSchemas: OutputSchemaDef | null;
|
|
691
|
-
parent: TParent;
|
|
692
|
-
/** canonical full pattern */
|
|
693
|
-
path: string;
|
|
694
|
-
/** reported at finalize until `.handler()` runs */
|
|
695
|
-
pending: PendingRoute;
|
|
696
|
-
};
|
|
697
|
-
/** Honey.TMeta defaults to never; never & X is never, so start acc meta at {}. */
|
|
698
|
-
type InitAccMeta<TMeta> = [TMeta] extends [never] ? {} : TMeta;
|
|
699
|
-
/** Skip $routes merge only for a real `{ internal: true }` meta — not for `never`. */
|
|
700
|
-
type SkipRouteRecord<TAccMeta> = [TAccMeta] extends [never] ? false : [TAccMeta] extends [{
|
|
701
|
-
internal: true;
|
|
702
|
-
}] ? true : false;
|
|
703
|
-
/** Return type for handler() — extracted to avoid 3x duplication */
|
|
704
|
-
type HandlerReturn<TEnv, TBaseCtx, TRoutes, TPath extends string, TMethod extends string, TInput, TOutput, TCtx, TAccMeta, TErrorFactory, _TErrorKeys extends string, TDefaultErrors extends string, TMeta, TBasePath extends string = "/", TTaps extends Record<string, unknown> = {}, TScopedMw extends readonly ScopedMwEntry[] = []> = Honey<TEnv, TBaseCtx, SkipRouteRecord<TAccMeta> extends true ? TRoutes : MergeRoute<TRoutes, TPath, TMethod, TInput, TOutput, HandlerCtx<TCtx, TInput, TOutput, ParamsFromPath<TPath>, TAccMeta, TErrorFactory, _TErrorKeys | TDefaultErrors, TPath, TTaps>, TAccMeta, _TErrorKeys | TDefaultErrors, ComputeErrorsByStatus<TErrorFactory, _TErrorKeys | TDefaultErrors, typeof ERROR_META>>, TMeta, TErrorFactory, TDefaultErrors, TBasePath, TTaps, TScopedMw>;
|
|
705
|
-
type OneShotKey = "boundary" | "errors" | "input" | "meta" | "output";
|
|
706
|
-
type BuilderChain<TEnv, TCtx, TInput, TErrorKeys extends string, TOutput, TPath extends string, TMethod extends string, TRoutes, TUsed extends string, TBaseCtx, TMeta, TAccMeta, TErrorFactory, TDefaultErrors extends string, TBasePath extends string, TTaps extends Record<string, unknown> = {}, TScopedMw extends readonly ScopedMwEntry[] = []> = Omit<RouteBuilder<TEnv, TCtx, TInput, TErrorKeys, TOutput, TPath, TMethod, TRoutes, TUsed, TBaseCtx, TMeta, TAccMeta, TErrorFactory, TDefaultErrors, TBasePath, TTaps, TScopedMw>, TUsed & OneShotKey>;
|
|
707
|
-
declare class RouteBuilder<TEnv, TCtx, TInput = {}, _TErrorKeys extends string = never, TOutput = {}, TPath extends string = string, TMethod extends string = string, TRoutes = {}, TUsed extends string = never, TBaseCtx = TCtx, TMeta = never, TAccMeta = {}, TErrorFactory = never, TDefaultErrors extends string = never, TBasePath extends string = "/", TTaps extends Record<string, unknown> = {}, TScopedMw extends readonly ScopedMwEntry[] = []> {
|
|
708
|
-
private _s;
|
|
709
|
-
constructor(state: RouteBuilderState<Honey<TEnv, TBaseCtx, TRoutes, TMeta, TErrorFactory, TDefaultErrors, TBasePath, TTaps, TScopedMw>>);
|
|
710
|
-
errors<TFactory extends Record<string, (...args: never[]) => unknown>, TKeys extends Exclude<keyof TFactory & string, TDefaultErrors>>(factory: TFactory, ...keys: TKeys[]): BuilderChain<TEnv, TCtx, TInput, _TErrorKeys | TKeys, TOutput, TPath, TMethod, TRoutes, TUsed | "errors", TBaseCtx, TMeta, TAccMeta, TErrorFactory, TDefaultErrors, TBasePath, TTaps, TScopedMw>;
|
|
711
|
-
errors<TKeys extends ([TErrorFactory] extends [never] ? never : Exclude<keyof TErrorFactory & string, TDefaultErrors>)>(...keys: TKeys[]): BuilderChain<TEnv, TCtx, TInput, _TErrorKeys | TKeys, TOutput, TPath, TMethod, TRoutes, TUsed | "errors", TBaseCtx, TMeta, TAccMeta, TErrorFactory, TDefaultErrors, TBasePath, TTaps, TScopedMw>;
|
|
712
|
-
boundary<TKey extends ([TErrorFactory] extends [never] ? never : Exclude<keyof TErrorFactory & string, TDefaultErrors>)>(key: TKey): BuilderChain<TEnv, TCtx, TInput, _TErrorKeys | TKey, TOutput, TPath, TMethod, TRoutes, TUsed | "boundary", TBaseCtx, TMeta, TAccMeta, TErrorFactory, TDefaultErrors, TBasePath, TTaps, TScopedMw>;
|
|
713
|
-
handler(fn: (ctx: HandlerCtx<TCtx, TInput, TOutput, ParamsFromPath<TPath>, TAccMeta, TErrorFactory, _TErrorKeys | TDefaultErrors, TPath, TTaps>) => TypedResponse | Promise<TypedResponse>): HandlerReturn<TEnv, TBaseCtx, TRoutes, TPath, TMethod, TInput, TOutput, TCtx, TAccMeta, TErrorFactory, _TErrorKeys, TDefaultErrors, TMeta, TBasePath, TTaps, TScopedMw>;
|
|
714
|
-
proxy(config: ProxyConfig<HandlerCtx<TCtx, TInput, TOutput, ParamsFromPath<TPath>, TAccMeta, TErrorFactory, _TErrorKeys | TDefaultErrors, TPath, TTaps>>): HandlerReturn<TEnv, TBaseCtx, TRoutes, TPath, TMethod, TInput, TOutput, TCtx, TAccMeta, TErrorFactory, _TErrorKeys, TDefaultErrors, TMeta, TBasePath, TTaps, TScopedMw>;
|
|
715
|
-
input<TSchemas extends InputSchemasDef>(schemas: TSchemas): BuilderChain<TEnv, TCtx, TInput & InferInputMap<TSchemas>, _TErrorKeys, TOutput, TPath, TMethod, TRoutes, TUsed | "input", TBaseCtx, TMeta, TAccMeta, TErrorFactory, TDefaultErrors, TBasePath, TTaps, TScopedMw>;
|
|
716
|
-
meta<TRouteMeta extends Partial<DefaultMeta> & ([TMeta] extends [never] ? {} : TMeta)>(meta: TRouteMeta): BuilderChain<TEnv, TCtx, TInput, _TErrorKeys, TOutput, TPath, TMethod, TRoutes, TUsed | "meta", TBaseCtx, TMeta, TAccMeta & TRouteMeta, TErrorFactory, TDefaultErrors, TBasePath, TTaps, TScopedMw>;
|
|
717
|
-
output<TOutputSchemas extends OutputSchemaDef>(_schemas: TOutputSchemas): BuilderChain<TEnv, TCtx, TInput, _TErrorKeys, TOutputSchemas, TPath, TMethod, TRoutes, TUsed | "output", TBaseCtx, TMeta, TAccMeta, TErrorFactory, TDefaultErrors, TBasePath, TTaps, TScopedMw>;
|
|
718
|
-
use<TAdds>(mw: MiddlewareFn<TCtx, TAdds>): BuilderChain<TEnv, TCtx & TAdds, TInput, _TErrorKeys, TOutput, TPath, TMethod, TRoutes, TUsed, TBaseCtx, TMeta, TAccMeta, TErrorFactory, TDefaultErrors, TBasePath, TTaps, TScopedMw>;
|
|
719
|
-
}
|
|
720
|
-
type WSRouteBuilderState<TParent> = {
|
|
721
|
-
errorKeys: Set<string>;
|
|
722
|
-
inputSchemas: InputSchemasDef | null;
|
|
723
|
-
origins: WSOriginPolicy | null;
|
|
724
|
-
meta: Record<string, unknown> | null;
|
|
725
|
-
middlewares: RuntimeMiddleware[];
|
|
726
|
-
parent: TParent;
|
|
727
|
-
path: string;
|
|
728
|
-
pending: PendingRoute;
|
|
729
|
-
};
|
|
730
|
-
declare class WSRouteBuilder<TEnv, TCtx, TInput = {}, _TErrorKeys extends string = never, TParent = unknown> {
|
|
731
|
-
private _s;
|
|
732
|
-
constructor(state: WSRouteBuilderState<TParent>);
|
|
733
|
-
errors<TFactory extends Record<string, (...args: never[]) => unknown>>(factory: TFactory, ...keys: Array<keyof TFactory & string>): WSRouteBuilder<TEnv, TCtx, TInput, _TErrorKeys | (keyof TFactory & string), TParent>;
|
|
734
|
-
handler(wsHandler: WSHandler<TCtx>): TParent;
|
|
735
|
-
input<TSchemas extends Pick<InputSchemasDef, "cookies" | "headers" | "search">>(schemas: TSchemas): WSRouteBuilder<TEnv, TCtx, TInput & InferInputMap<TSchemas>, _TErrorKeys, TParent>;
|
|
736
|
-
meta(meta: Record<string, unknown>): this;
|
|
737
|
-
/**
|
|
738
|
-
* Browser origins allowed to open this socket: `"*"`, a list of origins
|
|
739
|
-
* (`https://app.example.com`), or a predicate. Same-origin always passes. Without it, a
|
|
740
|
-
* cross-origin upgrade that carries `Cookie` or `Authorization` gets 403.
|
|
741
|
-
*/
|
|
742
|
-
origins(policy: WSOriginPolicy): WSRouteBuilder<TEnv, TCtx, TInput, _TErrorKeys, TParent>;
|
|
743
|
-
use<TAdds>(mw: MiddlewareFn<TCtx, TAdds>): WSRouteBuilder<TEnv, TCtx & TAdds, TInput, _TErrorKeys, TParent>;
|
|
744
|
-
}
|
|
745
|
-
export declare function honey<TEnv>(): Honey<TEnv>;
|
|
746
|
-
//# sourceMappingURL=index.d.ts.map
|
|
5
|
+
export { toFetchRequest } from "./adapters/fetch-request.ts";
|
|
6
|
+
export type { ServeHandle } from "./adapters/serve.ts";
|
|
7
|
+
export { HoneyContext } from "./context/context.ts";
|
|
8
|
+
export type { CookieOptions } from "./context/cookie.ts";
|
|
9
|
+
export { HoneyError } from "./errors/error.ts";
|
|
10
|
+
export { defineErrors, ERROR_META, type ErrorMetaEntry } from "./errors/errors.ts";
|
|
11
|
+
export { createErrorResponse, type CustomErrorFormatter, type ErrorFormatter } from "./errors/projector.ts";
|
|
12
|
+
export type { InferInputMap } from "./input/input.ts";
|
|
13
|
+
export type { HoneyMetaSpec, MetaSpecConfig, MetaSpecContext, MetaSpecEntry, MetaSpecExpand, MetaSpecMergeConflict, MetaSpecProfile, MetaSpecSchemaEntry, MetaSpecSchemaSearch, MetaSpecSchemaSource, MetaSpecSingle, MetaSpecStrictness, } from "./meta/meta-spec-merge.ts";
|
|
14
|
+
export { createMiddleware, defineMiddleware, type MiddlewareFn } from "./middleware/middleware.ts";
|
|
15
|
+
export type { ProxyConfig } from "./proxy/proxy.ts";
|
|
16
|
+
export type { RealtimeBus } from "./realtime/bus.ts";
|
|
17
|
+
export type { ConnContext, RealtimeLimits } from "./realtime/route.ts";
|
|
18
|
+
export type { RealtimePublisher } from "./realtime/server.ts";
|
|
19
|
+
export { HoneyRes, type ResponseOptions, type TypedResponse } from "./response/response.ts";
|
|
20
|
+
export type { SSEEvent, SSEOptions, SSEStream } from "./response/sse.ts";
|
|
21
|
+
export type { StatusKey } from "./response/status.ts";
|
|
22
|
+
export { Honey, honey } from "./routing/app.ts";
|
|
23
|
+
export type { ComputeErrorsByStatus, DefaultMeta, HoneyCtx, InferBasePath, InferCtx, InferEnv, InferErrorFactory, InferMeta, InferMethods, InferRouteCtx, InferRouteErrors, InferRouteInput, InferRouteMeta, InferRouteMethods, InferRouteOutput, InferRoutePaths, InferRoutes, OpenApiMeta, RouteRecord, } from "./routing/app-types.ts";
|
|
24
|
+
export type { HoneyCodegen, RouteSelectorOf, WithOutput } from "./routing/codegen-types.ts";
|
|
25
|
+
export type { TapContext, TapHandler } from "./routing/tap.ts";
|
|
26
|
+
export { mergeTree } from "./routing/tree-merge.ts";
|
|
27
|
+
export type { MergePath, PrefixRoutes } from "./routing/types.ts";
|
|
28
|
+
export { detectRuntime, type ServeRuntime } from "./runtime/detect-runtime.ts";
|
|
29
|
+
export type { InferOutput, StandardSchemaLike } from "./validation/standard-schema.ts";
|
|
30
|
+
export type { WSAdapter, WSContext, WSHandler } from "./ws/contract.ts";
|
|
31
|
+
export type { WSOriginPolicy } from "./ws/origin.ts";
|
|
32
|
+
export type { WSAdapterOptions } from "./ws/shared.ts";
|