diff --git a/.changeset/young-ligers-type.md b/.changeset/young-ligers-type.md new file mode 100644 index 00000000..7765e18b --- /dev/null +++ b/.changeset/young-ligers-type.md @@ -0,0 +1,5 @@ +--- +'@honojs/hello': patch +--- + +the repository has been moved diff --git a/packages/hello/README.md b/packages/hello/README.md new file mode 100644 index 00000000..2d68977d --- /dev/null +++ b/packages/hello/README.md @@ -0,0 +1,26 @@ +# Hello middleware for Hono + +An example project of the third-party middleware for [Hono](https://github.com/honojs/hono). +This middleware add `X-Message` header to the Response. + +## Usage + +```ts +import { hello } from '@honojs/hello' +import { Hono } from 'hono' + +const app = new Hono() + +app.use('*', hello('Hello!! Hono!!')) +app.get('/', (c) => c.text('foo')) + +export default app +``` + +## Author + +Yusuke Wada + +## License + +MIT diff --git a/packages/hello/jest.config.js b/packages/hello/jest.config.js new file mode 100644 index 00000000..f697d831 --- /dev/null +++ b/packages/hello/jest.config.js @@ -0,0 +1 @@ +module.exports = require('../../jest.config.js') diff --git a/packages/hello/package.json b/packages/hello/package.json new file mode 100644 index 00000000..3de3ba85 --- /dev/null +++ b/packages/hello/package.json @@ -0,0 +1,26 @@ +{ + "name": "@honojs/hello", + "version": "0.0.6", + "description": "An example of third-party middleware for Hono", + "main": "dist/index.js", + "types": "dist/index.d.ts", + "files": [ + "dist" + ], + "scripts": { + "test": "jest", + "build": "rimraf dist && tsc", + "prerelease": "yarn build && yarn test", + "release": "yarn publish" + }, + "license": "MIT", + "private": false, + "repository": { + "type": "git", + "url": "https://github.com/honojs/middleware.git" + }, + "homepage": "https://github.com/honojs/middleware", + "dependencies": { + "hono": "^2.2.5" + } +} \ No newline at end of file diff --git a/packages/hello/src/index.test.ts b/packages/hello/src/index.test.ts new file mode 100644 index 00000000..fdf360a4 --- /dev/null +++ b/packages/hello/src/index.test.ts @@ -0,0 +1,26 @@ +import { Hono } from 'hono' +import { hello } from '../src' + +describe('Hello middleware', () => { + const app = new Hono() + + app.use('/hello/*', hello()) + app.get('/hello/foo', (c) => c.text('foo')) + + app.use('/x/*', hello('X')) + app.get('/x/foo', (c) => c.text('foo')) + + it('Should be hello message', async () => { + const res = await app.request('http://localhost/hello/foo') + expect(res).not.toBeNull() + expect(res.status).toBe(200) + expect(res.headers.get('X-Message')).toBe('Hello') + }) + + it('Should be X', async () => { + const res = await app.request('http://localhost/x/foo') + expect(res).not.toBeNull() + expect(res.status).toBe(200) + expect(res.headers.get('X-Message')).toBe('X') + }) +}) diff --git a/packages/hello/src/index.ts b/packages/hello/src/index.ts new file mode 100644 index 00000000..b4f43c99 --- /dev/null +++ b/packages/hello/src/index.ts @@ -0,0 +1,8 @@ +import type { Handler } from 'hono' + +export const hello = (message: string = 'Hello'): Handler => { + return async (c, next) => { + await next() + c.res.headers.append('X-Message', message) + } +} diff --git a/packages/hello/tsconfig.json b/packages/hello/tsconfig.json new file mode 100644 index 00000000..acfcd843 --- /dev/null +++ b/packages/hello/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../../tsconfig.json", + "compilerOptions": { + "rootDir": "./src", + "outDir": "./dist", + }, + "include": [ + "src/**/*.ts" + ], +} \ No newline at end of file