@datagen-rs/node
This package contains node.js bindings to datagen
for generating random data.
The bindings are built using napi-rs (opens in a new tab).
Installation
npm install datagen-rs-node
If you want to use the bindings in a TypeScript project, you may also need to install the
datagen-rs-types
(opens in a new tab) package:
npm install --save-dev @datagen-rs/types
Usage
Generate random data
In order to generate random data, you must pass a JSON schema to the generateRandomData
function:
import { generateRandomData } from 'datagen-rs-node';
const generated = await generateRandomData({
type: 'string',
generator: {
type: 'uuid',
},
});
The result will be the serialized generated data as a string. In order to customize the
serialization, you can pass a serializer into the
options
object (opens in a new tab).
Generate random data with progress
If you want to get progress updates while generating data, you can
pass a generate and a serialize progress callback to the
generateRandomData
function:
import { generateRandomData } from 'datagen-rs-node';
const generated = await generateRandomData(
{
type: 'string',
generator: {
type: 'uuid',
},
},
({ current, total }) => {
console.log(`Generated ${current}/${total} items`);
},
({ current, total }) => {
console.log(`Serialized ${current}/${total} items`);
}
);
The progress value is of type GenerateProgress
and has the following structure:
interface GenerateProgress {
current: number;
total: number;
}
Check the progress-plugin
documentation (opens in a new tab)
for further information on how the progress is calculated.
Generate random data using a plugin
You can pass additional plugins to the generateRandomData
function. These plugins
will be loaded before the generation starts and can be used to extend the functionality
of datagen
. Check out the
plugin documentation (opens in a new tab)
for more information on creating node.js plugins.
import { generateRandomData, CurrentSchema } from 'datagen-rs-node';
const generated = await generateRandomData(
{
type: 'plugin',
pluginName: 'myPlugin',
args: {
name: 'test',
},
},
null,
null,
{
myPlugin: {
generate(schema: CurrentSchema, args: any): any {
return 'Hello World!';
},
},
}
);
Note that this package also exports a CurrentSchema
type that can be used to type the
schema
parameter of the generate
function. This is simply the implementation
of the CurrentSchema
interface from the @datagen/types
package.
Retrieve the JSON schema
In order to retrieve the JSON schema, you can use the getJsonSchema
or
getJsonSchemaAsync
functions:
import { getJsonSchema, getJsonSchemaAsync } from 'datagen-rs-node';
const schema = getJsonSchema();
const schemaAsync = await getJsonSchemaAsync();