UNPKG

@middy/http-partial-response

Version:

Http partial response middleware for the middy framework

35 lines (26 loc) 919 B
import { jsonSafeParse, normalizeHttpResponse } from "@middy/util"; import mask from "json-mask"; const defaults = { filteringKeyName: "fields", }; const httpPartialResponseMiddleware = (opts = {}) => { const options = { ...defaults, ...opts }; const { filteringKeyName } = options; const httpPartialResponseMiddlewareAfter = async (request) => { const fields = request.event?.queryStringParameters?.[filteringKeyName]; if (!fields) return; normalizeHttpResponse(request); const body = request.response.body; const bodyIsString = typeof body === "string"; const parsedBody = jsonSafeParse(body); if (typeof parsedBody !== "object") return; const filteredBody = mask(parsedBody, fields); request.response.body = bodyIsString ? JSON.stringify(filteredBody) : filteredBody; }; return { after: httpPartialResponseMiddlewareAfter, }; }; export default httpPartialResponseMiddleware;