UNPKG

microcms_sdk_generator

Version:
26 lines (25 loc) 1.29 kB
import * as dntShim from "./_dnt.shims.js"; import { parseSchemaFiles } from "./schemaFilesParser.js"; import { format } from "prettier"; import { printDefTypeImpl } from "./templates/defType.js"; import { printOutputSchema } from "./templates/outputSchema.js"; import { printClientImpl } from "./templates/client.js"; import { printBaseSchemas } from "./templates/baseSchemas.js"; import { printInputSchema } from "./templates/inputSchema.js"; export async function generate({ schemaDir, dstFilePath, }) { await dntShim.Deno.writeTextFile(dstFilePath, await generateAsString({ schemaDir })); } export async function generateAsString({ schemaDir, }) { const header = `// Auto generated by "microcms_sdk_generator". DO NOT EDIT. import { z } from "zod"; `; const apis = parseSchemaFiles(schemaDir); return format([ header, await printBaseSchemas(), (await Promise.all(apis.map(async (api) => await printDefTypeImpl(api)))).join("\n"), (await Promise.all(apis.map(async (api) => await printInputSchema(api)))).join("\n"), (await Promise.all(apis.map(async (api) => await printOutputSchema(api)))).join("\n"), await printClientImpl(apis), ].join("\n"), { parser: "typescript", semi: true, trailingComma: "all" }); }