UNPKG

@spec2ts/openapi-client

Version:

Utility to convert OpenAPI v3 specifications to Typescript HTTP client using TypeScript native compiler

40 lines (39 loc) 1.71 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.generateClient = exports.generateClientFromFile = void 0; const path = require("path"); const ts = require("typescript"); const core = require("@spec2ts/core"); const json_schema_ref_parser_1 = require("@apidevtools/json-schema-ref-parser"); const core_parser_1 = require("@spec2ts/jsonschema/lib/core-parser"); const core_parser_2 = require("@spec2ts/openapi/lib/core-parser"); const core_generator_1 = require("./core-generator"); async function generateClientFromFile(file, options = {}) { const schema = await json_schema_ref_parser_1.default.parse(file); return generateClient(schema, { cwd: path.resolve(path.dirname(file)) + "/", ...options }); } exports.generateClientFromFile = generateClientFromFile; async function generateClient(spec, options = {}) { if (!options.parseReference) { options.parseReference = core_parser_2.parseReference; } const context = await (0, core_parser_1.createContext)(spec, options); let file = await core.createSourceFileFromFile(__dirname + "/templates/_client.tpl.ts"); if (context.options.typesPath) { context.typesFile = ts.createSourceFile("types.ts", "", ts.ScriptTarget.Latest, false, ts.ScriptKind.TS); } file = (0, core_generator_1.generateServers)(file, spec, context); file = (0, core_generator_1.generateDefaults)(file, context); file = (0, core_generator_1.generateFunctions)(file, spec, context); if (context.options.typesPath) { return { client: file, types: context.typesFile }; } return file; } exports.generateClient = generateClient;