pp-command-bus 1.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.
Files changed (105) hide show
  1. package/README.md +522 -0
  2. package/dist/command-bus/command-bus.spec.d.ts +1 -0
  3. package/dist/command-bus/command-bus.spec.js +398 -0
  4. package/dist/command-bus/command-bus.spec.js.map +1 -0
  5. package/dist/command-bus/command.d.ts +24 -0
  6. package/dist/command-bus/command.js +53 -0
  7. package/dist/command-bus/command.js.map +1 -0
  8. package/dist/command-bus/config/command-bus-config.d.ts +40 -0
  9. package/dist/command-bus/config/command-bus-config.js +59 -0
  10. package/dist/command-bus/config/command-bus-config.js.map +1 -0
  11. package/dist/command-bus/config/command-bus-config.spec.d.ts +1 -0
  12. package/dist/command-bus/config/command-bus-config.spec.js +162 -0
  13. package/dist/command-bus/config/command-bus-config.spec.js.map +1 -0
  14. package/dist/command-bus/config/index.d.ts +1 -0
  15. package/dist/command-bus/config/index.js +9 -0
  16. package/dist/command-bus/config/index.js.map +1 -0
  17. package/dist/command-bus/index.d.ts +79 -0
  18. package/dist/command-bus/index.js +169 -0
  19. package/dist/command-bus/index.js.map +1 -0
  20. package/dist/command-bus/job/index.d.ts +6 -0
  21. package/dist/command-bus/job/index.js +15 -0
  22. package/dist/command-bus/job/index.js.map +1 -0
  23. package/dist/command-bus/job/job-options-builder.d.ts +24 -0
  24. package/dist/command-bus/job/job-options-builder.js +68 -0
  25. package/dist/command-bus/job/job-options-builder.js.map +1 -0
  26. package/dist/command-bus/job/job-options-builder.spec.d.ts +1 -0
  27. package/dist/command-bus/job/job-options-builder.spec.js +163 -0
  28. package/dist/command-bus/job/job-options-builder.spec.js.map +1 -0
  29. package/dist/command-bus/job/job-processor.d.ts +33 -0
  30. package/dist/command-bus/job/job-processor.js +195 -0
  31. package/dist/command-bus/job/job-processor.js.map +1 -0
  32. package/dist/command-bus/job/job-processor.spec.d.ts +1 -0
  33. package/dist/command-bus/job/job-processor.spec.js +352 -0
  34. package/dist/command-bus/job/job-processor.spec.js.map +1 -0
  35. package/dist/command-bus/logging/command-logger.d.ts +21 -0
  36. package/dist/command-bus/logging/command-logger.js +79 -0
  37. package/dist/command-bus/logging/command-logger.js.map +1 -0
  38. package/dist/command-bus/logging/command-logger.spec.d.ts +1 -0
  39. package/dist/command-bus/logging/command-logger.spec.js +245 -0
  40. package/dist/command-bus/logging/command-logger.spec.js.map +1 -0
  41. package/dist/command-bus/logging/index.d.ts +5 -0
  42. package/dist/command-bus/logging/index.js +13 -0
  43. package/dist/command-bus/logging/index.js.map +1 -0
  44. package/dist/command-bus/queue/index.d.ts +5 -0
  45. package/dist/command-bus/queue/index.js +13 -0
  46. package/dist/command-bus/queue/index.js.map +1 -0
  47. package/dist/command-bus/queue/queue-manager.d.ts +24 -0
  48. package/dist/command-bus/queue/queue-manager.js +60 -0
  49. package/dist/command-bus/queue/queue-manager.js.map +1 -0
  50. package/dist/command-bus/queue/queue-manager.spec.d.ts +1 -0
  51. package/dist/command-bus/queue/queue-manager.spec.js +219 -0
  52. package/dist/command-bus/queue/queue-manager.spec.js.map +1 -0
  53. package/dist/command-bus/rpc/index.d.ts +5 -0
  54. package/dist/command-bus/rpc/index.js +13 -0
  55. package/dist/command-bus/rpc/index.js.map +1 -0
  56. package/dist/command-bus/rpc/rpc-coordinator.d.ts +45 -0
  57. package/dist/command-bus/rpc/rpc-coordinator.js +189 -0
  58. package/dist/command-bus/rpc/rpc-coordinator.js.map +1 -0
  59. package/dist/command-bus/rpc/rpc-coordinator.spec.d.ts +1 -0
  60. package/dist/command-bus/rpc/rpc-coordinator.spec.js +286 -0
  61. package/dist/command-bus/rpc/rpc-coordinator.spec.js.map +1 -0
  62. package/dist/command-bus/types/index.d.ts +57 -0
  63. package/dist/command-bus/types/index.js +3 -0
  64. package/dist/command-bus/types/index.js.map +1 -0
  65. package/dist/command-bus/worker/index.d.ts +5 -0
  66. package/dist/command-bus/worker/index.js +13 -0
  67. package/dist/command-bus/worker/index.js.map +1 -0
  68. package/dist/command-bus/worker/worker-orchestrator.d.ts +46 -0
  69. package/dist/command-bus/worker/worker-orchestrator.js +160 -0
  70. package/dist/command-bus/worker/worker-orchestrator.js.map +1 -0
  71. package/dist/command-bus/worker/worker-orchestrator.spec.d.ts +1 -0
  72. package/dist/command-bus/worker/worker-orchestrator.spec.js +293 -0
  73. package/dist/command-bus/worker/worker-orchestrator.spec.js.map +1 -0
  74. package/dist/examples/rpc.demo.d.ts +2 -0
  75. package/dist/examples/rpc.demo.js +235 -0
  76. package/dist/examples/rpc.demo.js.map +1 -0
  77. package/dist/index.d.ts +11 -0
  78. package/dist/index.js +20 -0
  79. package/dist/index.js.map +1 -0
  80. package/dist/pp-command-bus-1.0.0.tgz +0 -0
  81. package/dist/shared/config/base-config.d.ts +43 -0
  82. package/dist/shared/config/base-config.js +100 -0
  83. package/dist/shared/config/base-config.js.map +1 -0
  84. package/dist/shared/config/base-config.spec.d.ts +1 -0
  85. package/dist/shared/config/base-config.spec.js +118 -0
  86. package/dist/shared/config/base-config.spec.js.map +1 -0
  87. package/dist/shared/config/index.d.ts +1 -0
  88. package/dist/shared/config/index.js +9 -0
  89. package/dist/shared/config/index.js.map +1 -0
  90. package/dist/shared/logging/index.d.ts +2 -0
  91. package/dist/shared/logging/index.js +8 -0
  92. package/dist/shared/logging/index.js.map +1 -0
  93. package/dist/shared/logging/log-level.d.ts +36 -0
  94. package/dist/shared/logging/log-level.js +53 -0
  95. package/dist/shared/logging/log-level.js.map +1 -0
  96. package/dist/shared/logging/logger.d.ts +42 -0
  97. package/dist/shared/logging/logger.js +63 -0
  98. package/dist/shared/logging/logger.js.map +1 -0
  99. package/dist/shared/logging/logger.spec.d.ts +1 -0
  100. package/dist/shared/logging/logger.spec.js +89 -0
  101. package/dist/shared/logging/logger.spec.js.map +1 -0
  102. package/dist/shared/types.d.ts +26 -0
  103. package/dist/shared/types.js +6 -0
  104. package/dist/shared/types.js.map +1 -0
  105. package/package.json +93 -0
@@ -0,0 +1,245 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
36
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
37
+ return new (P || (P = Promise))(function (resolve, reject) {
38
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
39
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
40
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
41
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
42
+ });
43
+ };
44
+ var __importDefault = (this && this.__importDefault) || function (mod) {
45
+ return (mod && mod.__esModule) ? mod : { "default": mod };
46
+ };
47
+ Object.defineProperty(exports, "__esModule", { value: true });
48
+ const fs = __importStar(require("fs/promises"));
49
+ const path = __importStar(require("path"));
50
+ const command_logger_1 = __importDefault(require("./command-logger"));
51
+ const command_1 = __importDefault(require("../command"));
52
+ // Mock fs.promises
53
+ jest.mock('fs/promises');
54
+ // Przykładowa komenda testowa
55
+ class TestCommand extends command_1.default {
56
+ constructor(data) {
57
+ super();
58
+ this.data = data;
59
+ }
60
+ }
61
+ describe('CommandLogger', () => {
62
+ let commandLogger;
63
+ let mockLogger;
64
+ const testLogDirectory = '/test/logs';
65
+ beforeEach(() => {
66
+ jest.clearAllMocks();
67
+ mockLogger = {
68
+ log: jest.fn(),
69
+ error: jest.fn(),
70
+ warn: jest.fn(),
71
+ debug: jest.fn(),
72
+ };
73
+ commandLogger = new command_logger_1.default(testLogDirectory, mockLogger);
74
+ });
75
+ describe('logCommand', () => {
76
+ it('powinno zapisać komendę do pliku JSONL z datą w nazwie', () => __awaiter(void 0, void 0, void 0, function* () {
77
+ // Given
78
+ const mockDate = new Date('2025-10-01T12:00:00.000Z');
79
+ const originalDate = global.Date;
80
+ const DateMock = jest.fn(() => mockDate);
81
+ DateMock.now = jest.fn(() => mockDate.getTime());
82
+ Object.setPrototypeOf(DateMock, originalDate);
83
+ global.Date = DateMock;
84
+ const command = new TestCommand('test data');
85
+ const expectedFileName = path.join(testLogDirectory, 'commandbus_2025-10-01.jsonl');
86
+ const expectedContent = JSON.stringify(command) + '\n';
87
+ // When
88
+ yield commandLogger.logCommand(command);
89
+ // Then
90
+ expect(fs.appendFile).toHaveBeenCalledWith(expectedFileName, expectedContent);
91
+ // Cleanup
92
+ global.Date = originalDate;
93
+ }));
94
+ it('powinno zapisać wiele komend do tego samego pliku w tym samym dniu', () => __awaiter(void 0, void 0, void 0, function* () {
95
+ // Given
96
+ const mockDate = new Date('2025-10-01T12:00:00.000Z');
97
+ const originalDate = global.Date;
98
+ const DateMock = jest.fn(() => mockDate);
99
+ DateMock.now = jest.fn(() => mockDate.getTime());
100
+ Object.setPrototypeOf(DateMock, originalDate);
101
+ global.Date = DateMock;
102
+ const command1 = new TestCommand('first');
103
+ const command2 = new TestCommand('second');
104
+ const expectedFileName = path.join(testLogDirectory, 'commandbus_2025-10-01.jsonl');
105
+ // When
106
+ yield commandLogger.logCommand(command1);
107
+ yield commandLogger.logCommand(command2);
108
+ // Then
109
+ expect(fs.appendFile).toHaveBeenCalledTimes(2);
110
+ expect(fs.appendFile).toHaveBeenNthCalledWith(1, expectedFileName, JSON.stringify(command1) + '\n');
111
+ expect(fs.appendFile).toHaveBeenNthCalledWith(2, expectedFileName, JSON.stringify(command2) + '\n');
112
+ // Cleanup
113
+ global.Date = originalDate;
114
+ }));
115
+ it('powinno utworzyć nowy plik dla nowego dnia', () => __awaiter(void 0, void 0, void 0, function* () {
116
+ // Given
117
+ const originalDate = global.Date;
118
+ const date1 = new Date('2025-10-01T12:00:00.000Z');
119
+ const date2 = new Date('2025-10-02T12:00:00.000Z');
120
+ // Dzień 1 - setup
121
+ const DateMock1 = jest.fn(() => date1);
122
+ DateMock1.now = jest.fn(() => date1.getTime());
123
+ Object.setPrototypeOf(DateMock1, originalDate);
124
+ global.Date = DateMock1;
125
+ const command1 = new TestCommand('day1');
126
+ // When - dzień 1
127
+ yield commandLogger.logCommand(command1);
128
+ // Dzień 2 - setup
129
+ const DateMock2 = jest.fn(() => date2);
130
+ DateMock2.now = jest.fn(() => date2.getTime());
131
+ Object.setPrototypeOf(DateMock2, originalDate);
132
+ global.Date = DateMock2;
133
+ const command2 = new TestCommand('day2');
134
+ // When - dzień 2
135
+ yield commandLogger.logCommand(command2);
136
+ // Then
137
+ const file1 = path.join(testLogDirectory, 'commandbus_2025-10-01.jsonl');
138
+ const file2 = path.join(testLogDirectory, 'commandbus_2025-10-02.jsonl');
139
+ expect(fs.appendFile).toHaveBeenCalledWith(file1, JSON.stringify(command1) + '\n');
140
+ expect(fs.appendFile).toHaveBeenCalledWith(file2, JSON.stringify(command2) + '\n');
141
+ // Cleanup
142
+ global.Date = originalDate;
143
+ }));
144
+ it('powinno zalogować błąd gdy zapis do pliku się nie powiedzie', () => __awaiter(void 0, void 0, void 0, function* () {
145
+ // Given
146
+ const error = new Error('Disk full');
147
+ fs.appendFile.mockRejectedValueOnce(error);
148
+ const mockDate = new Date('2025-10-01T12:00:00.000Z');
149
+ const originalDate = global.Date;
150
+ const DateMock = jest.fn(() => mockDate);
151
+ DateMock.now = jest.fn(() => mockDate.getTime());
152
+ Object.setPrototypeOf(DateMock, originalDate);
153
+ global.Date = DateMock;
154
+ const command = new TestCommand('test');
155
+ // When
156
+ yield commandLogger.logCommand(command);
157
+ // Then
158
+ expect(mockLogger.error).toHaveBeenCalledWith('Nie udało się zapisać komendy do logu:', error);
159
+ // Cleanup
160
+ global.Date = originalDate;
161
+ }));
162
+ it('powinno kontynuować działanie pomimo błędu zapisu', () => __awaiter(void 0, void 0, void 0, function* () {
163
+ // Given
164
+ const mockDate = new Date('2025-10-01T12:00:00.000Z');
165
+ const originalDate = global.Date;
166
+ const DateMock = jest.fn(() => mockDate);
167
+ DateMock.now = jest.fn(() => mockDate.getTime());
168
+ Object.setPrototypeOf(DateMock, originalDate);
169
+ global.Date = DateMock;
170
+ const command1 = new TestCommand('first');
171
+ const command2 = new TestCommand('second');
172
+ fs.appendFile
173
+ .mockRejectedValueOnce(new Error('Failed'))
174
+ .mockResolvedValueOnce(undefined);
175
+ // When
176
+ yield commandLogger.logCommand(command1); // Should fail but not throw
177
+ yield commandLogger.logCommand(command2); // Should succeed
178
+ // Then
179
+ expect(fs.appendFile).toHaveBeenCalledTimes(2);
180
+ expect(mockLogger.error).toHaveBeenCalledTimes(1);
181
+ // Cleanup
182
+ global.Date = originalDate;
183
+ }));
184
+ it('powinno serializować komendę jako pojedynczą linię JSON', () => __awaiter(void 0, void 0, void 0, function* () {
185
+ // Given
186
+ const mockDate = new Date('2025-10-01T12:00:00.000Z');
187
+ const originalDate = global.Date;
188
+ const DateMock = jest.fn(() => mockDate);
189
+ DateMock.now = jest.fn(() => mockDate.getTime());
190
+ Object.setPrototypeOf(DateMock, originalDate);
191
+ global.Date = DateMock;
192
+ const command = new TestCommand('complex\ndata\nwith\nnewlines');
193
+ // When
194
+ yield commandLogger.logCommand(command);
195
+ // Then
196
+ const calls = fs.appendFile.mock.calls;
197
+ const writtenContent = calls[0][1];
198
+ // Sprawdź że to pojedyncza linia zakończona \n
199
+ const lines = writtenContent.split('\n');
200
+ expect(lines.length).toBe(2); // Jedna linia + trailing newline = 2 elementy
201
+ expect(lines[0]).toContain('TestCommand');
202
+ expect(lines[1]).toBe(''); // Pusty string po trailing newline
203
+ // Cleanup
204
+ global.Date = originalDate;
205
+ }));
206
+ it('powinno zachować wszystkie właściwości komendy podczas serializacji', () => __awaiter(void 0, void 0, void 0, function* () {
207
+ // Given
208
+ const mockDate = new Date('2025-10-01T12:00:00.000Z');
209
+ const originalDate = global.Date;
210
+ const DateMock = jest.fn(() => mockDate);
211
+ DateMock.now = jest.fn(() => mockDate.getTime());
212
+ Object.setPrototypeOf(DateMock, originalDate);
213
+ global.Date = DateMock;
214
+ const command = new TestCommand('test data');
215
+ const commandId = command.__id;
216
+ const commandName = command.__name;
217
+ // When
218
+ yield commandLogger.logCommand(command);
219
+ // Then
220
+ const calls = fs.appendFile.mock.calls;
221
+ const writtenContent = calls[0][1];
222
+ const parsed = JSON.parse(writtenContent.trim());
223
+ expect(parsed.__id).toBe(commandId);
224
+ expect(parsed.__name).toBe(commandName);
225
+ expect(parsed.data).toBe('test data');
226
+ // Cleanup
227
+ global.Date = originalDate;
228
+ }));
229
+ });
230
+ describe('constructor', () => {
231
+ it('powinno utworzyć logger z poprawnym katalogiem', () => {
232
+ // When
233
+ const logger = new command_logger_1.default('/custom/path', mockLogger);
234
+ // Then
235
+ expect(logger).toBeDefined();
236
+ });
237
+ it('powinno zaakceptować pusty string jako katalog', () => {
238
+ // When
239
+ const logger = new command_logger_1.default('', mockLogger);
240
+ // Then
241
+ expect(logger).toBeDefined();
242
+ });
243
+ });
244
+ });
245
+ //# sourceMappingURL=command-logger.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-logger.spec.js","sourceRoot":"","sources":["../../../src/command-bus/logging/command-logger.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Moduł logowania komend
3
+ * Eksportuje CommandLogger do opcjonalnego logowania komend do plików
4
+ */
5
+ export { default as CommandLogger } from './command-logger';
@@ -0,0 +1,13 @@
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.CommandLogger = void 0;
7
+ /**
8
+ * Moduł logowania komend
9
+ * Eksportuje CommandLogger do opcjonalnego logowania komend do plików
10
+ */
11
+ var command_logger_1 = require("./command-logger");
12
+ Object.defineProperty(exports, "CommandLogger", { enumerable: true, get: function () { return __importDefault(command_logger_1).default; } });
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/command-bus/logging/index.ts"],"names":[],"mappings":";;;;;;AAAA;;;GAGG;AACH,mDAA4D;AAAnD,gIAAA,OAAO,OAAiB"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Moduł zarządzania kolejkami BullMQ
3
+ * Eksportuje QueueManager odpowiedzialny za lifecycle kolejek
4
+ */
5
+ export { default as QueueManager } from './queue-manager';
@@ -0,0 +1,13 @@
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.QueueManager = void 0;
7
+ /**
8
+ * Moduł zarządzania kolejkami BullMQ
9
+ * Eksportuje QueueManager odpowiedzialny za lifecycle kolejek
10
+ */
11
+ var queue_manager_1 = require("./queue-manager");
12
+ Object.defineProperty(exports, "QueueManager", { enumerable: true, get: function () { return __importDefault(queue_manager_1).default; } });
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/command-bus/queue/index.ts"],"names":[],"mappings":";;;;;;AAAA;;;GAGG;AACH,iDAA0D;AAAjD,8HAAA,OAAO,OAAgB"}
@@ -0,0 +1,24 @@
1
+ import { Queue } from 'bullmq';
2
+ import type { Redis } from 'ioredis';
3
+ import type { ILogger } from '../../shared/types';
4
+ /**
5
+ * Zarządza cyklem życia kolejek BullMQ i cache'em reply queues
6
+ */
7
+ export default class QueueManager {
8
+ private readonly redisConnection;
9
+ private readonly logger;
10
+ constructor(redisConnection: Redis, logger: ILogger);
11
+ /**
12
+ * Tworzy kolejkę dla danego typu komendy
13
+ * Reużywa własne Redis connection dla optymalizacji pamięci
14
+ * @param commandName - Nazwa komendy
15
+ * @param connection - Połączenie Redis (opcjonalne)
16
+ */
17
+ createQueue(commandName: string, connection?: Redis): Queue;
18
+ /**
19
+ * Sprawdza czy kolejka BullMQ istnieje w Redis
20
+ * @param queueName - Nazwa kolejki do sprawdzenia
21
+ * @returns true jeśli kolejka istnieje, false w przeciwnym razie
22
+ */
23
+ queueExists(queueName: string): Promise<boolean>;
24
+ }
@@ -0,0 +1,60 @@
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 reply queues
15
+ */
16
+ class QueueManager {
17
+ constructor(redisConnection, logger) {
18
+ this.redisConnection = redisConnection;
19
+ this.logger = logger;
20
+ }
21
+ /**
22
+ * Tworzy kolejkę dla danego typu komendy
23
+ * Reużywa własne Redis connection dla optymalizacji pamięci
24
+ * @param commandName - Nazwa komendy
25
+ * @param connection - Połączenie Redis (opcjonalne)
26
+ */
27
+ createQueue(commandName, connection) {
28
+ this.logger.debug('Tworzenie kolejki', {
29
+ commandName,
30
+ timestamp: new Date().toISOString(),
31
+ });
32
+ return new bullmq_1.Queue(`{${commandName}}`, {
33
+ connection: connection !== null && connection !== void 0 ? connection : this.redisConnection,
34
+ });
35
+ }
36
+ /**
37
+ * Sprawdza czy kolejka BullMQ istnieje w Redis
38
+ * @param queueName - Nazwa kolejki do sprawdzenia
39
+ * @returns true jeśli kolejka istnieje, false w przeciwnym razie
40
+ */
41
+ queueExists(queueName) {
42
+ return __awaiter(this, void 0, void 0, function* () {
43
+ try {
44
+ const metaKey = `bull:{${queueName}}:meta`;
45
+ const exists = yield this.redisConnection.exists(metaKey);
46
+ return exists === 1;
47
+ }
48
+ catch (error) {
49
+ this.logger.warn('Błąd podczas sprawdzania istnienia kolejki', {
50
+ queueName,
51
+ error: error instanceof Error ? error.message : String(error),
52
+ timestamp: new Date().toISOString(),
53
+ });
54
+ return false;
55
+ }
56
+ });
57
+ }
58
+ }
59
+ exports.default = QueueManager;
60
+ //# sourceMappingURL=queue-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue-manager.js","sourceRoot":"","sources":["../../../src/command-bus/queue/queue-manager.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,mCAA+B;AAI/B;;GAEG;AACH,MAAqB,YAAY;IAC/B,YACmB,eAAsB,EACtB,MAAe;QADf,oBAAe,GAAf,eAAe,CAAO;QACtB,WAAM,GAAN,MAAM,CAAS;IAC/B,CAAC;IAEJ;;;;;OAKG;IACI,WAAW,CAAC,WAAmB,EAAE,UAAkB;QACxD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,EAAE;YACrC,WAAW;YACX,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC,CAAC;QAEH,OAAO,IAAI,cAAK,CAAC,IAAI,WAAW,GAAG,EAAE;YACnC,UAAU,EAAE,UAAU,aAAV,UAAU,cAAV,UAAU,GAAI,IAAI,CAAC,eAAe;SAC/C,CAAC,CAAC;IACL,CAAC;IAED;;;;OAIG;IACU,WAAW,CAAC,SAAiB;;YACxC,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,SAAS,SAAS,QAAQ,CAAC;gBAC3C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAC1D,OAAO,MAAM,KAAK,CAAC,CAAC;YACtB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,4CAA4C,EAAE;oBAC7D,SAAS;oBACT,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;oBAC7D,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;iBACpC,CAAC,CAAC;gBACH,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;KAAA;CACF;AA1CD,+BA0CC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,219 @@
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 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 kolejki', {
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 kolejki', {
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('queueExists', () => {
174
+ it('powinno zwrócić true gdy kolejka istnieje w Redis', () => __awaiter(void 0, void 0, void 0, function* () {
175
+ // Given
176
+ const queueName = 'ExistingQueue';
177
+ mockRedisConnection.exists = jest.fn().mockResolvedValue(1);
178
+ // When
179
+ const result = yield queueManager.queueExists(queueName);
180
+ // Then
181
+ expect(result).toBe(true);
182
+ expect(mockRedisConnection.exists).toHaveBeenCalledWith(`bull:{${queueName}}:meta`);
183
+ }));
184
+ it('powinno zwrócić false gdy kolejka nie istnieje w Redis', () => __awaiter(void 0, void 0, void 0, function* () {
185
+ // Given
186
+ const queueName = 'NonExistingQueue';
187
+ mockRedisConnection.exists = jest.fn().mockResolvedValue(0);
188
+ // When
189
+ const result = yield queueManager.queueExists(queueName);
190
+ // Then
191
+ expect(result).toBe(false);
192
+ expect(mockRedisConnection.exists).toHaveBeenCalledWith(`bull:{${queueName}}:meta`);
193
+ }));
194
+ it('powinno sprawdzać klucz meta kolejki BullMQ', () => __awaiter(void 0, void 0, void 0, function* () {
195
+ // Given
196
+ const queueName = 'TestQueue';
197
+ mockRedisConnection.exists = jest.fn().mockResolvedValue(1);
198
+ // When
199
+ yield queueManager.queueExists(queueName);
200
+ // Then
201
+ // Sprawdzamy dokładny format klucza BullMQ
202
+ expect(mockRedisConnection.exists).toHaveBeenCalledWith('bull:{TestQueue}:meta');
203
+ }));
204
+ it('powinno zwrócić false gdy Redis zwróci błąd', () => __awaiter(void 0, void 0, void 0, function* () {
205
+ // Given
206
+ const queueName = 'ErrorQueue';
207
+ mockRedisConnection.exists = jest.fn().mockRejectedValue(new Error('Redis error'));
208
+ // When
209
+ const result = yield queueManager.queueExists(queueName);
210
+ // Then
211
+ expect(result).toBe(false);
212
+ expect(mockLogger.warn).toHaveBeenCalledWith('Błąd podczas sprawdzania istnienia kolejki', expect.objectContaining({
213
+ queueName,
214
+ error: 'Redis error',
215
+ }));
216
+ }));
217
+ });
218
+ });
219
+ //# sourceMappingURL=queue-manager.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue-manager.spec.js","sourceRoot":"","sources":["../../../src/command-bus/queue/queue-manager.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Moduł RPC (Request-Response Pattern)
3
+ * Eksportuje RpcCoordinator do zarządzania wywołaniami RPC
4
+ */
5
+ export { default as RpcCoordinator } from './rpc-coordinator';