blob: da9c791079c13c2979c24f8b1296a7662161baed [file] [log] [blame]
// Register source-map-support for source maps to be applied on stack traces.
require('source-map-support/register')
let basePath = process.env.JS_BINARY__RUNFILES
? `${process.env.JS_BINARY__RUNFILES}/${process.env.JS_BINARY__WORKSPACE}`
: process.cwd()
if (!basePath.endsWith('/')) {
basePath = basePath + '/'
}
/*
Before:
Error: test
at foo (/private/var/tmp/_bazel_username/67beefda950d56283b98d96980e6e332/execroot/aspect_rules_js/bazel-out/darwin_arm64-fastbuild/bin/examples/stack_traces/stack_trace_support.sh.runfiles/aspect_rules_js/examples/stack_traces/b.js:2:11)
at Object.<anonymous> (/private/var/tmp/_bazel_username/67beefda950d56283b98d96980e6e332/execroot/aspect_rules_js/bazel-out/darwin_arm64-fastbuild/bin/examples/stack_traces/stack_trace_support.sh.runfiles/aspect_rules_js/examples/stack_traces/a.js:4:1)
...
After:
Error: test
at foo (examples/stack_traces/b.ts:2:9)
at Object.<anonymous> (examples/stack_traces/a.ts:5:1)
...
*/
const basePathRegex = new RegExp(
`(at | \\()${basePath
.replace(/\\/g, '/')
// Escape regex meta-characters.
.replace(/[|\\{}()[\]^$+*?.]/g, '\\$&')
.replace(/-/g, '\\x2d')}`,
'g'
)
const prepareStackTrace = Error.prepareStackTrace
Error.prepareStackTrace = function (error, stack) {
return prepareStackTrace(error, stack)
.split('\n')
.map((line) => line.replace(basePathRegex, '$1'))
.join('\n')
}