@tpluscode/rdfine
Version:
RDF/JS idiomatic, native, effective
24 lines (23 loc) • 1.64 kB
TypeScript
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>;