@naandalist/patch-package
Version:
Fix broken node modules with no fuss
56 lines • 6.4 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getGroupedPatches = exports.getPatchFiles = void 0;
const PackageDetails_1 = require("./PackageDetails");
const path_1 = require("./path");
const klaw_sync_1 = __importDefault(require("klaw-sync"));
const getPatchFiles = (patchesDir) => {
try {
return (0, klaw_sync_1.default)(patchesDir, { nodir: true })
.map(({ path }) => (0, path_1.relative)(patchesDir, path))
.filter((path) => path.endsWith(".patch"));
}
catch (e) {
return [];
}
};
exports.getPatchFiles = getPatchFiles;
const getGroupedPatches = (patchesDirectory) => {
const files = (0, exports.getPatchFiles)(patchesDirectory);
if (files.length === 0) {
return {
numPatchFiles: 0,
pathSpecifierToPatchFiles: {},
warnings: [],
};
}
const warnings = [];
const pathSpecifierToPatchFiles = {};
for (const file of files) {
const details = (0, PackageDetails_1.getPackageDetailsFromPatchFilename)(file);
if (!details) {
warnings.push(`Unrecognized patch file in patches directory ${file}`);
continue;
}
if (!pathSpecifierToPatchFiles[details.pathSpecifier]) {
pathSpecifierToPatchFiles[details.pathSpecifier] = [];
}
pathSpecifierToPatchFiles[details.pathSpecifier].push(details);
}
for (const arr of Object.values(pathSpecifierToPatchFiles)) {
arr.sort((a, b) => {
var _a, _b;
return ((_a = a.sequenceNumber) !== null && _a !== void 0 ? _a : 0) - ((_b = b.sequenceNumber) !== null && _b !== void 0 ? _b : 0);
});
}
return {
numPatchFiles: files.length,
pathSpecifierToPatchFiles,
warnings,
};
};
exports.getGroupedPatches = getGroupedPatches;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0Y2hGcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9wYXRjaEZzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLHFEQUd5QjtBQUN6QixpQ0FBaUM7QUFDakMsMERBQWdDO0FBRXpCLE1BQU0sYUFBYSxHQUFHLENBQUMsVUFBa0IsRUFBRSxFQUFFO0lBQ2xELElBQUk7UUFDRixPQUFPLElBQUEsbUJBQVEsRUFBQyxVQUFVLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUM7YUFDekMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBQSxlQUFRLEVBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO2FBQzdDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFBO0tBQzdDO0lBQUMsT0FBTyxDQUFDLEVBQUU7UUFDVixPQUFPLEVBQUUsQ0FBQTtLQUNWO0FBQ0gsQ0FBQyxDQUFBO0FBUlksUUFBQSxhQUFhLGlCQVF6QjtBQU9NLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxnQkFBd0IsRUFBa0IsRUFBRTtJQUM1RSxNQUFNLEtBQUssR0FBRyxJQUFBLHFCQUFhLEVBQUMsZ0JBQWdCLENBQUMsQ0FBQTtJQUU3QyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1FBQ3RCLE9BQU87WUFDTCxhQUFhLEVBQUUsQ0FBQztZQUNoQix5QkFBeUIsRUFBRSxFQUFFO1lBQzdCLFFBQVEsRUFBRSxFQUFFO1NBQ2IsQ0FBQTtLQUNGO0lBRUQsTUFBTSxRQUFRLEdBQWEsRUFBRSxDQUFBO0lBRTdCLE1BQU0seUJBQXlCLEdBQTRDLEVBQUUsQ0FBQTtJQUM3RSxLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRTtRQUN4QixNQUFNLE9BQU8sR0FBRyxJQUFBLG1EQUFrQyxFQUFDLElBQUksQ0FBQyxDQUFBO1FBQ3hELElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDWixRQUFRLENBQUMsSUFBSSxDQUFDLGdEQUFnRCxJQUFJLEVBQUUsQ0FBQyxDQUFBO1lBQ3JFLFNBQVE7U0FDVDtRQUNELElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEVBQUU7WUFDckQseUJBQXlCLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxHQUFHLEVBQUUsQ0FBQTtTQUN0RDtRQUNELHlCQUF5QixDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7S0FDL0Q7SUFDRCxLQUFLLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMseUJBQXlCLENBQUMsRUFBRTtRQUMxRCxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFOztZQUNoQixPQUFPLENBQUMsTUFBQSxDQUFDLENBQUMsY0FBYyxtQ0FBSSxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQUEsQ0FBQyxDQUFDLGNBQWMsbUNBQUksQ0FBQyxDQUFDLENBQUE7UUFDMUQsQ0FBQyxDQUFDLENBQUE7S0FDSDtJQUVELE9BQU87UUFDTCxhQUFhLEVBQUUsS0FBSyxDQUFDLE1BQU07UUFDM0IseUJBQXlCO1FBQ3pCLFFBQVE7S0FDVCxDQUFBO0FBQ0gsQ0FBQyxDQUFBO0FBcENZLFFBQUEsaUJBQWlCLHFCQW9DN0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBQYXRjaGVkUGFja2FnZURldGFpbHMsXG4gIGdldFBhY2thZ2VEZXRhaWxzRnJvbVBhdGNoRmlsZW5hbWUsXG59IGZyb20gXCIuL1BhY2thZ2VEZXRhaWxzXCJcbmltcG9ydCB7IHJlbGF0aXZlIH0gZnJvbSBcIi4vcGF0aFwiXG5pbXBvcnQga2xhd1N5bmMgZnJvbSBcImtsYXctc3luY1wiXG5cbmV4cG9ydCBjb25zdCBnZXRQYXRjaEZpbGVzID0gKHBhdGNoZXNEaXI6IHN0cmluZykgPT4ge1xuICB0cnkge1xuICAgIHJldHVybiBrbGF3U3luYyhwYXRjaGVzRGlyLCB7IG5vZGlyOiB0cnVlIH0pXG4gICAgICAubWFwKCh7IHBhdGggfSkgPT4gcmVsYXRpdmUocGF0Y2hlc0RpciwgcGF0aCkpXG4gICAgICAuZmlsdGVyKChwYXRoKSA9PiBwYXRoLmVuZHNXaXRoKFwiLnBhdGNoXCIpKVxuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIFtdXG4gIH1cbn1cblxuaW50ZXJmYWNlIEdyb3VwZWRQYXRjaGVzIHtcbiAgbnVtUGF0Y2hGaWxlczogbnVtYmVyXG4gIHBhdGhTcGVjaWZpZXJUb1BhdGNoRmlsZXM6IFJlY29yZDxzdHJpbmcsIFBhdGNoZWRQYWNrYWdlRGV0YWlsc1tdPlxuICB3YXJuaW5nczogc3RyaW5nW11cbn1cbmV4cG9ydCBjb25zdCBnZXRHcm91cGVkUGF0Y2hlcyA9IChwYXRjaGVzRGlyZWN0b3J5OiBzdHJpbmcpOiBHcm91cGVkUGF0Y2hlcyA9PiB7XG4gIGNvbnN0IGZpbGVzID0gZ2V0UGF0Y2hGaWxlcyhwYXRjaGVzRGlyZWN0b3J5KVxuXG4gIGlmIChmaWxlcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4ge1xuICAgICAgbnVtUGF0Y2hGaWxlczogMCxcbiAgICAgIHBhdGhTcGVjaWZpZXJUb1BhdGNoRmlsZXM6IHt9LFxuICAgICAgd2FybmluZ3M6IFtdLFxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHdhcm5pbmdzOiBzdHJpbmdbXSA9IFtdXG5cbiAgY29uc3QgcGF0aFNwZWNpZmllclRvUGF0Y2hGaWxlczogUmVjb3JkPHN0cmluZywgUGF0Y2hlZFBhY2thZ2VEZXRhaWxzW10+ID0ge31cbiAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVzKSB7XG4gICAgY29uc3QgZGV0YWlscyA9IGdldFBhY2thZ2VEZXRhaWxzRnJvbVBhdGNoRmlsZW5hbWUoZmlsZSlcbiAgICBpZiAoIWRldGFpbHMpIHtcbiAgICAgIHdhcm5pbmdzLnB1c2goYFVucmVjb2duaXplZCBwYXRjaCBmaWxlIGluIHBhdGNoZXMgZGlyZWN0b3J5ICR7ZmlsZX1gKVxuICAgICAgY29udGludWVcbiAgICB9XG4gICAgaWYgKCFwYXRoU3BlY2lmaWVyVG9QYXRjaEZpbGVzW2RldGFpbHMucGF0aFNwZWNpZmllcl0pIHtcbiAgICAgIHBhdGhTcGVjaWZpZXJUb1BhdGNoRmlsZXNbZGV0YWlscy5wYXRoU3BlY2lmaWVyXSA9IFtdXG4gICAgfVxuICAgIHBhdGhTcGVjaWZpZXJUb1BhdGNoRmlsZXNbZGV0YWlscy5wYXRoU3BlY2lmaWVyXS5wdXNoKGRldGFpbHMpXG4gIH1cbiAgZm9yIChjb25zdCBhcnIgb2YgT2JqZWN0LnZhbHVlcyhwYXRoU3BlY2lmaWVyVG9QYXRjaEZpbGVzKSkge1xuICAgIGFyci5zb3J0KChhLCBiKSA9PiB7XG4gICAgICByZXR1cm4gKGEuc2VxdWVuY2VOdW1iZXIgPz8gMCkgLSAoYi5zZXF1ZW5jZU51bWJlciA/PyAwKVxuICAgIH0pXG4gIH1cblxuICByZXR1cm4ge1xuICAgIG51bVBhdGNoRmlsZXM6IGZpbGVzLmxlbmd0aCxcbiAgICBwYXRoU3BlY2lmaWVyVG9QYXRjaEZpbGVzLFxuICAgIHdhcm5pbmdzLFxuICB9XG59XG4iXX0=