UNPKG

payload

Version:

Node, React, Headless CMS and Application Framework built on Next.js

37 lines (36 loc) 1.39 kB
// @ts-strict-ignore import fs from 'fs'; import { pathToFileURL } from 'node:url'; import path from 'path'; /** * Read the migration files from disk */ export const readMigrationFiles = async ({ payload })=>{ if (!fs.existsSync(payload.db.migrationDir)) { payload.logger.error({ msg: `No migration directory found at ${payload.db.migrationDir}` }); return []; } payload.logger.info({ msg: `Reading migration files from ${payload.db.migrationDir}` }); const files = fs.readdirSync(payload.db.migrationDir).sort().filter((f)=>{ return (f.endsWith('.ts') || f.endsWith('.js')) && f !== 'index.js' && f !== 'index.ts'; }).map((file)=>{ return path.resolve(payload.db.migrationDir, file); }); return Promise.all(files.map(async (filePath)=>{ // eval used to circumvent errors bundling let migration = typeof require === 'function' ? await eval(`require('${filePath.replaceAll('\\', '/')}')`) : await eval(`import('${pathToFileURL(filePath).href}')`); if ('default' in migration) { migration = migration.default; } const result = { name: path.basename(filePath).split('.')?.[0], down: migration.down, up: migration.up }; return result; })); }; //# sourceMappingURL=readMigrationFiles.js.map