Spaces:
Sleeping
Sleeping
| // @ts-check | |
| ; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| function _export(target, all) { | |
| for(var name in all)Object.defineProperty(target, name, { | |
| enumerable: true, | |
| get: all[name] | |
| }); | |
| } | |
| _export(exports, { | |
| indentRecursive: function() { | |
| return indentRecursive; | |
| }, | |
| formatNodes: function() { | |
| return formatNodes; | |
| }, | |
| readFileWithRetries: function() { | |
| return readFileWithRetries; | |
| }, | |
| drainStdin: function() { | |
| return drainStdin; | |
| }, | |
| outputFile: function() { | |
| return outputFile; | |
| } | |
| }); | |
| const _fs = /*#__PURE__*/ _interop_require_default(require("fs")); | |
| const _path = /*#__PURE__*/ _interop_require_default(require("path")); | |
| function _interop_require_default(obj) { | |
| return obj && obj.__esModule ? obj : { | |
| default: obj | |
| }; | |
| } | |
| function indentRecursive(node, indent = 0) { | |
| node.each && node.each((child, i)=>{ | |
| if (!child.raws.before || !child.raws.before.trim() || child.raws.before.includes("\n")) { | |
| child.raws.before = `\n${node.type !== "rule" && i > 0 ? "\n" : ""}${" ".repeat(indent)}`; | |
| } | |
| child.raws.after = `\n${" ".repeat(indent)}`; | |
| indentRecursive(child, indent + 1); | |
| }); | |
| } | |
| function formatNodes(root) { | |
| indentRecursive(root); | |
| if (root.first) { | |
| root.first.raws.before = ""; | |
| } | |
| } | |
| async function readFileWithRetries(path, tries = 5) { | |
| for(let n = 0; n <= tries; n++){ | |
| try { | |
| return await _fs.default.promises.readFile(path, "utf8"); | |
| } catch (err) { | |
| if (n !== tries) { | |
| if (err.code === "ENOENT" || err.code === "EBUSY") { | |
| await new Promise((resolve)=>setTimeout(resolve, 10)); | |
| continue; | |
| } | |
| } | |
| throw err; | |
| } | |
| } | |
| } | |
| function drainStdin() { | |
| return new Promise((resolve, reject)=>{ | |
| let result = ""; | |
| process.stdin.on("data", (chunk)=>{ | |
| result += chunk; | |
| }); | |
| process.stdin.on("end", ()=>resolve(result)); | |
| process.stdin.on("error", (err)=>reject(err)); | |
| }); | |
| } | |
| async function outputFile(file, newContents) { | |
| try { | |
| let currentContents = await _fs.default.promises.readFile(file, "utf8"); | |
| if (currentContents === newContents) { | |
| return; // Skip writing the file | |
| } | |
| } catch {} | |
| // Write the file | |
| await _fs.default.promises.mkdir(_path.default.dirname(file), { | |
| recursive: true | |
| }); | |
| await _fs.default.promises.writeFile(file, newContents, "utf8"); | |
| } | |