diff --git a/packages/plugins/root-level-limitation/__tests__/root-level-limitation.spec.ts b/packages/plugins/root-level-limitation/__tests__/root-level-limitation.spec.ts new file mode 100644 index 0000000000..243e34dff9 --- /dev/null +++ b/packages/plugins/root-level-limitation/__tests__/root-level-limitation.spec.ts @@ -0,0 +1,67 @@ +import { createSchema, createYoga } from 'graphql-yoga'; +import { rootLevelQueryLimit } from '../src/index.js'; + +describe('root-level-limitation', () => { + const schema = createSchema({ + typeDefs: /* GraphQL */ ` + type Query { + topProducts: GetTopProducts + topBooks: GetTopBooks + } + type GetTopBooks { + id: Int + } + type GetTopProducts { + id: Int + } + `, + }); + + const yoga = createYoga({ + schema, + plugins: [rootLevelQueryLimit({ maxRootLevelFields: 1 })], + maskedErrors: false, + }); + + it('should not allow requests with max root level query', async () => { + const res = await yoga.fetch('http://yoga/graphql', { + method: 'POST', + body: JSON.stringify({ + query: /* GraphQL */ ` + { + topBooks { + id + } + topProducts { + id + } + } + `, + }), + headers: { + 'Content-Type': 'application/json', + }, + }); + + expect(res.status).toBe(400); + }); + + it('should allow requests with max root level query', async () => { + const res = await yoga.fetch('http://yoga/graphql', { + method: 'POST', + body: JSON.stringify({ + query: /* GraphQL */ ` + { + topProducts { + id + } + } + `, + }), + headers: { + 'Content-Type': 'application/json', + }, + }); + expect(res.status).toBe(200); + }); +}); diff --git a/packages/plugins/root-level-limitation/package.json b/packages/plugins/root-level-limitation/package.json new file mode 100644 index 0000000000..dd27d84058 --- /dev/null +++ b/packages/plugins/root-level-limitation/package.json @@ -0,0 +1,60 @@ +{ + "name": "@graphql-yoga/plugin-root-level-limitation", + "version": "1.0.0", + "type": "module", + "description": "Apollo's federated check max root values plugin for GraphQL Yoga.", + "repository": { + "type": "git", + "url": "https://github.com/dotansimha/graphql-yoga.git", + "directory": "packages/plugins/root-level-limitation" + }, + "author": "Saeed Akasteh ", + "license": "MIT", + "engines": { + "node": ">=18.0.0" + }, + "main": "dist/cjs/index.js", + "module": "dist/esm/index.js", + "exports": { + ".": { + "require": { + "types": "./dist/typings/index.d.cts", + "default": "./dist/cjs/index.js" + }, + "import": { + "types": "./dist/typings/index.d.ts", + "default": "./dist/esm/index.js" + }, + "default": { + "types": "./dist/typings/index.d.ts", + "default": "./dist/esm/index.js" + } + }, + "./package.json": "./package.json" + }, + "typings": "dist/typings/index.d.ts", + "scripts": { + "check": "tsc --pretty --noEmit" + }, + "peerDependencies": { + "@graphql-tools/utils": "^10.1.0", + "@whatwg-node/server": "^0.9.32", + "graphql": "^15.2.0 || ^16.0.0", + "graphql-yoga": "^5.3.0" + }, + "dependencies": { + "tslib": "^2.5.2" + }, + "devDependencies": { + "@whatwg-node/fetch": "^0.9.17", + "graphql": "^16.6.0", + "graphql-yoga": "5.3.0" + }, + "publishConfig": { + "directory": "dist", + "access": "public" + }, + "typescript": { + "definition": "dist/typings/index.d.ts" + } +} diff --git a/packages/plugins/root-level-limitation/src/index.ts b/packages/plugins/root-level-limitation/src/index.ts new file mode 100644 index 0000000000..05c9917764 --- /dev/null +++ b/packages/plugins/root-level-limitation/src/index.ts @@ -0,0 +1,79 @@ +import { createGraphQLError } from '@graphql-tools/utils'; + +interface GraphQLParams { + operationName?: string; + query?: string; +} + +export function rootLevelQueryLimit({ maxRootLevelFields }: { maxRootLevelFields: number }) { + return { + onParams({ params }: unknown) { + const { query, operationName } = params as GraphQLParams; + + if (operationName?.includes('IntrospectionQuery')) return true; + + const newQuery = formatQuery(query || ''); + const linesArray = newQuery.split('\n'); + + let countLeadingSpacesTwo = 0; + + for (const line of linesArray) { + const leadingSpaces = line?.match(/^\s*/)?.[0]?.length || 0; + + if (leadingSpaces === 4 && line[leadingSpaces] !== ')') { + countLeadingSpacesTwo++; + + if (countLeadingSpacesTwo > maxRootLevelFields * 2) { + throw createGraphQLError('Query is too complex.', { + extensions: { + http: { + spec: false, + status: 400, + headers: { + Allow: 'POST', + }, + }, + }, + }); + } + } + } + + return true; + }, + }; +} + +function formatQuery(queryString: string) { + queryString = queryString.replace(/^\s+/gm, ''); + + let indentLevel = 0; + let formattedString = ''; + + for (let i = 0; i < queryString.length; i++) { + const char = queryString[i]; + + if (char === '{' || char === '(') { + formattedString += char; + indentLevel++; + // formattedString += ' '.repeat(indentLevel * 4); + } else if (char === '}' || char === ')') { + indentLevel--; + + if (formattedString[formattedString.length - 1] !== '\n') + formattedString = formattedString.trim().replace(/\n$/, ''); + + if (char === ')') formattedString += char; + + if (char === '}') formattedString += '\n' + ' '.repeat(indentLevel * 4) + char; + } else if (char === '\n') { + if (queryString[i + 1] !== '\n' && queryString[i + 1] !== undefined) { + formattedString += char + ' '.repeat(indentLevel * 4); + } + } else { + formattedString += char; + } + } + + return formattedString; +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index c227f26303..84025e4b06 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1,4 +1,4 @@ -lockfileVersion: '6.1' +lockfileVersion: '6.0' settings: autoInstallPeers: true @@ -132,7 +132,7 @@ importers: dependencies: '@envelop/graphql-jit': specifier: 8.0.0 - version: 8.0.0(@envelop/core@5.0.0)(graphql@16.6.0) + version: 8.0.0(@envelop/core@4.0.0)(graphql@16.6.0) '@faker-js/faker': specifier: 8.0.2 version: 8.0.2 @@ -234,7 +234,7 @@ importers: version: 2.4.7(graphql@16.6.0) '@envelop/apollo-federation': specifier: 5.0.0 - version: 5.0.0(@apollo/gateway@2.4.7)(@envelop/core@5.0.0)(graphql@16.6.0) + version: 5.0.0(@apollo/gateway@2.4.7)(@envelop/core@4.0.0)(graphql@16.6.0) graphql: specifier: 16.6.0 version: 16.6.0 @@ -520,7 +520,7 @@ importers: dependencies: '@envelop/graphql-modules': specifier: 6.0.0 - version: 6.0.0(@envelop/core@5.0.0)(graphql-modules@2.1.2)(graphql@16.6.0) + version: 6.0.0(@envelop/core@4.0.0)(graphql-modules@2.1.2)(graphql@16.6.0) '@graphql-tools/load-files': specifier: 7.0.0 version: 7.0.0(graphql@16.6.0) @@ -679,7 +679,7 @@ importers: dependencies: '@envelop/generic-auth': specifier: 7.0.0 - version: 7.0.0(@envelop/core@5.0.0)(graphql@16.6.0) + version: 7.0.0(@envelop/core@4.0.0)(graphql@16.6.0) graphql: specifier: 16.6.0 version: 16.6.0 @@ -903,7 +903,7 @@ importers: dependencies: '@envelop/live-query': specifier: 7.0.0 - version: 7.0.0(@envelop/core@5.0.0)(graphql@16.6.0) + version: 7.0.0(@envelop/core@4.0.0)(graphql@16.6.0) '@graphql-tools/utils': specifier: 10.0.1 version: 10.0.1(graphql@16.6.0) @@ -1393,7 +1393,7 @@ importers: dependencies: '@envelop/graphql-jit': specifier: 8.0.0 - version: 8.0.0(@envelop/core@5.0.0)(graphql@16.6.0) + version: 8.0.0(@envelop/core@4.0.0)(graphql@16.6.0) '@graphql-yoga/render-graphiql': specifier: 5.3.0 version: link:../../packages/render-graphiql/dist @@ -1502,7 +1502,7 @@ importers: specifier: ^1.0.4 version: 1.0.4(@types/node@18.16.16)(graphql@16.6.0) graphql: - specifier: ^15.2.0 || ^16.0.0 + specifier: 16.6.0 version: 16.6.0 tslib: specifier: ^2.5.2 @@ -1525,7 +1525,7 @@ importers: specifier: ^1.0.0 version: 1.0.0(@urql/core@4.0.10)(graphql@16.6.0)(wonka@6.3.2) graphql: - specifier: ^15.2.0 || ^16.0.0 + specifier: 16.6.0 version: 16.6.0 tslib: specifier: ^2.5.2 @@ -1821,7 +1821,7 @@ importers: dependencies: '@envelop/on-resolve': specifier: ^4.0.0 - version: 4.0.0(@envelop/core@5.0.0)(graphql@16.6.0) + version: 4.0.0(@envelop/core@4.0.0)(graphql@16.6.0) '@graphql-tools/utils': specifier: ^10.0.0 version: 10.0.0(graphql@16.6.0) @@ -1906,7 +1906,7 @@ importers: packages/plugins/graphql-sse: dependencies: graphql: - specifier: ^15.2.0 || ^16.0.0 + specifier: 16.6.0 version: 16.6.0 graphql-sse: specifier: ^2.0.0 @@ -1964,9 +1964,9 @@ importers: dependencies: '@envelop/prometheus': specifier: ^9.4.0 - version: 9.4.0(@envelop/core@5.0.0)(graphql@16.6.0)(prom-client@15.0.0) + version: 9.4.0(@envelop/core@4.0.0)(graphql@16.6.0)(prom-client@15.0.0) graphql: - specifier: ^15.2.0 || ^16.0.0 + specifier: 16.6.0 version: 16.6.0 graphql-yoga: specifier: ^5.3.0 @@ -1981,7 +1981,7 @@ importers: dependencies: '@envelop/response-cache': specifier: ^6.1.2 - version: 6.1.2(@envelop/core@5.0.0)(graphql@16.6.0) + version: 6.1.2(@envelop/core@4.0.0)(graphql@16.6.0) graphql-yoga: specifier: ^5.3.0 version: link:../../graphql-yoga/dist @@ -1994,10 +1994,33 @@ importers: version: 2.6.2 publishDirectory: dist + packages/plugins/root-level-limitation: + dependencies: + '@graphql-tools/utils': + specifier: ^10.1.0 + version: 10.1.1(graphql@16.6.0) + '@whatwg-node/server': + specifier: ^0.9.32 + version: 0.9.32 + tslib: + specifier: ^2.5.2 + version: 2.6.2 + devDependencies: + '@whatwg-node/fetch': + specifier: ^0.9.17 + version: 0.9.17 + graphql: + specifier: 16.6.0 + version: 16.6.0 + graphql-yoga: + specifier: 5.3.0 + version: link:../../graphql-yoga/dist + publishDirectory: dist + packages/plugins/sofa: dependencies: graphql: - specifier: ^15.2.0 || ^16.0.0 + specifier: 16.6.0 version: 16.6.0 graphql-yoga: specifier: ^5.3.0 @@ -2094,7 +2117,7 @@ packages: /@0no-co/graphql.web@1.0.1(graphql@16.6.0): resolution: {integrity: sha512-6Yaxyv6rOwRkLIvFaL0NrLDgfNqC/Ng9QOPmTmlqW4mORXMEKmh5NYGkIvvt5Yw8fZesnMAqkj8cIqTj8f40cQ==} peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 + graphql: 16.6.0 peerDependenciesMeta: graphql: optional: true @@ -2192,14 +2215,14 @@ packages: /@apollo/cache-control-types@1.0.2(graphql@16.6.0): resolution: {integrity: sha512-Por80co1eUm4ATsvjCOoS/tIR8PHxqVjsA6z76I6Vw0rFn4cgyVElQcmQDIZiYsy41k8e5xkrMRECkM2WR8pNw==} peerDependencies: - graphql: 14.x || 15.x || 16.x + graphql: 16.6.0 dependencies: graphql: 16.6.0 /@apollo/client@3.7.15(graphql@16.6.0): resolution: {integrity: sha512-pLScjo4GAQRWKWyEg2J3FlQr9fbUAuADT0EI2+JlLf2BjaU9I7WUaZVD9w+0qNPE8BZqs53MRQq0OCm1QCW+eg==} peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 + graphql: 16.6.0 graphql-ws: ^5.5.5 react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -2232,7 +2255,7 @@ packages: /@apollo/client@3.8.2(graphql@16.6.0): resolution: {integrity: sha512-SSxRTHlHdlR65mvV5j5e3JkYs9z/eFQfJPgSfqTeKa3jgHKofBaMb+UWxJPInqV5MqBFAkPFt8fYEBZwM7oGZA==} peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 + graphql: 16.6.0 graphql-ws: ^5.5.5 react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 @@ -2267,7 +2290,7 @@ packages: resolution: {integrity: sha512-sAVJwv1YJpqbZzS8E1IFItXsiJPag57g3hvwj8n/sn5LGgRRSS05WxhQl7U3NJEjwD0+4LpXqGrIvpCcRFLsvQ==} engines: {node: '>=14.15.0'} peerDependencies: - graphql: ^16.5.0 + graphql: 16.6.0 dependencies: '@apollo/federation-internals': 2.4.0(graphql@16.6.0) '@apollo/query-graphs': 2.4.0(graphql@16.6.0) @@ -2278,7 +2301,7 @@ packages: resolution: {integrity: sha512-eXRTG6J5ywwXsWgP0Wgic4zeBXO8jBBvI0FM4t/gay4DI+1zEL5qmoF2HN/jFik0dnd/ud5kh4djvFLmWEwbeA==} engines: {node: '>=14.15.0'} peerDependencies: - graphql: ^16.5.0 + graphql: 16.6.0 dependencies: '@apollo/federation-internals': 2.4.7(graphql@16.6.0) '@apollo/query-graphs': 2.4.7(graphql@16.6.0) @@ -2288,7 +2311,7 @@ packages: resolution: {integrity: sha512-ovfYwpq3s2LKNvLGg6bxcNlyrCllbF1JhNgQEOEOeAoy3TTmnYuxqd00H3bkT/5xpXvMpBc6+Di6qMkYcQM+Ww==} engines: {node: '>=14.15.0'} peerDependencies: - graphql: ^16.5.0 + graphql: 16.6.0 dependencies: '@types/uuid': 9.0.1 chalk: 4.1.2 @@ -2300,7 +2323,7 @@ packages: resolution: {integrity: sha512-a4iH+72yVd0zNGC5ZGEDfbqI81wktE7qAHjH4rQzJTqMQ74By3PoMD2DefOArcweonvd4b/h4oQJXGvLK2V4Ew==} engines: {node: '>=14.15.0'} peerDependencies: - graphql: ^16.5.0 + graphql: 16.6.0 dependencies: '@types/uuid': 9.0.1 chalk: 4.1.2 @@ -2312,7 +2335,7 @@ packages: resolution: {integrity: sha512-Jt1HiFwe94AfjVj1h53GRwz26Bfp6Y0+yyHQ6/CqEJxQWbAHvEiBFKpzwFQQF9O/OshZx8oedmuAXA6RSFRxSg==} engines: {node: '>=14.15.0'} peerDependencies: - graphql: ^16.5.0 + graphql: 16.6.0 dependencies: '@apollo/composition': 2.4.0(graphql@16.6.0) '@apollo/federation-internals': 2.4.0(graphql@16.6.0) @@ -2343,7 +2366,7 @@ packages: resolution: {integrity: sha512-ZcqSJEUxVJqqPKJ97q72Hyp0YEQfHW+oCRP9osF6XKkrGX1C7nxLm6EzO261+m1bUwkdtjk5CLfXxa9yxIDRdA==} engines: {node: '>=14.15.0'} peerDependencies: - graphql: ^16.5.0 + graphql: 16.6.0 dependencies: '@apollo/composition': 2.4.7(graphql@16.6.0) '@apollo/federation-internals': 2.4.7(graphql@16.6.0) @@ -2411,7 +2434,7 @@ packages: resolution: {integrity: sha512-xyixv288KQ1/qeRbGayNN+4kbv0oHCZV/iLTu1x/Vb5iZTD0LPlMar2rh7ffGLoCmLLAzP+65le0wRXU581hHQ==} engines: {node: '>=14.15.0'} peerDependencies: - graphql: ^16.5.0 + graphql: 16.6.0 dependencies: '@apollo/federation-internals': 2.4.0(graphql@16.6.0) deep-equal: 2.0.5 @@ -2424,7 +2447,7 @@ packages: resolution: {integrity: sha512-LLoY0GgP3mcF+8zp3cf701ixHrsFh1WH1R8HPtO0NOgArmVMTl0bvsEHzFqUNdMd/PcU2b9SMcCmPwN7dKRs+A==} engines: {node: '>=14.15.0'} peerDependencies: - graphql: ^16.5.0 + graphql: 16.6.0 dependencies: '@apollo/federation-internals': 2.4.7(graphql@16.6.0) deep-equal: 2.0.5 @@ -2436,7 +2459,7 @@ packages: resolution: {integrity: sha512-sVBHJ5SW32w6YdeAJCcB23ct5sb/myhv7ebbr9tObmncBR/QOj0n45XyJGXPC3LP8J3h3ICVWehNXDFyV2wOHQ==} engines: {node: '>=14.15.0'} peerDependencies: - graphql: ^16.5.0 + graphql: 16.6.0 dependencies: '@apollo/federation-internals': 2.4.0(graphql@16.6.0) '@apollo/query-graphs': 2.4.0(graphql@16.6.0) @@ -2451,7 +2474,7 @@ packages: resolution: {integrity: sha512-0fTA1W5NKtfxLq5+GY9ORPSQB/MRH1xOt3SbSS8o9yhR9GKzzE3yYNc88HgYAe2lfdDOesCME2t1kKrE76uzdA==} engines: {node: '>=14.15.0'} peerDependencies: - graphql: ^16.5.0 + graphql: 16.6.0 dependencies: '@apollo/federation-internals': 2.4.7(graphql@16.6.0) '@apollo/query-graphs': 2.4.7(graphql@16.6.0) @@ -2464,7 +2487,7 @@ packages: /@apollo/server-gateway-interface@1.1.0(graphql@16.6.0): resolution: {integrity: sha512-0rhG++QtGfr4YhhIHgxZ9BdMFthaPY6LbhI9Au90osbfLMiZ7f8dmZsEX1mp7O1h8MJwCu6Dp0I/KcGbSvfUGA==} peerDependencies: - graphql: 14.x || 15.x || 16.x + graphql: 16.6.0 dependencies: '@apollo/usage-reporting-protobuf': 4.1.0 '@apollo/utils.fetcher': 2.0.0 @@ -2477,7 +2500,7 @@ packages: engines: {node: '>=14.16.0'} requiresBuild: true peerDependencies: - graphql: ^16.6.0 + graphql: 16.6.0 dependencies: '@apollo/cache-control-types': 1.0.2(graphql@16.6.0) '@apollo/server-gateway-interface': 1.1.0(graphql@16.6.0) @@ -2516,7 +2539,7 @@ packages: resolution: {integrity: sha512-/njjzPkyzkh0FO2WvLV+I9mlsDWk3DhfOtCc+cmMx9p4mixgyyaRvYvx3tPjSPkMvkPw/cNidCVymuWJVOAu5A==} engines: {node: '>=14.15.0'} peerDependencies: - graphql: ^16.5.0 + graphql: 16.6.0 dependencies: '@apollo/cache-control-types': 1.0.2(graphql@16.6.0) '@apollo/federation-internals': 2.4.0(graphql@16.6.0) @@ -2539,7 +2562,7 @@ packages: engines: {node: '>=14'} requiresBuild: true peerDependencies: - graphql: 14.x || 15.x || 16.x + graphql: 16.6.0 dependencies: graphql: 16.6.0 dev: false @@ -2580,7 +2603,7 @@ packages: engines: {node: '>=14'} requiresBuild: true peerDependencies: - graphql: 14.x || 15.x || 16.x + graphql: 16.6.0 dependencies: graphql: 16.6.0 dev: false @@ -2591,7 +2614,7 @@ packages: engines: {node: '>=14'} requiresBuild: true peerDependencies: - graphql: 14.x || 15.x || 16.x + graphql: 16.6.0 dependencies: graphql: 16.6.0 dev: false @@ -2602,7 +2625,7 @@ packages: engines: {node: '>=14'} requiresBuild: true peerDependencies: - graphql: 14.x || 15.x || 16.x + graphql: 16.6.0 dependencies: graphql: 16.6.0 lodash.sortby: 4.7.0 @@ -2614,7 +2637,7 @@ packages: engines: {node: '>=14'} requiresBuild: true peerDependencies: - graphql: 14.x || 15.x || 16.x + graphql: 16.6.0 dependencies: graphql: 16.6.0 dev: false @@ -2625,7 +2648,7 @@ packages: engines: {node: '>=14'} requiresBuild: true peerDependencies: - graphql: 14.x || 15.x || 16.x + graphql: 16.6.0 dependencies: '@apollo/usage-reporting-protobuf': 4.1.0 '@apollo/utils.dropunuseddefinitions': 2.0.0(graphql@16.6.0) @@ -2661,7 +2684,7 @@ packages: resolution: {integrity: sha512-9anThAaj1dQr6IGmzBMcfzOQKTa5artjuPmw8NYK/fiGEMjADbSguBY2FMDykt+QhilR3wc9VA/3yVju7JHg7Q==} hasBin: true peerDependencies: - graphql: '*' + graphql: 16.6.0 dependencies: '@babel/core': 7.22.1 '@babel/generator': 7.23.5 @@ -6366,8 +6389,8 @@ packages: engines: {node: '>=18.0.0'} peerDependencies: '@apollo/gateway': ^0.54.0 - '@envelop/core': ^5.0.0 - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 + '@envelop/core': 4.0.0 + graphql: 16.6.0 dependencies: '@apollo/gateway': 2.4.0(graphql@16.6.0) '@envelop/core': 4.0.0 @@ -6379,16 +6402,16 @@ packages: - encoding dev: false - /@envelop/apollo-federation@5.0.0(@apollo/gateway@2.4.7)(@envelop/core@5.0.0)(graphql@16.6.0): + /@envelop/apollo-federation@5.0.0(@apollo/gateway@2.4.7)(@envelop/core@4.0.0)(graphql@16.6.0): resolution: {integrity: sha512-mbe0bqn6mv9WVs5Kk4+IWRZuvxfzjkmuJliAuFJjUuIOn1pMUeCAzjhDTWCHEeCnS0s+TcCtKGFOdAfNtuxbvA==} engines: {node: '>=18.0.0'} peerDependencies: '@apollo/gateway': ^0.54.0 - '@envelop/core': ^5.0.0 - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 + '@envelop/core': 4.0.0 + graphql: 16.6.0 dependencies: '@apollo/gateway': 2.4.7(graphql@16.6.0) - '@envelop/core': 5.0.0 + '@envelop/core': 4.0.0 apollo-server-caching: 3.3.0 apollo-server-types: 3.6.3(graphql@16.6.0) graphql: 16.6.0 @@ -6402,50 +6425,42 @@ packages: engines: {node: '>=16.0.0'} dependencies: '@envelop/types': 4.0.0 - tslib: 2.5.3 - - /@envelop/core@5.0.0: - resolution: {integrity: sha512-aJdnH/ptv+cvwfvciCBe7TSvccBwo9g0S5f6u35TBVzRVqIGkK03lFlIL+x1cnfZgN9EfR2b1PH2galrT1CdCQ==} - engines: {node: '>=18.0.0'} - dependencies: - '@envelop/types': 5.0.0 tslib: 2.6.2 - dev: false /@envelop/disable-introspection@6.0.0(@envelop/core@4.0.0)(graphql@16.6.0): resolution: {integrity: sha512-+DxCvKdzsHat/aWr6dqDsebbGk6ZGiM7VZlnpwKS8g4+PDHg7AfMBnDP8CtUODgifU+kgZME4TFzU288MNpNDg==} engines: {node: '>=18.0.0'} peerDependencies: - '@envelop/core': ^5.0.0 - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 + '@envelop/core': 4.0.0 + graphql: 16.6.0 dependencies: '@envelop/core': 4.0.0 graphql: 16.6.0 tslib: 2.6.2 dev: true - /@envelop/extended-validation@4.0.0(@envelop/core@5.0.0)(graphql@16.6.0): + /@envelop/extended-validation@4.0.0(@envelop/core@4.0.0)(graphql@16.6.0): resolution: {integrity: sha512-pvJ/OL+C+lpNiiCXezHT+vP3PTq37MQicoOB1l5MdgOOZZWRAp0NDOgvEKcXUY7AWNpvNHgSE0QFSRfGwsfwFQ==} engines: {node: '>=18.0.0'} peerDependencies: - '@envelop/core': ^5.0.0 - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 + '@envelop/core': 4.0.0 + graphql: 16.6.0 dependencies: - '@envelop/core': 5.0.0 + '@envelop/core': 4.0.0 '@graphql-tools/utils': 10.1.1(graphql@16.6.0) graphql: 16.6.0 tslib: 2.6.2 dev: false - /@envelop/generic-auth@7.0.0(@envelop/core@5.0.0)(graphql@16.6.0): + /@envelop/generic-auth@7.0.0(@envelop/core@4.0.0)(graphql@16.6.0): resolution: {integrity: sha512-FxGzoSjIXJlv+aiVyhQ8oHoz41ol4gJe8KAzNX7FP3qrhldbrqcC5Q+J/VtNlo5jXYX0YuLHH6ehF80tQDZJ4Q==} engines: {node: '>=18.0.0'} peerDependencies: - '@envelop/core': ^5.0.0 - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 + '@envelop/core': 4.0.0 + graphql: 16.6.0 dependencies: - '@envelop/core': 5.0.0 - '@envelop/extended-validation': 4.0.0(@envelop/core@5.0.0)(graphql@16.6.0) + '@envelop/core': 4.0.0 + '@envelop/extended-validation': 4.0.0(@envelop/core@4.0.0)(graphql@16.6.0) '@graphql-tools/utils': 10.0.6(graphql@16.6.0) graphql: 16.6.0 tslib: 2.6.2 @@ -6455,39 +6470,24 @@ packages: resolution: {integrity: sha512-+Sfp5DON/krxr4fP1kT6GQeQYqphP2g69CybqAMLRTALCCKs/ZfATvK/Bx+ysPV5K8g/tRwVuDbub1JAuLDxSw==} engines: {node: '>=18.0.0'} peerDependencies: - '@envelop/core': ^5.0.0 - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 - dependencies: '@envelop/core': 4.0.0 graphql: 16.6.0 - graphql-jit: 0.8.4(graphql@16.6.0) - tslib: 2.6.2 - value-or-promise: 1.0.12 - dev: true - - /@envelop/graphql-jit@8.0.0(@envelop/core@5.0.0)(graphql@16.6.0): - resolution: {integrity: sha512-+Sfp5DON/krxr4fP1kT6GQeQYqphP2g69CybqAMLRTALCCKs/ZfATvK/Bx+ysPV5K8g/tRwVuDbub1JAuLDxSw==} - engines: {node: '>=18.0.0'} - peerDependencies: - '@envelop/core': ^5.0.0 - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 dependencies: - '@envelop/core': 5.0.0 + '@envelop/core': 4.0.0 graphql: 16.6.0 graphql-jit: 0.8.4(graphql@16.6.0) tslib: 2.6.2 value-or-promise: 1.0.12 - dev: false - /@envelop/graphql-modules@6.0.0(@envelop/core@5.0.0)(graphql-modules@2.1.2)(graphql@16.6.0): + /@envelop/graphql-modules@6.0.0(@envelop/core@4.0.0)(graphql-modules@2.1.2)(graphql@16.6.0): resolution: {integrity: sha512-U6LoSMFd/eVt/vcI+6cj3OWciPnCTCIz+7Frc+oJ3Bg2utDIba3ngepzQPYb9t2da+AjCw+O2NmBwoUHWH0mAQ==} engines: {node: '>=18.0.0'} peerDependencies: - '@envelop/core': ^5.0.0 - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 + '@envelop/core': 4.0.0 + graphql: 16.6.0 graphql-modules: ^1 || ^2.0.0 dependencies: - '@envelop/core': 5.0.0 + '@envelop/core': 4.0.0 graphql: 16.6.0 graphql-modules: 2.1.2(graphql@16.6.0) tslib: 2.6.2 @@ -6497,79 +6497,62 @@ packages: resolution: {integrity: sha512-rLnSN1B+5zcy3FsWE+16/CMiqjD/LXXcRUXJ0RaXRjzHClpQxgSzrAixNeOmx1vXLff4AgkjOZANJl39rD4dwQ==} engines: {node: '>=18.0.0'} peerDependencies: - '@envelop/core': ^5.0.0 - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 - dependencies: '@envelop/core': 4.0.0 - '@graphql-tools/utils': 10.0.1(graphql@16.6.0) - '@n1ru4l/graphql-live-query': 0.10.0(graphql@16.6.0) - '@n1ru4l/graphql-live-query-patch': 0.7.0(graphql@16.6.0) - '@n1ru4l/in-memory-live-query-store': 0.10.0(graphql@16.6.0) graphql: 16.6.0 - tslib: 2.6.2 - dev: true - - /@envelop/live-query@7.0.0(@envelop/core@5.0.0)(graphql@16.6.0): - resolution: {integrity: sha512-rLnSN1B+5zcy3FsWE+16/CMiqjD/LXXcRUXJ0RaXRjzHClpQxgSzrAixNeOmx1vXLff4AgkjOZANJl39rD4dwQ==} - engines: {node: '>=18.0.0'} - peerDependencies: - '@envelop/core': ^5.0.0 - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 dependencies: - '@envelop/core': 5.0.0 + '@envelop/core': 4.0.0 '@graphql-tools/utils': 10.0.1(graphql@16.6.0) '@n1ru4l/graphql-live-query': 0.10.0(graphql@16.6.0) '@n1ru4l/graphql-live-query-patch': 0.7.0(graphql@16.6.0) '@n1ru4l/in-memory-live-query-store': 0.10.0(graphql@16.6.0) graphql: 16.6.0 tslib: 2.6.2 - dev: false - /@envelop/on-resolve@4.0.0(@envelop/core@5.0.0)(graphql@16.6.0): + /@envelop/on-resolve@4.0.0(@envelop/core@4.0.0)(graphql@16.6.0): resolution: {integrity: sha512-EBGJoaN7eqpDxhH/EFnjx5CgK8d7XKs6/2scuqGmEnVptW+8sicxPdvt5nZielZRT6spRK14ZGWmn2o8qf8GjQ==} engines: {node: '>=18.0.0'} peerDependencies: - '@envelop/core': ^5.0.0 - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 + '@envelop/core': 4.0.0 + graphql: 16.6.0 dependencies: - '@envelop/core': 5.0.0 + '@envelop/core': 4.0.0 graphql: 16.6.0 dev: false - /@envelop/on-resolve@4.1.0(@envelop/core@5.0.0)(graphql@16.6.0): + /@envelop/on-resolve@4.1.0(@envelop/core@4.0.0)(graphql@16.6.0): resolution: {integrity: sha512-2AXxf8jbBIepBUiY0KQtyCO6gnT7LKBEYdaARZBJ7ujy1+iQHQPORKvAwl51kIdD6v5x38eldZnm7A19jFimOg==} engines: {node: '>=18.0.0'} peerDependencies: - '@envelop/core': ^5.0.0 - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 + '@envelop/core': 4.0.0 + graphql: 16.6.0 dependencies: - '@envelop/core': 5.0.0 + '@envelop/core': 4.0.0 graphql: 16.6.0 dev: false - /@envelop/prometheus@9.4.0(@envelop/core@5.0.0)(graphql@16.6.0)(prom-client@15.0.0): + /@envelop/prometheus@9.4.0(@envelop/core@4.0.0)(graphql@16.6.0)(prom-client@15.0.0): resolution: {integrity: sha512-r+BoQhDl/7qV8iZ0jOAumuMw3zi+IiFC5NFtgPSWwf3YFDH9PG1Y4WTh2qi+2GAFp/Z6CPv1TWePs3DHyz3v4w==} engines: {node: '>=18.0.0'} peerDependencies: - '@envelop/core': ^5.0.0 - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 + '@envelop/core': 4.0.0 + graphql: 16.6.0 prom-client: ^15.0.0 dependencies: - '@envelop/core': 5.0.0 - '@envelop/on-resolve': 4.1.0(@envelop/core@5.0.0)(graphql@16.6.0) + '@envelop/core': 4.0.0 + '@envelop/on-resolve': 4.1.0(@envelop/core@4.0.0)(graphql@16.6.0) graphql: 16.6.0 prom-client: 15.0.0 tslib: 2.6.2 dev: false - /@envelop/response-cache@6.1.2(@envelop/core@5.0.0)(graphql@16.6.0): + /@envelop/response-cache@6.1.2(@envelop/core@4.0.0)(graphql@16.6.0): resolution: {integrity: sha512-vBX6z/TxBZSNReVn69VJVkdGHpGzHyeQNMz9LXobczl55KCZaf2inBWguSdGq+vx6PlB068GhLeg+a7kseiF1Q==} engines: {node: '>=18.0.0'} peerDependencies: - '@envelop/core': ^5.0.0 - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 + '@envelop/core': 4.0.0 + graphql: 16.6.0 dependencies: - '@envelop/core': 5.0.0 + '@envelop/core': 4.0.0 '@graphql-tools/utils': 10.1.0(graphql@16.6.0) '@whatwg-node/fetch': 0.9.17 fast-json-stable-stringify: 2.1.0 @@ -6584,13 +6567,6 @@ packages: dependencies: tslib: 2.6.2 - /@envelop/types@5.0.0: - resolution: {integrity: sha512-IPjmgSc4KpQRlO4qbEDnBEixvtb06WDmjKfi/7fkZaryh5HuOmTtixe1EupQI5XfXO8joc3d27uUZ0QdC++euA==} - engines: {node: '>=18.0.0'} - dependencies: - tslib: 2.6.2 - dev: false - /@esbuild-kit/cjs-loader@2.4.2: resolution: {integrity: sha512-BDXFbYOJzT/NBEtp71cvsrGPwGAMGRB/349rwKuoxNSiKjPraNNnlK6MIIabViCjqZugu6j+xeMDlEkWdHHJSg==} dependencies: @@ -7428,7 +7404,7 @@ packages: /@graphiql/plugin-explorer@0.1.4(@codemirror/language@6.0.0)(@types/react@18.2.8)(graphql@16.6.0)(react-dom@18.2.0)(react-is@17.0.2)(react@18.2.0): resolution: {integrity: sha512-sjP2W5mf9ZR/GAMs2kg2NkIa8shGZWFQu6LYHmTjWuOP2V1gTgEAgJYvr36InE1Bj9gnBHQhqGFP9lYjdB6Ncw==} peerDependencies: - graphql: ^15.5.0 || ^16.0.0 + graphql: 16.6.0 react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: @@ -7448,7 +7424,7 @@ packages: /@graphiql/react@0.13.3(patch_hash=yqm362ey3efuxzwgojxfo6tq5i)(@codemirror/language@6.0.0)(@types/react@18.2.8)(graphql@16.6.0)(react-dom@18.2.0)(react-is@17.0.2)(react@18.2.0): resolution: {integrity: sha512-BIOaahIxVHGQjoVbECIiSzEtETZVMyhG83ysVpoFKCVj27KxDbh/Yk9w23L0aYQWuWEU7C02Kzl5gi+Zwx/K3A==} peerDependencies: - graphql: ^15.5.0 || ^16.0.0 + graphql: 16.6.0 react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: @@ -7480,7 +7456,7 @@ packages: /@graphiql/toolkit@0.8.4(graphql@16.6.0): resolution: {integrity: sha512-cFUGqh3Dau+SD3Vq9EFlZrhzYfaHKyOJveFtaCR+U5Cn/S68p7oy+vQBIdwtO6J2J58FncnwBbVRfr+IvVfZqQ==} peerDependencies: - graphql: ^15.5.0 || ^16.0.0 + graphql: 16.6.0 graphql-ws: '>= 4.5.0' peerDependenciesMeta: graphql-ws: @@ -7498,7 +7474,7 @@ packages: hasBin: true peerDependencies: '@parcel/watcher': ^2.1.0 - 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 + graphql: 16.6.0 peerDependenciesMeta: '@parcel/watcher': optional: true @@ -7552,7 +7528,7 @@ packages: /@graphql-codegen/core@4.0.0(graphql@16.6.0): resolution: {integrity: sha512-JAGRn49lEtSsZVxeIlFVIRxts2lWObR+OQo7V2LHDJ7ohYYw3ilv7nJ8pf8P4GTg/w6ptcYdSdVVdkI8kUHB/Q==} peerDependencies: - 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 + graphql: 16.6.0 dependencies: '@graphql-codegen/plugin-helpers': 5.0.3(graphql@16.6.0) '@graphql-tools/schema': 10.0.0(graphql@16.6.0) @@ -7564,7 +7540,7 @@ packages: /@graphql-codegen/plugin-helpers@5.0.1(graphql@16.6.0): resolution: {integrity: sha512-6L5sb9D8wptZhnhLLBcheSPU7Tg//DGWgc5tQBWX46KYTOTQHGqDpv50FxAJJOyFVJrveN9otWk9UT9/yfY4ww==} peerDependencies: - 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 + graphql: 16.6.0 dependencies: '@graphql-tools/utils': 10.1.1(graphql@16.6.0) change-case-all: 1.0.15 @@ -7578,7 +7554,7 @@ packages: /@graphql-codegen/plugin-helpers@5.0.3(graphql@16.6.0): resolution: {integrity: sha512-yZ1rpULIWKBZqCDlvGIJRSyj1B2utkEdGmXZTBT/GVayP4hyRYlkd36AJV/LfEsVD8dnsKL5rLz2VTYmRNlJ5Q==} peerDependencies: - 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 + graphql: 16.6.0 dependencies: '@graphql-tools/utils': 10.1.1(graphql@16.6.0) change-case-all: 1.0.15 @@ -7592,7 +7568,7 @@ packages: /@graphql-codegen/schema-ast@4.0.2(graphql@16.6.0): resolution: {integrity: sha512-5mVAOQQK3Oz7EtMl/l3vOQdc2aYClUzVDHHkMvZlunc+KlGgl81j8TLa+X7ANIllqU4fUEsQU3lJmk4hXP6K7Q==} peerDependencies: - 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 + graphql: 16.6.0 dependencies: '@graphql-codegen/plugin-helpers': 5.0.3(graphql@16.6.0) '@graphql-tools/utils': 10.1.1(graphql@16.6.0) @@ -7603,7 +7579,7 @@ packages: /@graphql-codegen/typescript-resolvers@4.0.6(graphql@16.6.0): resolution: {integrity: sha512-7OBFzZ2xSkYgMgcc1A3xNqbBHHSQXBesLrG86Sh+Jj0PQQB3Om8j1HSFs64PD/l5Kri2dXgm3oim/89l3Rl3lw==} peerDependencies: - 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 + graphql: 16.6.0 dependencies: '@graphql-codegen/plugin-helpers': 5.0.3(graphql@16.6.0) '@graphql-codegen/typescript': 4.0.6(graphql@16.6.0) @@ -7620,7 +7596,7 @@ packages: /@graphql-codegen/typescript@4.0.6(graphql@16.6.0): resolution: {integrity: sha512-IBG4N+Blv7KAL27bseruIoLTjORFCT3r+QYyMC3g11uY3/9TPpaUyjSdF70yBe5GIQ6dAgDU+ENUC1v7EPi0rw==} peerDependencies: - graphql: ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + graphql: 16.6.0 dependencies: '@graphql-codegen/plugin-helpers': 5.0.3(graphql@16.6.0) '@graphql-codegen/schema-ast': 4.0.2(graphql@16.6.0) @@ -7636,7 +7612,7 @@ packages: /@graphql-codegen/visitor-plugin-common@5.1.0(graphql@16.6.0): resolution: {integrity: sha512-eamQxtA9bjJqI2lU5eYoA1GbdMIRT2X8m8vhWYsVQVWD3qM7sx/IqJU0kx0J3Vd4/CSd36BzL6RKwksibytDIg==} peerDependencies: - 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 + graphql: 16.6.0 dependencies: '@graphql-codegen/plugin-helpers': 5.0.3(graphql@16.6.0) '@graphql-tools/optimize': 2.0.0(graphql@16.6.0) @@ -7658,7 +7634,7 @@ packages: resolution: {integrity: sha512-axQTbN5+Yxs1rJ6cWQBOfw3AEeC+fvIuZSfJLPLLvFJLj4pUm9fhxey/g6oQZAAQJqKPfw+tLDUQvnfvRK8Kmg==} engines: {node: '>=16.0.0'} peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + graphql: 16.6.0 dependencies: '@ardatan/sync-fetch': 0.0.1 '@graphql-tools/utils': 10.1.1(graphql@16.6.0) @@ -7672,7 +7648,7 @@ packages: /@graphql-tools/batch-execute@8.5.19(graphql@16.6.0): resolution: {integrity: sha512-eqofTMYPygg9wVPdA+p8lk4NBpaPTcDut6SlnDk9IiYdY23Yfo6pY7mzZ3b27GugI7HDtB2OZUxzZJSGsk6Qew==} peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + graphql: 16.6.0 dependencies: '@graphql-tools/utils': 9.2.1(graphql@16.6.0) dataloader: 2.2.2 @@ -7685,7 +7661,7 @@ packages: resolution: {integrity: sha512-lT9/1XmPSYzBcEybXPLsuA6C5E0t8438PVUELABcqdvwHgZ3VOOx29MLBEqhr2oewOlDChH6PXNkfxoOoAuzRg==} engines: {node: '>=16.0.0'} peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + graphql: 16.6.0 dependencies: '@graphql-tools/utils': 10.1.1(graphql@16.6.0) dataloader: 2.2.2 @@ -7697,7 +7673,7 @@ packages: resolution: {integrity: sha512-nq36yQnUVp6Roti+RFatInRogZzbwdFKZK1YBCmP3XpUvoOBbWaHaLKxVE9mU5lb9nL99zKzhq6gfh5syzxjJQ==} engines: {node: '>=16.0.0'} peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + graphql: 16.6.0 dependencies: '@graphql-tools/graphql-tag-pluck': 8.0.0(@babel/core@7.22.1)(graphql@16.6.0) '@graphql-tools/utils': 10.1.1(graphql@16.6.0) @@ -7714,7 +7690,7 @@ packages: resolution: {integrity: sha512-ZW5/7Q0JqUM+guwn8/cM/1Hz16Zvj6WR6r3gnOwoPO7a9bCbe8QTCk4itT/EO+RiGT8RLUPYaunWR9jxfNqqOA==} engines: {node: '>=16.0.0'} peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + graphql: 16.6.0 dependencies: '@graphql-tools/batch-execute': 9.0.0(graphql@16.6.0) '@graphql-tools/executor': 1.2.5(graphql@16.6.0) @@ -7728,7 +7704,7 @@ packages: /@graphql-tools/delegate@9.0.28(graphql@16.6.0): resolution: {integrity: sha512-8j23JCs2mgXqnp+5K0v4J3QBQU/5sXd9miaLvMfRf/6963DznOXTECyS9Gcvj1VEeR5CXIw6+aX/BvRDKDdN1g==} peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + graphql: 16.6.0 dependencies: '@graphql-tools/batch-execute': 8.5.19(graphql@16.6.0) '@graphql-tools/executor': 0.0.15(graphql@16.6.0) @@ -7745,7 +7721,7 @@ packages: engines: {node: '>=16.0.0'} peerDependencies: '@apollo/client': ^3.5.9 - graphql: ^15.2.0 || ^16.0.0 + graphql: 16.6.0 dependencies: '@apollo/client': 3.7.15(graphql@16.6.0) '@graphql-tools/utils': 10.0.1(graphql@16.6.0) @@ -7757,7 +7733,7 @@ packages: resolution: {integrity: sha512-voczXmNcEzZKk6dS4pCwN0XCXvDiAVm9rj+54oz7X04IsHBJmTUul1YhCbJie1xUvN1jmgEJ14lfD92tMMMTmQ==} engines: {node: '>=16.0.0'} peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + graphql: 16.6.0 dependencies: '@graphql-tools/utils': 10.1.1(graphql@16.6.0) '@repeaterjs/repeater': 3.0.4 @@ -7775,7 +7751,7 @@ packages: resolution: {integrity: sha512-lSoPFWrGU6XT9nGGBogUI8bSOtP0yce2FhXTrU5akMZ35BDCNWbkmgryzRhxoAH/yDOaZtKkHQB3xrYX3uo5zA==} engines: {node: '>=16.0.0'} peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + graphql: 16.6.0 dependencies: '@graphql-tools/utils': 10.0.6(graphql@16.6.0) '@repeaterjs/repeater': 3.0.4 @@ -7792,7 +7768,7 @@ packages: resolution: {integrity: sha512-roQyDLOAywyaCTPOhwXiT/WDr0bfuVhqOXjECsnrIl/1TMPDUYjiT2sW6Gz6pqnYMmokdhyvlV6D5d7WtIrKsA==} engines: {node: '>=16.0.0'} peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + graphql: 16.6.0 dependencies: '@graphql-tools/utils': 10.1.1(graphql@16.6.0) '@repeaterjs/repeater': 3.0.4 @@ -7809,7 +7785,7 @@ packages: resolution: {integrity: sha512-8c0wlhYz7G6imuWqHqjpveflN8IVL3gXIxel5lzpAvPvxsSXpiNig3jADkIBB+eaxzR9R1lbwxqonxPUGI4CdQ==} engines: {node: '>=16.0.0'} peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + graphql: 16.6.0 dependencies: '@graphql-tools/utils': 10.1.1(graphql@16.6.0) '@types/ws': 8.5.4 @@ -7826,7 +7802,7 @@ packages: engines: {node: '>=16.0.0'} peerDependencies: '@urql/core': ^3.0.0 || ^4.0.0 - graphql: ^15.2.0 || ^16.0.0 + graphql: 16.6.0 wonka: ^6.0.0 dependencies: '@graphql-tools/utils': 10.0.1(graphql@16.6.0) @@ -7839,7 +7815,7 @@ packages: /@graphql-tools/executor@0.0.15(graphql@16.6.0): resolution: {integrity: sha512-6U7QLZT8cEUxAMXDP4xXVplLi6RBwx7ih7TevlBto66A/qFp3PDb6o/VFo07yBKozr8PGMZ4jMfEWBGxmbGdxA==} peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + graphql: 16.6.0 dependencies: '@graphql-tools/utils': 9.2.1(graphql@16.6.0) '@graphql-typed-document-node/core': 3.1.2(graphql@16.6.0) @@ -7853,7 +7829,7 @@ packages: resolution: {integrity: sha512-s7sW4K3BUNsk9sjq+vNicwb9KwcR3G55uS/CI8KZQ4x0ZdeYMIwpeU9MVeORCCpHuQyTaV+/VnO0hFrS/ygzsg==} engines: {node: '>=16.0.0'} peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + graphql: 16.6.0 dependencies: '@graphql-tools/utils': 10.1.1(graphql@16.6.0) '@graphql-typed-document-node/core': 3.2.0(graphql@16.6.0) @@ -7866,7 +7842,7 @@ packages: resolution: {integrity: sha512-0QAzWywOdWC4vozYFi4OuAxv1QvHo6PwLY+D8DCQn+knxWZAsJe86SESxBkQ5R03yHFWPaiBVWKDB+lxxgC7Uw==} engines: {node: '>=16.0.0'} peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + graphql: 16.6.0 dependencies: '@graphql-tools/graphql-tag-pluck': 8.0.0(@babel/core@7.22.1)(graphql@16.6.0) '@graphql-tools/utils': 10.1.1(graphql@16.6.0) @@ -7884,7 +7860,7 @@ packages: resolution: {integrity: sha512-VuroArWKcG4yaOWzV0r19ElVIV6iH6UKDQn1MXemND0xu5TzrFme0kf3U9o0YwNo0kUYEk9CyFM0BYg4he17FA==} engines: {node: '>=16.0.0'} peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + graphql: 16.6.0 dependencies: '@ardatan/sync-fetch': 0.0.1 '@graphql-tools/executor-http': 1.0.4(@types/node@18.16.16)(graphql@16.6.0) @@ -7905,7 +7881,7 @@ packages: resolution: {integrity: sha512-wRXj9Z1IFL3+zJG1HWEY0S4TXal7+s1vVhbZva96MSp0kbb/3JBF7j0cnJ44Eq0ClccMgGCDFqPFXty4JlpaPg==} engines: {node: '>=16.0.0'} peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + graphql: 16.6.0 dependencies: '@graphql-tools/import': 7.0.0(graphql@16.6.0) '@graphql-tools/utils': 10.1.1(graphql@16.6.0) @@ -7919,7 +7895,7 @@ packages: resolution: {integrity: sha512-/xFXF7RwWf1UDAnUN/984Q1clRxRcWwO7lxi+BDzuwN14DJb424FVAmFOroBeeFWQNdj8qtNGLWhAbx23khvHQ==} engines: {node: '>=16.0.0'} peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + graphql: 16.6.0 dependencies: '@babel/parser': 7.23.5 '@babel/plugin-syntax-import-assertions': 7.20.0(@babel/core@7.22.1) @@ -7937,7 +7913,7 @@ packages: resolution: {integrity: sha512-NVZiTO8o1GZs6OXzNfjB+5CtQtqsZZpQOq+Uu0w57kdUkT4RlQKlwhT8T81arEsbV55KpzkpFsOZP7J1wdmhBw==} engines: {node: '>=16.0.0'} peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + graphql: 16.6.0 dependencies: '@graphql-tools/utils': 10.1.1(graphql@16.6.0) graphql: 16.6.0 @@ -7949,7 +7925,7 @@ packages: resolution: {integrity: sha512-ki6EF/mobBWJjAAC84xNrFMhNfnUFD6Y0rQMGXekrUgY0NdeYXHU0ZUgHzC9O5+55FslqUmAUHABePDHTyZsLg==} engines: {node: '>=16.0.0'} peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + graphql: 16.6.0 dependencies: '@graphql-tools/utils': 10.1.1(graphql@16.6.0) globby: 11.1.0 @@ -7962,7 +7938,7 @@ packages: resolution: {integrity: sha512-P98amERIwI7FD8Bsq6xUbz9Mj63W8qucfrE/WQjad5jFMZYdFFt46a99FFdfx8S/ZYgpAlj/AZbaTtWLitMgNQ==} engines: {node: '>=16.0.0'} peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + graphql: 16.6.0 dependencies: globby: 11.1.0 graphql: 16.6.0 @@ -7974,7 +7950,7 @@ packages: resolution: {integrity: sha512-Cy874bQJH0FP2Az7ELPM49iDzOljQmK1PPH6IuxsWzLSTxwTqd8dXA09dcVZrI7/LsN26heTY2R8q2aiiv0GxQ==} engines: {node: '>=16.0.0'} peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + graphql: 16.6.0 dependencies: '@graphql-tools/schema': 10.0.0(graphql@16.6.0) '@graphql-tools/utils': 10.1.1(graphql@16.6.0) @@ -7986,7 +7962,7 @@ packages: /@graphql-tools/merge@8.4.0(graphql@16.6.0): resolution: {integrity: sha512-3XYCWe0d3I4F1azNj1CdShlbHfTIfiDgj00R9uvFH8tHKh7i1IWN3F7QQYovcHKhayaR6zPok3YYMESYQcBoaA==} peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + graphql: 16.6.0 dependencies: '@graphql-tools/utils': 9.2.1(graphql@16.6.0) graphql: 16.6.0 @@ -7996,7 +7972,7 @@ packages: /@graphql-tools/merge@8.4.2(graphql@16.6.0): resolution: {integrity: sha512-XbrHAaj8yDuINph+sAfuq3QCZ/tKblrTLOpirK0+CAgNlZUCHs0Fa+xtMUURgwCVThLle1AF7svJCxFizygLsw==} peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + graphql: 16.6.0 dependencies: '@graphql-tools/utils': 9.2.1(graphql@16.6.0) graphql: 16.6.0 @@ -8007,7 +7983,7 @@ packages: resolution: {integrity: sha512-J7/xqjkGTTwOJmaJQJ2C+VDBDOWJL3lKrHJN4yMaRLAJH3PosB7GiPRaSDZdErs0+F77sH2MKs2haMMkywzx7Q==} engines: {node: '>=16.0.0'} peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + graphql: 16.6.0 dependencies: '@graphql-tools/utils': 10.1.1(graphql@16.6.0) graphql: 16.6.0 @@ -8017,7 +7993,7 @@ packages: resolution: {integrity: sha512-nhdT+CRGDZ+bk68ic+Jw1OZ99YCDIKYA5AlVAnBHJvMawSx9YQqQAIj4refNc1/LRieGiuWvhbG3jvPVYho0Dg==} engines: {node: '>=16.0.0'} peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + graphql: 16.6.0 dependencies: graphql: 16.6.0 tslib: 2.6.2 @@ -8027,7 +8003,7 @@ packages: resolution: {integrity: sha512-AvvVFj+E+e8kG5QaVcitLTr7VZOa5CmvJ8HwlZslmg9OD1qoVDvhroGoR5/3y5e6n1xUjCWlO1xoo3QBseMuSw==} engines: {node: '>=16.0.0'} peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + graphql: 16.6.0 dependencies: '@graphql-tools/url-loader': 8.0.1(@types/node@18.16.16)(graphql@16.6.0) '@graphql-tools/utils': 10.1.1(graphql@16.6.0) @@ -8060,7 +8036,7 @@ packages: resolution: {integrity: sha512-UNlJi5y3JylhVWU4MBpL0Hun4Q7IoJwv9xYtmAz+CgRa066szzY7dcuPfxrA7cIGgG/Q6TVsKsYaiF4OHPs1Fw==} engines: {node: '>=16.0.0'} peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + graphql: 16.6.0 dependencies: '@ardatan/relay-compiler': 12.0.0(graphql@16.6.0) '@graphql-tools/utils': 10.1.1(graphql@16.6.0) @@ -8075,7 +8051,7 @@ packages: resolution: {integrity: sha512-kf3qOXMFcMs2f/S8Y3A8fm/2w+GaHAkfr3Gnhh2LOug/JgpY/ywgFVxO3jOeSpSEdoYcDKLcXVjMigNbY4AdQg==} engines: {node: '>=16.0.0'} peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + graphql: 16.6.0 dependencies: '@graphql-tools/merge': 9.0.0(graphql@16.6.0) '@graphql-tools/utils': 10.0.1(graphql@16.6.0) @@ -8086,7 +8062,7 @@ packages: /@graphql-tools/schema@9.0.17(graphql@16.6.0): resolution: {integrity: sha512-HVLq0ecbkuXhJlpZ50IHP5nlISqH2GbNgjBJhhRzHeXhfwlUOT4ISXGquWTmuq61K0xSaO0aCjMpxe4QYbKTng==} peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + graphql: 16.6.0 dependencies: '@graphql-tools/merge': 8.4.0(graphql@16.6.0) '@graphql-tools/utils': 9.2.1(graphql@16.6.0) @@ -8098,7 +8074,7 @@ packages: /@graphql-tools/schema@9.0.19(graphql@16.6.0): resolution: {integrity: sha512-oBRPoNBtCkk0zbUsyP4GaIzCt8C0aCI4ycIRUL67KK5pOHljKLBBtGT+Jr6hkzA74C8Gco8bpZPe7aWFjiaK2w==} peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + graphql: 16.6.0 dependencies: '@graphql-tools/merge': 8.4.2(graphql@16.6.0) '@graphql-tools/utils': 9.2.1(graphql@16.6.0) @@ -8111,7 +8087,7 @@ packages: resolution: {integrity: sha512-rPc9oDzMnycvz+X+wrN3PLrhMBQkG4+sd8EzaFN6dypcssiefgWKToXtRKI8HHK68n2xEq1PyrOpkjHFJB+GwA==} engines: {node: '>=16.0.0'} peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + graphql: 16.6.0 dependencies: '@ardatan/sync-fetch': 0.0.1 '@graphql-tools/delegate': 10.0.0(graphql@16.6.0) @@ -8138,7 +8114,7 @@ packages: resolution: {integrity: sha512-B2k8KQEkEQmfV1zhurT5GLoXo8jbXP+YQHUayhCSxKYlRV7j/1Fhp1b21PDM8LXIDGlDRXaZ0FbWKOs7eYXDuQ==} engines: {node: '>=16.0.0'} peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + graphql: 16.6.0 dependencies: '@ardatan/sync-fetch': 0.0.1 '@graphql-tools/delegate': 10.0.0(graphql@16.6.0) @@ -8164,7 +8140,7 @@ packages: resolution: {integrity: sha512-ndBPc6zgR+eGU/jHLpuojrs61kYN3Z89JyMLwK3GCRkPv4EQn9EOr1UWqF1JO0iM+/jAVHY0mvfUxyrFFN9DUQ==} engines: {node: '>=16.0.0'} peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + graphql: 16.6.0 dependencies: '@graphql-typed-document-node/core': 3.2.0(graphql@16.6.0) graphql: 16.6.0 @@ -8175,7 +8151,7 @@ packages: resolution: {integrity: sha512-i1FozbDGHgdsFA47V/JvQZ0FE8NAy0Eiz7HGCJO2MkNdZAKNnwei66gOq0JWYVFztwpwbVQ09GkKhq7Kjcq5Cw==} engines: {node: '>=16.0.0'} peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + graphql: 16.6.0 dependencies: '@graphql-typed-document-node/core': 3.2.0(graphql@16.6.0) graphql: 16.6.0 @@ -8185,7 +8161,7 @@ packages: resolution: {integrity: sha512-hZMjl/BbX10iagovakgf3IiqArx8TPsotq5pwBld37uIX1JiZoSbgbCIFol7u55bh32o6cfDEiiJgfAD5fbeyQ==} engines: {node: '>=16.0.0'} peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + graphql: 16.6.0 dependencies: '@graphql-typed-document-node/core': 3.2.0(graphql@16.6.0) dset: 3.1.2 @@ -8196,7 +8172,7 @@ packages: resolution: {integrity: sha512-wLPqhgeZ9BZJPRoaQbsDN/CtJDPd/L4qmmtPkjI3NuYJ39x+Eqz1Sh34EAGMuDh+xlOHqBwHczkZUpoK9tvzjw==} engines: {node: '>=16.0.0'} peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + graphql: 16.6.0 dependencies: '@graphql-typed-document-node/core': 3.2.0(graphql@16.6.0) cross-inspect: 1.0.0 @@ -8209,7 +8185,7 @@ packages: resolution: {integrity: sha512-1kNkZsND12hPkb+YpuUeTRt8f9ZTGhYOfu23V5Z21HegYDjl1k9eX+Inher/eiHCf1eXCk5rKWL9Liol8MWixA==} engines: {node: '>=16.0.0'} peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + graphql: 16.6.0 dependencies: '@graphql-typed-document-node/core': 3.2.0(graphql@16.6.0) cross-inspect: 1.0.0 @@ -8220,7 +8196,7 @@ packages: /@graphql-tools/utils@8.13.1(graphql@16.6.0): resolution: {integrity: sha512-qIh9yYpdUFmctVqovwMdheVNJqFh+DQNWIhX87FJStfXYnmweBUDATok9fWPleKeFwxnW8IapKmY8m8toJEkAw==} peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + graphql: 16.6.0 dependencies: graphql: 16.6.0 tslib: 2.6.2 @@ -8228,7 +8204,7 @@ packages: /@graphql-tools/utils@9.2.1(graphql@16.6.0): resolution: {integrity: sha512-WUw506Ql6xzmOORlriNrD6Ugx+HjVgYxt9KCXD9mHAak+eaXSwuGGPyE60hy9xaDEoXKBsG7SkG69ybitaVl6A==} peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + graphql: 16.6.0 dependencies: '@graphql-typed-document-node/core': 3.2.0(graphql@16.6.0) graphql: 16.6.0 @@ -8239,7 +8215,7 @@ packages: resolution: {integrity: sha512-HDOeUUh6UhpiH0WPJUQl44ODt1x5pnMUbOJZ7GjTdGQ7LK0AgVt3ftaAQ9duxLkiAtYJmu5YkULirfZGj4HzDg==} engines: {node: '>=16.0.0'} peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + graphql: 16.6.0 dependencies: '@graphql-tools/delegate': 10.0.0(graphql@16.6.0) '@graphql-tools/schema': 10.0.0(graphql@16.6.0) @@ -8251,7 +8227,7 @@ packages: /@graphql-tools/wrap@9.3.8(graphql@16.6.0): resolution: {integrity: sha512-MGsExYPiILMw4Qff7HcvE9MMSYdjb/tr5IQYJbxJIU4/TrBHox1/smne8HG+Bd7kmDlTTj7nU/Z8sxmoRd0hOQ==} peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 + graphql: 16.6.0 dependencies: '@graphql-tools/delegate': 9.0.28(graphql@16.6.0) '@graphql-tools/schema': 9.0.17(graphql@16.6.0) @@ -8264,7 +8240,7 @@ packages: /@graphql-typed-document-node/core@3.1.2(graphql@16.6.0): resolution: {integrity: sha512-9anpBMM9mEgZN4wr2v8wHJI2/u5TnnggewRN6OlvXTTnuVyoY19X6rOv9XTqKRw6dcGKwZsBi8n0kDE2I5i4VA==} peerDependencies: - 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 + graphql: 16.6.0 dependencies: graphql: 16.6.0 dev: false @@ -8272,7 +8248,7 @@ packages: /@graphql-typed-document-node/core@3.2.0(graphql@16.6.0): resolution: {integrity: sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==} peerDependencies: - 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 + graphql: 16.6.0 dependencies: graphql: 16.6.0 @@ -9394,7 +9370,7 @@ packages: /@mdx-js/react@3.0.1(@types/react@18.2.8)(react@18.2.0): resolution: {integrity: sha512-9ZrPIU4MGf6et1m1ov3zKf+q9+deetI51zprKB1D/z3NOb+rUxxtEl3mCjW5wTGh6VhRdwPueh1oRzi6ezkA8A==} peerDependencies: - '@types/react': '>=16' + '@types/react': 18.2.8 react: '>=16' dependencies: '@types/mdx': 2.0.3 @@ -9405,7 +9381,7 @@ packages: /@n1ru4l/graphql-live-query-patch@0.7.0(graphql@16.6.0): resolution: {integrity: sha512-1q49iNxqEIbmUp+qFAEVEn4ts344Cw72g5OtAuFeTwKtJT3V91kTPGMcRk5Pxb5FPHbvn52q+PCVKOAyVrtPwQ==} peerDependencies: - graphql: ^15.4.0 || ^16.0.0 + graphql: 16.6.0 dependencies: '@repeaterjs/repeater': 3.0.4 graphql: 16.6.0 @@ -9413,14 +9389,14 @@ packages: /@n1ru4l/graphql-live-query@0.10.0(graphql@16.6.0): resolution: {integrity: sha512-qZ7OHH/NB0NcG/Xa7irzgjE63UH0CkofZT0Bw4Ko6iRFagPRHBM8RgFXwTt/6JbFGIEUS4STRtaFoc/Eq/ZtzQ==} peerDependencies: - graphql: ^15.4.0 || ^16.0.0 + graphql: 16.6.0 dependencies: graphql: 16.6.0 /@n1ru4l/in-memory-live-query-store@0.10.0(graphql@16.6.0): resolution: {integrity: sha512-pt7bZgTPz9dk7ceoOp76KIbVFFlAPe0e5A07UiZ19fQy3JPvvoLRdjmnKbUh3VsEUUh8MyytFcFRguaeiidAYA==} peerDependencies: - graphql: ^15.4.0 || ^16.0.0 + graphql: 16.6.0 dependencies: '@graphql-tools/utils': 8.13.1(graphql@16.6.0) '@n1ru4l/graphql-live-query': 0.10.0(graphql@16.6.0) @@ -9735,7 +9711,7 @@ packages: '@nestjs/core': ^9.3.8 || ^10.0.0 class-transformer: '*' class-validator: '*' - graphql: ^16.6.0 + graphql: 16.6.0 reflect-metadata: ^0.1.13 ts-morph: ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 peerDependenciesMeta: @@ -9780,7 +9756,7 @@ packages: '@nestjs/core': ^9.3.8 || ^10.0.0 class-transformer: '*' class-validator: '*' - graphql: ^16.6.0 + graphql: 16.6.0 reflect-metadata: ^0.1.13 ts-morph: ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 peerDependenciesMeta: @@ -9827,7 +9803,7 @@ packages: '@nestjs/core': ^9.3.8 || ^10.0.0 class-transformer: '*' class-validator: '*' - graphql: ^16.6.0 + graphql: 16.6.0 reflect-metadata: ^0.1.13 ts-morph: ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 peerDependenciesMeta: @@ -11948,7 +11924,7 @@ packages: /@pothos/core@3.30.0(graphql@16.6.0): resolution: {integrity: sha512-ZUL2YTv3ODeKBkhkVcEO03lcERdqQaG2zfylNpkrY9ryAIhOuN9Pbo+VnfqhqEQx7jM/56Rro7i9AuhzF0Q3tA==} peerDependencies: - graphql: '>=15.1.0' + graphql: 16.6.0 dependencies: graphql: 16.6.0 dev: false @@ -14829,7 +14805,7 @@ packages: engines: {node: '>=12.0'} deprecated: The `apollo-server-types` package is part of Apollo Server v2 and v3, which are now deprecated (end-of-life October 22nd 2023 and October 22nd 2024, respectively). This package's functionality is now found in the `@apollo/server` package. See https://www.apollographql.com/docs/apollo-server/previous-versions/ for more details. peerDependencies: - graphql: ^15.3.0 || ^16.0.0 + graphql: 16.6.0 dependencies: '@apollo/utils.keyvaluecache': 1.0.1 '@apollo/utils.logger': 1.0.1 @@ -16730,7 +16706,7 @@ packages: peerDependencies: '@codemirror/language': 6.0.0 codemirror: ^5.65.3 - graphql: ^15.5.0 || ^16.0.0 + graphql: 16.6.0 dependencies: '@codemirror/language': 6.0.0 '@types/codemirror': 0.0.90 @@ -21311,7 +21287,7 @@ packages: /graphiql-explorer@0.9.0(graphql@16.6.0)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-fZC/wsuatqiQDO2otchxriFO0LaWIo/ovF/CQJ1yOudmY0P7pzDiP+l9CEHUiWbizk3e99x6DQG4XG1VxA+d6A==} peerDependencies: - graphql: ^0.6.0 || ^0.7.0 || ^0.8.0-b || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 + graphql: 16.6.0 react: ^15.6.0 || ^16.0.0 react-dom: ^15.6.0 || ^16.0.0 dependencies: @@ -21323,7 +21299,7 @@ packages: /graphiql@2.0.7(@codemirror/language@6.0.0)(@types/react@18.2.8)(graphql@16.6.0)(react-dom@18.2.0)(react-is@17.0.2)(react@18.2.0): resolution: {integrity: sha512-vHZeCS+KKbMQAWJ0CDdnCPmVOG0d48BeoZJjBlm2H5WlCpNjVMm0WVpfL7dG3aP4k+eF+800sMpUx3VVFt7LYw==} peerDependencies: - graphql: ^15.5.0 || ^16.0.0 + graphql: 16.6.0 react: ^16.8.0 || ^17.0.0 || ^18.0.0 react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 dependencies: @@ -21348,7 +21324,7 @@ packages: engines: {node: '>= 16.0.0'} peerDependencies: cosmiconfig-toml-loader: ^1.0.0 - graphql: ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + graphql: 16.6.0 peerDependenciesMeta: cosmiconfig-toml-loader: optional: true @@ -21376,7 +21352,7 @@ packages: resolution: {integrity: sha512-r2sIo6jCTQi1aj7s+Srg7oU3+r5pUUgxgDD5JDZOmFzrbXVGz+yMhIKhvqW0cV10DcnVIFCOzuFuc1qvnjJ7yQ==} engines: {node: '>=12'} peerDependencies: - graphql: '>=0.11 <=16' + graphql: 16.6.0 dependencies: graphql: 16.6.0 dev: true @@ -21384,7 +21360,7 @@ packages: /graphql-jit@0.8.4(graphql@16.6.0): resolution: {integrity: sha512-4KRrJ1ROy3Usgbl3eAoUMfdfZCRjkcw9cCGT7QwTUIHm9dPGaSaldxzGUttyjErU0rsYEb6WWyb6mMh5r6lEoQ==} peerDependencies: - graphql: '>=15' + graphql: 16.6.0 dependencies: '@graphql-typed-document-node/core': 3.2.0(graphql@16.6.0) fast-json-stringify: 5.7.0 @@ -21398,7 +21374,7 @@ packages: resolution: {integrity: sha512-APffigZ/l2me6soek+Yq5Us3HBwmfw4vns4QoqsTePXkK3knVO8rn0uAC6PmTyglb1pmFFPbYaRIzW4wmcnnGQ==} hasBin: true peerDependencies: - graphql: ^15.5.0 || ^16.0.0 + graphql: 16.6.0 dependencies: graphql: 16.6.0 nullthrows: 1.1.1 @@ -21409,7 +21385,7 @@ packages: resolution: {integrity: sha512-o/ZgTS0pBxWm3hSF4+6GwiV1//DxzoLWEbS38+jqpzzy1d/QXBidwQuVYTOksclbtOJZ3KR/tZ8fi/tI6VpVMg==} hasBin: true peerDependencies: - graphql: ^15.5.0 || ^16.0.0 + graphql: 16.6.0 dependencies: graphql: 16.6.0 nullthrows: 1.1.1 @@ -21419,7 +21395,7 @@ packages: /graphql-modules@2.1.2(graphql@16.6.0): resolution: {integrity: sha512-GWxPom0iv4TXyLkuPqEHdRtJRdWCrUOGRMpXWmly1eY2T2MKAdCNya5iY/Ezb3d0Z2BzQBRUXdOgdkFPe2UDjg==} peerDependencies: - graphql: ^14.0.0 || ^15.0.0 || ^16.0.0 + graphql: 16.6.0 dependencies: '@graphql-tools/schema': 9.0.19(graphql@16.6.0) '@graphql-tools/wrap': 9.3.8(graphql@16.6.0) @@ -21431,7 +21407,7 @@ packages: /graphql-request@6.1.0(graphql@16.6.0): resolution: {integrity: sha512-p+XPfS4q7aIpKVcgmnZKhMNqhltk20hfXtkaIkTfjjmiKMJ5xrt5c743cL03y/K7y1rg3WrIC49xGiEQ4mxdNw==} peerDependencies: - graphql: 14 - 16 + graphql: 16.6.0 dependencies: '@graphql-typed-document-node/core': 3.2.0(graphql@16.6.0) cross-fetch: 3.1.5 @@ -21444,7 +21420,7 @@ packages: resolution: {integrity: sha512-my9FB4GtghqXqi/lWSVAOPiTzTnnEzdOXCsAC2bb5V7EFNQjVjwy3cSSbUvgYOtDuDibd+ZsCDhz+4eykYOlhQ==} engines: {node: '>=10'} peerDependencies: - 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 + graphql: 16.6.0 dependencies: graphql: 16.6.0 tslib: 2.5.3 @@ -21454,7 +21430,7 @@ packages: resolution: {integrity: sha512-TTdFwxGM9RY68s22XWyhc+SyQn3PLbELDD2So0K6Cc6EIlBAyPuNV8VlPfNKa/la7gEf2SwHY7JoJplOmOY4LA==} engines: {node: '>=12'} peerDependencies: - graphql: '>=0.11 <=16' + graphql: 16.6.0 dependencies: graphql: 16.6.0 dev: false @@ -21463,7 +21439,7 @@ packages: resolution: {integrity: sha512-NZ4bek4VBlsEDSCnibq9MddbZ2AU4rAusTwUg3sbux4J3WOcZ6zB6Ysrw6rzfJq771wEmwPEMtXPVbOYZnnFUw==} engines: {node: '>=12'} peerDependencies: - graphql: '>=0.11 <=16' + graphql: 16.6.0 dependencies: graphql: 16.6.0 dev: true @@ -21472,7 +21448,7 @@ packages: resolution: {integrity: sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==} engines: {node: '>=10'} peerDependencies: - graphql: ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 + graphql: 16.6.0 dependencies: graphql: 16.6.0 tslib: 2.6.2 @@ -21481,7 +21457,7 @@ packages: resolution: {integrity: sha512-fU8zwSgAX2noXAsuFiCZ8BtXeXZOzXyK5u1LloCdacsVth4skdBMPO74EG51lBoWSIZ8beUocdpV8+cQHBODnQ==} engines: {node: '>=10'} peerDependencies: - graphql: '>=0.11 <=16' + graphql: 16.6.0 dependencies: graphql: 16.6.0 @@ -21489,7 +21465,7 @@ packages: resolution: {integrity: sha512-eiX7ES/ZQr0q7hSM5UBOEIFfaAUmAY9/CSDyAnsETuybByU7l/v46drRg9DQoTvVABEHp3QnrvwgTRMhqy7zxQ==} engines: {node: '>=10'} peerDependencies: - graphql: '>=0.11 <=16' + graphql: 16.6.0 dependencies: graphql: 16.6.0 @@ -27315,7 +27291,7 @@ packages: /nexus@1.3.0(graphql@16.6.0): resolution: {integrity: sha512-w/s19OiNOs0LrtP7pBmD9/FqJHvZLmCipVRt6v1PM8cRUYIbhEswyNKGHVoC4eHZGPSnD+bOf5A3+gnbt0A5/A==} peerDependencies: - graphql: 15.x || 16.x + graphql: 16.6.0 dependencies: graphql: 16.6.0 iterall: 1.3.0 @@ -29744,7 +29720,7 @@ packages: /react-focus-lock@2.9.1(@types/react@18.2.8)(react@18.2.0): resolution: {integrity: sha512-pSWOQrUmiKLkffPO6BpMXN7SNKXMsuOakl652IBuALAu1esk+IcpJyM+ALcYzPTTFz1rD0R54aB9A4HuP5t1Wg==} peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + '@types/react': 18.2.8 react: ^16.8.0 || ^17.0.0 || ^18.0.0 peerDependenciesMeta: '@types/react': @@ -29808,7 +29784,7 @@ packages: resolution: {integrity: sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==} engines: {node: '>=10'} peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + '@types/react': 18.2.8 react: ^16.8.0 || ^17.0.0 || ^18.0.0 peerDependenciesMeta: '@types/react': @@ -29824,7 +29800,7 @@ packages: resolution: {integrity: sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==} engines: {node: '>=10'} peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + '@types/react': 18.2.8 react: ^16.8.0 || ^17.0.0 || ^18.0.0 peerDependenciesMeta: '@types/react': @@ -29843,7 +29819,7 @@ packages: resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} engines: {node: '>=10'} peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + '@types/react': 18.2.8 react: ^16.8.0 || ^17.0.0 || ^18.0.0 peerDependenciesMeta: '@types/react': @@ -31307,9 +31283,9 @@ packages: /sofa-api@0.18.0(graphql@16.6.0): resolution: {integrity: sha512-x1AabBvr91Uvncx3STVZb6jmr2jfZzu/+rzPZuTjmQNC/Q5UMWQLNR85HfGROgIytX6rMzgSq2wfixWVoenNdA==} peerDependencies: - graphql: ^15.0.0 || ^16.0.0 + graphql: 16.6.0 dependencies: - '@graphql-tools/utils': 10.1.0(graphql@16.6.0) + '@graphql-tools/utils': 10.1.1(graphql@16.6.0) '@whatwg-node/fetch': 0.9.17 ansi-colors: 4.1.3 fets: 0.2.0 @@ -31933,7 +31909,7 @@ packages: /subscriptions-transport-ws@0.11.0(graphql@16.6.0): resolution: {integrity: sha512-8D4C6DIH5tGiAIpp5I0wD/xRlNiZAPGHygzCe7VzyzUoxHtawzjNAY9SUTXU05/EY2NMY9/9GF0ycizkXr1CWQ==} peerDependencies: - graphql: ^15.7.2 || ^16.0.0 + graphql: 16.6.0 dependencies: backo2: 1.0.2 eventemitter3: 3.1.2 @@ -33787,7 +33763,7 @@ packages: resolution: {integrity: sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==} engines: {node: '>=10'} peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 + '@types/react': 18.2.8 react: ^16.8.0 || ^17.0.0 || ^18.0.0 peerDependenciesMeta: '@types/react': @@ -33802,7 +33778,7 @@ packages: resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} engines: {node: '>=10'} peerDependencies: - '@types/react': ^16.9.0 || ^17.0.0 || ^18.0.0 + '@types/react': 18.2.8 react: ^16.8.0 || ^17.0.0 || ^18.0.0 peerDependenciesMeta: '@types/react': diff --git a/website/route-lockfile.txt b/website/route-lockfile.txt index 3512515d17..3054e5c4a8 100644 --- a/website/route-lockfile.txt +++ b/website/route-lockfile.txt @@ -23,6 +23,7 @@ /docs/features/persisted-operations /docs/features/request-batching /docs/features/response-caching +/docs/features/root-level-limitation /docs/features/schema /docs/features/sofa-api /docs/features/subscriptions diff --git a/website/src/pages/docs/features/_meta.ts b/website/src/pages/docs/features/_meta.ts index d457841485..eed139d4ff 100644 --- a/website/src/pages/docs/features/_meta.ts +++ b/website/src/pages/docs/features/_meta.ts @@ -9,6 +9,7 @@ export default { 'file-uploads': 'File Uploads', 'defer-stream': 'Defer and Stream', 'request-batching': 'Request Batching', + 'root-level-limitation': 'Root Level Limitation', cors: 'CORS', 'csrf-prevention': 'CSRF Prevention', 'parsing-and-validation-caching': 'Parsing and Validation Caching', diff --git a/website/src/pages/docs/features/root-level-limitation.mdx b/website/src/pages/docs/features/root-level-limitation.mdx new file mode 100644 index 0000000000..fc6078257b --- /dev/null +++ b/website/src/pages/docs/features/root-level-limitation.mdx @@ -0,0 +1,60 @@ +--- +description: + This plugin enforces a limit on the number of root fields allowed in a GraphQL query, similar to + the `maxRootFields` option in Apollo Router. This can help to improve the performance and + stability of your GraphQL server by preventing overly complex queries. +--- + +# Root Fields + +This plugin enforces a limit on the number of root fields allowed in a GraphQL query, similar to the +`maxRootFields` option in Apollo Router. This can help to improve the performance and stability of +your GraphQL server by preventing overly complex queries. + +Here's an example query that fetches two root fields, `field1`, `field2` and `field3`: + +``` +query GetAllFields { + field { # 1 + id + } + field2 { # 2 + id + } + field3 { # 3 + id + } +} +``` + +# Limit Root Fields + +## Installation + +```sh npm2yarn +npm i @graphql-yoga/root-level-limitation +``` + +## Quick Start + +```ts +import { createServer } from 'node:http' +import { createSchema, createYoga } from 'graphql-yoga' +import { rootLevelQueryLimit } from '@graphql-yoga/root-level-limitation' + +export const yoga = createYoga({ + schema: createSchema({ + typeDefs: /* GraphQL */ ` + type Query { + hello: String! + } + ` + }), + plugins: [rootLevelQueryLimit({ maxRootLevelFields: 1 })] +}) + +const server = createServer(yoga) +server.listen(4000, () => { + console.info('Server is running on http://localhost:4000/graphql') +}) +```