api
Version:
Magical SDK generation from an OpenAPI definition 🪄
32 lines (25 loc) • 896 B
text/typescript
import type CodeGeneratorLanguage from './language';
import type Oas from 'oas';
import TSGenerator from './languages/typescript';
export type SupportedLanguages = 'js' | 'js-cjs' | 'js-esm' | 'ts';
export default function codegen(
language: SupportedLanguages,
spec: Oas,
specPath: string,
identifier: string,
): CodeGeneratorLanguage {
switch (language) {
case 'js':
throw new TypeError('An export format of CommonJS or ECMAScript is required for JavaScript compilation.');
case 'js-cjs':
case 'js-esm':
case 'ts':
return new TSGenerator(spec, specPath, identifier, {
outputJS: ['js-cjs', 'js-esm'].includes(language),
// TS will always generate with ESM-like exports.
compilerTarget: language === 'js-cjs' ? 'cjs' : 'esm',
});
default:
throw new TypeError(`Unsupported language supplied: ${language}`);
}
}