@volontariapp/post-processors 1.0.0-snap-856af13 → 1.0.0-snap-fb20f49
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/constants/config.default.d.ts +27 -0
- package/dist/constants/config.default.d.ts.map +1 -0
- package/dist/constants/config.default.js +29 -0
- package/dist/constants/config.default.js.map +1 -0
- package/dist/constants/index.d.ts +2 -0
- package/dist/constants/index.d.ts.map +1 -0
- package/dist/constants/index.js +2 -0
- package/dist/constants/index.js.map +1 -0
- package/dist/core/helpers/index.d.ts +3 -0
- package/dist/core/helpers/index.d.ts.map +1 -0
- package/dist/core/helpers/index.js +3 -0
- package/dist/core/helpers/index.js.map +1 -0
- package/dist/core/{redis-stream.helper.d.ts → helpers/redis-stream.helper.d.ts} +2 -2
- package/dist/core/helpers/redis-stream.helper.d.ts.map +1 -0
- package/dist/core/helpers/redis-stream.helper.js.map +1 -0
- package/dist/core/helpers/retry.helper.d.ts +24 -0
- package/dist/core/helpers/retry.helper.d.ts.map +1 -0
- package/dist/core/helpers/retry.helper.js +104 -0
- package/dist/core/helpers/retry.helper.js.map +1 -0
- package/dist/core/index.d.ts +7 -4
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +7 -4
- package/dist/core/index.js.map +1 -1
- package/dist/core/processors/base.post-processor.d.ts +46 -0
- package/dist/core/processors/base.post-processor.d.ts.map +1 -0
- package/dist/core/processors/base.post-processor.js +422 -0
- package/dist/core/processors/base.post-processor.js.map +1 -0
- package/dist/core/{batch.post-processor.d.ts → processors/batch.post-processor.d.ts} +3 -2
- package/dist/core/processors/batch.post-processor.d.ts.map +1 -0
- package/dist/core/{batch.post-processor.js → processors/batch.post-processor.js} +56 -5
- package/dist/core/processors/batch.post-processor.js.map +1 -0
- package/dist/core/processors/index.d.ts +4 -0
- package/dist/core/processors/index.d.ts.map +1 -0
- package/dist/core/processors/index.js +4 -0
- package/dist/core/processors/index.js.map +1 -0
- package/dist/core/{single.post-processor.d.ts → processors/single.post-processor.d.ts} +3 -1
- package/dist/core/processors/single.post-processor.d.ts.map +1 -0
- package/dist/core/processors/single.post-processor.js +120 -0
- package/dist/core/processors/single.post-processor.js.map +1 -0
- package/dist/core/validators/circuit-breaker.d.ts +27 -0
- package/dist/core/validators/circuit-breaker.d.ts.map +1 -0
- package/dist/core/validators/circuit-breaker.js +83 -0
- package/dist/core/validators/circuit-breaker.js.map +1 -0
- package/dist/core/validators/index.d.ts +2 -0
- package/dist/core/validators/index.d.ts.map +1 -0
- package/dist/core/validators/index.js +2 -0
- package/dist/core/validators/index.js.map +1 -0
- package/dist/core/validators/options-validator.d.ts +5 -0
- package/dist/core/validators/options-validator.d.ts.map +1 -0
- package/dist/core/validators/options-validator.js +90 -0
- package/dist/core/validators/options-validator.js.map +1 -0
- package/dist/enums/circuit-breaker-state.enum.d.ts +6 -0
- package/dist/enums/circuit-breaker-state.enum.d.ts.map +1 -0
- package/dist/enums/circuit-breaker-state.enum.js +7 -0
- package/dist/enums/circuit-breaker-state.enum.js.map +1 -0
- package/dist/enums/index.d.ts +2 -0
- package/dist/enums/index.d.ts.map +1 -0
- package/dist/enums/index.js +2 -0
- package/dist/enums/index.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/interfaces/index.d.ts +7 -3
- package/dist/interfaces/index.d.ts.map +1 -1
- package/dist/interfaces/{batch-event-item.interface.d.ts → processors/batch-event-item.interface.d.ts} +1 -1
- package/dist/interfaces/processors/batch-event-item.interface.d.ts.map +1 -0
- package/dist/interfaces/processors/batch-event-item.interface.js.map +1 -0
- package/dist/interfaces/processors/normalized-post-processor-options.interface.d.ts +6 -0
- package/dist/interfaces/processors/normalized-post-processor-options.interface.d.ts.map +1 -0
- package/dist/interfaces/processors/normalized-post-processor-options.interface.js +2 -0
- package/dist/interfaces/processors/normalized-post-processor-options.interface.js.map +1 -0
- package/dist/interfaces/processors/pending-message-info.interface.d.ts.map +1 -0
- package/dist/interfaces/processors/pending-message-info.interface.js.map +1 -0
- package/dist/interfaces/processors/post-processor-options.interface.d.ts +21 -0
- package/dist/interfaces/processors/post-processor-options.interface.d.ts.map +1 -0
- package/dist/interfaces/processors/post-processor-options.interface.js.map +1 -0
- package/dist/interfaces/retry/retry-metadata.interface.d.ts +6 -0
- package/dist/interfaces/retry/retry-metadata.interface.d.ts.map +1 -0
- package/dist/interfaces/retry/retry-metadata.interface.js +2 -0
- package/dist/interfaces/retry/retry-metadata.interface.js.map +1 -0
- package/dist/interfaces/retry/retry-options.interface.d.ts +8 -0
- package/dist/interfaces/retry/retry-options.interface.d.ts.map +1 -0
- package/dist/interfaces/retry/retry-options.interface.js +2 -0
- package/dist/interfaces/retry/retry-options.interface.js.map +1 -0
- package/dist/interfaces/validators/circuit-breaker-config.interface.d.ts +6 -0
- package/dist/interfaces/validators/circuit-breaker-config.interface.d.ts.map +1 -0
- package/dist/interfaces/validators/circuit-breaker-config.interface.js +2 -0
- package/dist/interfaces/validators/circuit-breaker-config.interface.js.map +1 -0
- package/dist/test/data-source.d.ts.map +1 -0
- package/dist/test/data-source.js.map +1 -0
- package/dist/test/migrations/1776783577425-CreateJobsOutbox.d.ts.map +1 -0
- package/dist/test/migrations/1776783577425-CreateJobsOutbox.js.map +1 -0
- package/dist/test/migrations/1778328780881-InitialSchemaJobAudit.d.ts.map +1 -0
- package/dist/test/migrations/1778328780881-InitialSchemaJobAudit.js.map +1 -0
- package/dist/test/specs/batch-post-processor/batch-post-processor.int.spec.js +92 -4
- package/dist/test/specs/batch-post-processor/batch-post-processor.int.spec.js.map +1 -1
- package/dist/test/specs/batch-post-processor/batch-post-processor.unit.spec.js +174 -7
- package/dist/test/specs/batch-post-processor/batch-post-processor.unit.spec.js.map +1 -1
- package/dist/test/specs/helpers/redis-stream-helper.int.spec.d.ts +2 -0
- package/dist/test/specs/helpers/redis-stream-helper.int.spec.d.ts.map +1 -0
- package/dist/test/specs/helpers/redis-stream-helper.int.spec.js +56 -0
- package/dist/test/specs/helpers/redis-stream-helper.int.spec.js.map +1 -0
- package/dist/test/specs/helpers/redis-stream-helper.unit.spec.d.ts +2 -0
- package/dist/test/specs/helpers/redis-stream-helper.unit.spec.d.ts.map +1 -0
- package/dist/test/specs/helpers/redis-stream-helper.unit.spec.js +102 -0
- package/dist/test/specs/helpers/redis-stream-helper.unit.spec.js.map +1 -0
- package/dist/test/specs/helpers/retry-helper.int.spec.d.ts +2 -0
- package/dist/test/specs/helpers/retry-helper.int.spec.d.ts.map +1 -0
- package/dist/test/specs/helpers/retry-helper.int.spec.js +101 -0
- package/dist/test/specs/helpers/retry-helper.int.spec.js.map +1 -0
- package/dist/test/specs/helpers/retry-helper.unit.spec.d.ts +2 -0
- package/dist/test/specs/helpers/retry-helper.unit.spec.d.ts.map +1 -0
- package/dist/test/specs/helpers/retry-helper.unit.spec.js +202 -0
- package/dist/test/specs/helpers/retry-helper.unit.spec.js.map +1 -0
- package/dist/test/specs/integration/circuit-breaker.integration.spec.d.ts +2 -0
- package/dist/test/specs/integration/circuit-breaker.integration.spec.d.ts.map +1 -0
- package/dist/test/specs/integration/circuit-breaker.integration.spec.js +112 -0
- package/dist/test/specs/integration/circuit-breaker.integration.spec.js.map +1 -0
- package/dist/test/specs/single-post-processor/single-post-processor-retry.int.spec.d.ts +2 -0
- package/dist/test/specs/single-post-processor/single-post-processor-retry.int.spec.d.ts.map +1 -0
- package/dist/test/specs/single-post-processor/single-post-processor-retry.int.spec.js +142 -0
- package/dist/test/specs/single-post-processor/single-post-processor-retry.int.spec.js.map +1 -0
- package/dist/test/specs/single-post-processor/single-post-processor.int.spec.js +49 -7
- package/dist/test/specs/single-post-processor/single-post-processor.int.spec.js.map +1 -1
- package/dist/test/specs/single-post-processor/single-post-processor.unit.spec.js +110 -22
- package/dist/test/specs/single-post-processor/single-post-processor.unit.spec.js.map +1 -1
- package/dist/test/specs/validators/options-validator.unit.spec.d.ts +2 -0
- package/dist/test/specs/validators/options-validator.unit.spec.d.ts.map +1 -0
- package/dist/test/specs/validators/options-validator.unit.spec.js +290 -0
- package/dist/test/specs/validators/options-validator.unit.spec.js.map +1 -0
- package/dist/test/utils/classes/test-batch-post-processor.class.d.ts +2 -1
- package/dist/test/utils/classes/test-batch-post-processor.class.d.ts.map +1 -1
- package/dist/test/utils/classes/test-batch-post-processor.class.js +4 -1
- package/dist/test/utils/classes/test-batch-post-processor.class.js.map +1 -1
- package/dist/test/utils/classes/test-post-processor.class.d.ts +2 -1
- package/dist/test/utils/classes/test-post-processor.class.d.ts.map +1 -1
- package/dist/test/utils/classes/test-post-processor.class.js +4 -1
- package/dist/test/utils/classes/test-post-processor.class.js.map +1 -1
- package/dist/test/utils/helpers/wait.helper.d.ts +2 -0
- package/dist/test/utils/helpers/wait.helper.d.ts.map +1 -0
- package/dist/test/utils/helpers/wait.helper.js +11 -0
- package/dist/test/utils/helpers/wait.helper.js.map +1 -0
- package/dist/test/utils/index.d.ts +1 -0
- package/dist/test/utils/index.d.ts.map +1 -1
- package/dist/test/utils/index.js +1 -0
- package/dist/test/utils/index.js.map +1 -1
- package/dist/test/utils/mocks/redis-call.mock.d.ts.map +1 -1
- package/dist/test/utils/mocks/redis-call.mock.js +9 -0
- package/dist/test/utils/mocks/redis-call.mock.js.map +1 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/parse-event.types.d.ts +13 -0
- package/dist/types/parse-event.types.d.ts.map +1 -0
- package/dist/types/parse-event.types.js +2 -0
- package/dist/types/parse-event.types.js.map +1 -0
- package/package.json +1 -1
- package/dist/core/base.post-processor.d.ts +0 -27
- package/dist/core/base.post-processor.d.ts.map +0 -1
- package/dist/core/base.post-processor.js +0 -206
- package/dist/core/base.post-processor.js.map +0 -1
- package/dist/core/batch.post-processor.d.ts.map +0 -1
- package/dist/core/batch.post-processor.js.map +0 -1
- package/dist/core/redis-stream.helper.d.ts.map +0 -1
- package/dist/core/redis-stream.helper.js.map +0 -1
- package/dist/core/single.post-processor.d.ts.map +0 -1
- package/dist/core/single.post-processor.js +0 -58
- package/dist/core/single.post-processor.js.map +0 -1
- package/dist/data-source.d.ts.map +0 -1
- package/dist/data-source.js.map +0 -1
- package/dist/interfaces/batch-event-item.interface.d.ts.map +0 -1
- package/dist/interfaces/batch-event-item.interface.js.map +0 -1
- package/dist/interfaces/pending-message-info.interface.d.ts.map +0 -1
- package/dist/interfaces/pending-message-info.interface.js.map +0 -1
- package/dist/interfaces/post-processor-options.interface.d.ts +0 -11
- package/dist/interfaces/post-processor-options.interface.d.ts.map +0 -1
- package/dist/interfaces/post-processor-options.interface.js.map +0 -1
- package/dist/migrations/1776783577425-CreateJobsOutbox.d.ts.map +0 -1
- package/dist/migrations/1776783577425-CreateJobsOutbox.js.map +0 -1
- package/dist/migrations/1778328780881-InitialSchemaJobAudit.d.ts.map +0 -1
- package/dist/migrations/1778328780881-InitialSchemaJobAudit.js.map +0 -1
- /package/dist/core/{redis-stream.helper.js → helpers/redis-stream.helper.js} +0 -0
- /package/dist/interfaces/{batch-event-item.interface.js → processors/batch-event-item.interface.js} +0 -0
- /package/dist/interfaces/{pending-message-info.interface.d.ts → processors/pending-message-info.interface.d.ts} +0 -0
- /package/dist/interfaces/{pending-message-info.interface.js → processors/pending-message-info.interface.js} +0 -0
- /package/dist/interfaces/{post-processor-options.interface.js → processors/post-processor-options.interface.js} +0 -0
- /package/dist/{data-source.d.ts → test/data-source.d.ts} +0 -0
- /package/dist/{data-source.js → test/data-source.js} +0 -0
- /package/dist/{migrations → test/migrations}/1776783577425-CreateJobsOutbox.d.ts +0 -0
- /package/dist/{migrations → test/migrations}/1776783577425-CreateJobsOutbox.js +0 -0
- /package/dist/{migrations → test/migrations}/1778328780881-InitialSchemaJobAudit.d.ts +0 -0
- /package/dist/{migrations → test/migrations}/1778328780881-InitialSchemaJobAudit.js +0 -0
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { BasePostProcessor } from './base.post-processor.js';
|
|
2
|
+
import { RedisStreamHelper } from '../helpers/redis-stream.helper.js';
|
|
3
|
+
export class SinglePostProcessor extends BasePostProcessor {
|
|
4
|
+
async processEntries(entries) {
|
|
5
|
+
for (const entry of entries) {
|
|
6
|
+
await this.processSingleEntry(entry);
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
async processSingleEntry(entry) {
|
|
10
|
+
const { id, fields } = entry;
|
|
11
|
+
if (!fields.event) {
|
|
12
|
+
this.logger.warn('Stream message missing event payload, acknowledging and skipping', {
|
|
13
|
+
messageId: id,
|
|
14
|
+
});
|
|
15
|
+
await this.acknowledge(id);
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
if (!this.shouldProcess(fields.type ?? '')) {
|
|
19
|
+
this.logger.debug('Skipping message: type not registered/handled', {
|
|
20
|
+
messageId: id,
|
|
21
|
+
type: fields.type,
|
|
22
|
+
});
|
|
23
|
+
await this.acknowledge(id);
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
const ttl = this.options.idempotencyTtlSeconds;
|
|
27
|
+
if (ttl > 0 &&
|
|
28
|
+
!(await RedisStreamHelper.acquireIdempotencyLock(this.redis, this.options.groupName, id, ttl))) {
|
|
29
|
+
this.logger.warn('Message already processed or currently processing (idempotency block)', {
|
|
30
|
+
messageId: id,
|
|
31
|
+
});
|
|
32
|
+
await this.acknowledge(id);
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
await this.executeEventProcessing(id, fields.event, ttl > 0);
|
|
36
|
+
}
|
|
37
|
+
async executeEventProcessing(id, rawEvent, useIdempotency) {
|
|
38
|
+
try {
|
|
39
|
+
const event = JSON.parse(rawEvent);
|
|
40
|
+
if (typeof event !== 'object') {
|
|
41
|
+
throw new Error('Event payload must be a non-null object');
|
|
42
|
+
}
|
|
43
|
+
if (typeof event.id !== 'string' || event.id.trim() === '') {
|
|
44
|
+
throw new Error('Event payload is missing a valid string id');
|
|
45
|
+
}
|
|
46
|
+
if (typeof event.type !== 'string' || event.type.trim() === '') {
|
|
47
|
+
throw new Error('Event payload is missing a valid string type');
|
|
48
|
+
}
|
|
49
|
+
this.logger.info('Processing event', { messageId: id, eventId: event.id, type: event.type });
|
|
50
|
+
await this.processEvent(event, id);
|
|
51
|
+
this.circuitBreaker.recordSuccess();
|
|
52
|
+
await this.retryHelper.clearRetryData(this.redis, this.options.groupName, id);
|
|
53
|
+
await this.acknowledge(id);
|
|
54
|
+
this.logger.info('Successfully processed event', {
|
|
55
|
+
messageId: id,
|
|
56
|
+
eventId: event.id,
|
|
57
|
+
type: event.type,
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
catch (err) {
|
|
61
|
+
const error = err instanceof Error ? err : new Error(String(err));
|
|
62
|
+
this.logger.error('Failed to process event from stream', { messageId: id, error });
|
|
63
|
+
this.circuitBreaker.recordFailure();
|
|
64
|
+
await this.handleProcessingFailure(id, error, rawEvent, useIdempotency);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
async handleProcessingFailure(messageId, error, rawEvent, useIdempotency) {
|
|
68
|
+
try {
|
|
69
|
+
const attemptCount = await this.retryHelper.recordRetry(this.redis, this.options.groupName, messageId, error, this.options.idempotencyTtlSeconds);
|
|
70
|
+
if (this.retryHelper.shouldRetry(attemptCount)) {
|
|
71
|
+
await this.retryHelper.enqueueForRetry(this.redis, this.options.groupName, messageId, attemptCount);
|
|
72
|
+
const delayMs = this.retryHelper.calculateDelay(attemptCount);
|
|
73
|
+
this.logger.warn('Message scheduled for retry', {
|
|
74
|
+
messageId,
|
|
75
|
+
attemptCount,
|
|
76
|
+
delayMs,
|
|
77
|
+
nextRetryIn: new Date(Date.now() + delayMs).toISOString(),
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
const payloadFields = this.parsePayloadFields(rawEvent);
|
|
82
|
+
await this.sendMessageToDlq(messageId, payloadFields, error.message);
|
|
83
|
+
this.logger.error('Message max retries exceeded, sent to DLQ', {
|
|
84
|
+
messageId,
|
|
85
|
+
attemptCount,
|
|
86
|
+
maxRetries: this.options.retry.maxRetries,
|
|
87
|
+
});
|
|
88
|
+
await this.acknowledge(messageId);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
catch (retryErr) {
|
|
92
|
+
const retryError = retryErr instanceof Error ? retryErr : new Error(String(retryErr));
|
|
93
|
+
this.logger.error('Failed to handle retry logic', { messageId, error: retryError });
|
|
94
|
+
}
|
|
95
|
+
finally {
|
|
96
|
+
if (useIdempotency) {
|
|
97
|
+
await RedisStreamHelper.removeIdempotencyLock(this.redis, this.options.groupName, messageId);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
parsePayloadFields(rawEvent) {
|
|
102
|
+
try {
|
|
103
|
+
const event = JSON.parse(rawEvent);
|
|
104
|
+
return {
|
|
105
|
+
success: true,
|
|
106
|
+
type: event.type,
|
|
107
|
+
id: event.id,
|
|
108
|
+
payload: JSON.stringify(event),
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
catch {
|
|
112
|
+
return {
|
|
113
|
+
success: false,
|
|
114
|
+
error: 'Failed to parse event payload',
|
|
115
|
+
raw: rawEvent.substring(0, 200),
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=single.post-processor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"single.post-processor.js","sourceRoot":"","sources":["../../../src/core/processors/single.post-processor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { CircuitBreakerState } from '../../enums/circuit-breaker-state.enum.js';
|
|
2
|
+
import type { CircuitBreakerConfig } from '../../interfaces/validators/circuit-breaker-config.interface.js';
|
|
3
|
+
export declare class CircuitBreaker {
|
|
4
|
+
private state;
|
|
5
|
+
private failureCount;
|
|
6
|
+
private successCount;
|
|
7
|
+
private lastFailureTime;
|
|
8
|
+
private resetTimeout;
|
|
9
|
+
private readonly failureThreshold;
|
|
10
|
+
private readonly resetTimeoutMs;
|
|
11
|
+
private readonly successThreshold;
|
|
12
|
+
constructor(config: Required<CircuitBreakerConfig>);
|
|
13
|
+
recordSuccess(): void;
|
|
14
|
+
recordFailure(): void;
|
|
15
|
+
isAllowed(): boolean;
|
|
16
|
+
getState(): CircuitBreakerState;
|
|
17
|
+
getDiagnostics(): {
|
|
18
|
+
state: CircuitBreakerState;
|
|
19
|
+
failureCount: number;
|
|
20
|
+
successCount: number;
|
|
21
|
+
lastFailureTime: number | null;
|
|
22
|
+
};
|
|
23
|
+
reset(): void;
|
|
24
|
+
private open;
|
|
25
|
+
private transitionToHalfOpen;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=circuit-breaker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"circuit-breaker.d.ts","sourceRoot":"","sources":["../../../src/core/validators/circuit-breaker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AAChF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iEAAiE,CAAC;AAK5G,qBAAa,cAAc;IACzB,OAAO,CAAC,KAAK,CAAmD;IAChE,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,YAAY,CAA+B;IAEnD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;gBAE9B,MAAM,EAAE,QAAQ,CAAC,oBAAoB,CAAC;IASlD,aAAa,IAAI,IAAI;IAcrB,aAAa,IAAI,IAAI;IAcrB,SAAS,IAAI,OAAO;IAiBpB,QAAQ,IAAI,mBAAmB;IAI/B,cAAc,IAAI;QAChB,KAAK,EAAE,mBAAmB,CAAC;QAC3B,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,EAAE,MAAM,CAAC;QACrB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;KAChC;IASD,KAAK,IAAI,IAAI;IAWb,OAAO,CAAC,IAAI;IAKZ,OAAO,CAAC,oBAAoB;CAK7B"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { CircuitBreakerState } from '../../enums/circuit-breaker-state.enum.js';
|
|
2
|
+
export class CircuitBreaker {
|
|
3
|
+
state = CircuitBreakerState.CLOSED;
|
|
4
|
+
failureCount = 0;
|
|
5
|
+
successCount = 0;
|
|
6
|
+
lastFailureTime = null;
|
|
7
|
+
resetTimeout = null;
|
|
8
|
+
failureThreshold;
|
|
9
|
+
resetTimeoutMs;
|
|
10
|
+
successThreshold;
|
|
11
|
+
constructor(config) {
|
|
12
|
+
this.failureThreshold = config.failureThreshold;
|
|
13
|
+
this.resetTimeoutMs = config.resetTimeoutMs;
|
|
14
|
+
this.successThreshold = config.successThreshold;
|
|
15
|
+
}
|
|
16
|
+
recordSuccess() {
|
|
17
|
+
if (this.state === CircuitBreakerState.HALF_OPEN) {
|
|
18
|
+
this.successCount++;
|
|
19
|
+
if (this.successCount >= this.successThreshold) {
|
|
20
|
+
this.reset();
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
else if (this.state === CircuitBreakerState.CLOSED) {
|
|
24
|
+
this.failureCount = 0;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
recordFailure() {
|
|
28
|
+
this.failureCount++;
|
|
29
|
+
this.lastFailureTime = Date.now();
|
|
30
|
+
if (this.state === CircuitBreakerState.HALF_OPEN) {
|
|
31
|
+
this.open();
|
|
32
|
+
}
|
|
33
|
+
else if (this.state === CircuitBreakerState.CLOSED &&
|
|
34
|
+
this.failureCount >= this.failureThreshold) {
|
|
35
|
+
this.open();
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
isAllowed() {
|
|
39
|
+
if (this.state === CircuitBreakerState.CLOSED) {
|
|
40
|
+
return true;
|
|
41
|
+
}
|
|
42
|
+
if (this.state === CircuitBreakerState.OPEN) {
|
|
43
|
+
const timeSinceFailure = Date.now() - (this.lastFailureTime ?? Date.now());
|
|
44
|
+
if (timeSinceFailure >= this.resetTimeoutMs) {
|
|
45
|
+
this.transitionToHalfOpen();
|
|
46
|
+
return true;
|
|
47
|
+
}
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
return true;
|
|
51
|
+
}
|
|
52
|
+
getState() {
|
|
53
|
+
return this.state;
|
|
54
|
+
}
|
|
55
|
+
getDiagnostics() {
|
|
56
|
+
return {
|
|
57
|
+
state: this.state,
|
|
58
|
+
failureCount: this.failureCount,
|
|
59
|
+
successCount: this.successCount,
|
|
60
|
+
lastFailureTime: this.lastFailureTime,
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
reset() {
|
|
64
|
+
this.state = CircuitBreakerState.CLOSED;
|
|
65
|
+
this.failureCount = 0;
|
|
66
|
+
this.successCount = 0;
|
|
67
|
+
this.lastFailureTime = null;
|
|
68
|
+
if (this.resetTimeout) {
|
|
69
|
+
clearTimeout(this.resetTimeout);
|
|
70
|
+
this.resetTimeout = null;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
open() {
|
|
74
|
+
this.state = CircuitBreakerState.OPEN;
|
|
75
|
+
this.successCount = 0;
|
|
76
|
+
}
|
|
77
|
+
transitionToHalfOpen() {
|
|
78
|
+
this.state = CircuitBreakerState.HALF_OPEN;
|
|
79
|
+
this.successCount = 0;
|
|
80
|
+
this.failureCount = 0;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=circuit-breaker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"circuit-breaker.js","sourceRoot":"","sources":["../../../src/core/validators/circuit-breaker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/validators/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/validators/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"options-validator.d.ts","sourceRoot":"","sources":["../../../src/core/validators/options-validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAMtE,qBAAa,gBAAgB;IAC3B,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI;CA8JrD"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
export class OptionsValidator {
|
|
2
|
+
static validate(options) {
|
|
3
|
+
if (!options.streamName || options.streamName.trim() === '') {
|
|
4
|
+
throw new Error('PostProcessorOptions.streamName is required and must not be empty');
|
|
5
|
+
}
|
|
6
|
+
if (!options.groupName || options.groupName.trim() === '') {
|
|
7
|
+
throw new Error('PostProcessorOptions.groupName is required and must not be empty');
|
|
8
|
+
}
|
|
9
|
+
if (options.batchSize !== undefined) {
|
|
10
|
+
if (options.batchSize < 1 || options.batchSize > 10000) {
|
|
11
|
+
throw new Error(`PostProcessorOptions.batchSize must be between 1 and 10000, got ${String(options.batchSize)}`);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
if (options.blockMs !== undefined) {
|
|
15
|
+
if (options.blockMs < 0 || options.blockMs > 300000) {
|
|
16
|
+
throw new Error(`PostProcessorOptions.blockMs must be between 0 and 300000 (5 minutes), got ${String(options.blockMs)}`);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
if (options.claimIntervalMs !== undefined) {
|
|
20
|
+
if (options.claimIntervalMs < 10 || options.claimIntervalMs > 3600000) {
|
|
21
|
+
throw new Error(`PostProcessorOptions.claimIntervalMs must be between 10 and 3600000 (1 hour), got ${String(options.claimIntervalMs)}`);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
if (options.claimMinIdleTimeMs !== undefined) {
|
|
25
|
+
if (options.claimMinIdleTimeMs < 0 || options.claimMinIdleTimeMs > 3600000) {
|
|
26
|
+
throw new Error(`PostProcessorOptions.claimMinIdleTimeMs must be between 0 and 3600000 (1 hour), got ${String(options.claimMinIdleTimeMs)}`);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
if (options.idempotencyTtlSeconds !== undefined) {
|
|
30
|
+
if (options.idempotencyTtlSeconds < 0 || options.idempotencyTtlSeconds > 86400 * 365) {
|
|
31
|
+
throw new Error(`PostProcessorOptions.idempotencyTtlSeconds must be between 0 and 31536000 (1 year), got ${String(options.idempotencyTtlSeconds)}`);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
if (options.retry) {
|
|
35
|
+
if (options.retry.maxRetries !== undefined &&
|
|
36
|
+
(options.retry.maxRetries < 0 || options.retry.maxRetries > 100)) {
|
|
37
|
+
throw new Error(`PostProcessorOptions.retry.maxRetries must be between 0 and 100, got ${String(options.retry.maxRetries)}`);
|
|
38
|
+
}
|
|
39
|
+
if (options.retry.initialDelayMs !== undefined &&
|
|
40
|
+
(options.retry.initialDelayMs < 0 || options.retry.initialDelayMs > 3600000)) {
|
|
41
|
+
throw new Error(`PostProcessorOptions.retry.initialDelayMs must be between 0 and 3600000, got ${String(options.retry.initialDelayMs)}`);
|
|
42
|
+
}
|
|
43
|
+
if (options.retry.maxDelayMs !== undefined &&
|
|
44
|
+
(options.retry.maxDelayMs < 100 || options.retry.maxDelayMs > 86400000)) {
|
|
45
|
+
throw new Error(`PostProcessorOptions.retry.maxDelayMs must be between 100 and 86400000, got ${String(options.retry.maxDelayMs)}`);
|
|
46
|
+
}
|
|
47
|
+
if (options.retry.backoffMultiplier !== undefined &&
|
|
48
|
+
(options.retry.backoffMultiplier < 1 || options.retry.backoffMultiplier > 10)) {
|
|
49
|
+
throw new Error(`PostProcessorOptions.retry.backoffMultiplier must be between 1 and 10, got ${String(options.retry.backoffMultiplier)}`);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
if (options.circuitBreaker) {
|
|
53
|
+
if (options.circuitBreaker.failureThreshold !== undefined &&
|
|
54
|
+
(options.circuitBreaker.failureThreshold < 1 ||
|
|
55
|
+
options.circuitBreaker.failureThreshold > 100)) {
|
|
56
|
+
throw new Error(`PostProcessorOptions.circuitBreaker.failureThreshold must be between 1 and 100, got ${String(options.circuitBreaker.failureThreshold)}`);
|
|
57
|
+
}
|
|
58
|
+
if (options.circuitBreaker.resetTimeoutMs !== undefined &&
|
|
59
|
+
(options.circuitBreaker.resetTimeoutMs < 1000 ||
|
|
60
|
+
options.circuitBreaker.resetTimeoutMs > 3600000)) {
|
|
61
|
+
throw new Error(`PostProcessorOptions.circuitBreaker.resetTimeoutMs must be between 1000 and 3600000, got ${String(options.circuitBreaker.resetTimeoutMs)}`);
|
|
62
|
+
}
|
|
63
|
+
if (options.circuitBreaker.successThreshold !== undefined &&
|
|
64
|
+
(options.circuitBreaker.successThreshold < 1 ||
|
|
65
|
+
options.circuitBreaker.successThreshold > 100)) {
|
|
66
|
+
throw new Error(`PostProcessorOptions.circuitBreaker.successThreshold must be between 1 and 100, got ${String(options.circuitBreaker.successThreshold)}`);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
if (options.dynamicBatching) {
|
|
70
|
+
if (options.dynamicBatching.minBatchSize !== undefined &&
|
|
71
|
+
options.dynamicBatching.minBatchSize < 1) {
|
|
72
|
+
throw new Error(`PostProcessorOptions.dynamicBatching.minBatchSize must be at least 1, got ${String(options.dynamicBatching.minBatchSize)}`);
|
|
73
|
+
}
|
|
74
|
+
if (options.dynamicBatching.maxBatchSize !== undefined &&
|
|
75
|
+
options.dynamicBatching.maxBatchSize < 1) {
|
|
76
|
+
throw new Error(`PostProcessorOptions.dynamicBatching.maxBatchSize must be at least 1, got ${String(options.dynamicBatching.maxBatchSize)}`);
|
|
77
|
+
}
|
|
78
|
+
if (options.dynamicBatching.minBatchSize !== undefined &&
|
|
79
|
+
options.dynamicBatching.maxBatchSize !== undefined &&
|
|
80
|
+
options.dynamicBatching.minBatchSize > options.dynamicBatching.maxBatchSize) {
|
|
81
|
+
throw new Error(`PostProcessorOptions.dynamicBatching.minBatchSize (${String(options.dynamicBatching.minBatchSize)}) cannot be greater than maxBatchSize (${String(options.dynamicBatching.maxBatchSize)})`);
|
|
82
|
+
}
|
|
83
|
+
if (options.dynamicBatching.targetLatencyMs !== undefined &&
|
|
84
|
+
options.dynamicBatching.targetLatencyMs < 10) {
|
|
85
|
+
throw new Error(`PostProcessorOptions.dynamicBatching.targetLatencyMs must be at least 10, got ${String(options.dynamicBatching.targetLatencyMs)}`);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=options-validator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"options-validator.js","sourceRoot":"","sources":["../../../src/core/validators/options-validator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"circuit-breaker-state.enum.d.ts","sourceRoot":"","sources":["../../src/enums/circuit-breaker-state.enum.ts"],"names":[],"mappings":"AAIA,oBAAY,mBAAmB;IAC7B,MAAM,WAAW;IACjB,IAAI,SAAS;IACb,SAAS,cAAc;CACxB"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export var CircuitBreakerState;
|
|
2
|
+
(function (CircuitBreakerState) {
|
|
3
|
+
CircuitBreakerState["CLOSED"] = "CLOSED";
|
|
4
|
+
CircuitBreakerState["OPEN"] = "OPEN";
|
|
5
|
+
CircuitBreakerState["HALF_OPEN"] = "HALF_OPEN";
|
|
6
|
+
})(CircuitBreakerState || (CircuitBreakerState = {}));
|
|
7
|
+
//# sourceMappingURL=circuit-breaker-state.enum.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"circuit-breaker-state.enum.js","sourceRoot":"","sources":["../../src/enums/circuit-breaker-state.enum.ts"],"names":[],"mappings":"AAIA,MAAM,CAAN,IAAY,mBAIX;AAJD,WAAY,mBAAmB;IAC7B,wCAAiB,CAAA;IACjB,oCAAa,CAAA;IACb,8CAAuB,CAAA;AACzB,CAAC,EAJW,mBAAmB,KAAnB,mBAAmB,QAI9B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/enums/index.ts"],"names":[],"mappings":"AAAA,cAAc,iCAAiC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/enums/index.ts"],"names":[],"mappings":"AAAA,cAAc,iCAAiC,CAAC"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC"}
|
|
@@ -1,4 +1,8 @@
|
|
|
1
|
-
export type { PostProcessorOptions } from './post-processor-options.interface.js';
|
|
2
|
-
export type { BatchEventItem } from './batch-event-item.interface.js';
|
|
3
|
-
export type {
|
|
1
|
+
export type { PostProcessorOptions } from './processors/post-processor-options.interface.js';
|
|
2
|
+
export type { BatchEventItem } from './processors/batch-event-item.interface.js';
|
|
3
|
+
export type { CircuitBreakerConfig } from './validators/circuit-breaker-config.interface.js';
|
|
4
|
+
export type { NormalizedPostProcessorOptions } from './processors/normalized-post-processor-options.interface.js';
|
|
5
|
+
export type { PendingMessageInfo } from './processors/pending-message-info.interface.js';
|
|
6
|
+
export type { RetryMetadata } from './retry/retry-metadata.interface.js';
|
|
7
|
+
export type { RetryOptions } from './retry/retry-options.interface.js';
|
|
4
8
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/interfaces/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,oBAAoB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/interfaces/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,oBAAoB,EAAE,MAAM,kDAAkD,CAAC;AAC7F,YAAY,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AACjF,YAAY,EAAE,oBAAoB,EAAE,MAAM,kDAAkD,CAAC;AAC7F,YAAY,EAAE,8BAA8B,EAAE,MAAM,6DAA6D,CAAC;AAClH,YAAY,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AACzF,YAAY,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACzE,YAAY,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { EventMessagingType, EventRegistry, StreamEvent } from '@volontariapp/messaging';
|
|
2
|
-
import type { ExtractPayload } from '
|
|
2
|
+
import type { ExtractPayload } from '../../types/post-processor.types.js';
|
|
3
3
|
export interface BatchEventItem<TKey extends EventMessagingType = EventMessagingType> {
|
|
4
4
|
event: StreamEvent<ExtractPayload<EventRegistry[TKey]>>;
|
|
5
5
|
messageId: string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"batch-event-item.interface.d.ts","sourceRoot":"","sources":["../../../src/interfaces/processors/batch-event-item.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC9F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAE1E,MAAM,WAAW,cAAc,CAAC,IAAI,SAAS,kBAAkB,GAAG,kBAAkB;IAClF,KAAK,EAAE,WAAW,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACxD,SAAS,EAAE,MAAM,CAAC;CACnB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"batch-event-item.interface.js","sourceRoot":"","sources":["../../../src/interfaces/processors/batch-event-item.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { PostProcessorOptions } from './post-processor-options.interface.js';
|
|
2
|
+
import type { RetryOptions } from '../retry/retry-options.interface.js';
|
|
3
|
+
export interface NormalizedPostProcessorOptions extends Required<PostProcessorOptions> {
|
|
4
|
+
retry: Required<RetryOptions>;
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=normalized-post-processor-options.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalized-post-processor-options.interface.d.ts","sourceRoot":"","sources":["../../../src/interfaces/processors/normalized-post-processor-options.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAClF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAMxE,MAAM,WAAW,8BAA+B,SAAQ,QAAQ,CAAC,oBAAoB,CAAC;IAIpF,KAAK,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC;CAC/B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalized-post-processor-options.interface.js","sourceRoot":"","sources":["../../../src/interfaces/processors/normalized-post-processor-options.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pending-message-info.interface.d.ts","sourceRoot":"","sources":["../../../src/interfaces/processors/pending-message-info.interface.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;CACvB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pending-message-info.interface.js","sourceRoot":"","sources":["../../../src/interfaces/processors/pending-message-info.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { CircuitBreakerConfig } from '../validators/circuit-breaker-config.interface.js';
|
|
2
|
+
import type { RetryOptions } from '../retry/retry-options.interface.js';
|
|
3
|
+
export interface PostProcessorOptions {
|
|
4
|
+
streamName: string;
|
|
5
|
+
groupName: string;
|
|
6
|
+
consumerName?: string;
|
|
7
|
+
batchSize?: number;
|
|
8
|
+
blockMs?: number;
|
|
9
|
+
claimIntervalMs?: number;
|
|
10
|
+
claimMinIdleTimeMs?: number;
|
|
11
|
+
idempotencyTtlSeconds?: number;
|
|
12
|
+
retry?: RetryOptions;
|
|
13
|
+
circuitBreaker?: CircuitBreakerConfig;
|
|
14
|
+
dynamicBatching?: {
|
|
15
|
+
enabled?: boolean;
|
|
16
|
+
minBatchSize?: number;
|
|
17
|
+
maxBatchSize?: number;
|
|
18
|
+
targetLatencyMs?: number;
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=post-processor-options.interface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"post-processor-options.interface.d.ts","sourceRoot":"","sources":["../../../src/interfaces/processors/post-processor-options.interface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mDAAmD,CAAC;AAC9F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAExE,MAAM,WAAW,oBAAoB;IAInC,UAAU,EAAE,MAAM,CAAC;IAKnB,SAAS,EAAE,MAAM,CAAC;IAMlB,YAAY,CAAC,EAAE,MAAM,CAAC;IAMtB,SAAS,CAAC,EAAE,MAAM,CAAC;IAMnB,OAAO,CAAC,EAAE,MAAM,CAAC;IAMjB,eAAe,CAAC,EAAE,MAAM,CAAC;IAMzB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAO5B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAM/B,KAAK,CAAC,EAAE,YAAY,CAAC;IAMrB,cAAc,CAAC,EAAE,oBAAoB,CAAC;IAKtC,eAAe,CAAC,EAAE;QAKhB,OAAO,CAAC,EAAE,OAAO,CAAC;QAKlB,YAAY,CAAC,EAAE,MAAM,CAAC;QAKtB,YAAY,CAAC,EAAE,MAAM,CAAC;QAKtB,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,CAAC;CACH"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"post-processor-options.interface.js","sourceRoot":"","sources":["../../../src/interfaces/processors/post-processor-options.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retry-metadata.interface.d.ts","sourceRoot":"","sources":["../../../src/interfaces/retry/retry-metadata.interface.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,aAAa;IAI5B,YAAY,EAAE,MAAM,CAAC;IAKrB,kBAAkB,EAAE,MAAM,CAAC;IAK3B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retry-metadata.interface.js","sourceRoot":"","sources":["../../../src/interfaces/retry/retry-metadata.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retry-options.interface.d.ts","sourceRoot":"","sources":["../../../src/interfaces/retry/retry-options.interface.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,YAAY;IAK3B,UAAU,CAAC,EAAE,MAAM,CAAC;IAMpB,cAAc,CAAC,EAAE,MAAM,CAAC;IAMxB,UAAU,CAAC,EAAE,MAAM,CAAC;IAOpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAO3B,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retry-options.interface.js","sourceRoot":"","sources":["../../../src/interfaces/retry/retry-options.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"circuit-breaker-config.interface.d.ts","sourceRoot":"","sources":["../../../src/interfaces/validators/circuit-breaker-config.interface.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,oBAAoB;IAKnC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAM1B,cAAc,CAAC,EAAE,MAAM,CAAC;IAMxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"circuit-breaker-config.interface.js","sourceRoot":"","sources":["../../../src/interfaces/validators/circuit-breaker-config.interface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-source.d.ts","sourceRoot":"","sources":["../../src/test/data-source.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAKrC,eAAO,MAAM,cAAc,YAWzB,CAAC;AAEH,eAAO,MAAM,gBAAgB,qBAU5B,CAAC;AAEF,eAAO,MAAM,WAAW,qBAIvB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-source.js","sourceRoot":"","sources":["../../src/test/data-source.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,EAAE,kCAAkC,EAAE,MAAM,qDAAqD,CAAC;AACzG,OAAO,EAAE,6BAA6B,EAAE,MAAM,gDAAgD,CAAC;AAE/F,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,UAAU,CAAC;IAC3C,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,WAAW;IACjB,IAAI,EAAE,IAAI;IACV,QAAQ,EAAE,UAAU;IACpB,QAAQ,EAAE,cAAc;IACxB,QAAQ,EAAE,mBAAmB;IAC7B,QAAQ,EAAE,CAAC,aAAa,EAAE,eAAe,CAAC;IAC1C,UAAU,EAAE,CAAC,6BAA6B,EAAE,kCAAkC,CAAC;IAC/E,WAAW,EAAE,KAAK;IAClB,OAAO,EAAE,KAAK;CACf,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,IAAI,EAAE;IACzC,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC;QAClC,MAAM,cAAc,CAAC,UAAU,EAAE,CAAC;QAClC,MAAM,WAAW,GAAG,cAAc,CAAC,iBAAiB,EAAE,CAAC;QACvD,MAAM,WAAW,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QAC/C,MAAM,WAAW,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QACjD,MAAM,WAAW,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QAChD,MAAM,WAAW,CAAC,OAAO,EAAE,CAAC;QAC5B,MAAM,cAAc,CAAC,aAAa,EAAE,CAAC;IACvC,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,IAAI,EAAE;IACpC,IAAI,cAAc,CAAC,aAAa,EAAE,CAAC;QACjC,MAAM,cAAc,CAAC,OAAO,EAAE,CAAC;IACjC,CAAC;AACH,CAAC,CAAC"}
|