import type {ReactIOInfo, ReactAsyncInfo} from 'shared/ReactTypes';
import type {SuspenseNode} from './DevToolsFiberTypes';
export function ioExistsInSuspenseAncestor(
suspenseNode: SuspenseNode,
ioInfo: ReactIOInfo,
): boolean {
let ancestor = suspenseNode.parent;
while (ancestor !== null) {
if (ancestor.suspendedBy.has(ioInfo)) {
return true;
}
ancestor = ancestor.parent;
}
return false;
}
export function getAwaitInSuspendedByFromIO(
suspensedBy: Array<ReactAsyncInfo>,
ioInfo: ReactIOInfo,
): null | ReactAsyncInfo {
for (let i = 0; i < suspensedBy.length; i++) {
const asyncInfo = suspensedBy[i];
if (asyncInfo.awaited === ioInfo) {
return asyncInfo;
}
}
return null;
}
export function getVirtualEndTime(ioInfo: ReactIOInfo): number {
if (ioInfo.env != null) {
return ioInfo.end + 1000000;
}
return ioInfo.end;
}