@logtail/edge
Version:
Better Stack Edge runtime logger (formerly Logtail)
46 lines • 1.68 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getStackContext = getStackContext;
const stack_trace_1 = __importDefault(require("stack-trace"));
/**
* Determines the file name and the line number from which the log
* was initiated (if we're able to tell).
*
* @returns Context The caller's filename and the line number
*/
function getStackContext(logtail) {
const stackFrame = getCallingFrame(logtail);
if (stackFrame === null)
return {};
return {
context: {
runtime: {
file: stackFrame.getFileName(),
type: stackFrame.getTypeName(),
method: stackFrame.getMethodName(),
function: stackFrame.getFunctionName(),
line: stackFrame.getLineNumber(),
column: stackFrame.getColumnNumber(),
},
},
};
}
function getCallingFrame(logtail) {
for (let fn of [logtail.warn, logtail.error, logtail.info, logtail.debug, logtail.log]) {
const stack = stack_trace_1.default.get(fn);
if ((stack === null || stack === void 0 ? void 0 : stack.length) > 0)
return getRelevantStackFrame(stack);
}
return null;
}
function getRelevantStackFrame(frames) {
let reversedFrames = frames.reverse();
let index = reversedFrames.findIndex((frame) => frame.getTypeName() === "EdgeWithExecutionContext");
if (index > 0)
return reversedFrames[index - 1];
return frames[0];
}
//# sourceMappingURL=context.js.map