{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { ConsoleLogType, ConsolePlatform, MessageFormat } from \"./types\";\n\nconst NATIVE_CONSOLE = (() => {\n\tconst c = globalThis.console;\n\treturn Object.freeze({\n\t\tlog:   c.log.bind(c),\n\t\tinfo:  c.info.bind(c),\n\t\twarn:  c.warn.bind(c),\n\t\terror: c.error.bind(c),\n\t});\n})();\n\nexport class CustomConsole {\n\tprivate static _sharedConsoleBrowser: BrowserMp | null = null;\n\tprivate static _sharedView: boolean = false;\n\tprivate static _sharedStopLog: boolean = false;\n\tprivate static _sharedKeyView: number = 46;\n\tprivate static _sharedLogBuffer: Array<{\n\t\tmessage: string;\n\t\tplatform: ConsolePlatform;\n\t\tformat: MessageFormat;\n\t}> = [];\n\tprivate static _instanceCount: number = 0;\n\n\tprivate readonly _platform: ConsolePlatform;\n\tprivate readonly _prefix: string;\n\tprivate _isDestroyed: boolean = false;\n\n\tconstructor(prefix: string = '', keyView?: number) {\n\t\tthis._platform = this.detectPlatform();\n\t\tthis._prefix = prefix;\n\t\tCustomConsole._instanceCount++;\n\n\t\tif (this._platform === ConsolePlatform.Client) {\n\t\t\tif (keyView !== undefined) CustomConsole._sharedKeyView = keyView;\n\t\t\tif (!CustomConsole._sharedConsoleBrowser) this.initializeSharedBrowser();\n\t\t}\n\t}\n\n\tprivate static setViewConsole(): void {\n\t\tif (!CustomConsole._sharedConsoleBrowser) return;\n\n\t\ttry {\n\t\t\tCustomConsole._sharedView = !CustomConsole._sharedView;\n\t\t\tCustomConsole._sharedStopLog = true;\n\t\t\tCustomConsole._sharedConsoleBrowser.call(\"setViewCustomConsole\", CustomConsole._sharedView);\n\t\t\tCustomConsole._sharedStopLog = false;\n\n\t\t\tCustomConsole.flushSharedLogBuffer();\n\t\t} catch (error) {\n\t\t\tmp.console.logError('Error toggling console view');\n\t\t\tCustomConsole._sharedStopLog = false;\n\t\t}\n\t}\n\n\tprivate static flushSharedLogBuffer(): void {\n\t\tif (!CustomConsole._sharedConsoleBrowser || CustomConsole._sharedLogBuffer.length === 0) return;\n\n\t\tconst logsToFlush = [...CustomConsole._sharedLogBuffer];\n\t\tCustomConsole._sharedLogBuffer = [];\n\n\t\tlogsToFlush.forEach(log => {\n\t\t\ttry {\n\t\t\t\tCustomConsole._sharedConsoleBrowser!.call(\"addCustomConsoleLog\", log.platform, log.message, log.format);\n\t\t\t} catch (error) {\n\t\t\t\tmp.console.logError('Error flushing log buffer');\n\t\t\t\tCustomConsole._sharedLogBuffer.push(log);\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate initializeSharedBrowser(): void {\n\t\ttry {\n\t\t\tmp.keys.bind(CustomConsole._sharedKeyView, false, CustomConsole.setViewConsole);\n\t\t\tCustomConsole._sharedConsoleBrowser = mp.browsers.new('package://interface/customConsole/index.html');\n\t\t\tmp.events.add(\"addCustomConsoleLogToClient\", CustomConsole.pushSharedConsoleLog);\n\n\t\t\tCustomConsole.flushSharedLogBuffer();\n\t\t} catch (error) {\n\t\t\tmp.console.logError('Failed to initialize shared CustomConsole browser');\n\t\t}\n\t}\n\n\tprivate static pushSharedConsoleLog(message: string, platform: ConsolePlatform, formatType: MessageFormat): void {\n\t\tif (CustomConsole._sharedConsoleBrowser && !CustomConsole._sharedStopLog) {\n\t\t\ttry {\n\t\t\t\tCustomConsole._sharedConsoleBrowser.call(\"addCustomConsoleLog\", platform, message, formatType);\n\t\t\t} catch (error) {\n\t\t\t\tmp.console.logError('Failed to call browser method');\n\t\t\t\tCustomConsole._sharedLogBuffer.push({message, platform, format: formatType});\n\t\t\t}\n\t\t} else {\n\t\t\tCustomConsole._sharedLogBuffer.push({message, platform, format: formatType});\n\t\t}\n\t}\n\n\tlog(...messages: any[]): void {\n\t\tif (this._isDestroyed) return;\n\t\tmessages.forEach(message => this.platformCallConsole(ConsoleLogType.log, message));\n\t}\n\n\twarn(...messages: any[]): void {\n\t\tif (this._isDestroyed) return;\n\t\tmessages.forEach(message => this.platformCallConsole(ConsoleLogType.warn, message));\n\t}\n\n\terror(...messages: any[]): void {\n\t\tif (this._isDestroyed) return;\n\t\tmessages.forEach(message => this.platformCallConsole(ConsoleLogType.error, message));\n\t}\n\n\tinfo(...messages: any[]): void {\n\t\tif (this._isDestroyed) return;\n\t\tmessages.forEach(message => this.platformCallConsole(ConsoleLogType.info, message));\n\t}\n\n\tprivate platformCallConsole(type: ConsoleLogType, message: any): void {\n\t\tconst formatType = this.getMessageType(message);\n\t\tconst mesString = this.messageToString(message, formatType);\n    const typeLabel = this.getTypeLabel(type);\n\t\tconst prefixedMessage = `${typeLabel}${this._prefix === \"\" ? \"\" : `[${this._prefix}]`} ${mesString}`;\n\n\t\ttry {\n\t\t\tswitch (this._platform) {\n\t\t\t\tcase ConsolePlatform.UI: {\n\t\t\t\t\tmp.events.call(\"addCustomConsoleLogToClient\", prefixedMessage, this._platform, formatType);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase ConsolePlatform.Client: {\n\t\t\t\t\tCustomConsole.pushSharedConsoleLog(prefixedMessage, this._platform, formatType);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase ConsolePlatform.Server: {\n\t\t\t\t\tmp.players.call(\"addCustomConsoleLogToClient\", [prefixedMessage, this._platform, formatType]);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase ConsolePlatform.Local: {\n\t\t\t\t\tswitch (type) {\n\t\t\t\t\t\tcase ConsoleLogType.warn:\n\t\t\t\t\t\t\tNATIVE_CONSOLE.warn(prefixedMessage);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase ConsoleLogType.error:\n\t\t\t\t\t\t\tNATIVE_CONSOLE.error(prefixedMessage);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase ConsoleLogType.info:\n\t\t\t\t\t\t\tNATIVE_CONSOLE.info(prefixedMessage);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tNATIVE_CONSOLE.log(prefixedMessage);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tNATIVE_CONSOLE.error('CustomConsole platformCallConsole error:', error);\n\t\t\tNATIVE_CONSOLE.log(`[${this._prefix}]`, message);\n\t\t}\n\t}\n\n  private getTypeLabel(type: ConsoleLogType): string {\n    switch (type) {\n      case ConsoleLogType.error: return \"[ERROR] \";\n      case ConsoleLogType.warn:  return \"[WARN] \";\n      case ConsoleLogType.info:  return \"[INFO] \";\n      case ConsoleLogType.log:\n      default:                   return \"[LOG] \";\n    }\n  }\n\n\tprivate getMessageType(message: any): MessageFormat {\n\t\tif (typeof message === 'undefined') return MessageFormat.undefined;\n\t\tif (message === null) return MessageFormat.null;\n\t\tif (typeof message === 'string') return MessageFormat.string;\n\t\tif (typeof message === 'boolean') return MessageFormat.boolean;\n\t\tif (typeof message === 'number') return MessageFormat.number;\n\t\tif (typeof message === 'function') return MessageFormat.function;\n\t\tif (typeof message === 'symbol') return MessageFormat.string;\n\t\tif (typeof message === 'bigint') return MessageFormat.number;\n\n\t\tif (typeof message === 'object') {\n\t\t\tif (message instanceof Error) return MessageFormat.error;\n\t\t\tif (Array.isArray(message)) return MessageFormat.json;\n\t\t\tif (message instanceof Date) return MessageFormat.date;\n\t\t\tif (typeof HTMLElement !== 'undefined' && message instanceof HTMLElement) return MessageFormat.html;\n\t\t\tif (message instanceof Map) return MessageFormat.map;\n\t\t\tif (message instanceof Set) return MessageFormat.set;\n\t\t\tif (message instanceof RegExp) return MessageFormat.regExp;\n\t\t\treturn MessageFormat.json;\n\t\t}\n\n\t\treturn MessageFormat.string;\n\t}\n\n\tprivate messageToString(message: any, format: MessageFormat): string {\n\t\ttry {\n\t\t\tswitch (format) {\n\t\t\t\tcase MessageFormat.undefined:\n\t\t\t\t\treturn \"undefined\";\n\t\t\t\tcase MessageFormat.null:\n\t\t\t\t\treturn \"null\";\n\t\t\t\tcase MessageFormat.string:\n\t\t\t\t\treturn String(message);\n\t\t\t\tcase MessageFormat.boolean:\n\t\t\t\t\treturn Boolean(message).toString();\n\t\t\t\tcase MessageFormat.number:\n\t\t\t\t\treturn Number(message).toString();\n\t\t\t\tcase MessageFormat.function:\n\t\t\t\t\treturn (message as Function).toString();\n\t\t\t\tcase MessageFormat.error:\n\t\t\t\t\treturn message instanceof Error ? (message.stack || message.toString()) : String(message);\n\t\t\t\tcase MessageFormat.date:\n\t\t\t\t\treturn (message as Date).toISOString();\n\t\t\t\tcase MessageFormat.html:\n\t\t\t\t\treturn typeof message === 'string' ? message : (message as HTMLElement).outerHTML;\n\t\t\t\tcase MessageFormat.map:\n\t\t\t\t\treturn JSON.stringify(Array.from((message as Map<any, any>).entries()), null, 2);\n\t\t\t\tcase MessageFormat.set:\n\t\t\t\t\treturn JSON.stringify(Array.from((message as Set<any>).values()), null, 2);\n\t\t\t\tcase MessageFormat.regExp:\n\t\t\t\t\treturn (message as RegExp).toString();\n\t\t\t\tcase MessageFormat.json:\n\t\t\t\t\treturn JSON.stringify(message, this.jsonReplacer, 2);\n\t\t\t\tdefault:\n\t\t\t\t\treturn String(message);\n\t\t\t}\n\t\t} catch (error) {\n\t\t\treturn `[Error serializing: ${typeof message}]`;\n\t\t}\n\t}\n\n\tprivate jsonReplacer = (() => {\n\t\tconst seen = new WeakSet();\n\t\treturn (key: string, value: any) => {\n\t\t\tif (typeof value === 'object' && value !== null) {\n\t\t\t\tif (seen.has(value)) {\n\t\t\t\t\treturn '[Circular]';\n\t\t\t\t}\n\t\t\t\tseen.add(value);\n\t\t\t}\n\t\t\treturn value;\n\t\t};\n\t})();\n\n\tprivate detectPlatform(): ConsolePlatform {\n\t\tif (typeof (mp as any).invoke === 'function') return ConsolePlatform.UI;\n\t\tif (mp?.game && typeof mp.game.joaat === 'function') return ConsolePlatform.Client;\n\t\tif (typeof (mp as any).joaat === 'function') return ConsolePlatform.Server;\n\t\treturn ConsolePlatform.Local;\n\t}\n\n\tstatic rebindKey(newKey: number): void {\n\t\tif (CustomConsole._sharedConsoleBrowser) {\n\t\t\ttry {\n\t\t\t\tmp.keys.unbind(CustomConsole._sharedKeyView, false, CustomConsole.setViewConsole);\n\t\t\t\tmp.keys.bind(newKey, false, CustomConsole.setViewConsole);\n\t\t\t\tCustomConsole._sharedKeyView = newKey;\n\t\t\t} catch (error) {\n\t\t\t\tmp.console.logError('Error rebinding key');\n\t\t\t}\n\t\t}\n\t}\n\n\tgetPrefix(): string {\n\t\treturn this._prefix;\n\t}\n\n\tgetPlatform(): ConsolePlatform {\n\t\treturn this._platform;\n\t}\n\n\tisDestroyed(): boolean {\n\t\treturn this._isDestroyed;\n\t}\n\n\tdestroy(): void {\n\t\tif (this._isDestroyed) return;\n\n\t\tCustomConsole._instanceCount--;\n\t\tthis._isDestroyed = true;\n\n\t\tif (CustomConsole._instanceCount <= 0 && this._platform === ConsolePlatform.Client) this.destroySharedBrowser();\n\t}\n\n\tprivate destroySharedBrowser(): void {\n\t\tif (CustomConsole._sharedConsoleBrowser) {\n\t\t\ttry {\n\t\t\t\tmp.keys.unbind(CustomConsole._sharedKeyView, false, CustomConsole.setViewConsole);\n\t\t\t\tCustomConsole._sharedConsoleBrowser.destroy();\n\t\t\t\tmp.events.remove(\"addCustomConsoleLogToClient\", CustomConsole.pushSharedConsoleLog);\n\t\t\t} catch (error) {\n\t\t\t\tmp.console.logError('Error destroying shared CustomConsole browser');\n\t\t\t}\n\t\t}\n\n\t\tCustomConsole._sharedConsoleBrowser = null;\n\t\tCustomConsole._sharedLogBuffer = [];\n\t\tCustomConsole._sharedView = false;\n\t\tCustomConsole._sharedStopLog = false;\n\t\tCustomConsole._instanceCount = 0;\n\t}\n}"],"mappings":"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","names":[]}