@futo-org/backups-orchestrator-api 0.1.71
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +41 -0
- package/dist/backends/backend.d.ts +23 -0
- package/dist/backends/backend.js +31 -0
- package/dist/backends/backend.js.map +1 -0
- package/dist/backends/local.backend.d.ts +24 -0
- package/dist/backends/local.backend.js +92 -0
- package/dist/backends/local.backend.js.map +1 -0
- package/dist/backends/s3.backend.d.ts +24 -0
- package/dist/backends/s3.backend.js +47 -0
- package/dist/backends/s3.backend.js.map +1 -0
- package/dist/backends/yucca.backend.d.ts +27 -0
- package/dist/backends/yucca.backend.js +63 -0
- package/dist/backends/yucca.backend.js.map +1 -0
- package/dist/const.d.ts +2 -0
- package/dist/const.js +6 -0
- package/dist/const.js.map +1 -0
- package/dist/controllers/auth.controller.d.ts +7 -0
- package/dist/controllers/auth.controller.js +38 -0
- package/dist/controllers/auth.controller.js.map +1 -0
- package/dist/controllers/backend.controller.d.ts +8 -0
- package/dist/controllers/backend.controller.js +52 -0
- package/dist/controllers/backend.controller.js.map +1 -0
- package/dist/controllers/development.controller.d.ts +6 -0
- package/dist/controllers/development.controller.js +35 -0
- package/dist/controllers/development.controller.js.map +1 -0
- package/dist/controllers/filesystem.controller.d.ts +7 -0
- package/dist/controllers/filesystem.controller.js +43 -0
- package/dist/controllers/filesystem.controller.js.map +1 -0
- package/dist/controllers/integrations.controller.d.ts +8 -0
- package/dist/controllers/integrations.controller.js +51 -0
- package/dist/controllers/integrations.controller.js.map +1 -0
- package/dist/controllers/onboarding.controller.d.ts +11 -0
- package/dist/controllers/onboarding.controller.js +80 -0
- package/dist/controllers/onboarding.controller.js.map +1 -0
- package/dist/controllers/repository.controller.d.ts +22 -0
- package/dist/controllers/repository.controller.js +227 -0
- package/dist/controllers/repository.controller.js.map +1 -0
- package/dist/controllers/runHistory.controller.d.ts +9 -0
- package/dist/controllers/runHistory.controller.js +55 -0
- package/dist/controllers/runHistory.controller.js.map +1 -0
- package/dist/controllers/runningTasks.controller.d.ts +8 -0
- package/dist/controllers/runningTasks.controller.js +52 -0
- package/dist/controllers/runningTasks.controller.js.map +1 -0
- package/dist/controllers/schedule.controller.d.ts +10 -0
- package/dist/controllers/schedule.controller.js +76 -0
- package/dist/controllers/schedule.controller.js.map +1 -0
- package/dist/dto/auth.dto.d.ts +4 -0
- package/dist/dto/auth.dto.js +27 -0
- package/dist/dto/auth.dto.js.map +1 -0
- package/dist/dto/backend.dto.d.ts +16 -0
- package/dist/dto/backend.dto.js +64 -0
- package/dist/dto/backend.dto.js.map +1 -0
- package/dist/dto/filesystem.dto.d.ts +12 -0
- package/dist/dto/filesystem.dto.js +56 -0
- package/dist/dto/filesystem.dto.js.map +1 -0
- package/dist/dto/integrations.dto.d.ts +35 -0
- package/dist/dto/integrations.dto.js +163 -0
- package/dist/dto/integrations.dto.js.map +1 -0
- package/dist/dto/onboarding.dto.d.ts +13 -0
- package/dist/dto/onboarding.dto.js +60 -0
- package/dist/dto/onboarding.dto.js.map +1 -0
- package/dist/dto/repository.dto.d.ts +113 -0
- package/dist/dto/repository.dto.js +421 -0
- package/dist/dto/repository.dto.js.map +1 -0
- package/dist/dto/runningTasks.dto.d.ts +14 -0
- package/dist/dto/runningTasks.dto.js +59 -0
- package/dist/dto/runningTasks.dto.js.map +1 -0
- package/dist/dto/schedule.dto.d.ts +29 -0
- package/dist/dto/schedule.dto.js +149 -0
- package/dist/dto/schedule.dto.js.map +1 -0
- package/dist/enum.d.ts +32 -0
- package/dist/enum.js +42 -0
- package/dist/enum.js.map +1 -0
- package/dist/events/events.gateway.d.ts +73 -0
- package/dist/events/events.gateway.js +79 -0
- package/dist/events/events.gateway.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -0
- package/dist/moduleConfig.d.ts +20 -0
- package/dist/moduleConfig.js +5 -0
- package/dist/moduleConfig.js.map +1 -0
- package/dist/orchestrationApi.module.d.ts +5 -0
- package/dist/orchestrationApi.module.js +134 -0
- package/dist/orchestrationApi.module.js.map +1 -0
- package/dist/repositories/backend.repository.d.ts +19 -0
- package/dist/repositories/backend.repository.js +60 -0
- package/dist/repositories/backend.repository.js.map +1 -0
- package/dist/repositories/config.repository.d.ts +18 -0
- package/dist/repositories/config.repository.js +93 -0
- package/dist/repositories/config.repository.js.map +1 -0
- package/dist/repositories/database.repository.d.ts +11 -0
- package/dist/repositories/database.repository.js +85 -0
- package/dist/repositories/database.repository.js.map +1 -0
- package/dist/repositories/moduleConfig.repository.d.ts +12 -0
- package/dist/repositories/moduleConfig.repository.js +48 -0
- package/dist/repositories/moduleConfig.repository.js.map +1 -0
- package/dist/repositories/repository.repository.d.ts +18 -0
- package/dist/repositories/repository.repository.js +81 -0
- package/dist/repositories/repository.repository.js.map +1 -0
- package/dist/repositories/repositoryIntegrationImmich.repository.d.ts +14 -0
- package/dist/repositories/repositoryIntegrationImmich.repository.js +57 -0
- package/dist/repositories/repositoryIntegrationImmich.repository.js.map +1 -0
- package/dist/repositories/repositoryLocalMetrics.repository.d.ts +23 -0
- package/dist/repositories/repositoryLocalMetrics.repository.js +55 -0
- package/dist/repositories/repositoryLocalMetrics.repository.js.map +1 -0
- package/dist/repositories/repositoryPath.repository.d.ts +17 -0
- package/dist/repositories/repositoryPath.repository.js +48 -0
- package/dist/repositories/repositoryPath.repository.js.map +1 -0
- package/dist/repositories/restic.repository.d.ts +207 -0
- package/dist/repositories/restic.repository.js +96 -0
- package/dist/repositories/restic.repository.js.map +1 -0
- package/dist/repositories/runHistory.repository.d.ts +44 -0
- package/dist/repositories/runHistory.repository.js +191 -0
- package/dist/repositories/runHistory.repository.js.map +1 -0
- package/dist/repositories/runningTasks.repository.d.ts +14 -0
- package/dist/repositories/runningTasks.repository.js +77 -0
- package/dist/repositories/runningTasks.repository.js.map +1 -0
- package/dist/repositories/schedule.repository.d.ts +47 -0
- package/dist/repositories/schedule.repository.js +99 -0
- package/dist/repositories/schedule.repository.js.map +1 -0
- package/dist/repositories/storage.repository.d.ts +9 -0
- package/dist/repositories/storage.repository.js +39 -0
- package/dist/repositories/storage.repository.js.map +1 -0
- package/dist/schema/index.d.ts +20 -0
- package/dist/schema/index.js +3 -0
- package/dist/schema/index.js.map +1 -0
- package/dist/schema/migrations/20260218105210-InitialMigration.d.ts +3 -0
- package/dist/schema/migrations/20260218105210-InitialMigration.js +15 -0
- package/dist/schema/migrations/20260218105210-InitialMigration.js.map +1 -0
- package/dist/schema/migrations/20260218122600-AddRepositories.d.ts +3 -0
- package/dist/schema/migrations/20260218122600-AddRepositories.js +21 -0
- package/dist/schema/migrations/20260218122600-AddRepositories.js.map +1 -0
- package/dist/schema/migrations/20260224112323-RepositoryPathTable.d.ts +3 -0
- package/dist/schema/migrations/20260224112323-RepositoryPathTable.js +16 -0
- package/dist/schema/migrations/20260224112323-RepositoryPathTable.js.map +1 -0
- package/dist/schema/migrations/20260224123344-RunHistoryTable.d.ts +3 -0
- package/dist/schema/migrations/20260224123344-RunHistoryTable.js +20 -0
- package/dist/schema/migrations/20260224123344-RunHistoryTable.js.map +1 -0
- package/dist/schema/migrations/20260224125102-RepositoryMetricsTable.d.ts +3 -0
- package/dist/schema/migrations/20260224125102-RepositoryMetricsTable.js +16 -0
- package/dist/schema/migrations/20260224125102-RepositoryMetricsTable.js.map +1 -0
- package/dist/schema/migrations/20260304162353-ScheduleTable.d.ts +3 -0
- package/dist/schema/migrations/20260304162353-ScheduleTable.js +27 -0
- package/dist/schema/migrations/20260304162353-ScheduleTable.js.map +1 -0
- package/dist/schema/migrations/20260313222211-AddMetricsColumns.d.ts +3 -0
- package/dist/schema/migrations/20260313222211-AddMetricsColumns.js +13 -0
- package/dist/schema/migrations/20260313222211-AddMetricsColumns.js.map +1 -0
- package/dist/schema/migrations/20260330120000-RepositoryIntegrationImmichTable.d.ts +3 -0
- package/dist/schema/migrations/20260330120000-RepositoryIntegrationImmichTable.js +15 -0
- package/dist/schema/migrations/20260330120000-RepositoryIntegrationImmichTable.js.map +1 -0
- package/dist/schema/migrations/20260330130000-AddScheduleIdToImmichIntegration.d.ts +3 -0
- package/dist/schema/migrations/20260330130000-AddScheduleIdToImmichIntegration.js +14 -0
- package/dist/schema/migrations/20260330130000-AddScheduleIdToImmichIntegration.js.map +1 -0
- package/dist/schema/migrations/20260507120000-AddRunHistoryType.d.ts +3 -0
- package/dist/schema/migrations/20260507120000-AddRunHistoryType.js +18 -0
- package/dist/schema/migrations/20260507120000-AddRunHistoryType.js.map +1 -0
- package/dist/schema/migrations/20260512120000-AddRepositoryRetentionPolicy.d.ts +3 -0
- package/dist/schema/migrations/20260512120000-AddRepositoryRetentionPolicy.js +11 -0
- package/dist/schema/migrations/20260512120000-AddRepositoryRetentionPolicy.js.map +1 -0
- package/dist/schema/migrations/20260512120000-AddRepositoryRetentionPreset.d.ts +3 -0
- package/dist/schema/migrations/20260512120000-AddRepositoryRetentionPreset.js +18 -0
- package/dist/schema/migrations/20260512120000-AddRepositoryRetentionPreset.js.map +1 -0
- package/dist/schema/migrations/20260512130000-AllowForgetRunHistoryType.d.ts +3 -0
- package/dist/schema/migrations/20260512130000-AllowForgetRunHistoryType.js +47 -0
- package/dist/schema/migrations/20260512130000-AllowForgetRunHistoryType.js.map +1 -0
- package/dist/schema/tables/backend.table.d.ts +20 -0
- package/dist/schema/tables/backend.table.js +9 -0
- package/dist/schema/tables/backend.table.js.map +1 -0
- package/dist/schema/tables/config.table.d.ts +4 -0
- package/dist/schema/tables/config.table.js +9 -0
- package/dist/schema/tables/config.table.js.map +1 -0
- package/dist/schema/tables/repository.table.d.ts +5 -0
- package/dist/schema/tables/repository.table.js +10 -0
- package/dist/schema/tables/repository.table.js.map +1 -0
- package/dist/schema/tables/repositoryIntegrationImmich.table.d.ts +10 -0
- package/dist/schema/tables/repositoryIntegrationImmich.table.js +10 -0
- package/dist/schema/tables/repositoryIntegrationImmich.table.js.map +1 -0
- package/dist/schema/tables/repositoryLocalMetrics.table.d.ts +7 -0
- package/dist/schema/tables/repositoryLocalMetrics.table.js +12 -0
- package/dist/schema/tables/repositoryLocalMetrics.table.js.map +1 -0
- package/dist/schema/tables/repositoryPath.table.d.ts +4 -0
- package/dist/schema/tables/repositoryPath.table.js +9 -0
- package/dist/schema/tables/repositoryPath.table.js.map +1 -0
- package/dist/schema/tables/repositorySchedule.table.d.ts +4 -0
- package/dist/schema/tables/repositorySchedule.table.js +9 -0
- package/dist/schema/tables/repositorySchedule.table.js.map +1 -0
- package/dist/schema/tables/runHistory.table.d.ts +11 -0
- package/dist/schema/tables/runHistory.table.js +14 -0
- package/dist/schema/tables/runHistory.table.js.map +1 -0
- package/dist/schema/tables/schedule.table.d.ts +9 -0
- package/dist/schema/tables/schedule.table.js +14 -0
- package/dist/schema/tables/schedule.table.js.map +1 -0
- package/dist/services/auth.service.d.ts +16 -0
- package/dist/services/auth.service.js +85 -0
- package/dist/services/auth.service.js.map +1 -0
- package/dist/services/backend.service.d.ts +12 -0
- package/dist/services/backend.service.js +68 -0
- package/dist/services/backend.service.js.map +1 -0
- package/dist/services/bootstrap.service.d.ts +13 -0
- package/dist/services/bootstrap.service.js +44 -0
- package/dist/services/bootstrap.service.js.map +1 -0
- package/dist/services/database.service.d.ts +11 -0
- package/dist/services/database.service.js +39 -0
- package/dist/services/database.service.js.map +1 -0
- package/dist/services/development.service.d.ts +11 -0
- package/dist/services/development.service.js +59 -0
- package/dist/services/development.service.js.map +1 -0
- package/dist/services/filesystem.service.d.ts +7 -0
- package/dist/services/filesystem.service.js +43 -0
- package/dist/services/filesystem.service.js.map +1 -0
- package/dist/services/integrations.service.d.ts +22 -0
- package/dist/services/integrations.service.js +158 -0
- package/dist/services/integrations.service.js.map +1 -0
- package/dist/services/onboarding.service.d.ts +17 -0
- package/dist/services/onboarding.service.js +65 -0
- package/dist/services/onboarding.service.js.map +1 -0
- package/dist/services/repository.service.d.ts +65 -0
- package/dist/services/repository.service.js +623 -0
- package/dist/services/repository.service.js.map +1 -0
- package/dist/services/runHistory.service.d.ts +7 -0
- package/dist/services/runHistory.service.js +29 -0
- package/dist/services/runHistory.service.js.map +1 -0
- package/dist/services/runningTasks.service.d.ts +8 -0
- package/dist/services/runningTasks.service.js +34 -0
- package/dist/services/runningTasks.service.js.map +1 -0
- package/dist/services/schedule.service.d.ts +27 -0
- package/dist/services/schedule.service.js +197 -0
- package/dist/services/schedule.service.js.map +1 -0
- package/dist/utils/restic.d.ts +17 -0
- package/dist/utils/restic.js +26 -0
- package/dist/utils/restic.js.map +1 -0
- package/package.json +79 -0
|
@@ -0,0 +1,149 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.ScheduleListResponseDto = exports.ScheduleUpdateResponseDto = exports.ScheduleUpdateRequestDto = exports.ScheduleCreateResponseDto = exports.ScheduleCreateRequestDto = exports.ScheduleDto = void 0;
|
|
13
|
+
const swagger_1 = require("@nestjs/swagger");
|
|
14
|
+
const class_validator_1 = require("class-validator");
|
|
15
|
+
const cron_1 = require("cron");
|
|
16
|
+
let CronValidator = class CronValidator {
|
|
17
|
+
validate(expression) {
|
|
18
|
+
try {
|
|
19
|
+
new cron_1.CronJob(expression, () => { });
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
CronValidator = __decorate([
|
|
28
|
+
(0, class_validator_1.ValidatorConstraint)({ name: 'cronValidator' })
|
|
29
|
+
], CronValidator);
|
|
30
|
+
const IsCronExpression = () => (0, class_validator_1.Validate)(CronValidator, { message: 'Invalid cron expression' });
|
|
31
|
+
class ScheduleDto {
|
|
32
|
+
id;
|
|
33
|
+
name;
|
|
34
|
+
paused;
|
|
35
|
+
cron;
|
|
36
|
+
repositories;
|
|
37
|
+
lastRun;
|
|
38
|
+
lastFinished;
|
|
39
|
+
}
|
|
40
|
+
exports.ScheduleDto = ScheduleDto;
|
|
41
|
+
__decorate([
|
|
42
|
+
(0, swagger_1.ApiProperty)({ type: String }),
|
|
43
|
+
__metadata("design:type", String)
|
|
44
|
+
], ScheduleDto.prototype, "id", void 0);
|
|
45
|
+
__decorate([
|
|
46
|
+
(0, swagger_1.ApiProperty)({ type: String }),
|
|
47
|
+
__metadata("design:type", String)
|
|
48
|
+
], ScheduleDto.prototype, "name", void 0);
|
|
49
|
+
__decorate([
|
|
50
|
+
(0, swagger_1.ApiProperty)({ type: Boolean }),
|
|
51
|
+
__metadata("design:type", Boolean)
|
|
52
|
+
], ScheduleDto.prototype, "paused", void 0);
|
|
53
|
+
__decorate([
|
|
54
|
+
(0, swagger_1.ApiProperty)({ type: String }),
|
|
55
|
+
__metadata("design:type", String)
|
|
56
|
+
], ScheduleDto.prototype, "cron", void 0);
|
|
57
|
+
__decorate([
|
|
58
|
+
(0, swagger_1.ApiProperty)({ type: [String] }),
|
|
59
|
+
__metadata("design:type", Array)
|
|
60
|
+
], ScheduleDto.prototype, "repositories", void 0);
|
|
61
|
+
__decorate([
|
|
62
|
+
(0, swagger_1.ApiProperty)({ type: String, required: false }),
|
|
63
|
+
__metadata("design:type", String)
|
|
64
|
+
], ScheduleDto.prototype, "lastRun", void 0);
|
|
65
|
+
__decorate([
|
|
66
|
+
(0, swagger_1.ApiProperty)({ type: String, required: false }),
|
|
67
|
+
__metadata("design:type", String)
|
|
68
|
+
], ScheduleDto.prototype, "lastFinished", void 0);
|
|
69
|
+
class ScheduleCreateRequestDto {
|
|
70
|
+
name;
|
|
71
|
+
cron;
|
|
72
|
+
repositories;
|
|
73
|
+
}
|
|
74
|
+
exports.ScheduleCreateRequestDto = ScheduleCreateRequestDto;
|
|
75
|
+
__decorate([
|
|
76
|
+
(0, swagger_1.ApiProperty)({ type: String }),
|
|
77
|
+
(0, class_validator_1.IsString)(),
|
|
78
|
+
__metadata("design:type", String)
|
|
79
|
+
], ScheduleCreateRequestDto.prototype, "name", void 0);
|
|
80
|
+
__decorate([
|
|
81
|
+
(0, swagger_1.ApiProperty)({ type: String }),
|
|
82
|
+
(0, class_validator_1.IsString)(),
|
|
83
|
+
IsCronExpression(),
|
|
84
|
+
__metadata("design:type", String)
|
|
85
|
+
], ScheduleCreateRequestDto.prototype, "cron", void 0);
|
|
86
|
+
__decorate([
|
|
87
|
+
(0, swagger_1.ApiProperty)({ type: [String] }),
|
|
88
|
+
(0, class_validator_1.IsArray)(),
|
|
89
|
+
(0, class_validator_1.IsString)({ each: true }),
|
|
90
|
+
__metadata("design:type", Array)
|
|
91
|
+
], ScheduleCreateRequestDto.prototype, "repositories", void 0);
|
|
92
|
+
class ScheduleCreateResponseDto {
|
|
93
|
+
schedule;
|
|
94
|
+
}
|
|
95
|
+
exports.ScheduleCreateResponseDto = ScheduleCreateResponseDto;
|
|
96
|
+
__decorate([
|
|
97
|
+
(0, swagger_1.ApiProperty)({ type: ScheduleDto }),
|
|
98
|
+
__metadata("design:type", ScheduleDto)
|
|
99
|
+
], ScheduleCreateResponseDto.prototype, "schedule", void 0);
|
|
100
|
+
class ScheduleUpdateRequestDto {
|
|
101
|
+
name;
|
|
102
|
+
paused;
|
|
103
|
+
cron;
|
|
104
|
+
repositories;
|
|
105
|
+
}
|
|
106
|
+
exports.ScheduleUpdateRequestDto = ScheduleUpdateRequestDto;
|
|
107
|
+
__decorate([
|
|
108
|
+
(0, swagger_1.ApiProperty)({ type: String, required: false }),
|
|
109
|
+
(0, class_validator_1.IsOptional)(),
|
|
110
|
+
(0, class_validator_1.IsString)(),
|
|
111
|
+
__metadata("design:type", String)
|
|
112
|
+
], ScheduleUpdateRequestDto.prototype, "name", void 0);
|
|
113
|
+
__decorate([
|
|
114
|
+
(0, swagger_1.ApiProperty)({ type: Boolean, required: false }),
|
|
115
|
+
(0, class_validator_1.IsOptional)(),
|
|
116
|
+
(0, class_validator_1.IsBoolean)(),
|
|
117
|
+
__metadata("design:type", Boolean)
|
|
118
|
+
], ScheduleUpdateRequestDto.prototype, "paused", void 0);
|
|
119
|
+
__decorate([
|
|
120
|
+
(0, swagger_1.ApiProperty)({ type: String, required: false }),
|
|
121
|
+
(0, class_validator_1.IsOptional)(),
|
|
122
|
+
(0, class_validator_1.IsString)(),
|
|
123
|
+
IsCronExpression(),
|
|
124
|
+
__metadata("design:type", String)
|
|
125
|
+
], ScheduleUpdateRequestDto.prototype, "cron", void 0);
|
|
126
|
+
__decorate([
|
|
127
|
+
(0, swagger_1.ApiProperty)({ type: [String], required: false }),
|
|
128
|
+
(0, class_validator_1.IsOptional)(),
|
|
129
|
+
(0, class_validator_1.IsArray)(),
|
|
130
|
+
(0, class_validator_1.IsString)({ each: true }),
|
|
131
|
+
__metadata("design:type", Array)
|
|
132
|
+
], ScheduleUpdateRequestDto.prototype, "repositories", void 0);
|
|
133
|
+
class ScheduleUpdateResponseDto {
|
|
134
|
+
schedule;
|
|
135
|
+
}
|
|
136
|
+
exports.ScheduleUpdateResponseDto = ScheduleUpdateResponseDto;
|
|
137
|
+
__decorate([
|
|
138
|
+
(0, swagger_1.ApiProperty)({ type: ScheduleDto }),
|
|
139
|
+
__metadata("design:type", ScheduleDto)
|
|
140
|
+
], ScheduleUpdateResponseDto.prototype, "schedule", void 0);
|
|
141
|
+
class ScheduleListResponseDto {
|
|
142
|
+
schedules;
|
|
143
|
+
}
|
|
144
|
+
exports.ScheduleListResponseDto = ScheduleListResponseDto;
|
|
145
|
+
__decorate([
|
|
146
|
+
(0, swagger_1.ApiProperty)({ type: [ScheduleDto] }),
|
|
147
|
+
__metadata("design:type", Array)
|
|
148
|
+
], ScheduleListResponseDto.prototype, "schedules", void 0);
|
|
149
|
+
//# sourceMappingURL=schedule.dto.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schedule.dto.js","sourceRoot":"","sources":["../../src/dto/schedule.dto.ts"],"names":[],"mappings":"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"}
|
package/dist/enum.d.ts
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export declare enum CookieName {
|
|
2
|
+
NextUrl = "sdk-next",
|
|
3
|
+
OidcState = "sdk-oidc-state",
|
|
4
|
+
OidcCodeVerifier = "sdk-oidc-code-verifier",
|
|
5
|
+
YuccaAccessToken = "yucca-access-token",
|
|
6
|
+
YuccaOidcState = "yucca-oidc-state",
|
|
7
|
+
YuccaOidcCodeVerifier = "yucca-oidc-code-verifier"
|
|
8
|
+
}
|
|
9
|
+
export declare enum ConfigurationKey {
|
|
10
|
+
EncryptionKey = "encryption-key",
|
|
11
|
+
OnboardedKey = "onboarded-key",
|
|
12
|
+
SkippedOnboardingExtraConfig = "skipped-onboarding-extra-config"
|
|
13
|
+
}
|
|
14
|
+
export declare enum BackendType {
|
|
15
|
+
Yucca = "yucca",
|
|
16
|
+
Local = "local",
|
|
17
|
+
S3 = "s3"
|
|
18
|
+
}
|
|
19
|
+
export declare enum TaskStatus {
|
|
20
|
+
Incomplete = "incomplete",
|
|
21
|
+
Complete = "complete",
|
|
22
|
+
Failed = "failed"
|
|
23
|
+
}
|
|
24
|
+
export declare enum TaskType {
|
|
25
|
+
Schedule = "schedule",
|
|
26
|
+
Restore = "restore",
|
|
27
|
+
Backup = "backup",
|
|
28
|
+
Forget = "forget"
|
|
29
|
+
}
|
|
30
|
+
export declare enum InternalEvent {
|
|
31
|
+
ModuleConfigUpdated = "yucca.moduleConfig.updated"
|
|
32
|
+
}
|
package/dist/enum.js
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.InternalEvent = exports.TaskType = exports.TaskStatus = exports.BackendType = exports.ConfigurationKey = exports.CookieName = void 0;
|
|
4
|
+
var CookieName;
|
|
5
|
+
(function (CookieName) {
|
|
6
|
+
CookieName["NextUrl"] = "sdk-next";
|
|
7
|
+
CookieName["OidcState"] = "sdk-oidc-state";
|
|
8
|
+
CookieName["OidcCodeVerifier"] = "sdk-oidc-code-verifier";
|
|
9
|
+
CookieName["YuccaAccessToken"] = "yucca-access-token";
|
|
10
|
+
CookieName["YuccaOidcState"] = "yucca-oidc-state";
|
|
11
|
+
CookieName["YuccaOidcCodeVerifier"] = "yucca-oidc-code-verifier";
|
|
12
|
+
})(CookieName || (exports.CookieName = CookieName = {}));
|
|
13
|
+
var ConfigurationKey;
|
|
14
|
+
(function (ConfigurationKey) {
|
|
15
|
+
ConfigurationKey["EncryptionKey"] = "encryption-key";
|
|
16
|
+
ConfigurationKey["OnboardedKey"] = "onboarded-key";
|
|
17
|
+
ConfigurationKey["SkippedOnboardingExtraConfig"] = "skipped-onboarding-extra-config";
|
|
18
|
+
})(ConfigurationKey || (exports.ConfigurationKey = ConfigurationKey = {}));
|
|
19
|
+
var BackendType;
|
|
20
|
+
(function (BackendType) {
|
|
21
|
+
BackendType["Yucca"] = "yucca";
|
|
22
|
+
BackendType["Local"] = "local";
|
|
23
|
+
BackendType["S3"] = "s3";
|
|
24
|
+
})(BackendType || (exports.BackendType = BackendType = {}));
|
|
25
|
+
var TaskStatus;
|
|
26
|
+
(function (TaskStatus) {
|
|
27
|
+
TaskStatus["Incomplete"] = "incomplete";
|
|
28
|
+
TaskStatus["Complete"] = "complete";
|
|
29
|
+
TaskStatus["Failed"] = "failed";
|
|
30
|
+
})(TaskStatus || (exports.TaskStatus = TaskStatus = {}));
|
|
31
|
+
var TaskType;
|
|
32
|
+
(function (TaskType) {
|
|
33
|
+
TaskType["Schedule"] = "schedule";
|
|
34
|
+
TaskType["Restore"] = "restore";
|
|
35
|
+
TaskType["Backup"] = "backup";
|
|
36
|
+
TaskType["Forget"] = "forget";
|
|
37
|
+
})(TaskType || (exports.TaskType = TaskType = {}));
|
|
38
|
+
var InternalEvent;
|
|
39
|
+
(function (InternalEvent) {
|
|
40
|
+
InternalEvent["ModuleConfigUpdated"] = "yucca.moduleConfig.updated";
|
|
41
|
+
})(InternalEvent || (exports.InternalEvent = InternalEvent = {}));
|
|
42
|
+
//# sourceMappingURL=enum.js.map
|
package/dist/enum.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enum.js","sourceRoot":"","sources":["../src/enum.ts"],"names":[],"mappings":";;;AAAA,IAAY,UAOX;AAPD,WAAY,UAAU;IACpB,kCAAoB,CAAA;IACpB,0CAA4B,CAAA;IAC5B,yDAA2C,CAAA;IAC3C,qDAAuC,CAAA;IACvC,iDAAmC,CAAA;IACnC,gEAAkD,CAAA;AACpD,CAAC,EAPW,UAAU,0BAAV,UAAU,QAOrB;AAED,IAAY,gBAIX;AAJD,WAAY,gBAAgB;IAC1B,oDAAgC,CAAA;IAChC,kDAA8B,CAAA;IAC9B,oFAAgE,CAAA;AAClE,CAAC,EAJW,gBAAgB,gCAAhB,gBAAgB,QAI3B;AAED,IAAY,WAIX;AAJD,WAAY,WAAW;IACrB,8BAAe,CAAA;IACf,8BAAe,CAAA;IACf,wBAAS,CAAA;AACX,CAAC,EAJW,WAAW,2BAAX,WAAW,QAItB;AAED,IAAY,UAIX;AAJD,WAAY,UAAU;IACpB,uCAAyB,CAAA;IACzB,mCAAqB,CAAA;IACrB,+BAAiB,CAAA;AACnB,CAAC,EAJW,UAAU,0BAAV,UAAU,QAIrB;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"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { OnGatewayConnection } from '@nestjs/websockets';
|
|
2
|
+
import { Server, Socket } from 'socket.io';
|
|
3
|
+
import { BackendDto } from '../dto/backend.dto';
|
|
4
|
+
import { IntegrationsResponseDto } from '../dto/integrations.dto';
|
|
5
|
+
import { LocalRepositoryDto, RunDto } from '../dto/repository.dto';
|
|
6
|
+
import { RunningTaskDto } from '../dto/runningTasks.dto';
|
|
7
|
+
import { ScheduleDto } from '../dto/schedule.dto';
|
|
8
|
+
import { ModuleConfigRepository } from '../repositories/moduleConfig.repository';
|
|
9
|
+
export type GatewayEvent = {
|
|
10
|
+
type: 'BackendCreate';
|
|
11
|
+
backend: BackendDto;
|
|
12
|
+
} | {
|
|
13
|
+
type: 'RepositoryCreate';
|
|
14
|
+
repository: LocalRepositoryDto;
|
|
15
|
+
} | {
|
|
16
|
+
type: 'RepositoryUpdate';
|
|
17
|
+
repositoryId: string;
|
|
18
|
+
repository: Partial<LocalRepositoryDto>;
|
|
19
|
+
} | {
|
|
20
|
+
type: 'RepositoryDelete';
|
|
21
|
+
repositoryId: string;
|
|
22
|
+
} | {
|
|
23
|
+
type: 'IntegrationUpdate';
|
|
24
|
+
integrations: IntegrationsResponseDto;
|
|
25
|
+
} | {
|
|
26
|
+
type: 'ScheduleCreate';
|
|
27
|
+
schedule: ScheduleDto;
|
|
28
|
+
} | {
|
|
29
|
+
type: 'ScheduleUpdate';
|
|
30
|
+
scheduleId: string;
|
|
31
|
+
schedule: Partial<ScheduleDto>;
|
|
32
|
+
} | {
|
|
33
|
+
type: 'ScheduleDelete';
|
|
34
|
+
scheduleId: string;
|
|
35
|
+
} | {
|
|
36
|
+
type: 'TaskStart';
|
|
37
|
+
task: RunningTaskDto;
|
|
38
|
+
} | {
|
|
39
|
+
type: 'TaskUpdate';
|
|
40
|
+
parentId: string;
|
|
41
|
+
task: Partial<RunningTaskDto>;
|
|
42
|
+
} | {
|
|
43
|
+
type: 'TaskEnd';
|
|
44
|
+
parentId: string;
|
|
45
|
+
} | {
|
|
46
|
+
type: 'RunCreate';
|
|
47
|
+
run: RunDto;
|
|
48
|
+
} | {
|
|
49
|
+
type: 'RunUpdate';
|
|
50
|
+
runId: string;
|
|
51
|
+
repositoryId: string;
|
|
52
|
+
run: Partial<RunDto>;
|
|
53
|
+
} | {
|
|
54
|
+
type: 'DeviceFlowFailure';
|
|
55
|
+
};
|
|
56
|
+
export declare class EventsGateway implements OnGatewayConnection {
|
|
57
|
+
private readonly moduleConfig;
|
|
58
|
+
private authFn?;
|
|
59
|
+
private emitter;
|
|
60
|
+
constructor(moduleConfig: ModuleConfigRepository);
|
|
61
|
+
server?: Server;
|
|
62
|
+
publish(event: GatewayEvent): void;
|
|
63
|
+
emit(event: GatewayEvent): void;
|
|
64
|
+
on(listener: (event: GatewayEvent) => void): void;
|
|
65
|
+
off(listener: (event: GatewayEvent) => void): void;
|
|
66
|
+
handleConnection(client: Socket): Promise<void>;
|
|
67
|
+
setAuthFn(fn: (client: Socket) => Promise<{
|
|
68
|
+
user: {
|
|
69
|
+
isAdmin: boolean;
|
|
70
|
+
};
|
|
71
|
+
}>): void;
|
|
72
|
+
private authenticate;
|
|
73
|
+
}
|
|
@@ -0,0 +1,79 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.EventsGateway = void 0;
|
|
13
|
+
const websockets_1 = require("@nestjs/websockets");
|
|
14
|
+
const node_events_1 = require("node:events");
|
|
15
|
+
const socket_io_1 = require("socket.io");
|
|
16
|
+
const moduleConfig_repository_1 = require("../repositories/moduleConfig.repository");
|
|
17
|
+
let EventsGateway = class EventsGateway {
|
|
18
|
+
moduleConfig;
|
|
19
|
+
authFn;
|
|
20
|
+
emitter = new node_events_1.EventEmitter();
|
|
21
|
+
constructor(moduleConfig) {
|
|
22
|
+
this.moduleConfig = moduleConfig;
|
|
23
|
+
}
|
|
24
|
+
server;
|
|
25
|
+
publish(event) {
|
|
26
|
+
this.server?.emit(JSON.stringify(event));
|
|
27
|
+
this.emitter.emit('event', event);
|
|
28
|
+
}
|
|
29
|
+
emit(event) {
|
|
30
|
+
this.server?.emit(JSON.stringify(event));
|
|
31
|
+
}
|
|
32
|
+
on(listener) {
|
|
33
|
+
this.emitter.on('event', listener);
|
|
34
|
+
}
|
|
35
|
+
off(listener) {
|
|
36
|
+
this.emitter.off('event', listener);
|
|
37
|
+
}
|
|
38
|
+
async handleConnection(client) {
|
|
39
|
+
try {
|
|
40
|
+
const { user } = await this.authenticate(client);
|
|
41
|
+
if (!user.isAdmin) {
|
|
42
|
+
throw new Error("User isn't admin.");
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
client.disconnect();
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
setAuthFn(fn) {
|
|
50
|
+
this.authFn = fn;
|
|
51
|
+
}
|
|
52
|
+
async authenticate(client) {
|
|
53
|
+
if (!this.authFn) {
|
|
54
|
+
if (this.moduleConfig.get().requireWsAuth) {
|
|
55
|
+
throw new Error('Auth function not set');
|
|
56
|
+
}
|
|
57
|
+
return {
|
|
58
|
+
user: {
|
|
59
|
+
isAdmin: true,
|
|
60
|
+
},
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
return this.authFn(client);
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
exports.EventsGateway = EventsGateway;
|
|
67
|
+
__decorate([
|
|
68
|
+
(0, websockets_1.WebSocketServer)(),
|
|
69
|
+
__metadata("design:type", socket_io_1.Server)
|
|
70
|
+
], EventsGateway.prototype, "server", void 0);
|
|
71
|
+
exports.EventsGateway = EventsGateway = __decorate([
|
|
72
|
+
(0, websockets_1.WebSocketGateway)({
|
|
73
|
+
cors: false,
|
|
74
|
+
path: '/api/yucca/socket.io',
|
|
75
|
+
transports: ['websocket'],
|
|
76
|
+
}),
|
|
77
|
+
__metadata("design:paramtypes", [moduleConfig_repository_1.ModuleConfigRepository])
|
|
78
|
+
], EventsGateway);
|
|
79
|
+
//# sourceMappingURL=events.gateway.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.gateway.js","sourceRoot":"","sources":["../../src/events/events.gateway.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,mDAA4F;AAC5F,6CAA2C;AAC3C,yCAA2C;AAM3C,qFAAiF;AAuE1E,IAAM,aAAa,GAAnB,MAAM,aAAa;IAIK;IAHrB,MAAM,CAAU;IAChB,OAAO,GAAG,IAAI,0BAAY,EAAE,CAAC;IAErC,YAA6B,YAAoC;QAApC,iBAAY,GAAZ,YAAY,CAAwB;IAAG,CAAC;IAGrE,MAAM,CAAU;IAEhB,OAAO,CAAC,KAAmB;QACzB,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QACzC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACpC,CAAC;IAED,IAAI,CAAC,KAAmB;QACtB,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IAC3C,CAAC;IAED,EAAE,CAAC,QAAuC;QACxC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACrC,CAAC;IAED,GAAG,CAAC,QAAuC;QACzC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,MAAc;QACnC,IAAI,CAAC;YACH,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YACjD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;gBAClB,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;YACvC,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,CAAC,UAAU,EAAE,CAAC;QACtB,CAAC;IACH,CAAC;IAED,SAAS,CAAC,EAA+D;QACvE,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;IACnB,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,MAAc;QACvC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,aAAa,EAAE,CAAC;gBAC1C,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;YAC3C,CAAC;YAED,OAAO;gBACL,IAAI,EAAE;oBACJ,OAAO,EAAE,IAAI;iBACd;aACF,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;CACF,CAAA;AAxDY,sCAAa;AAOxB;IADC,IAAA,4BAAe,GAAE;8BACT,kBAAM;6CAAC;wBAPL,aAAa;IALzB,IAAA,6BAAgB,EAAC;QAChB,IAAI,EAAE,KAAK;QACX,IAAI,EAAE,sBAAsB;QAC5B,UAAU,EAAE,CAAC,WAAW,CAAC;KAC1B,CAAC;qCAK2C,gDAAsB;GAJtD,aAAa,CAwDzB"}
|
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.ModuleConfigRepository = exports.EventsGateway = void 0;
|
|
18
|
+
__exportStar(require("./const"), exports);
|
|
19
|
+
var events_gateway_1 = require("./events/events.gateway");
|
|
20
|
+
Object.defineProperty(exports, "EventsGateway", { enumerable: true, get: function () { return events_gateway_1.EventsGateway; } });
|
|
21
|
+
__exportStar(require("./orchestrationApi.module"), exports);
|
|
22
|
+
var moduleConfig_repository_1 = require("./repositories/moduleConfig.repository");
|
|
23
|
+
Object.defineProperty(exports, "ModuleConfigRepository", { enumerable: true, get: function () { return moduleConfig_repository_1.ModuleConfigRepository; } });
|
|
24
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,0DAAwD;AAA/C,+GAAA,aAAa,OAAA;AACtB,4DAA0C;AAC1C,kFAAgF;AAAvE,iIAAA,sBAAsB,OAAA"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export declare const ModuleConfigProvider: unique symbol;
|
|
2
|
+
export type ImmichIntegration = {
|
|
3
|
+
dataPath: string;
|
|
4
|
+
dataFolders: string[];
|
|
5
|
+
libraries: {
|
|
6
|
+
id: string;
|
|
7
|
+
name: string;
|
|
8
|
+
importPaths: string[];
|
|
9
|
+
exclusionPatterns: string[];
|
|
10
|
+
}[];
|
|
11
|
+
};
|
|
12
|
+
export type ModuleConfig = {
|
|
13
|
+
statePath: string;
|
|
14
|
+
yuccaProductionApi: string;
|
|
15
|
+
externalBaseUrl?: string;
|
|
16
|
+
requireWsAuth?: boolean;
|
|
17
|
+
requireLock?: boolean;
|
|
18
|
+
developmentMode?: boolean;
|
|
19
|
+
immichIntegration?: ImmichIntegration;
|
|
20
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"moduleConfig.js","sourceRoot":"","sources":["../src/moduleConfig.ts"],"names":[],"mappings":";;;AAAa,QAAA,oBAAoB,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC"}
|
|
@@ -0,0 +1,134 @@
|
|
|
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 __importDefault = (this && this.__importDefault) || function (mod) {
|
|
9
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
10
|
+
};
|
|
11
|
+
var OrchestrationApiModule_1;
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.OrchestrationApiModule = void 0;
|
|
14
|
+
const common_1 = require("@nestjs/common");
|
|
15
|
+
const event_emitter_1 = require("@nestjs/event-emitter");
|
|
16
|
+
const schedule_1 = require("@nestjs/schedule");
|
|
17
|
+
const better_sqlite3_1 = __importDefault(require("better-sqlite3"));
|
|
18
|
+
const kysely_1 = require("kysely");
|
|
19
|
+
const nestjs_kysely_1 = require("nestjs-kysely");
|
|
20
|
+
const node_fs_1 = require("node:fs");
|
|
21
|
+
const node_os_1 = require("node:os");
|
|
22
|
+
const node_path_1 = require("node:path");
|
|
23
|
+
const auth_controller_1 = require("./controllers/auth.controller");
|
|
24
|
+
const backend_controller_1 = require("./controllers/backend.controller");
|
|
25
|
+
const development_controller_1 = require("./controllers/development.controller");
|
|
26
|
+
const filesystem_controller_1 = require("./controllers/filesystem.controller");
|
|
27
|
+
const integrations_controller_1 = require("./controllers/integrations.controller");
|
|
28
|
+
const onboarding_controller_1 = require("./controllers/onboarding.controller");
|
|
29
|
+
const repository_controller_1 = require("./controllers/repository.controller");
|
|
30
|
+
const runHistory_controller_1 = require("./controllers/runHistory.controller");
|
|
31
|
+
const runningTasks_controller_1 = require("./controllers/runningTasks.controller");
|
|
32
|
+
const schedule_controller_1 = require("./controllers/schedule.controller");
|
|
33
|
+
const events_gateway_1 = require("./events/events.gateway");
|
|
34
|
+
const moduleConfig_1 = require("./moduleConfig");
|
|
35
|
+
const backend_repository_1 = require("./repositories/backend.repository");
|
|
36
|
+
const config_repository_1 = require("./repositories/config.repository");
|
|
37
|
+
const database_repository_1 = require("./repositories/database.repository");
|
|
38
|
+
const moduleConfig_repository_1 = require("./repositories/moduleConfig.repository");
|
|
39
|
+
const repository_repository_1 = require("./repositories/repository.repository");
|
|
40
|
+
const repositoryIntegrationImmich_repository_1 = require("./repositories/repositoryIntegrationImmich.repository");
|
|
41
|
+
const repositoryLocalMetrics_repository_1 = require("./repositories/repositoryLocalMetrics.repository");
|
|
42
|
+
const repositoryPath_repository_1 = require("./repositories/repositoryPath.repository");
|
|
43
|
+
const restic_repository_1 = require("./repositories/restic.repository");
|
|
44
|
+
const runHistory_repository_1 = require("./repositories/runHistory.repository");
|
|
45
|
+
const runningTasks_repository_1 = require("./repositories/runningTasks.repository");
|
|
46
|
+
const schedule_repository_1 = require("./repositories/schedule.repository");
|
|
47
|
+
const storage_repository_1 = require("./repositories/storage.repository");
|
|
48
|
+
const auth_service_1 = require("./services/auth.service");
|
|
49
|
+
const backend_service_1 = require("./services/backend.service");
|
|
50
|
+
const bootstrap_service_1 = require("./services/bootstrap.service");
|
|
51
|
+
const development_service_1 = require("./services/development.service");
|
|
52
|
+
const filesystem_service_1 = require("./services/filesystem.service");
|
|
53
|
+
const integrations_service_1 = require("./services/integrations.service");
|
|
54
|
+
const onboarding_service_1 = require("./services/onboarding.service");
|
|
55
|
+
const repository_service_1 = require("./services/repository.service");
|
|
56
|
+
const runHistory_service_1 = require("./services/runHistory.service");
|
|
57
|
+
const runningTasks_service_1 = require("./services/runningTasks.service");
|
|
58
|
+
const schedule_service_1 = require("./services/schedule.service");
|
|
59
|
+
const controllers = [
|
|
60
|
+
auth_controller_1.AuthController,
|
|
61
|
+
backend_controller_1.BackendController,
|
|
62
|
+
development_controller_1.DevelopmentController,
|
|
63
|
+
filesystem_controller_1.FilesystemController,
|
|
64
|
+
integrations_controller_1.IntegrationsController,
|
|
65
|
+
onboarding_controller_1.OnboardingController,
|
|
66
|
+
repository_controller_1.RepositoryController,
|
|
67
|
+
runHistory_controller_1.RunHistoryController,
|
|
68
|
+
runningTasks_controller_1.RunningTasksController,
|
|
69
|
+
schedule_controller_1.ScheduleController,
|
|
70
|
+
];
|
|
71
|
+
const repositories = [
|
|
72
|
+
backend_repository_1.BackendRepository,
|
|
73
|
+
config_repository_1.ConfigRepository,
|
|
74
|
+
database_repository_1.DatabaseRepository,
|
|
75
|
+
moduleConfig_repository_1.ModuleConfigRepository,
|
|
76
|
+
repository_repository_1.RepositoryRepository,
|
|
77
|
+
repositoryIntegrationImmich_repository_1.RepositoryIntegrationImmichRepository,
|
|
78
|
+
repositoryLocalMetrics_repository_1.RepositoryLocalMetricsRepository,
|
|
79
|
+
repositoryPath_repository_1.RepositoryPathRepository,
|
|
80
|
+
restic_repository_1.ResticRepository,
|
|
81
|
+
runHistory_repository_1.RunHistoryRepository,
|
|
82
|
+
runningTasks_repository_1.RunningTasksRepository,
|
|
83
|
+
schedule_repository_1.ScheduleRepository,
|
|
84
|
+
storage_repository_1.StorageRepository,
|
|
85
|
+
];
|
|
86
|
+
const services = [
|
|
87
|
+
auth_service_1.AuthService,
|
|
88
|
+
backend_service_1.BackendService,
|
|
89
|
+
bootstrap_service_1.BootstrapService,
|
|
90
|
+
development_service_1.DevelopmentService,
|
|
91
|
+
filesystem_service_1.FilesystemService,
|
|
92
|
+
integrations_service_1.IntegrationsService,
|
|
93
|
+
onboarding_service_1.OnboardingService,
|
|
94
|
+
repository_service_1.RepositoryService,
|
|
95
|
+
runHistory_service_1.RunHistoryService,
|
|
96
|
+
runningTasks_service_1.RunningTasksService,
|
|
97
|
+
schedule_service_1.ScheduleService,
|
|
98
|
+
];
|
|
99
|
+
let OrchestrationApiModule = OrchestrationApiModule_1 = class OrchestrationApiModule {
|
|
100
|
+
static forRoot(config) {
|
|
101
|
+
config.statePath ??= (0, node_path_1.resolve)((0, node_os_1.homedir)(), '.yucca');
|
|
102
|
+
if (!config.yuccaProductionApi) {
|
|
103
|
+
throw new Error('config.yuccaProductionApi is missing');
|
|
104
|
+
}
|
|
105
|
+
return {
|
|
106
|
+
module: OrchestrationApiModule_1,
|
|
107
|
+
imports: [
|
|
108
|
+
nestjs_kysely_1.KyselyModule.forRootAsync({
|
|
109
|
+
namespace: 'orchestrator',
|
|
110
|
+
useFactory: () => {
|
|
111
|
+
if (!(0, node_fs_1.existsSync)(config.statePath)) {
|
|
112
|
+
(0, node_fs_1.mkdirSync)(config.statePath, { recursive: true });
|
|
113
|
+
}
|
|
114
|
+
const database = new better_sqlite3_1.default((0, node_path_1.resolve)(config.statePath, 'state.sqlite3'));
|
|
115
|
+
database.pragma('journal_mode = WAL');
|
|
116
|
+
return {
|
|
117
|
+
dialect: new kysely_1.SqliteDialect({ database }),
|
|
118
|
+
};
|
|
119
|
+
},
|
|
120
|
+
}),
|
|
121
|
+
event_emitter_1.EventEmitterModule.forRoot(),
|
|
122
|
+
schedule_1.ScheduleModule.forRoot(),
|
|
123
|
+
],
|
|
124
|
+
controllers,
|
|
125
|
+
providers: [{ provide: moduleConfig_1.ModuleConfigProvider, useValue: config }, events_gateway_1.EventsGateway, ...repositories, ...services],
|
|
126
|
+
exports: [events_gateway_1.EventsGateway, moduleConfig_repository_1.ModuleConfigRepository],
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
exports.OrchestrationApiModule = OrchestrationApiModule;
|
|
131
|
+
exports.OrchestrationApiModule = OrchestrationApiModule = OrchestrationApiModule_1 = __decorate([
|
|
132
|
+
(0, common_1.Module)({})
|
|
133
|
+
], OrchestrationApiModule);
|
|
134
|
+
//# sourceMappingURL=orchestrationApi.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orchestrationApi.module.js","sourceRoot":"","sources":["../src/orchestrationApi.module.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Kysely } from 'kysely';
|
|
2
|
+
import { DB } from '../schema';
|
|
3
|
+
import { BackendConfiguration } from '../schema/tables/backend.table';
|
|
4
|
+
export declare class BackendRepository {
|
|
5
|
+
private db;
|
|
6
|
+
constructor(db: Kysely<DB>);
|
|
7
|
+
updateBackend(id: string, configuration: BackendConfiguration): Promise<{
|
|
8
|
+
id: string;
|
|
9
|
+
configuration: string;
|
|
10
|
+
}>;
|
|
11
|
+
getBackends(): Promise<{
|
|
12
|
+
id: string;
|
|
13
|
+
configuration: BackendConfiguration;
|
|
14
|
+
}[]>;
|
|
15
|
+
getBackend(id: string): Promise<{
|
|
16
|
+
id: string;
|
|
17
|
+
configuration: BackendConfiguration;
|
|
18
|
+
}>;
|
|
19
|
+
}
|