Skip to content

Commit da7cd3f

Browse files
committed
Unwrap & flatten AggregateErrors in GQL response
1 parent f45a151 commit da7cd3f

File tree

1 file changed

+19
-14
lines changed

1 file changed

+19
-14
lines changed

src/core/graphql/graphql-error-formatter.ts

Lines changed: 19 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ export class GraphqlErrorFormatter {
3434
() =>
3535
({ result, setResult }) => {
3636
if (result.length > 0) {
37-
const errors = result.map((error) => this.formatError(error));
37+
const errors = result.flatMap((error) => this.formatError(error));
3838
setResult(errors);
3939
}
4040
};
@@ -43,7 +43,9 @@ export class GraphqlErrorFormatter {
4343
onExecuteDone: (params) =>
4444
handleStreamOrSingleExecutionResult(params, ({ result, setResult }) => {
4545
if (result.errors && result.errors.length > 0) {
46-
const errors = result.errors.map((error) => this.formatError(error));
46+
const errors = result.errors.flatMap((error) =>
47+
this.formatError(error),
48+
);
4749
setResult({ ...result, errors });
4850
}
4951
}),
@@ -71,20 +73,23 @@ export class GraphqlErrorFormatter {
7173
this.filter.logIt(normalized, error.originalError ?? error);
7274
}
7375

74-
const { message, stack, code: _, ...extensions } = normalized;
75-
const { codes } = extensions;
76+
// Unwrap AggregateError's errors to flat gql errors
77+
return (normalized.aggregatees ?? [normalized]).map((innerEx) => {
78+
const { message, stack, code: _, ...extensions } = innerEx;
79+
const { codes } = extensions;
7680

77-
// Schema & validation errors don't have meaningful stack traces, so remove them
78-
const worthlessTrace = codes.has('Validation') || codes.has('GraphQL');
79-
if (!worthlessTrace) {
80-
extensions.stacktrace = stack.split('\n');
81-
}
81+
// Schema & validation errors don't have meaningful stack traces, so remove them
82+
const worthlessTrace = codes.has('Validation') || codes.has('GraphQL');
83+
if (!worthlessTrace) {
84+
extensions.stacktrace = stack.split('\n');
85+
}
8286

83-
return new GraphQLError(message, {
84-
nodes: error.nodes,
85-
positions: error.positions,
86-
path: error.path,
87-
extensions: { ...error.extensions, ...extensions },
87+
return new GraphQLError(message, {
88+
nodes: error.nodes,
89+
positions: error.positions,
90+
path: error.path,
91+
extensions: { ...error.extensions, ...extensions },
92+
});
8893
});
8994
};
9095
}

0 commit comments

Comments
 (0)