/**
* 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 type {Fiber} from './ReactInternalTypes';
import {getStackByFiberInDevAndProd} from './ReactFiberComponentStack';
export type CapturedValue<T> = {
value: T,
source: Fiber | null,
stack: string | null,
digest: string | null,
};
export function createCapturedValueAtFiber<T>(
value: T,
source: Fiber,
): CapturedValue<T> {
// If the value is an error, call this function immediately after it is thrown
// so the stack is accurate.
return {
value,
source,
stack: getStackByFiberInDevAndProd(source),
digest: null,
};
}
export function createCapturedValue<T>(
value: T,
digest: ?string,
stack: ?string,
): CapturedValue<T> {
return {
value,
source: null,
stack: stack != null ? stack : null,
digest: digest != null ? digest : null,
};
}