UNPKG

lambda-response-template

Version:

💬 A tiny utility for creating AWS Lambda response objects.

69 lines (68 loc) • 3.06 kB
"use strict"; var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) { if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } return cooked; }; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); var common_tags_1 = require("common-tags"); var util_1 = require("./util"); var callbackNoop = function (value) { return value; }; function make(self, statusCode, body, overrideLike) { if (body === void 0) { body = ''; } var overrides; var headers; var multiValueHeaders; // Determine if third argument is content type, undefined, or options. if (util_1.isString(overrideLike)) { // Is a Content-Type header overrides = { headers: { 'content-type': overrideLike, }, }; } else if (overrideLike instanceof Object) { // Is an options object. overrides = overrideLike; } else { // Is unknown, set as empty. overrides = {}; } var hasTransformer = ('transform' in self) || ('transform' in overrides); if (!hasTransformer && !util_1.isString(body)) { var message = common_tags_1.oneLine(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n Attempted to pass type '", "' as a body. The body must be a\n string."], ["\n Attempted to pass type '", "' as a body. The body must be a\n string."])), typeof body); throw new Error(message); } if (Object.keys(self.headers).length || ('headers' in overrides)) { headers = __assign({}, self.headers, overrides.headers || {}); } if (Object.keys(self.multiValueHeaders).length || ('multiValueHeaders' in overrides)) { multiValueHeaders = __assign({}, self.multiValueHeaders, overrides.multiValueHeaders || {}); } var responseBody = (overrides.transform || self.transform || callbackNoop)(body); if (!util_1.isString(responseBody)) { var message = common_tags_1.oneLine(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n Transformation function returned type '", "'. Resulting\n body must be a string.\n "], ["\n Transformation function returned type '", "'. Resulting\n body must be a string.\n "])), typeof responseBody); throw new Error(message); } return { statusCode: statusCode, body: responseBody, headers: headers, multiValueHeaders: multiValueHeaders, isBase64Encoded: overrides.isBase64Encoded || self.isBase64Encoded, }; } exports.make = make; var templateObject_1, templateObject_2;