if (!global.hasOwnProperty("__DEBUG_LOG_INTROSPECTION__")) { Object.defineProperty(global, '__stack', { get: function () { var orig = Error.prepareStackTrace; Error.prepareStackTrace = function (_, stack) { return stack; }; var err = new Error; Error.captureStackTrace(err, arguments.callee); var stack = err.stack; Error.prepareStackTrace = orig; return stack; } }); Object.defineProperty(global, '__line', { get: function () { return __stack[1].getLineNumber(); } }); Object.defineProperty(global, '__function', { get: function () { return __stack[1].getFunctionName(); } }); Object.defineProperty(global, '__fileName', { get: function () { let fullpath = __stack[1].getFileName().trim().split(/\/|\\/); return fullpath[fullpath.length - 1]; } }); Object.defineProperty(global, "__DEBUG_LOG_INTROSPECTION__", { "Type": "FLAG" }); }