import type { Emitter, EmitterContext, GeneratedFile, ApiSpec, Model, Enum, Service } from '@workos/oagen'; import { generateModels } from './generators/models.js'; import { generateEnums } from './generators/enums.js'; import { generateResources } from './generators/resources.js'; import { generateClient } from './generators/client.js'; import { generateErrors } from './generators/errors.js'; import { generateTests } from './generators/tests.js'; /** * Reference TypeScript emitter for oagen. * * This emitter demonstrates how to implement the Emitter interface by * generating TypeScript interfaces, literal union types, resource classes, * and a top-level client. It is intentionally simple — production emitters * typically handle overlay resolution, compat-aware naming, and merge modes. */ export const typescriptEmitter: Emitter = { language: 'typescript', generateModels(models: Model[], ctx: EmitterContext): GeneratedFile[] { return generateModels(models, ctx); }, generateEnums(enums: Enum[], ctx: EmitterContext): GeneratedFile[] { return generateEnums(enums, ctx); }, generateResources(services: Service[], ctx: EmitterContext): GeneratedFile[] { return generateResources(services, ctx); }, generateClient(spec: ApiSpec, ctx: EmitterContext): GeneratedFile[] { return generateClient(spec, ctx); }, generateErrors(ctx: EmitterContext): GeneratedFile[] { return generateErrors(ctx); }, generateTests(spec: ApiSpec, ctx: EmitterContext): GeneratedFile[] { return generateTests(spec, ctx); }, fileHeader(): string { return '// Auto-generated by oagen reference emitter. Do not edit.'; }, };