import { plugins } from '@citation-js/core'; import { format as mapBiblatex, formatBibtex as mapBibtex } from './entries.js'; import { format } from './bibtex.js'; import { format as formatBibtxt } from './bibtxt.js'; const factory = function (mapper, formatter) { return function (data, opts = {}) { const { type, format = type || 'text' } = opts; data = mapper(data); if (format === 'object') { return data; } else if (plugins.dict.has(format)) { return formatter(data, plugins.dict.get(format), opts); } else { throw new RangeError(`Output dictionary "${format}" not available`); } }; }; export default { bibtex: factory(mapBibtex, format), biblatex: factory(mapBiblatex, format), bibtxt: factory(mapBibtex, formatBibtxt) };