You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
ldo-compact-fork/packages/solid/src/createSolidLdoDataset.ts

51 lines
2.0 KiB

import type { Dataset, DatasetFactory } from "@rdfjs/types";
import { SolidLdoDataset } from "./SolidLdoDataset";
import { AccessRulesStore } from "./document/accessRules/AccessRulesStore";
import { BinaryResourceStore } from "./document/resource/binaryResource/BinaryResourceStore";
import { DataResourceStore } from "./document/resource/dataResource/DataResourceStore";
import { ContainerResourceStore } from "./document/resource/dataResource/containerResource/ContainerResourceStore";
import type {
DocumentEventEmitter,
SolidLdoDatasetContext,
} from "./SolidLdoDatasetContext";
import crossFetch from "cross-fetch";
import { EventEmitter } from "events";
import { createDataset, createDatasetFactory } from "@ldo/dataset";
export interface CreateSolidLdoDatasetOptions {
fetch?: typeof fetch;
dataset?: Dataset;
datasetFactory?: DatasetFactory;
}
export function createSolidLdoDataset(
options?: CreateSolidLdoDatasetOptions,
): SolidLdoDataset {
const finalFetch = options?.fetch || crossFetch;
const finalDatasetFactory = options?.datasetFactory || createDatasetFactory();
const finalDataset = options?.dataset || createDataset();
// Ignoring because of circular dependency
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
const context: SolidLdoDatasetContext = {
documentEventEmitter: new EventEmitter() as DocumentEventEmitter,
fetch: finalFetch,
};
const binaryResourceStore = new BinaryResourceStore(context);
const dataResourceStore = new DataResourceStore(context);
const containerResourceStore = new ContainerResourceStore(context);
const accessRulesStore = new AccessRulesStore(context);
const solidLdoDataset = new SolidLdoDataset(
context,
finalDatasetFactory,
finalDataset,
);
context.binaryResourceStore = binaryResourceStore;
context.dataResourceStore = dataResourceStore;
context.containerResourceStore = containerResourceStore;
context.accessRulesStore = accessRulesStore;
context.solidLdoDataset = solidLdoDataset;
return solidLdoDataset;
}