@paroicms/server
Version:
The ParoiCMS server
31 lines • 1.41 kB
JavaScript
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