Skip to content

Latest commit

 

History

History
389 lines (270 loc) · 6.73 KB

flow-operations.md

File metadata and controls

389 lines (270 loc) · 6.73 KB

This plugin generates Flow types based on your GraphQLSchema and your GraphQL operations and fragments.

It generates types for your GraphQL documents: Query, Mutation, Subscription and Fragment.

This plugin requires you to use @graphql-codegen/flow as well, because it depends on it's types.

Installation

:::shell Using yarn

$ yarn add -D @graphql-codegen/flow-operations

:::

API Reference

useFlowExactObjects

type: boolean default: true

Generates Flow types as Exact types.

Usage Examples

generates:
path/to/file.ts:
 plugins:
   - flow
 config:
   useFlowExactObjects: false

useFlowReadOnlyTypes

type: boolean default: false

Generates read-only Flow types

Usage Examples

generates:
path/to/file.ts:
 plugins:
   - flow
 config:
   useFlowReadOnlyTypes: true

flattenGeneratedTypes

type: boolean default: false

Flatten fragment spread and inline fragments into a simple selection set before generating.

Usage Examples

generates:
path/to/file.ts:
 plugins:
   - typescript
   - typescript-operations
 config:
   flattenGeneratedTypes: true

preResolveTypes

type: boolean default: false

Avoid using Pick and resolve the actual primitive type of all selection set.

Usage Examples

plugins
  config:
    preResolveTypes: true

skipTypeNameForRoot

type: boolean default: false

Avoid adding __typename for root types. This is ignored when a selection explictly specifies __typename.

Usage Examples

plugins
  config:
    skipTypeNameForRoot: true

globalNamespace

type: boolean default: false

Puts all generated code under global namespace. Useful for Stencil integration.

Usage Examples

plugins
  config:
    globalNamespace: true

operationResultSuffix

type: string default: ``

Adds a suffix to generated operation result type names

dedupeOperationSuffix

type: boolean default: false

Set this configuration to true if you wish to make sure to remove duplicate operation name suffix.

omitOperationSuffix

type: boolean default: false

Set this configuration to true if you wish to disable auto add suffix of operation name, like Query, Mutation, Subscription, Fragment.

exportFragmentSpreadSubTypes

type: boolean default: false

If set to true, it will export the sub-types created in order to make it easier to access fields declared under fragment spread.

addUnderscoreToArgsType

type: boolean

Adds _ to generated Args types in order to avoid duplicate identifiers.

Usage Examples

With Custom Values
  config:
    addUnderscoreToArgsType: true

enumValues

type: EnumValuesMap

Overrides the default value of enum values declared in your GraphQL schema. You can also map the entire enum to an external type by providing a string that of module#type.

Usage Examples

With Custom Values
  config:
    enumValues:
      MyEnum:
        A: 'foo'
With External Enum
  config:
    enumValues:
      MyEnum: ./my-file#MyCustomEnum
Import All Enums from a file
  config:
    enumValues: ./my-file

declarationKind

type: DeclarationKindConfig | string (values: abstract class, class, interface, type)

Overrides the default output for various GraphQL elements.

Usage Examples

Override all declarations
  config:
    declarationKind: 'interface'
Override only specific declarations
  config:
    declarationKind:
      type: 'interface'
      input: 'interface'

enumPrefix

type: boolean default: true

Allow you to disable prefixing for generated enums, works in combination with typesPrefix.

Usage Examples

Disable enum prefixes
  config:
    typesPrefix: I
    enumPrefix: false

fieldWrapperValue

type: string default: T

Allow you to add wrapper for field type, use T as the generic value. Make sure to set wrapFieldDefinitions to true in order to make this flag work.

Usage Examples

Allow Promise
generates:
path/to/file.ts:
 plugins:
   - typescript
 config:
   wrapFieldDefinitions: true
   fieldWrapperValue: T | Promise<T>

wrapFieldDefinitions

type: boolean default: false

Set the to true in order to wrap field definitions with FieldWrapper. This is useful to allow return types such as Promises and functions.

Usage Examples

Enable wrapping fields
generates:
path/to/file.ts:
 plugins:
   - typescript
 config:
   wrapFieldDefinitions: true

onlyOperationTypes

type: boolean default: false

This will cause the generator to emit types for operations only (basically only enums and scalars)

Usage Examples

Override all definition types
generates:
path/to/file.ts:
 plugins:
   - typescript
 config:
   onlyOperationTypes: true

scalars

type: ScalarsMap

Extends or overrides the built-in scalars and custom GraphQL scalars to a custom type.

Usage Examples

config:
  scalars:
    DateTime: Date
    JSON: "{ [key: string]: any }"

namingConvention

type: NamingConvention default: pascal-case#pascalCase

Allow you to override the naming convention of the output. You can either override all namings, or specify an object with specific custom naming convention per output. The format of the converter must be a valid module#method. Allowed values for specific output are: typeNames, enumValues. You can also use "keep" to keep all GraphQL names as-is. Additionally you can set transformUnderscore to true if you want to override the default behavior, which is to preserves underscores.

Usage Examples

Override All Names
config:
  namingConvention: lower-case#lowerCase
Upper-case enum values
config:
  namingConvention:
    typeNames: pascal-case#pascalCase
    enumValues: upper-case#upperCase
Keep names as is
config:
  namingConvention: keep
Remove Underscores
config:
  namingConvention:
    typeNames: pascal-case#pascalCase
    transformUnderscore: true

typesPrefix

type: string default: ``

Prefixes all the generated types.

Usage Examples

config:
  typesPrefix: I

skipTypename

type: boolean default: false

Does not add __typename to the generated types, unless it was specified in the selection set.

Usage Examples

config:
  skipTypename: true

nonOptionalTypename

type: boolean default: false

Automatically adds __typename field to the generated types, even when they are not specified in the selection set, and makes it non-optional

Usage Examples

config:
  nonOptionalTypename: true