import type { DatasetFactory, BaseQuad, Dataset } from "@rdfjs/types"; import type { ITransactionDatasetFactory } from "./types"; import { SubscribableDataset } from "./SubscribableDataset"; /** * A DatasetFactory that returns a SubscribableDataset given a generic DatasetFactory. */ export class SubscribableDatasetFactory< InAndOutQuad extends BaseQuad = BaseQuad, > implements DatasetFactory { protected datasetFactory: DatasetFactory; protected transactionDatasetFactory: ITransactionDatasetFactory; constructor( datasetFactory: DatasetFactory, transactionDatasetFactory: ITransactionDatasetFactory, ) { this.datasetFactory = datasetFactory; this.transactionDatasetFactory = transactionDatasetFactory; } dataset( quads?: Dataset | InAndOutQuad[], ): SubscribableDataset { return new SubscribableDataset( this.datasetFactory, this.transactionDatasetFactory, quads ? this.datasetFactory.dataset(quads) : undefined, ); } }