diff --git a/src/dataconnect/graphqlError.ts b/src/dataconnect/graphqlError.ts index 8fbf7d8d954..2ef215e54a2 100644 --- a/src/dataconnect/graphqlError.ts +++ b/src/dataconnect/graphqlError.ts @@ -2,7 +2,7 @@ import { GraphqlError } from "./types"; import * as Table from "cli-table3"; export function prettify(err: GraphqlError): string { - const message = err.message; + let message = err.message; let header = err.extensions?.file ?? ""; if (err.locations && err.locations.length) { const line = err.locations[0]?.line ?? ""; @@ -10,6 +10,22 @@ export function prettify(err: GraphqlError): string { header += `:${line}`; } } + + if (err.path && err.path.length) { + let pathStr = "On "; + for (let i = 0; i < err.path.length; i++) { + if (typeof err.path[i] === "string") { + if (i === 0) { + pathStr += err.path[i]; + } else { + pathStr = `${pathStr}.${err.path[i]}`; + } + } else { + pathStr = `${pathStr}[${err.path[i]}]`; + } + } + message = `${pathStr}: ${message}`; + } return header.length ? `${header}: ${message}` : message; } diff --git a/src/dataconnect/types.ts b/src/dataconnect/types.ts index f4d86171ecf..56f622137ac 100644 --- a/src/dataconnect/types.ts +++ b/src/dataconnect/types.ts @@ -81,6 +81,7 @@ export interface Workaround { export interface GraphqlError { message: string; + path?: (string | number)[]; locations?: { line: number; column: number;