UNPKG

@minecraft/creator-tools

Version:

Minecraft Creator Tools command line and libraries.

278 lines (277 loc) 14.6 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ServerMessageCategory = exports.ServerMessageType = void 0; exports.getMessageCategoryPrefix = getMessageCategoryPrefix; var ServerMessageType; (function (ServerMessageType) { ServerMessageType[ServerMessageType["general"] = 0] = "general"; ServerMessageType[ServerMessageType["info"] = 1] = "info"; ServerMessageType[ServerMessageType["error"] = 2] = "error"; ServerMessageType[ServerMessageType["warning"] = 3] = "warning"; })(ServerMessageType || (exports.ServerMessageType = ServerMessageType = {})); var ServerMessageCategory; (function (ServerMessageCategory) { ServerMessageCategory[ServerMessageCategory["general"] = 0] = "general"; ServerMessageCategory[ServerMessageCategory["serverStarting"] = 1] = "serverStarting"; ServerMessageCategory[ServerMessageCategory["version"] = 2] = "version"; ServerMessageCategory[ServerMessageCategory["sessionId"] = 3] = "sessionId"; ServerMessageCategory[ServerMessageCategory["buildId"] = 4] = "buildId"; ServerMessageCategory[ServerMessageCategory["branch"] = 5] = "branch"; ServerMessageCategory[ServerMessageCategory["commitId"] = 6] = "commitId"; ServerMessageCategory[ServerMessageCategory["configuration"] = 7] = "configuration"; ServerMessageCategory[ServerMessageCategory["levelName"] = 8] = "levelName"; ServerMessageCategory[ServerMessageCategory["gameMode"] = 9] = "gameMode"; ServerMessageCategory[ServerMessageCategory["difficulty"] = 10] = "difficulty"; ServerMessageCategory[ServerMessageCategory["contentLoggingConsoleEnabled"] = 11] = "contentLoggingConsoleEnabled"; ServerMessageCategory[ServerMessageCategory["contentLoggingDiskEnabled"] = 12] = "contentLoggingDiskEnabled"; ServerMessageCategory[ServerMessageCategory["experiments"] = 13] = "experiments"; ServerMessageCategory[ServerMessageCategory["openingLevel"] = 14] = "openingLevel"; ServerMessageCategory[ServerMessageCategory["ipv4supported"] = 15] = "ipv4supported"; ServerMessageCategory[ServerMessageCategory["ipv6supported"] = 16] = "ipv6supported"; ServerMessageCategory[ServerMessageCategory["serverStarted"] = 17] = "serverStarted"; ServerMessageCategory[ServerMessageCategory["telemetryMessageStart"] = 18] = "telemetryMessageStart"; ServerMessageCategory[ServerMessageCategory["telemetryStart"] = 19] = "telemetryStart"; ServerMessageCategory[ServerMessageCategory["telemetryEnabling"] = 20] = "telemetryEnabling"; ServerMessageCategory[ServerMessageCategory["telemetryEnabling2"] = 21] = "telemetryEnabling2"; ServerMessageCategory[ServerMessageCategory["telemetryProperties"] = 22] = "telemetryProperties"; ServerMessageCategory[ServerMessageCategory["demarcationLine"] = 23] = "demarcationLine"; ServerMessageCategory[ServerMessageCategory["debuggerListening"] = 24] = "debuggerListening"; ServerMessageCategory[ServerMessageCategory["serverStopRequested"] = 25] = "serverStopRequested"; ServerMessageCategory[ServerMessageCategory["serverStopping"] = 26] = "serverStopping"; ServerMessageCategory[ServerMessageCategory["serverStopped"] = 27] = "serverStopped"; ServerMessageCategory[ServerMessageCategory["debuggerClosing"] = 28] = "debuggerClosing"; ServerMessageCategory[ServerMessageCategory["noLogFile"] = 29] = "noLogFile"; ServerMessageCategory[ServerMessageCategory["playerConnected"] = 30] = "playerConnected"; ServerMessageCategory[ServerMessageCategory["playerDisconnected"] = 31] = "playerDisconnected"; ServerMessageCategory[ServerMessageCategory["backupSaving"] = 32] = "backupSaving"; ServerMessageCategory[ServerMessageCategory["backupSaved"] = 33] = "backupSaved"; ServerMessageCategory[ServerMessageCategory["levelDatUpdate"] = 34] = "levelDatUpdate"; ServerMessageCategory[ServerMessageCategory["backupComplete"] = 35] = "backupComplete"; ServerMessageCategory[ServerMessageCategory["gameTestLoaded"] = 36] = "gameTestLoaded"; ServerMessageCategory[ServerMessageCategory["gameTestPassed"] = 37] = "gameTestPassed"; ServerMessageCategory[ServerMessageCategory["gameTestFailed"] = 38] = "gameTestFailed"; ServerMessageCategory[ServerMessageCategory["empty"] = 39] = "empty"; ServerMessageCategory[ServerMessageCategory["debuggerFailedToStart"] = 40] = "debuggerFailedToStart"; ServerMessageCategory[ServerMessageCategory["internalSystemMessage"] = 41] = "internalSystemMessage"; })(ServerMessageCategory || (exports.ServerMessageCategory = ServerMessageCategory = {})); class ServerMessage { #fullMessage; #message; #type = ServerMessageType.general; #date; #category = ServerMessageCategory.general; get fullMessage() { return this.#fullMessage; } get message() { return this.#message; } get type() { return this.#type; } get category() { return this.#category; } get date() { return this.#date; } constructor(message) { this.#fullMessage = message; this.#date = new Date(0); // Strip "NO LOG FILE! - " prefix if present - this happens when the server // restarts and the log file isn't set up yet. We still need to parse the // actual message content for important events like "Server started." const NO_LOG_PREFIX = "NO LOG FILE! - "; if (message.startsWith(NO_LOG_PREFIX)) { message = message.substring(NO_LOG_PREFIX.length); } const firstBracket = message.indexOf("["); if (firstBracket === 0) { const lastBracket = message.indexOf("] ", firstBracket); if (lastBracket > firstBracket && lastBracket > 10) { this.#message = message.substring(lastBracket + 2); if (message.substring(lastBracket - 4, lastBracket) === "INFO") { this.#type = ServerMessageType.info; } else if (message.substring(lastBracket - 5, lastBracket) === "ERROR") { this.#type = ServerMessageType.error; } else if (message.substring(lastBracket - 4, lastBracket) === "WARN") { this.#type = ServerMessageType.warning; } const lastSpace = message.lastIndexOf(" ", lastBracket); if (lastSpace > firstBracket) { const dateTime = message.substring(firstBracket + 1, lastSpace); this.#date = new Date(dateTime); } } else { this.#message = this.#fullMessage; } } else { this.#message = this.#fullMessage; } this.#message = this.#message.trim(); if (this.#message === "") { this.#category = ServerMessageCategory.empty; } else if (this.#message.startsWith("Starting Server")) { this.#category = ServerMessageCategory.serverStarting; } else if (this.#message.startsWith("Version: ")) { this.#category = ServerMessageCategory.version; } else if (this.#message.startsWith("Session ID: ")) { this.#category = ServerMessageCategory.sessionId; } else if (this.#message.startsWith("Build ID: ")) { this.#category = ServerMessageCategory.buildId; } else if (this.#message.startsWith("Branch: ")) { this.#category = ServerMessageCategory.branch; } else if (this.#message.startsWith("Commit ID: ")) { this.#category = ServerMessageCategory.commitId; } else if (this.#message.startsWith("Configuration: ")) { this.#category = ServerMessageCategory.configuration; } else if (this.#message.startsWith("Level Name: ")) { this.#category = ServerMessageCategory.levelName; } else if (this.#message.startsWith("Game mode: ")) { this.#category = ServerMessageCategory.gameMode; } else if (this.#message.startsWith("Difficulty: ")) { this.#category = ServerMessageCategory.difficulty; } else if (this.#message.startsWith("Content logging to console is enabled")) { this.#category = ServerMessageCategory.contentLoggingConsoleEnabled; } else if (this.#message.startsWith("Content logging to disk is enabled")) { this.#category = ServerMessageCategory.contentLoggingDiskEnabled; } else if (this.#message.startsWith("Experiment(s) active:")) { this.#category = ServerMessageCategory.experiments; } else if (this.#message.startsWith("Opening level")) { this.#category = ServerMessageCategory.openingLevel; } else if (this.#message.startsWith("IPv4 supported")) { this.#category = ServerMessageCategory.ipv4supported; } else if (this.#message.startsWith("IPv6 supported")) { this.#category = ServerMessageCategory.ipv6supported; } else if (this.#message.startsWith("Server started.")) { this.#category = ServerMessageCategory.serverStarted; } else if (this.#message.startsWith("================ TELEMETRY MESSAGE ")) { this.#category = ServerMessageCategory.telemetryMessageStart; } else if (this.#message.startsWith("Server Telemetry is currently not enabled.")) { this.#category = ServerMessageCategory.telemetryStart; } else if (this.#message.startsWith("Enabling this telemetry helps us improve the game.")) { this.#category = ServerMessageCategory.telemetryEnabling; } else if (this.#message.startsWith("To enable this feature")) { this.#category = ServerMessageCategory.telemetryEnabling2; } else if (this.#message.startsWith("to the server.properties")) { this.#category = ServerMessageCategory.telemetryProperties; } else if (this.#message.startsWith("======================================================")) { this.#category = ServerMessageCategory.demarcationLine; } else if (this.#message.startsWith("Debugger listening")) { this.#category = ServerMessageCategory.debuggerListening; } else if (this.#message.startsWith("[Scripting] Script Debugger")) { this.#category = ServerMessageCategory.debuggerClosing; } else if (this.#message.startsWith("Server stop requested")) { this.#category = ServerMessageCategory.serverStopRequested; } else if (this.#message.startsWith("Stopping server...")) { this.#category = ServerMessageCategory.serverStopping; } else if (this.#message.startsWith("Quit correctly")) { this.#category = ServerMessageCategory.serverStopped; } else if (this.#message.startsWith("Player connected")) { this.#category = ServerMessageCategory.playerConnected; } else if (this.#message.startsWith("Player disconnected")) { this.#category = ServerMessageCategory.playerDisconnected; } else if (this.#message.startsWith("Saving...")) { this.#category = ServerMessageCategory.backupSaving; } else if (this.#message.startsWith("Data saved.")) { this.#category = ServerMessageCategory.backupSaved; } else if (this.#message.indexOf("/level.dat:") >= 0) { this.#category = ServerMessageCategory.levelDatUpdate; } else if (this.#message.startsWith("Changes to the world are resumed.")) { this.#category = ServerMessageCategory.backupComplete; } else if (this.#message.indexOf("onTestStructureLoaded:") >= 0) { this.#category = ServerMessageCategory.gameTestLoaded; } else if (this.#message.indexOf("onTestFailed:") >= 0) { this.#category = ServerMessageCategory.gameTestFailed; } else if (this.#message.indexOf("onTestPassed:") >= 0) { this.#category = ServerMessageCategory.gameTestPassed; } else if (this.#message.startsWith("Failed to start debugger")) { this.#category = ServerMessageCategory.debuggerFailedToStart; } else if (this.#message.startsWith("Target data:") || this.#message.startsWith("No targets matched selector") || this.#message.startsWith('"dimension"') || this.#message.startsWith('"id"') || this.#message.startsWith('"position"') || this.#message.startsWith('"uniqueId"') || this.#message.startsWith('"yRot"') || this.#message.startsWith('"x"') || this.#message.startsWith('"y"') || this.#message.startsWith('"z"') || this.#message === "}," || this.#message === "}" || this.#message === "{" || this.#message === "[" || this.#message === "]") { this.#category = ServerMessageCategory.internalSystemMessage; } } } exports.default = ServerMessage; // Lookup table mapping categories to their log prefix. // Using a Map instead of a switch avoids subtle bugs when new enum values are // added: a missing entry simply falls through to the default ("LOG") without // requiring updates to a switch statement scattered across the codebase. const MESSAGE_CATEGORY_PREFIXES = new Map([ [ServerMessageCategory.serverStarting, "START"], [ServerMessageCategory.serverStarted, "READY"], [ServerMessageCategory.serverStopped, "STOP"], [ServerMessageCategory.serverStopRequested, "STOPREQ"], [ServerMessageCategory.serverStopping, "STOPPING"], [ServerMessageCategory.playerConnected, "JOIN"], [ServerMessageCategory.playerDisconnected, "LEAVE"], [ServerMessageCategory.gameTestFailed, "ERROR"], [ServerMessageCategory.debuggerFailedToStart, "ERROR"], [ServerMessageCategory.gameTestPassed, "PASS"], [ServerMessageCategory.backupSaving, "SAVE"], [ServerMessageCategory.backupSaved, "SAVED"], [ServerMessageCategory.backupComplete, "SAVED"], [ServerMessageCategory.version, "VER"], [ServerMessageCategory.debuggerListening, "DEBUG"], [ServerMessageCategory.gameTestLoaded, "GTEST"], ]); function getMessageCategoryPrefix(category) { return MESSAGE_CATEGORY_PREFIXES.get(category) ?? "LOG"; }