@studiosonrai/nestjs-migrations 1.0.0 → 1.1.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.
package/README.md ADDED
@@ -0,0 +1,56 @@
1
+ # @studiosonrai/nestjs-migrations
2
+
3
+ SQL Server migrations module for NestJS. Runs TypeScript migrations on startup or via CLI.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install @studiosonrai/nestjs-migrations
9
+ ```
10
+
11
+ ## Usage
12
+
13
+ ```typescript
14
+ import { MigrationModule } from '@studiosonrai/nestjs-migrations';
15
+
16
+ @Module({
17
+ imports: [
18
+ MigrationModule.forRootAsync({
19
+ inject: [ConfigService],
20
+ useFactory: (config: ConfigService) => ({
21
+ migrationsDir: path.join(__dirname, '../migrations'),
22
+ autoRun: config.get('AUTO_RUN_MIGRATIONS') === 'true',
23
+ }),
24
+ }),
25
+ ],
26
+ })
27
+ export class AppModule {}
28
+ ```
29
+
30
+ ## CLI
31
+
32
+ ```bash
33
+ npx nestjs-migrations --dir ./migrations --connection-string "your-connection-string"
34
+ ```
35
+
36
+ ## Migration Files
37
+
38
+ Name format: `001_description.sql`, `002_description.sql`, etc.
39
+
40
+ Place SQL files in your migrations directory. They will be executed in alphabetical order.
41
+
42
+ ## Hash Integrity Checking
43
+
44
+ Migration files are tracked with SHA256 hashes. If a migration file is modified after being applied, the migration runner will fail with a `HashMismatchError`. This prevents accidental changes to already-applied migrations.
45
+
46
+ ```typescript
47
+ import { HashMismatchError } from '@studiosonrai/nestjs-migrations';
48
+
49
+ try {
50
+ await migrationService.runMigrations();
51
+ } catch (error) {
52
+ if (error instanceof HashMismatchError) {
53
+ console.error(`Migration ${error.migrationName} was modified!`);
54
+ }
55
+ }
56
+ ```
package/dist/bin/cli.js CHANGED
@@ -1,8 +1,41 @@
1
1
  #!/usr/bin/env node
2
2
  "use strict";
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
3
36
  Object.defineProperty(exports, "__esModule", { value: true });
4
37
  const typeorm_1 = require("typeorm");
5
- const path = require("path");
38
+ const path = __importStar(require("path"));
6
39
  const migration_core_1 = require("../src/migration-core");
7
40
  function printUsage() {
8
41
  console.log(`
@@ -108,7 +141,6 @@ function parseArgs(args) {
108
141
  return { command, options };
109
142
  }
110
143
  function resolveOptions(cliOptions) {
111
- // Load environment variables
112
144
  const dotenv = require('dotenv');
113
145
  dotenv.config();
114
146
  const options = {
@@ -123,7 +155,6 @@ function resolveOptions(cliOptions) {
123
155
  dryRun: cliOptions.dryRun || false,
124
156
  verbose: cliOptions.verbose ?? true,
125
157
  };
126
- // Resolve relative paths
127
158
  if (options.migrationsDir && !path.isAbsolute(options.migrationsDir)) {
128
159
  options.migrationsDir = path.resolve(process.cwd(), options.migrationsDir);
129
160
  }
@@ -239,4 +270,4 @@ async function main() {
239
270
  }
240
271
  }
241
272
  main();
242
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vYmluL2NsaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSxxQ0FBcUM7QUFDckMsNkJBQTZCO0FBQzdCLDBEQUFzRDtBQWV0RCxTQUFTLFVBQVU7SUFDakIsT0FBTyxDQUFDLEdBQUcsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQXFDYixDQUFDLENBQUM7QUFDSCxDQUFDO0FBRUQsU0FBUyxTQUFTLENBQUMsSUFBYztJQUMvQixNQUFNLE9BQU8sR0FBd0I7UUFDbkMsT0FBTyxFQUFFLElBQUk7S0FDZCxDQUFDO0lBQ0YsSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDO0lBRWpCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDckMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3BCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFFNUIsUUFBUSxHQUFHLEVBQUUsQ0FBQztZQUNaLEtBQUssS0FBSyxDQUFDO1lBQ1gsS0FBSyxRQUFRO2dCQUNYLE9BQU8sR0FBRyxHQUFHLENBQUM7Z0JBQ2QsTUFBTTtZQUNSLEtBQUssa0JBQWtCLENBQUM7WUFDeEIsS0FBSyxJQUFJO2dCQUNQLE9BQU8sQ0FBQyxhQUFhLEdBQUcsT0FBTyxDQUFDO2dCQUNoQyxDQUFDLEVBQUUsQ0FBQztnQkFDSixNQUFNO1lBQ1IsS0FBSyxRQUFRLENBQUM7WUFDZCxLQUFLLElBQUk7Z0JBQ1AsT0FBTyxDQUFDLElBQUksR0FBRyxPQUFPLENBQUM7Z0JBQ3ZCLENBQUMsRUFBRSxDQUFDO2dCQUNKLE1BQU07WUFDUixLQUFLLFFBQVEsQ0FBQztZQUNkLEtBQUssSUFBSTtnQkFDUCxPQUFPLENBQUMs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LENBQUM7SUFDbEIsQ0FBQztBQUNILENBQUM7QUFFRCxJQUFJLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIiMhL3Vzci9iaW4vZW52IG5vZGVcblxuaW1wb3J0IHsgRGF0YVNvdXJjZSB9IGZyb20gJ3R5cGVvcm0nO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IE1pZ3JhdGlvbkNvcmUgfSBmcm9tICcuLi9zcmMvbWlncmF0aW9uLWNvcmUnO1xuXG5pbnRlcmZhY2UgQ2xpT3B0aW9ucyB7XG4gIG1pZ3JhdGlvbnNEaXI6IHN0cmluZztcbiAgaG9zdDogc3RyaW5nO1xuICBwb3J0OiBudW1iZXI7XG4gIGRhdGFiYXNlOiBzdHJpbmc7XG4gIHVzZXJuYW1lPzogc3RyaW5nO1xuICBwYXNzd29yZD86IHN0cmluZztcbiAgZW5jcnlwdD86IGJvb2xlYW47XG4gIHRydXN0U2VydmVyQ2VydGlmaWNhdGU/OiBib29sZWFuO1xuICBkcnlSdW4/OiBib29sZWFuO1xuICB2ZXJib3NlPzogYm9vbGVhbjtcbn1cblxuZnVuY3Rpb24gcHJpbnRVc2FnZSgpOiB2b2lkIHtcbiAgY29uc29sZS5sb2coYFxuQHN0dWRpb3NvbnJhaS9uZXN0anMtbWlncmF0aW9ucyBDTElcblxuVXNhZ2U6XG4gIG5lc3Rqcy1taWdyYXRpb25zIHJ1biBbb3B0aW9uc11cbiAgbmVzdGpzLW1pZ3JhdGlvbnMgc3RhdHVzIFtvcHRpb25zXVxuXG5Db21tYW5kczpcbiAgcnVuICAgICAgIFJ1biBhbGwgcGVuZGluZyBtaWdyYXRpb25zXG4gIHN0YXR1cyAgICBTaG93IG1pZ3JhdGlvbiBzdGF0dXNcblxuT3B0aW9uczpcbiAgLS1taWdyYXRpb25zLWRpciwgLWQgICAgUGF0aCB0byBtaWdyYXRpb25zIGRpcmVjdG9yeSAocmVxdWlyZWQpXG4gIC0taG9zdCwgLWggICAgICAgICAgICAgIERhdGFiYXNlIGhvc3QgKGRlZmF1bHQ6IGxvY2FsaG9zdClcbiAgLS1wb3J0LCAtcCAgICAgICAgICAgICAgRGF0YWJhc2UgcG9ydCAoZGVmYXVsdDogMTQzMylcbiAgLS1kYXRhYmFzZSwgLUQgICAgICAgICAgRGF0YWJhc2UgbmFtZSAocmVxdWlyZWQpXG4gIC0tdXNlcm5hbWUsIC11ICAgICAgICAgIERhdGFiYXNlIHVzZXJuYW1lXG4gIC0tcGFzc3dvcmQsIC1QICAgICAgICAgIERhdGFiYXNlIHBhc3N3b3JkXG4gIC0tZW5jcnlwdCAgICAgICAgICAgICAgIEVuYWJsZSBlbmNyeXB0aW9uIChkZWZhdWx0OiBmYWxzZSlcbiAgLS10cnVzdC1jZXJ0ICAgICAgICAgICAgVHJ1c3Qgc2VydmVyIGNlcnRpZmljYXRlIChkZWZhdWx0OiBmYWxzZSlcbiAgLS1kcnktcnVuICAgICAgICAgICAgICAgU2hvdyBwZW5kaW5nIG1pZ3JhdGlvbnMgd2l0aG91dCBhcHBseWluZ1xuICAtLXZlcmJvc2UsIC12ICAgICAgICAgICBWZXJib3NlIG91dHB1dCAoZGVmYXVsdDogdHJ1ZSlcbiAgLS1oZWxwICAgICAgICAgICAgICAgICAgU2hvdyB0aGlzIGhlbHAgbWVzc2FnZVxuXG5FbnZpcm9ubWVudCB2YXJpYWJsZXM6XG4gIERCX0hPU1QgICAgICAgICAgICAgICAgIERhdGFiYXNlIGhvc3RcbiAgREJfUE9SVCAgICAgICAgICAgICAgICAgRGF0YWJhc2UgcG9ydFxuICBEQl9EQVRBQkFTRSAgICAgICAgICAgICBEYXRhYmFzZSBuYW1lXG4gIERCX1VTRVJOQU1FICAgICAgICAgICAgIERhdGFiYXNlIHVzZXJuYW1lXG4gIERCX1BBU1NXT1JEICAgICAgICAgICAgIERhdGFiYXNlIHBhc3N3b3JkXG4gIERCX0VOQ1JZUFQgICAgICAgICAgICAgIEVuYWJsZSBlbmNyeXB0aW9uXG4gIE1JR1JBVElPTlNfRElSICAgICAgICAgIFBhdGggdG8gbWlncmF0aW9ucyBkaXJlY3RvcnlcblxuRXhhbXBsZXM6XG4gIG5lc3Rqcy1taWdyYXRpb25zIHJ1biAtZCAuL21pZ3JhdGlvbnMgLUQgbXlkYiAtdSBzYSAtUCBwYXNzd29yZFxuICBuZXN0anMtbWlncmF0aW9ucyBzdGF0dXMgLS1taWdyYXRpb25zLWRpciAuL21pZ3JhdGlvbnMgLS1kYXRhYmFzZSBteWRiXG4gIG5lc3Rqcy1taWdyYXRpb25zIHJ1biAtLWRyeS1ydW4gLWQgLi9taWdyYXRpb25zIC1EIG15ZGJcbmApO1xufVxuXG5mdW5jdGlvbiBwYXJzZUFyZ3MoYXJnczogc3RyaW5nW10pOiB7IGNvbW1hbmQ6IHN0cmluZzsgb3B0aW9uczogUGFydGlhbDxDbGlPcHRpb25zPiB9IHtcbiAgY29uc3Qgb3B0aW9uczogUGFydGlhbDxDbGlPcHRpb25zPiA9IHtcbiAgICB2ZXJib3NlOiB0cnVlLFxuICB9O1xuICBsZXQgY29tbWFuZCA9ICcnO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGFyZyA9IGFyZ3NbaV07XG4gICAgY29uc3QgbmV4dEFyZyA9IGFyZ3NbaSArIDFdO1xuXG4gICAgc3dpdGNoIChhcmcpIHtcbiAgICAgIGNhc2UgJ3J1bic6XG4gICAgICBjYXNlICdzdGF0dXMnOlxuICAgICAgICBjb21tYW5kID0gYXJnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJy0tbWlncmF0aW9ucy1kaXInOlxuICAgICAgY2FzZSAnLWQnOlxuICAgICAgICBvcHRpb25zLm1pZ3JhdGlvbnNEaXIgPSBuZXh0QXJnO1xuICAgICAgICBpKys7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnLS1ob3N0JzpcbiAgICAgIGNhc2UgJy1oJzpcbiAgICAgICAgb3B0aW9ucy5ob3N0ID0gbmV4dEFyZztcbiAgICAgICAgaSsrO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJy0tcG9ydCc6XG4gICAgICBjYXNlICctcCc6XG4gICAgICAgIG9wdGlvbnMucG9ydCA9IHBhcnNlSW50KG5leHRBcmcsIDEwKTtcbiAgICAgICAgaSsrO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJy0tZGF0YWJhc2UnOlxuICAgICAgY2FzZSAnLUQnOlxuICAgICAgICBvcHRpb25zLmRhdGFiYXNlID0gbmV4dEFyZztcbiAgICAgICAgaSsrO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJy0tdXNlcm5hbWUnOlxuICAgICAgY2FzZSAnLXUnOlxuICAgICAgICBvcHRpb25zLnVzZXJuYW1lID0gbmV4dEFyZztcbiAgICAgICAgaSsrO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJy0tcGFzc3dvcmQnOlxuICAgICAgY2FzZSAnLVAnOlxuICAgICAgICBvcHRpb25zLnBhc3N3b3JkID0gbmV4dEFyZztcbiAgICAgICAgaSsrO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJy0tZW5jcnlwdCc6XG4gICAgICAgIG9wdGlvbnMuZW5jcnlwdCA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnLS10cnVzdC1jZXJ0JzpcbiAgICAgICAgb3B0aW9ucy50cnVzdFNlcnZlckNlcnRpZmljYXRlID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICctLWRyeS1ydW4nOlxuICAgICAgICBvcHRpb25zLmRyeVJ1biA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnLS12ZXJib3NlJzpcbiAgICAgIGNhc2UgJy12JzpcbiAgICAgICAgb3B0aW9ucy52ZXJib3NlID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICctLWhlbHAnOlxuICAgICAgICBwcmludFVzYWdlKCk7XG4gICAgICAgIHByb2Nlc3MuZXhpdCgwKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4geyBjb21tYW5kLCBvcHRpb25zIH07XG59XG5cbmZ1bmN0aW9uIHJlc29sdmVPcHRpb25zKGNsaU9wdGlvbnM6IFBhcnRpYWw8Q2xpT3B0aW9ucz4pOiBDbGlPcHRpb25zIHtcbiAgLy8gTG9hZCBlbnZpcm9ubWVudCB2YXJpYWJsZXNcbiAgY29uc3QgZG90ZW52ID0gcmVxdWlyZSgnZG90ZW52Jyk7XG4gIGRvdGVudi5jb25maWcoKTtcblxuICBjb25zdCBvcHRpb25zOiBDbGlPcHRpb25zID0ge1xuICAgIG1pZ3JhdGlvbnNEaXI6IGNsaU9wdGlvbnMubWlncmF0aW9uc0RpciB8fCBwcm9jZXNzLmVudi5NSUdSQVRJT05TX0RJUiB8fCAnJyxcbiAgICBob3N0OiBjbGlPcHRpb25zLmhvc3QgfHwgcHJvY2Vzcy5lbnYuREJfSE9TVCB8fCAnbG9jYWxob3N0JyxcbiAgICBwb3J0OiBjbGlPcHRpb25zLnBvcnQgfHwgcGFyc2VJbnQocHJvY2Vzcy5lbnYuREJfUE9SVCB8fCAnMTQzMycsIDEwKSxcbiAgICBkYXRhYmFzZTogY2xpT3B0aW9ucy5kYXRhYmFzZSB8fCBwcm9jZXNzLmVudi5EQl9EQVRBQkFTRSB8fCAnJyxcbiAgICB1c2VybmFtZTogY2xpT3B0aW9ucy51c2VybmFtZSB8fCBwcm9jZXNzLmVudi5EQl9VU0VSTkFNRSxcbiAgICBwYXNzd29yZDogY2xpT3B0aW9ucy5wYXNzd29yZCB8fCBwcm9jZXNzLmVudi5EQl9QQVNTV09SRCxcbiAgICBlbmNyeXB0OiBjbGlPcHRpb25zLmVuY3J5cHQgfHwgcHJvY2Vzcy5lbnYuREJfRU5DUllQVCA9PT0gJ3RydWUnLFxuICAgIHRydXN0U2VydmVyQ2VydGlmaWNhdGU6IGNsaU9wdGlvbnMudHJ1c3RTZXJ2ZXJDZXJ0aWZpY2F0ZSB8fCBmYWxzZSxcbiAgICBkcnlSdW46IGNsaU9wdGlvbnMuZHJ5UnVuIHx8IGZhbHNlLFxuICAgIHZlcmJvc2U6IGNsaU9wdGlvbnMudmVyYm9zZSA/PyB0cnVlLFxuICB9O1xuXG4gIC8vIFJlc29sdmUgcmVsYXRpdmUgcGF0aHNcbiAgaWYgKG9wdGlvbnMubWlncmF0aW9uc0RpciAmJiAhcGF0aC5pc0Fic29sdXRlKG9wdGlvbnMubWlncmF0aW9uc0RpcikpIHtcbiAgICBvcHRpb25zLm1pZ3JhdGlvbnNEaXIgPSBwYXRoLnJlc29sdmUocHJvY2Vzcy5jd2QoKSwgb3B0aW9ucy5taWdyYXRpb25zRGlyKTtcbiAgfVxuXG4gIHJldHVybiBvcHRpb25zO1xufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZU9wdGlvbnMob3B0aW9uczogQ2xpT3B0aW9ucyk6IHZvaWQge1xuICBpZiAoIW9wdGlvbnMubWlncmF0aW9uc0Rpcikge1xuICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yOiAtLW1pZ3JhdGlvbnMtZGlyIGlzIHJlcXVpcmVkJyk7XG4gICAgcHJvY2Vzcy5leGl0KDEpO1xuICB9XG5cbiAgaWYgKCFvcHRpb25zLmRhdGFiYXNlKSB7XG4gICAgY29uc29sZS5lcnJvcignRXJyb3I6IC0tZGF0YWJhc2UgaXMgcmVxdWlyZWQnKTtcbiAgICBwcm9jZXNzLmV4aXQoMSk7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gY3JlYXRlRGF0YVNvdXJjZShvcHRpb25zOiBDbGlPcHRpb25zKTogUHJvbWlzZTxEYXRhU291cmNlPiB7XG4gIGNvbnN0IGRhdGFTb3VyY2UgPSBuZXcgRGF0YVNvdXJjZSh7XG4gICAgdHlwZTogJ21zc3FsJyxcbiAgICBob3N0OiBvcHRpb25zLmhvc3QsXG4gICAgcG9ydDogb3B0aW9ucy5wb3J0LFxuICAgIGRhdGFiYXNlOiBvcHRpb25zLmRhdGFiYXNlLFxuICAgIHVzZXJuYW1lOiBvcHRpb25zLnVzZXJuYW1lLFxuICAgIHBhc3N3b3JkOiBvcHRpb25zLnBhc3N3b3JkLFxuICAgIG9wdGlvbnM6IHtcbiAgICAgIGVuY3J5cHQ6IG9wdGlvbnMuZW5jcnlwdCB8fCBmYWxzZSxcbiAgICAgIHRydXN0U2VydmVyQ2VydGlmaWNhdGU6IG9wdGlvbnMudHJ1c3RTZXJ2ZXJDZXJ0aWZpY2F0ZSB8fCBmYWxzZSxcbiAgICB9LFxuICB9KTtcblxuICBhd2FpdCBkYXRhU291cmNlLmluaXRpYWxpemUoKTtcbiAgcmV0dXJuIGRhdGFTb3VyY2U7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJ1bkNvbW1hbmQob3B0aW9uczogQ2xpT3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zb2xlLmxvZygnU3RhcnRpbmcgbWlncmF0aW9uIHJ1bm5lci4uLicpO1xuICBjb25zb2xlLmxvZyhgTWlncmF0aW9ucyBkaXJlY3Rvcnk6ICR7b3B0aW9ucy5taWdyYXRpb25zRGlyfWApO1xuICBjb25zb2xlLmxvZyhgRGF0YWJhc2U6ICR7b3B0aW9ucy5kYXRhYmFzZX1gKTtcbiAgY29uc29sZS5sb2coYEhvc3Q6ICR7b3B0aW9ucy5ob3N0fToke29wdGlvbnMucG9ydH1gKTtcbiAgY29uc29sZS5sb2coJycpO1xuXG4gIGNvbnN0IGRhdGFTb3VyY2UgPSBhd2FpdCBjcmVhdGVEYXRhU291cmNlKG9wdGlvbnMpO1xuICBjb25zb2xlLmxvZygnRGF0YWJhc2UgY29ubmVjdGlvbiBlc3RhYmxpc2hlZCcpO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgbWlncmF0aW9uQ29yZSA9IG5ldyBNaWdyYXRpb25Db3JlKGRhdGFTb3VyY2UsIHtcbiAgICAgIG1pZ3JhdGlvbnNEaXI6IG9wdGlvbnMubWlncmF0aW9uc0RpcixcbiAgICB9KTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IG1pZ3JhdGlvbkNvcmUucnVuTWlncmF0aW9ucyh7XG4gICAgICBkcnlSdW46IG9wdGlvbnMuZHJ5UnVuLFxuICAgICAgdmVyYm9zZTogb3B0aW9ucy52ZXJib3NlLFxuICAgIH0pO1xuXG4gICAgaWYgKHJlc3VsdC5zdWNjZXNzKSB7XG4gICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICBjb25zb2xlLmxvZygnTWlncmF0aW9uIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkhJyk7XG4gICAgfVxuICB9IGZpbmFsbHkge1xuICAgIGF3YWl0IGRhdGFTb3VyY2UuZGVzdHJveSgpO1xuICAgIGNvbnNvbGUubG9nKCdEYXRhYmFzZSBjb25uZWN0aW9uIGNsb3NlZCcpO1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHN0YXR1c0NvbW1hbmQob3B0aW9uczogQ2xpT3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zb2xlLmxvZygnQ2hlY2tpbmcgbWlncmF0aW9uIHN0YXR1cy4uLicpO1xuICBjb25zb2xlLmxvZyhgTWlncmF0aW9ucyBkaXJlY3Rvcnk6ICR7b3B0aW9ucy5taWdyYXRpb25zRGlyfWApO1xuICBjb25zb2xlLmxvZyhgRGF0YWJhc2U6ICR7b3B0aW9ucy5kYXRhYmFzZX1gKTtcbiAgY29uc29sZS5sb2coJycpO1xuXG4gIGNvbnN0IGRhdGFTb3VyY2UgPSBhd2FpdCBjcmVhdGVEYXRhU291cmNlKG9wdGlvbnMpO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgbWlncmF0aW9uQ29yZSA9IG5ldyBNaWdyYXRpb25Db3JlKGRhdGFTb3VyY2UsIHtcbiAgICAgIG1pZ3JhdGlvbnNEaXI6IG9wdGlvbnMubWlncmF0aW9uc0RpcixcbiAgICB9KTtcblxuICAgIGNvbnN0IHN0YXR1cyA9IGF3YWl0IG1pZ3JhdGlvbkNvcmUuZ2V0U3RhdHVzKCk7XG5cbiAgICBjb25zb2xlLmxvZyhgVG90YWwgbWlncmF0aW9uczogJHtzdGF0dXMudG90YWx9YCk7XG4gICAgY29uc29sZS5sb2coYEFwcGxpZWQ6ICR7c3RhdHVzLmFwcGxpZWR9YCk7XG4gICAgY29uc29sZS5sb2coYFBlbmRpbmc6ICR7c3RhdHVzLnBlbmRpbmd9YCk7XG5cbiAgICBpZiAoc3RhdHVzLnBlbmRpbmdGaWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zb2xlLmxvZygnJyk7XG4gICAgICBjb25zb2xlLmxvZygnUGVuZGluZyBtaWdyYXRpb25zOicpO1xuICAgICAgc3RhdHVzLnBlbmRpbmdGaWxlcy5mb3JFYWNoKChmaWxlKSA9PiBjb25zb2xlLmxvZyhgICAtICR7ZmlsZX1gKSk7XG4gICAgfVxuICB9IGZpbmFsbHkge1xuICAgIGF3YWl0IGRhdGFTb3VyY2UuZGVzdHJveSgpO1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIG1haW4oKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IGFyZ3MgPSBwcm9jZXNzLmFyZ3Yuc2xpY2UoMik7XG5cbiAgaWYgKGFyZ3MubGVuZ3RoID09PSAwIHx8IGFyZ3MuaW5jbHVkZXMoJy0taGVscCcpKSB7XG4gICAgcHJpbnRVc2FnZSgpO1xuICAgIHByb2Nlc3MuZXhpdCgwKTtcbiAgfVxuXG4gIGNvbnN0IHsgY29tbWFuZCwgb3B0aW9uczogY2xpT3B0aW9ucyB9ID0gcGFyc2VBcmdzKGFyZ3MpO1xuICBjb25zdCBvcHRpb25zID0gcmVzb2x2ZU9wdGlvbnMoY2xpT3B0aW9ucyk7XG5cbiAgaWYgKCFjb21tYW5kKSB7XG4gICAgY29uc29sZS5lcnJvcignRXJyb3I6IE5vIGNvbW1hbmQgc3BlY2lmaWVkLiBVc2UgXCJydW5cIiBvciBcInN0YXR1c1wiLicpO1xuICAgIHByaW50VXNhZ2UoKTtcbiAgICBwcm9jZXNzLmV4aXQoMSk7XG4gIH1cblxuICB2YWxpZGF0ZU9wdGlvbnMob3B0aW9ucyk7XG5cbiAgdHJ5IHtcbiAgICBzd2l0Y2ggKGNvbW1hbmQpIHtcbiAgICAgIGNhc2UgJ3J1bic6XG4gICAgICAgIGF3YWl0IHJ1bkNvbW1hbmQob3B0aW9ucyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnc3RhdHVzJzpcbiAgICAgICAgYXdhaXQgc3RhdHVzQ29tbWFuZChvcHRpb25zKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBjb25zb2xlLmVycm9yKGBVbmtub3duIGNvbW1hbmQ6ICR7Y29tbWFuZH1gKTtcbiAgICAgICAgcHJpbnRVc2FnZSgpO1xuICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgfVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoJ01pZ3JhdGlvbiBmYWlsZWQ6JywgZXJyb3IpO1xuICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgfVxufVxuXG5tYWluKCk7XG4iXX0=
273
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../bin/cli.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  export { MigrationModule } from './migration.module';
2
2
  export { MigrationService } from './migration.service';
3
3
  export { MigrationCore } from './migration-core';
4
- export { MigrationModuleOptions, MigrationModuleAsyncOptions, MigrationModuleOptionsFactory, MigrationResult, MigrationRunOptions, MigrationCoreOptions, MIGRATION_MODULE_OPTIONS, } from './types';
4
+ export { MigrationModuleOptions, MigrationModuleAsyncOptions, MigrationModuleOptionsFactory, MigrationResult, MigrationRunOptions, MigrationCoreOptions, AppliedMigration, HashMismatchError, MIGRATION_MODULE_OPTIONS, } from './types';
package/dist/src/index.js CHANGED
@@ -1,16 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MIGRATION_MODULE_OPTIONS = exports.MigrationCore = exports.MigrationService = exports.MigrationModule = void 0;
4
- // Module
3
+ exports.MIGRATION_MODULE_OPTIONS = exports.HashMismatchError = exports.MigrationCore = exports.MigrationService = exports.MigrationModule = void 0;
5
4
  var migration_module_1 = require("./migration.module");
6
5
  Object.defineProperty(exports, "MigrationModule", { enumerable: true, get: function () { return migration_module_1.MigrationModule; } });
7
- // Service
8
6
  var migration_service_1 = require("./migration.service");
9
7
  Object.defineProperty(exports, "MigrationService", { enumerable: true, get: function () { return migration_service_1.MigrationService; } });
10
- // Core (for standalone/CLI usage)
11
8
  var migration_core_1 = require("./migration-core");
12
9
  Object.defineProperty(exports, "MigrationCore", { enumerable: true, get: function () { return migration_core_1.MigrationCore; } });
13
- // Types
14
10
  var types_1 = require("./types");
11
+ Object.defineProperty(exports, "HashMismatchError", { enumerable: true, get: function () { return types_1.HashMismatchError; } });
15
12
  Object.defineProperty(exports, "MIGRATION_MODULE_OPTIONS", { enumerable: true, get: function () { return types_1.MIGRATION_MODULE_OPTIONS; } });
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsU0FBUztBQUNULHVEQUFxRDtBQUE1QyxtSEFBQSxlQUFlLE9BQUE7QUFFeEIsVUFBVTtBQUNWLHlEQUF1RDtBQUE5QyxxSEFBQSxnQkFBZ0IsT0FBQTtBQUV6QixrQ0FBa0M7QUFDbEMsbURBQWlEO0FBQXhDLCtHQUFBLGFBQWEsT0FBQTtBQUV0QixRQUFRO0FBQ1IsaUNBUWlCO0FBRGYsaUhBQUEsd0JBQXdCLE9BQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBNb2R1bGVcbmV4cG9ydCB7IE1pZ3JhdGlvbk1vZHVsZSB9IGZyb20gJy4vbWlncmF0aW9uLm1vZHVsZSc7XG5cbi8vIFNlcnZpY2VcbmV4cG9ydCB7IE1pZ3JhdGlvblNlcnZpY2UgfSBmcm9tICcuL21pZ3JhdGlvbi5zZXJ2aWNlJztcblxuLy8gQ29yZSAoZm9yIHN0YW5kYWxvbmUvQ0xJIHVzYWdlKVxuZXhwb3J0IHsgTWlncmF0aW9uQ29yZSB9IGZyb20gJy4vbWlncmF0aW9uLWNvcmUnO1xuXG4vLyBUeXBlc1xuZXhwb3J0IHtcbiAgTWlncmF0aW9uTW9kdWxlT3B0aW9ucyxcbiAgTWlncmF0aW9uTW9kdWxlQXN5bmNPcHRpb25zLFxuICBNaWdyYXRpb25Nb2R1bGVPcHRpb25zRmFjdG9yeSxcbiAgTWlncmF0aW9uUmVzdWx0LFxuICBNaWdyYXRpb25SdW5PcHRpb25zLFxuICBNaWdyYXRpb25Db3JlT3B0aW9ucyxcbiAgTUlHUkFUSU9OX01PRFVMRV9PUFRJT05TLFxufSBmcm9tICcuL3R5cGVzJztcbiJdfQ==
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AACA,uDAAqD;AAA5C,mHAAA,eAAe,OAAA;AAGxB,yDAAuD;AAA9C,qHAAA,gBAAgB,OAAA;AAGzB,mDAAiD;AAAxC,+GAAA,aAAa,OAAA;AAGtB,iCAUiB;AAFf,0GAAA,iBAAiB,OAAA;AACjB,iHAAA,wBAAwB,OAAA"}
@@ -1,49 +1,28 @@
1
1
  import { DataSource, QueryRunner } from 'typeorm';
2
- import { MigrationCoreOptions, MigrationResult, MigrationRunOptions } from './types';
3
- /**
4
- * Core migration runner for SQL Server databases.
5
- * Handles reading SQL migration files, tracking applied migrations,
6
- * and executing pending migrations within transactions.
7
- */
2
+ import { MigrationCoreOptions, MigrationResult, MigrationRunOptions, AppliedMigration } from './types';
8
3
  export declare class MigrationCore {
9
4
  private readonly dataSource;
10
5
  private readonly migrationsDir;
11
6
  constructor(dataSource: DataSource, options: MigrationCoreOptions);
12
- /**
13
- * Ensures the migrations tracking table exists in the database.
14
- * Creates it if it doesn't exist.
15
- */
16
7
  ensureMigrationsTable(): Promise<void>;
17
- /**
18
- * Gets the list of migrations that have already been applied.
19
- */
20
- getAppliedMigrations(): Promise<string[]>;
21
- /**
22
- * Gets all SQL migration files from the migrations directory.
23
- * Files are sorted alphabetically (by convention, use numeric prefixes).
24
- */
8
+ calculateFileHash(filePath: string): string;
9
+ getAppliedMigrationNames(): Promise<string[]>;
10
+ getAppliedMigrations(): Promise<AppliedMigration[]>;
11
+ verifyMigrationHashes(): Promise<void>;
25
12
  getMigrationFiles(): Promise<string[]>;
26
- /**
27
- * Runs a single migration file within the provided query runner.
28
- * Handles SQL Server's GO batch separator.
29
- */
30
13
  runSingleMigration(file: string, queryRunner: QueryRunner): Promise<void>;
31
- /**
32
- * Runs all pending migrations.
33
- * Each migration runs in its own transaction for isolation.
34
- */
35
14
  runMigrations(options?: MigrationRunOptions): Promise<MigrationResult>;
36
- /**
37
- * Gets the list of pending migrations without applying them.
38
- */
39
15
  getPendingMigrations(): Promise<string[]>;
40
- /**
41
- * Gets migration status information.
42
- */
43
16
  getStatus(): Promise<{
44
17
  total: number;
45
18
  applied: number;
46
19
  pending: number;
47
20
  pendingFiles: string[];
21
+ hashMismatches: Array<{
22
+ name: string;
23
+ expectedHash: string;
24
+ actualHash: string;
25
+ }>;
26
+ missingFiles: string[];
48
27
  }>;
49
28
  }
@@ -1,14 +1,44 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  Object.defineProperty(exports, "__esModule", { value: true });
3
36
  exports.MigrationCore = void 0;
4
- const fs = require("fs");
5
- const path = require("path");
37
+ const fs = __importStar(require("fs"));
38
+ const path = __importStar(require("path"));
39
+ const crypto = __importStar(require("crypto"));
40
+ const types_1 = require("./types");
6
41
  const MIGRATION_TABLE = 'migrations';
7
- /**
8
- * Core migration runner for SQL Server databases.
9
- * Handles reading SQL migration files, tracking applied migrations,
10
- * and executing pending migrations within transactions.
11
- */
12
42
  class MigrationCore {
13
43
  dataSource;
14
44
  migrationsDir;
@@ -16,10 +46,6 @@ class MigrationCore {
16
46
  this.dataSource = dataSource;
17
47
  this.migrationsDir = options.migrationsDir;
18
48
  }
19
- /**
20
- * Ensures the migrations tracking table exists in the database.
21
- * Creates it if it doesn't exist.
22
- */
23
49
  async ensureMigrationsTable() {
24
50
  const tableExists = await this.dataSource.query(`
25
51
  SELECT COUNT(*) as count FROM sysobjects WHERE name='${MIGRATION_TABLE}' AND xtype='U'
@@ -29,22 +55,40 @@ class MigrationCore {
29
55
  CREATE TABLE ${MIGRATION_TABLE} (
30
56
  id INT IDENTITY(1,1) PRIMARY KEY,
31
57
  name NVARCHAR(255) UNIQUE NOT NULL,
58
+ content_hash NVARCHAR(64) NOT NULL,
32
59
  run_on DATETIME DEFAULT GETDATE() NOT NULL
33
60
  )
34
61
  `);
35
62
  }
36
63
  }
37
- /**
38
- * Gets the list of migrations that have already been applied.
39
- */
40
- async getAppliedMigrations() {
64
+ calculateFileHash(filePath) {
65
+ const content = fs.readFileSync(filePath, 'utf8');
66
+ return crypto.createHash('sha256').update(content, 'utf8').digest('hex');
67
+ }
68
+ async getAppliedMigrationNames() {
41
69
  const rows = await this.dataSource.query(`SELECT name FROM ${MIGRATION_TABLE}`);
42
70
  return rows.map((row) => row.name);
43
71
  }
44
- /**
45
- * Gets all SQL migration files from the migrations directory.
46
- * Files are sorted alphabetically (by convention, use numeric prefixes).
47
- */
72
+ async getAppliedMigrations() {
73
+ const rows = await this.dataSource.query(`SELECT name, content_hash, run_on FROM ${MIGRATION_TABLE}`);
74
+ return rows;
75
+ }
76
+ async verifyMigrationHashes() {
77
+ const appliedMigrations = await this.getAppliedMigrations();
78
+ for (const migration of appliedMigrations) {
79
+ if (!migration.content_hash) {
80
+ continue;
81
+ }
82
+ const filePath = path.join(this.migrationsDir, migration.name);
83
+ if (!fs.existsSync(filePath)) {
84
+ throw new Error(`Migration file "${migration.name}" was applied but no longer exists in the migrations directory.`);
85
+ }
86
+ const currentHash = this.calculateFileHash(filePath);
87
+ if (currentHash !== migration.content_hash) {
88
+ throw new types_1.HashMismatchError(migration.name, migration.content_hash, currentHash);
89
+ }
90
+ }
91
+ }
48
92
  async getMigrationFiles() {
49
93
  if (!fs.existsSync(this.migrationsDir)) {
50
94
  throw new Error(`Migrations directory not found: ${this.migrationsDir}`);
@@ -54,29 +98,19 @@ class MigrationCore {
54
98
  .filter((f) => f.endsWith('.sql'))
55
99
  .sort();
56
100
  }
57
- /**
58
- * Runs a single migration file within the provided query runner.
59
- * Handles SQL Server's GO batch separator.
60
- */
61
101
  async runSingleMigration(file, queryRunner) {
62
- const sql = fs.readFileSync(path.join(this.migrationsDir, file), 'utf8');
63
- // Split SQL by GO statements (batch separator for SQL Server)
64
- // GO is not part of T-SQL and must be handled by the client
102
+ const filePath = path.join(this.migrationsDir, file);
103
+ const sql = fs.readFileSync(filePath, 'utf8');
104
+ const contentHash = this.calculateFileHash(filePath);
65
105
  const batches = sql
66
106
  .split(/^\s*GO\s*$/im)
67
107
  .map((batch) => batch.trim())
68
108
  .filter((batch) => batch.length > 0);
69
- // Run each batch separately
70
109
  for (const batch of batches) {
71
110
  await queryRunner.query(batch);
72
111
  }
73
- // Track the migration
74
- await queryRunner.query(`INSERT INTO ${MIGRATION_TABLE} (name, run_on) VALUES (@0, GETDATE())`, [file]);
112
+ await queryRunner.query(`INSERT INTO ${MIGRATION_TABLE} (name, content_hash, run_on) VALUES (@0, @1, GETDATE())`, [file, contentHash]);
75
113
  }
76
- /**
77
- * Runs all pending migrations.
78
- * Each migration runs in its own transaction for isolation.
79
- */
80
114
  async runMigrations(options) {
81
115
  const result = {
82
116
  success: false,
@@ -86,15 +120,22 @@ class MigrationCore {
86
120
  };
87
121
  try {
88
122
  await this.ensureMigrationsTable();
123
+ if (options?.verbose) {
124
+ console.log('Verifying integrity of applied migrations...');
125
+ }
126
+ await this.verifyMigrationHashes();
127
+ if (options?.verbose) {
128
+ console.log('✓ All applied migrations have valid hashes');
129
+ }
89
130
  const files = await this.getMigrationFiles();
90
- const applied = await this.getAppliedMigrations();
131
+ const appliedNames = await this.getAppliedMigrationNames();
91
132
  result.totalMigrations = files.length;
92
- result.appliedMigrations = applied.length;
133
+ result.appliedMigrations = appliedNames.length;
93
134
  if (options?.verbose) {
94
135
  console.log(`Found ${files.length} migration files`);
95
- console.log(`${applied.length} migrations already applied`);
136
+ console.log(`${appliedNames.length} migrations already applied`);
96
137
  }
97
- const pendingMigrations = files.filter((file) => !applied.includes(file));
138
+ const pendingMigrations = files.filter((file) => !appliedNames.includes(file));
98
139
  result.pendingMigrations = pendingMigrations.length;
99
140
  if (pendingMigrations.length === 0) {
100
141
  if (options?.verbose) {
@@ -116,7 +157,6 @@ class MigrationCore {
116
157
  if (options?.verbose) {
117
158
  console.log(`Applying migration: ${file}`);
118
159
  }
119
- // Use a transaction for each migration
120
160
  const queryRunner = this.dataSource.createQueryRunner();
121
161
  await queryRunner.connect();
122
162
  await queryRunner.startTransaction();
@@ -155,30 +195,46 @@ class MigrationCore {
155
195
  throw error;
156
196
  }
157
197
  }
158
- /**
159
- * Gets the list of pending migrations without applying them.
160
- */
161
198
  async getPendingMigrations() {
162
199
  await this.ensureMigrationsTable();
163
200
  const files = await this.getMigrationFiles();
164
- const applied = await this.getAppliedMigrations();
165
- return files.filter((file) => !applied.includes(file));
201
+ const appliedNames = await this.getAppliedMigrationNames();
202
+ return files.filter((file) => !appliedNames.includes(file));
166
203
  }
167
- /**
168
- * Gets migration status information.
169
- */
170
204
  async getStatus() {
171
205
  await this.ensureMigrationsTable();
172
206
  const files = await this.getMigrationFiles();
173
- const applied = await this.getAppliedMigrations();
174
- const pendingFiles = files.filter((file) => !applied.includes(file));
207
+ const appliedMigrations = await this.getAppliedMigrations();
208
+ const appliedNames = appliedMigrations.map((m) => m.name);
209
+ const pendingFiles = files.filter((file) => !appliedNames.includes(file));
210
+ const hashMismatches = [];
211
+ const missingFiles = [];
212
+ for (const migration of appliedMigrations) {
213
+ const filePath = path.join(this.migrationsDir, migration.name);
214
+ if (!fs.existsSync(filePath)) {
215
+ missingFiles.push(migration.name);
216
+ continue;
217
+ }
218
+ if (migration.content_hash) {
219
+ const currentHash = this.calculateFileHash(filePath);
220
+ if (currentHash !== migration.content_hash) {
221
+ hashMismatches.push({
222
+ name: migration.name,
223
+ expectedHash: migration.content_hash,
224
+ actualHash: currentHash,
225
+ });
226
+ }
227
+ }
228
+ }
175
229
  return {
176
230
  total: files.length,
177
- applied: applied.length,
231
+ applied: appliedNames.length,
178
232
  pending: pendingFiles.length,
179
233
  pendingFiles,
234
+ hashMismatches,
235
+ missingFiles,
180
236
  };
181
237
  }
182
238
  }
183
239
  exports.MigrationCore = MigrationCore;
184
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlncmF0aW9uLWNvcmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWlncmF0aW9uLWNvcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EseUJBQXlCO0FBQ3pCLDZCQUE2QjtBQUc3QixNQUFNLGVBQWUsR0FBRyxZQUFZLENBQUM7QUFFckM7Ozs7R0FJRztBQUNILE1BQWEsYUFBYTtJQUlMO0lBSEYsYUFBYSxDQUFTO0lBRXZDLFlBQ21CLFVBQXNCLEVBQ3ZDLE9BQTZCO1FBRFosZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUd2QyxJQUFJLENBQUMsYUFBYSxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUM7SUFDN0MsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxxQkFBcUI7UUFDekIsTUFBTSxXQUFXLEdBQUcsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQzs2REFDUyxlQUFlO0tBQ3ZFLENBQUMsQ0FBQztRQUVILElBQUksV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMvQixNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDO3VCQUNYLGVBQWU7Ozs7O09BSy9CLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsb0JBQW9CO1FBQ3hCLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQ3RDLG9CQUFvQixlQUFlLEVBQUUsQ0FDdEMsQ0FBQztRQUNGLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsaUJBQWlCO1FBQ3JCLElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxh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QUcsTUFBTSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztRQUNsRCxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3pELENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxTQUFTO1FBTWIsTUFBTSxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUNuQyxNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQzdDLE1BQU0sT0FBTyxHQUFHLE1BQU0sSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7UUFDbEQsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFFckUsT0FBTztZQUNMLEtBQUssRUFBRSxLQUFLLENBQUMsTUFBTTtZQUNuQixPQUFPLEVBQUUsT0FBTyxDQUFDLE1BQU07WUFDdkIsT0FBTyxFQUFFLFlBQVksQ0FBQyxNQUFNO1lBQzVCLFlBQVk7U0FDYixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBeE5ELHNDQXdOQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGFTb3VyY2UsIFF1ZXJ5UnVubmVyIH0gZnJvbSAndHlwZW9ybSc7XG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgTWlncmF0aW9uQ29yZU9wdGlvbnMsIE1pZ3JhdGlvblJlc3VsdCwgTWlncmF0aW9uUnVuT3B0aW9ucyB9IGZyb20gJy4vdHlwZXMnO1xuXG5jb25zdCBNSUdSQVRJT05fVEFCTEUgPSAnbWlncmF0aW9ucyc7XG5cbi8qKlxuICogQ29yZSBtaWdyYXRpb24gcnVubmVyIGZvciBTUUwgU2VydmVyIGRhdGFiYXNlcy5cbiAqIEhhbmRsZXMgcmVhZGluZyBTUUwgbWlncmF0aW9uIGZpbGVzLCB0cmFja2luZyBhcHBsaWVkIG1pZ3JhdGlvbnMsXG4gKiBhbmQgZXhlY3V0aW5nIHBlbmRpbmcgbWlncmF0aW9ucyB3aXRoaW4gdHJhbnNhY3Rpb25zLlxuICovXG5leHBvcnQgY2xhc3MgTWlncmF0aW9uQ29yZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgbWlncmF0aW9uc0Rpcjogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGF0YVNvdXJjZTogRGF0YVNvdXJjZSxcbiAgICBvcHRpb25zOiBNaWdyYXRpb25Db3JlT3B0aW9ucyxcbiAgKSB7XG4gICAgdGhpcy5taWdyYXRpb25zRGlyID0gb3B0aW9ucy5taWdyYXRpb25zRGlyO1xuICB9XG5cbiAgLyoqXG4gICAqIEVuc3VyZXMgdGhlIG1pZ3JhdGlvbnMgdHJhY2tpbmcgdGFibGUgZXhpc3RzIGluIHRoZSBkYXRhYmFzZS5cbiAgICogQ3JlYXRlcyBpdCBpZiBpdCBkb2Vzbid0IGV4aXN0LlxuICAgKi9cbiAgYXN5bmMgZW5zdXJlTWlncmF0aW9uc1RhYmxlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHRhYmxlRXhpc3RzID0gYXdhaXQgdGhpcy5kYXRhU291cmNlLnF1ZXJ5KGBcbiAgICAgIFNFTEVDVCBDT1VOVCgqKSBhcyBjb3VudCBGUk9NIHN5c29iamVjdHMgV0hFUkUgbmFtZT0nJHtNSUdSQVRJT05fVEFCTEV9JyBBTkQgeHR5cGU9J1UnXG4gICAgYCk7XG5cbiAgICBpZiAodGFibGVFeGlzdHNbMF0uY291bnQgPT09IDApIHtcbiAgICAgIGF3YWl0IHRoaXMuZGF0YVNvdXJjZS5xdWVyeShgXG4gICAgICAgIENSRUFURSBUQUJMRSAke01JR1JBVElPTl9UQUJMRX0gKFxuICAgICAgICAgIGlkIElOVCBJREVOVElUWSgxLDEpIFBSSU1BUlkgS0VZLFxuICAgICAgICAgIG5hbWUgTlZBUkNIQVIoMjU1KSBVTklRVUUgTk9UIE5VTEwsXG4gICAgICAgICAgcnVuX29uIERBVEVUSU1FIERFRkFVTFQgR0VUREFURSgpIE5PVCBOVUxMXG4gICAgICAgIClcbiAgICAgIGApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBsaXN0IG9mIG1pZ3JhdGlvbnMgdGhhdCBoYXZlIGFscmVhZHkgYmVlbiBhcHBsaWVkLlxuICAgKi9cbiAgYXN5bmMgZ2V0QXBwbGllZE1pZ3JhdGlvbnMoKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgIGNvbnN0IHJvd3MgPSBhd2FpdCB0aGlzLmRhdGFTb3VyY2UucXVlcnk8eyBuYW1lOiBzdHJpbmcgfVtdPihcbiAgICAgIGBTRUxFQ1QgbmFtZSBGUk9NICR7TUlHUkFUSU9OX1RBQkxFfWAsXG4gICAgKTtcbiAgICByZXR1cm4gcm93cy5tYXAoKHJvdykgPT4gcm93Lm5hbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgYWxsIFNRTCBtaWdyYXRpb24gZmlsZXMgZnJvbSB0aGUgbWlncmF0aW9ucyBkaXJlY3RvcnkuXG4gICAqIEZpbGVzIGFyZSBzb3J0ZWQgYWxwaGFiZXRpY2FsbHkgKGJ5IGNvbnZlbnRpb24sIHVzZSBudW1lcmljIHByZWZpeGVzKS5cbiAgICovXG4gIGFzeW5jIGdldE1pZ3JhdGlvbkZpbGVzKCk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICBpZiAoIWZzLmV4aXN0c1N5bmModGhpcy5taWdyYXRpb25zRGlyKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBNaWdyYXRpb25zIGRpcmVjdG9yeSBub3QgZm91bmQ6ICR7dGhpcy5taWdyYXRpb25zRGlyfWApO1xuICAgIH1cblxuICAgIHJldHVybiBmc1xuICAgICAgLnJlYWRkaXJTeW5jKHRoaXMubWlncmF0aW9uc0RpcilcbiAgICAgIC5maWx0ZXIoKGYpID0+IGYuZW5kc1dpdGgoJy5zcWwnKSlcbiAgICAgIC5zb3J0KCk7XG4gIH1cblxuICAvKipcbiAgICogUnVucyBhIHNpbmdsZSBtaWdyYXRpb24gZmlsZSB3aXRoaW4gdGhlIHByb3ZpZGVkIHF1ZXJ5IHJ1bm5lci5cbiAgICogSGFuZGxlcyBTUUwgU2VydmVyJ3MgR08gYmF0Y2ggc2VwYXJhdG9yLlxuICAgKi9cbiAgYXN5bmMgcnVuU2luZ2xlTWlncmF0aW9uKFxuICAgIGZpbGU6IHN0cmluZyxcbiAgICBxdWVyeVJ1bm5lcjogUXVlcnlSdW5uZXIsXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHNxbCA9IGZzLnJlYWRGaWxlU3luYyhwYXRoLmpvaW4odGhpcy5taWdyYXRpb25zRGlyLCBmaWxlKSwgJ3V0ZjgnKTtcblxuICAgIC8vIFNwbGl0IFNRTCBieSBHTyBzdGF0ZW1lbnRzIChiYXRjaCBzZXBhcmF0b3IgZm9yIFNRTCBTZXJ2ZXIpXG4gICAgLy8gR08gaXMgbm90IHBhcnQgb2YgVC1TUUwgYW5kIG11c3QgYmUgaGFuZGxlZCBieSB0aGUgY2xpZW50XG4gICAgY29uc3QgYmF0Y2hlcyA9IHNxbFxuICAgICAgLnNwbGl0KC9eXFxzKkdPXFxzKiQvaW0pXG4gICAgICAubWFwKChiYXRjaCkgPT4gYmF0Y2gudHJpbSgpKVxuICAgICAgLmZpbHRlcigoYmF0Y2gpID0+IGJhdGNoLmxlbmd0aCA+IDApO1xuXG4gICAgLy8gUnVuIGVhY2ggYmF0Y2ggc2VwYXJhdGVseVxuICAgIGZvciAoY29uc3QgYmF0Y2ggb2YgYmF0Y2hlcykge1xuICAgICAgYXdhaXQgcXVlcnlSdW5uZXIucXVlcnkoYmF0Y2gpO1xuICAgIH1cblxuICAgIC8vIFRyYWNrIHRoZSBtaWdyYXRpb25cbiAgICBhd2FpdCBxdWVyeVJ1bm5lci5xdWVyeShcbiAgICAgIGBJTlNFUlQgSU5UTyAke01JR1JBVElPTl9UQUJMRX0gKG5hbWUsIHJ1bl9vbikgVkFMVUVTIChAMCwgR0VUREFURSgpKWAsXG4gICAgICBbZmlsZV0sXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSdW5zIGFsbCBwZW5kaW5nIG1pZ3JhdGlvbnMuXG4gICAqIEVhY2ggbWlncmF0aW9uIHJ1bnMgaW4gaXRzIG93biB0cmFuc2FjdGlvbiBmb3IgaXNvbGF0aW9uLlxuICAgKi9cbiAgYXN5bmMgcnVuTWlncmF0aW9ucyhvcHRpb25zPzogTWlncmF0aW9uUnVuT3B0aW9ucyk6IFByb21pc2U8TWlncmF0aW9uUmVzdWx0PiB7XG4gICAgY29uc3QgcmVzdWx0OiBNaWdyYXRpb25SZXN1bHQgPSB7XG4gICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgIHRvdGFsTWlncmF0aW9uczogMCxcbiAgICAgIGFwcGxpZWRNaWdyYXRpb25zOiAwLFxuICAgICAgcGVuZGluZ01pZ3JhdGlvbnM6IDAsXG4gICAgfTtcblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLmVuc3VyZU1pZ3JhdGlvbnNUYWJsZSgpO1xuXG4gICAgICBjb25zdCBmaWxlcyA9IGF3YWl0IHRoaXMuZ2V0TWlncmF0aW9uRmlsZXMoKTtcbiAgICAgIGNvbnN0IGFwcGxpZWQgPSBhd2FpdCB0aGlzLmdldEFwcGxpZWRNaWdyYXRpb25zKCk7XG5cbiAgICAgIHJlc3VsdC50b3RhbE1pZ3JhdGlvbnMgPSBmaWxlcy5sZW5ndGg7XG4gICAgICByZXN1bHQuYXBwbGllZE1pZ3JhdGlvbnMgPSBhcHBsaWVkLmxlbmd0aDtcblxuICAgICAgaWYgKG9wdGlvbnM/LnZlcmJvc2UpIHtcbiAgICAgICAgY29uc29sZS5sb2coYEZvdW5kICR7ZmlsZXMubGVuZ3RofSBtaWdyYXRpb24gZmlsZXNgKTtcbiAgICAgICAgY29uc29sZS5sb2coYCR7YXBwbGllZC5sZW5ndGh9IG1pZ3JhdGlvbnMgYWxyZWFkeSBhcHBsaWVkYCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHBlbmRpbmdNaWdyYXRpb25zID0gZmlsZXMuZmlsdGVyKChmaWxlKSA9PiAhYXBwbGllZC5pbmNsdWRlcyhmaWxlKSk7XG4gICAgICByZXN1bHQucGVuZGluZ01pZ3JhdGlvbnMgPSBwZW5kaW5nTWlncmF0aW9ucy5sZW5ndGg7XG5cbiAgICAgIGlmIChwZW5kaW5nTWlncmF0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgaWYgKG9wdGlvbnM/LnZlcmJvc2UpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZygnTm8gcGVuZGluZyBtaWdyYXRpb25zIHRvIGFwcGx5Jyk7XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0LnN1Y2Nlc3MgPSB0cnVlO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucz8uZHJ5UnVuKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdEcnkgcnVuIG1vZGUgLSB3b3VsZCBhcHBseTonKTtcbiAgICAgICAgcGVuZGluZ01pZ3JhdGlvbnMuZm9yRWFjaCgoZmlsZSkgPT4gY29uc29sZS5sb2coYCAgLSAke2ZpbGV9YCkpO1xuICAgICAgICByZXN1bHQuc3VjY2VzcyA9IHRydWU7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zPy52ZXJib3NlKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgIGBSdW5uaW5nICR7cGVuZGluZ01pZ3JhdGlvbnMubGVuZ3RofSBwZW5kaW5nIG1pZ3JhdGlvbnMuLi5gLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGNvbnN0IGZpbGUgb2YgcGVuZGluZ01pZ3JhdGlvbnMpIHtcbiAgICAgICAgaWYgKG9wdGlvbnM/LnZlcmJvc2UpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgQXBwbHlpbmcgbWlncmF0aW9uOiAke2ZpbGV9YCk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBVc2UgYSB0cmFuc2FjdGlvbiBmb3IgZWFjaCBtaWdyYXRpb25cbiAgICAgICAgY29uc3QgcXVlcnlSdW5uZXIgPSB0aGlzLmRhdGFTb3VyY2UuY3JlYXRlUXVlcnlSdW5uZXIoKTtcbiAgICAgICAgYXdhaXQgcXVlcnlSdW5uZXIuY29ubmVjdCgpO1xuICAgICAgICBhd2FpdCBxdWVyeVJ1bm5lci5zdGFydFRyYW5zYWN0aW9uKCk7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCB0aGlzLnJ1blNpbmdsZU1pZ3JhdGlvbihmaWxlLCBxdWVyeVJ1bm5lcik7XG4gICAgICAgICAgYXdhaXQgcXVlcnlSdW5uZXIuY29tbWl0VHJhbnNhY3Rpb24oKTtcblxuICAgICAgICAgIGlmIChvcHRpb25zPy52ZXJib3NlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhg4pyTIEFwcGxpZWQgbWlncmF0aW9uOiAke2ZpbGV9YCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIGF3YWl0IHF1ZXJ5UnVubmVyLnJvbGxiYWNrVHJhbnNhY3Rpb24oKTtcblxuICAgICAgICAgIGlmIChvcHRpb25zPy52ZXJib3NlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGBGYWlsZWQgdG8gYXBwbHkgbWlncmF0aW9uICR7ZmlsZX06YCwgZXJyb3IpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJlc3VsdC5mYWlsZWRNaWdyYXRpb24gPSBmaWxlO1xuICAgICAgICAgIHJlc3VsdC5lcnJvciA9IGVycm9yO1xuICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIGF3YWl0IHF1ZXJ5UnVubmVyLnJlbGVhc2UoKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXN1bHQuc3VjY2VzcyA9IHRydWU7XG4gICAgICByZXN1bHQuYXBwbGllZE1pZ3JhdGlvbnMgKz0gcGVuZGluZ01pZ3JhdGlvbnMubGVuZ3RoO1xuXG4gICAgICBpZiAob3B0aW9ucz8udmVyYm9zZSkge1xuICAgICAgICBjb25zb2xlLmxvZygnQWxsIG1pZ3JhdGlvbnMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseSEnKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgcmVzdWx0LmVycm9yID0gZXJyb3I7XG5cbiAgICAgIGlmIChvcHRpb25zPy52ZXJib3NlKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ01pZ3JhdGlvbiBmYWlsZWQ6JywgZXJyb3IpO1xuICAgICAgfVxuXG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgbGlzdCBvZiBwZW5kaW5nIG1pZ3JhdGlvbnMgd2l0aG91dCBhcHBseWluZyB0aGVtLlxuICAgKi9cbiAgYXN5bmMgZ2V0UGVuZGluZ01pZ3JhdGlvbnMoKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgIGF3YWl0IHRoaXMuZW5zdXJlTWlncmF0aW9uc1RhYmxlKCk7XG4gICAgY29uc3QgZmlsZXMgPSBhd2FpdCB0aGlzLmdldE1pZ3JhdGlvbkZpbGVzKCk7XG4gICAgY29uc3QgYXBwbGllZCA9IGF3YWl0IHRoaXMuZ2V0QXBwbGllZE1pZ3JhdGlvbnMoKTtcbiAgICByZXR1cm4gZmlsZXMuZmlsdGVyKChmaWxlKSA9PiAhYXBwbGllZC5pbmNsdWRlcyhmaWxlKSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBtaWdyYXRpb24gc3RhdHVzIGluZm9ybWF0aW9uLlxuICAgKi9cbiAgYXN5bmMgZ2V0U3RhdHVzKCk6IFByb21pc2U8e1xuICAgIHRvdGFsOiBudW1iZXI7XG4gICAgYXBwbGllZDogbnVtYmVyO1xuICAgIHBlbmRpbmc6IG51bWJlcjtcbiAgICBwZW5kaW5nRmlsZXM6IHN0cmluZ1tdO1xuICB9PiB7XG4gICAgYXdhaXQgdGhpcy5lbnN1cmVNaWdyYXRpb25zVGFibGUoKTtcbiAgICBjb25zdCBmaWxlcyA9IGF3YWl0IHRoaXMuZ2V0TWlncmF0aW9uRmlsZXMoKTtcbiAgICBjb25zdCBhcHBsaWVkID0gYXdhaXQgdGhpcy5nZXRBcHBsaWVkTWlncmF0aW9ucygpO1xuICAgIGNvbnN0IHBlbmRpbmdGaWxlcyA9IGZpbGVzLmZpbHRlcigoZmlsZSkgPT4gIWFwcGxpZWQuaW5jbHVkZXMoZmlsZSkpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHRvdGFsOiBmaWxlcy5sZW5ndGgsXG4gICAgICBhcHBsaWVkOiBhcHBsaWVkLmxlbmd0aCxcbiAgICAgIHBlbmRpbmc6IHBlbmRpbmdGaWxlcy5sZW5ndGgsXG4gICAgICBwZW5kaW5nRmlsZXMsXG4gICAgfTtcbiAgfVxufVxuIl19
240
+ //# sourceMappingURL=migration-core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migration-core.js","sourceRoot":"","sources":["../../src/migration-core.ts"],"names":[],"mappings":"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"}
@@ -1,37 +1,7 @@
1
1
  import { DynamicModule } from '@nestjs/common';
2
2
  import { MigrationModuleAsyncOptions, MigrationModuleOptions } from './types';
3
- /**
4
- * NestJS module for SQL Server migrations.
5
- *
6
- * @example
7
- * // Synchronous configuration
8
- * MigrationModule.forRoot({
9
- * migrationsDir: path.join(__dirname, '../migrations'),
10
- * autoRun: true,
11
- * verbose: true,
12
- * })
13
- *
14
- * @example
15
- * // Asynchronous configuration with ConfigService
16
- * MigrationModule.forRootAsync({
17
- * imports: [ConfigModule],
18
- * inject: [ConfigService],
19
- * useFactory: (configService: ConfigService) => ({
20
- * migrationsDir: path.join(__dirname, '../migrations'),
21
- * autoRun: configService.get<boolean>('AUTO_RUN_MIGRATIONS', false),
22
- * verbose: true,
23
- * }),
24
- * })
25
- */
26
3
  export declare class MigrationModule {
27
- /**
28
- * Configure the migration module with static options.
29
- */
30
4
  static forRoot(options: MigrationModuleOptions): DynamicModule;
31
- /**
32
- * Configure the migration module with async options.
33
- * Useful when options depend on ConfigService or other async providers.
34
- */
35
5
  static forRootAsync(options: MigrationModuleAsyncOptions): DynamicModule;
36
6
  private static createAsyncProviders;
37
7
  }