( ′∀`)σ≡σ☆))Д′)レ(゚∀゚;)ヘ=З=З=Зε≡(ノ´_ゝ`)ノ
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.getStdinAsString = exports.error = exports.warn = exports.debug = exports.clearLine = exports.writeStdout = exports.writeStderr = void 0;
var tslib_1 = require("tslib");
var chalk_1 = require("chalk");
var readline_1 = (0, tslib_1.__importDefault)(require("readline"));
var util_1 = require("util");
var CLEAR_WHOLE_LINE = 0;
exports.writeStderr = (0, util_1.promisify)(process.stderr.write).bind(process.stderr);
exports.writeStdout = (0, util_1.promisify)(process.stdout.write).bind(process.stdout);
var nativeClearLine = (0, util_1.promisify)(readline_1.default.clearLine).bind(readline_1.default);
var nativeCursorTo = (0, util_1.promisify)(readline_1.default.cursorTo).bind(readline_1.default);
// From:
// https://github.com/yarnpkg/yarn/blob/53d8004229f543f342833310d5af63a4b6e59c8a/src/reporters/console/util.js
function clearLine(terminal) {
return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
return (0, tslib_1.__generator)(this, function (_a) {
switch (_a.label) {
case 0:
if (!!chalk_1.supportsColor) return [3 /*break*/, 5];
if (!terminal.isTTY) return [3 /*break*/, 4];
if (!(terminal.columns > 0)) return [3 /*break*/, 2];
return [4 /*yield*/, (0, exports.writeStderr)("\r".concat(' '.repeat(terminal.columns - 1)))];
case 1:
_a.sent();
_a.label = 2;
case 2: return [4 /*yield*/, (0, exports.writeStderr)("\r")];
case 3:
_a.sent();
_a.label = 4;
case 4: return [3 /*break*/, 8];
case 5: return [4 /*yield*/, nativeClearLine(terminal, CLEAR_WHOLE_LINE)];
case 6:
_a.sent();
return [4 /*yield*/, nativeCursorTo(terminal, 0, undefined)];
case 7:
_a.sent();
_a.label = 8;
case 8: return [2 /*return*/];
}
});
});
}
exports.clearLine = clearLine;
var LEVEL_COLORS = {
debug: chalk_1.green,
warn: chalk_1.yellow,
error: chalk_1.red,
};
function label(level, message) {
return "[@formatjs/cli] [".concat(LEVEL_COLORS[level](level.toUpperCase()), "] ").concat(message);
}
function debug(message) {
var args = [];
for (var _i = 1; _i < arguments.length; _i++) {
args[_i - 1] = arguments[_i];
}
return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
return (0, tslib_1.__generator)(this, function (_a) {
switch (_a.label) {
case 0:
if (process.env.LOG_LEVEL !== 'debug') {
return [2 /*return*/];
}
return [4 /*yield*/, clearLine(process.stderr)];
case 1:
_a.sent();
return [4 /*yield*/, (0, exports.writeStderr)(util_1.format.apply(void 0, (0, tslib_1.__spreadArray)([label('debug', message)], args, false)))];
case 2:
_a.sent();
return [4 /*yield*/, (0, exports.writeStderr)('\n')];
case 3:
_a.sent();
return [2 /*return*/];
}
});
});
}
exports.debug = debug;
function warn(message) {
var args = [];
for (var _i = 1; _i < arguments.length; _i++) {
args[_i - 1] = arguments[_i];
}
return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
return (0, tslib_1.__generator)(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, clearLine(process.stderr)];
case 1:
_a.sent();
return [4 /*yield*/, (0, exports.writeStderr)(util_1.format.apply(void 0, (0, tslib_1.__spreadArray)([label('warn', message)], args, false)))];
case 2:
_a.sent();
return [4 /*yield*/, (0, exports.writeStderr)('\n')];
case 3:
_a.sent();
return [2 /*return*/];
}
});
});
}
exports.warn = warn;
function error(message) {
var args = [];
for (var _i = 1; _i < arguments.length; _i++) {
args[_i - 1] = arguments[_i];
}
return (0, tslib_1.__awaiter)(this, void 0, void 0, function () {
return (0, tslib_1.__generator)(this, function (_a) {
switch (_a.label) {
case 0: return [4 /*yield*/, clearLine(process.stderr)];
case 1:
_a.sent();
return [4 /*yield*/, (0, exports.writeStderr)(util_1.format.apply(void 0, (0, tslib_1.__spreadArray)([label('error', message)], args, false)))];
case 2:
_a.sent();
return [4 /*yield*/, (0, exports.writeStderr)('\n')];
case 3:
_a.sent();
return [2 /*return*/];
}
});
});
}
exports.error = error;
function getStdinAsString() {
var result = '';
return new Promise(function (resolve) {
process.stdin.setEncoding('utf-8');
process.stdin.on('readable', function () {
var chunk;
while ((chunk = process.stdin.read())) {
result += chunk;
}
});
process.stdin.on('end', function () {
resolve(result);
});
});
}
exports.getStdinAsString = getStdinAsString;