parent
ad1cfdd4bc
commit
0dbe6a5e21
@ -0,0 +1,21 @@ |
||||
import type TypedEmitter from "typed-emitter"; |
||||
import type { SolidLdoDataset } from "./SolidLdoDataset"; |
||||
import type { ContainerResourceStore } from "./document/resource/dataResource/containerResource/ContainerResourceStore"; |
||||
import type { AccessRulesStore } from "./document/accessRules/AccessRulesStore"; |
||||
import type { DataResourceStore } from "./document/resource/dataResource/DataResourceStore"; |
||||
import type { BinaryResourceStore } from "./document/resource/binaryResource/BinaryResourceStore"; |
||||
import type { DocumentError } from "./document/errors/DocumentError"; |
||||
|
||||
export type DocumentEventEmitter = TypedEmitter<{ |
||||
documentError: (error: DocumentError) => void; |
||||
}>; |
||||
|
||||
export interface SolidLdoDatasetContext { |
||||
solidLdoDataset: SolidLdoDataset; |
||||
documentEventEmitter: DocumentEventEmitter; |
||||
fetch: typeof fetch; |
||||
accessRulesStore: AccessRulesStore; |
||||
containerResourceStore: ContainerResourceStore; |
||||
dataResourceStore: DataResourceStore; |
||||
binaryResourceStore: BinaryResourceStore; |
||||
} |
@ -1,31 +1,51 @@ |
||||
import type { Dataset } from "@rdfjs/types"; |
||||
import type { SolidLdoDataset } from "./SolidLdoDataset"; |
||||
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 "stream"; |
||||
import { createDataset, createDatasetFactory } from "@ldo/dataset"; |
||||
|
||||
export interface CreateSolidLdoDatasetOptions { |
||||
fetch?: typeof fetch; |
||||
dataset?: Dataset; |
||||
datasetFactory?: DatasetFactory; |
||||
} |
||||
|
||||
export function createSolidLdoDataset( |
||||
options?: CreateSolidLdoDatasetOptions, |
||||
): SolidLdoDataset { |
||||
const finalFetch = fetch || vbhyg |
||||
const finalFetch = options?.fetch || crossFetch; |
||||
const finalDatasetFactory = options?.datasetFactory || createDatasetFactory(); |
||||
const finalDataset = options?.dataset || createDataset(); |
||||
|
||||
// Ingnoring this because we're setting up circular dependencies
|
||||
// Ignoring because of circular dependency
|
||||
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
||||
// @ts-ignore
|
||||
const dependencies: LdoContextData = { |
||||
onDocumentError, |
||||
const context: SolidLdoDatasetContext = { |
||||
documentEventEmitter: new EventEmitter() as DocumentEventEmitter, |
||||
fetch: finalFetch, |
||||
dataset: ldoDataset, |
||||
updateManager: new UpdateManager(), |
||||
}; |
||||
const binaryResourceStore = new BinaryResourceStore(dependencies); |
||||
const dataResourceStore = new DataResourceStore(dependencies); |
||||
const containerResourceStore = new ContainerResourceStore(dependencies); |
||||
const accessRulesStore = new AccessRulesStore(dependencies); |
||||
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; |
||||
} |
||||
|
@ -1,28 +1,13 @@ |
||||
import type { |
||||
DocumentGetterOptions, |
||||
DocumentStoreDependencies, |
||||
} from "../DocumentStore"; |
||||
import type { DocumentGetterOptions } from "../DocumentStore"; |
||||
import { DocumentStore } from "../DocumentStore"; |
||||
import type { Resource } from "../resource/Resource"; |
||||
import type { AccessRulesDependencies } from "./AccessRules"; |
||||
import { AccessRules } from "./AccessRules"; |
||||
|
||||
export interface AccessRulesStoreDependencies |
||||
extends DocumentStoreDependencies, |
||||
AccessRulesDependencies {} |
||||
|
||||
export class AccessRulesStore extends DocumentStore< |
||||
AccessRules, |
||||
Resource, |
||||
AccessRulesStoreDependencies |
||||
> { |
||||
export class AccessRulesStore extends DocumentStore<AccessRules, Resource> { |
||||
protected create( |
||||
initializer: Resource, |
||||
documentGetterOptions: DocumentGetterOptions, |
||||
documentGetterOptions?: DocumentGetterOptions, |
||||
) { |
||||
return new AccessRules(initializer, { |
||||
...this.dependencies, |
||||
documentGetterOptions, |
||||
}); |
||||
return new AccessRules(initializer, this.context, documentGetterOptions); |
||||
} |
||||
} |
||||
|
Loading…
Reference in new issue