printer
GraphQL Schema Printer Module
This module provides functionality for printing GraphQL schema types into Markdown documentation. It includes utilities for handling various GraphQL types, custom directives, and formatting options.
Printer
Defined in: printer-legacy/src/printer.ts:118
The Printer class implements the core functionality for generating Markdown documentation from GraphQL schema types.
Remarks
This class provides static methods for rendering different components of the documentation:
- Headers and frontmatter
- Type descriptions and code blocks
- Custom directives and metadata
- Examples and relations
Example
const printer = new Printer();
await printer.init(schema, "/docs", "graphql", options);
const docs = printer.printType("Query", queryType);
Implements
IPrinter
Constructors
Constructor
new Printer(): Printer;
Returns
Properties
eventEmitter
static eventEmitter: Maybe<PrinterEventEmitter>;
Defined in: printer-legacy/src/printer.ts:129
Optional event emitter for print events. When set, the printer will emit events before/after printCode and printType, allowing external code to intercept and modify the output.
mdxDeclaration
static mdxDeclaration: Readonly<Maybe<string>>;
Defined in: printer-legacy/src/printer.ts:149
Prints mdx modules import declaration
options
static options: Readonly<Maybe<PrintTypeOptions>>;
Defined in: printer-legacy/src/printer.ts:122
Global printer configuration options
printCustomDirectives()
readonly static printCustomDirectives: (type, options) => string;
Defined in: printer-legacy/src/printer.ts:139
Prints custom directives
Prints all custom directives for a type as a Markdown section
Parameters
type
unknown
The GraphQL type to print directives for
options
PrintTypeOptions
General printing options
Returns
string
Markdown string containing all formatted directives
printCustomTags()
readonly static printCustomTags: (type, options) => string | MDXString;
Defined in: printer-legacy/src/printer.ts:144
Prints custom tags
Prints custom directive tags as Markdown badges
Parameters
type
unknown
The GraphQL type to print tags for
options
PrintTypeOptions
General printing options
Returns
string | MDXString
Formatted Markdown string of badges or empty string
printDescription()
readonly static printDescription: (type, options, noText?) => string | MDXString;
Defined in: printer-legacy/src/printer.ts:134
Prints type descriptions
Prints the complete description for a GraphQL type, including deprecation warnings and custom directives.
Parameters
type
unknown
The GraphQL type to document
options
PrintTypeOptions
Configuration options for printing
noText?
string
Optional text to display when no description exists
Returns
string | MDXString
Combined description, deprecation notices, and custom directives as MDX content
Methods
init()
static init(
schema,
baseURL,
linkRoot,
options,
formatter?,
mdxDeclaration?,
eventEmitter?): Promise<void>;
Defined in: printer-legacy/src/printer.ts:162
Initializes the printer with the given schema and configuration.
Parameters
schema
Maybe<GraphQLSchema>
GraphQL schema to generate documentation for
baseURL
Maybe<string> = "schema"
Base URL path for documentation, e.g. '/docs'
linkRoot
Maybe<string> = "/"
Root path for generating links between types
options
Configuration options for the printer
customDirectives?
CustomDirectiveMap
deprecated?
TypeDeprecatedOption
groups?
Partial<Record<SchemaEntity, Record<string, Maybe<string>>>>
meta?
Maybe<MetaInfo>
metatags?
Record<string, string>[]
onlyDocDirectives?
GraphQLDirective[]
printTypeOptions?
PrinterConfigPrintTypeOptions
skipDocDirectives?
GraphQLDirective[]
formatter?
Partial<Formatter>
Optional formatter functions for customizing output format
mdxDeclaration?
Maybe<string>
Optional MDX import declaration
eventEmitter?
Maybe<PrinterEventEmitter>
Optional event emitter for print events interception
Returns
Promise<void>
printCode()
readonly static printCode(type, options): string;
Defined in: printer-legacy/src/printer.ts:259
Prints the GraphQL type definition as code block
Parameters
type
unknown
GraphQL type to print
options
PrintTypeOptions
Printer configuration options
Returns
string
Formatted code block string with type definition
printCodeAsync()
readonly static printCodeAsync(
type,
typeName,
options): Promise<string>;
Defined in: printer-legacy/src/printer.ts:319
Prints the GraphQL type definition as code block with event emission support.
Parameters
type
unknown
GraphQL type to print
typeName
string
Name of the type being printed
options
PrintTypeOptions
Printer configuration options
Returns
Promise<string>
Promise resolving to formatted code block string with type definition
Remarks
This async version emits events before and after code generation:
print:beforePrintCode- Emitted before generating code (can modify inputs or prevent default)print:afterPrintCode- Emitted after generating code (can modify output)
Event handlers can:
- Modify
event.data.optionsin BEFORE to affect code generation - Call
event.preventDefault()in BEFORE to skip default generation and provide custom output - Modify
event.outputin AFTER to change the final result
printExample()
readonly static printExample(type, options): string;
Defined in: printer-legacy/src/printer.ts:374
Prints example usage of the type if available
Parameters
type
unknown
GraphQL type to generate example for
options
PrintTypeOptions
Printer configuration options
Returns
string
Formatted example section string or empty string if no example
printHeader()
readonly static printHeader(
id,
title,
options): string;
Defined in: printer-legacy/src/printer.ts:238
Prints the header section of a type documentation
Parameters
id
string
Unique identifier for the type
title
string
Display title for the type
options
PrintTypeOptions
Printer configuration options
Returns
string
Formatted header string with optional frontmatter
printMetaTags()
readonly static printMetaTags(_type, options): string | MDXString;
Defined in: printer-legacy/src/printer.ts:456
Prints HTML meta tags for the documentation
Parameters
_type
unknown
GraphQL type (unused)
options
PrintTypeOptions
Printer configuration options containing metatags
Returns
string | MDXString
Formatted HTML meta tags string
printRelations()
readonly static printRelations(type, options): string | MDXString;
Defined in: printer-legacy/src/printer.ts:439
Prints related type information
Parameters
type
unknown
GraphQL type to find relations for
options
PrintTypeOptions
Printer configuration options
Returns
string | MDXString
Formatted relations section as MDX or plain string
printType()
readonly static printType(
name,
type,
options?): Promise<Maybe<MDXString>>;
Defined in: printer-legacy/src/printer.ts:506
Main method to print complete documentation for a GraphQL type
Parameters
name
Maybe<string>
Name identifier for the type
type
unknown
GraphQL type to generate documentation for
options?
Maybe<Partial<PrintTypeOptions>>
Optional printer configuration options
Returns
Promise<Maybe<MDXString>>
Complete documentation as MDX string or undefined if type should be skipped
Example
const doc = await Printer.printType("User", UserType, {
frontMatter: true,
codeSection: true,
});
Remarks
The method combines multiple sections:
- Header with frontmatter
- Meta tags
- Description
- Code definition
- Custom directives
- Type metadata
- Example usage
- Related types
When an event emitter is configured, emits events:
print:beforePrintType- Before generating documentationprint:afterPrintType- After generating documentation (output can be modified)
printTypeMetadata()
readonly static printTypeMetadata(type, options): string | MDXString;
Defined in: printer-legacy/src/printer.ts:403
Prints metadata information for a GraphQL type
Parameters
type
unknown
GraphQL type to print metadata for
options
PrintTypeOptions
Printer configuration options
Returns
string | MDXString
Formatted metadata string as MDX or plain string
Throws
When type is not supported