@studiosonrai/nestjs-migrations 1.0.0 → 1.2.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,34 @@
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;
6
+ private readonly tableName;
11
7
  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
8
  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
- */
9
+ calculateFileHash(filePath: string): string;
10
+ getAppliedMigrationNames(): Promise<string[]>;
11
+ getAppliedMigrations(): Promise<AppliedMigration[]>;
12
+ verifyMigrationHashes(): Promise<void>;
25
13
  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
14
  runSingleMigration(file: string, queryRunner: QueryRunner): Promise<void>;
31
- /**
32
- * Runs all pending migrations.
33
- * Each migration runs in its own transaction for isolation.
34
- */
15
+ private recordMigration;
35
16
  runMigrations(options?: MigrationRunOptions): Promise<MigrationResult>;
36
- /**
37
- * Gets the list of pending migrations without applying them.
38
- */
39
17
  getPendingMigrations(): Promise<string[]>;
40
- /**
41
- * Gets migration status information.
42
- */
43
18
  getStatus(): Promise<{
44
19
  total: number;
45
20
  applied: number;
46
21
  pending: number;
22
+ rerunnable: number;
47
23
  pendingFiles: string[];
24
+ rerunnableFiles: string[];
25
+ hashMismatches: Array<{
26
+ name: string;
27
+ expectedHash: string;
28
+ actualHash: string;
29
+ }>;
30
+ missingFiles: string[];
48
31
  }>;
32
+ private runPendingVersionedMigrations;
33
+ private runRerunnableScripts;
49
34
  }