From 71a0d050be4f4f5a93420418f2b154b52bb5f309 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 3 Sep 2026 08:19:57 +0000 Subject: [PATCH 1/2] fix(deps): update dependency @graphql-tools/utils to v12 --- package-lock.json | 496 ++++++++++++++++++++++++---------------------- package.json | 2 +- 2 files changed, 258 insertions(+), 240 deletions(-) diff --git a/package-lock.json b/package-lock.json index 31feb2f4..aa5290ba 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,7 +13,7 @@ "@graphql-codegen/typescript-operations": "^6.1.0", "@graphql-codegen/typescript-resolvers": "^6.1.0", "@graphql-tools/schema": "^10.0.35", - "@graphql-tools/utils": "^11.2.0", + "@graphql-tools/utils": "^12.0.0", "code-block-writer": "^13.0.3", "dayjs": "^1.11.19", "dotenv": "^17.2.3", @@ -1402,6 +1402,24 @@ } } }, + "node_modules/@graphql-codegen/cli/node_modules/@graphql-tools/utils": { + "version": "11.2.2", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-11.2.2.tgz", + "integrity": "sha512-Do2A/t6ayqOma8m7PvpYMsCBswL+NB35BQSng4GWSBqafL2/BnfAZy/NSENPwV721Rm2fG0BHETFC0+FJJZmLw==", + "license": "MIT", + "dependencies": { + "@graphql-typed-document-node/core": "^3.1.1", + "@whatwg-node/promise-helpers": "^1.0.0", + "cross-inspect": "1.0.1", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, "node_modules/@graphql-codegen/cli/node_modules/graphql-config": { "version": "5.1.6", "resolved": "https://registry.npmjs.org/graphql-config/-/graphql-config-5.1.6.tgz", @@ -1492,6 +1510,24 @@ } } }, + "node_modules/@graphql-codegen/client-preset/node_modules/@graphql-tools/utils": { + "version": "11.2.2", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-11.2.2.tgz", + "integrity": "sha512-Do2A/t6ayqOma8m7PvpYMsCBswL+NB35BQSng4GWSBqafL2/BnfAZy/NSENPwV721Rm2fG0BHETFC0+FJJZmLw==", + "license": "MIT", + "dependencies": { + "@graphql-typed-document-node/core": "^3.1.1", + "@whatwg-node/promise-helpers": "^1.0.0", + "cross-inspect": "1.0.1", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, "node_modules/@graphql-codegen/core": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/@graphql-codegen/core/-/core-6.2.0.tgz", @@ -1510,6 +1546,24 @@ "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, + "node_modules/@graphql-codegen/core/node_modules/@graphql-tools/utils": { + "version": "11.2.2", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-11.2.2.tgz", + "integrity": "sha512-Do2A/t6ayqOma8m7PvpYMsCBswL+NB35BQSng4GWSBqafL2/BnfAZy/NSENPwV721Rm2fG0BHETFC0+FJJZmLw==", + "license": "MIT", + "dependencies": { + "@graphql-typed-document-node/core": "^3.1.1", + "@whatwg-node/promise-helpers": "^1.0.0", + "cross-inspect": "1.0.1", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, "node_modules/@graphql-codegen/gql-tag-operations": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/@graphql-codegen/gql-tag-operations/-/gql-tag-operations-6.1.0.tgz", @@ -1529,6 +1583,24 @@ "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, + "node_modules/@graphql-codegen/gql-tag-operations/node_modules/@graphql-tools/utils": { + "version": "11.2.2", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-11.2.2.tgz", + "integrity": "sha512-Do2A/t6ayqOma8m7PvpYMsCBswL+NB35BQSng4GWSBqafL2/BnfAZy/NSENPwV721Rm2fG0BHETFC0+FJJZmLw==", + "license": "MIT", + "dependencies": { + "@graphql-typed-document-node/core": "^3.1.1", + "@whatwg-node/promise-helpers": "^1.0.0", + "cross-inspect": "1.0.1", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, "node_modules/@graphql-codegen/plugin-helpers": { "version": "7.3.0", "resolved": "https://registry.npmjs.org/@graphql-codegen/plugin-helpers/-/plugin-helpers-7.3.0.tgz", @@ -1548,6 +1620,24 @@ "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, + "node_modules/@graphql-codegen/plugin-helpers/node_modules/@graphql-tools/utils": { + "version": "11.2.2", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-11.2.2.tgz", + "integrity": "sha512-Do2A/t6ayqOma8m7PvpYMsCBswL+NB35BQSng4GWSBqafL2/BnfAZy/NSENPwV721Rm2fG0BHETFC0+FJJZmLw==", + "license": "MIT", + "dependencies": { + "@graphql-typed-document-node/core": "^3.1.1", + "@whatwg-node/promise-helpers": "^1.0.0", + "cross-inspect": "1.0.1", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, "node_modules/@graphql-codegen/schema-ast": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/@graphql-codegen/schema-ast/-/schema-ast-6.1.0.tgz", @@ -1565,6 +1655,24 @@ "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, + "node_modules/@graphql-codegen/schema-ast/node_modules/@graphql-tools/utils": { + "version": "11.2.2", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-11.2.2.tgz", + "integrity": "sha512-Do2A/t6ayqOma8m7PvpYMsCBswL+NB35BQSng4GWSBqafL2/BnfAZy/NSENPwV721Rm2fG0BHETFC0+FJJZmLw==", + "license": "MIT", + "dependencies": { + "@graphql-typed-document-node/core": "^3.1.1", + "@whatwg-node/promise-helpers": "^1.0.0", + "cross-inspect": "1.0.1", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, "node_modules/@graphql-codegen/typed-document-node": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/@graphql-codegen/typed-document-node/-/typed-document-node-7.1.0.tgz", @@ -1654,6 +1762,24 @@ } } }, + "node_modules/@graphql-codegen/typescript-resolvers/node_modules/@graphql-tools/utils": { + "version": "11.2.2", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-11.2.2.tgz", + "integrity": "sha512-Do2A/t6ayqOma8m7PvpYMsCBswL+NB35BQSng4GWSBqafL2/BnfAZy/NSENPwV721Rm2fG0BHETFC0+FJJZmLw==", + "license": "MIT", + "dependencies": { + "@graphql-typed-document-node/core": "^3.1.1", + "@whatwg-node/promise-helpers": "^1.0.0", + "cross-inspect": "1.0.1", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, "node_modules/@graphql-codegen/visitor-plugin-common": { "version": "7.2.5", "resolved": "https://registry.npmjs.org/@graphql-codegen/visitor-plugin-common/-/visitor-plugin-common-7.2.5.tgz", @@ -1678,6 +1804,24 @@ "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, + "node_modules/@graphql-codegen/visitor-plugin-common/node_modules/@graphql-tools/utils": { + "version": "11.2.2", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-11.2.2.tgz", + "integrity": "sha512-Do2A/t6ayqOma8m7PvpYMsCBswL+NB35BQSng4GWSBqafL2/BnfAZy/NSENPwV721Rm2fG0BHETFC0+FJJZmLw==", + "license": "MIT", + "dependencies": { + "@graphql-typed-document-node/core": "^3.1.1", + "@whatwg-node/promise-helpers": "^1.0.0", + "cross-inspect": "1.0.1", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, "node_modules/@graphql-hive/signal": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@graphql-hive/signal/-/signal-2.0.0.tgz", @@ -1705,24 +1849,6 @@ "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@graphql-tools/apollo-engine-loader/node_modules/@graphql-tools/utils": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-12.0.0.tgz", - "integrity": "sha512-aMdIo/l+8j4lhamWAf+MWHr+lOW8zArSBKXspqtKHgt5I2JF9LS55KDLUe/L9AiJOV/O6qJJ60hgYydbnJHbxg==", - "license": "MIT", - "dependencies": { - "@graphql-typed-document-node/core": "^3.1.1", - "@whatwg-node/promise-helpers": "^1.0.0", - "cross-inspect": "1.0.1", - "tslib": "^2.4.0" - }, - "engines": { - "node": ">=16.0.0" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" - } - }, "node_modules/@graphql-tools/batch-execute": { "version": "10.0.9", "resolved": "https://registry.npmjs.org/@graphql-tools/batch-execute/-/batch-execute-10.0.9.tgz", @@ -1741,17 +1867,16 @@ "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@graphql-tools/code-file-loader": { - "version": "8.1.37", - "resolved": "https://registry.npmjs.org/@graphql-tools/code-file-loader/-/code-file-loader-8.1.37.tgz", - "integrity": "sha512-ne+mr8XUvN+8EZ+dTKalSt74KUNYnzZq1904SJ0+l8NybmkSHBb821AcKLAfYxFXPFGGC4oQwyIxZa+iVB6K9A==", + "node_modules/@graphql-tools/batch-execute/node_modules/@graphql-tools/utils": { + "version": "11.2.2", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-11.2.2.tgz", + "integrity": "sha512-Do2A/t6ayqOma8m7PvpYMsCBswL+NB35BQSng4GWSBqafL2/BnfAZy/NSENPwV721Rm2fG0BHETFC0+FJJZmLw==", "license": "MIT", "dependencies": { - "@graphql-tools/graphql-tag-pluck": "8.3.36", - "@graphql-tools/utils": "^12.0.0", - "globby": "^11.0.3", - "tslib": "^2.4.0", - "unixify": "^1.0.0" + "@graphql-typed-document-node/core": "^3.1.1", + "@whatwg-node/promise-helpers": "^1.0.0", + "cross-inspect": "1.0.1", + "tslib": "^2.4.0" }, "engines": { "node": ">=16.0.0" @@ -1760,16 +1885,17 @@ "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@graphql-tools/code-file-loader/node_modules/@graphql-tools/utils": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-12.0.0.tgz", - "integrity": "sha512-aMdIo/l+8j4lhamWAf+MWHr+lOW8zArSBKXspqtKHgt5I2JF9LS55KDLUe/L9AiJOV/O6qJJ60hgYydbnJHbxg==", + "node_modules/@graphql-tools/code-file-loader": { + "version": "8.1.37", + "resolved": "https://registry.npmjs.org/@graphql-tools/code-file-loader/-/code-file-loader-8.1.37.tgz", + "integrity": "sha512-ne+mr8XUvN+8EZ+dTKalSt74KUNYnzZq1904SJ0+l8NybmkSHBb821AcKLAfYxFXPFGGC4oQwyIxZa+iVB6K9A==", "license": "MIT", "dependencies": { - "@graphql-typed-document-node/core": "^3.1.1", - "@whatwg-node/promise-helpers": "^1.0.0", - "cross-inspect": "1.0.1", - "tslib": "^2.4.0" + "@graphql-tools/graphql-tag-pluck": "8.3.36", + "@graphql-tools/utils": "^12.0.0", + "globby": "^11.0.3", + "tslib": "^2.4.0", + "unixify": "^1.0.0" }, "engines": { "node": ">=16.0.0" @@ -1800,6 +1926,24 @@ "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, + "node_modules/@graphql-tools/delegate/node_modules/@graphql-tools/utils": { + "version": "11.2.2", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-11.2.2.tgz", + "integrity": "sha512-Do2A/t6ayqOma8m7PvpYMsCBswL+NB35BQSng4GWSBqafL2/BnfAZy/NSENPwV721Rm2fG0BHETFC0+FJJZmLw==", + "license": "MIT", + "dependencies": { + "@graphql-typed-document-node/core": "^3.1.1", + "@whatwg-node/promise-helpers": "^1.0.0", + "cross-inspect": "1.0.1", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, "node_modules/@graphql-tools/documents": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@graphql-tools/documents/-/documents-1.0.1.tgz", @@ -1852,6 +1996,24 @@ "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, + "node_modules/@graphql-tools/executor-common/node_modules/@graphql-tools/utils": { + "version": "11.2.2", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-11.2.2.tgz", + "integrity": "sha512-Do2A/t6ayqOma8m7PvpYMsCBswL+NB35BQSng4GWSBqafL2/BnfAZy/NSENPwV721Rm2fG0BHETFC0+FJJZmLw==", + "license": "MIT", + "dependencies": { + "@graphql-typed-document-node/core": "^3.1.1", + "@whatwg-node/promise-helpers": "^1.0.0", + "cross-inspect": "1.0.1", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, "node_modules/@graphql-tools/executor-graphql-ws": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/@graphql-tools/executor-graphql-ws/-/executor-graphql-ws-3.1.5.tgz", @@ -1873,6 +2035,24 @@ "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, + "node_modules/@graphql-tools/executor-graphql-ws/node_modules/@graphql-tools/utils": { + "version": "11.2.2", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-11.2.2.tgz", + "integrity": "sha512-Do2A/t6ayqOma8m7PvpYMsCBswL+NB35BQSng4GWSBqafL2/BnfAZy/NSENPwV721Rm2fG0BHETFC0+FJJZmLw==", + "license": "MIT", + "dependencies": { + "@graphql-typed-document-node/core": "^3.1.1", + "@whatwg-node/promise-helpers": "^1.0.0", + "cross-inspect": "1.0.1", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, "node_modules/@graphql-tools/executor-http": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/@graphql-tools/executor-http/-/executor-http-3.3.0.tgz", @@ -1896,6 +2076,24 @@ "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, + "node_modules/@graphql-tools/executor-http/node_modules/@graphql-tools/utils": { + "version": "11.2.2", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-11.2.2.tgz", + "integrity": "sha512-Do2A/t6ayqOma8m7PvpYMsCBswL+NB35BQSng4GWSBqafL2/BnfAZy/NSENPwV721Rm2fG0BHETFC0+FJJZmLw==", + "license": "MIT", + "dependencies": { + "@graphql-typed-document-node/core": "^3.1.1", + "@whatwg-node/promise-helpers": "^1.0.0", + "cross-inspect": "1.0.1", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, "node_modules/@graphql-tools/executor-legacy-ws": { "version": "1.1.33", "resolved": "https://registry.npmjs.org/@graphql-tools/executor-legacy-ws/-/executor-legacy-ws-1.1.33.tgz", @@ -1915,10 +2113,10 @@ "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@graphql-tools/executor-legacy-ws/node_modules/@graphql-tools/utils": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-12.0.0.tgz", - "integrity": "sha512-aMdIo/l+8j4lhamWAf+MWHr+lOW8zArSBKXspqtKHgt5I2JF9LS55KDLUe/L9AiJOV/O6qJJ60hgYydbnJHbxg==", + "node_modules/@graphql-tools/executor/node_modules/@graphql-tools/utils": { + "version": "11.2.2", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-11.2.2.tgz", + "integrity": "sha512-Do2A/t6ayqOma8m7PvpYMsCBswL+NB35BQSng4GWSBqafL2/BnfAZy/NSENPwV721Rm2fG0BHETFC0+FJJZmLw==", "license": "MIT", "dependencies": { "@graphql-typed-document-node/core": "^3.1.1", @@ -1953,24 +2151,6 @@ "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@graphql-tools/git-loader/node_modules/@graphql-tools/utils": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-12.0.0.tgz", - "integrity": "sha512-aMdIo/l+8j4lhamWAf+MWHr+lOW8zArSBKXspqtKHgt5I2JF9LS55KDLUe/L9AiJOV/O6qJJ60hgYydbnJHbxg==", - "license": "MIT", - "dependencies": { - "@graphql-typed-document-node/core": "^3.1.1", - "@whatwg-node/promise-helpers": "^1.0.0", - "cross-inspect": "1.0.1", - "tslib": "^2.4.0" - }, - "engines": { - "node": ">=16.0.0" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" - } - }, "node_modules/@graphql-tools/github-loader": { "version": "9.1.7", "resolved": "https://registry.npmjs.org/@graphql-tools/github-loader/-/github-loader-9.1.7.tgz", @@ -1992,24 +2172,6 @@ "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@graphql-tools/github-loader/node_modules/@graphql-tools/utils": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-12.0.0.tgz", - "integrity": "sha512-aMdIo/l+8j4lhamWAf+MWHr+lOW8zArSBKXspqtKHgt5I2JF9LS55KDLUe/L9AiJOV/O6qJJ60hgYydbnJHbxg==", - "license": "MIT", - "dependencies": { - "@graphql-typed-document-node/core": "^3.1.1", - "@whatwg-node/promise-helpers": "^1.0.0", - "cross-inspect": "1.0.1", - "tslib": "^2.4.0" - }, - "engines": { - "node": ">=16.0.0" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" - } - }, "node_modules/@graphql-tools/graphql-file-loader": { "version": "8.1.19", "resolved": "https://registry.npmjs.org/@graphql-tools/graphql-file-loader/-/graphql-file-loader-8.1.19.tgz", @@ -2029,24 +2191,6 @@ "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@graphql-tools/graphql-file-loader/node_modules/@graphql-tools/utils": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-12.0.0.tgz", - "integrity": "sha512-aMdIo/l+8j4lhamWAf+MWHr+lOW8zArSBKXspqtKHgt5I2JF9LS55KDLUe/L9AiJOV/O6qJJ60hgYydbnJHbxg==", - "license": "MIT", - "dependencies": { - "@graphql-typed-document-node/core": "^3.1.1", - "@whatwg-node/promise-helpers": "^1.0.0", - "cross-inspect": "1.0.1", - "tslib": "^2.4.0" - }, - "engines": { - "node": ">=16.0.0" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" - } - }, "node_modules/@graphql-tools/graphql-tag-pluck": { "version": "8.3.36", "resolved": "https://registry.npmjs.org/@graphql-tools/graphql-tag-pluck/-/graphql-tag-pluck-8.3.36.tgz", @@ -2068,24 +2212,6 @@ "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@graphql-tools/graphql-tag-pluck/node_modules/@graphql-tools/utils": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-12.0.0.tgz", - "integrity": "sha512-aMdIo/l+8j4lhamWAf+MWHr+lOW8zArSBKXspqtKHgt5I2JF9LS55KDLUe/L9AiJOV/O6qJJ60hgYydbnJHbxg==", - "license": "MIT", - "dependencies": { - "@graphql-typed-document-node/core": "^3.1.1", - "@whatwg-node/promise-helpers": "^1.0.0", - "cross-inspect": "1.0.1", - "tslib": "^2.4.0" - }, - "engines": { - "node": ">=16.0.0" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" - } - }, "node_modules/@graphql-tools/import": { "version": "7.1.19", "resolved": "https://registry.npmjs.org/@graphql-tools/import/-/import-7.1.19.tgz", @@ -2103,24 +2229,6 @@ "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@graphql-tools/import/node_modules/@graphql-tools/utils": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-12.0.0.tgz", - "integrity": "sha512-aMdIo/l+8j4lhamWAf+MWHr+lOW8zArSBKXspqtKHgt5I2JF9LS55KDLUe/L9AiJOV/O6qJJ60hgYydbnJHbxg==", - "license": "MIT", - "dependencies": { - "@graphql-typed-document-node/core": "^3.1.1", - "@whatwg-node/promise-helpers": "^1.0.0", - "cross-inspect": "1.0.1", - "tslib": "^2.4.0" - }, - "engines": { - "node": ">=16.0.0" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" - } - }, "node_modules/@graphql-tools/json-file-loader": { "version": "8.0.33", "resolved": "https://registry.npmjs.org/@graphql-tools/json-file-loader/-/json-file-loader-8.0.33.tgz", @@ -2139,24 +2247,6 @@ "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@graphql-tools/json-file-loader/node_modules/@graphql-tools/utils": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-12.0.0.tgz", - "integrity": "sha512-aMdIo/l+8j4lhamWAf+MWHr+lOW8zArSBKXspqtKHgt5I2JF9LS55KDLUe/L9AiJOV/O6qJJ60hgYydbnJHbxg==", - "license": "MIT", - "dependencies": { - "@graphql-typed-document-node/core": "^3.1.1", - "@whatwg-node/promise-helpers": "^1.0.0", - "cross-inspect": "1.0.1", - "tslib": "^2.4.0" - }, - "engines": { - "node": ">=16.0.0" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" - } - }, "node_modules/@graphql-tools/load": { "version": "8.1.16", "resolved": "https://registry.npmjs.org/@graphql-tools/load/-/load-8.1.16.tgz", @@ -2175,24 +2265,6 @@ "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@graphql-tools/load/node_modules/@graphql-tools/utils": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-12.0.0.tgz", - "integrity": "sha512-aMdIo/l+8j4lhamWAf+MWHr+lOW8zArSBKXspqtKHgt5I2JF9LS55KDLUe/L9AiJOV/O6qJJ60hgYydbnJHbxg==", - "license": "MIT", - "dependencies": { - "@graphql-typed-document-node/core": "^3.1.1", - "@whatwg-node/promise-helpers": "^1.0.0", - "cross-inspect": "1.0.1", - "tslib": "^2.4.0" - }, - "engines": { - "node": ">=16.0.0" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" - } - }, "node_modules/@graphql-tools/merge": { "version": "9.2.3", "resolved": "https://registry.npmjs.org/@graphql-tools/merge/-/merge-9.2.3.tgz", @@ -2209,24 +2281,6 @@ "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@graphql-tools/merge/node_modules/@graphql-tools/utils": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-12.0.0.tgz", - "integrity": "sha512-aMdIo/l+8j4lhamWAf+MWHr+lOW8zArSBKXspqtKHgt5I2JF9LS55KDLUe/L9AiJOV/O6qJJ60hgYydbnJHbxg==", - "license": "MIT", - "dependencies": { - "@graphql-typed-document-node/core": "^3.1.1", - "@whatwg-node/promise-helpers": "^1.0.0", - "cross-inspect": "1.0.1", - "tslib": "^2.4.0" - }, - "engines": { - "node": ">=16.0.0" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" - } - }, "node_modules/@graphql-tools/optimize": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/@graphql-tools/optimize/-/optimize-2.0.0.tgz", @@ -2259,24 +2313,6 @@ "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@graphql-tools/relay-operation-optimizer/node_modules/@graphql-tools/utils": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-12.0.0.tgz", - "integrity": "sha512-aMdIo/l+8j4lhamWAf+MWHr+lOW8zArSBKXspqtKHgt5I2JF9LS55KDLUe/L9AiJOV/O6qJJ60hgYydbnJHbxg==", - "license": "MIT", - "dependencies": { - "@graphql-typed-document-node/core": "^3.1.1", - "@whatwg-node/promise-helpers": "^1.0.0", - "cross-inspect": "1.0.1", - "tslib": "^2.4.0" - }, - "engines": { - "node": ">=16.0.0" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" - } - }, "node_modules/@graphql-tools/schema": { "version": "10.1.0", "resolved": "https://registry.npmjs.org/@graphql-tools/schema/-/schema-10.1.0.tgz", @@ -2294,24 +2330,6 @@ "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@graphql-tools/schema/node_modules/@graphql-tools/utils": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-12.0.0.tgz", - "integrity": "sha512-aMdIo/l+8j4lhamWAf+MWHr+lOW8zArSBKXspqtKHgt5I2JF9LS55KDLUe/L9AiJOV/O6qJJ60hgYydbnJHbxg==", - "license": "MIT", - "dependencies": { - "@graphql-typed-document-node/core": "^3.1.1", - "@whatwg-node/promise-helpers": "^1.0.0", - "cross-inspect": "1.0.1", - "tslib": "^2.4.0" - }, - "engines": { - "node": ">=16.0.0" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" - } - }, "node_modules/@graphql-tools/url-loader": { "version": "9.1.7", "resolved": "https://registry.npmjs.org/@graphql-tools/url-loader/-/url-loader-9.1.7.tgz", @@ -2338,7 +2356,7 @@ "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@graphql-tools/url-loader/node_modules/@graphql-tools/utils": { + "node_modules/@graphql-tools/utils": { "version": "12.0.0", "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-12.0.0.tgz", "integrity": "sha512-aMdIo/l+8j4lhamWAf+MWHr+lOW8zArSBKXspqtKHgt5I2JF9LS55KDLUe/L9AiJOV/O6qJJ60hgYydbnJHbxg==", @@ -2356,24 +2374,6 @@ "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, - "node_modules/@graphql-tools/utils": { - "version": "11.2.2", - "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-11.2.2.tgz", - "integrity": "sha512-Do2A/t6ayqOma8m7PvpYMsCBswL+NB35BQSng4GWSBqafL2/BnfAZy/NSENPwV721Rm2fG0BHETFC0+FJJZmLw==", - "license": "MIT", - "dependencies": { - "@graphql-typed-document-node/core": "^3.1.1", - "@whatwg-node/promise-helpers": "^1.0.0", - "cross-inspect": "1.0.1", - "tslib": "^2.4.0" - }, - "engines": { - "node": ">=16.0.0" - }, - "peerDependencies": { - "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" - } - }, "node_modules/@graphql-tools/wrap": { "version": "11.1.22", "resolved": "https://registry.npmjs.org/@graphql-tools/wrap/-/wrap-11.1.22.tgz", @@ -2393,6 +2393,24 @@ "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" } }, + "node_modules/@graphql-tools/wrap/node_modules/@graphql-tools/utils": { + "version": "11.2.2", + "resolved": "https://registry.npmjs.org/@graphql-tools/utils/-/utils-11.2.2.tgz", + "integrity": "sha512-Do2A/t6ayqOma8m7PvpYMsCBswL+NB35BQSng4GWSBqafL2/BnfAZy/NSENPwV721Rm2fG0BHETFC0+FJJZmLw==", + "license": "MIT", + "dependencies": { + "@graphql-typed-document-node/core": "^3.1.1", + "@whatwg-node/promise-helpers": "^1.0.0", + "cross-inspect": "1.0.1", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, "node_modules/@graphql-typed-document-node/core": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz", diff --git a/package.json b/package.json index e25f1a4c..ab7402a2 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ "@graphql-codegen/typescript-operations": "^6.1.0", "@graphql-codegen/typescript-resolvers": "^6.1.0", "@graphql-tools/schema": "^10.0.35", - "@graphql-tools/utils": "^11.2.0", + "@graphql-tools/utils": "^12.0.0", "code-block-writer": "^13.0.3", "dayjs": "^1.11.19", "dotenv": "^17.2.3", From 44c521b0134478984ada22740351d39a05ffcd7f Mon Sep 17 00:00:00 2001 From: zwei-wealth-dev <38549277-zwei-wealth-dev@users.noreply.gitlab.com> Date: Thu, 3 Sep 2026 08:37:53 +0000 Subject: [PATCH 2/2] fix(api): type ResolverWrapper against graphql's native GraphQLResolveInfo MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `@graphql-tools/utils` v12 augments `GraphQLResolveInfo` with two *required* members, `getAbortSignal` and `getAsyncHelpers`. graphql 17 declares both natively; graphql 16 declares neither. Because `ResolverWrapper` was expressed through that package's `IFieldResolver`, the utils v11 -> v12 bump made the type unimplementable on graphql 16 for any consumer whose resolvers come from graphql-codegen (its `ResolverFn` is typed with graphql's own resolve info): error TS2322: Type 'GraphQLResolveInfo' is missing the following properties from type 'GraphQLResolveInfo': getAbortSignal, getAsyncHelpers graphql 16 is inside our declared peer range and the bump ships as a patch, so this would have broken consumers silently. Express `ResolverWrapper` with graphql's own `GraphQLResolveInfo` instead — which is what every other resolver signature in the codebase already uses. `additionalResolvers` keeps using `IResolvers`; that direction stays assignable and is unaffected. The jest suite cannot catch this class of regression: ts-jest runs transpile-only under `isolatedModules`, so no test file is ever type-checked, and the only wrapper it exercises is an inferred `(resolver) => resolver` that never pins down the parameter type. Add a type-level test checked by tsc through a scoped `tsconfig.type-tests.json`, wired into `npm test` as `test:types` so it runs on both graphql majors of the CI matrix. Co-Authored-By: Claude Opus 5 (1M context) --- knip.json | 3 ++- package.json | 3 ++- src/api/execute.ts | 13 +++++++++---- tests/types/resolver-wrapper.ts | 29 +++++++++++++++++++++++++++++ tsconfig.type-tests.json | 11 +++++++++++ 5 files changed, 53 insertions(+), 6 deletions(-) create mode 100644 tests/types/resolver-wrapper.ts create mode 100644 tsconfig.type-tests.json diff --git a/knip.json b/knip.json index d63f6e50..0f2b85da 100644 --- a/knip.json +++ b/knip.json @@ -5,7 +5,8 @@ "tests/**/*.ts" ], "ignore": [ - "**/generated/**" + "**/generated/**", + "tests/types/**" ], "ignoreDependencies": [ "conventional-changelog-conventionalcommits", diff --git a/package.json b/package.json index ab7402a2..3fff55bd 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,8 @@ "lint": "eslint src/**/*.ts", "lint:fix": "eslint src --fix", "deps": "docker compose up", - "test": "npm run lint && npm run test:all && npm run build", + "test": "npm run lint && npm run test:types && npm run test:all && npm run build", + "test:types": "tsc -p tsconfig.type-tests.json", "test:all": "jest tests --no-cache --no-watchman --setupFiles dotenv/config", "test:unit": "jest tests/unit --no-cache --no-watchman --setupFiles dotenv/config", "test:api": "jest tests/api --no-cache --no-watchman --setupFiles dotenv/config", diff --git a/src/api/execute.ts b/src/api/execute.ts index 4ab1b491..e714e45d 100644 --- a/src/api/execute.ts +++ b/src/api/execute.ts @@ -1,5 +1,5 @@ import { makeExecutableSchema } from '@graphql-tools/schema'; -import { IFieldResolver, IResolvers } from '@graphql-tools/utils'; +import { IResolvers } from '@graphql-tools/utils'; import { DocumentNode, GraphQLResolveInfo, @@ -17,9 +17,14 @@ import { Context, generate, get, getResolvers } from '..'; import { Models } from '../models/models'; import { noIntrospection } from '../utils/rules'; -export type ResolverWrapper = ( - resolver: IFieldResolver, -) => IFieldResolver; +// Deliberately expressed with graphql's own `GraphQLResolveInfo` rather than `@graphql-tools/utils`' +// `IFieldResolver`: the latter augments the resolve info with members (`getAbortSignal`, +// `getAsyncHelpers`) that graphql 17 has natively but graphql 16 does not, which would make this +// type unimplementable on graphql 16 by consumers whose resolvers come from graphql-codegen. +// See tests/types/resolver-wrapper.ts. +export type FieldResolver = (source: unknown, args: unknown, context: unknown, info: GraphQLResolveInfo) => unknown; + +export type ResolverWrapper = (resolver: FieldResolver) => FieldResolver; export type ExecutorInput = { models: Models; diff --git a/tests/types/resolver-wrapper.ts b/tests/types/resolver-wrapper.ts new file mode 100644 index 00000000..e7461c8d --- /dev/null +++ b/tests/types/resolver-wrapper.ts @@ -0,0 +1,29 @@ +import type { GraphQLResolveInfo } from 'graphql'; +import type { ExecutorInput, ResolverWrapper } from '../../src'; + +// This file is never executed — `npm run test:types` type-checks it, and that is the assertion. +// +// graphql-codegen emits resolvers against graphql's own `GraphQLResolveInfo`, so a consumer's +// resolver wrapper is typed that way too. `ResolverWrapper` has to stay assignable from that shape +// on every graphql major our peer range allows. +// +// This regressed once: typing `ResolverWrapper` through `@graphql-tools/utils`' `IFieldResolver` +// pulled in that package's *augmented* `GraphQLResolveInfo`, which as of utils v12 requires +// `getAbortSignal` and `getAsyncHelpers`. graphql 17 declares both natively, graphql 16 declares +// neither — so on graphql 16 the assignments below stopped compiling for every consumer, while the +// jest suite stayed green (ts-jest runs transpile-only, and the one wrapper it passes is an +// inferred `(resolver) => resolver` that never pins down the parameter type). +type ResolverFn = ( + parent: TParent, + args: TArgs, + context: TContext, + info: GraphQLResolveInfo, +) => Promise | TResult; + +declare const consumerWrapper: ( + resolver: ResolverFn, +) => ResolverFn; + +export const wrapper: ResolverWrapper = consumerWrapper; + +export const executorInput: Pick = { resolverWrapper: consumerWrapper }; diff --git a/tsconfig.type-tests.json b/tsconfig.type-tests.json new file mode 100644 index 00000000..746d85c4 --- /dev/null +++ b/tsconfig.type-tests.json @@ -0,0 +1,11 @@ +{ + "extends": "./tsconfig.json", + "include": ["tests/types/**/*.ts"], + "exclude": ["node_modules", "dist"], + "compilerOptions": { + "rootDir": "./", + "noEmit": true, + "declaration": false, + "sourceMap": false + } +}