@mintlify/previewing
Version:
Preview Mintlify docs locally
80 lines (79 loc) • 2.56 kB
JavaScript
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;
};