@tpluscode/rdfine
Version:
RDF/JS idiomatic, native, effective
18 lines (17 loc) • 854 B
TypeScript
import type { AnyPointer, GraphPointer } from 'clownface';
import type * as ns from '@tpluscode/rdf-ns-builders';
import type { NamedNode, DatasetCore, Term } from '@rdfjs/types';
import type { RdfResource } from '../RdfResource.js';
declare const rdf: typeof ns.rdf;
export declare function isList(node: AnyPointer): boolean;
export declare function enumerateList<T, D extends DatasetCore = DatasetCore>(parent: RdfResource<D>, listNode: GraphPointer<Term, D>, fromTerm: (obj: GraphPointer<Term, D>) => T | T[]): T[];
type Iri<N> = N extends NamedNode<infer I> ? I : never;
type rdfFirst = Iri<typeof rdf.first>;
type rdfRest = Iri<typeof rdf.rest>;
type ListInit<T> = {
[key in rdfFirst]: T;
} & {
[key in rdfRest]: ListInit<T> | typeof rdf.nil;
};
export declare function initialize<T>(...items: T[]): ListInit<T> | typeof rdf.nil;
export {};