* @param {Fn=} belowFn below function * @returns {NodeJS.CallSite[]} V8 stack trace
(belowFn)
| 462 | * @returns {NodeJS.CallSite[]} V8 stack trace |
| 463 | */ |
| 464 | function getStackTrace(belowFn) { |
| 465 | const oldLimit = Error.stackTraceLimit; |
| 466 | Error.stackTraceLimit = Infinity; |
| 467 | /** @type {{ stack?: NodeJS.CallSite[] }} */ |
| 468 | const dummyObject = {}; |
| 469 | const v8Handler = Error.prepareStackTrace; |
| 470 | Error.prepareStackTrace = (dummyObject, v8StackTrace) => v8StackTrace; |
| 471 | Error.captureStackTrace(dummyObject, belowFn || getStackTrace); |
| 472 | const v8StackTrace = /** @type {NodeJS.CallSite[]} */ (dummyObject.stack); |
| 473 | Error.prepareStackTrace = v8Handler; |
| 474 | Error.stackTraceLimit = oldLimit; |
| 475 | return v8StackTrace; |
| 476 | } |
| 477 | |
| 478 | function getCallingFile() { |
| 479 | const stack = getStackTrace(); |