@graphql-tools/utils 10.11.0-alpha-20251110164254-8e0d1d1788c04c5a5183d93cfd465379d26a6765 → 10.11.0-alpha-20251110221147-3e773b194d7b3e752eb121d0bec4e49919d9f1f9
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 +13 -27
- package/cjs/mergeIncrementalResult.js +25 -4
- package/esm/errors.js +14 -26
- package/esm/mergeIncrementalResult.js +25 -4
- package/package.json +1 -2
- package/typings/errors.d.cts +9 -11
- package/typings/errors.d.ts +9 -11
package/cjs/errors.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.GraphQLError = void 0;
|
|
4
3
|
exports.isGraphQLErrorLike = isGraphQLErrorLike;
|
|
5
4
|
exports.createGraphQLError = createGraphQLError;
|
|
6
5
|
exports.getSchemaCoordinate = getSchemaCoordinate;
|
|
@@ -18,31 +17,7 @@ const possibleGraphQLErrorProperties = [
|
|
|
18
17
|
'name',
|
|
19
18
|
'stack',
|
|
20
19
|
'extensions',
|
|
21
|
-
'coordinate',
|
|
22
20
|
];
|
|
23
|
-
function toNormalizedOptions(args) {
|
|
24
|
-
const firstArg = args[0];
|
|
25
|
-
if (firstArg == null || 'kind' in firstArg || 'length' in firstArg) {
|
|
26
|
-
return {
|
|
27
|
-
nodes: firstArg,
|
|
28
|
-
source: args[1],
|
|
29
|
-
positions: args[2],
|
|
30
|
-
path: args[3],
|
|
31
|
-
originalError: args[4],
|
|
32
|
-
extensions: args[5],
|
|
33
|
-
};
|
|
34
|
-
}
|
|
35
|
-
return firstArg;
|
|
36
|
-
}
|
|
37
|
-
class GraphQLError extends graphql_1.GraphQLError {
|
|
38
|
-
coordinate;
|
|
39
|
-
constructor(message, ...args) {
|
|
40
|
-
const options = toNormalizedOptions(args);
|
|
41
|
-
super(message, ...args);
|
|
42
|
-
this.coordinate = options.coordinate;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
exports.GraphQLError = GraphQLError;
|
|
46
21
|
function isGraphQLErrorLike(error) {
|
|
47
22
|
return (error != null &&
|
|
48
23
|
typeof error === 'object' &&
|
|
@@ -54,10 +29,21 @@ function createGraphQLError(message, options) {
|
|
|
54
29
|
isGraphQLErrorLike(options.originalError)) {
|
|
55
30
|
options.originalError = createGraphQLError(options.originalError.message, options.originalError);
|
|
56
31
|
}
|
|
32
|
+
let error;
|
|
57
33
|
if (graphql_1.versionInfo.major >= 16) {
|
|
58
|
-
|
|
34
|
+
error = new graphql_1.GraphQLError(message, options);
|
|
59
35
|
}
|
|
60
|
-
|
|
36
|
+
else {
|
|
37
|
+
error = new graphql_1.GraphQLError(message, options?.nodes, options?.source, options?.positions, options?.path, options?.originalError, options?.extensions);
|
|
38
|
+
}
|
|
39
|
+
if (options?.coordinate != null && !error.coordinate) {
|
|
40
|
+
Object.defineProperty(error, 'coordinate', {
|
|
41
|
+
value: options.coordinate,
|
|
42
|
+
enumerable: true,
|
|
43
|
+
configurable: true,
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
return error;
|
|
61
47
|
}
|
|
62
48
|
function getSchemaCoordinate(error) {
|
|
63
49
|
return error.coordinate;
|
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.mergeIncrementalResult = mergeIncrementalResult;
|
|
4
|
-
const
|
|
4
|
+
const mergeDeep_js_1 = require("./mergeDeep.js");
|
|
5
5
|
function mergeIncrementalResult({ incrementalResult, executionResult, }) {
|
|
6
6
|
const path = ['data', ...(incrementalResult.path ?? [])];
|
|
7
7
|
if (incrementalResult.items) {
|
|
8
8
|
for (const item of incrementalResult.items) {
|
|
9
|
-
(
|
|
9
|
+
setObjectKeyPath(executionResult, path, item);
|
|
10
10
|
// Increment the last path segment (the array index) to merge the next item at the next index
|
|
11
11
|
path[path.length - 1]++;
|
|
12
12
|
}
|
|
13
13
|
}
|
|
14
14
|
if (incrementalResult.data) {
|
|
15
|
-
(
|
|
15
|
+
setObjectKeyPath(executionResult, path, incrementalResult.data);
|
|
16
16
|
}
|
|
17
17
|
if (incrementalResult.errors) {
|
|
18
18
|
executionResult.errors = executionResult.errors || [];
|
|
19
19
|
executionResult.errors.push(...incrementalResult.errors);
|
|
20
20
|
}
|
|
21
21
|
if (incrementalResult.extensions) {
|
|
22
|
-
(
|
|
22
|
+
setObjectKeyPath(executionResult, ['extensions'], incrementalResult.extensions);
|
|
23
23
|
}
|
|
24
24
|
if (incrementalResult.incremental) {
|
|
25
25
|
incrementalResult.incremental.forEach(incrementalSubResult => {
|
|
@@ -30,3 +30,24 @@ function mergeIncrementalResult({ incrementalResult, executionResult, }) {
|
|
|
30
30
|
});
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
|
+
function setObjectKeyPath(obj, keyPath, value) {
|
|
34
|
+
let current = obj;
|
|
35
|
+
let i;
|
|
36
|
+
for (i = 0; i < keyPath.length - 1; i++) {
|
|
37
|
+
const key = keyPath[i];
|
|
38
|
+
if (key === '__proto__' || key === 'constructor' || key === 'prototype') {
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
if (current[key] == null) {
|
|
42
|
+
// Determine if the next key is a number to create an array, otherwise create an object
|
|
43
|
+
current[key] = typeof keyPath[i + 1] === 'number' ? [] : {};
|
|
44
|
+
}
|
|
45
|
+
current = current[key];
|
|
46
|
+
}
|
|
47
|
+
const finalKey = keyPath[i];
|
|
48
|
+
if (finalKey === '__proto__' || finalKey === 'constructor' || finalKey === 'prototype') {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
const existingValue = current[finalKey];
|
|
52
|
+
current[finalKey] = existingValue != null ? (0, mergeDeep_js_1.mergeDeep)([existingValue, value]) : value;
|
|
53
|
+
}
|
package/esm/errors.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { locatedError as _locatedError, GraphQLError, versionInfo, } from 'graphql';
|
|
2
2
|
const possibleGraphQLErrorProperties = [
|
|
3
3
|
'message',
|
|
4
4
|
'locations',
|
|
@@ -10,30 +10,7 @@ const possibleGraphQLErrorProperties = [
|
|
|
10
10
|
'name',
|
|
11
11
|
'stack',
|
|
12
12
|
'extensions',
|
|
13
|
-
'coordinate',
|
|
14
13
|
];
|
|
15
|
-
function toNormalizedOptions(args) {
|
|
16
|
-
const firstArg = args[0];
|
|
17
|
-
if (firstArg == null || 'kind' in firstArg || 'length' in firstArg) {
|
|
18
|
-
return {
|
|
19
|
-
nodes: firstArg,
|
|
20
|
-
source: args[1],
|
|
21
|
-
positions: args[2],
|
|
22
|
-
path: args[3],
|
|
23
|
-
originalError: args[4],
|
|
24
|
-
extensions: args[5],
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
return firstArg;
|
|
28
|
-
}
|
|
29
|
-
export class GraphQLError extends _GraphQLError {
|
|
30
|
-
coordinate;
|
|
31
|
-
constructor(message, ...args) {
|
|
32
|
-
const options = toNormalizedOptions(args);
|
|
33
|
-
super(message, ...args);
|
|
34
|
-
this.coordinate = options.coordinate;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
14
|
export function isGraphQLErrorLike(error) {
|
|
38
15
|
return (error != null &&
|
|
39
16
|
typeof error === 'object' &&
|
|
@@ -45,10 +22,21 @@ export function createGraphQLError(message, options) {
|
|
|
45
22
|
isGraphQLErrorLike(options.originalError)) {
|
|
46
23
|
options.originalError = createGraphQLError(options.originalError.message, options.originalError);
|
|
47
24
|
}
|
|
25
|
+
let error;
|
|
48
26
|
if (versionInfo.major >= 16) {
|
|
49
|
-
|
|
27
|
+
error = new GraphQLError(message, options);
|
|
50
28
|
}
|
|
51
|
-
|
|
29
|
+
else {
|
|
30
|
+
error = new GraphQLError(message, options?.nodes, options?.source, options?.positions, options?.path, options?.originalError, options?.extensions);
|
|
31
|
+
}
|
|
32
|
+
if (options?.coordinate != null && !error.coordinate) {
|
|
33
|
+
Object.defineProperty(error, 'coordinate', {
|
|
34
|
+
value: options.coordinate,
|
|
35
|
+
enumerable: true,
|
|
36
|
+
configurable: true,
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
return error;
|
|
52
40
|
}
|
|
53
41
|
export function getSchemaCoordinate(error) {
|
|
54
42
|
return error.coordinate;
|
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { mergeDeep } from './mergeDeep.js';
|
|
2
2
|
export function mergeIncrementalResult({ incrementalResult, executionResult, }) {
|
|
3
3
|
const path = ['data', ...(incrementalResult.path ?? [])];
|
|
4
4
|
if (incrementalResult.items) {
|
|
5
5
|
for (const item of incrementalResult.items) {
|
|
6
|
-
|
|
6
|
+
setObjectKeyPath(executionResult, path, item);
|
|
7
7
|
// Increment the last path segment (the array index) to merge the next item at the next index
|
|
8
8
|
path[path.length - 1]++;
|
|
9
9
|
}
|
|
10
10
|
}
|
|
11
11
|
if (incrementalResult.data) {
|
|
12
|
-
|
|
12
|
+
setObjectKeyPath(executionResult, path, incrementalResult.data);
|
|
13
13
|
}
|
|
14
14
|
if (incrementalResult.errors) {
|
|
15
15
|
executionResult.errors = executionResult.errors || [];
|
|
16
16
|
executionResult.errors.push(...incrementalResult.errors);
|
|
17
17
|
}
|
|
18
18
|
if (incrementalResult.extensions) {
|
|
19
|
-
|
|
19
|
+
setObjectKeyPath(executionResult, ['extensions'], incrementalResult.extensions);
|
|
20
20
|
}
|
|
21
21
|
if (incrementalResult.incremental) {
|
|
22
22
|
incrementalResult.incremental.forEach(incrementalSubResult => {
|
|
@@ -27,3 +27,24 @@ export function mergeIncrementalResult({ incrementalResult, executionResult, })
|
|
|
27
27
|
});
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
|
+
function setObjectKeyPath(obj, keyPath, value) {
|
|
31
|
+
let current = obj;
|
|
32
|
+
let i;
|
|
33
|
+
for (i = 0; i < keyPath.length - 1; i++) {
|
|
34
|
+
const key = keyPath[i];
|
|
35
|
+
if (key === '__proto__' || key === 'constructor' || key === 'prototype') {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
if (current[key] == null) {
|
|
39
|
+
// Determine if the next key is a number to create an array, otherwise create an object
|
|
40
|
+
current[key] = typeof keyPath[i + 1] === 'number' ? [] : {};
|
|
41
|
+
}
|
|
42
|
+
current = current[key];
|
|
43
|
+
}
|
|
44
|
+
const finalKey = keyPath[i];
|
|
45
|
+
if (finalKey === '__proto__' || finalKey === 'constructor' || finalKey === 'prototype') {
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
const existingValue = current[finalKey];
|
|
49
|
+
current[finalKey] = existingValue != null ? mergeDeep([existingValue, value]) : value;
|
|
50
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@graphql-tools/utils",
|
|
3
|
-
"version": "10.11.0-alpha-
|
|
3
|
+
"version": "10.11.0-alpha-20251110221147-3e773b194d7b3e752eb121d0bec4e49919d9f1f9",
|
|
4
4
|
"description": "Common package containing utils and types for GraphQL tools",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"peerDependencies": {
|
|
@@ -10,7 +10,6 @@
|
|
|
10
10
|
"@graphql-typed-document-node/core": "^3.1.1",
|
|
11
11
|
"@whatwg-node/promise-helpers": "^1.0.0",
|
|
12
12
|
"cross-inspect": "1.0.1",
|
|
13
|
-
"dset": "^3.1.4",
|
|
14
13
|
"tslib": "^2.4.0"
|
|
15
14
|
},
|
|
16
15
|
"repository": {
|
package/typings/errors.d.cts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ASTNode, GraphQLError, Source } from 'graphql';
|
|
2
2
|
import { Maybe } from './types.cjs';
|
|
3
3
|
interface GraphQLErrorOptions {
|
|
4
4
|
nodes?: ReadonlyArray<ASTNode> | ASTNode | null;
|
|
@@ -11,17 +11,15 @@ interface GraphQLErrorOptions {
|
|
|
11
11
|
extensions?: any;
|
|
12
12
|
coordinate?: string;
|
|
13
13
|
}
|
|
14
|
-
export declare class GraphQLError extends _GraphQLError {
|
|
15
|
-
readonly coordinate?: string;
|
|
16
|
-
constructor(message: string, options?: Maybe<GraphQLErrorOptions>);
|
|
17
|
-
/**
|
|
18
|
-
* @deprecated Please use the `GraphQLErrorOptions` constructor overload instead.
|
|
19
|
-
*/
|
|
20
|
-
constructor(message: string, nodes?: ReadonlyArray<ASTNode> | ASTNode | null, source?: Maybe<Source>, positions?: Maybe<ReadonlyArray<number>>, path?: Maybe<ReadonlyArray<string | number>>, originalError?: Maybe<Error & {
|
|
21
|
-
readonly extensions?: unknown;
|
|
22
|
-
}>, extensions?: Maybe<GraphQLErrorExtensions>);
|
|
23
|
-
}
|
|
24
14
|
export declare function isGraphQLErrorLike(error: any): boolean;
|
|
15
|
+
declare module 'graphql' {
|
|
16
|
+
interface GraphQLError {
|
|
17
|
+
/**
|
|
18
|
+
* An optional schema coordinate (e.g. "MyType.myField") associated with this error.
|
|
19
|
+
*/
|
|
20
|
+
readonly coordinate?: string;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
25
23
|
export declare function createGraphQLError(message: string, options?: GraphQLErrorOptions): GraphQLError;
|
|
26
24
|
type SchemaCoordinateInfo = {
|
|
27
25
|
fieldName: string;
|
package/typings/errors.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ASTNode, GraphQLError, Source } from 'graphql';
|
|
2
2
|
import { Maybe } from './types.js';
|
|
3
3
|
interface GraphQLErrorOptions {
|
|
4
4
|
nodes?: ReadonlyArray<ASTNode> | ASTNode | null;
|
|
@@ -11,17 +11,15 @@ interface GraphQLErrorOptions {
|
|
|
11
11
|
extensions?: any;
|
|
12
12
|
coordinate?: string;
|
|
13
13
|
}
|
|
14
|
-
export declare class GraphQLError extends _GraphQLError {
|
|
15
|
-
readonly coordinate?: string;
|
|
16
|
-
constructor(message: string, options?: Maybe<GraphQLErrorOptions>);
|
|
17
|
-
/**
|
|
18
|
-
* @deprecated Please use the `GraphQLErrorOptions` constructor overload instead.
|
|
19
|
-
*/
|
|
20
|
-
constructor(message: string, nodes?: ReadonlyArray<ASTNode> | ASTNode | null, source?: Maybe<Source>, positions?: Maybe<ReadonlyArray<number>>, path?: Maybe<ReadonlyArray<string | number>>, originalError?: Maybe<Error & {
|
|
21
|
-
readonly extensions?: unknown;
|
|
22
|
-
}>, extensions?: Maybe<GraphQLErrorExtensions>);
|
|
23
|
-
}
|
|
24
14
|
export declare function isGraphQLErrorLike(error: any): boolean;
|
|
15
|
+
declare module 'graphql' {
|
|
16
|
+
interface GraphQLError {
|
|
17
|
+
/**
|
|
18
|
+
* An optional schema coordinate (e.g. "MyType.myField") associated with this error.
|
|
19
|
+
*/
|
|
20
|
+
readonly coordinate?: string;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
25
23
|
export declare function createGraphQLError(message: string, options?: GraphQLErrorOptions): GraphQLError;
|
|
26
24
|
type SchemaCoordinateInfo = {
|
|
27
25
|
fieldName: string;
|