UNPKG

@naturalcycles/nodejs-lib

Version:
35 lines (34 loc) 1.11 kB
import { Transform } from 'node:stream'; import { ErrorMode } from '@naturalcycles/js-lib/error/errorMode.js'; /** * Simplest version of `transformMap`. * errorMode: IMMEDIATE * Sync mode. * Has 0 options to configure. * If you need any configuration - use transformMap or transformMapSync. * Sync (not async) version of transformMap. * Supposedly faster, for cases when async is not needed. */ export function transformMapSimple(mapper, opt = {}) { let index = -1; const { errorMode = ErrorMode.THROW_IMMEDIATELY, logger = console, objectMode = true, highWaterMark = 1, } = opt; return new Transform({ objectMode, highWaterMark, transform(chunk, _, cb) { try { cb(null, mapper(chunk, ++index)); } catch (err) { logger.error(err); if (errorMode === ErrorMode.SUPPRESS) { cb(); // suppress the error } else { // Emit the error cb(err); } } }, }); }