Skip to content

NamesMT/hono-adapter-aws-lambda

Repository files navigation

@namesmt/hono-adapter-aws-lambda TypeScript heart icon

npm version npm downloads Codecov Bundlejs jsDocs.io

@namesmt/hono-adapter-aws-lambda is a fork of hono's aws-lambda adapter, experimenting and adding some extra features

Features & Roadmap

  • add router support for trigger events.
    • I.e, support for S3, SQS, etc. triggers, which would also support a simpler cross-function call interface.

    • Support is added with a few notices
      • Must use getTriggerPath() when defining a trigger route
      • Must use fixTriggerRoute() to support basePath / grouping
    • A refactor of the trigger routing support have been released, it now supports multiple routes on the same eventSource, uses a factory pattern, and decoupled the trigger context (middlewares, env bindings) from our main Hono app, see #10 for more information.

Usage

Install package:

# pnpm (recommended)
pnpm install @namesmt/hono-adapter-aws-lambda

Import:

// ESM
import { handle, streamHandle } from '@namesmt/hono-adapter-aws-lambda'

Examples:

Fast example of accepting an S3 trigger event

import type { S3Event } from 'aws-lambda' // You need to install `@types/aws-lambda`
import { createTriggerFactory, handle, streamHandle } from '@namesmt/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

License

MIT License © 2024 NamesMT