@avonjs/avonjs
Version:
A fluent Node.js API generator.
114 lines (113 loc) • 3.53 kB
JavaScript
;
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;