UNPKG

webpack-dev-middleware

Version:
44 lines (41 loc) 1.42 kB
// @ts-expect-error -- no published types for this entry point import logger from "webpack/lib/logging/runtime.js"; var LOGGER_NAME = "webpack-dev-middleware"; var DEFAULT_LEVEL = "info"; /** @typedef {false | true | "none" | "error" | "warn" | "info" | "log" | "verbose"} LogLevel */ /** * @param {LogLevel} level log level (or `false` for off, `true` for default) */ export function setLogLevel(level) { logger.configureDefaultLogger({ level: level }); } setLogLevel(DEFAULT_LEVEL); var rawLog = logger.getLogger(LOGGER_NAME); /** * Guard a logger method: under a `require-trusted-types-for 'script'` * Content Security Policy, tapable (bundled through webpack's logging * runtime) cannot compile its hooks — `new Function` throws an EvalError on * the first log call. Swallowing it keeps HMR fully functional with logging * off instead of breaking whatever listener happened to log. * @param {string} method logger method name * @returns {(...args: unknown[]) => void} guarded method */ function guarded(method) { return function () { try { rawLog[method].apply(rawLog, arguments); } catch (_unused) { // Logging is unavailable (e.g. Trusted Types enforcement). } }; } export var log = { error: guarded("error"), warn: guarded("warn"), info: guarded("info"), log: guarded("log"), groupCollapsed: guarded("groupCollapsed"), groupEnd: guarded("groupEnd") };