@pristine-ts/mysql-cli 2.0.16
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/LICENSE +201 -0
- package/dist/lib/cjs/commands/commands.js +25 -0
- package/dist/lib/cjs/commands/commands.js.map +1 -0
- package/dist/lib/cjs/commands/mysql-migrate-create.command-options.js +37 -0
- package/dist/lib/cjs/commands/mysql-migrate-create.command-options.js.map +1 -0
- package/dist/lib/cjs/commands/mysql-migrate-create.command.js +120 -0
- package/dist/lib/cjs/commands/mysql-migrate-create.command.js.map +1 -0
- package/dist/lib/cjs/commands/mysql-migrate-status.command-options.js +27 -0
- package/dist/lib/cjs/commands/mysql-migrate-status.command-options.js.map +1 -0
- package/dist/lib/cjs/commands/mysql-migrate-status.command.js +104 -0
- package/dist/lib/cjs/commands/mysql-migrate-status.command.js.map +1 -0
- package/dist/lib/cjs/commands/mysql-migrate-verify.command-options.js +27 -0
- package/dist/lib/cjs/commands/mysql-migrate-verify.command-options.js.map +1 -0
- package/dist/lib/cjs/commands/mysql-migrate-verify.command.js +74 -0
- package/dist/lib/cjs/commands/mysql-migrate-verify.command.js.map +1 -0
- package/dist/lib/cjs/commands/mysql-migrate.command-options.js +41 -0
- package/dist/lib/cjs/commands/mysql-migrate.command-options.js.map +1 -0
- package/dist/lib/cjs/commands/mysql-migrate.command.js +86 -0
- package/dist/lib/cjs/commands/mysql-migrate.command.js.map +1 -0
- package/dist/lib/cjs/enums/enums.js +18 -0
- package/dist/lib/cjs/enums/enums.js.map +1 -0
- package/dist/lib/cjs/enums/migration-state.enum.js +28 -0
- package/dist/lib/cjs/enums/migration-state.enum.js.map +1 -0
- package/dist/lib/cjs/errors/errors.js +22 -0
- package/dist/lib/cjs/errors/errors.js.map +1 -0
- package/dist/lib/cjs/errors/migration-checksum-mismatch.error.js +24 -0
- package/dist/lib/cjs/errors/migration-checksum-mismatch.error.js.map +1 -0
- package/dist/lib/cjs/errors/migration-duplicate-name.error.js +21 -0
- package/dist/lib/cjs/errors/migration-duplicate-name.error.js.map +1 -0
- package/dist/lib/cjs/errors/migration-execution.error.js +21 -0
- package/dist/lib/cjs/errors/migration-execution.error.js.map +1 -0
- package/dist/lib/cjs/errors/migration-invalid-name.error.js +20 -0
- package/dist/lib/cjs/errors/migration-invalid-name.error.js.map +1 -0
- package/dist/lib/cjs/errors/migration-orphaned-record.error.js +22 -0
- package/dist/lib/cjs/errors/migration-orphaned-record.error.js.map +1 -0
- package/dist/lib/cjs/interfaces/interfaces.js +18 -0
- package/dist/lib/cjs/interfaces/interfaces.js.map +1 -0
- package/dist/lib/cjs/interfaces/mysql-migration.interface.js +3 -0
- package/dist/lib/cjs/interfaces/mysql-migration.interface.js.map +1 -0
- package/dist/lib/cjs/managers/managers.js +22 -0
- package/dist/lib/cjs/managers/managers.js.map +1 -0
- package/dist/lib/cjs/managers/mysql-migration-checksum.manager.js +35 -0
- package/dist/lib/cjs/managers/mysql-migration-checksum.manager.js.map +1 -0
- package/dist/lib/cjs/managers/mysql-migration-record.manager.js +96 -0
- package/dist/lib/cjs/managers/mysql-migration-record.manager.js.map +1 -0
- package/dist/lib/cjs/managers/mysql-migration-runner.manager.js +96 -0
- package/dist/lib/cjs/managers/mysql-migration-runner.manager.js.map +1 -0
- package/dist/lib/cjs/managers/mysql-migration-scaffold.manager.js +217 -0
- package/dist/lib/cjs/managers/mysql-migration-scaffold.manager.js.map +1 -0
- package/dist/lib/cjs/managers/mysql-migration.manager.js +261 -0
- package/dist/lib/cjs/managers/mysql-migration.manager.js.map +1 -0
- package/dist/lib/cjs/models/migration-apply-entry.model.js +11 -0
- package/dist/lib/cjs/models/migration-apply-entry.model.js.map +1 -0
- package/dist/lib/cjs/models/migration-apply-result.model.js +18 -0
- package/dist/lib/cjs/models/migration-apply-result.model.js.map +1 -0
- package/dist/lib/cjs/models/migration-plan-entry.model.js +11 -0
- package/dist/lib/cjs/models/migration-plan-entry.model.js.map +1 -0
- package/dist/lib/cjs/models/migration-plan.model.js +24 -0
- package/dist/lib/cjs/models/migration-plan.model.js.map +1 -0
- package/dist/lib/cjs/models/migration-record.model.js +12 -0
- package/dist/lib/cjs/models/migration-record.model.js.map +1 -0
- package/dist/lib/cjs/models/models.js +22 -0
- package/dist/lib/cjs/models/models.js.map +1 -0
- package/dist/lib/cjs/mysql-cli.configuration-keys.js +20 -0
- package/dist/lib/cjs/mysql-cli.configuration-keys.js.map +1 -0
- package/dist/lib/cjs/mysql-cli.module.js +63 -0
- package/dist/lib/cjs/mysql-cli.module.js.map +1 -0
- package/dist/lib/cjs/mysql-cli.module.keyname.js +5 -0
- package/dist/lib/cjs/mysql-cli.module.keyname.js.map +1 -0
- package/dist/lib/cjs/tsconfig.cjs.tsbuildinfo +1 -0
- package/dist/lib/esm/commands/commands.js +9 -0
- package/dist/lib/esm/commands/commands.js.map +1 -0
- package/dist/lib/esm/commands/mysql-migrate-create.command-options.js +33 -0
- package/dist/lib/esm/commands/mysql-migrate-create.command-options.js.map +1 -0
- package/dist/lib/esm/commands/mysql-migrate-create.command.js +114 -0
- package/dist/lib/esm/commands/mysql-migrate-create.command.js.map +1 -0
- package/dist/lib/esm/commands/mysql-migrate-status.command-options.js +23 -0
- package/dist/lib/esm/commands/mysql-migrate-status.command-options.js.map +1 -0
- package/dist/lib/esm/commands/mysql-migrate-status.command.js +101 -0
- package/dist/lib/esm/commands/mysql-migrate-status.command.js.map +1 -0
- package/dist/lib/esm/commands/mysql-migrate-verify.command-options.js +23 -0
- package/dist/lib/esm/commands/mysql-migrate-verify.command-options.js.map +1 -0
- package/dist/lib/esm/commands/mysql-migrate-verify.command.js +71 -0
- package/dist/lib/esm/commands/mysql-migrate-verify.command.js.map +1 -0
- package/dist/lib/esm/commands/mysql-migrate.command-options.js +37 -0
- package/dist/lib/esm/commands/mysql-migrate.command-options.js.map +1 -0
- package/dist/lib/esm/commands/mysql-migrate.command.js +83 -0
- package/dist/lib/esm/commands/mysql-migrate.command.js.map +1 -0
- package/dist/lib/esm/enums/enums.js +2 -0
- package/dist/lib/esm/enums/enums.js.map +1 -0
- package/dist/lib/esm/enums/migration-state.enum.js +25 -0
- package/dist/lib/esm/enums/migration-state.enum.js.map +1 -0
- package/dist/lib/esm/errors/errors.js +6 -0
- package/dist/lib/esm/errors/errors.js.map +1 -0
- package/dist/lib/esm/errors/migration-checksum-mismatch.error.js +20 -0
- package/dist/lib/esm/errors/migration-checksum-mismatch.error.js.map +1 -0
- package/dist/lib/esm/errors/migration-duplicate-name.error.js +17 -0
- package/dist/lib/esm/errors/migration-duplicate-name.error.js.map +1 -0
- package/dist/lib/esm/errors/migration-execution.error.js +17 -0
- package/dist/lib/esm/errors/migration-execution.error.js.map +1 -0
- package/dist/lib/esm/errors/migration-invalid-name.error.js +16 -0
- package/dist/lib/esm/errors/migration-invalid-name.error.js.map +1 -0
- package/dist/lib/esm/errors/migration-orphaned-record.error.js +18 -0
- package/dist/lib/esm/errors/migration-orphaned-record.error.js.map +1 -0
- package/dist/lib/esm/interfaces/interfaces.js +2 -0
- package/dist/lib/esm/interfaces/interfaces.js.map +1 -0
- package/dist/lib/esm/interfaces/mysql-migration.interface.js +2 -0
- package/dist/lib/esm/interfaces/mysql-migration.interface.js.map +1 -0
- package/dist/lib/esm/managers/managers.js +6 -0
- package/dist/lib/esm/managers/managers.js.map +1 -0
- package/dist/lib/esm/managers/mysql-migration-checksum.manager.js +32 -0
- package/dist/lib/esm/managers/mysql-migration-checksum.manager.js.map +1 -0
- package/dist/lib/esm/managers/mysql-migration-record.manager.js +93 -0
- package/dist/lib/esm/managers/mysql-migration-record.manager.js.map +1 -0
- package/dist/lib/esm/managers/mysql-migration-runner.manager.js +93 -0
- package/dist/lib/esm/managers/mysql-migration-runner.manager.js.map +1 -0
- package/dist/lib/esm/managers/mysql-migration-scaffold.manager.js +211 -0
- package/dist/lib/esm/managers/mysql-migration-scaffold.manager.js.map +1 -0
- package/dist/lib/esm/managers/mysql-migration.manager.js +258 -0
- package/dist/lib/esm/managers/mysql-migration.manager.js.map +1 -0
- package/dist/lib/esm/models/migration-apply-entry.model.js +7 -0
- package/dist/lib/esm/models/migration-apply-entry.model.js.map +1 -0
- package/dist/lib/esm/models/migration-apply-result.model.js +14 -0
- package/dist/lib/esm/models/migration-apply-result.model.js.map +1 -0
- package/dist/lib/esm/models/migration-plan-entry.model.js +7 -0
- package/dist/lib/esm/models/migration-plan-entry.model.js.map +1 -0
- package/dist/lib/esm/models/migration-plan.model.js +20 -0
- package/dist/lib/esm/models/migration-plan.model.js.map +1 -0
- package/dist/lib/esm/models/migration-record.model.js +8 -0
- package/dist/lib/esm/models/migration-record.model.js.map +1 -0
- package/dist/lib/esm/models/models.js +6 -0
- package/dist/lib/esm/models/models.js.map +1 -0
- package/dist/lib/esm/mysql-cli.configuration-keys.js +17 -0
- package/dist/lib/esm/mysql-cli.configuration-keys.js.map +1 -0
- package/dist/lib/esm/mysql-cli.module.js +46 -0
- package/dist/lib/esm/mysql-cli.module.js.map +1 -0
- package/dist/lib/esm/mysql-cli.module.keyname.js +2 -0
- package/dist/lib/esm/mysql-cli.module.keyname.js.map +1 -0
- package/dist/lib/esm/tsconfig.tsbuildinfo +1 -0
- package/dist/types/commands/commands.d.ts +8 -0
- package/dist/types/commands/mysql-migrate-create.command-options.d.ts +12 -0
- package/dist/types/commands/mysql-migrate-create.command.d.ts +32 -0
- package/dist/types/commands/mysql-migrate-status.command-options.d.ts +8 -0
- package/dist/types/commands/mysql-migrate-status.command.d.ts +25 -0
- package/dist/types/commands/mysql-migrate-verify.command-options.d.ts +8 -0
- package/dist/types/commands/mysql-migrate-verify.command.d.ts +23 -0
- package/dist/types/commands/mysql-migrate.command-options.d.ts +14 -0
- package/dist/types/commands/mysql-migrate.command.d.ts +23 -0
- package/dist/types/enums/enums.d.ts +1 -0
- package/dist/types/enums/migration-state.enum.d.ts +23 -0
- package/dist/types/errors/errors.d.ts +5 -0
- package/dist/types/errors/migration-checksum-mismatch.error.d.ts +14 -0
- package/dist/types/errors/migration-duplicate-name.error.d.ts +11 -0
- package/dist/types/errors/migration-execution.error.d.ts +12 -0
- package/dist/types/errors/migration-invalid-name.error.d.ts +10 -0
- package/dist/types/errors/migration-orphaned-record.error.d.ts +12 -0
- package/dist/types/interfaces/interfaces.d.ts +1 -0
- package/dist/types/interfaces/mysql-migration.interface.d.ts +40 -0
- package/dist/types/managers/managers.d.ts +5 -0
- package/dist/types/managers/mysql-migration-checksum.manager.d.ts +15 -0
- package/dist/types/managers/mysql-migration-record.manager.d.ts +22 -0
- package/dist/types/managers/mysql-migration-runner.manager.d.ts +16 -0
- package/dist/types/managers/mysql-migration-scaffold.manager.d.ts +40 -0
- package/dist/types/managers/mysql-migration.manager.d.ts +41 -0
- package/dist/types/models/migration-apply-entry.model.d.ts +9 -0
- package/dist/types/models/migration-apply-result.model.d.ts +14 -0
- package/dist/types/models/migration-plan-entry.model.d.ts +15 -0
- package/dist/types/models/migration-plan.model.d.ts +14 -0
- package/dist/types/models/migration-record.model.d.ts +12 -0
- package/dist/types/models/models.d.ts +5 -0
- package/dist/types/mysql-cli.configuration-keys.d.ts +29 -0
- package/dist/types/mysql-cli.module.d.ts +10 -0
- package/dist/types/mysql-cli.module.keyname.d.ts +1 -0
- package/package.json +75 -0
- package/readme.md +195 -0
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
import "reflect-metadata";
|
|
11
|
+
import { IsNotEmpty, IsOptional, IsString } from "@pristine-ts/class-validator";
|
|
12
|
+
import { commandParameter } from "@pristine-ts/cli";
|
|
13
|
+
/**
|
|
14
|
+
* Flags for `pristine mysql:create --name <name> [--config <keyname>]`.
|
|
15
|
+
*
|
|
16
|
+
* `name` is the human-readable description (e.g. `add-products-table`). The scaffold
|
|
17
|
+
* slugifies it, prepends the next sequential number, and writes the `.ts` file. It is
|
|
18
|
+
* required; when it isn't passed and the terminal is interactive, the CLI asks for it.
|
|
19
|
+
*/
|
|
20
|
+
export class MysqlMigrateCreateCommandOptions {
|
|
21
|
+
}
|
|
22
|
+
__decorate([
|
|
23
|
+
commandParameter({ question: "Migration name (e.g. add-products-table)?" }),
|
|
24
|
+
IsString(),
|
|
25
|
+
IsNotEmpty(),
|
|
26
|
+
__metadata("design:type", String)
|
|
27
|
+
], MysqlMigrateCreateCommandOptions.prototype, "name", void 0);
|
|
28
|
+
__decorate([
|
|
29
|
+
IsOptional(),
|
|
30
|
+
IsString(),
|
|
31
|
+
__metadata("design:type", String)
|
|
32
|
+
], MysqlMigrateCreateCommandOptions.prototype, "config", void 0);
|
|
33
|
+
//# sourceMappingURL=mysql-migrate-create.command-options.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mysql-migrate-create.command-options.js","sourceRoot":"","sources":["../../../../src/commands/mysql-migrate-create.command-options.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAC,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAC,MAAM,8BAA8B,CAAC;AAC9E,OAAO,EAAC,gBAAgB,EAAC,MAAM,kBAAkB,CAAC;AAElD;;;;;;GAMG;AACH,MAAM,OAAO,gCAAgC;CAS5C;AALC;IAHC,gBAAgB,CAAC,EAAC,QAAQ,EAAE,2CAA2C,EAAC,CAAC;IACzE,QAAQ,EAAE;IACV,UAAU,EAAE;;8DACC;AAId;IAFC,UAAU,EAAE;IACZ,QAAQ,EAAE;;gEACK"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
11
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
12
|
+
};
|
|
13
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
14
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
15
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
16
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
17
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
18
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
19
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
20
|
+
});
|
|
21
|
+
};
|
|
22
|
+
import path from "path";
|
|
23
|
+
import { ExitCode, injectConfig, moduleScoped, ServiceDefinitionTagEnum, tag } from "@pristine-ts/common";
|
|
24
|
+
import { inject, injectable } from "tsyringe";
|
|
25
|
+
import { CliOutput } from "@pristine-ts/cli";
|
|
26
|
+
import { MysqlCliModuleKeyname } from "../mysql-cli.module.keyname";
|
|
27
|
+
import { MysqlCliConfigurationKeys } from "../mysql-cli.configuration-keys";
|
|
28
|
+
import { MysqlMigrationScaffoldManager } from "../managers/mysql-migration-scaffold.manager";
|
|
29
|
+
import { MysqlMigrateCreateCommandOptions } from "./mysql-migrate-create.command-options";
|
|
30
|
+
/**
|
|
31
|
+
* `pristine mysql:create --name <name> [--config <keyname>]`
|
|
32
|
+
*
|
|
33
|
+
* Scaffolds a new `.sql-migrations.ts` file under the configured scaffold path
|
|
34
|
+
* (`pristine.mysql-cli.scaffold.path`, default `src/sql-migrations`). When the
|
|
35
|
+
* config key `pristine.mysql-cli.scaffold.barrelPath` is set, splices the new
|
|
36
|
+
* import and class reference into that file between the marker comments
|
|
37
|
+
* `<pristine:migration-imports:start/end>` and `<pristine:migration-services:start/end>`.
|
|
38
|
+
*
|
|
39
|
+
* Numbering is sequential: the scaffold scans the target directory for files
|
|
40
|
+
* matching `<digits>-<slug>.sql-migrations.ts`, picks `max + 1`, pads to the
|
|
41
|
+
* existing width (default 2). If you cross 99, do a one-time rename of the
|
|
42
|
+
* existing files to 3-digit width and the scaffold respects it going forward.
|
|
43
|
+
*/
|
|
44
|
+
let MysqlMigrateCreateCommand = class MysqlMigrateCreateCommand {
|
|
45
|
+
constructor(scaffoldPath, scaffoldBarrelPath, scaffoldManager, cliOutput, logHandler) {
|
|
46
|
+
this.scaffoldPath = scaffoldPath;
|
|
47
|
+
this.scaffoldBarrelPath = scaffoldBarrelPath;
|
|
48
|
+
this.scaffoldManager = scaffoldManager;
|
|
49
|
+
this.cliOutput = cliOutput;
|
|
50
|
+
this.logHandler = logHandler;
|
|
51
|
+
this.optionsType = MysqlMigrateCreateCommandOptions;
|
|
52
|
+
this.name = "mysql:create";
|
|
53
|
+
this.description = "Scaffold a new SQL migration class with the next sequential number.";
|
|
54
|
+
}
|
|
55
|
+
run(args) {
|
|
56
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
57
|
+
// `name` is a required, validated parameter — by the time `run` is reached it has been
|
|
58
|
+
// supplied on the command line or asked for interactively (see its `@commandParameter`).
|
|
59
|
+
const descriptiveName = args.name;
|
|
60
|
+
const projectRoot = process.cwd();
|
|
61
|
+
const absoluteScaffoldPath = path.resolve(projectRoot, this.scaffoldPath);
|
|
62
|
+
const absoluteBarrelPath = this.scaffoldBarrelPath.length > 0
|
|
63
|
+
? path.resolve(projectRoot, this.scaffoldBarrelPath)
|
|
64
|
+
: undefined;
|
|
65
|
+
try {
|
|
66
|
+
const result = yield this.scaffoldManager.create({
|
|
67
|
+
scaffoldPath: absoluteScaffoldPath,
|
|
68
|
+
descriptiveName,
|
|
69
|
+
barrelPath: absoluteBarrelPath,
|
|
70
|
+
configUniqueKeynames: args.config !== undefined ? [args.config] : undefined,
|
|
71
|
+
});
|
|
72
|
+
this.cliOutput.writeLine(`✓ Created ${path.relative(projectRoot, result.filePath)}`);
|
|
73
|
+
if (result.barrelUpdated) {
|
|
74
|
+
this.cliOutput.writeLine(`✓ Updated ${path.relative(projectRoot, absoluteBarrelPath)}`);
|
|
75
|
+
}
|
|
76
|
+
else if (absoluteBarrelPath !== undefined) {
|
|
77
|
+
this.cliOutput.writeLine(`! Barrel not auto-edited at ${path.relative(projectRoot, absoluteBarrelPath)} — see warnings above.`);
|
|
78
|
+
this.printManualInstructions(result.className, result.migrationName);
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
this.cliOutput.writeLine("");
|
|
82
|
+
this.printManualInstructions(result.className, result.migrationName);
|
|
83
|
+
}
|
|
84
|
+
return ExitCode.Success;
|
|
85
|
+
}
|
|
86
|
+
catch (error) {
|
|
87
|
+
this.logHandler.error("mysql:create failed.", { highlights: { error: error.message } });
|
|
88
|
+
return ExitCode.Error;
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
printManualInstructions(className, migrationName) {
|
|
93
|
+
this.cliOutput.writeLine("Next step: register the migration with the kernel. Add to your migrations module:");
|
|
94
|
+
this.cliOutput.writeLine("");
|
|
95
|
+
this.cliOutput.writeLine(` import {${className}} from "./${migrationName}.sql-migrations";`);
|
|
96
|
+
this.cliOutput.writeLine("");
|
|
97
|
+
this.cliOutput.writeLine(` importServices: [..., ${className}],`);
|
|
98
|
+
this.cliOutput.writeLine("");
|
|
99
|
+
this.cliOutput.writeLine("Tip: set `pristine.mysql-cli.scaffold.barrelPath` in pristine.config.ts to have " +
|
|
100
|
+
"this command auto-edit your migrations module on future scaffolds.");
|
|
101
|
+
}
|
|
102
|
+
};
|
|
103
|
+
MysqlMigrateCreateCommand = __decorate([
|
|
104
|
+
tag(ServiceDefinitionTagEnum.Command),
|
|
105
|
+
moduleScoped(MysqlCliModuleKeyname),
|
|
106
|
+
injectable(),
|
|
107
|
+
__param(0, injectConfig(MysqlCliConfigurationKeys.ScaffoldPath)),
|
|
108
|
+
__param(1, injectConfig(MysqlCliConfigurationKeys.ScaffoldBarrelPath)),
|
|
109
|
+
__param(4, inject("LogHandlerInterface")),
|
|
110
|
+
__metadata("design:paramtypes", [String, String, MysqlMigrationScaffoldManager,
|
|
111
|
+
CliOutput, Object])
|
|
112
|
+
], MysqlMigrateCreateCommand);
|
|
113
|
+
export { MysqlMigrateCreateCommand };
|
|
114
|
+
//# sourceMappingURL=mysql-migrate-create.command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mysql-migrate-create.command.js","sourceRoot":"","sources":["../../../../src/commands/mysql-migrate-create.command.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAC,QAAQ,EAAE,YAAY,EAAE,YAAY,EAAE,wBAAwB,EAAE,GAAG,EAAC,MAAM,qBAAqB,CAAC;AACxG,OAAO,EAAC,MAAM,EAAE,UAAU,EAAC,MAAM,UAAU,CAAC;AAE5C,OAAO,EAAmB,SAAS,EAAC,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAC,qBAAqB,EAAC,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAC,yBAAyB,EAAC,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAC,6BAA6B,EAAC,MAAM,8CAA8C,CAAC;AAC3F,OAAO,EAAC,gCAAgC,EAAC,MAAM,wCAAwC,CAAC;AAExF;;;;;;;;;;;;;GAaG;AAII,IAAM,yBAAyB,GAA/B,MAAM,yBAAyB;IAKpC,YACwD,YAAqC,EAC/B,kBAA2C,EACtF,eAA8C,EAC9C,SAAoB,EACN,UAAgD;QAJR,iBAAY,GAAZ,YAAY,CAAQ;QACd,uBAAkB,GAAlB,kBAAkB,CAAQ;QACtF,oBAAe,GAAf,eAAe,CAA+B;QAC9C,cAAS,GAAT,SAAS,CAAW;QACW,eAAU,GAAV,UAAU,CAAqB;QATjF,gBAAW,GAAG,gCAAgC,CAAC;QAC/C,SAAI,GAAG,cAAc,CAAC;QACtB,gBAAW,GAAG,qEAAqE,CAAC;IASpF,CAAC;IAEY,GAAG,CAAC,IAAsC;;YACrD,uFAAuF;YACvF,yFAAyF;YACzF,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC;YAElC,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;YAClC,MAAM,oBAAoB,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YAC1E,MAAM,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC;gBAC3D,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,kBAAkB,CAAC;gBACpD,CAAC,CAAC,SAAS,CAAC;YAEd,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;oBAC/C,YAAY,EAAE,oBAAoB;oBAClC,eAAe;oBACf,UAAU,EAAE,kBAAkB;oBAC9B,oBAAoB,EAAE,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;iBAC5E,CAAC,CAAC;gBAEH,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,aAAa,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;gBACrF,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;oBACzB,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,aAAa,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,kBAAmB,CAAC,EAAE,CAAC,CAAC;gBAC3F,CAAC;qBAAM,IAAI,kBAAkB,KAAK,SAAS,EAAE,CAAC;oBAC5C,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,+BAA+B,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,kBAAkB,CAAC,wBAAwB,CAAC,CAAC;oBAChI,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;gBACvE,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;oBAC7B,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;gBACvE,CAAC;gBAED,OAAO,QAAQ,CAAC,OAAO,CAAC;YAC1B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,sBAAsB,EAAE,EAAC,UAAU,EAAE,EAAC,KAAK,EAAG,KAAe,CAAC,OAAO,EAAC,EAAC,CAAC,CAAC;gBAC/F,OAAO,QAAQ,CAAC,KAAK,CAAC;YACxB,CAAC;QACH,CAAC;KAAA;IAEO,uBAAuB,CAAC,SAAiB,EAAE,aAAqB;QACtE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,mFAAmF,CAAC,CAAC;QAC9G,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC7B,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,aAAa,SAAS,aAAa,aAAa,mBAAmB,CAAC,CAAC;QAC9F,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC7B,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,2BAA2B,SAAS,IAAI,CAAC,CAAC;QACnE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC7B,IAAI,CAAC,SAAS,CAAC,SAAS,CACtB,kFAAkF;YAClF,oEAAoE,CACrE,CAAC;IACJ,CAAC;CACF,CAAA;AA/DY,yBAAyB;IAHrC,GAAG,CAAC,wBAAwB,CAAC,OAAO,CAAC;IACrC,YAAY,CAAC,qBAAqB,CAAC;IACnC,UAAU,EAAE;IAOR,WAAA,YAAY,CAAC,yBAAyB,CAAC,YAAY,CAAC,CAAA;IACpD,WAAA,YAAY,CAAC,yBAAyB,CAAC,kBAAkB,CAAC,CAAA;IAG1D,WAAA,MAAM,CAAC,qBAAqB,CAAC,CAAA;qDAFI,6BAA6B;QACnC,SAAS;GAT5B,yBAAyB,CA+DrC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
import "reflect-metadata";
|
|
11
|
+
import { IsOptional, IsString } from "@pristine-ts/class-validator";
|
|
12
|
+
/**
|
|
13
|
+
* Flags for `pristine mysql:status [--config <keyname>]`. Status is informational
|
|
14
|
+
* and always exits 0 — for a CI gate that fails on drift, use `mysql:verify`.
|
|
15
|
+
*/
|
|
16
|
+
export class MysqlMigrateStatusCommandOptions {
|
|
17
|
+
}
|
|
18
|
+
__decorate([
|
|
19
|
+
IsOptional(),
|
|
20
|
+
IsString(),
|
|
21
|
+
__metadata("design:type", String)
|
|
22
|
+
], MysqlMigrateStatusCommandOptions.prototype, "config", void 0);
|
|
23
|
+
//# sourceMappingURL=mysql-migrate-status.command-options.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mysql-migrate-status.command-options.js","sourceRoot":"","sources":["../../../../src/commands/mysql-migrate-status.command-options.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAC,UAAU,EAAE,QAAQ,EAAC,MAAM,8BAA8B,CAAC;AAElE;;;GAGG;AACH,MAAM,OAAO,gCAAgC;CAI5C;AADC;IAFC,UAAU,EAAE;IACZ,QAAQ,EAAE;;gEACK"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
11
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
12
|
+
};
|
|
13
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
14
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
15
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
16
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
17
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
18
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
19
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
20
|
+
});
|
|
21
|
+
};
|
|
22
|
+
var MysqlMigrateStatusCommand_1;
|
|
23
|
+
import { ExitCode, moduleScoped, ServiceDefinitionTagEnum, tag } from "@pristine-ts/common";
|
|
24
|
+
import { inject, injectable } from "tsyringe";
|
|
25
|
+
import { CliOutput } from "@pristine-ts/cli";
|
|
26
|
+
import { MysqlCliModuleKeyname } from "../mysql-cli.module.keyname";
|
|
27
|
+
import { MysqlMigrationManager } from "../managers/mysql-migration.manager";
|
|
28
|
+
import { MigrationStateEnum } from "../enums/migration-state.enum";
|
|
29
|
+
import { MysqlMigrateStatusCommandOptions } from "./mysql-migrate-status.command-options";
|
|
30
|
+
/**
|
|
31
|
+
* `pristine mysql:status [--config <keyname>]`
|
|
32
|
+
*
|
|
33
|
+
* Prints the disk-vs-database diff. Reports each migration as Pending, Applied,
|
|
34
|
+
* Modified, or Orphaned. Informational only — always exits 0. Use `mysql:verify`
|
|
35
|
+
* to fail on drift.
|
|
36
|
+
*/
|
|
37
|
+
let MysqlMigrateStatusCommand = MysqlMigrateStatusCommand_1 = class MysqlMigrateStatusCommand {
|
|
38
|
+
constructor(migrationManager, cliOutput, logHandler) {
|
|
39
|
+
this.migrationManager = migrationManager;
|
|
40
|
+
this.cliOutput = cliOutput;
|
|
41
|
+
this.logHandler = logHandler;
|
|
42
|
+
this.optionsType = MysqlMigrateStatusCommandOptions;
|
|
43
|
+
this.name = "mysql:status";
|
|
44
|
+
this.description = "Show the disk-vs-database status of MySQL migrations.";
|
|
45
|
+
}
|
|
46
|
+
run(args) {
|
|
47
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
48
|
+
var _a;
|
|
49
|
+
const configUniqueKeyname = (_a = args.config) !== null && _a !== void 0 ? _a : MysqlMigrateStatusCommand_1.DefaultConfigKeyname;
|
|
50
|
+
try {
|
|
51
|
+
const plan = yield this.migrationManager.status(configUniqueKeyname);
|
|
52
|
+
this.cliOutput.writeLine(`config: ${plan.configUniqueKeyname} table: ${plan.tableName}`);
|
|
53
|
+
for (const entry of plan.entries) {
|
|
54
|
+
const label = this.formatState(entry.state);
|
|
55
|
+
const suffix = this.formatSuffix(entry);
|
|
56
|
+
this.cliOutput.writeLine(` ${label} ${entry.name}${suffix}`);
|
|
57
|
+
}
|
|
58
|
+
this.cliOutput.writeLine(`Summary: ${plan.countByState(MigrationStateEnum.Pending)} pending, ` +
|
|
59
|
+
`${plan.countByState(MigrationStateEnum.Applied)} applied, ` +
|
|
60
|
+
`${plan.countByState(MigrationStateEnum.Modified)} modified, ` +
|
|
61
|
+
`${plan.countByState(MigrationStateEnum.Orphaned)} orphaned`);
|
|
62
|
+
return ExitCode.Success;
|
|
63
|
+
}
|
|
64
|
+
catch (error) {
|
|
65
|
+
this.logHandler.error("mysql:status failed.", { highlights: { error: error.message } });
|
|
66
|
+
return ExitCode.Error;
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
formatState(state) {
|
|
71
|
+
switch (state) {
|
|
72
|
+
case MigrationStateEnum.Pending: return "Pending ";
|
|
73
|
+
case MigrationStateEnum.Applied: return "Applied ";
|
|
74
|
+
case MigrationStateEnum.Modified: return "Modified";
|
|
75
|
+
case MigrationStateEnum.Orphaned: return "Orphaned";
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
formatSuffix(entry) {
|
|
79
|
+
if (entry.state === MigrationStateEnum.Applied && entry.appliedAt !== undefined) {
|
|
80
|
+
return ` (applied ${entry.appliedAt.toISOString()})`;
|
|
81
|
+
}
|
|
82
|
+
if (entry.state === MigrationStateEnum.Modified) {
|
|
83
|
+
return ` (checksum drift)`;
|
|
84
|
+
}
|
|
85
|
+
if (entry.state === MigrationStateEnum.Orphaned) {
|
|
86
|
+
return ` (in DB, not registered)`;
|
|
87
|
+
}
|
|
88
|
+
return "";
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
MysqlMigrateStatusCommand.DefaultConfigKeyname = "__default__";
|
|
92
|
+
MysqlMigrateStatusCommand = MysqlMigrateStatusCommand_1 = __decorate([
|
|
93
|
+
tag(ServiceDefinitionTagEnum.Command),
|
|
94
|
+
moduleScoped(MysqlCliModuleKeyname),
|
|
95
|
+
injectable(),
|
|
96
|
+
__param(2, inject("LogHandlerInterface")),
|
|
97
|
+
__metadata("design:paramtypes", [MysqlMigrationManager,
|
|
98
|
+
CliOutput, Object])
|
|
99
|
+
], MysqlMigrateStatusCommand);
|
|
100
|
+
export { MysqlMigrateStatusCommand };
|
|
101
|
+
//# sourceMappingURL=mysql-migrate-status.command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mysql-migrate-status.command.js","sourceRoot":"","sources":["../../../../src/commands/mysql-migrate-status.command.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
import "reflect-metadata";
|
|
11
|
+
import { IsOptional, IsString } from "@pristine-ts/class-validator";
|
|
12
|
+
/**
|
|
13
|
+
* Flags for `pristine mysql:verify [--config <keyname>]`. Verify exits non-zero
|
|
14
|
+
* when any Modified or Orphaned entries are detected; designed for CI gates.
|
|
15
|
+
*/
|
|
16
|
+
export class MysqlMigrateVerifyCommandOptions {
|
|
17
|
+
}
|
|
18
|
+
__decorate([
|
|
19
|
+
IsOptional(),
|
|
20
|
+
IsString(),
|
|
21
|
+
__metadata("design:type", String)
|
|
22
|
+
], MysqlMigrateVerifyCommandOptions.prototype, "config", void 0);
|
|
23
|
+
//# sourceMappingURL=mysql-migrate-verify.command-options.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mysql-migrate-verify.command-options.js","sourceRoot":"","sources":["../../../../src/commands/mysql-migrate-verify.command-options.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAC,UAAU,EAAE,QAAQ,EAAC,MAAM,8BAA8B,CAAC;AAElE;;;GAGG;AACH,MAAM,OAAO,gCAAgC;CAI5C;AADC;IAFC,UAAU,EAAE;IACZ,QAAQ,EAAE;;gEACK"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
11
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
12
|
+
};
|
|
13
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
14
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
15
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
16
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
17
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
18
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
19
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
20
|
+
});
|
|
21
|
+
};
|
|
22
|
+
var MysqlMigrateVerifyCommand_1;
|
|
23
|
+
import { ExitCode, moduleScoped, ServiceDefinitionTagEnum, tag } from "@pristine-ts/common";
|
|
24
|
+
import { inject, injectable } from "tsyringe";
|
|
25
|
+
import { CliOutput } from "@pristine-ts/cli";
|
|
26
|
+
import { MysqlCliModuleKeyname } from "../mysql-cli.module.keyname";
|
|
27
|
+
import { MysqlMigrationManager } from "../managers/mysql-migration.manager";
|
|
28
|
+
import { MysqlMigrateVerifyCommandOptions } from "./mysql-migrate-verify.command-options";
|
|
29
|
+
/**
|
|
30
|
+
* `pristine mysql:verify [--config <keyname>]`
|
|
31
|
+
*
|
|
32
|
+
* Same scan as `mysql:status`, but exits non-zero if any Modified or Orphaned
|
|
33
|
+
* entries exist. Designed for CI gates: a clean exit means the database and the
|
|
34
|
+
* registered migrations are in agreement.
|
|
35
|
+
*/
|
|
36
|
+
let MysqlMigrateVerifyCommand = MysqlMigrateVerifyCommand_1 = class MysqlMigrateVerifyCommand {
|
|
37
|
+
constructor(migrationManager, cliOutput, logHandler) {
|
|
38
|
+
this.migrationManager = migrationManager;
|
|
39
|
+
this.cliOutput = cliOutput;
|
|
40
|
+
this.logHandler = logHandler;
|
|
41
|
+
this.optionsType = MysqlMigrateVerifyCommandOptions;
|
|
42
|
+
this.name = "mysql:verify";
|
|
43
|
+
this.description = "Verify that all applied migrations match disk (exits non-zero on drift).";
|
|
44
|
+
}
|
|
45
|
+
run(args) {
|
|
46
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
47
|
+
var _a;
|
|
48
|
+
const configUniqueKeyname = (_a = args.config) !== null && _a !== void 0 ? _a : MysqlMigrateVerifyCommand_1.DefaultConfigKeyname;
|
|
49
|
+
try {
|
|
50
|
+
yield this.migrationManager.verify(configUniqueKeyname);
|
|
51
|
+
this.cliOutput.writeLine(`mysql:verify config=${configUniqueKeyname} OK`);
|
|
52
|
+
return ExitCode.Success;
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
this.logHandler.error("mysql:verify failed.", { highlights: { error: error.message } });
|
|
56
|
+
return ExitCode.Error;
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
MysqlMigrateVerifyCommand.DefaultConfigKeyname = "__default__";
|
|
62
|
+
MysqlMigrateVerifyCommand = MysqlMigrateVerifyCommand_1 = __decorate([
|
|
63
|
+
tag(ServiceDefinitionTagEnum.Command),
|
|
64
|
+
moduleScoped(MysqlCliModuleKeyname),
|
|
65
|
+
injectable(),
|
|
66
|
+
__param(2, inject("LogHandlerInterface")),
|
|
67
|
+
__metadata("design:paramtypes", [MysqlMigrationManager,
|
|
68
|
+
CliOutput, Object])
|
|
69
|
+
], MysqlMigrateVerifyCommand);
|
|
70
|
+
export { MysqlMigrateVerifyCommand };
|
|
71
|
+
//# sourceMappingURL=mysql-migrate-verify.command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mysql-migrate-verify.command.js","sourceRoot":"","sources":["../../../../src/commands/mysql-migrate-verify.command.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAC,QAAQ,EAAE,YAAY,EAAE,wBAAwB,EAAE,GAAG,EAAC,MAAM,qBAAqB,CAAC;AAC1F,OAAO,EAAC,MAAM,EAAE,UAAU,EAAC,MAAM,UAAU,CAAC;AAE5C,OAAO,EAAmB,SAAS,EAAC,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAC,qBAAqB,EAAC,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAC,qBAAqB,EAAC,MAAM,qCAAqC,CAAC;AAC1E,OAAO,EAAC,gCAAgC,EAAC,MAAM,wCAAwC,CAAC;AAExF;;;;;;GAMG;AAII,IAAM,yBAAyB,iCAA/B,MAAM,yBAAyB;IAOpC,YACmB,gBAAuC,EACvC,SAAoB,EACN,UAAgD;QAF9D,qBAAgB,GAAhB,gBAAgB,CAAuB;QACvC,cAAS,GAAT,SAAS,CAAW;QACW,eAAU,GAAV,UAAU,CAAqB;QATjF,gBAAW,GAAG,gCAAgC,CAAC;QAC/C,SAAI,GAAG,cAAc,CAAC;QACtB,gBAAW,GAAG,0EAA0E,CAAC;IASzF,CAAC;IAEY,GAAG,CAAC,IAAsC;;;YACrD,MAAM,mBAAmB,GAAG,MAAA,IAAI,CAAC,MAAM,mCAAI,2BAAyB,CAAC,oBAAoB,CAAC;YAE1F,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;gBACxD,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,wBAAwB,mBAAmB,MAAM,CAAC,CAAC;gBAC5E,OAAO,QAAQ,CAAC,OAAO,CAAC;YAC1B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,sBAAsB,EAAE,EAAC,UAAU,EAAE,EAAC,KAAK,EAAG,KAAe,CAAC,OAAO,EAAC,EAAC,CAAC,CAAC;gBAC/F,OAAO,QAAQ,CAAC,KAAK,CAAC;YACxB,CAAC;QACH,CAAC;KAAA;;AApBuB,8CAAoB,GAAG,aAAa,AAAhB,CAAiB;AALlD,yBAAyB;IAHrC,GAAG,CAAC,wBAAwB,CAAC,OAAO,CAAC;IACrC,YAAY,CAAC,qBAAqB,CAAC;IACnC,UAAU,EAAE;IAWR,WAAA,MAAM,CAAC,qBAAqB,CAAC,CAAA;qCAFK,qBAAqB;QAC5B,SAAS;GAT5B,yBAAyB,CA0BrC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
import "reflect-metadata";
|
|
11
|
+
import { IsBoolean, IsOptional, IsString } from "@pristine-ts/class-validator";
|
|
12
|
+
/**
|
|
13
|
+
* Flags for `pristine mysql:migrate [--config <keyname>] [--dry-run] [--force]`.
|
|
14
|
+
*
|
|
15
|
+
* `--config` picks the `MysqlConfig.uniqueKeyname` to target. Defaults to
|
|
16
|
+
* `__default__`. `--dry-run` prints the plan without writing anything. `--force`
|
|
17
|
+
* overrides the refusal-to-proceed when drift (Modified / Orphaned entries) is
|
|
18
|
+
* detected — used sparingly, on environments you're comfortable diverging.
|
|
19
|
+
*/
|
|
20
|
+
export class MysqlMigrateCommandOptions {
|
|
21
|
+
}
|
|
22
|
+
__decorate([
|
|
23
|
+
IsOptional(),
|
|
24
|
+
IsString(),
|
|
25
|
+
__metadata("design:type", String)
|
|
26
|
+
], MysqlMigrateCommandOptions.prototype, "config", void 0);
|
|
27
|
+
__decorate([
|
|
28
|
+
IsOptional(),
|
|
29
|
+
IsBoolean(),
|
|
30
|
+
__metadata("design:type", Boolean)
|
|
31
|
+
], MysqlMigrateCommandOptions.prototype, "dry-run", void 0);
|
|
32
|
+
__decorate([
|
|
33
|
+
IsOptional(),
|
|
34
|
+
IsBoolean(),
|
|
35
|
+
__metadata("design:type", Boolean)
|
|
36
|
+
], MysqlMigrateCommandOptions.prototype, "force", void 0);
|
|
37
|
+
//# sourceMappingURL=mysql-migrate.command-options.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mysql-migrate.command-options.js","sourceRoot":"","sources":["../../../../src/commands/mysql-migrate.command-options.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAC,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAC,MAAM,8BAA8B,CAAC;AAE7E;;;;;;;GAOG;AACH,MAAM,OAAO,0BAA0B;CAYtC;AATC;IAFC,UAAU,EAAE;IACZ,QAAQ,EAAE;;0DACK;AAIhB;IAFC,UAAU,EAAE;IACZ,SAAS,EAAE;;2DACQ;AAIpB;IAFC,UAAU,EAAE;IACZ,SAAS,EAAE;;yDACI"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
11
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
12
|
+
};
|
|
13
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
14
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
15
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
16
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
17
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
18
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
19
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
20
|
+
});
|
|
21
|
+
};
|
|
22
|
+
var MysqlMigrateCommand_1;
|
|
23
|
+
import { ExitCode, moduleScoped, ServiceDefinitionTagEnum, tag } from "@pristine-ts/common";
|
|
24
|
+
import { inject, injectable } from "tsyringe";
|
|
25
|
+
import { CliOutput } from "@pristine-ts/cli";
|
|
26
|
+
import { MysqlCliModuleKeyname } from "../mysql-cli.module.keyname";
|
|
27
|
+
import { MysqlMigrationManager } from "../managers/mysql-migration.manager";
|
|
28
|
+
import { MysqlMigrateCommandOptions } from "./mysql-migrate.command-options";
|
|
29
|
+
/**
|
|
30
|
+
* `pristine mysql:migrate [--config <keyname>] [--dry-run] [--force]`
|
|
31
|
+
*
|
|
32
|
+
* Applies every Pending migration against the targeted database. Halts on the first
|
|
33
|
+
* failure. Refuses to proceed when drift (Modified / Orphaned entries) exists unless
|
|
34
|
+
* `--force` is given.
|
|
35
|
+
*/
|
|
36
|
+
let MysqlMigrateCommand = MysqlMigrateCommand_1 = class MysqlMigrateCommand {
|
|
37
|
+
constructor(migrationManager, cliOutput, logHandler) {
|
|
38
|
+
this.migrationManager = migrationManager;
|
|
39
|
+
this.cliOutput = cliOutput;
|
|
40
|
+
this.logHandler = logHandler;
|
|
41
|
+
this.optionsType = MysqlMigrateCommandOptions;
|
|
42
|
+
this.name = "mysql:migrate";
|
|
43
|
+
this.description = "Apply pending MySQL migrations against the configured database.";
|
|
44
|
+
}
|
|
45
|
+
run(args) {
|
|
46
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
47
|
+
var _a;
|
|
48
|
+
const configUniqueKeyname = (_a = args.config) !== null && _a !== void 0 ? _a : MysqlMigrateCommand_1.DefaultConfigKeyname;
|
|
49
|
+
try {
|
|
50
|
+
const result = yield this.migrationManager.apply(configUniqueKeyname, {
|
|
51
|
+
dryRun: args["dry-run"] === true,
|
|
52
|
+
force: args.force === true,
|
|
53
|
+
});
|
|
54
|
+
this.cliOutput.writeLine(`Applying migrations against config: ${configUniqueKeyname}${result.dryRun ? " (dry-run)" : ""}`);
|
|
55
|
+
for (const entry of result.appliedMigrations) {
|
|
56
|
+
this.cliOutput.writeLine(` ✓ ${entry.name} (${entry.executionTimeMs} ms)`);
|
|
57
|
+
}
|
|
58
|
+
if (result.failedMigration !== undefined) {
|
|
59
|
+
this.cliOutput.writeLine(` ✗ ${result.failedMigration.name} (failed)`);
|
|
60
|
+
this.logHandler.error(`Migration ${result.failedMigration.name} failed: ${result.failedMigration.error}`);
|
|
61
|
+
return ExitCode.Error;
|
|
62
|
+
}
|
|
63
|
+
this.cliOutput.writeLine(`Applied ${result.appliedMigrations.length} migration(s). ${result.skippedAlreadyApplied.length} skipped.`);
|
|
64
|
+
return ExitCode.Success;
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
this.logHandler.error("mysql:migrate failed.", { highlights: { error: error.message } });
|
|
68
|
+
return ExitCode.Error;
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
MysqlMigrateCommand.DefaultConfigKeyname = "__default__";
|
|
74
|
+
MysqlMigrateCommand = MysqlMigrateCommand_1 = __decorate([
|
|
75
|
+
tag(ServiceDefinitionTagEnum.Command),
|
|
76
|
+
moduleScoped(MysqlCliModuleKeyname),
|
|
77
|
+
injectable(),
|
|
78
|
+
__param(2, inject("LogHandlerInterface")),
|
|
79
|
+
__metadata("design:paramtypes", [MysqlMigrationManager,
|
|
80
|
+
CliOutput, Object])
|
|
81
|
+
], MysqlMigrateCommand);
|
|
82
|
+
export { MysqlMigrateCommand };
|
|
83
|
+
//# sourceMappingURL=mysql-migrate.command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mysql-migrate.command.js","sourceRoot":"","sources":["../../../../src/commands/mysql-migrate.command.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enums.js","sourceRoot":"","sources":["../../../../src/enums/enums.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* State of a single migration as observed by `MysqlMigrationManager.status` /
|
|
3
|
+
* `verify`. Computed from the union of registered migrations (DI) and applied
|
|
4
|
+
* records (the `pristine_migrations` table).
|
|
5
|
+
*/
|
|
6
|
+
export var MigrationStateEnum;
|
|
7
|
+
(function (MigrationStateEnum) {
|
|
8
|
+
/** Registered in DI, not in the database. Will be applied next `migrate` run. */
|
|
9
|
+
MigrationStateEnum["Pending"] = "pending";
|
|
10
|
+
/** Registered in DI, in the database, checksums match. Nothing to do. */
|
|
11
|
+
MigrationStateEnum["Applied"] = "applied";
|
|
12
|
+
/**
|
|
13
|
+
* Registered in DI, in the database, checksums differ. The migration's `up()` was
|
|
14
|
+
* edited after it was applied. Verify fails; apply refuses to proceed (unless
|
|
15
|
+
* `--force`).
|
|
16
|
+
*/
|
|
17
|
+
MigrationStateEnum["Modified"] = "modified";
|
|
18
|
+
/**
|
|
19
|
+
* In the database, not registered in DI. The class was deleted from the codebase,
|
|
20
|
+
* or the CLI is targeting the wrong config. Verify fails; apply refuses to proceed
|
|
21
|
+
* (unless `--force`).
|
|
22
|
+
*/
|
|
23
|
+
MigrationStateEnum["Orphaned"] = "orphaned";
|
|
24
|
+
})(MigrationStateEnum || (MigrationStateEnum = {}));
|
|
25
|
+
//# sourceMappingURL=migration-state.enum.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration-state.enum.js","sourceRoot":"","sources":["../../../../src/enums/migration-state.enum.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAN,IAAY,kBAoBX;AApBD,WAAY,kBAAkB;IAC5B,iFAAiF;IACjF,yCAAmB,CAAA;IAEnB,yEAAyE;IACzE,yCAAmB,CAAA;IAEnB;;;;OAIG;IACH,2CAAqB,CAAA;IAErB;;;;OAIG;IACH,2CAAqB,CAAA;AACvB,CAAC,EApBW,kBAAkB,KAAlB,kBAAkB,QAoB7B"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export * from "./migration-checksum-mismatch.error";
|
|
2
|
+
export * from "./migration-duplicate-name.error";
|
|
3
|
+
export * from "./migration-execution.error";
|
|
4
|
+
export * from "./migration-invalid-name.error";
|
|
5
|
+
export * from "./migration-orphaned-record.error";
|
|
6
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../../src/errors/errors.ts"],"names":[],"mappings":"AAAA,cAAc,qCAAqC,CAAC;AACpD,cAAc,kCAAkC,CAAC;AACjD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mCAAmC,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Thrown by `verify` (and by `apply` without `--force`) when a migration that's
|
|
3
|
+
* already applied has had its `up()` body edited since. Indicates someone changed
|
|
4
|
+
* a migration after it ran somewhere — the new SQL was never applied to that
|
|
5
|
+
* database. The fix is either to revert the change or to write a new migration
|
|
6
|
+
* that produces the desired state.
|
|
7
|
+
*/
|
|
8
|
+
export class MigrationChecksumMismatchError extends Error {
|
|
9
|
+
constructor(migrationName, configUniqueKeyname, diskChecksum, appliedChecksum) {
|
|
10
|
+
super(`Migration "${migrationName}" has been edited since it was applied to config ` +
|
|
11
|
+
`"${configUniqueKeyname}". Disk checksum ${diskChecksum} vs applied ` +
|
|
12
|
+
`${appliedChecksum}. Revert the edit or add a new migration to roll forward.`);
|
|
13
|
+
this.migrationName = migrationName;
|
|
14
|
+
this.configUniqueKeyname = configUniqueKeyname;
|
|
15
|
+
this.diskChecksum = diskChecksum;
|
|
16
|
+
this.appliedChecksum = appliedChecksum;
|
|
17
|
+
Object.setPrototypeOf(this, MigrationChecksumMismatchError.prototype);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=migration-checksum-mismatch.error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration-checksum-mismatch.error.js","sourceRoot":"","sources":["../../../../src/errors/migration-checksum-mismatch.error.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,OAAO,8BAA+B,SAAQ,KAAK;IACvD,YACkB,aAAqB,EACrB,mBAA2B,EAC3B,YAAoB,EACpB,eAAuB;QAEvC,KAAK,CACH,cAAc,aAAa,mDAAmD;YAC9E,IAAI,mBAAmB,oBAAoB,YAAY,cAAc;YACrE,GAAG,eAAe,2DAA2D,CAC9E,CAAC;QATc,kBAAa,GAAb,aAAa,CAAQ;QACrB,wBAAmB,GAAnB,mBAAmB,CAAQ;QAC3B,iBAAY,GAAZ,YAAY,CAAQ;QACpB,oBAAe,GAAf,eAAe,CAAQ;QAQvC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,8BAA8B,CAAC,SAAS,CAAC,CAAC;IACxE,CAAC;CACF"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Thrown when two registered migrations share the same `name` after filtering by
|
|
3
|
+
* `configUniqueKeynames` for the targeted config. Names must be globally unique per
|
|
4
|
+
* config because the database stores them in a `UNIQUE` column. The usual cause is
|
|
5
|
+
* a copy-paste mistake at scaffold time.
|
|
6
|
+
*/
|
|
7
|
+
export class MigrationDuplicateNameError extends Error {
|
|
8
|
+
constructor(migrationName, configUniqueKeyname) {
|
|
9
|
+
super(`Multiple registered migrations have the same name "${migrationName}" for ` +
|
|
10
|
+
`config "${configUniqueKeyname}". Each migration name must be unique. Rename ` +
|
|
11
|
+
`one of them and re-run.`);
|
|
12
|
+
this.migrationName = migrationName;
|
|
13
|
+
this.configUniqueKeyname = configUniqueKeyname;
|
|
14
|
+
Object.setPrototypeOf(this, MigrationDuplicateNameError.prototype);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=migration-duplicate-name.error.js.map
|