1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- "use strict";
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.beginHiddenCallStack = beginHiddenCallStack;
- exports.endHiddenCallStack = endHiddenCallStack;
- exports.expectedError = expectedError;
- exports.injectVirtualStackFrame = injectVirtualStackFrame;
- var _Object$getOwnPropert;
- const ErrorToString = Function.call.bind(Error.prototype.toString);
- const SUPPORTED = !!Error.captureStackTrace && ((_Object$getOwnPropert = Object.getOwnPropertyDescriptor(Error, "stackTraceLimit")) == null ? void 0 : _Object$getOwnPropert.writable) === true;
- const START_HIDING = "startHiding - secret - don't use this - v1";
- const STOP_HIDING = "stopHiding - secret - don't use this - v1";
- const expectedErrors = new WeakSet();
- const virtualFrames = new WeakMap();
- function CallSite(filename) {
- return Object.create({
- isNative: () => false,
- isConstructor: () => false,
- isToplevel: () => true,
- getFileName: () => filename,
- getLineNumber: () => undefined,
- getColumnNumber: () => undefined,
- getFunctionName: () => undefined,
- getMethodName: () => undefined,
- getTypeName: () => undefined,
- toString: () => filename
- });
- }
- function injectVirtualStackFrame(error, filename) {
- if (!SUPPORTED) return;
- let frames = virtualFrames.get(error);
- if (!frames) virtualFrames.set(error, frames = []);
- frames.push(CallSite(filename));
- return error;
- }
- function expectedError(error) {
- if (!SUPPORTED) return;
- expectedErrors.add(error);
- return error;
- }
- function beginHiddenCallStack(fn) {
- if (!SUPPORTED) return fn;
- return Object.defineProperty(function (...args) {
- setupPrepareStackTrace();
- return fn(...args);
- }, "name", {
- value: STOP_HIDING
- });
- }
- function endHiddenCallStack(fn) {
- if (!SUPPORTED) return fn;
- return Object.defineProperty(function (...args) {
- return fn(...args);
- }, "name", {
- value: START_HIDING
- });
- }
- function setupPrepareStackTrace() {
- setupPrepareStackTrace = () => {};
- const {
- prepareStackTrace = defaultPrepareStackTrace
- } = Error;
- const MIN_STACK_TRACE_LIMIT = 50;
- Error.stackTraceLimit && (Error.stackTraceLimit = Math.max(Error.stackTraceLimit, MIN_STACK_TRACE_LIMIT));
- Error.prepareStackTrace = function stackTraceRewriter(err, trace) {
- let newTrace = [];
- const isExpected = expectedErrors.has(err);
- let status = isExpected ? "hiding" : "unknown";
- for (let i = 0; i < trace.length; i++) {
- const name = trace[i].getFunctionName();
- if (name === START_HIDING) {
- status = "hiding";
- } else if (name === STOP_HIDING) {
- if (status === "hiding") {
- status = "showing";
- if (virtualFrames.has(err)) {
- newTrace.unshift(...virtualFrames.get(err));
- }
- } else if (status === "unknown") {
- newTrace = trace;
- break;
- }
- } else if (status !== "hiding") {
- newTrace.push(trace[i]);
- }
- }
- return prepareStackTrace(err, newTrace);
- };
- }
- function defaultPrepareStackTrace(err, trace) {
- if (trace.length === 0) return ErrorToString(err);
- return `${ErrorToString(err)}\n at ${trace.join("\n at ")}`;
- }
- 0 && 0;
- //# sourceMappingURL=rewrite-stack-trace.js.map
|