https://github.com/namesmt/hono-adapter-aws-lambda
https://github.com/namesmt/hono-adapter-aws-lambda
Last synced: 5 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/namesmt/hono-adapter-aws-lambda
- Owner: NamesMT
- License: mit
- Created: 2024-03-22T10:43:05.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-10-29T10:07:13.000Z (over 1 year ago)
- Last Synced: 2024-10-29T12:12:11.450Z (over 1 year ago)
- Language: TypeScript
- Size: 300 KB
- Stars: 7
- Watchers: 1
- Forks: 0
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# hono-adapter-aws-lambda 
[![npm version][npm-version-src]][npm-version-href]
[![npm downloads][npm-downloads-src]][npm-downloads-href]
[![Codecov][codecov-src]][codecov-href]
[![Bundlejs][bundlejs-src]][bundlejs-href]
[![jsDocs.io][jsDocs-src]][jsDocs-href]
**hono-adapter-aws-lambda** is a fork of [hono](https://hono.dev/)'s `aws-lambda` adapter, experimenting and adding some extra features
## Features, Changes & Roadmap
- [x] Codebase is refactored quite a bit.
- [x] Add routing support for trigger events.
- > I.e, support for S3, SQS, etc. triggers, which would also support a simpler cross-function call interface.
- Multiple routes on the same eventSource support.
- Uses a factory pattern, the internal trigger context (middlewares, env bindings) is decoupled from the main Hono app.
- See [#10](https://github.com/NamesMT/hono-adapter-aws-lambda/issues/10) for more information.
- [x] Support returning a Lambda response result directly, useful for returning the response of another invoked function.
## Usage
### Install package:
```sh
# pnpm (recommended)
pnpm install hono-adapter-aws-lambda
```
### Import:
```ts
// ESM
import { handle, streamHandle } from 'hono-adapter-aws-lambda'
```
### Examples:
Fast example of accepting an S3 trigger event
```ts
import type { S3Event } from 'aws-lambda' // You need to install `@types/aws-lambda`
import { createTriggerFactory, handle, streamHandle } from 'hono-adapter-aws-lambda'
interface Bindings {
event: { Records: Array<{ eventName: string }> }
}
const app = new Hono<{ Bindings: Bindings }>()
const triggerFactory = createTriggerFactory(app)
triggerFactory.on('aws:s3', '$!', c => c.text((c.env.event as S3Event).Records[0].eventName))
```
See some more examples in the test file: [test/index.test.ts](test/index.test.ts)
## License
[MIT](./LICENSE) License © 2024 [NamesMT](https://github.com/NamesMT)
[npm-version-src]: https://img.shields.io/npm/v/hono-adapter-aws-lambda?labelColor=18181B&color=F0DB4F
[npm-version-href]: https://npmjs.com/package/hono-adapter-aws-lambda
[npm-downloads-src]: https://img.shields.io/npm/dm/hono-adapter-aws-lambda?labelColor=18181B&color=F0DB4F
[npm-downloads-href]: https://npmjs.com/package/hono-adapter-aws-lambda
[codecov-src]: https://img.shields.io/codecov/c/gh/namesmt/hono-adapter-aws-lambda/main?labelColor=18181B&color=F0DB4F
[codecov-href]: https://codecov.io/gh/namesmt/hono-adapter-aws-lambda
[license-src]: https://img.shields.io/github/license/namesmt/hono-adapter-aws-lambda.svg?labelColor=18181B&color=F0DB4F
[license-href]: https://github.com/namesmt/hono-adapter-aws-lambda/blob/main/LICENSE
[bundlejs-src]: https://img.shields.io/bundlejs/size/hono-adapter-aws-lambda?labelColor=18181B&color=F0DB4F
[bundlejs-href]: https://bundlejs.com/?q=hono-adapter-aws-lambda
[jsDocs-src]: https://img.shields.io/badge/Check_out-jsDocs.io---?labelColor=18181B&color=F0DB4F
[jsDocs-href]: https://www.jsdocs.io/package/hono-adapter-aws-lambda