rl-core-api 0.15.6 → 0.16.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/core/bootstrap/bootstrapCore.util.js +1 -1
- package/dist/core/config/env.schema.d.ts +7 -0
- package/dist/core/config/env.schema.js +4 -0
- package/dist/core/images/imageCleanup.service.d.ts +9 -0
- package/dist/core/images/imageCleanup.service.js +50 -0
- package/dist/core/images/imageFetch.service.d.ts +11 -0
- package/dist/core/images/imageFetch.service.js +190 -0
- package/dist/core/images/imageProcessing.service.d.ts +9 -0
- package/dist/core/images/imageProcessing.service.js +74 -0
- package/dist/core/images/imageProfile.interface.d.ts +40 -0
- package/dist/core/images/imageProfile.interface.js +29 -0
- package/dist/core/images/imageProfile.registry.d.ts +14 -0
- package/dist/core/images/imageProfile.registry.js +61 -0
- package/dist/core/images/imageStorage.service.d.ts +28 -0
- package/dist/core/images/imageStorage.service.js +151 -0
- package/dist/core/images/images.controller.d.ts +16 -0
- package/dist/core/images/images.controller.js +142 -0
- package/dist/core/images/images.module.d.ts +2 -0
- package/dist/core/images/images.module.js +35 -0
- package/dist/core/images/images.processor.d.ts +18 -0
- package/dist/core/images/images.processor.js +75 -0
- package/dist/core/images/images.service.d.ts +34 -0
- package/dist/core/images/images.service.js +137 -0
- package/dist/core/images/imagesApi.module.d.ts +2 -0
- package/dist/core/images/imagesApi.module.js +25 -0
- package/dist/core/images/imagesWorker.module.d.ts +2 -0
- package/dist/core/images/imagesWorker.module.js +22 -0
- package/dist/core/images/responses/imageAccepted.response.d.ts +4 -0
- package/dist/core/images/responses/imageAccepted.response.js +28 -0
- package/dist/core/images/responses/imageProfile.response.d.ts +10 -0
- package/dist/core/images/responses/imageProfile.response.js +55 -0
- package/dist/core/images/responses/imageStatus.response.d.ts +7 -0
- package/dist/core/images/responses/imageStatus.response.js +36 -0
- package/dist/core/images/uploadImageFromUrl.command.d.ts +3 -0
- package/dist/core/images/uploadImageFromUrl.command.js +23 -0
- package/dist/core/queue/job.producer.d.ts +1 -1
- package/dist/core/queue/job.producer.js +7 -1
- package/dist/core/queue/queue.constants.d.ts +4 -1
- package/dist/core/queue/queue.constants.js +5 -2
- package/dist/features/users/domain/avatarImage.profile.d.ts +13 -0
- package/dist/features/users/domain/avatarImage.profile.js +30 -0
- package/dist/features/users/domain/index.d.ts +1 -1
- package/dist/features/users/domain/index.js +1 -1
- package/dist/features/users/presentation/users.controller.d.ts +6 -5
- package/dist/features/users/presentation/users.controller.js +28 -15
- package/dist/features/users/users.module.js +3 -1
- package/dist/index.d.ts +17 -1
- package/dist/index.js +43 -2
- package/dist/rlCore.module.js +5 -1
- package/package.json +1 -1
- package/dist/features/users/domain/avatar.service.d.ts +0 -5
- package/dist/features/users/domain/avatar.service.js +0 -61
|
@@ -0,0 +1,22 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.ImagesWorkerModule = void 0;
|
|
10
|
+
const common_1 = require("@nestjs/common");
|
|
11
|
+
const images_module_1 = require("./images.module");
|
|
12
|
+
const images_processor_1 = require("./images.processor");
|
|
13
|
+
const queue_constants_1 = require("../queue/queue.constants");
|
|
14
|
+
let ImagesWorkerModule = class ImagesWorkerModule {
|
|
15
|
+
};
|
|
16
|
+
exports.ImagesWorkerModule = ImagesWorkerModule;
|
|
17
|
+
exports.ImagesWorkerModule = ImagesWorkerModule = __decorate([
|
|
18
|
+
(0, common_1.Module)({
|
|
19
|
+
imports: [images_module_1.ImagesModule],
|
|
20
|
+
providers: (0, queue_constants_1.isRedisConfigured)() ? [images_processor_1.ImagesProcessor] : [],
|
|
21
|
+
})
|
|
22
|
+
], ImagesWorkerModule);
|
|
@@ -0,0 +1,28 @@
|
|
|
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.ImageAcceptedResponse = void 0;
|
|
13
|
+
const swagger_1 = require("@nestjs/swagger");
|
|
14
|
+
class ImageAcceptedResponse {
|
|
15
|
+
}
|
|
16
|
+
exports.ImageAcceptedResponse = ImageAcceptedResponse;
|
|
17
|
+
__decorate([
|
|
18
|
+
(0, swagger_1.ApiProperty)({ type: String, nullable: true, example: "312" }),
|
|
19
|
+
__metadata("design:type", Object)
|
|
20
|
+
], ImageAcceptedResponse.prototype, "jobId", void 0);
|
|
21
|
+
__decorate([
|
|
22
|
+
(0, swagger_1.ApiProperty)({
|
|
23
|
+
type: String,
|
|
24
|
+
nullable: true,
|
|
25
|
+
example: "/uploads/funkos/pending/6f1b2c34-9d55-4a1e-8f0a-2b7c1d9e4f10.webp",
|
|
26
|
+
}),
|
|
27
|
+
__metadata("design:type", Object)
|
|
28
|
+
], ImageAcceptedResponse.prototype, "path", void 0);
|
|
@@ -0,0 +1,55 @@
|
|
|
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.ImageProfileResponse = void 0;
|
|
13
|
+
const swagger_1 = require("@nestjs/swagger");
|
|
14
|
+
const imageProfile_interface_1 = require("../imageProfile.interface");
|
|
15
|
+
class ImageProfileResponse {
|
|
16
|
+
}
|
|
17
|
+
exports.ImageProfileResponse = ImageProfileResponse;
|
|
18
|
+
__decorate([
|
|
19
|
+
(0, swagger_1.ApiProperty)({ example: "funkos" }),
|
|
20
|
+
__metadata("design:type", String)
|
|
21
|
+
], ImageProfileResponse.prototype, "name", void 0);
|
|
22
|
+
__decorate([
|
|
23
|
+
(0, swagger_1.ApiProperty)({ example: 400, description: "Lado máximo em pixels — é teto, não obrigação" }),
|
|
24
|
+
__metadata("design:type", Number)
|
|
25
|
+
], ImageProfileResponse.prototype, "width", void 0);
|
|
26
|
+
__decorate([
|
|
27
|
+
(0, swagger_1.ApiPropertyOptional)({
|
|
28
|
+
type: Number,
|
|
29
|
+
nullable: true,
|
|
30
|
+
example: 400,
|
|
31
|
+
description: "Lado da caixa em que a imagem cabe. Com `inside`, a altura final segue a proporção da foto — este número é o teto, e é o que a tela usa para desenhar a área de envio",
|
|
32
|
+
}),
|
|
33
|
+
__metadata("design:type", Object)
|
|
34
|
+
], ImageProfileResponse.prototype, "height", void 0);
|
|
35
|
+
__decorate([
|
|
36
|
+
(0, swagger_1.ApiProperty)({ enum: imageProfile_interface_1.ImageFit, example: imageProfile_interface_1.ImageFit.CONTAIN }),
|
|
37
|
+
__metadata("design:type", String)
|
|
38
|
+
], ImageProfileResponse.prototype, "fit", void 0);
|
|
39
|
+
__decorate([
|
|
40
|
+
(0, swagger_1.ApiProperty)({ enum: imageProfile_interface_1.ImageFormat, example: imageProfile_interface_1.ImageFormat.WEBP }),
|
|
41
|
+
__metadata("design:type", String)
|
|
42
|
+
], ImageProfileResponse.prototype, "format", void 0);
|
|
43
|
+
__decorate([
|
|
44
|
+
(0, swagger_1.ApiProperty)({ example: 8388608 }),
|
|
45
|
+
__metadata("design:type", Number)
|
|
46
|
+
], ImageProfileResponse.prototype, "maxBytes", void 0);
|
|
47
|
+
__decorate([
|
|
48
|
+
(0, swagger_1.ApiProperty)({
|
|
49
|
+
type: String,
|
|
50
|
+
isArray: true,
|
|
51
|
+
example: ["image/jpeg", "image/png", "image/webp"],
|
|
52
|
+
description: "Vira o `accept` do seletor de arquivo",
|
|
53
|
+
}),
|
|
54
|
+
__metadata("design:type", Array)
|
|
55
|
+
], ImageProfileResponse.prototype, "accept", void 0);
|
|
@@ -0,0 +1,36 @@
|
|
|
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.ImageStatusResponse = void 0;
|
|
13
|
+
const swagger_1 = require("@nestjs/swagger");
|
|
14
|
+
class ImageStatusResponse {
|
|
15
|
+
}
|
|
16
|
+
exports.ImageStatusResponse = ImageStatusResponse;
|
|
17
|
+
__decorate([
|
|
18
|
+
(0, swagger_1.ApiProperty)({ example: "completed" }),
|
|
19
|
+
__metadata("design:type", String)
|
|
20
|
+
], ImageStatusResponse.prototype, "state", void 0);
|
|
21
|
+
__decorate([
|
|
22
|
+
(0, swagger_1.ApiProperty)({ example: 100 }),
|
|
23
|
+
__metadata("design:type", Number)
|
|
24
|
+
], ImageStatusResponse.prototype, "percent", void 0);
|
|
25
|
+
__decorate([
|
|
26
|
+
(0, swagger_1.ApiProperty)({
|
|
27
|
+
type: String,
|
|
28
|
+
nullable: true,
|
|
29
|
+
example: "/uploads/funkos/pending/6f1b2c34-9d55-4a1e-8f0a-2b7c1d9e4f10.webp",
|
|
30
|
+
}),
|
|
31
|
+
__metadata("design:type", Object)
|
|
32
|
+
], ImageStatusResponse.prototype, "path", void 0);
|
|
33
|
+
__decorate([
|
|
34
|
+
(0, swagger_1.ApiProperty)({ type: String, nullable: true }),
|
|
35
|
+
__metadata("design:type", Object)
|
|
36
|
+
], ImageStatusResponse.prototype, "errorMessage", void 0);
|
|
@@ -0,0 +1,23 @@
|
|
|
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.UploadImageFromUrlCommand = void 0;
|
|
13
|
+
const swagger_1 = require("@nestjs/swagger");
|
|
14
|
+
const class_validator_1 = require("class-validator");
|
|
15
|
+
class UploadImageFromUrlCommand {
|
|
16
|
+
}
|
|
17
|
+
exports.UploadImageFromUrlCommand = UploadImageFromUrlCommand;
|
|
18
|
+
__decorate([
|
|
19
|
+
(0, swagger_1.ApiProperty)({ example: "https://exemplo.com/ron.png" }),
|
|
20
|
+
(0, class_validator_1.IsUrl)({ protocols: ["http", "https"], require_protocol: true }),
|
|
21
|
+
(0, class_validator_1.MaxLength)(2048),
|
|
22
|
+
__metadata("design:type", String)
|
|
23
|
+
], UploadImageFromUrlCommand.prototype, "url", void 0);
|
|
@@ -5,7 +5,7 @@ import { QueueName } from "./queue.constants";
|
|
|
5
5
|
export declare class JobProducer implements OnApplicationBootstrap {
|
|
6
6
|
private readonly logger;
|
|
7
7
|
private readonly queues;
|
|
8
|
-
constructor(jobs?: Queue<JobEnvelope>, exports?: Queue<JobEnvelope>);
|
|
8
|
+
constructor(jobs?: Queue<JobEnvelope>, exports?: Queue<JobEnvelope>, images?: Queue<JobEnvelope>);
|
|
9
9
|
onApplicationBootstrap(): Promise<void>;
|
|
10
10
|
isAvailable(queue?: QueueName): boolean;
|
|
11
11
|
enqueue<TPayload>(name: string, payload: TPayload, options: EnqueueOptions): Promise<JobRef>;
|
|
@@ -28,7 +28,7 @@ const ENQUEUE_TIMEOUT_MS = 5000;
|
|
|
28
28
|
const HEALTH_TIMEOUT_MS = 1500;
|
|
29
29
|
const isStoredProgress = (value) => typeof value === "object" && value !== null && "percent" in value;
|
|
30
30
|
let JobProducer = JobProducer_1 = class JobProducer {
|
|
31
|
-
constructor(jobs, exports) {
|
|
31
|
+
constructor(jobs, exports, images) {
|
|
32
32
|
this.logger = new common_1.Logger(JobProducer_1.name);
|
|
33
33
|
this.queues = new Map();
|
|
34
34
|
if (jobs) {
|
|
@@ -37,6 +37,9 @@ let JobProducer = JobProducer_1 = class JobProducer {
|
|
|
37
37
|
if (exports) {
|
|
38
38
|
this.queues.set(queue_constants_1.EXPORTS_QUEUE, exports);
|
|
39
39
|
}
|
|
40
|
+
if (images) {
|
|
41
|
+
this.queues.set(queue_constants_1.IMAGES_QUEUE, images);
|
|
42
|
+
}
|
|
40
43
|
}
|
|
41
44
|
async onApplicationBootstrap() {
|
|
42
45
|
if (!(0, queue_constants_1.isRedisConfigured)()) {
|
|
@@ -144,6 +147,9 @@ exports.JobProducer = JobProducer = JobProducer_1 = __decorate([
|
|
|
144
147
|
__param(0, (0, bullmq_1.InjectQueue)(queue_constants_1.JOBS_QUEUE)),
|
|
145
148
|
__param(1, (0, common_1.Optional)()),
|
|
146
149
|
__param(1, (0, bullmq_1.InjectQueue)(queue_constants_1.EXPORTS_QUEUE)),
|
|
150
|
+
__param(2, (0, common_1.Optional)()),
|
|
151
|
+
__param(2, (0, bullmq_1.InjectQueue)(queue_constants_1.IMAGES_QUEUE)),
|
|
147
152
|
__metadata("design:paramtypes", [bullmq_2.Queue,
|
|
153
|
+
bullmq_2.Queue,
|
|
148
154
|
bullmq_2.Queue])
|
|
149
155
|
], JobProducer);
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export declare const JOBS_QUEUE = "jobs";
|
|
2
2
|
export declare const EXPORTS_QUEUE = "exports";
|
|
3
|
-
export declare const
|
|
3
|
+
export declare const IMAGES_QUEUE = "images";
|
|
4
|
+
export declare const QUEUE_NAMES: readonly ["jobs", "exports", "images"];
|
|
4
5
|
export type QueueName = (typeof QUEUE_NAMES)[number];
|
|
5
6
|
export declare const isQueueName: (value: unknown) => value is QueueName;
|
|
6
7
|
export declare const JOB_PROGRESS_EVENT = "job:progress";
|
|
@@ -10,6 +11,8 @@ export declare const JOB_CONCURRENCY = 5;
|
|
|
10
11
|
export declare const JOB_ATTEMPTS = 3;
|
|
11
12
|
export declare const EXPORT_CONCURRENCY = 2;
|
|
12
13
|
export declare const EXPORT_LOCK_DURATION_MS = 300000;
|
|
14
|
+
export declare const IMAGE_CONCURRENCY = 4;
|
|
15
|
+
export declare const IMAGE_LOCK_DURATION_MS = 60000;
|
|
13
16
|
export declare const JOB_BACKOFF_DELAY_MS = 30000;
|
|
14
17
|
export declare const COMPLETED_RETENTION_SECONDS = 86400;
|
|
15
18
|
export declare const FAILED_RETENTION_SECONDS = 14400;
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.queuePrefix = exports.isRedisConfigured = exports.FAILED_RETENTION_SECONDS = exports.COMPLETED_RETENTION_SECONDS = exports.JOB_BACKOFF_DELAY_MS = exports.EXPORT_LOCK_DURATION_MS = exports.EXPORT_CONCURRENCY = exports.JOB_ATTEMPTS = exports.JOB_CONCURRENCY = exports.JOB_FAILED_EVENT = exports.JOB_COMPLETED_EVENT = exports.JOB_PROGRESS_EVENT = exports.isQueueName = exports.QUEUE_NAMES = exports.EXPORTS_QUEUE = exports.JOBS_QUEUE = void 0;
|
|
3
|
+
exports.queuePrefix = exports.isRedisConfigured = exports.FAILED_RETENTION_SECONDS = exports.COMPLETED_RETENTION_SECONDS = exports.JOB_BACKOFF_DELAY_MS = exports.IMAGE_LOCK_DURATION_MS = exports.IMAGE_CONCURRENCY = exports.EXPORT_LOCK_DURATION_MS = exports.EXPORT_CONCURRENCY = exports.JOB_ATTEMPTS = exports.JOB_CONCURRENCY = exports.JOB_FAILED_EVENT = exports.JOB_COMPLETED_EVENT = exports.JOB_PROGRESS_EVENT = exports.isQueueName = exports.QUEUE_NAMES = exports.IMAGES_QUEUE = exports.EXPORTS_QUEUE = exports.JOBS_QUEUE = void 0;
|
|
4
4
|
const dotenv_1 = require("dotenv");
|
|
5
5
|
(0, dotenv_1.config)();
|
|
6
6
|
exports.JOBS_QUEUE = "jobs";
|
|
7
7
|
exports.EXPORTS_QUEUE = "exports";
|
|
8
|
-
exports.
|
|
8
|
+
exports.IMAGES_QUEUE = "images";
|
|
9
|
+
exports.QUEUE_NAMES = [exports.JOBS_QUEUE, exports.EXPORTS_QUEUE, exports.IMAGES_QUEUE];
|
|
9
10
|
const isQueueName = (value) => exports.QUEUE_NAMES.includes(value);
|
|
10
11
|
exports.isQueueName = isQueueName;
|
|
11
12
|
exports.JOB_PROGRESS_EVENT = "job:progress";
|
|
@@ -15,6 +16,8 @@ exports.JOB_CONCURRENCY = 5;
|
|
|
15
16
|
exports.JOB_ATTEMPTS = 3;
|
|
16
17
|
exports.EXPORT_CONCURRENCY = 2;
|
|
17
18
|
exports.EXPORT_LOCK_DURATION_MS = 300_000;
|
|
19
|
+
exports.IMAGE_CONCURRENCY = 4;
|
|
20
|
+
exports.IMAGE_LOCK_DURATION_MS = 60_000;
|
|
18
21
|
exports.JOB_BACKOFF_DELAY_MS = 30_000;
|
|
19
22
|
exports.COMPLETED_RETENTION_SECONDS = 86_400;
|
|
20
23
|
exports.FAILED_RETENTION_SECONDS = 14_400;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ImageFit, ImageFormat, ImageProfile } from "../../../core/images/imageProfile.interface";
|
|
2
|
+
export declare const AVATAR_MAX_BYTES: number;
|
|
3
|
+
export declare const AVATAR_PROFILE = "avatars";
|
|
4
|
+
export declare class AvatarImageProfile implements ImageProfile {
|
|
5
|
+
readonly name = "avatars";
|
|
6
|
+
readonly folder = "avatars";
|
|
7
|
+
readonly width = 256;
|
|
8
|
+
readonly height = 256;
|
|
9
|
+
readonly fit = ImageFit.COVER;
|
|
10
|
+
readonly format = ImageFormat.WEBP;
|
|
11
|
+
readonly quality = 85;
|
|
12
|
+
readonly maxBytes: number;
|
|
13
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.AvatarImageProfile = exports.AVATAR_PROFILE = exports.AVATAR_MAX_BYTES = void 0;
|
|
10
|
+
const common_1 = require("@nestjs/common");
|
|
11
|
+
const imageProfile_interface_1 = require("../../../core/images/imageProfile.interface");
|
|
12
|
+
exports.AVATAR_MAX_BYTES = 5 * 1024 * 1024;
|
|
13
|
+
exports.AVATAR_PROFILE = "avatars";
|
|
14
|
+
let AvatarImageProfile = class AvatarImageProfile {
|
|
15
|
+
constructor() {
|
|
16
|
+
this.name = exports.AVATAR_PROFILE;
|
|
17
|
+
this.folder = "avatars";
|
|
18
|
+
this.width = 256;
|
|
19
|
+
this.height = 256;
|
|
20
|
+
this.fit = imageProfile_interface_1.ImageFit.COVER;
|
|
21
|
+
this.format = imageProfile_interface_1.ImageFormat.WEBP;
|
|
22
|
+
this.quality = 85;
|
|
23
|
+
this.maxBytes = exports.AVATAR_MAX_BYTES;
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
exports.AvatarImageProfile = AvatarImageProfile;
|
|
27
|
+
exports.AvatarImageProfile = AvatarImageProfile = __decorate([
|
|
28
|
+
(0, imageProfile_interface_1.ImageUploadProfile)(),
|
|
29
|
+
(0, common_1.Injectable)()
|
|
30
|
+
], AvatarImageProfile);
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from "./
|
|
1
|
+
export * from "./avatarImage.profile";
|
|
2
2
|
export * from "./users.service";
|
|
@@ -14,5 +14,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./
|
|
17
|
+
__exportStar(require("./avatarImage.profile"), exports);
|
|
18
18
|
__exportStar(require("./users.service"), exports);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { AuthenticatedUser } from "../../../core/auth/authenticatedUser.interface";
|
|
2
|
+
import { ImagesService } from "../../../core/images/images.service";
|
|
2
3
|
import { FilterFieldResponse } from "../../../core/query/filterSchema.response";
|
|
3
4
|
import { Paginated, PaginationQuery } from "../../../core/utils/pagination.util";
|
|
4
|
-
import { AvatarService } from "../domain/avatar.service";
|
|
5
5
|
import { UsersService } from "../domain/users.service";
|
|
6
6
|
import { User } from "../infra/schema/user.schema";
|
|
7
7
|
import { ChangePasswordCommand } from "./commands/changePassword.command";
|
|
@@ -10,13 +10,14 @@ import { UpdateProfileCommand } from "./commands/updateProfile.command";
|
|
|
10
10
|
import { UpdateUserCommand } from "./commands/updateUser.command";
|
|
11
11
|
export declare class UsersController {
|
|
12
12
|
private readonly users;
|
|
13
|
-
private readonly
|
|
14
|
-
constructor(users: UsersService,
|
|
13
|
+
private readonly images;
|
|
14
|
+
constructor(users: UsersService, images: ImagesService);
|
|
15
15
|
me(userId: string): Promise<User>;
|
|
16
16
|
updateMe(userId: string, dto: UpdateProfileCommand): Promise<User>;
|
|
17
17
|
changeMyPassword(userId: string, dto: ChangePasswordCommand): Promise<void>;
|
|
18
|
-
uploadAvatar(
|
|
19
|
-
deleteAvatar(
|
|
18
|
+
uploadAvatar(user: AuthenticatedUser, file: Express.Multer.File): Promise<User>;
|
|
19
|
+
deleteAvatar(user: AuthenticatedUser): Promise<void>;
|
|
20
|
+
private discardAvatar;
|
|
20
21
|
list(query: PaginationQuery, actor: AuthenticatedUser): Promise<Paginated<User>>;
|
|
21
22
|
filterSchema(actor: AuthenticatedUser): FilterFieldResponse[];
|
|
22
23
|
findOne(id: string, actor: AuthenticatedUser): Promise<User>;
|
|
@@ -21,10 +21,11 @@ const currentUser_decorator_1 = require("../../../core/auth/decorators/currentUs
|
|
|
21
21
|
const requirePermission_decorator_1 = require("../../../core/auth/decorators/requirePermission.decorator");
|
|
22
22
|
const permissions_guard_1 = require("../../../core/auth/guards/permissions.guard");
|
|
23
23
|
const permissionScope_util_1 = require("../../../core/auth/permissionScope.util");
|
|
24
|
+
const images_service_1 = require("../../../core/images/images.service");
|
|
24
25
|
const filterSchema_response_1 = require("../../../core/query/filterSchema.response");
|
|
25
26
|
const pagination_util_1 = require("../../../core/utils/pagination.util");
|
|
26
27
|
const auditable_decorator_1 = require("../../audit/presentation/decorators/auditable.decorator");
|
|
27
|
-
const
|
|
28
|
+
const avatarImage_profile_1 = require("../domain/avatarImage.profile");
|
|
28
29
|
const users_service_1 = require("../domain/users.service");
|
|
29
30
|
const changePassword_command_1 = require("./commands/changePassword.command");
|
|
30
31
|
const createUser_command_1 = require("./commands/createUser.command");
|
|
@@ -33,9 +34,9 @@ const updateUser_command_1 = require("./commands/updateUser.command");
|
|
|
33
34
|
const users_filters_1 = require("./filters/users.filters");
|
|
34
35
|
const user_response_1 = require("./responses/user.response");
|
|
35
36
|
let UsersController = class UsersController {
|
|
36
|
-
constructor(users,
|
|
37
|
+
constructor(users, images) {
|
|
37
38
|
this.users = users;
|
|
38
|
-
this.
|
|
39
|
+
this.images = images;
|
|
39
40
|
}
|
|
40
41
|
me(userId) {
|
|
41
42
|
return this.users.findById(userId);
|
|
@@ -46,13 +47,25 @@ let UsersController = class UsersController {
|
|
|
46
47
|
async changeMyPassword(userId, dto) {
|
|
47
48
|
await this.users.changePassword(userId, dto.currentPassword, dto.newPassword);
|
|
48
49
|
}
|
|
49
|
-
async uploadAvatar(
|
|
50
|
-
const
|
|
51
|
-
|
|
50
|
+
async uploadAvatar(user, file) {
|
|
51
|
+
const previous = (await this.users.findById(user.id)).avatar;
|
|
52
|
+
const path = await this.images.fromFileNow(user, avatarImage_profile_1.AVATAR_PROFILE, file);
|
|
53
|
+
const updated = await this.users.setAvatar(user.id, path);
|
|
54
|
+
await this.discardAvatar(user, previous);
|
|
55
|
+
return updated;
|
|
52
56
|
}
|
|
53
|
-
async deleteAvatar(
|
|
54
|
-
await this.
|
|
55
|
-
await this.users.removeAvatar(
|
|
57
|
+
async deleteAvatar(user) {
|
|
58
|
+
const previous = (await this.users.findById(user.id)).avatar;
|
|
59
|
+
await this.users.removeAvatar(user.id);
|
|
60
|
+
await this.discardAvatar(user, previous);
|
|
61
|
+
}
|
|
62
|
+
async discardAvatar(user, path) {
|
|
63
|
+
if (!path) {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
await this.images
|
|
67
|
+
.remove(user, avatarImage_profile_1.AVATAR_PROFILE, path)
|
|
68
|
+
.catch(() => undefined);
|
|
56
69
|
}
|
|
57
70
|
list(query, actor) {
|
|
58
71
|
return this.users.list(query, actor);
|
|
@@ -122,20 +135,20 @@ __decorate([
|
|
|
122
135
|
(0, swagger_1.ApiOkResponse)({ type: user_response_1.UserResponse }),
|
|
123
136
|
(0, common_1.UseInterceptors)((0, platform_express_1.FileInterceptor)("file", {
|
|
124
137
|
storage: (0, multer_1.memoryStorage)(),
|
|
125
|
-
limits: { fileSize:
|
|
138
|
+
limits: { fileSize: avatarImage_profile_1.AVATAR_MAX_BYTES, files: 1 },
|
|
126
139
|
})),
|
|
127
|
-
__param(0, (0, currentUser_decorator_1.CurrentUser)(
|
|
140
|
+
__param(0, (0, currentUser_decorator_1.CurrentUser)()),
|
|
128
141
|
__param(1, (0, common_1.UploadedFile)()),
|
|
129
142
|
__metadata("design:type", Function),
|
|
130
|
-
__metadata("design:paramtypes", [
|
|
143
|
+
__metadata("design:paramtypes", [Object, Object]),
|
|
131
144
|
__metadata("design:returntype", Promise)
|
|
132
145
|
], UsersController.prototype, "uploadAvatar", null);
|
|
133
146
|
__decorate([
|
|
134
147
|
(0, common_1.Delete)("me/avatar"),
|
|
135
148
|
(0, common_1.HttpCode)(204),
|
|
136
|
-
__param(0, (0, currentUser_decorator_1.CurrentUser)(
|
|
149
|
+
__param(0, (0, currentUser_decorator_1.CurrentUser)()),
|
|
137
150
|
__metadata("design:type", Function),
|
|
138
|
-
__metadata("design:paramtypes", [
|
|
151
|
+
__metadata("design:paramtypes", [Object]),
|
|
139
152
|
__metadata("design:returntype", Promise)
|
|
140
153
|
], UsersController.prototype, "deleteAvatar", null);
|
|
141
154
|
__decorate([
|
|
@@ -257,5 +270,5 @@ exports.UsersController = UsersController = __decorate([
|
|
|
257
270
|
(0, swagger_1.ApiBearerAuth)(),
|
|
258
271
|
(0, common_1.Controller)({ path: "users", version: "1" }),
|
|
259
272
|
__metadata("design:paramtypes", [users_service_1.UsersService,
|
|
260
|
-
|
|
273
|
+
images_service_1.ImagesService])
|
|
261
274
|
], UsersController);
|
|
@@ -9,6 +9,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
9
9
|
exports.UsersModule = void 0;
|
|
10
10
|
const common_1 = require("@nestjs/common");
|
|
11
11
|
const typeorm_1 = require("@nestjs/typeorm");
|
|
12
|
+
const imagesApi_module_1 = require("../../core/images/imagesApi.module");
|
|
12
13
|
const token_module_1 = require("../auth/token.module");
|
|
13
14
|
const role_repository_1 = require("../rbac/infra/repositories/role.repository");
|
|
14
15
|
const role_schema_1 = require("../rbac/infra/schema/role.schema");
|
|
@@ -25,6 +26,7 @@ exports.UsersModule = UsersModule = __decorate([
|
|
|
25
26
|
typeorm_1.TypeOrmModule.forFeature([infra_1.User, infra_1.PasswordHistory, role_schema_1.Role]),
|
|
26
27
|
token_module_1.TokenModule,
|
|
27
28
|
rbac_module_1.RbacModule,
|
|
29
|
+
imagesApi_module_1.ImagesApiModule,
|
|
28
30
|
],
|
|
29
31
|
controllers: [presentation_1.UsersController],
|
|
30
32
|
providers: [
|
|
@@ -32,7 +34,7 @@ exports.UsersModule = UsersModule = __decorate([
|
|
|
32
34
|
infra_1.PasswordHistoryRepository,
|
|
33
35
|
role_repository_1.RoleRepository,
|
|
34
36
|
domain_1.UsersService,
|
|
35
|
-
domain_1.
|
|
37
|
+
domain_1.AvatarImageProfile,
|
|
36
38
|
],
|
|
37
39
|
exports: [
|
|
38
40
|
infra_1.UserRepository,
|
package/dist/index.d.ts
CHANGED
|
@@ -70,7 +70,7 @@ export { JOB_EVENTS_PUBLISHER, JobEventsPublisher, } from "./core/queue/jobEvent
|
|
|
70
70
|
export { JobEventsService } from "./core/queue/jobEvents.service";
|
|
71
71
|
export { JobErrorResponse, JobProgressResponse, JobStatusResponse, } from "./core/queue/jobStatus.response";
|
|
72
72
|
export { JobWorkerHost, toSafeError } from "./core/queue/jobWorkerHost";
|
|
73
|
-
export { COMPLETED_RETENTION_SECONDS, EXPORT_CONCURRENCY, EXPORT_LOCK_DURATION_MS, EXPORTS_QUEUE, FAILED_RETENTION_SECONDS, isQueueName, isRedisConfigured, JOB_ATTEMPTS, JOB_BACKOFF_DELAY_MS, JOB_COMPLETED_EVENT, JOB_CONCURRENCY, JOB_FAILED_EVENT, JOB_PROGRESS_EVENT, JOBS_QUEUE, QUEUE_NAMES, QueueName, queuePrefix, } from "./core/queue/queue.constants";
|
|
73
|
+
export { COMPLETED_RETENTION_SECONDS, EXPORT_CONCURRENCY, EXPORT_LOCK_DURATION_MS, EXPORTS_QUEUE, FAILED_RETENTION_SECONDS, IMAGE_CONCURRENCY, IMAGE_LOCK_DURATION_MS, IMAGES_QUEUE, isQueueName, isRedisConfigured, JOB_ATTEMPTS, JOB_BACKOFF_DELAY_MS, JOB_COMPLETED_EVENT, JOB_CONCURRENCY, JOB_FAILED_EVENT, JOB_PROGRESS_EVENT, JOBS_QUEUE, QUEUE_NAMES, QueueName, queuePrefix, } from "./core/queue/queue.constants";
|
|
74
74
|
export { QueueModule } from "./core/queue/queue.module";
|
|
75
75
|
export { buildRedisOptions } from "./core/queue/redisConnection";
|
|
76
76
|
export { RedisJobEventsBridge } from "./core/queue/redisJobEvents.bridge";
|
|
@@ -90,6 +90,22 @@ export { ExportStatusResponse } from "./core/export/exportStatus.response";
|
|
|
90
90
|
export { ExportStorageService } from "./core/export/exportStorage.service";
|
|
91
91
|
export { ExportWorkerModule } from "./core/export/exportWorker.module";
|
|
92
92
|
export { RequestExportCommand } from "./core/export/requestExport.command";
|
|
93
|
+
export { ImageCleanupService } from "./core/images/imageCleanup.service";
|
|
94
|
+
export { ImageFetchService, isBlockedAddress } from "./core/images/imageFetch.service";
|
|
95
|
+
export { ImageProcessingService } from "./core/images/imageProcessing.service";
|
|
96
|
+
export { EXTENSION_BY_FORMAT, IMAGE_PROFILE, ImageFit, ImageFormat, ImageJobPayload, ImageJobSummary, ImageProfile, ImageSourceKind, ImageUploadProfile, } from "./core/images/imageProfile.interface";
|
|
97
|
+
export { ImageProfileRegistry } from "./core/images/imageProfile.registry";
|
|
98
|
+
export { ImagesController } from "./core/images/images.controller";
|
|
99
|
+
export { ImagesModule } from "./core/images/images.module";
|
|
100
|
+
export { ImagesProcessor } from "./core/images/images.processor";
|
|
101
|
+
export { ImageAccepted, ImagesService } from "./core/images/images.service";
|
|
102
|
+
export { ImagesApiModule } from "./core/images/imagesApi.module";
|
|
103
|
+
export { ImageStorageService, StoredImageRef } from "./core/images/imageStorage.service";
|
|
104
|
+
export { ImagesWorkerModule } from "./core/images/imagesWorker.module";
|
|
105
|
+
export { ImageAcceptedResponse } from "./core/images/responses/imageAccepted.response";
|
|
106
|
+
export { ImageProfileResponse } from "./core/images/responses/imageProfile.response";
|
|
107
|
+
export { ImageStatusResponse } from "./core/images/responses/imageStatus.response";
|
|
108
|
+
export { UploadImageFromUrlCommand } from "./core/images/uploadImageFromUrl.command";
|
|
93
109
|
export { BaseGateway, SocketData } from "./core/websocket/baseGateway";
|
|
94
110
|
export { NOTIFICATIONS_NAMESPACE, roleRoom, SESSION_REFRESH_EVENT, userRoom, } from "./core/websocket/socket.constants";
|
|
95
111
|
export { SOCKET_EVENT_VERSION, SocketEvent, wrapSocketEvent, } from "./core/websocket/socketEvent.envelope";
|
package/dist/index.js
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Paginated = exports.parseFilter = exports.paginateWithFilter = exports.applySearch = exports.resolveCatalogOrder = exports.toFilterSchema = exports.FilterOptionResponse = exports.FilterFieldResponse = exports.FilterOperator = exports.FilterCombinator = exports.FilterFieldType = exports.FILTER_MAX_NODES = exports.FILTER_MAX_LENGTH = exports.FILTER_MAX_IN_ITEMS = exports.FILTER_MAX_DEPTH = exports.DEFAULT_OPERATORS = exports.applyOwnershipScope = exports.applyFilter = exports.SCOPE_TEAM = exports.SCOPE_OWN = exports.SCOPE_ANY = exports.anyOrTeam = exports.anyOrOwn = exports.resolveOwnershipScope = exports.PermissionsGuard = exports.JwtAuthGuard = exports.CsrfGuard = exports.AppThrottlerGuard = exports.RequirePermission = exports.RequireAnyPermission = exports.PERMISSIONS_KEY = exports.ANY_PERMISSIONS_KEY = exports.Public = exports.IS_PUBLIC_KEY = exports.CurrentUser = exports.setAuthCookies = exports.REFRESH_COOKIE = exports.clearAuthCookies = exports.ACCESS_COOKIE = exports.EnvService = exports.validateEnv = exports.envSchema = exports.ConfigModule = exports.RlCoreModule = exports.coreEntities = exports.coreMigrations = exports.createCoreDataSource = exports.CoreModule = exports.bootstrapWorker = exports.bootstrapCore = void 0;
|
|
4
4
|
exports.EXPORT_CONCURRENCY = exports.COMPLETED_RETENTION_SECONDS = exports.toSafeError = exports.JobWorkerHost = exports.JobStatusResponse = exports.JobProgressResponse = exports.JobErrorResponse = exports.JobEventsService = exports.JOB_EVENTS_PUBLISHER = exports.JobProducer = exports.BullConnectionModule = exports.Auditable = exports.RequestOutcome = exports.ErrorType = exports.codedUnauthorized = exports.codedTooManyRequests = exports.codedBadRequest = exports.AppErrorCode = exports.AppEvent = exports.auditContext = exports.User = exports.PasswordHistory = exports.Scope = exports.Role = exports.Resource = exports.Permission = exports.Group = exports.Action = exports.NotificationsPublisher = exports.NotificationsModule = exports.NotificationScope = exports.NotificationRead = exports.Notification = exports.NotificationsService = exports.ScopeType = exports.NotificationType = exports.SCOPES = exports.ROLES = exports.RESOURCES = exports.PERMISSIONS = exports.ACTIONS = exports.AuthToken = exports.RequestLog = exports.AuditDataChange = exports.seedPermissions = exports.seedAdmin = exports.BaseEntity = exports.PaginationMetaResponse = exports.resolveOrder = exports.PaginationQuery = void 0;
|
|
5
|
-
exports.
|
|
6
|
-
exports.normalizeIp = exports.sha256 = exports.randomToken = void 0;
|
|
5
|
+
exports.ImagesController = exports.ImageProfileRegistry = exports.ImageUploadProfile = exports.ImageSourceKind = exports.ImageFormat = exports.ImageFit = exports.IMAGE_PROFILE = exports.EXTENSION_BY_FORMAT = exports.ImageProcessingService = exports.isBlockedAddress = exports.ImageFetchService = exports.ImageCleanupService = exports.RequestExportCommand = exports.ExportWorkerModule = exports.ExportStorageService = exports.ExportStatusResponse = exports.ExportHandlerRegistry = exports.ExportReport = exports.EXPORT_HANDLER = exports.ExportEngineService = exports.ExportColumnFormat = exports.ExportCleanupService = exports.ExportApiModule = exports.ExportAcceptedResponse = exports.ExportService = exports.ExportProcessor = exports.ExportModule = exports.ExportController = exports.RedisJobEventsPublisher = exports.jobEventsChannel = exports.RedisJobEventsBridge = exports.buildRedisOptions = exports.QueueModule = exports.queuePrefix = exports.QUEUE_NAMES = exports.JOBS_QUEUE = exports.JOB_PROGRESS_EVENT = exports.JOB_FAILED_EVENT = exports.JOB_CONCURRENCY = exports.JOB_COMPLETED_EVENT = exports.JOB_BACKOFF_DELAY_MS = exports.JOB_ATTEMPTS = exports.isRedisConfigured = exports.isQueueName = exports.IMAGES_QUEUE = exports.IMAGE_LOCK_DURATION_MS = exports.IMAGE_CONCURRENCY = exports.FAILED_RETENTION_SECONDS = exports.EXPORTS_QUEUE = exports.EXPORT_LOCK_DURATION_MS = void 0;
|
|
6
|
+
exports.normalizeIp = exports.sha256 = exports.randomToken = exports.numericCode = exports.backupCode = exports.encryptSecret = exports.decryptSecret = exports.MailerService = exports.createAppLogger = exports.WS_USER_RESOLVER = exports.WsAuthService = exports.wrapSocketEvent = exports.SOCKET_EVENT_VERSION = exports.userRoom = exports.SESSION_REFRESH_EVENT = exports.roleRoom = exports.NOTIFICATIONS_NAMESPACE = exports.BaseGateway = exports.UploadImageFromUrlCommand = exports.ImageStatusResponse = exports.ImageProfileResponse = exports.ImageAcceptedResponse = exports.ImagesWorkerModule = exports.ImageStorageService = exports.ImagesApiModule = exports.ImagesService = exports.ImagesProcessor = exports.ImagesModule = void 0;
|
|
7
7
|
var bootstrapCore_util_1 = require("./core/bootstrap/bootstrapCore.util");
|
|
8
8
|
Object.defineProperty(exports, "bootstrapCore", { enumerable: true, get: function () { return bootstrapCore_util_1.bootstrapCore; } });
|
|
9
9
|
var bootstrapWorker_util_1 = require("./core/bootstrap/bootstrapWorker.util");
|
|
@@ -175,6 +175,9 @@ Object.defineProperty(exports, "EXPORT_CONCURRENCY", { enumerable: true, get: fu
|
|
|
175
175
|
Object.defineProperty(exports, "EXPORT_LOCK_DURATION_MS", { enumerable: true, get: function () { return queue_constants_1.EXPORT_LOCK_DURATION_MS; } });
|
|
176
176
|
Object.defineProperty(exports, "EXPORTS_QUEUE", { enumerable: true, get: function () { return queue_constants_1.EXPORTS_QUEUE; } });
|
|
177
177
|
Object.defineProperty(exports, "FAILED_RETENTION_SECONDS", { enumerable: true, get: function () { return queue_constants_1.FAILED_RETENTION_SECONDS; } });
|
|
178
|
+
Object.defineProperty(exports, "IMAGE_CONCURRENCY", { enumerable: true, get: function () { return queue_constants_1.IMAGE_CONCURRENCY; } });
|
|
179
|
+
Object.defineProperty(exports, "IMAGE_LOCK_DURATION_MS", { enumerable: true, get: function () { return queue_constants_1.IMAGE_LOCK_DURATION_MS; } });
|
|
180
|
+
Object.defineProperty(exports, "IMAGES_QUEUE", { enumerable: true, get: function () { return queue_constants_1.IMAGES_QUEUE; } });
|
|
178
181
|
Object.defineProperty(exports, "isQueueName", { enumerable: true, get: function () { return queue_constants_1.isQueueName; } });
|
|
179
182
|
Object.defineProperty(exports, "isRedisConfigured", { enumerable: true, get: function () { return queue_constants_1.isRedisConfigured; } });
|
|
180
183
|
Object.defineProperty(exports, "JOB_ATTEMPTS", { enumerable: true, get: function () { return queue_constants_1.JOB_ATTEMPTS; } });
|
|
@@ -226,6 +229,44 @@ var exportWorker_module_1 = require("./core/export/exportWorker.module");
|
|
|
226
229
|
Object.defineProperty(exports, "ExportWorkerModule", { enumerable: true, get: function () { return exportWorker_module_1.ExportWorkerModule; } });
|
|
227
230
|
var requestExport_command_1 = require("./core/export/requestExport.command");
|
|
228
231
|
Object.defineProperty(exports, "RequestExportCommand", { enumerable: true, get: function () { return requestExport_command_1.RequestExportCommand; } });
|
|
232
|
+
var imageCleanup_service_1 = require("./core/images/imageCleanup.service");
|
|
233
|
+
Object.defineProperty(exports, "ImageCleanupService", { enumerable: true, get: function () { return imageCleanup_service_1.ImageCleanupService; } });
|
|
234
|
+
var imageFetch_service_1 = require("./core/images/imageFetch.service");
|
|
235
|
+
Object.defineProperty(exports, "ImageFetchService", { enumerable: true, get: function () { return imageFetch_service_1.ImageFetchService; } });
|
|
236
|
+
Object.defineProperty(exports, "isBlockedAddress", { enumerable: true, get: function () { return imageFetch_service_1.isBlockedAddress; } });
|
|
237
|
+
var imageProcessing_service_1 = require("./core/images/imageProcessing.service");
|
|
238
|
+
Object.defineProperty(exports, "ImageProcessingService", { enumerable: true, get: function () { return imageProcessing_service_1.ImageProcessingService; } });
|
|
239
|
+
var imageProfile_interface_1 = require("./core/images/imageProfile.interface");
|
|
240
|
+
Object.defineProperty(exports, "EXTENSION_BY_FORMAT", { enumerable: true, get: function () { return imageProfile_interface_1.EXTENSION_BY_FORMAT; } });
|
|
241
|
+
Object.defineProperty(exports, "IMAGE_PROFILE", { enumerable: true, get: function () { return imageProfile_interface_1.IMAGE_PROFILE; } });
|
|
242
|
+
Object.defineProperty(exports, "ImageFit", { enumerable: true, get: function () { return imageProfile_interface_1.ImageFit; } });
|
|
243
|
+
Object.defineProperty(exports, "ImageFormat", { enumerable: true, get: function () { return imageProfile_interface_1.ImageFormat; } });
|
|
244
|
+
Object.defineProperty(exports, "ImageSourceKind", { enumerable: true, get: function () { return imageProfile_interface_1.ImageSourceKind; } });
|
|
245
|
+
Object.defineProperty(exports, "ImageUploadProfile", { enumerable: true, get: function () { return imageProfile_interface_1.ImageUploadProfile; } });
|
|
246
|
+
var imageProfile_registry_1 = require("./core/images/imageProfile.registry");
|
|
247
|
+
Object.defineProperty(exports, "ImageProfileRegistry", { enumerable: true, get: function () { return imageProfile_registry_1.ImageProfileRegistry; } });
|
|
248
|
+
var images_controller_1 = require("./core/images/images.controller");
|
|
249
|
+
Object.defineProperty(exports, "ImagesController", { enumerable: true, get: function () { return images_controller_1.ImagesController; } });
|
|
250
|
+
var images_module_1 = require("./core/images/images.module");
|
|
251
|
+
Object.defineProperty(exports, "ImagesModule", { enumerable: true, get: function () { return images_module_1.ImagesModule; } });
|
|
252
|
+
var images_processor_1 = require("./core/images/images.processor");
|
|
253
|
+
Object.defineProperty(exports, "ImagesProcessor", { enumerable: true, get: function () { return images_processor_1.ImagesProcessor; } });
|
|
254
|
+
var images_service_1 = require("./core/images/images.service");
|
|
255
|
+
Object.defineProperty(exports, "ImagesService", { enumerable: true, get: function () { return images_service_1.ImagesService; } });
|
|
256
|
+
var imagesApi_module_1 = require("./core/images/imagesApi.module");
|
|
257
|
+
Object.defineProperty(exports, "ImagesApiModule", { enumerable: true, get: function () { return imagesApi_module_1.ImagesApiModule; } });
|
|
258
|
+
var imageStorage_service_1 = require("./core/images/imageStorage.service");
|
|
259
|
+
Object.defineProperty(exports, "ImageStorageService", { enumerable: true, get: function () { return imageStorage_service_1.ImageStorageService; } });
|
|
260
|
+
var imagesWorker_module_1 = require("./core/images/imagesWorker.module");
|
|
261
|
+
Object.defineProperty(exports, "ImagesWorkerModule", { enumerable: true, get: function () { return imagesWorker_module_1.ImagesWorkerModule; } });
|
|
262
|
+
var imageAccepted_response_1 = require("./core/images/responses/imageAccepted.response");
|
|
263
|
+
Object.defineProperty(exports, "ImageAcceptedResponse", { enumerable: true, get: function () { return imageAccepted_response_1.ImageAcceptedResponse; } });
|
|
264
|
+
var imageProfile_response_1 = require("./core/images/responses/imageProfile.response");
|
|
265
|
+
Object.defineProperty(exports, "ImageProfileResponse", { enumerable: true, get: function () { return imageProfile_response_1.ImageProfileResponse; } });
|
|
266
|
+
var imageStatus_response_1 = require("./core/images/responses/imageStatus.response");
|
|
267
|
+
Object.defineProperty(exports, "ImageStatusResponse", { enumerable: true, get: function () { return imageStatus_response_1.ImageStatusResponse; } });
|
|
268
|
+
var uploadImageFromUrl_command_1 = require("./core/images/uploadImageFromUrl.command");
|
|
269
|
+
Object.defineProperty(exports, "UploadImageFromUrlCommand", { enumerable: true, get: function () { return uploadImageFromUrl_command_1.UploadImageFromUrlCommand; } });
|
|
229
270
|
var baseGateway_1 = require("./core/websocket/baseGateway");
|
|
230
271
|
Object.defineProperty(exports, "BaseGateway", { enumerable: true, get: function () { return baseGateway_1.BaseGateway; } });
|
|
231
272
|
var socket_constants_1 = require("./core/websocket/socket.constants");
|