@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 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
- return new GraphQLError(message, options);
34
+ error = new graphql_1.GraphQLError(message, options);
59
35
  }
60
- return new GraphQLError(message, options?.nodes, options?.source, options?.positions, options?.path, options?.originalError, options?.extensions);
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 merge_1 = require("dset/merge");
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
- (0, merge_1.dset)(executionResult, path, item);
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
- (0, merge_1.dset)(executionResult, path, incrementalResult.data);
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
- (0, merge_1.dset)(executionResult, 'extensions', incrementalResult.extensions);
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 { GraphQLError as _GraphQLError, locatedError as _locatedError, versionInfo, } from 'graphql';
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
- return new GraphQLError(message, options);
27
+ error = new GraphQLError(message, options);
50
28
  }
51
- return new GraphQLError(message, options?.nodes, options?.source, options?.positions, options?.path, options?.originalError, options?.extensions);
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 { dset } from 'dset/merge';
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
- dset(executionResult, path, item);
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
- dset(executionResult, path, incrementalResult.data);
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
- dset(executionResult, 'extensions', incrementalResult.extensions);
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-20251110164254-8e0d1d1788c04c5a5183d93cfd465379d26a6765",
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": {
@@ -1,4 +1,4 @@
1
- import { GraphQLError as _GraphQLError, ASTNode, GraphQLErrorExtensions, Source } from 'graphql';
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;
@@ -1,4 +1,4 @@
1
- import { GraphQLError as _GraphQLError, ASTNode, GraphQLErrorExtensions, Source } from 'graphql';
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;