Skip to content

Commit

Permalink
refactor: add importsNotUsedAsValues: error to force import type (#872)
Browse files Browse the repository at this point in the history
  • Loading branch information
tgriesser authored Mar 27, 2021
1 parent a59273d commit 74c93e2
Show file tree
Hide file tree
Showing 53 changed files with 153 additions and 137 deletions.
2 changes: 1 addition & 1 deletion examples/ts-ast-reader/src/types/context.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import * as ts from 'typescript'
import type * as ts from 'typescript'

export interface ContextType {
source: ts.SourceFile
Expand Down
26 changes: 13 additions & 13 deletions src/builder.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,18 +42,18 @@ import {
isWrappingType,
printSchema,
} from 'graphql'
import { ArgsRecord, NexusFinalArgConfig } from './definitions/args'
import type { ArgsRecord, NexusFinalArgConfig } from './definitions/args'
import {
InputDefinitionBlock,
NexusInputFieldDef,
NexusOutputFieldConfig,
NexusOutputFieldDef,
OutputDefinitionBlock,
} from './definitions/definitionBlocks'
import { NexusEnumTypeConfig } from './definitions/enumType'
import { NexusExtendInputTypeConfig, NexusExtendInputTypeDef } from './definitions/extendInputType'
import { NexusExtendTypeConfig, NexusExtendTypeDef } from './definitions/extendType'
import { NexusInputObjectTypeConfig } from './definitions/inputObjectType'
import type { NexusEnumTypeConfig } from './definitions/enumType'
import type { NexusExtendInputTypeConfig, NexusExtendInputTypeDef } from './definitions/extendInputType'
import type { NexusExtendTypeConfig, NexusExtendTypeDef } from './definitions/extendType'
import type { NexusInputObjectTypeConfig } from './definitions/inputObjectType'
import {
FieldModificationDef,
Implemented,
Expand All @@ -62,7 +62,7 @@ import {
NexusInterfaceTypeDef,
} from './definitions/interfaceType'
import { NexusObjectTypeConfig, NexusObjectTypeDef, ObjectDefinitionBlock } from './definitions/objectType'
import { NexusScalarTypeConfig } from './definitions/scalarType'
import type { NexusScalarTypeConfig } from './definitions/scalarType'
import { NexusUnionTypeConfig, UnionDefinitionBlock, UnionMembers } from './definitions/unionType'
import {
AllNexusArgsDefs,
Expand Down Expand Up @@ -91,7 +91,7 @@ import {
unwrapGraphQLDef,
unwrapNexusDef,
} from './definitions/wrapping'
import {
import type {
MissingType,
NexusFeaturesInput,
NexusGraphQLFieldConfig,
Expand All @@ -103,8 +103,8 @@ import {
SourceTypings,
TypingImport,
} from './definitions/_types'
import { DynamicInputMethodDef, DynamicOutputMethodDef } from './dynamicMethod'
import { DynamicOutputPropertyDef } from './dynamicProperty'
import type { DynamicInputMethodDef, DynamicOutputMethodDef } from './dynamicMethod'
import type { DynamicOutputPropertyDef } from './dynamicProperty'
import {
NexusFieldExtension,
NexusInputObjectTypeExtension,
Expand All @@ -123,12 +123,12 @@ import {
} from './plugin'
import { declarativeWrappingPlugin } from './plugins'
import { fieldAuthorizePlugin } from './plugins/fieldAuthorizePlugin'
import { SourceTypesConfigOptions } from './typegenAutoConfig'
import { TypegenFormatFn } from './typegenFormatPrettier'
import type { SourceTypesConfigOptions } from './typegenAutoConfig'
import type { TypegenFormatFn } from './typegenFormatPrettier'
import { TypegenMetadata } from './typegenMetadata'
import { AbstractTypeResolver, GetGen } from './typegenTypeHelpers'
import type { AbstractTypeResolver, GetGen } from './typegenTypeHelpers'
import { resolveTypegenConfig } from './typegenUtils'
import { RequiredDeeply } from './typeHelpersInternal'
import type { RequiredDeeply } from './typeHelpersInternal'
import {
assertNoMissingTypes,
casesHandled,
Expand Down
10 changes: 5 additions & 5 deletions src/definitions/_types.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import {
import type {
GraphQLCompositeType,
GraphQLEnumType,
GraphQLFieldConfig,
Expand All @@ -13,17 +13,17 @@ import {
GraphQLSchema,
GraphQLUnionType,
} from 'graphql'
import {
import type {
NexusFieldExtension,
NexusInputObjectTypeExtension,
NexusInterfaceTypeExtension,
NexusObjectTypeExtension,
NexusSchemaExtension,
} from '../extensions'
import * as AbstractTypes from '../typegenAbstractTypes'
import { RequiredDeeply } from '../typeHelpersInternal'
import type * as AbstractTypes from '../typegenAbstractTypes'
import type { RequiredDeeply } from '../typeHelpersInternal'

export { AbstractTypes }
export type { AbstractTypes }

export type Maybe<T> = T | null

Expand Down
6 changes: 3 additions & 3 deletions src/definitions/args.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { GraphQLScalarTypeConfig } from 'graphql'
import { AllInputTypes, GetGen2 } from '../typegenTypeHelpers'
import { AllNexusArgsDefs, AllNexusInputTypeDefs } from './wrapping'
import type { GraphQLScalarTypeConfig } from 'graphql'
import type { AllInputTypes, GetGen2 } from '../typegenTypeHelpers'
import type { AllNexusArgsDefs, AllNexusInputTypeDefs } from './wrapping'
import { NexusTypes, withNexusSymbol } from './_types'

export type ArgsRecord = Record<string, AllNexusArgsDefs>
Expand Down
4 changes: 2 additions & 2 deletions src/definitions/decorateType.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { GraphQLNamedType } from 'graphql'
import { SourceTypingDef } from './_types'
import type { GraphQLNamedType } from 'graphql'
import type { SourceTypingDef } from './_types'

export interface TypeExtensionConfig {
asNexusMethod?: string
Expand Down
17 changes: 12 additions & 5 deletions src/definitions/definitionBlocks.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,16 @@
import { GraphQLFieldConfig, GraphQLFieldResolver, GraphQLInputFieldConfig } from 'graphql'
import type { GraphQLFieldConfig, GraphQLFieldResolver, GraphQLInputFieldConfig } from 'graphql'
import { messages } from '../messages'
import { AllInputTypes, FieldResolver, GetGen, GetGen3, HasGen3, NeedsResolver } from '../typegenTypeHelpers'
import { ArgsRecord } from './args'
import { AllNexusInputTypeDefs, AllNexusOutputTypeDefs, NexusWrapKind } from './wrapping'
import { BaseScalars } from './_types'
import type {
AllInputTypes,
FieldResolver,
GetGen,
GetGen3,
HasGen3,
NeedsResolver,
} from '../typegenTypeHelpers'
import type { ArgsRecord } from './args'
import type { AllNexusInputTypeDefs, AllNexusOutputTypeDefs, NexusWrapKind } from './wrapping'
import type { BaseScalars } from './_types'

export interface CommonFieldConfig {
//todo
Expand Down
4 changes: 2 additions & 2 deletions src/definitions/extendInputType.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { assertValidName } from 'graphql'
import { GetGen } from '../typegenTypeHelpers'
import { InputDefinitionBlock } from './definitionBlocks'
import type { GetGen } from '../typegenTypeHelpers'
import type { InputDefinitionBlock } from './definitionBlocks'
import { NexusTypes, withNexusSymbol } from './_types'

export interface NexusExtendInputTypeConfig<TypeName extends string> {
Expand Down
6 changes: 3 additions & 3 deletions src/definitions/extendType.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { assertValidName } from 'graphql'
import { AllOutputTypesPossible } from '../typegenTypeHelpers'
import { ObjectDefinitionBlock } from './objectType'
import { IsSubscriptionType, SubscriptionBuilder } from './subscriptionType'
import type { AllOutputTypesPossible } from '../typegenTypeHelpers'
import type { ObjectDefinitionBlock } from './objectType'
import type { IsSubscriptionType, SubscriptionBuilder } from './subscriptionType'
import { NexusTypes, withNexusSymbol } from './_types'

export interface NexusExtendTypeConfig<TypeName extends string> {
Expand Down
2 changes: 1 addition & 1 deletion src/definitions/inputObjectType.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { assertValidName, GraphQLInputObjectTypeConfig } from 'graphql'
import { arg, NexusArgDef, NexusAsArgConfig } from './args'
import { InputDefinitionBlock } from './definitionBlocks'
import type { InputDefinitionBlock } from './definitionBlocks'
import { NexusTypes, NonNullConfig, withNexusSymbol } from './_types'

export type NexusInputObjectTypeConfig<TypeName extends string> = {
Expand Down
4 changes: 2 additions & 2 deletions src/definitions/interfaceType.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { assertValidName, GraphQLInterfaceTypeConfig } from 'graphql'
import { FieldResolver, GetGen, InterfaceFieldsFor, ModificationType } from '../typegenTypeHelpers'
import { ArgsRecord } from './args'
import type { FieldResolver, GetGen, InterfaceFieldsFor, ModificationType } from '../typegenTypeHelpers'
import type { ArgsRecord } from './args'
import { OutputDefinitionBlock, OutputDefinitionBuilder } from './definitionBlocks'
import { AbstractTypes, NexusTypes, NonNullConfig, SourceTypingDef, withNexusSymbol } from './_types'

Expand Down
2 changes: 1 addition & 1 deletion src/definitions/mutationField.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { FieldOutConfig, OutputDefinitionBlock } from '../core'
import type { FieldOutConfig, OutputDefinitionBlock } from '../core'
import { extendType, NexusExtendTypeDef } from './extendType'

export type MutationFieldConfig<FieldName extends string> =
Expand Down
2 changes: 1 addition & 1 deletion src/definitions/nonNull.ts
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ withNexusSymbol(NexusNonNullDef, NexusTypes.NonNull)
*/
export function nonNull<TypeName extends NexusNonNullableTypes>(type: TypeName) {
if (isNexusNonNullTypeDef(type) || isNonNullType(type)) {
/*
/*
Ran into an issue around the generated return type for `nonNull()`,
which produces:
Expand Down
4 changes: 2 additions & 2 deletions src/definitions/objectType.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { assertValidName, GraphQLObjectType } from 'graphql'
import { InterfaceFieldsFor } from '../typegenTypeHelpers'
import type { InterfaceFieldsFor } from '../typegenTypeHelpers'
import { OutputDefinitionBlock, OutputDefinitionBuilder } from './definitionBlocks'
import { FieldModification, FieldModificationDef, Implemented } from './interfaceType'
import type { FieldModification, FieldModificationDef, Implemented } from './interfaceType'
import { AbstractTypes, NexusTypes, NonNullConfig, SourceTypingDef, withNexusSymbol } from './_types'

export interface ObjectDefinitionBuilder extends OutputDefinitionBuilder {
Expand Down
2 changes: 1 addition & 1 deletion src/definitions/queryField.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { FieldOutConfig, OutputDefinitionBlock } from '../core'
import type { FieldOutConfig, OutputDefinitionBlock } from '../core'
import { extendType, NexusExtendTypeDef } from './extendType'

export type QueryFieldConfig<FieldName extends string> =
Expand Down
2 changes: 1 addition & 1 deletion src/definitions/subscriptionField.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { extendType, NexusExtendTypeDef } from './extendType'
import { SubscriptionBuilder, SubscriptionTypeConfig } from './subscriptionType'
import type { SubscriptionBuilder, SubscriptionTypeConfig } from './subscriptionType'

export type SubscriptionFieldConfig<FieldName extends string, Event> =
| SubscriptionTypeConfig<FieldName, Event>
Expand Down
10 changes: 5 additions & 5 deletions src/definitions/subscriptionType.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { GraphQLResolveInfo } from 'graphql'
import { ArgsValue, GetGen, MaybePromise, MaybePromiseDeep, ResultValue } from '../typegenTypeHelpers'
import { IsEqual } from '../typeHelpersInternal'
import { CommonOutputFieldConfig } from './definitionBlocks'
import type { GraphQLResolveInfo } from 'graphql'
import type { ArgsValue, GetGen, MaybePromise, MaybePromiseDeep, ResultValue } from '../typegenTypeHelpers'
import type { IsEqual } from '../typeHelpersInternal'
import type { CommonOutputFieldConfig } from './definitionBlocks'
import { objectType } from './objectType'
import { AllNexusOutputTypeDefs } from './wrapping'
import type { AllNexusOutputTypeDefs } from './wrapping'

export type IsSubscriptionType<T> = IsEqual<T, 'Subscription'>

Expand Down
4 changes: 2 additions & 2 deletions src/definitions/unionType.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { assertValidName, GraphQLUnionTypeConfig } from 'graphql'
import { GetGen } from '../typegenTypeHelpers'
import { NexusObjectTypeDef } from './objectType'
import type { GetGen } from '../typegenTypeHelpers'
import type { NexusObjectTypeDef } from './objectType'
import { AbstractTypes, NexusTypes, SourceTypingDef, withNexusSymbol } from './_types'

export interface UnionDefinitionBuilder {
Expand Down
24 changes: 12 additions & 12 deletions src/definitions/wrapping.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,23 +8,23 @@ import {
isListType,
isNonNullType,
} from 'graphql'
import { DynamicInputMethodDef, DynamicOutputMethodDef } from '../dynamicMethod'
import { DynamicOutputPropertyDef } from '../dynamicProperty'
import { NexusPlugin } from '../plugin'
import { AllInputTypes, GetGen } from '../typegenTypeHelpers'
import type { DynamicInputMethodDef, DynamicOutputMethodDef } from '../dynamicMethod'
import type { DynamicOutputPropertyDef } from '../dynamicProperty'
import type { NexusPlugin } from '../plugin'
import type { AllInputTypes, GetGen } from '../typegenTypeHelpers'
import { PrintedGenTyping, PrintedGenTypingImport, Unreachable } from '../utils'
import { NexusArgDef, arg } from './args'
import { NexusEnumTypeDef } from './enumType'
import { NexusExtendInputTypeDef } from './extendInputType'
import { NexusExtendTypeDef } from './extendType'
import { NexusInputObjectTypeDef } from './inputObjectType'
import { NexusInterfaceTypeDef } from './interfaceType'
import type { NexusEnumTypeDef } from './enumType'
import type { NexusExtendInputTypeDef } from './extendInputType'
import type { NexusExtendTypeDef } from './extendType'
import type { NexusInputObjectTypeDef } from './inputObjectType'
import type { NexusInterfaceTypeDef } from './interfaceType'
import { list, NexusListDef } from './list'
import { NexusNonNullDef, nonNull } from './nonNull'
import { NexusNullDef, nullable } from './nullable'
import { NexusObjectTypeDef } from './objectType'
import { NexusScalarTypeDef } from './scalarType'
import { NexusUnionTypeDef } from './unionType'
import type { NexusObjectTypeDef } from './objectType'
import type { NexusScalarTypeDef } from './scalarType'
import type { NexusUnionTypeDef } from './unionType'
import { NexusTypes, NexusWrappedSymbol } from './_types'

export type AllNexusNamedInputTypeDefs<T extends string = any> =
Expand Down
6 changes: 3 additions & 3 deletions src/dynamicMethod.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { PluginBuilderLens } from './builder'
import { InputDefinitionBlock, OutputDefinitionBlock } from './definitions/definitionBlocks'
import type { PluginBuilderLens } from './builder'
import type { InputDefinitionBlock, OutputDefinitionBlock } from './definitions/definitionBlocks'
import { NexusTypes, withNexusSymbol } from './definitions/_types'
import { NexusWrapKind } from './definitions/wrapping'
import type { NexusWrapKind } from './definitions/wrapping'

export type OutputFactoryConfig<T> = {
/** The name of the type this field is being declared on */
Expand Down
6 changes: 3 additions & 3 deletions src/dynamicProperty.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { SchemaBuilder } from './builder'
import { OutputDefinitionBlock } from './definitions/definitionBlocks'
import type { SchemaBuilder } from './builder'
import type { OutputDefinitionBlock } from './definitions/definitionBlocks'
import { NexusTypes, withNexusSymbol } from './definitions/_types'
import { BaseExtensionConfig } from './dynamicMethod'
import type { BaseExtensionConfig } from './dynamicMethod'

export type OutputPropertyFactoryConfig<T> = {
stage: 'walk' | 'build'
Expand Down
12 changes: 6 additions & 6 deletions src/extensions.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import { defaultFieldResolver, GraphQLNamedType } from 'graphql'
import { DynamicFieldDefs, SchemaConfig } from './builder'
import { SourceTypingDef, SourceTypings } from './definitions/_types'
import { NexusOutputFieldConfig } from './definitions/definitionBlocks'
import { NexusInputObjectTypeConfig } from './definitions/inputObjectType'
import { NexusInterfaceTypeConfig } from './definitions/interfaceType'
import { NexusObjectTypeConfig } from './definitions/objectType'
import type { DynamicFieldDefs, SchemaConfig } from './builder'
import type { SourceTypingDef, SourceTypings } from './definitions/_types'
import type { NexusOutputFieldConfig } from './definitions/definitionBlocks'
import type { NexusInputObjectTypeConfig } from './definitions/inputObjectType'
import type { NexusInterfaceTypeConfig } from './definitions/interfaceType'
import type { NexusObjectTypeConfig } from './definitions/objectType'

export type NexusGraphQLNamedType = GraphQLNamedType & {
extensions?: {
Expand Down
20 changes: 12 additions & 8 deletions src/plugin.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { GraphQLFieldResolver, GraphQLInterfaceType, GraphQLResolveInfo, GraphQLSchema } from 'graphql'
import { PluginBuilderLens, SchemaConfig } from './builder'
import type { GraphQLFieldResolver, GraphQLInterfaceType, GraphQLResolveInfo, GraphQLSchema } from 'graphql'
import type { PluginBuilderLens, SchemaConfig } from './builder'
import {
Maybe,
NexusGraphQLFieldConfig,
Expand All @@ -9,13 +9,17 @@ import {
Omit,
withNexusSymbol,
} from './definitions/_types'
import { InputDefinitionBlock, NexusOutputFieldDef, NexusInputFieldDef } from './definitions/definitionBlocks'
import { NexusInputObjectTypeConfig } from './definitions/inputObjectType'
import { NexusObjectTypeConfig, ObjectDefinitionBlock } from './definitions/objectType'
import { NexusSchemaExtension } from './extensions'
import type {
InputDefinitionBlock,
NexusOutputFieldDef,
NexusInputFieldDef,
} from './definitions/definitionBlocks'
import type { NexusInputObjectTypeConfig } from './definitions/inputObjectType'
import type { NexusObjectTypeConfig, ObjectDefinitionBlock } from './definitions/objectType'
import type { NexusSchemaExtension } from './extensions'
import { isPromiseLike, PrintedGenTyping, PrintedGenTypingImport, venn } from './utils'
import { NexusFinalArgConfig } from './definitions/args'
import { UnwrapPromise } from './typeHelpersInternal'
import type { NexusFinalArgConfig } from './definitions/args'
import type { UnwrapPromise } from './typeHelpersInternal'

export { PluginBuilderLens }

Expand Down
8 changes: 4 additions & 4 deletions src/plugins/connectionPlugin.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { defaultFieldResolver, GraphQLFieldResolver, GraphQLResolveInfo } from 'graphql'
import { ArgsRecord, intArg, stringArg } from '../definitions/args'
import { CommonFieldConfig, FieldOutConfig } from '../definitions/definitionBlocks'
import type { CommonFieldConfig, FieldOutConfig } from '../definitions/definitionBlocks'
import { NexusNonNullDef, nonNull } from '../definitions/nonNull'
import { NexusNullDef, nullable } from '../definitions/nullable'
import { ObjectDefinitionBlock, objectType } from '../definitions/objectType'
Expand All @@ -9,10 +9,10 @@ import {
AllNexusOutputTypeDefs,
applyNexusWrapping,
} from '../definitions/wrapping'
import { NonNullConfig } from '../definitions/_types'
import type { NonNullConfig } from '../definitions/_types'
import { dynamicOutputMethod } from '../dynamicMethod'
import { completeValue, plugin } from '../plugin'
import {
import type {
ArgsValue,
FieldTypeName,
GetGen,
Expand All @@ -21,7 +21,7 @@ import {
ResultValue,
SourceValue,
} from '../typegenTypeHelpers'
import { MaybePromiseLike } from '../typeHelpersInternal'
import type { MaybePromiseLike } from '../typeHelpersInternal'
import { eachObj, getOwnPackage, isPromiseLike, mapObj, pathToArray, printedGenTypingImport } from '../utils'

export interface ConnectionPluginConfig {
Expand Down
4 changes: 2 additions & 2 deletions src/plugins/declarativeWrappingPlugin.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { NexusFinalArgConfig } from '../definitions/args'
import { NexusInputFieldDef, NexusOutputFieldDef } from '../definitions/definitionBlocks'
import type { NexusFinalArgConfig } from '../definitions/args'
import type { NexusInputFieldDef, NexusOutputFieldDef } from '../definitions/definitionBlocks'
import { list } from '../definitions/list'
import { nonNull } from '../definitions/nonNull'
import { nullable } from '../definitions/nullable'
Expand Down
4 changes: 2 additions & 2 deletions src/plugins/fieldAuthorizePlugin.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { GraphQLResolveInfo } from 'graphql'
import type { GraphQLResolveInfo } from 'graphql'
import { plugin } from '../plugin'
import { ArgsValue, GetGen, MaybePromise, SourceValue } from '../typegenTypeHelpers'
import type { ArgsValue, GetGen, MaybePromise, SourceValue } from '../typegenTypeHelpers'
import { printedGenTyping, printedGenTypingImport } from '../utils'

const FieldauthorizeResolverImport = printedGenTypingImport({
Expand Down
Loading

0 comments on commit 74c93e2

Please sign in to comment.