@j0nnyboi/amman
Version:
A modern mandatory toolbelt to help test solana SDK libraries and apps on a locally running validator.
60 lines • 2.29 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.pipeSolanaLogs = void 0;
const amman_client_1 = require("@j0nnyboi/amman-client");
const ansi_colors_1 = __importDefault(require("ansi-colors"));
const child_process_1 = require("child_process");
const split2_1 = __importDefault(require("split2"));
const programs_1 = require("../../diagnostics/programs");
const utils_1 = require("../../utils");
async function pipeSolanaLogs(amman) {
var _a;
const logger = new programs_1.PrettyLogger(amman);
const child = (0, child_process_1.spawn)('solana', ['logs', '--url', amman_client_1.LOCALHOST], {
detached: false,
stdio: 'pipe',
});
for await (const line of (_a = child.stdout) === null || _a === void 0 ? void 0 : _a.pipe((0, split2_1.default)())) {
try {
await logLine(logger, line);
}
catch (err) {
(0, utils_1.logTrace)('Logger encountered an error', err);
}
}
}
exports.pipeSolanaLogs = pipeSolanaLogs;
async function logLine(logger, line) {
const { newLogs, newInstruction, newOuterInstruction } = await logger.addLine(line, null, programs_1.Cluster.Amman);
if (newOuterInstruction) {
console.log(ansi_colors_1.default.dim('\n--------------------------------'));
}
if (newInstruction) {
console.log('');
}
for (const log of newLogs) {
const color = styleToColor(log.style);
const count = log.count != null
? ansi_colors_1.default.bgGreen(ansi_colors_1.default.black(`#${log.count.join('.')} `)) + ' '
: '';
console.log(`${ansi_colors_1.default.dim(log.prefix)}${count}${color(log.text)}`);
}
}
function styleToColor(style) {
switch (style) {
case 'muted':
return ansi_colors_1.default.dim;
case 'info':
return ansi_colors_1.default.white;
case 'success':
return ansi_colors_1.default.green;
case 'warning':
return ansi_colors_1.default.redBright;
default:
throw new Error(style);
}
}
//# sourceMappingURL=solana-logs.js.map