csv-generate
v4.4.1
Published
CSV and object generation implementing the Node.js `stream.Readable` API
Downloads
7,225,400
Maintainers
Readme
CSV generator for Node.js and the web
The csv-generate
package provides a flexible generator of random CSV strings and Javascript objects implementing the Node.js stream.Readable
API. It is part of the CSV project.
Documentation
Main features
- Scalable
stream.Readable
implementation - random or pseudo-random seed based generation
- Idempotence with the "seed" option
- User-defined value generation
- Multiple types of values (integer, boolean, dates, ...)
- MIT License
Usage
Run npm install csv
to install the full CSV module or run npm install csv-generate
if you are only interested by the CSV generator.
Use the callback and sync APIs for simplicity or the stream based API for scalability.
Example
The API is available in multiple flavors. This example illustrates the stream API.
import { generate } from 'csv-generate';
import assert from 'assert';
const records = [];
// Initialize the generator
generate({
seed: 1,
objectMode: true,
columns: 2,
length: 2
})
// Use the readable stream api to consume generated records
.on('readable', function(){
let record; while((record = this.read()) !== null){
records.push(record);
}
})
// Catch any error
.on('error', function(err){
console.error(err);
})
// Test that the generated records matched the expected records
.on('end', function(){
assert.deepEqual(records, [
[ 'OMH', 'ONKCHhJmjadoA' ],
[ 'D', 'GeACHiN' ]
]);
});
Development
Tests are executed with Mocha. To install it, simple run npm install
followed by npm test
. It will install mocha and its dependencies in your project "node_modules" directory and run the test suite. The tests run against the CoffeeScript source files.
To generate the JavaScript files, run npm run coffee
.
The test suite is run online with Travis. See the Travis definition file to view the tested Node.js version.
Contributors
The project is sponsored by Adaltas, an Big Data consulting firm based in Paris, France.
- David Worms: https://github.com/wdavidw