• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

juanjoDiaz / streamparser-json / 8943701405

03 May 2024 07:05PM UTC coverage: 98.296% (-0.1%) from 98.433%
8943701405

push

github

juanjoDiaz
chore: bump version number

441 of 452 branches covered (97.57%)

Branch coverage included in aggregate %.

828 of 839 relevant lines covered (98.69%)

61755391.58 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

95.83
/packages/node/src/jsonparser.ts
1
import {
84✔
2
  Transform,
3
  type TransformOptions,
4
  type TransformCallback,
5
} from "stream";
6
import { JSONParser, type JSONParserOptions } from "@streamparser/json";
84✔
7

8
export default class JSONParserTransform extends Transform {
84✔
9
  private jsonParser: JSONParser;
10

11
  constructor(
12
    opts: JSONParserOptions = {},
156✔
13
    transformOpts: Omit<
986✔
14
      TransformOptions,
15
      "readableObjectMode" | "writableObjectMode"
16
    > = {},
17
  ) {
18
    super({
2,958✔
19
      ...transformOpts,
20
      writableObjectMode: false,
21
      readableObjectMode: true,
22
    });
23
    this.jsonParser = new JSONParser(opts);
2,958✔
24

25
    this.jsonParser.onValue = (value) => this.push(value);
7,428✔
26
    this.jsonParser.onError = (err) => {
2,940✔
27
      throw err;
282✔
28
    };
29
    this.jsonParser.onEnd = () => {
2,940✔
30
      if (!this.writableEnded) this.end();
2,706✔
31
    };
32
  }
33

34
  /**
35
   * Main function that send data to the parser to be processed.
36
   *
37
   * @param {Buffer} chunk Incoming data
38
   * @param {String} encoding Encoding of the incoming data. Defaults to 'utf8'
39
   * @param {Function} done Called when the proceesing of the supplied chunk is done
40
   */
41
  override _transform(
42
    // eslint-disable-next-line @typescript-eslint/no-explicit-any
43
    chunk: any,
44
    encoding: BufferEncoding,
45
    done: TransformCallback,
46
  ): void {
47
    try {
13,332✔
48
      this.jsonParser.write(chunk);
13,332✔
49
      done();
13,092✔
50
    } catch (err: unknown) {
51
      done(err as Error);
240✔
52
    }
53
  }
54

55
  override _final(callback: (error?: Error | null) => void): void {
56
    try {
2,694✔
57
      if (!this.jsonParser.isEnded) this.jsonParser.end();
2,694✔
58
      callback();
2,694✔
59
    } catch (err: unknown) {
60
      callback(err as Error);
×
61
    }
62
  }
63
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc