UNPKG

@zazuko/rdf-utils-fs

Version:
32 lines (31 loc) 1.17 kB
import { createReadStream } from 'fs'; import { extname } from 'path'; import url from 'url'; import defaults from './defaults.js'; export default function fromFile(env, pathOrUrl, { implicitBaseIRI, extensions = {}, ...options } = {}) { const combinedExtensions = { ...defaults.extensions, ...extensions, }; let baseIRI; if (implicitBaseIRI) { baseIRI = typeof pathOrUrl === 'string' ? url.pathToFileURL(pathOrUrl).toString() : pathOrUrl.toString(); } const filename = typeof pathOrUrl === 'string' ? pathOrUrl : url.fileURLToPath(pathOrUrl); const extension = extname(filename).split('.').pop(); const mediaType = combinedExtensions[extension]; if (!mediaType) { throw new Error(`Unknown file extension: ${extension}`); } // eslint-disable-next-line @typescript-eslint/no-explicit-any const parser = env.formats.parsers.get(mediaType); if (!parser) { throw new Error(`No parser available for media type: ${mediaType}`); } return parser.import(createReadStream(filename), { baseIRI, ...options, factory: env, dataFactory: env, }); }