hide-validation-errors-plugin.ts 1.0 KB

1234567891011121314151617181920212223242526
  1. import { ValidationError } from 'apollo-server-core';
  2. import { ApolloServerPlugin, GraphQLRequestListener, GraphQLServiceContext } from 'apollo-server-plugin-base';
  3. /**
  4. * @description
  5. * Hides graphql-js suggestions when invalid field names are given.
  6. * Based on ideas discussed in https://github.com/apollographql/apollo-server/issues/3919
  7. */
  8. export class HideValidationErrorsPlugin implements ApolloServerPlugin {
  9. async requestDidStart(): Promise<GraphQLRequestListener> {
  10. return {
  11. willSendResponse: async requestContext => {
  12. const { errors, context } = requestContext;
  13. if (errors) {
  14. (requestContext.response as any).errors = errors.map(err => {
  15. if (err.message.includes('Did you mean')) {
  16. return new ValidationError('Invalid request');
  17. } else {
  18. return err;
  19. }
  20. });
  21. }
  22. },
  23. };
  24. }
  25. }