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 { Dataset, DatasetFactory } from "@rdfjs/types"; |
||||||
import type { SolidLdoDataset } from "./SolidLdoDataset"; |
import { SolidLdoDataset } from "./SolidLdoDataset"; |
||||||
import { AccessRulesStore } from "./document/accessRules/AccessRulesStore"; |
import { AccessRulesStore } from "./document/accessRules/AccessRulesStore"; |
||||||
import { BinaryResourceStore } from "./document/resource/binaryResource/BinaryResourceStore"; |
import { BinaryResourceStore } from "./document/resource/binaryResource/BinaryResourceStore"; |
||||||
import { DataResourceStore } from "./document/resource/dataResource/DataResourceStore"; |
import { DataResourceStore } from "./document/resource/dataResource/DataResourceStore"; |
||||||
import { ContainerResourceStore } from "./document/resource/dataResource/containerResource/ContainerResourceStore"; |
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 { |
export interface CreateSolidLdoDatasetOptions { |
||||||
fetch?: typeof fetch; |
fetch?: typeof fetch; |
||||||
dataset?: Dataset; |
dataset?: Dataset; |
||||||
|
datasetFactory?: DatasetFactory; |
||||||
} |
} |
||||||
|
|
||||||
export function createSolidLdoDataset( |
export function createSolidLdoDataset( |
||||||
options?: CreateSolidLdoDatasetOptions, |
options?: CreateSolidLdoDatasetOptions, |
||||||
): SolidLdoDataset { |
): 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
|
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
const dependencies: LdoContextData = { |
const context: SolidLdoDatasetContext = { |
||||||
onDocumentError, |
documentEventEmitter: new EventEmitter() as DocumentEventEmitter, |
||||||
fetch: finalFetch, |
fetch: finalFetch, |
||||||
dataset: ldoDataset, |
|
||||||
updateManager: new UpdateManager(), |
|
||||||
}; |
}; |
||||||
const binaryResourceStore = new BinaryResourceStore(dependencies); |
const binaryResourceStore = new BinaryResourceStore(context); |
||||||
const dataResourceStore = new DataResourceStore(dependencies); |
const dataResourceStore = new DataResourceStore(context); |
||||||
const containerResourceStore = new ContainerResourceStore(dependencies); |
const containerResourceStore = new ContainerResourceStore(context); |
||||||
const accessRulesStore = new AccessRulesStore(dependencies); |
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 { |
import type { DocumentGetterOptions } from "../DocumentStore"; |
||||||
DocumentGetterOptions, |
|
||||||
DocumentStoreDependencies, |
|
||||||
} from "../DocumentStore"; |
|
||||||
import { DocumentStore } from "../DocumentStore"; |
import { DocumentStore } from "../DocumentStore"; |
||||||
import type { Resource } from "../resource/Resource"; |
import type { Resource } from "../resource/Resource"; |
||||||
import type { AccessRulesDependencies } from "./AccessRules"; |
|
||||||
import { AccessRules } from "./AccessRules"; |
import { AccessRules } from "./AccessRules"; |
||||||
|
|
||||||
export interface AccessRulesStoreDependencies |
export class AccessRulesStore extends DocumentStore<AccessRules, Resource> { |
||||||
extends DocumentStoreDependencies, |
|
||||||
AccessRulesDependencies {} |
|
||||||
|
|
||||||
export class AccessRulesStore extends DocumentStore< |
|
||||||
AccessRules, |
|
||||||
Resource, |
|
||||||
AccessRulesStoreDependencies |
|
||||||
> { |
|
||||||
protected create( |
protected create( |
||||||
initializer: Resource, |
initializer: Resource, |
||||||
documentGetterOptions: DocumentGetterOptions, |
documentGetterOptions?: DocumentGetterOptions, |
||||||
) { |
) { |
||||||
return new AccessRules(initializer, { |
return new AccessRules(initializer, this.context, documentGetterOptions); |
||||||
...this.dependencies, |
|
||||||
documentGetterOptions, |
|
||||||
}); |
|
||||||
} |
} |
||||||
} |
} |
||||||
|
Loading…
Reference in new issue