UNPKG

@paroicms/server

Version:
31 lines 1.41 kB
import { createRequire } from "node:module"; import { GraphQLError } from "graphql"; const require = createRequire(import.meta.url); const { fieldExtensionsEstimator, getComplexity, simpleEstimator, } = require("graphql-query-complexity"); export function createComplexityPlugin() { const maxComplexity = 100; const defaultComplexity = 2; return { requestDidStart(requestContext) { return Promise.resolve({ async didResolveOperation({ request, document }) { if (process.env.NODE_ENV === "development" && request.operationName === "IntrospectionQuery") { return; } const complexity = getComplexity({ schema: requestContext.schema, operationName: request.operationName, query: document, variables: request.variables, estimators: [fieldExtensionsEstimator(), simpleEstimator({ defaultComplexity })], }); if (complexity > maxComplexity) { throw new GraphQLError(`Query is too complex: ${complexity}. Maximum allowed complexity: ${maxComplexity}`); } }, }); }, }; } //# sourceMappingURL=complexity-plugin.js.map