UNPKG

graphql-request

Version:

Minimal GraphQL client supporting Node and browsers for scripts or simple apps.

28 lines (22 loc) 796 B
import type { Config } from './generateCode.js' export type CodeGeneratorImplementation = (config: Config) => CodeGeneratorImplementationResult type CodeGeneratorImplementationResult = string interface CodeGeneratorResult { moduleName: string code: string } export type CodeGenerator = (config: Config) => CodeGeneratorResult export type CodeGeneratorConstructor = ( moduleName: string, codeGenerator: CodeGeneratorImplementation, ) => { moduleName: string; generate: CodeGenerator } export const createCodeGenerator: CodeGeneratorConstructor = (moduleName: string, codeGeneratorImplementation) => { const generate = (config: Config) => { const code = codeGeneratorImplementation(config) return { code, moduleName, } } return { moduleName, generate } }