openapi-client-sdk-loader
Version:
An Open API loader for webpack. Compiles yaml to client sdk.
22 lines (14 loc) • 1.43 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = exports.compile = void 0;
var _utils = require("../../utils");
const prepareMimeType = mimeType => (0, _utils.dashes2capitals)((0, _utils.basepath)(mimeType));
const compile = (schemas, transform) => schemas ? Promise.all(Object.keys(schemas).map(schemaName => {
return (0, _utils.schema2typescript)(...transform(schemas, schemaName));
})).then(interfaces => interfaces.join('\n')) : Promise.resolve('');
exports.compile = compile;
const compileBodies = (bodies, nameSuffix) => bodies ? Object.keys(bodies).map(bodyName => compile(bodies[bodyName].content, (schemas, name) => [schemas[name].schema, `${bodyName}${nameSuffix}${prepareMimeType(name)}`])) : [Promise.resolve('')];
var _default = async (api) => Promise.all([api.components && api.components.schemas ? compile(api.components.schemas, (schemas, name) => [schemas[name], name]) : Promise.resolve(''), api.components && api.components.schemas ? compile(api.components.parameters, (schemas, name) => [schemas[name].schema, `${name}Param`]) : Promise.resolve(''), ...(api.components && api.components.requestBodies ? compileBodies(api.components.requestBodies, 'RequestBody') : []), ...(api.components && api.components.responses ? compileBodies(api.components.responses, 'Response') : [])]).then(interfaces => interfaces.join('\n'));
exports.default = _default;