@apideck/portman
Version:
Port OpenAPI Spec to Postman Collection, with contract & variation tests included
54 lines • 2.34 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.injectEnvVariables = exports.upsertVariable = void 0;
var tslib_1 = require("tslib");
var dotenv_1 = require("dotenv");
var path_1 = tslib_1.__importDefault(require("path"));
var openapi_format_1 = require("openapi-format");
var upsertVariable = function (variables, key, value, type) {
var toInject = { key: key, value: value, type: type };
var updateIndex = variables.findIndex(function (variable) { return variable['key'] === key; });
if (updateIndex > -1) {
variables[updateIndex] = toInject;
}
else {
variables.push(toInject);
}
return variables;
};
exports.upsertVariable = upsertVariable;
var injectEnvVariables = function (obj, envFile, baseUrl, globals) {
var e_1, _a;
var _b, _c;
var variables = obj.variable || [];
var baseUrlFromSpec = (_b = variables.find(function (item) {
return item.id === 'baseUrl';
})) === null || _b === void 0 ? void 0 : _b.value;
envFile && (0, dotenv_1.config)({ path: path_1.default.resolve(envFile) });
var parsed = process.env;
try {
for (var _d = tslib_1.__values(Object.entries(parsed)), _e = _d.next(); !_e.done; _e = _d.next()) {
var _f = tslib_1.__read(_e.value, 2), key = _f[0], val = _f[1];
if (key.startsWith('PORTMAN_')) {
var id = key.replace('PORTMAN_', '');
variables = (0, exports.upsertVariable)(variables, (0, openapi_format_1.changeCase)(id, (_c = globals === null || globals === void 0 ? void 0 : globals.variableCasing) !== null && _c !== void 0 ? _c : 'camelCase'), val, 'string');
}
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (_e && !_e.done && (_a = _d.return)) _a.call(_d);
}
finally { if (e_1) throw e_1.error; }
}
if (baseUrl || baseUrlFromSpec) {
variables = (0, exports.upsertVariable)(variables, 'baseUrl', baseUrl || baseUrlFromSpec, 'string');
}
var uniqueVariables = Array.from(new Set(variables));
var collection = JSON.parse(JSON.stringify(obj));
collection.variable = uniqueVariables;
return collection;
};
exports.injectEnvVariables = injectEnvVariables;
//# sourceMappingURL=injectEnvVariables.js.map