import { InfiniteStreamReadonlyState, InfiniteStreamWritableState, InfiniteStreamState, } from "../state"; import { StreamCo } from "./builder"; import { Loader } from "./infiniteLoader"; export const StreamDataLoader = < Element extends { Id: string }, foreignMutations, >() => { const operations = InfiniteStreamState().Operations; const LoaderTemplate = StreamCo().Template( Loader(), { runFilter: (props) => operations.shouldCoroutineRun(props.context), }, ); return LoaderTemplate.mapContext< InfiniteStreamReadonlyState & InfiniteStreamWritableState >((_) => _); };