From caa8334c909877e8d36da16127cbde1bf32186f2 Mon Sep 17 00:00:00 2001 From: saihaj Date: Thu, 5 Nov 2020 22:18:52 -0600 Subject: [PATCH] convert `?` (flow) to `Maybe` (TS) --- src/__testUtils__/inspectStr.ts | 4 +++- src/error/GraphQLError.ts | 2 +- src/execution/values.ts | 3 ++- src/jsutils/Path.ts | 4 +++- src/language/experimentalOnlineParser/grammar.ts | 10 ++++++---- src/language/experimentalOnlineParser/onlineParser.ts | 4 ++-- src/language/printer.ts | 9 +++++---- src/language/visitor.ts | 3 ++- src/type/validate.ts | 6 +++--- src/utilities/extendSchema.ts | 4 ++-- src/utilities/lexicographicSortSchema.ts | 5 +++-- src/utilities/printSchema.ts | 4 ++-- 12 files changed, 34 insertions(+), 24 deletions(-) diff --git a/src/__testUtils__/inspectStr.ts b/src/__testUtils__/inspectStr.ts index a99a28150ad..c9047d094a1 100644 --- a/src/__testUtils__/inspectStr.ts +++ b/src/__testUtils__/inspectStr.ts @@ -1,7 +1,9 @@ +import { Maybe } from '../jsutils/Maybe'; + /** * Special inspect function to produce readable string literal for error messages in tests */ -export default function inspectStr(str: ?string): string { +export default function inspectStr(str: Maybe): string { if (str == null) { return 'null'; } diff --git a/src/error/GraphQLError.ts b/src/error/GraphQLError.ts index 456799d93b1..0d87999b922 100644 --- a/src/error/GraphQLError.ts +++ b/src/error/GraphQLError.ts @@ -68,7 +68,7 @@ export class GraphQLError extends Error { /** * The original error thrown from a field resolver during execution. */ - readonly originalError: ?Error; + readonly originalError: Maybe; /** * Extension fields to add to the formatted error. diff --git a/src/execution/values.ts b/src/execution/values.ts index 655fae09123..68234b074d0 100644 --- a/src/execution/values.ts +++ b/src/execution/values.ts @@ -21,6 +21,7 @@ import { isInputType, isNonNullType } from '../type/definition'; import { typeFromAST } from '../utilities/typeFromAST'; import { valueFromAST } from '../utilities/valueFromAST'; import { coerceInputValue } from '../utilities/coerceInputValue'; +import { Maybe } from '../jsutils/Maybe'; type CoercedVariableValues = | { errors: ReadonlyArray } @@ -245,7 +246,7 @@ export function getArgumentValues( export function getDirectiveValues( directiveDef: GraphQLDirective, node: { readonly directives?: ReadonlyArray }, - variableValues?: ?ObjMap, + variableValues?: Maybe>, ): void | { [argument: string]: unknown } { // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203') const directiveNode = node.directives?.find( diff --git a/src/jsutils/Path.ts b/src/jsutils/Path.ts index d0a53fc67ab..92a8cfa9db2 100644 --- a/src/jsutils/Path.ts +++ b/src/jsutils/Path.ts @@ -1,3 +1,5 @@ +import { Maybe } from './Maybe'; + export type Path = { readonly prev: Path | void; readonly key: string | number; @@ -18,7 +20,7 @@ export function addPath( /** * Given a Path, return an Array of the path keys. */ -export function pathToArray(path: ?Readonly): Array { +export function pathToArray(path: Maybe>): Array { const flattened = []; let curr = path; while (curr) { diff --git a/src/language/experimentalOnlineParser/grammar.ts b/src/language/experimentalOnlineParser/grammar.ts index 6ec9dc86b1e..1866ffaa319 100644 --- a/src/language/experimentalOnlineParser/grammar.ts +++ b/src/language/experimentalOnlineParser/grammar.ts @@ -1,3 +1,5 @@ +import { Maybe } from "../../jsutils/Maybe"; + export type GraphQLGrammarType = { [name: string]: GraphQLGrammarRule, }; @@ -16,8 +18,8 @@ export type GraphQLGrammarRule = | GraphQLGrammarConstraintsSet; export interface GraphQLGrammarBaseRuleConstraint { butNot?: - | ?GraphQLGrammarTokenConstraint - | ?Array; + | Maybe + | Maybe>; optional?: boolean; eatNextOnFail?: boolean; } @@ -44,8 +46,8 @@ export interface GraphQLGrammarTokenConstraint | 'String' | 'BlockString' | 'Comment'; - ofValue?: ?string; - oneOf?: ?Array; + ofValue?: Maybe; + oneOf?: Maybe>; tokenName?: string; definitionName?: boolean; typeName?: boolean; diff --git a/src/language/experimentalOnlineParser/onlineParser.ts b/src/language/experimentalOnlineParser/onlineParser.ts index b3ed2eb0ef0..089e289bec0 100644 --- a/src/language/experimentalOnlineParser/onlineParser.ts +++ b/src/language/experimentalOnlineParser/onlineParser.ts @@ -101,7 +101,7 @@ type OnlineParserConfig = { }; type OnlineParserConfigOption = { - tabSize: ?number, + tabSize: Maybe, }; export class OnlineParser { @@ -453,7 +453,7 @@ export class OnlineParser { return this.state.rules[this.state.rules.length - 1] || null; } - _popMatchedRule(token: ?Token) { + _popMatchedRule(token: Maybe) { const rule = this.state.rules.pop(); if (!rule) { return; diff --git a/src/language/printer.ts b/src/language/printer.ts index 8ca8fb2dad6..46b42afb302 100644 --- a/src/language/printer.ts +++ b/src/language/printer.ts @@ -2,6 +2,7 @@ import type { ASTNode } from './ast'; import { visit } from './visitor'; import { printBlockString } from './blockString'; +import { Maybe } from '../jsutils/Maybe'; /** * Converts an AST into a string, using one set of reasonable @@ -257,7 +258,7 @@ function addDescription(cb) { * Given maybeArray, print an empty string if it is null or empty, otherwise * print all items together separated by separator if provided */ -function join(maybeArray: ?Array, separator = ''): string { +function join(maybeArray: Maybe>, separator = ''): string { return maybeArray?.filter((x) => x).join(separator) ?? ''; } @@ -265,14 +266,14 @@ function join(maybeArray: ?Array, separator = ''): string { * Given array, print each item on its own line, wrapped in an * indented "{ }" block. */ -function block(array: ?Array): string { +function block(array: Maybe>): string { return wrap('{\n', indent(join(array, '\n')), '\n}'); } /** * If maybeString is not null or empty, then wrap with start and end, otherwise print an empty string. */ -function wrap(start: string, maybeString: ?string, end: string = ''): string { +function wrap(start: string, maybeString: Maybe, end: string = ''): string { return maybeString != null && maybeString !== '' ? start + maybeString + end : ''; @@ -286,6 +287,6 @@ function isMultiline(str: string): boolean { return str.indexOf('\n') !== -1; } -function hasMultilineItems(maybeArray: ?Array): boolean { +function hasMultilineItems(maybeArray: Maybe>): boolean { return maybeArray != null && maybeArray.some(isMultiline); } diff --git a/src/language/visitor.ts b/src/language/visitor.ts index 27bd93dfe0e..913c5630582 100644 --- a/src/language/visitor.ts +++ b/src/language/visitor.ts @@ -1,4 +1,5 @@ import inspect from '../jsutils/inspect'; +import { Maybe } from '../jsutils/Maybe'; import type { ASTNode, ASTKindToNode } from './ast'; import { isNode } from './ast'; @@ -405,7 +406,7 @@ export function getVisitFn( visitor: Visitor, kind: string, isLeaving: boolean, -): ?VisitFn { +): Maybe> { const kindVisitor = visitor[kind]; if (kindVisitor) { if (!isLeaving && typeof kindVisitor === 'function') { diff --git a/src/type/validate.ts b/src/type/validate.ts index 927de57cab2..edfa8ab2c1c 100644 --- a/src/type/validate.ts +++ b/src/type/validate.ts @@ -652,15 +652,15 @@ function getAllImplementsInterfaceNodes( function getUnionMemberTypeNodes( union: GraphQLUnionType, typeName: string, -): ?ReadonlyArray { +): Maybe> { return getAllSubNodes(union, (unionNode) => unionNode.types).filter( (typeNode) => typeNode.name.value === typeName, ); } function getDeprecatedDirectiveNode( - definitionNode: ?{ readonly directives?: ReadonlyArray }, -): ?DirectiveNode { + definitionNode: Maybe<{ readonly directives?: ReadonlyArray }>, +): Maybe { // istanbul ignore next (See: 'https://github.com/graphql/graphql-js/issues/2203') return definitionNode?.directives?.find( (node) => node.name.value === GraphQLDeprecatedDirective.name, diff --git a/src/utilities/extendSchema.ts b/src/utilities/extendSchema.ts index 43378c503b1..4156e40317f 100644 --- a/src/utilities/extendSchema.ts +++ b/src/utilities/extendSchema.ts @@ -697,7 +697,7 @@ function getDeprecationReason( | EnumValueDefinitionNode | FieldDefinitionNode | InputValueDefinitionNode, -): ?string { +): Maybe { const deprecated = getDirectiveValues(GraphQLDeprecatedDirective, node); return (deprecated?.reason as any); } @@ -707,7 +707,7 @@ function getDeprecationReason( */ function getSpecifiedByUrl( node: ScalarTypeDefinitionNode | ScalarTypeExtensionNode, -): ?string { +): Maybe { const specifiedBy = getDirectiveValues(GraphQLSpecifiedByDirective, node); return (specifiedBy?.url as any); } diff --git a/src/utilities/lexicographicSortSchema.ts b/src/utilities/lexicographicSortSchema.ts index 89c702336e9..70a879a941f 100644 --- a/src/utilities/lexicographicSortSchema.ts +++ b/src/utilities/lexicographicSortSchema.ts @@ -32,6 +32,7 @@ import { isEnumType, isInputObjectType, } from '../type/definition'; +import { Maybe } from '../jsutils/Maybe'; /** * Sort GraphQLSchema. @@ -69,8 +70,8 @@ export function lexicographicSortSchema(schema: GraphQLSchema): GraphQLSchema { function replaceNamedType(type: T): T { return (typeMap[type.name]as T); } - - function replaceMaybeType(maybeType: T): T { + + function replaceMaybeType>(maybeType: T): T { return maybeType && replaceNamedType(maybeType); } diff --git a/src/utilities/printSchema.ts b/src/utilities/printSchema.ts index 3c1ddc8deef..3ff8802bf2d 100644 --- a/src/utilities/printSchema.ts +++ b/src/utilities/printSchema.ts @@ -72,7 +72,7 @@ function printFilteredSchema( ); } -function printSchemaDefinition(schema: GraphQLSchema): ?string { +function printSchemaDefinition(schema: GraphQLSchema): Maybe { if (schema.description == null && isSchemaOfCommonNames(schema)) { return; } @@ -282,7 +282,7 @@ function printDirective(directive: GraphQLDirective): string { ); } -function printDeprecated(reason: ?string): string { +function printDeprecated(reason: Maybe): string { if (reason == null) { return ''; }