#!/usr/bin/env node /* Usage: * node fixup_yarn_lock.js yarn.lock */ const fs = require("fs"); const readline = require("readline"); const urlToName = require("../lib/urlToName"); const yarnLockPath = process.argv[2]; const readFile = readline.createInterface({ input: fs.createReadStream(yarnLockPath, { encoding: "utf8" }), // Note: we use the crlfDelay option to recognize all instances of CR LF // ('\r\n') in input.txt as a single line break. crlfDelay: Infinity, terminal: false // input and output should be treated like a TTY }); const result = []; readFile .on("line", line => { const arr = line.match(/^ {2}resolved "([^#]+)(#[^"]+)?"$/); if (arr !== null) { const [_, url, shaOrRev] = arr; const fileName = urlToName(url); result.push(` resolved "${fileName}${shaOrRev ?? ""}"`); } else { result.push(line); } }) .on("close", () => { fs.writeFile(yarnLockPath, result.join("\n"), "utf8", err => { if (err) { console.error( "fixup_yarn_lock: fatal error when trying to write to yarn.lock", err ); } }); });