@apideck/portman
Version:
Port OpenAPI Spec to Postman Collection, with contract & variation tests included
87 lines • 5.1 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.OpenApiToPostmanService = void 0;
var tslib_1 = require("tslib");
var fs_extra_1 = tslib_1.__importDefault(require("fs-extra"));
var openapi_to_postmanv2_1 = tslib_1.__importDefault(require("openapi-to-postmanv2"));
var ora_1 = tslib_1.__importDefault(require("ora"));
var path_1 = tslib_1.__importDefault(require("path"));
var OpenApiToPostmanService = (function () {
function OpenApiToPostmanService() {
}
OpenApiToPostmanService.prototype.convert = function (options) {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var _this = this;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0: return [4, new Promise(function (resolve, reject) {
var converterOptions = {
parametersResolution: undefined,
requestParametersResolution: undefined,
exampleParametersResolution: undefined
};
var inputFile = options.inputFile, openApiObj = options.openApiObj, configFile = options.configFile, outputFile = options.outputFile;
if (openApiObj) {
_this.openApiObj = openApiObj;
}
else if (inputFile) {
_this.openApiObj = JSON.parse(fs_extra_1.default.readFileSync(path_1.default.resolve(inputFile), 'utf8'));
}
else {
throw new Error('Missing OpenApiSpec Input.');
}
if (configFile) {
converterOptions = JSON.parse(fs_extra_1.default.readFileSync(path_1.default.resolve(configFile), 'utf8'));
if (!(converterOptions === null || converterOptions === void 0 ? void 0 : converterOptions.parametersResolution)) {
if (converterOptions === null || converterOptions === void 0 ? void 0 : converterOptions.requestParametersResolution) {
converterOptions.parametersResolution = converterOptions.requestParametersResolution;
}
if (converterOptions === null || converterOptions === void 0 ? void 0 : converterOptions.exampleParametersResolution) {
converterOptions.parametersResolution = converterOptions.exampleParametersResolution;
}
}
}
var spinner = (0, ora_1.default)({
prefixText: ' ',
text: 'Converting OpenApi to Postman Collection'
}).start();
openapi_to_postmanv2_1.default.convertV2({
type: 'json',
data: _this.openApiObj
}, converterOptions, function (err, status) {
if (err) {
spinner.fail(err.toString());
reject(err);
}
if (!status.result) {
spinner.fail(status.reason);
reject(status.reason);
}
else if (outputFile) {
var filePath = path_1.default.resolve(outputFile);
try {
fs_extra_1.default.outputFileSync(filePath, JSON.stringify(status.output[0].data, null, 4));
}
catch (error) {
console.log('Could not write to file', error);
spinner.fail(error.toString());
reject(error);
}
spinner.succeed('Conversion successful');
resolve(status.output[0].data);
}
else {
spinner.succeed('Conversion successful');
resolve(status.output[0].data);
}
});
})];
case 1: return [2, _a.sent()];
}
});
});
};
return OpenApiToPostmanService;
}());
exports.OpenApiToPostmanService = OpenApiToPostmanService;
//# sourceMappingURL=OpenApiToPostmanService.js.map