UNPKG

@naandalist/patch-package

Version:
71 lines 9.23 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.verifyAppliedPatches = exports.clearPatchApplicationState = exports.savePatchApplicationState = exports.getPatchApplicationState = exports.STATE_FILE_NAME = void 0; const fs_1 = require("fs"); const path_1 = require("path"); const json_stable_stringify_1 = __importDefault(require("json-stable-stringify")); const hash_1 = require("./hash"); const chalk_1 = __importDefault(require("chalk")); const version = 1; exports.STATE_FILE_NAME = ".patch-package.json"; function getPatchApplicationState(packageDetails) { const fileName = (0, path_1.join)(packageDetails.path, exports.STATE_FILE_NAME); let state = null; try { state = JSON.parse((0, fs_1.readFileSync)(fileName, "utf8")); } catch (e) { // noop } if (!state) { return null; } if (state.version !== version) { console.log(`You upgraded patch-package and need to fully reinstall node_modules to continue.`); process.exit(1); } return state; } exports.getPatchApplicationState = getPatchApplicationState; function savePatchApplicationState({ packageDetails, patches, isRebasing, }) { const fileName = (0, path_1.join)(packageDetails.path, exports.STATE_FILE_NAME); const state = { patches, version, isRebasing, }; (0, fs_1.writeFileSync)(fileName, (0, json_stable_stringify_1.default)(state, { space: 4 }), "utf8"); } exports.savePatchApplicationState = savePatchApplicationState; function clearPatchApplicationState(packageDetails) { const fileName = (0, path_1.join)(packageDetails.path, exports.STATE_FILE_NAME); try { (0, fs_1.unlinkSync)(fileName); } catch (e) { // noop } } exports.clearPatchApplicationState = clearPatchApplicationState; function verifyAppliedPatches({ appPath, patchDir, state, }) { const patchesDirectory = (0, path_1.join)(appPath, patchDir); for (const patch of state.patches) { if (!patch.didApply) { break; } const fullPatchPath = (0, path_1.join)(patchesDirectory, patch.patchFilename); if (!(0, fs_1.existsSync)(fullPatchPath)) { console.log(chalk_1.default.blueBright("Expected patch file"), fullPatchPath, "to exist but it is missing. Try removing and reinstalling node_modules first."); process.exit(1); } if (patch.patchContentHash !== (0, hash_1.hashFile)(fullPatchPath)) { console.log(chalk_1.default.blueBright("Patch file"), fullPatchPath, "has changed since it was applied. Try removing and reinstalling node_modules first."); process.exit(1); } } } exports.verifyAppliedPatches = verifyAppliedPatches; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGVGaWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3N0YXRlRmlsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSwyQkFBd0U7QUFDeEUsK0JBQTJCO0FBRTNCLGtGQUE2QztBQUM3QyxpQ0FBaUM7QUFDakMsa0RBQXlCO0FBT3pCLE1BQU0sT0FBTyxHQUFHLENBQUMsQ0FBQTtBQU9KLFFBQUEsZUFBZSxHQUFHLHFCQUFxQixDQUFBO0FBRXBELFNBQWdCLHdCQUF3QixDQUN0QyxjQUE4QjtJQUU5QixNQUFNLFFBQVEsR0FBRyxJQUFBLFdBQUksRUFBQyxjQUFjLENBQUMsSUFBSSxFQUFFLHVCQUFlLENBQUMsQ0FBQTtJQUUzRCxJQUFJLEtBQUssR0FBaUMsSUFBSSxDQUFBO0lBQzlDLElBQUk7UUFDRixLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFBLGlCQUFZLEVBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUE7S0FDbkQ7SUFBQyxPQUFPLENBQUMsRUFBRTtRQUNWLE9BQU87S0FDUjtJQUNELElBQUksQ0FBQyxLQUFLLEVBQUU7UUFDVixPQUFPLElBQUksQ0FBQTtLQUNaO0lBQ0QsSUFBSSxLQUFLLENBQUMsT0FBTyxLQUFLLE9BQU8sRUFBRTtRQUM3QixPQUFPLENBQUMsR0FBRyxDQUNULGtGQUFrRixDQUNuRixDQUFBO1FBQ0QsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtLQUNoQjtJQUNELE9BQU8sS0FBSyxDQUFBO0FBQ2QsQ0FBQztBQXJCRCw0REFxQkM7QUFFRCxTQUFnQix5QkFBeUIsQ0FBQyxFQUN4QyxjQUFjLEVBQ2QsT0FBTyxFQUNQLFVBQVUsR0FLWDtJQUNDLE1BQU0sUUFBUSxHQUFHLElBQUEsV0FBSSxFQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsdUJBQWUsQ0FBQyxDQUFBO0lBRTNELE1BQU0sS0FBSyxHQUEwQjtRQUNuQyxPQUFPO1FBQ1AsT0FBTztRQUNQLFVBQVU7S0FDWCxDQUFBO0lBRUQsSUFBQSxrQkFBYSxFQUFDLFFBQVEsRUFBRSxJQUFBLCtCQUFTLEVBQUMsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUE7QUFDakUsQ0FBQztBQWxCRCw4REFrQkM7QUFFRCxTQUFnQiwwQkFBMEIsQ0FBQyxjQUE4QjtJQUN2RSxNQUFNLFFBQVEsR0FBRyxJQUFBLFdBQUksRUFBQyxjQUFjLENBQUMsSUFBSSxFQUFFLHVCQUFlLENBQUMsQ0FBQTtJQUUzRCxJQUFJO1FBQ0YsSUFBQSxlQUFVLEVBQUMsUUFBUSxDQUFDLENBQUE7S0FDckI7SUFBQyxPQUFPLENBQUMsRUFBRTtRQUNWLE9BQU87S0FDUjtBQUNILENBQUM7QUFSRCxnRUFRQztBQUVELFNBQWdCLG9CQUFvQixDQUFDLEVBQ25DLE9BQU8sRUFDUCxRQUFRLEVBQ1IsS0FBSyxHQUtOO0lBQ0MsTUFBTSxnQkFBZ0IsR0FBRyxJQUFBLFdBQUksRUFBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUE7SUFDaEQsS0FBSyxNQUFNLEtBQUssSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFO1FBQ2pDLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFO1lBQ25CLE1BQUs7U0FDTjtRQUNELE1BQU0sYUFBYSxHQUFHLElBQUEsV0FBSSxFQUFDLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQTtRQUNqRSxJQUFJLENBQUMsSUFBQSxlQUFVLEVBQUMsYUFBYSxDQUFDLEVBQUU7WUFDOUIsT0FBTyxDQUFDLEdBQUcsQ0FDVCxlQUFLLENBQUMsVUFBVSxDQUFDLHFCQUFxQixDQUFDLEVBQ3ZDLGFBQWEsRUFDYiwrRUFBK0UsQ0FDaEYsQ0FBQTtZQUNELE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7U0FDaEI7UUFDRCxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsS0FBSyxJQUFBLGVBQVEsRUFBQyxhQUFhLENBQUMsRUFBRTtZQUN0RCxPQUFPLENBQUMsR0FBRyxDQUNULGVBQUssQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLEVBQzlCLGFBQWEsRUFDYixxRkFBcUYsQ0FDdEYsQ0FBQTtZQUNELE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7U0FDaEI7S0FDRjtBQUNILENBQUM7QUFoQ0Qsb0RBZ0NDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXhpc3RzU3luYywgcmVhZEZpbGVTeW5jLCB1bmxpbmtTeW5jLCB3cml0ZUZpbGVTeW5jIH0gZnJvbSBcImZzXCJcbmltcG9ydCB7IGpvaW4gfSBmcm9tIFwicGF0aFwiXG5pbXBvcnQgeyBQYWNrYWdlRGV0YWlscyB9IGZyb20gXCIuL1BhY2thZ2VEZXRhaWxzXCJcbmltcG9ydCBzdHJpbmdpZnkgZnJvbSBcImpzb24tc3RhYmxlLXN0cmluZ2lmeVwiXG5pbXBvcnQgeyBoYXNoRmlsZSB9IGZyb20gXCIuL2hhc2hcIlxuaW1wb3J0IGNoYWxrIGZyb20gXCJjaGFsa1wiXG5leHBvcnQgaW50ZXJmYWNlIFBhdGNoU3RhdGUge1xuICBwYXRjaEZpbGVuYW1lOiBzdHJpbmdcbiAgcGF0Y2hDb250ZW50SGFzaDogc3RyaW5nXG4gIGRpZEFwcGx5OiBib29sZWFuXG59XG5cbmNvbnN0IHZlcnNpb24gPSAxXG5leHBvcnQgaW50ZXJmYWNlIFBhdGNoQXBwbGljYXRpb25TdGF0ZSB7XG4gIHZlcnNpb246IG51bWJlclxuICBwYXRjaGVzOiBQYXRjaFN0YXRlW11cbiAgaXNSZWJhc2luZzogYm9vbGVhblxufVxuXG5leHBvcnQgY29uc3QgU1RBVEVfRklMRV9OQU1FID0gXCIucGF0Y2gtcGFja2FnZS5qc29uXCJcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFBhdGNoQXBwbGljYXRpb25TdGF0ZShcbiAgcGFja2FnZURldGFpbHM6IFBhY2thZ2VEZXRhaWxzLFxuKTogUGF0Y2hBcHBsaWNhdGlvblN0YXRlIHwgbnVsbCB7XG4gIGNvbnN0IGZpbGVOYW1lID0gam9pbihwYWNrYWdlRGV0YWlscy5wYXRoLCBTVEFURV9GSUxFX05BTUUpXG5cbiAgbGV0IHN0YXRlOiBudWxsIHwgUGF0Y2hBcHBsaWNhdGlvblN0YXRlID0gbnVsbFxuICB0cnkge1xuICAgIHN0YXRlID0gSlNPTi5wYXJzZShyZWFkRmlsZVN5bmMoZmlsZU5hbWUsIFwidXRmOFwiKSlcbiAgfSBjYXRjaCAoZSkge1xuICAgIC8vIG5vb3BcbiAgfVxuICBpZiAoIXN0YXRlKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuICBpZiAoc3RhdGUudmVyc2lvbiAhPT0gdmVyc2lvbikge1xuICAgIGNvbnNvbGUubG9nKFxuICAgICAgYFlvdSB1cGdyYWRlZCBwYXRjaC1wYWNrYWdlIGFuZCBuZWVkIHRvIGZ1bGx5IHJlaW5zdGFsbCBub2RlX21vZHVsZXMgdG8gY29udGludWUuYCxcbiAgICApXG4gICAgcHJvY2Vzcy5leGl0KDEpXG4gIH1cbiAgcmV0dXJuIHN0YXRlXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzYXZlUGF0Y2hBcHBsaWNhdGlvblN0YXRlKHtcbiAgcGFja2FnZURldGFpbHMsXG4gIHBhdGNoZXMsXG4gIGlzUmViYXNpbmcsXG59OiB7XG4gIHBhY2thZ2VEZXRhaWxzOiBQYWNrYWdlRGV0YWlsc1xuICBwYXRjaGVzOiBQYXRjaFN0YXRlW11cbiAgaXNSZWJhc2luZzogYm9vbGVhblxufSkge1xuICBjb25zdCBmaWxlTmFtZSA9IGpvaW4ocGFja2FnZURldGFpbHMucGF0aCwgU1RBVEVfRklMRV9OQU1FKVxuXG4gIGNvbnN0IHN0YXRlOiBQYXRjaEFwcGxpY2F0aW9uU3RhdGUgPSB7XG4gICAgcGF0Y2hlcyxcbiAgICB2ZXJzaW9uLFxuICAgIGlzUmViYXNpbmcsXG4gIH1cblxuICB3cml0ZUZpbGVTeW5jKGZpbGVOYW1lLCBzdHJpbmdpZnkoc3RhdGUsIHsgc3BhY2U6IDQgfSksIFwidXRmOFwiKVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xlYXJQYXRjaEFwcGxpY2F0aW9uU3RhdGUocGFja2FnZURldGFpbHM6IFBhY2thZ2VEZXRhaWxzKSB7XG4gIGNvbnN0IGZpbGVOYW1lID0gam9pbihwYWNrYWdlRGV0YWlscy5wYXRoLCBTVEFURV9GSUxFX05BTUUpXG5cbiAgdHJ5IHtcbiAgICB1bmxpbmtTeW5jKGZpbGVOYW1lKVxuICB9IGNhdGNoIChlKSB7XG4gICAgLy8gbm9vcFxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2ZXJpZnlBcHBsaWVkUGF0Y2hlcyh7XG4gIGFwcFBhdGgsXG4gIHBhdGNoRGlyLFxuICBzdGF0ZSxcbn06IHtcbiAgYXBwUGF0aDogc3RyaW5nXG4gIHBhdGNoRGlyOiBzdHJpbmdcbiAgc3RhdGU6IFBhdGNoQXBwbGljYXRpb25TdGF0ZVxufSkge1xuICBjb25zdCBwYXRjaGVzRGlyZWN0b3J5ID0gam9pbihhcHBQYXRoLCBwYXRjaERpcilcbiAgZm9yIChjb25zdCBwYXRjaCBvZiBzdGF0ZS5wYXRjaGVzKSB7XG4gICAgaWYgKCFwYXRjaC5kaWRBcHBseSkge1xuICAgICAgYnJlYWtcbiAgICB9XG4gICAgY29uc3QgZnVsbFBhdGNoUGF0aCA9IGpvaW4ocGF0Y2hlc0RpcmVjdG9yeSwgcGF0Y2gucGF0Y2hGaWxlbmFtZSlcbiAgICBpZiAoIWV4aXN0c1N5bmMoZnVsbFBhdGNoUGF0aCkpIHtcbiAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICBjaGFsay5ibHVlQnJpZ2h0KFwiRXhwZWN0ZWQgcGF0Y2ggZmlsZVwiKSxcbiAgICAgICAgZnVsbFBhdGNoUGF0aCxcbiAgICAgICAgXCJ0byBleGlzdCBidXQgaXQgaXMgbWlzc2luZy4gVHJ5IHJlbW92aW5nIGFuZCByZWluc3RhbGxpbmcgbm9kZV9tb2R1bGVzIGZpcnN0LlwiLFxuICAgICAgKVxuICAgICAgcHJvY2Vzcy5leGl0KDEpXG4gICAgfVxuICAgIGlmIChwYXRjaC5wYXRjaENvbnRlbnRIYXNoICE9PSBoYXNoRmlsZShmdWxsUGF0Y2hQYXRoKSkge1xuICAgICAgY29uc29sZS5sb2coXG4gICAgICAgIGNoYWxrLmJsdWVCcmlnaHQoXCJQYXRjaCBmaWxlXCIpLFxuICAgICAgICBmdWxsUGF0Y2hQYXRoLFxuICAgICAgICBcImhhcyBjaGFuZ2VkIHNpbmNlIGl0IHdhcyBhcHBsaWVkLiBUcnkgcmVtb3ZpbmcgYW5kIHJlaW5zdGFsbGluZyBub2RlX21vZHVsZXMgZmlyc3QuXCIsXG4gICAgICApXG4gICAgICBwcm9jZXNzLmV4aXQoMSlcbiAgICB9XG4gIH1cbn1cbiJdfQ==