UNPKG

@henteko/kumiki

Version:

A video generation tool that creates videos from JSON configurations

74 lines 2.35 kB
import { render } from 'ink'; import * as React from 'react'; import { StatusMessage } from './components.js'; export class InkLogger { static instance = null; logger; isInteractive; currentRender = null; constructor(logger) { this.logger = logger; this.isInteractive = process.stdout.isTTY && !process.env.CI; } static create(logger) { if (!InkLogger.instance) { InkLogger.instance = new InkLogger(logger); } return InkLogger.instance; } clearCurrentRender() { if (this.currentRender) { this.currentRender.clear(); this.currentRender.unmount(); this.currentRender = null; } } info(message, meta) { this.logger.info(message, meta); if (!this.isInteractive) return; this.clearCurrentRender(); this.currentRender = render(React.createElement(StatusMessage, { type: "info", message, details: meta })); } error(message, meta) { this.logger.error(message, meta); if (!this.isInteractive) return; this.clearCurrentRender(); this.currentRender = render(React.createElement(StatusMessage, { type: "error", message, details: meta })); } success(message, meta) { this.logger.info(message, meta); if (!this.isInteractive) return; this.clearCurrentRender(); this.currentRender = render(React.createElement(StatusMessage, { type: "success", message, details: meta })); } warning(message, meta) { this.logger.warn(message, meta); if (!this.isInteractive) return; this.clearCurrentRender(); this.currentRender = render(React.createElement(StatusMessage, { type: "warning", message, details: meta })); } debug(message, meta) { this.logger.debug(message, meta); } renderComponent(component) { if (!this.isInteractive) return; this.clearCurrentRender(); this.currentRender = render(component); } clear() { this.clearCurrentRender(); } // Preserve original logger level setting set level(level) { this.logger.level = level; } get level() { return this.logger.level; } } //# sourceMappingURL=logger.js.map