@lovrozagar/honey 0.6.8 → 0.7.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/README.md +514 -192
- package/bin/honey.js +25 -0
- package/dist/accepts.d.ts +7 -1
- package/dist/accepts.d.ts.map +1 -1
- package/dist/accepts.js +126 -0
- package/dist/accepts.js.map +1 -0
- package/dist/body-kind.d.ts +26 -0
- package/dist/body-kind.d.ts.map +1 -0
- package/dist/body-kind.js +70 -0
- package/dist/body-kind.js.map +1 -0
- package/dist/body-limit.d.ts +5 -1
- package/dist/body-limit.d.ts.map +1 -1
- package/dist/body-limit.js +126 -0
- package/dist/body-limit.js.map +1 -0
- package/dist/build/index.d.ts +19 -3
- package/dist/build/index.d.ts.map +1 -1
- package/dist/build/index.js +173 -0
- package/dist/build/index.js.map +1 -0
- package/dist/cli-args.d.ts +33 -0
- package/dist/cli-args.d.ts.map +1 -0
- package/dist/cli-args.js +102 -0
- package/dist/cli-args.js.map +1 -0
- package/dist/cli-go/auth.go +26 -0
- package/dist/cli-go/config.go +192 -0
- package/dist/cli-go/errors.go +75 -0
- package/dist/cli-go/multipart.go +79 -0
- package/dist/cli-go/output.go +163 -0
- package/dist/cli-go/root.go +30 -0
- package/dist/cli-go/stream.go +88 -0
- package/dist/cli-go/version.go +5 -0
- package/dist/cli.d.ts +1 -1
- package/dist/cli.js +209 -0
- package/dist/cli.js.map +1 -0
- package/dist/client/defaults.js +48 -0
- package/dist/client/defaults.js.map +1 -0
- package/dist/client/error.d.ts +35 -0
- package/dist/client/error.d.ts.map +1 -1
- package/dist/client/error.js +71 -0
- package/dist/client/error.js.map +1 -0
- package/dist/client/http.d.ts +67 -8
- package/dist/client/http.d.ts.map +1 -1
- package/dist/client/http.js +571 -0
- package/dist/client/http.js.map +1 -0
- package/dist/client/index.d.ts +3 -2
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +95 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/path.d.ts +26 -0
- package/dist/client/path.d.ts.map +1 -0
- package/dist/client/path.js +163 -0
- package/dist/client/path.js.map +1 -0
- package/dist/client/redirect-policy.d.ts +12 -0
- package/dist/client/redirect-policy.d.ts.map +1 -0
- package/dist/client/redirect-policy.js +20 -0
- package/dist/client/redirect-policy.js.map +1 -0
- package/dist/client/sdk.d.ts +36 -0
- package/dist/client/sdk.d.ts.map +1 -1
- package/dist/client/sdk.js +292 -0
- package/dist/client/sdk.js.map +1 -0
- package/dist/client/sse.d.ts +13 -0
- package/dist/client/sse.d.ts.map +1 -1
- package/dist/client/sse.js +129 -0
- package/dist/client/sse.js.map +1 -0
- package/dist/client/types.js +2 -0
- package/dist/client/types.js.map +1 -0
- package/dist/client/ws.d.ts +9 -2
- package/dist/client/ws.d.ts.map +1 -1
- package/dist/client/ws.js +112 -0
- package/dist/client/ws.js.map +1 -0
- package/dist/client-go/errors.go +236 -0
- package/dist/client-go/export.go +44 -0
- package/dist/client-go/invalidation.go +371 -0
- package/dist/client-go/nullable.go +62 -0
- package/dist/client-go/realtime.go +354 -0
- package/dist/client-go/result.go +20 -0
- package/dist/client-go/runtime.go +975 -0
- package/dist/client-go/sse.go +159 -0
- package/dist/client-go/transport.go +495 -0
- package/dist/client-go/ws.go +128 -0
- package/dist/client-info.d.ts +36 -0
- package/dist/client-info.d.ts.map +1 -0
- package/dist/client-info.js +53 -0
- package/dist/client-info.js.map +1 -0
- package/dist/client-mcp/README.md +10 -0
- package/dist/client-mcp/server.ts +221 -0
- package/dist/client-mcp/types.ts +19 -0
- package/dist/client-python/_errors.py +115 -0
- package/dist/client-python/_invalidation.py +494 -0
- package/dist/client-python/_realtime.py +179 -0
- package/dist/client-python/_runtime.py +860 -0
- package/dist/client-python/_sse.py +155 -0
- package/dist/client-python/_transport.py +366 -0
- package/dist/client-python/_ws.py +159 -0
- package/dist/client-python/py.typed +0 -0
- package/dist/client-rust/errors.rs +220 -0
- package/dist/client-rust/invalidation.rs +412 -0
- package/dist/client-rust/invalidation_sync.rs +93 -0
- package/dist/client-rust/nullable.rs +17 -0
- package/dist/client-rust/realtime.rs +702 -0
- package/dist/client-rust/result.rs +22 -0
- package/dist/client-rust/runtime.rs +980 -0
- package/dist/client-rust/runtime_sync.rs +484 -0
- package/dist/client-rust/sse.rs +188 -0
- package/dist/client-rust/ws.rs +167 -0
- package/dist/codegen-go-cli.d.ts.map +1 -1
- package/dist/codegen-go-cli.js +964 -0
- package/dist/codegen-go-cli.js.map +1 -0
- package/dist/codegen-go.d.ts +15 -3
- package/dist/codegen-go.d.ts.map +1 -1
- package/dist/codegen-go.js +872 -0
- package/dist/codegen-go.js.map +1 -0
- package/dist/codegen-hash.js +9 -0
- package/dist/codegen-hash.js.map +1 -0
- package/dist/codegen-ir.d.ts +69 -2
- package/dist/codegen-ir.d.ts.map +1 -1
- package/dist/codegen-ir.js +661 -0
- package/dist/codegen-ir.js.map +1 -0
- package/dist/codegen-lang.d.ts +65 -0
- package/dist/codegen-lang.d.ts.map +1 -0
- package/dist/codegen-lang.js +526 -0
- package/dist/codegen-lang.js.map +1 -0
- package/dist/codegen-load.d.ts +31 -0
- package/dist/codegen-load.d.ts.map +1 -0
- package/dist/codegen-load.js +138 -0
- package/dist/codegen-load.js.map +1 -0
- package/dist/codegen-loaders.js +55 -0
- package/dist/codegen-loaders.js.map +1 -0
- package/dist/codegen-mcp.d.ts.map +1 -1
- package/dist/codegen-mcp.js +368 -0
- package/dist/codegen-mcp.js.map +1 -0
- package/dist/codegen-python.d.ts +13 -1
- package/dist/codegen-python.d.ts.map +1 -1
- package/dist/codegen-python.js +828 -0
- package/dist/codegen-python.js.map +1 -0
- package/dist/codegen-route-tree-intern.d.ts +15 -5
- package/dist/codegen-route-tree-intern.d.ts.map +1 -1
- package/dist/codegen-route-tree-intern.js +221 -0
- package/dist/codegen-route-tree-intern.js.map +1 -0
- package/dist/codegen-rust.d.ts.map +1 -1
- package/dist/codegen-rust.js +1293 -0
- package/dist/codegen-rust.js.map +1 -0
- package/dist/codegen-sanitize.d.ts.map +1 -1
- package/dist/codegen-sanitize.js +56 -0
- package/dist/codegen-sanitize.js.map +1 -0
- package/dist/codegen-schema-naming.d.ts +5 -0
- package/dist/codegen-schema-naming.d.ts.map +1 -1
- package/dist/codegen-schema-naming.js +150 -0
- package/dist/codegen-schema-naming.js.map +1 -0
- package/dist/codegen-sdk-model.d.ts +71 -0
- package/dist/codegen-sdk-model.d.ts.map +1 -0
- package/dist/codegen-sdk-model.js +179 -0
- package/dist/codegen-sdk-model.js.map +1 -0
- package/dist/codegen.d.ts +41 -23
- package/dist/codegen.d.ts.map +1 -1
- package/dist/codegen.js +4610 -0
- package/dist/codegen.js.map +1 -0
- package/dist/context.d.ts +36 -6
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +242 -0
- package/dist/context.js.map +1 -0
- package/dist/cookie-sign.d.ts +16 -2
- package/dist/cookie-sign.d.ts.map +1 -1
- package/dist/cookie-sign.js +104 -0
- package/dist/cookie-sign.js.map +1 -0
- package/dist/cookie.d.ts +12 -0
- package/dist/cookie.d.ts.map +1 -1
- package/dist/cookie.js +138 -0
- package/dist/cookie.js.map +1 -0
- package/dist/cors.d.ts +1 -0
- package/dist/cors.d.ts.map +1 -1
- package/dist/cors.js +87 -0
- package/dist/cors.js.map +1 -0
- package/dist/crypto.d.ts +6 -1
- package/dist/crypto.d.ts.map +1 -1
- package/dist/crypto.js +38 -0
- package/dist/crypto.js.map +1 -0
- package/dist/csrf.d.ts +19 -0
- package/dist/csrf.d.ts.map +1 -1
- package/dist/csrf.js +79 -0
- package/dist/csrf.js.map +1 -0
- package/dist/curl-logger.d.ts +14 -3
- package/dist/curl-logger.d.ts.map +1 -1
- package/dist/curl-logger.js +199 -0
- package/dist/curl-logger.js.map +1 -0
- package/dist/detect-runtime.js +13 -0
- package/dist/detect-runtime.js.map +1 -0
- package/dist/dict.d.ts +11 -0
- package/dist/dict.d.ts.map +1 -0
- package/dist/dict.js +13 -0
- package/dist/dict.js.map +1 -0
- package/dist/error.d.ts.map +1 -1
- package/dist/error.js +44 -0
- package/dist/error.js.map +1 -0
- package/dist/errors.js +39 -0
- package/dist/errors.js.map +1 -0
- package/dist/etag.d.ts +2 -0
- package/dist/etag.d.ts.map +1 -1
- package/dist/etag.js +82 -0
- package/dist/etag.js.map +1 -0
- package/dist/feature-detect.d.ts +25 -0
- package/dist/feature-detect.d.ts.map +1 -0
- package/dist/feature-detect.js +144 -0
- package/dist/feature-detect.js.map +1 -0
- package/dist/feature-load.js +36 -0
- package/dist/feature-load.js.map +1 -0
- package/dist/feature-slots.d.ts +44 -0
- package/dist/feature-slots.d.ts.map +1 -0
- package/dist/feature-slots.js +48 -0
- package/dist/feature-slots.js.map +1 -0
- package/dist/fetch-request.d.ts +10 -0
- package/dist/fetch-request.d.ts.map +1 -0
- package/dist/fetch-request.js +13 -0
- package/dist/fetch-request.js.map +1 -0
- package/dist/gen-process.d.ts +15 -0
- package/dist/gen-process.d.ts.map +1 -0
- package/dist/gen-process.js +43 -0
- package/dist/gen-process.js.map +1 -0
- package/dist/gen-write.d.ts +19 -0
- package/dist/gen-write.d.ts.map +1 -0
- package/dist/gen-write.js +120 -0
- package/dist/gen-write.js.map +1 -0
- package/dist/glob.d.ts +21 -0
- package/dist/glob.d.ts.map +1 -0
- package/dist/glob.js +115 -0
- package/dist/glob.js.map +1 -0
- package/dist/go-type-emitter.d.ts +18 -4
- package/dist/go-type-emitter.d.ts.map +1 -1
- package/dist/go-type-emitter.js +594 -0
- package/dist/go-type-emitter.js.map +1 -0
- package/dist/honey-response.d.ts.map +1 -1
- package/dist/honey-response.js +338 -0
- package/dist/honey-response.js.map +1 -0
- package/dist/i18n-slot.d.ts +8 -0
- package/dist/i18n-slot.d.ts.map +1 -1
- package/dist/i18n-slot.js +14 -0
- package/dist/i18n-slot.js.map +1 -0
- package/dist/i18n.d.ts +3 -0
- package/dist/i18n.d.ts.map +1 -1
- package/dist/i18n.js +250 -0
- package/dist/i18n.js.map +1 -0
- package/dist/index.d.ts +408 -148
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2324 -0
- package/dist/index.js.map +1 -0
- package/dist/init.d.ts +3 -5
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +140 -0
- package/dist/init.js.map +1 -0
- package/dist/input.js +4 -0
- package/dist/input.js.map +1 -0
- package/dist/invalidate-check.d.ts +11 -0
- package/dist/invalidate-check.d.ts.map +1 -1
- package/dist/invalidate-check.js +163 -0
- package/dist/invalidate-check.js.map +1 -0
- package/dist/invoke-user.d.ts +35 -0
- package/dist/invoke-user.d.ts.map +1 -0
- package/dist/invoke-user.js +73 -0
- package/dist/invoke-user.js.map +1 -0
- package/dist/ip-restrict.d.ts +13 -1
- package/dist/ip-restrict.d.ts.map +1 -1
- package/dist/ip-restrict.js +60 -0
- package/dist/ip-restrict.js.map +1 -0
- package/dist/ip.d.ts +39 -0
- package/dist/ip.d.ts.map +1 -0
- package/dist/ip.js +209 -0
- package/dist/ip.js.map +1 -0
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +113 -0
- package/dist/logger.js.map +1 -0
- package/dist/media-type.d.ts +30 -0
- package/dist/media-type.d.ts.map +1 -0
- package/dist/media-type.js +97 -0
- package/dist/media-type.js.map +1 -0
- package/dist/meta-spec-merge.d.ts +32 -0
- package/dist/meta-spec-merge.d.ts.map +1 -0
- package/dist/meta-spec-merge.js +68 -0
- package/dist/meta-spec-merge.js.map +1 -0
- package/dist/meta-spec.d.ts +16 -3
- package/dist/meta-spec.d.ts.map +1 -1
- package/dist/meta-spec.js +535 -0
- package/dist/meta-spec.js.map +1 -0
- package/dist/middleware.d.ts +23 -6
- package/dist/middleware.d.ts.map +1 -1
- package/dist/middleware.js +253 -0
- package/dist/middleware.js.map +1 -0
- package/dist/node-request.d.ts +57 -12
- package/dist/node-request.d.ts.map +1 -1
- package/dist/node-request.js +407 -0
- package/dist/node-request.js.map +1 -0
- package/dist/node.d.ts +20 -3
- package/dist/node.d.ts.map +1 -1
- package/dist/node.js +396 -0
- package/dist/node.js.map +1 -0
- package/dist/openapi/collect.d.ts +6 -3
- package/dist/openapi/collect.d.ts.map +1 -1
- package/dist/openapi/collect.js +30 -0
- package/dist/openapi/collect.js.map +1 -0
- package/dist/openapi/docs-page.d.ts +42 -0
- package/dist/openapi/docs-page.d.ts.map +1 -0
- package/dist/openapi/docs-page.js +80 -0
- package/dist/openapi/docs-page.js.map +1 -0
- package/dist/openapi/document.d.ts +4 -0
- package/dist/openapi/document.d.ts.map +1 -1
- package/dist/openapi/document.js +785 -0
- package/dist/openapi/document.js.map +1 -0
- package/dist/openapi/json-schema-slot.d.ts +7 -0
- package/dist/openapi/json-schema-slot.d.ts.map +1 -1
- package/dist/openapi/json-schema-slot.js +38 -0
- package/dist/openapi/json-schema-slot.js.map +1 -0
- package/dist/openapi/register.d.ts.map +1 -1
- package/dist/openapi/register.js +20 -0
- package/dist/openapi/register.js.map +1 -0
- package/dist/openapi/scalar.d.ts +3 -1
- package/dist/openapi/scalar.d.ts.map +1 -1
- package/dist/openapi/scalar.js +21 -0
- package/dist/openapi/scalar.js.map +1 -0
- package/dist/openapi/serve.d.ts +9 -0
- package/dist/openapi/serve.d.ts.map +1 -0
- package/dist/openapi/serve.js +36 -0
- package/dist/openapi/serve.js.map +1 -0
- package/dist/openapi/spec-factory.d.ts +30 -1
- package/dist/openapi/spec-factory.d.ts.map +1 -1
- package/dist/openapi/spec-factory.js +52 -0
- package/dist/openapi/spec-factory.js.map +1 -0
- package/dist/openapi/spec.d.ts +14 -5
- package/dist/openapi/spec.d.ts.map +1 -1
- package/dist/openapi/spec.js +50 -0
- package/dist/openapi/spec.js.map +1 -0
- package/dist/openapi/swagger.d.ts +3 -1
- package/dist/openapi/swagger.d.ts.map +1 -1
- package/dist/openapi/swagger.js +22 -0
- package/dist/openapi/swagger.js.map +1 -0
- package/dist/pattern.d.ts +71 -0
- package/dist/pattern.d.ts.map +1 -0
- package/dist/pattern.js +239 -0
- package/dist/pattern.js.map +1 -0
- package/dist/peer.d.ts +17 -0
- package/dist/peer.d.ts.map +1 -0
- package/dist/peer.js +50 -0
- package/dist/peer.js.map +1 -0
- package/dist/plugin.d.ts +67 -16
- package/dist/plugin.d.ts.map +1 -1
- package/dist/plugin.js +649 -0
- package/dist/plugin.js.map +1 -0
- package/dist/powered-by.d.ts.map +1 -1
- package/dist/powered-by.js +11 -0
- package/dist/powered-by.js.map +1 -0
- package/dist/pretty-json.d.ts.map +1 -1
- package/dist/pretty-json.js +47 -0
- package/dist/pretty-json.js.map +1 -0
- package/dist/producer-stream.d.ts +47 -0
- package/dist/producer-stream.d.ts.map +1 -0
- package/dist/producer-stream.js +267 -0
- package/dist/producer-stream.js.map +1 -0
- package/dist/proxy.d.ts +47 -8
- package/dist/proxy.d.ts.map +1 -1
- package/dist/proxy.js +274 -0
- package/dist/proxy.js.map +1 -0
- package/dist/python-type-emitter.d.ts +14 -1
- package/dist/python-type-emitter.d.ts.map +1 -1
- package/dist/python-type-emitter.js +157 -0
- package/dist/python-type-emitter.js.map +1 -0
- package/dist/realtime/bus.d.ts +17 -1
- package/dist/realtime/bus.d.ts.map +1 -1
- package/dist/realtime/bus.js +112 -0
- package/dist/realtime/bus.js.map +1 -0
- package/dist/realtime/register.d.ts +3 -0
- package/dist/realtime/register.d.ts.map +1 -0
- package/dist/realtime/register.js +10 -0
- package/dist/realtime/register.js.map +1 -0
- package/dist/realtime/route.d.ts +65 -26
- package/dist/realtime/route.d.ts.map +1 -1
- package/dist/realtime/route.js +72 -0
- package/dist/realtime/route.js.map +1 -0
- package/dist/realtime/server.d.ts +43 -0
- package/dist/realtime/server.d.ts.map +1 -0
- package/dist/realtime/server.js +255 -0
- package/dist/realtime/server.js.map +1 -0
- package/dist/request-id.d.ts +7 -0
- package/dist/request-id.d.ts.map +1 -1
- package/dist/request-id.js +16 -0
- package/dist/request-id.js.map +1 -0
- package/dist/request-limits.d.ts +3 -0
- package/dist/request-limits.d.ts.map +1 -0
- package/dist/request-limits.js +3 -0
- package/dist/request-limits.js.map +1 -0
- package/dist/request-path.d.ts +33 -0
- package/dist/request-path.d.ts.map +1 -0
- package/dist/request-path.js +178 -0
- package/dist/request-path.js.map +1 -0
- package/dist/request-to-curl.d.ts +7 -1
- package/dist/request-to-curl.d.ts.map +1 -1
- package/dist/request-to-curl.js +48 -0
- package/dist/request-to-curl.js.map +1 -0
- package/dist/response.d.ts +25 -2
- package/dist/response.d.ts.map +1 -1
- package/dist/response.js +313 -0
- package/dist/response.js.map +1 -0
- package/dist/rust-type-emitter.d.ts +14 -2
- package/dist/rust-type-emitter.d.ts.map +1 -1
- package/dist/rust-type-emitter.js +463 -0
- package/dist/rust-type-emitter.js.map +1 -0
- package/dist/secure-headers.d.ts.map +1 -1
- package/dist/secure-headers.js +53 -0
- package/dist/secure-headers.js.map +1 -0
- package/dist/serve-register.d.ts +4 -0
- package/dist/serve-register.d.ts.map +1 -1
- package/dist/serve-register.js +9 -0
- package/dist/serve-register.js.map +1 -0
- package/dist/serve-slot.d.ts +3 -0
- package/dist/serve-slot.d.ts.map +1 -1
- package/dist/serve-slot.js +52 -0
- package/dist/serve-slot.js.map +1 -0
- package/dist/serve.d.ts +18 -1
- package/dist/serve.d.ts.map +1 -1
- package/dist/serve.js +157 -0
- package/dist/serve.js.map +1 -0
- package/dist/server-timing.d.ts.map +1 -1
- package/dist/server-timing.js +51 -0
- package/dist/server-timing.js.map +1 -0
- package/dist/static.d.ts +9 -0
- package/dist/static.d.ts.map +1 -1
- package/dist/static.js +102 -0
- package/dist/static.js.map +1 -0
- package/dist/telemetry/otel.d.ts +2 -0
- package/dist/telemetry/otel.d.ts.map +1 -1
- package/dist/telemetry/otel.js +135 -0
- package/dist/telemetry/otel.js.map +1 -0
- package/dist/testing.d.ts +12 -0
- package/dist/testing.d.ts.map +1 -1
- package/dist/testing.js +124 -0
- package/dist/testing.js.map +1 -0
- package/dist/timeout.d.ts +6 -0
- package/dist/timeout.d.ts.map +1 -1
- package/dist/timeout.js +36 -0
- package/dist/timeout.js.map +1 -0
- package/dist/tree.d.ts +133 -36
- package/dist/tree.d.ts.map +1 -1
- package/dist/tree.js +437 -0
- package/dist/tree.js.map +1 -0
- package/dist/trust.d.ts +21 -0
- package/dist/trust.d.ts.map +1 -0
- package/dist/trust.js +100 -0
- package/dist/trust.js.map +1 -0
- package/dist/ts-type-emitter.d.ts.map +1 -1
- package/dist/ts-type-emitter.js +150 -0
- package/dist/ts-type-emitter.js.map +1 -0
- package/dist/type-emitter.d.ts +16 -2
- package/dist/type-emitter.d.ts.map +1 -1
- package/dist/type-emitter.js +729 -0
- package/dist/type-emitter.js.map +1 -0
- package/dist/type-extractor.d.ts +8 -4
- package/dist/type-extractor.d.ts.map +1 -1
- package/dist/type-extractor.js +819 -0
- package/dist/type-extractor.js.map +1 -0
- package/dist/types.d.ts +7 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +96 -0
- package/dist/types.js.map +1 -0
- package/dist/validation.d.ts +14 -2
- package/dist/validation.d.ts.map +1 -1
- package/dist/validation.js +335 -0
- package/dist/validation.js.map +1 -0
- package/dist/with-headers.d.ts +15 -0
- package/dist/with-headers.d.ts.map +1 -0
- package/dist/with-headers.js +45 -0
- package/dist/with-headers.js.map +1 -0
- package/dist/ws/bun.d.ts +11 -5
- package/dist/ws/bun.d.ts.map +1 -1
- package/dist/ws/bun.js +82 -0
- package/dist/ws/bun.js.map +1 -0
- package/dist/ws/cloudflare.d.ts +25 -3
- package/dist/ws/cloudflare.d.ts.map +1 -1
- package/dist/ws/cloudflare.js +117 -0
- package/dist/ws/cloudflare.js.map +1 -0
- package/dist/ws/deno.d.ts +4 -4
- package/dist/ws/deno.d.ts.map +1 -1
- package/dist/ws/deno.js +133 -0
- package/dist/ws/deno.js.map +1 -0
- package/dist/ws/node.d.ts +20 -3
- package/dist/ws/node.d.ts.map +1 -1
- package/dist/ws/node.js +173 -0
- package/dist/ws/node.js.map +1 -0
- package/dist/ws/session.d.ts +11 -0
- package/dist/ws/session.d.ts.map +1 -0
- package/dist/ws/session.js +60 -0
- package/dist/ws/session.js.map +1 -0
- package/dist/ws/shared.d.ts +65 -0
- package/dist/ws/shared.d.ts.map +1 -0
- package/dist/ws/shared.js +103 -0
- package/dist/ws/shared.js.map +1 -0
- package/dist/ws-origin.d.ts +20 -0
- package/dist/ws-origin.d.ts.map +1 -0
- package/dist/ws-origin.js +41 -0
- package/dist/ws-origin.js.map +1 -0
- package/dist/yaml.d.ts +15 -1
- package/dist/yaml.d.ts.map +1 -1
- package/dist/yaml.js +101 -0
- package/dist/yaml.js.map +1 -0
- package/docs/invalidate-spec.md +13 -1
- package/docs/meta-spec.md +36 -12
- package/docs/packaging.md +43 -24
- package/docs/regression-matrix/README.md +32 -0
- package/docs/regression-matrix/review.md +44 -0
- package/docs/regression-matrix/ws1-3.md +97 -0
- package/docs/regression-matrix/ws4-8.md +107 -0
- package/docs/regression-matrix/ws9-12.md +266 -0
- package/docs/sdk.md +102 -52
- package/package.json +183 -52
- package/src/accepts.ts +91 -33
- package/src/body-kind.ts +67 -0
- package/src/body-limit.ts +102 -87
- package/src/build/index.ts +104 -54
- package/src/cli-args.ts +123 -0
- package/src/cli-go/auth.go +12 -1
- package/src/cli-go/config.go +29 -2
- package/src/cli-go/errors.go +28 -10
- package/src/cli-go/multipart.go +51 -27
- package/src/cli-go/output.go +58 -4
- package/src/cli-go/root.go +1 -1
- package/src/cli-go/version.go +2 -2
- package/src/cli.ts +154 -148
- package/src/client/error.ts +56 -1
- package/src/client/http.ts +479 -256
- package/src/client/index.ts +55 -17
- package/src/client/path.ts +169 -0
- package/src/client/redirect-policy.ts +19 -0
- package/src/client/sdk.ts +180 -101
- package/src/client/sse.ts +92 -66
- package/src/client/ws.ts +67 -31
- package/src/client-go/errors.go +41 -12
- package/src/client-go/export.go +44 -0
- package/src/client-go/invalidation.go +52 -54
- package/src/client-go/nullable.go +62 -0
- package/src/client-go/realtime.go +147 -110
- package/src/client-go/runtime.go +646 -88
- package/src/client-go/sse.go +104 -94
- package/src/client-go/transport.go +67 -27
- package/src/client-go/ws.go +49 -25
- package/src/client-info.ts +79 -0
- package/src/client-mcp/server.ts +133 -3
- package/src/client-python/_invalidation.py +207 -291
- package/src/client-python/_realtime.py +63 -40
- package/src/client-python/_runtime.py +501 -119
- package/src/client-python/_sse.py +130 -74
- package/src/client-python/_transport.py +37 -9
- package/src/client-python/_ws.py +50 -22
- package/src/client-rust/errors.rs +21 -1
- package/src/client-rust/invalidation.rs +202 -231
- package/src/client-rust/invalidation_sync.rs +16 -229
- package/src/client-rust/nullable.rs +17 -0
- package/src/client-rust/realtime.rs +217 -217
- package/src/client-rust/runtime.rs +602 -177
- package/src/client-rust/runtime_sync.rs +169 -145
- package/src/client-rust/sse.rs +142 -121
- package/src/client-rust/ws.rs +61 -37
- package/src/codegen-go-cli.ts +607 -728
- package/src/codegen-go.ts +710 -770
- package/src/codegen-ir.ts +381 -75
- package/src/codegen-lang.ts +517 -0
- package/src/codegen-load.ts +150 -0
- package/src/codegen-mcp.ts +207 -108
- package/src/codegen-python.ts +684 -816
- package/src/codegen-route-tree-intern.ts +51 -25
- package/src/codegen-rust.ts +946 -1240
- package/src/codegen-sanitize.ts +0 -4
- package/src/codegen-schema-naming.ts +19 -6
- package/src/codegen-sdk-model.ts +228 -0
- package/src/codegen.ts +1488 -1140
- package/src/context.ts +130 -11
- package/src/cookie-sign.ts +85 -16
- package/src/cookie.ts +66 -11
- package/src/cors.ts +55 -54
- package/src/crypto.ts +27 -5
- package/src/csrf.ts +57 -25
- package/src/curl-logger.ts +155 -114
- package/src/dict.ts +12 -0
- package/src/error.ts +4 -2
- package/src/etag.ts +58 -34
- package/src/feature-detect.ts +147 -0
- package/src/feature-slots.ts +70 -0
- package/src/fetch-request.ts +13 -0
- package/src/gen-process.ts +42 -0
- package/src/gen-write.ts +127 -0
- package/src/glob.ts +109 -0
- package/src/go-type-emitter.ts +406 -155
- package/src/honey-response.ts +36 -9
- package/src/i18n-slot.ts +10 -0
- package/src/i18n.ts +98 -23
- package/src/index.ts +1887 -1756
- package/src/init.ts +40 -28
- package/src/invalidate-check.ts +42 -4
- package/src/invoke-user.ts +95 -0
- package/src/ip-restrict.ts +47 -161
- package/src/ip.ts +194 -0
- package/src/logger.ts +65 -36
- package/src/media-type.ts +104 -0
- package/src/meta-spec-merge.ts +80 -0
- package/src/meta-spec.ts +0 -0
- package/src/middleware.ts +112 -12
- package/src/node-request.ts +242 -52
- package/src/node.ts +318 -75
- package/src/openapi/collect.ts +19 -44
- package/src/openapi/docs-page.ts +89 -0
- package/src/openapi/document.ts +503 -224
- package/src/openapi/json-schema-slot.ts +40 -0
- package/src/openapi/register.ts +7 -2
- package/src/openapi/scalar.ts +11 -10
- package/src/openapi/serve.ts +39 -0
- package/src/openapi/spec-factory.ts +50 -1
- package/src/openapi/spec.ts +53 -30
- package/src/openapi/swagger.ts +12 -11
- package/src/pattern.ts +245 -0
- package/src/peer.ts +53 -0
- package/src/plugin.ts +270 -185
- package/src/powered-by.ts +2 -2
- package/src/pretty-json.ts +25 -9
- package/src/producer-stream.ts +296 -0
- package/src/proxy.ts +253 -55
- package/src/python-type-emitter.ts +68 -56
- package/src/realtime/bus.ts +56 -9
- package/src/realtime/register.ts +13 -0
- package/src/realtime/route.ts +129 -80
- package/src/realtime/server.ts +298 -0
- package/src/request-id.ts +13 -3
- package/src/request-limits.ts +2 -0
- package/src/request-path.ts +165 -0
- package/src/request-to-curl.ts +28 -7
- package/src/response.ts +143 -103
- package/src/rust-type-emitter.ts +265 -170
- package/src/secure-headers.ts +8 -4
- package/src/serve-register.ts +4 -0
- package/src/serve-slot.ts +38 -0
- package/src/serve.ts +113 -25
- package/src/server-timing.ts +11 -7
- package/src/static.ts +85 -32
- package/src/telemetry/otel.ts +29 -7
- package/src/testing.ts +76 -14
- package/src/timeout.ts +15 -7
- package/src/tree.ts +405 -333
- package/src/trust.ts +117 -0
- package/src/ts-type-emitter.ts +18 -12
- package/src/type-emitter.ts +227 -89
- package/src/type-extractor.ts +603 -423
- package/src/types.ts +8 -0
- package/src/validation.ts +221 -96
- package/src/with-headers.ts +45 -0
- package/src/ws/bun.ts +53 -15
- package/src/ws/cloudflare.ts +81 -19
- package/src/ws/deno.ts +124 -36
- package/src/ws/node.ts +173 -79
- package/src/ws/session.ts +73 -0
- package/src/ws/shared.ts +140 -0
- package/src/ws-origin.ts +53 -0
- package/src/yaml.ts +45 -22
- package/dist/client-mcp/server.d.ts +0 -10
- package/dist/client-mcp/server.d.ts.map +0 -1
- package/dist/client-mcp/types.d.ts +0 -16
- package/dist/client-mcp/types.d.ts.map +0 -1
- package/dist/cloudflare/realtime.d.ts +0 -30
- package/dist/cloudflare/realtime.d.ts.map +0 -1
- package/dist/realtime/buffer.d.ts +0 -18
- package/dist/realtime/buffer.d.ts.map +0 -1
- package/dist/realtime/longpoll.d.ts +0 -23
- package/dist/realtime/longpoll.d.ts.map +0 -1
- package/dist/realtime/protocol.d.ts +0 -50
- package/dist/realtime/protocol.d.ts.map +0 -1
- package/dist/realtime/runtime.d.ts +0 -74
- package/dist/realtime/runtime.d.ts.map +0 -1
- package/src/cloudflare/realtime.ts +0 -234
- package/src/realtime/buffer.ts +0 -101
- package/src/realtime/longpoll.ts +0 -148
- package/src/realtime/protocol.ts +0 -128
- package/src/realtime/runtime.ts +0 -427
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
// Code generated by honey. DO NOT EDIT.
|
|
2
|
+
package cli
|
|
3
|
+
|
|
4
|
+
import (
|
|
5
|
+
"fmt"
|
|
6
|
+
"io"
|
|
7
|
+
"mime/multipart"
|
|
8
|
+
"os"
|
|
9
|
+
"path/filepath"
|
|
10
|
+
"sort"
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
// BuildMultipart streams a multipart/form-data body: files are read as the
|
|
14
|
+
// request is sent, not buffered in memory.
|
|
15
|
+
//
|
|
16
|
+
// fields are written as plain form fields; files are keyed by form-field-name →
|
|
17
|
+
// file path. Every file is opened up front so a bad path fails before sending.
|
|
18
|
+
//
|
|
19
|
+
// Returns the body reader, the Content-Type header value (including boundary),
|
|
20
|
+
// and any error.
|
|
21
|
+
func BuildMultipart(fields map[string]string, files map[string]string) (io.Reader, string, error) {
|
|
22
|
+
fieldNames := sortedNames(fields)
|
|
23
|
+
fileNames := sortedNames(files)
|
|
24
|
+
|
|
25
|
+
opened := make(map[string]*os.File, len(files))
|
|
26
|
+
for _, name := range fileNames {
|
|
27
|
+
path := files[name]
|
|
28
|
+
if path == "" {
|
|
29
|
+
closeAll(opened)
|
|
30
|
+
return nil, "", fmt.Errorf("missing file path for field %q", name)
|
|
31
|
+
}
|
|
32
|
+
f, err := os.Open(path)
|
|
33
|
+
if err != nil {
|
|
34
|
+
closeAll(opened)
|
|
35
|
+
return nil, "", Usage(fmt.Errorf("open file %s: %w", path, err))
|
|
36
|
+
}
|
|
37
|
+
opened[name] = f
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
pr, pw := io.Pipe()
|
|
41
|
+
writer := multipart.NewWriter(pw)
|
|
42
|
+
go func() {
|
|
43
|
+
defer closeAll(opened)
|
|
44
|
+
for _, name := range fieldNames {
|
|
45
|
+
if err := writer.WriteField(name, fields[name]); err != nil {
|
|
46
|
+
pw.CloseWithError(fmt.Errorf("write field %q: %w", name, err))
|
|
47
|
+
return
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
for _, name := range fileNames {
|
|
51
|
+
part, err := writer.CreateFormFile(name, filepath.Base(files[name]))
|
|
52
|
+
if err != nil {
|
|
53
|
+
pw.CloseWithError(fmt.Errorf("create form file %q: %w", name, err))
|
|
54
|
+
return
|
|
55
|
+
}
|
|
56
|
+
if _, err := io.Copy(part, opened[name]); err != nil {
|
|
57
|
+
pw.CloseWithError(fmt.Errorf("copy file %s: %w", files[name], err))
|
|
58
|
+
return
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
pw.CloseWithError(writer.Close())
|
|
62
|
+
}()
|
|
63
|
+
return pr, writer.FormDataContentType(), nil
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
func sortedNames(m map[string]string) []string {
|
|
67
|
+
names := make([]string, 0, len(m))
|
|
68
|
+
for k := range m {
|
|
69
|
+
names = append(names, k)
|
|
70
|
+
}
|
|
71
|
+
sort.Strings(names)
|
|
72
|
+
return names
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
func closeAll(files map[string]*os.File) {
|
|
76
|
+
for _, f := range files {
|
|
77
|
+
f.Close()
|
|
78
|
+
}
|
|
79
|
+
}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
// Code generated by honey. DO NOT EDIT.
|
|
2
|
+
package cli
|
|
3
|
+
|
|
4
|
+
import (
|
|
5
|
+
"bytes"
|
|
6
|
+
"encoding/json"
|
|
7
|
+
"fmt"
|
|
8
|
+
"io"
|
|
9
|
+
"sort"
|
|
10
|
+
"strings"
|
|
11
|
+
"text/tabwriter"
|
|
12
|
+
"unicode"
|
|
13
|
+
|
|
14
|
+
"sigs.k8s.io/yaml"
|
|
15
|
+
)
|
|
16
|
+
|
|
17
|
+
// DecodeJSON decodes a response body keeping numbers exact (json.Number), so a
|
|
18
|
+
// 64-bit id is printed as sent instead of as a rounded float.
|
|
19
|
+
func DecodeJSON(body []byte) (any, error) {
|
|
20
|
+
if len(body) == 0 {
|
|
21
|
+
return nil, nil
|
|
22
|
+
}
|
|
23
|
+
dec := json.NewDecoder(bytes.NewReader(body))
|
|
24
|
+
dec.UseNumber()
|
|
25
|
+
var out any
|
|
26
|
+
if err := dec.Decode(&out); err != nil {
|
|
27
|
+
return nil, err
|
|
28
|
+
}
|
|
29
|
+
return out, nil
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
// Sanitize drops control characters (ESC, CR, tabs, …) so server-controlled
|
|
33
|
+
// text cannot drive the terminal or break table layout.
|
|
34
|
+
func Sanitize(s string) string {
|
|
35
|
+
return strings.Map(func(r rune) rune {
|
|
36
|
+
if r == '\n' {
|
|
37
|
+
return ' '
|
|
38
|
+
}
|
|
39
|
+
if unicode.IsControl(r) {
|
|
40
|
+
return -1
|
|
41
|
+
}
|
|
42
|
+
return r
|
|
43
|
+
}, s)
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
func cell(v any) string {
|
|
47
|
+
switch t := v.(type) {
|
|
48
|
+
case nil:
|
|
49
|
+
return ""
|
|
50
|
+
case string:
|
|
51
|
+
return Sanitize(t)
|
|
52
|
+
case json.Number:
|
|
53
|
+
return t.String()
|
|
54
|
+
case map[string]any, []any:
|
|
55
|
+
enc, err := json.Marshal(t)
|
|
56
|
+
if err != nil {
|
|
57
|
+
return Sanitize(fmt.Sprint(t))
|
|
58
|
+
}
|
|
59
|
+
return Sanitize(string(enc))
|
|
60
|
+
default:
|
|
61
|
+
return Sanitize(fmt.Sprint(t))
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
// Emit writes data to w in the requested mode.
|
|
66
|
+
//
|
|
67
|
+
// Supported modes: json (pretty, 2-space indent), ndjson, yaml, table.
|
|
68
|
+
// Unknown modes return an error that ExitFor maps to exit code 4.
|
|
69
|
+
func Emit(data any, mode string, w io.Writer) error {
|
|
70
|
+
if data == nil {
|
|
71
|
+
return nil
|
|
72
|
+
}
|
|
73
|
+
switch mode {
|
|
74
|
+
case "", "json":
|
|
75
|
+
enc, err := json.MarshalIndent(data, "", " ")
|
|
76
|
+
if err != nil {
|
|
77
|
+
return err
|
|
78
|
+
}
|
|
79
|
+
_, err = fmt.Fprintln(w, string(enc))
|
|
80
|
+
return err
|
|
81
|
+
case "ndjson":
|
|
82
|
+
enc, err := json.Marshal(data)
|
|
83
|
+
if err != nil {
|
|
84
|
+
return err
|
|
85
|
+
}
|
|
86
|
+
_, err = fmt.Fprintln(w, string(enc))
|
|
87
|
+
return err
|
|
88
|
+
case "yaml":
|
|
89
|
+
enc, err := yaml.Marshal(data)
|
|
90
|
+
if err != nil {
|
|
91
|
+
return err
|
|
92
|
+
}
|
|
93
|
+
_, err = w.Write(enc)
|
|
94
|
+
return err
|
|
95
|
+
case "table":
|
|
96
|
+
return printTable(data, w)
|
|
97
|
+
default:
|
|
98
|
+
return fmt.Errorf("unknown output mode %q: valid modes are json, ndjson, yaml, table", mode)
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
// printTable renders data as an aligned table when possible, or falls back to raw print.
|
|
103
|
+
func printTable(data any, w io.Writer) error {
|
|
104
|
+
switch v := data.(type) {
|
|
105
|
+
case []any:
|
|
106
|
+
if len(v) == 0 {
|
|
107
|
+
return nil
|
|
108
|
+
}
|
|
109
|
+
rows := make([]map[string]any, 0, len(v))
|
|
110
|
+
for _, row := range v {
|
|
111
|
+
if m, ok := row.(map[string]any); ok {
|
|
112
|
+
rows = append(rows, m)
|
|
113
|
+
} else {
|
|
114
|
+
fmt.Fprintln(w, row)
|
|
115
|
+
return nil
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
keys := collectKeys(rows)
|
|
119
|
+
tw := tabwriter.NewWriter(w, 0, 0, 2, ' ', 0)
|
|
120
|
+
header := make([]string, len(keys))
|
|
121
|
+
for i, k := range keys {
|
|
122
|
+
header[i] = Sanitize(k)
|
|
123
|
+
}
|
|
124
|
+
fmt.Fprintln(tw, strings.Join(header, "\t"))
|
|
125
|
+
for _, row := range rows {
|
|
126
|
+
cols := make([]string, len(keys))
|
|
127
|
+
for i, k := range keys {
|
|
128
|
+
cols[i] = cell(row[k])
|
|
129
|
+
}
|
|
130
|
+
fmt.Fprintln(tw, strings.Join(cols, "\t"))
|
|
131
|
+
}
|
|
132
|
+
return tw.Flush()
|
|
133
|
+
case map[string]any:
|
|
134
|
+
keys := make([]string, 0, len(v))
|
|
135
|
+
for k := range v {
|
|
136
|
+
keys = append(keys, k)
|
|
137
|
+
}
|
|
138
|
+
sort.Strings(keys)
|
|
139
|
+
tw := tabwriter.NewWriter(w, 0, 0, 2, ' ', 0)
|
|
140
|
+
for _, k := range keys {
|
|
141
|
+
fmt.Fprintf(tw, "%s\t%s\n", Sanitize(k), cell(v[k]))
|
|
142
|
+
}
|
|
143
|
+
return tw.Flush()
|
|
144
|
+
default:
|
|
145
|
+
_, err := fmt.Fprintln(w, cell(data))
|
|
146
|
+
return err
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
func collectKeys(rows []map[string]any) []string {
|
|
151
|
+
seen := map[string]bool{}
|
|
152
|
+
keys := []string{}
|
|
153
|
+
for _, row := range rows {
|
|
154
|
+
for k := range row {
|
|
155
|
+
if !seen[k] {
|
|
156
|
+
seen[k] = true
|
|
157
|
+
keys = append(keys, k)
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
sort.Strings(keys)
|
|
162
|
+
return keys
|
|
163
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
// Code generated by honey. DO NOT EDIT.
|
|
2
|
+
package cli
|
|
3
|
+
|
|
4
|
+
import (
|
|
5
|
+
"github.com/spf13/cobra"
|
|
6
|
+
)
|
|
7
|
+
|
|
8
|
+
// NewRoot constructs a cobra root command with the standard persistent flags.
|
|
9
|
+
//
|
|
10
|
+
// Flags (all persistent, inherited by subcommands):
|
|
11
|
+
//
|
|
12
|
+
// --api-key API key (overrides env + config file)
|
|
13
|
+
// --base-url Override API base URL
|
|
14
|
+
// --output Output mode: json|ndjson|yaml|table (default json)
|
|
15
|
+
// --verbose Print request metadata to stderr
|
|
16
|
+
// --config Path to config file
|
|
17
|
+
// --timeout Go duration string, e.g. "30s"
|
|
18
|
+
func NewRoot(binaryName, version string) *cobra.Command {
|
|
19
|
+
root := &cobra.Command{
|
|
20
|
+
Use: binaryName,
|
|
21
|
+
Version: version,
|
|
22
|
+
}
|
|
23
|
+
root.PersistentFlags().String("api-key", "", "API key (overrides env + config file; visible to other local users in the process list, prefer the env var)")
|
|
24
|
+
root.PersistentFlags().String("base-url", "", "Override API base URL")
|
|
25
|
+
root.PersistentFlags().String("output", "json", "Output mode: json|ndjson|yaml|table")
|
|
26
|
+
root.PersistentFlags().Bool("verbose", false, "Print request metadata to stderr")
|
|
27
|
+
root.PersistentFlags().String("config", "", "Path to config file")
|
|
28
|
+
root.PersistentFlags().String("timeout", "30s", "Request timeout (Go duration)")
|
|
29
|
+
return root
|
|
30
|
+
}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
// Code generated by honey. DO NOT EDIT.
|
|
2
|
+
package cli
|
|
3
|
+
|
|
4
|
+
import (
|
|
5
|
+
"encoding/json"
|
|
6
|
+
"fmt"
|
|
7
|
+
"io"
|
|
8
|
+
"iter"
|
|
9
|
+
"os"
|
|
10
|
+
|
|
11
|
+
"sigs.k8s.io/yaml"
|
|
12
|
+
)
|
|
13
|
+
|
|
14
|
+
// SSEEvent is the concrete SSE event type consumed by StreamSSE. The CLI's
|
|
15
|
+
// generated cmd/*.go files wrap the SDK's iterator into a Seq2[SSEEvent, error]
|
|
16
|
+
// before passing it in, so this runtime stays SDK-agnostic. Go generics do not
|
|
17
|
+
// support struct-field access through a type parameter, so this is a plain
|
|
18
|
+
// concrete struct rather than a constrained generic.
|
|
19
|
+
type SSEEvent struct {
|
|
20
|
+
Data string
|
|
21
|
+
Event string
|
|
22
|
+
ID string
|
|
23
|
+
Retry int
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
// streamEvent is the on-wire shape that gets emitted for each SSE event.
|
|
27
|
+
type streamEvent struct {
|
|
28
|
+
Event string `json:"event,omitempty"`
|
|
29
|
+
ID string `json:"id,omitempty"`
|
|
30
|
+
Data json.RawMessage `json:"data"`
|
|
31
|
+
Retry int `json:"retry,omitempty"`
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
// StreamSSE consumes an iter.Seq2 of SSE events and writes them to w.
|
|
35
|
+
//
|
|
36
|
+
// --output modes:
|
|
37
|
+
//
|
|
38
|
+
// ndjson (default for streams) → one JSON object per line.
|
|
39
|
+
// yaml → YAML documents separated by "---\n".
|
|
40
|
+
// table → falls back to ndjson; prints a warning to os.Stderr.
|
|
41
|
+
// json → treated as ndjson (no way to represent a live stream as one object).
|
|
42
|
+
func StreamSSE(it iter.Seq2[SSEEvent, error], w io.Writer, mode string) error {
|
|
43
|
+
if mode == "table" {
|
|
44
|
+
fmt.Fprintln(os.Stderr, "warning: --output=table is not supported for streaming endpoints; falling back to ndjson")
|
|
45
|
+
mode = "ndjson"
|
|
46
|
+
}
|
|
47
|
+
for ev, err := range it {
|
|
48
|
+
if err != nil {
|
|
49
|
+
return err
|
|
50
|
+
}
|
|
51
|
+
out := streamEvent{
|
|
52
|
+
Event: ev.Event,
|
|
53
|
+
ID: ev.ID,
|
|
54
|
+
Retry: ev.Retry,
|
|
55
|
+
}
|
|
56
|
+
if ev.Data == "" {
|
|
57
|
+
out.Data = json.RawMessage("null")
|
|
58
|
+
} else if json.Valid([]byte(ev.Data)) {
|
|
59
|
+
out.Data = json.RawMessage(ev.Data)
|
|
60
|
+
} else {
|
|
61
|
+
enc, _ := json.Marshal(ev.Data)
|
|
62
|
+
out.Data = enc
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
switch mode {
|
|
66
|
+
case "yaml":
|
|
67
|
+
enc, err := yaml.Marshal(out)
|
|
68
|
+
if err != nil {
|
|
69
|
+
return err
|
|
70
|
+
}
|
|
71
|
+
if _, err := w.Write(enc); err != nil {
|
|
72
|
+
return err
|
|
73
|
+
}
|
|
74
|
+
if _, err := fmt.Fprint(w, "---\n"); err != nil {
|
|
75
|
+
return err
|
|
76
|
+
}
|
|
77
|
+
default:
|
|
78
|
+
enc, err := json.Marshal(out)
|
|
79
|
+
if err != nil {
|
|
80
|
+
return err
|
|
81
|
+
}
|
|
82
|
+
if _, err := fmt.Fprintln(w, string(enc)); err != nil {
|
|
83
|
+
return err
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return nil
|
|
88
|
+
}
|
package/dist/cli.d.ts
CHANGED
package/dist/cli.js
ADDED
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { existsSync, statSync, watch } from "node:fs";
|
|
3
|
+
import { dirname, resolve } from "node:path";
|
|
4
|
+
import { createModuleLoader, findViteConfig, loadHoneyPluginConfigs } from "./codegen-load.js";
|
|
5
|
+
import { runCli } from "./gen-process.js";
|
|
6
|
+
import { parseGenerateArgs, parseInitFlags, USAGE, UsageError } from "./cli-args.js";
|
|
7
|
+
import { runInit } from "./init.js";
|
|
8
|
+
import { generateAndWrite, generatedOutputs, isGeneratedOutput, resolveHoneyConfig } from "./plugin.js";
|
|
9
|
+
import { WATCH_IGNORE_RE } from "./glob.js";
|
|
10
|
+
import { setCodegenProcess } from "./serve-slot.js";
|
|
11
|
+
function applyCodegenFlags(target, flags) {
|
|
12
|
+
if (!target.codegen)
|
|
13
|
+
target.codegen = {};
|
|
14
|
+
const cg = target.codegen;
|
|
15
|
+
if (flags.mergeTree)
|
|
16
|
+
cg.mergeTree = flags.mergeTree;
|
|
17
|
+
if (flags.manifest)
|
|
18
|
+
cg.manifest = true;
|
|
19
|
+
if (flags.sdk)
|
|
20
|
+
cg.sdk = true;
|
|
21
|
+
if (flags.tree)
|
|
22
|
+
cg.tree = true;
|
|
23
|
+
if (flags.types)
|
|
24
|
+
cg.types = true;
|
|
25
|
+
const cliOverride = buildCliConfigFromFlags(flags);
|
|
26
|
+
if (cliOverride)
|
|
27
|
+
cg.cli = cliOverride;
|
|
28
|
+
}
|
|
29
|
+
function buildCliConfigFromFlags(flags) {
|
|
30
|
+
if (!flags.cli && !flags.cliOut && !flags.cliBinaryName)
|
|
31
|
+
return undefined;
|
|
32
|
+
if (!flags.cliOut || !flags.cliBinaryName) {
|
|
33
|
+
throw new UsageError("--cli requires --cli-out and --cli-binary-name");
|
|
34
|
+
}
|
|
35
|
+
return {
|
|
36
|
+
binaryName: flags.cliBinaryName,
|
|
37
|
+
configName: flags.cliConfigName,
|
|
38
|
+
defaultBaseURL: flags.cliDefaultBaseUrl,
|
|
39
|
+
envPrefix: flags.cliEnvPrefix,
|
|
40
|
+
modulePath: flags.cliModulePath,
|
|
41
|
+
out: flags.cliOut,
|
|
42
|
+
sdkModulePath: flags.cliSdkModulePath,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
/** Picks one honey() config: `--plugin` by index, else the only one, else the one whose app is `--app`. */
|
|
46
|
+
function selectPluginConfig(configs, flags, configPath) {
|
|
47
|
+
if (flags.plugin !== undefined) {
|
|
48
|
+
const picked = configs[flags.plugin];
|
|
49
|
+
if (!picked) {
|
|
50
|
+
throw new UsageError(`--plugin ${flags.plugin}: ${configPath} has ${configs.length} honey() plugin(s)`);
|
|
51
|
+
}
|
|
52
|
+
return picked;
|
|
53
|
+
}
|
|
54
|
+
if (configs.length <= 1)
|
|
55
|
+
return configs[0];
|
|
56
|
+
const byApp = flags.app ? configs.filter((c) => c.app && resolve(c.app) === resolve(flags.app)) : [];
|
|
57
|
+
if (byApp.length === 1)
|
|
58
|
+
return byApp[0];
|
|
59
|
+
const apps = configs.map((c, i) => ` ${i}: ${c.app ?? "(no app)"}`).join("\n");
|
|
60
|
+
throw new UsageError(`${configPath} has ${configs.length} honey() plugins; pick one with --plugin <n>:\n${apps}`);
|
|
61
|
+
}
|
|
62
|
+
async function resolveConfig(cwd, flags, load) {
|
|
63
|
+
const configPath = flags.config ? resolve(cwd, flags.config) : findViteConfig(cwd);
|
|
64
|
+
if (flags.config && !existsSync(configPath)) {
|
|
65
|
+
throw new UsageError(`config file not found: ${flags.config}`);
|
|
66
|
+
}
|
|
67
|
+
let raw;
|
|
68
|
+
if (configPath) {
|
|
69
|
+
const command = process.env.HONEY_VITE_COMMAND === "serve" ? "serve" : "build";
|
|
70
|
+
const mode = process.env.HONEY_VITE_MODE ?? (command === "serve" ? "development" : "production");
|
|
71
|
+
const configs = await loadHoneyPluginConfigs(configPath, load, { command, mode });
|
|
72
|
+
if (configs.length === 0 && (flags.config || flags.plugin !== undefined || !flags.app)) {
|
|
73
|
+
throw new UsageError(`no honey() plugin found in ${configPath}; add honey() to it or pass --app`);
|
|
74
|
+
}
|
|
75
|
+
const picked = selectPluginConfig(configs, flags, configPath);
|
|
76
|
+
if (picked)
|
|
77
|
+
raw = { ...picked, codegen: { ...picked.codegen } };
|
|
78
|
+
}
|
|
79
|
+
if (raw) {
|
|
80
|
+
if (flags.app)
|
|
81
|
+
raw.app = flags.app;
|
|
82
|
+
}
|
|
83
|
+
else if (flags.app) {
|
|
84
|
+
raw = { app: flags.app };
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
throw new UsageError("No config found. Provide a vite.config.ts with honey() or use --app.");
|
|
88
|
+
}
|
|
89
|
+
applyCodegenFlags(raw, flags);
|
|
90
|
+
return resolveHoneyConfig(raw);
|
|
91
|
+
}
|
|
92
|
+
/** One generation in this process, then exit: whatever the app left running must not keep it alive. */
|
|
93
|
+
async function generateOnce(cwd, flags) {
|
|
94
|
+
setCodegenProcess(true);
|
|
95
|
+
const load = await createModuleLoader({ fresh: false, from: resolve(cwd, "index.ts") });
|
|
96
|
+
const resolved = await resolveConfig(cwd, flags, load);
|
|
97
|
+
try {
|
|
98
|
+
await generateAndWrite(resolved, cwd, { load });
|
|
99
|
+
}
|
|
100
|
+
catch (err) {
|
|
101
|
+
console.error("honey: generation failed", err);
|
|
102
|
+
process.exit(1);
|
|
103
|
+
}
|
|
104
|
+
console.log("honey: generated");
|
|
105
|
+
process.exit(0);
|
|
106
|
+
}
|
|
107
|
+
/** Watch mode: every generation runs in a fresh child process, so edits to any imported file are seen. */
|
|
108
|
+
async function watchAndGenerate(cwd, flags, args) {
|
|
109
|
+
setCodegenProcess(true);
|
|
110
|
+
const load = await createModuleLoader({ fresh: true, from: resolve(cwd, "index.ts") });
|
|
111
|
+
const resolved = await resolveConfig(cwd, flags, load);
|
|
112
|
+
if (!resolved.app)
|
|
113
|
+
throw new UsageError("--watch requires --app or a honey() config with app");
|
|
114
|
+
setCodegenProcess(false);
|
|
115
|
+
const childArgs = ["generate", ...args.filter((a) => a !== "--watch" && a !== "--watch=true")];
|
|
116
|
+
const outputs = generatedOutputs(resolved, cwd);
|
|
117
|
+
/* a generation creating the directory an output lives in is not an edit */
|
|
118
|
+
const outputParents = new Set(outputs.files.map((file) => dirname(file)));
|
|
119
|
+
let running = false;
|
|
120
|
+
let pending = false;
|
|
121
|
+
const generate = async () => {
|
|
122
|
+
if (running) {
|
|
123
|
+
pending = true;
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
running = true;
|
|
127
|
+
try {
|
|
128
|
+
await runCli(childArgs, { cwd });
|
|
129
|
+
}
|
|
130
|
+
catch {
|
|
131
|
+
/* the child already printed why */
|
|
132
|
+
}
|
|
133
|
+
finally {
|
|
134
|
+
running = false;
|
|
135
|
+
}
|
|
136
|
+
if (pending) {
|
|
137
|
+
pending = false;
|
|
138
|
+
await generate();
|
|
139
|
+
}
|
|
140
|
+
};
|
|
141
|
+
let debounce;
|
|
142
|
+
const schedule = () => {
|
|
143
|
+
clearTimeout(debounce);
|
|
144
|
+
debounce = setTimeout(() => void generate(), 100);
|
|
145
|
+
};
|
|
146
|
+
/* Arm the watcher and read the poll baseline before saying so and before the first generation:
|
|
147
|
+
* an edit made after "watching" or while the first generation runs queues a rerun instead of
|
|
148
|
+
* landing in the gap before the watcher exists. */
|
|
149
|
+
const appAbs = resolve(cwd, resolved.app);
|
|
150
|
+
const srcDir = dirname(appAbs);
|
|
151
|
+
watch(srcDir, { recursive: true }, (_event, filename) => {
|
|
152
|
+
if (!filename)
|
|
153
|
+
return;
|
|
154
|
+
const abs = resolve(srcDir, String(filename));
|
|
155
|
+
if (WATCH_IGNORE_RE.test(abs) || isGeneratedOutput(abs, outputs) || outputParents.has(abs))
|
|
156
|
+
return;
|
|
157
|
+
schedule();
|
|
158
|
+
});
|
|
159
|
+
/* recursive fs.watch misses replace-by-rename saves on some platforms; poll the entry too */
|
|
160
|
+
let lastMtime = mtimeOf(appAbs);
|
|
161
|
+
setInterval(() => {
|
|
162
|
+
const mtime = mtimeOf(appAbs);
|
|
163
|
+
if (mtime === lastMtime)
|
|
164
|
+
return;
|
|
165
|
+
lastMtime = mtime;
|
|
166
|
+
schedule();
|
|
167
|
+
}, 250);
|
|
168
|
+
console.log(`honey: watching ${srcDir}`);
|
|
169
|
+
await generate();
|
|
170
|
+
}
|
|
171
|
+
function mtimeOf(path) {
|
|
172
|
+
return existsSync(path) ? statSync(path).mtimeMs : 0;
|
|
173
|
+
}
|
|
174
|
+
async function main() {
|
|
175
|
+
const args = process.argv.slice(2);
|
|
176
|
+
const command = args[0];
|
|
177
|
+
if (command === "-h" || command === "--help") {
|
|
178
|
+
console.log(USAGE);
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
if (command === "init") {
|
|
182
|
+
runInit(process.cwd(), parseInitFlags(args.slice(1)));
|
|
183
|
+
return;
|
|
184
|
+
}
|
|
185
|
+
if (command !== "generate") {
|
|
186
|
+
throw new UsageError(command ? `unknown command: ${command}` : "missing command");
|
|
187
|
+
}
|
|
188
|
+
const rest = args.slice(1);
|
|
189
|
+
const flags = parseGenerateArgs(rest);
|
|
190
|
+
if (flags.help) {
|
|
191
|
+
console.log(USAGE);
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
const cwd = process.cwd();
|
|
195
|
+
if (flags.watch)
|
|
196
|
+
await watchAndGenerate(cwd, flags, rest);
|
|
197
|
+
else
|
|
198
|
+
await generateOnce(cwd, flags);
|
|
199
|
+
}
|
|
200
|
+
main().catch((err) => {
|
|
201
|
+
if (err instanceof UsageError) {
|
|
202
|
+
console.error(`honey: ${err.message}\n\n${USAGE}`);
|
|
203
|
+
}
|
|
204
|
+
else {
|
|
205
|
+
console.error(err);
|
|
206
|
+
}
|
|
207
|
+
process.exit(1);
|
|
208
|
+
});
|
|
209
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/** Absolute client bases: http(s) and ws(s). Case-insensitive per WHATWG. */
|
|
2
|
+
const ABSOLUTE_CLIENT_URL = /^(?:https?|wss?):\/\//i;
|
|
3
|
+
export function invalidBaseURLError(baseURL) {
|
|
4
|
+
return new Error(`Invalid baseURL ${JSON.stringify(baseURL)}: expected an absolute http(s): or ws(s): URL. Path-only values such as "/api" resolve against location.origin in browsers.`);
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Honor `config.fetch` as-is. If omitted, bind the environment fetch so storing
|
|
8
|
+
* it on a client field does not throw `Illegal invocation` in browsers.
|
|
9
|
+
*/
|
|
10
|
+
export function bindDefaultFetch(custom) {
|
|
11
|
+
if (custom)
|
|
12
|
+
return custom;
|
|
13
|
+
const nativeFetch = globalThis.fetch;
|
|
14
|
+
return typeof nativeFetch === "function" ? nativeFetch.bind(globalThis) : nativeFetch;
|
|
15
|
+
}
|
|
16
|
+
function currentLocationOrigin() {
|
|
17
|
+
let origin;
|
|
18
|
+
try {
|
|
19
|
+
origin = globalThis.location?.origin;
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
return undefined;
|
|
23
|
+
}
|
|
24
|
+
if (typeof origin !== "string" || origin === "" || origin === "null")
|
|
25
|
+
return undefined;
|
|
26
|
+
if (!ABSOLUTE_CLIENT_URL.test(origin))
|
|
27
|
+
return undefined;
|
|
28
|
+
return origin;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Parse `baseURL`. Absolute `http(s):` / `ws(s):` URLs are unchanged. Path-only
|
|
32
|
+
* values such as `/api` resolve against `location.origin` when present.
|
|
33
|
+
*/
|
|
34
|
+
export function parseClientBaseURL(baseURL) {
|
|
35
|
+
if (ABSOLUTE_CLIENT_URL.test(baseURL))
|
|
36
|
+
return new URL(baseURL);
|
|
37
|
+
const origin = currentLocationOrigin();
|
|
38
|
+
if (origin !== undefined) {
|
|
39
|
+
try {
|
|
40
|
+
return new URL(baseURL, origin);
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
throw invalidBaseURLError(baseURL);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
throw invalidBaseURLError(baseURL);
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=defaults.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/client/defaults.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,MAAM,mBAAmB,GAAG,wBAAwB,CAAA;AAEpD,MAAM,UAAU,mBAAmB,CAAC,OAAe;IAClD,OAAO,IAAI,KAAK,CACf,mBAAmB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,6HAA6H,CACvK,CAAA;AACF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAqB;IACrD,IAAI,MAAM;QAAE,OAAO,MAAM,CAAA;IACzB,MAAM,WAAW,GAAG,UAAU,CAAC,KAAK,CAAA;IACpC,OAAO,OAAO,WAAW,KAAK,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAE,WAA4B,CAAA;AACxG,CAAC;AAED,SAAS,qBAAqB;IAC7B,IAAI,MAAe,CAAA;IACnB,IAAI,CAAC;QACJ,MAAM,GAAG,UAAU,CAAC,QAAQ,EAAE,MAAM,CAAA;IACrC,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,SAAS,CAAA;IACjB,CAAC;IACD,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,EAAE,IAAI,MAAM,KAAK,MAAM;QAAE,OAAO,SAAS,CAAA;IACtF,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC;QAAE,OAAO,SAAS,CAAA;IACvD,OAAO,MAAM,CAAA;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAe;IACjD,IAAI,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,CAAA;IAC9D,MAAM,MAAM,GAAG,qBAAqB,EAAE,CAAA;IACtC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QAC1B,IAAI,CAAC;YACJ,OAAO,IAAI,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;QAChC,CAAC;QAAC,MAAM,CAAC;YACR,MAAM,mBAAmB,CAAC,OAAO,CAAC,CAAA;QACnC,CAAC;IACF,CAAC;IACD,MAAM,mBAAmB,CAAC,OAAO,CAAC,CAAA;AACnC,CAAC"}
|