UNPKG

@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
/* * 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==