@apideck/portman
Version:
Port OpenAPI Spec to Postman Collection, with contract & variation tests included
33 lines • 1.72 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.orderCollectionFolders = void 0;
var tslib_1 = require("tslib");
var postman_collection_1 = require("postman-collection");
var orderCollectionFolders = function (obj, orderOfFolders) {
if (orderOfFolders === void 0) { orderOfFolders = []; }
var collection = obj instanceof postman_collection_1.Collection ? obj : new postman_collection_1.Collection(obj);
var folders = [];
var nonFolderItems = [];
collection.items.each(function (item) {
if (postman_collection_1.ItemGroup.isItemGroup(item)) {
folders.push(item);
}
else {
nonFolderItems.push(item);
}
});
var folderMap = new Map(folders.map(function (folder, index) { return [folder.name, index]; }));
var sortedFolders = orderOfFolders
.map(function (name) { return folderMap.get(name); })
.filter(function (index) { return index !== undefined; })
.map(function (index) { return folders[index]; });
var remainingFolders = folders.filter(function (folder) { return !orderOfFolders.includes(folder.name); });
var orderedFolders = tslib_1.__spreadArray(tslib_1.__spreadArray([], tslib_1.__read(sortedFolders), false), tslib_1.__read(remainingFolders), false);
collection.items.clear();
orderedFolders.forEach(function (folder) { return collection.items.add(folder); });
nonFolderItems.forEach(function (item) { return collection.items.add(item); });
var collectionObj = JSON.parse(JSON.stringify(collection));
return collectionObj;
};
exports.orderCollectionFolders = orderCollectionFolders;
//# sourceMappingURL=orderCollectionFolders.js.map