@futo-org/backups-orchestrator-api 0.45.0 → 0.46.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/dist/controllers/config.controller.d.ts +8 -0
- package/dist/controllers/config.controller.js +52 -0
- package/dist/controllers/config.controller.js.map +1 -0
- package/dist/controllers/integrations.controller.d.ts +3 -1
- package/dist/controllers/integrations.controller.js +19 -0
- package/dist/controllers/integrations.controller.js.map +1 -1
- package/dist/dto/config.dto.d.ts +24 -0
- package/dist/dto/config.dto.js +26 -0
- package/dist/dto/config.dto.js.map +1 -0
- package/dist/dto/integrations.dto.d.ts +17 -0
- package/dist/dto/integrations.dto.js +18 -1
- package/dist/dto/integrations.dto.js.map +1 -1
- package/dist/enum.d.ts +4 -1
- package/dist/enum.js +3 -0
- package/dist/enum.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js.map +1 -1
- package/dist/moduleConfig.d.ts +10 -1
- package/dist/moduleConfig.js.map +1 -1
- package/dist/orchestrationApi.module.d.ts +4 -2
- package/dist/orchestrationApi.module.js +4 -0
- package/dist/orchestrationApi.module.js.map +1 -1
- package/dist/proxy/resticProxy.d.ts +8 -1
- package/dist/proxy/resticProxy.js +13 -4
- package/dist/proxy/resticProxy.js.map +1 -1
- package/dist/proxy/resticProxyPool.d.ts +11 -3
- package/dist/proxy/resticProxyPool.js +35 -4
- package/dist/proxy/resticProxyPool.js.map +1 -1
- package/dist/repositories/config.repository.d.ts +6 -0
- package/dist/repositories/config.repository.js +26 -6
- package/dist/repositories/config.repository.js.map +1 -1
- package/dist/services/bootstrap.service.d.ts +3 -1
- package/dist/services/bootstrap.service.js +6 -1
- package/dist/services/bootstrap.service.js.map +1 -1
- package/dist/services/config.service.d.ts +11 -0
- package/dist/services/config.service.js +46 -0
- package/dist/services/config.service.js.map +1 -0
- package/dist/services/integrations.service.d.ts +6 -2
- package/dist/services/integrations.service.js +22 -3
- package/dist/services/integrations.service.js.map +1 -1
- package/dist/services/repository.service.js +14 -1
- package/dist/services/repository.service.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ConfigResponseDto, ConfigUpdateRequestDto } from '../dto/config.dto';
|
|
2
|
+
import { ConfigService } from '../services/config.service';
|
|
3
|
+
export declare class ConfigController {
|
|
4
|
+
private readonly service;
|
|
5
|
+
constructor(service: ConfigService);
|
|
6
|
+
getConfig(): ConfigResponseDto;
|
|
7
|
+
updateConfig(dto: ConfigUpdateRequestDto): Promise<ConfigResponseDto>;
|
|
8
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.ConfigController = void 0;
|
|
16
|
+
const common_1 = require("@nestjs/common");
|
|
17
|
+
const swagger_1 = require("@nestjs/swagger");
|
|
18
|
+
const config_dto_1 = require("../dto/config.dto");
|
|
19
|
+
const config_service_1 = require("../services/config.service");
|
|
20
|
+
let ConfigController = class ConfigController {
|
|
21
|
+
service;
|
|
22
|
+
constructor(service) {
|
|
23
|
+
this.service = service;
|
|
24
|
+
}
|
|
25
|
+
getConfig() {
|
|
26
|
+
return this.service.getConfig();
|
|
27
|
+
}
|
|
28
|
+
updateConfig(dto) {
|
|
29
|
+
return this.service.updateConfig(dto);
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
exports.ConfigController = ConfigController;
|
|
33
|
+
__decorate([
|
|
34
|
+
(0, common_1.Get)(),
|
|
35
|
+
(0, swagger_1.ApiOkResponse)({ type: config_dto_1.ConfigResponseDto }),
|
|
36
|
+
__metadata("design:type", Function),
|
|
37
|
+
__metadata("design:paramtypes", []),
|
|
38
|
+
__metadata("design:returntype", config_dto_1.ConfigResponseDto)
|
|
39
|
+
], ConfigController.prototype, "getConfig", null);
|
|
40
|
+
__decorate([
|
|
41
|
+
(0, common_1.Put)(),
|
|
42
|
+
(0, swagger_1.ApiOkResponse)({ type: config_dto_1.ConfigResponseDto }),
|
|
43
|
+
__param(0, (0, common_1.Body)()),
|
|
44
|
+
__metadata("design:type", Function),
|
|
45
|
+
__metadata("design:paramtypes", [config_dto_1.ConfigUpdateRequestDto]),
|
|
46
|
+
__metadata("design:returntype", Promise)
|
|
47
|
+
], ConfigController.prototype, "updateConfig", null);
|
|
48
|
+
exports.ConfigController = ConfigController = __decorate([
|
|
49
|
+
(0, common_1.Controller)('/yucca/config'),
|
|
50
|
+
__metadata("design:paramtypes", [config_service_1.ConfigService])
|
|
51
|
+
], ConfigController);
|
|
52
|
+
//# sourceMappingURL=config.controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.controller.js","sourceRoot":"","sources":["../../src/controllers/config.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAA4D;AAC5D,6CAAgD;AAChD,kDAA8E;AAC9E,+DAA2D;AAGpD,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IACE;IAA7B,YAA6B,OAAsB;QAAtB,YAAO,GAAP,OAAO,CAAe;IAAG,CAAC;IAIvD,SAAS;QACP,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;IAClC,CAAC;IAID,YAAY,CAAS,GAA2B;QAC9C,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IACxC,CAAC;CACF,CAAA;AAdY,4CAAgB;AAK3B;IAFC,IAAA,YAAG,GAAE;IACL,IAAA,uBAAa,EAAC,EAAE,IAAI,EAAE,8BAAiB,EAAE,CAAC;;;oCAC9B,8BAAiB;iDAE7B;AAID;IAFC,IAAA,YAAG,GAAE;IACL,IAAA,uBAAa,EAAC,EAAE,IAAI,EAAE,8BAAiB,EAAE,CAAC;IAC7B,WAAA,IAAA,aAAI,GAAE,CAAA;;qCAAM,mCAAsB;;oDAE/C;2BAbU,gBAAgB;IAD5B,IAAA,mBAAU,EAAC,eAAe,CAAC;qCAEY,8BAAa;GADxC,gBAAgB,CAc5B"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ConfigureImmichIntegrationRequestDto, ConfigureImmichIntegrationResponseDto, ImmichBackupStatusDto, ImmichRollbackRequestDto, IntegrationsResponseDto } from '../dto/integrations.dto';
|
|
1
|
+
import { ConfigureImmichDatabaseDumpRequestDto, ConfigureImmichIntegrationRequestDto, ConfigureImmichIntegrationResponseDto, ImmichBackupStatusDto, ImmichRollbackRequestDto, IntegrationsResponseDto } from '../dto/integrations.dto';
|
|
2
2
|
import { type Response } from 'express';
|
|
3
3
|
import { IntegrationsService } from '../services/integrations.service';
|
|
4
4
|
export declare class IntegrationsController {
|
|
@@ -7,5 +7,7 @@ export declare class IntegrationsController {
|
|
|
7
7
|
getIntegrations(): Promise<IntegrationsResponseDto>;
|
|
8
8
|
getImmichBackupStatus(): Promise<ImmichBackupStatusDto>;
|
|
9
9
|
configureImmichIntegration(dto: ConfigureImmichIntegrationRequestDto): Promise<ConfigureImmichIntegrationResponseDto>;
|
|
10
|
+
ignoreImmichDatabaseDumpWarning(): Promise<void>;
|
|
11
|
+
configureImmichDatabaseDump(dto: ConfigureImmichDatabaseDumpRequestDto): Promise<void>;
|
|
10
12
|
startImmichRollback(dto: ImmichRollbackRequestDto, response: Response): Promise<void>;
|
|
11
13
|
}
|
|
@@ -32,6 +32,12 @@ let IntegrationsController = class IntegrationsController {
|
|
|
32
32
|
configureImmichIntegration(dto) {
|
|
33
33
|
return this.service.configureImmichIntegration(dto);
|
|
34
34
|
}
|
|
35
|
+
ignoreImmichDatabaseDumpWarning() {
|
|
36
|
+
return this.service.ignoreImmichDatabaseDumpWarning();
|
|
37
|
+
}
|
|
38
|
+
configureImmichDatabaseDump(dto) {
|
|
39
|
+
return this.service.configureImmichDatabaseDump(dto);
|
|
40
|
+
}
|
|
35
41
|
async startImmichRollback(dto, response) {
|
|
36
42
|
const { jwt } = await this.service.enterImmichMaintenanceRollback(dto);
|
|
37
43
|
response.cookie(enum_1.ImmichCookie.MaintenanceToken, jwt);
|
|
@@ -60,6 +66,19 @@ __decorate([
|
|
|
60
66
|
__metadata("design:paramtypes", [integrations_dto_1.ConfigureImmichIntegrationRequestDto]),
|
|
61
67
|
__metadata("design:returntype", Promise)
|
|
62
68
|
], IntegrationsController.prototype, "configureImmichIntegration", null);
|
|
69
|
+
__decorate([
|
|
70
|
+
(0, common_1.Post)('immich/database-dump/ignore-warning'),
|
|
71
|
+
__metadata("design:type", Function),
|
|
72
|
+
__metadata("design:paramtypes", []),
|
|
73
|
+
__metadata("design:returntype", Promise)
|
|
74
|
+
], IntegrationsController.prototype, "ignoreImmichDatabaseDumpWarning", null);
|
|
75
|
+
__decorate([
|
|
76
|
+
(0, common_1.Post)('immich/database-dump'),
|
|
77
|
+
__param(0, (0, common_1.Body)()),
|
|
78
|
+
__metadata("design:type", Function),
|
|
79
|
+
__metadata("design:paramtypes", [integrations_dto_1.ConfigureImmichDatabaseDumpRequestDto]),
|
|
80
|
+
__metadata("design:returntype", Promise)
|
|
81
|
+
], IntegrationsController.prototype, "configureImmichDatabaseDump", null);
|
|
63
82
|
__decorate([
|
|
64
83
|
(0, common_1.Post)('immich/rollback'),
|
|
65
84
|
__param(0, (0, common_1.Body)()),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"integrations.controller.js","sourceRoot":"","sources":["../../src/controllers/integrations.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAkE;AAClE,6CAAoE;AACpE,
|
|
1
|
+
{"version":3,"file":"integrations.controller.js","sourceRoot":"","sources":["../../src/controllers/integrations.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAkE;AAClE,6CAAoE;AACpE,8DAOiC;AAGjC,kCAAuC;AACvC,2EAAuE;AAGhE,IAAM,sBAAsB,GAA5B,MAAM,sBAAsB;IACJ;IAA7B,YAA6B,OAA4B;QAA5B,YAAO,GAAP,OAAO,CAAqB;IAAG,CAAC;IAI7D,eAAe;QACb,OAAO,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAC9C,CAAC;IAID,qBAAqB;QACnB,OAAO,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAC9C,CAAC;IAID,0BAA0B,CAChB,GAAyC;QAEjD,OAAO,IAAI,CAAC,OAAO,CAAC,0BAA0B,CAAC,GAAG,CAAC,CAAC;IACtD,CAAC;IAGD,+BAA+B;QAC7B,OAAO,IAAI,CAAC,OAAO,CAAC,+BAA+B,EAAE,CAAC;IACxD,CAAC;IAGD,2BAA2B,CAAS,GAA0C;QAC5E,OAAO,IAAI,CAAC,OAAO,CAAC,2BAA2B,CAAC,GAAG,CAAC,CAAC;IACvD,CAAC;IAGK,AAAN,KAAK,CAAC,mBAAmB,CAAS,GAA6B,EAA8B,QAAkB;QAC7G,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,8BAA8B,CAAC,GAAG,CAAC,CAAC;QACvE,QAAQ,CAAC,MAAM,CAAC,mBAAY,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;IACtD,CAAC;CACF,CAAA;AAtCY,wDAAsB;AAKjC;IAFC,IAAA,YAAG,GAAE;IACL,IAAA,uBAAa,EAAC,EAAE,IAAI,EAAE,0CAAuB,EAAE,CAAC;;;;6DAGhD;AAID;IAFC,IAAA,YAAG,EAAC,eAAe,CAAC;IACpB,IAAA,uBAAa,EAAC,EAAE,IAAI,EAAE,wCAAqB,EAAE,CAAC;;;;mEAG9C;AAID;IAFC,IAAA,aAAI,EAAC,QAAQ,CAAC;IACd,IAAA,4BAAkB,EAAC,EAAE,IAAI,EAAE,wDAAqC,EAAE,CAAC;IAEjE,WAAA,IAAA,aAAI,GAAE,CAAA;;qCAAM,uDAAoC;;wEAGlD;AAGD;IADC,IAAA,aAAI,EAAC,qCAAqC,CAAC;;;;6EAG3C;AAGD;IADC,IAAA,aAAI,EAAC,sBAAsB,CAAC;IACA,WAAA,IAAA,aAAI,GAAE,CAAA;;qCAAM,wDAAqC;;yEAE7E;AAGK;IADL,IAAA,aAAI,EAAC,iBAAiB,CAAC;IACG,WAAA,IAAA,aAAI,GAAE,CAAA;IAAiC,WAAA,IAAA,YAAG,EAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAA;;qCAArD,2CAAwB;;iEAG9D;iCArCU,sBAAsB;IADlC,IAAA,mBAAU,EAAC,qBAAqB,CAAC;qCAEM,0CAAmB;GAD9C,sBAAsB,CAsClC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
declare const BandwidthDto_base: import("nestjs-zod").ZodDto<z.ZodObject<{
|
|
3
|
+
bytesPerSec: z.ZodNumber;
|
|
4
|
+
quietHours: z.ZodOptional<z.ZodString>;
|
|
5
|
+
}, z.core.$strip>, false>;
|
|
6
|
+
export declare class BandwidthDto extends BandwidthDto_base {
|
|
7
|
+
}
|
|
8
|
+
declare const ConfigUpdateRequestDto_base: import("nestjs-zod").ZodDto<z.ZodObject<{
|
|
9
|
+
bandwidth: z.ZodObject<{
|
|
10
|
+
bytesPerSec: z.ZodNumber;
|
|
11
|
+
quietHours: z.ZodOptional<z.ZodString>;
|
|
12
|
+
}, z.core.$strip>;
|
|
13
|
+
}, z.core.$strip>, false>;
|
|
14
|
+
export declare class ConfigUpdateRequestDto extends ConfigUpdateRequestDto_base {
|
|
15
|
+
}
|
|
16
|
+
declare const ConfigResponseDto_base: import("nestjs-zod").ZodDto<z.ZodObject<{
|
|
17
|
+
bandwidth: z.ZodObject<{
|
|
18
|
+
bytesPerSec: z.ZodNumber;
|
|
19
|
+
quietHours: z.ZodOptional<z.ZodString>;
|
|
20
|
+
}, z.core.$strip>;
|
|
21
|
+
}, z.core.$strip>, false>;
|
|
22
|
+
export declare class ConfigResponseDto extends ConfigResponseDto_base {
|
|
23
|
+
}
|
|
24
|
+
export {};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ConfigResponseDto = exports.ConfigUpdateRequestDto = exports.BandwidthDto = void 0;
|
|
4
|
+
const nestjs_zod_1 = require("nestjs-zod");
|
|
5
|
+
const zod_1 = require("zod");
|
|
6
|
+
const QuietHoursSchema = zod_1.z
|
|
7
|
+
.string()
|
|
8
|
+
.regex(/^([01]\d|2[0-3]):[0-5]\d-([01]\d|2[0-3]):[0-5]\d$/, 'Invalid quiet hours, expected HH:MM-HH:MM');
|
|
9
|
+
const BandwidthSchema = zod_1.z
|
|
10
|
+
.object({
|
|
11
|
+
bytesPerSec: zod_1.z.number().int().min(0),
|
|
12
|
+
quietHours: QuietHoursSchema.optional(),
|
|
13
|
+
})
|
|
14
|
+
.meta({ id: 'BandwidthDto' });
|
|
15
|
+
const ConfigUpdateRequestSchema = zod_1.z.object({ bandwidth: BandwidthSchema }).meta({ id: 'ConfigUpdateRequestDto' });
|
|
16
|
+
const ConfigResponseSchema = zod_1.z.object({ bandwidth: BandwidthSchema }).meta({ id: 'ConfigResponseDto' });
|
|
17
|
+
class BandwidthDto extends (0, nestjs_zod_1.createZodDto)(BandwidthSchema) {
|
|
18
|
+
}
|
|
19
|
+
exports.BandwidthDto = BandwidthDto;
|
|
20
|
+
class ConfigUpdateRequestDto extends (0, nestjs_zod_1.createZodDto)(ConfigUpdateRequestSchema) {
|
|
21
|
+
}
|
|
22
|
+
exports.ConfigUpdateRequestDto = ConfigUpdateRequestDto;
|
|
23
|
+
class ConfigResponseDto extends (0, nestjs_zod_1.createZodDto)(ConfigResponseSchema) {
|
|
24
|
+
}
|
|
25
|
+
exports.ConfigResponseDto = ConfigResponseDto;
|
|
26
|
+
//# sourceMappingURL=config.dto.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.dto.js","sourceRoot":"","sources":["../../src/dto/config.dto.ts"],"names":[],"mappings":";;;AAAA,2CAA0C;AAC1C,6BAAwB;AAExB,MAAM,gBAAgB,GAAG,OAAC;KACvB,MAAM,EAAE;KACR,KAAK,CAAC,mDAAmD,EAAE,2CAA2C,CAAC,CAAC;AAE3G,MAAM,eAAe,GAAG,OAAC;KACtB,MAAM,CAAC;IACN,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACpC,UAAU,EAAE,gBAAgB,CAAC,QAAQ,EAAE;CACxC,CAAC;KACD,IAAI,CAAC,EAAE,EAAE,EAAE,cAAc,EAAE,CAAC,CAAC;AAEhC,MAAM,yBAAyB,GAAG,OAAC,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,wBAAwB,EAAE,CAAC,CAAC;AAElH,MAAM,oBAAoB,GAAG,OAAC,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,mBAAmB,EAAE,CAAC,CAAC;AAExG,MAAa,YAAa,SAAQ,IAAA,yBAAY,EAAC,eAAe,CAAC;CAAG;AAAlE,oCAAkE;AAClE,MAAa,sBAAuB,SAAQ,IAAA,yBAAY,EAAC,yBAAyB,CAAC;CAAG;AAAtF,wDAAsF;AACtF,MAAa,iBAAkB,SAAQ,IAAA,yBAAY,EAAC,oBAAoB,CAAC;CAAG;AAA5E,8CAA4E"}
|
|
@@ -144,6 +144,11 @@ declare const ImmichBackupStatusDto_base: import("nestjs-zod").ZodDto<z.ZodObjec
|
|
|
144
144
|
status: z.ZodEnum<typeof import("../enum").TaskStatus>;
|
|
145
145
|
type: z.ZodEnum<typeof import("../enum").TaskType>;
|
|
146
146
|
}, z.core.$strip>>;
|
|
147
|
+
databaseDump: z.ZodOptional<z.ZodObject<{
|
|
148
|
+
enabled: z.ZodBoolean;
|
|
149
|
+
keepLastAmount: z.ZodInt;
|
|
150
|
+
}, z.core.$strip>>;
|
|
151
|
+
databaseDumpWarningIgnored: z.ZodOptional<z.ZodBoolean>;
|
|
147
152
|
}, z.core.$strip>, false>;
|
|
148
153
|
export declare class ImmichBackupStatusDto extends ImmichBackupStatusDto_base {
|
|
149
154
|
}
|
|
@@ -173,6 +178,18 @@ declare const ConfigureImmichIntegrationResponseDto_base: import("nestjs-zod").Z
|
|
|
173
178
|
}, z.core.$strip>, false>;
|
|
174
179
|
export declare class ConfigureImmichIntegrationResponseDto extends ConfigureImmichIntegrationResponseDto_base {
|
|
175
180
|
}
|
|
181
|
+
declare const ImmichDatabaseDumpConfigDto_base: import("nestjs-zod").ZodDto<z.ZodObject<{
|
|
182
|
+
enabled: z.ZodBoolean;
|
|
183
|
+
keepLastAmount: z.ZodInt;
|
|
184
|
+
}, z.core.$strip>, false>;
|
|
185
|
+
export declare class ImmichDatabaseDumpConfigDto extends ImmichDatabaseDumpConfigDto_base {
|
|
186
|
+
}
|
|
187
|
+
declare const ConfigureImmichDatabaseDumpRequestDto_base: import("nestjs-zod").ZodDto<z.ZodObject<{
|
|
188
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
189
|
+
keepLastAmount: z.ZodOptional<z.ZodInt>;
|
|
190
|
+
}, z.core.$strip>, false>;
|
|
191
|
+
export declare class ConfigureImmichDatabaseDumpRequestDto extends ConfigureImmichDatabaseDumpRequestDto_base {
|
|
192
|
+
}
|
|
176
193
|
declare const ImmichRollbackRequestDto_base: import("nestjs-zod").ZodDto<z.ZodObject<{
|
|
177
194
|
repositoryId: z.ZodString;
|
|
178
195
|
snapshotId: z.ZodString;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ImmichRollbackRequestDto = exports.ConfigureImmichIntegrationResponseDto = exports.ConfigureImmichIntegrationRequestDto = exports.ImmichBackupStatusDto = exports.IntegrationsResponseDto = exports.ImmichIntegrationDto = exports.ImmichIntegrationConfigurationDto = exports.ImmichStateDto = exports.ImmichLibraryDto = void 0;
|
|
3
|
+
exports.ImmichRollbackRequestDto = exports.ConfigureImmichDatabaseDumpRequestDto = exports.ImmichDatabaseDumpConfigDto = exports.ConfigureImmichIntegrationResponseDto = exports.ConfigureImmichIntegrationRequestDto = exports.ImmichBackupStatusDto = exports.IntegrationsResponseDto = exports.ImmichIntegrationDto = exports.ImmichIntegrationConfigurationDto = exports.ImmichStateDto = exports.ImmichLibraryDto = void 0;
|
|
4
4
|
const nestjs_zod_1 = require("nestjs-zod");
|
|
5
5
|
const zod_1 = require("zod");
|
|
6
6
|
const backend_dto_1 = require("./backend.dto");
|
|
@@ -42,6 +42,12 @@ const IntegrationsResponseSchema = zod_1.z
|
|
|
42
42
|
immichIntegration: ImmichIntegrationSchema.optional(),
|
|
43
43
|
})
|
|
44
44
|
.meta({ id: 'IntegrationsResponseDto' });
|
|
45
|
+
const ImmichDatabaseDumpConfigSchema = zod_1.z
|
|
46
|
+
.object({
|
|
47
|
+
enabled: zod_1.z.boolean(),
|
|
48
|
+
keepLastAmount: zod_1.z.int().min(1),
|
|
49
|
+
})
|
|
50
|
+
.meta({ id: 'ImmichDatabaseDumpConfigDto' });
|
|
45
51
|
const ImmichBackupStatusSchema = zod_1.z
|
|
46
52
|
.object({
|
|
47
53
|
integration: ImmichIntegrationSchema.optional(),
|
|
@@ -49,6 +55,8 @@ const ImmichBackupStatusSchema = zod_1.z
|
|
|
49
55
|
backend: backend_dto_1.BackendSchema.optional(),
|
|
50
56
|
schedule: schedule_dto_1.ScheduleSchema.optional(),
|
|
51
57
|
latestBackupRun: repository_dto_1.RunSchema.optional(),
|
|
58
|
+
databaseDump: ImmichDatabaseDumpConfigSchema.optional(),
|
|
59
|
+
databaseDumpWarningIgnored: zod_1.z.boolean().optional(),
|
|
52
60
|
})
|
|
53
61
|
.meta({ id: 'ImmichBackupStatusDto' });
|
|
54
62
|
const ConfigureImmichIntegrationRequestSchema = zod_1.z
|
|
@@ -69,6 +77,9 @@ const ConfigureImmichIntegrationResponseSchema = zod_1.z
|
|
|
69
77
|
repositoryId: zod_1.z.string(),
|
|
70
78
|
})
|
|
71
79
|
.meta({ id: 'ConfigureImmichIntegrationResponseDto' });
|
|
80
|
+
const ConfigureImmichDatabaseDumpRequestSchema = ImmichDatabaseDumpConfigSchema.partial().meta({
|
|
81
|
+
id: 'ConfigureImmichDatabaseDumpRequestDto',
|
|
82
|
+
});
|
|
72
83
|
const ImmichRollbackRequestSchema = zod_1.z
|
|
73
84
|
.object({
|
|
74
85
|
repositoryId: zod_1.z.string(),
|
|
@@ -100,6 +111,12 @@ exports.ConfigureImmichIntegrationRequestDto = ConfigureImmichIntegrationRequest
|
|
|
100
111
|
class ConfigureImmichIntegrationResponseDto extends (0, nestjs_zod_1.createZodDto)(ConfigureImmichIntegrationResponseSchema) {
|
|
101
112
|
}
|
|
102
113
|
exports.ConfigureImmichIntegrationResponseDto = ConfigureImmichIntegrationResponseDto;
|
|
114
|
+
class ImmichDatabaseDumpConfigDto extends (0, nestjs_zod_1.createZodDto)(ImmichDatabaseDumpConfigSchema) {
|
|
115
|
+
}
|
|
116
|
+
exports.ImmichDatabaseDumpConfigDto = ImmichDatabaseDumpConfigDto;
|
|
117
|
+
class ConfigureImmichDatabaseDumpRequestDto extends (0, nestjs_zod_1.createZodDto)(ConfigureImmichDatabaseDumpRequestSchema) {
|
|
118
|
+
}
|
|
119
|
+
exports.ConfigureImmichDatabaseDumpRequestDto = ConfigureImmichDatabaseDumpRequestDto;
|
|
103
120
|
class ImmichRollbackRequestDto extends (0, nestjs_zod_1.createZodDto)(ImmichRollbackRequestSchema) {
|
|
104
121
|
}
|
|
105
122
|
exports.ImmichRollbackRequestDto = ImmichRollbackRequestDto;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"integrations.dto.js","sourceRoot":"","sources":["../../src/dto/integrations.dto.ts"],"names":[],"mappings":";;;AAAA,2CAA0C;AAC1C,6BAAwB;AACxB,+CAA8C;AAC9C,qDAA2F;AAC3F,iDAAgD;AAEhD,MAAM,eAAe,GAAG,OAAC,CAAC,KAAK,CAAC,CAAC,OAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;AAEzE,MAAM,mBAAmB,GAAG,OAAC;KAC1B,MAAM,CAAC;IACN,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE;IACd,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE;IAChB,WAAW,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC;IAChC,iBAAiB,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC;CACvC,CAAC;KACD,IAAI,CAAC,EAAE,EAAE,EAAE,kBAAkB,EAAE,CAAC,CAAC;AAEpC,MAAM,iBAAiB,GAAG,OAAC;KACxB,MAAM,CAAC;IACN,QAAQ,EAAE,OAAC,CAAC,MAAM,EAAE;IACpB,WAAW,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC;IAChC,SAAS,EAAE,OAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC;CACxC,CAAC;KACD,IAAI,CAAC,EAAE,EAAE,EAAE,gBAAgB,EAAE,CAAC,CAAC;AAElC,MAAM,oCAAoC,GAAG,OAAC;KAC3C,MAAM,CAAC;IACN,WAAW,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC;IAChC,mBAAmB,EAAE,OAAC,CAAC,OAAO,EAAE;IAChC,SAAS,EAAE,eAAe;CAC3B,CAAC;KACD,IAAI,CAAC,EAAE,EAAE,EAAE,mCAAmC,EAAE,CAAC,CAAC;AAErD,MAAM,uBAAuB,GAAG,OAAC;KAC9B,MAAM,CAAC;IACN,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE;IACd,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE;IACtB,aAAa,EAAE,oCAAoC;CACpD,CAAC;KACD,IAAI,CAAC,EAAE,EAAE,EAAE,sBAAsB,EAAE,CAAC,CAAC;AAExC,MAAM,0BAA0B,GAAG,OAAC;KACjC,MAAM,CAAC;IACN,WAAW,EAAE,iBAAiB,CAAC,QAAQ,EAAE;IACzC,iBAAiB,EAAE,uBAAuB,CAAC,QAAQ,EAAE;CACtD,CAAC;KACD,IAAI,CAAC,EAAE,EAAE,EAAE,yBAAyB,EAAE,CAAC,CAAC;AAE3C,MAAM,wBAAwB,GAAG,OAAC;KAC/B,MAAM,CAAC;IACN,WAAW,EAAE,uBAAuB,CAAC,QAAQ,EAAE;IAC/C,UAAU,EAAE,sCAAqB,CAAC,QAAQ,EAAE;IAC5C,OAAO,EAAE,2BAAa,CAAC,QAAQ,EAAE;IACjC,QAAQ,EAAE,6BAAc,CAAC,QAAQ,EAAE;IACnC,eAAe,EAAE,0BAAS,CAAC,QAAQ,EAAE;
|
|
1
|
+
{"version":3,"file":"integrations.dto.js","sourceRoot":"","sources":["../../src/dto/integrations.dto.ts"],"names":[],"mappings":"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"}
|
package/dist/enum.d.ts
CHANGED
|
@@ -19,9 +19,12 @@ export declare enum ConfigurationKey {
|
|
|
19
19
|
OnboardedKey = "onboarded-key",
|
|
20
20
|
Telemetry = "telemetry",
|
|
21
21
|
SkippedOnboardingExtraConfig = "skipped-onboarding-extra-config",
|
|
22
|
+
IgnoredImmichDatabaseDumpWarning = "ignored-immich-database-dump-warning",
|
|
22
23
|
ResticOptionRestConnections = "restic-o-rest-connections",
|
|
23
24
|
SessionSecret = "session-secret",
|
|
24
|
-
StatePath = "state-path"
|
|
25
|
+
StatePath = "state-path",
|
|
26
|
+
ThrottleBytesPerSec = "throttle-bytes-per-sec",
|
|
27
|
+
ThrottleQuietHours = "throttle-quiet-hours"
|
|
25
28
|
}
|
|
26
29
|
export declare enum MetadataKey {
|
|
27
30
|
PublicRoute = "public-route"
|
package/dist/enum.js
CHANGED
|
@@ -26,9 +26,12 @@ var ConfigurationKey;
|
|
|
26
26
|
ConfigurationKey["OnboardedKey"] = "onboarded-key";
|
|
27
27
|
ConfigurationKey["Telemetry"] = "telemetry";
|
|
28
28
|
ConfigurationKey["SkippedOnboardingExtraConfig"] = "skipped-onboarding-extra-config";
|
|
29
|
+
ConfigurationKey["IgnoredImmichDatabaseDumpWarning"] = "ignored-immich-database-dump-warning";
|
|
29
30
|
ConfigurationKey["ResticOptionRestConnections"] = "restic-o-rest-connections";
|
|
30
31
|
ConfigurationKey["SessionSecret"] = "session-secret";
|
|
31
32
|
ConfigurationKey["StatePath"] = "state-path";
|
|
33
|
+
ConfigurationKey["ThrottleBytesPerSec"] = "throttle-bytes-per-sec";
|
|
34
|
+
ConfigurationKey["ThrottleQuietHours"] = "throttle-quiet-hours";
|
|
32
35
|
})(ConfigurationKey || (exports.ConfigurationKey = ConfigurationKey = {}));
|
|
33
36
|
var MetadataKey;
|
|
34
37
|
(function (MetadataKey) {
|
package/dist/enum.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enum.js","sourceRoot":"","sources":["../src/enum.ts"],"names":[],"mappings":";;;AAAA,IAAY,UAQX;AARD,WAAY,UAAU;IACpB,kCAAoB,CAAA;IACpB,0CAA4B,CAAA;IAC5B,yDAA2C,CAAA;IAC3C,0CAA4B,CAAA;IAC5B,qDAAuC,CAAA;IACvC,iDAAmC,CAAA;IACnC,gEAAkD,CAAA;AACpD,CAAC,EARW,UAAU,0BAAV,UAAU,QAQrB;AAED,IAAY,YAEX;AAFD,WAAY,YAAY;IACtB,6DAA6C,CAAA;AAC/C,CAAC,EAFW,YAAY,4BAAZ,YAAY,QAEvB;AAED,IAAY,YAGX;AAHD,WAAY,YAAY;IACtB,sDAAsC,CAAA;IACtC,uDAAuC,CAAA;AACzC,CAAC,EAHW,YAAY,4BAAZ,YAAY,QAGvB;AAED,IAAY,
|
|
1
|
+
{"version":3,"file":"enum.js","sourceRoot":"","sources":["../src/enum.ts"],"names":[],"mappings":";;;AAAA,IAAY,UAQX;AARD,WAAY,UAAU;IACpB,kCAAoB,CAAA;IACpB,0CAA4B,CAAA;IAC5B,yDAA2C,CAAA;IAC3C,0CAA4B,CAAA;IAC5B,qDAAuC,CAAA;IACvC,iDAAmC,CAAA;IACnC,gEAAkD,CAAA;AACpD,CAAC,EARW,UAAU,0BAAV,UAAU,QAQrB;AAED,IAAY,YAEX;AAFD,WAAY,YAAY;IACtB,6DAA6C,CAAA;AAC/C,CAAC,EAFW,YAAY,4BAAZ,YAAY,QAEvB;AAED,IAAY,YAGX;AAHD,WAAY,YAAY;IACtB,sDAAsC,CAAA;IACtC,uDAAuC,CAAA;AACzC,CAAC,EAHW,YAAY,4BAAZ,YAAY,QAGvB;AAED,IAAY,gBAWX;AAXD,WAAY,gBAAgB;IAC1B,oDAAgC,CAAA;IAChC,kDAA8B,CAAA;IAC9B,2CAAuB,CAAA;IACvB,oFAAgE,CAAA;IAChE,6FAAyE,CAAA;IACzE,6EAAyD,CAAA;IACzD,oDAAgC,CAAA;IAChC,4CAAwB,CAAA;IACxB,kEAA8C,CAAA;IAC9C,+DAA2C,CAAA;AAC7C,CAAC,EAXW,gBAAgB,gCAAhB,gBAAgB,QAW3B;AAED,IAAY,WAEX;AAFD,WAAY,WAAW;IACrB,2CAA4B,CAAA;AAC9B,CAAC,EAFW,WAAW,2BAAX,WAAW,QAEtB;AAED,IAAY,WAIX;AAJD,WAAY,WAAW;IACrB,8BAAe,CAAA;IACf,8BAAe,CAAA;IACf,wBAAS,CAAA;AACX,CAAC,EAJW,WAAW,2BAAX,WAAW,QAItB;AAED,IAAY,UAMX;AAND,WAAY,UAAU;IACpB,uCAAyB,CAAA;IACzB,mCAAqB,CAAA;IACrB,2BAAa,CAAA;IACb,+BAAiB,CAAA;IACjB,qCAAuB,CAAA;AACzB,CAAC,EANW,UAAU,0BAAV,UAAU,QAMrB;AAED,IAAY,QAKX;AALD,WAAY,QAAQ;IAClB,iCAAqB,CAAA;IACrB,+BAAmB,CAAA;IACnB,6BAAiB,CAAA;IACjB,6BAAiB,CAAA;AACnB,CAAC,EALW,QAAQ,wBAAR,QAAQ,QAKnB;AAED,IAAY,aAEX;AAFD,WAAY,aAAa;IACvB,mEAAkD,CAAA;AACpD,CAAC,EAFW,aAAa,6BAAb,aAAa,QAExB;AAED,IAAY,mBAIX;AAJD,WAAY,mBAAmB;IAC7B,sCAAe,CAAA;IACf,0CAAmB,CAAA;IACnB,0CAAmB,CAAA;AACrB,CAAC,EAJW,mBAAmB,mCAAnB,mBAAmB,QAI9B;AAED,IAAY,uBAKX;AALD,WAAY,uBAAuB;IACjC,yDAA8B,CAAA;IAC9B,kEAAuC,CAAA;IACvC,yDAA8B,CAAA;IAC9B,8CAAmB,CAAA;AACrB,CAAC,EALW,uBAAuB,uCAAvB,uBAAuB,QAKlC;AAED,IAAY,eAIX;AAJD,WAAY,eAAe;IACzB,yCAAsB,CAAA;IACtB,kCAAe,CAAA;IACf,kCAAe,CAAA;AACjB,CAAC,EAJW,eAAe,+BAAf,eAAe,QAI1B;AAED,IAAY,cAGX;AAHD,WAAY,cAAc;IACxB,+BAAa,CAAA;IACb,+BAAa,CAAA;AACf,CAAC,EAHW,cAAc,8BAAd,cAAc,QAGzB;AAED,IAAY,eAEX;AAFD,WAAY,eAAe;IACzB,yEAAsD,CAAA;AACxD,CAAC,EAFW,eAAe,+BAAf,eAAe,QAE1B"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export * from './const';
|
|
2
2
|
export { EventsGateway, type GatewayEvent } from './events/events.gateway';
|
|
3
|
+
export type { ImmichDatabaseDumpConfig } from './moduleConfig';
|
|
3
4
|
export * from './orchestrationApi.module';
|
|
4
5
|
export { LoggingRepository } from './repositories/logging.repository';
|
|
5
6
|
export { ModuleConfigRepository } from './repositories/moduleConfig.repository';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,0DAA2E;AAAlE,+GAAA,aAAa,OAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,0DAA2E;AAAlE,+GAAA,aAAa,OAAA;AAEtB,4DAA0C;AAC1C,wEAAsE;AAA7D,uHAAA,iBAAiB,OAAA;AAC1B,kFAAgF;AAAvE,iIAAA,sBAAsB,OAAA;AAC/B,0DAAwD;AAA/C,6GAAA,YAAY,OAAA;AACrB,yCAAwF;AAA/E,2GAAA,cAAc,OAAA"}
|
package/dist/moduleConfig.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { Socket } from 'socket.io';
|
|
2
2
|
import { GatewayEvent } from './events/events.gateway';
|
|
3
|
+
import type { ResticProxyThrottle } from './proxy/resticProxy';
|
|
3
4
|
export declare const ModuleConfigProvider: unique symbol;
|
|
4
5
|
export type AuthenticatedUser = {
|
|
5
6
|
user: {
|
|
@@ -7,6 +8,10 @@ export type AuthenticatedUser = {
|
|
|
7
8
|
};
|
|
8
9
|
};
|
|
9
10
|
export type AuthenticateFn = (client: Socket) => Promise<AuthenticatedUser>;
|
|
11
|
+
export type ImmichDatabaseDumpConfig = {
|
|
12
|
+
enabled: boolean;
|
|
13
|
+
keepLastAmount: number;
|
|
14
|
+
};
|
|
10
15
|
export type ImmichIntegration = {
|
|
11
16
|
dataPath: string;
|
|
12
17
|
dataFolders: string[];
|
|
@@ -17,7 +22,10 @@ export type ImmichIntegration = {
|
|
|
17
22
|
exclusionPatterns: string[];
|
|
18
23
|
}[];
|
|
19
24
|
hooks: {
|
|
20
|
-
createDatabaseBackup(): Promise<string>;
|
|
25
|
+
createDatabaseBackup(signal: AbortSignal): Promise<string>;
|
|
26
|
+
cleanupDatabaseBackups(): Promise<void>;
|
|
27
|
+
getImmichDatabaseDumpConfig(): Promise<ImmichDatabaseDumpConfig>;
|
|
28
|
+
configureImmichDatabaseDump(config: Partial<ImmichDatabaseDumpConfig>): Promise<void>;
|
|
21
29
|
enterMaintenanceRollback(repositoryId: string, snapshotId: string, backupFileName?: string): Promise<{
|
|
22
30
|
jwt: string;
|
|
23
31
|
}>;
|
|
@@ -32,6 +40,7 @@ export type ModuleConfig = {
|
|
|
32
40
|
requireSession?: boolean;
|
|
33
41
|
requireLock?: boolean;
|
|
34
42
|
developmentMode?: boolean;
|
|
43
|
+
throttle?: ResticProxyThrottle;
|
|
35
44
|
authenticate?: AuthenticateFn;
|
|
36
45
|
onInternalEvent?: (event: GatewayEvent) => void;
|
|
37
46
|
immichIntegration?: ImmichIntegration;
|
package/dist/moduleConfig.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"moduleConfig.js","sourceRoot":"","sources":["../src/moduleConfig.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"moduleConfig.js","sourceRoot":"","sources":["../src/moduleConfig.ts"],"names":[],"mappings":";;;AAIa,QAAA,oBAAoB,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC"}
|
|
@@ -2,6 +2,7 @@ import { DynamicModule, FactoryProvider, ModuleMetadata } from '@nestjs/common';
|
|
|
2
2
|
import { type SqliteDatabase } from 'kysely';
|
|
3
3
|
import { AuthController } from './controllers/auth.controller';
|
|
4
4
|
import { BackendController } from './controllers/backend.controller';
|
|
5
|
+
import { ConfigController } from './controllers/config.controller';
|
|
5
6
|
import { DevelopmentController } from './controllers/development.controller';
|
|
6
7
|
import { FilesystemController } from './controllers/filesystem.controller';
|
|
7
8
|
import { IntegrationsController } from './controllers/integrations.controller';
|
|
@@ -30,6 +31,7 @@ import { StorageRepository } from './repositories/storage.repository';
|
|
|
30
31
|
import { AuthService } from './services/auth.service';
|
|
31
32
|
import { BackendService } from './services/backend.service';
|
|
32
33
|
import { BootstrapService } from './services/bootstrap.service';
|
|
34
|
+
import { ConfigService } from './services/config.service';
|
|
33
35
|
import { DevelopmentService } from './services/development.service';
|
|
34
36
|
import { FilesystemService } from './services/filesystem.service';
|
|
35
37
|
import { IntegrationsService } from './services/integrations.service';
|
|
@@ -41,9 +43,9 @@ import { ScheduleService } from './services/schedule.service';
|
|
|
41
43
|
import { SessionService } from './services/session.service';
|
|
42
44
|
import { TelemetryService } from './services/telemetry.service';
|
|
43
45
|
import { YuccaService } from './services/yucca.service';
|
|
44
|
-
export declare const controllers: (typeof AuthController | typeof BackendController | typeof DevelopmentController | typeof FilesystemController | typeof IntegrationsController | typeof OnboardingController | typeof RepositoryController | typeof RunHistoryController | typeof RunningTasksController | typeof ScheduleController)[];
|
|
46
|
+
export declare const controllers: (typeof AuthController | typeof BackendController | typeof ConfigController | typeof DevelopmentController | typeof FilesystemController | typeof IntegrationsController | typeof OnboardingController | typeof RepositoryController | typeof RunHistoryController | typeof RunningTasksController | typeof ScheduleController)[];
|
|
45
47
|
export declare const repositories: (typeof ModuleConfigRepository | typeof LoggingRepository | typeof BackendRepository | typeof ConfigRepository | typeof RepositoryRepository | typeof BootstrapRepository | typeof StorageRepository | typeof DatabaseRepository | typeof RunHistoryRepository | typeof RepositoryIntegrationImmichRepository | typeof RunningTasksRepository | typeof ScheduleRepository | typeof RepositoryLocalMetricsRepository | typeof RepositoryPathRepository | typeof ResticRepository | typeof LockRepository)[];
|
|
46
|
-
export declare const services: (typeof SessionService | typeof TelemetryService | typeof AuthService | typeof BackendService | typeof RunHistoryService | typeof RepositoryService | typeof BootstrapService | typeof ScheduleService | typeof DevelopmentService | typeof FilesystemService | typeof IntegrationsService | typeof OnboardingService | typeof RunningTasksService | typeof YuccaService)[];
|
|
48
|
+
export declare const services: (typeof SessionService | typeof TelemetryService | typeof AuthService | typeof BackendService | typeof ConfigService | typeof RunHistoryService | typeof RepositoryService | typeof BootstrapService | typeof ScheduleService | typeof DevelopmentService | typeof FilesystemService | typeof IntegrationsService | typeof OnboardingService | typeof RunningTasksService | typeof YuccaService)[];
|
|
47
49
|
export declare function openStateDatabase(config: Pick<ModuleConfig, 'statePath'>, logger?: LoggingRepository): SqliteDatabase;
|
|
48
50
|
export interface OrchestrationApiModuleAsyncOptions extends Pick<ModuleMetadata, 'imports'> {
|
|
49
51
|
inject?: FactoryProvider['inject'];
|
|
@@ -25,6 +25,7 @@ const node_os_1 = require("node:os");
|
|
|
25
25
|
const node_path_1 = require("node:path");
|
|
26
26
|
const auth_controller_1 = require("./controllers/auth.controller");
|
|
27
27
|
const backend_controller_1 = require("./controllers/backend.controller");
|
|
28
|
+
const config_controller_1 = require("./controllers/config.controller");
|
|
28
29
|
const development_controller_1 = require("./controllers/development.controller");
|
|
29
30
|
const filesystem_controller_1 = require("./controllers/filesystem.controller");
|
|
30
31
|
const integrations_controller_1 = require("./controllers/integrations.controller");
|
|
@@ -57,6 +58,7 @@ const storage_repository_1 = require("./repositories/storage.repository");
|
|
|
57
58
|
const auth_service_1 = require("./services/auth.service");
|
|
58
59
|
const backend_service_1 = require("./services/backend.service");
|
|
59
60
|
const bootstrap_service_1 = require("./services/bootstrap.service");
|
|
61
|
+
const config_service_1 = require("./services/config.service");
|
|
60
62
|
const development_service_1 = require("./services/development.service");
|
|
61
63
|
const filesystem_service_1 = require("./services/filesystem.service");
|
|
62
64
|
const integrations_service_1 = require("./services/integrations.service");
|
|
@@ -72,6 +74,7 @@ const wellKnown_1 = require("./wellKnown");
|
|
|
72
74
|
exports.controllers = [
|
|
73
75
|
auth_controller_1.AuthController,
|
|
74
76
|
backend_controller_1.BackendController,
|
|
77
|
+
config_controller_1.ConfigController,
|
|
75
78
|
development_controller_1.DevelopmentController,
|
|
76
79
|
filesystem_controller_1.FilesystemController,
|
|
77
80
|
integrations_controller_1.IntegrationsController,
|
|
@@ -103,6 +106,7 @@ exports.services = [
|
|
|
103
106
|
auth_service_1.AuthService,
|
|
104
107
|
backend_service_1.BackendService,
|
|
105
108
|
bootstrap_service_1.BootstrapService,
|
|
109
|
+
config_service_1.ConfigService,
|
|
106
110
|
development_service_1.DevelopmentService,
|
|
107
111
|
filesystem_service_1.FilesystemService,
|
|
108
112
|
integrations_service_1.IntegrationsService,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrationApi.module.js","sourceRoot":"","sources":["../src/orchestrationApi.module.ts"],"names":[],"mappings":";;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"orchestrationApi.module.js","sourceRoot":"","sources":["../src/orchestrationApi.module.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,18 @@
|
|
|
1
1
|
import { ChildProcess } from 'node:child_process';
|
|
2
|
+
export type ResticProxyThrottle = {
|
|
3
|
+
bytesPerSec: number;
|
|
4
|
+
quietHours?: string;
|
|
5
|
+
};
|
|
6
|
+
export declare const UNTHROTTLED: ResticProxyThrottle;
|
|
2
7
|
export declare class ResticProxy {
|
|
3
8
|
readonly address: string;
|
|
4
9
|
readonly port: number;
|
|
5
10
|
readonly process: ChildProcess;
|
|
11
|
+
private readonly control;
|
|
6
12
|
private constructor();
|
|
7
13
|
static isAvailable(): Promise<boolean>;
|
|
8
|
-
static create(apiUrl: string): Promise<ResticProxy>;
|
|
14
|
+
static create(apiUrl: string, throttle: ResticProxyThrottle): Promise<ResticProxy>;
|
|
9
15
|
createUrl(repositoryId: string, accessToken: string): string;
|
|
16
|
+
throttle({ bytesPerSec, quietHours }: ResticProxyThrottle): void;
|
|
10
17
|
stop(): Promise<void>;
|
|
11
18
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ResticProxy = void 0;
|
|
3
|
+
exports.ResticProxy = exports.UNTHROTTLED = void 0;
|
|
4
4
|
const node_child_process_1 = require("node:child_process");
|
|
5
5
|
const node_events_1 = require("node:events");
|
|
6
6
|
const promises_1 = require("node:fs/promises");
|
|
@@ -9,14 +9,17 @@ const node_readline_1 = require("node:readline");
|
|
|
9
9
|
const RESTIC_PROXY_BIN = 'restic-proxy';
|
|
10
10
|
const RESTIC_PROXY_READY_FD = 3;
|
|
11
11
|
const RESTIC_PROXY_READY_TIMEOUT_MS = 10_000;
|
|
12
|
+
exports.UNTHROTTLED = { bytesPerSec: 0 };
|
|
12
13
|
class ResticProxy {
|
|
13
14
|
address;
|
|
14
15
|
port;
|
|
15
16
|
process;
|
|
16
|
-
|
|
17
|
+
control;
|
|
18
|
+
constructor(address, port, process, control) {
|
|
17
19
|
this.address = address;
|
|
18
20
|
this.port = port;
|
|
19
21
|
this.process = process;
|
|
22
|
+
this.control = control;
|
|
20
23
|
}
|
|
21
24
|
static async isAvailable() {
|
|
22
25
|
for (const directory of (process.env.PATH ?? '').split(node_path_1.delimiter)) {
|
|
@@ -30,19 +33,21 @@ class ResticProxy {
|
|
|
30
33
|
}
|
|
31
34
|
return false;
|
|
32
35
|
}
|
|
33
|
-
static async create(apiUrl) {
|
|
36
|
+
static async create(apiUrl, throttle) {
|
|
34
37
|
const child = (0, node_child_process_1.spawn)(RESTIC_PROXY_BIN, {
|
|
35
38
|
env: {
|
|
36
39
|
...process.env,
|
|
37
40
|
RESTIC_PROXY_API_URL: apiUrl,
|
|
38
41
|
RESTIC_PROXY_PORT: '0',
|
|
39
42
|
RESTIC_PROXY_READY_FD: String(RESTIC_PROXY_READY_FD),
|
|
43
|
+
RESTIC_PROXY_THROTTLE_BYTES_PER_SEC: String(throttle.bytesPerSec),
|
|
44
|
+
RESTIC_PROXY_THROTTLE_QUIET_HOURS: throttle.quietHours ?? '',
|
|
40
45
|
},
|
|
41
46
|
stdio: ['ignore', 'inherit', 'inherit', 'pipe'],
|
|
42
47
|
});
|
|
43
48
|
try {
|
|
44
49
|
const { address, port } = await readReady(child);
|
|
45
|
-
return new ResticProxy(address, port, child);
|
|
50
|
+
return new ResticProxy(address, port, child, child.stdio[RESTIC_PROXY_READY_FD]);
|
|
46
51
|
}
|
|
47
52
|
catch (error) {
|
|
48
53
|
child.kill();
|
|
@@ -52,6 +57,10 @@ class ResticProxy {
|
|
|
52
57
|
createUrl(repositoryId, accessToken) {
|
|
53
58
|
return `rest:http://${repositoryId}:${accessToken}@${this.address}`;
|
|
54
59
|
}
|
|
60
|
+
throttle({ bytesPerSec, quietHours }) {
|
|
61
|
+
const control = { type: 'throttle', throttle: { bytesPerSec, quietHours: quietHours ?? '' } };
|
|
62
|
+
this.control.write(`${JSON.stringify(control)}\n`);
|
|
63
|
+
}
|
|
55
64
|
async stop() {
|
|
56
65
|
if (this.process.exitCode !== null || this.process.signalCode !== null) {
|
|
57
66
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resticProxy.js","sourceRoot":"","sources":["../../src/proxy/resticProxy.ts"],"names":[],"mappings":";;;AAAA,2DAAyD;AACzD,6CAAmC;AACnC,+CAAqD;AACrD,yCAA4C;AAC5C,iDAA2D;AAG3D,MAAM,gBAAgB,GAAG,cAAc,CAAC;AACxC,MAAM,qBAAqB,GAAG,CAAC,CAAC;AAChC,MAAM,6BAA6B,GAAG,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"resticProxy.js","sourceRoot":"","sources":["../../src/proxy/resticProxy.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,17 @@
|
|
|
1
|
-
import { OnApplicationShutdown } from '@nestjs/common';
|
|
2
|
-
import {
|
|
3
|
-
|
|
1
|
+
import { OnApplicationBootstrap, OnApplicationShutdown } from '@nestjs/common';
|
|
2
|
+
import type { ModuleConfig } from '../moduleConfig';
|
|
3
|
+
import { ModuleConfigRepository } from '../repositories/moduleConfig.repository';
|
|
4
|
+
import { ResticProxy, ResticProxyThrottle } from './resticProxy';
|
|
5
|
+
export declare class ResticProxyPool implements OnApplicationBootstrap, OnApplicationShutdown {
|
|
6
|
+
private readonly moduleConfig?;
|
|
4
7
|
static pool: Map<string, Promise<ResticProxy>>;
|
|
5
8
|
static available: Promise<boolean> | undefined;
|
|
9
|
+
static throttle: ResticProxyThrottle;
|
|
10
|
+
constructor(moduleConfig?: ModuleConfigRepository | undefined);
|
|
11
|
+
onApplicationBootstrap(): void;
|
|
6
12
|
isAvailable(): Promise<boolean>;
|
|
7
13
|
getProxy(apiUrl: string): Promise<ResticProxy>;
|
|
14
|
+
onModuleConfigUpdate({ throttle }: ModuleConfig): Promise<void>;
|
|
8
15
|
onApplicationShutdown(): Promise<void>;
|
|
16
|
+
private running;
|
|
9
17
|
}
|