Spaces:
				
			
			
	
			
			
					
		Running
		
	
	
	
			
			
	
	
	
	
		
		
					
		Running
		
	| var __defProp = Object.defineProperty; | |
| var __getOwnPropDesc = Object.getOwnPropertyDescriptor; | |
| var __getOwnPropNames = Object.getOwnPropertyNames; | |
| var __hasOwnProp = Object.prototype.hasOwnProperty; | |
| var __export = (target, all) => { | |
| for (var name in all) | |
| __defProp(target, name, { get: all[name], enumerable: true }); | |
| }; | |
| var __copyProps = (to, from, except, desc) => { | |
| if (from && typeof from === "object" || typeof from === "function") { | |
| for (let key of __getOwnPropNames(from)) | |
| if (!__hasOwnProp.call(to, key) && key !== except) | |
| __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); | |
| } | |
| return to; | |
| }; | |
| var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); | |
| // src/index.ts | |
| var src_exports = {}; | |
| __export(src_exports, { | |
| Logger: () => Logger | |
| }); | |
| module.exports = __toCommonJS(src_exports); | |
| var import_is_node_process = require("is-node-process"); | |
| var import_outvariant = require("outvariant"); | |
| // src/colors.ts | |
| var colors_exports = {}; | |
| __export(colors_exports, { | |
| blue: () => blue, | |
| gray: () => gray, | |
| green: () => green, | |
| red: () => red, | |
| yellow: () => yellow | |
| }); | |
| function yellow(text) { | |
| return `\x1B[33m${text}\x1B[0m`; | |
| } | |
| function blue(text) { | |
| return `\x1B[34m${text}\x1B[0m`; | |
| } | |
| function gray(text) { | |
| return `\x1B[90m${text}\x1B[0m`; | |
| } | |
| function red(text) { | |
| return `\x1B[31m${text}\x1B[0m`; | |
| } | |
| function green(text) { | |
| return `\x1B[32m${text}\x1B[0m`; | |
| } | |
| // src/index.ts | |
| var IS_NODE = (0, import_is_node_process.isNodeProcess)(); | |
| var Logger = class { | |
| constructor(name) { | |
| this.name = name; | |
| this.prefix = `[${this.name}]`; | |
| const LOGGER_NAME = getVariable("DEBUG"); | |
| const LOGGER_LEVEL = getVariable("LOG_LEVEL"); | |
| const isLoggingEnabled = LOGGER_NAME === "1" || LOGGER_NAME === "true" || typeof LOGGER_NAME !== "undefined" && this.name.startsWith(LOGGER_NAME); | |
| if (isLoggingEnabled) { | |
| this.debug = isDefinedAndNotEquals(LOGGER_LEVEL, "debug") ? noop : this.debug; | |
| this.info = isDefinedAndNotEquals(LOGGER_LEVEL, "info") ? noop : this.info; | |
| this.success = isDefinedAndNotEquals(LOGGER_LEVEL, "success") ? noop : this.success; | |
| this.warning = isDefinedAndNotEquals(LOGGER_LEVEL, "warning") ? noop : this.warning; | |
| this.error = isDefinedAndNotEquals(LOGGER_LEVEL, "error") ? noop : this.error; | |
| } else { | |
| this.info = noop; | |
| this.success = noop; | |
| this.warning = noop; | |
| this.error = noop; | |
| this.only = noop; | |
| } | |
| } | |
| prefix; | |
| extend(domain) { | |
| return new Logger(`${this.name}:${domain}`); | |
| } | |
| /** | |
| * Print a debug message. | |
| * @example | |
| * logger.debug('no duplicates found, creating a document...') | |
| */ | |
| debug(message, ...positionals) { | |
| this.logEntry({ | |
| level: "debug", | |
| message: gray(message), | |
| positionals, | |
| prefix: this.prefix, | |
| colors: { | |
| prefix: "gray" | |
| } | |
| }); | |
| } | |
| /** | |
| * Print an info message. | |
| * @example | |
| * logger.info('start parsing...') | |
| */ | |
| info(message, ...positionals) { | |
| this.logEntry({ | |
| level: "info", | |
| message, | |
| positionals, | |
| prefix: this.prefix, | |
| colors: { | |
| prefix: "blue" | |
| } | |
| }); | |
| const performance2 = new PerformanceEntry(); | |
| return (message2, ...positionals2) => { | |
| performance2.measure(); | |
| this.logEntry({ | |
| level: "info", | |
| message: `${message2} ${gray(`${performance2.deltaTime}ms`)}`, | |
| positionals: positionals2, | |
| prefix: this.prefix, | |
| colors: { | |
| prefix: "blue" | |
| } | |
| }); | |
| }; | |
| } | |
| /** | |
| * Print a success message. | |
| * @example | |
| * logger.success('successfully created document') | |
| */ | |
| success(message, ...positionals) { | |
| this.logEntry({ | |
| level: "info", | |
| message, | |
| positionals, | |
| prefix: `\u2714 ${this.prefix}`, | |
| colors: { | |
| timestamp: "green", | |
| prefix: "green" | |
| } | |
| }); | |
| } | |
| /** | |
| * Print a warning. | |
| * @example | |
| * logger.warning('found legacy document format') | |
| */ | |
| warning(message, ...positionals) { | |
| this.logEntry({ | |
| level: "warning", | |
| message, | |
| positionals, | |
| prefix: `\u26A0 ${this.prefix}`, | |
| colors: { | |
| timestamp: "yellow", | |
| prefix: "yellow" | |
| } | |
| }); | |
| } | |
| /** | |
| * Print an error message. | |
| * @example | |
| * logger.error('something went wrong') | |
| */ | |
| error(message, ...positionals) { | |
| this.logEntry({ | |
| level: "error", | |
| message, | |
| positionals, | |
| prefix: `\u2716 ${this.prefix}`, | |
| colors: { | |
| timestamp: "red", | |
| prefix: "red" | |
| } | |
| }); | |
| } | |
| /** | |
| * Execute the given callback only when the logging is enabled. | |
| * This is skipped in its entirety and has no runtime cost otherwise. | |
| * This executes regardless of the log level. | |
| * @example | |
| * logger.only(() => { | |
| * logger.info('additional info') | |
| * }) | |
| */ | |
| only(callback) { | |
| callback(); | |
| } | |
| createEntry(level, message) { | |
| return { | |
| timestamp: /* @__PURE__ */ new Date(), | |
| level, | |
| message | |
| }; | |
| } | |
| logEntry(args) { | |
| const { | |
| level, | |
| message, | |
| prefix, | |
| colors: customColors, | |
| positionals = [] | |
| } = args; | |
| const entry = this.createEntry(level, message); | |
| const timestampColor = customColors?.timestamp || "gray"; | |
| const prefixColor = customColors?.prefix || "gray"; | |
| const colorize = { | |
| timestamp: colors_exports[timestampColor], | |
| prefix: colors_exports[prefixColor] | |
| }; | |
| const write = this.getWriter(level); | |
| write( | |
| [colorize.timestamp(this.formatTimestamp(entry.timestamp))].concat(prefix != null ? colorize.prefix(prefix) : []).concat(serializeInput(message)).join(" "), | |
| ...positionals.map(serializeInput) | |
| ); | |
| } | |
| formatTimestamp(timestamp) { | |
| return `${timestamp.toLocaleTimeString( | |
| "en-GB" | |
| )}:${timestamp.getMilliseconds()}`; | |
| } | |
| getWriter(level) { | |
| switch (level) { | |
| case "debug": | |
| case "success": | |
| case "info": { | |
| return log; | |
| } | |
| case "warning": { | |
| return warn; | |
| } | |
| case "error": { | |
| return error; | |
| } | |
| } | |
| } | |
| }; | |
| var PerformanceEntry = class { | |
| startTime; | |
| endTime; | |
| deltaTime; | |
| constructor() { | |
| this.startTime = performance.now(); | |
| } | |
| measure() { | |
| this.endTime = performance.now(); | |
| const deltaTime = this.endTime - this.startTime; | |
| this.deltaTime = deltaTime.toFixed(2); | |
| } | |
| }; | |
| var noop = () => void 0; | |
| function log(message, ...positionals) { | |
| if (IS_NODE) { | |
| process.stdout.write((0, import_outvariant.format)(message, ...positionals) + "\n"); | |
| return; | |
| } | |
| console.log(message, ...positionals); | |
| } | |
| function warn(message, ...positionals) { | |
| if (IS_NODE) { | |
| process.stderr.write((0, import_outvariant.format)(message, ...positionals) + "\n"); | |
| return; | |
| } | |
| console.warn(message, ...positionals); | |
| } | |
| function error(message, ...positionals) { | |
| if (IS_NODE) { | |
| process.stderr.write((0, import_outvariant.format)(message, ...positionals) + "\n"); | |
| return; | |
| } | |
| console.error(message, ...positionals); | |
| } | |
| function getVariable(variableName) { | |
| if (IS_NODE) { | |
| return process.env[variableName]; | |
| } | |
| return globalThis[variableName]?.toString(); | |
| } | |
| function isDefinedAndNotEquals(value, expected) { | |
| return value !== void 0 && value !== expected; | |
| } | |
| function serializeInput(message) { | |
| if (typeof message === "undefined") { | |
| return "undefined"; | |
| } | |
| if (message === null) { | |
| return "null"; | |
| } | |
| if (typeof message === "string") { | |
| return message; | |
| } | |
| if (typeof message === "object") { | |
| return JSON.stringify(message); | |
| } | |
| return message.toString(); | |
| } | |
