UNPKG

796 BPlain TextView Raw
1import type { Config } from './generateCode.js'
2
3export type CodeGeneratorImplementation = (config: Config) => CodeGeneratorImplementationResult
4type CodeGeneratorImplementationResult = string
5
6interface CodeGeneratorResult {
7 moduleName: string
8 code: string
9}
10
11export type CodeGenerator = (config: Config) => CodeGeneratorResult
12
13export type CodeGeneratorConstructor = (
14 moduleName: string,
15 codeGenerator: CodeGeneratorImplementation,
16) => { moduleName: string; generate: CodeGenerator }
17
18export const createCodeGenerator: CodeGeneratorConstructor = (moduleName: string, codeGeneratorImplementation) => {
19 const generate = (config: Config) => {
20 const code = codeGeneratorImplementation(config)
21 return {
22 code,
23 moduleName,
24 }
25 }
26 return { moduleName, generate }
27}