import { getCurrentUser } from "@nextcloud/auth"; var LogLevel = /* @__PURE__ */ ((LogLevel2) => { LogLevel2[LogLevel2["Debug"] = 0] = "Debug"; LogLevel2[LogLevel2["Info"] = 1] = "Info"; LogLevel2[LogLevel2["Warn"] = 2] = "Warn"; LogLevel2[LogLevel2["Error"] = 3] = "Error"; LogLevel2[LogLevel2["Fatal"] = 4] = "Fatal"; return LogLevel2; })(LogLevel || {}); var __defProp$1 = Object.defineProperty; var __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; var __publicField$1 = (obj, key, value) => { __defNormalProp$1(obj, typeof key !== "symbol" ? key + "" : key, value); return value; }; class ConsoleLogger { constructor(context) { __publicField$1(this, "context"); this.context = context || {}; } formatMessage(message, level, context) { let msg = "[" + LogLevel[level].toUpperCase() + "] "; if (context && context.app) { msg += context.app + ": "; } if (typeof message === "string") return msg + message; msg += "Unexpected ".concat(message.name); if (message.message) msg += ' "'.concat(message.message, '"'); if (level === LogLevel.Debug && message.stack) msg += "\n\nStack trace:\n".concat(message.stack); return msg; } log(level, message, context) { var _a, _b; if (typeof ((_a = this.context) == null ? void 0 : _a.level) === "number" && level < ((_b = this.context) == null ? void 0 : _b.level)) { return; } if (typeof message === "object" && (context == null ? void 0 : context.error) === void 0) { context.error = message; } switch (level) { case LogLevel.Debug: console.debug(this.formatMessage(message, LogLevel.Debug, context), context); break; case LogLevel.Info: console.info(this.formatMessage(message, LogLevel.Info, context), context); break; case LogLevel.Warn: console.warn(this.formatMessage(message, LogLevel.Warn, context), context); break; case LogLevel.Error: console.error(this.formatMessage(message, LogLevel.Error, context), context); break; case LogLevel.Fatal: default: console.error(this.formatMessage(message, LogLevel.Fatal, context), context); break; } } debug(message, context) { this.log(LogLevel.Debug, message, Object.assign({}, this.context, context)); } info(message, context) { this.log(LogLevel.Info, message, Object.assign({}, this.context, context)); } warn(message, context) { this.log(LogLevel.Warn, message, Object.assign({}, this.context, context)); } error(message, context) { this.log(LogLevel.Error, message, Object.assign({}, this.context, context)); } fatal(message, context) { this.log(LogLevel.Fatal, message, Object.assign({}, this.context, context)); } } function buildConsoleLogger(context) { return new ConsoleLogger(context); } var __defProp = Object.defineProperty; var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; var __publicField = (obj, key, value) => { __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); return value; }; class LoggerBuilder { constructor(factory) { __publicField(this, "context"); __publicField(this, "factory"); this.context = {}; this.factory = factory; } /** * Set the app name within the logging context * * @param appId App name */ setApp(appId) { this.context.app = appId; return this; } /** * Set the logging level within the logging context * * @param level Logging level */ setLogLevel(level) { this.context.level = level; return this; } /* eslint-disable jsdoc/no-undefined-types */ /** * Set the user id within the logging context * @param uid User ID * @see {@link detectUser} */ /* eslint-enable jsdoc/no-undefined-types */ setUid(uid) { this.context.uid = uid; return this; } /** * Detect the currently logged in user and set the user id within the logging context */ detectUser() { const user = getCurrentUser(); if (user !== null) { this.context.uid = user.uid; } return this; } /** * Detect and use logging level configured in nextcloud config */ detectLogLevel() { const self = this; const onLoaded = () => { var _a, _b; if (document.readyState === "complete" || document.readyState === "interactive") { self.context.level = (_b = (_a = window._oc_config) == null ? void 0 : _a.loglevel) != null ? _b : LogLevel.Warn; if (window._oc_debug) { self.context.level = LogLevel.Debug; } document.removeEventListener("readystatechange", onLoaded); } else { document.addEventListener("readystatechange", onLoaded); } }; onLoaded(); return this; } /** Build a logger using the logging context and factory */ build() { if (this.context.level === void 0) { this.detectLogLevel(); } return this.factory(this.context); } } function getLoggerBuilder() { return new LoggerBuilder(buildConsoleLogger); } function getLogger() { return getLoggerBuilder().build(); } export { LogLevel, getLogger, getLoggerBuilder };