* Add support for chunked streaming in `index.ts` by setting up a next chunk promise and handling "next" and "abort" messages in the receive update callback.
This commit is contained in:
parent
f69ff102cc
commit
824881ed88
27
src/index.ts
27
src/index.ts
|
@ -265,11 +265,19 @@ async function handleLs(aq: ActiveQuery) {
|
||||||
}
|
}
|
||||||
|
|
||||||
let aborted = false;
|
let aborted = false;
|
||||||
|
let nextChunk = defer();
|
||||||
|
|
||||||
aq.setReceiveUpdate?.(() => {
|
aq.setReceiveUpdate?.((data: any) => {
|
||||||
|
switch (data) {
|
||||||
|
case "abort":
|
||||||
aborted = true;
|
aborted = true;
|
||||||
|
break;
|
||||||
|
case "next":
|
||||||
|
nextChunk.resolve();
|
||||||
|
nextChunk = defer();
|
||||||
|
break;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
const iterable = fs.ls(
|
const iterable = fs.ls(
|
||||||
getCID(aq.callerInput.cid),
|
getCID(aq.callerInput.cid),
|
||||||
aq.callerInput.options ?? {}
|
aq.callerInput.options ?? {}
|
||||||
|
@ -280,6 +288,8 @@ async function handleLs(aq: ActiveQuery) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
aq.sendUpdate(JSON.parse(JSON.stringify(item)));
|
aq.sendUpdate(JSON.parse(JSON.stringify(item)));
|
||||||
|
|
||||||
|
await nextChunk.promise;
|
||||||
}
|
}
|
||||||
|
|
||||||
aq.respond();
|
aq.respond();
|
||||||
|
@ -294,9 +304,18 @@ async function handleCat(aq: ActiveQuery) {
|
||||||
}
|
}
|
||||||
|
|
||||||
let aborted = false;
|
let aborted = false;
|
||||||
|
let nextChunk = defer();
|
||||||
|
|
||||||
aq.setReceiveUpdate?.(() => {
|
aq.setReceiveUpdate?.((data: any) => {
|
||||||
|
switch (data) {
|
||||||
|
case "abort":
|
||||||
aborted = true;
|
aborted = true;
|
||||||
|
break;
|
||||||
|
case "next":
|
||||||
|
nextChunk.resolve();
|
||||||
|
nextChunk = defer();
|
||||||
|
break;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
const iterable = fs.cat(
|
const iterable = fs.cat(
|
||||||
|
@ -310,6 +329,8 @@ async function handleCat(aq: ActiveQuery) {
|
||||||
}
|
}
|
||||||
|
|
||||||
aq.sendUpdate(chunk);
|
aq.sendUpdate(chunk);
|
||||||
|
|
||||||
|
await nextChunk.promise;
|
||||||
}
|
}
|
||||||
|
|
||||||
aq.respond();
|
aq.respond();
|
||||||
|
|
Loading…
Reference in New Issue