psytask - v1.1.1
    Preparing search index...

    Class DataCollector<T>

    One-time data collector. Collect, stringify and save data.

    Type Parameters

    • T extends Data

    Hierarchy (View Summary)

    • EventEmitter<
          {
              add: { row: T; chunk: string };
              save: { chunk: string; preventDefault: () => ... };
          },
      >
      • DataCollector
    Index

    Constructors

    Properties

    stringifiers: Record<string, new () => DataStringifier> = ...

    Map of stringifier classes by file extension

    You can add your own stringifier class to this map. The class should extend DataStringifier and implement transform and final methods. The key is the file extension (without the dot), and the value is the class.

    // add support for Markdown files, whose extension is 'md'
    DataCollector.stringifiers['md'] = class MarkdownStringifier extends (
    DataStringifier
    ) {
    transform(data) {
    // write transform logic here
    return '';
    }
    final() {
    // write final logic here
    return '';
    }
    };

    using dc = app.collector('data.md'); // now you can save to Markdown file
    rows: T[] = []
    stringifier: DataStringifier
    filename: string = ...

    Default is data-${Date.now()}.csv

    listeners: {
        add?: Set<(e: ...) => ...>;
        save?: Set<(e: ...) => ...>;
        cleanup?: Set<(e: ...) => ...>;
    } = {}

    Methods

    • Add a data row

      You need to provide primitive value only.

      Parameters

      • row: T

      Returns string

      // convert array
      dc.add({ array: [0, 1, 2] }); // ❌
      dc.add({ array: [0, 1, 2].join(',') }); // ✔️

      // convert object
      dc.add({ object: { a: 1, b: 2 } }); // ❌
      dc.add({ object: JSON.stringify({ a: 1, b: 2 }) }); // ✔️
    • Write data to disk

      In most cases, you don't need to call this method manually. It will be called automatically when the collector is disposed.

      It is one-time, so multiple calls will be ignored.

      Returns void

      dc.save(); // ✔️ the first call is successful
      dc.save(); // ❌ the subsequent calls will be ignored
    • Add event listener

      Type Parameters

      • K extends "add" | "cleanup" | "save"

      Parameters

      • type: K
      • listener: (evt: ({ add: ...; save: ... } & { cleanup: ... })[K]) => void

      Returns DataCollector<T>

    • Remove event listener

      Type Parameters

      • K extends "add" | "cleanup" | "save"

      Parameters

      • type: K
      • listener: (evt: ({ add: ...; save: ... } & { cleanup: ... })[K]) => void

      Returns DataCollector<T>

    • Add one-time event listener, can not be removed manually

      Type Parameters

      • K extends "add" | "cleanup" | "save"

      Parameters

      • type: K
      • listener: (evt: ({ add: ...; save: ... } & { cleanup: ... })[K]) => void

      Returns DataCollector<T>

    • Emit event listeners

      Type Parameters

      • K extends "add" | "cleanup" | "save"

      Parameters

      • type: K
      • e: (
            {
                add: { row: ...; chunk: ... };
                save: { chunk: ...; preventDefault: ... };
            } & { cleanup: null }
        )[K]

      Returns number