@middy/validator
Version:
Validator middleware for the middy framework
50 lines (48 loc) • 1.75 kB
JavaScript
import { createError } from '@middy/util';
const defaults = {
eventSchema: undefined,
contextSchema: undefined,
responseSchema: undefined,
defaultLanguage: 'en',
languages: {}
};
const validatorMiddleware = (opts = {})=>{
const { eventSchema , contextSchema , responseSchema , defaultLanguage , languages } = {
...defaults,
...opts
};
const validatorMiddlewareBefore = async (request)=>{
if (eventSchema) {
const validEvent = await eventSchema(request.event);
if (!validEvent) {
const localize = languages[request.event.preferredLanguage] ?? languages[defaultLanguage];
localize?.(eventSchema.errors);
throw createError(400, 'Event object failed validation', {
cause: eventSchema.errors
});
}
}
if (contextSchema) {
const validContext = await contextSchema(request.context);
if (!validContext) {
throw createError(500, 'Context object failed validation', {
cause: contextSchema.errors
});
}
}
};
const validatorMiddlewareAfter = async (request)=>{
const validResponse = await responseSchema(request.response);
if (!validResponse) {
throw createError(500, 'Response object failed validation', {
cause: responseSchema.errors
});
}
};
return {
before: eventSchema ?? contextSchema ? validatorMiddlewareBefore : undefined,
after: responseSchema ? validatorMiddlewareAfter : undefined
};
};
export default validatorMiddleware;
//# sourceMappingURL=index.js.map