@nest-omni/core 4.1.3-1 → 4.1.3-10
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/audit/audit.module.d.ts +10 -0
- package/audit/audit.module.js +15 -0
- package/audit/controllers/audit.controller.d.ts +24 -0
- package/audit/controllers/audit.controller.js +24 -0
- package/audit/decorators/audit-controller.decorator.d.ts +8 -0
- package/audit/decorators/audit-controller.decorator.js +9 -0
- package/audit/decorators/audit-operation.decorator.d.ts +45 -0
- package/audit/decorators/audit-operation.decorator.js +49 -0
- package/audit/decorators/entity-audit.decorator.d.ts +8 -0
- package/audit/decorators/entity-audit.decorator.js +9 -0
- package/audit/dto/audit-log-query.dto.d.ts +3 -0
- package/audit/dto/audit-log-query.dto.js +3 -0
- package/audit/dto/begin-transaction.dto.d.ts +3 -0
- package/audit/dto/begin-transaction.dto.js +3 -0
- package/audit/dto/compare-entities.dto.d.ts +3 -0
- package/audit/dto/compare-entities.dto.js +3 -0
- package/audit/dto/pre-check-restore.dto.d.ts +3 -0
- package/audit/dto/pre-check-restore.dto.js +3 -0
- package/audit/dto/restore-entity.dto.d.ts +3 -0
- package/audit/dto/restore-entity.dto.js +3 -0
- package/audit/entities/entity-audit-log.entity.d.ts +3 -0
- package/audit/entities/entity-audit-log.entity.js +3 -0
- package/audit/entities/entity-transaction.entity.d.ts +3 -0
- package/audit/entities/entity-transaction.entity.js +3 -0
- package/audit/entities/manual-operation-log.entity.d.ts +4 -0
- package/audit/entities/manual-operation-log.entity.js +4 -0
- package/audit/entities/operation-template.entity.d.ts +4 -0
- package/audit/entities/operation-template.entity.js +4 -0
- package/audit/enums/audit.enums.d.ts +17 -2
- package/audit/enums/audit.enums.js +15 -0
- package/audit/index.js +10 -0
- package/audit/interceptors/audit.interceptor.d.ts +15 -0
- package/audit/interceptors/audit.interceptor.js +23 -1
- package/audit/interfaces/audit.interfaces.d.ts +42 -0
- package/audit/services/audit-context.service.d.ts +15 -0
- package/audit/services/audit-context.service.js +15 -0
- package/audit/services/audit-strategy.service.d.ts +6 -0
- package/audit/services/audit-strategy.service.js +13 -0
- package/audit/services/entity-audit.service.d.ts +57 -0
- package/audit/services/entity-audit.service.js +91 -0
- package/audit/services/manual-audit-log.service.d.ts +124 -0
- package/audit/services/manual-audit-log.service.js +138 -0
- package/audit/services/multi-database.service.d.ts +12 -0
- package/audit/services/multi-database.service.js +12 -0
- package/audit/services/operation-description.service.d.ts +59 -0
- package/audit/services/operation-description.service.js +76 -2
- package/audit/services/transaction-audit.service.d.ts +30 -0
- package/audit/services/transaction-audit.service.js +47 -0
- package/audit/subscribers/entity-audit.subscriber.d.ts +15 -0
- package/audit/subscribers/entity-audit.subscriber.js +29 -1
- package/cache/cache-metrics.service.d.ts +67 -0
- package/cache/cache-metrics.service.js +68 -4
- package/cache/cache-serialization.service.d.ts +31 -0
- package/cache/cache-serialization.service.js +25 -0
- package/cache/cache.constants.d.ts +9 -0
- package/cache/cache.constants.js +9 -0
- package/cache/cache.health.d.ts +26 -0
- package/cache/cache.health.js +30 -0
- package/cache/cache.module.d.ts +86 -0
- package/cache/cache.module.js +71 -0
- package/cache/cache.service.d.ts +140 -0
- package/cache/cache.service.js +157 -0
- package/cache/cache.warmup.service.d.ts +39 -0
- package/cache/cache.warmup.service.js +32 -0
- package/cache/decorators/cache-evict.decorator.d.ts +47 -0
- package/cache/decorators/cache-evict.decorator.js +56 -0
- package/cache/decorators/cache-put.decorator.d.ts +34 -0
- package/cache/decorators/cache-put.decorator.js +39 -0
- package/cache/decorators/cacheable.decorator.d.ts +40 -0
- package/cache/decorators/cacheable.decorator.js +55 -0
- package/cache/dependencies/callback.dependency.d.ts +33 -0
- package/cache/dependencies/callback.dependency.js +39 -1
- package/cache/dependencies/chain.dependency.d.ts +28 -0
- package/cache/dependencies/chain.dependency.js +34 -0
- package/cache/dependencies/db.dependency.d.ts +45 -0
- package/cache/dependencies/db.dependency.js +48 -1
- package/cache/dependencies/file.dependency.d.ts +32 -0
- package/cache/dependencies/file.dependency.js +34 -0
- package/cache/dependencies/tag.dependency.d.ts +36 -0
- package/cache/dependencies/tag.dependency.js +36 -0
- package/cache/dependencies/time.dependency.d.ts +43 -0
- package/cache/dependencies/time.dependency.js +43 -0
- package/cache/examples/basic-usage.d.ts +15 -0
- package/cache/examples/basic-usage.js +62 -8
- package/cache/index.js +9 -0
- package/cache/interfaces/cache-dependency.interface.d.ts +53 -0
- package/cache/interfaces/cache-options.interface.d.ts +81 -0
- package/cache/interfaces/cache-options.interface.js +6 -0
- package/cache/interfaces/cache-provider.interface.d.ts +78 -0
- package/cache/providers/base-cache.provider.d.ts +14 -0
- package/cache/providers/base-cache.provider.js +16 -0
- package/cache/providers/cls-cache.provider.d.ts +20 -0
- package/cache/providers/cls-cache.provider.js +28 -0
- package/cache/providers/memory-cache.provider.d.ts +23 -0
- package/cache/providers/memory-cache.provider.js +26 -0
- package/cache/providers/redis-cache.provider.d.ts +26 -0
- package/cache/providers/redis-cache.provider.js +29 -0
- package/cache/utils/dependency-manager.util.d.ts +52 -0
- package/cache/utils/dependency-manager.util.js +59 -0
- package/cache/utils/key-generator.util.d.ts +42 -0
- package/cache/utils/key-generator.util.js +53 -1
- package/common/abstract.entity.d.ts +14 -0
- package/common/abstract.entity.js +14 -0
- package/common/boilerplate.polyfill.d.ts +142 -4
- package/common/boilerplate.polyfill.js +24 -100
- package/common/dto/dto-container.d.ts +16 -0
- package/common/dto/dto-container.js +20 -0
- package/common/dto/dto-decorators.d.ts +18 -0
- package/common/dto/dto-decorators.js +14 -0
- package/common/dto/dto-extensions.d.ts +11 -0
- package/common/dto/dto-extensions.js +9 -0
- package/common/dto/dto-service-accessor.d.ts +17 -0
- package/common/dto/dto-service-accessor.js +18 -0
- package/common/dto/dto-transformer.d.ts +12 -0
- package/common/dto/dto-transformer.js +9 -0
- package/common/dto/index.js +2 -0
- package/common/examples/paginate-and-map.example.d.ts +6 -0
- package/common/examples/paginate-and-map.example.js +26 -0
- package/common/utils.d.ts +15 -0
- package/common/utils.js +15 -0
- package/constants/language-code.js +1 -0
- package/decorators/field.decorators.js +8 -1
- package/decorators/property.decorators.js +1 -0
- package/decorators/public-route.decorator.js +1 -0
- package/decorators/transform.decorators.d.ts +27 -0
- package/decorators/transform.decorators.js +29 -0
- package/decorators/translate.decorator.js +1 -0
- package/decorators/user.decorator.js +1 -0
- package/decorators/validator.decorators.d.ts +8 -18
- package/decorators/validator.decorators.js +22 -190
- package/filters/constraint-errors.js +1 -0
- package/helpers/common.helper.d.ts +13 -0
- package/helpers/common.helper.js +13 -0
- package/http-client/config/http-client.config.d.ts +15 -0
- package/http-client/config/http-client.config.js +25 -9
- package/http-client/decorators/http-client.decorators.d.ts +63 -0
- package/http-client/decorators/http-client.decorators.js +71 -3
- package/http-client/entities/http-log.entity.d.ts +229 -0
- package/http-client/entities/http-log.entity.js +6 -1
- package/http-client/errors/http-client.errors.d.ts +57 -0
- package/http-client/errors/http-client.errors.js +58 -0
- package/http-client/examples/advanced-usage.example.d.ts +41 -0
- package/http-client/examples/advanced-usage.example.js +68 -24
- package/http-client/examples/auth-with-waiting-lock.example.d.ts +31 -0
- package/http-client/examples/auth-with-waiting-lock.example.js +52 -5
- package/http-client/examples/basic-usage.example.d.ts +60 -0
- package/http-client/examples/basic-usage.example.js +60 -0
- package/http-client/examples/multi-api-configuration.example.d.ts +60 -0
- package/http-client/examples/multi-api-configuration.example.js +76 -5
- package/http-client/http-client.module.d.ts +13 -0
- package/http-client/http-client.module.js +19 -0
- package/http-client/index.js +8 -0
- package/http-client/interfaces/api-client-config.interface.d.ts +125 -0
- package/http-client/interfaces/api-client-config.interface.js +3 -0
- package/http-client/interfaces/http-client-config.interface.d.ts +60 -0
- package/http-client/services/api-client-registry.service.d.ts +57 -0
- package/http-client/services/api-client-registry.service.js +84 -1
- package/http-client/services/cache.service.d.ts +52 -0
- package/http-client/services/cache.service.js +72 -3
- package/http-client/services/circuit-breaker.service.d.ts +46 -0
- package/http-client/services/circuit-breaker.service.js +52 -0
- package/http-client/services/http-client.service.d.ts +67 -0
- package/http-client/services/http-client.service.js +105 -4
- package/http-client/services/http-log-query.service.d.ts +83 -0
- package/http-client/services/http-log-query.service.js +122 -1
- package/http-client/services/http-replay.service.d.ts +101 -0
- package/http-client/services/http-replay.service.js +86 -0
- package/http-client/services/log-cleanup.service.d.ts +63 -0
- package/http-client/services/log-cleanup.service.js +54 -2
- package/http-client/services/logging.service.d.ts +40 -0
- package/http-client/services/logging.service.js +53 -0
- package/http-client/utils/call-stack-extractor.util.d.ts +37 -0
- package/http-client/utils/call-stack-extractor.util.js +48 -0
- package/http-client/utils/context-extractor.util.d.ts +49 -0
- package/http-client/utils/context-extractor.util.js +52 -0
- package/http-client/utils/curl-generator.util.d.ts +21 -0
- package/http-client/utils/curl-generator.util.js +44 -3
- package/http-client/utils/request-id.util.d.ts +18 -0
- package/http-client/utils/request-id.util.js +20 -0
- package/http-client/utils/retry-recorder.util.d.ts +42 -0
- package/http-client/utils/retry-recorder.util.js +44 -0
- package/i18n/en_US/validation.json +2 -1
- package/i18n/zh_CN/validation.json +2 -1
- package/index.js +8 -0
- package/interceptors/translation-interceptor.service.js +5 -0
- package/package.json +1 -1
- package/providers/context.provider.js +2 -0
- package/providers/generator.provider.d.ts +4 -0
- package/providers/generator.provider.js +4 -0
- package/redis-lock/comprehensive-lock-cleanup.service.d.ts +94 -0
- package/redis-lock/comprehensive-lock-cleanup.service.js +253 -0
- package/redis-lock/examples/lock-strategy.examples.d.ts +89 -0
- package/redis-lock/examples/lock-strategy.examples.js +130 -15
- package/redis-lock/index.d.ts +2 -0
- package/redis-lock/index.js +8 -1
- package/redis-lock/lock-heartbeat.service.d.ts +78 -0
- package/redis-lock/lock-heartbeat.service.js +222 -0
- package/redis-lock/redis-lock.decorator.d.ts +101 -0
- package/redis-lock/redis-lock.decorator.js +120 -0
- package/redis-lock/redis-lock.module.d.ts +66 -0
- package/redis-lock/redis-lock.module.js +175 -70
- package/redis-lock/redis-lock.service.d.ts +260 -0
- package/redis-lock/redis-lock.service.js +244 -4
- package/setup/bootstrap.setup.js +20 -0
- package/setup/mode.setup.d.ts +44 -0
- package/setup/mode.setup.js +44 -0
- package/setup/schedule.decorator.d.ts +227 -0
- package/setup/schedule.decorator.js +219 -6
- package/setup/worker.decorator.d.ts +86 -0
- package/setup/worker.decorator.js +88 -0
- package/shared/serviceRegistryModule.js +9 -1
- package/shared/services/api-config.service.d.ts +3 -0
- package/shared/services/api-config.service.js +20 -9
- package/validator-json/decorators.d.ts +17 -0
- package/validator-json/decorators.js +17 -2
- package/validator-json/default.d.ts +6 -0
- package/validator-json/default.js +30 -2
- package/validator-json/defaultConverters.js +1 -0
- package/validator-json/options.d.ts +23 -0
- package/validators/common-validators.d.ts +143 -0
- package/validators/common-validators.js +249 -0
- package/validators/custom-validate.examples.d.ts +96 -0
- package/validators/custom-validate.examples.js +400 -0
- package/validators/custom-validate.validator.d.ts +134 -0
- package/validators/custom-validate.validator.js +214 -0
- package/validators/index.d.ts +2 -0
- package/validators/index.js +2 -0
- package/validators/is-exists.validator.d.ts +18 -4
- package/validators/is-exists.validator.js +67 -6
- package/validators/is-unique.validator.d.ts +32 -5
- package/validators/is-unique.validator.js +99 -17
- package/validators/skip-empty.validator.d.ts +5 -0
- package/validators/skip-empty.validator.js +5 -0
- package/vault/interfaces/vault-options.interface.d.ts +9 -0
- package/vault/vault-config.loader.d.ts +30 -0
- package/vault/vault-config.loader.js +48 -1
- package/vault/vault-config.service.d.ts +53 -0
- package/vault/vault-config.service.js +57 -0
- package/vault/vault.module.d.ts +4 -0
- package/vault/vault.module.js +4 -0
- package/decorators/examples/validation-decorators.example.d.ts +0 -69
- package/decorators/examples/validation-decorators.example.js +0 -331
|
@@ -1,14 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Worker Decorators for Bull Queue Processors
|
|
3
|
+
*
|
|
4
|
+
* These decorators conditionally apply Bull decorators based on the application mode.
|
|
5
|
+
* They only register processors when running in Worker or Hybrid mode.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Conditionally applies Bull's @Processor decorator
|
|
9
|
+
* Only registers the processor class when running in Worker or Hybrid mode
|
|
10
|
+
*
|
|
11
|
+
* @param queueName - Name of the queue to process
|
|
12
|
+
* @param options - Processor options (optional)
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```typescript
|
|
16
|
+
* @WorkerProcessor('email')
|
|
17
|
+
* export class EmailProcessor {
|
|
18
|
+
* @WorkerProcess('send')
|
|
19
|
+
* async sendEmail(job: Job) {
|
|
20
|
+
* // Process email sending
|
|
21
|
+
* }
|
|
22
|
+
* }
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
1
25
|
export declare function WorkerProcessor(queueName?: string): ClassDecorator;
|
|
26
|
+
/**
|
|
27
|
+
* Conditionally applies Bull's @Process decorator
|
|
28
|
+
* Only registers the processor method when running in Worker or Hybrid mode
|
|
29
|
+
*
|
|
30
|
+
* @param name - Job name to process (optional)
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* ```typescript
|
|
34
|
+
* @WorkerProcess('send-email')
|
|
35
|
+
* async sendEmail(job: Job<EmailData>) {
|
|
36
|
+
* // Process job
|
|
37
|
+
* }
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
2
40
|
export declare function WorkerProcess(name?: string): MethodDecorator;
|
|
41
|
+
/**
|
|
42
|
+
* Conditionally applies Bull's @OnQueueActive decorator
|
|
43
|
+
* Only registers when running in Worker or Hybrid mode
|
|
44
|
+
*/
|
|
3
45
|
export declare function WorkerOnQueueActive(): MethodDecorator;
|
|
46
|
+
/**
|
|
47
|
+
* Conditionally applies Bull's @OnQueueCompleted decorator
|
|
48
|
+
* Only registers when running in Worker or Hybrid mode
|
|
49
|
+
*/
|
|
4
50
|
export declare function WorkerOnQueueCompleted(): MethodDecorator;
|
|
51
|
+
/**
|
|
52
|
+
* Conditionally applies Bull's @OnQueueProgress decorator
|
|
53
|
+
* Only registers when running in Worker or Hybrid mode
|
|
54
|
+
*/
|
|
5
55
|
export declare function WorkerOnQueueProgress(): MethodDecorator;
|
|
56
|
+
/**
|
|
57
|
+
* Conditionally applies Bull's @OnQueueFailed decorator
|
|
58
|
+
* Only registers when running in Worker or Hybrid mode
|
|
59
|
+
*/
|
|
6
60
|
export declare function WorkerOnQueueFailed(): MethodDecorator;
|
|
61
|
+
/**
|
|
62
|
+
* Conditionally applies Bull's @OnQueueError decorator
|
|
63
|
+
* Only registers when running in Worker or Hybrid mode
|
|
64
|
+
*/
|
|
7
65
|
export declare function WorkerOnQueueError(): MethodDecorator;
|
|
66
|
+
/**
|
|
67
|
+
* Conditionally applies Bull's @OnQueueWaiting decorator
|
|
68
|
+
* Only registers when running in Worker or Hybrid mode
|
|
69
|
+
*/
|
|
8
70
|
export declare function WorkerOnQueueWaiting(): MethodDecorator;
|
|
71
|
+
/**
|
|
72
|
+
* Conditionally applies Bull's @OnQueueStalled decorator
|
|
73
|
+
* Only registers when running in Worker or Hybrid mode
|
|
74
|
+
*/
|
|
9
75
|
export declare function WorkerOnQueueStalled(): MethodDecorator;
|
|
76
|
+
/**
|
|
77
|
+
* Conditionally applies Bull's @OnQueueRemoved decorator
|
|
78
|
+
* Only registers when running in Worker or Hybrid mode
|
|
79
|
+
*/
|
|
10
80
|
export declare function WorkerOnQueueRemoved(): MethodDecorator;
|
|
81
|
+
/**
|
|
82
|
+
* Conditionally applies Bull's @OnQueueCleaned decorator
|
|
83
|
+
* Only registers when running in Worker or Hybrid mode
|
|
84
|
+
*/
|
|
11
85
|
export declare function WorkerOnQueueCleaned(): MethodDecorator;
|
|
86
|
+
/**
|
|
87
|
+
* Conditionally applies Bull's @OnQueueDrained decorator
|
|
88
|
+
* Only registers when running in Worker or Hybrid mode
|
|
89
|
+
*/
|
|
12
90
|
export declare function WorkerOnQueueDrained(): MethodDecorator;
|
|
91
|
+
/**
|
|
92
|
+
* Conditionally applies Bull's @OnQueuePaused decorator
|
|
93
|
+
* Only registers when running in Worker or Hybrid mode
|
|
94
|
+
*/
|
|
13
95
|
export declare function WorkerOnQueuePaused(): MethodDecorator;
|
|
96
|
+
/**
|
|
97
|
+
* Conditionally applies Bull's @OnQueueResumed decorator
|
|
98
|
+
* Only registers when running in Worker or Hybrid mode
|
|
99
|
+
*/
|
|
14
100
|
export declare function WorkerOnQueueResumed(): MethodDecorator;
|
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Worker Decorators for Bull Queue Processors
|
|
4
|
+
*
|
|
5
|
+
* These decorators conditionally apply Bull decorators based on the application mode.
|
|
6
|
+
* They only register processors when running in Worker or Hybrid mode.
|
|
7
|
+
*/
|
|
2
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
9
|
exports.WorkerProcessor = WorkerProcessor;
|
|
4
10
|
exports.WorkerProcess = WorkerProcess;
|
|
@@ -16,22 +22,60 @@ exports.WorkerOnQueuePaused = WorkerOnQueuePaused;
|
|
|
16
22
|
exports.WorkerOnQueueResumed = WorkerOnQueueResumed;
|
|
17
23
|
const bull_1 = require("@nestjs/bull");
|
|
18
24
|
const mode_setup_1 = require("./mode.setup");
|
|
25
|
+
/**
|
|
26
|
+
* Conditionally applies Bull's @Processor decorator
|
|
27
|
+
* Only registers the processor class when running in Worker or Hybrid mode
|
|
28
|
+
*
|
|
29
|
+
* @param queueName - Name of the queue to process
|
|
30
|
+
* @param options - Processor options (optional)
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* ```typescript
|
|
34
|
+
* @WorkerProcessor('email')
|
|
35
|
+
* export class EmailProcessor {
|
|
36
|
+
* @WorkerProcess('send')
|
|
37
|
+
* async sendEmail(job: Job) {
|
|
38
|
+
* // Process email sending
|
|
39
|
+
* }
|
|
40
|
+
* }
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
19
43
|
function WorkerProcessor(queueName) {
|
|
20
44
|
if ((0, mode_setup_1.shouldProcessQueues)()) {
|
|
21
45
|
return (0, bull_1.Processor)(queueName);
|
|
22
46
|
}
|
|
47
|
+
// In HTTP-only mode, return a no-op decorator
|
|
23
48
|
return function (constructor) {
|
|
24
49
|
return constructor;
|
|
25
50
|
};
|
|
26
51
|
}
|
|
52
|
+
/**
|
|
53
|
+
* Conditionally applies Bull's @Process decorator
|
|
54
|
+
* Only registers the processor method when running in Worker or Hybrid mode
|
|
55
|
+
*
|
|
56
|
+
* @param name - Job name to process (optional)
|
|
57
|
+
*
|
|
58
|
+
* @example
|
|
59
|
+
* ```typescript
|
|
60
|
+
* @WorkerProcess('send-email')
|
|
61
|
+
* async sendEmail(job: Job<EmailData>) {
|
|
62
|
+
* // Process job
|
|
63
|
+
* }
|
|
64
|
+
* ```
|
|
65
|
+
*/
|
|
27
66
|
function WorkerProcess(name) {
|
|
28
67
|
if ((0, mode_setup_1.shouldProcessQueues)()) {
|
|
29
68
|
return (0, bull_1.Process)(name);
|
|
30
69
|
}
|
|
70
|
+
// In HTTP-only mode, return a no-op decorator
|
|
31
71
|
return function (target, propertyKey, descriptor) {
|
|
32
72
|
return descriptor;
|
|
33
73
|
};
|
|
34
74
|
}
|
|
75
|
+
/**
|
|
76
|
+
* Conditionally applies Bull's @OnQueueActive decorator
|
|
77
|
+
* Only registers when running in Worker or Hybrid mode
|
|
78
|
+
*/
|
|
35
79
|
function WorkerOnQueueActive() {
|
|
36
80
|
if ((0, mode_setup_1.shouldProcessQueues)()) {
|
|
37
81
|
return (0, bull_1.OnQueueActive)();
|
|
@@ -40,6 +84,10 @@ function WorkerOnQueueActive() {
|
|
|
40
84
|
return descriptor;
|
|
41
85
|
};
|
|
42
86
|
}
|
|
87
|
+
/**
|
|
88
|
+
* Conditionally applies Bull's @OnQueueCompleted decorator
|
|
89
|
+
* Only registers when running in Worker or Hybrid mode
|
|
90
|
+
*/
|
|
43
91
|
function WorkerOnQueueCompleted() {
|
|
44
92
|
if ((0, mode_setup_1.shouldProcessQueues)()) {
|
|
45
93
|
return (0, bull_1.OnQueueCompleted)();
|
|
@@ -48,6 +96,10 @@ function WorkerOnQueueCompleted() {
|
|
|
48
96
|
return descriptor;
|
|
49
97
|
};
|
|
50
98
|
}
|
|
99
|
+
/**
|
|
100
|
+
* Conditionally applies Bull's @OnQueueProgress decorator
|
|
101
|
+
* Only registers when running in Worker or Hybrid mode
|
|
102
|
+
*/
|
|
51
103
|
function WorkerOnQueueProgress() {
|
|
52
104
|
if ((0, mode_setup_1.shouldProcessQueues)()) {
|
|
53
105
|
return (0, bull_1.OnQueueProgress)();
|
|
@@ -56,6 +108,10 @@ function WorkerOnQueueProgress() {
|
|
|
56
108
|
return descriptor;
|
|
57
109
|
};
|
|
58
110
|
}
|
|
111
|
+
/**
|
|
112
|
+
* Conditionally applies Bull's @OnQueueFailed decorator
|
|
113
|
+
* Only registers when running in Worker or Hybrid mode
|
|
114
|
+
*/
|
|
59
115
|
function WorkerOnQueueFailed() {
|
|
60
116
|
if ((0, mode_setup_1.shouldProcessQueues)()) {
|
|
61
117
|
return (0, bull_1.OnQueueFailed)();
|
|
@@ -64,6 +120,10 @@ function WorkerOnQueueFailed() {
|
|
|
64
120
|
return descriptor;
|
|
65
121
|
};
|
|
66
122
|
}
|
|
123
|
+
/**
|
|
124
|
+
* Conditionally applies Bull's @OnQueueError decorator
|
|
125
|
+
* Only registers when running in Worker or Hybrid mode
|
|
126
|
+
*/
|
|
67
127
|
function WorkerOnQueueError() {
|
|
68
128
|
if ((0, mode_setup_1.shouldProcessQueues)()) {
|
|
69
129
|
return (0, bull_1.OnQueueError)();
|
|
@@ -72,6 +132,10 @@ function WorkerOnQueueError() {
|
|
|
72
132
|
return descriptor;
|
|
73
133
|
};
|
|
74
134
|
}
|
|
135
|
+
/**
|
|
136
|
+
* Conditionally applies Bull's @OnQueueWaiting decorator
|
|
137
|
+
* Only registers when running in Worker or Hybrid mode
|
|
138
|
+
*/
|
|
75
139
|
function WorkerOnQueueWaiting() {
|
|
76
140
|
if ((0, mode_setup_1.shouldProcessQueues)()) {
|
|
77
141
|
return (0, bull_1.OnQueueWaiting)();
|
|
@@ -80,6 +144,10 @@ function WorkerOnQueueWaiting() {
|
|
|
80
144
|
return descriptor;
|
|
81
145
|
};
|
|
82
146
|
}
|
|
147
|
+
/**
|
|
148
|
+
* Conditionally applies Bull's @OnQueueStalled decorator
|
|
149
|
+
* Only registers when running in Worker or Hybrid mode
|
|
150
|
+
*/
|
|
83
151
|
function WorkerOnQueueStalled() {
|
|
84
152
|
if ((0, mode_setup_1.shouldProcessQueues)()) {
|
|
85
153
|
return (0, bull_1.OnQueueStalled)();
|
|
@@ -88,6 +156,10 @@ function WorkerOnQueueStalled() {
|
|
|
88
156
|
return descriptor;
|
|
89
157
|
};
|
|
90
158
|
}
|
|
159
|
+
/**
|
|
160
|
+
* Conditionally applies Bull's @OnQueueRemoved decorator
|
|
161
|
+
* Only registers when running in Worker or Hybrid mode
|
|
162
|
+
*/
|
|
91
163
|
function WorkerOnQueueRemoved() {
|
|
92
164
|
if ((0, mode_setup_1.shouldProcessQueues)()) {
|
|
93
165
|
return (0, bull_1.OnQueueRemoved)();
|
|
@@ -96,6 +168,10 @@ function WorkerOnQueueRemoved() {
|
|
|
96
168
|
return descriptor;
|
|
97
169
|
};
|
|
98
170
|
}
|
|
171
|
+
/**
|
|
172
|
+
* Conditionally applies Bull's @OnQueueCleaned decorator
|
|
173
|
+
* Only registers when running in Worker or Hybrid mode
|
|
174
|
+
*/
|
|
99
175
|
function WorkerOnQueueCleaned() {
|
|
100
176
|
if ((0, mode_setup_1.shouldProcessQueues)()) {
|
|
101
177
|
return (0, bull_1.OnQueueCleaned)();
|
|
@@ -104,6 +180,10 @@ function WorkerOnQueueCleaned() {
|
|
|
104
180
|
return descriptor;
|
|
105
181
|
};
|
|
106
182
|
}
|
|
183
|
+
/**
|
|
184
|
+
* Conditionally applies Bull's @OnQueueDrained decorator
|
|
185
|
+
* Only registers when running in Worker or Hybrid mode
|
|
186
|
+
*/
|
|
107
187
|
function WorkerOnQueueDrained() {
|
|
108
188
|
if ((0, mode_setup_1.shouldProcessQueues)()) {
|
|
109
189
|
return (0, bull_1.OnQueueDrained)();
|
|
@@ -112,6 +192,10 @@ function WorkerOnQueueDrained() {
|
|
|
112
192
|
return descriptor;
|
|
113
193
|
};
|
|
114
194
|
}
|
|
195
|
+
/**
|
|
196
|
+
* Conditionally applies Bull's @OnQueuePaused decorator
|
|
197
|
+
* Only registers when running in Worker or Hybrid mode
|
|
198
|
+
*/
|
|
115
199
|
function WorkerOnQueuePaused() {
|
|
116
200
|
if ((0, mode_setup_1.shouldProcessQueues)()) {
|
|
117
201
|
return (0, bull_1.OnQueuePaused)();
|
|
@@ -120,6 +204,10 @@ function WorkerOnQueuePaused() {
|
|
|
120
204
|
return descriptor;
|
|
121
205
|
};
|
|
122
206
|
}
|
|
207
|
+
/**
|
|
208
|
+
* Conditionally applies Bull's @OnQueueResumed decorator
|
|
209
|
+
* Only registers when running in Worker or Hybrid mode
|
|
210
|
+
*/
|
|
123
211
|
function WorkerOnQueueResumed() {
|
|
124
212
|
if ((0, mode_setup_1.shouldProcessQueues)()) {
|
|
125
213
|
return (0, bull_1.OnQueueResumed)();
|
|
@@ -37,13 +37,18 @@ const nestjs_cls_1 = require("nestjs-cls");
|
|
|
37
37
|
const redis_lock_1 = require("../redis-lock");
|
|
38
38
|
const typeorm_2 = require("typeorm");
|
|
39
39
|
const vault_1 = require("../vault");
|
|
40
|
+
const validators_1 = require("../validators");
|
|
40
41
|
const providers = [
|
|
41
42
|
services_1.ApiConfigService,
|
|
42
43
|
services_1.ValidatorService,
|
|
43
44
|
services_1.GeneratorService,
|
|
44
45
|
services_1.TranslationService,
|
|
46
|
+
validators_1.IsExistsValidator,
|
|
47
|
+
validators_1.IsUniqueValidator,
|
|
48
|
+
validators_1.CustomValidateValidator,
|
|
45
49
|
];
|
|
46
50
|
if (!((_a = process === null || process === void 0 ? void 0 : process.env) === null || _a === void 0 ? void 0 : _a.ENV_FILE_PATH)) {
|
|
51
|
+
// 兼容单元测试,没有加载初始化文件,手动引入
|
|
47
52
|
Promise.resolve().then(() => require('../setup/bootstrap.setup'));
|
|
48
53
|
}
|
|
49
54
|
services_1.ApiConfigService.rootPath = process.env.ROOT_PATH;
|
|
@@ -113,6 +118,7 @@ if (services_1.ApiConfigService.toBoolean(process.env.CACHE_ENABLED)) {
|
|
|
113
118
|
isGlobal: true,
|
|
114
119
|
useFactory: (config, redisService, dataSource) => __awaiter(void 0, void 0, void 0, function* () {
|
|
115
120
|
let redisClient = null;
|
|
121
|
+
// Try to get Redis client (use default client)
|
|
116
122
|
try {
|
|
117
123
|
redisClient = redisService.getClient();
|
|
118
124
|
}
|
|
@@ -131,6 +137,7 @@ if (services_1.ApiConfigService.toBoolean(process.env.CACHE_ENABLED)) {
|
|
|
131
137
|
}),
|
|
132
138
|
}));
|
|
133
139
|
}
|
|
140
|
+
// Add RedisLockModule if both Redis and Cache are enabled
|
|
134
141
|
if (services_1.ApiConfigService.toBoolean(process.env.SCHEDULE_ENABLED) &&
|
|
135
142
|
services_1.ApiConfigService.toBoolean(process.env.REDIS_LOCK_ENABLED, true)) {
|
|
136
143
|
modules.push(redis_lock_1.RedisLockModule.forRootAsync({
|
|
@@ -138,6 +145,7 @@ if (services_1.ApiConfigService.toBoolean(process.env.SCHEDULE_ENABLED) &&
|
|
|
138
145
|
isGlobal: true,
|
|
139
146
|
useFactory: (config, redisService) => __awaiter(void 0, void 0, void 0, function* () {
|
|
140
147
|
let redisClient = null;
|
|
148
|
+
// Try to get Redis client (use default client)
|
|
141
149
|
try {
|
|
142
150
|
redisClient = redisService.getClient();
|
|
143
151
|
}
|
|
@@ -146,7 +154,7 @@ if (services_1.ApiConfigService.toBoolean(process.env.SCHEDULE_ENABLED) &&
|
|
|
146
154
|
}
|
|
147
155
|
return {
|
|
148
156
|
redisClient,
|
|
149
|
-
defaultTtl: config.getNumber('REDIS_LOCK_TTL', 300000),
|
|
157
|
+
defaultTtl: config.getNumber('REDIS_LOCK_TTL', 300000), // 5 minutes
|
|
150
158
|
defaultKeyPrefix: config.getString('REDIS_LOCK_KEY_PREFIX', 'lock'),
|
|
151
159
|
defaultRetryCount: config.getNumber('REDIS_LOCK_RETRY_COUNT', 3),
|
|
152
160
|
defaultRetryDelay: config.getNumber('REDIS_LOCK_RETRY_DELAY', 200),
|
|
@@ -99,15 +99,19 @@ let ApiConfigService = ApiConfigService_1 = class ApiConfigService {
|
|
|
99
99
|
if (!origin) {
|
|
100
100
|
return callback(null, true);
|
|
101
101
|
}
|
|
102
|
+
// 支持通配符匹配逻辑
|
|
102
103
|
const isAllowed = allowedDomains.some((domain) => {
|
|
104
|
+
// 处理包含通配符的情况(如 *.example.com)
|
|
103
105
|
if (domain.includes('*')) {
|
|
106
|
+
// 将通配符转换为正则表达式
|
|
104
107
|
const regexPattern = domain
|
|
105
108
|
.replace(/\./g, '\\.')
|
|
106
|
-
.replace(':*', '(:\\d+)?')
|
|
109
|
+
.replace(':*', '(:\\d+)?') // 处理端口通配符
|
|
107
110
|
.replace('*\\.', '(.*\\.)?');
|
|
108
111
|
const fullRegex = new RegExp(`^https?:\/\/${regexPattern}$`, 'i');
|
|
109
112
|
return fullRegex.test(origin);
|
|
110
113
|
}
|
|
114
|
+
// 完全匹配(包含端口匹配)
|
|
111
115
|
return origin === domain || origin.startsWith(`${domain}:`);
|
|
112
116
|
});
|
|
113
117
|
isAllowed
|
|
@@ -160,6 +164,9 @@ let ApiConfigService = ApiConfigService_1 = class ApiConfigService {
|
|
|
160
164
|
db: this.getNumber('REDIS_DB'),
|
|
161
165
|
};
|
|
162
166
|
}
|
|
167
|
+
/**
|
|
168
|
+
* 是否使用Redis,用于health check
|
|
169
|
+
*/
|
|
163
170
|
get isRedisEnabled() {
|
|
164
171
|
return (this.getBoolean('BULL_ENABLED') ||
|
|
165
172
|
this.getBoolean('CACHE_ENABLED') ||
|
|
@@ -168,7 +175,9 @@ let ApiConfigService = ApiConfigService_1 = class ApiConfigService {
|
|
|
168
175
|
}
|
|
169
176
|
get bullConfig() {
|
|
170
177
|
return {
|
|
171
|
-
redis: Object.assign(Object.assign({}, this.ioRedisConfig), {
|
|
178
|
+
redis: Object.assign(Object.assign({}, this.ioRedisConfig), {
|
|
179
|
+
// 增加重连策略
|
|
180
|
+
retryStrategy: (times) => Math.min(times * 1000, 5000) }),
|
|
172
181
|
prefix: this.getString('BULL_PREFIX'),
|
|
173
182
|
defaultJobOptions: {
|
|
174
183
|
removeOnComplete: true,
|
|
@@ -178,16 +187,18 @@ let ApiConfigService = ApiConfigService_1 = class ApiConfigService {
|
|
|
178
187
|
type: 'exponential',
|
|
179
188
|
delay: this.getNumber('BULL_JOB_BACKOFF_DELAY_MS', 5000),
|
|
180
189
|
},
|
|
181
|
-
timeout: this.getNumber('BULL_JOB_TIMEOUT_MS', 30 * 1000),
|
|
190
|
+
timeout: this.getNumber('BULL_JOB_TIMEOUT_MS', 30 * 1000), // 默认30秒超时
|
|
182
191
|
},
|
|
183
192
|
settings: {
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
193
|
+
// 增强稳定性配置
|
|
194
|
+
maxStalledCount: 2, // 最大卡住重试次数
|
|
195
|
+
guardInterval: 5000, // 检查卡住任务间隔
|
|
196
|
+
retryProcessDelay: 1000, // 进程重启后的重试延迟
|
|
187
197
|
},
|
|
198
|
+
// 增加队列级限流配置
|
|
188
199
|
limiter: {
|
|
189
|
-
max: this.getNumber('BULL_MAX_CONCURRENT_JOBS', 100),
|
|
190
|
-
duration: 1000,
|
|
200
|
+
max: this.getNumber('BULL_MAX_CONCURRENT_JOBS', 100), // 最大并发任务数
|
|
201
|
+
duration: 1000, // 时间窗口
|
|
191
202
|
},
|
|
192
203
|
};
|
|
193
204
|
}
|
|
@@ -275,7 +286,7 @@ let ApiConfigService = ApiConfigService_1 = class ApiConfigService {
|
|
|
275
286
|
if (defaultValue !== undefined) {
|
|
276
287
|
return defaultValue;
|
|
277
288
|
}
|
|
278
|
-
throw new Error(`key:'${key}' - environment does not set`);
|
|
289
|
+
throw new Error(`key:'${key}' - environment does not set`); // probably we should call process.exit() too to avoid locking the service
|
|
279
290
|
}
|
|
280
291
|
return value;
|
|
281
292
|
}
|
|
@@ -1,6 +1,23 @@
|
|
|
1
1
|
import { ReferenceObject, SchemaObject } from '@nestjs/swagger/dist/interfaces/open-api-spec.interface';
|
|
2
2
|
import 'reflect-metadata';
|
|
3
3
|
import { IOptions } from './options';
|
|
4
|
+
/**
|
|
5
|
+
* Either a plain JSON Schema object that gets merged into the existing schema,
|
|
6
|
+
* or a function that receives as parameters the existing schema and global
|
|
7
|
+
* options, returning an updated schema.
|
|
8
|
+
*/
|
|
4
9
|
export type DecoratorSchema = ReferenceObject | SchemaObject | ((source: SchemaObject, options: IOptions) => ReferenceObject | SchemaObject);
|
|
10
|
+
/**
|
|
11
|
+
* Supplement class or property with additional JSON Schema keywords.
|
|
12
|
+
*
|
|
13
|
+
* @param schema JSON Schema object that is merged into the schema derived from
|
|
14
|
+
* class-validator decorators. In case of conflicts, keywords defined here
|
|
15
|
+
* overwrite the existing ones. Alternatively you can supply a function that
|
|
16
|
+
* receives as parameters the existing schema and global options, returning an
|
|
17
|
+
* updated schema.
|
|
18
|
+
*/
|
|
5
19
|
export declare function JSONSchema(schema: DecoratorSchema): (target: object | Function, key?: string) => void;
|
|
20
|
+
/**
|
|
21
|
+
* Get the JSON Schema stored in given target's metadata.
|
|
22
|
+
*/
|
|
6
23
|
export declare function getMetadataSchema(target: object | Function, key: string): DecoratorSchema;
|
|
@@ -4,19 +4,34 @@ exports.JSONSchema = JSONSchema;
|
|
|
4
4
|
exports.getMetadataSchema = getMetadataSchema;
|
|
5
5
|
require("reflect-metadata");
|
|
6
6
|
const SCHEMA_KEY = Symbol('class-validator-jsonschema:JSONSchema');
|
|
7
|
+
/**
|
|
8
|
+
* Supplement class or property with additional JSON Schema keywords.
|
|
9
|
+
*
|
|
10
|
+
* @param schema JSON Schema object that is merged into the schema derived from
|
|
11
|
+
* class-validator decorators. In case of conflicts, keywords defined here
|
|
12
|
+
* overwrite the existing ones. Alternatively you can supply a function that
|
|
13
|
+
* receives as parameters the existing schema and global options, returning an
|
|
14
|
+
* updated schema.
|
|
15
|
+
*/
|
|
7
16
|
function JSONSchema(schema) {
|
|
8
17
|
return (target, key) => {
|
|
9
18
|
if (key) {
|
|
10
|
-
setMetadataSchema(schema, target.constructor, key);
|
|
19
|
+
setMetadataSchema(schema, target.constructor, key); // Property metadata
|
|
11
20
|
}
|
|
12
21
|
else {
|
|
13
|
-
setMetadataSchema(schema, target, target.name);
|
|
22
|
+
setMetadataSchema(schema, target, target.name); // Class metadata
|
|
14
23
|
}
|
|
15
24
|
};
|
|
16
25
|
}
|
|
26
|
+
/**
|
|
27
|
+
* Get the JSON Schema stored in given target's metadata.
|
|
28
|
+
*/
|
|
17
29
|
function getMetadataSchema(target, key) {
|
|
18
30
|
return Reflect.getMetadata(SCHEMA_KEY, target.constructor, key) || {};
|
|
19
31
|
}
|
|
32
|
+
/**
|
|
33
|
+
* Store given JSON Schema into target object's metadata.
|
|
34
|
+
*/
|
|
20
35
|
function setMetadataSchema(value, target, key) {
|
|
21
36
|
return Reflect.defineMetadata(SCHEMA_KEY, value, target, key);
|
|
22
37
|
}
|
|
@@ -2,5 +2,11 @@ import { ValidationMetadata } from 'class-validator/types/metadata/ValidationMet
|
|
|
2
2
|
import { IOptions } from './options';
|
|
3
3
|
import { I18nService } from 'nestjs-i18n';
|
|
4
4
|
export { JSONSchema } from './decorators';
|
|
5
|
+
/**
|
|
6
|
+
* Convert an array of class-validator metadata into JSON Schema definitions.
|
|
7
|
+
*/
|
|
5
8
|
export declare function validationMetadataArrayToSchemas(metadatas: ValidationMetadata[], i18n: any, userOptions?: Partial<IOptions>): any;
|
|
9
|
+
/**
|
|
10
|
+
* Generate JSON Schema definitions from the target object constructor.
|
|
11
|
+
*/
|
|
6
12
|
export declare function targetConstructorToSchema(targetConstructor: Function, i18n: I18nService, userOptions?: Partial<IOptions>): any;
|
|
@@ -9,6 +9,9 @@ const defaultConverters_1 = require("./defaultConverters");
|
|
|
9
9
|
const options_1 = require("./options");
|
|
10
10
|
var decorators_1 = require("./decorators");
|
|
11
11
|
Object.defineProperty(exports, "JSONSchema", { enumerable: true, get: function () { return decorators_1.JSONSchema; } });
|
|
12
|
+
/**
|
|
13
|
+
* Convert an array of class-validator metadata into JSON Schema definitions.
|
|
14
|
+
*/
|
|
12
15
|
function validationMetadataArrayToSchemas(metadatas, i18n, userOptions) {
|
|
13
16
|
const options = Object.assign(Object.assign({}, options_1.defaultOptions), userOptions);
|
|
14
17
|
const rules = [];
|
|
@@ -46,6 +49,9 @@ function getFirstNonNullDataType(data) {
|
|
|
46
49
|
}
|
|
47
50
|
return undefined;
|
|
48
51
|
}
|
|
52
|
+
/**
|
|
53
|
+
* Generate JSON Schema definitions from the target object constructor.
|
|
54
|
+
*/
|
|
49
55
|
function targetConstructorToSchema(targetConstructor, i18n, userOptions) {
|
|
50
56
|
const options = Object.assign(Object.assign({}, options_1.defaultOptions), userOptions);
|
|
51
57
|
const storage = options.classValidatorMetadataStorage;
|
|
@@ -64,6 +70,15 @@ function populateMetadatasWithConstraints(storage, metadatas) {
|
|
|
64
70
|
return Object.assign({}, meta);
|
|
65
71
|
});
|
|
66
72
|
}
|
|
73
|
+
/**
|
|
74
|
+
* Return target class' inherited validation metadatas, with original metadatas
|
|
75
|
+
* given precedence over inherited ones in case of duplicates.
|
|
76
|
+
*
|
|
77
|
+
* Adapted from `class-validator` source.
|
|
78
|
+
*
|
|
79
|
+
* @param target Target child class.
|
|
80
|
+
* @param metadatas All class-validator metadata objects.
|
|
81
|
+
*/
|
|
67
82
|
function getInheritedMetadatas(target, metadatas) {
|
|
68
83
|
return metadatas.filter((d) => d.target instanceof Function &&
|
|
69
84
|
target.prototype instanceof d.target &&
|
|
@@ -71,6 +86,9 @@ function getInheritedMetadatas(target, metadatas) {
|
|
|
71
86
|
m.target === target &&
|
|
72
87
|
m.type === d.type));
|
|
73
88
|
}
|
|
89
|
+
/**
|
|
90
|
+
* Convert a property's class-validator metadata into a JSON Schema property.
|
|
91
|
+
*/
|
|
74
92
|
function applyConverters(propertyMetadatas, options, i18n) {
|
|
75
93
|
const converters = Object.assign(Object.assign({}, defaultConverters_1.defaultConverters), options.additionalConverters);
|
|
76
94
|
const convert = (meta) => {
|
|
@@ -83,12 +101,13 @@ function applyConverters(propertyMetadatas, options, i18n) {
|
|
|
83
101
|
const converterResult = typeof converter === 'function' ? converter(meta, options) : converter;
|
|
84
102
|
const items = {};
|
|
85
103
|
let message = '';
|
|
104
|
+
// @ts-ignore
|
|
86
105
|
const originMessage = typeof meta.message === 'function'
|
|
87
106
|
? meta.message({
|
|
88
|
-
value: undefined,
|
|
107
|
+
value: undefined, // We don't have the actual value in this context
|
|
89
108
|
constraints: meta.constraints,
|
|
90
109
|
targetName: meta.target.name || '',
|
|
91
|
-
object: {},
|
|
110
|
+
object: {}, // We don't have the actual object in this context
|
|
92
111
|
property: meta.propertyName,
|
|
93
112
|
})
|
|
94
113
|
: meta.message;
|
|
@@ -109,15 +128,23 @@ function applyConverters(propertyMetadatas, options, i18n) {
|
|
|
109
128
|
}
|
|
110
129
|
return meta.each ? { items, type: 'array' } : items;
|
|
111
130
|
};
|
|
131
|
+
// const constraints = [];
|
|
112
132
|
const constraints = propertyMetadatas.map((meta) => {
|
|
113
133
|
return convert(meta);
|
|
114
134
|
});
|
|
115
135
|
return (0, lodash_1.reject)(constraints, (item) => (0, lodash_1.isEmpty)(item));
|
|
116
136
|
}
|
|
137
|
+
/** Check whether property is excluded with class-transformer `@Exclude` decorator. */
|
|
117
138
|
function isExcluded(propertyMetadata, options) {
|
|
118
139
|
var _a;
|
|
119
140
|
return !!((_a = options.classTransformerMetadataStorage) === null || _a === void 0 ? void 0 : _a.findExcludeMetadata(propertyMetadata.target, propertyMetadata.propertyName));
|
|
120
141
|
}
|
|
142
|
+
/**
|
|
143
|
+
* Get the required property names of a validated class.
|
|
144
|
+
* @param target Validation target class.
|
|
145
|
+
* @param metadatas Validation metadata objects of the validated class.
|
|
146
|
+
* @param options Global class-validator options.
|
|
147
|
+
*/
|
|
121
148
|
function getRequiredPropNames(target, metadatas, options) {
|
|
122
149
|
function isDefined(metas) {
|
|
123
150
|
return (metas && metas.some(({ type }) => type === cv.ValidationTypes.IS_DEFINED));
|
|
@@ -127,6 +154,7 @@ function getRequiredPropNames(target, metadatas, options) {
|
|
|
127
154
|
metas.some(({ type }) => [cv.ValidationTypes.CONDITIONAL_VALIDATION, cv.IS_EMPTY].includes(type)));
|
|
128
155
|
}
|
|
129
156
|
return (Object.entries((0, lodash_1.groupBy)(metadatas, (m) => m.propertyName))
|
|
157
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
130
158
|
.filter(([_, metas]) => {
|
|
131
159
|
const own = metas.filter((m) => m.target === target);
|
|
132
160
|
const inherited = metas.filter((m) => m.target !== target);
|
|
@@ -2,10 +2,33 @@ import type { MetadataStorage as ClassTransformerMetadataStorage } from 'class-t
|
|
|
2
2
|
import { MetadataStorage, ValidatorOptions } from 'class-validator';
|
|
3
3
|
import { ISchemaConverters } from './defaultConverters';
|
|
4
4
|
export interface IOptions extends ValidatorOptions {
|
|
5
|
+
/**
|
|
6
|
+
* A map of additional metadata-to-schema converters that can be used to
|
|
7
|
+
* supplement or override the default ones. The key should correspond to the
|
|
8
|
+
* 'type' property of a ValidationMetadata object.
|
|
9
|
+
*/
|
|
5
10
|
additionalConverters: ISchemaConverters;
|
|
11
|
+
/**
|
|
12
|
+
* Metadata storage instance of class-transformer. This value can be
|
|
13
|
+
* optionally defined in order for class-transformer's @Type decorators to
|
|
14
|
+
* have effect in JSON Schema generation.
|
|
15
|
+
*/
|
|
6
16
|
classTransformerMetadataStorage?: ClassTransformerMetadataStorage;
|
|
17
|
+
/**
|
|
18
|
+
* Metadata storage instance of class-validator. This value can be
|
|
19
|
+
* optionally defined in order to override the default storage used
|
|
20
|
+
* to parse decorator metadata.
|
|
21
|
+
*/
|
|
7
22
|
classValidatorMetadataStorage: MetadataStorage;
|
|
23
|
+
/**
|
|
24
|
+
* A prefix added to all `$ref` JSON pointers referencing other schemas.
|
|
25
|
+
* Defaults to '#/definitions/'.
|
|
26
|
+
*/
|
|
8
27
|
refPointerPrefix: string;
|
|
28
|
+
/**
|
|
29
|
+
* Property used to group schemas.
|
|
30
|
+
* Defaults to `name`, i.e., class name.
|
|
31
|
+
*/
|
|
9
32
|
schemaNameField: string;
|
|
10
33
|
}
|
|
11
34
|
export declare const defaultOptions: IOptions;
|