1 | import { Transform } from 'stream'
|
2 | import { TransformOptions, TransformTyped } from '../stream.model'
|
3 |
|
4 |
|
5 |
|
6 |
|
7 | export function transformLimit<IN>(
|
8 | limit?: number,
|
9 | opt: TransformOptions = {},
|
10 | ): TransformTyped<IN, IN> {
|
11 | let index = 0
|
12 | let ended = false
|
13 |
|
14 | return new Transform({
|
15 | objectMode: true,
|
16 | ...opt,
|
17 | transform(this: Transform, chunk: IN, _encoding, cb) {
|
18 | index++
|
19 |
|
20 | if (!ended) {
|
21 | cb(null, chunk)
|
22 | } else {
|
23 | cb(null)
|
24 | }
|
25 |
|
26 | if (limit && index === limit) {
|
27 | ended = true
|
28 | console.log(`transformLimit: limit of ${limit} reached`)
|
29 |
|
30 | }
|
31 | },
|
32 | })
|
33 | }
|