From c8abf87367ab42c86cf2735f3384dfd232f41162 Mon Sep 17 00:00:00 2001 From: Jackson Harper Date: Tue, 15 Feb 2022 15:44:59 -0800 Subject: [PATCH] Cast the directive types --- packages/api/src/apollo.ts | 2 +- packages/api/src/directives.ts | 24 +++++++++++++++--------- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/packages/api/src/apollo.ts b/packages/api/src/apollo.ts index 00bf18fbb..2a1857afb 100644 --- a/packages/api/src/apollo.ts +++ b/packages/api/src/apollo.ts @@ -110,7 +110,7 @@ const contextFunc: ContextFunction = async ({ export function makeApolloServer(app: Express): ApolloServer { let schema = makeExecutableSchema({ resolvers, - typeDefs + typeDefs, }) schema = sanitizeDirectiveTransformer(schema) diff --git a/packages/api/src/directives.ts b/packages/api/src/directives.ts index d07b97c7f..fd54cbb66 100644 --- a/packages/api/src/directives.ts +++ b/packages/api/src/directives.ts @@ -5,25 +5,31 @@ import { SanitizedString } from './scalars' export const sanitizeDirectiveTransformer = (schema: GraphQLSchema) => { return mapSchema(schema, { [MapperKind.FIELD]: (fieldConfig) => { - const sanitizeDirective = getDirective( - schema, - fieldConfig, - 'sanitize' - ) + const sanitizeDirective = getDirective(schema, fieldConfig, 'sanitize') if (!sanitizeDirective || sanitizeDirective.length < 1) { return fieldConfig } - const maxLength = sanitizeDirective[0].maxLength - const allowedTags = sanitizeDirective[0].allowedTags + const maxLength = sanitizeDirective[0].maxLength as number | undefined + const allowedTags = sanitizeDirective[0].allowedTags as + | string[] + | undefined - if (fieldConfig.type instanceof GraphQLNonNull && fieldConfig.type.ofType instanceof GraphQLScalarType) { + if ( + fieldConfig.type instanceof GraphQLNonNull && + fieldConfig.type.ofType instanceof GraphQLScalarType + ) { fieldConfig.type = new GraphQLNonNull( new SanitizedString(fieldConfig.type.ofType, allowedTags, maxLength) ) } else if (fieldConfig.type instanceof GraphQLScalarType) { - fieldConfig.type = new SanitizedString(fieldConfig.type, allowedTags, maxLength) + fieldConfig.type = new SanitizedString( + fieldConfig.type, + allowedTags, + maxLength + ) } else { + // eslint-disable-next-line @typescript-eslint/restrict-template-expressions throw new Error(`Not a scalar type: ${fieldConfig.type}`) } return fieldConfig