refactor: Improve error logging/reporting for cli (#4691)
* use response error classes instead of `ResponseError` everywhere * improve error logging in dev mode or when telemetry is disabled
This commit is contained in:
committed by
GitHub
parent
5364e7fc92
commit
0b754a4f85
@@ -172,10 +172,8 @@ executionsController.get(
|
||||
userId: req.user.id,
|
||||
filter: req.query.filter,
|
||||
});
|
||||
throw new ResponseHelper.ResponseError(
|
||||
throw new ResponseHelper.InternalServerError(
|
||||
`Parameter "filter" contained invalid JSON string.`,
|
||||
500,
|
||||
500,
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -363,10 +361,8 @@ executionsController.post(
|
||||
executionId,
|
||||
},
|
||||
);
|
||||
throw new ResponseHelper.ResponseError(
|
||||
throw new ResponseHelper.NotFoundError(
|
||||
`The execution with the ID "${executionId}" does not exist.`,
|
||||
404,
|
||||
404,
|
||||
);
|
||||
}
|
||||
|
||||
@@ -485,10 +481,8 @@ executionsController.post(
|
||||
requestFilters = requestFiltersRaw as IGetExecutionsQueryFilter;
|
||||
}
|
||||
} catch (error) {
|
||||
throw new ResponseHelper.ResponseError(
|
||||
throw new ResponseHelper.InternalServerError(
|
||||
`Parameter "filter" contained invalid JSON string.`,
|
||||
500,
|
||||
500,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -71,7 +71,7 @@ nodesController.post(
|
||||
const { name } = req.body;
|
||||
|
||||
if (!name) {
|
||||
throw new ResponseHelper.ResponseError(PACKAGE_NAME_NOT_PROVIDED, undefined, 400);
|
||||
throw new ResponseHelper.BadRequestError(PACKAGE_NAME_NOT_PROVIDED);
|
||||
}
|
||||
|
||||
let parsed: CommunityPackages.ParsedPackageName;
|
||||
@@ -79,21 +79,17 @@ nodesController.post(
|
||||
try {
|
||||
parsed = parseNpmPackageName(name);
|
||||
} catch (error) {
|
||||
throw new ResponseHelper.ResponseError(
|
||||
throw new ResponseHelper.BadRequestError(
|
||||
error instanceof Error ? error.message : 'Failed to parse package name',
|
||||
undefined,
|
||||
400,
|
||||
);
|
||||
}
|
||||
|
||||
if (parsed.packageName === STARTER_TEMPLATE_NAME) {
|
||||
throw new ResponseHelper.ResponseError(
|
||||
throw new ResponseHelper.BadRequestError(
|
||||
[
|
||||
`Package "${parsed.packageName}" is only a template`,
|
||||
'Please enter an actual package to install',
|
||||
].join('.'),
|
||||
undefined,
|
||||
400,
|
||||
);
|
||||
}
|
||||
|
||||
@@ -101,23 +97,19 @@ nodesController.post(
|
||||
const hasLoaded = hasPackageLoaded(name);
|
||||
|
||||
if (isInstalled && hasLoaded) {
|
||||
throw new ResponseHelper.ResponseError(
|
||||
throw new ResponseHelper.BadRequestError(
|
||||
[
|
||||
`Package "${parsed.packageName}" is already installed`,
|
||||
'To update it, click the corresponding button in the UI',
|
||||
].join('.'),
|
||||
undefined,
|
||||
400,
|
||||
);
|
||||
}
|
||||
|
||||
const packageStatus = await checkNpmPackageStatus(name);
|
||||
|
||||
if (packageStatus.status !== 'OK') {
|
||||
throw new ResponseHelper.ResponseError(
|
||||
throw new ResponseHelper.BadRequestError(
|
||||
`Package "${name}" is banned so it cannot be installed`,
|
||||
undefined,
|
||||
400,
|
||||
);
|
||||
}
|
||||
|
||||
@@ -144,7 +136,7 @@ nodesController.post(
|
||||
|
||||
const clientError = error instanceof Error ? isClientError(error) : false;
|
||||
|
||||
throw new ResponseHelper.ResponseError(message, undefined, clientError ? 400 : 500);
|
||||
throw new ResponseHelper[clientError ? 'BadRequestError' : 'InternalServerError'](message);
|
||||
}
|
||||
|
||||
if (!hasLoaded) removePackageFromMissingList(name);
|
||||
@@ -228,7 +220,7 @@ nodesController.delete(
|
||||
const { name } = req.query;
|
||||
|
||||
if (!name) {
|
||||
throw new ResponseHelper.ResponseError(PACKAGE_NAME_NOT_PROVIDED, undefined, 400);
|
||||
throw new ResponseHelper.BadRequestError(PACKAGE_NAME_NOT_PROVIDED);
|
||||
}
|
||||
|
||||
try {
|
||||
@@ -236,13 +228,13 @@ nodesController.delete(
|
||||
} catch (error) {
|
||||
const message = error instanceof Error ? error.message : UNKNOWN_FAILURE_REASON;
|
||||
|
||||
throw new ResponseHelper.ResponseError(message, undefined, 400);
|
||||
throw new ResponseHelper.BadRequestError(message);
|
||||
}
|
||||
|
||||
const installedPackage = await findInstalledPackage(name);
|
||||
|
||||
if (!installedPackage) {
|
||||
throw new ResponseHelper.ResponseError(PACKAGE_NOT_INSTALLED, undefined, 400);
|
||||
throw new ResponseHelper.BadRequestError(PACKAGE_NOT_INSTALLED);
|
||||
}
|
||||
|
||||
try {
|
||||
@@ -253,7 +245,7 @@ nodesController.delete(
|
||||
error instanceof Error ? error.message : UNKNOWN_FAILURE_REASON,
|
||||
].join(':');
|
||||
|
||||
throw new ResponseHelper.ResponseError(message, undefined, 500);
|
||||
throw new ResponseHelper.InternalServerError(message);
|
||||
}
|
||||
|
||||
const pushInstance = Push.getInstance();
|
||||
@@ -288,13 +280,13 @@ nodesController.patch(
|
||||
const { name } = req.body;
|
||||
|
||||
if (!name) {
|
||||
throw new ResponseHelper.ResponseError(PACKAGE_NAME_NOT_PROVIDED, undefined, 400);
|
||||
throw new ResponseHelper.BadRequestError(PACKAGE_NAME_NOT_PROVIDED);
|
||||
}
|
||||
|
||||
const previouslyInstalledPackage = await findInstalledPackage(name);
|
||||
|
||||
if (!previouslyInstalledPackage) {
|
||||
throw new ResponseHelper.ResponseError(PACKAGE_NOT_INSTALLED, undefined, 400);
|
||||
throw new ResponseHelper.BadRequestError(PACKAGE_NOT_INSTALLED);
|
||||
}
|
||||
|
||||
try {
|
||||
@@ -345,7 +337,7 @@ nodesController.patch(
|
||||
error instanceof Error ? error.message : UNKNOWN_FAILURE_REASON,
|
||||
].join(':');
|
||||
|
||||
throw new ResponseHelper.ResponseError(message, undefined, 500);
|
||||
throw new ResponseHelper.InternalServerError(message);
|
||||
}
|
||||
}),
|
||||
);
|
||||
|
||||
@@ -21,13 +21,18 @@ export const externalHooks: IExternalHooksClass = ExternalHooks();
|
||||
|
||||
export const tagsController = express.Router();
|
||||
|
||||
const workflowsEnabledMiddleware: express.RequestHandler = (req, res, next) => {
|
||||
if (config.getEnv('workflowTagsDisabled')) {
|
||||
throw new ResponseHelper.BadRequestError('Workflow tags are disabled');
|
||||
}
|
||||
next();
|
||||
};
|
||||
|
||||
// Retrieves all tags, with or without usage count
|
||||
tagsController.get(
|
||||
'/',
|
||||
workflowsEnabledMiddleware,
|
||||
ResponseHelper.send(async (req: express.Request): Promise<TagEntity[] | ITagWithCountDb[]> => {
|
||||
if (config.getEnv('workflowTagsDisabled')) {
|
||||
throw new ResponseHelper.ResponseError('Workflow tags are disabled');
|
||||
}
|
||||
if (req.query.withUsageCount === 'true') {
|
||||
const tablePrefix = config.getEnv('database.tablePrefix');
|
||||
return TagHelpers.getTagsWithCountDb(tablePrefix);
|
||||
@@ -40,10 +45,8 @@ tagsController.get(
|
||||
// Creates a tag
|
||||
tagsController.post(
|
||||
'/',
|
||||
workflowsEnabledMiddleware,
|
||||
ResponseHelper.send(async (req: express.Request): Promise<TagEntity | void> => {
|
||||
if (config.getEnv('workflowTagsDisabled')) {
|
||||
throw new ResponseHelper.ResponseError('Workflow tags are disabled');
|
||||
}
|
||||
const newTag = new TagEntity();
|
||||
newTag.name = req.body.name.trim();
|
||||
|
||||
@@ -61,11 +64,8 @@ tagsController.post(
|
||||
// Updates a tag
|
||||
tagsController.patch(
|
||||
'/:id',
|
||||
workflowsEnabledMiddleware,
|
||||
ResponseHelper.send(async (req: express.Request): Promise<TagEntity | void> => {
|
||||
if (config.getEnv('workflowTagsDisabled')) {
|
||||
throw new ResponseHelper.ResponseError('Workflow tags are disabled');
|
||||
}
|
||||
|
||||
const { name } = req.body;
|
||||
const { id } = req.params;
|
||||
|
||||
@@ -87,18 +87,14 @@ tagsController.patch(
|
||||
|
||||
tagsController.delete(
|
||||
'/:id',
|
||||
workflowsEnabledMiddleware,
|
||||
ResponseHelper.send(async (req: TagsRequest.Delete): Promise<boolean> => {
|
||||
if (config.getEnv('workflowTagsDisabled')) {
|
||||
throw new ResponseHelper.ResponseError('Workflow tags are disabled');
|
||||
}
|
||||
if (
|
||||
config.getEnv('userManagement.isInstanceOwnerSetUp') === true &&
|
||||
req.user.globalRole.name !== 'owner'
|
||||
) {
|
||||
throw new ResponseHelper.ResponseError(
|
||||
throw new ResponseHelper.UnauthorizedError(
|
||||
'You are not allowed to perform this action',
|
||||
undefined,
|
||||
403,
|
||||
'Only owners can remove tags',
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user