@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.
@@ -11,33 +11,7 @@ exports.MigrationModule = void 0;
11
11
  const common_1 = require("@nestjs/common");
12
12
  const migration_service_1 = require("./migration.service");
13
13
  const types_1 = require("./types");
14
- /**
15
- * NestJS module for SQL Server migrations.
16
- *
17
- * @example
18
- * // Synchronous configuration
19
- * MigrationModule.forRoot({
20
- * migrationsDir: path.join(__dirname, '../migrations'),
21
- * autoRun: true,
22
- * verbose: true,
23
- * })
24
- *
25
- * @example
26
- * // Asynchronous configuration with ConfigService
27
- * MigrationModule.forRootAsync({
28
- * imports: [ConfigModule],
29
- * inject: [ConfigService],
30
- * useFactory: (configService: ConfigService) => ({
31
- * migrationsDir: path.join(__dirname, '../migrations'),
32
- * autoRun: configService.get<boolean>('AUTO_RUN_MIGRATIONS', false),
33
- * verbose: true,
34
- * }),
35
- * })
36
- */
37
14
  let MigrationModule = MigrationModule_1 = class MigrationModule {
38
- /**
39
- * Configure the migration module with static options.
40
- */
41
15
  static forRoot(options) {
42
16
  return {
43
17
  module: MigrationModule_1,
@@ -51,10 +25,6 @@ let MigrationModule = MigrationModule_1 = class MigrationModule {
51
25
  exports: [migration_service_1.MigrationService],
52
26
  };
53
27
  }
54
- /**
55
- * Configure the migration module with async options.
56
- * Useful when options depend on ConfigService or other async providers.
57
- */
58
28
  static forRootAsync(options) {
59
29
  return {
60
30
  module: MigrationModule_1,
@@ -105,4 +75,4 @@ exports.MigrationModule = MigrationModule;
105
75
  exports.MigrationModule = MigrationModule = MigrationModule_1 = __decorate([
106
76
  (0, common_1.Module)({})
107
77
  ], MigrationModule);
108
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlncmF0aW9uLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9taWdyYXRpb24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSwyQ0FBaUU7QUFDakUsMkRBQXVEO0FBQ3ZELG1DQUtpQjtBQUVqQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCRztBQUVJLElBQU0sZUFBZSx1QkFBckIsTUFBTSxlQUFlO0lBQzFCOztPQUVHO0lBQ0gsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUErQjtRQUM1QyxPQUFPO1lBQ0wsTUFBTSxFQUFFLGlCQUFlO1lBQ3ZCLFNBQVMsRUFBRTtnQkFDVDtvQkFDRSxPQUFPLEVBQUUsZ0NBQXdCO29CQUNqQyxRQUFRLEVBQUUsT0FBTztpQkFDbEI7Z0JBQ0Qsb0NBQWdCO2FBQ2pCO1lBQ0QsT0FBTyxFQUFFLENBQUMsb0NBQWdCLENBQUM7U0FDNUIsQ0FBQztJQUNKLENBQUM7SUFFRDs7O09BR0c7SUFDSCxNQUFNLENBQUMsWUFBWSxDQUFDLE9BQW9DO1FBQ3RELE9BQU87WUFDTCxNQUFNLEVBQUUsaUJBQWU7WUFDdkIsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPLElBQUksRUFBRTtZQUM5QixTQUFTLEVBQUU7Z0JBQ1QsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDO2dCQUNyQyxvQ0FBZ0I7YUFDakI7WUFDRCxPQUFPLEVBQUUsQ0FBQyxvQ0FBZ0IsQ0FBQztTQUM1QixDQUFDO0lBQ0osQ0FBQztJQUVPLE1BQU0sQ0FBQyxvQkFBb0IsQ0FDakMsT0FBb0M7UUFFcEMsSUFBSSxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUM7WUFDdkIsT0FBTztnQkFDTDtvQkFDRSxPQUFPLEVBQUUsZ0NBQXdCO29CQUNqQyxVQUFVLEVBQUUsT0FBTyxDQUFDLFVBQVU7b0JBQzlCLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTSxJQUFJLEVBQUU7aUJBQzdCO2FBQ0YsQ0FBQztRQUNKLENBQUM7UUFFRCxJQUFJLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNyQixPQUFPO2dCQUNMO29CQUNFLE9BQU8sRUFBRSxPQUFPLENBQUMsUUFBUTtvQkFDekIsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRO2lCQUMzQjtnQkFDRDtvQkFDRSxPQUFPLEVBQUUsZ0NBQXdCO29CQUNqQyxVQUFVLEVBQUUsS0FBSyxFQUFFLGNBQTZDLEVBQUUsRUFBRSxDQUNsRSxjQUFjLENBQUMsc0JBQXNCLEVBQUU7b0JBQ3pDLE1BQU0sRUFBRSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUM7aUJBQzNCO2FBQ0YsQ0FBQztRQUNKLENBQUM7UUFFRCxJQUFJLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN4QixPQUFPO2dCQUNMO29CQUNFLE9BQU8sRUFBRSxnQ0FBd0I7b0JBQ2pDLFVBQVUsRUFBRSxLQUFLLEVBQUUsY0FBNkMsRUFBRSxFQUFFLENBQ2xFLGNBQWMsQ0FBQyxzQkFBc0IsRUFBRTtvQkFDekMsTUFBTSxFQUFFLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQztpQkFDOUI7YUFDRixDQUFDO1FBQ0osQ0FBQztRQUVELE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztDQUNGLENBQUE7QUEzRVksMENBQWU7MEJBQWYsZUFBZTtJQUQzQixJQUFBLGVBQU0sRUFBQyxFQUFFLENBQUM7R0FDRSxlQUFlLENBMkUzQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IER5bmFtaWNNb2R1bGUsIE1vZHVsZSwgUHJvdmlkZXIgfSBmcm9tICdAbmVzdGpzL2NvbW1vbic7XG5pbXBvcnQgeyBNaWdyYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi9taWdyYXRpb24uc2VydmljZSc7XG5pbXBvcnQge1xuICBNSUdSQVRJT05fTU9EVUxFX09QVElPTlMsXG4gIE1pZ3JhdGlvbk1vZHVsZUFzeW5jT3B0aW9ucyxcbiAgTWlncmF0aW9uTW9kdWxlT3B0aW9ucyxcbiAgTWlncmF0aW9uTW9kdWxlT3B0aW9uc0ZhY3RvcnksXG59IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIE5lc3RKUyBtb2R1bGUgZm9yIFNRTCBTZXJ2ZXIgbWlncmF0aW9ucy5cbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gU3luY2hyb25vdXMgY29uZmlndXJhdGlvblxuICogTWlncmF0aW9uTW9kdWxlLmZvclJvb3Qoe1xuICogICBtaWdyYXRpb25zRGlyOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4vbWlncmF0aW9ucycpLFxuICogICBhdXRvUnVuOiB0cnVlLFxuICogICB2ZXJib3NlOiB0cnVlLFxuICogfSlcbiAqXG4gKiBAZXhhbXBsZVxuICogLy8gQXN5bmNocm9ub3VzIGNvbmZpZ3VyYXRpb24gd2l0aCBDb25maWdTZXJ2aWNlXG4gKiBNaWdyYXRpb25Nb2R1bGUuZm9yUm9vdEFzeW5jKHtcbiAqICAgaW1wb3J0czogW0NvbmZpZ01vZHVsZV0sXG4gKiAgIGluamVjdDogW0NvbmZpZ1NlcnZpY2VdLFxuICogICB1c2VGYWN0b3J5OiAoY29uZmlnU2VydmljZTogQ29uZmlnU2VydmljZSkgPT4gKHtcbiAqICAgICBtaWdyYXRpb25zRGlyOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4vbWlncmF0aW9ucycpLFxuICogICAgIGF1dG9SdW46IGNvbmZpZ1NlcnZpY2UuZ2V0PGJvb2xlYW4+KCdBVVRPX1JVTl9NSUdSQVRJT05TJywgZmFsc2UpLFxuICogICAgIHZlcmJvc2U6IHRydWUsXG4gKiAgIH0pLFxuICogfSlcbiAqL1xuQE1vZHVsZSh7fSlcbmV4cG9ydCBjbGFzcyBNaWdyYXRpb25Nb2R1bGUge1xuICAvKipcbiAgICogQ29uZmlndXJlIHRoZSBtaWdyYXRpb24gbW9kdWxlIHdpdGggc3RhdGljIG9wdGlvbnMuXG4gICAqL1xuICBzdGF0aWMgZm9yUm9vdChvcHRpb25zOiBNaWdyYXRpb25Nb2R1bGVPcHRpb25zKTogRHluYW1pY01vZHVsZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1vZHVsZTogTWlncmF0aW9uTW9kdWxlLFxuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiBNSUdSQVRJT05fTU9EVUxFX09QVElPTlMsXG4gICAgICAgICAgdXNlVmFsdWU6IG9wdGlvbnMsXG4gICAgICAgIH0sXG4gICAgICAgIE1pZ3JhdGlvblNlcnZpY2UsXG4gICAgICBdLFxuICAgICAgZXhwb3J0czogW01pZ3JhdGlvblNlcnZpY2VdLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQ29uZmlndXJlIHRoZSBtaWdyYXRpb24gbW9kdWxlIHdpdGggYXN5bmMgb3B0aW9ucy5cbiAgICogVXNlZnVsIHdoZW4gb3B0aW9ucyBkZXBlbmQgb24gQ29uZmlnU2VydmljZSBvciBvdGhlciBhc3luYyBwcm92aWRlcnMuXG4gICAqL1xuICBzdGF0aWMgZm9yUm9vdEFzeW5jKG9wdGlvbnM6IE1pZ3JhdGlvbk1vZHVsZUFzeW5jT3B0aW9ucyk6IER5bmFtaWNNb2R1bGUge1xuICAgIHJldHVybiB7XG4gICAgICBtb2R1bGU6IE1pZ3JhdGlvbk1vZHVsZSxcbiAgICAgIGltcG9ydHM6IG9wdGlvbnMuaW1wb3J0cyB8fCBbXSxcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICAuLi50aGlzLmNyZWF0ZUFzeW5jUHJvdmlkZXJzKG9wdGlvbnMpLFxuICAgICAgICBNaWdyYXRpb25TZXJ2aWNlLFxuICAgICAgXSxcbiAgICAgIGV4cG9ydHM6IFtNaWdyYXRpb25TZXJ2aWNlXSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgY3JlYXRlQXN5bmNQcm92aWRlcnMoXG4gICAgb3B0aW9uczogTWlncmF0aW9uTW9kdWxlQXN5bmNPcHRpb25zLFxuICApOiBQcm92aWRlcltdIHtcbiAgICBpZiAob3B0aW9ucy51c2VGYWN0b3J5KSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICB7XG4gICAgICAgICAgcHJvdmlkZTogTUlHUkFUSU9OX01PRFVMRV9PUFRJT05TLFxuICAgICAgICAgIHVzZUZhY3Rvcnk6IG9wdGlvbnMudXNlRmFjdG9yeSxcbiAgICAgICAgICBpbmplY3Q6IG9wdGlvbnMuaW5qZWN0IHx8IFtdLFxuICAgICAgICB9LFxuICAgICAgXTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucy51c2VDbGFzcykge1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAge1xuICAgICAgICAgIHByb3ZpZGU6IG9wdGlvbnMudXNlQ2xhc3MsXG4gICAgICAgICAgdXNlQ2xhc3M6IG9wdGlvbnMudXNlQ2xhc3MsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiBNSUdSQVRJT05fTU9EVUxFX09QVElPTlMsXG4gICAgICAgICAgdXNlRmFjdG9yeTogYXN5bmMgKG9wdGlvbnNGYWN0b3J5OiBNaWdyYXRpb25Nb2R1bGVPcHRpb25zRmFjdG9yeSkgPT5cbiAgICAgICAgICAgIG9wdGlvbnNGYWN0b3J5LmNyZWF0ZU1pZ3JhdGlvbk9wdGlvbnMoKSxcbiAgICAgICAgICBpbmplY3Q6IFtvcHRpb25zLnVzZUNsYXNzXSxcbiAgICAgICAgfSxcbiAgICAgIF07XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMudXNlRXhpc3RpbmcpIHtcbiAgICAgIHJldHVybiBbXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiBNSUdSQVRJT05fTU9EVUxFX09QVElPTlMsXG4gICAgICAgICAgdXNlRmFjdG9yeTogYXN5bmMgKG9wdGlvbnNGYWN0b3J5OiBNaWdyYXRpb25Nb2R1bGVPcHRpb25zRmFjdG9yeSkgPT5cbiAgICAgICAgICAgIG9wdGlvbnNGYWN0b3J5LmNyZWF0ZU1pZ3JhdGlvbk9wdGlvbnMoKSxcbiAgICAgICAgICBpbmplY3Q6IFtvcHRpb25zLnVzZUV4aXN0aW5nXSxcbiAgICAgICAgfSxcbiAgICAgIF07XG4gICAgfVxuXG4gICAgcmV0dXJuIFtdO1xuICB9XG59XG4iXX0=
78
+ //# sourceMappingURL=migration.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migration.module.js","sourceRoot":"","sources":["../../src/migration.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAiE;AACjE,2DAAuD;AACvD,mCAKiB;AA0BV,IAAM,eAAe,uBAArB,MAAM,eAAe;IAI1B,MAAM,CAAC,OAAO,CAAC,OAA+B;QAC5C,OAAO;YACL,MAAM,EAAE,iBAAe;YACvB,SAAS,EAAE;gBACT;oBACE,OAAO,EAAE,gCAAwB;oBACjC,QAAQ,EAAE,OAAO;iBAClB;gBACD,oCAAgB;aACjB;YACD,OAAO,EAAE,CAAC,oCAAgB,CAAC;SAC5B,CAAC;IACJ,CAAC;IAMD,MAAM,CAAC,YAAY,CAAC,OAAoC;QACtD,OAAO;YACL,MAAM,EAAE,iBAAe;YACvB,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE;YAC9B,SAAS,EAAE;gBACT,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC;gBACrC,oCAAgB;aACjB;YACD,OAAO,EAAE,CAAC,oCAAgB,CAAC;SAC5B,CAAC;IACJ,CAAC;IAEO,MAAM,CAAC,oBAAoB,CACjC,OAAoC;QAEpC,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACvB,OAAO;gBACL;oBACE,OAAO,EAAE,gCAAwB;oBACjC,UAAU,EAAE,OAAO,CAAC,UAAU;oBAC9B,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,EAAE;iBAC7B;aACF,CAAC;QACJ,CAAC;QAED,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YACrB,OAAO;gBACL;oBACE,OAAO,EAAE,OAAO,CAAC,QAAQ;oBACzB,QAAQ,EAAE,OAAO,CAAC,QAAQ;iBAC3B;gBACD;oBACE,OAAO,EAAE,gCAAwB;oBACjC,UAAU,EAAE,KAAK,EAAE,cAA6C,EAAE,EAAE,CAClE,cAAc,CAAC,sBAAsB,EAAE;oBACzC,MAAM,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC;iBAC3B;aACF,CAAC;QACJ,CAAC;QAED,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YACxB,OAAO;gBACL;oBACE,OAAO,EAAE,gCAAwB;oBACjC,UAAU,EAAE,KAAK,EAAE,cAA6C,EAAE,EAAE,CAClE,cAAc,CAAC,sBAAsB,EAAE;oBACzC,MAAM,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC;iBAC9B;aACF,CAAC;QACJ,CAAC;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;CACF,CAAA;AA3EY,0CAAe;0BAAf,eAAe;IAD3B,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,eAAe,CA2E3B"}
@@ -1,10 +1,6 @@
1
1
  import { OnModuleInit } from '@nestjs/common';
2
2
  import { DataSource } from 'typeorm';
3
3
  import { MigrationModuleOptions, MigrationResult, MigrationRunOptions } from './types';
4
- /**
5
- * NestJS service for running SQL Server migrations.
6
- * Automatically runs migrations on module initialization if autoRun is enabled.
7
- */
8
4
  export declare class MigrationService implements OnModuleInit {
9
5
  private readonly options;
10
6
  private readonly migrationCore;
@@ -12,17 +8,8 @@ export declare class MigrationService implements OnModuleInit {
12
8
  private readonly verbose;
13
9
  constructor(options: MigrationModuleOptions, dataSource: DataSource);
14
10
  onModuleInit(): Promise<void>;
15
- /**
16
- * Run all pending migrations.
17
- */
18
11
  runMigrations(options?: MigrationRunOptions): Promise<MigrationResult>;
19
- /**
20
- * Get list of pending migration files.
21
- */
22
12
  getPendingMigrations(): Promise<string[]>;
23
- /**
24
- * Get migration status information.
25
- */
26
13
  getStatus(): Promise<{
27
14
  total: number;
28
15
  applied: number;
@@ -17,10 +17,6 @@ const common_1 = require("@nestjs/common");
17
17
  const typeorm_1 = require("typeorm");
18
18
  const migration_core_1 = require("./migration-core");
19
19
  const types_1 = require("./types");
20
- /**
21
- * NestJS service for running SQL Server migrations.
22
- * Automatically runs migrations on module initialization if autoRun is enabled.
23
- */
24
20
  let MigrationService = class MigrationService {
25
21
  options;
26
22
  migrationCore;
@@ -46,24 +42,15 @@ let MigrationService = class MigrationService {
46
42
  }
47
43
  await this.runMigrations();
48
44
  }
49
- /**
50
- * Run all pending migrations.
51
- */
52
45
  async runMigrations(options) {
53
46
  return this.migrationCore.runMigrations({
54
47
  verbose: this.verbose,
55
48
  ...options,
56
49
  });
57
50
  }
58
- /**
59
- * Get list of pending migration files.
60
- */
61
51
  async getPendingMigrations() {
62
52
  return this.migrationCore.getPendingMigrations();
63
53
  }
64
- /**
65
- * Get migration status information.
66
- */
67
54
  async getStatus() {
68
55
  return this.migrationCore.getStatus();
69
56
  }
@@ -74,4 +61,4 @@ exports.MigrationService = MigrationService = __decorate([
74
61
  __param(0, (0, common_1.Inject)(types_1.MIGRATION_MODULE_OPTIONS)),
75
62
  __metadata("design:paramtypes", [Object, typeorm_1.DataSource])
76
63
  ], MigrationService);
77
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlncmF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbWlncmF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkNBQWtFO0FBQ2xFLHFDQUFxQztBQUNyQyxxREFBaUQ7QUFDakQsbUNBS2lCO0FBRWpCOzs7R0FHRztBQUVJLElBQU0sZ0JBQWdCLEdBQXRCLE1BQU0sZ0JBQWdCO0lBT1I7SUFORixhQUFhLENBQWdCO0lBQzdCLE9BQU8sQ0FBVTtJQUNqQixPQUFPLENBQVU7SUFFbEMsWUFFbUIsT0FBK0IsRUFDaEQsVUFBc0I7UUFETCxZQUFPLEdBQVAsT0FBTyxDQUF3QjtRQUdoRCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksOEJBQWEsQ0FBQyxVQUFVLEVBQUU7WUFDakQsYUFBYSxFQUFFLE9BQU8sQ0FBQyxhQUFhO1NBQ3JDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUM7UUFDeEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQztJQUN6QyxDQUFDO0lBRUQsS0FBSyxDQUFDLFlBQVk7UUFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNsQixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDakIsT0FBTyxDQUFDLEdBQUcsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO1lBQzlDLENBQUM7WUFDRCxPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2pCLE9BQU8sQ0FBQyxHQUFHLENBQUMsNEJBQTRCLENBQUMsQ0FBQztRQUM1QyxDQUFDO1FBRUQsTUFBTSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLGFBQWEsQ0FBQyxPQUE2QjtRQUMvQyxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDO1lBQ3RDLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztZQUNyQixHQUFHLE9BQU87U0FDWCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsb0JBQW9CO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0lBQ25ELENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxTQUFTO1FBTWIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3hDLENBQUM7Q0FDRixDQUFBO0FBNURZLDRDQUFnQjsyQkFBaEIsZ0JBQWdCO0lBRDVCLElBQUEsbUJBQVUsR0FBRTtJQU9SLFdBQUEsSUFBQSxlQUFNLEVBQUMsZ0NBQXdCLENBQUMsQ0FBQTs2Q0FFckIsb0JBQVU7R0FSYixnQkFBZ0IsQ0E0RDVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPbk1vZHVsZUluaXQgfSBmcm9tICdAbmVzdGpzL2NvbW1vbic7XG5pbXBvcnQgeyBEYXRhU291cmNlIH0gZnJvbSAndHlwZW9ybSc7XG5pbXBvcnQgeyBNaWdyYXRpb25Db3JlIH0gZnJvbSAnLi9taWdyYXRpb24tY29yZSc7XG5pbXBvcnQge1xuICBNSUdSQVRJT05fTU9EVUxFX09QVElPTlMsXG4gIE1pZ3JhdGlvbk1vZHVsZU9wdGlvbnMsXG4gIE1pZ3JhdGlvblJlc3VsdCxcbiAgTWlncmF0aW9uUnVuT3B0aW9ucyxcbn0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogTmVzdEpTIHNlcnZpY2UgZm9yIHJ1bm5pbmcgU1FMIFNlcnZlciBtaWdyYXRpb25zLlxuICogQXV0b21hdGljYWxseSBydW5zIG1pZ3JhdGlvbnMgb24gbW9kdWxlIGluaXRpYWxpemF0aW9uIGlmIGF1dG9SdW4gaXMgZW5hYmxlZC5cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE1pZ3JhdGlvblNlcnZpY2UgaW1wbGVtZW50cyBPbk1vZHVsZUluaXQge1xuICBwcml2YXRlIHJlYWRvbmx5IG1pZ3JhdGlvbkNvcmU6IE1pZ3JhdGlvbkNvcmU7XG4gIHByaXZhdGUgcmVhZG9ubHkgYXV0b1J1bjogYm9vbGVhbjtcbiAgcHJpdmF0ZSByZWFkb25seSB2ZXJib3NlOiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBJbmplY3QoTUlHUkFUSU9OX01PRFVMRV9PUFRJT05TKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczogTWlncmF0aW9uTW9kdWxlT3B0aW9ucyxcbiAgICBkYXRhU291cmNlOiBEYXRhU291cmNlLFxuICApIHtcbiAgICB0aGlzLm1pZ3JhdGlvbkNvcmUgPSBuZXcgTWlncmF0aW9uQ29yZShkYXRhU291cmNlLCB7XG4gICAgICBtaWdyYXRpb25zRGlyOiBvcHRpb25zLm1pZ3JhdGlvbnNEaXIsXG4gICAgfSk7XG4gICAgdGhpcy5hdXRvUnVuID0gb3B0aW9ucy5hdXRvUnVuID8/IGZhbHNlO1xuICAgIHRoaXMudmVyYm9zZSA9IG9wdGlvbnMudmVyYm9zZSA/PyB0cnVlO1xuICB9XG5cbiAgYXN5bmMgb25Nb2R1bGVJbml0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy5hdXRvUnVuKSB7XG4gICAgICBpZiAodGhpcy52ZXJib3NlKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdBdXRvIG1pZ3JhdGlvbnMgYXJlIGRpc2FibGVkJyk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudmVyYm9zZSkge1xuICAgICAgY29uc29sZS5sb2coJ0F1dG8tcnVubmluZyBtaWdyYXRpb25zLi4uJyk7XG4gICAgfVxuXG4gICAgYXdhaXQgdGhpcy5ydW5NaWdyYXRpb25zKCk7XG4gIH1cblxuICAvKipcbiAgICogUnVuIGFsbCBwZW5kaW5nIG1pZ3JhdGlvbnMuXG4gICAqL1xuICBhc3luYyBydW5NaWdyYXRpb25zKG9wdGlvbnM/OiBNaWdyYXRpb25SdW5PcHRpb25zKTogUHJvbWlzZTxNaWdyYXRpb25SZXN1bHQ+IHtcbiAgICByZXR1cm4gdGhpcy5taWdyYXRpb25Db3JlLnJ1bk1pZ3JhdGlvbnMoe1xuICAgICAgdmVyYm9zZTogdGhpcy52ZXJib3NlLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgbGlzdCBvZiBwZW5kaW5nIG1pZ3JhdGlvbiBmaWxlcy5cbiAgICovXG4gIGFzeW5jIGdldFBlbmRpbmdNaWdyYXRpb25zKCk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICByZXR1cm4gdGhpcy5taWdyYXRpb25Db3JlLmdldFBlbmRpbmdNaWdyYXRpb25zKCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IG1pZ3JhdGlvbiBzdGF0dXMgaW5mb3JtYXRpb24uXG4gICAqL1xuICBhc3luYyBnZXRTdGF0dXMoKTogUHJvbWlzZTx7XG4gICAgdG90YWw6IG51bWJlcjtcbiAgICBhcHBsaWVkOiBudW1iZXI7XG4gICAgcGVuZGluZzogbnVtYmVyO1xuICAgIHBlbmRpbmdGaWxlczogc3RyaW5nW107XG4gIH0+IHtcbiAgICByZXR1cm4gdGhpcy5taWdyYXRpb25Db3JlLmdldFN0YXR1cygpO1xuICB9XG59XG4iXX0=
64
+ //# sourceMappingURL=migration.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migration.service.js","sourceRoot":"","sources":["../../src/migration.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAkE;AAClE,qCAAqC;AACrC,qDAAiD;AACjD,mCAKiB;AAOV,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IAOR;IANF,aAAa,CAAgB;IAC7B,OAAO,CAAU;IACjB,OAAO,CAAU;IAElC,YAEmB,OAA+B,EAChD,UAAsB;QADL,YAAO,GAAP,OAAO,CAAwB;QAGhD,IAAI,CAAC,aAAa,GAAG,IAAI,8BAAa,CAAC,UAAU,EAAE;YACjD,aAAa,EAAE,OAAO,CAAC,aAAa;SACrC,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,KAAK,CAAC;QACxC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,YAAY;QAChB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;YAC9C,CAAC;YACD,OAAO;QACT,CAAC;QAED,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;QAC5C,CAAC;QAED,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;IAC7B,CAAC;IAKD,KAAK,CAAC,aAAa,CAAC,OAA6B;QAC/C,OAAO,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC;YACtC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,GAAG,OAAO;SACX,CAAC,CAAC;IACL,CAAC;IAKD,KAAK,CAAC,oBAAoB;QACxB,OAAO,IAAI,CAAC,aAAa,CAAC,oBAAoB,EAAE,CAAC;IACnD,CAAC;IAKD,KAAK,CAAC,SAAS;QAMb,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC;IACxC,CAAC;CACF,CAAA;AA5DY,4CAAgB;2BAAhB,gBAAgB;IAD5B,IAAA,mBAAU,GAAE;IAOR,WAAA,IAAA,eAAM,EAAC,gCAAwB,CAAC,CAAA;6CAErB,oBAAU;GARb,gBAAgB,CA4D5B"}
@@ -1,83 +1,42 @@
1
1
  import { ModuleMetadata, Type } from '@nestjs/common';
2
2
  export interface MigrationModuleOptions {
3
- /**
4
- * Path to the directory containing SQL migration files
5
- */
6
3
  migrationsDir: string;
7
- /**
8
- * Whether to automatically run migrations on module initialization
9
- * @default false
10
- */
11
4
  autoRun?: boolean;
12
- /**
13
- * Whether to log verbose output during migration execution
14
- * @default true
15
- */
16
5
  verbose?: boolean;
17
6
  }
18
7
  export interface MigrationModuleAsyncOptions extends Pick<ModuleMetadata, 'imports'> {
19
- /**
20
- * Factory function to create MigrationModuleOptions
21
- */
22
8
  useFactory: (...args: any[]) => Promise<MigrationModuleOptions> | MigrationModuleOptions;
23
- /**
24
- * Dependencies to inject into the factory function
25
- */
26
9
  inject?: any[];
27
- /**
28
- * Optional class to use for creating options
29
- */
30
10
  useClass?: Type<MigrationModuleOptionsFactory>;
31
- /**
32
- * Optional existing instance to use for options
33
- */
34
11
  useExisting?: Type<MigrationModuleOptionsFactory>;
35
12
  }
36
13
  export interface MigrationModuleOptionsFactory {
37
14
  createMigrationOptions(): Promise<MigrationModuleOptions> | MigrationModuleOptions;
38
15
  }
39
16
  export interface MigrationResult {
40
- /**
41
- * Whether the migration run was successful
42
- */
43
17
  success: boolean;
44
- /**
45
- * Total number of migration files found
46
- */
47
18
  totalMigrations: number;
48
- /**
49
- * Number of migrations already applied
50
- */
51
19
  appliedMigrations: number;
52
- /**
53
- * Number of pending migrations to apply
54
- */
55
20
  pendingMigrations: number;
56
- /**
57
- * Name of the failed migration file (if any)
58
- */
59
21
  failedMigration?: string;
60
- /**
61
- * Error object if migration failed
62
- */
63
22
  error?: any;
64
23
  }
65
24
  export interface MigrationRunOptions {
66
- /**
67
- * If true, only list pending migrations without applying them
68
- * @default false
69
- */
70
25
  dryRun?: boolean;
71
- /**
72
- * Whether to log verbose output
73
- * @default false
74
- */
75
26
  verbose?: boolean;
76
27
  }
77
28
  export interface MigrationCoreOptions {
78
- /**
79
- * Path to the directory containing SQL migration files
80
- */
81
29
  migrationsDir: string;
82
30
  }
83
31
  export declare const MIGRATION_MODULE_OPTIONS: unique symbol;
32
+ export interface AppliedMigration {
33
+ name: string;
34
+ content_hash: string;
35
+ run_on: Date;
36
+ }
37
+ export declare class HashMismatchError extends Error {
38
+ readonly migrationName: string;
39
+ readonly expectedHash: string;
40
+ readonly actualHash: string;
41
+ constructor(migrationName: string, expectedHash: string, actualHash: string);
42
+ }
package/dist/src/types.js CHANGED
@@ -1,5 +1,21 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MIGRATION_MODULE_OPTIONS = void 0;
3
+ exports.HashMismatchError = exports.MIGRATION_MODULE_OPTIONS = void 0;
4
4
  exports.MIGRATION_MODULE_OPTIONS = Symbol('MIGRATION_MODULE_OPTIONS');
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBeUdhLFFBQUEsd0JBQXdCLEdBQUcsTUFBTSxDQUFDLDBCQUEwQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNb2R1bGVNZXRhZGF0YSwgVHlwZSB9IGZyb20gJ0BuZXN0anMvY29tbW9uJztcblxuZXhwb3J0IGludGVyZmFjZSBNaWdyYXRpb25Nb2R1bGVPcHRpb25zIHtcbiAgLyoqXG4gICAqIFBhdGggdG8gdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIFNRTCBtaWdyYXRpb24gZmlsZXNcbiAgICovXG4gIG1pZ3JhdGlvbnNEaXI6IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciB0byBhdXRvbWF0aWNhbGx5IHJ1biBtaWdyYXRpb25zIG9uIG1vZHVsZSBpbml0aWFsaXphdGlvblxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgYXV0b1J1bj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gbG9nIHZlcmJvc2Ugb3V0cHV0IGR1cmluZyBtaWdyYXRpb24gZXhlY3V0aW9uXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHZlcmJvc2U/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1pZ3JhdGlvbk1vZHVsZUFzeW5jT3B0aW9uc1xuICBleHRlbmRzIFBpY2s8TW9kdWxlTWV0YWRhdGEsICdpbXBvcnRzJz4ge1xuICAvKipcbiAgICogRmFjdG9yeSBmdW5jdGlvbiB0byBjcmVhdGUgTWlncmF0aW9uTW9kdWxlT3B0aW9uc1xuICAgKi9cbiAgdXNlRmFjdG9yeTogKFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICkgPT4gUHJvbWlzZTxNaWdyYXRpb25Nb2R1bGVPcHRpb25zPiB8IE1pZ3JhdGlvbk1vZHVsZU9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIERlcGVuZGVuY2llcyB0byBpbmplY3QgaW50byB0aGUgZmFjdG9yeSBmdW5jdGlvblxuICAgKi9cbiAgaW5qZWN0PzogYW55W107XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIGNsYXNzIHRvIHVzZSBmb3IgY3JlYXRpbmcgb3B0aW9uc1xuICAgKi9cbiAgdXNlQ2xhc3M/OiBUeXBlPE1pZ3JhdGlvbk1vZHVsZU9wdGlvbnNGYWN0b3J5PjtcblxuICAvKipcbiAgICogT3B0aW9uYWwgZXhpc3RpbmcgaW5zdGFuY2UgdG8gdXNlIGZvciBvcHRpb25zXG4gICAqL1xuICB1c2VFeGlzdGluZz86IFR5cGU8TWlncmF0aW9uTW9kdWxlT3B0aW9uc0ZhY3Rvcnk+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1pZ3JhdGlvbk1vZHVsZU9wdGlvbnNGYWN0b3J5IHtcbiAgY3JlYXRlTWlncmF0aW9uT3B0aW9ucygpOlxuICAgIHwgUHJvbWlzZTxNaWdyYXRpb25Nb2R1bGVPcHRpb25zPlxuICAgIHwgTWlncmF0aW9uTW9kdWxlT3B0aW9ucztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNaWdyYXRpb25SZXN1bHQge1xuICAvKipcbiAgICogV2hldGhlciB0aGUgbWlncmF0aW9uIHJ1biB3YXMgc3VjY2Vzc2Z1bFxuICAgKi9cbiAgc3VjY2VzczogYm9vbGVhbjtcblxuICAvKipcbiAgICogVG90YWwgbnVtYmVyIG9mIG1pZ3JhdGlvbiBmaWxlcyBmb3VuZFxuICAgKi9cbiAgdG90YWxNaWdyYXRpb25zOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIE51bWJlciBvZiBtaWdyYXRpb25zIGFscmVhZHkgYXBwbGllZFxuICAgKi9cbiAgYXBwbGllZE1pZ3JhdGlvbnM6IG51bWJlcjtcblxuICAvKipcbiAgICogTnVtYmVyIG9mIHBlbmRpbmcgbWlncmF0aW9ucyB0byBhcHBseVxuICAgKi9cbiAgcGVuZGluZ01pZ3JhdGlvbnM6IG51bWJlcjtcblxuICAvKipcbiAgICogTmFtZSBvZiB0aGUgZmFpbGVkIG1pZ3JhdGlvbiBmaWxlIChpZiBhbnkpXG4gICAqL1xuICBmYWlsZWRNaWdyYXRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEVycm9yIG9iamVjdCBpZiBtaWdyYXRpb24gZmFpbGVkXG4gICAqL1xuICBlcnJvcj86IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNaWdyYXRpb25SdW5PcHRpb25zIHtcbiAgLyoqXG4gICAqIElmIHRydWUsIG9ubHkgbGlzdCBwZW5kaW5nIG1pZ3JhdGlvbnMgd2l0aG91dCBhcHBseWluZyB0aGVtXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBkcnlSdW4/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGxvZyB2ZXJib3NlIG91dHB1dFxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgdmVyYm9zZT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWlncmF0aW9uQ29yZU9wdGlvbnMge1xuICAvKipcbiAgICogUGF0aCB0byB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgU1FMIG1pZ3JhdGlvbiBmaWxlc1xuICAgKi9cbiAgbWlncmF0aW9uc0Rpcjogc3RyaW5nO1xufVxuXG5leHBvcnQgY29uc3QgTUlHUkFUSU9OX01PRFVMRV9PUFRJT05TID0gU3ltYm9sKCdNSUdSQVRJT05fTU9EVUxFX09QVElPTlMnKTtcbiJdfQ==
5
+ class HashMismatchError extends Error {
6
+ migrationName;
7
+ expectedHash;
8
+ actualHash;
9
+ constructor(migrationName, expectedHash, actualHash) {
10
+ super(`Migration file "${migrationName}" has been modified after being applied.\n` +
11
+ ` Expected hash: ${expectedHash}\n` +
12
+ ` Actual hash: ${actualHash}\n` +
13
+ `This is a critical error. Migration files must not be modified after being applied.`);
14
+ this.migrationName = migrationName;
15
+ this.expectedHash = expectedHash;
16
+ this.actualHash = actualHash;
17
+ this.name = 'HashMismatchError';
18
+ }
19
+ }
20
+ exports.HashMismatchError = HashMismatchError;
21
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":";;;AAyGa,QAAA,wBAAwB,GAAG,MAAM,CAAC,0BAA0B,CAAC,CAAC;AAyB3E,MAAa,iBAAkB,SAAQ,KAAK;IAExB;IACA;IACA;IAHlB,YACkB,aAAqB,EACrB,YAAoB,EACpB,UAAkB;QAElC,KAAK,CACH,mBAAmB,aAAa,4CAA4C;YAC1E,oBAAoB,YAAY,IAAI;YACpC,oBAAoB,UAAU,IAAI;YAClC,qFAAqF,CACxF,CAAC;QATc,kBAAa,GAAb,aAAa,CAAQ;QACrB,iBAAY,GAAZ,YAAY,CAAQ;QACpB,eAAU,GAAV,UAAU,CAAQ;QAQlC,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AAdD,8CAcC"}