diff --git a/package.json b/package.json index 1178528..e0f904c 100644 --- a/package.json +++ b/package.json @@ -3,13 +3,10 @@ "bin": { "typeorm-seeding": "dist/cli.js" }, - "contributors": [ - "Jorge Bodega (https://github.com/jorgebodega)" - ], + "contributors": ["Jorge Bodega (https://github.com/jorgebodega)"], "dependencies": { "chalk": "4.1.2", "commander": "12.1.0", - "glob": "10.4.2", "ora": "5.4.1", "tslib": "2.6.3" }, @@ -32,12 +29,7 @@ "engines": { "node": ">=18 <19 || >=20" }, - "keywords": [ - "typeorm", - "seed", - "seeding", - "orm" - ], + "keywords": ["typeorm", "seed", "seeding", "orm"], "license": "MIT", "main": "dist/index.js", "name": "@jorgebodega/typeorm-seeding", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index dc3d869..e8458ae 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -14,9 +14,6 @@ importers: commander: specifier: 12.1.0 version: 12.1.0 - glob: - specifier: 10.4.2 - version: 10.4.2 ora: specifier: 5.4.1 version: 5.4.1 diff --git a/src/commands/seed.command.ts b/src/commands/seed.command.ts index c5f3971..1a3efef 100644 --- a/src/commands/seed.command.ts +++ b/src/commands/seed.command.ts @@ -8,7 +8,7 @@ import { SeederExecutionError } from "../errors/SeederExecutionError"; import { useDataSource, useSeeders } from "../helpers"; import type { Seeder } from "../seeder"; import type { Constructable, SeedCommandArguments } from "../types"; -import { calculateFilePath, loadDataSource, loadSeeders } from "../utils"; +import { loadDataSource, loadSeeders } from "../utils"; async function run(paths: string[]) { const opts = seedCommand.opts(); @@ -32,9 +32,7 @@ async function run(paths: string[]) { spinner.start("Importing seeders"); let seeders!: Constructable[]; try { - const seederFiles = paths.flatMap(calculateFilePath); - - seeders = await loadSeeders(seederFiles); + seeders = await loadSeeders(dataSource, paths); spinner.succeed("Seeder imported"); } catch (error: unknown) { diff --git a/src/utils/commandUtils.ts b/src/utils/commandUtils.ts index c38e54e..b957b07 100644 --- a/src/utils/commandUtils.ts +++ b/src/utils/commandUtils.ts @@ -1,4 +1,5 @@ import type { DataSource } from "typeorm"; +import { importClassesFromDirectories } from "typeorm/util/DirectoryExportedClassesLoader"; import { CommandUtils as TypeormCommandUtils } from "typeorm/commands/CommandUtils"; import { Seeder } from "../seeder"; import type { Constructable } from "../types"; @@ -7,22 +8,13 @@ export async function loadDataSource(dataSourceFilePath: string): Promise[]> { - const seederFileExports = (await Promise.all(seederPaths.map((seederFile) => import(seederFile)))) - .map((seederExport) => seederExport.default?.default ?? seederExport.default) - .filter((seederExport) => Boolean(seederExport)); +export async function loadSeeders(dataSource: DataSource, seederPaths: string[]): Promise[]> { + const seederFileExports = await importClassesFromDirectories(dataSource.logger, seederPaths); - if (seederFileExports.length === 0) { - throw new Error("No default seeders found"); - } + const seeders = seederFileExports.filter((seeder) => seeder.prototype instanceof Seeder) as Constructable[]; - const seeders: Constructable[] = []; - for (const fileExport in seederFileExports) { - const seederExport = seederFileExports[fileExport]; - const instance = new seederExport(); - if (instance instanceof Seeder) { - seeders.push(seederExport); - } + if (seeders.length === 0) { + throw new Error("No default seeders found"); } return seeders; diff --git a/src/utils/fileHandling.ts b/src/utils/fileHandling.ts deleted file mode 100644 index 153a56e..0000000 --- a/src/utils/fileHandling.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { sync } from "glob"; - -export const calculateFilePath = (filePattern: string): string[] => { - return sync(filePattern, { ignore: "**/node_modules/**", absolute: true }); -}; diff --git a/src/utils/index.ts b/src/utils/index.ts index eb9d103..70f5879 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -1,2 +1 @@ export * from "./commandUtils"; -export * from "./fileHandling";