UNPKG

temporeest

Version:
55 lines (48 loc) 1.78 kB
import { CodegenStep, CodegenFile, generatedDir } from '@aphro/codegen-api'; import { nodeFn } from '@aphro/schema'; import { SchemaEdge, SchemaNode } from '@aphro/schema-api'; import * as path from 'path'; import GenTypescriptQuery from './GenTypescriptQuery.js'; import GenTypescriptSpec from './GenTypescriptSpec.js'; import TypescriptFile from './TypescriptFile.js'; export class GenSchemaExports extends CodegenStep { constructor( private nodes: SchemaNode[], private edges: SchemaEdge[], private schemaFileName: string, ) { super(); } static accepts(nodes: SchemaNode[], edges: SchemaEdge[]): boolean { return true; } async gen(): Promise<CodegenFile> { const filename = 'exports.ts'; const code = `${this.nodes.map(this.getExportCode).join('\n')} ${this.edges.map(this.getExportCode).join('\n')}`; return new TypescriptFile(path.join(generatedDir, filename), code); } private getExportCode(nodeOrEdge: SchemaEdge | SchemaNode): string { const exports = [`export { default as ${nodeOrEdge.name} } from "../${nodeOrEdge.name}.js";`]; if ((nodeOrEdge.extensions as any).mutations) { exports.push( `export { default as ${nodeOrEdge.name}Mutations } from "./${nodeOrEdge.name}Mutations.js";`, ); } if (GenTypescriptSpec.accepts(nodeOrEdge)) { exports.push( `export { default as ${nodeFn.specName(nodeOrEdge.name)} } from "./${nodeFn.specName( nodeOrEdge.name, )}.js"`, ); } if (GenTypescriptQuery.accepts(nodeOrEdge)) { exports.push( `export { default as ${nodeFn.queryTypeName( nodeOrEdge.name, )} } from "./${nodeFn.queryTypeName(nodeOrEdge.name)}.js"`, ); } return exports.join('\n'); } }