@virtualstate/examples
Version:
32 lines • 975 B
JavaScript
export async function* read(options, state) {
if (!state)
return;
const children = state.children;
if (!children)
return;
const domainSources = options.domain.map(value => value.source);
const domainVisit = options.visit?.map(value => value.source) ?? domainSources;
let latest = [];
for await (const update of children) {
latest = update.filter(isInDomain);
if (options.final)
continue;
yield* yieldLatest();
}
if (options.final)
yield* yieldLatest();
async function* yieldLatest() {
yield* latest;
const visit = latest.filter(isInDomainVisit);
for (const next of visit) {
yield* read(options, next);
}
}
function isInDomain(value) {
return domainSources.includes(value.source);
}
function isInDomainVisit(value) {
return domainVisit.includes(value.source);
}
}
//# sourceMappingURL=read.js.map