UNPKG

@eggjs/tegg-common-util

Version:
44 lines 3.01 kB
"use strict"; /** * Capture call site stack from v8. * https://github.com/v8/v8/wiki/Stack-Trace-API */ Object.defineProperty(exports, "__esModule", { value: true }); exports.StackUtil = void 0; function prepareObjectStackTrace(_, stack) { return stack; } class StackUtil { // from egg-core/utils // https://github.com/eggjs/egg-core/blob/master/lib/utils/index.js#L51 static getCalleeFromStack(withLine, stackIndex) { stackIndex = stackIndex === undefined ? 2 : stackIndex; const limit = Error.stackTraceLimit; const prep = Error.prepareStackTrace; Error.prepareStackTrace = prepareObjectStackTrace; Error.stackTraceLimit = 10; // capture the stack const obj = { stack: [], }; Error.captureStackTrace(obj); const callSite = obj.stack[stackIndex]; let fileName; /* istanbul ignore else */ if (callSite) { // egg-mock will create a proxy // https://github.com/eggjs/egg-mock/blob/master/lib/app.js#L174 fileName = callSite.getFileName(); } Error.prepareStackTrace = prep; Error.stackTraceLimit = limit; /* istanbul ignore if */ if (!callSite || !fileName) return '<anonymous>'; if (!withLine) return fileName; return `${fileName}:${callSite.getLineNumber()}:${callSite.getColumnNumber()}`; } } exports.StackUtil = StackUtil; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3RhY2tVdGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL1N0YWNrVXRpbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7OztHQUdHOzs7QUFFSCxTQUFTLHVCQUF1QixDQUFDLENBQUMsRUFBRSxLQUFLO0lBQ3ZDLE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUVELE1BQWEsU0FBUztJQUNwQixzQkFBc0I7SUFDdEIsdUVBQXVFO0lBQ3ZFLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxRQUFpQixFQUFFLFVBQW1CO1FBQzlELFVBQVUsR0FBRyxVQUFVLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQztRQUN2RCxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsZUFBZSxDQUFDO1FBQ3BDLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztRQUVyQyxLQUFLLENBQUMsaUJBQWlCLEdBQUcsdUJBQXVCLENBQUM7UUFDbEQsS0FBSyxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7UUFFM0Isb0JBQW9CO1FBQ3BCLE1BQU0sR0FBRyxHQUFpQztZQUN4QyxLQUFLLEVBQUUsRUFBRTtTQUNWLENBQUM7UUFDRixLQUFLLENBQUMsaUJBQWlCLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDN0IsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN2QyxJQUFJLFFBQVEsQ0FBQztRQUNiLDBCQUEwQjtRQUMxQixJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ2IsK0JBQStCO1lBQy9CLGdFQUFnRTtZQUNoRSxRQUFRLEdBQUcsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3BDLENBQUM7UUFFRCxLQUFLLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1FBQy9CLEtBQUssQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1FBRTlCLHdCQUF3QjtRQUN4QixJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsUUFBUTtZQUFFLE9BQU8sYUFBYSxDQUFDO1FBQ2pELElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTyxRQUFRLENBQUM7UUFDL0IsT0FBTyxHQUFHLFFBQVEsSUFBSSxRQUFRLENBQUMsYUFBYSxFQUFFLElBQUksUUFBUSxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUM7SUFDakYsQ0FBQztDQUNGO0FBakNELDhCQWlDQyJ9