@ccms/api
Version:
MiaoScript api package
334 lines • 14.1 kB
JavaScript
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
;