UNPKG

@tpluscode/rdfine

Version:
24 lines (23 loc) 1.64 kB
import type * as RDF from '@rdfjs/types'; import type { AnyContext, AnyPointer } from 'clownface'; import { Initializer, RdfResourceCore, ResourceIdentifier, ResourceNode } from './RdfResource.js'; import { ResourceFactory, Mixin } from './lib/ResourceFactory.js'; import { RdfineEnvironment } from './environment.js'; export interface FactoryOptions { factory?: ResourceFactory; additionalMixins?: Mixin[]; } export interface AnyFactory<T extends RdfResourceCore<any>> { <D extends RDF.DatasetCore = RDF.DatasetCore>(graph: AnyPointer<AnyContext, D>): (T & RdfResourceCore<D>) | ResourceNode<D>; } export interface CurriedBlankFactory<T extends RdfResourceCore<any>> { <D extends RDF.DatasetCore = RDF.DatasetCore>(initializer?: Initializer<T>, options?: FactoryOptions): (graph?: AnyPointer) => T & RdfResourceCore<D>; } export interface CurriedFactory<T extends RdfResourceCore<any>> { <D extends RDF.DatasetCore = RDF.DatasetCore>(id: string | ResourceIdentifier, initializer?: Initializer<T>, options?: FactoryOptions): (graph?: AnyPointer) => T & RdfResourceCore<D>; } export interface FullFactory<T extends RdfResourceCore<any>> { <D extends RDF.DatasetCore = RDF.DatasetCore>(pointer: ResourceNode<D>, initializer?: Initializer<T>, options?: FactoryOptions): T & RdfResourceCore<D>; } export type Factory<T extends RdfResourceCore<any>> = FullFactory<T> & CurriedFactory<T> & CurriedBlankFactory<T>; export declare function createFactory<T extends RdfResourceCore<any>>(mixins: Mixin[], baseInitializer: Initializer<T>, env: RdfineEnvironment): FullFactory<T> & CurriedFactory<T> & CurriedBlankFactory<T>;