@apideck/portman
Version:
Port OpenAPI Spec to Postman Collection, with contract & variation tests included
135 lines • 6.57 kB
JavaScript
;
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