or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

configuration-options.mdindex.mdstream-generation.mdsynchronous-generation.mdweb-streams-generation.md
tile.json

tessl/npm-csv-generate

CSV and object generation implementing the Node.js stream.Readable API

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
npmpkg:npm/csv-generate@4.5.x

To install, run

npx @tessl/cli install tessl/npm-csv-generate@4.5.0

index.mddocs/

CSV Generate

CSV Generate is a flexible generator of random CSV strings and JavaScript objects implementing the Node.js stream.Readable API. It provides scalable streaming implementation with random or pseudo-random seed-based generation, ensuring idempotent results with seed options for reproducible data generation.

Package Information

  • Package Name: csv-generate
  • Package Type: npm
  • Language: JavaScript/TypeScript
  • Installation: npm install csv-generate

Core Imports

import { generate, Generator } from "csv-generate";

For sync operations:

import { generate } from "csv-generate/sync";

For Web Streams:

import { generate } from "csv-generate/stream";

For browser environments:

import { generate, Generator } from "csv-generate/browser/esm";
import { generate } from "csv-generate/browser/esm/sync";

CommonJS:

const { generate, Generator } = require("csv-generate");

Basic Usage

import { generate } from "csv-generate";

// Stream API with callback
generate({
  seed: 1,
  columns: 2,
  length: 3
}, (err, output) => {
  console.log(output);
});

// Stream API 
const generator = generate({
  seed: 1,
  objectMode: true,
  columns: 2,
  length: 3
});

generator.on('readable', function() {
  let record;
  while ((record = generator.read()) !== null) {
    console.log(record);
  }
});

Architecture

CSV Generate is built around several key components:

  • Stream Interface: Main Generator class extending Node.js stream.Readable for scalable data generation
  • Multiple APIs: Stream-based, synchronous, and Web Streams API variants for different use cases
  • Value Generation: Extensible column function system supporting built-in types (ascii, int, bool) and custom generators
  • Options System: Comprehensive configuration covering output format, generation control, and stream behavior
  • Seeded Random: Deterministic generation using seed values for reproducible test data

Capabilities

Stream Generation

Core streaming CSV generation using Node.js Readable streams. Ideal for large datasets and real-time data generation.

function generate(options?: Options, callback?: Callback): Generator;
function generate(callback?: Callback): Generator;

class Generator extends stream.Readable {
  constructor(options?: Options);
  readonly options: Options;
  end(): void;
}

Stream Generation

Synchronous Generation

Synchronous CSV generation for simple use cases where all data fits in memory.

function generate<T = any>(options: number | Options): string | Array<T>;

Synchronous Generation

Web Streams Generation

Web Streams API compatible generation for browser environments and modern Node.js applications.

function generate(options?: Options): ReadableStream<Buffer>;

Web Streams Generation

Configuration Options

Comprehensive option system controlling all aspects of CSV generation including columns, formatting, timing, and output control.

interface Options extends stream.ReadableOptions {
  columns?: number | (string | ColumnsFunction)[];
  delimiter?: string;
  duration?: number;
  encoding?: BufferEncoding | undefined;
  end?: number | Date;
  eof?: boolean | string;
  fixed_size?: boolean;
  fixedSize?: boolean;
  high_water_mark?: number;
  highWaterMark?: number;
  length?: number;
  max_word_length?: number;
  maxWordLength?: number;
  object_mode?: boolean;
  objectMode?: boolean;
  row_delimiter?: string;
  seed?: boolean | number;
  sleep?: number;
}

Configuration Options

Types

type Callback = (err?: Error, records?: any) => void;

type ColumnsFunction = (args: ColumnsFunctionArgs) => string | number | null;

interface ColumnsFunctionArgs {
  options: Options;
  state: State;
}

interface State {
  start_time: number | null;
  fixed_size_buffer: string;
  count_written: number;
  count_created: number;
}