UNPKG

@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
"use strict"; 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