Files
cfw-autumn/packages/openapi/api.ts
2026-05-14 10:33:36 +01:00

68 lines
1.7 KiB
TypeScript

import {
generateMintlifyDocs,
syncSvixTransforms,
} from "./utils/mintlifyTransform.js";
import { resolvePaths } from "./utils/paths.js";
import {
generateSdksInParallel,
mergeCodeSamples,
} from "./utils/sdkGeneration.js";
import { generateZodSchemas } from "./utils/zodSchemaGeneration.js";
async function main() {
const paths = resolvePaths();
const { writeOpenApi_2_3_0, writeOpenApi_2_3_0_Stripped } = await import(
"./v2.3/openapi2.3.js"
);
console.log("Generating OpenAPI specs v2.3 (full + stripped)...");
await Promise.all([
writeOpenApi_2_3_0({ outputFilePath: paths.openApiOutput }),
writeOpenApi_2_3_0_Stripped({
outputFilePath: paths.openApiStrippedOutput,
}),
]);
console.log(
`OpenAPI documents exported to ${paths.openApiOutput} and ${paths.openApiStrippedOutput}`,
);
// Generate TypeScript and Python SDKs in parallel
await generateSdksInParallel({
speakeasySdkDir: paths.tsSdkDir,
pythonSdkDir: paths.pythonSdkDir,
});
// Merge code samples into OpenAPI for docs
mergeCodeSamples({
speakeasySdkDir: paths.tsSdkDir,
pythonSdkDir: paths.pythonSdkDir,
outputPath: paths.docsOpenApiPath,
});
// Generate Mintlify docs (transform OpenAPI + generate MDX)
await generateMintlifyDocs({
openApiPath: paths.docsOpenApiPath,
docsDir: paths.docsDir,
});
// Sync Slack/Discord Svix transform sources into docs snippets
syncSvixTransforms({
svixTransformsDir: paths.svixTransformsDir,
docsDir: paths.docsDir,
});
// Generate Zod schemas for autumn-js from SDK types
await generateZodSchemas({
sdkDir: paths.tsSdkDir,
outputDir: paths.autumnJsGeneratedDir,
});
console.log("Done!");
}
main().catch((error) => {
console.error("Failed:", error);
process.exit(1);
});