UNPKG

openapi-typescript

Version:

Generate TypeScript types from Swagger OpenAPI specs

50 lines (48 loc) 1.83 kB
import path from "path"; import prettier from "prettier"; import parserTypescript from "prettier/parser-typescript"; import { swaggerVersion } from "./utils"; import { transformAll } from "./transform/index"; export * from "./types"; export const WARNING_MESSAGE = `/** * This file was auto-generated by openapi-typescript. * Do not make direct changes to the file. */ `; export default function openapiTS(schema, options = {}) { const ctx = { additionalProperties: options.additionalProperties || false, auth: options.auth, defaultNonNullable: options.defaultNonNullable || false, formatter: typeof options.formatter === "function" ? options.formatter : undefined, immutableTypes: options.immutableTypes || false, rawSchema: options.rawSchema || false, version: options.version || swaggerVersion(schema), }; let output = WARNING_MESSAGE; const rootTypes = transformAll(schema, { ...ctx }); for (const k of Object.keys(rootTypes)) { if (typeof rootTypes[k] !== "string") continue; output += `export interface ${k} {\n ${rootTypes[k]}\n}\n\n`; } let prettierOptions = { parser: "typescript", plugins: [parserTypescript], }; if (options && options.prettierConfig) { try { const userOptions = prettier.resolveConfig.sync(path.resolve(process.cwd(), options.prettierConfig)); prettierOptions = { ...(userOptions || {}), ...prettierOptions, plugins: [...prettierOptions.plugins, ...((userOptions && userOptions.plugins) || [])], }; } catch (err) { console.error(`❌ ${err}`); } } return prettier.format(output, prettierOptions); } //# sourceMappingURL=index.js.map