directus

Форк
0
/
process-error.ts 
55 строк · 1.5 Кб
1
import { isDirectusError, type DirectusError } from '@directus/errors';
2
import type { Accountability } from '@directus/types';
3
import type { GraphQLError, GraphQLFormattedError } from 'graphql';
4
import { useLogger } from '../../../logger.js';
5

6
const processError = (
7
	accountability: Accountability | null,
8
	error: Readonly<GraphQLError & { originalError: GraphQLError | DirectusError | Error | undefined }>,
9
): GraphQLFormattedError => {
10
	const logger = useLogger();
11

12
	logger.error(error);
13

14
	let originalError = error.originalError;
15

16
	if (originalError && 'originalError' in originalError) {
17
		originalError = originalError.originalError;
18
	}
19

20
	if (isDirectusError(originalError)) {
21
		return {
22
			message: originalError.message,
23
			extensions: {
24
				code: originalError.code,
25
				...(originalError.extensions ?? {}),
26
			},
27
			...(error.locations && { locations: error.locations }),
28
			...(error.path && { path: error.path }),
29
		};
30
	} else {
31
		if (accountability?.admin === true) {
32
			const graphqlFormattedError: {
33
				-readonly [key in keyof GraphQLFormattedError]: GraphQLFormattedError[key];
34
			} = {
35
				message: error.message,
36
				extensions: {
37
					code: 'INTERNAL_SERVER_ERROR',
38
				},
39
				...(error.locations && { locations: error.locations }),
40
				...(error.path && { path: error.path }),
41
			};
42

43
			return graphqlFormattedError;
44
		} else {
45
			return {
46
				message: 'An unexpected error occurred.',
47
				extensions: {
48
					code: 'INTERNAL_SERVER_ERROR',
49
				},
50
			};
51
		}
52
	}
53
};
54

55
export default processError;
56

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.