hono 4.13.13 → 5.0.0-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/{types/compose.d.ts → compose.d.ts} +1 -0
- package/dist/compose.js +10 -5
- package/dist/{types/context.d.ts → context.d.ts} +15 -15
- package/dist/context.js +79 -47
- package/dist/helper/factory/define-handler.d.ts +150 -0
- package/dist/helper/factory/define-handler.js +165 -0
- package/dist/{types/helper → helper}/factory/index.d.ts +30 -1
- package/dist/helper/factory/index.js +31 -3
- package/dist/{types/helper → helper}/ssg/middleware.d.ts +0 -6
- package/dist/helper/ssg/middleware.js +1 -16
- package/dist/{types/helper → helper}/ssg/ssg.d.ts +0 -12
- package/dist/helper/ssg/ssg.js +0 -3
- package/dist/{types/hono-base.d.ts → hono-base.d.ts} +3 -60
- package/dist/hono-base.js +6 -97
- package/dist/{types/hono.d.ts → hono.d.ts} +1 -1
- package/dist/{types/middleware → middleware}/basic-auth/index.d.ts +4 -3
- package/dist/middleware/basic-auth/index.js +1 -1
- package/dist/{types/middleware → middleware}/bearer-auth/index.d.ts +4 -27
- package/dist/middleware/bearer-auth/index.js +4 -4
- package/dist/middleware/language/language.js +1 -1
- package/dist/middleware/logger/index.js +6 -8
- package/dist/{types/middleware → middleware}/serve-static/index.d.ts +0 -4
- package/dist/{types/preset → preset}/quick.d.ts +1 -1
- package/dist/{types/preset → preset}/tiny.d.ts +1 -1
- package/dist/{types/request.d.ts → request.d.ts} +3 -48
- package/dist/request.js +0 -49
- package/dist/router/linear-router/router.js +4 -6
- package/dist/router/pattern-router/router.js +2 -2
- package/dist/router/reg-exp-router/node.js +1 -1
- package/dist/router/trie-router/node.js +3 -3
- package/dist/utils/buffer.d.ts +11 -0
- package/dist/utils/buffer.js +1 -8
- package/dist/utils/color.d.ts +16 -0
- package/dist/utils/color.js +7 -23
- package/dist/{types/utils → utils}/http-status.d.ts +1 -9
- package/dist/{types/utils → utils}/url.d.ts +0 -5
- package/dist/utils/url.js +1 -11
- package/dist/{types/validator → validator}/validator.d.ts +5 -0
- package/dist/validator/validator.js +46 -49
- package/package.json +209 -350
- package/dist/adapter/aws-lambda/conninfo.js +0 -43
- package/dist/adapter/aws-lambda/handler.js +0 -342
- package/dist/adapter/aws-lambda/index.js +0 -3
- package/dist/adapter/aws-lambda/types.js +0 -1
- package/dist/adapter/bun/conninfo.js +0 -22
- package/dist/adapter/bun/index.js +0 -6
- package/dist/adapter/bun/serve-static.js +0 -30
- package/dist/adapter/bun/server.js +0 -11
- package/dist/adapter/bun/ssg.js +0 -27
- package/dist/adapter/bun/websocket.js +0 -66
- package/dist/adapter/cloudflare-pages/conninfo.js +0 -24
- package/dist/adapter/cloudflare-pages/handler.js +0 -64
- package/dist/adapter/cloudflare-pages/index.js +0 -3
- package/dist/adapter/cloudflare-workers/conninfo.js +0 -7
- package/dist/adapter/cloudflare-workers/index.js +0 -4
- package/dist/adapter/cloudflare-workers/serve-static-module.js +0 -7
- package/dist/adapter/cloudflare-workers/serve-static.js +0 -28
- package/dist/adapter/cloudflare-workers/utils.js +0 -22
- package/dist/adapter/cloudflare-workers/websocket.js +0 -33
- package/dist/adapter/deno/conninfo.js +0 -17
- package/dist/adapter/deno/deno.d.js +0 -1
- package/dist/adapter/deno/index.js +0 -5
- package/dist/adapter/deno/serve-static.js +0 -35
- package/dist/adapter/deno/ssg.js +0 -29
- package/dist/adapter/deno/websocket.js +0 -32
- package/dist/adapter/lambda-edge/conninfo.js +0 -7
- package/dist/adapter/lambda-edge/handler.js +0 -111
- package/dist/adapter/lambda-edge/index.js +0 -3
- package/dist/adapter/netlify/conninfo.js +0 -24
- package/dist/adapter/netlify/handler.js +0 -11
- package/dist/adapter/netlify/index.js +0 -3
- package/dist/adapter/netlify/mod.js +0 -3
- package/dist/adapter/service-worker/handler.js +0 -16
- package/dist/adapter/service-worker/index.js +0 -25
- package/dist/adapter/service-worker/types.js +0 -1
- package/dist/adapter/vercel/conninfo.js +0 -7
- package/dist/adapter/vercel/handler.js +0 -9
- package/dist/adapter/vercel/index.js +0 -3
- package/dist/cjs/_virtual/_rolldown/runtime.js +0 -33
- package/dist/cjs/adapter/aws-lambda/conninfo.js +0 -44
- package/dist/cjs/adapter/aws-lambda/handler.js +0 -352
- package/dist/cjs/adapter/aws-lambda/index.js +0 -7
- package/dist/cjs/adapter/aws-lambda/types.js +0 -0
- package/dist/cjs/adapter/bun/conninfo.js +0 -23
- package/dist/cjs/adapter/bun/index.js +0 -14
- package/dist/cjs/adapter/bun/serve-static.js +0 -31
- package/dist/cjs/adapter/bun/server.js +0 -12
- package/dist/cjs/adapter/bun/ssg.js +0 -29
- package/dist/cjs/adapter/bun/websocket.js +0 -70
- package/dist/cjs/adapter/cloudflare-pages/conninfo.js +0 -25
- package/dist/cjs/adapter/cloudflare-pages/handler.js +0 -67
- package/dist/cjs/adapter/cloudflare-pages/index.js +0 -7
- package/dist/cjs/adapter/cloudflare-workers/conninfo.js +0 -8
- package/dist/cjs/adapter/cloudflare-workers/index.js +0 -7
- package/dist/cjs/adapter/cloudflare-workers/serve-static-module.js +0 -8
- package/dist/cjs/adapter/cloudflare-workers/serve-static.js +0 -29
- package/dist/cjs/adapter/cloudflare-workers/utils.js +0 -23
- package/dist/cjs/adapter/cloudflare-workers/websocket.js +0 -34
- package/dist/cjs/adapter/deno/conninfo.js +0 -18
- package/dist/cjs/adapter/deno/deno.d.js +0 -0
- package/dist/cjs/adapter/deno/index.js +0 -10
- package/dist/cjs/adapter/deno/serve-static.js +0 -36
- package/dist/cjs/adapter/deno/ssg.js +0 -31
- package/dist/cjs/adapter/deno/websocket.js +0 -33
- package/dist/cjs/adapter/lambda-edge/conninfo.js +0 -8
- package/dist/cjs/adapter/lambda-edge/handler.js +0 -116
- package/dist/cjs/adapter/lambda-edge/index.js +0 -5
- package/dist/cjs/adapter/netlify/conninfo.js +0 -25
- package/dist/cjs/adapter/netlify/handler.js +0 -12
- package/dist/cjs/adapter/netlify/index.js +0 -5
- package/dist/cjs/adapter/netlify/mod.js +0 -5
- package/dist/cjs/adapter/service-worker/handler.js +0 -17
- package/dist/cjs/adapter/service-worker/index.js +0 -27
- package/dist/cjs/adapter/service-worker/types.js +0 -0
- package/dist/cjs/adapter/vercel/conninfo.js +0 -8
- package/dist/cjs/adapter/vercel/handler.js +0 -10
- package/dist/cjs/adapter/vercel/index.js +0 -5
- package/dist/cjs/client/client.js +0 -145
- package/dist/cjs/client/fetch-result-please.js +0 -67
- package/dist/cjs/client/index.js +0 -7
- package/dist/cjs/client/types.js +0 -0
- package/dist/cjs/client/utils.js +0 -70
- package/dist/cjs/compose.js +0 -51
- package/dist/cjs/context.js +0 -383
- package/dist/cjs/helper/accepts/accepts.js +0 -54
- package/dist/cjs/helper/accepts/index.js +0 -3
- package/dist/cjs/helper/adapter/index.js +0 -41
- package/dist/cjs/helper/conninfo/index.js +0 -0
- package/dist/cjs/helper/conninfo/types.js +0 -0
- package/dist/cjs/helper/cookie/index.js +0 -89
- package/dist/cjs/helper/css/common.js +0 -194
- package/dist/cjs/helper/css/index.js +0 -142
- package/dist/cjs/helper/dev/index.js +0 -53
- package/dist/cjs/helper/factory/index.js +0 -33
- package/dist/cjs/helper/html/index.js +0 -34
- package/dist/cjs/helper/proxy/index.js +0 -122
- package/dist/cjs/helper/route/index.js +0 -128
- package/dist/cjs/helper/ssg/index.js +0 -19
- package/dist/cjs/helper/ssg/middleware.js +0 -65
- package/dist/cjs/helper/ssg/plugins.js +0 -68
- package/dist/cjs/helper/ssg/ssg.js +0 -220
- package/dist/cjs/helper/ssg/utils.js +0 -70
- package/dist/cjs/helper/streaming/index.js +0 -8
- package/dist/cjs/helper/streaming/sse.js +0 -59
- package/dist/cjs/helper/streaming/stream.js +0 -26
- package/dist/cjs/helper/streaming/text.js +0 -12
- package/dist/cjs/helper/streaming/utils.js +0 -16
- package/dist/cjs/helper/testing/index.js +0 -18
- package/dist/cjs/helper/websocket/index.js +0 -56
- package/dist/cjs/hono-base.js +0 -351
- package/dist/cjs/hono.js +0 -29
- package/dist/cjs/http-exception.js +0 -56
- package/dist/cjs/index.js +0 -22
- package/dist/cjs/jsx/base.js +0 -266
- package/dist/cjs/jsx/children.js +0 -19
- package/dist/cjs/jsx/components.js +0 -147
- package/dist/cjs/jsx/constants.js +0 -15
- package/dist/cjs/jsx/context.js +0 -170
- package/dist/cjs/jsx/dom/client.js +0 -56
- package/dist/cjs/jsx/dom/components.js +0 -26
- package/dist/cjs/jsx/dom/context.js +0 -43
- package/dist/cjs/jsx/dom/css.js +0 -153
- package/dist/cjs/jsx/dom/hooks/index.js +0 -65
- package/dist/cjs/jsx/dom/index.js +0 -122
- package/dist/cjs/jsx/dom/intrinsic-element/components.js +0 -306
- package/dist/cjs/jsx/dom/jsx-dev-runtime.js +0 -17
- package/dist/cjs/jsx/dom/jsx-runtime.js +0 -5
- package/dist/cjs/jsx/dom/render.js +0 -525
- package/dist/cjs/jsx/dom/server.js +0 -44
- package/dist/cjs/jsx/dom/utils.js +0 -9
- package/dist/cjs/jsx/hooks/index.js +0 -280
- package/dist/cjs/jsx/index.js +0 -89
- package/dist/cjs/jsx/intrinsic-element/common.js +0 -27
- package/dist/cjs/jsx/intrinsic-element/components.js +0 -138
- package/dist/cjs/jsx/intrinsic-elements.js +0 -0
- package/dist/cjs/jsx/jsx-dev-runtime.js +0 -16
- package/dist/cjs/jsx/jsx-runtime.js +0 -37
- package/dist/cjs/jsx/streaming.js +0 -135
- package/dist/cjs/jsx/types.js +0 -0
- package/dist/cjs/jsx/utils.js +0 -116
- package/dist/cjs/middleware/basic-auth/index.js +0 -100
- package/dist/cjs/middleware/bearer-auth/index.js +0 -97
- package/dist/cjs/middleware/body-limit/index.js +0 -69
- package/dist/cjs/middleware/cache/index.js +0 -173
- package/dist/cjs/middleware/combine/index.js +0 -141
- package/dist/cjs/middleware/compress/index.js +0 -82
- package/dist/cjs/middleware/context-storage/index.js +0 -55
- package/dist/cjs/middleware/cors/index.js +0 -109
- package/dist/cjs/middleware/csrf/index.js +0 -106
- package/dist/cjs/middleware/etag/digest.js +0 -62
- package/dist/cjs/middleware/etag/index.js +0 -79
- package/dist/cjs/middleware/ip-restriction/index.js +0 -168
- package/dist/cjs/middleware/jsx-renderer/index.js +0 -104
- package/dist/cjs/middleware/jwk/index.js +0 -3
- package/dist/cjs/middleware/jwk/jwk.js +0 -122
- package/dist/cjs/middleware/jwt/index.js +0 -9
- package/dist/cjs/middleware/jwt/jwt.js +0 -124
- package/dist/cjs/middleware/language/index.js +0 -7
- package/dist/cjs/middleware/language/language.js +0 -208
- package/dist/cjs/middleware/logger/index.js +0 -51
- package/dist/cjs/middleware/method-not-allowed/index.js +0 -84
- package/dist/cjs/middleware/method-override/index.js +0 -105
- package/dist/cjs/middleware/mount/index.js +0 -71
- package/dist/cjs/middleware/powered-by/index.js +0 -25
- package/dist/cjs/middleware/pretty-json/index.js +0 -41
- package/dist/cjs/middleware/request-id/index.js +0 -3
- package/dist/cjs/middleware/request-id/request-id.js +0 -35
- package/dist/cjs/middleware/secure-headers/index.js +0 -4
- package/dist/cjs/middleware/secure-headers/permissions-policy.js +0 -0
- package/dist/cjs/middleware/secure-headers/secure-headers.js +0 -166
- package/dist/cjs/middleware/serve-static/index.js +0 -62
- package/dist/cjs/middleware/serve-static/path.js +0 -17
- package/dist/cjs/middleware/timeout/index.js +0 -42
- package/dist/cjs/middleware/timing/index.js +0 -7
- package/dist/cjs/middleware/timing/timing.js +0 -189
- package/dist/cjs/middleware/trailing-slash/index.js +0 -89
- package/dist/cjs/package.json +0 -3
- package/dist/cjs/preset/quick.js +0 -19
- package/dist/cjs/preset/tiny.js +0 -16
- package/dist/cjs/request/constants.js +0 -5
- package/dist/cjs/request.js +0 -337
- package/dist/cjs/router/linear-router/index.js +0 -3
- package/dist/cjs/router/linear-router/router.js +0 -97
- package/dist/cjs/router/pattern-router/index.js +0 -3
- package/dist/cjs/router/pattern-router/router.js +0 -42
- package/dist/cjs/router/reg-exp-router/index.js +0 -7
- package/dist/cjs/router/reg-exp-router/matcher.js +0 -21
- package/dist/cjs/router/reg-exp-router/node.js +0 -96
- package/dist/cjs/router/reg-exp-router/prepared-router.js +0 -97
- package/dist/cjs/router/reg-exp-router/router.js +0 -102
- package/dist/cjs/router/reg-exp-router/trie.js +0 -74
- package/dist/cjs/router/smart-router/index.js +0 -3
- package/dist/cjs/router/smart-router/router.js +0 -50
- package/dist/cjs/router/trie-router/index.js +0 -3
- package/dist/cjs/router/trie-router/node.js +0 -135
- package/dist/cjs/router/trie-router/router.js +0 -16
- package/dist/cjs/router/utils.js +0 -5
- package/dist/cjs/router.js +0 -40
- package/dist/cjs/types.js +0 -5
- package/dist/cjs/utils/accept.js +0 -194
- package/dist/cjs/utils/basic-auth.js +0 -21
- package/dist/cjs/utils/body.js +0 -97
- package/dist/cjs/utils/buffer.js +0 -55
- package/dist/cjs/utils/color.js +0 -39
- package/dist/cjs/utils/compress.js +0 -12
- package/dist/cjs/utils/concurrent.js +0 -31
- package/dist/cjs/utils/constants.js +0 -8
- package/dist/cjs/utils/cookie.js +0 -129
- package/dist/cjs/utils/crypto.js +0 -38
- package/dist/cjs/utils/encode.js +0 -37
- package/dist/cjs/utils/filepath.js +0 -27
- package/dist/cjs/utils/handler.js +0 -14
- package/dist/cjs/utils/headers.js +0 -0
- package/dist/cjs/utils/html.js +0 -109
- package/dist/cjs/utils/http-status.js +0 -0
- package/dist/cjs/utils/ipaddr.js +0 -247
- package/dist/cjs/utils/jwt/index.js +0 -15
- package/dist/cjs/utils/jwt/jwa.js +0 -25
- package/dist/cjs/utils/jwt/jws.js +0 -135
- package/dist/cjs/utils/jwt/jwt.js +0 -136
- package/dist/cjs/utils/jwt/types.js +0 -124
- package/dist/cjs/utils/jwt/utf8.js +0 -11
- package/dist/cjs/utils/mime.js +0 -80
- package/dist/cjs/utils/stream.js +0 -89
- package/dist/cjs/utils/types.js +0 -0
- package/dist/cjs/utils/url.js +0 -215
- package/dist/cjs/validator/index.js +0 -3
- package/dist/cjs/validator/utils.js +0 -0
- package/dist/cjs/validator/validator.js +0 -65
- package/dist/types/adapter/aws-lambda/conninfo.d.ts +0 -30
- package/dist/types/adapter/aws-lambda/handler.d.ts +0 -230
- package/dist/types/adapter/aws-lambda/index.d.ts +0 -4
- package/dist/types/adapter/aws-lambda/types.d.ts +0 -183
- package/dist/types/adapter/bun/conninfo.d.ts +0 -10
- package/dist/types/adapter/bun/index.d.ts +0 -6
- package/dist/types/adapter/bun/serve-static.d.ts +0 -8
- package/dist/types/adapter/bun/server.d.ts +0 -11
- package/dist/types/adapter/bun/ssg.d.ts +0 -17
- package/dist/types/adapter/bun/websocket.d.ts +0 -54
- package/dist/types/adapter/cloudflare-pages/conninfo.d.ts +0 -24
- package/dist/types/adapter/cloudflare-pages/handler.d.ts +0 -45
- package/dist/types/adapter/cloudflare-pages/index.d.ts +0 -3
- package/dist/types/adapter/cloudflare-workers/conninfo.d.ts +0 -7
- package/dist/types/adapter/cloudflare-workers/index.d.ts +0 -4
- package/dist/types/adapter/cloudflare-workers/serve-static-module.d.ts +0 -7
- package/dist/types/adapter/cloudflare-workers/serve-static.d.ts +0 -21
- package/dist/types/adapter/cloudflare-workers/utils.d.ts +0 -13
- package/dist/types/adapter/cloudflare-workers/websocket.d.ts +0 -7
- package/dist/types/adapter/deno/conninfo.d.ts +0 -10
- package/dist/types/adapter/deno/deno.d.ts +0 -1
- package/dist/types/adapter/deno/index.d.ts +0 -5
- package/dist/types/adapter/deno/serve-static.d.ts +0 -8
- package/dist/types/adapter/deno/ssg.d.ts +0 -17
- package/dist/types/adapter/deno/websocket.d.ts +0 -7
- package/dist/types/adapter/lambda-edge/conninfo.d.ts +0 -7
- package/dist/types/adapter/lambda-edge/handler.d.ts +0 -113
- package/dist/types/adapter/lambda-edge/index.d.ts +0 -3
- package/dist/types/adapter/netlify/conninfo.d.ts +0 -24
- package/dist/types/adapter/netlify/handler.d.ts +0 -7
- package/dist/types/adapter/netlify/index.d.ts +0 -3
- package/dist/types/adapter/netlify/mod.d.ts +0 -3
- package/dist/types/adapter/service-worker/handler.d.ts +0 -18
- package/dist/types/adapter/service-worker/index.d.ts +0 -26
- package/dist/types/adapter/service-worker/types.d.ts +0 -17
- package/dist/types/adapter/vercel/conninfo.d.ts +0 -7
- package/dist/types/adapter/vercel/handler.d.ts +0 -7
- package/dist/types/adapter/vercel/index.d.ts +0 -3
- package/dist/types/package.json +0 -3
- package/dist/types/utils/buffer.d.ts +0 -19
- package/dist/types/utils/color.d.ts +0 -23
- package/dist/{types/client → client}/client.d.ts +0 -0
- package/dist/{types/client → client}/fetch-result-please.d.ts +0 -0
- package/dist/{types/client → client}/index.d.ts +0 -0
- package/dist/{types/client → client}/types.d.ts +1 -1
- package/dist/{types/client → client}/utils.d.ts +0 -0
- package/dist/{types/helper → helper}/accepts/accepts.d.ts +0 -0
- package/dist/{types/helper → helper}/accepts/index.d.ts +0 -0
- package/dist/{types/helper → helper}/adapter/index.d.ts +0 -0
- package/dist/{types/helper → helper}/conninfo/index.d.ts +0 -0
- package/dist/{types/helper → helper}/conninfo/types.d.ts +0 -0
- package/dist/{types/helper → helper}/cookie/index.d.ts +0 -0
- package/dist/{types/helper → helper}/css/common.d.ts +0 -0
- package/dist/{types/helper → helper}/css/index.d.ts +0 -0
- package/dist/{types/helper → helper}/dev/index.d.ts +0 -0
- package/dist/{types/helper → helper}/html/index.d.ts +0 -0
- package/dist/{types/helper → helper}/proxy/index.d.ts +0 -0
- package/dist/{types/helper → helper}/route/index.d.ts +0 -0
- package/dist/{types/helper → helper}/ssg/index.d.ts +0 -0
- package/dist/{types/helper → helper}/ssg/plugins.d.ts +0 -0
- package/dist/{types/helper → helper}/ssg/utils.d.ts +0 -0
- package/dist/{types/helper → helper}/streaming/index.d.ts +0 -0
- package/dist/{types/helper → helper}/streaming/sse.d.ts +0 -0
- package/dist/{types/helper → helper}/streaming/stream.d.ts +0 -0
- package/dist/{types/helper → helper}/streaming/text.d.ts +0 -0
- package/dist/{types/helper → helper}/streaming/utils.d.ts +0 -0
- package/dist/{types/helper → helper}/testing/index.d.ts +0 -0
- package/dist/{types/helper → helper}/websocket/index.d.ts +0 -0
- package/dist/{types/http-exception.d.ts → http-exception.d.ts} +0 -0
- package/dist/{types/index.d.ts → index.d.ts} +0 -0
- package/dist/{types/jsx → jsx}/base.d.ts +0 -0
- package/dist/{types/jsx → jsx}/children.d.ts +0 -0
- package/dist/{types/jsx → jsx}/components.d.ts +0 -0
- package/dist/{types/jsx → jsx}/constants.d.ts +0 -0
- package/dist/{types/jsx → jsx}/context.d.ts +0 -0
- package/dist/{types/jsx → jsx}/dom/client.d.ts +0 -0
- package/dist/{types/jsx → jsx}/dom/components.d.ts +0 -0
- package/dist/{types/jsx → jsx}/dom/context.d.ts +0 -0
- package/dist/{types/jsx → jsx}/dom/css.d.ts +0 -0
- package/dist/{types/jsx → jsx}/dom/hooks/index.d.ts +0 -0
- package/dist/{types/jsx → jsx}/dom/index.d.ts +0 -0
- package/dist/{types/jsx → jsx}/dom/intrinsic-element/components.d.ts +0 -0
- package/dist/{types/jsx → jsx}/dom/jsx-dev-runtime.d.ts +0 -0
- package/dist/{types/jsx → jsx}/dom/jsx-runtime.d.ts +0 -0
- package/dist/{types/jsx → jsx}/dom/render.d.ts +0 -0
- package/dist/{types/jsx → jsx}/dom/server.d.ts +0 -0
- package/dist/{types/jsx → jsx}/dom/utils.d.ts +0 -0
- package/dist/{types/jsx → jsx}/hooks/index.d.ts +0 -0
- package/dist/{types/jsx → jsx}/index.d.ts +0 -0
- package/dist/{types/jsx → jsx}/intrinsic-element/common.d.ts +0 -0
- package/dist/{types/jsx → jsx}/intrinsic-element/components.d.ts +0 -0
- package/dist/{types/jsx → jsx}/intrinsic-elements.d.ts +0 -0
- package/dist/{types/jsx → jsx}/jsx-dev-runtime.d.ts +0 -0
- package/dist/{types/jsx → jsx}/jsx-runtime.d.ts +0 -0
- package/dist/{types/jsx → jsx}/streaming.d.ts +0 -0
- package/dist/{types/jsx → jsx}/types.d.ts +0 -0
- package/dist/{types/jsx → jsx}/utils.d.ts +0 -0
- package/dist/{types/middleware → middleware}/body-limit/index.d.ts +0 -0
- package/dist/{types/middleware → middleware}/cache/index.d.ts +0 -0
- package/dist/{types/middleware → middleware}/combine/index.d.ts +0 -0
- package/dist/{types/middleware → middleware}/compress/index.d.ts +0 -0
- package/dist/{types/middleware → middleware}/context-storage/index.d.ts +0 -0
- package/dist/{types/middleware → middleware}/cors/index.d.ts +0 -0
- package/dist/{types/middleware → middleware}/csrf/index.d.ts +0 -0
- package/dist/{types/middleware → middleware}/etag/digest.d.ts +0 -0
- package/dist/{types/middleware → middleware}/etag/index.d.ts +0 -0
- package/dist/{types/middleware → middleware}/ip-restriction/index.d.ts +0 -0
- package/dist/{types/middleware → middleware}/jsx-renderer/index.d.ts +0 -0
- package/dist/{types/middleware → middleware}/jwk/index.d.ts +0 -0
- package/dist/{types/middleware → middleware}/jwk/jwk.d.ts +0 -0
- package/dist/{types/middleware → middleware}/jwt/index.d.ts +0 -0
- package/dist/{types/middleware → middleware}/jwt/jwt.d.ts +0 -0
- package/dist/{types/middleware → middleware}/language/index.d.ts +0 -0
- package/dist/{types/middleware → middleware}/language/language.d.ts +0 -0
- package/dist/{types/middleware → middleware}/logger/index.d.ts +0 -0
- package/dist/{types/middleware → middleware}/method-not-allowed/index.d.ts +0 -0
- package/dist/{types/middleware → middleware}/method-override/index.d.ts +0 -0
- package/dist/{types/middleware → middleware}/mount/index.d.ts +0 -0
- package/dist/{types/middleware → middleware}/powered-by/index.d.ts +0 -0
- package/dist/{types/middleware → middleware}/pretty-json/index.d.ts +0 -0
- package/dist/{types/middleware → middleware}/request-id/index.d.ts +0 -0
- package/dist/{types/middleware → middleware}/request-id/request-id.d.ts +0 -0
- package/dist/{types/middleware → middleware}/secure-headers/index.d.ts +0 -0
- package/dist/{types/middleware → middleware}/secure-headers/permissions-policy.d.ts +0 -0
- package/dist/{types/middleware → middleware}/secure-headers/secure-headers.d.ts +0 -0
- package/dist/{types/middleware → middleware}/serve-static/path.d.ts +0 -0
- package/dist/{types/middleware → middleware}/timeout/index.d.ts +0 -0
- package/dist/{types/middleware → middleware}/timing/index.d.ts +0 -0
- package/dist/{types/middleware → middleware}/timing/timing.d.ts +0 -0
- package/dist/{types/middleware → middleware}/trailing-slash/index.d.ts +0 -0
- package/dist/{types/request → request}/constants.d.ts +0 -0
- package/dist/{types/router → router}/linear-router/index.d.ts +0 -0
- package/dist/{types/router → router}/linear-router/router.d.ts +0 -0
- package/dist/{types/router → router}/pattern-router/index.d.ts +0 -0
- package/dist/{types/router → router}/pattern-router/router.d.ts +0 -0
- package/dist/{types/router → router}/reg-exp-router/index.d.ts +0 -0
- package/dist/{types/router → router}/reg-exp-router/matcher.d.ts +0 -0
- package/dist/{types/router → router}/reg-exp-router/node.d.ts +0 -0
- package/dist/{types/router → router}/reg-exp-router/prepared-router.d.ts +0 -0
- package/dist/{types/router → router}/reg-exp-router/router.d.ts +0 -0
- package/dist/{types/router → router}/reg-exp-router/trie.d.ts +0 -0
- package/dist/{types/router → router}/smart-router/index.d.ts +0 -0
- package/dist/{types/router → router}/smart-router/router.d.ts +0 -0
- package/dist/{types/router → router}/trie-router/index.d.ts +0 -0
- package/dist/{types/router → router}/trie-router/node.d.ts +0 -0
- package/dist/{types/router → router}/trie-router/router.d.ts +0 -0
- package/dist/{types/router → router}/utils.d.ts +0 -0
- package/dist/{types/router.d.ts → router.d.ts} +0 -0
- package/dist/{types/types.d.ts → types.d.ts} +1 -1
- /package/dist/{types/utils → utils}/accept.d.ts +0 -0
- /package/dist/{types/utils → utils}/basic-auth.d.ts +0 -0
- /package/dist/{types/utils → utils}/body.d.ts +0 -0
- /package/dist/{types/utils → utils}/compress.d.ts +0 -0
- /package/dist/{types/utils → utils}/concurrent.d.ts +0 -0
- /package/dist/{types/utils → utils}/constants.d.ts +0 -0
- /package/dist/{types/utils → utils}/cookie.d.ts +0 -0
- /package/dist/{types/utils → utils}/crypto.d.ts +0 -0
- /package/dist/{types/utils → utils}/encode.d.ts +0 -0
- /package/dist/{types/utils → utils}/filepath.d.ts +0 -0
- /package/dist/{types/utils → utils}/handler.d.ts +0 -0
- /package/dist/{types/utils → utils}/headers.d.ts +0 -0
- /package/dist/{types/utils → utils}/html.d.ts +0 -0
- /package/dist/{types/utils → utils}/ipaddr.d.ts +0 -0
- /package/dist/{types/utils → utils}/jwt/index.d.ts +0 -0
- /package/dist/{types/utils → utils}/jwt/jwa.d.ts +0 -0
- /package/dist/{types/utils → utils}/jwt/jws.d.ts +0 -0
- /package/dist/{types/utils → utils}/jwt/jwt.d.ts +0 -0
- /package/dist/{types/utils → utils}/jwt/types.d.ts +0 -0
- /package/dist/{types/utils → utils}/jwt/utf8.d.ts +0 -0
- /package/dist/{types/utils → utils}/mime.d.ts +0 -0
- /package/dist/{types/utils → utils}/stream.d.ts +0 -0
- /package/dist/{types/utils → utils}/types.d.ts +0 -0
- /package/dist/{types/validator → validator}/index.d.ts +0 -0
- /package/dist/{types/validator → validator}/utils.d.ts +0 -0
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
//#region src/client/fetch-result-please.ts
|
|
3
|
-
/**
|
|
4
|
-
* @description This file is a modified version of `fetch-result-please` (`ofetch`), minimalized and adapted to Hono's custom needs.
|
|
5
|
-
*
|
|
6
|
-
* @link https://www.npmjs.com/package/fetch-result-please
|
|
7
|
-
*/
|
|
8
|
-
const nullBodyResponses = /* @__PURE__ */ new Set([
|
|
9
|
-
101,
|
|
10
|
-
204,
|
|
11
|
-
205,
|
|
12
|
-
304
|
|
13
|
-
]);
|
|
14
|
-
/**
|
|
15
|
-
* Smartly parses and return the consumable result from a fetch `Response`.
|
|
16
|
-
*
|
|
17
|
-
* Throwing a structured error if the response is not `ok`. ({@link DetailedError})
|
|
18
|
-
*/
|
|
19
|
-
async function fetchRP(fetchRes) {
|
|
20
|
-
const _fetchRes = await fetchRes;
|
|
21
|
-
if ((_fetchRes.body || _fetchRes._bodyInit) && !nullBodyResponses.has(_fetchRes.status)) _fetchRes._data = await _fetchRes[detectResponseType(_fetchRes)]();
|
|
22
|
-
if (!_fetchRes.ok) throw new DetailedError(`${_fetchRes.status} ${_fetchRes.statusText}`, {
|
|
23
|
-
statusCode: _fetchRes?.status,
|
|
24
|
-
detail: {
|
|
25
|
-
data: _fetchRes?._data,
|
|
26
|
-
statusText: _fetchRes?.statusText
|
|
27
|
-
}
|
|
28
|
-
});
|
|
29
|
-
return _fetchRes._data;
|
|
30
|
-
}
|
|
31
|
-
var DetailedError = class extends Error {
|
|
32
|
-
/**
|
|
33
|
-
* Additional `message` that will be logged AND returned to client
|
|
34
|
-
*/
|
|
35
|
-
detail;
|
|
36
|
-
/**
|
|
37
|
-
* Additional `code` that will be logged AND returned to client
|
|
38
|
-
*/
|
|
39
|
-
code;
|
|
40
|
-
/**
|
|
41
|
-
* Additional value that will be logged AND NOT returned to client
|
|
42
|
-
*/
|
|
43
|
-
log;
|
|
44
|
-
/**
|
|
45
|
-
* Optionally set the status code to return, in a web server context
|
|
46
|
-
*/
|
|
47
|
-
statusCode;
|
|
48
|
-
constructor(message, options = {}) {
|
|
49
|
-
super(message);
|
|
50
|
-
this.name = "DetailedError";
|
|
51
|
-
this.log = options.log;
|
|
52
|
-
this.detail = options.detail;
|
|
53
|
-
this.code = options.code;
|
|
54
|
-
this.statusCode = options.statusCode;
|
|
55
|
-
}
|
|
56
|
-
};
|
|
57
|
-
const jsonRegex = /^application\/(?:[\w!#$%&*.^`~-]*\+)?json(?:;.+)?$/i;
|
|
58
|
-
function detectResponseType(response) {
|
|
59
|
-
const _contentType = response.headers.get("content-type");
|
|
60
|
-
if (!_contentType) return "text";
|
|
61
|
-
const contentType = _contentType.split(";").shift();
|
|
62
|
-
if (jsonRegex.test(contentType)) return "json";
|
|
63
|
-
return "text";
|
|
64
|
-
}
|
|
65
|
-
//#endregion
|
|
66
|
-
exports.DetailedError = DetailedError;
|
|
67
|
-
exports.fetchRP = fetchRP;
|
package/dist/cjs/client/index.js
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_client_fetch_result_please = require("./fetch-result-please.js");
|
|
3
|
-
const require_client_utils = require("./utils.js");
|
|
4
|
-
const require_client_client = require("./client.js");
|
|
5
|
-
exports.DetailedError = require_client_fetch_result_please.DetailedError;
|
|
6
|
-
exports.hc = require_client_client.hc;
|
|
7
|
-
exports.parseResponse = require_client_utils.parseResponse;
|
package/dist/cjs/client/types.js
DELETED
|
File without changes
|
package/dist/cjs/client/utils.js
DELETED
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_client_fetch_result_please = require("./fetch-result-please.js");
|
|
3
|
-
//#region src/client/utils.ts
|
|
4
|
-
const mergePath = (base, path) => {
|
|
5
|
-
base = base.replace(/\/+$/, "");
|
|
6
|
-
base = base + "/";
|
|
7
|
-
path = path.replace(/^\/+/, "");
|
|
8
|
-
return base + path;
|
|
9
|
-
};
|
|
10
|
-
const replaceUrlParam = (urlString, params) => {
|
|
11
|
-
for (const [k, v] of Object.entries(params)) {
|
|
12
|
-
const reg = new RegExp("/:" + k + "(?:{[^/]+})?\\??(?=/|$)");
|
|
13
|
-
urlString = urlString.replace(reg, () => v ? `/${v}` : "");
|
|
14
|
-
}
|
|
15
|
-
return urlString;
|
|
16
|
-
};
|
|
17
|
-
const buildSearchParams = (query) => {
|
|
18
|
-
const searchParams = new URLSearchParams();
|
|
19
|
-
for (const [k, v] of Object.entries(query)) {
|
|
20
|
-
if (v === void 0) continue;
|
|
21
|
-
if (Array.isArray(v)) for (const v2 of v) {
|
|
22
|
-
if (v2 === void 0) continue;
|
|
23
|
-
searchParams.append(k, v2);
|
|
24
|
-
}
|
|
25
|
-
else searchParams.set(k, v);
|
|
26
|
-
}
|
|
27
|
-
return searchParams;
|
|
28
|
-
};
|
|
29
|
-
const replaceUrlProtocol = (urlString, protocol) => {
|
|
30
|
-
switch (protocol) {
|
|
31
|
-
case "ws": return urlString.replace(/^http/, "ws");
|
|
32
|
-
case "http": return urlString.replace(/^ws/, "http");
|
|
33
|
-
}
|
|
34
|
-
};
|
|
35
|
-
const removeIndexString = (urlString) => {
|
|
36
|
-
if (/^https?:\/\/[^\/]+?\/index(?=\?|$)/.test(urlString)) return urlString.replace(/\/index(?=\?|$)/, "/");
|
|
37
|
-
return urlString.replace(/\/index(?=\?|$)/, "");
|
|
38
|
-
};
|
|
39
|
-
function isObject(item) {
|
|
40
|
-
return typeof item === "object" && item !== null && !Array.isArray(item);
|
|
41
|
-
}
|
|
42
|
-
function deepMerge(target, source) {
|
|
43
|
-
if (!isObject(target) && !isObject(source)) return source;
|
|
44
|
-
const merged = { ...target };
|
|
45
|
-
for (const key in source) {
|
|
46
|
-
const value = source[key];
|
|
47
|
-
if (isObject(merged[key]) && isObject(value)) merged[key] = deepMerge(merged[key], value);
|
|
48
|
-
else merged[key] = value;
|
|
49
|
-
}
|
|
50
|
-
return merged;
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Shortcut to get a consumable response from `hc`'s fetch calls (Response), with types inference.
|
|
54
|
-
*
|
|
55
|
-
* Smartly parse the response data, throwing a structured error if the response is not `ok`. ({@link DetailedError})
|
|
56
|
-
*
|
|
57
|
-
* @example const result = await parseResponse(client.posts.$get())
|
|
58
|
-
*/
|
|
59
|
-
async function parseResponse(fetchRes) {
|
|
60
|
-
return require_client_fetch_result_please.fetchRP(fetchRes);
|
|
61
|
-
}
|
|
62
|
-
//#endregion
|
|
63
|
-
exports.DetailedError = require_client_fetch_result_please.DetailedError;
|
|
64
|
-
exports.buildSearchParams = buildSearchParams;
|
|
65
|
-
exports.deepMerge = deepMerge;
|
|
66
|
-
exports.mergePath = mergePath;
|
|
67
|
-
exports.parseResponse = parseResponse;
|
|
68
|
-
exports.removeIndexString = removeIndexString;
|
|
69
|
-
exports.replaceUrlParam = replaceUrlParam;
|
|
70
|
-
exports.replaceUrlProtocol = replaceUrlProtocol;
|
package/dist/cjs/compose.js
DELETED
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
//#region src/compose.ts
|
|
3
|
-
/**
|
|
4
|
-
* Compose middleware functions into a single function based on `koa-compose` package.
|
|
5
|
-
*
|
|
6
|
-
* @template E - The environment type.
|
|
7
|
-
*
|
|
8
|
-
* @param {[[Function, unknown], unknown][] | [[Function]][]} middleware - An array of middleware functions and their corresponding parameters.
|
|
9
|
-
* @param {ErrorHandler<E>} [onError] - An optional error handler function.
|
|
10
|
-
* @param {NotFoundHandler<E>} [onNotFound] - An optional not-found handler function.
|
|
11
|
-
*
|
|
12
|
-
* @returns {(context: Context, next?: Next) => Promise<Context>} - A composed middleware function.
|
|
13
|
-
*/
|
|
14
|
-
const compose = (middleware, onError, onNotFound) => {
|
|
15
|
-
return (context, next) => {
|
|
16
|
-
let index = -1;
|
|
17
|
-
return dispatch(0);
|
|
18
|
-
/**
|
|
19
|
-
* Dispatch the middleware functions.
|
|
20
|
-
*
|
|
21
|
-
* @param {number} i - The current index in the middleware array.
|
|
22
|
-
*
|
|
23
|
-
* @returns {Promise<Context>} - A promise that resolves to the context.
|
|
24
|
-
*/
|
|
25
|
-
async function dispatch(i) {
|
|
26
|
-
if (i <= index) throw new Error("next() called multiple times");
|
|
27
|
-
index = i;
|
|
28
|
-
let res;
|
|
29
|
-
let isError = false;
|
|
30
|
-
let handler;
|
|
31
|
-
if (middleware[i]) {
|
|
32
|
-
handler = middleware[i][0][0];
|
|
33
|
-
context.req.routeIndex = i;
|
|
34
|
-
} else handler = i === middleware.length && next || void 0;
|
|
35
|
-
if (handler) try {
|
|
36
|
-
res = await handler(context, () => dispatch(i + 1));
|
|
37
|
-
} catch (err) {
|
|
38
|
-
if (err instanceof Error && onError) {
|
|
39
|
-
context.error = err;
|
|
40
|
-
res = await onError(err, context);
|
|
41
|
-
isError = true;
|
|
42
|
-
} else throw err;
|
|
43
|
-
}
|
|
44
|
-
else if (context.finalized === false && onNotFound) res = await onNotFound(context);
|
|
45
|
-
if (res && (context.finalized === false || isError)) context.res = res;
|
|
46
|
-
return context;
|
|
47
|
-
}
|
|
48
|
-
};
|
|
49
|
-
};
|
|
50
|
-
//#endregion
|
|
51
|
-
exports.compose = compose;
|
package/dist/cjs/context.js
DELETED
|
@@ -1,383 +0,0 @@
|
|
|
1
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_request = require("./request.js");
|
|
3
|
-
const require_utils_html = require("./utils/html.js");
|
|
4
|
-
//#region src/context.ts
|
|
5
|
-
const TEXT_PLAIN = "text/plain; charset=UTF-8";
|
|
6
|
-
const setDefaultContentType = (contentType, headers) => {
|
|
7
|
-
return {
|
|
8
|
-
"Content-Type": contentType,
|
|
9
|
-
...headers
|
|
10
|
-
};
|
|
11
|
-
};
|
|
12
|
-
const createResponseInstance = (body, init) => new Response(body, init);
|
|
13
|
-
var Context = class {
|
|
14
|
-
#rawRequest;
|
|
15
|
-
#req;
|
|
16
|
-
/**
|
|
17
|
-
* `.env` can get bindings (environment variables, secrets, KV namespaces, D1 database, R2 bucket etc.) in Cloudflare Workers.
|
|
18
|
-
*
|
|
19
|
-
* @see {@link https://hono.dev/docs/api/context#env}
|
|
20
|
-
*
|
|
21
|
-
* @example
|
|
22
|
-
* ```ts
|
|
23
|
-
* // Environment object for Cloudflare Workers
|
|
24
|
-
* app.get('*', async c => {
|
|
25
|
-
* const counter = c.env.COUNTER
|
|
26
|
-
* })
|
|
27
|
-
* ```
|
|
28
|
-
*/
|
|
29
|
-
env = {};
|
|
30
|
-
#var;
|
|
31
|
-
finalized = false;
|
|
32
|
-
/**
|
|
33
|
-
* `.error` can get the error object from the middleware if the Handler throws an error.
|
|
34
|
-
*
|
|
35
|
-
* @see {@link https://hono.dev/docs/api/context#error}
|
|
36
|
-
*
|
|
37
|
-
* @example
|
|
38
|
-
* ```ts
|
|
39
|
-
* app.use('*', async (c, next) => {
|
|
40
|
-
* await next()
|
|
41
|
-
* if (c.error) {
|
|
42
|
-
* // do something...
|
|
43
|
-
* }
|
|
44
|
-
* })
|
|
45
|
-
* ```
|
|
46
|
-
*/
|
|
47
|
-
error;
|
|
48
|
-
#status;
|
|
49
|
-
#executionCtx;
|
|
50
|
-
#res;
|
|
51
|
-
#layout;
|
|
52
|
-
#renderer;
|
|
53
|
-
#notFoundHandler;
|
|
54
|
-
#preparedHeaders;
|
|
55
|
-
#matchResult;
|
|
56
|
-
#path;
|
|
57
|
-
/**
|
|
58
|
-
* Creates an instance of the Context class.
|
|
59
|
-
*
|
|
60
|
-
* @param req - The Request object.
|
|
61
|
-
* @param options - Optional configuration options for the context.
|
|
62
|
-
*/
|
|
63
|
-
constructor(req, options) {
|
|
64
|
-
this.#rawRequest = req;
|
|
65
|
-
if (options) {
|
|
66
|
-
this.#executionCtx = options.executionCtx;
|
|
67
|
-
this.env = options.env;
|
|
68
|
-
this.#notFoundHandler = options.notFoundHandler;
|
|
69
|
-
this.#path = options.path;
|
|
70
|
-
this.#matchResult = options.matchResult;
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* `.req` is the instance of {@link HonoRequest}.
|
|
75
|
-
*/
|
|
76
|
-
get req() {
|
|
77
|
-
this.#req ??= new require_request.HonoRequest(this.#rawRequest, this.#path, this.#matchResult);
|
|
78
|
-
return this.#req;
|
|
79
|
-
}
|
|
80
|
-
/**
|
|
81
|
-
* @see {@link https://hono.dev/docs/api/context#event}
|
|
82
|
-
* The FetchEvent associated with the current request.
|
|
83
|
-
*
|
|
84
|
-
* @throws Will throw an error if the context does not have a FetchEvent.
|
|
85
|
-
*/
|
|
86
|
-
get event() {
|
|
87
|
-
if (this.#executionCtx && "respondWith" in this.#executionCtx) return this.#executionCtx;
|
|
88
|
-
else throw Error("This context has no FetchEvent");
|
|
89
|
-
}
|
|
90
|
-
/**
|
|
91
|
-
* @see {@link https://hono.dev/docs/api/context#executionctx}
|
|
92
|
-
* The ExecutionContext associated with the current request.
|
|
93
|
-
*
|
|
94
|
-
* @throws Will throw an error if the context does not have an ExecutionContext.
|
|
95
|
-
*/
|
|
96
|
-
get executionCtx() {
|
|
97
|
-
if (this.#executionCtx) return this.#executionCtx;
|
|
98
|
-
else throw Error("This context has no ExecutionContext");
|
|
99
|
-
}
|
|
100
|
-
/**
|
|
101
|
-
* @see {@link https://hono.dev/docs/api/context#res}
|
|
102
|
-
* The Response object for the current request.
|
|
103
|
-
*/
|
|
104
|
-
get res() {
|
|
105
|
-
return this.#res ||= createResponseInstance(null, { headers: this.#preparedHeaders ??= new Headers() });
|
|
106
|
-
}
|
|
107
|
-
/**
|
|
108
|
-
* Sets the Response object for the current request.
|
|
109
|
-
*
|
|
110
|
-
* @param _res - The Response object to set.
|
|
111
|
-
*/
|
|
112
|
-
set res(_res) {
|
|
113
|
-
if (this.#res && _res) {
|
|
114
|
-
_res = createResponseInstance(_res.body, _res);
|
|
115
|
-
for (const [k, v] of this.#res.headers.entries()) {
|
|
116
|
-
if (k === "content-type") continue;
|
|
117
|
-
if (k === "set-cookie") {
|
|
118
|
-
const cookies = this.#res.headers.getSetCookie();
|
|
119
|
-
_res.headers.delete("set-cookie");
|
|
120
|
-
for (const cookie of cookies) _res.headers.append("set-cookie", cookie);
|
|
121
|
-
} else _res.headers.set(k, v);
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
this.#res = _res;
|
|
125
|
-
this.finalized = true;
|
|
126
|
-
}
|
|
127
|
-
/**
|
|
128
|
-
* `.render()` can create a response within a layout.
|
|
129
|
-
*
|
|
130
|
-
* @see {@link https://hono.dev/docs/api/context#render-setrenderer}
|
|
131
|
-
*
|
|
132
|
-
* @example
|
|
133
|
-
* ```ts
|
|
134
|
-
* app.get('/', (c) => {
|
|
135
|
-
* return c.render('Hello!')
|
|
136
|
-
* })
|
|
137
|
-
* ```
|
|
138
|
-
*/
|
|
139
|
-
render = (...args) => {
|
|
140
|
-
this.#renderer ??= (content) => this.html(content);
|
|
141
|
-
return this.#renderer(...args);
|
|
142
|
-
};
|
|
143
|
-
/**
|
|
144
|
-
* Sets the layout for the response.
|
|
145
|
-
*
|
|
146
|
-
* @param layout - The layout to set.
|
|
147
|
-
* @returns The layout function.
|
|
148
|
-
*/
|
|
149
|
-
setLayout = (layout) => this.#layout = layout;
|
|
150
|
-
/**
|
|
151
|
-
* Gets the current layout for the response.
|
|
152
|
-
*
|
|
153
|
-
* @returns The current layout function.
|
|
154
|
-
*/
|
|
155
|
-
getLayout = () => this.#layout;
|
|
156
|
-
/**
|
|
157
|
-
* `.setRenderer()` can set the layout in the custom middleware.
|
|
158
|
-
*
|
|
159
|
-
* @see {@link https://hono.dev/docs/api/context#render-setrenderer}
|
|
160
|
-
*
|
|
161
|
-
* @example
|
|
162
|
-
* ```tsx
|
|
163
|
-
* app.use('*', async (c, next) => {
|
|
164
|
-
* c.setRenderer((content) => {
|
|
165
|
-
* return c.html(
|
|
166
|
-
* <html>
|
|
167
|
-
* <body>
|
|
168
|
-
* <p>{content}</p>
|
|
169
|
-
* </body>
|
|
170
|
-
* </html>
|
|
171
|
-
* )
|
|
172
|
-
* })
|
|
173
|
-
* await next()
|
|
174
|
-
* })
|
|
175
|
-
* ```
|
|
176
|
-
*/
|
|
177
|
-
setRenderer = (renderer) => {
|
|
178
|
-
this.#renderer = renderer;
|
|
179
|
-
};
|
|
180
|
-
/**
|
|
181
|
-
* `.header()` can set headers.
|
|
182
|
-
*
|
|
183
|
-
* @see {@link https://hono.dev/docs/api/context#header}
|
|
184
|
-
*
|
|
185
|
-
* @example
|
|
186
|
-
* ```ts
|
|
187
|
-
* app.get('/welcome', (c) => {
|
|
188
|
-
* // Set headers
|
|
189
|
-
* c.header('X-Message', 'Hello!')
|
|
190
|
-
* c.header('Content-Type', 'text/plain')
|
|
191
|
-
*
|
|
192
|
-
* // Append multiple headers using the append option (e.g. Vary)
|
|
193
|
-
* c.header('Vary', 'Accept-Encoding', { append: true })
|
|
194
|
-
* c.header('Vary', 'User-Agent', { append: true })
|
|
195
|
-
*
|
|
196
|
-
* return c.body('Thank you for coming')
|
|
197
|
-
* })
|
|
198
|
-
* ```
|
|
199
|
-
*/
|
|
200
|
-
header = (name, value, options) => {
|
|
201
|
-
if (this.finalized) this.#res = createResponseInstance(this.#res.body, this.#res);
|
|
202
|
-
const headers = this.#res ? this.#res.headers : this.#preparedHeaders ??= new Headers();
|
|
203
|
-
if (value === void 0) headers.delete(name);
|
|
204
|
-
else if (options?.append) headers.append(name, value);
|
|
205
|
-
else headers.set(name, value);
|
|
206
|
-
};
|
|
207
|
-
status = (status) => {
|
|
208
|
-
this.#status = status;
|
|
209
|
-
};
|
|
210
|
-
/**
|
|
211
|
-
* `.set()` can set the value specified by the key.
|
|
212
|
-
*
|
|
213
|
-
* @see {@link https://hono.dev/docs/api/context#set-get}
|
|
214
|
-
*
|
|
215
|
-
* @example
|
|
216
|
-
* ```ts
|
|
217
|
-
* app.use('*', async (c, next) => {
|
|
218
|
-
* c.set('message', 'Hono is hot!!')
|
|
219
|
-
* await next()
|
|
220
|
-
* })
|
|
221
|
-
* ```
|
|
222
|
-
*/
|
|
223
|
-
set = (key, value) => {
|
|
224
|
-
this.#var ??= /* @__PURE__ */ new Map();
|
|
225
|
-
this.#var.set(key, value);
|
|
226
|
-
};
|
|
227
|
-
/**
|
|
228
|
-
* `.get()` can use the value specified by the key.
|
|
229
|
-
*
|
|
230
|
-
* @see {@link https://hono.dev/docs/api/context#set-get}
|
|
231
|
-
*
|
|
232
|
-
* @example
|
|
233
|
-
* ```ts
|
|
234
|
-
* app.get('/', (c) => {
|
|
235
|
-
* const message = c.get('message')
|
|
236
|
-
* return c.text(`The message is "${message}"`)
|
|
237
|
-
* })
|
|
238
|
-
* ```
|
|
239
|
-
*/
|
|
240
|
-
get = (key) => {
|
|
241
|
-
return this.#var ? this.#var.get(key) : void 0;
|
|
242
|
-
};
|
|
243
|
-
/**
|
|
244
|
-
* `.var` can access the value of a variable.
|
|
245
|
-
*
|
|
246
|
-
* @see {@link https://hono.dev/docs/api/context#var}
|
|
247
|
-
*
|
|
248
|
-
* @example
|
|
249
|
-
* ```ts
|
|
250
|
-
* const result = c.var.client.oneMethod()
|
|
251
|
-
* ```
|
|
252
|
-
*/
|
|
253
|
-
get var() {
|
|
254
|
-
if (!this.#var) return {};
|
|
255
|
-
return Object.fromEntries(this.#var);
|
|
256
|
-
}
|
|
257
|
-
#newResponse(data, arg, headers) {
|
|
258
|
-
let responseHeaders = this.#res ? new Headers(this.#res.headers) : this.#preparedHeaders;
|
|
259
|
-
if (typeof arg === "object" && arg.headers) {
|
|
260
|
-
responseHeaders ??= new Headers();
|
|
261
|
-
for (const [key, value] of new Headers(arg.headers)) if (key === "set-cookie") responseHeaders.append(key, value);
|
|
262
|
-
else responseHeaders.set(key, value);
|
|
263
|
-
}
|
|
264
|
-
if (headers) {
|
|
265
|
-
if (!responseHeaders) {
|
|
266
|
-
let count = 0;
|
|
267
|
-
for (const k in headers) if (++count > 1 || typeof headers[k] !== "string") {
|
|
268
|
-
responseHeaders = new Headers();
|
|
269
|
-
break;
|
|
270
|
-
}
|
|
271
|
-
}
|
|
272
|
-
if (responseHeaders) for (const k in headers) {
|
|
273
|
-
const v = headers[k];
|
|
274
|
-
if (typeof v === "string") responseHeaders.set(k, v);
|
|
275
|
-
else {
|
|
276
|
-
responseHeaders.delete(k);
|
|
277
|
-
for (const v2 of v) responseHeaders.append(k, v2);
|
|
278
|
-
}
|
|
279
|
-
}
|
|
280
|
-
}
|
|
281
|
-
const status = typeof arg === "number" ? arg : arg?.status ?? this.#status;
|
|
282
|
-
return createResponseInstance(data, {
|
|
283
|
-
status,
|
|
284
|
-
headers: responseHeaders ?? headers
|
|
285
|
-
});
|
|
286
|
-
}
|
|
287
|
-
newResponse = (...args) => this.#newResponse(...args);
|
|
288
|
-
/**
|
|
289
|
-
* `.body()` can return the HTTP response.
|
|
290
|
-
* You can set headers with `.header()` and set HTTP status code with `.status`.
|
|
291
|
-
* This can also be set in `.text()`, `.json()` and so on.
|
|
292
|
-
*
|
|
293
|
-
* @see {@link https://hono.dev/docs/api/context#body}
|
|
294
|
-
*
|
|
295
|
-
* @example
|
|
296
|
-
* ```ts
|
|
297
|
-
* app.get('/welcome', (c) => {
|
|
298
|
-
* // Set headers
|
|
299
|
-
* c.header('X-Message', 'Hello!')
|
|
300
|
-
* c.header('Content-Type', 'text/plain')
|
|
301
|
-
* // Set HTTP status code
|
|
302
|
-
* c.status(201)
|
|
303
|
-
*
|
|
304
|
-
* // Return the response body
|
|
305
|
-
* return c.body('Thank you for coming')
|
|
306
|
-
* })
|
|
307
|
-
* ```
|
|
308
|
-
*/
|
|
309
|
-
body = (data, arg, headers) => this.#newResponse(data, arg, headers);
|
|
310
|
-
/**
|
|
311
|
-
* `.text()` can render text as `Content-Type:text/plain`.
|
|
312
|
-
*
|
|
313
|
-
* @see {@link https://hono.dev/docs/api/context#text}
|
|
314
|
-
*
|
|
315
|
-
* @example
|
|
316
|
-
* ```ts
|
|
317
|
-
* app.get('/say', (c) => {
|
|
318
|
-
* return c.text('Hello!')
|
|
319
|
-
* })
|
|
320
|
-
* ```
|
|
321
|
-
*/
|
|
322
|
-
text = (text, arg, headers) => {
|
|
323
|
-
return !this.#preparedHeaders && !this.#status && !arg && !headers && !this.finalized ? new Response(text) : this.#newResponse(text, arg, setDefaultContentType(TEXT_PLAIN, headers));
|
|
324
|
-
};
|
|
325
|
-
/**
|
|
326
|
-
* `.json()` can render JSON as `Content-Type:application/json`.
|
|
327
|
-
*
|
|
328
|
-
* @see {@link https://hono.dev/docs/api/context#json}
|
|
329
|
-
*
|
|
330
|
-
* @example
|
|
331
|
-
* ```ts
|
|
332
|
-
* app.get('/api', (c) => {
|
|
333
|
-
* return c.json({ message: 'Hello!' })
|
|
334
|
-
* })
|
|
335
|
-
* ```
|
|
336
|
-
*/
|
|
337
|
-
json = (object, arg, headers) => {
|
|
338
|
-
return this.#newResponse(JSON.stringify(object), arg, setDefaultContentType("application/json", headers));
|
|
339
|
-
};
|
|
340
|
-
html = (html, arg, headers) => {
|
|
341
|
-
const res = (html) => this.#newResponse(html, arg, setDefaultContentType("text/html; charset=UTF-8", headers));
|
|
342
|
-
return typeof html === "object" ? require_utils_html.resolveCallback(html, require_utils_html.HtmlEscapedCallbackPhase.Stringify, false, {}).then(res) : res(html);
|
|
343
|
-
};
|
|
344
|
-
/**
|
|
345
|
-
* `.redirect()` can Redirect, default status code is 302.
|
|
346
|
-
*
|
|
347
|
-
* @see {@link https://hono.dev/docs/api/context#redirect}
|
|
348
|
-
*
|
|
349
|
-
* @example
|
|
350
|
-
* ```ts
|
|
351
|
-
* app.get('/redirect', (c) => {
|
|
352
|
-
* return c.redirect('/')
|
|
353
|
-
* })
|
|
354
|
-
* app.get('/redirect-permanently', (c) => {
|
|
355
|
-
* return c.redirect('/', 301)
|
|
356
|
-
* })
|
|
357
|
-
* ```
|
|
358
|
-
*/
|
|
359
|
-
redirect = (location, status) => {
|
|
360
|
-
const locationString = String(location);
|
|
361
|
-
this.header("Location", !/[^\x00-\xFF]/.test(locationString) ? locationString : encodeURI(locationString));
|
|
362
|
-
return this.newResponse(null, status ?? 302);
|
|
363
|
-
};
|
|
364
|
-
/**
|
|
365
|
-
* `.notFound()` can return the Not Found Response.
|
|
366
|
-
*
|
|
367
|
-
* @see {@link https://hono.dev/docs/api/context#notfound}
|
|
368
|
-
*
|
|
369
|
-
* @example
|
|
370
|
-
* ```ts
|
|
371
|
-
* app.get('/notfound', (c) => {
|
|
372
|
-
* return c.notFound()
|
|
373
|
-
* })
|
|
374
|
-
* ```
|
|
375
|
-
*/
|
|
376
|
-
notFound = () => {
|
|
377
|
-
this.#notFoundHandler ??= () => createResponseInstance();
|
|
378
|
-
return this.#notFoundHandler(this);
|
|
379
|
-
};
|
|
380
|
-
};
|
|
381
|
-
//#endregion
|
|
382
|
-
exports.Context = Context;
|
|
383
|
-
exports.TEXT_PLAIN = TEXT_PLAIN;
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_utils_accept = require("../../utils/accept.js");
|
|
3
|
-
//#region src/helper/accepts/accepts.ts
|
|
4
|
-
const matchType = (acceptType, supportedType) => {
|
|
5
|
-
const accept = acceptType.toLowerCase();
|
|
6
|
-
const supported = supportedType.toLowerCase();
|
|
7
|
-
if (accept === supported) return true;
|
|
8
|
-
if (accept === "*/*" || accept === "*") return false;
|
|
9
|
-
if (accept.endsWith("/*")) {
|
|
10
|
-
const [acceptMain] = accept.split("/");
|
|
11
|
-
const [supportedMain] = supported.split("/");
|
|
12
|
-
return acceptMain === supportedMain;
|
|
13
|
-
}
|
|
14
|
-
return false;
|
|
15
|
-
};
|
|
16
|
-
const getSpecificity = (type) => {
|
|
17
|
-
if (type === "*/*" || type === "*") return 1;
|
|
18
|
-
if (type.endsWith("/*")) return 2;
|
|
19
|
-
return 3;
|
|
20
|
-
};
|
|
21
|
-
const defaultMatch = (accepts, config) => {
|
|
22
|
-
const { supports, default: defaultSupport } = config;
|
|
23
|
-
const sortedAccepts = accepts.filter((accept) => accept.q > 0).sort((a, b) => {
|
|
24
|
-
if (b.q !== a.q) return b.q - a.q;
|
|
25
|
-
return getSpecificity(b.type) - getSpecificity(a.type);
|
|
26
|
-
});
|
|
27
|
-
for (const accept of sortedAccepts) {
|
|
28
|
-
const matched = supports.find((supported) => matchType(accept.type, supported));
|
|
29
|
-
if (matched) return matched;
|
|
30
|
-
}
|
|
31
|
-
return defaultSupport;
|
|
32
|
-
};
|
|
33
|
-
/**
|
|
34
|
-
* Match the accept header with the given options.
|
|
35
|
-
* @example
|
|
36
|
-
* ```ts
|
|
37
|
-
* app.get('/users', (c) => {
|
|
38
|
-
* const lang = accepts(c, {
|
|
39
|
-
* header: 'Accept-Language',
|
|
40
|
-
* supports: ['en', 'zh'],
|
|
41
|
-
* default: 'en',
|
|
42
|
-
* })
|
|
43
|
-
* })
|
|
44
|
-
* ```
|
|
45
|
-
*/
|
|
46
|
-
const accepts = (c, options) => {
|
|
47
|
-
const acceptHeader = c.req.header(options.header);
|
|
48
|
-
if (!acceptHeader) return options.default;
|
|
49
|
-
const accepts = require_utils_accept.parseAccept(acceptHeader);
|
|
50
|
-
return (options.match || defaultMatch)(accepts, options);
|
|
51
|
-
};
|
|
52
|
-
//#endregion
|
|
53
|
-
exports.accepts = accepts;
|
|
54
|
-
exports.defaultMatch = defaultMatch;
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
//#region src/helper/adapter/index.ts
|
|
3
|
-
const env = (c, runtime) => {
|
|
4
|
-
const globalEnv = globalThis?.process?.env;
|
|
5
|
-
runtime ??= getRuntimeKey();
|
|
6
|
-
return {
|
|
7
|
-
bun: () => globalEnv,
|
|
8
|
-
node: () => globalEnv,
|
|
9
|
-
"edge-light": () => globalEnv,
|
|
10
|
-
deno: () => {
|
|
11
|
-
return Deno.env.toObject();
|
|
12
|
-
},
|
|
13
|
-
workerd: () => c.env,
|
|
14
|
-
fastly: () => ({}),
|
|
15
|
-
other: () => ({})
|
|
16
|
-
}[runtime]();
|
|
17
|
-
};
|
|
18
|
-
const knownUserAgents = {
|
|
19
|
-
deno: "Deno",
|
|
20
|
-
bun: "Bun",
|
|
21
|
-
workerd: "Cloudflare-Workers",
|
|
22
|
-
node: "Node.js"
|
|
23
|
-
};
|
|
24
|
-
const getRuntimeKey = () => {
|
|
25
|
-
const global = globalThis;
|
|
26
|
-
if (typeof navigator !== "undefined" && typeof navigator.userAgent === "string") {
|
|
27
|
-
for (const [runtimeKey, userAgent] of Object.entries(knownUserAgents)) if (checkUserAgentEquals(userAgent)) return runtimeKey;
|
|
28
|
-
}
|
|
29
|
-
if (typeof global?.EdgeRuntime === "string") return "edge-light";
|
|
30
|
-
if (global?.fastly !== void 0) return "fastly";
|
|
31
|
-
if (global?.process?.release?.name === "node") return "node";
|
|
32
|
-
return "other";
|
|
33
|
-
};
|
|
34
|
-
const checkUserAgentEquals = (platform) => {
|
|
35
|
-
return navigator.userAgent.startsWith(platform);
|
|
36
|
-
};
|
|
37
|
-
//#endregion
|
|
38
|
-
exports.checkUserAgentEquals = checkUserAgentEquals;
|
|
39
|
-
exports.env = env;
|
|
40
|
-
exports.getRuntimeKey = getRuntimeKey;
|
|
41
|
-
exports.knownUserAgents = knownUserAgents;
|
|
File without changes
|
|
File without changes
|