@ackplus/nest-seeder 1.1.16 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/CHANGELOG.md +64 -0
  2. package/MIGRATION.md +89 -0
  3. package/QUICKSTART.md +45 -162
  4. package/README.md +91 -537
  5. package/dist/cli.js +595 -235
  6. package/dist/cli.js.map +1 -1
  7. package/dist/index.d.mts +88 -0
  8. package/dist/index.d.ts +88 -8
  9. package/dist/index.js +417 -24
  10. package/dist/index.js.map +1 -1
  11. package/dist/index.mjs +390 -0
  12. package/dist/index.mjs.map +1 -0
  13. package/package.json +38 -7
  14. package/dist/cli.d.ts +0 -3
  15. package/dist/lib/decorators/factory.decorator.d.ts +0 -6
  16. package/dist/lib/decorators/factory.decorator.js +0 -17
  17. package/dist/lib/decorators/factory.decorator.js.map +0 -1
  18. package/dist/lib/factory/data.factory.d.ts +0 -6
  19. package/dist/lib/factory/data.factory.js +0 -57
  20. package/dist/lib/factory/data.factory.js.map +0 -1
  21. package/dist/lib/index.d.ts +0 -4
  22. package/dist/lib/index.js +0 -21
  23. package/dist/lib/index.js.map +0 -1
  24. package/dist/lib/interfaces/factory.interface.d.ts +0 -4
  25. package/dist/lib/interfaces/factory.interface.js +0 -3
  26. package/dist/lib/interfaces/factory.interface.js.map +0 -1
  27. package/dist/lib/interfaces/index.d.ts +0 -2
  28. package/dist/lib/interfaces/index.js +0 -19
  29. package/dist/lib/interfaces/index.js.map +0 -1
  30. package/dist/lib/interfaces/property-metadata.interface.d.ts +0 -6
  31. package/dist/lib/interfaces/property-metadata.interface.js +0 -3
  32. package/dist/lib/interfaces/property-metadata.interface.js.map +0 -1
  33. package/dist/lib/interfaces/seeder-module-async-options.interface.d.ts +0 -10
  34. package/dist/lib/interfaces/seeder-module-async-options.interface.js +0 -3
  35. package/dist/lib/interfaces/seeder-module-async-options.interface.js.map +0 -1
  36. package/dist/lib/interfaces/seeder-options-factory.interface.d.ts +0 -4
  37. package/dist/lib/interfaces/seeder-options-factory.interface.js +0 -3
  38. package/dist/lib/interfaces/seeder-options-factory.interface.js.map +0 -1
  39. package/dist/lib/seeder/seeder.d.ts +0 -10
  40. package/dist/lib/seeder/seeder.interface.d.ts +0 -9
  41. package/dist/lib/seeder/seeder.interface.js +0 -3
  42. package/dist/lib/seeder/seeder.interface.js.map +0 -1
  43. package/dist/lib/seeder/seeder.js +0 -40
  44. package/dist/lib/seeder/seeder.js.map +0 -1
  45. package/dist/lib/seeder/seeder.module.d.ts +0 -17
  46. package/dist/lib/seeder/seeder.module.js +0 -80
  47. package/dist/lib/seeder/seeder.module.js.map +0 -1
  48. package/dist/lib/seeder/seeder.service.d.ts +0 -10
  49. package/dist/lib/seeder/seeder.service.js +0 -73
  50. package/dist/lib/seeder/seeder.service.js.map +0 -1
  51. package/dist/lib/storages/factory.metadata.storage.d.ts +0 -16
  52. package/dist/lib/storages/factory.metadata.storage.js +0 -17
  53. package/dist/lib/storages/factory.metadata.storage.js.map +0 -1
  54. package/dist/tsconfig.build.tsbuildinfo +0 -1
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"sources":["../src/cli.ts","../src/lib/decorators/seeder.decorator.ts","../src/lib/cli/load-config.ts","../src/lib/cli/templates.ts","../src/lib/seeder/seeder.module.ts","../src/lib/seeder/seeder.service.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport * as fs from 'fs';\nimport * as path from 'path';\n\nimport { NestFactory } from '@nestjs/core';\nimport yargs from 'yargs';\nimport { hideBin } from 'yargs/helpers';\n\nimport { getSeederName } from './lib/decorators/seeder.decorator';\nimport { loadSeederConfig, resolveConfigPath } from './lib/cli/load-config';\nimport { OrmType, scaffoldFiles } from './lib/cli/templates';\nimport { SeederModule } from './lib/seeder/seeder.module';\nimport { SeederService } from './lib/seeder/seeder.service';\nimport type { SeederServiceOptions } from './lib/seeder/seeder.interface';\n\nconst log = {\n info: (msg: string) => console.log(msg),\n error: (msg: string) => console.error(`\\x1b[31m${msg}\\x1b[0m`),\n success: (msg: string) => console.log(`\\x1b[32m${msg}\\x1b[0m`),\n dim: (msg: string) => console.log(`\\x1b[2m${msg}\\x1b[0m`),\n};\n\nfunction parseContext(raw?: string): Record<string, any> | undefined {\n if (!raw) {\n return undefined;\n }\n try {\n return JSON.parse(raw);\n } catch {\n throw new Error(`--context must be valid JSON. Received: ${raw}`);\n }\n}\n\n/** Loads the config and builds the Nest application context. */\nasync function createContext(configOption?: string) {\n const configPath = resolveConfigPath(configOption);\n\n if (!configPath) {\n throw new Error(\n configOption\n ? `Config file not found: ${configOption}`\n : 'No seeder config found. Create a seeder.config.ts (try \"nest-seed init\") ' +\n 'or pass one with --config.',\n );\n }\n\n log.dim(`Using config: ${path.relative(process.cwd(), configPath)}`);\n const config = await loadSeederConfig(configPath);\n return { config, configPath };\n}\n\nasync function runCommand(argv: any): Promise<void> {\n const { config } = await createContext(argv.config);\n\n const options: SeederServiceOptions = {\n refresh: argv.refresh,\n name: argv.name,\n dryRun: argv['dry-run'],\n continueOnError: argv['continue-on-error'],\n dummyData: argv['dummy-data'],\n context: parseContext(argv.context),\n };\n\n if (options.refresh) log.info('šŸ”„ Refresh mode: dropping data before seeding');\n if (options.dryRun) log.info('šŸ”Ž Dry run: no data will be written');\n if (options.name) {\n const names = Array.isArray(options.name) ? options.name : [options.name];\n log.info(`šŸŽÆ Seeders: ${names.join(', ')}`);\n }\n\n const app = await NestFactory.createApplicationContext(\n SeederModule.register({ ...config, ...options }),\n { logger: ['error', 'warn', 'log'] },\n );\n\n try {\n await app.get(SeederService).run();\n } finally {\n await app.close();\n }\n\n log.success('āœ… Seeding completed successfully!');\n}\n\nasync function listCommand(argv: any): Promise<void> {\n const { config } = await createContext(argv.config);\n const seeders = config.seeders ?? [];\n\n if (seeders.length === 0) {\n log.info('No seeders registered in the config.');\n return;\n }\n\n log.info(`Registered seeders (${seeders.length}):`);\n seeders.forEach((seeder: any, index: number) => {\n const className = seeder?.name ?? 'Unknown';\n const stableName = getSeederName(seeder);\n const alias = stableName !== className ? ` (--name ${stableName})` : '';\n log.info(` ${index + 1}. ${className}${alias}`);\n });\n}\n\nfunction initCommand(argv: any): void {\n const orm = argv.orm as OrmType;\n const force = Boolean(argv.force);\n const files = scaffoldFiles(orm);\n\n let created = 0;\n let skipped = 0;\n\n for (const file of files) {\n const absolute = path.resolve(process.cwd(), file.path);\n if (fs.existsSync(absolute) && !force) {\n log.dim(`• skipped (exists): ${file.path}`);\n skipped++;\n continue;\n }\n fs.mkdirSync(path.dirname(absolute), { recursive: true });\n fs.writeFileSync(absolute, file.contents);\n log.success(`• created: ${file.path}`);\n created++;\n }\n\n log.info(`\\nScaffolded ${created} file(s)${skipped ? `, skipped ${skipped}` : ''}.`);\n log.info('\\nNext steps:');\n log.info(' 1. Adjust seeder.config.ts for your database and entities.');\n log.info(' 2. Add a script to package.json:');\n log.dim(' \"seed\": \"nest-seed\"');\n log.info(' 3. Run it:');\n log.dim(' npm run seed');\n if (skipped && !force) {\n log.dim('\\nUse --force to overwrite existing files.');\n }\n}\n\nasync function main(): Promise<void> {\n await yargs(hideBin(process.argv))\n .scriptName('nest-seed')\n .usage('$0 [command] [options]')\n .command(\n ['$0', 'run'],\n 'Run seeders (default command)',\n (y) =>\n y\n .option('config', {\n alias: 'c',\n type: 'string',\n describe: 'Path to the seeder config file (auto-detected if omitted)',\n })\n .option('refresh', {\n alias: 'r',\n type: 'boolean',\n default: false,\n describe: 'Drop data before seeding',\n })\n .option('name', {\n alias: 'n',\n type: 'array',\n string: true,\n describe: 'Run only the named seeder(s)',\n })\n .option('dry-run', {\n type: 'boolean',\n default: false,\n describe: 'Show which seeders would run without executing them',\n })\n .option('continue-on-error', {\n type: 'boolean',\n default: false,\n describe: 'Keep going when a seeder fails',\n })\n .option('context', {\n type: 'string',\n describe: 'JSON forwarded to every seeder via options.context',\n })\n .option('dummy-data', {\n alias: 'd',\n type: 'boolean',\n default: false,\n describe: '[deprecated] forwarded as options.dummyData',\n }),\n runCommand,\n )\n .command(\n 'init',\n 'Scaffold a seeder config, factory and seeder',\n (y) =>\n y\n .option('orm', {\n type: 'string',\n choices: ['typeorm', 'mongoose'] as const,\n default: 'typeorm',\n describe: 'Which ORM template to scaffold',\n })\n .option('force', {\n type: 'boolean',\n default: false,\n describe: 'Overwrite existing files',\n }),\n (argv) => initCommand(argv),\n )\n .command(\n 'list',\n 'List the seeders registered in the config',\n (y) =>\n y.option('config', {\n alias: 'c',\n type: 'string',\n describe: 'Path to the seeder config file (auto-detected if omitted)',\n }),\n listCommand,\n )\n .example('$0', 'Run all seeders using the auto-detected config')\n .example('$0 --refresh', 'Drop and reseed all data')\n .example('$0 --name users posts', 'Run only the \"users\" and \"posts\" seeders')\n .example('$0 init', 'Scaffold starter files')\n .example('$0 list', 'List available seeders')\n .strict()\n .alias('h', 'help')\n .alias('v', 'version')\n .fail((msg, err) => {\n // Re-throw real errors so the catch in `bootstrap` handles them.\n if (err) throw err;\n log.error(`\\n${msg}`);\n console.error('\\nRun \"nest-seed --help\" for usage.');\n process.exit(1);\n })\n .parseAsync();\n}\n\nasync function bootstrap(): Promise<void> {\n log.info('🌱 nest-seeder');\n try {\n await main();\n process.exit(0);\n } catch (error: any) {\n log.error(`\\nāŒ ${error?.message ?? error}`);\n if (error?.stack && process.env.NEST_SEEDER_DEBUG) {\n console.error(error.stack);\n } else {\n log.dim('Set NEST_SEEDER_DEBUG=1 for a full stack trace.');\n }\n process.exit(1);\n }\n}\n\n// Only run when invoked directly (not when imported).\nif (require.main === module) {\n bootstrap();\n}\n","/**\n * Stable, minification-safe identifier for a seeder.\n *\n * By default the CLI selects seeders by their class name (`--name UserSeeder`).\n * That breaks when your build minifies class names. Decorate the seeder with\n * `@SeederName('users')` to give it a stable name that survives minification\n * and is nicer to type.\n *\n * @example\n * @Injectable()\n * @SeederName('users')\n * export class UserSeeder implements Seeder { ... }\n *\n * // then: nest-seed --name users\n */\nconst SEEDER_NAME = Symbol.for('nest-seeder:name');\n\nexport function SeederName(name: string): ClassDecorator {\n return (target: any): void => {\n Object.defineProperty(target, SEEDER_NAME, {\n value: name,\n enumerable: false,\n configurable: true,\n writable: false,\n });\n };\n}\n\n/**\n * Resolves the stable name of a seeder class or instance.\n *\n * Resolution order:\n * 1. `@SeederName('...')` decorator value\n * 2. a static `seederName` property\n * 3. the constructor name (default, not minification-safe)\n */\nexport function getSeederName(seeder: any): string {\n const ctor =\n typeof seeder === 'function' ? seeder : seeder?.constructor;\n\n return (\n ctor?.[SEEDER_NAME] ||\n ctor?.seederName ||\n ctor?.name ||\n 'UnknownSeeder'\n );\n}\n","import * as fs from 'fs';\nimport * as path from 'path';\n\nimport { SeederModuleOptions } from '../seeder/seeder.module';\n\n/** Config file names tried, in order, when `--config` is not provided. */\nexport const DEFAULT_CONFIG_NAMES = [\n 'seeder.config.ts',\n 'seeder.config.js',\n 'seeder.config.cjs',\n 'seeder.config.mjs',\n];\n\n/**\n * Finds a seeder config file. When `configPath` is given it is resolved\n * relative to the cwd; otherwise the well-known file names are tried.\n *\n * @returns the absolute path, or `null` when nothing is found\n */\nexport function resolveConfigPath(configPath?: string): string | null {\n if (configPath) {\n const resolved = path.resolve(process.cwd(), configPath);\n return fs.existsSync(resolved) ? resolved : null;\n }\n\n for (const name of DEFAULT_CONFIG_NAMES) {\n const candidate = path.resolve(process.cwd(), name);\n if (fs.existsSync(candidate)) {\n return candidate;\n }\n }\n\n return null;\n}\n\nlet tsNodeRegistered = false;\n\n/**\n * Registers ts-node so `.ts` config files can be required. Throws a friendly\n * error when ts-node is not installed.\n */\nfunction setupTsNode(): void {\n if (tsNodeRegistered || require.extensions['.ts']) {\n tsNodeRegistered = true;\n return;\n }\n\n let tsNodePath: string;\n try {\n tsNodePath = require.resolve('ts-node', {\n paths: [process.cwd(), __dirname],\n });\n } catch {\n throw new Error(\n 'TypeScript config files require \"ts-node\" and \"typescript\" to be installed.\\n' +\n ' Install them with: npm install -D ts-node typescript\\n' +\n ' Or use a JavaScript config file (seeder.config.js).',\n );\n }\n\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const tsNode = require(tsNodePath);\n tsNode.register({\n transpileOnly: true,\n skipProject: true,\n compilerOptions: {\n module: 'commonjs',\n moduleResolution: 'node',\n experimentalDecorators: true,\n emitDecoratorMetadata: true,\n esModuleInterop: true,\n allowSyntheticDefaultImports: true,\n skipLibCheck: true,\n target: 'ES2021',\n resolveJsonModule: true,\n strict: false,\n },\n });\n\n tsNodeRegistered = true;\n}\n\n/**\n * Loads and returns the seeder configuration object from a config file.\n * Supports `.ts` (via ts-node), `.js`, `.cjs` and `.mjs` files.\n */\nexport async function loadSeederConfig(\n absolutePath: string,\n): Promise<SeederModuleOptions> {\n const ext = path.extname(absolutePath);\n\n if (ext === '.ts') {\n setupTsNode();\n }\n\n let configModule: any;\n try {\n if (ext === '.mjs') {\n configModule = await import(absolutePath);\n } else {\n delete require.cache[absolutePath];\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n configModule = require(absolutePath);\n }\n } catch (error: any) {\n // ESM-only TS project: fall back to dynamic import.\n if (\n ext === '.ts' &&\n (error?.code === 'ERR_REQUIRE_ESM' ||\n error?.code === 'ERR_UNKNOWN_FILE_EXTENSION')\n ) {\n configModule = await import(absolutePath);\n } else {\n throw error;\n }\n }\n\n const config = configModule?.default ?? configModule;\n\n if (!config || typeof config !== 'object') {\n throw new Error(\n 'The config file must export a configuration object as its default export.',\n );\n }\n\n return config as SeederModuleOptions;\n}\n","export type OrmType = 'typeorm' | 'mongoose';\n\nexport interface ScaffoldFile {\n /** Path relative to the cwd. */\n path: string;\n contents: string;\n}\n\nconst FACTORY = `import { Factory } from '@ackplus/nest-seeder';\n\nexport class UserFactory {\n @Factory((faker) => faker.person.firstName())\n firstName: string;\n\n @Factory((faker) => faker.person.lastName())\n lastName: string;\n\n @Factory((faker, ctx) => faker.internet.email({ firstName: ctx.firstName, lastName: ctx.lastName }).toLowerCase(), ['firstName', 'lastName'])\n email: string;\n\n @Factory((faker) => faker.helpers.arrayElement(['admin', 'user', 'guest']))\n role: string;\n}\n`;\n\nconst SEEDER_TYPEORM = `import { Injectable } from '@nestjs/common';\nimport { InjectRepository } from '@nestjs/typeorm';\nimport { Repository } from 'typeorm';\nimport { Seeder, SeederName, DataFactory } from '@ackplus/nest-seeder';\n\nimport { User } from '../entities/user.entity';\nimport { UserFactory } from '../factories/user.factory';\n\n@Injectable()\n@SeederName('users')\nexport class UserSeeder implements Seeder {\n constructor(\n @InjectRepository(User)\n private readonly userRepository: Repository<User>,\n ) {}\n\n async seed(): Promise<void> {\n const factory = DataFactory.createForClass(UserFactory);\n const users = factory.generate(10);\n await this.userRepository.save(users);\n }\n\n async drop(): Promise<void> {\n await this.userRepository.delete({});\n }\n}\n`;\n\nconst SEEDER_MONGOOSE = `import { Injectable } from '@nestjs/common';\nimport { InjectModel } from '@nestjs/mongoose';\nimport { Model } from 'mongoose';\nimport { Seeder, SeederName, DataFactory } from '@ackplus/nest-seeder';\n\nimport { User } from '../schemas/user.schema';\nimport { UserFactory } from '../factories/user.factory';\n\n@Injectable()\n@SeederName('users')\nexport class UserSeeder implements Seeder {\n constructor(\n @InjectModel(User.name)\n private readonly userModel: Model<User>,\n ) {}\n\n async seed(): Promise<void> {\n const factory = DataFactory.createForClass(UserFactory);\n const users = factory.generate(10);\n await this.userModel.insertMany(users);\n }\n\n async drop(): Promise<void> {\n await this.userModel.deleteMany({});\n }\n}\n`;\n\nconst CONFIG_TYPEORM = `import { TypeOrmModule } from '@nestjs/typeorm';\nimport { defineSeederConfig } from '@ackplus/nest-seeder';\n\nimport { User } from './src/database/entities/user.entity';\nimport { UserSeeder } from './src/database/seeders/user.seeder';\n\nexport default defineSeederConfig({\n imports: [\n TypeOrmModule.forRoot({\n type: 'postgres',\n host: process.env.DB_HOST ?? 'localhost',\n port: Number(process.env.DB_PORT ?? 5432),\n username: process.env.DB_USERNAME ?? 'postgres',\n password: process.env.DB_PASSWORD ?? 'postgres',\n database: process.env.DB_DATABASE ?? 'app',\n entities: [User],\n synchronize: true,\n }),\n TypeOrmModule.forFeature([User]),\n ],\n seeders: [UserSeeder],\n});\n`;\n\nconst CONFIG_MONGOOSE = `import { MongooseModule } from '@nestjs/mongoose';\nimport { defineSeederConfig } from '@ackplus/nest-seeder';\n\nimport { User, UserSchema } from './src/database/schemas/user.schema';\nimport { UserSeeder } from './src/database/seeders/user.seeder';\n\nexport default defineSeederConfig({\n imports: [\n MongooseModule.forRoot(process.env.MONGO_URI ?? 'mongodb://localhost/app'),\n MongooseModule.forFeature([{ name: User.name, schema: UserSchema }]),\n ],\n seeders: [UserSeeder],\n});\n`;\n\n/** Returns the files scaffolded by `nest-seed init` for the given ORM. */\nexport function scaffoldFiles(orm: OrmType): ScaffoldFile[] {\n return [\n { path: 'seeder.config.ts', contents: orm === 'mongoose' ? CONFIG_MONGOOSE : CONFIG_TYPEORM },\n { path: 'src/database/factories/user.factory.ts', contents: FACTORY },\n {\n path: 'src/database/seeders/user.seeder.ts',\n contents: orm === 'mongoose' ? SEEDER_MONGOOSE : SEEDER_TYPEORM,\n },\n ];\n}\n","import {\n Module,\n DynamicModule,\n Provider,\n Type,\n ForwardReference,\n} from '@nestjs/common';\n\nimport { Seeder, SeederServiceOptions } from './seeder.interface';\nimport { SeederService } from './seeder.service';\nimport { SeederModuleAsyncOptions } from '../interfaces/seeder-module-async-options.interface';\nimport { SeederOptionsFactory } from '../interfaces/seeder-options-factory.interface';\n\nexport interface SeederModuleExtraOptions extends SeederServiceOptions {\n seeders?: Provider<Seeder>[];\n plugins?: any[];\n}\n\nexport interface SeederModuleOptions extends SeederModuleExtraOptions {\n imports?: Array<\n Type<any> | DynamicModule | Promise<DynamicModule> | ForwardReference\n >;\n providers?: Provider[];\n}\n\nconst SEEDER_MODULE_OPTIONS = 'SEEDER_MODULE_OPTIONS';\n\n@Module({})\nexport class SeederModule {\n\n static register(options: SeederModuleOptions): DynamicModule {\n return {\n module: SeederModule,\n imports: options.imports || [],\n providers: [\n ...(options.providers || []),\n ...options.seeders || [],\n {\n provide: SeederService,\n useFactory: (...seeders: Seeder[]): SeederService => {\n return new SeederService(seeders, options);\n },\n inject: (options.seeders || []) as Type<any>[],\n },\n ],\n };\n }\n\n static forRootAsync(options: SeederModuleAsyncOptions): DynamicModule {\n return {\n module: SeederModule,\n global: options.isGlobal,\n imports: options.imports || [],\n providers: [\n ...this.createAsyncProviders(options),\n {\n provide: SeederService,\n useFactory: (seederOptions: SeederModuleOptions, ...seeders: Seeder[]): Promise<SeederService> | SeederService => {\n return new SeederService(seeders, seederOptions);\n },\n inject: [SEEDER_MODULE_OPTIONS, ...(options.inject || []) as Type<any>[]],\n },\n ],\n };\n }\n\n private static createAsyncProviders(options: SeederModuleAsyncOptions): Provider[] {\n if (options.useExisting || options.useFactory) {\n return [this.createAsyncOptionsProvider(options)];\n }\n\n return [\n this.createAsyncOptionsProvider(options),\n {\n provide: options.useClass!,\n useClass: options.useClass!,\n },\n ];\n }\n\n private static createAsyncOptionsProvider(options: SeederModuleAsyncOptions): Provider {\n if (options.useFactory) {\n return {\n provide: SEEDER_MODULE_OPTIONS,\n useFactory: options.useFactory,\n inject: options.inject || [],\n };\n }\n\n return {\n provide: SEEDER_MODULE_OPTIONS,\n useFactory: async (optionsFactory: SeederOptionsFactory) =>\n await optionsFactory.createSeederOptions(),\n inject: [options.useExisting || options.useClass!],\n };\n }\n}\n","import { Injectable, Logger } from '@nestjs/common';\n\nimport { getSeederName } from '../decorators/seeder.decorator';\nimport type { Seeder, SeederServiceOptions } from './seeder.interface';\n\n\n@Injectable()\nexport class SeederService {\n\n private readonly logger = new Logger('Seeder');\n\n constructor(\n private readonly seeders: Seeder[] = [],\n private readonly options: SeederServiceOptions = {},\n ) {}\n\n /**\n * Runs the configured seeders. In `refresh` mode every selected seeder is\n * dropped first (in reverse order to respect foreign-key dependencies),\n * then all are seeded.\n */\n async run(): Promise<void> {\n const seeders = this.getSeedersToRun();\n\n if (seeders.length === 0) {\n this.logger.warn('No seeders to run.');\n return;\n }\n\n if (this.options.dryRun) {\n this.logger.log('Dry run — the following seeders would execute:');\n seeders.forEach((seeder, index) => {\n this.logger.log(` ${index + 1}. ${getSeederName(seeder)}`);\n });\n return;\n }\n\n if (this.options.refresh) {\n await this.drop(seeders);\n }\n\n await this.seed(seeders);\n }\n\n /** Seeds the given seeders (defaults to the configured selection). */\n async seed(seeders: Seeder[] = this.getSeedersToRun()): Promise<void> {\n for (const seeder of seeders) {\n const name = getSeederName(seeder);\n try {\n this.logger.log(`Seeding: ${name}`);\n await seeder.seed(this.options);\n this.logger.log(`Completed: ${name}`);\n } catch (error) {\n this.handleError(name, 'seed', error);\n }\n }\n }\n\n /** Drops the given seeders in reverse order (defaults to the selection). */\n async drop(seeders: Seeder[] = this.getSeedersToRun()): Promise<void> {\n for (const seeder of [...seeders].reverse()) {\n const name = getSeederName(seeder);\n if (typeof seeder.drop !== 'function') {\n this.logger.debug(`Skipping drop for ${name} (no drop() defined)`);\n continue;\n }\n try {\n this.logger.log(`Dropping: ${name}`);\n await seeder.drop(this.options);\n this.logger.log(`Dropped: ${name}`);\n } catch (error) {\n this.handleError(name, 'drop', error);\n }\n }\n }\n\n /** Resolves the seeders to run based on the `name` option. */\n getSeedersToRun(): Seeder[] {\n const names = this.normalizeNames(this.options.name);\n\n if (!names) {\n if (this.seeders.length === 0) {\n this.logger.warn(\n 'No seeders registered. Did you add them to the \"seeders\" array in your config?',\n );\n }\n return this.seeders;\n }\n\n const wanted = new Set(names.map((name) => name.toLowerCase()));\n const matched = this.seeders.filter((seeder) => {\n const name = getSeederName(seeder).toLowerCase();\n return wanted.has(name) || wanted.has(name.replace(/seeder$/, ''));\n });\n\n if (matched.length === 0) {\n const available = this.seeders.map((seeder) => getSeederName(seeder));\n this.logger.warn(\n `No seeders matched [${names.join(', ')}]. Available seeders: ${\n available.length ? available.join(', ') : '(none)'\n }`,\n );\n }\n\n return matched;\n }\n\n private handleError(name: string, phase: 'seed' | 'drop', error: any): void {\n const message = error?.message ?? error;\n if (this.options.continueOnError) {\n this.logger.error(`Seeder \"${name}\" failed during ${phase}: ${message}`);\n return;\n }\n throw error;\n }\n\n private normalizeNames(\n name?: string | string[],\n ): string[] | undefined {\n if (!name) {\n return undefined;\n }\n const list = (Array.isArray(name) ? name : [name]).filter(Boolean);\n return list.length ? list : undefined;\n }\n\n}\n"],"mappings":"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","names":["fs","path","import_common","yargs"]}
@@ -0,0 +1,88 @@
1
+ import { ModuleMetadata, Type, Provider, DynamicModule, ForwardReference } from '@nestjs/common';
2
+ import { Faker } from '@faker-js/faker';
3
+
4
+ interface SeederServiceOptions {
5
+ name?: string | string[];
6
+ refresh?: boolean;
7
+ dryRun?: boolean;
8
+ continueOnError?: boolean;
9
+ context?: Record<string, any>;
10
+ dummyData?: boolean;
11
+ }
12
+ interface Seeder {
13
+ seed(options?: SeederServiceOptions): Promise<any> | any;
14
+ drop?(options?: SeederServiceOptions): Promise<any> | any;
15
+ }
16
+
17
+ interface SeederOptionsFactory {
18
+ createSeederOptions(): Promise<SeederModuleOptions> | SeederModuleOptions;
19
+ }
20
+
21
+ interface SeederModuleAsyncOptions extends Pick<ModuleMetadata, 'imports'> {
22
+ isGlobal?: boolean;
23
+ useFactory?: (...args: any[]) => Promise<SeederModuleOptions> | SeederModuleOptions;
24
+ useClass?: Type<SeederOptionsFactory>;
25
+ useExisting?: Type<SeederOptionsFactory>;
26
+ inject?: any[];
27
+ }
28
+
29
+ interface SeederModuleExtraOptions extends SeederServiceOptions {
30
+ seeders?: Provider<Seeder>[];
31
+ plugins?: any[];
32
+ }
33
+ interface SeederModuleOptions extends SeederModuleExtraOptions {
34
+ imports?: Array<Type<any> | DynamicModule | Promise<DynamicModule> | ForwardReference>;
35
+ providers?: Provider[];
36
+ }
37
+ declare class SeederModule {
38
+ static register(options: SeederModuleOptions): DynamicModule;
39
+ static forRootAsync(options: SeederModuleAsyncOptions): DynamicModule;
40
+ private static createAsyncProviders;
41
+ private static createAsyncOptionsProvider;
42
+ }
43
+
44
+ interface SeederOptions {
45
+ imports?: Array<Type<any> | DynamicModule | Promise<DynamicModule> | ForwardReference>;
46
+ providers?: Provider[];
47
+ }
48
+ interface SeederRunner {
49
+ run(extraOptions?: SeederModuleExtraOptions): Promise<void>;
50
+ }
51
+ declare const seeder: (options: SeederOptions) => SeederRunner;
52
+
53
+ declare class SeederService {
54
+ private readonly seeders;
55
+ private readonly options;
56
+ private readonly logger;
57
+ constructor(seeders?: Seeder[], options?: SeederServiceOptions);
58
+ run(): Promise<void>;
59
+ seed(seeders?: Seeder[]): Promise<void>;
60
+ drop(seeders?: Seeder[]): Promise<void>;
61
+ getSeedersToRun(): Seeder[];
62
+ private handleError;
63
+ private normalizeNames;
64
+ }
65
+
66
+ type BaseType = string | number | Date | Buffer | boolean | Record<string, any>;
67
+ type FactoryValue = BaseType | Array<BaseType>;
68
+ type FactoryValueGenerator = (faker: Faker, ctx: Record<string, any>) => FactoryValue;
69
+ declare function Factory(generator: FactoryValueGenerator | FactoryValue, dependsOn?: string[]): (target: Record<string, any>, propertyKey: string | symbol) => void;
70
+
71
+ type FactoryOverrides<T> = Partial<T> & Record<string, unknown>;
72
+ interface FactoryInstance<T = Record<string, any>> {
73
+ generate(count: number, overrides?: FactoryOverrides<T>): T[];
74
+ generateOne(overrides?: FactoryOverrides<T>): T;
75
+ }
76
+
77
+ declare class DataFactory {
78
+ static createForClass<T = Record<string, any>>(target: Type<T>): FactoryInstance<T>;
79
+ private static generateOne;
80
+ }
81
+
82
+ declare function SeederName(name: string): ClassDecorator;
83
+ declare function getSeederName(seeder: any): string;
84
+
85
+ type SeederConfig = SeederModuleOptions;
86
+ declare function defineSeederConfig(config: SeederConfig): SeederConfig;
87
+
88
+ export { DataFactory, Factory, type FactoryInstance, type FactoryOverrides, type FactoryValue, type FactoryValueGenerator, type Seeder, type SeederConfig, SeederModule, type SeederModuleAsyncOptions, type SeederModuleExtraOptions, type SeederModuleOptions, SeederName, type SeederOptions, type SeederOptionsFactory, type SeederRunner, SeederService, type SeederServiceOptions, defineSeederConfig, getSeederName, seeder };
package/dist/index.d.ts CHANGED
@@ -1,8 +1,88 @@
1
- export * from './lib/seeder/seeder';
2
- export * from './lib/seeder/seeder.interface';
3
- export * from './lib/seeder/seeder.module';
4
- export * from './lib/seeder/seeder.service';
5
- export * from './lib/factory/data.factory';
6
- export * from './lib/decorators/factory.decorator';
7
- export * from './lib/interfaces/seeder-options-factory.interface';
8
- export * from './lib/interfaces/seeder-module-async-options.interface';
1
+ import { ModuleMetadata, Type, Provider, DynamicModule, ForwardReference } from '@nestjs/common';
2
+ import { Faker } from '@faker-js/faker';
3
+
4
+ interface SeederServiceOptions {
5
+ name?: string | string[];
6
+ refresh?: boolean;
7
+ dryRun?: boolean;
8
+ continueOnError?: boolean;
9
+ context?: Record<string, any>;
10
+ dummyData?: boolean;
11
+ }
12
+ interface Seeder {
13
+ seed(options?: SeederServiceOptions): Promise<any> | any;
14
+ drop?(options?: SeederServiceOptions): Promise<any> | any;
15
+ }
16
+
17
+ interface SeederOptionsFactory {
18
+ createSeederOptions(): Promise<SeederModuleOptions> | SeederModuleOptions;
19
+ }
20
+
21
+ interface SeederModuleAsyncOptions extends Pick<ModuleMetadata, 'imports'> {
22
+ isGlobal?: boolean;
23
+ useFactory?: (...args: any[]) => Promise<SeederModuleOptions> | SeederModuleOptions;
24
+ useClass?: Type<SeederOptionsFactory>;
25
+ useExisting?: Type<SeederOptionsFactory>;
26
+ inject?: any[];
27
+ }
28
+
29
+ interface SeederModuleExtraOptions extends SeederServiceOptions {
30
+ seeders?: Provider<Seeder>[];
31
+ plugins?: any[];
32
+ }
33
+ interface SeederModuleOptions extends SeederModuleExtraOptions {
34
+ imports?: Array<Type<any> | DynamicModule | Promise<DynamicModule> | ForwardReference>;
35
+ providers?: Provider[];
36
+ }
37
+ declare class SeederModule {
38
+ static register(options: SeederModuleOptions): DynamicModule;
39
+ static forRootAsync(options: SeederModuleAsyncOptions): DynamicModule;
40
+ private static createAsyncProviders;
41
+ private static createAsyncOptionsProvider;
42
+ }
43
+
44
+ interface SeederOptions {
45
+ imports?: Array<Type<any> | DynamicModule | Promise<DynamicModule> | ForwardReference>;
46
+ providers?: Provider[];
47
+ }
48
+ interface SeederRunner {
49
+ run(extraOptions?: SeederModuleExtraOptions): Promise<void>;
50
+ }
51
+ declare const seeder: (options: SeederOptions) => SeederRunner;
52
+
53
+ declare class SeederService {
54
+ private readonly seeders;
55
+ private readonly options;
56
+ private readonly logger;
57
+ constructor(seeders?: Seeder[], options?: SeederServiceOptions);
58
+ run(): Promise<void>;
59
+ seed(seeders?: Seeder[]): Promise<void>;
60
+ drop(seeders?: Seeder[]): Promise<void>;
61
+ getSeedersToRun(): Seeder[];
62
+ private handleError;
63
+ private normalizeNames;
64
+ }
65
+
66
+ type BaseType = string | number | Date | Buffer | boolean | Record<string, any>;
67
+ type FactoryValue = BaseType | Array<BaseType>;
68
+ type FactoryValueGenerator = (faker: Faker, ctx: Record<string, any>) => FactoryValue;
69
+ declare function Factory(generator: FactoryValueGenerator | FactoryValue, dependsOn?: string[]): (target: Record<string, any>, propertyKey: string | symbol) => void;
70
+
71
+ type FactoryOverrides<T> = Partial<T> & Record<string, unknown>;
72
+ interface FactoryInstance<T = Record<string, any>> {
73
+ generate(count: number, overrides?: FactoryOverrides<T>): T[];
74
+ generateOne(overrides?: FactoryOverrides<T>): T;
75
+ }
76
+
77
+ declare class DataFactory {
78
+ static createForClass<T = Record<string, any>>(target: Type<T>): FactoryInstance<T>;
79
+ private static generateOne;
80
+ }
81
+
82
+ declare function SeederName(name: string): ClassDecorator;
83
+ declare function getSeederName(seeder: any): string;
84
+
85
+ type SeederConfig = SeederModuleOptions;
86
+ declare function defineSeederConfig(config: SeederConfig): SeederConfig;
87
+
88
+ export { DataFactory, Factory, type FactoryInstance, type FactoryOverrides, type FactoryValue, type FactoryValueGenerator, type Seeder, type SeederConfig, SeederModule, type SeederModuleAsyncOptions, type SeederModuleExtraOptions, type SeederModuleOptions, SeederName, type SeederOptions, type SeederOptionsFactory, type SeederRunner, SeederService, type SeederServiceOptions, defineSeederConfig, getSeederName, seeder };