UNPKG

cogs

Version:

The fast file transform pipeline.

33 lines (26 loc) 976 B
import npath from 'node:path'; export default async transformer => { if (typeof transformer === 'string') transformer = { name: transformer }; else if (typeof transformer === 'function') transformer = { fn: transformer }; else transformer = { ...transformer }; if (!transformer.options) transformer.options = {}; if (transformer.fn) return transformer; const { name } = transformer; if (!name) throw new Error('Each transformer requires a name or fn property'); const attempts = [`cogs-transformer-${name}`, name, npath.resolve(name)]; for (const attempt of attempts) { try { transformer.fn = (await import(attempt)).default; return transformer; } catch (er) { if (er.code !== 'ERR_MODULE_NOT_FOUND') { throw Object.assign(er, { message: `Failed to load '${name}'\n${er.message}` }); } } } throw new Error( `Cannot find transformer '${name}'. Did you forget to install it?` ); };