UNPKG

@mintlify/previewing

Version:

Preview Mintlify docs locally

80 lines (79 loc) 2.56 kB
import { render } from 'ink'; import React from 'react'; import { Logs, SpinnerLog } from './logs.js'; let currentLogs = []; let currentChangeLogs = []; let currentErrorLogs = []; let setLogsCallback = null; let setChangeLogsCallback = null; let setErrorLogsCallback = null; const ensureLoggingInstance = () => { if (!setLogsCallback) { render(React.createElement(Logs)); } }; export const setLoggingCallbacks = (setLogs, setChangeLogs, setErrorLogs) => { setLogsCallback = setLogs; setChangeLogsCallback = setChangeLogs; setErrorLogsCallback = setErrorLogs; }; export const addLog = (log) => { ensureLoggingInstance(); currentLogs = [...currentLogs, log]; setLogsCallback?.(currentLogs); }; export const addLogs = (...logs) => { ensureLoggingInstance(); currentLogs = [...currentLogs, ...logs]; setLogsCallback?.(currentLogs); }; export const addChangeLog = (log) => { ensureLoggingInstance(); currentChangeLogs = [...currentChangeLogs, log]; setChangeLogsCallback?.(currentChangeLogs); }; export const addErrorLog = (log) => { ensureLoggingInstance(); currentErrorLogs = [...currentErrorLogs, log]; setErrorLogsCallback?.(currentErrorLogs); }; export const addRawErrorLog = (message) => { ensureLoggingInstance(); currentErrorLogs = [...currentErrorLogs, message]; setErrorLogsCallback?.(currentErrorLogs); }; export const clearErrorLogs = () => { ensureLoggingInstance(); currentErrorLogs = []; setErrorLogsCallback?.(currentErrorLogs); }; export const clearLogs = () => { ensureLoggingInstance(); currentLogs = []; setLogsCallback?.(currentLogs); }; export const removeLastLog = () => { ensureLoggingInstance(); currentLogs = currentLogs.slice(0, -1); setLogsCallback?.(currentLogs); }; export const removeLog = (target) => { ensureLoggingInstance(); currentLogs = currentLogs.filter((log) => log !== target); setLogsCallback?.(currentLogs); }; export const replaceLog = (target, next) => { ensureLoggingInstance(); const index = currentLogs.indexOf(target); currentLogs = index === -1 ? [...currentLogs, next] : currentLogs.map((log, i) => (i === index ? next : log)); setLogsCallback?.(currentLogs); }; export const removeSpinnerLogs = () => { ensureLoggingInstance(); currentLogs = currentLogs.filter((log) => !(React.isValidElement(log) && log.type === SpinnerLog)); setLogsCallback?.(currentLogs); }; export const getCurrentErrorLogs = () => { return currentErrorLogs; };