UNPKG

alagarr

Version:

Alagarr is a request-response helper library that removes the boilerplate from your Node.js serverless functions and helps make your code portable.

62 lines (61 loc) 2.94 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const error_handler_1 = __importDefault(require("./error-handler")); const client_error_1 = __importDefault(require("./errors/client-error")); exports.ClientError = client_error_1.default; const server_error_1 = __importDefault(require("./errors/server-error")); exports.ServerError = server_error_1.default; const request_1 = __importDefault(require("./request")); const response_1 = __importDefault(require("./response")); const DEFAULT_OPTIONS = { cspPolicies: [], enableCompression: true, enableContentLength: true, enableCspHeaders: true, enableETagHeader: true, enableEnforcedHeaders: true, enableLogger: true, enableStrictTransportSecurity: true, errorHandler: error_handler_1.default, requestMiddleware: [], responseMiddleware: [], }; const noopHandler = (_, _1) => { throw new server_error_1.default('Misconfiguration in Alagarr setup. No handler function was provided.'); }; function alagarr(handler = noopHandler, options = DEFAULT_OPTIONS) { return function handlerWrapper(event, context, callback) { return __awaiter(this, void 0, void 0, function* () { const mergedOptions = Object.assign({}, DEFAULT_OPTIONS, options); const request = yield request_1.default(event, context, mergedOptions); const response = yield response_1.default(request, callback, mergedOptions); try { return yield handler(request, response, context); } catch (error) { const errorHandler = typeof mergedOptions.errorHandler === 'function' ? mergedOptions.errorHandler : error_handler_1.default; try { return yield errorHandler(request, response, error); } catch (error) { console.error('There was an error in the error handler provided to Alagaar', error, errorHandler.toString()); return error_handler_1.default(request, response, error); } } }); }; } exports.default = alagarr;