@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.
- package/README.md +15 -10
- package/bin/src/application/cli/cli-module.d.ts +5 -0
- package/bin/src/application/cli/cli-module.d.ts.map +1 -0
- package/bin/src/application/cli/cli-module.js +1 -0
- package/bin/src/application/cli/cli-module.js.map +1 -0
- package/bin/src/application/cli/commands/backup/easypanel-backup-command.d.ts +11 -0
- package/bin/src/application/cli/commands/backup/easypanel-backup-command.d.ts.map +1 -0
- package/bin/src/application/cli/commands/backup/easypanel-backup-command.js +1 -0
- package/bin/src/application/cli/commands/backup/easypanel-backup-command.js.map +1 -0
- package/bin/src/application/cli/commands/backup/mysql-backup-command.d.ts +11 -0
- package/bin/src/application/cli/commands/backup/mysql-backup-command.d.ts.map +1 -0
- package/bin/src/application/cli/commands/backup/mysql-backup-command.js +1 -0
- package/bin/src/application/cli/commands/backup/mysql-backup-command.js.map +1 -0
- package/bin/src/application/cli/commands/backup/psql-backup-command.d.ts +11 -0
- package/bin/src/application/cli/commands/backup/psql-backup-command.d.ts.map +1 -0
- package/bin/src/application/cli/commands/backup/psql-backup-command.js +1 -0
- package/bin/src/application/cli/commands/backup/psql-backup-command.js.map +1 -0
- package/bin/src/application/cli/commands/backup/types/backup-options.d.ts +9 -0
- package/bin/src/application/cli/commands/backup/types/backup-options.d.ts.map +1 -0
- package/bin/src/application/cli/commands/backup/types/backup-options.js +1 -0
- package/bin/src/application/cli/commands/backup/types/backup-options.js.map +1 -0
- package/bin/src/application/cli/commands/rollup/easypanel-rollup-command.d.ts +11 -0
- package/bin/src/application/cli/commands/rollup/easypanel-rollup-command.d.ts.map +1 -0
- package/bin/src/application/cli/commands/rollup/easypanel-rollup-command.js +1 -0
- package/bin/src/application/cli/commands/rollup/easypanel-rollup-command.js.map +1 -0
- package/bin/src/application/cli/commands/rollup/mysql-rollup-command.d.ts +11 -0
- package/bin/src/application/cli/commands/rollup/mysql-rollup-command.d.ts.map +1 -0
- package/bin/src/application/cli/commands/rollup/mysql-rollup-command.js +1 -0
- package/bin/src/application/cli/commands/rollup/mysql-rollup-command.js.map +1 -0
- package/bin/src/application/cli/commands/rollup/psql-rollup-command.d.ts +11 -0
- package/bin/src/application/cli/commands/rollup/psql-rollup-command.d.ts.map +1 -0
- package/bin/src/application/cli/commands/rollup/psql-rollup-command.js +1 -0
- package/bin/src/application/cli/commands/rollup/psql-rollup-command.js.map +1 -0
- package/bin/src/application/cli/commands/rollup/types/rollup-options.d.ts +9 -0
- package/bin/src/application/cli/commands/rollup/types/rollup-options.d.ts.map +1 -0
- package/bin/src/application/cli/commands/rollup/types/rollup-options.js +1 -0
- package/bin/src/application/cli/commands/rollup/types/rollup-options.js.map +1 -0
- package/bin/src/application/cli/commands/version/version-command.d.ts +8 -0
- package/bin/src/application/cli/commands/version/version-command.d.ts.map +1 -0
- package/bin/src/application/cli/commands/version/version-command.js +1 -0
- package/bin/src/application/cli/commands/version/version-command.js.map +1 -0
- package/bin/src/core/core-module.d.ts +3 -0
- package/bin/src/core/core-module.d.ts.map +1 -0
- package/bin/src/core/core-module.js +1 -0
- package/bin/src/core/core-module.js.map +1 -0
- package/bin/src/core/interfaces/backup-service.d.ts +21 -0
- package/bin/src/core/interfaces/backup-service.d.ts.map +1 -0
- package/bin/src/core/interfaces/backup-service.js +1 -0
- package/bin/src/core/interfaces/backup-service.js.map +1 -0
- package/bin/src/core/interfaces/rollup-service.d.ts +18 -0
- package/bin/src/core/interfaces/rollup-service.d.ts.map +1 -0
- package/bin/src/core/interfaces/rollup-service.js +1 -0
- package/bin/src/core/interfaces/rollup-service.js.map +1 -0
- package/bin/src/core/services/easy-panel/easypanel-backup-service.d.ts +22 -0
- package/bin/src/core/services/easy-panel/easypanel-backup-service.d.ts.map +1 -0
- package/bin/src/core/services/easy-panel/easypanel-backup-service.js +1 -0
- package/bin/src/core/services/easy-panel/easypanel-backup-service.js.map +1 -0
- package/bin/src/core/services/easy-panel/easypanel-rollup-service.d.ts +22 -0
- package/bin/src/core/services/easy-panel/easypanel-rollup-service.d.ts.map +1 -0
- package/bin/src/core/services/easy-panel/easypanel-rollup-service.js +1 -0
- package/bin/src/core/services/easy-panel/easypanel-rollup-service.js.map +1 -0
- package/bin/src/core/services/mysql/mysql-backup-service.d.ts +24 -0
- package/bin/src/core/services/mysql/mysql-backup-service.d.ts.map +1 -0
- package/bin/src/core/services/mysql/mysql-backup-service.js +1 -0
- package/bin/src/core/services/mysql/mysql-backup-service.js.map +1 -0
- package/bin/src/core/services/mysql/mysql-rollup-service.d.ts +24 -0
- package/bin/src/core/services/mysql/mysql-rollup-service.d.ts.map +1 -0
- package/bin/src/core/services/mysql/mysql-rollup-service.js +1 -0
- package/bin/src/core/services/mysql/mysql-rollup-service.js.map +1 -0
- package/bin/src/core/services/psql/psql-backup-service.d.ts +24 -0
- package/bin/src/core/services/psql/psql-backup-service.d.ts.map +1 -0
- package/bin/src/core/services/psql/psql-backup-service.js +1 -0
- package/bin/src/core/services/psql/psql-backup-service.js.map +1 -0
- package/bin/src/core/services/psql/psql-rollup-service.d.ts +24 -0
- package/bin/src/core/services/psql/psql-rollup-service.d.ts.map +1 -0
- package/bin/src/core/services/psql/psql-rollup-service.js +1 -0
- package/bin/src/core/services/psql/psql-rollup-service.js.map +1 -0
- package/bin/src/core/services/script-loader-service.d.ts +4 -0
- package/bin/src/core/services/script-loader-service.d.ts.map +1 -0
- package/bin/src/core/services/script-loader-service.js +1 -0
- package/bin/src/core/services/script-loader-service.js.map +1 -0
- package/bin/src/infrastructure/environment/environment-module.d.ts +5 -0
- package/bin/src/infrastructure/environment/environment-module.d.ts.map +1 -0
- package/bin/src/infrastructure/environment/environment-module.js +2 -1
- package/bin/src/infrastructure/environment/environment-module.js.map +1 -0
- package/bin/src/infrastructure/environment/services/database-url-service.d.ts +24 -0
- package/bin/src/infrastructure/environment/services/database-url-service.d.ts.map +1 -0
- package/bin/src/infrastructure/environment/services/database-url-service.js +1 -0
- package/bin/src/infrastructure/environment/services/database-url-service.js.map +1 -0
- package/bin/src/infrastructure/environment/services/environment-service.d.ts +26 -0
- package/bin/src/infrastructure/environment/services/environment-service.d.ts.map +1 -0
- package/bin/src/infrastructure/environment/services/environment-service.js +1 -0
- package/bin/src/infrastructure/environment/services/environment-service.js.map +1 -0
- package/bin/src/infrastructure/log/log-module.d.ts +3 -0
- package/bin/src/infrastructure/log/log-module.d.ts.map +1 -0
- package/bin/src/infrastructure/log/log-module.js +1 -0
- package/bin/src/infrastructure/log/log-module.js.map +1 -0
- package/bin/src/infrastructure/storage/services/s3-storage-service.d.ts +24 -0
- package/bin/src/infrastructure/storage/services/s3-storage-service.d.ts.map +1 -0
- package/bin/src/infrastructure/storage/services/s3-storage-service.js +1 -0
- package/bin/src/infrastructure/storage/services/s3-storage-service.js.map +1 -0
- package/bin/src/infrastructure/storage/storage-module.d.ts +5 -0
- package/bin/src/infrastructure/storage/storage-module.d.ts.map +1 -0
- package/bin/src/infrastructure/storage/storage-module.js +1 -0
- package/bin/src/infrastructure/storage/storage-module.js.map +1 -0
- package/bin/src/main.d.ts +3 -0
- package/bin/src/main.d.ts.map +1 -0
- package/bin/src/main.js +1 -0
- package/bin/src/main.js.map +1 -0
- package/bin/tsconfig.bin.tsbuildinfo +1 -0
- 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.
|
|
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
|
|
187
|
+
`integration/{postgres,mysql}/Dockerfile` images:
|
|
187
188
|
|
|
188
189
|
```bash
|
|
189
190
|
docker compose up postgres mysql # local DBs only
|
|
190
|
-
|
|
191
|
-
|
|
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/
|
|
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
|
|
249
|
-
pnpm lint:fix
|
|
250
|
-
pnpm build
|
|
251
|
-
pnpm test:unit
|
|
252
|
-
pnpm
|
|
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 @@
|
|
|
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"}
|
|
@@ -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"}
|
|
@@ -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"}
|
|
@@ -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"}
|
|
@@ -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 @@
|
|
|
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"}
|
|
@@ -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"}
|
|
@@ -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"}
|
|
@@ -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"}
|
|
@@ -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 @@
|
|
|
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"}
|
|
@@ -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 @@
|
|
|
1
|
+
{"version":3,"file":"core-module.d.ts","sourceRoot":"","sources":["../../../src/core/core-module.ts"],"names":[],"mappings":"AAkCA,qBACa,UAAU;CAAG"}
|
|
@@ -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"}
|
|
@@ -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"}
|
|
@@ -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"}
|
|
@@ -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"}
|
|
@@ -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"}
|