UNPKG

@middy/validator

Version:

Validator middleware for the middy framework

50 lines (48 loc) 1.75 kB
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