@enter-at/lambda-handlers
Version:
An opinionated Typescript package that facilitates specifying AWS Lambda handlers including input validation, error handling and response formatting.
68 lines (67 loc) • 2.74 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.noContent = exports.created = exports.ok = exports.conflict = exports.unprocessableEntity = exports.requestTimeout = exports.notFound = exports.internalServerError = exports.unauthorized = exports.forbidden = exports.badRequest = void 0;
const http2_1 = require("http2");
const error_1 = require("./error");
const ConflictError_1 = require("./error/ConflictError");
function badRequest(details) {
const error = new error_1.BadRequestError(details);
return buildResult(error, http2_1.constants.HTTP_STATUS_BAD_REQUEST);
}
exports.badRequest = badRequest;
function forbidden(details) {
const error = new error_1.ForbiddenError(details);
return buildResult(error, http2_1.constants.HTTP_STATUS_FORBIDDEN);
}
exports.forbidden = forbidden;
function unauthorized(details) {
const error = new error_1.UnauthorizedError(details);
return buildResult(error, http2_1.constants.HTTP_STATUS_UNAUTHORIZED);
}
exports.unauthorized = unauthorized;
function internalServerError() {
const error = new error_1.InternalServerError("InternalServerError");
return buildResult(error, http2_1.constants.HTTP_STATUS_INTERNAL_SERVER_ERROR);
}
exports.internalServerError = internalServerError;
function notFound(details) {
const error = new error_1.NotFoundError(details);
return buildResult(error, http2_1.constants.HTTP_STATUS_NOT_FOUND);
}
exports.notFound = notFound;
function requestTimeout(details) {
const error = new error_1.RequestTimeoutError(details);
return buildResult(error, http2_1.constants.HTTP_STATUS_REQUEST_TIMEOUT);
}
exports.requestTimeout = requestTimeout;
function unprocessableEntity(details) {
const error = new error_1.UnprocessableEntityError(details);
return buildResult(error, http2_1.constants.HTTP_STATUS_UNPROCESSABLE_ENTITY);
}
exports.unprocessableEntity = unprocessableEntity;
function conflict(details) {
const error = new ConflictError_1.ConflictError(details);
return buildResult(error, http2_1.constants.HTTP_STATUS_CONFLICT);
}
exports.conflict = conflict;
function ok(result) {
return buildResult(result, http2_1.constants.HTTP_STATUS_OK);
}
exports.ok = ok;
function created(result) {
return buildResult(result, http2_1.constants.HTTP_STATUS_CREATED);
}
exports.created = created;
function noContent() {
return buildResult(null, http2_1.constants.HTTP_STATUS_NO_CONTENT);
}
exports.noContent = noContent;
function buildResult(result, statusCode) {
const body = result && result instanceof error_1.LambdaHandlerError
? { errors: [{ name: result.name, details: result.details }] }
: result;
return {
body,
statusCode,
};
}