visitor

package
v0.3.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 16, 2026 License: MIT Imports: 6 Imported by: 0

Documentation

Overview

Package visitor ports the shared pieces of @graphql-codegen/visitor-plugin-common: naming conventions, scalar resolution, and the DeclarationBlock code writer. It is the substrate the typescript plugins build on.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CamelCase

func CamelCase(s string) string

CamelCase: fooBar

func CapitalCase

func CapitalCase(s string) string

CapitalCase: Foo Bar

func ConstantCase

func ConstantCase(s string) string

ConstantCase: FOO_BAR

func Indent

func Indent(str string, count int) string

Indent prepends count levels (2 spaces each) to a single line (exported).

func InputScalars

func InputScalars(schema *ast.Schema, cfg map[string]any) map[string]ScalarMapping

InputScalars mirrors buildScalarsFromConfig with DEFAULT_INPUT_SCALARS: ID's input type is "string | number" (array input coercion), used by the operations plugin for variables and input fields.

func LowerCase

func LowerCase(s string) string

LowerCase: foobar

func LowerCaseFirst

func LowerCaseFirst(s string) string

LowerCaseFirst: foo Bar

func OrderedTypeNames

func OrderedTypeNames(schema *ast.Schema) []string

OrderedTypeNames returns schema type names in stable (alphabetical) order, excluding built-in introspection types (prefixed __).

func ParseEnumValues added in v0.2.0

func ParseEnumValues(cfg map[string]any, convertEnumName func(string) string) map[string]EnumValuesEntry

ParseEnumValues ports parseEnumValues for the typescript plugin: string forms (internal type or external source#Type) and object forms (explicit value mapping).

func PascalCase

func PascalCase(s string) string

PascalCase: FooBar

func SnakeCase

func SnakeCase(s string) string

SnakeCase: foo_bar

func UpperCase

func UpperCase(s string) string

UpperCase: FOOBAR

func UpperCaseFirst

func UpperCaseFirst(s string) string

UpperCaseFirst: Foo bar

Types

type BaseTypesVisitor

type BaseTypesVisitor struct {
	Schema *ast.Schema
	Config *ParsedConfig
	// contains filtered or unexported fields
}

BaseTypesVisitor renders a schema's type definitions to TypeScript.

func NewBaseTypesVisitor

func NewBaseTypesVisitor(schema *ast.Schema, cfg *ParsedConfig) *BaseTypesVisitor

NewBaseTypesVisitor builds a visitor for a schema + config.

func (*BaseTypesVisitor) EnumImports added in v0.2.0

func (v *BaseTypesVisitor) EnumImports() []string

EnumImports renders the import statements for external enumValues enums (mirrors getEnumsImports + buildTypeImport).

func (*BaseTypesVisitor) RenderArgs

func (v *BaseTypesVisitor) RenderArgs(def *ast.Definition) []string

RenderArgs renders argument-object types for fields with arguments.

func (*BaseTypesVisitor) RenderEnum

func (v *BaseTypesVisitor) RenderEnum(def *ast.Definition) string

RenderEnum renders an enum definition (native, const, or string-literal union).

func (*BaseTypesVisitor) RenderInputObject

func (v *BaseTypesVisitor) RenderInputObject(def *ast.Definition) string

RenderInputObject renders an input object type definition.

func (*BaseTypesVisitor) RenderInterface

func (v *BaseTypesVisitor) RenderInterface(def *ast.Definition) string

RenderInterface renders an interface type definition.

func (*BaseTypesVisitor) RenderObject

func (v *BaseTypesVisitor) RenderObject(def *ast.Definition) string

RenderObject renders an object type definition (plus its Args types).

func (*BaseTypesVisitor) RenderScalars

func (v *BaseTypesVisitor) RenderScalars() string

RenderScalars emits the Scalars map type.

func (*BaseTypesVisitor) RenderUnion

func (v *BaseTypesVisitor) RenderUnion(def *ast.Definition) string

RenderUnion renders a union type definition.

func (*BaseTypesVisitor) WrapperDefinitions

func (v *BaseTypesVisitor) WrapperDefinitions() []string

WrapperDefinitions returns the Maybe/InputMaybe type aliases.

type ConvertFn

type ConvertFn func(name string, transformUnderscore bool) string

ConvertFn converts a GraphQL name to a TypeScript name per a naming convention.

type DeclarationBlock

type DeclarationBlock struct {
	// contains filtered or unexported fields
}

DeclarationBlock mirrors the DeclarationBlock class in utils.ts: a fluent builder for TS declarations (type/interface/enum/etc.).

func NewDeclarationBlock

func NewDeclarationBlock() *DeclarationBlock

NewDeclarationBlock creates a block with default config.

func (*DeclarationBlock) AsKind

func (d *DeclarationBlock) AsKind(kind string) *DeclarationBlock

func (*DeclarationBlock) Export

func (d *DeclarationBlock) Export() *DeclarationBlock

func (*DeclarationBlock) IgnoreExport

func (d *DeclarationBlock) IgnoreExport(v bool) *DeclarationBlock

IgnoreExport controls whether Export() emits the "export" keyword.

func (*DeclarationBlock) String

func (d *DeclarationBlock) String() string

func (*DeclarationBlock) WithBlock

func (d *DeclarationBlock) WithBlock(block string) *DeclarationBlock

func (*DeclarationBlock) WithBlockTransformer added in v0.2.0

func (d *DeclarationBlock) WithBlockTransformer(fn func(string) string) *DeclarationBlock

WithBlockTransformer wraps the rendered `{ ... }` block before it is appended (mirrors DeclarationBlockConfig.blockTransformer).

func (*DeclarationBlock) WithComment

func (d *DeclarationBlock) WithComment(comment string) *DeclarationBlock

func (*DeclarationBlock) WithContent

func (d *DeclarationBlock) WithContent(content string) *DeclarationBlock

func (*DeclarationBlock) WithDecorator

func (d *DeclarationBlock) WithDecorator(decorator string) *DeclarationBlock

func (*DeclarationBlock) WithGenerics

func (d *DeclarationBlock) WithGenerics(generics string) *DeclarationBlock

WithGenerics sets type parameters rendered as `<generics>` after the name.

func (*DeclarationBlock) WithName

func (d *DeclarationBlock) WithName(name string) *DeclarationBlock

type EnumValuesEntry added in v0.2.0

type EnumValuesEntry struct {
	SourceFile              string
	SourceIdentifier        string
	TypeIdentifierConverted string
	ImportIdentifier        string
	IsDefault               bool
	MappedValues            map[string]any
}

EnumValuesEntry mirrors parseEnumValues' parsed entry.

type ParsedConfig

type ParsedConfig struct {
	Scalars                   map[string]ScalarMapping
	ScalarOrder               []string
	Convert                   ConvertFn
	EnumConvert               ConvertFn // may differ if namingConvention.enumValues is set
	TypesPrefix               string
	TypesSuffix               string
	EnumPrefix                bool
	EnumSuffix                bool
	UseTypeImports            bool
	ImmutableTypes            bool
	AllowEnumStringTypes      bool
	EmitLegacyCommonJSImports bool
	ImportExtension           string
	PrintFieldsOnNewLines     bool

	// types-plugin flags
	AvoidOptionalsField        bool
	AvoidOptionalsInputValue   bool
	AvoidOptionalsDefaultValue bool
	AvoidOptionalsResolvers    bool
	AvoidOptionalsQuery        bool
	AvoidOptionalsMutation     bool
	AvoidOptionalsSubscription bool
	AddUnderscoreToArgsType    bool
	EnumValues                 map[string]EnumValuesEntry
	ConstEnums                 bool
	EnumsAsTypes               bool
	FutureProofEnums           bool
	FutureProofUnions          bool
	EnumsAsConst               bool
	NumericEnums               bool
	OnlyEnums                  bool
	OnlyOperationTypes         bool
	MaybeValue                 string
	InputMaybeValue            string
	NoExport                   bool
	UseImplementingTypes       bool
	SkipTypename               bool
	NonOptionalTypename        bool
	DeclarationKind            map[string]string
}

ParsedConfig holds the parsed (defaulted) plugin config, mirroring the ParsedConfig / ParsedTypesConfig structures in visitor-plugin-common.

func ParseConfig

func ParseConfig(schema *ast.Schema, cfg map[string]any) (*ParsedConfig, error)

ParseConfig builds a ParsedConfig from a raw config map, defaulting everything.

type ScalarMapping

type ScalarMapping struct {
	Input  string
	Output string
}

ScalarMapping is a scalar's input/output TS type (ParsedScalarsMap entry).

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL