@ceramicnetwork/core
Version:
Typescript implementation of the Ceramic protocol
43 lines • 1.71 kB
JavaScript
import { LoggerProvider } from '@ceramicnetwork/common';
import tmp from 'tmp-promise';
import { Dispatcher } from '../dispatcher.js';
import { StreamStateStore } from '../store/stream-state-store.js';
import { Repository } from '../state-management/repository.js';
import { ShutdownSignal } from '../shutdown-signal.js';
import { TaskQueue } from '../ancillary/task-queue.js';
import { LevelKVFactory } from '../store/level-kv-factory.js';
export async function createDispatcher(ipfs, pubsubTopic) {
const loggerProvider = new LoggerProvider();
const logger = loggerProvider.getDiagnosticsLogger();
const levelPath = await tmp.tmpName();
const factory = new LevelKVFactory(levelPath, 'test', logger);
const stateStore = new StreamStateStore();
await stateStore.open(factory);
const fauxReconApi = {
init: () => Promise.resolve(),
pipe: () => fauxReconApi,
subscribe: () => fauxReconApi,
};
const repository = new Repository(100, 100, fauxReconApi, logger);
const pinStore = {
stateStore,
open: () => Promise.resolve(),
};
const anchorRequestStore = {
open: () => Promise.resolve(),
};
const index = {
init: () => Promise.resolve(),
indexedModels: () => [],
};
repository.setDeps({
pinStore,
kvFactory: factory,
anchorRequestStore,
indexing: index,
});
await repository.init();
const shutdownSignal = new ShutdownSignal();
return new Dispatcher(ipfs, pubsubTopic, repository, logger, loggerProvider.makeServiceLogger('pubsub'), shutdownSignal, true, 10, fauxReconApi, new TaskQueue());
}
//# sourceMappingURL=create-dispatcher.js.map