packages/@alicloud/ros-cdk-core/lib/stack-trace.ts (21 lines of code) (raw):
// tslint:disable-next-line:ban-types
export function captureStackTrace(below?: Function): string[] {
if (process.env.CDK_DISABLE_STACK_TRACE) {
return ["stack traces disabled"];
}
below = below || captureStackTrace; // hide myself if nothing else
const object = { stack: "" };
const previousLimit = Error.stackTraceLimit;
try {
Error.stackTraceLimit = Number.MAX_SAFE_INTEGER;
Error.captureStackTrace(object, below);
} finally {
Error.stackTraceLimit = previousLimit;
}
if (!object.stack) {
return [];
}
return object.stack
.split("\n")
.slice(1)
.map((s) => s.replace(/^\s*at\s+/, ""));
}