UNPKG

@avonjs/avonjs

Version:

A fluent Node.js API generator.

114 lines (113 loc) 3.53 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.validationResponses = exports.errorsResponses = exports.authorizationResponses = exports.handleAuthenticationError = exports.send = exports.isNullish = exports.reverseEvaluatorCallback = exports.approveCallback = exports.makeEvaluatorCallback = exports.slugify = void 0; const AuthenticationException_1 = __importDefault(require("./Exceptions/AuthenticationException")); /** * Convert given string in to slugify version. */ const slugify = (string, separator = '-') => { return String(string).replace(/[A-Z]/g, (matched, offset) => (offset > 0 ? separator : '') + matched.toLowerCase()); }; exports.slugify = slugify; /** * Make evaluator callback for given callback. */ const makeEvaluatorCallback = (callback) => { return typeof callback !== 'function' ? () => callback : callback; }; exports.makeEvaluatorCallback = makeEvaluatorCallback; /** * Make evaluator callback to approve. */ const approveCallback = () => (0, exports.makeEvaluatorCallback)(true); exports.approveCallback = approveCallback; /** * Make reverse callback for given evaluator callback. */ const reverseEvaluatorCallback = (callback) => { const evaluatorCallback = (0, exports.makeEvaluatorCallback)(callback); return (request, resource) => { return !evaluatorCallback(request, resource); }; }; exports.reverseEvaluatorCallback = reverseEvaluatorCallback; /** * Checks if the input value is nullish, which includes empty string, undefined, NaN, or null. */ const isNullish = (value) => { return ['', undefined, Number.NaN, null].includes(value); }; exports.isNullish = isNullish; /** * Send Avon response by node response service. */ const send = (res, response) => { res .status(response.getStatusCode()) .set(response.getHeaders()) .send(response.content()); }; exports.send = send; /** * Handle JWT authentication error. */ const handleAuthenticationError = (err, req, res, next) => { if (err.name === 'UnauthorizedError') { (0, exports.send)(res, new AuthenticationException_1.default(err).toResponse()); } else { next(err); } }; exports.handleAuthenticationError = handleAuthenticationError; /** * Get authorization responses schema. */ const authorizationResponses = () => { return { 401: { $ref: '#/components/responses/Unauthenticated', }, 403: { $ref: '#/components/responses/Forbidden', }, }; }; exports.authorizationResponses = authorizationResponses; /** * Get erros responses schema. */ const errorsResponses = () => { return { 400: { $ref: '#/components/responses/BadRequest', }, 404: { $ref: '#/components/responses/NotFound', }, 405: { $ref: '#/components/responses/MethodNotAllowed', }, 500: { $ref: '#/components/responses/InternalServerError', }, }; }; exports.errorsResponses = errorsResponses; /** * Get validation responses schema. */ const validationResponses = () => { return { 400: { $ref: '#/components/responses/BadRequest', }, 422: { $ref: '#/components/responses/UnprocessableContent', }, }; }; exports.validationResponses = validationResponses;