1 | import { Transform } from 'stream'
|
2 | import { AsyncMapper } from '@naturalcycles/js-lib'
|
3 | import { TransformOptions, TransformTyped } from '../stream.model'
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 | export function transformTap<IN>(
|
12 | fn: AsyncMapper<IN, any>,
|
13 | opt: TransformOptions = {},
|
14 | ): TransformTyped<IN, IN> {
|
15 | let index = 0
|
16 |
|
17 | return new Transform({
|
18 | objectMode: true,
|
19 | ...opt,
|
20 | async transform(chunk: IN, _encoding, cb) {
|
21 |
|
22 |
|
23 | try {
|
24 | await fn(chunk, index++)
|
25 | } catch (err) {
|
26 | console.error(err)
|
27 |
|
28 | }
|
29 |
|
30 | cb(null, chunk)
|
31 | },
|
32 | })
|
33 | }
|