@versatiledatakit/shared
Version:
Versatile Data Kit Shared library enables reusability of shared features like: NgRx Redux, Error Handlers, Utils, Generic Components, etc.
70 lines • 11.4 kB
JavaScript
/*
* Copyright 2023-2025 Broadcom
* SPDX-License-Identifier: Apache-2.0
*/
import { CollectionsUtil } from '../../../utils';
/**
* ** Generates Error code (token).
*
* - Code (token) starts with
* - Class name,
* - then followed by underscore and class PUBLIC_NAME,
* - then followed by underscore and method name or underscore with some error specifics,
* - then followed by underscore and additional details to avoid overlaps with other Class errors.
* <b>(for http requests it should be HTTP Status Code)</b>
*
* <br/>
* <i>returned value pattern</i>:
* <p>
* <Class Name><b>_</b><Class PUBLIC_NAME><b>_</b><Class method name><b>_</b><additional details, like HTTP Status Code>
* </p>
*/
export const generateErrorCode = (className, classPublicName, methodName, additionalDetails) => {
let errorCode = '';
if (CollectionsUtil.isString(className)) {
errorCode += `${className}`;
}
else {
errorCode += CollectionsUtil.generateRandomString();
}
if (CollectionsUtil.isString(classPublicName)) {
errorCode += `_${classPublicName}`;
}
if (CollectionsUtil.isString(methodName)) {
errorCode += `_${methodName}`;
}
if (CollectionsUtil.isString(additionalDetails)) {
errorCode += `_${additionalDetails}`;
}
else {
errorCode += '_';
}
return errorCode;
};
/**
* ** Generates supported error codes for provided className, publicName and methodName.
*/
/* eslint-disable @typescript-eslint/no-unsafe-argument,
@typescript-eslint/no-unsafe-member-access,
@typescript-eslint/no-explicit-any */
export const generateSupportedHttpErrorCodes = (className, publicName, method) => {
const errorCodes = {};
errorCodes.All = generateErrorCode(className, publicName, method, null);
errorCodes.ClientErrors = generateErrorCode(className, publicName, method, '4\\d\\d');
errorCodes.BadRequest = generateErrorCode(className, publicName, method, `${400 /* BadRequest */}`);
errorCodes.Unauthorized = generateErrorCode(className, publicName, method, `${401 /* Unauthorized */}`);
errorCodes.Forbidden = generateErrorCode(className, publicName, method, `${403 /* Forbidden */}`);
errorCodes.NotFound = generateErrorCode(className, publicName, method, `${404 /* NotFound */}`);
errorCodes.MethodNotAllowed = generateErrorCode(className, publicName, method, `${405 /* MethodNotAllowed */}`);
errorCodes.Conflict = generateErrorCode(className, publicName, method, `${409 /* Conflict */}`);
errorCodes.UnprocessableEntity = generateErrorCode(className, publicName, method, `${422 /* UnprocessableEntity */}`);
errorCodes.ServerErrors = generateErrorCode(className, publicName, method, '5\\d\\d');
errorCodes.InternalServerError = generateErrorCode(className, publicName, method, `${500 /* InternalServerError */}`);
errorCodes.ServiceUnavailable = generateErrorCode(className, publicName, method, `${503 /* ServiceUnavailable */}`);
errorCodes.Unknown = generateErrorCode(className, publicName, method, 'unknown');
return errorCodes;
};
/* eslint-enable @typescript-eslint/no-unsafe-argument,
@typescript-eslint/no-unsafe-member-access,
@typescript-eslint/no-explicit-any */
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3Itc3RvcmUudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zaGFyZWQvc3JjL2xpYi9jb21tb24vZXJyb3IvdXRpbHMvZXJyb3Itc3RvcmUudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBSUgsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSWpEOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUNILE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHLENBQUMsU0FBaUIsRUFBRSxlQUF1QixFQUFFLFVBQWtCLEVBQUUsaUJBQXlCLEVBQVUsRUFBRTtJQUNuSSxJQUFJLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFFbkIsSUFBSSxlQUFlLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxFQUFFO1FBQ3JDLFNBQVMsSUFBSSxHQUFHLFNBQVMsRUFBRSxDQUFDO0tBQy9CO1NBQU07UUFDSCxTQUFTLElBQUksZUFBZSxDQUFDLG9CQUFvQixFQUFFLENBQUM7S0FDdkQ7SUFFRCxJQUFJLGVBQWUsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLEVBQUU7UUFDM0MsU0FBUyxJQUFJLElBQUksZUFBZSxFQUFFLENBQUM7S0FDdEM7SUFFRCxJQUFJLGVBQWUsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEVBQUU7UUFDdEMsU0FBUyxJQUFJLElBQUksVUFBVSxFQUFFLENBQUM7S0FDakM7SUFFRCxJQUFJLGVBQWUsQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUMsRUFBRTtRQUM3QyxTQUFTLElBQUksSUFBSSxpQkFBaUIsRUFBRSxDQUFDO0tBQ3hDO1NBQU07UUFDSCxTQUFTLElBQUksR0FBRyxDQUFDO0tBQ3BCO0lBRUQsT0FBTyxTQUFTLENBQUM7QUFDckIsQ0FBQyxDQUFDO0FBRUY7O0dBRUc7QUFDSDs7dURBRXVEO0FBQ3ZELE1BQU0sQ0FBQyxNQUFNLCtCQUErQixHQUFHLENBQUMsU0FBaUIsRUFBRSxVQUFrQixFQUFFLE1BQWMsRUFBeUIsRUFBRTtJQUM1SCxNQUFNLFVBQVUsR0FBMEIsRUFBMkIsQ0FBQztJQUV0RSxVQUFVLENBQUMsR0FBRyxHQUFHLGlCQUFpQixDQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3hFLFVBQVUsQ0FBQyxZQUFZLEdBQUcsaUJBQWlCLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDdEYsVUFBVSxDQUFDLFVBQVUsR0FBRyxpQkFBaUIsQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLG9CQUF5QixFQUFFLENBQUMsQ0FBQztJQUN6RyxVQUFVLENBQUMsWUFBWSxHQUFHLGlCQUFpQixDQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEdBQUcsc0JBQTJCLEVBQUUsQ0FBQyxDQUFDO0lBQzdHLFVBQVUsQ0FBQyxTQUFTLEdBQUcsaUJBQWlCLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsR0FBRyxtQkFBd0IsRUFBRSxDQUFDLENBQUM7SUFDdkcsVUFBVSxDQUFDLFFBQVEsR0FBRyxpQkFBaUIsQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLGtCQUF1QixFQUFFLENBQUMsQ0FBQztJQUNyRyxVQUFVLENBQUMsZ0JBQWdCLEdBQUcsaUJBQWlCLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsR0FBRywwQkFBK0IsRUFBRSxDQUFDLENBQUM7SUFDckgsVUFBVSxDQUFDLFFBQVEsR0FBRyxpQkFBaUIsQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLGtCQUF1QixFQUFFLENBQUMsQ0FBQztJQUNyRyxVQUFVLENBQUMsbUJBQW1CLEdBQUcsaUJBQWlCLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsR0FBRyw2QkFBa0MsRUFBRSxDQUFDLENBQUM7SUFDM0gsVUFBVSxDQUFDLFlBQVksR0FBRyxpQkFBaUIsQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQztJQUN0RixVQUFVLENBQUMsbUJBQW1CLEdBQUcsaUJBQWlCLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsR0FBRyw2QkFBa0MsRUFBRSxDQUFDLENBQUM7SUFDM0gsVUFBVSxDQUFDLGtCQUFrQixHQUFHLGlCQUFpQixDQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEdBQUcsNEJBQWlDLEVBQUUsQ0FBQyxDQUFDO0lBQ3pILFVBQVUsQ0FBQyxPQUFPLEdBQUcsaUJBQWlCLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFFakYsT0FBTyxVQUFVLENBQUM7QUFDdEIsQ0FBQyxDQUFDO0FBQ0Y7O3VEQUV1RCIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAyMy0yMDI1IEJyb2FkY29tXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuICovXG5cbmltcG9ydCB7IEh0dHBTdGF0dXNDb2RlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuXG5pbXBvcnQgeyBDb2xsZWN0aW9uc1V0aWwgfSBmcm9tICcuLi8uLi8uLi91dGlscyc7XG5cbmltcG9ydCB7IFNlcnZpY2VIdHRwRXJyb3JDb2RlcyB9IGZyb20gJy4uL3VpLWVycm9yL21vZGVsL2ludGVyZmFjZXMnO1xuXG4vKipcbiAqICoqIEdlbmVyYXRlcyBFcnJvciBjb2RlICh0b2tlbikuXG4gKlxuICogICAgICAtIENvZGUgKHRva2VuKSBzdGFydHMgd2l0aFxuICogICAgICAtIENsYXNzIG5hbWUsXG4gKiAgICAgIC0gdGhlbiBmb2xsb3dlZCBieSB1bmRlcnNjb3JlIGFuZCBjbGFzcyBQVUJMSUNfTkFNRSxcbiAqICAgICAgLSB0aGVuIGZvbGxvd2VkIGJ5IHVuZGVyc2NvcmUgYW5kIG1ldGhvZCBuYW1lIG9yIHVuZGVyc2NvcmUgd2l0aCBzb21lIGVycm9yIHNwZWNpZmljcyxcbiAqICAgICAgLSB0aGVuIGZvbGxvd2VkIGJ5IHVuZGVyc2NvcmUgYW5kIGFkZGl0aW9uYWwgZGV0YWlscyB0byBhdm9pZCBvdmVybGFwcyB3aXRoIG90aGVyIENsYXNzIGVycm9ycy5cbiAqICAgICAgICA8Yj4oZm9yIGh0dHAgcmVxdWVzdHMgaXQgc2hvdWxkIGJlIEhUVFAgU3RhdHVzIENvZGUpPC9iPlxuICpcbiAqIDxici8+XG4gKiA8aT5yZXR1cm5lZCB2YWx1ZSBwYXR0ZXJuPC9pPjpcbiAqIDxwPlxuICogICAgIDxDbGFzcyBOYW1lPjxiPl88L2I+PENsYXNzIFBVQkxJQ19OQU1FPjxiPl88L2I+PENsYXNzIG1ldGhvZCBuYW1lPjxiPl88L2I+PGFkZGl0aW9uYWwgZGV0YWlscywgbGlrZSBIVFRQIFN0YXR1cyBDb2RlPlxuICogPC9wPlxuICovXG5leHBvcnQgY29uc3QgZ2VuZXJhdGVFcnJvckNvZGUgPSAoY2xhc3NOYW1lOiBzdHJpbmcsIGNsYXNzUHVibGljTmFtZTogc3RyaW5nLCBtZXRob2ROYW1lOiBzdHJpbmcsIGFkZGl0aW9uYWxEZXRhaWxzOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICAgIGxldCBlcnJvckNvZGUgPSAnJztcblxuICAgIGlmIChDb2xsZWN0aW9uc1V0aWwuaXNTdHJpbmcoY2xhc3NOYW1lKSkge1xuICAgICAgICBlcnJvckNvZGUgKz0gYCR7Y2xhc3NOYW1lfWA7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgZXJyb3JDb2RlICs9IENvbGxlY3Rpb25zVXRpbC5nZW5lcmF0ZVJhbmRvbVN0cmluZygpO1xuICAgIH1cblxuICAgIGlmIChDb2xsZWN0aW9uc1V0aWwuaXNTdHJpbmcoY2xhc3NQdWJsaWNOYW1lKSkge1xuICAgICAgICBlcnJvckNvZGUgKz0gYF8ke2NsYXNzUHVibGljTmFtZX1gO1xuICAgIH1cblxuICAgIGlmIChDb2xsZWN0aW9uc1V0aWwuaXNTdHJpbmcobWV0aG9kTmFtZSkpIHtcbiAgICAgICAgZXJyb3JDb2RlICs9IGBfJHttZXRob2ROYW1lfWA7XG4gICAgfVxuXG4gICAgaWYgKENvbGxlY3Rpb25zVXRpbC5pc1N0cmluZyhhZGRpdGlvbmFsRGV0YWlscykpIHtcbiAgICAgICAgZXJyb3JDb2RlICs9IGBfJHthZGRpdGlvbmFsRGV0YWlsc31gO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGVycm9yQ29kZSArPSAnXyc7XG4gICAgfVxuXG4gICAgcmV0dXJuIGVycm9yQ29kZTtcbn07XG5cbi8qKlxuICogKiogR2VuZXJhdGVzIHN1cHBvcnRlZCBlcnJvciBjb2RlcyBmb3IgcHJvdmlkZWQgY2xhc3NOYW1lLCBwdWJsaWNOYW1lIGFuZCBtZXRob2ROYW1lLlxuICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWFyZ3VtZW50LFxuICAgICAgICAgICAgICAgICAgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1tZW1iZXItYWNjZXNzLFxuICAgICAgICAgICAgICAgICAgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuZXhwb3J0IGNvbnN0IGdlbmVyYXRlU3VwcG9ydGVkSHR0cEVycm9yQ29kZXMgPSAoY2xhc3NOYW1lOiBzdHJpbmcsIHB1YmxpY05hbWU6IHN0cmluZywgbWV0aG9kOiBzdHJpbmcpOiBTZXJ2aWNlSHR0cEVycm9yQ29kZXMgPT4ge1xuICAgIGNvbnN0IGVycm9yQ29kZXM6IFNlcnZpY2VIdHRwRXJyb3JDb2RlcyA9IHt9IGFzIFNlcnZpY2VIdHRwRXJyb3JDb2RlcztcblxuICAgIGVycm9yQ29kZXMuQWxsID0gZ2VuZXJhdGVFcnJvckNvZGUoY2xhc3NOYW1lLCBwdWJsaWNOYW1lLCBtZXRob2QsIG51bGwpO1xuICAgIGVycm9yQ29kZXMuQ2xpZW50RXJyb3JzID0gZ2VuZXJhdGVFcnJvckNvZGUoY2xhc3NOYW1lLCBwdWJsaWNOYW1lLCBtZXRob2QsICc0XFxcXGRcXFxcZCcpO1xuICAgIGVycm9yQ29kZXMuQmFkUmVxdWVzdCA9IGdlbmVyYXRlRXJyb3JDb2RlKGNsYXNzTmFtZSwgcHVibGljTmFtZSwgbWV0aG9kLCBgJHtIdHRwU3RhdHVzQ29kZS5CYWRSZXF1ZXN0fWApO1xuICAgIGVycm9yQ29kZXMuVW5hdXRob3JpemVkID0gZ2VuZXJhdGVFcnJvckNvZGUoY2xhc3NOYW1lLCBwdWJsaWNOYW1lLCBtZXRob2QsIGAke0h0dHBTdGF0dXNDb2RlLlVuYXV0aG9yaXplZH1gKTtcbiAgICBlcnJvckNvZGVzLkZvcmJpZGRlbiA9IGdlbmVyYXRlRXJyb3JDb2RlKGNsYXNzTmFtZSwgcHVibGljTmFtZSwgbWV0aG9kLCBgJHtIdHRwU3RhdHVzQ29kZS5Gb3JiaWRkZW59YCk7XG4gICAgZXJyb3JDb2Rlcy5Ob3RGb3VuZCA9IGdlbmVyYXRlRXJyb3JDb2RlKGNsYXNzTmFtZSwgcHVibGljTmFtZSwgbWV0aG9kLCBgJHtIdHRwU3RhdHVzQ29kZS5Ob3RGb3VuZH1gKTtcbiAgICBlcnJvckNvZGVzLk1ldGhvZE5vdEFsbG93ZWQgPSBnZW5lcmF0ZUVycm9yQ29kZShjbGFzc05hbWUsIHB1YmxpY05hbWUsIG1ldGhvZCwgYCR7SHR0cFN0YXR1c0NvZGUuTWV0aG9kTm90QWxsb3dlZH1gKTtcbiAgICBlcnJvckNvZGVzLkNvbmZsaWN0ID0gZ2VuZXJhdGVFcnJvckNvZGUoY2xhc3NOYW1lLCBwdWJsaWNOYW1lLCBtZXRob2QsIGAke0h0dHBTdGF0dXNDb2RlLkNvbmZsaWN0fWApO1xuICAgIGVycm9yQ29kZXMuVW5wcm9jZXNzYWJsZUVudGl0eSA9IGdlbmVyYXRlRXJyb3JDb2RlKGNsYXNzTmFtZSwgcHVibGljTmFtZSwgbWV0aG9kLCBgJHtIdHRwU3RhdHVzQ29kZS5VbnByb2Nlc3NhYmxlRW50aXR5fWApO1xuICAgIGVycm9yQ29kZXMuU2VydmVyRXJyb3JzID0gZ2VuZXJhdGVFcnJvckNvZGUoY2xhc3NOYW1lLCBwdWJsaWNOYW1lLCBtZXRob2QsICc1XFxcXGRcXFxcZCcpO1xuICAgIGVycm9yQ29kZXMuSW50ZXJuYWxTZXJ2ZXJFcnJvciA9IGdlbmVyYXRlRXJyb3JDb2RlKGNsYXNzTmFtZSwgcHVibGljTmFtZSwgbWV0aG9kLCBgJHtIdHRwU3RhdHVzQ29kZS5JbnRlcm5hbFNlcnZlckVycm9yfWApO1xuICAgIGVycm9yQ29kZXMuU2VydmljZVVuYXZhaWxhYmxlID0gZ2VuZXJhdGVFcnJvckNvZGUoY2xhc3NOYW1lLCBwdWJsaWNOYW1lLCBtZXRob2QsIGAke0h0dHBTdGF0dXNDb2RlLlNlcnZpY2VVbmF2YWlsYWJsZX1gKTtcbiAgICBlcnJvckNvZGVzLlVua25vd24gPSBnZW5lcmF0ZUVycm9yQ29kZShjbGFzc05hbWUsIHB1YmxpY05hbWUsIG1ldGhvZCwgJ3Vua25vd24nKTtcblxuICAgIHJldHVybiBlcnJvckNvZGVzO1xufTtcbi8qIGVzbGludC1lbmFibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1hcmd1bWVudCxcbiAgICAgICAgICAgICAgICAgIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtbWVtYmVyLWFjY2VzcyxcbiAgICAgICAgICAgICAgICAgIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbiJdfQ==