/**
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @flow
*/
import ErrorStackParser from 'error-stack-parser';
import testErrorStack, {
SOURCE_STACK_FRAME_LINE_NUMBER,
} from './ErrorTesterCompiled';
let sourceMapsAreAppliedToErrors: boolean | null = null;
// Source maps are automatically applied to Error stack frames.
export function areSourceMapsAppliedToErrors(): boolean {
if (sourceMapsAreAppliedToErrors === null) {
try {
testErrorStack();
sourceMapsAreAppliedToErrors = false;
} catch (error) {
const parsed = ErrorStackParser.parse(error);
const topStackFrame = parsed[0];
const lineNumber = topStackFrame.lineNumber;
if (lineNumber === SOURCE_STACK_FRAME_LINE_NUMBER) {
sourceMapsAreAppliedToErrors = true;
}
}
}
return sourceMapsAreAppliedToErrors === true;
}