renderer
Rendererβ
Defined in: core/src/renderer.ts:335
Core renderer class responsible for generating documentation files from GraphQL schema entities. Handles the conversion of schema types to markdown/MDX documentation with proper organization.
HIERARCHY LEVELS WHEN categorySort IS ENABLED:
- Level 0 (root): Query, Mutation, Subscription, Custom Groups β 01-Query, 02-Mutation, etc.
- Level 1 (under root): Specific types within each root β 01-Objects, 02-Enums, etc.
Each level has its own CategoryPositionManager that restarts numbering at 1.
Exampleβ
Constructorsβ
Constructorβ
new Renderer(
printer,
outputDir,
baseURL,
group,
prettify,
docOptions,
mdxExtension): Renderer;
Defined in: core/src/renderer.ts:360
Creates a new Renderer instance.
Parametersβ
printerβ
typeof IPrinter
The printer instance used to convert GraphQL types to markdown
outputDirβ
string
Directory where documentation will be generated
baseURLβ
string
Base URL for the documentation
groupβ
Maybe<Partial<Record<SchemaEntity, Record<string, Maybe<string>>>>>
Optional grouping configuration for schema entities
prettifyβ
boolean
Whether to format the generated markdown
docOptionsβ
Maybe<RendererDocOptions>
Additional documentation options
mdxExtensionβ
string
Optional MDX file extension to use
Returnsβ
Exampleβ
Propertiesβ
baseURLβ
readonly baseURL: string;
Defined in: core/src/renderer.ts:338
groupβ
readonly group: Maybe<Partial<Record<SchemaEntity, Record<string, Maybe<string>>>>>;
Defined in: core/src/renderer.ts:336
mdxExtensionβ
readonly mdxExtension: string;
Defined in: core/src/renderer.ts:341
optionsβ
readonly options: Maybe<RendererDocOptions>;
Defined in: core/src/renderer.ts:340
outputDirβ
readonly outputDir: string;
Defined in: core/src/renderer.ts:337
prettifyβ
readonly prettify: boolean;
Defined in: core/src/renderer.ts:339
Methodsβ
generateCategoryMetafileType()β
generateCategoryMetafileType(
type,
name,
rootTypeName): Promise<string>;
Defined in: core/src/renderer.ts:463
Generates the directory path and metafiles for a specific schema entity type. Creates the appropriate directory structure based on configuration options.
Parametersβ
typeβ
unknown
The schema entity type
nameβ
string
The name of the schema entity
rootTypeNameβ
SchemaEntity
The root type name this entity belongs to
Returnsβ
Promise<string>
The generated directory path
Exampleβ
generateIndexMetafile()β
generateIndexMetafile(
dirPath,
category,
options?): Promise<void>;
Defined in: core/src/renderer.ts:408
Generates an index metafile for a category directory if MDX support is available.
Parametersβ
dirPathβ
string
The directory path where the index should be created
categoryβ
string
The category name
options?β
Configuration options for the index
Returnsβ
Promise<void>
Promise that resolves when the index is generated
Exampleβ
await renderer.generateIndexMetafile("docs/types", "Types", {
collapsible: true,
collapsed: false,
});
preCollectCategories()β
preCollectCategories(rootTypeNames): void;
Defined in: core/src/renderer.ts:753
Pre-collects all category names that will be generated during rendering. This allows the position manager to assign consistent positions before any files are written.
HIERARCHY LEVELS:
- Root level: Query, Mutation, Subscription, Deprecated (when grouped), custom root groups
- Nested level: operations/types (API groups), custom groups under roots
CRITICAL: Categories registered must match the NAMES USED BY THE PRINTER when generating links. The printer uses plural forms from ROOT_TYPE_LOCALE: "operations", "objects", "directives", "enums", "inputs", "interfaces", "mutations", "queries", "scalars", "subscriptions", "unions"
NOT the folder names: "operations", "types"
Parametersβ
rootTypeNamesβ
string[]
Array of root type names from the schema
Returnsβ
void
renderHomepage()β
renderHomepage(homepageLocation): Promise<void>;
Defined in: core/src/renderer.ts:803
Renders the homepage for the documentation from a template file. Replaces placeholders in the template with actual values.
Parametersβ
homepageLocationβ
Maybe<string>
Path to the homepage template file
Returnsβ
Promise<void>
Promise that resolves when the homepage is rendered
Exampleβ
renderRootTypes()β
renderRootTypes(rootTypeName, type): Promise<Maybe<Maybe<Category>[]>>;
Defined in: core/src/renderer.ts:547
Renders all types within a root type category (e.g., all Query types).
Parametersβ
rootTypeNameβ
SchemaEntity
The name of the root type (e.g., "Query", "Mutation")
typeβ
unknown
The type object containing all entities to render
Returnsβ
Promise<Maybe<Maybe<Category>[]>>
Array of rendered categories or undefined
Exampleβ
renderTypeEntities()β
renderTypeEntities(
dirPath,
name,
type,
operationNamespaceParts?): Promise<Maybe<Category>>;
Defined in: core/src/renderer.ts:614
Renders documentation for a specific type entity and saves it to a file.
Parametersβ
dirPathβ
string
The directory path where the file should be saved
nameβ
string
The name of the type entity
typeβ
unknown
The type entity to render
operationNamespaceParts?β
string[]
Returnsβ
Promise<Maybe<Category>>
The category information for the rendered entity or undefined
Exampleβ
CategoryMetafileOptionsβ
Defined in: core/src/renderer.ts:219
Configuration options for category metafiles in the documentation. These options control the appearance and behavior of category sections in the sidebar.
CategoryMetafileOptions
Exampleβ
const options: CategoryMetafileOptions = {
collapsible: true,
collapsed: false,
sidebarPosition: SidebarPosition.FIRST,
styleClass: CATEGORY_STYLE_CLASS.API,
};
Propertiesβ
collapsed?β
optional collapsed?: boolean;
Defined in: core/src/renderer.ts:221
Whether the category should be initially collapsed
collapsible?β
optional collapsible?: boolean;
Defined in: core/src/renderer.ts:220
Whether the category should be collapsible in the sidebar
sidebarPosition?β
optional sidebarPosition?: number;
Defined in: core/src/renderer.ts:222
Custom position in the sidebar (lower numbers appear first)
styleClass?β
optional styleClass?: string;
Defined in: core/src/renderer.ts:223
CSS class to apply to the category for styling
API_GROUPSβ
const API_GROUPS: Required<ApiGroupOverrideType>;
Defined in: core/src/renderer.ts:124
Default group names for API types and non-API types. This constant provides the base folder structure for organizing GraphQL schema entities. Can be overridden via ApiGroupOverrideType in configuration.
Exampleβ
// Default structure
const defaultGroups = API_GROUPS;
// { operations: "operations", types: "types" }
// With custom override
const customGroups = { ...API_GROUPS, operations: "queries-and-mutations" };
Seeβ
getApiGroupFolder For usage with type categorization
getApiGroupFolder()β
function getApiGroupFolder(type, groups?): string;
Defined in: core/src/renderer.ts:145
Determines the appropriate folder for a GraphQL schema entity based on its type.
Parametersβ
typeβ
unknown
The GraphQL schema entity to categorize
groups?β
Maybe<boolean | ApiGroupOverrideType>
Optional custom group naming configuration
Returnsβ
string
The folder name where the entity should be placed
Exampleβ
// With default groups
const folder = getApiGroupFolder(queryType); // Returns "operations"
// With custom groups
const folder = getApiGroupFolder(objectType, { operations: "queries" }); // Returns appropriate folder
getRenderer()β
function getRenderer(
printer,
outputDir,
baseURL,
group,
prettify,
docOptions,
mdxExtension,
): Promise<Renderer>;
Defined in: core/src/renderer.ts:1035
Factory function to create and initialize a Renderer instance. Creates the output directory and returns a configured renderer.
Parametersβ
printerβ
typeof IPrinter
The printer instance to use for rendering types
outputDirβ
string
The output directory for generated documentation
baseURLβ
string
The base URL for the documentation
groupβ
Maybe<Partial<Record<SchemaEntity, Record<string, Maybe<string>>>>>
Optional grouping configuration
prettifyβ
boolean
Whether to prettify the output markdown
docOptionsβ
Maybe<RendererDocOptions>
Additional documentation options
mdxExtensionβ
string
Extension to use for MDX files
Returnsβ
Promise<Renderer>
A configured Renderer instance
Exampleβ
const renderer = await getRenderer(
myPrinter,
"./docs",
"/api",
groupConfig,
true,
{ force: true, index: true },
);