@envelop/graphql-middleware
Version:
20 lines (19 loc) • 759 B
JavaScript
import { applyMiddleware } from 'graphql-middleware';
export const useGraphQLMiddleware = (middlewares) => {
const graphqlMiddlewareAppliedTransformSymbol = 'graphqlMiddleware.appliedTransform';
return {
onSchemaChange({ schema, replaceSchema }) {
if (schema.extensions?.[graphqlMiddlewareAppliedTransformSymbol]) {
return;
}
if (middlewares.length > 0) {
const wrappedSchema = applyMiddleware(schema, ...middlewares);
wrappedSchema.extensions = {
...schema.extensions,
[graphqlMiddlewareAppliedTransformSymbol]: true,
};
replaceSchema(wrappedSchema);
}
},
};
};