fix readStreamData getting stuck when its called before end but after last readable event called

This commit is contained in:
Abhinav 2022-12-20 17:28:42 +05:30
parent ebcf54d58e
commit 7fd8582f44

View file

@ -97,24 +97,31 @@ export const getZipFileStream = async (
const done = {
current: false,
};
const inProgress = {
current: false,
};
let resolveObj: (value?: any) => void = null;
let rejectObj: (reason?: any) => void = null;
stream.on('readable', () => {
if (resolveObj) {
inProgress.current = true;
const chunk = stream.read(FILE_STREAM_CHUNK_SIZE) as Buffer;
if (chunk) {
resolveObj(new Uint8Array(chunk));
resolveObj = null;
}
inProgress.current = false;
}
});
stream.on('end', () => {
done.current = true;
if (resolveObj && !inProgress.current) {
resolveObj(null);
resolveObj = null;
}
});
stream.on('error', (e) => {
done.current = true;
if (rejectObj) {
rejectObj(e);
rejectObj = null;