* feat(middleware): introduce Request ID middleware
* fix not to accept empty string in header
* rename requestID to requestId
* pass the context to the generator option
* add typesVersions
* fix typo
Co-Authored-By: Taku Amano <taku@taaas.jp>
* change to generate id if validation fails
Co-Authored-By: Taku Amano <taku@taaas.jp>
* fix limit length test
---------
Co-authored-by: Taku Amano <taku@taaas.jp>
* feat: Introduce IP Limit Middleware
* chore(jsr): add return types
* chore: format code
* fix: eslint
* feat: if allow is empty, set allow at * by default (#3)
* feat: if allow is empty, set allow at * by default
* fix
* feat: remove wildcard
* chore: fix spelling
* chore: format
* chore: sort imports
* fix: test
* chore: sort imports
* feat: renamed `ipLimit` to `ipRestriction`
* feat: accept `(c: Context) => string)`
* chore: format code
* feat: allow/deny -> allowList/denyList
* feat: suport function rule
* chore: format code
* fix: test code
* feat: suport custom errors
* fix: test code
* fix: name in test code
* feat: allow function to named function
* perf(ip-restriction): optimize ip-restriction middleware by prepare matcher function in advance
* feat: don't use random ip in test
* chore: ipVn to ipvn
* fix: test code
* fix: fix type error in ip-restriction middleware test
* chore: rename `IPRestrictRule` to `IPRestrictionRule`
* docs(ip-restriction): add a comment to explain the normalization of IPv6 address
* docs(ip-restriction): fix typo in comment
* refactor(ip-restriction): rename convertIPv6ToString to convertIPv6BinaryToString
* feat: support to receive `Context` in `onError`
* fix: https://github.com/honojs/hono/pull/2813#discussion_r1667327721
* fix: format code
* feat: use `Forbidden`
* tracking the `next`
* remove importing `HonoRequest`
---------
Co-authored-by: Ame_x <121654029+EdamAme-x@users.noreply.github.com>
Co-authored-by: Taku Amano <taku@taaas.jp>
Co-authored-by: Yusuke Wada <yusuke@kamawada.com>
* feat(utils/stream): enable to abort streaming manually
* feat(utils/stream): prevent multiple aborts, and enable to get the abort status
* fix(streaming): call `stream.abort()` explicitly when request is aborted
* test: add tests for streaming
* docs(stream): add comments
* test: add --allow-net to deno test command in ci.yml
* test(streaming): update test code
* test(stream): retry flaky test up to 3 times at "bun"
* test(streaming): refactor test to use afterEach
* fix(streaming): in bun, `c` is destroyed when the request is returned, so hold it until the end of streaming
* refactor(streaming): tweaks code layout
* feat(jsx/server): introduce `jsx/dom/server` module for compatibility with `react-dom/server`
* refactor: tweaks signature of onError callback in renderToReadableStream for compatibility
* Add jsx/dom/server to jsr.json
* fix: relative import path error in `deno publish`