UNPKG

@apideck/portman

Version:

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

135 lines 6.57 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.overwriteRequestQueryParams = void 0; var tslib_1 = require("tslib"); var postman_collection_1 = require("postman-collection"); var utils_1 = require("../../utils"); var lodash_1 = tslib_1.__importDefault(require("lodash")); var overwriteRequestQueryParams = function (dto) { var overwriteValues = dto.overwriteValues, pmOperation = dto.pmOperation, oaOperation = dto.oaOperation, globals = dto.globals; if (!(overwriteValues instanceof Array)) return pmOperation; var _overwriteValues = lodash_1.default.cloneDeep(overwriteValues); _overwriteValues .filter(function (_a) { var remove = _a.remove; return remove; }) .map(function (paramToRemove) { pmOperation.item.request.url.removeQueryParams(paramToRemove.key); }); var queryKeys = pmOperation.item.request.url.query.map(function (_a) { var key = _a.key; return key; }); var getKeyCount = function (key, counter) { return counter[key] || 0; }; var incrementKeyCount = function (key, counter) { counter[key] = getKeyCount(key, counter) + 1; return counter[key]; }; var queryKeyUsage = {}; queryKeys.forEach(function (key) { return incrementKeyCount(key, queryKeyUsage); }); var insertNewKeys = overwriteValues.filter(function (_a) { var key = _a.key; if (queryKeyUsage[key]) { queryKeyUsage[key]--; return false; } return true; }); var duplicateKeys = (0, lodash_1.default)(queryKeys) .countBy() .pickBy(function (count) { return count > 1; }) .keys() .value(); var newQueryParams = []; pmOperation.item.request.url.query.each(function (pmQueryParam) { var paramProcessed = false; var _loop_1 = function (i) { var overwriteItem = _overwriteValues[i]; if (!((overwriteItem === null || overwriteItem === void 0 ? void 0 : overwriteItem.key) && (pmQueryParam === null || pmQueryParam === void 0 ? void 0 : pmQueryParam.key) && overwriteItem.key === pmQueryParam.key) && !overwriteItem.key.includes('*')) { return "continue"; } if (overwriteItem.key.includes('*') && pmQueryParam.key && !(0, utils_1.matchWildcard)(pmQueryParam.key, overwriteItem.key)) { return "continue"; } var generatedName = (0, utils_1.parseTpl)({ template: overwriteItem.value, oaOperation: oaOperation, options: { casing: globals === null || globals === void 0 ? void 0 : globals.variableCasing } }); var overwriteValue = (overwriteItem === null || overwriteItem === void 0 ? void 0 : overwriteItem.value) && (0, utils_1.hasTpl)(overwriteItem.value) ? generatedName : overwriteItem === null || overwriteItem === void 0 ? void 0 : overwriteItem.value; var hasValue = false; if (overwriteValue !== undefined && (pmQueryParam === null || pmQueryParam === void 0 ? void 0 : pmQueryParam.value)) { hasValue = true; var orgValue = pmQueryParam.value; var newValue = overwriteValue; if ((overwriteItem === null || overwriteItem === void 0 ? void 0 : overwriteItem.overwrite) === false) { newValue = orgValue + newValue; } pmQueryParam.value = (newValue !== undefined && newValue !== null) || 'boolean' === typeof newValue ? "".concat(newValue).toString() : ''; } if ((overwriteItem === null || overwriteItem === void 0 ? void 0 : overwriteItem.disable) === false || hasValue) { pmQueryParam.disabled = false; } if ((overwriteItem === null || overwriteItem === void 0 ? void 0 : overwriteItem.disable) === true) { pmQueryParam.disabled = true; } if (overwriteItem === null || overwriteItem === void 0 ? void 0 : overwriteItem.description) { pmQueryParam.description = new postman_collection_1.Description(overwriteItem.description); } newQueryParams.push(pmQueryParam); paramProcessed = true; if (duplicateKeys.includes(pmQueryParam.key)) { lodash_1.default.remove(_overwriteValues, function (item) { return item === overwriteItem; }); return "break"; } }; for (var i = 0; i < _overwriteValues.length; i++) { var state_1 = _loop_1(i); if (state_1 === "break") break; } if (!paramProcessed) { newQueryParams.push(pmQueryParam); } }); insertNewKeys .filter(function (overwriteItem) { return !(overwriteItem.insert === false); }) .filter(function (overwriteItem) { return !(overwriteItem.remove === true); }) .map(function (queryToInsert) { var _a, _b; var newPmQueryParam = { key: queryToInsert.key, value: '', disabled: false }; if ((queryToInsert === null || queryToInsert === void 0 ? void 0 : queryToInsert.key) && duplicateKeys.includes(queryToInsert.key)) { var queryParamsArray = pmOperation.item.request.url.query.toJSON(); var orgParam = lodash_1.default.find(queryParamsArray, { key: queryToInsert.key }); if (orgParam) { newPmQueryParam = orgParam; } } if (queryToInsert === null || queryToInsert === void 0 ? void 0 : queryToInsert.value) newPmQueryParam.value = (_b = (_a = queryToInsert.value) === null || _a === void 0 ? void 0 : _a.toString()) !== null && _b !== void 0 ? _b : ''; if (queryToInsert.disable === true) newPmQueryParam.disabled = true; if (queryToInsert.description) newPmQueryParam.description = queryToInsert.description; newQueryParams.push(newPmQueryParam); }); pmOperation.item.request.url.query.clear(); newQueryParams.forEach(function (param) { return pmOperation.item.request.url.query.append(param); }); return pmOperation; }; exports.overwriteRequestQueryParams = overwriteRequestQueryParams; //# sourceMappingURL=overwriteRequestQueryParams.js.map