/
githubmirror
/
strapi
Обзор
Документация
Войти
/
githubmirror
/
strapi
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop
packages/core/database/src/migrations/discover.ts
48 строк
1 KB
Ben Irvin
chore(database): replace umzug with internal migration runner (#26824)
05 авг 2026, 12:57
Не верифицирован
05 авг 2026, 12:57
93875d3
Код
Авторство
О чём код?
import path from 'path'; import fse from 'fs-extra'; /** * Discover user migration files in a directory. * Matches umzug's non-recursive `*.{js,sql}` glob (fast-glob defaults: * `dot: false`, `onlyFiles: true`, `followSymbolicLinks: true`) with * alphabetical ordering. */ export const discoverMigrationFiles = (dir: string): string[] => { if (!fse.existsSync(dir)) { return []; } return fse .readdirSync(dir, { withFileTypes: true }) .filter((entry) => { if (entry.name.startsWith('.')) { return false; } if (!entry.name.endsWith('.js') && !entry.name.endsWith('.sql')) { return false; } // Regular files: accept without stat so a TOCTOU race (file removed // between readdir and stat) surfaces later instead of being swallowed. if (entry.isFile()) { return true; } // Dirent#isFile() is false for symlinks; only then follow the target // (umzug/fast-glob followSymbolicLinks: include symlink→file, skip // symlink→directory and broken links). if (entry.isSymbolicLink()) { try { return fse.statSync(path.join(dir, entry.name)).isFile(); } catch { return false; } } return false; }) .map((entry) => path.resolve(dir, entry.name)) .sort(); };