@heronlabs/terminal-cli 2.2.4 → 2.3.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.
Files changed (111) hide show
  1. package/README.md +15 -10
  2. package/bin/src/application/cli/cli-module.d.ts +5 -0
  3. package/bin/src/application/cli/cli-module.d.ts.map +1 -0
  4. package/bin/src/application/cli/cli-module.js +1 -0
  5. package/bin/src/application/cli/cli-module.js.map +1 -0
  6. package/bin/src/application/cli/commands/backup/easypanel-backup-command.d.ts +11 -0
  7. package/bin/src/application/cli/commands/backup/easypanel-backup-command.d.ts.map +1 -0
  8. package/bin/src/application/cli/commands/backup/easypanel-backup-command.js +1 -0
  9. package/bin/src/application/cli/commands/backup/easypanel-backup-command.js.map +1 -0
  10. package/bin/src/application/cli/commands/backup/mysql-backup-command.d.ts +11 -0
  11. package/bin/src/application/cli/commands/backup/mysql-backup-command.d.ts.map +1 -0
  12. package/bin/src/application/cli/commands/backup/mysql-backup-command.js +1 -0
  13. package/bin/src/application/cli/commands/backup/mysql-backup-command.js.map +1 -0
  14. package/bin/src/application/cli/commands/backup/psql-backup-command.d.ts +11 -0
  15. package/bin/src/application/cli/commands/backup/psql-backup-command.d.ts.map +1 -0
  16. package/bin/src/application/cli/commands/backup/psql-backup-command.js +1 -0
  17. package/bin/src/application/cli/commands/backup/psql-backup-command.js.map +1 -0
  18. package/bin/src/application/cli/commands/backup/types/backup-options.d.ts +9 -0
  19. package/bin/src/application/cli/commands/backup/types/backup-options.d.ts.map +1 -0
  20. package/bin/src/application/cli/commands/backup/types/backup-options.js +1 -0
  21. package/bin/src/application/cli/commands/backup/types/backup-options.js.map +1 -0
  22. package/bin/src/application/cli/commands/rollup/easypanel-rollup-command.d.ts +11 -0
  23. package/bin/src/application/cli/commands/rollup/easypanel-rollup-command.d.ts.map +1 -0
  24. package/bin/src/application/cli/commands/rollup/easypanel-rollup-command.js +1 -0
  25. package/bin/src/application/cli/commands/rollup/easypanel-rollup-command.js.map +1 -0
  26. package/bin/src/application/cli/commands/rollup/mysql-rollup-command.d.ts +11 -0
  27. package/bin/src/application/cli/commands/rollup/mysql-rollup-command.d.ts.map +1 -0
  28. package/bin/src/application/cli/commands/rollup/mysql-rollup-command.js +1 -0
  29. package/bin/src/application/cli/commands/rollup/mysql-rollup-command.js.map +1 -0
  30. package/bin/src/application/cli/commands/rollup/psql-rollup-command.d.ts +11 -0
  31. package/bin/src/application/cli/commands/rollup/psql-rollup-command.d.ts.map +1 -0
  32. package/bin/src/application/cli/commands/rollup/psql-rollup-command.js +1 -0
  33. package/bin/src/application/cli/commands/rollup/psql-rollup-command.js.map +1 -0
  34. package/bin/src/application/cli/commands/rollup/types/rollup-options.d.ts +9 -0
  35. package/bin/src/application/cli/commands/rollup/types/rollup-options.d.ts.map +1 -0
  36. package/bin/src/application/cli/commands/rollup/types/rollup-options.js +1 -0
  37. package/bin/src/application/cli/commands/rollup/types/rollup-options.js.map +1 -0
  38. package/bin/src/application/cli/commands/version/version-command.d.ts +8 -0
  39. package/bin/src/application/cli/commands/version/version-command.d.ts.map +1 -0
  40. package/bin/src/application/cli/commands/version/version-command.js +1 -0
  41. package/bin/src/application/cli/commands/version/version-command.js.map +1 -0
  42. package/bin/src/core/core-module.d.ts +3 -0
  43. package/bin/src/core/core-module.d.ts.map +1 -0
  44. package/bin/src/core/core-module.js +1 -0
  45. package/bin/src/core/core-module.js.map +1 -0
  46. package/bin/src/core/interfaces/backup-service.d.ts +21 -0
  47. package/bin/src/core/interfaces/backup-service.d.ts.map +1 -0
  48. package/bin/src/core/interfaces/backup-service.js +1 -0
  49. package/bin/src/core/interfaces/backup-service.js.map +1 -0
  50. package/bin/src/core/interfaces/rollup-service.d.ts +18 -0
  51. package/bin/src/core/interfaces/rollup-service.d.ts.map +1 -0
  52. package/bin/src/core/interfaces/rollup-service.js +1 -0
  53. package/bin/src/core/interfaces/rollup-service.js.map +1 -0
  54. package/bin/src/core/services/easy-panel/easypanel-backup-service.d.ts +22 -0
  55. package/bin/src/core/services/easy-panel/easypanel-backup-service.d.ts.map +1 -0
  56. package/bin/src/core/services/easy-panel/easypanel-backup-service.js +1 -0
  57. package/bin/src/core/services/easy-panel/easypanel-backup-service.js.map +1 -0
  58. package/bin/src/core/services/easy-panel/easypanel-rollup-service.d.ts +22 -0
  59. package/bin/src/core/services/easy-panel/easypanel-rollup-service.d.ts.map +1 -0
  60. package/bin/src/core/services/easy-panel/easypanel-rollup-service.js +1 -0
  61. package/bin/src/core/services/easy-panel/easypanel-rollup-service.js.map +1 -0
  62. package/bin/src/core/services/mysql/mysql-backup-service.d.ts +24 -0
  63. package/bin/src/core/services/mysql/mysql-backup-service.d.ts.map +1 -0
  64. package/bin/src/core/services/mysql/mysql-backup-service.js +1 -0
  65. package/bin/src/core/services/mysql/mysql-backup-service.js.map +1 -0
  66. package/bin/src/core/services/mysql/mysql-rollup-service.d.ts +24 -0
  67. package/bin/src/core/services/mysql/mysql-rollup-service.d.ts.map +1 -0
  68. package/bin/src/core/services/mysql/mysql-rollup-service.js +1 -0
  69. package/bin/src/core/services/mysql/mysql-rollup-service.js.map +1 -0
  70. package/bin/src/core/services/psql/psql-backup-service.d.ts +24 -0
  71. package/bin/src/core/services/psql/psql-backup-service.d.ts.map +1 -0
  72. package/bin/src/core/services/psql/psql-backup-service.js +1 -0
  73. package/bin/src/core/services/psql/psql-backup-service.js.map +1 -0
  74. package/bin/src/core/services/psql/psql-rollup-service.d.ts +24 -0
  75. package/bin/src/core/services/psql/psql-rollup-service.d.ts.map +1 -0
  76. package/bin/src/core/services/psql/psql-rollup-service.js +1 -0
  77. package/bin/src/core/services/psql/psql-rollup-service.js.map +1 -0
  78. package/bin/src/core/services/script-loader-service.d.ts +4 -0
  79. package/bin/src/core/services/script-loader-service.d.ts.map +1 -0
  80. package/bin/src/core/services/script-loader-service.js +1 -0
  81. package/bin/src/core/services/script-loader-service.js.map +1 -0
  82. package/bin/src/infrastructure/environment/environment-module.d.ts +5 -0
  83. package/bin/src/infrastructure/environment/environment-module.d.ts.map +1 -0
  84. package/bin/src/infrastructure/environment/environment-module.js +2 -1
  85. package/bin/src/infrastructure/environment/environment-module.js.map +1 -0
  86. package/bin/src/infrastructure/environment/services/database-url-service.d.ts +24 -0
  87. package/bin/src/infrastructure/environment/services/database-url-service.d.ts.map +1 -0
  88. package/bin/src/infrastructure/environment/services/database-url-service.js +1 -0
  89. package/bin/src/infrastructure/environment/services/database-url-service.js.map +1 -0
  90. package/bin/src/infrastructure/environment/services/environment-service.d.ts +26 -0
  91. package/bin/src/infrastructure/environment/services/environment-service.d.ts.map +1 -0
  92. package/bin/src/infrastructure/environment/services/environment-service.js +1 -0
  93. package/bin/src/infrastructure/environment/services/environment-service.js.map +1 -0
  94. package/bin/src/infrastructure/log/log-module.d.ts +3 -0
  95. package/bin/src/infrastructure/log/log-module.d.ts.map +1 -0
  96. package/bin/src/infrastructure/log/log-module.js +1 -0
  97. package/bin/src/infrastructure/log/log-module.js.map +1 -0
  98. package/bin/src/infrastructure/storage/services/s3-storage-service.d.ts +24 -0
  99. package/bin/src/infrastructure/storage/services/s3-storage-service.d.ts.map +1 -0
  100. package/bin/src/infrastructure/storage/services/s3-storage-service.js +1 -0
  101. package/bin/src/infrastructure/storage/services/s3-storage-service.js.map +1 -0
  102. package/bin/src/infrastructure/storage/storage-module.d.ts +5 -0
  103. package/bin/src/infrastructure/storage/storage-module.d.ts.map +1 -0
  104. package/bin/src/infrastructure/storage/storage-module.js +1 -0
  105. package/bin/src/infrastructure/storage/storage-module.js.map +1 -0
  106. package/bin/src/main.d.ts +3 -0
  107. package/bin/src/main.d.ts.map +1 -0
  108. package/bin/src/main.js +1 -0
  109. package/bin/src/main.js.map +1 -0
  110. package/bin/tsconfig.bin.tsbuildinfo +1 -0
  111. package/package.json +8 -5
package/README.md CHANGED
@@ -61,7 +61,7 @@ You also need the database client tools for the engine you back up: `pg_dump` /
61
61
  | Requirement | Version | Purpose |
62
62
  |-------------|---------|---------|
63
63
  | Node.js | `>=22` | Runtime |
64
- | pnpm | `>=10.29.3` | Package manager |
64
+ | pnpm | `>=10.33.2` | Package manager |
65
65
  | `pg_dump` / `psql` | — | PostgreSQL backup/restore |
66
66
  | `mysqldump` / `mysql` | — | MySQL backup/restore |
67
67
 
@@ -83,6 +83,7 @@ After `pnpm build`, run the CLI via `node bin/src/main.js <command>` or link the
83
83
  pnpm build # nest build → bin/
84
84
  pnpm lint:check # gts + eslint
85
85
  pnpm test:unit # vitest run (100% coverage)
86
+ pnpm test:integration # PostgreSQL + MySQL round-trip (requires Docker)
86
87
  pnpm test:mutation # stryker (100% break)
87
88
  pnpm dep:cruise # architecture check
88
89
  ```
@@ -183,12 +184,13 @@ injects). See [`easypanel/README.md`](easypanel/README.md) for deploy steps.
183
184
  Local stack for manual testing — `docker-compose.yml` runs the psql + mysql DBs
184
185
  (exposed on ports 5434/3307) and the `psql-integration`/`mysql-integration`
185
186
  services that run the backup/rollup round-trip inside the prod-shaped
186
- `integration-{postgres,mysql}.dockerfile` images:
187
+ `integration/{postgres,mysql}/Dockerfile` images:
187
188
 
188
189
  ```bash
189
190
  docker compose up postgres mysql # local DBs only
190
- docker compose run --build --rm psql-integration # PostgreSQL round-trip
191
- docker compose run --build --rm mysql-integration # MySQL round-trip
191
+ pnpm test:integration:postgres # PostgreSQL round-trip
192
+ pnpm test:integration:mysql # MySQL round-trip
193
+ pnpm test:integration # both
192
194
  ```
193
195
 
194
196
  ## EasyPanel host backup
@@ -230,7 +232,8 @@ vars) in `/etc/easypanel-backup.env`.
230
232
  | Detail | Value |
231
233
  |---|---|
232
234
  | Framework | Vitest 4.x (`vitest.config.ts`, SWC transform for decorators) |
233
- | Test location | `tests/specs/` (mirrors `src/`) |
235
+ | Test location | `tests/unit/` (mirrors `src/`) |
236
+ | Integration tests | `integration/` — Docker-based round-trip (PostgreSQL + MySQL) |
234
237
  | Shared mocks | `tests/__mocks__/create-testing-module.ts` (moq.ts + vitest) |
235
238
  | Coverage | v8, 100% lines/functions/branches/statements |
236
239
  | Coverage excludes | `**/main.ts`, `**/*.d.ts`, `**/*factory.ts`, `**/types/` |
@@ -239,17 +242,19 @@ vars) in `/etc/easypanel-backup.env`.
239
242
 
240
243
  ```bash
241
244
  pnpm test:unit # vitest run with coverage
245
+ pnpm test:integration # PostgreSQL + MySQL round-trip (requires Docker)
242
246
  pnpm test:mutation # stryker mutation testing
243
247
  ```
244
248
 
245
249
  ## Contributing
246
250
 
247
251
  ```bash
248
- pnpm lint:check # check
249
- pnpm lint:fix # auto-fix
250
- pnpm build # verify compilation
251
- pnpm test:unit # verify tests pass at 100% coverage
252
- pnpm dep:cruise # verify architecture
252
+ pnpm lint:check # check
253
+ pnpm lint:fix # auto-fix
254
+ pnpm build # verify compilation
255
+ pnpm test:unit # verify tests pass at 100% coverage
256
+ pnpm test:integration # verify round-trip (requires Docker)
257
+ pnpm dep:cruise # verify architecture
253
258
  ```
254
259
 
255
260
  Conventional Commits:
@@ -0,0 +1,5 @@
1
+ import { ModuleMetadata } from '@nestjs/common';
2
+ export declare const cliModule: ModuleMetadata;
3
+ export declare class CliModule {
4
+ }
5
+ //# sourceMappingURL=cli-module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-module.d.ts","sourceRoot":"","sources":["../../../../src/application/cli/cli-module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,cAAc,EAAC,MAAM,gBAAgB,CAAC;AAY9D,eAAO,MAAM,SAAS,EAAE,cAYvB,CAAC;AAEF,qBACa,SAAS;CAAG"}
@@ -36,3 +36,4 @@ exports.CliModule = CliModule;
36
36
  exports.CliModule = CliModule = __decorate([
37
37
  (0, common_1.Module)(exports.cliModule)
38
38
  ], CliModule);
39
+ //# sourceMappingURL=cli-module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-module.js","sourceRoot":"","sources":["../../../../src/application/cli/cli-module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAA8D;AAE9D,wDAAkD;AAClD,oEAA8D;AAC9D,yFAAkF;AAClF,iFAA0E;AAC1E,+EAAwE;AACxE,yFAAkF;AAClF,iFAA0E;AAC1E,+EAAwE;AACxE,wEAAkE;AAErD,QAAA,SAAS,GAAmB;IACvC,OAAO,EAAE,CAAC,sBAAS,EAAE,wBAAU,CAAC;IAChC,SAAS,EAAE;QACT,eAAM;QACN,gCAAc;QACd,uCAAiB;QACjB,uCAAiB;QACjB,yCAAkB;QAClB,yCAAkB;QAClB,iDAAsB;QACtB,iDAAsB;KACvB;CACF,CAAC;AAGK,IAAM,SAAS,GAAf,MAAM,SAAS;CAAG,CAAA;AAAZ,8BAAS;oBAAT,SAAS;IADrB,IAAA,eAAM,EAAC,iBAAS,CAAC;GACL,SAAS,CAAG","sourcesContent":["import {Logger, Module, ModuleMetadata} from '@nestjs/common';\n\nimport {CoreModule} from '../../core/core-module';\nimport {LogModule} from '../../infrastructure/log/log-module';\nimport {EasypanelBackupCommand} from './commands/backup/easypanel-backup-command';\nimport {MysqlBackupCommand} from './commands/backup/mysql-backup-command';\nimport {PsqlBackupCommand} from './commands/backup/psql-backup-command';\nimport {EasypanelRollupCommand} from './commands/rollup/easypanel-rollup-command';\nimport {MysqlRollupCommand} from './commands/rollup/mysql-rollup-command';\nimport {PsqlRollupCommand} from './commands/rollup/psql-rollup-command';\nimport {VersionCommand} from './commands/version/version-command';\n\nexport const cliModule: ModuleMetadata = {\n imports: [LogModule, CoreModule],\n providers: [\n Logger,\n VersionCommand,\n PsqlBackupCommand,\n PsqlRollupCommand,\n MysqlBackupCommand,\n MysqlRollupCommand,\n EasypanelBackupCommand,\n EasypanelRollupCommand,\n ],\n};\n\n@Module(cliModule)\nexport class CliModule {}\n"]}
@@ -0,0 +1,11 @@
1
+ import { CommandRunner } from 'nest-commander';
2
+ import { EasypanelBackupService } from '../../../../core/services/easy-panel/easypanel-backup-service';
3
+ import { BackupOptions } from './types/backup-options';
4
+ export declare class EasypanelBackupCommand extends CommandRunner {
5
+ private readonly easypanelBackupService;
6
+ parseFilename(val: string): string;
7
+ parseLocal(): boolean;
8
+ run(_args?: string[], options?: BackupOptions): Promise<void>;
9
+ constructor(easypanelBackupService: EasypanelBackupService);
10
+ }
11
+ //# sourceMappingURL=easypanel-backup-command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"easypanel-backup-command.d.ts","sourceRoot":"","sources":["../../../../../../src/application/cli/commands/backup/easypanel-backup-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,aAAa,EAAS,MAAM,gBAAgB,CAAC;AAE9D,OAAO,EAAC,sBAAsB,EAAC,MAAM,+DAA+D,CAAC;AACrG,OAAO,EAAC,aAAa,EAAoB,MAAM,wBAAwB,CAAC;AAExE,qBAIa,sBAAuB,SAAQ,aAAa;IA0B3C,OAAO,CAAC,QAAQ,CAAC,sBAAsB;IApBnD,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IASlC,UAAU,IAAI,OAAO;IAIR,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,aAAa;gBAO7B,sBAAsB,EAAE,sBAAsB;CAG5E"}
@@ -55,3 +55,4 @@ exports.EasypanelBackupCommand = EasypanelBackupCommand = __decorate([
55
55
  }),
56
56
  __metadata("design:paramtypes", [easypanel_backup_service_1.EasypanelBackupService])
57
57
  ], EasypanelBackupCommand);
58
+ //# sourceMappingURL=easypanel-backup-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"easypanel-backup-command.js","sourceRoot":"","sources":["../../../../../../src/application/cli/commands/backup/easypanel-backup-command.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,mDAA8D;AAE9D,4GAAqG;AACrG,2DAAwE;AAMjE,IAAM,sBAAsB,GAA5B,MAAM,sBAAuB,SAAQ,8BAAa;IA0B1B;IApB7B,aAAa,CAAC,GAAW;QACvB,OAAO,GAAG,CAAC;IACb,CAAC;IAOD,UAAU;QACR,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,GAAG,CAAC,KAAgB,EAAE,OAAuB;QACxD,MAAM,IAAI,CAAC,sBAAsB,CAAC,GAAG,CACnC,OAAO,EAAE,CAAC,kCAAiB,CAAC,KAAK,CAAC,IAAI,KAAK,EAC3C,OAAO,EAAE,CAAC,kCAAiB,CAAC,QAAQ,CAAC,CACtC,CAAC;IACJ,CAAC;IAED,YAA6B,sBAA8C;QACzE,KAAK,EAAE,CAAC;QADmB,2BAAsB,GAAtB,sBAAsB,CAAwB;IAE3E,CAAC;CACF,CAAA;AA7BY,wDAAsB;AAMjC;IALC,IAAA,uBAAM,EAAC;QACN,KAAK,EAAE,SAAS,kCAAiB,CAAC,QAAQ,aAAa;QACvD,WAAW,EACT,oFAAoF;KACvF,CAAC;;;;2DAGD;AAOD;IALC,IAAA,uBAAM,EAAC;QACN,KAAK,EAAE,KAAK,kCAAiB,CAAC,KAAK,EAAE;QACrC,WAAW,EACT,iEAAiE;KACpE,CAAC;;;;wDAGD;iCAjBU,sBAAsB;IAJlC,IAAA,wBAAO,EAAC;QACP,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,+CAA+C;KAC7D,CAAC;qCA2BqD,iDAAsB;GA1BhE,sBAAsB,CA6BlC","sourcesContent":["import {Command, CommandRunner, Option} from 'nest-commander';\n\nimport {EasypanelBackupService} from '../../../../core/services/easy-panel/easypanel-backup-service';\nimport {BackupOptions, BackupOptionsKeys} from './types/backup-options';\n\n@Command({\n name: 'easypanel-backup',\n description: 'Backup EasyPanel host (config + Docker state)',\n})\nexport class EasypanelBackupCommand extends CommandRunner {\n @Option({\n flags: `-f, --${BackupOptionsKeys.FILENAME} <filename>`,\n description:\n 'Output filename (e.g. snapshot.tar.gz). Defaults to \"easypanel-<timestamp>.tar.gz\"',\n })\n parseFilename(val: string): string {\n return val;\n }\n\n @Option({\n flags: `--${BackupOptionsKeys.LOCAL}`,\n description:\n 'Save backup to the local filesystem instead of S3 (default: S3)',\n })\n parseLocal(): boolean {\n return true;\n }\n\n public async run(_args?: string[], options?: BackupOptions) {\n await this.easypanelBackupService.run(\n options?.[BackupOptionsKeys.LOCAL] ?? false,\n options?.[BackupOptionsKeys.FILENAME],\n );\n }\n\n constructor(private readonly easypanelBackupService: EasypanelBackupService) {\n super();\n }\n}\n"]}
@@ -0,0 +1,11 @@
1
+ import { CommandRunner } from 'nest-commander';
2
+ import { MysqlBackupService } from '../../../../core/services/mysql/mysql-backup-service';
3
+ import { BackupOptions } from './types/backup-options';
4
+ export declare class MysqlBackupCommand extends CommandRunner {
5
+ private readonly mysqlBackupService;
6
+ parseFilename(val: string): string;
7
+ parseLocal(): boolean;
8
+ run(_args?: string[], options?: BackupOptions): Promise<void>;
9
+ constructor(mysqlBackupService: MysqlBackupService);
10
+ }
11
+ //# sourceMappingURL=mysql-backup-command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mysql-backup-command.d.ts","sourceRoot":"","sources":["../../../../../../src/application/cli/commands/backup/mysql-backup-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,aAAa,EAAS,MAAM,gBAAgB,CAAC;AAE9D,OAAO,EAAC,kBAAkB,EAAC,MAAM,sDAAsD,CAAC;AACxF,OAAO,EAAC,aAAa,EAAoB,MAAM,wBAAwB,CAAC;AAExE,qBAIa,kBAAmB,SAAQ,aAAa;IA0BvC,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IApB/C,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IASlC,UAAU,IAAI,OAAO;IAIR,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,aAAa;gBAO7B,kBAAkB,EAAE,kBAAkB;CAGpE"}
@@ -55,3 +55,4 @@ exports.MysqlBackupCommand = MysqlBackupCommand = __decorate([
55
55
  }),
56
56
  __metadata("design:paramtypes", [mysql_backup_service_1.MysqlBackupService])
57
57
  ], MysqlBackupCommand);
58
+ //# sourceMappingURL=mysql-backup-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mysql-backup-command.js","sourceRoot":"","sources":["../../../../../../src/application/cli/commands/backup/mysql-backup-command.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,mDAA8D;AAE9D,+FAAwF;AACxF,2DAAwE;AAMjE,IAAM,kBAAkB,GAAxB,MAAM,kBAAmB,SAAQ,8BAAa;IA0BtB;IApB7B,aAAa,CAAC,GAAW;QACvB,OAAO,GAAG,CAAC;IACb,CAAC;IAOD,UAAU;QACR,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,GAAG,CAAC,KAAgB,EAAE,OAAuB;QACxD,MAAM,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAC/B,OAAO,EAAE,CAAC,kCAAiB,CAAC,KAAK,CAAC,IAAI,KAAK,EAC3C,OAAO,EAAE,CAAC,kCAAiB,CAAC,QAAQ,CAAC,CACtC,CAAC;IACJ,CAAC;IAED,YAA6B,kBAAsC;QACjE,KAAK,EAAE,CAAC;QADmB,uBAAkB,GAAlB,kBAAkB,CAAoB;IAEnE,CAAC;CACF,CAAA;AA7BY,gDAAkB;AAM7B;IALC,IAAA,uBAAM,EAAC;QACN,KAAK,EAAE,SAAS,kCAAiB,CAAC,QAAQ,aAAa;QACvD,WAAW,EACT,iFAAiF;KACpF,CAAC;;;;uDAGD;AAOD;IALC,IAAA,uBAAM,EAAC;QACN,KAAK,EAAE,KAAK,kCAAiB,CAAC,KAAK,EAAE;QACrC,WAAW,EACT,iEAAiE;KACpE,CAAC;;;;oDAGD;6BAjBU,kBAAkB;IAJ9B,IAAA,wBAAO,EAAC;QACP,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,uBAAuB;KACrC,CAAC;qCA2BiD,yCAAkB;GA1BxD,kBAAkB,CA6B9B","sourcesContent":["import {Command, CommandRunner, Option} from 'nest-commander';\n\nimport {MysqlBackupService} from '../../../../core/services/mysql/mysql-backup-service';\nimport {BackupOptions, BackupOptionsKeys} from './types/backup-options';\n\n@Command({\n name: 'mysql-backup',\n description: 'Backup MySQL database',\n})\nexport class MysqlBackupCommand extends CommandRunner {\n @Option({\n flags: `-f, --${BackupOptionsKeys.FILENAME} <filename>`,\n description:\n 'Output filename (e.g. seed.sql.gz). Defaults to \"<database>-<timestamp>.sql.gz\"',\n })\n parseFilename(val: string): string {\n return val;\n }\n\n @Option({\n flags: `--${BackupOptionsKeys.LOCAL}`,\n description:\n 'Save backup to the local filesystem instead of S3 (default: S3)',\n })\n parseLocal(): boolean {\n return true;\n }\n\n public async run(_args?: string[], options?: BackupOptions) {\n await this.mysqlBackupService.run(\n options?.[BackupOptionsKeys.LOCAL] ?? false,\n options?.[BackupOptionsKeys.FILENAME],\n );\n }\n\n constructor(private readonly mysqlBackupService: MysqlBackupService) {\n super();\n }\n}\n"]}
@@ -0,0 +1,11 @@
1
+ import { CommandRunner } from 'nest-commander';
2
+ import { PsqlBackupService } from '../../../../core/services/psql/psql-backup-service';
3
+ import { BackupOptions } from './types/backup-options';
4
+ export declare class PsqlBackupCommand extends CommandRunner {
5
+ private readonly psqlBackupService;
6
+ parseFilename(val: string): string;
7
+ parseLocal(): boolean;
8
+ run(_args?: string[], options?: BackupOptions): Promise<void>;
9
+ constructor(psqlBackupService: PsqlBackupService);
10
+ }
11
+ //# sourceMappingURL=psql-backup-command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"psql-backup-command.d.ts","sourceRoot":"","sources":["../../../../../../src/application/cli/commands/backup/psql-backup-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,aAAa,EAAS,MAAM,gBAAgB,CAAC;AAE9D,OAAO,EAAC,iBAAiB,EAAC,MAAM,oDAAoD,CAAC;AACrF,OAAO,EAAC,aAAa,EAAoB,MAAM,wBAAwB,CAAC;AAExE,qBAIa,iBAAkB,SAAQ,aAAa;IA0BtC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IApB9C,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IASlC,UAAU,IAAI,OAAO;IAIR,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,aAAa;gBAO7B,iBAAiB,EAAE,iBAAiB;CAGlE"}
@@ -55,3 +55,4 @@ exports.PsqlBackupCommand = PsqlBackupCommand = __decorate([
55
55
  }),
56
56
  __metadata("design:paramtypes", [psql_backup_service_1.PsqlBackupService])
57
57
  ], PsqlBackupCommand);
58
+ //# sourceMappingURL=psql-backup-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"psql-backup-command.js","sourceRoot":"","sources":["../../../../../../src/application/cli/commands/backup/psql-backup-command.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,mDAA8D;AAE9D,4FAAqF;AACrF,2DAAwE;AAMjE,IAAM,iBAAiB,GAAvB,MAAM,iBAAkB,SAAQ,8BAAa;IA0BrB;IApB7B,aAAa,CAAC,GAAW;QACvB,OAAO,GAAG,CAAC;IACb,CAAC;IAOD,UAAU;QACR,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,GAAG,CAAC,KAAgB,EAAE,OAAuB;QACxD,MAAM,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAC9B,OAAO,EAAE,CAAC,kCAAiB,CAAC,KAAK,CAAC,IAAI,KAAK,EAC3C,OAAO,EAAE,CAAC,kCAAiB,CAAC,QAAQ,CAAC,CACtC,CAAC;IACJ,CAAC;IAED,YAA6B,iBAAoC;QAC/D,KAAK,EAAE,CAAC;QADmB,sBAAiB,GAAjB,iBAAiB,CAAmB;IAEjE,CAAC;CACF,CAAA;AA7BY,8CAAiB;AAM5B;IALC,IAAA,uBAAM,EAAC;QACN,KAAK,EAAE,SAAS,kCAAiB,CAAC,QAAQ,aAAa;QACvD,WAAW,EACT,iFAAiF;KACpF,CAAC;;;;sDAGD;AAOD;IALC,IAAA,uBAAM,EAAC;QACN,KAAK,EAAE,KAAK,kCAAiB,CAAC,KAAK,EAAE;QACrC,WAAW,EACT,iEAAiE;KACpE,CAAC;;;;mDAGD;4BAjBU,iBAAiB;IAJ7B,IAAA,wBAAO,EAAC;QACP,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,4BAA4B;KAC1C,CAAC;qCA2BgD,uCAAiB;GA1BtD,iBAAiB,CA6B7B","sourcesContent":["import {Command, CommandRunner, Option} from 'nest-commander';\n\nimport {PsqlBackupService} from '../../../../core/services/psql/psql-backup-service';\nimport {BackupOptions, BackupOptionsKeys} from './types/backup-options';\n\n@Command({\n name: 'psql-backup',\n description: 'Backup PostgreSQL database',\n})\nexport class PsqlBackupCommand extends CommandRunner {\n @Option({\n flags: `-f, --${BackupOptionsKeys.FILENAME} <filename>`,\n description:\n 'Output filename (e.g. seed.sql.gz). Defaults to \"<database>-<timestamp>.sql.gz\"',\n })\n parseFilename(val: string): string {\n return val;\n }\n\n @Option({\n flags: `--${BackupOptionsKeys.LOCAL}`,\n description:\n 'Save backup to the local filesystem instead of S3 (default: S3)',\n })\n parseLocal(): boolean {\n return true;\n }\n\n public async run(_args?: string[], options?: BackupOptions) {\n await this.psqlBackupService.run(\n options?.[BackupOptionsKeys.LOCAL] ?? false,\n options?.[BackupOptionsKeys.FILENAME],\n );\n }\n\n constructor(private readonly psqlBackupService: PsqlBackupService) {\n super();\n }\n}\n"]}
@@ -0,0 +1,9 @@
1
+ export declare enum BackupOptionsKeys {
2
+ FILENAME = "filename",
3
+ LOCAL = "local"
4
+ }
5
+ export type BackupOptions = {
6
+ [BackupOptionsKeys.FILENAME]?: string;
7
+ [BackupOptionsKeys.LOCAL]?: boolean;
8
+ };
9
+ //# sourceMappingURL=backup-options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backup-options.d.ts","sourceRoot":"","sources":["../../../../../../../src/application/cli/commands/backup/types/backup-options.ts"],"names":[],"mappings":"AAAA,oBAAY,iBAAiB;IAC3B,QAAQ,aAAa;IACrB,KAAK,UAAU;CAChB;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC;IACtC,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC;CACrC,CAAC"}
@@ -6,3 +6,4 @@ var BackupOptionsKeys;
6
6
  BackupOptionsKeys["FILENAME"] = "filename";
7
7
  BackupOptionsKeys["LOCAL"] = "local";
8
8
  })(BackupOptionsKeys || (exports.BackupOptionsKeys = BackupOptionsKeys = {}));
9
+ //# sourceMappingURL=backup-options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backup-options.js","sourceRoot":"","sources":["../../../../../../../src/application/cli/commands/backup/types/backup-options.ts"],"names":[],"mappings":";;;AAAA,IAAY,iBAGX;AAHD,WAAY,iBAAiB;IAC3B,0CAAqB,CAAA;IACrB,oCAAe,CAAA;AACjB,CAAC,EAHW,iBAAiB,iCAAjB,iBAAiB,QAG5B","sourcesContent":["export enum BackupOptionsKeys {\n FILENAME = 'filename',\n LOCAL = 'local',\n}\n\nexport type BackupOptions = {\n [BackupOptionsKeys.FILENAME]?: string;\n [BackupOptionsKeys.LOCAL]?: boolean;\n};\n"]}
@@ -0,0 +1,11 @@
1
+ import { CommandRunner } from 'nest-commander';
2
+ import { EasypanelRollupService } from '../../../../core/services/easy-panel/easypanel-rollup-service';
3
+ import { RollupOptions } from './types/rollup-options';
4
+ export declare class EasypanelRollupCommand extends CommandRunner {
5
+ private readonly easypanelRollupService;
6
+ parseFilename(val: string): string;
7
+ parseLocal(): boolean;
8
+ run(_args: string[], options: RollupOptions): Promise<void>;
9
+ constructor(easypanelRollupService: EasypanelRollupService);
10
+ }
11
+ //# sourceMappingURL=easypanel-rollup-command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"easypanel-rollup-command.d.ts","sourceRoot":"","sources":["../../../../../../src/application/cli/commands/rollup/easypanel-rollup-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,aAAa,EAAS,MAAM,gBAAgB,CAAC;AAE9D,OAAO,EAAC,sBAAsB,EAAC,MAAM,+DAA+D,CAAC;AACrG,OAAO,EAAC,aAAa,EAAoB,MAAM,wBAAwB,CAAC;AAExE,qBAKa,sBAAuB,SAAQ,aAAa;IA2B3C,OAAO,CAAC,QAAQ,CAAC,sBAAsB;IApBnD,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IASlC,UAAU,IAAI,OAAO;IAIR,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,aAAa;gBAO3B,sBAAsB,EAAE,sBAAsB;CAG5E"}
@@ -56,3 +56,4 @@ exports.EasypanelRollupCommand = EasypanelRollupCommand = __decorate([
56
56
  }),
57
57
  __metadata("design:paramtypes", [easypanel_rollup_service_1.EasypanelRollupService])
58
58
  ], EasypanelRollupCommand);
59
+ //# sourceMappingURL=easypanel-rollup-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"easypanel-rollup-command.js","sourceRoot":"","sources":["../../../../../../src/application/cli/commands/rollup/easypanel-rollup-command.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,mDAA8D;AAE9D,4GAAqG;AACrG,2DAAwE;AAOjE,IAAM,sBAAsB,GAA5B,MAAM,sBAAuB,SAAQ,8BAAa;IA2B1B;IApB7B,aAAa,CAAC,GAAW;QACvB,OAAO,GAAG,CAAC;IACb,CAAC;IAOD,UAAU;QACR,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,GAAG,CAAC,KAAe,EAAE,OAAsB;QACtD,MAAM,IAAI,CAAC,sBAAsB,CAAC,GAAG,CACnC,OAAO,CAAC,kCAAiB,CAAC,QAAQ,CAAC,EACnC,OAAO,CAAC,kCAAiB,CAAC,KAAK,CAAC,IAAI,KAAK,CAC1C,CAAC;IACJ,CAAC;IAED,YAA6B,sBAA8C;QACzE,KAAK,EAAE,CAAC;QADmB,2BAAsB,GAAtB,sBAAsB,CAAwB;IAE3E,CAAC;CACF,CAAA;AA9BY,wDAAsB;AAOjC;IANC,IAAA,uBAAM,EAAC;QACN,KAAK,EAAE,SAAS,kCAAiB,CAAC,QAAQ,aAAa;QACvD,WAAW,EACT,yEAAyE;QAC3E,QAAQ,EAAE,IAAI;KACf,CAAC;;;;2DAGD;AAOD;IALC,IAAA,uBAAM,EAAC;QACN,KAAK,EAAE,KAAK,kCAAiB,CAAC,KAAK,EAAE;QACrC,WAAW,EACT,mEAAmE;KACtE,CAAC;;;;wDAGD;iCAlBU,sBAAsB;IALlC,IAAA,wBAAO,EAAC;QACP,IAAI,EAAE,kBAAkB;QACxB,WAAW,EACT,wHAAwH;KAC3H,CAAC;qCA4BqD,iDAAsB;GA3BhE,sBAAsB,CA8BlC","sourcesContent":["import {Command, CommandRunner, Option} from 'nest-commander';\n\nimport {EasypanelRollupService} from '../../../../core/services/easy-panel/easypanel-rollup-service';\nimport {RollupOptions, RollupOptionsKeys} from './types/rollup-options';\n\n@Command({\n name: 'easypanel-rollup',\n description:\n 'Restore an EasyPanel host from a backup file (S3 by default, or local filesystem with --local). Overwrites host files.',\n})\nexport class EasypanelRollupCommand extends CommandRunner {\n @Option({\n flags: `-f, --${RollupOptionsKeys.FILENAME} <filename>`,\n description:\n 'Backup filename to restore (e.g. easypanel-2026-03-05T12-00-00Z.tar.gz)',\n required: true,\n })\n parseFilename(val: string): string {\n return val;\n }\n\n @Option({\n flags: `--${RollupOptionsKeys.LOCAL}`,\n description:\n 'Read backup from the local filesystem instead of S3 (default: S3)',\n })\n parseLocal(): boolean {\n return true;\n }\n\n public async run(_args: string[], options: RollupOptions) {\n await this.easypanelRollupService.run(\n options[RollupOptionsKeys.FILENAME],\n options[RollupOptionsKeys.LOCAL] ?? false,\n );\n }\n\n constructor(private readonly easypanelRollupService: EasypanelRollupService) {\n super();\n }\n}\n"]}
@@ -0,0 +1,11 @@
1
+ import { CommandRunner } from 'nest-commander';
2
+ import { MysqlRollupService } from '../../../../core/services/mysql/mysql-rollup-service';
3
+ import { RollupOptions } from './types/rollup-options';
4
+ export declare class MysqlRollupCommand extends CommandRunner {
5
+ private readonly mysqlRollupService;
6
+ parseFilename(val: string): string;
7
+ parseLocal(): boolean;
8
+ run(_args: string[], options: RollupOptions): Promise<void>;
9
+ constructor(mysqlRollupService: MysqlRollupService);
10
+ }
11
+ //# sourceMappingURL=mysql-rollup-command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mysql-rollup-command.d.ts","sourceRoot":"","sources":["../../../../../../src/application/cli/commands/rollup/mysql-rollup-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,aAAa,EAAS,MAAM,gBAAgB,CAAC;AAE9D,OAAO,EAAC,kBAAkB,EAAC,MAAM,sDAAsD,CAAC;AACxF,OAAO,EAAC,aAAa,EAAoB,MAAM,wBAAwB,CAAC;AAExE,qBAKa,kBAAmB,SAAQ,aAAa;IA2BvC,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IApB/C,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IASlC,UAAU,IAAI,OAAO;IAIR,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,aAAa;gBAO3B,kBAAkB,EAAE,kBAAkB;CAGpE"}
@@ -56,3 +56,4 @@ exports.MysqlRollupCommand = MysqlRollupCommand = __decorate([
56
56
  }),
57
57
  __metadata("design:paramtypes", [mysql_rollup_service_1.MysqlRollupService])
58
58
  ], MysqlRollupCommand);
59
+ //# sourceMappingURL=mysql-rollup-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mysql-rollup-command.js","sourceRoot":"","sources":["../../../../../../src/application/cli/commands/rollup/mysql-rollup-command.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,mDAA8D;AAE9D,+FAAwF;AACxF,2DAAwE;AAOjE,IAAM,kBAAkB,GAAxB,MAAM,kBAAmB,SAAQ,8BAAa;IA2BtB;IApB7B,aAAa,CAAC,GAAW;QACvB,OAAO,GAAG,CAAC;IACb,CAAC;IAOD,UAAU;QACR,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,GAAG,CAAC,KAAe,EAAE,OAAsB;QACtD,MAAM,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAC/B,OAAO,CAAC,kCAAiB,CAAC,QAAQ,CAAC,EACnC,OAAO,CAAC,kCAAiB,CAAC,KAAK,CAAC,IAAI,KAAK,CAC1C,CAAC;IACJ,CAAC;IAED,YAA6B,kBAAsC;QACjE,KAAK,EAAE,CAAC;QADmB,uBAAkB,GAAlB,kBAAkB,CAAoB;IAEnE,CAAC;CACF,CAAA;AA9BY,gDAAkB;AAO7B;IANC,IAAA,uBAAM,EAAC;QACN,KAAK,EAAE,SAAS,kCAAiB,CAAC,QAAQ,aAAa;QACvD,WAAW,EACT,oEAAoE;QACtE,QAAQ,EAAE,IAAI;KACf,CAAC;;;;uDAGD;AAOD;IALC,IAAA,uBAAM,EAAC;QACN,KAAK,EAAE,KAAK,kCAAiB,CAAC,KAAK,EAAE;QACrC,WAAW,EACT,mEAAmE;KACtE,CAAC;;;;oDAGD;6BAlBU,kBAAkB;IAL9B,IAAA,wBAAO,EAAC;QACP,IAAI,EAAE,cAAc;QACpB,WAAW,EACT,+FAA+F;KAClG,CAAC;qCA4BiD,yCAAkB;GA3BxD,kBAAkB,CA8B9B","sourcesContent":["import {Command, CommandRunner, Option} from 'nest-commander';\n\nimport {MysqlRollupService} from '../../../../core/services/mysql/mysql-rollup-service';\nimport {RollupOptions, RollupOptionsKeys} from './types/rollup-options';\n\n@Command({\n name: 'mysql-rollup',\n description:\n 'Restore a MySQL database from a backup file (S3 by default, or local filesystem with --local)',\n})\nexport class MysqlRollupCommand extends CommandRunner {\n @Option({\n flags: `-f, --${RollupOptionsKeys.FILENAME} <filename>`,\n description:\n 'Backup filename to restore (e.g. mydb-2026-03-05T12-00-00Z.sql.gz)',\n required: true,\n })\n parseFilename(val: string): string {\n return val;\n }\n\n @Option({\n flags: `--${RollupOptionsKeys.LOCAL}`,\n description:\n 'Read backup from the local filesystem instead of S3 (default: S3)',\n })\n parseLocal(): boolean {\n return true;\n }\n\n public async run(_args: string[], options: RollupOptions) {\n await this.mysqlRollupService.run(\n options[RollupOptionsKeys.FILENAME],\n options[RollupOptionsKeys.LOCAL] ?? false,\n );\n }\n\n constructor(private readonly mysqlRollupService: MysqlRollupService) {\n super();\n }\n}\n"]}
@@ -0,0 +1,11 @@
1
+ import { CommandRunner } from 'nest-commander';
2
+ import { PsqlRollupService } from '../../../../core/services/psql/psql-rollup-service';
3
+ import { RollupOptions } from './types/rollup-options';
4
+ export declare class PsqlRollupCommand extends CommandRunner {
5
+ private readonly psqlRollupService;
6
+ parseFilename(val: string): string;
7
+ parseLocal(): boolean;
8
+ run(_args: string[], options: RollupOptions): Promise<void>;
9
+ constructor(psqlRollupService: PsqlRollupService);
10
+ }
11
+ //# sourceMappingURL=psql-rollup-command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"psql-rollup-command.d.ts","sourceRoot":"","sources":["../../../../../../src/application/cli/commands/rollup/psql-rollup-command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,aAAa,EAAS,MAAM,gBAAgB,CAAC;AAE9D,OAAO,EAAC,iBAAiB,EAAC,MAAM,oDAAoD,CAAC;AACrF,OAAO,EAAC,aAAa,EAAoB,MAAM,wBAAwB,CAAC;AAExE,qBAKa,iBAAkB,SAAQ,aAAa;IA2BtC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IApB9C,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IASlC,UAAU,IAAI,OAAO;IAIR,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,aAAa;gBAO3B,iBAAiB,EAAE,iBAAiB;CAGlE"}
@@ -56,3 +56,4 @@ exports.PsqlRollupCommand = PsqlRollupCommand = __decorate([
56
56
  }),
57
57
  __metadata("design:paramtypes", [psql_rollup_service_1.PsqlRollupService])
58
58
  ], PsqlRollupCommand);
59
+ //# sourceMappingURL=psql-rollup-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"psql-rollup-command.js","sourceRoot":"","sources":["../../../../../../src/application/cli/commands/rollup/psql-rollup-command.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,mDAA8D;AAE9D,4FAAqF;AACrF,2DAAwE;AAOjE,IAAM,iBAAiB,GAAvB,MAAM,iBAAkB,SAAQ,8BAAa;IA2BrB;IApB7B,aAAa,CAAC,GAAW;QACvB,OAAO,GAAG,CAAC;IACb,CAAC;IAOD,UAAU;QACR,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,GAAG,CAAC,KAAe,EAAE,OAAsB;QACtD,MAAM,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAC9B,OAAO,CAAC,kCAAiB,CAAC,QAAQ,CAAC,EACnC,OAAO,CAAC,kCAAiB,CAAC,KAAK,CAAC,IAAI,KAAK,CAC1C,CAAC;IACJ,CAAC;IAED,YAA6B,iBAAoC;QAC/D,KAAK,EAAE,CAAC;QADmB,sBAAiB,GAAjB,iBAAiB,CAAmB;IAEjE,CAAC;CACF,CAAA;AA9BY,8CAAiB;AAO5B;IANC,IAAA,uBAAM,EAAC;QACN,KAAK,EAAE,SAAS,kCAAiB,CAAC,QAAQ,aAAa;QACvD,WAAW,EACT,oEAAoE;QACtE,QAAQ,EAAE,IAAI;KACf,CAAC;;;;sDAGD;AAOD;IALC,IAAA,uBAAM,EAAC;QACN,KAAK,EAAE,KAAK,kCAAiB,CAAC,KAAK,EAAE;QACrC,WAAW,EACT,mEAAmE;KACtE,CAAC;;;;mDAGD;4BAlBU,iBAAiB;IAL7B,IAAA,wBAAO,EAAC;QACP,IAAI,EAAE,aAAa;QACnB,WAAW,EACT,oGAAoG;KACvG,CAAC;qCA4BgD,uCAAiB;GA3BtD,iBAAiB,CA8B7B","sourcesContent":["import {Command, CommandRunner, Option} from 'nest-commander';\n\nimport {PsqlRollupService} from '../../../../core/services/psql/psql-rollup-service';\nimport {RollupOptions, RollupOptionsKeys} from './types/rollup-options';\n\n@Command({\n name: 'psql-rollup',\n description:\n 'Restore a PostgreSQL database from a backup file (S3 by default, or local filesystem with --local)',\n})\nexport class PsqlRollupCommand extends CommandRunner {\n @Option({\n flags: `-f, --${RollupOptionsKeys.FILENAME} <filename>`,\n description:\n 'Backup filename to restore (e.g. mydb-2026-03-05T12-00-00Z.sql.gz)',\n required: true,\n })\n parseFilename(val: string): string {\n return val;\n }\n\n @Option({\n flags: `--${RollupOptionsKeys.LOCAL}`,\n description:\n 'Read backup from the local filesystem instead of S3 (default: S3)',\n })\n parseLocal(): boolean {\n return true;\n }\n\n public async run(_args: string[], options: RollupOptions) {\n await this.psqlRollupService.run(\n options[RollupOptionsKeys.FILENAME],\n options[RollupOptionsKeys.LOCAL] ?? false,\n );\n }\n\n constructor(private readonly psqlRollupService: PsqlRollupService) {\n super();\n }\n}\n"]}
@@ -0,0 +1,9 @@
1
+ export declare enum RollupOptionsKeys {
2
+ FILENAME = "filename",
3
+ LOCAL = "local"
4
+ }
5
+ export type RollupOptions = {
6
+ [RollupOptionsKeys.FILENAME]: string;
7
+ [RollupOptionsKeys.LOCAL]?: boolean;
8
+ };
9
+ //# sourceMappingURL=rollup-options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rollup-options.d.ts","sourceRoot":"","sources":["../../../../../../../src/application/cli/commands/rollup/types/rollup-options.ts"],"names":[],"mappings":"AAAA,oBAAY,iBAAiB;IAC3B,QAAQ,aAAa;IACrB,KAAK,UAAU;CAChB;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IACrC,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC;CACrC,CAAC"}
@@ -6,3 +6,4 @@ var RollupOptionsKeys;
6
6
  RollupOptionsKeys["FILENAME"] = "filename";
7
7
  RollupOptionsKeys["LOCAL"] = "local";
8
8
  })(RollupOptionsKeys || (exports.RollupOptionsKeys = RollupOptionsKeys = {}));
9
+ //# sourceMappingURL=rollup-options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rollup-options.js","sourceRoot":"","sources":["../../../../../../../src/application/cli/commands/rollup/types/rollup-options.ts"],"names":[],"mappings":";;;AAAA,IAAY,iBAGX;AAHD,WAAY,iBAAiB;IAC3B,0CAAqB,CAAA;IACrB,oCAAe,CAAA;AACjB,CAAC,EAHW,iBAAiB,iCAAjB,iBAAiB,QAG5B","sourcesContent":["export enum RollupOptionsKeys {\n FILENAME = 'filename',\n LOCAL = 'local',\n}\n\nexport type RollupOptions = {\n [RollupOptionsKeys.FILENAME]: string;\n [RollupOptionsKeys.LOCAL]?: boolean;\n};\n"]}
@@ -0,0 +1,8 @@
1
+ import { Logger } from '@nestjs/common';
2
+ import { CommandRunner } from 'nest-commander';
3
+ export declare class VersionCommand extends CommandRunner {
4
+ private readonly logger;
5
+ run(): Promise<void>;
6
+ constructor(logger: Logger);
7
+ }
8
+ //# sourceMappingURL=version-command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version-command.d.ts","sourceRoot":"","sources":["../../../../../../src/application/cli/commands/version/version-command.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,MAAM,EAAC,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAU,aAAa,EAAC,MAAM,gBAAgB,CAAC;AAEtD,qBACa,cAAe,SAAQ,aAAa;IAWnC,OAAO,CAAC,QAAQ,CAAC,MAAM;IAVtB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;gBAUJ,MAAM,EAAE,MAAM;CAG5C"}
@@ -31,3 +31,4 @@ exports.VersionCommand = VersionCommand = __decorate([
31
31
  (0, nest_commander_1.Command)({ name: 'version', description: 'Print current version' }),
32
32
  __metadata("design:paramtypes", [common_1.Logger])
33
33
  ], VersionCommand);
34
+ //# sourceMappingURL=version-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version-command.js","sourceRoot":"","sources":["../../../../../../src/application/cli/commands/version/version-command.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qCAAqC;AACrC,yCAA+B;AAE/B,2CAAsC;AACtC,mDAAsD;AAG/C,IAAM,cAAc,GAApB,MAAM,cAAe,SAAQ,8BAAa;IAWlB;IAVtB,KAAK,CAAC,GAAG;QACd,MAAM,IAAI,GAAG,IAAA,gBAAI,EAAC,SAAS,EAAE,gCAAgC,CAAC,CAAC;QAE/D,MAAM,EAAC,OAAO,EAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,sBAAY,EAAC,IAAI,EAAE,OAAO,CAAC,CAEvD,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,YAA6B,MAAc;QACzC,KAAK,EAAE,CAAC;QADmB,WAAM,GAAN,MAAM,CAAQ;IAE3C,CAAC;CACF,CAAA;AAdY,wCAAc;yBAAd,cAAc;IAD1B,IAAA,wBAAO,EAAC,EAAC,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,uBAAuB,EAAC,CAAC;qCAY1B,eAAM;GAXhC,cAAc,CAc1B","sourcesContent":["import {readFileSync} from 'node:fs';\nimport {join} from 'node:path';\n\nimport {Logger} from '@nestjs/common';\nimport {Command, CommandRunner} from 'nest-commander';\n\n@Command({name: 'version', description: 'Print current version'})\nexport class VersionCommand extends CommandRunner {\n public async run(): Promise<void> {\n const path = join(__dirname, '../../../../../../package.json');\n\n const {version} = JSON.parse(readFileSync(path, 'utf-8')) as {\n version: string;\n };\n\n this.logger.log(`Current Version: ${version}`);\n }\n\n constructor(private readonly logger: Logger) {\n super();\n }\n}\n"]}
@@ -0,0 +1,3 @@
1
+ export declare class CoreModule {
2
+ }
3
+ //# sourceMappingURL=core-module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core-module.d.ts","sourceRoot":"","sources":["../../../src/core/core-module.ts"],"names":[],"mappings":"AAkCA,qBACa,UAAU;CAAG"}
@@ -45,3 +45,4 @@ exports.CoreModule = CoreModule;
45
45
  exports.CoreModule = CoreModule = __decorate([
46
46
  (0, common_1.Module)(coreModule)
47
47
  ], CoreModule);
48
+ //# sourceMappingURL=core-module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core-module.js","sourceRoot":"","sources":["../../../src/core/core-module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAA8D;AAE9D,yFAAmF;AACnF,6EAAuE;AACvE,6FAAsF;AACtF,6FAAsF;AACtF,gFAAyE;AACzE,gFAAyE;AACzE,6EAAsE;AACtE,6EAAsE;AACtE,4EAAqE;AAErE,MAAM,UAAU,GAAmB;IACjC,OAAO,EAAE,CAAC,sCAAiB,EAAE,8BAAa,CAAC;IAC3C,SAAS,EAAE;QACT,eAAM;QACN,2CAAmB;QACnB,iDAAsB;QACtB,iDAAsB;QACtB,yCAAkB;QAClB,yCAAkB;QAClB,uCAAiB;QACjB,uCAAiB;KAClB;IACD,OAAO,EAAE;QACP,2CAAmB;QACnB,iDAAsB;QACtB,iDAAsB;QACtB,yCAAkB;QAClB,yCAAkB;QAClB,uCAAiB;QACjB,uCAAiB;KAClB;CACF,CAAC;AAEK,IAAM,UAAU,GAAhB,MAAM,UAAU;CAAG,CAAA;AAAb,gCAAU;qBAAV,UAAU;IADtB,IAAA,eAAM,EAAC,UAAU,CAAC;GACN,UAAU,CAAG","sourcesContent":["import {Logger, Module, ModuleMetadata} from '@nestjs/common';\n\nimport {EnvironmentModule} from '../infrastructure/environment/environment-module';\nimport {StorageModule} from '../infrastructure/storage/storage-module';\nimport {EasypanelBackupService} from './services/easy-panel/easypanel-backup-service';\nimport {EasypanelRollupService} from './services/easy-panel/easypanel-rollup-service';\nimport {MysqlBackupService} from './services/mysql/mysql-backup-service';\nimport {MysqlRollupService} from './services/mysql/mysql-rollup-service';\nimport {PsqlBackupService} from './services/psql/psql-backup-service';\nimport {PsqlRollupService} from './services/psql/psql-rollup-service';\nimport {ScriptLoaderService} from './services/script-loader-service';\n\nconst coreModule: ModuleMetadata = {\n imports: [EnvironmentModule, StorageModule],\n providers: [\n Logger,\n ScriptLoaderService,\n EasypanelBackupService,\n EasypanelRollupService,\n MysqlBackupService,\n MysqlRollupService,\n PsqlBackupService,\n PsqlRollupService,\n ],\n exports: [\n ScriptLoaderService,\n EasypanelBackupService,\n EasypanelRollupService,\n MysqlBackupService,\n MysqlRollupService,\n PsqlBackupService,\n PsqlRollupService,\n ],\n};\n@Module(coreModule)\nexport class CoreModule {}\n"]}
@@ -0,0 +1,21 @@
1
+ import { Logger } from '@nestjs/common';
2
+ import { S3StorageService } from '../../infrastructure/storage/services/s3-storage-service';
3
+ export declare abstract class BackupService {
4
+ protected readonly logger: Logger;
5
+ protected readonly s3StorageService: S3StorageService;
6
+ protected abstract dump(filename?: string): Promise<{
7
+ ok: true;
8
+ data: {
9
+ backupFileName: string;
10
+ };
11
+ } | {
12
+ ok: false;
13
+ error: Error;
14
+ }>;
15
+ protected resolveBackupFileName(filename: string | undefined, defaultBaseName: string, extension: string): string;
16
+ run(local: boolean, filename?: string): Promise<{
17
+ ok: boolean;
18
+ } | undefined>;
19
+ constructor(logger: Logger, s3StorageService: S3StorageService);
20
+ }
21
+ //# sourceMappingURL=backup-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backup-service.d.ts","sourceRoot":"","sources":["../../../../src/core/interfaces/backup-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,gBAAgB,CAAC;AAItC,OAAO,EAAC,gBAAgB,EAAC,MAAM,0DAA0D,CAAC;AAE1F,8BAAsB,aAAa;IA6C/B,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM;IACjC,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB;IA7CvD,SAAS,CAAC,QAAQ,CAAC,IAAI,CACrB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CACR;QAAC,EAAE,EAAE,IAAI,CAAC;QAAC,IAAI,EAAE;YAAC,cAAc,EAAE,MAAM,CAAA;SAAC,CAAA;KAAC,GAAG;QAAC,EAAE,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAC,CACvE;IAED,SAAS,CAAC,qBAAqB,CAC7B,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,eAAe,EAAE,MAAM,EACvB,SAAS,EAAE,MAAM,GAChB,MAAM;IAMI,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM;;;gBA4B7B,MAAM,EAAE,MAAM,EACd,gBAAgB,EAAE,gBAAgB;CAExD"}
@@ -34,3 +34,4 @@ class BackupService {
34
34
  }
35
35
  }
36
36
  exports.BackupService = BackupService;
37
+ //# sourceMappingURL=backup-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backup-service.js","sourceRoot":"","sources":["../../../../src/core/interfaces/backup-service.ts"],"names":[],"mappings":";;;AACA,2BAA8B;AAC9B,iCAA+B;AAI/B,MAAsB,aAAa;IA6CZ;IACA;IAvCX,qBAAqB,CAC7B,QAA4B,EAC5B,eAAuB,EACvB,SAAiB;QAEjB,MAAM,SAAS,GAAG,gBAAQ,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,0BAA0B,CAAC,CAAC;QAEtE,OAAO,QAAQ,IAAI,GAAG,eAAe,IAAI,SAAS,IAAI,SAAS,EAAE,CAAC;IACpE,CAAC;IAEM,KAAK,CAAC,GAAG,CAAC,KAAc,EAAE,QAAiB;QAChD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEzC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACxC,OAAO;QACT,CAAC;QAED,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,EAAC,EAAE,EAAE,IAAI,EAAC,CAAC;QACpB,CAAC;QAED,MAAM,EAAC,KAAK,EAAE,WAAW,EAAC,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAC7D,MAAM,CAAC,IAAI,CAAC,cAAc,CAC3B,CAAC;QAEF,IAAI,WAAW,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YACvC,OAAO;QACT,CAAC;QAED,IAAA,eAAU,EAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACvC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;QAE7C,OAAO,EAAC,EAAE,EAAE,IAAI,EAAC,CAAC;IACpB,CAAC;IAED,YACqB,MAAc,EACd,gBAAkC;QADlC,WAAM,GAAN,MAAM,CAAQ;QACd,qBAAgB,GAAhB,gBAAgB,CAAkB;IACpD,CAAC;CACL;AAhDD,sCAgDC","sourcesContent":["import {Logger} from '@nestjs/common';\nimport {unlinkSync} from 'fs';\nimport {DateTime} from 'luxon';\n\nimport {S3StorageService} from '../../infrastructure/storage/services/s3-storage-service';\n\nexport abstract class BackupService {\n protected abstract dump(\n filename?: string,\n ): Promise<\n {ok: true; data: {backupFileName: string}} | {ok: false; error: Error}\n >;\n\n protected resolveBackupFileName(\n filename: string | undefined,\n defaultBaseName: string,\n extension: string,\n ): string {\n const timestamp = DateTime.utc().toFormat(\"yyyy-MM-dd'T'HH-mm-ss'Z'\");\n\n return filename ?? `${defaultBaseName}-${timestamp}.${extension}`;\n }\n\n public async run(local: boolean, filename?: string) {\n const result = await this.dump(filename);\n\n if (!result.ok) {\n this.logger.error(result.error.message);\n return;\n }\n\n if (local) {\n return {ok: true};\n }\n\n const {error: uploadError} = await this.s3StorageService.upload(\n result.data.backupFileName,\n );\n\n if (uploadError) {\n this.logger.error(uploadError.message);\n return;\n }\n\n unlinkSync(result.data.backupFileName);\n this.logger.log('Deleted local backup file');\n\n return {ok: true};\n }\n\n constructor(\n protected readonly logger: Logger,\n protected readonly s3StorageService: S3StorageService,\n ) {}\n}\n"]}
@@ -0,0 +1,18 @@
1
+ import { Logger } from '@nestjs/common';
2
+ import { S3StorageService } from '../../infrastructure/storage/services/s3-storage-service';
3
+ export declare abstract class RollupService {
4
+ protected readonly logger: Logger;
5
+ protected readonly s3StorageService: S3StorageService;
6
+ protected abstract restore(filename: string): Promise<{
7
+ ok: true;
8
+ data: {
9
+ backupFileName: string;
10
+ };
11
+ } | {
12
+ ok: false;
13
+ error: Error;
14
+ }>;
15
+ run(filename: string, local: boolean): Promise<void>;
16
+ constructor(logger: Logger, s3StorageService: S3StorageService);
17
+ }
18
+ //# sourceMappingURL=rollup-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rollup-service.d.ts","sourceRoot":"","sources":["../../../../src/core/interfaces/rollup-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,gBAAgB,CAAC;AAGtC,OAAO,EAAC,gBAAgB,EAAC,MAAM,0DAA0D,CAAC;AAE1F,8BAAsB,aAAa;IAkC/B,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM;IACjC,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB;IAlCvD,SAAS,CAAC,QAAQ,CAAC,OAAO,CACxB,QAAQ,EAAE,MAAM,GACf,OAAO,CACR;QAAC,EAAE,EAAE,IAAI,CAAC;QAAC,IAAI,EAAE;YAAC,cAAc,EAAE,MAAM,CAAA;SAAC,CAAA;KAAC,GAAG;QAAC,EAAE,EAAE,KAAK,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAC,CACvE;IAEY,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO;gBA2B5B,MAAM,EAAE,MAAM,EACd,gBAAgB,EAAE,gBAAgB;CAExD"}
@@ -30,3 +30,4 @@ class RollupService {
30
30
  }
31
31
  }
32
32
  exports.RollupService = RollupService;
33
+ //# sourceMappingURL=rollup-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rollup-service.js","sourceRoot":"","sources":["../../../../src/core/interfaces/rollup-service.ts"],"names":[],"mappings":";;;AACA,2BAA8B;AAI9B,MAAsB,aAAa;IAkCZ;IACA;IA5Bd,KAAK,CAAC,GAAG,CAAC,QAAgB,EAAE,KAAc;QAC/C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,EAAC,KAAK,EAAE,aAAa,EAAC,GAC1B,MAAM,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAEjD,IAAI,aAAa,EAAE,CAAC;gBAClB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;gBACzC,OAAO;YACT,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAE5C,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACxC,OAAO;QACT,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;QAE1D,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,IAAA,eAAU,EAAC,QAAQ,CAAC,CAAC;YACrB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAED,YACqB,MAAc,EACd,gBAAkC;QADlC,WAAM,GAAN,MAAM,CAAQ;QACd,qBAAgB,GAAhB,gBAAgB,CAAkB;IACpD,CAAC;CACL;AArCD,sCAqCC","sourcesContent":["import {Logger} from '@nestjs/common';\nimport {unlinkSync} from 'fs';\n\nimport {S3StorageService} from '../../infrastructure/storage/services/s3-storage-service';\n\nexport abstract class RollupService {\n protected abstract restore(\n filename: string,\n ): Promise<\n {ok: true; data: {backupFileName: string}} | {ok: false; error: Error}\n >;\n\n public async run(filename: string, local: boolean) {\n if (!local) {\n const {error: downloadError} =\n await this.s3StorageService.download(filename);\n\n if (downloadError) {\n this.logger.error(downloadError.message);\n return;\n }\n }\n\n const result = await this.restore(filename);\n\n if (!result.ok) {\n this.logger.error(result.error.message);\n return;\n }\n\n this.logger.log(`Restored ${result.data.backupFileName}`);\n\n if (!local) {\n unlinkSync(filename);\n this.logger.log('Deleted downloaded backup file');\n }\n }\n\n constructor(\n protected readonly logger: Logger,\n protected readonly s3StorageService: S3StorageService,\n ) {}\n}\n"]}
@@ -0,0 +1,22 @@
1
+ import { Logger } from '@nestjs/common';
2
+ import { S3StorageService } from '../../../infrastructure/storage/services/s3-storage-service';
3
+ import { BackupService } from '../../interfaces/backup-service';
4
+ import { ScriptLoaderService } from '../script-loader-service';
5
+ export declare class EasypanelBackupService extends BackupService {
6
+ protected readonly logger: Logger;
7
+ protected readonly s3StorageService: S3StorageService;
8
+ private readonly scriptLoader;
9
+ protected dump(filename?: string): Promise<{
10
+ ok: false;
11
+ error: Error;
12
+ data?: undefined;
13
+ } | {
14
+ ok: true;
15
+ data: {
16
+ backupFileName: string;
17
+ };
18
+ error?: undefined;
19
+ }>;
20
+ constructor(logger: Logger, s3StorageService: S3StorageService, scriptLoader: ScriptLoaderService);
21
+ }
22
+ //# sourceMappingURL=easypanel-backup-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"easypanel-backup-service.d.ts","sourceRoot":"","sources":["../../../../../src/core/services/easy-panel/easypanel-backup-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAC,MAAM,gBAAgB,CAAC;AAGlD,OAAO,EAAC,gBAAgB,EAAC,MAAM,6DAA6D,CAAC;AAC7F,OAAO,EAAC,aAAa,EAAC,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAC,mBAAmB,EAAC,MAAM,0BAA0B,CAAC;AAE7D,qBACa,sBAAuB,SAAQ,aAAa;IAsCrD,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM;IACjC,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB;IACrD,OAAO,CAAC,QAAQ,CAAC,YAAY;cAvCf,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM;;;;;;;;;;;gBAqCjB,MAAM,EAAE,MAAM,EACd,gBAAgB,EAAE,gBAAgB,EACpC,YAAY,EAAE,mBAAmB;CAIrD"}
@@ -57,3 +57,4 @@ exports.EasypanelBackupService = EasypanelBackupService = __decorate([
57
57
  s3_storage_service_1.S3StorageService,
58
58
  script_loader_service_1.ScriptLoaderService])
59
59
  ], EasypanelBackupService);
60
+ //# sourceMappingURL=easypanel-backup-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"easypanel-backup-service.js","sourceRoot":"","sources":["../../../../../src/core/services/easy-panel/easypanel-backup-service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAkD;AAClD,iDAAuC;AAEvC,oGAA6F;AAC7F,oEAA8D;AAC9D,oEAA6D;AAGtD,IAAM,sBAAsB,GAA5B,MAAM,sBAAuB,SAAQ,8BAAa;IAsClC;IACA;IACF;IAvCT,KAAK,CAAC,IAAI,CAAC,QAAiB;QACpC,IAAI,OAAO,CAAC,MAAM,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC;YAC7B,OAAO;gBACL,EAAE,EAAE,KAAc;gBAClB,KAAK,EAAE,IAAI,KAAK,CACd,8EAA8E,CAC/E;aACF,CAAC;QACJ,CAAC;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,qBAAqB,CAC/C,QAAQ,EACR,WAAW,EACX,QAAQ,CACT,CAAC;QAEF,IAAI,CAAC;YACH,IAAA,wBAAQ,EAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,kBAAkB,CAAC,EAAE;gBACjE,GAAG,EAAE;oBACH,GAAG,OAAO,CAAC,GAAG;oBACd,OAAO,EAAE,cAAc;iBACxB;gBACD,KAAK,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC;gBACrC,KAAK,EAAE,WAAW;aACnB,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,GAAG,CACb,iDAAiD,cAAc,EAAE,CAClE,CAAC;YAEF,OAAO,EAAC,EAAE,EAAE,IAAa,EAAE,IAAI,EAAE,EAAC,cAAc,EAAC,EAAC,CAAC;QACrD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAC,EAAE,EAAE,KAAc,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC,yBAAyB,CAAC,EAAC,CAAC;QAC3E,CAAC;IACH,CAAC;IAED,YACqB,MAAc,EACd,gBAAkC,EACpC,YAAiC;QAElD,KAAK,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;QAJb,WAAM,GAAN,MAAM,CAAQ;QACd,qBAAgB,GAAhB,gBAAgB,CAAkB;QACpC,iBAAY,GAAZ,YAAY,CAAqB;IAGpD,CAAC;CACF,CAAA;AA5CY,wDAAsB;iCAAtB,sBAAsB;IADlC,IAAA,mBAAU,GAAE;qCAuCkB,eAAM;QACI,qCAAgB;QACtB,2CAAmB;GAxCzC,sBAAsB,CA4ClC","sourcesContent":["import {Injectable, Logger} from '@nestjs/common';\nimport {execSync} from 'child_process';\n\nimport {S3StorageService} from '../../../infrastructure/storage/services/s3-storage-service';\nimport {BackupService} from '../../interfaces/backup-service';\nimport {ScriptLoaderService} from '../script-loader-service';\n\n@Injectable()\nexport class EasypanelBackupService extends BackupService {\n protected async dump(filename?: string) {\n if (process.getuid?.() !== 0) {\n return {\n ok: false as const,\n error: new Error(\n 'easypanel-backup must run as root (needs systemctl + /var/lib/docker access)',\n ),\n };\n }\n\n const backupFileName = this.resolveBackupFileName(\n filename,\n 'easypanel',\n 'tar.gz',\n );\n\n try {\n execSync(this.scriptLoader.load('easy-panel', 'easypanel-backup'), {\n env: {\n ...process.env,\n ARCHIVE: backupFileName,\n },\n stdio: ['inherit', 'pipe', 'inherit'],\n shell: '/bin/bash',\n });\n\n this.logger.log(\n `Backup EasyPanel host successfully! Filename: ${backupFileName}`,\n );\n\n return {ok: true as const, data: {backupFileName}};\n } catch {\n return {ok: false as const, error: new Error('easypanel backup failed')};\n }\n }\n\n constructor(\n protected readonly logger: Logger,\n protected readonly s3StorageService: S3StorageService,\n private readonly scriptLoader: ScriptLoaderService,\n ) {\n super(logger, s3StorageService);\n }\n}\n"]}
@@ -0,0 +1,22 @@
1
+ import { Logger } from '@nestjs/common';
2
+ import { S3StorageService } from '../../../infrastructure/storage/services/s3-storage-service';
3
+ import { RollupService } from '../../interfaces/rollup-service';
4
+ import { ScriptLoaderService } from '../script-loader-service';
5
+ export declare class EasypanelRollupService extends RollupService {
6
+ protected readonly logger: Logger;
7
+ protected readonly s3StorageService: S3StorageService;
8
+ private readonly scriptLoader;
9
+ protected restore(backupFileName: string): Promise<{
10
+ ok: false;
11
+ error: Error;
12
+ data?: undefined;
13
+ } | {
14
+ ok: true;
15
+ data: {
16
+ backupFileName: string;
17
+ };
18
+ error?: undefined;
19
+ }>;
20
+ constructor(logger: Logger, s3StorageService: S3StorageService, scriptLoader: ScriptLoaderService);
21
+ }
22
+ //# sourceMappingURL=easypanel-rollup-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"easypanel-rollup-service.d.ts","sourceRoot":"","sources":["../../../../../src/core/services/easy-panel/easypanel-rollup-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAC,MAAM,gBAAgB,CAAC;AAGlD,OAAO,EAAC,gBAAgB,EAAC,MAAM,6DAA6D,CAAC;AAC7F,OAAO,EAAC,aAAa,EAAC,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAC,mBAAmB,EAAC,MAAM,0BAA0B,CAAC;AAE7D,qBACa,sBAAuB,SAAQ,aAAa;IA4BrD,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM;IACjC,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB;IACrD,OAAO,CAAC,QAAQ,CAAC,YAAY;cA7Bf,OAAO,CAAC,cAAc,EAAE,MAAM;;;;;;;;;;;gBA2BzB,MAAM,EAAE,MAAM,EACd,gBAAgB,EAAE,gBAAgB,EACpC,YAAY,EAAE,mBAAmB;CAIrD"}
@@ -55,3 +55,4 @@ exports.EasypanelRollupService = EasypanelRollupService = __decorate([
55
55
  s3_storage_service_1.S3StorageService,
56
56
  script_loader_service_1.ScriptLoaderService])
57
57
  ], EasypanelRollupService);
58
+ //# sourceMappingURL=easypanel-rollup-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"easypanel-rollup-service.js","sourceRoot":"","sources":["../../../../../src/core/services/easy-panel/easypanel-rollup-service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAkD;AAClD,iDAAuC;AAEvC,oGAA6F;AAC7F,oEAA8D;AAC9D,oEAA6D;AAGtD,IAAM,sBAAsB,GAA5B,MAAM,sBAAuB,SAAQ,8BAAa;IA4BlC;IACA;IACF;IA7BT,KAAK,CAAC,OAAO,CAAC,cAAsB;QAC5C,IAAI,OAAO,CAAC,MAAM,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC;YAC7B,OAAO;gBACL,EAAE,EAAE,KAAc;gBAClB,KAAK,EAAE,IAAI,KAAK,CACd,8EAA8E,CAC/E;aACF,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,IAAA,wBAAQ,EAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,kBAAkB,CAAC,EAAE;gBACjE,GAAG,EAAE;oBACH,GAAG,OAAO,CAAC,GAAG;oBACd,OAAO,EAAE,cAAc;iBACxB;gBACD,KAAK,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC;gBACrC,KAAK,EAAE,WAAW;aACnB,CAAC,CAAC;YAEH,OAAO,EAAC,EAAE,EAAE,IAAa,EAAE,IAAI,EAAE,EAAC,cAAc,EAAC,EAAC,CAAC;QACrD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAC,EAAE,EAAE,KAAc,EAAE,KAAK,EAAE,IAAI,KAAK,CAAC,0BAA0B,CAAC,EAAC,CAAC;QAC5E,CAAC;IACH,CAAC;IAED,YACqB,MAAc,EACd,gBAAkC,EACpC,YAAiC;QAElD,KAAK,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;QAJb,WAAM,GAAN,MAAM,CAAQ;QACd,qBAAgB,GAAhB,gBAAgB,CAAkB;QACpC,iBAAY,GAAZ,YAAY,CAAqB;IAGpD,CAAC;CACF,CAAA;AAlCY,wDAAsB;iCAAtB,sBAAsB;IADlC,IAAA,mBAAU,GAAE;qCA6BkB,eAAM;QACI,qCAAgB;QACtB,2CAAmB;GA9BzC,sBAAsB,CAkClC","sourcesContent":["import {Injectable, Logger} from '@nestjs/common';\nimport {execSync} from 'child_process';\n\nimport {S3StorageService} from '../../../infrastructure/storage/services/s3-storage-service';\nimport {RollupService} from '../../interfaces/rollup-service';\nimport {ScriptLoaderService} from '../script-loader-service';\n\n@Injectable()\nexport class EasypanelRollupService extends RollupService {\n protected async restore(backupFileName: string) {\n if (process.getuid?.() !== 0) {\n return {\n ok: false as const,\n error: new Error(\n 'easypanel-rollup must run as root (needs systemctl + /var/lib/docker access)',\n ),\n };\n }\n\n try {\n execSync(this.scriptLoader.load('easy-panel', 'easypanel-rollup'), {\n env: {\n ...process.env,\n ARCHIVE: backupFileName,\n },\n stdio: ['inherit', 'pipe', 'inherit'],\n shell: '/bin/bash',\n });\n\n return {ok: true as const, data: {backupFileName}};\n } catch {\n return {ok: false as const, error: new Error('easypanel restore failed')};\n }\n }\n\n constructor(\n protected readonly logger: Logger,\n protected readonly s3StorageService: S3StorageService,\n private readonly scriptLoader: ScriptLoaderService,\n ) {\n super(logger, s3StorageService);\n }\n}\n"]}
@@ -0,0 +1,24 @@
1
+ import { Logger } from '@nestjs/common';
2
+ import { EnvironmentService } from '../../../infrastructure/environment/services/environment-service';
3
+ import { S3StorageService } from '../../../infrastructure/storage/services/s3-storage-service';
4
+ import { BackupService } from '../../interfaces/backup-service';
5
+ import { ScriptLoaderService } from '../script-loader-service';
6
+ export declare class MysqlBackupService extends BackupService {
7
+ protected readonly logger: Logger;
8
+ private readonly environmentService;
9
+ protected readonly s3StorageService: S3StorageService;
10
+ private readonly scriptLoader;
11
+ protected dump(filename?: string): Promise<{
12
+ ok: false;
13
+ error: Error;
14
+ data?: undefined;
15
+ } | {
16
+ ok: true;
17
+ data: {
18
+ backupFileName: string;
19
+ };
20
+ error?: undefined;
21
+ }>;
22
+ constructor(logger: Logger, environmentService: EnvironmentService, s3StorageService: S3StorageService, scriptLoader: ScriptLoaderService);
23
+ }
24
+ //# sourceMappingURL=mysql-backup-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mysql-backup-service.d.ts","sourceRoot":"","sources":["../../../../../src/core/services/mysql/mysql-backup-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,MAAM,EAAC,MAAM,gBAAgB,CAAC;AAGlD,OAAO,EAAC,kBAAkB,EAAC,MAAM,kEAAkE,CAAC;AACpG,OAAO,EAAC,gBAAgB,EAAC,MAAM,6DAA6D,CAAC;AAC7F,OAAO,EAAC,aAAa,EAAC,MAAM,iCAAiC,CAAC;AAC9D,OAAO,EAAC,mBAAmB,EAAC,MAAM,0BAA0B,CAAC;AAE7D,qBACa,kBAAmB,SAAQ,aAAa;IAsCjD,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM;IACjC,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB;IACrD,OAAO,CAAC,QAAQ,CAAC,YAAY;cAxCf,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM;;;;;;;;;;;gBAqCjB,MAAM,EAAE,MAAM,EAChB,kBAAkB,EAAE,kBAAkB,EACpC,gBAAgB,EAAE,gBAAgB,EACpC,YAAY,EAAE,mBAAmB;CAIrD"}
@@ -65,3 +65,4 @@ exports.MysqlBackupService = MysqlBackupService = __decorate([
65
65
  s3_storage_service_1.S3StorageService,
66
66
  script_loader_service_1.ScriptLoaderService])
67
67
  ], MysqlBackupService);
68
+ //# sourceMappingURL=mysql-backup-service.js.map