pp-command-bus 1.5.0 → 2.0.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/README.md +400 -1219
- package/dist/command-bus/command-bus.spec.js +138 -359
- package/dist/command-bus/command-bus.spec.js.map +1 -1
- package/dist/command-bus/command.d.ts +3 -4
- package/dist/command-bus/command.js +3 -32
- package/dist/command-bus/command.js.map +1 -1
- package/dist/command-bus/config/command-bus-config.d.ts +75 -21
- package/dist/command-bus/config/command-bus-config.js +99 -58
- package/dist/command-bus/config/command-bus-config.js.map +1 -1
- package/dist/command-bus/config/command-bus-config.spec.js +174 -100
- package/dist/command-bus/config/command-bus-config.spec.js.map +1 -1
- package/dist/command-bus/index.d.ts +39 -52
- package/dist/command-bus/index.js +133 -126
- package/dist/command-bus/index.js.map +1 -1
- package/dist/command-bus/logging/command-logger.d.ts +2 -0
- package/dist/command-bus/logging/command-logger.js +7 -0
- package/dist/command-bus/logging/command-logger.js.map +1 -1
- package/dist/command-bus/logging/command-logger.spec.js +36 -0
- package/dist/command-bus/logging/command-logger.spec.js.map +1 -1
- package/dist/command-bus/serialization/index.d.ts +6 -0
- package/dist/command-bus/serialization/index.js +9 -0
- package/dist/command-bus/serialization/index.js.map +1 -0
- package/dist/command-bus/serialization/msgpack-serializer.d.ts +26 -0
- package/dist/command-bus/serialization/msgpack-serializer.js +70 -0
- package/dist/command-bus/serialization/msgpack-serializer.js.map +1 -0
- package/dist/command-bus/serialization/msgpack-serializer.spec.js +223 -0
- package/dist/command-bus/serialization/msgpack-serializer.spec.js.map +1 -0
- package/dist/command-bus/serialization/serializer.interface.d.ts +21 -0
- package/dist/command-bus/serialization/serializer.interface.js +3 -0
- package/dist/command-bus/serialization/serializer.interface.js.map +1 -0
- package/dist/command-bus/transport/consumer-loop.d.ts +45 -0
- package/dist/command-bus/transport/consumer-loop.js +90 -0
- package/dist/command-bus/transport/consumer-loop.js.map +1 -0
- package/dist/command-bus/transport/consumer-loop.spec.js +216 -0
- package/dist/command-bus/transport/consumer-loop.spec.js.map +1 -0
- package/dist/command-bus/transport/index.d.ts +21 -0
- package/dist/command-bus/transport/index.js +23 -0
- package/dist/command-bus/transport/index.js.map +1 -0
- package/dist/command-bus/transport/message-processor.d.ts +59 -0
- package/dist/command-bus/transport/message-processor.js +111 -0
- package/dist/command-bus/transport/message-processor.js.map +1 -0
- package/dist/command-bus/transport/message-processor.spec.js +185 -0
- package/dist/command-bus/transport/message-processor.spec.js.map +1 -0
- package/dist/command-bus/transport/pending-recovery.d.ts +54 -0
- package/dist/command-bus/transport/pending-recovery.js +139 -0
- package/dist/command-bus/transport/pending-recovery.js.map +1 -0
- package/dist/command-bus/transport/pending-recovery.spec.js +176 -0
- package/dist/command-bus/transport/pending-recovery.spec.js.map +1 -0
- package/dist/command-bus/transport/redis-codec.d.ts +24 -0
- package/dist/command-bus/transport/redis-codec.js +33 -0
- package/dist/command-bus/transport/redis-codec.js.map +1 -0
- package/dist/command-bus/transport/redis-codec.spec.js +53 -0
- package/dist/command-bus/transport/redis-codec.spec.js.map +1 -0
- package/dist/command-bus/transport/redis-streams-transport.d.ts +91 -0
- package/dist/command-bus/transport/redis-streams-transport.js +134 -0
- package/dist/command-bus/transport/redis-streams-transport.js.map +1 -0
- package/dist/command-bus/transport/redis-streams-transport.spec.js +420 -0
- package/dist/command-bus/transport/redis-streams-transport.spec.js.map +1 -0
- package/dist/command-bus/transport/rpc-handler.d.ts +39 -0
- package/dist/command-bus/transport/rpc-handler.js +87 -0
- package/dist/command-bus/transport/rpc-handler.js.map +1 -0
- package/dist/command-bus/transport/rpc-handler.spec.js +157 -0
- package/dist/command-bus/transport/rpc-handler.spec.js.map +1 -0
- package/dist/command-bus/transport/stream-consumer.d.ts +89 -0
- package/dist/command-bus/transport/stream-consumer.js +181 -0
- package/dist/command-bus/transport/stream-consumer.js.map +1 -0
- package/dist/command-bus/transport/stream-consumer.spec.js +284 -0
- package/dist/command-bus/transport/stream-consumer.spec.js.map +1 -0
- package/dist/command-bus/transport/stream-producer.d.ts +23 -0
- package/dist/command-bus/transport/stream-producer.js +70 -0
- package/dist/command-bus/transport/stream-producer.js.map +1 -0
- package/dist/command-bus/transport/stream-producer.spec.js +125 -0
- package/dist/command-bus/transport/stream-producer.spec.js.map +1 -0
- package/dist/command-bus/transport/transport.interface.d.ts +87 -0
- package/dist/command-bus/transport/transport.interface.js +3 -0
- package/dist/command-bus/transport/transport.interface.js.map +1 -0
- package/dist/command-bus/types/index.d.ts +0 -84
- package/dist/examples/rpc.demo.js +1 -1
- package/dist/examples/rpc.demo.js.map +1 -1
- package/dist/index.d.ts +8 -5
- package/dist/index.js +6 -4
- package/dist/index.js.map +1 -1
- package/dist/pp-command-bus-2.0.0.tgz +0 -0
- package/dist/shared/redis/connection-pool.d.ts +54 -0
- package/dist/shared/redis/connection-pool.js +117 -0
- package/dist/shared/redis/connection-pool.js.map +1 -0
- package/dist/shared/redis/connection-pool.spec.js +114 -0
- package/dist/shared/redis/connection-pool.spec.js.map +1 -0
- package/dist/shared/redis/index.d.ts +5 -3
- package/dist/shared/redis/index.js +6 -4
- package/dist/shared/redis/index.js.map +1 -1
- package/dist/shared/redis/rpc-connection-pool.d.ts +61 -0
- package/dist/shared/redis/rpc-connection-pool.js +154 -0
- package/dist/shared/redis/rpc-connection-pool.js.map +1 -0
- package/dist/shared/redis/rpc-connection-pool.spec.d.ts +1 -0
- package/dist/shared/redis/rpc-connection-pool.spec.js +173 -0
- package/dist/shared/redis/rpc-connection-pool.spec.js.map +1 -0
- package/dist/shared/types.d.ts +0 -4
- package/dist/shared/utils/error-utils.d.ts +8 -0
- package/dist/shared/utils/error-utils.js +14 -0
- package/dist/shared/utils/error-utils.js.map +1 -0
- package/package.json +12 -12
- package/dist/command-bus/config/auto-config-optimizer.d.ts +0 -35
- package/dist/command-bus/config/auto-config-optimizer.js +0 -52
- package/dist/command-bus/config/auto-config-optimizer.js.map +0 -1
- package/dist/command-bus/config/auto-config-optimizer.spec.js +0 -42
- package/dist/command-bus/config/auto-config-optimizer.spec.js.map +0 -1
- package/dist/command-bus/job/index.d.ts +0 -6
- package/dist/command-bus/job/index.js +0 -15
- package/dist/command-bus/job/index.js.map +0 -1
- package/dist/command-bus/job/job-options-builder.d.ts +0 -21
- package/dist/command-bus/job/job-options-builder.js +0 -58
- package/dist/command-bus/job/job-options-builder.js.map +0 -1
- package/dist/command-bus/job/job-options-builder.spec.js +0 -156
- package/dist/command-bus/job/job-options-builder.spec.js.map +0 -1
- package/dist/command-bus/job/job-processor.d.ts +0 -39
- package/dist/command-bus/job/job-processor.js +0 -203
- package/dist/command-bus/job/job-processor.js.map +0 -1
- package/dist/command-bus/job/job-processor.spec.js +0 -436
- package/dist/command-bus/job/job-processor.spec.js.map +0 -1
- package/dist/command-bus/queue/index.d.ts +0 -5
- package/dist/command-bus/queue/index.js +0 -13
- package/dist/command-bus/queue/index.js.map +0 -1
- package/dist/command-bus/queue/queue-manager.d.ts +0 -56
- package/dist/command-bus/queue/queue-manager.js +0 -163
- package/dist/command-bus/queue/queue-manager.js.map +0 -1
- package/dist/command-bus/queue/queue-manager.spec.js +0 -371
- package/dist/command-bus/queue/queue-manager.spec.js.map +0 -1
- package/dist/command-bus/rpc/index.d.ts +0 -11
- package/dist/command-bus/rpc/index.js +0 -19
- package/dist/command-bus/rpc/index.js.map +0 -1
- package/dist/command-bus/rpc/payload-compression.service.d.ts +0 -50
- package/dist/command-bus/rpc/payload-compression.service.js +0 -215
- package/dist/command-bus/rpc/payload-compression.service.js.map +0 -1
- package/dist/command-bus/rpc/payload-compression.service.spec.js +0 -376
- package/dist/command-bus/rpc/payload-compression.service.spec.js.map +0 -1
- package/dist/command-bus/rpc/rpc-coordinator.d.ts +0 -96
- package/dist/command-bus/rpc/rpc-coordinator.js +0 -500
- package/dist/command-bus/rpc/rpc-coordinator.js.map +0 -1
- package/dist/command-bus/rpc/rpc-coordinator.spec.js +0 -621
- package/dist/command-bus/rpc/rpc-coordinator.spec.js.map +0 -1
- package/dist/command-bus/rpc/rpc-job-cancellation.service.d.ts +0 -82
- package/dist/command-bus/rpc/rpc-job-cancellation.service.js +0 -180
- package/dist/command-bus/rpc/rpc-job-cancellation.service.js.map +0 -1
- package/dist/command-bus/rpc/rpc-job-cancellation.service.spec.js +0 -286
- package/dist/command-bus/rpc/rpc-job-cancellation.service.spec.js.map +0 -1
- package/dist/command-bus/worker/index.d.ts +0 -10
- package/dist/command-bus/worker/index.js +0 -19
- package/dist/command-bus/worker/index.js.map +0 -1
- package/dist/command-bus/worker/worker-benchmark.d.ts +0 -71
- package/dist/command-bus/worker/worker-benchmark.js +0 -202
- package/dist/command-bus/worker/worker-benchmark.js.map +0 -1
- package/dist/command-bus/worker/worker-benchmark.spec.js +0 -310
- package/dist/command-bus/worker/worker-benchmark.spec.js.map +0 -1
- package/dist/command-bus/worker/worker-metrics-collector.d.ts +0 -98
- package/dist/command-bus/worker/worker-metrics-collector.js +0 -242
- package/dist/command-bus/worker/worker-metrics-collector.js.map +0 -1
- package/dist/command-bus/worker/worker-orchestrator.d.ts +0 -70
- package/dist/command-bus/worker/worker-orchestrator.js +0 -339
- package/dist/command-bus/worker/worker-orchestrator.js.map +0 -1
- package/dist/command-bus/worker/worker-orchestrator.spec.js +0 -712
- package/dist/command-bus/worker/worker-orchestrator.spec.js.map +0 -1
- package/dist/examples/auto-config.demo.d.ts +0 -9
- package/dist/examples/auto-config.demo.js +0 -106
- package/dist/examples/auto-config.demo.js.map +0 -1
- package/dist/examples/rpc-compression.demo.d.ts +0 -5
- package/dist/examples/rpc-compression.demo.js +0 -358
- package/dist/examples/rpc-compression.demo.js.map +0 -1
- package/dist/examples/rpc-resilience.demo.d.ts +0 -15
- package/dist/examples/rpc-resilience.demo.js +0 -233
- package/dist/examples/rpc-resilience.demo.js.map +0 -1
- package/dist/pp-command-bus-1.5.0.tgz +0 -0
- package/dist/shared/config/base-config.d.ts +0 -54
- package/dist/shared/config/base-config.js +0 -114
- package/dist/shared/config/base-config.js.map +0 -1
- package/dist/shared/config/base-config.spec.js +0 -204
- package/dist/shared/config/base-config.spec.js.map +0 -1
- package/dist/shared/config/index.d.ts +0 -1
- package/dist/shared/config/index.js +0 -9
- package/dist/shared/config/index.js.map +0 -1
- package/dist/shared/redis/redis-connection-factory.d.ts +0 -66
- package/dist/shared/redis/redis-connection-factory.js +0 -113
- package/dist/shared/redis/redis-connection-factory.js.map +0 -1
- /package/dist/command-bus/{config/auto-config-optimizer.spec.d.ts → serialization/msgpack-serializer.spec.d.ts} +0 -0
- /package/dist/command-bus/{job/job-options-builder.spec.d.ts → transport/consumer-loop.spec.d.ts} +0 -0
- /package/dist/command-bus/{job/job-processor.spec.d.ts → transport/message-processor.spec.d.ts} +0 -0
- /package/dist/command-bus/{queue/queue-manager.spec.d.ts → transport/pending-recovery.spec.d.ts} +0 -0
- /package/dist/command-bus/{rpc/payload-compression.service.spec.d.ts → transport/redis-codec.spec.d.ts} +0 -0
- /package/dist/command-bus/{rpc/rpc-coordinator.spec.d.ts → transport/redis-streams-transport.spec.d.ts} +0 -0
- /package/dist/command-bus/{rpc/rpc-job-cancellation.service.spec.d.ts → transport/rpc-handler.spec.d.ts} +0 -0
- /package/dist/command-bus/{worker/worker-benchmark.spec.d.ts → transport/stream-consumer.spec.d.ts} +0 -0
- /package/dist/command-bus/{worker/worker-orchestrator.spec.d.ts → transport/stream-producer.spec.d.ts} +0 -0
- /package/dist/shared/{config/base-config.spec.d.ts → redis/connection-pool.spec.d.ts} +0 -0
|
@@ -1,163 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
const bullmq_1 = require("bullmq");
|
|
13
|
-
/**
|
|
14
|
-
* Zarządza cyklem życia kolejek BullMQ i cache'em kolejek
|
|
15
|
-
* Cache zapobiega tworzeniu wielu instancji Queue dla tej samej komendy
|
|
16
|
-
*/
|
|
17
|
-
class QueueManager {
|
|
18
|
-
constructor(redisConnection, logger) {
|
|
19
|
-
this.redisConnection = redisConnection;
|
|
20
|
-
this.logger = logger;
|
|
21
|
-
/**
|
|
22
|
-
* Cache kolejek - Map<queueName, Queue>
|
|
23
|
-
* Pozwala na reużycie tej samej instancji Queue dla danej komendy
|
|
24
|
-
*/
|
|
25
|
-
this.queueCache = new Map();
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Pobiera lub tworzy kolejkę dla danego typu komendy
|
|
29
|
-
* Używa cache dla optymalizacji pamięci - reużywa instancje Queue
|
|
30
|
-
* @param commandName - Nazwa komendy
|
|
31
|
-
* @param connection - Połączenie Redis (opcjonalne)
|
|
32
|
-
* @returns Instancja Queue (z cache lub nowo utworzona)
|
|
33
|
-
*/
|
|
34
|
-
getOrCreateQueue(commandName, connection) {
|
|
35
|
-
const cacheKey = commandName;
|
|
36
|
-
// Sprawdź cache
|
|
37
|
-
if (this.queueCache.has(cacheKey)) {
|
|
38
|
-
this.logger.debug('Kolejka pobrana z cache', {
|
|
39
|
-
commandName,
|
|
40
|
-
timestamp: new Date().toISOString(),
|
|
41
|
-
});
|
|
42
|
-
return this.queueCache.get(cacheKey);
|
|
43
|
-
}
|
|
44
|
-
// Utwórz nową kolejkę
|
|
45
|
-
this.logger.debug('Tworzenie nowej kolejki', {
|
|
46
|
-
commandName,
|
|
47
|
-
timestamp: new Date().toISOString(),
|
|
48
|
-
});
|
|
49
|
-
const queue = new bullmq_1.Queue(`{${commandName}}`, {
|
|
50
|
-
connection: connection !== null && connection !== void 0 ? connection : this.redisConnection,
|
|
51
|
-
});
|
|
52
|
-
// Dodaj do cache
|
|
53
|
-
this.queueCache.set(cacheKey, queue);
|
|
54
|
-
return queue;
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Tworzy kolejkę dla danego typu komendy (bez cache)
|
|
58
|
-
* Używane dla tymczasowych kolejek (np. RPC reply queues)
|
|
59
|
-
* @param commandName - Nazwa komendy
|
|
60
|
-
* @param connection - Połączenie Redis (opcjonalne)
|
|
61
|
-
*/
|
|
62
|
-
createQueue(commandName, connection) {
|
|
63
|
-
this.logger.debug('Tworzenie tymczasowej kolejki (bez cache)', {
|
|
64
|
-
commandName,
|
|
65
|
-
timestamp: new Date().toISOString(),
|
|
66
|
-
});
|
|
67
|
-
return new bullmq_1.Queue(`{${commandName}}`, {
|
|
68
|
-
connection: connection !== null && connection !== void 0 ? connection : this.redisConnection,
|
|
69
|
-
});
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Sprawdza czy kolejka BullMQ istnieje w Redis
|
|
73
|
-
* @param queueName - Nazwa kolejki do sprawdzenia
|
|
74
|
-
* @returns true jeśli kolejka istnieje, false w przeciwnym razie
|
|
75
|
-
*/
|
|
76
|
-
queueExists(queueName) {
|
|
77
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
78
|
-
try {
|
|
79
|
-
const metaKey = `bull:{${queueName}}:meta`;
|
|
80
|
-
const exists = yield this.redisConnection.exists(metaKey);
|
|
81
|
-
return exists === 1;
|
|
82
|
-
}
|
|
83
|
-
catch (error) {
|
|
84
|
-
this.logger.warn('Błąd podczas sprawdzania istnienia kolejki', {
|
|
85
|
-
queueName,
|
|
86
|
-
error: error instanceof Error ? error.message : String(error),
|
|
87
|
-
timestamp: new Date().toISOString(),
|
|
88
|
-
});
|
|
89
|
-
return false;
|
|
90
|
-
}
|
|
91
|
-
});
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* Zamyka kolejkę i usuwa ją z cache
|
|
95
|
-
* Używane do explicite zamykania kolejek dla optymalizacji pamięci
|
|
96
|
-
* @param commandName - Nazwa komendy
|
|
97
|
-
*/
|
|
98
|
-
closeQueue(commandName) {
|
|
99
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
100
|
-
const queue = this.queueCache.get(commandName);
|
|
101
|
-
if (!queue) {
|
|
102
|
-
this.logger.debug('Kolejka nie istnieje w cache - pomijam zamykanie', {
|
|
103
|
-
commandName,
|
|
104
|
-
timestamp: new Date().toISOString(),
|
|
105
|
-
});
|
|
106
|
-
return;
|
|
107
|
-
}
|
|
108
|
-
try {
|
|
109
|
-
yield queue.close();
|
|
110
|
-
this.queueCache.delete(commandName);
|
|
111
|
-
this.logger.debug('Kolejka zamknięta i usunięta z cache', {
|
|
112
|
-
commandName,
|
|
113
|
-
timestamp: new Date().toISOString(),
|
|
114
|
-
});
|
|
115
|
-
}
|
|
116
|
-
catch (error) {
|
|
117
|
-
this.logger.warn('Błąd podczas zamykania kolejki', {
|
|
118
|
-
commandName,
|
|
119
|
-
error: error instanceof Error ? error.message : String(error),
|
|
120
|
-
timestamp: new Date().toISOString(),
|
|
121
|
-
});
|
|
122
|
-
}
|
|
123
|
-
});
|
|
124
|
-
}
|
|
125
|
-
/**
|
|
126
|
-
* Zamyka wszystkie kolejki w cache
|
|
127
|
-
* Używane podczas shutdown CommandBus
|
|
128
|
-
*/
|
|
129
|
-
closeAllQueues() {
|
|
130
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
131
|
-
this.logger.debug('Zamykanie wszystkich kolejek z cache', {
|
|
132
|
-
count: this.queueCache.size,
|
|
133
|
-
timestamp: new Date().toISOString(),
|
|
134
|
-
});
|
|
135
|
-
const closePromises = [];
|
|
136
|
-
for (const [commandName, queue] of this.queueCache.entries()) {
|
|
137
|
-
closePromises.push(queue.close().catch((error) => {
|
|
138
|
-
this.logger.warn('Błąd podczas zamykania kolejki', {
|
|
139
|
-
commandName,
|
|
140
|
-
error: error instanceof Error ? error.message : String(error),
|
|
141
|
-
timestamp: new Date().toISOString(),
|
|
142
|
-
});
|
|
143
|
-
}));
|
|
144
|
-
}
|
|
145
|
-
yield Promise.all(closePromises);
|
|
146
|
-
this.queueCache.clear();
|
|
147
|
-
this.logger.debug('Wszystkie kolejki zamknięte', {
|
|
148
|
-
timestamp: new Date().toISOString(),
|
|
149
|
-
});
|
|
150
|
-
});
|
|
151
|
-
}
|
|
152
|
-
/**
|
|
153
|
-
* Zwraca statystyki cache kolejek (dla diagnostyki)
|
|
154
|
-
*/
|
|
155
|
-
getCacheStats() {
|
|
156
|
-
return {
|
|
157
|
-
cachedQueuesCount: this.queueCache.size,
|
|
158
|
-
queueNames: Array.from(this.queueCache.keys()),
|
|
159
|
-
};
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
exports.default = QueueManager;
|
|
163
|
-
//# sourceMappingURL=queue-manager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"queue-manager.js","sourceRoot":"","sources":["../../../src/command-bus/queue/queue-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,371 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
-
};
|
|
14
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
const queue_manager_1 = __importDefault(require("./queue-manager"));
|
|
16
|
-
const bullmq_1 = require("bullmq");
|
|
17
|
-
// Mock BullMQ Queue
|
|
18
|
-
jest.mock('bullmq');
|
|
19
|
-
describe('QueueManager', () => {
|
|
20
|
-
let queueManager;
|
|
21
|
-
let mockRedisConnection;
|
|
22
|
-
let mockLogger;
|
|
23
|
-
beforeEach(() => {
|
|
24
|
-
jest.clearAllMocks();
|
|
25
|
-
// Mock Redis connection
|
|
26
|
-
mockRedisConnection = {};
|
|
27
|
-
// Mock logger
|
|
28
|
-
mockLogger = {
|
|
29
|
-
log: jest.fn(),
|
|
30
|
-
error: jest.fn(),
|
|
31
|
-
warn: jest.fn(),
|
|
32
|
-
debug: jest.fn(),
|
|
33
|
-
};
|
|
34
|
-
queueManager = new queue_manager_1.default(mockRedisConnection, mockLogger);
|
|
35
|
-
});
|
|
36
|
-
describe('konstruktor', () => {
|
|
37
|
-
it('powinno utworzyć instancję z poprawnymi parametrami', () => {
|
|
38
|
-
// When
|
|
39
|
-
const manager = new queue_manager_1.default(mockRedisConnection, mockLogger);
|
|
40
|
-
// Then
|
|
41
|
-
expect(manager).toBeDefined();
|
|
42
|
-
expect(manager).toBeInstanceOf(queue_manager_1.default);
|
|
43
|
-
});
|
|
44
|
-
it('powinno zachować przekazane zależności', () => {
|
|
45
|
-
// Given
|
|
46
|
-
const customRedis = {};
|
|
47
|
-
const customLogger = {
|
|
48
|
-
log: jest.fn(),
|
|
49
|
-
error: jest.fn(),
|
|
50
|
-
warn: jest.fn(),
|
|
51
|
-
debug: jest.fn(),
|
|
52
|
-
};
|
|
53
|
-
// When
|
|
54
|
-
const manager = new queue_manager_1.default(customRedis, customLogger);
|
|
55
|
-
// Then
|
|
56
|
-
expect(manager).toBeDefined();
|
|
57
|
-
// Tworzymy kolejkę aby sprawdzić czy używa przekazanych parametrów
|
|
58
|
-
manager.createQueue('test-command');
|
|
59
|
-
expect(bullmq_1.Queue).toHaveBeenCalledWith('{test-command}', {
|
|
60
|
-
connection: customRedis,
|
|
61
|
-
});
|
|
62
|
-
});
|
|
63
|
-
});
|
|
64
|
-
describe('createQueue', () => {
|
|
65
|
-
it('powinno utworzyć kolejkę BullMQ z poprawną nazwą', () => {
|
|
66
|
-
// Given
|
|
67
|
-
const commandName = 'TestCommand';
|
|
68
|
-
// When
|
|
69
|
-
queueManager.createQueue(commandName);
|
|
70
|
-
// Then
|
|
71
|
-
expect(bullmq_1.Queue).toHaveBeenCalledWith(`{${commandName}}`, expect.any(Object));
|
|
72
|
-
});
|
|
73
|
-
it('powinno użyć przekazanego Redis connection', () => {
|
|
74
|
-
// Given
|
|
75
|
-
const commandName = 'TestCommand';
|
|
76
|
-
// When
|
|
77
|
-
queueManager.createQueue(commandName);
|
|
78
|
-
// Then
|
|
79
|
-
expect(bullmq_1.Queue).toHaveBeenCalledWith(`{${commandName}}`, {
|
|
80
|
-
connection: mockRedisConnection,
|
|
81
|
-
});
|
|
82
|
-
});
|
|
83
|
-
it('powinno zalogować informację o tworzeniu tymczasowej kolejki', () => {
|
|
84
|
-
// Given
|
|
85
|
-
const commandName = 'TestCommand';
|
|
86
|
-
const mockDate = new Date('2025-01-27T10:00:00.000Z');
|
|
87
|
-
const originalDate = global.Date;
|
|
88
|
-
const DateMock = jest.fn(() => mockDate);
|
|
89
|
-
DateMock.now = jest.fn(() => mockDate.getTime());
|
|
90
|
-
Object.setPrototypeOf(DateMock, originalDate);
|
|
91
|
-
global.Date = DateMock;
|
|
92
|
-
// When
|
|
93
|
-
queueManager.createQueue(commandName);
|
|
94
|
-
// Then
|
|
95
|
-
expect(mockLogger.debug).toHaveBeenCalledWith('Tworzenie tymczasowej kolejki (bez cache)', {
|
|
96
|
-
commandName,
|
|
97
|
-
timestamp: mockDate.toISOString(),
|
|
98
|
-
});
|
|
99
|
-
// Cleanup
|
|
100
|
-
global.Date = originalDate;
|
|
101
|
-
});
|
|
102
|
-
it('powinno zwrócić instancję Queue', () => {
|
|
103
|
-
// Given
|
|
104
|
-
const commandName = 'TestCommand';
|
|
105
|
-
const mockQueueInstance = { name: commandName };
|
|
106
|
-
bullmq_1.Queue.mockReturnValue(mockQueueInstance);
|
|
107
|
-
// When
|
|
108
|
-
const result = queueManager.createQueue(commandName);
|
|
109
|
-
// Then
|
|
110
|
-
expect(result).toBe(mockQueueInstance);
|
|
111
|
-
});
|
|
112
|
-
it('powinno tworzyć różne kolejki dla różnych nazw komend', () => {
|
|
113
|
-
// Given
|
|
114
|
-
const commandName1 = 'FirstCommand';
|
|
115
|
-
const commandName2 = 'SecondCommand';
|
|
116
|
-
// When
|
|
117
|
-
queueManager.createQueue(commandName1);
|
|
118
|
-
queueManager.createQueue(commandName2);
|
|
119
|
-
// Then
|
|
120
|
-
expect(bullmq_1.Queue).toHaveBeenCalledTimes(2);
|
|
121
|
-
expect(bullmq_1.Queue).toHaveBeenNthCalledWith(1, `{${commandName1}}`, expect.any(Object));
|
|
122
|
-
expect(bullmq_1.Queue).toHaveBeenNthCalledWith(2, `{${commandName2}}`, expect.any(Object));
|
|
123
|
-
});
|
|
124
|
-
it('powinno reużywać to samo Redis connection dla wielu kolejek', () => {
|
|
125
|
-
// Given
|
|
126
|
-
const commandName1 = 'FirstCommand';
|
|
127
|
-
const commandName2 = 'SecondCommand';
|
|
128
|
-
const commandName3 = 'ThirdCommand';
|
|
129
|
-
// When
|
|
130
|
-
queueManager.createQueue(commandName1);
|
|
131
|
-
queueManager.createQueue(commandName2);
|
|
132
|
-
queueManager.createQueue(commandName3);
|
|
133
|
-
// Then
|
|
134
|
-
expect(bullmq_1.Queue).toHaveBeenCalledTimes(3);
|
|
135
|
-
// Wszystkie powinny używać tego samego Redis connection
|
|
136
|
-
expect(bullmq_1.Queue).toHaveBeenNthCalledWith(1, `{${commandName1}}`, {
|
|
137
|
-
connection: mockRedisConnection,
|
|
138
|
-
});
|
|
139
|
-
expect(bullmq_1.Queue).toHaveBeenNthCalledWith(2, `{${commandName2}}`, {
|
|
140
|
-
connection: mockRedisConnection,
|
|
141
|
-
});
|
|
142
|
-
expect(bullmq_1.Queue).toHaveBeenNthCalledWith(3, `{${commandName3}}`, {
|
|
143
|
-
connection: mockRedisConnection,
|
|
144
|
-
});
|
|
145
|
-
});
|
|
146
|
-
it('powinno zawierać metadata w logach (commandName, timestamp)', () => {
|
|
147
|
-
// Given
|
|
148
|
-
const commandName = 'MetadataTestCommand';
|
|
149
|
-
const mockDate = new Date('2025-01-27T15:30:45.123Z');
|
|
150
|
-
const originalDate = global.Date;
|
|
151
|
-
const DateMock = jest.fn(() => mockDate);
|
|
152
|
-
DateMock.now = jest.fn(() => mockDate.getTime());
|
|
153
|
-
Object.setPrototypeOf(DateMock, originalDate);
|
|
154
|
-
global.Date = DateMock;
|
|
155
|
-
// When
|
|
156
|
-
queueManager.createQueue(commandName);
|
|
157
|
-
// Then
|
|
158
|
-
expect(mockLogger.debug).toHaveBeenCalledWith('Tworzenie tymczasowej kolejki (bez cache)', {
|
|
159
|
-
commandName: commandName,
|
|
160
|
-
timestamp: mockDate.toISOString(),
|
|
161
|
-
});
|
|
162
|
-
// Weryfikacja że wszystkie wymagane pola są obecne
|
|
163
|
-
const logCall = mockLogger.debug.mock.calls[0];
|
|
164
|
-
const metadata = logCall[1];
|
|
165
|
-
expect(metadata).toHaveProperty('commandName');
|
|
166
|
-
expect(metadata).toHaveProperty('timestamp');
|
|
167
|
-
expect(metadata.commandName).toBe(`${commandName}`);
|
|
168
|
-
expect(metadata.timestamp).toBe('2025-01-27T15:30:45.123Z');
|
|
169
|
-
// Cleanup
|
|
170
|
-
global.Date = originalDate;
|
|
171
|
-
});
|
|
172
|
-
});
|
|
173
|
-
describe('getOrCreateQueue', () => {
|
|
174
|
-
it('powinno utworzyć nową kolejkę przy pierwszym wywołaniu', () => {
|
|
175
|
-
// Given
|
|
176
|
-
const commandName = 'TestCommand';
|
|
177
|
-
// When
|
|
178
|
-
queueManager.getOrCreateQueue(commandName);
|
|
179
|
-
// Then
|
|
180
|
-
expect(bullmq_1.Queue).toHaveBeenCalledWith(`{${commandName}}`, expect.any(Object));
|
|
181
|
-
expect(mockLogger.debug).toHaveBeenCalledWith('Tworzenie nowej kolejki', expect.objectContaining({ commandName }));
|
|
182
|
-
});
|
|
183
|
-
it('powinno zwrócić kolejkę z cache przy drugim wywołaniu', () => {
|
|
184
|
-
// Given
|
|
185
|
-
const commandName = 'CachedCommand';
|
|
186
|
-
const mockQueueInstance = { name: commandName };
|
|
187
|
-
bullmq_1.Queue.mockReturnValue(mockQueueInstance);
|
|
188
|
-
// When
|
|
189
|
-
const firstCall = queueManager.getOrCreateQueue(commandName);
|
|
190
|
-
const secondCall = queueManager.getOrCreateQueue(commandName);
|
|
191
|
-
// Then
|
|
192
|
-
expect(firstCall).toBe(secondCall);
|
|
193
|
-
expect(bullmq_1.Queue).toHaveBeenCalledTimes(1); // Tylko raz utworzone
|
|
194
|
-
expect(mockLogger.debug).toHaveBeenCalledWith('Kolejka pobrana z cache', expect.objectContaining({ commandName }));
|
|
195
|
-
});
|
|
196
|
-
it('powinno używać cache dla wielu wywołań tej samej komendy', () => {
|
|
197
|
-
// Given
|
|
198
|
-
const commandName = 'ReusedCommand';
|
|
199
|
-
const mockQueueInstance = { name: commandName };
|
|
200
|
-
bullmq_1.Queue.mockReturnValue(mockQueueInstance);
|
|
201
|
-
// When
|
|
202
|
-
queueManager.getOrCreateQueue(commandName);
|
|
203
|
-
queueManager.getOrCreateQueue(commandName);
|
|
204
|
-
queueManager.getOrCreateQueue(commandName);
|
|
205
|
-
// Then
|
|
206
|
-
expect(bullmq_1.Queue).toHaveBeenCalledTimes(1);
|
|
207
|
-
});
|
|
208
|
-
it('powinno tworzyć osobne kolejki dla różnych komend', () => {
|
|
209
|
-
// Given
|
|
210
|
-
const command1 = 'FirstCommand';
|
|
211
|
-
const command2 = 'SecondCommand';
|
|
212
|
-
// When
|
|
213
|
-
queueManager.getOrCreateQueue(command1);
|
|
214
|
-
queueManager.getOrCreateQueue(command2);
|
|
215
|
-
// Then
|
|
216
|
-
expect(bullmq_1.Queue).toHaveBeenCalledTimes(2);
|
|
217
|
-
expect(bullmq_1.Queue).toHaveBeenNthCalledWith(1, `{${command1}}`, expect.any(Object));
|
|
218
|
-
expect(bullmq_1.Queue).toHaveBeenNthCalledWith(2, `{${command2}}`, expect.any(Object));
|
|
219
|
-
});
|
|
220
|
-
});
|
|
221
|
-
describe('closeQueue', () => {
|
|
222
|
-
it('powinno zamknąć kolejkę i usunąć z cache', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
223
|
-
// Given
|
|
224
|
-
const commandName = 'TestCommand';
|
|
225
|
-
const mockClose = jest.fn().mockResolvedValue(undefined);
|
|
226
|
-
const mockQueueInstance = { close: mockClose };
|
|
227
|
-
bullmq_1.Queue.mockReturnValue(mockQueueInstance);
|
|
228
|
-
queueManager.getOrCreateQueue(commandName);
|
|
229
|
-
// When
|
|
230
|
-
yield queueManager.closeQueue(commandName);
|
|
231
|
-
// Then
|
|
232
|
-
expect(mockClose).toHaveBeenCalled();
|
|
233
|
-
expect(mockLogger.debug).toHaveBeenCalledWith('Kolejka zamknięta i usunięta z cache', expect.objectContaining({ commandName }));
|
|
234
|
-
}));
|
|
235
|
-
it('powinno pominąć zamykanie jeśli kolejka nie istnieje w cache', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
236
|
-
// Given
|
|
237
|
-
const commandName = 'NonExistentCommand';
|
|
238
|
-
// When
|
|
239
|
-
yield queueManager.closeQueue(commandName);
|
|
240
|
-
// Then
|
|
241
|
-
expect(mockLogger.debug).toHaveBeenCalledWith('Kolejka nie istnieje w cache - pomijam zamykanie', expect.objectContaining({ commandName }));
|
|
242
|
-
}));
|
|
243
|
-
it('powinno zalogować warning przy błędzie zamykania', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
244
|
-
// Given
|
|
245
|
-
const commandName = 'ErrorCommand';
|
|
246
|
-
const mockClose = jest.fn().mockRejectedValue(new Error('Close error'));
|
|
247
|
-
const mockQueueInstance = { close: mockClose };
|
|
248
|
-
bullmq_1.Queue.mockReturnValue(mockQueueInstance);
|
|
249
|
-
queueManager.getOrCreateQueue(commandName);
|
|
250
|
-
// When
|
|
251
|
-
yield queueManager.closeQueue(commandName);
|
|
252
|
-
// Then
|
|
253
|
-
expect(mockLogger.warn).toHaveBeenCalledWith('Błąd podczas zamykania kolejki', expect.objectContaining({
|
|
254
|
-
commandName,
|
|
255
|
-
error: 'Close error',
|
|
256
|
-
}));
|
|
257
|
-
}));
|
|
258
|
-
});
|
|
259
|
-
describe('closeAllQueues', () => {
|
|
260
|
-
it('powinno zamknąć wszystkie kolejki z cache', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
261
|
-
// Given
|
|
262
|
-
const mockClose = jest.fn().mockResolvedValue(undefined);
|
|
263
|
-
const mockQueueInstance = { close: mockClose };
|
|
264
|
-
bullmq_1.Queue.mockReturnValue(mockQueueInstance);
|
|
265
|
-
queueManager.getOrCreateQueue('Command1');
|
|
266
|
-
queueManager.getOrCreateQueue('Command2');
|
|
267
|
-
queueManager.getOrCreateQueue('Command3');
|
|
268
|
-
// When
|
|
269
|
-
yield queueManager.closeAllQueues();
|
|
270
|
-
// Then
|
|
271
|
-
expect(mockClose).toHaveBeenCalledTimes(3);
|
|
272
|
-
expect(mockLogger.debug).toHaveBeenCalledWith('Zamykanie wszystkich kolejek z cache', expect.objectContaining({ count: 3 }));
|
|
273
|
-
}));
|
|
274
|
-
it('powinno wyczyścić cache po zamknięciu', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
275
|
-
// Given
|
|
276
|
-
const mockClose = jest.fn().mockResolvedValue(undefined);
|
|
277
|
-
const mockQueueInstance = { close: mockClose };
|
|
278
|
-
bullmq_1.Queue.mockReturnValue(mockQueueInstance);
|
|
279
|
-
queueManager.getOrCreateQueue('Command1');
|
|
280
|
-
queueManager.getOrCreateQueue('Command2');
|
|
281
|
-
// When
|
|
282
|
-
yield queueManager.closeAllQueues();
|
|
283
|
-
const stats = queueManager.getCacheStats();
|
|
284
|
-
// Then
|
|
285
|
-
expect(stats.cachedQueuesCount).toBe(0);
|
|
286
|
-
expect(stats.queueNames).toEqual([]);
|
|
287
|
-
}));
|
|
288
|
-
it('powinno zalogować warning dla błędów zamykania', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
289
|
-
// Given
|
|
290
|
-
const mockCloseError = jest.fn().mockRejectedValue(new Error('Close error'));
|
|
291
|
-
const mockQueueError = { close: mockCloseError };
|
|
292
|
-
bullmq_1.Queue.mockReturnValue(mockQueueError);
|
|
293
|
-
queueManager.getOrCreateQueue('ErrorCommand');
|
|
294
|
-
// When
|
|
295
|
-
yield queueManager.closeAllQueues();
|
|
296
|
-
// Then
|
|
297
|
-
expect(mockLogger.warn).toHaveBeenCalledWith('Błąd podczas zamykania kolejki', expect.objectContaining({
|
|
298
|
-
commandName: 'ErrorCommand',
|
|
299
|
-
error: 'Close error',
|
|
300
|
-
}));
|
|
301
|
-
}));
|
|
302
|
-
});
|
|
303
|
-
describe('getCacheStats', () => {
|
|
304
|
-
it('powinno zwrócić statystyki pustego cache', () => {
|
|
305
|
-
// When
|
|
306
|
-
const stats = queueManager.getCacheStats();
|
|
307
|
-
// Then
|
|
308
|
-
expect(stats.cachedQueuesCount).toBe(0);
|
|
309
|
-
expect(stats.queueNames).toEqual([]);
|
|
310
|
-
});
|
|
311
|
-
it('powinno zwrócić statystyki z danymi kolejek', () => {
|
|
312
|
-
// Given
|
|
313
|
-
queueManager.getOrCreateQueue('Command1');
|
|
314
|
-
queueManager.getOrCreateQueue('Command2');
|
|
315
|
-
queueManager.getOrCreateQueue('Command3');
|
|
316
|
-
// When
|
|
317
|
-
const stats = queueManager.getCacheStats();
|
|
318
|
-
// Then
|
|
319
|
-
expect(stats.cachedQueuesCount).toBe(3);
|
|
320
|
-
expect(stats.queueNames).toContain('Command1');
|
|
321
|
-
expect(stats.queueNames).toContain('Command2');
|
|
322
|
-
expect(stats.queueNames).toContain('Command3');
|
|
323
|
-
});
|
|
324
|
-
});
|
|
325
|
-
describe('queueExists', () => {
|
|
326
|
-
it('powinno zwrócić true gdy kolejka istnieje w Redis', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
327
|
-
// Given
|
|
328
|
-
const queueName = 'ExistingQueue';
|
|
329
|
-
mockRedisConnection.exists = jest.fn().mockResolvedValue(1);
|
|
330
|
-
// When
|
|
331
|
-
const result = yield queueManager.queueExists(queueName);
|
|
332
|
-
// Then
|
|
333
|
-
expect(result).toBe(true);
|
|
334
|
-
expect(mockRedisConnection.exists).toHaveBeenCalledWith(`bull:{${queueName}}:meta`);
|
|
335
|
-
}));
|
|
336
|
-
it('powinno zwrócić false gdy kolejka nie istnieje w Redis', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
337
|
-
// Given
|
|
338
|
-
const queueName = 'NonExistingQueue';
|
|
339
|
-
mockRedisConnection.exists = jest.fn().mockResolvedValue(0);
|
|
340
|
-
// When
|
|
341
|
-
const result = yield queueManager.queueExists(queueName);
|
|
342
|
-
// Then
|
|
343
|
-
expect(result).toBe(false);
|
|
344
|
-
expect(mockRedisConnection.exists).toHaveBeenCalledWith(`bull:{${queueName}}:meta`);
|
|
345
|
-
}));
|
|
346
|
-
it('powinno sprawdzać klucz meta kolejki BullMQ', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
347
|
-
// Given
|
|
348
|
-
const queueName = 'TestQueue';
|
|
349
|
-
mockRedisConnection.exists = jest.fn().mockResolvedValue(1);
|
|
350
|
-
// When
|
|
351
|
-
yield queueManager.queueExists(queueName);
|
|
352
|
-
// Then
|
|
353
|
-
// Sprawdzamy dokładny format klucza BullMQ
|
|
354
|
-
expect(mockRedisConnection.exists).toHaveBeenCalledWith('bull:{TestQueue}:meta');
|
|
355
|
-
}));
|
|
356
|
-
it('powinno zwrócić false gdy Redis zwróci błąd', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
357
|
-
// Given
|
|
358
|
-
const queueName = 'ErrorQueue';
|
|
359
|
-
mockRedisConnection.exists = jest.fn().mockRejectedValue(new Error('Redis error'));
|
|
360
|
-
// When
|
|
361
|
-
const result = yield queueManager.queueExists(queueName);
|
|
362
|
-
// Then
|
|
363
|
-
expect(result).toBe(false);
|
|
364
|
-
expect(mockLogger.warn).toHaveBeenCalledWith('Błąd podczas sprawdzania istnienia kolejki', expect.objectContaining({
|
|
365
|
-
queueName,
|
|
366
|
-
error: 'Redis error',
|
|
367
|
-
}));
|
|
368
|
-
}));
|
|
369
|
-
});
|
|
370
|
-
});
|
|
371
|
-
//# sourceMappingURL=queue-manager.spec.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"queue-manager.spec.js","sourceRoot":"","sources":["../../../src/command-bus/queue/queue-manager.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Moduł RPC (Request-Response Pattern)
|
|
3
|
-
* Eksportuje RpcCoordinator do zarządzania wywołaniami RPC
|
|
4
|
-
* Eksportuje PayloadCompressionService do kompresji payloadów
|
|
5
|
-
* Eksportuje RpcJobCancellationService do zarządzania anulowaniem jobów RPC
|
|
6
|
-
*/
|
|
7
|
-
export { default as RpcCoordinator } from './rpc-coordinator';
|
|
8
|
-
export { default as PayloadCompressionService } from './payload-compression.service';
|
|
9
|
-
export { default as RpcJobCancellationService } from './rpc-job-cancellation.service';
|
|
10
|
-
export type { CompressionResult } from './payload-compression.service';
|
|
11
|
-
export type { RemoveJobCallback } from './rpc-job-cancellation.service';
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.RpcJobCancellationService = exports.PayloadCompressionService = exports.RpcCoordinator = void 0;
|
|
7
|
-
/**
|
|
8
|
-
* Moduł RPC (Request-Response Pattern)
|
|
9
|
-
* Eksportuje RpcCoordinator do zarządzania wywołaniami RPC
|
|
10
|
-
* Eksportuje PayloadCompressionService do kompresji payloadów
|
|
11
|
-
* Eksportuje RpcJobCancellationService do zarządzania anulowaniem jobów RPC
|
|
12
|
-
*/
|
|
13
|
-
var rpc_coordinator_1 = require("./rpc-coordinator");
|
|
14
|
-
Object.defineProperty(exports, "RpcCoordinator", { enumerable: true, get: function () { return __importDefault(rpc_coordinator_1).default; } });
|
|
15
|
-
var payload_compression_service_1 = require("./payload-compression.service");
|
|
16
|
-
Object.defineProperty(exports, "PayloadCompressionService", { enumerable: true, get: function () { return __importDefault(payload_compression_service_1).default; } });
|
|
17
|
-
var rpc_job_cancellation_service_1 = require("./rpc-job-cancellation.service");
|
|
18
|
-
Object.defineProperty(exports, "RpcJobCancellationService", { enumerable: true, get: function () { return __importDefault(rpc_job_cancellation_service_1).default; } });
|
|
19
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/command-bus/rpc/index.ts"],"names":[],"mappings":";;;;;;AAAA;;;;;GAKG;AACH,qDAA8D;AAArD,kIAAA,OAAO,OAAkB;AAClC,6EAAqF;AAA5E,yJAAA,OAAO,OAA6B;AAC7C,+EAAsF;AAA7E,0JAAA,OAAO,OAA6B"}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import type { ILogger } from '../../shared/types';
|
|
2
|
-
import type Command from '../command';
|
|
3
|
-
import type { CompressibleCommand } from '../types';
|
|
4
|
-
/**
|
|
5
|
-
* Wynik kompresji payloadu
|
|
6
|
-
*/
|
|
7
|
-
export interface CompressionResult {
|
|
8
|
-
data: string;
|
|
9
|
-
compressed: boolean;
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* Serwis kompresji payloadów RPC
|
|
13
|
-
* Automatycznie kompresuje payloady większe niż threshold za pomocą gzip (async)
|
|
14
|
-
* Używa async gzip aby nie blokować event loop Node.js
|
|
15
|
-
*/
|
|
16
|
-
export default class PayloadCompressionService {
|
|
17
|
-
private readonly threshold;
|
|
18
|
-
private readonly logger;
|
|
19
|
-
constructor(threshold: number, logger: ILogger);
|
|
20
|
-
/**
|
|
21
|
-
* Kompresuje payload jeśli przekracza threshold (async - nie blokuje event loop)
|
|
22
|
-
* @param payload - Dane do kompresji
|
|
23
|
-
* @returns Promise z obiektem zawierającym data (JSON lub base64 gzip) i flagą compressed
|
|
24
|
-
*/
|
|
25
|
-
compress(payload: unknown): Promise<CompressionResult>;
|
|
26
|
-
/**
|
|
27
|
-
* Dekompresuje payload na podstawie flagi compressed (async - nie blokuje event loop)
|
|
28
|
-
* @param data - Dane do dekompresji (JSON string lub base64 gzip)
|
|
29
|
-
* @param compressed - Czy dane są skompresowane
|
|
30
|
-
* @returns Promise ze zdeserializowanym obiektem
|
|
31
|
-
* @throws Error jeśli dekompresja lub parsowanie się nie powiedzie
|
|
32
|
-
*/
|
|
33
|
-
decompress(data: string, compressed: boolean): Promise<unknown>;
|
|
34
|
-
/**
|
|
35
|
-
* Kompresuje Command obiekt jeśli przekracza threshold
|
|
36
|
-
* Zachowuje metadane Command (__name, __id, __time) i kompresuje __payload
|
|
37
|
-
*
|
|
38
|
-
* @param command - Command do kompresji
|
|
39
|
-
* @returns Promise z CompressibleCommand (może być skompresowany lub nie)
|
|
40
|
-
*/
|
|
41
|
-
compressCommand<T>(command: Command<T>): Promise<CompressibleCommand<T>>;
|
|
42
|
-
/**
|
|
43
|
-
* Dekompresuje Command obiekt na podstawie flagi __compressed
|
|
44
|
-
*
|
|
45
|
-
* @param command - CompressibleCommand do dekompresji
|
|
46
|
-
* @returns Promise ze zdekompresowanym Command
|
|
47
|
-
* @throws Error jeśli dekompresja się nie powiedzie lub brakuje danych
|
|
48
|
-
*/
|
|
49
|
-
decompressCommand<T>(command: CompressibleCommand<T>): Promise<Command<T>>;
|
|
50
|
-
}
|