From 5cd86dd5d709234ddd2b1c79ba318a9bdd526bd4 Mon Sep 17 00:00:00 2001 From: Yusuke Wada Date: Sun, 16 Oct 2022 18:14:21 +0900 Subject: [PATCH] feat: add hello middleware (#1) * feat: add hello middleware * add changeset --- .changeset/young-ligers-type.md | 5 +++++ packages/hello/README.md | 26 ++++++++++++++++++++++++++ packages/hello/jest.config.js | 1 + packages/hello/package.json | 26 ++++++++++++++++++++++++++ packages/hello/src/index.test.ts | 26 ++++++++++++++++++++++++++ packages/hello/src/index.ts | 8 ++++++++ packages/hello/tsconfig.json | 10 ++++++++++ 7 files changed, 102 insertions(+) create mode 100644 .changeset/young-ligers-type.md create mode 100644 packages/hello/README.md create mode 100644 packages/hello/jest.config.js create mode 100644 packages/hello/package.json create mode 100644 packages/hello/src/index.test.ts create mode 100644 packages/hello/src/index.ts create mode 100644 packages/hello/tsconfig.json 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