postman-json-chopper
Version:
Splits up large postman collection json file into folders and smaller files and merges them back together
40 lines (39 loc) • 1.79 kB
JavaScript
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.merge = void 0;
const fs_1 = __importDefault(require("fs"));
const path_1 = __importDefault(require("path"));
function merge(inFile, outFile) {
let jsonObject = JSON.parse(fs_1.default.readFileSync(`${inFile}`).toString());
let filePath = path_1.default.parse(inFile);
var rootItem = { jsonObject: jsonObject, directory: filePath.dir };
let itemQueue = [rootItem];
while (itemQueue.length > 0) {
let currentItem = itemQueue.shift();
if (typeof currentItem !== "undefined") {
if (Array.isArray(currentItem.jsonObject.item)) {
for (let i = 0; i < currentItem.jsonObject.item.length; i++) {
let ref = currentItem.jsonObject.item[i]["$ref"];
if (typeof ref === "undefined") {
continue;
}
let subItemPath = ref.replace("#", currentItem.directory);
let subItemDirectory = path_1.default.parse(subItemPath).dir;
let subItemJsonObject = JSON.parse(fs_1.default.readFileSync(`${subItemPath}`).toString());
let subItem = {
jsonObject: subItemJsonObject,
directory: subItemDirectory
};
itemQueue.push(subItem);
currentItem.jsonObject.item[i] = subItemJsonObject;
}
}
}
}
fs_1.default.writeFileSync(outFile, JSON.stringify(jsonObject, null, "\t"));
}
exports.merge = merge;
;