UNPKG

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
#!/usr/bin/env node "use strict"; 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;