@graphql-inspector/action
Version:
GraphQL Inspector functionality for GitHub Actions
107 lines (106 loc) • 3.08 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.Logger = exports.chalk = exports.symbols = exports.figures = void 0;
exports.bolderize = bolderize;
exports.mockLogger = mockLogger;
exports.unmockLogger = unmockLogger;
const tslib_1 = require("tslib");
const node_console_1 = require("node:console");
const node_stream_1 = require("node:stream");
const chalk_1 = tslib_1.__importDefault(require("chalk"));
exports.chalk = chalk_1.default;
const env = tslib_1.__importStar(require("std-env"));
var figures_1 = require("figures");
Object.defineProperty(exports, "figures", { enumerable: true, get: function () { return tslib_1.__importDefault(figures_1).default; } });
var log_symbols_1 = require("log-symbols");
Object.defineProperty(exports, "symbols", { enumerable: true, get: function () { return tslib_1.__importDefault(log_symbols_1).default; } });
function bolderize(msg) {
const findSingleQuotes = /'([^']+)'/gim;
const findDoubleQuotes = /"([^"]+)"/gim;
return msg
.replace(findSingleQuotes, (_, value) => chalk_1.default.bold(value))
.replace(findDoubleQuotes, (_, value) => chalk_1.default.bold(value));
}
let mockedFn = null;
const canBeFancy = env.hasTTY === true;
exports.Logger = {
success(msg) {
emit('success', msg);
},
log(msg) {
emit('log', msg);
},
table(input) {
table(input);
},
info(msg) {
emit('info', msg);
},
error(msg) {
emit('error', msg);
},
warn(msg) {
emit('warn', msg);
},
};
function mockLogger(fn) {
mockedFn = fn;
}
function unmockLogger() {
mockedFn = null;
}
function emit(type, msg) {
if (mockedFn) {
return mockedFn(msg);
}
if (!canBeFancy) {
return console.log(`[${type}]`, msg);
}
if (type === 'success') {
emitSuccess(msg);
}
else if (type === 'error') {
emitError(msg);
}
else if (type === 'info') {
emitInfo(msg);
}
else if (type === 'warn') {
emitWarn(msg);
}
else {
console.log(msg);
}
}
function table(input) {
const ts = new node_stream_1.Transform({
transform(chunk, _enc, cb) {
cb(null, chunk);
},
});
const logger = new node_console_1.Console({ stdout: ts });
logger.table(input);
const table = (ts.read() || '').toString();
let result = '';
for (const row of table.split(/[\r\n]+/)) {
let r = row.replace(/[^┬]*┬/, '┌');
r = r.replace(/^├─*┼/, '├');
r = r.replace(/│[^│]*/, '');
r = r.replace(/^└─*┴/, '└');
r = r.replace(/'/g, ' ');
result += `${r}\n`;
}
console.log(result);
}
function emitSuccess(msg) {
console.log(chalk_1.default.green('success'), msg);
}
function emitError(msg) {
console.log(chalk_1.default.red('error'), msg);
}
function emitInfo(msg) {
console.log(chalk_1.default.blue('info'), msg);
}
function emitWarn(msg) {
console.log(chalk_1.default.yellow('warning'), msg);
}
;