12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- // @ts-check
- "use strict";
- 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");
- }
|