feature: sk-react-toolkit holds the server helpers, web components and Vite font plugin shared by manage-ui and sql-query-webui.
Release / release (push) Failing after 1m18s

This commit is contained in:
slawek committed 2026-10-28 19:08:10 +01:00
commit 4505b37abc
30 files changed
+4826

No files matched your search

+42
View File
@@ -0,0 +1,42 @@
/** The log of a server: events to stdout, warnings and errors in colour to stderr, and requests when they are on. */
export type Log = {
event: (text: string) => void
warn: (text: string) => void
error: (text: string) => void
request: (text: string) => void
}
/** A log that writes nothing, for tests. */
export const QUIET: Log = { event() {}, warn() {}, error() {}, request() {} }
/**
* The log of a server. With timestamps each line starts with the local time with milliseconds; requests logs each
* request to stderr, otherwise request writes nothing.
*/
export function createLog(options: { timestamps: boolean; requests: boolean }): Log {
const line = (text: string) => {
if (!options.timestamps) {
return text
}
const now = new Date()
const pad = (value: number, size = 2) => String(value).padStart(size, '0')
return `${pad(now.getHours())}:${pad(now.getMinutes())}:${pad(now.getSeconds())}.${pad(now.getMilliseconds(), 3)} ${text}`
}
return {
event: (text) => console.log(line(text)),
warn: (text) => console.error(`\x1b[33m${line(`warning: ${text}`)}\x1b[0m`),
error: (text) => console.error(`\x1b[31m${line(`error: ${text}`)}\x1b[0m`),
request: options.requests ? (text) => console.error(line(text)) : () => {},
}
}
/** Whether --timestamps auto|on|off asks for timestamps: auto only when stdout is a terminal. */
export function timestampsOn(choice: string) {
return choice === 'on' || (choice === 'auto' && process.stdout.isTTY === true)
}
/** Prints the message in red to stderr as an error and ends the process with status 2. */
export function fail(message: string): never {
console.error(`\x1b[31merror: ${message}\x1b[0m`)
process.exit(2)
}