Registry / aws / aws-lambda-middleware

aws-lambda-middleware

JSON →
library1.1.2jsnpmunverified

AWS Lambda Middleware is a lightweight library (v1.1.2, last updated 2023) for applying middleware and validating request parameters in AWS Lambda functions. It provides PropTypes for type checking and data correction, a Validate function for custom rules, and supports Express and other frameworks. Key differentiators include minimal overhead for Lambda, deep array/object validation, and customizable error message templates. Release cadence is sporadic, with major changes between v0.9 and v1.0 including reserved prop names, option changes, and required() method replacing isRequired.

npm install aws-lambda-middleware
INSTALL
IMPORT
SIG · AWS-LAMBDA-MIDDLEW
A
aws-lambda-middleware
awsjavascriptv1.1.2
harness data pending
Install & Compatibility
Where this runs

No compatibility data collected yet for this library.

Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

Middleware
const { Middleware } = require('aws-lambda-middleware')
const Middleware = require('aws-lambda-middleware').Middleware
CommonJS destructuring only; no default export.
Prop
const { Prop } = require('aws-lambda-middleware')
const { PropTypes } = require('aws-lambda-middleware')
Prop is an alias for PropTypes; both work.
Prop.string
Prop.string.required()
Prop.string.isRequired
isRequired deprecated in v1.0; use .required() method.

Creates a Lambda handler with parameter validation using PropTypes and middleware chaining.

const { Middleware, Prop } = require('aws-lambda-middleware') exports.handler = new Middleware().add({ queryStringParameters: { username: Prop.string.required(), age: Prop.integer, friends: [ { name: Prop.string.length({ max: 20 }), gender: Prop.string.or(['male', 'female']) } ] } }).add(async (event, context, prevData) => { const query = event.queryStringParameters console.log(`Hello ${query.username}`) return { statusCode: 200, body: JSON.stringify({ message: 'success' }) } })
Debug
Known issues
breakingv1.0 changes: object and array are reserved prop names, .required() replaces .isRequired, default() uses named parameters, and option() for trim settings.
fix
Update code: use .required() instead of .isRequired, change Prop.*.default(({event}) => {}) to named parameters, use .option({trim: false}) for per-prop trim.
affects: >=1.0.0
breakingv0.9 -> v1.0: interpretation of object and array expressions changed from 'validate only when value exists' to 'required validation'.
fix
Remove required() from object/array props if they should be optional; or add .default() to avoid required validation.
affects: >=1.0.0
deprecated.isRequired is deprecated since v1.0.0.
fix
Replace .isRequired with .required() method.
affects: >=1.0.0
gotchaProp.string.default('') returns undefined if string is empty; fixed in v1.0.4.
fix
Upgrade to v1.0.4 or later.
affects: <1.0.4
gotchaProp.bool.default(false) sets undefined; fixed in v1.0.4.
fix
Upgrade to v1.0.4 or later.
affects: <1.0.4
Errors
Common errors & fixes
TypeError: Prop.string.required is not a function
Using .required without parentheses; should be .required().
fix
Change to Prop.string.required()
Error: Reserved prop name 'object' cannot be overridden
Using 'object' as a prop name is reserved since v1.0.
fix
Rename the prop to something else (e.g., 'params').
TypeError: Cannot destructure property 'event' of 'undefined'
Old syntax for default() with (event) => {} in v1.0+.
fix
Use named parameter object: Prop.string.default(({event}) => event.headers['x-id'])
Upgrade
Version history
1.1.2latest on npm
Audit
Dependencies

No dependency data recorded yet.

Agent activity
21 hits · last 30 days
node
18
OpenAI (training)
1
Resources
aws-lambda-middleware — npm install aws-lambda-middleware · libregistry