npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@kleanjs/aws-lambda

v0.1.1

Published

High-performance adapters for AWS Lambda. This package provides specialized wrappers for API Gateway and SQS, integrating seamlessly with the `@kleanjs/core` middleware engine.

Readme

@kleanjs/aws-lambda

High-performance adapters for AWS Lambda. This package provides specialized wrappers for API Gateway and SQS, integrating seamlessly with the @kleanjs/core middleware engine.

Key Features

  • Service-Specific Wrappers: Specialized middlewares for API Gateway (REST/HTTP) and SQS (Parallel or Serial).
  • Automatic Response Formatting: Built-in handlers to transform business objects into AWS-compliant responses.
  • Partial Batch Support: Native handling of SQS batchItemFailures to optimize queue processing and costs.
  • Type Injection: Pre-configured infrastructure types (Events, Context, Results) for a zero-boilerplate experience.

Installation

npm install @kleanjs/aws-lambda @kleanjs/core ajv ajv-formats

API Gateway Reference

The apiGatewayMiddleware is pre-configured to handle HTTP requests. It automatically injects APIGatewayProxyEvent and APIGatewayProxyResult types.

Configuration Extensions

While it inherits from HandlerConfig, it provides sensible defaults:

  • Default Result: APIGatewayProxyResult.
  • Default Response: responseJSON() (Content-Type: application/json).
  • Default Error Handler: Automatically maps EventError properties to the response body and status code.

Example

import { apiGatewayMiddleware, responseJSON, Use } from "@kleanjs/aws-lambda";

export const handler = apiGatewayMiddleware(
  async (event) => {
    return { id: event.body.id, status: "active" };
  },
  {
    validators: {
      body: Use<{ id: string }>()
    },
    customResponse: responseJSON({ statusCode: 201 })
  }
);

SQS Reference

SQS processing is divided into two execution modes. Both modes isolate the logic to a single SQSRecord, abstracting the Records array iteration.

1. Parallel Processing (sqsMiddlewareParallel)

Processes all records in the batch simultaneously using Promise.allSettled. This is ideal for high-throughput tasks.

2. Serial Processing (sqsMiddlewareSeries)

Processes records one by one. Use this when the processing order is critical or to prevent race conditions.

Batch Error Handling

If a record throws an EventError or fails validation, the middleware catches it and adds its messageId to the batchItemFailures array. AWS will then retry only the failed messages.

Example

import { sqsMiddlewareParallel, Use } from "@kleanjs/aws-lambda";

export const handler = sqsMiddlewareParallel(
  async (record) => {
    // 'record' is a single SQSRecord with typed body
    await processOrder(record.body.orderId);
  },
  {
    validators: {
      body: Use<{ orderId: string }>()
    }
  }
);

Technical Interfaces

SQSOptions

export type SQSOptions<TValidators extends TSchemaMap, TContext = Context> = 
  Omit<HandlerConfig<any, any, TContext, TValidators>, "customResponse" | "event" | "result" | "context">;

Error Mapping Logic

The adapters catch any EventError (including AJVSimpleError or AJVFullError) and transform them as follows:

API Gateway Mapping

  • Status Code: Taken from error.statusCode.
  • Body: Standardized JSON with type, message, and details.

SQS Mapping

Any error thrown within the record handler marks that specific message as failed. The adapter returns the batchItemFailures object required by AWS.

License

GPLv3