Skip to content

API Reference

Everything @ackplus/nest-seeder exports, at a glance. Each entry links to a page with full signatures and examples.

Most projects only need three things: a factory (using @Factory + DataFactory), a seeder (implementing Seeder), and a config file (via defineSeederConfig). Then you run the CLI. The rest of the surface is there for advanced and programmatic use.

One import to rule them all

Everything is exported from the package root — no deep imports needed.

ts
import {
  // Factories
  DataFactory,
  Factory,
  // Seeders
  Seeder,
  SeederName,
  getSeederName,
  // Config
  defineSeederConfig,
  // Module & service (advanced / programmatic)
  SeederModule,
  SeederService,
  seeder,
} from '@ackplus/nest-seeder';

TIP

You'll also want Faker for your generators:

ts
import { faker } from '@faker-js/faker';

It's passed to every @Factory generator automatically, so you rarely import it directly.

Factories

ExportDescription
DataFactoryBuilds factory instances from a decorated class. DataFactory.createForClass(MyFactory) returns an object with generate() and generateOne().
@FactoryProperty decorator that declares how a single field is generated. Accepts a generator function (faker, ctx) => value or a static value, plus an optional dependsOn list for derived fields.
ts
import { DataFactory } from '@ackplus/nest-seeder';

const factory = DataFactory.createForClass(UserFactory);
const users = factory.generate(10);          // → User[]
const one = factory.generateOne({ role: 'admin' });

Seeders

ExportDescription
SeederInterface your seeder classes implement. Requires seed(options?); drop(options?) is optional.
@SeederNameClass decorator that pins a stable, minification-safe name used by the CLI --name flag. Recommended on every seeder.
getSeederNameResolves the effective name of a seeder class or instance (the @SeederName value, falling back to the class name).
ts
import { Seeder, SeederName, DataFactory } from '@ackplus/nest-seeder';

@SeederName('users')
export class UserSeeder implements Seeder {
  async seed(): Promise<void> {
    const users = DataFactory.createForClass(UserFactory).generate(10);
    // persist users...
  }
}

Configuration

ExportDescription
defineSeederConfigIdentity helper that gives full type-safety and autocomplete to your seeder.config.ts. Optional, but recommended — wrap the default-exported config object.
ts
import { defineSeederConfig } from '@ackplus/nest-seeder';

export default defineSeederConfig({
  imports: [/* ...Nest modules */],
  seeders: [UserSeeder],
});

Module & service

For programmatic use — wiring seeding into an existing Nest application or test, or running it from code instead of the CLI.

ExportDescription
SeederModuleNest module. Use SeederModule.register(options) or SeederModule.forRootAsync(asyncOptions) to register your seeders and their dependencies.
SeederServiceInjectable service that drives seeding. Exposes run(), seed(), drop(), and getSeedersToRun().
seederProgrammatic helper — seeder(options).run(extraOptions) runs seeders without the CLI. The CLI is preferred for everyday use.
ts
import { seeder } from '@ackplus/nest-seeder';

await seeder({
  imports: [/* ...Nest modules */],
  seeders: [UserSeeder],
}).run({ refresh: true });

CLI is the recommended entry point

For day-to-day seeding, reach for the nest-seed CLI instead of wiring SeederService by hand. The programmatic API exists for tests and custom tooling.

Types

All public types are exported from the package root for use in your own signatures and helpers.

TypeDescription
SeederServiceOptionsOptions accepted by seed() / drop() / run(): name, refresh, dryRun, continueOnError, context, and the deprecated dummyData.
SeederConfigShape of a seeder.config.tsimports, optional providers, and seeders. Returned by defineSeederConfig.
FactoryInstanceWhat DataFactory.createForClass returns: an object with generate() and generateOne().
FactoryOverridesOverride map passed to generate() / generateOne(). May include keys that aren't @Factory fields (e.g. a foreign key).
FactoryValueA static value or generator accepted by @Factory.
FactoryValueGeneratorThe generator function signature (faker, ctx) => value.
SeederModuleOptionsOptions for SeederModule.register().
SeederModuleAsyncOptionsOptions for SeederModule.forRootAsync().
SeederModuleExtraOptionsAdditional module-level options.
SeederOptionsOptions for the programmatic seeder() helper.
SeederRunnerThe object returned by seeder(), exposing run().
SeederOptionsFactoryFactory interface for providing module options asynchronously.
ts
import type {
  SeederServiceOptions,
  SeederConfig,
  FactoryInstance,
  FactoryOverrides,
  FactoryValue,
  FactoryValueGenerator,
  SeederModuleOptions,
  SeederModuleAsyncOptions,
  SeederModuleExtraOptions,
  SeederOptions,
  SeederRunner,
  SeederOptionsFactory,
} from '@ackplus/nest-seeder';

Next steps

Released under the MIT License.