From bdad9ce71bd4fb8e2a153fc39615efc78e0824d5 Mon Sep 17 00:00:00 2001 From: tpluscode Date: Fri, 5 Apr 2024 14:22:45 +0200 Subject: [PATCH] fix: bring back fallback factory --- src/package.json | 2 ++ src/vocabularies.ts | 24 +++++++++++++++--------- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/src/package.json b/src/package.json index 18aa613..ae40d70 100644 --- a/src/package.json +++ b/src/package.json @@ -37,6 +37,8 @@ "@hydrofoil/vocab-hyper-query": "^1.0.1", "@hydrofoil/vocab-roadshow": "^1.0.1", "@hydrofoil/vocab-knossos": "^1.0.1", + "@rdfjs/dataset": "^2.0.2", + "@rdfjs/environment": "^1", "@rdfjs/parser-n3": "^2.0.1", "@zazuko/prefixes": "^2.0.0", "commander": "^10.0.0", diff --git a/src/vocabularies.ts b/src/vocabularies.ts index 5a7d8f0..0b783b4 100644 --- a/src/vocabularies.ts +++ b/src/vocabularies.ts @@ -5,15 +5,20 @@ import ParserN3 from '@rdfjs/parser-n3' import fromStream from 'rdf-dataset-ext/fromStream.js' import addAll from 'rdf-dataset-ext/addAll.js' import toStream from 'rdf-dataset-ext/toStream.js' -import { Environment } from '@rdfjs/environment/Environment.js' +import E, { Environment } from '@rdfjs/environment/Environment.js' +import DatasetFactory from '@rdfjs/dataset/Factory.js' import { loadDatasetStream } from './loadDataset/index.js' import prefixes from './prefixes.js' +const defaultFactory = new E([DatasetFactory]) + export type Datasets = Partial> +type Factory = Environment> + interface VocabulariesOptions { only?: (keyof typeof prefixes)[] | null - factory: Environment> + factory?: Factory } interface VocabulariesDatasetOptions extends VocabulariesOptions { @@ -24,10 +29,11 @@ interface VocabulariesStreamOptions extends VocabulariesO stream: true } -export async function vocabularies(options: VocabulariesDatasetOptions): Promise> -export async function vocabularies(options: VocabulariesStreamOptions): Promise -export async function vocabularies(options: VocabulariesDatasetOptions | VocabulariesStreamOptions) { - const { only = null, factory, stream = false } = options +export async function vocabularies(options?: VocabulariesDatasetOptions): Promise> +export async function vocabularies(options: VocabulariesStreamOptions): Promise +export async function vocabularies(options: VocabulariesDatasetOptions | VocabulariesStreamOptions = {}) { + const { only = null, stream = false } = options + const factory = options.factory || defaultFactory as unknown as Factory let selectedPrefixes: (keyof typeof prefixes)[] = [] if (!!only && Array.isArray(only)) { @@ -43,8 +49,8 @@ export async function vocabularies(options: VocabulariesD selectedPrefixes = Object.keys(prefixes) as any } - const promises = selectedPrefixes.map((prefix) => loadFile(prefix, { customSelection: !!only, factory })) - const datasets = await Promise.all(promises) + const promises = selectedPrefixes.map((prefix) => loadFile(prefix, { customSelection: !!only, factory })) + const datasets: D[] = await Promise.all(promises) if (stream !== false) { let combinedDataset = factory.dataset() @@ -67,7 +73,7 @@ export async function vocabularies(options: VocabulariesD interface LoadFileOptions { customSelection?: boolean - factory: Environment> + factory: Factory } export async function loadFile(prefix: keyof typeof prefixes, { customSelection, factory }: LoadFileOptions): Promise {