@ceramicnetwork/core
Version:
Typescript implementation of the Ceramic protocol
25 lines • 1.46 kB
JavaScript
import { StreamUpdater } from '../stream-loading/stream-updater.js';
import { StreamLoader } from '../stream-loading/stream-loader.js';
import { AnchorTimestampExtractor } from '../stream-loading/anchor-timestamp-extractor.js';
import { TipFetcher } from '../stream-loading/tip-fetcher.js';
import { LogSyncer } from '../stream-loading/log-syncer.js';
import { StateManipulator } from '../stream-loading/state-manipulator.js';
import { empty } from 'rxjs';
const noopPubsubQuerier = {
queryNetwork(streamId) {
return empty();
},
};
export function makeStreamLoaderAndUpdater(logger, dispatcher, anchorValidator, api, streamHandlers) {
const anchorTimestampExtractor = new AnchorTimestampExtractor(logger, dispatcher, anchorValidator);
if (!dispatcher.messageBus) {
logger.warn("No pubsub querier detected, won't be able to load tips from the network");
}
const tipFetcher = new TipFetcher(dispatcher.messageBus ? dispatcher.messageBus : noopPubsubQuerier);
const logSyncer = new LogSyncer(dispatcher);
const stateManipulator = new StateManipulator(logger, streamHandlers, logSyncer, api);
const streamLoader = new StreamLoader(logger, tipFetcher, logSyncer, anchorTimestampExtractor, stateManipulator);
const streamUpdater = new StreamUpdater(logger, dispatcher, logSyncer, anchorTimestampExtractor, stateManipulator);
return [streamLoader, streamUpdater];
}
//# sourceMappingURL=stream-loading.js.map