@graphql-tools/utils 11.0.0-alpha-20251112101412-7b3e869e04dc287cf268a3275335f28e3490d10a → 11.0.0-alpha-20251229014157-928e05f9827dbdc5395dc916e1de9139463aa56f
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/errors.js +30 -4
- package/esm/errors.js +29 -6
- package/package.json +1 -1
- package/typings/Interfaces.d.cts +7 -0
- package/typings/Interfaces.d.ts +7 -0
- package/typings/errors.d.cts +19 -1
- package/typings/errors.d.ts +19 -1
package/cjs/errors.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isGraphQLErrorLike = isGraphQLErrorLike;
|
|
3
4
|
exports.createGraphQLError = createGraphQLError;
|
|
5
|
+
exports.getSchemaCoordinate = getSchemaCoordinate;
|
|
6
|
+
exports.locatedError = locatedError;
|
|
4
7
|
exports.relocatedError = relocatedError;
|
|
5
8
|
const graphql_1 = require("graphql");
|
|
6
9
|
const possibleGraphQLErrorProperties = [
|
|
@@ -14,6 +17,7 @@ const possibleGraphQLErrorProperties = [
|
|
|
14
17
|
'name',
|
|
15
18
|
'stack',
|
|
16
19
|
'extensions',
|
|
20
|
+
'coordinate',
|
|
17
21
|
];
|
|
18
22
|
function isGraphQLErrorLike(error) {
|
|
19
23
|
return (error != null &&
|
|
@@ -26,12 +30,33 @@ function createGraphQLError(message, options) {
|
|
|
26
30
|
isGraphQLErrorLike(options.originalError)) {
|
|
27
31
|
options.originalError = createGraphQLError(options.originalError.message, options.originalError);
|
|
28
32
|
}
|
|
29
|
-
|
|
30
|
-
|
|
33
|
+
// To avoid type error on graphql <16, we have to use an any type here
|
|
34
|
+
const Constructor = graphql_1.GraphQLError;
|
|
35
|
+
const error = graphql_1.versionInfo.major >= 16
|
|
36
|
+
? new Constructor(message, options)
|
|
37
|
+
: new Constructor(message, options?.nodes, options?.source, options?.positions, options?.path, options?.originalError, options?.extensions);
|
|
38
|
+
if (options?.coordinate && error.coordinate == null) {
|
|
39
|
+
Object.defineProperties(error, {
|
|
40
|
+
coordinate: { value: options.coordinate, enumerable: true, configurable: true },
|
|
41
|
+
});
|
|
31
42
|
}
|
|
32
|
-
return
|
|
43
|
+
return error;
|
|
33
44
|
}
|
|
34
|
-
function
|
|
45
|
+
function getSchemaCoordinate(error) {
|
|
46
|
+
return error.coordinate;
|
|
47
|
+
}
|
|
48
|
+
function locatedError(rawError, nodes, path, info) {
|
|
49
|
+
const error = (0, graphql_1.locatedError)(rawError, nodes, path);
|
|
50
|
+
// `graphql` locatedError is only changing path and nodes if it is not already defined
|
|
51
|
+
if (!error.coordinate && info && error.coordinate == null) {
|
|
52
|
+
const coordinate = `${info.parentType.name}.${info.fieldName}`;
|
|
53
|
+
Object.defineProperties(error, {
|
|
54
|
+
coordinate: { value: coordinate, enumerable: true, configurable: true },
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
return error;
|
|
58
|
+
}
|
|
59
|
+
function relocatedError(originalError, path, info) {
|
|
35
60
|
return createGraphQLError(originalError.message, {
|
|
36
61
|
nodes: originalError.nodes,
|
|
37
62
|
source: originalError.source,
|
|
@@ -39,5 +64,6 @@ function relocatedError(originalError, path) {
|
|
|
39
64
|
path: path == null ? originalError.path : path,
|
|
40
65
|
originalError,
|
|
41
66
|
extensions: originalError.extensions,
|
|
67
|
+
coordinate: info ? `${info.parentType.name}.${info.fieldName}` : undefined,
|
|
42
68
|
});
|
|
43
69
|
}
|
package/esm/errors.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { GraphQLError, versionInfo } from 'graphql';
|
|
1
|
+
import { locatedError as _locatedError, GraphQLError, versionInfo } from 'graphql';
|
|
2
2
|
const possibleGraphQLErrorProperties = [
|
|
3
3
|
'message',
|
|
4
4
|
'locations',
|
|
@@ -10,8 +10,9 @@ const possibleGraphQLErrorProperties = [
|
|
|
10
10
|
'name',
|
|
11
11
|
'stack',
|
|
12
12
|
'extensions',
|
|
13
|
+
'coordinate',
|
|
13
14
|
];
|
|
14
|
-
function isGraphQLErrorLike(error) {
|
|
15
|
+
export function isGraphQLErrorLike(error) {
|
|
15
16
|
return (error != null &&
|
|
16
17
|
typeof error === 'object' &&
|
|
17
18
|
Object.keys(error).every(key => possibleGraphQLErrorProperties.includes(key)));
|
|
@@ -22,12 +23,33 @@ export function createGraphQLError(message, options) {
|
|
|
22
23
|
isGraphQLErrorLike(options.originalError)) {
|
|
23
24
|
options.originalError = createGraphQLError(options.originalError.message, options.originalError);
|
|
24
25
|
}
|
|
25
|
-
|
|
26
|
-
|
|
26
|
+
// To avoid type error on graphql <16, we have to use an any type here
|
|
27
|
+
const Constructor = GraphQLError;
|
|
28
|
+
const error = versionInfo.major >= 16
|
|
29
|
+
? new Constructor(message, options)
|
|
30
|
+
: new Constructor(message, options?.nodes, options?.source, options?.positions, options?.path, options?.originalError, options?.extensions);
|
|
31
|
+
if (options?.coordinate && error.coordinate == null) {
|
|
32
|
+
Object.defineProperties(error, {
|
|
33
|
+
coordinate: { value: options.coordinate, enumerable: true, configurable: true },
|
|
34
|
+
});
|
|
27
35
|
}
|
|
28
|
-
return
|
|
36
|
+
return error;
|
|
29
37
|
}
|
|
30
|
-
export function
|
|
38
|
+
export function getSchemaCoordinate(error) {
|
|
39
|
+
return error.coordinate;
|
|
40
|
+
}
|
|
41
|
+
export function locatedError(rawError, nodes, path, info) {
|
|
42
|
+
const error = _locatedError(rawError, nodes, path);
|
|
43
|
+
// `graphql` locatedError is only changing path and nodes if it is not already defined
|
|
44
|
+
if (!error.coordinate && info && error.coordinate == null) {
|
|
45
|
+
const coordinate = `${info.parentType.name}.${info.fieldName}`;
|
|
46
|
+
Object.defineProperties(error, {
|
|
47
|
+
coordinate: { value: coordinate, enumerable: true, configurable: true },
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
return error;
|
|
51
|
+
}
|
|
52
|
+
export function relocatedError(originalError, path, info) {
|
|
31
53
|
return createGraphQLError(originalError.message, {
|
|
32
54
|
nodes: originalError.nodes,
|
|
33
55
|
source: originalError.source,
|
|
@@ -35,5 +57,6 @@ export function relocatedError(originalError, path) {
|
|
|
35
57
|
path: path == null ? originalError.path : path,
|
|
36
58
|
originalError,
|
|
37
59
|
extensions: originalError.extensions,
|
|
60
|
+
coordinate: info ? `${info.parentType.name}.${info.fieldName}` : undefined,
|
|
38
61
|
});
|
|
39
62
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@graphql-tools/utils",
|
|
3
|
-
"version": "11.0.0-alpha-
|
|
3
|
+
"version": "11.0.0-alpha-20251229014157-928e05f9827dbdc5395dc916e1de9139463aa56f",
|
|
4
4
|
"description": "Common package containing utils and types for GraphQL tools",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"peerDependencies": {
|
package/typings/Interfaces.d.cts
CHANGED
|
@@ -32,6 +32,13 @@ export interface ExecutionRequest<TVariables extends Record<string, any> = any,
|
|
|
32
32
|
subgraphName?: string;
|
|
33
33
|
info?: GraphQLResolveInfo;
|
|
34
34
|
signal?: AbortSignal;
|
|
35
|
+
/**
|
|
36
|
+
* Enable/Disable the addition of field schema coordinate in GraphQL Errors extension
|
|
37
|
+
*
|
|
38
|
+
* Note: Schema Coordinate are exposed using Symbol.for('schemaCoordinate') so that it's not
|
|
39
|
+
* serialized. Exposing schema coordinate can ease the discovery of private schemas.
|
|
40
|
+
*/
|
|
41
|
+
schemaCoordinateInErrors?: boolean;
|
|
35
42
|
}
|
|
36
43
|
export interface GraphQLParseOptions {
|
|
37
44
|
noLocation?: boolean;
|
package/typings/Interfaces.d.ts
CHANGED
|
@@ -32,6 +32,13 @@ export interface ExecutionRequest<TVariables extends Record<string, any> = any,
|
|
|
32
32
|
subgraphName?: string;
|
|
33
33
|
info?: GraphQLResolveInfo;
|
|
34
34
|
signal?: AbortSignal;
|
|
35
|
+
/**
|
|
36
|
+
* Enable/Disable the addition of field schema coordinate in GraphQL Errors extension
|
|
37
|
+
*
|
|
38
|
+
* Note: Schema Coordinate are exposed using Symbol.for('schemaCoordinate') so that it's not
|
|
39
|
+
* serialized. Exposing schema coordinate can ease the discovery of private schemas.
|
|
40
|
+
*/
|
|
41
|
+
schemaCoordinateInErrors?: boolean;
|
|
35
42
|
}
|
|
36
43
|
export interface GraphQLParseOptions {
|
|
37
44
|
noLocation?: boolean;
|
package/typings/errors.d.cts
CHANGED
|
@@ -9,7 +9,25 @@ interface GraphQLErrorOptions {
|
|
|
9
9
|
readonly extensions?: unknown;
|
|
10
10
|
}>;
|
|
11
11
|
extensions?: any;
|
|
12
|
+
coordinate?: string;
|
|
12
13
|
}
|
|
14
|
+
declare module 'graphql' {
|
|
15
|
+
interface GraphQLError {
|
|
16
|
+
/**
|
|
17
|
+
* An optional schema coordinate (e.g. "MyType.myField") associated with this error.
|
|
18
|
+
*/
|
|
19
|
+
readonly coordinate?: string;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
export declare function isGraphQLErrorLike(error: any): boolean;
|
|
13
23
|
export declare function createGraphQLError(message: string, options?: GraphQLErrorOptions): GraphQLError;
|
|
14
|
-
|
|
24
|
+
type SchemaCoordinateInfo = {
|
|
25
|
+
fieldName: string;
|
|
26
|
+
parentType: {
|
|
27
|
+
name: string;
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
export declare function getSchemaCoordinate(error: GraphQLError): string | undefined;
|
|
31
|
+
export declare function locatedError(rawError: unknown, nodes: ASTNode | ReadonlyArray<ASTNode> | undefined, path: Maybe<ReadonlyArray<string | number>>, info?: SchemaCoordinateInfo | false | null | undefined): GraphQLError;
|
|
32
|
+
export declare function relocatedError(originalError: GraphQLError, path?: ReadonlyArray<string | number>, info?: SchemaCoordinateInfo | false | null | undefined): GraphQLError;
|
|
15
33
|
export {};
|
package/typings/errors.d.ts
CHANGED
|
@@ -9,7 +9,25 @@ interface GraphQLErrorOptions {
|
|
|
9
9
|
readonly extensions?: unknown;
|
|
10
10
|
}>;
|
|
11
11
|
extensions?: any;
|
|
12
|
+
coordinate?: string;
|
|
12
13
|
}
|
|
14
|
+
declare module 'graphql' {
|
|
15
|
+
interface GraphQLError {
|
|
16
|
+
/**
|
|
17
|
+
* An optional schema coordinate (e.g. "MyType.myField") associated with this error.
|
|
18
|
+
*/
|
|
19
|
+
readonly coordinate?: string;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
export declare function isGraphQLErrorLike(error: any): boolean;
|
|
13
23
|
export declare function createGraphQLError(message: string, options?: GraphQLErrorOptions): GraphQLError;
|
|
14
|
-
|
|
24
|
+
type SchemaCoordinateInfo = {
|
|
25
|
+
fieldName: string;
|
|
26
|
+
parentType: {
|
|
27
|
+
name: string;
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
export declare function getSchemaCoordinate(error: GraphQLError): string | undefined;
|
|
31
|
+
export declare function locatedError(rawError: unknown, nodes: ASTNode | ReadonlyArray<ASTNode> | undefined, path: Maybe<ReadonlyArray<string | number>>, info?: SchemaCoordinateInfo | false | null | undefined): GraphQLError;
|
|
32
|
+
export declare function relocatedError(originalError: GraphQLError, path?: ReadonlyArray<string | number>, info?: SchemaCoordinateInfo | false | null | undefined): GraphQLError;
|
|
15
33
|
export {};
|