{"version":3,"file":"migrator.cjs","names":["fs","formatToMillis","crypto"],"sources":["../src/migrator.ts"],"sourcesContent":["import crypto from 'node:crypto';\nimport fs, { existsSync, readdirSync } from 'node:fs';\nimport { join } from 'node:path';\nimport { formatToMillis } from './migrator.utils.ts';\n\nexport interface KitConfig {\n\tout: string;\n\tschema: string;\n}\n\nexport interface MigrationConfig {\n\tmigrationsFolder: string;\n\tmigrationsTable?: string;\n\tmigrationsSchema?: string;\n\t/** @internal */\n\tinit?: boolean;\n}\n\nexport interface MigrationMeta {\n\tsql: string[];\n\tfolderMillis: number;\n\thash: string;\n\tbps: boolean;\n\tname: string;\n}\n\nexport interface MigrationFromJournalConfig {\n\tmigrationsJournal: MigrationsJournal;\n\tmigrationsTable?: string;\n}\n\nexport type MigrationsJournal = {\n\tsql: string;\n\ttimestamp: number;\n\tname: string;\n}[];\n\n/** Only gets returned if migrator failed with `init: true` used by `drizzle-kit pull --init`*/\nexport interface MigratorInitFailResponse {\n\texitCode: 'databaseMigrations' | 'localMigrations';\n}\n\n/** Only gets returned if migrator failed with `init: true` used by `drizzle-kit pull --init`*/\nexport interface MigratorInitFailResponse {\n\texitCode: 'databaseMigrations' | 'localMigrations';\n}\n\nexport function readMigrationFiles(config: MigrationConfig): MigrationMeta[] {\n\tif (fs.existsSync(`${config.migrationsFolder}/meta/_journal.json`)) {\n\t\t// it means user has folders V2\n\t\t// we need to warn to up the folders\n\t\tthrow Error(\n\t\t\t'We detected that you have old drizzle-kit migration folders. You must upgrade drizzle-kit and run \"drizzle-kit up\"',\n\t\t);\n\t}\n\n\tconst migrationFolderTo = config.migrationsFolder;\n\n\tconst migrationQueries: MigrationMeta[] = [];\n\n\tconst migrations = readdirSync(migrationFolderTo)\n\t\t.map((subdir) => ({ path: join(migrationFolderTo, subdir, 'migration.sql'), name: subdir }))\n\t\t.filter((it) => existsSync(it.path));\n\n\tmigrations.sort((a, b) => a.name.localeCompare(b.name));\n\n\tfor (const migration of migrations) {\n\t\tconst migrationPath = migration.path;\n\t\tconst migrationDate = migration.name.slice(0, 14);\n\t\tconst query = fs.readFileSync(migrationPath).toString();\n\n\t\tconst result = query.split('--> statement-breakpoint').map((it) => {\n\t\t\treturn it;\n\t\t});\n\n\t\tconst millis = formatToMillis(migrationDate);\n\n\t\tmigrationQueries.push({\n\t\t\tsql: result,\n\t\t\tbps: true,\n\t\t\tfolderMillis: millis,\n\t\t\thash: crypto.createHash('sha256').update(query).digest('hex'),\n\t\t\tname: migration.name,\n\t\t});\n\t}\n\n\treturn migrationQueries;\n}\n"],"mappings":";;;;;;;;;;AA+CA,SAAgB,mBAAmB,QAA0C;AAC5E,KAAIA,gBAAG,WAAW,GAAG,OAAO,iBAAiB,qBAAqB,CAGjE,OAAM,MACL,uHACA;CAGF,MAAM,oBAAoB,OAAO;CAEjC,MAAM,mBAAoC,EAAE;CAE5C,MAAM,sCAAyB,kBAAkB,CAC/C,KAAK,YAAY;EAAE,0BAAW,mBAAmB,QAAQ,gBAAgB;EAAE,MAAM;EAAQ,EAAE,CAC3F,QAAQ,+BAAkB,GAAG,KAAK,CAAC;AAErC,YAAW,MAAM,GAAG,MAAM,EAAE,KAAK,cAAc,EAAE,KAAK,CAAC;AAEvD,MAAK,MAAM,aAAa,YAAY;EACnC,MAAM,gBAAgB,UAAU;EAChC,MAAM,gBAAgB,UAAU,KAAK,MAAM,GAAG,GAAG;EACjD,MAAM,QAAQA,gBAAG,aAAa,cAAc,CAAC,UAAU;EAEvD,MAAM,SAAS,MAAM,MAAM,2BAA2B,CAAC,KAAK,OAAO;AAClE,UAAO;IACN;EAEF,MAAM,SAASC,sCAAe,cAAc;AAE5C,mBAAiB,KAAK;GACrB,KAAK;GACL,KAAK;GACL,cAAc;GACd,MAAMC,oBAAO,WAAW,SAAS,CAAC,OAAO,MAAM,CAAC,OAAO,MAAM;GAC7D,MAAM,UAAU;GAChB,CAAC;;AAGH,QAAO"}