UNPKG

@ccms/api

Version:

MiaoScript api package

334 lines 14.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.MiaoScriptConsole = exports.jsconsole = void 0; var tslib_1 = require("tslib"); var i18n_1 = require("@ccms/i18n"); var source_map_builder_1 = require("source-map-builder"); var base64 = require("base64-js"); var Arrays = Java.type('java.util.Arrays'); var Level = Java.type('java.util.logging.Level'); var Paths = Java.type('java.nio.file.Paths'); var ignoreLogPrefix = ['java.', 'javax.', 'sun.', 'net.minecraft.', 'org.bukkit.', 'jdk.internal.dynalink.', 'jdk.nashorn.', 'org.openjdk.nashorn', 'io.netty.', 'org.spongepowered.', 'org.apache', 'org.springframework']; var LogLevel; (function (LogLevel) { LogLevel[LogLevel["ALL"] = 0] = "ALL"; LogLevel[LogLevel["TRACE"] = 1] = "TRACE"; LogLevel[LogLevel["DEBUG"] = 2] = "DEBUG"; LogLevel[LogLevel["INFO"] = 3] = "INFO"; LogLevel[LogLevel["WARN"] = 4] = "WARN"; LogLevel[LogLevel["ERROR"] = 5] = "ERROR"; LogLevel[LogLevel["FATAL"] = 6] = "FATAL"; LogLevel[LogLevel["OFF"] = 7] = "OFF"; })(LogLevel || (LogLevel = {})); var sourceMaps = {}; var sourceFileMaps = {}; global.setGlobal('MiaoScriptSourceMaps', sourceMaps); global.setGlobal('MiaoScriptSourceFileMaps', sourceFileMaps); var jsconsole; (function (jsconsole) { function readSourceMap(fileName, lineNumber) { try { if (fileName.endsWith('js') || fileName.endsWith('ms')) { if (sourceMaps[fileName] === undefined) { sourceMaps[fileName] = null; var sourceLine = base.read(fileName).split('\n'); var lastLine = sourceLine[sourceLine.length - 1] || sourceLine[sourceLine.length - 2]; // lastLine is similar //# sourceMappingURL=data:application/json;base64, if (lastLine.startsWith('//# sourceMappingURL=')) { var sourceContent = null; var sourceMappingURL = lastLine.split('sourceMappingURL=', 2)[1]; if (sourceMappingURL.startsWith('data:application/json;base64,')) { sourceContent = String.fromCharCode.apply(String, tslib_1.__spreadArray([], tslib_1.__read(Array.from(base64.toByteArray(sourceMappingURL.split(',', 2)[1]))), false)); } else if (sourceMappingURL.startsWith('http://') || sourceMappingURL.startsWith('https://')) { // TODO } else { var file = Paths.get(Paths.get(fileName, '..', sourceMappingURL).toFile().getCanonicalPath()).toFile(); if (file.exists()) { sourceContent = base.read(file); sourceFileMaps[fileName] = file.getCanonicalPath(); } else if (global.debug) { console.debug('readSourceMap can\'t found', fileName, 'source map file', sourceMappingURL); } } if (sourceContent) { sourceMaps[fileName] = new source_map_builder_1.SourceMapBuilder(JSON.parse(sourceContent)); } } } if (sourceMaps[fileName]) { var sourceMapping = sourceMaps[fileName].getSource(lineNumber, 25, true, true); if (sourceMapping) { fileName = Paths.get(fileName, '..', sourceMapping.sourcePath).toFile().getCanonicalPath(); lineNumber = sourceMapping.mapping.sourceLine; } } } } catch (error) { console.debug('search source map', fileName, 'line', lineNumber, 'error:', error); if (global.debug) { console.ex(error); } } return { fileName: fileName, lineNumber: lineNumber }; } jsconsole.readSourceMap = readSourceMap; function getStackTrace(ex, color) { if (color === void 0) { color = true; } if (!ex) return []; var stack = ex.getStackTrace(); var cache = [(color ? '§c' : '') + ex]; //@ts-ignore if (stack.class) { stack = Arrays.asList(stack); } stack.forEach(function (trace) { if (!trace.fileName || trace.fileName.startsWith('jar:file:') || trace.fileName.startsWith('file:')) { return; } if (trace.className.startsWith('<')) { var _a = readSourceMap(trace.fileName, trace.lineNumber), fileName_1 = _a.fileName, lineNumber_1 = _a.lineNumber; if (fileName_1.startsWith(root)) { fileName_1 = fileName_1.split(root)[1]; } if (color) { cache.push(" \u00A7e->\u00A7c ".concat(fileName_1, ":").concat(lineNumber_1, "(").concat(trace.lineNumber, ") => \u00A74").concat(trace.methodName)); } else { cache.push(" -> ".concat(fileName_1, ":").concat(lineNumber_1, "(").concat(trace.lineNumber, ") => ").concat(trace.methodName)); } } else { var className = trace.className; var fileName = trace.fileName; var lineNumber = trace.lineNumber; if (className.startsWith('jdk.nashorn.internal.scripts') || className.startsWith('org.openjdk.nashorn.internal.scripts')) { className = className.substr(className.lastIndexOf('$') + 1); var _b = readSourceMap(fileName, lineNumber), fileName = _b.fileName, lineNumber = _b.lineNumber; if (fileName.startsWith(root)) { fileName = fileName.split(root)[1]; } } else { if (!global.debug) { for (var prefix in ignoreLogPrefix) { if (className.startsWith(ignoreLogPrefix[prefix])) { return; } } } else if (className.startsWith('jdk.nashorn.internal.') || className.startsWith('org.openjdk.nashorn.internal.')) { return; } } if (color) { cache.push(" \u00A7e->\u00A7c ".concat(className, ".").concat(trace.methodName, "(\u00A74").concat(fileName, ":").concat(lineNumber, "\u00A7c)")); } else { cache.push(" -> ".concat(className, ".").concat(trace.methodName, "(").concat(fileName, ":").concat(lineNumber, ")")); } } }); return cache; } jsconsole.getStackTrace = getStackTrace; })(jsconsole = exports.jsconsole || (exports.jsconsole = {})); var MiaoScriptConsole = /** @class */ (function () { function MiaoScriptConsole(name) { var _a; this._name = ''; this._level = LogLevel.INFO; this.prefix = '§6[§bMiaoScript§6]§r '; this.name = name; this.logger = global.logger; if (global.debug) { this._level = LogLevel.DEBUG; } if (((_a = global.level) === null || _a === void 0 ? void 0 : _a.toUpperCase()) === "TRACE") { this._level = LogLevel.TRACE; } } Object.defineProperty(MiaoScriptConsole.prototype, "name", { get: function () { return this._name; }, set: function (name) { if (name) { this._name = "[".concat(name, "] "); this.prefix = "\u00A76[\u00A7cMS\u00A76][\u00A7b".concat(name, "\u00A76]\u00A7r "); } }, enumerable: false, configurable: true }); MiaoScriptConsole.prototype.log = function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } this.logger.info(this.name + args.join(' ')); }; MiaoScriptConsole.prototype.info = function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } this.logger.info(this.name + args.join(' ')); }; MiaoScriptConsole.prototype.warn = function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } this.logger.warning(this.name + args.join(' ')); }; MiaoScriptConsole.prototype.error = function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } this.logger.log(Level.SEVERE, this.name + args.join(' ')); }; MiaoScriptConsole.prototype.debug = function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } if (global.debug) { this.logger.info(this.name + '[DEBUG] ' + args.join(' ')); } }; MiaoScriptConsole.prototype.trace = function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } if (this._level <= LogLevel.TRACE) { this.logger.info(this.name + '[TRACE] ' + args.join(' ')); } }; MiaoScriptConsole.prototype.sender = function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } this.info(args); }; MiaoScriptConsole.prototype.console = function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } this.info(args); }; MiaoScriptConsole.prototype.i18n = function (name, param) { this.console(i18n_1.default.translate(name, param)); }; MiaoScriptConsole.prototype.object = function (obj) { for (var i in obj) { this.info(i, '=>', obj[i]); } }; MiaoScriptConsole.prototype.ex = function (ex) { var _this = this; this.stack(ex).forEach(function (line) { return _this.console(line); }); }; MiaoScriptConsole.prototype.stack = function (ex, color) { if (color === void 0) { color = true; } return jsconsole.getStackTrace(ex, color); }; MiaoScriptConsole.prototype.assert = function (value, message) { var optionalParams = []; for (var _i = 2; _i < arguments.length; _i++) { optionalParams[_i - 2] = arguments[_i]; } throw new Error("Method not implemented."); }; MiaoScriptConsole.prototype.clear = function () { throw new Error("Method not implemented."); }; MiaoScriptConsole.prototype.count = function (label) { throw new Error("Method not implemented."); }; MiaoScriptConsole.prototype.countReset = function (label) { throw new Error("Method not implemented."); }; MiaoScriptConsole.prototype.dir = function (obj, options) { throw new Error("Method not implemented."); }; MiaoScriptConsole.prototype.dirxml = function () { var data = []; for (var _i = 0; _i < arguments.length; _i++) { data[_i] = arguments[_i]; } throw new Error("Method not implemented."); }; MiaoScriptConsole.prototype.exception = function (message) { var optionalParams = []; for (var _i = 1; _i < arguments.length; _i++) { optionalParams[_i - 1] = arguments[_i]; } throw new Error('Method not implemented.'); }; MiaoScriptConsole.prototype.group = function () { var label = []; for (var _i = 0; _i < arguments.length; _i++) { label[_i] = arguments[_i]; } throw new Error("Method not implemented."); }; MiaoScriptConsole.prototype.groupCollapsed = function () { var label = []; for (var _i = 0; _i < arguments.length; _i++) { label[_i] = arguments[_i]; } throw new Error("Method not implemented."); }; MiaoScriptConsole.prototype.groupEnd = function () { throw new Error("Method not implemented."); }; MiaoScriptConsole.prototype.table = function (tabularData, properties) { throw new Error("Method not implemented."); }; MiaoScriptConsole.prototype.time = function (label) { throw new Error("Method not implemented."); }; MiaoScriptConsole.prototype.timeEnd = function (label) { throw new Error("Method not implemented."); }; MiaoScriptConsole.prototype.timeLog = function (label) { var data = []; for (var _i = 1; _i < arguments.length; _i++) { data[_i - 1] = arguments[_i]; } throw new Error("Method not implemented."); }; MiaoScriptConsole.prototype.markTimeline = function (label) { throw new Error("Method not implemented."); }; MiaoScriptConsole.prototype.profile = function (label) { throw new Error("Method not implemented."); }; MiaoScriptConsole.prototype.profileEnd = function (label) { throw new Error("Method not implemented."); }; MiaoScriptConsole.prototype.timeStamp = function (label) { throw new Error("Method not implemented."); }; MiaoScriptConsole.prototype.timeline = function (label) { throw new Error("Method not implemented."); }; MiaoScriptConsole.prototype.timelineEnd = function (label) { throw new Error("Method not implemented."); }; return MiaoScriptConsole; }()); exports.MiaoScriptConsole = MiaoScriptConsole; //# sourceMappingURL=console.js.map