UNPKG

@apideck/portman

Version:

Port OpenAPI Spec to Postman Collection, with contract & variation tests included

54 lines 2.34 kB
"use strict"; 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