@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
JavaScript
;
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;