@lovrozagar/honey 0.7.3 → 1.0.0-rc.3
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 +930 -1664
- 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 -746
- package/dist/index.js +12 -2364
- 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 -780
- 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 +175 -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/meta-types.d.ts +34 -0
- package/dist/routing/meta-types.js +5 -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 +136 -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 -197
- 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 -902
- 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 -558
- 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/src/feature-detect.ts
DELETED
|
@@ -1,147 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Detects which optional honey features (`openapi`, `i18n`, `serve`) app code uses, so build
|
|
3
|
-
* tooling can import their entries ahead of the app. A bundle cannot follow the lazy, opaque
|
|
4
|
-
* feature imports honey uses at run time. Not a package export.
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
export type HoneyFeature = "i18n" | "openapi" | "serve"
|
|
8
|
-
|
|
9
|
-
export const FEATURES: readonly HoneyFeature[] = ["i18n", "openapi", "serve"]
|
|
10
|
-
|
|
11
|
-
const FEATURE_ENTRY: Record<HoneyFeature, { enable: string; specifier: string }> = {
|
|
12
|
-
i18n: { enable: "enableI18n", specifier: "@lovrozagar/honey/i18n" },
|
|
13
|
-
openapi: { enable: "enableOpenApi", specifier: "@lovrozagar/honey/openapi" },
|
|
14
|
-
serve: { enable: "enableServe", specifier: "@lovrozagar/honey/serve" },
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
const METHOD_FEATURE: Record<string, HoneyFeature> = {
|
|
18
|
-
errorI18n: "i18n",
|
|
19
|
-
manifest: "openapi",
|
|
20
|
-
openapi: "openapi",
|
|
21
|
-
serve: "serve",
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
/** Globals whose `.serve()` is the runtime's own server, not `Honey.serve()`. */
|
|
25
|
-
const RUNTIME_SERVE_OWNERS = new Set(["Bun", "Deno"])
|
|
26
|
-
|
|
27
|
-
function blank(s: string): string {
|
|
28
|
-
return s.replace(/[^\n]/g, " ")
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* Replaces comments and string, template and regex literal contents with spaces, keeping every
|
|
33
|
-
* newline so offsets and line numbers still line up. A scanner, not a parser; it is only accurate
|
|
34
|
-
* enough to keep `// app.serve(` in a comment from counting as a call.
|
|
35
|
-
*/
|
|
36
|
-
export function stripCommentsAndStrings(code: string): string {
|
|
37
|
-
let out = ""
|
|
38
|
-
let i = 0
|
|
39
|
-
while (i < code.length) {
|
|
40
|
-
const ch = code[i] as string
|
|
41
|
-
const next = code[i + 1]
|
|
42
|
-
if (ch === "/" && next === "/") {
|
|
43
|
-
const end = code.indexOf("\n", i)
|
|
44
|
-
const stop = end === -1 ? code.length : end
|
|
45
|
-
out += blank(code.slice(i, stop))
|
|
46
|
-
i = stop
|
|
47
|
-
} else if (ch === "/" && next === "*") {
|
|
48
|
-
const end = code.indexOf("*/", i + 2)
|
|
49
|
-
const stop = end === -1 ? code.length : end + 2
|
|
50
|
-
out += blank(code.slice(i, stop))
|
|
51
|
-
i = stop
|
|
52
|
-
} else if (ch === '"' || ch === "'" || ch === "`") {
|
|
53
|
-
let j = i + 1
|
|
54
|
-
while (j < code.length && code[j] !== ch) {
|
|
55
|
-
if (code[j] === "\\") j++
|
|
56
|
-
else if (ch !== "`" && code[j] === "\n") break
|
|
57
|
-
j++
|
|
58
|
-
}
|
|
59
|
-
const stop = Math.min(j + 1, code.length)
|
|
60
|
-
out += ch + blank(code.slice(i + 1, stop - 1)) + (stop - 1 > i ? (code[stop - 1] ?? "") : "")
|
|
61
|
-
i = stop
|
|
62
|
-
} else {
|
|
63
|
-
out += ch
|
|
64
|
-
i++
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
return out
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
/** Feature calls in source text, ignoring comments and strings. */
|
|
71
|
-
export function detectFeaturesInSource(code: string): Set<HoneyFeature> {
|
|
72
|
-
const text = stripCommentsAndStrings(code)
|
|
73
|
-
const found = new Set<HoneyFeature>()
|
|
74
|
-
const re = /(\b[A-Za-z_$][\w$]*\s*)?\.\s*(openapi|manifest|errorI18n|serve)\s*\(/g
|
|
75
|
-
for (const m of text.matchAll(re)) {
|
|
76
|
-
const owner = m[1]?.trim()
|
|
77
|
-
const method = m[2] as string
|
|
78
|
-
if (method === "serve" && owner && RUNTIME_SERVE_OWNERS.has(owner)) continue
|
|
79
|
-
found.add(METHOD_FEATURE[method] as HoneyFeature)
|
|
80
|
-
}
|
|
81
|
-
return found
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
type AstNode = { [key: string]: unknown; type: string }
|
|
85
|
-
|
|
86
|
-
function isNode(value: unknown): value is AstNode {
|
|
87
|
-
return value !== null && typeof value === "object" && typeof (value as { type?: unknown }).type === "string"
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
/** Feature calls and import specifiers of an ESTree program. */
|
|
91
|
-
export function scanProgram(program: unknown): { features: Set<HoneyFeature>; imports: string[] } {
|
|
92
|
-
const features = new Set<HoneyFeature>()
|
|
93
|
-
const imports: string[] = []
|
|
94
|
-
const stack: unknown[] = [program]
|
|
95
|
-
while (stack.length > 0) {
|
|
96
|
-
const node = stack.pop()
|
|
97
|
-
if (Array.isArray(node)) {
|
|
98
|
-
stack.push(...node)
|
|
99
|
-
continue
|
|
100
|
-
}
|
|
101
|
-
if (!isNode(node)) continue
|
|
102
|
-
switch (node.type) {
|
|
103
|
-
case "ImportDeclaration":
|
|
104
|
-
case "ExportAllDeclaration":
|
|
105
|
-
case "ExportNamedDeclaration":
|
|
106
|
-
case "ImportExpression": {
|
|
107
|
-
const source = node.source as { type?: string; value?: unknown } | null | undefined
|
|
108
|
-
if (source && typeof source.value === "string") imports.push(source.value)
|
|
109
|
-
break
|
|
110
|
-
}
|
|
111
|
-
case "CallExpression": {
|
|
112
|
-
const callee = node.callee as AstNode | undefined
|
|
113
|
-
if (callee?.type === "MemberExpression" && !callee.computed) {
|
|
114
|
-
const property = callee.property as { name?: unknown }
|
|
115
|
-
const feature = typeof property.name === "string" ? METHOD_FEATURE[property.name] : undefined
|
|
116
|
-
const object = callee.object as { name?: unknown; type?: string }
|
|
117
|
-
const runtimeOwned =
|
|
118
|
-
property.name === "serve" && object.type === "Identifier" && RUNTIME_SERVE_OWNERS.has(String(object.name))
|
|
119
|
-
if (feature && !runtimeOwned) features.add(feature)
|
|
120
|
-
}
|
|
121
|
-
break
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
for (const key in node) {
|
|
125
|
-
if (key === "type" || key === "start" || key === "end" || key === "loc" || key === "range") continue
|
|
126
|
-
const value = node[key]
|
|
127
|
-
if (value !== null && typeof value === "object") stack.push(value)
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
return { features, imports }
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
/** `import { enableX } from "…"; enableX();` for each feature, on one line. */
|
|
134
|
-
export function featurePrelude(features: Iterable<HoneyFeature>): string {
|
|
135
|
-
const parts: string[] = []
|
|
136
|
-
for (const feature of FEATURES) {
|
|
137
|
-
if (![...features].includes(feature)) continue
|
|
138
|
-
const { enable, specifier } = FEATURE_ENTRY[feature]
|
|
139
|
-
parts.push(`import { ${enable} } from ${JSON.stringify(specifier)}; ${enable}();`)
|
|
140
|
-
}
|
|
141
|
-
return parts.join(" ")
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
/** True when `code` already imports the entry for `feature`. */
|
|
145
|
-
export function importsFeatureEntry(code: string, feature: HoneyFeature): boolean {
|
|
146
|
-
return code.includes(FEATURE_ENTRY[feature].specifier)
|
|
147
|
-
}
|
package/src/feature-load.ts
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { getI18nRuntime } from "./i18n-slot.ts"
|
|
2
|
-
import { getOpenApiRuntime } from "./openapi/spec-factory.ts"
|
|
3
|
-
import { getServeRuntime } from "./serve-slot.ts"
|
|
4
|
-
|
|
5
|
-
function isReady(name: "i18n" | "openapi" | "serve"): boolean {
|
|
6
|
-
try {
|
|
7
|
-
if (name === "i18n") getI18nRuntime()
|
|
8
|
-
else if (name === "openapi") getOpenApiRuntime()
|
|
9
|
-
else getServeRuntime()
|
|
10
|
-
return true
|
|
11
|
-
} catch {
|
|
12
|
-
return false
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
/** Opaque so bun/esbuild do not follow unused feature entries into a fetch-only bundle. */
|
|
17
|
-
export async function loadHoneyFeature(name: "i18n" | "openapi" | "serve"): Promise<void> {
|
|
18
|
-
if (isReady(name)) return
|
|
19
|
-
const mod = (await import(["@lovrozagar/honey", name].join("/"))) as Record<string, unknown>
|
|
20
|
-
const enable = { i18n: "enableI18n", openapi: "enableOpenApi", serve: "enableServe" }[name]
|
|
21
|
-
const fn = mod[enable]
|
|
22
|
-
if (typeof fn === "function") fn()
|
|
23
|
-
}
|
package/src/feature-slots.ts
DELETED
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
import type { createProxyHandler } from "./proxy.ts"
|
|
2
|
-
import type { createBus } from "./realtime/bus.ts"
|
|
3
|
-
import type { resolveRealtimeConfig } from "./realtime/route.ts"
|
|
4
|
-
import type { createRealtimePublisher, createRealtimeSession } from "./realtime/server.ts"
|
|
5
|
-
import type { compileTrust } from "./trust.ts"
|
|
6
|
-
import type { originAllowed } from "./ws-origin.ts"
|
|
7
|
-
import type { createWsSession } from "./ws/session.ts"
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* Runtime features a builder method needs but most apps never call. The core imports none of
|
|
11
|
-
* them, so a bundle of an app that does not use them leaves them out; each feature's entry
|
|
12
|
-
* registers itself when imported. A builder method that finds its feature missing throws at
|
|
13
|
-
* registration, naming the import.
|
|
14
|
-
*/
|
|
15
|
-
export type FeatureSlots = {
|
|
16
|
-
proxy: { createProxyHandler: typeof createProxyHandler }
|
|
17
|
-
realtime: {
|
|
18
|
-
createBus: typeof createBus
|
|
19
|
-
createRealtimePublisher: typeof createRealtimePublisher
|
|
20
|
-
createRealtimeSession: typeof createRealtimeSession
|
|
21
|
-
resolveRealtimeConfig: typeof resolveRealtimeConfig
|
|
22
|
-
}
|
|
23
|
-
trust: { compileTrust: typeof compileTrust }
|
|
24
|
-
ws: { createWsSession: typeof createWsSession; originAllowed: typeof originAllowed }
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
export type FeatureName = keyof FeatureSlots
|
|
28
|
-
|
|
29
|
-
const ENTRY: Record<FeatureName, string> = {
|
|
30
|
-
proxy: "@lovrozagar/honey/proxy",
|
|
31
|
-
realtime: "@lovrozagar/honey/realtime",
|
|
32
|
-
trust: "@lovrozagar/honey/trust",
|
|
33
|
-
ws: "@lovrozagar/honey/ws/session",
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
const slots: { [K in FeatureName]?: FeatureSlots[K] } = {}
|
|
37
|
-
|
|
38
|
-
export function registerFeature<K extends FeatureName>(name: K, impl: FeatureSlots[K]): void {
|
|
39
|
-
slots[name] = impl
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
/** Tests only: forget a registered feature. */
|
|
43
|
-
export function resetFeature(name: FeatureName): void {
|
|
44
|
-
delete slots[name]
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
/** The registered feature, or a throw that names the import `caller` needs. */
|
|
48
|
-
export function requireFeature<K extends FeatureName>(name: K, caller: string): FeatureSlots[K] {
|
|
49
|
-
const impl = slots[name]
|
|
50
|
-
if (impl === undefined) {
|
|
51
|
-
throw new Error(`honey: ${caller} requires \`import "${ENTRY[name]}"\` in the app entry.`)
|
|
52
|
-
}
|
|
53
|
-
return impl as FeatureSlots[K]
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
/**
|
|
57
|
-
* The registered feature, importing its entry first when nothing registered it yet. Works where
|
|
58
|
-
* modules load at run time (Node, Bun, Deno from `node_modules`); a bundle cannot follow the
|
|
59
|
-
* opaque specifier, so there the entry must be imported (honey's WebSocket adapters do).
|
|
60
|
-
*/
|
|
61
|
-
export async function loadFeature<K extends FeatureName>(name: K, caller: string): Promise<FeatureSlots[K]> {
|
|
62
|
-
const impl = slots[name]
|
|
63
|
-
if (impl !== undefined) return impl as FeatureSlots[K]
|
|
64
|
-
try {
|
|
65
|
-
await import(/* @vite-ignore */ ENTRY[name])
|
|
66
|
-
} catch {
|
|
67
|
-
/* reported below, naming the import */
|
|
68
|
-
}
|
|
69
|
-
return requireFeature(name, caller)
|
|
70
|
-
}
|
package/src/fetch-request.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/** A Request-shaped object (Honey's Node shim) that can hand over the real Fetch `Request` behind it. */
|
|
2
|
-
export const TO_FETCH_REQUEST = Symbol.for("honey.toFetchRequest")
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* The Fetch `Request` for `req`. On Bun, Deno and Workers that is `req` itself. On Node, `ctx.req`
|
|
6
|
-
* is a lighter view of the incoming message, so `new Request(ctx.req)`, `fetch(ctx.req)` and
|
|
7
|
-
* `ctx.req instanceof Request` need this first; it builds the real Request once, and it then owns
|
|
8
|
-
* the body (read the body through either, not both).
|
|
9
|
-
*/
|
|
10
|
-
export function toFetchRequest(req: Request): Request {
|
|
11
|
-
const own = (req as unknown as { [TO_FETCH_REQUEST]?: () => Request })[TO_FETCH_REQUEST]
|
|
12
|
-
return typeof own === "function" ? own.call(req) : req
|
|
13
|
-
}
|
package/src/gen-process.ts
DELETED
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
/** Runs `honey generate` in a child process. Not a package export. */
|
|
2
|
-
import { spawn } from "node:child_process"
|
|
3
|
-
import { createRequire } from "node:module"
|
|
4
|
-
import { dirname, extname, join } from "node:path"
|
|
5
|
-
import { fileURLToPath, pathToFileURL } from "node:url"
|
|
6
|
-
|
|
7
|
-
const isBun = typeof (globalThis as { Bun?: unknown }).Bun !== "undefined"
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* argv that starts this package's CLI on the current runtime. Bun and a compiled install run the
|
|
11
|
-
* CLI directly. Source under Node (this repository's tests) goes through jiti's loader, with the
|
|
12
|
-
* `honey-source` condition so the app resolves the package to the same source.
|
|
13
|
-
*/
|
|
14
|
-
export function cliInvocation(): string[] {
|
|
15
|
-
const self = fileURLToPath(import.meta.url)
|
|
16
|
-
const ext = extname(self)
|
|
17
|
-
const cli = join(dirname(self), `cli${ext}`)
|
|
18
|
-
if (ext !== ".ts" || isBun) return [process.execPath, cli]
|
|
19
|
-
const jitiDir = dirname(createRequire(import.meta.url).resolve("jiti/package.json"))
|
|
20
|
-
const register = pathToFileURL(join(jitiDir, "lib", "jiti-register.mjs")).href
|
|
21
|
-
return [process.execPath, "--conditions=honey-source", "--import", register, cli]
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* Runs `honey <args>` in `cwd` and resolves when it exits 0. Each run gets a fresh module graph,
|
|
26
|
-
* so edits to any file the app imports are seen, and app side effects die with the child.
|
|
27
|
-
*/
|
|
28
|
-
export function runCli(args: string[], options: { cwd: string; env?: Record<string, string> }): Promise<void> {
|
|
29
|
-
const [cmd, ...pre] = cliInvocation() as [string, ...string[]]
|
|
30
|
-
return new Promise((resolvePromise, reject) => {
|
|
31
|
-
const child = spawn(cmd, [...pre, ...args], {
|
|
32
|
-
cwd: options.cwd,
|
|
33
|
-
env: { ...process.env, ...options.env },
|
|
34
|
-
stdio: ["ignore", "inherit", "inherit"],
|
|
35
|
-
})
|
|
36
|
-
child.on("error", reject)
|
|
37
|
-
child.on("exit", (code, signal) => {
|
|
38
|
-
if (code === 0) resolvePromise()
|
|
39
|
-
else reject(new Error(`honey ${args[0] ?? ""} failed (${signal ?? `exit ${code}`})`))
|
|
40
|
-
})
|
|
41
|
-
})
|
|
42
|
-
}
|
package/src/gen-write.ts
DELETED
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
import { createHash, randomBytes } from "node:crypto"
|
|
2
|
-
import { existsSync, mkdirSync, readdirSync, readFileSync, renameSync, rmdirSync, rmSync, writeFileSync } from "node:fs"
|
|
3
|
-
import { dirname, extname, isAbsolute, join, relative, resolve, sep } from "node:path"
|
|
4
|
-
import { toYaml } from "./yaml.ts"
|
|
5
|
-
|
|
6
|
-
/** Lists what one generator run wrote into an output directory, so the next run can delete leftovers. */
|
|
7
|
-
export const OUTPUT_MANIFEST = ".honey-generated.json"
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* Writes `content` unless the file already holds exactly that. The write goes to a temp file in
|
|
11
|
-
* the same directory and is renamed over the target, so a crash never leaves a truncated file.
|
|
12
|
-
* Returns true when the file was written.
|
|
13
|
-
*/
|
|
14
|
-
export function writeFileIfChanged(filePath: string, content: string): boolean {
|
|
15
|
-
if (existsSync(filePath)) {
|
|
16
|
-
try {
|
|
17
|
-
if (readFileSync(filePath, "utf-8") === content) return false
|
|
18
|
-
} catch {
|
|
19
|
-
/* unreadable — overwrite */
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
mkdirSync(dirname(filePath), { recursive: true })
|
|
23
|
-
const tmp = `${filePath}.${randomBytes(6).toString("hex")}.tmp`
|
|
24
|
-
writeFileSync(tmp, content, "utf-8")
|
|
25
|
-
try {
|
|
26
|
-
renameSync(tmp, filePath)
|
|
27
|
-
} catch (err) {
|
|
28
|
-
rmSync(tmp, { force: true })
|
|
29
|
-
throw err
|
|
30
|
-
}
|
|
31
|
-
return true
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
function checksum(text: string): string {
|
|
35
|
-
return createHash("sha256").update(text).digest("hex").slice(0, 12)
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
/** Source file with a `@generated` header. Compares the full content, not only the header checksum. */
|
|
39
|
-
export function writeGenFile(filePath: string, body: string, generator: string): boolean {
|
|
40
|
-
const normalized = body.replace(/\n*$/, "\n")
|
|
41
|
-
const ext = filePath.endsWith(".d.ts") ? ".d.ts" : extname(filePath)
|
|
42
|
-
const hash = checksum(normalized)
|
|
43
|
-
const header =
|
|
44
|
-
ext === ".sql"
|
|
45
|
-
? `-- @generated by ${generator} — do not edit. checksum: ${hash}`
|
|
46
|
-
: `/* @generated by ${generator} — do not edit. checksum: ${hash} */`
|
|
47
|
-
return writeFileIfChanged(filePath, `${header}\n${normalized}`)
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
/** `x-generated` marker: an extension key, so the document stays valid OpenAPI. */
|
|
51
|
-
function withMarker(data: unknown, generator: string): Record<string, unknown> {
|
|
52
|
-
const hash = checksum(JSON.stringify(data, null, 2))
|
|
53
|
-
return { "x-generated": `${generator} checksum:${hash}`, ...(data as Record<string, unknown>) }
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
export function writeGenJsonFile(filePath: string, data: unknown, generator: string): boolean {
|
|
57
|
-
return writeFileIfChanged(filePath, `${JSON.stringify(withMarker(data, generator), null, 2)}\n`)
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
export function writeGenYamlFile(filePath: string, data: unknown, generator: string): boolean {
|
|
61
|
-
return writeFileIfChanged(filePath, toYaml(withMarker(data, generator)))
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
/**
|
|
65
|
-
* Writes a generated directory (an SDK port, the Go CLI) and deletes the files the previous run
|
|
66
|
-
* wrote that this run no longer produces. Only files listed in the previous manifest are ever
|
|
67
|
-
* deleted, so hand-written files next to generated ones survive. Paths must stay inside `outDir`.
|
|
68
|
-
*/
|
|
69
|
-
export function writeOutputDir(outDir: string, files: Record<string, string>): void {
|
|
70
|
-
const root = resolve(outDir)
|
|
71
|
-
const written = new Set<string>()
|
|
72
|
-
for (const [rel, content] of Object.entries(files)) {
|
|
73
|
-
const abs = resolveInside(root, rel)
|
|
74
|
-
writeFileIfChanged(abs, content)
|
|
75
|
-
written.add(toPosix(relative(root, abs)))
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
for (const stale of readOutputManifest(root)) {
|
|
79
|
-
if (written.has(stale)) continue
|
|
80
|
-
const abs = resolveInside(root, stale)
|
|
81
|
-
rmSync(abs, { force: true })
|
|
82
|
-
removeEmptyParents(dirname(abs), root)
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
const manifest = `${JSON.stringify({ files: [...written].sort(compareCodeUnits) }, null, 2)}\n`
|
|
86
|
-
writeFileIfChanged(join(root, OUTPUT_MANIFEST), manifest)
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
function readOutputManifest(root: string): string[] {
|
|
90
|
-
const path = join(root, OUTPUT_MANIFEST)
|
|
91
|
-
if (!existsSync(path)) return []
|
|
92
|
-
try {
|
|
93
|
-
const parsed = JSON.parse(readFileSync(path, "utf-8")) as { files?: unknown }
|
|
94
|
-
return Array.isArray(parsed.files) ? parsed.files.filter((f): f is string => typeof f === "string") : []
|
|
95
|
-
} catch {
|
|
96
|
-
return []
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
function resolveInside(root: string, rel: string): string {
|
|
101
|
-
const abs = resolve(root, rel)
|
|
102
|
-
if (isAbsolute(rel) || (abs !== root && !abs.startsWith(root + sep))) {
|
|
103
|
-
throw new Error(`generated file path escapes its output directory: ${rel}`)
|
|
104
|
-
}
|
|
105
|
-
if (abs === root) throw new Error(`generated file path is the output directory itself: ${rel}`)
|
|
106
|
-
return abs
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
function removeEmptyParents(dir: string, root: string): void {
|
|
110
|
-
let current = dir
|
|
111
|
-
while (current !== root && current.startsWith(root + sep)) {
|
|
112
|
-
/* a directory the user already deleted counts as removed; keep walking up */
|
|
113
|
-
if (existsSync(current)) {
|
|
114
|
-
if (readdirSync(current).length > 0) return
|
|
115
|
-
rmdirSync(current)
|
|
116
|
-
}
|
|
117
|
-
current = dirname(current)
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
function toPosix(p: string): string {
|
|
122
|
-
return p.split(sep).join("/")
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
function compareCodeUnits(a: string, b: string): number {
|
|
126
|
-
return a < b ? -1 : a > b ? 1 : 0
|
|
127
|
-
}
|
package/src/glob.ts
DELETED
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
import { isAbsolute, relative } from "node:path"
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Glob → RegExp for `watch` patterns, matched against a path relative to the project root.
|
|
5
|
-
* Supports `**` (any number of segments), `*` and `?` (within a segment), `{a,b}` alternation and
|
|
6
|
-
* `[...]` classes (`[!...]` negates). A pattern is anchored at the root, so `src/**` never matches
|
|
7
|
-
* `node_modules/x/src/a.ts`.
|
|
8
|
-
*/
|
|
9
|
-
export function globToRegExp(pattern: string): RegExp {
|
|
10
|
-
const normalized = pattern.replaceAll("\\", "/").replace(/^(\.\/)+/, "")
|
|
11
|
-
const segments = normalized.split("/")
|
|
12
|
-
let re = "^"
|
|
13
|
-
segments.forEach((segment, i) => {
|
|
14
|
-
const last = i === segments.length - 1
|
|
15
|
-
if (segment === "**") {
|
|
16
|
-
re += last ? ".*" : "(?:[^/]*/)*"
|
|
17
|
-
return
|
|
18
|
-
}
|
|
19
|
-
re += segmentToRegExp(segment)
|
|
20
|
-
if (!last) re += "/"
|
|
21
|
-
})
|
|
22
|
-
return new RegExp(`${re}$`)
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
function segmentToRegExp(segment: string): string {
|
|
26
|
-
let out = ""
|
|
27
|
-
for (let i = 0; i < segment.length; i++) {
|
|
28
|
-
const ch = segment[i] as string
|
|
29
|
-
if (ch === "*") {
|
|
30
|
-
/* a stray `**` inside a segment means the same as `*` */
|
|
31
|
-
while (segment[i + 1] === "*") i++
|
|
32
|
-
out += "[^/]*"
|
|
33
|
-
} else if (ch === "?") {
|
|
34
|
-
out += "[^/]"
|
|
35
|
-
} else if (ch === "[") {
|
|
36
|
-
const close = segment.indexOf("]", i + 2)
|
|
37
|
-
if (close === -1) {
|
|
38
|
-
out += "\\["
|
|
39
|
-
continue
|
|
40
|
-
}
|
|
41
|
-
let body = segment.slice(i + 1, close)
|
|
42
|
-
if (body.startsWith("!")) body = `^${body.slice(1)}`
|
|
43
|
-
out += `[${body.replaceAll("\\", "\\\\").replaceAll("/", "")}]`
|
|
44
|
-
i = close
|
|
45
|
-
} else if (ch === "{") {
|
|
46
|
-
const close = matchingBrace(segment, i)
|
|
47
|
-
if (close === -1) {
|
|
48
|
-
out += "\\{"
|
|
49
|
-
continue
|
|
50
|
-
}
|
|
51
|
-
const alternatives = splitTopLevel(segment.slice(i + 1, close))
|
|
52
|
-
out += `(?:${alternatives.map(segmentToRegExp).join("|")})`
|
|
53
|
-
i = close
|
|
54
|
-
} else {
|
|
55
|
-
out += ch.replace(/[.+^${}()|[\]\\]/g, "\\$&")
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
return out
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
function matchingBrace(s: string, open: number): number {
|
|
62
|
-
let depth = 0
|
|
63
|
-
for (let i = open; i < s.length; i++) {
|
|
64
|
-
if (s[i] === "{") depth++
|
|
65
|
-
else if (s[i] === "}" && --depth === 0) return i
|
|
66
|
-
}
|
|
67
|
-
return -1
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
function splitTopLevel(body: string): string[] {
|
|
71
|
-
const parts: string[] = []
|
|
72
|
-
let depth = 0
|
|
73
|
-
let start = 0
|
|
74
|
-
for (let i = 0; i < body.length; i++) {
|
|
75
|
-
if (body[i] === "{") depth++
|
|
76
|
-
else if (body[i] === "}") depth--
|
|
77
|
-
else if (body[i] === "," && depth === 0) {
|
|
78
|
-
parts.push(body.slice(start, i))
|
|
79
|
-
start = i + 1
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
parts.push(body.slice(start))
|
|
83
|
-
return parts
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
/**
|
|
87
|
-
* A matcher for `patterns`, compiled once: true when `file` (absolute, or relative to `root`)
|
|
88
|
-
* matches any pattern. Files outside `root` never match.
|
|
89
|
-
*/
|
|
90
|
-
export function compileGlobs(patterns: readonly string[]): (file: string, root: string) => boolean {
|
|
91
|
-
const regexps = patterns.map(globToRegExp)
|
|
92
|
-
return (file, root) => {
|
|
93
|
-
const rel = (isAbsolute(file) ? relative(root, file) : file).replaceAll("\\", "/")
|
|
94
|
-
if (rel === "" || rel.startsWith("../") || rel === ".." || isAbsolute(rel)) return false
|
|
95
|
-
return regexps.some((re) => re.test(rel))
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
/** True when `file` (absolute, or relative to `root`) matches any pattern. Files outside `root` never match. */
|
|
100
|
-
export function matchesGlob(file: string, patterns: readonly string[], root: string): boolean {
|
|
101
|
-
return compileGlobs(patterns)(file, root)
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
/**
|
|
105
|
-
* Paths a watch never regenerates for: generated files (`_gen/` and the `_gen` directory itself,
|
|
106
|
-
* `*.gen.*`), dependencies, and the `<file>.<hex>.tmp` files an atomic write renames into place. Shared by `honey generate --watch`
|
|
107
|
-
* and the Vite plugin.
|
|
108
|
-
*/
|
|
109
|
-
export const WATCH_IGNORE_RE = /(^|[/\\])_gen([/\\]|$)|\.gen\.(tsx?|json|ya?ml|d\.ts)$|[/\\]node_modules[/\\]|\.tmp$/
|