core-types-graphql v3.0.0
core-types-graphql
This package provides conversion functions between core-types and GraphQL.
You probably don't want to use this package directly, but rather typeconv which uses this package to convert between TypeScript, JSON Schema and GraphQL.
Other conversion packages:
Versions
Since 3.0, this package is pure ESM and requires Node 14.13.1 or later.
Contents
Usage
There are two conversion functions, convertCoreTypesToGraphql and convertGraphqlToCoreTypes, both returning a wrapped value, of the type ConversionResult.
core-types to GraphQL
Conversion can be done to GraphQL code using convertCoreTypesToGraphql, but also to GraphQL AST using convertCoreTypesToGraphqlAst. The arguments to these are the same.
import { convertCoreTypesToGraphql } from 'core-types-graphql'
let doc; // This core-types document comes from somewhere
const { data: graphQL } = convertCoreTypesToGraphql( doc );You can provide options as a second argument fn the type:
interface CoreTypesToGraphqlOptions
{
warn?: WarnFunction;
filename?: string;
sourceFilename?: string;
userPackage?: string;
userPackageUrl?: string;
nullTypeName?: string | null;
nameGenerator?: NameGeneratorFunction;
unsupported?: 'ignore' | 'warn' | 'error';
includeComment?: boolean;
}These options are all optional.
warn: A function callback to be used for warnings, defaults toconsole.warn.filenameThe filename to be written to.This is a hint, no file will be written by the conversion function.sourceFilename: The name of the source file from which the core-types comes.userPackage: The name of the package using this package.userPackageUrl: The url to the package using this package.nullTypeName: Optional custom type used for null.nameGenerator: A function for generating names.GraphQL doesn't support inline objects or union types,so these must be constructed as separate types.unsupported: What to do when detecting an unsupported typeignore: Ignore (skip) typewarn: Ignore type, but warn (default)error: Throw an error
includeComment: Includes a header comment about the auto-generated file.Defaults totrue.
The warn function is of type WarnFunction from core-types, meaning it takes a message as string, and an optional second argument of type CoreTypesErrorMeta, also from core-types.
The nameGenerator function is of type NameGeneratorFunction defined as:
( baseName: string, nameHint: string, test: NameGeneratorTestFunction ) => string;where NameGeneratorTestFunction is a test function to check if the generated name is available, on the form:
( name: string ) => boolean;If this is specified (instead of letting a default name generator be used), an implementation is supposed to generate a name, potentially based on the baseName and a nameHint (e.g. an interface name and a property name within that interface), and test this generated name against test, altering it if necessary until test returns true, and then return that string.
GraphQL to core-types
import { convertGraphqlToCoreTypes } from 'core-types-graphql'
let graphQL; // This GraphQL string comes from somewhere
const { data: doc } = convertGraphqlToCoreTypes( graphQL );An optional second argument can be provided on the form
interface GraphqlToCoreTypesOptions
{
warn?: WarnFunction;
unsupported?: 'ignore' | 'warn' | 'error';
}warn: The same warn function as in CoreTypesToGraphqlOptionsunsupported: What to do when detecting an unsupported typeignore: Ignore (skip) type (default)warn: Ignore type, but warnerror: Throw an error
Utilities
This package exports two utility functions; getBreakingChanges and getDangerousChanges which both take two GraphQL source code texts (as strings) semantically meaning an "old" and a "new" version of a schema. The functions return a list of breaking/dangerous changes on the type BreakingChange/DangerousChange from the graphql package.