0
0
mirror of https://github.com/honojs/hono.git synced 2024-11-21 18:18:57 +01:00
Web Framework built on Web Standards https://hono.dev/
Go to file
Shotaro Nakamura 71cdcf40d8
feat: Introduce IP Restriction Middleware (#2813)
* 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>
2024-07-08 23:26:01 +09:00
.devcontainer chore: use official deno installer (#2250) 2024-02-22 11:33:14 +09:00
.github chore: add the triage label (#3092) 2024-07-06 15:38:45 +09:00
.vitest.config ci: Report coverage with CodeCov (#2862) 2024-06-01 04:17:47 +09:00
.vscode refactor: body parser (#2045) 2024-01-21 06:17:48 +09:00
benchmarks chore: update benchmark (#3102) 2024-07-06 19:25:28 +09:00
docs docs: update readme and migrate guide for migrating deno.land/x to JSR (#2879) 2024-06-01 06:15:49 +09:00
runtime_tests Merge branch 'main' into next 2024-07-08 22:10:10 +09:00
src feat: Introduce IP Restriction Middleware (#2813) 2024-07-08 23:26:01 +09:00
.eslintignore chore(eslint): enable @typescript-eslint/unbound-method (#2622) 2024-05-06 17:38:34 +09:00
.eslintrc.cjs chore(eslint): enable @typescript-eslint/unbound-method (#2622) 2024-05-06 17:38:34 +09:00
.gitignore chore: use Bun as a package manager (#2105) 2024-01-29 23:27:54 +09:00
.gitpod.yml chore: create .gitpod.yml (#2868) 2024-06-04 17:17:07 +09:00
.prettierrc chore(prettier): remove markdown-nocjsp parser 2022-07-16 10:03:01 +09:00
build.ts fix(build): fix ESM support in Node.js / use esbuild (#631) 2022-10-28 08:46:02 +09:00
bun.lockb chore: replace tsx with Bun (#3103) 2024-07-07 15:55:19 +09:00
bunfig.toml chore(ci): enable lcov reporter for Bun test (#3022) 2024-06-24 05:39:29 +09:00
codecov.yml ci: Report coverage with CodeCov (#2862) 2024-06-01 04:17:47 +09:00
jsr.json feat: Introduce IP Restriction Middleware (#2813) 2024-07-08 23:26:01 +09:00
LICENSE chore: update license, contributors as the copyright holders (#769) 2023-01-02 19:18:59 +09:00
package.cjs.json fix(typo): package.cjs.json target to type (#634) 2022-10-29 16:09:32 +09:00
package.json feat: Introduce IP Restriction Middleware (#2813) 2024-07-08 23:26:01 +09:00
README.md docs: update the description of package.json and README (#3052) 2024-06-27 17:13:29 +09:00
tsconfig.build.json chore(vitest/tsconfig): bump vitest and update tsconfig.build.json (#1851) 2023-12-25 11:46:37 +09:00
tsconfig.json feat(http-exception): Add a "cause" option to HTTPException (#2224) 2024-02-25 19:07:33 +09:00
vitest.config.ts chore: add text and html for coverage reporter (#2923) 2024-06-06 22:25:38 +09:00
yarn.lock chore: replace tsx with Bun (#3103) 2024-07-07 15:55:19 +09:00


Documentation 👉 hono.dev
Now supports JSR and deno.land/x is deprecated! See Migration guide.


GitHub Workflow Status GitHub npm npm JSR Bundle Size Bundle Size GitHub commit activity GitHub last commit codecov Discord badge

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.