71cdcf40d8
* 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> |
||
---|---|---|
.devcontainer | ||
.github | ||
.vitest.config | ||
.vscode | ||
benchmarks | ||
docs | ||
runtime_tests | ||
src | ||
.eslintignore | ||
.eslintrc.cjs | ||
.gitignore | ||
.gitpod.yml | ||
.prettierrc | ||
build.ts | ||
bun.lockb | ||
bunfig.toml | ||
codecov.yml | ||
jsr.json | ||
LICENSE | ||
package.cjs.json | ||
package.json | ||
README.md | ||
tsconfig.build.json | ||
tsconfig.json | ||
vitest.config.ts | ||
yarn.lock |
Documentation 👉 hono.dev
Now supports JSR and deno.land/x
is deprecated! See Migration guide.
Hono - means flame🔥 in Japanese - is a small, simple, and ultrafast web framework built on Web Standards. It works on any JavaScript runtime: Cloudflare Workers, Fastly Compute, Deno, Bun, Vercel, AWS Lambda, Lambda@Edge, and Node.js.
Fast, but not only fast.
import { Hono } from 'hono'
const app = new Hono()
app.get('/', (c) => c.text('Hono!'))
export default app
Quick Start
npm create hono@latest
Features
- Ultrafast 🚀 - The router
RegExpRouter
is really fast. Not using linear loops. Fast. - Lightweight 🪶 - The
hono/tiny
preset is under 13kB. Hono has zero dependencies and uses only the Web Standard API. - Multi-runtime 🌍 - Works on Cloudflare Workers, Fastly Compute, Deno, Bun, AWS Lambda, Lambda@Edge, or Node.js. The same code runs on all platforms.
- Batteries Included 🔋 - Hono has built-in middleware, custom middleware, and third-party middleware. Batteries included.
- Delightful DX 😃 - Super clean APIs. First-class TypeScript support. Now, we've got "Types".
Documentation
The documentation is available on hono.dev.
Migration
The migration guide is available on docs/MIGRATION.md.
Communication
Twitter and Discord channel are available.
Contributing
Contributions Welcome! You can contribute in the following ways.
- Create an Issue - Propose a new feature. Report a bug.
- Pull Request - Fix a bug and typo. Refactor the code.
- Create third-party middleware - Instruct below.
- Share - Share your thoughts on the Blog, Twitter, and others.
- Make your application - Please try to use Hono.
For more details, see docs/CONTRIBUTING.md.
Contributors
Thanks to all contributors!
Authors
Yusuke Wada https://github.com/yusukebe
RegExpRouter, SmartRouter, LinearRouter, and PatternRouter are created by Taku Amano https://github.com/usualoma
License
Distributed under the MIT License. See LICENSE for more information.