unstructured-client
Version:
<h3 align="center"> <img src="https://raw.githubusercontent.com/Unstructured-IO/unstructured/main/img/unstructured_logo.png" height="200" > </h3>
72 lines (60 loc) • 1.69 kB
text/typescript
/*
* Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
*/
export const consoleLoggerLevels = [
"debug",
"warning",
"info",
"error",
] as const;
export type ConsoleLoggerLevel = (typeof consoleLoggerLevels)[number];
export type ConsoleLogger = {
[key in ConsoleLoggerLevel]: (
message: string,
data?: Record<string, unknown>,
) => void;
};
export function createConsoleLogger(level: ConsoleLoggerLevel): ConsoleLogger {
const min = consoleLoggerLevels.indexOf(level);
const noop = () => {};
const logger: ConsoleLogger = {
debug: noop,
warning: noop,
info: noop,
error: noop,
};
return consoleLoggerLevels.reduce((logger, level, i) => {
if (i < min) {
return logger;
}
logger[level] = log.bind(null, level);
return logger;
}, logger);
}
function log(
level: ConsoleLoggerLevel,
message: string,
data?: Record<string, unknown>,
) {
let line = "";
const allData = [{ msg: message, l: level }, data];
for (const ctx of allData) {
for (const [key, value] of Object.entries(ctx || {})) {
if (value == null) {
line += ` ${key}=<${value}>`;
} else if (typeof value === "function") {
line += ` ${key}=<function>`;
} else if (typeof value === "symbol") {
line += ` ${key}=${value.toString()}`;
} else if (typeof value === "string") {
const v = value.search(/\s/g) >= 0 ? JSON.stringify(value) : value;
line += ` ${key}=${v}`;
} else if (typeof value !== "object") {
line += ` ${key}=${value}`;
} else {
line += ` ${key}="${JSON.stringify(value)}"`;
}
}
}
console.error(line);
}