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,208 +0,0 @@
|
|
|
1
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_utils_accept = require("../../utils/accept.js");
|
|
3
|
-
const require_helper_cookie_index = require("../../helper/cookie/index.js");
|
|
4
|
-
//#region src/middleware/language/language.ts
|
|
5
|
-
const DEFAULT_OPTIONS = {
|
|
6
|
-
order: [
|
|
7
|
-
"querystring",
|
|
8
|
-
"cookie",
|
|
9
|
-
"header"
|
|
10
|
-
],
|
|
11
|
-
lookupQueryString: "lang",
|
|
12
|
-
lookupCookie: "language",
|
|
13
|
-
lookupFromHeaderKey: "accept-language",
|
|
14
|
-
lookupFromPathIndex: 0,
|
|
15
|
-
caches: ["cookie"],
|
|
16
|
-
ignoreCase: true,
|
|
17
|
-
fallbackLanguage: "en",
|
|
18
|
-
supportedLanguages: ["en"],
|
|
19
|
-
cookieOptions: {
|
|
20
|
-
sameSite: "Strict",
|
|
21
|
-
secure: true,
|
|
22
|
-
maxAge: 31536e3,
|
|
23
|
-
httpOnly: true
|
|
24
|
-
},
|
|
25
|
-
debug: false
|
|
26
|
-
};
|
|
27
|
-
/**
|
|
28
|
-
* Parse Accept-Language header values with quality scores
|
|
29
|
-
* @param header Accept-Language header string
|
|
30
|
-
* @returns Array of parsed languages with quality scores
|
|
31
|
-
*/
|
|
32
|
-
function parseAcceptLanguage(header) {
|
|
33
|
-
return require_utils_accept.parseAccept(header).map(({ type, q }) => ({
|
|
34
|
-
lang: type,
|
|
35
|
-
q
|
|
36
|
-
}));
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Validate and normalize language codes
|
|
40
|
-
* @param lang Language code to normalize
|
|
41
|
-
* @param options Detector options
|
|
42
|
-
* @returns Normalized language code or undefined
|
|
43
|
-
*/
|
|
44
|
-
const normalizeLanguage = (lang, options) => {
|
|
45
|
-
if (!lang) return;
|
|
46
|
-
try {
|
|
47
|
-
let normalizedLang = lang.trim();
|
|
48
|
-
if (options.convertDetectedLanguage) normalizedLang = options.convertDetectedLanguage(normalizedLang);
|
|
49
|
-
const compLang = options.ignoreCase ? normalizedLang.toLowerCase() : normalizedLang;
|
|
50
|
-
const compSupported = options.supportedLanguages.map((l) => options.ignoreCase ? l.toLowerCase() : l);
|
|
51
|
-
const exactIndex = compSupported.indexOf(compLang);
|
|
52
|
-
if (exactIndex !== -1) return options.supportedLanguages[exactIndex];
|
|
53
|
-
let longestMatchIndex = -1;
|
|
54
|
-
let longestMatchLength = -1;
|
|
55
|
-
for (let i = 0; i < compSupported.length; i++) {
|
|
56
|
-
const candidate = compSupported[i];
|
|
57
|
-
if (candidate.length < compLang.length && candidate.length > longestMatchLength && compLang.startsWith(candidate) && compLang[candidate.length] === "-") {
|
|
58
|
-
longestMatchIndex = i;
|
|
59
|
-
longestMatchLength = candidate.length;
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
if (longestMatchIndex !== -1) return options.supportedLanguages[longestMatchIndex];
|
|
63
|
-
return;
|
|
64
|
-
} catch {
|
|
65
|
-
return;
|
|
66
|
-
}
|
|
67
|
-
};
|
|
68
|
-
/**
|
|
69
|
-
* Detects language from query parameter
|
|
70
|
-
*/
|
|
71
|
-
const detectFromQuery = (c, options) => {
|
|
72
|
-
const query = c.req.query(options.lookupQueryString);
|
|
73
|
-
return normalizeLanguage(query, options);
|
|
74
|
-
};
|
|
75
|
-
/**
|
|
76
|
-
* Detects language from cookie
|
|
77
|
-
*/
|
|
78
|
-
const detectFromCookie = (c, options) => {
|
|
79
|
-
const cookie = require_helper_cookie_index.getCookie(c, options.lookupCookie);
|
|
80
|
-
return normalizeLanguage(cookie, options);
|
|
81
|
-
};
|
|
82
|
-
/**
|
|
83
|
-
* Detects language from Accept-Language header
|
|
84
|
-
*/
|
|
85
|
-
function detectFromHeader(c, options) {
|
|
86
|
-
try {
|
|
87
|
-
const acceptLanguage = c.req.header(options.lookupFromHeaderKey);
|
|
88
|
-
if (!acceptLanguage) return;
|
|
89
|
-
const languages = parseAcceptLanguage(acceptLanguage);
|
|
90
|
-
for (const { lang, q } of languages) {
|
|
91
|
-
if (q === 0) continue;
|
|
92
|
-
const normalizedLang = normalizeLanguage(lang, options);
|
|
93
|
-
if (normalizedLang) return normalizedLang;
|
|
94
|
-
}
|
|
95
|
-
return;
|
|
96
|
-
} catch {
|
|
97
|
-
return;
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
/**
|
|
101
|
-
* Detects language from URL path
|
|
102
|
-
*/
|
|
103
|
-
function detectFromPath(c, options) {
|
|
104
|
-
const langSegment = new URL(c.req.url).pathname.split("/").filter(Boolean)[options.lookupFromPathIndex];
|
|
105
|
-
return normalizeLanguage(langSegment, options);
|
|
106
|
-
}
|
|
107
|
-
/**
|
|
108
|
-
* Collection of all language detection strategies
|
|
109
|
-
*/
|
|
110
|
-
const detectors = {
|
|
111
|
-
querystring: detectFromQuery,
|
|
112
|
-
cookie: detectFromCookie,
|
|
113
|
-
header: detectFromHeader,
|
|
114
|
-
path: detectFromPath
|
|
115
|
-
};
|
|
116
|
-
/**
|
|
117
|
-
* Validate detector options
|
|
118
|
-
* @param options Detector options to validate
|
|
119
|
-
* @throws Error if options are invalid
|
|
120
|
-
*/
|
|
121
|
-
function validateOptions(options) {
|
|
122
|
-
if (!options.supportedLanguages.includes(options.fallbackLanguage)) throw new Error("Fallback language must be included in supported languages");
|
|
123
|
-
if (options.lookupFromPathIndex < 0) throw new Error("Path index must be non-negative");
|
|
124
|
-
if (!options.order.every((detector) => Object.keys(detectors).includes(detector))) throw new Error("Invalid detector type in order array");
|
|
125
|
-
}
|
|
126
|
-
/**
|
|
127
|
-
* Cache detected language
|
|
128
|
-
*/
|
|
129
|
-
function cacheLanguage(c, language, options) {
|
|
130
|
-
if (!Array.isArray(options.caches) || !options.caches.includes("cookie")) return;
|
|
131
|
-
try {
|
|
132
|
-
require_helper_cookie_index.setCookie(c, options.lookupCookie, language, options.cookieOptions);
|
|
133
|
-
} catch (error) {
|
|
134
|
-
if (options.debug) console.error("Failed to cache language:", error);
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
/**
|
|
138
|
-
* Detect language from request
|
|
139
|
-
*/
|
|
140
|
-
const detectLanguage = (c, options) => {
|
|
141
|
-
let detectedLang;
|
|
142
|
-
for (const detectorName of options.order) {
|
|
143
|
-
const detector = detectors[detectorName];
|
|
144
|
-
try {
|
|
145
|
-
detectedLang = detector(c, options);
|
|
146
|
-
if (detectedLang) {
|
|
147
|
-
if (options.debug) console.log(`Language detected from ${detectorName}: ${detectedLang}`);
|
|
148
|
-
break;
|
|
149
|
-
}
|
|
150
|
-
} catch (error) {
|
|
151
|
-
if (options.debug) console.error(`Error in ${detectorName} detector:`, error);
|
|
152
|
-
continue;
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
const finalLang = detectedLang || options.fallbackLanguage;
|
|
156
|
-
if (detectedLang && options.caches) cacheLanguage(c, finalLang, options);
|
|
157
|
-
return finalLang;
|
|
158
|
-
};
|
|
159
|
-
/**
|
|
160
|
-
* Language detector middleware factory
|
|
161
|
-
* @param userOptions Configuration options for the language detector
|
|
162
|
-
* @returns Hono middleware function
|
|
163
|
-
*
|
|
164
|
-
* @example
|
|
165
|
-
* ```ts
|
|
166
|
-
* type Variables = LanguageVariables
|
|
167
|
-
* const app = new Hono<{ Variables: Variables }>()
|
|
168
|
-
*
|
|
169
|
-
* app.use(
|
|
170
|
-
* languageDetector({
|
|
171
|
-
* supportedLanguages: ['en', 'ja'], // Must include fallback
|
|
172
|
-
* fallbackLanguage: 'en', // Required
|
|
173
|
-
* })
|
|
174
|
-
* )
|
|
175
|
-
*
|
|
176
|
-
* app.get('/', (c) => {
|
|
177
|
-
* const lang = c.get('language')
|
|
178
|
-
* return c.text(`Current language: ${lang}`)
|
|
179
|
-
* })
|
|
180
|
-
* ```
|
|
181
|
-
*/
|
|
182
|
-
const languageDetector = (userOptions) => {
|
|
183
|
-
const options = {
|
|
184
|
-
...DEFAULT_OPTIONS,
|
|
185
|
-
...userOptions,
|
|
186
|
-
cookieOptions: {
|
|
187
|
-
...DEFAULT_OPTIONS.cookieOptions,
|
|
188
|
-
...userOptions.cookieOptions
|
|
189
|
-
}
|
|
190
|
-
};
|
|
191
|
-
validateOptions(options);
|
|
192
|
-
return async function languageDetector(ctx, next) {
|
|
193
|
-
const lang = detectLanguage(ctx, options);
|
|
194
|
-
ctx.set("language", lang);
|
|
195
|
-
await next();
|
|
196
|
-
};
|
|
197
|
-
};
|
|
198
|
-
//#endregion
|
|
199
|
-
exports.DEFAULT_OPTIONS = DEFAULT_OPTIONS;
|
|
200
|
-
exports.detectFromCookie = detectFromCookie;
|
|
201
|
-
exports.detectFromHeader = detectFromHeader;
|
|
202
|
-
exports.detectFromPath = detectFromPath;
|
|
203
|
-
exports.detectFromQuery = detectFromQuery;
|
|
204
|
-
exports.detectors = detectors;
|
|
205
|
-
exports.languageDetector = languageDetector;
|
|
206
|
-
exports.normalizeLanguage = normalizeLanguage;
|
|
207
|
-
exports.parseAcceptLanguage = parseAcceptLanguage;
|
|
208
|
-
exports.validateOptions = validateOptions;
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_utils_color = require("../../utils/color.js");
|
|
3
|
-
//#region src/middleware/logger/index.ts
|
|
4
|
-
const humanize = (times) => {
|
|
5
|
-
const [delimiter, separator] = [",", "."];
|
|
6
|
-
return times.map((v) => v.replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1" + delimiter)).join(separator);
|
|
7
|
-
};
|
|
8
|
-
const time = (start) => {
|
|
9
|
-
const delta = Date.now() - start;
|
|
10
|
-
return humanize([delta < 1e3 ? delta + "ms" : Math.round(delta / 1e3) + "s"]);
|
|
11
|
-
};
|
|
12
|
-
const colorStatus = async (status) => {
|
|
13
|
-
if (await require_utils_color.getColorEnabledAsync()) switch (status / 100 | 0) {
|
|
14
|
-
case 5: return `\x1b[31m${status}\x1b[0m`;
|
|
15
|
-
case 4: return `\x1b[33m${status}\x1b[0m`;
|
|
16
|
-
case 3: return `\x1b[36m${status}\x1b[0m`;
|
|
17
|
-
case 2: return `\x1b[32m${status}\x1b[0m`;
|
|
18
|
-
}
|
|
19
|
-
return `${status}`;
|
|
20
|
-
};
|
|
21
|
-
async function log(fn, prefix, method, path, status = 0, elapsed) {
|
|
22
|
-
fn(prefix === "<--" ? `${prefix} ${method} ${path}` : `${prefix} ${method} ${path} ${await colorStatus(status)} ${elapsed}`);
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Logger Middleware for Hono.
|
|
26
|
-
*
|
|
27
|
-
* @see {@link https://hono.dev/docs/middleware/builtin/logger}
|
|
28
|
-
*
|
|
29
|
-
* @param {PrintFunc} [fn=console.log] - Optional function for customized logging behavior.
|
|
30
|
-
* @returns {MiddlewareHandler} The middleware handler function.
|
|
31
|
-
*
|
|
32
|
-
* @example
|
|
33
|
-
* ```ts
|
|
34
|
-
* const app = new Hono()
|
|
35
|
-
*
|
|
36
|
-
* app.use(logger())
|
|
37
|
-
* app.get('/', (c) => c.text('Hello Hono!'))
|
|
38
|
-
* ```
|
|
39
|
-
*/
|
|
40
|
-
const logger = (fn = console.log) => {
|
|
41
|
-
return async function logger(c, next) {
|
|
42
|
-
const { method, url } = c.req;
|
|
43
|
-
const path = url.slice(url.indexOf("/", 8));
|
|
44
|
-
await log(fn, "<--", method, path);
|
|
45
|
-
const start = Date.now();
|
|
46
|
-
await next();
|
|
47
|
-
await log(fn, "-->", method, path, c.res.status, time(start));
|
|
48
|
-
};
|
|
49
|
-
};
|
|
50
|
-
//#endregion
|
|
51
|
-
exports.logger = logger;
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
require("../../router.js");
|
|
3
|
-
const require_router_trie_router_router = require("../../router/trie-router/router.js");
|
|
4
|
-
require("../../router/trie-router/index.js");
|
|
5
|
-
const require_helper_route_index = require("../../helper/route/index.js");
|
|
6
|
-
//#region src/middleware/method-not-allowed/index.ts
|
|
7
|
-
/**
|
|
8
|
-
* Method Not Allowed Middleware for Hono.
|
|
9
|
-
*
|
|
10
|
-
* Returns a `405 Method Not Allowed` response with an `Allow` header when the request path
|
|
11
|
-
* matches a registered route but the request method is not supported.
|
|
12
|
-
*
|
|
13
|
-
* @param {MethodNotAllowedOptions} options - The options for the middleware.
|
|
14
|
-
* @param {Hono} options.app - The Hono instance used by the application.
|
|
15
|
-
* @param {MethodNotAllowedHandler} [options.onMethodNotAllowed] - Generates the response, including its `Allow` header.
|
|
16
|
-
* @returns {MiddlewareHandler} The middleware handler function.
|
|
17
|
-
*
|
|
18
|
-
* @example
|
|
19
|
-
* ```ts
|
|
20
|
-
* const app = new Hono()
|
|
21
|
-
*
|
|
22
|
-
* app.use(methodNotAllowed({ app }))
|
|
23
|
-
*
|
|
24
|
-
* app.get('/hello', (c) => c.text('Hello!'))
|
|
25
|
-
* app.post('/hello', (c) => c.text('Posted!'))
|
|
26
|
-
*
|
|
27
|
-
* // PUT /hello -> 405 Method Not Allowed
|
|
28
|
-
* // Allow: GET, HEAD, POST
|
|
29
|
-
* ```
|
|
30
|
-
*
|
|
31
|
-
* @example
|
|
32
|
-
* ```ts
|
|
33
|
-
* app.use(
|
|
34
|
-
* methodNotAllowed({
|
|
35
|
-
* app,
|
|
36
|
-
* onMethodNotAllowed: (c, methods) =>
|
|
37
|
-
* c.json({ error: 'Method Not Allowed' }, 405, { Allow: methods.join(', ') }),
|
|
38
|
-
* })
|
|
39
|
-
* )
|
|
40
|
-
* ```
|
|
41
|
-
*/
|
|
42
|
-
const methodNotAllowed = (options) => {
|
|
43
|
-
let methodRouter;
|
|
44
|
-
return async function methodNotAllowed(c, next) {
|
|
45
|
-
const routeIndex = c.req.routeIndex;
|
|
46
|
-
await next();
|
|
47
|
-
if (c.res.status !== 404) return;
|
|
48
|
-
if (c.error) return;
|
|
49
|
-
if (!methodRouter) {
|
|
50
|
-
const methodsByPath = /* @__PURE__ */ new Map();
|
|
51
|
-
for (const route of options.app.routes) {
|
|
52
|
-
if (route.method === "ALL" || route.method === "HEAD") continue;
|
|
53
|
-
const methods = methodsByPath.get(route.path) ?? /* @__PURE__ */ new Set();
|
|
54
|
-
methods.add(route.method);
|
|
55
|
-
if (route.method === "GET") methods.add("HEAD");
|
|
56
|
-
methodsByPath.set(route.path, methods);
|
|
57
|
-
}
|
|
58
|
-
methodRouter = new require_router_trie_router_router.TrieRouter();
|
|
59
|
-
for (const [path, methods] of methodsByPath) methodRouter.add("ALL", path, [...methods]);
|
|
60
|
-
}
|
|
61
|
-
let requestPath = c.req.path;
|
|
62
|
-
const currentRoute = require_helper_route_index.matchedRoutes(c)[routeIndex];
|
|
63
|
-
const sourceRoute = options.app.routes.find((route) => route.handler === methodNotAllowed);
|
|
64
|
-
if (currentRoute && sourceRoute) {
|
|
65
|
-
const currentBasePathParts = require_helper_route_index.basePath(c, routeIndex).split("/").filter(Boolean);
|
|
66
|
-
const sourceBasePathLength = sourceRoute.basePath.split("/").filter(Boolean).length;
|
|
67
|
-
const mountBasePathParts = currentBasePathParts.slice(0, currentBasePathParts.length - sourceBasePathLength);
|
|
68
|
-
if (mountBasePathParts.length > 0) {
|
|
69
|
-
const mountBasePath = `/${mountBasePathParts.join("/")}`;
|
|
70
|
-
requestPath = c.req.path.slice(mountBasePath.length) || "/";
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
const allowedMethods = /* @__PURE__ */ new Set();
|
|
74
|
-
for (const [methods] of methodRouter.match("ALL", requestPath)[0]) for (const method of methods) allowedMethods.add(method);
|
|
75
|
-
if (allowedMethods.size === 0 || allowedMethods.has(c.req.method)) return;
|
|
76
|
-
c.res.headers.delete("Allow");
|
|
77
|
-
c.res.headers.delete("Content-Length");
|
|
78
|
-
const methods = [...allowedMethods];
|
|
79
|
-
const allow = methods.join(", ");
|
|
80
|
-
c.res = options.onMethodNotAllowed ? await options.onMethodNotAllowed(c, methods) : c.text("Method Not Allowed", 405, { Allow: allow });
|
|
81
|
-
};
|
|
82
|
-
};
|
|
83
|
-
//#endregion
|
|
84
|
-
exports.methodNotAllowed = methodNotAllowed;
|
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_utils_body = require("../../utils/body.js");
|
|
3
|
-
//#region src/middleware/method-override/index.ts
|
|
4
|
-
const DEFAULT_METHOD_FORM_NAME = "_method";
|
|
5
|
-
/**
|
|
6
|
-
* Method Override Middleware for Hono.
|
|
7
|
-
*
|
|
8
|
-
* @see {@link https://hono.dev/docs/middleware/builtin/method-override}
|
|
9
|
-
*
|
|
10
|
-
* @param {MethodOverrideOptions} options - The options for the method override middleware.
|
|
11
|
-
* @param {Hono} options.app - The instance of Hono is used in your application.
|
|
12
|
-
* @param {string} [options.form=_method] - Form key with a value containing the method name.
|
|
13
|
-
* @param {string} [options.header] - Header name with a value containing the method name.
|
|
14
|
-
* @param {string} [options.query] - Query parameter key with a value containing the method name.
|
|
15
|
-
* @returns {MiddlewareHandler} The middleware handler function.
|
|
16
|
-
*
|
|
17
|
-
* @example
|
|
18
|
-
* ```ts
|
|
19
|
-
* const app = new Hono()
|
|
20
|
-
*
|
|
21
|
-
* // If no options are specified, the value of `_method` in the form,
|
|
22
|
-
* // e.g. DELETE, is used as the method.
|
|
23
|
-
* app.use('/posts', methodOverride({ app }))
|
|
24
|
-
*
|
|
25
|
-
* app.delete('/posts', (c) => {
|
|
26
|
-
* // ....
|
|
27
|
-
* })
|
|
28
|
-
* ```
|
|
29
|
-
*/
|
|
30
|
-
const methodOverride = (options) => async function methodOverride(c, next) {
|
|
31
|
-
if (c.req.method === "GET") return await next();
|
|
32
|
-
const app = options.app;
|
|
33
|
-
if (!(options.header || options.query)) {
|
|
34
|
-
const contentType = c.req.header("content-type");
|
|
35
|
-
const methodFormName = options.form || DEFAULT_METHOD_FORM_NAME;
|
|
36
|
-
const clonedRequest = c.req.raw.clone();
|
|
37
|
-
const newRequest = clonedRequest.clone();
|
|
38
|
-
if (contentType?.startsWith("multipart/form-data")) {
|
|
39
|
-
const method = (await clonedRequest.formData()).get(methodFormName);
|
|
40
|
-
if (method) {
|
|
41
|
-
const newForm = await newRequest.formData();
|
|
42
|
-
newForm.delete(methodFormName);
|
|
43
|
-
const newHeaders = new Headers(clonedRequest.headers);
|
|
44
|
-
newHeaders.delete("content-type");
|
|
45
|
-
newHeaders.delete("content-length");
|
|
46
|
-
const request = new Request(c.req.url, {
|
|
47
|
-
body: newForm,
|
|
48
|
-
headers: newHeaders,
|
|
49
|
-
method
|
|
50
|
-
});
|
|
51
|
-
return app.fetch(request, c.env, getExecutionCtx(c));
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
if (contentType?.startsWith("application/x-www-form-urlencoded")) {
|
|
55
|
-
const params = await require_utils_body.parseBody(clonedRequest);
|
|
56
|
-
const method = params[methodFormName];
|
|
57
|
-
if (method) {
|
|
58
|
-
delete params[methodFormName];
|
|
59
|
-
const newParams = new URLSearchParams(params);
|
|
60
|
-
const request = new Request(newRequest, {
|
|
61
|
-
body: newParams,
|
|
62
|
-
method
|
|
63
|
-
});
|
|
64
|
-
return app.fetch(request, c.env, getExecutionCtx(c));
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
} else if (options.header) {
|
|
68
|
-
const headerName = options.header;
|
|
69
|
-
const method = c.req.header(headerName);
|
|
70
|
-
if (method) {
|
|
71
|
-
const newHeaders = new Headers(c.req.raw.headers);
|
|
72
|
-
newHeaders.delete(headerName);
|
|
73
|
-
const request = new Request(c.req.raw, {
|
|
74
|
-
headers: newHeaders,
|
|
75
|
-
method
|
|
76
|
-
});
|
|
77
|
-
return app.fetch(request, c.env, getExecutionCtx(c));
|
|
78
|
-
}
|
|
79
|
-
} else if (options.query) {
|
|
80
|
-
const queryName = options.query;
|
|
81
|
-
const method = c.req.query(queryName);
|
|
82
|
-
if (method) {
|
|
83
|
-
const url = new URL(c.req.url);
|
|
84
|
-
url.searchParams.delete(queryName);
|
|
85
|
-
const requestInit = {
|
|
86
|
-
body: c.req.raw.body,
|
|
87
|
-
headers: c.req.raw.headers,
|
|
88
|
-
method,
|
|
89
|
-
duplex: c.req.raw.body ? "half" : void 0
|
|
90
|
-
};
|
|
91
|
-
const request = new Request(url.toString(), requestInit);
|
|
92
|
-
return app.fetch(request, c.env, getExecutionCtx(c));
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
await next();
|
|
96
|
-
};
|
|
97
|
-
const getExecutionCtx = (c) => {
|
|
98
|
-
let executionCtx;
|
|
99
|
-
try {
|
|
100
|
-
executionCtx = c.executionCtx;
|
|
101
|
-
} catch {}
|
|
102
|
-
return executionCtx;
|
|
103
|
-
};
|
|
104
|
-
//#endregion
|
|
105
|
-
exports.methodOverride = methodOverride;
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_helper_route_index = require("../../helper/route/index.js");
|
|
3
|
-
//#region src/middleware/mount/index.ts
|
|
4
|
-
const defaultReplaceRequest = (c) => {
|
|
5
|
-
const pathPrefix = require_helper_route_index.routePath(c).replace(/\/\*$/, "");
|
|
6
|
-
const url = new URL(c.req.raw.url);
|
|
7
|
-
url.pathname = c.req.path.slice(pathPrefix.length) || "/";
|
|
8
|
-
return new Request(url, c.req.raw);
|
|
9
|
-
};
|
|
10
|
-
const defaultGetOptions = (c) => {
|
|
11
|
-
let executionContext = void 0;
|
|
12
|
-
try {
|
|
13
|
-
executionContext = c.executionCtx;
|
|
14
|
-
} catch {}
|
|
15
|
-
return [c.env, executionContext];
|
|
16
|
-
};
|
|
17
|
-
/**
|
|
18
|
-
* `mount()` allows you to mount applications built with other frameworks into your Hono application.
|
|
19
|
-
*
|
|
20
|
-
* @see {@link https://hono.dev/docs/api/hono#mount}
|
|
21
|
-
*
|
|
22
|
-
* @param {Function} applicationHandler - other Request Handler
|
|
23
|
-
* @param {MountOptions} [options] - options of `mount()`
|
|
24
|
-
* @returns {MiddlewareHandler} handler to register with `app.all()`
|
|
25
|
-
*
|
|
26
|
-
* @example
|
|
27
|
-
* ```ts
|
|
28
|
-
* import { Router as IttyRouter } from 'itty-router'
|
|
29
|
-
* import { Hono } from 'hono'
|
|
30
|
-
* import { mount } from 'hono/mount'
|
|
31
|
-
* // Create itty-router application
|
|
32
|
-
* const ittyRouter = IttyRouter()
|
|
33
|
-
* // GET /itty-router/hello
|
|
34
|
-
* ittyRouter.get('/hello', () => new Response('Hello from itty-router'))
|
|
35
|
-
*
|
|
36
|
-
* const app = new Hono()
|
|
37
|
-
* app.all('/itty-router/*', mount(ittyRouter.handle))
|
|
38
|
-
* ```
|
|
39
|
-
*
|
|
40
|
-
* @example
|
|
41
|
-
* ```ts
|
|
42
|
-
* const app = new Hono()
|
|
43
|
-
* // Send the request to another application without modification.
|
|
44
|
-
* app.all('/app/*', mount(anotherApp, {
|
|
45
|
-
* replaceRequest: (req) => req,
|
|
46
|
-
* }))
|
|
47
|
-
* ```
|
|
48
|
-
*/
|
|
49
|
-
const mount = (applicationHandler, options) => {
|
|
50
|
-
let replaceRequest;
|
|
51
|
-
let optionHandler;
|
|
52
|
-
if (options) {
|
|
53
|
-
if (typeof options === "function") optionHandler = options;
|
|
54
|
-
else {
|
|
55
|
-
optionHandler = options.optionHandler;
|
|
56
|
-
if (options.replaceRequest === false) replaceRequest = (request) => request;
|
|
57
|
-
else replaceRequest = options.replaceRequest;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
const getOptions = optionHandler ? (c) => {
|
|
61
|
-
const options = optionHandler(c);
|
|
62
|
-
return Array.isArray(options) ? options : [options];
|
|
63
|
-
} : defaultGetOptions;
|
|
64
|
-
return async (c, next) => {
|
|
65
|
-
const res = await applicationHandler(replaceRequest ? replaceRequest(c.req.raw) : defaultReplaceRequest(c), ...getOptions(c));
|
|
66
|
-
if (res) return res;
|
|
67
|
-
await next();
|
|
68
|
-
};
|
|
69
|
-
};
|
|
70
|
-
//#endregion
|
|
71
|
-
exports.mount = mount;
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
//#region src/middleware/powered-by/index.ts
|
|
3
|
-
/**
|
|
4
|
-
* Powered By Middleware for Hono.
|
|
5
|
-
*
|
|
6
|
-
* @param options - The options for the Powered By Middleware.
|
|
7
|
-
* @returns {MiddlewareHandler} The middleware handler function.
|
|
8
|
-
*
|
|
9
|
-
* @example
|
|
10
|
-
* ```ts
|
|
11
|
-
* import { poweredBy } from 'hono/powered-by'
|
|
12
|
-
*
|
|
13
|
-
* const app = new Hono()
|
|
14
|
-
*
|
|
15
|
-
* app.use(poweredBy()) // With options: poweredBy({ serverName: "My Server" })
|
|
16
|
-
* ```
|
|
17
|
-
*/
|
|
18
|
-
const poweredBy = (options) => {
|
|
19
|
-
return async function poweredBy(c, next) {
|
|
20
|
-
await next();
|
|
21
|
-
c.res.headers.set("X-Powered-By", options?.serverName ?? "Hono");
|
|
22
|
-
};
|
|
23
|
-
};
|
|
24
|
-
//#endregion
|
|
25
|
-
exports.poweredBy = poweredBy;
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
//#region src/middleware/pretty-json/index.ts
|
|
3
|
-
const jsonContentTypeRegex = /^application\/(?:[a-z0-9._-]+\+)?json(?=$|[;\s])/i;
|
|
4
|
-
/**
|
|
5
|
-
* Pretty JSON Middleware for Hono.
|
|
6
|
-
*
|
|
7
|
-
* @see {@link https://hono.dev/docs/middleware/builtin/pretty-json}
|
|
8
|
-
*
|
|
9
|
-
* @param options - The options for the pretty JSON middleware.
|
|
10
|
-
* @returns {MiddlewareHandler} The middleware handler function.
|
|
11
|
-
*
|
|
12
|
-
* @example
|
|
13
|
-
* ```ts
|
|
14
|
-
* const app = new Hono()
|
|
15
|
-
*
|
|
16
|
-
* app.use(prettyJSON()) // With options: prettyJSON({ space: 4 })
|
|
17
|
-
* app.get('/', (c) => {
|
|
18
|
-
* return c.json({ message: 'Hono!' })
|
|
19
|
-
* })
|
|
20
|
-
* ```
|
|
21
|
-
*/
|
|
22
|
-
const prettyJSON = (options) => {
|
|
23
|
-
const targetQuery = options?.query ?? "pretty";
|
|
24
|
-
return async function prettyJSON(c, next) {
|
|
25
|
-
const pretty = options?.force || c.req.query(targetQuery) || c.req.query(targetQuery) === "";
|
|
26
|
-
await next();
|
|
27
|
-
const contentType = c.res.headers.get("Content-Type");
|
|
28
|
-
if (pretty && contentType && jsonContentTypeRegex.test(contentType)) {
|
|
29
|
-
let obj;
|
|
30
|
-
try {
|
|
31
|
-
obj = await c.res.clone().json();
|
|
32
|
-
} catch {
|
|
33
|
-
return;
|
|
34
|
-
}
|
|
35
|
-
c.res = new Response(JSON.stringify(obj, null, options?.space ?? 2), c.res);
|
|
36
|
-
c.res.headers.delete("Content-Length");
|
|
37
|
-
}
|
|
38
|
-
};
|
|
39
|
-
};
|
|
40
|
-
//#endregion
|
|
41
|
-
exports.prettyJSON = prettyJSON;
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
//#region src/middleware/request-id/request-id.ts
|
|
3
|
-
/**
|
|
4
|
-
* Request ID Middleware for Hono.
|
|
5
|
-
*
|
|
6
|
-
* @param {object} options - Options for Request ID middleware.
|
|
7
|
-
* @param {number} [options.limitLength=255] - The maximum length of request id.
|
|
8
|
-
* @param {string} [options.headerName=X-Request-Id] - The header name used in request id.
|
|
9
|
-
* @param {generator} [options.generator=() => crypto.randomUUID()] - The request id generation function.
|
|
10
|
-
*
|
|
11
|
-
* @returns {MiddlewareHandler} The middleware handler function.
|
|
12
|
-
*
|
|
13
|
-
* @example
|
|
14
|
-
* ```ts
|
|
15
|
-
* type Variables = RequestIdVariables
|
|
16
|
-
* const app = new Hono<{Variables: Variables}>()
|
|
17
|
-
*
|
|
18
|
-
* app.use(requestId())
|
|
19
|
-
* app.get('/', (c) => {
|
|
20
|
-
* console.log(c.get('requestId')) // Debug
|
|
21
|
-
* return c.text('Hello World!')
|
|
22
|
-
* })
|
|
23
|
-
* ```
|
|
24
|
-
*/
|
|
25
|
-
const requestId = ({ limitLength = 255, headerName = "X-Request-Id", generator = () => crypto.randomUUID() } = {}) => {
|
|
26
|
-
return async function requestId(c, next) {
|
|
27
|
-
let reqId = headerName ? c.req.header(headerName) : void 0;
|
|
28
|
-
if (!reqId || reqId.length > limitLength || /[^\w\-=]/.test(reqId)) reqId = generator(c);
|
|
29
|
-
c.set("requestId", reqId);
|
|
30
|
-
if (headerName) c.header(headerName, reqId);
|
|
31
|
-
await next();
|
|
32
|
-
};
|
|
33
|
-
};
|
|
34
|
-
//#endregion
|
|
35
|
-
exports.requestId = requestId;
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_middleware_secure_headers_secure_headers = require("./secure-headers.js");
|
|
3
|
-
exports.NONCE = require_middleware_secure_headers_secure_headers.NONCE;
|
|
4
|
-
exports.secureHeaders = require_middleware_secure_headers_secure_headers.secureHeaders;
|
|
File without changes
|