@ido_kawaz/amqp-client 5.0.0 → 6.1.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.
@@ -23,18 +23,17 @@ describe('Consumer', () => {
23
23
  nack: jest.fn(),
24
24
  };
25
25
  }
26
- function createConsumer(validatePayload, handlePayload) {
27
- return new consumer_1.Consumer('test-consumer', binding, validatePayload, handlePayload);
26
+ function isTestPayload(payload) {
27
+ return typeof payload.id === 'string';
28
28
  }
29
- function createValidationHarness(implementation) {
30
- const validatePayloadMock = jest.fn(implementation);
31
- const validatePayload = (payload) => validatePayloadMock(payload);
32
- return { validatePayload, validatePayloadMock };
29
+ function createConsumer(handleMessage, validateMessage = isTestPayload) {
30
+ return new consumer_1.Consumer('test-consumer', binding)
31
+ .on('validateMessage', validateMessage)
32
+ .on('handleMessage', handleMessage);
33
33
  }
34
34
  it('establishes binding and starts consuming from queue', async () => {
35
- const { validatePayload } = createValidationHarness((payload) => typeof payload.id === 'string');
36
- const handlePayload = jest.fn().mockResolvedValue(undefined);
37
- const consumer = createConsumer(validatePayload, handlePayload);
35
+ const handleMessage = jest.fn().mockResolvedValue(undefined);
36
+ const consumer = createConsumer(handleMessage);
38
37
  const channel = createChannel();
39
38
  channel.consume.mockResolvedValue({ consumerTag: 'tag' });
40
39
  await consumer.start(channel, 'test-service');
@@ -47,24 +46,23 @@ describe('Consumer', () => {
47
46
  expect(channel.consume).toHaveBeenCalledWith('orders.queue', expect.any(Function));
48
47
  });
49
48
  it('ignores null message', async () => {
50
- const { validatePayload, validatePayloadMock } = createValidationHarness((payload) => typeof payload.id === 'string');
51
- const handlePayload = jest.fn().mockResolvedValue(undefined);
52
- const consumer = createConsumer(validatePayload, handlePayload);
49
+ const handleMessage = jest.fn().mockResolvedValue(undefined);
50
+ const consumer = createConsumer(handleMessage);
53
51
  const channel = createChannel();
54
52
  channel.consume.mockImplementation(async (_queue, onMessage) => {
55
53
  await onMessage(null);
56
54
  return { consumerTag: 'tag' };
57
55
  });
58
56
  await consumer.start(channel, 'test-service');
59
- expect(validatePayloadMock).not.toHaveBeenCalled();
60
- expect(handlePayload).not.toHaveBeenCalled();
57
+ expect(handleMessage).not.toHaveBeenCalled();
61
58
  expect(channel.ack).not.toHaveBeenCalled();
62
59
  expect(channel.nack).not.toHaveBeenCalled();
63
60
  });
64
61
  it('nacks without requeue when payload validation fails', async () => {
65
- const { validatePayload, validatePayloadMock } = createValidationHarness((_payload) => false);
66
- const handlePayload = jest.fn().mockResolvedValue(undefined);
67
- const consumer = createConsumer(validatePayload, handlePayload);
62
+ const handleMessage = jest.fn().mockResolvedValue(undefined);
63
+ const validateMock = jest.fn((_p) => false);
64
+ const validateMessage = (p) => validateMock(p);
65
+ const consumer = createConsumer(handleMessage, validateMessage);
68
66
  const channel = createChannel();
69
67
  const message = createMessage({ invalid: true });
70
68
  channel.consume.mockImplementation(async (_queue, onMessage) => {
@@ -72,15 +70,40 @@ describe('Consumer', () => {
72
70
  return { consumerTag: 'tag' };
73
71
  });
74
72
  await consumer.start(channel, 'test-service');
75
- expect(validatePayloadMock).toHaveBeenCalledWith({ invalid: true });
76
- expect(handlePayload).not.toHaveBeenCalled();
73
+ expect(validateMock).toHaveBeenCalledWith({ invalid: true });
74
+ expect(handleMessage).not.toHaveBeenCalled();
77
75
  expect(channel.ack).not.toHaveBeenCalled();
78
76
  expect(channel.nack).toHaveBeenCalledWith(message, false, false);
79
77
  });
78
+ it('nacks without requeue when no validateMessage handler is registered', async () => {
79
+ const handleMessage = jest.fn().mockResolvedValue(undefined);
80
+ const consumer = new consumer_1.Consumer('test-consumer', binding)
81
+ .on('handleMessage', handleMessage);
82
+ const channel = createChannel();
83
+ const message = createMessage({ id: '1' });
84
+ channel.consume.mockImplementation(async (_queue, onMessage) => {
85
+ await onMessage(message);
86
+ return { consumerTag: 'tag' };
87
+ });
88
+ await consumer.start(channel, 'test-service');
89
+ expect(handleMessage).not.toHaveBeenCalled();
90
+ expect(channel.nack).toHaveBeenCalledWith(message, false, false);
91
+ });
92
+ it('nacks without requeue when no handleMessage handler is registered', async () => {
93
+ const consumer = new consumer_1.Consumer('test-consumer', binding)
94
+ .on('validateMessage', isTestPayload);
95
+ const channel = createChannel();
96
+ const message = createMessage({ id: '1' });
97
+ channel.consume.mockImplementation(async (_queue, onMessage) => {
98
+ await onMessage(message);
99
+ return { consumerTag: 'tag' };
100
+ });
101
+ await consumer.start(channel, 'test-service');
102
+ expect(channel.nack).toHaveBeenCalledWith(message, false, false);
103
+ });
80
104
  it('acknowledges message when payload is valid and handler succeeds', async () => {
81
- const { validatePayload } = createValidationHarness((payload) => typeof payload.id === 'string');
82
- const handlePayload = jest.fn().mockResolvedValue(undefined);
83
- const consumer = createConsumer(validatePayload, handlePayload);
105
+ const handleMessage = jest.fn().mockResolvedValue(undefined);
106
+ const consumer = createConsumer(handleMessage);
84
107
  const channel = createChannel();
85
108
  const message = createMessage({ id: '123' });
86
109
  channel.consume.mockImplementation(async (_queue, onMessage) => {
@@ -88,16 +111,49 @@ describe('Consumer', () => {
88
111
  return { consumerTag: 'tag' };
89
112
  });
90
113
  await consumer.start(channel, 'test-service');
91
- expect(handlePayload).toHaveBeenCalledWith({ id: '123' });
114
+ expect(handleMessage).toHaveBeenCalledWith({ id: '123' });
92
115
  expect(channel.ack).toHaveBeenCalledWith(message);
93
116
  expect(channel.nack).not.toHaveBeenCalled();
94
117
  });
118
+ it('calls handleSuccess handler after successful processing', async () => {
119
+ const handleMessage = jest.fn().mockResolvedValue(undefined);
120
+ const handleSuccess = jest.fn().mockResolvedValue(undefined);
121
+ const consumer = createConsumer(handleMessage)
122
+ .on('handleSuccess', handleSuccess);
123
+ const channel = createChannel();
124
+ const message = createMessage({ id: '42' });
125
+ channel.consume.mockImplementation(async (_queue, onMessage) => {
126
+ await onMessage(message);
127
+ return { consumerTag: 'tag' };
128
+ });
129
+ await consumer.start(channel, 'test-service');
130
+ expect(handleSuccess).toHaveBeenCalledWith({ id: '42' }, undefined);
131
+ expect(channel.ack).toHaveBeenCalledWith(message);
132
+ });
133
+ it('passes handleMessage return value to handleSuccess', async () => {
134
+ const result = { orderId: 'abc' };
135
+ const handleMessage = jest.fn().mockResolvedValue(result);
136
+ const handleSuccess = jest.fn().mockResolvedValue(undefined);
137
+ const consumer = new consumer_1.Consumer('test-consumer', binding)
138
+ .on('validateMessage', isTestPayload)
139
+ .on('handleMessage', handleMessage)
140
+ .on('handleSuccess', handleSuccess);
141
+ const channel = createChannel();
142
+ const message = createMessage({ id: '99' });
143
+ channel.consume.mockImplementation(async (_queue, onMessage) => {
144
+ await onMessage(message);
145
+ return { consumerTag: 'tag' };
146
+ });
147
+ await consumer.start(channel, 'test-service');
148
+ expect(handleSuccess).toHaveBeenCalledWith({ id: '99' }, result);
149
+ expect(channel.ack).toHaveBeenCalledWith(message);
150
+ });
95
151
  it('requeues retriable error when delivery count is below retry limit', async () => {
96
- const { validatePayload } = createValidationHarness((payload) => typeof payload.id === 'string');
97
- const handlePayload = jest.fn().mockRejectedValue(new errors_1.AmqpRetriableError(new Error('retry'), 3));
98
- const consumer = createConsumer(validatePayload, handlePayload);
152
+ const payload = { id: '1' };
153
+ const handleMessage = jest.fn().mockRejectedValue(new errors_1.AmqpRetriableError(payload, 'retry', undefined, 3));
154
+ const consumer = createConsumer(handleMessage);
99
155
  const channel = createChannel();
100
- const message = createMessage({ id: '1' }, 1);
156
+ const message = createMessage(payload, 1);
101
157
  channel.consume.mockImplementation(async (_queue, onMessage) => {
102
158
  await onMessage(message);
103
159
  return { consumerTag: 'tag' };
@@ -106,22 +162,55 @@ describe('Consumer', () => {
106
162
  expect(channel.nack).toHaveBeenCalledWith(message, false, true);
107
163
  });
108
164
  it('does not requeue retriable error after retry limit', async () => {
109
- const { validatePayload } = createValidationHarness((payload) => typeof payload.id === 'string');
110
- const handlePayload = jest.fn().mockRejectedValue(new errors_1.AmqpRetriableError(new Error('retry'), 2));
111
- const consumer = createConsumer(validatePayload, handlePayload);
165
+ const payload = { id: '1' };
166
+ const handleMessage = jest.fn().mockRejectedValue(new errors_1.AmqpRetriableError(payload, 'retry', undefined, 2));
167
+ const consumer = createConsumer(handleMessage);
168
+ const channel = createChannel();
169
+ const message = createMessage(payload, '2');
170
+ channel.consume.mockImplementation(async (_queue, onMessage) => {
171
+ await onMessage(message);
172
+ return { consumerTag: 'tag' };
173
+ });
174
+ await consumer.start(channel, 'test-service');
175
+ expect(channel.nack).toHaveBeenCalledWith(message, false, false);
176
+ });
177
+ it('calls handleRetriableError handler on retriable errors', async () => {
178
+ const payload = { id: '1' };
179
+ const retriableError = new errors_1.AmqpRetriableError(payload, 'retry', undefined, 3);
180
+ const handleMessage = jest.fn().mockRejectedValue(retriableError);
181
+ const handleRetriableError = jest.fn().mockResolvedValue(undefined);
182
+ const consumer = createConsumer(handleMessage)
183
+ .on('handleRetriableError', handleRetriableError);
184
+ const channel = createChannel();
185
+ const message = createMessage(payload, 1);
186
+ channel.consume.mockImplementation(async (_queue, onMessage) => {
187
+ await onMessage(message);
188
+ return { consumerTag: 'tag' };
189
+ });
190
+ await consumer.start(channel, 'test-service');
191
+ expect(handleRetriableError).toHaveBeenCalledWith(retriableError, payload);
192
+ expect(channel.nack).toHaveBeenCalledWith(message, false, true);
193
+ });
194
+ it('calls handleFatalError handler on fatal errors', async () => {
195
+ const payload = { id: '1' };
196
+ const fatalError = new errors_1.AmqpFatalError(payload, 'fatal');
197
+ const handleMessage = jest.fn().mockRejectedValue(fatalError);
198
+ const handleFatalError = jest.fn().mockResolvedValue(undefined);
199
+ const consumer = createConsumer(handleMessage)
200
+ .on('handleFatalError', handleFatalError);
112
201
  const channel = createChannel();
113
- const message = createMessage({ id: '1' }, '2');
202
+ const message = createMessage(payload);
114
203
  channel.consume.mockImplementation(async (_queue, onMessage) => {
115
204
  await onMessage(message);
116
205
  return { consumerTag: 'tag' };
117
206
  });
118
207
  await consumer.start(channel, 'test-service');
208
+ expect(handleFatalError).toHaveBeenCalledWith(fatalError, payload);
119
209
  expect(channel.nack).toHaveBeenCalledWith(message, false, false);
120
210
  });
121
211
  it('nacks without requeue for non-retriable errors', async () => {
122
- const { validatePayload } = createValidationHarness((payload) => typeof payload.id === 'string');
123
- const handlePayload = jest.fn().mockRejectedValue(new Error('bad-message'));
124
- const consumer = createConsumer(validatePayload, handlePayload);
212
+ const handleMessage = jest.fn().mockRejectedValue(new Error('bad-message'));
213
+ const consumer = createConsumer(handleMessage);
125
214
  const channel = createChannel();
126
215
  const message = createMessage();
127
216
  channel.consume.mockImplementation(async (_queue, onMessage) => {
@@ -1 +1 @@
1
- {"version":3,"file":"consumer.test.js","sourceRoot":"","sources":["../../src/__tests__/consumer.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"consumer.test.js","sourceRoot":"","sources":["../../src/__tests__/consumer.test.ts"],"names":[],"mappings":";;AAAA,0CAAuC;AACvC,sCAA+D;AAC/D,wCAAmD;AAEnD,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IAKtB,MAAM,OAAO,GAAG,IAAA,+BAAqB,EAAC,cAAc,EAAE,iBAAiB,EAAE,gBAAgB,CAAC,CAAC;IAE3F,SAAS,aAAa,CAAC,UAAkB,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,aAA+B;QACjF,OAAO;YACH,UAAU,EAAE;gBACR,OAAO,EAAE,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,aAAa,EAAE;aACpF;YACD,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;SAChD,CAAC;IACN,CAAC;IAED,SAAS,aAAa;QAClB,OAAO;YACH,WAAW,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;YACnD,cAAc,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;YACtD,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;YACjD,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE;YAClB,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE;YACd,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;SAClB,CAAC;IACN,CAAC;IAED,SAAS,aAAa,CAAC,OAAe;QAClC,OAAO,OAAQ,OAAuB,CAAC,EAAE,KAAK,QAAQ,CAAC;IAC3D,CAAC;IAED,SAAS,cAAc,CACnB,aAAsD,EACtD,kBAA+D,aAAa;QAE5E,OAAO,IAAI,mBAAQ,CAA8B,eAAe,EAAE,OAAO,CAAC;aACrE,EAAE,CAAC,iBAAiB,EAAE,eAAe,CAAC;aACtC,EAAE,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;IAC5C,CAAC;IAED,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;QACjE,MAAM,aAAa,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAC7D,MAAM,QAAQ,GAAG,cAAc,CAAC,aAAa,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;QAChC,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;QAE1D,MAAM,QAAQ,CAAC,KAAK,CAAC,OAAc,EAAE,cAAc,CAAC,CAAC;QAErD,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,oBAAoB,CAAC,cAAc,EAAE;YAC7D,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,EAAE,cAAc,EAAE,QAAQ,EAAE;SAC1C,CAAC,CAAC;QACH,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,oBAAoB,CAAC,iBAAiB,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACnG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC,cAAc,EAAE,iBAAiB,EAAE,gBAAgB,CAAC,CAAC;QACpG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,oBAAoB,CAAC,cAAc,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;IACvF,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;QAClC,MAAM,aAAa,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAC7D,MAAM,QAAQ,GAAG,cAAc,CAAC,aAAa,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;QAEhC,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,KAAK,EAAE,MAAc,EAAE,SAAsC,EAAE,EAAE;YAChG,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC;YACtB,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,CAAC,KAAK,CAAC,OAAc,EAAE,cAAc,CAAC,CAAC;QAErD,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QAC7C,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QAC3C,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;QACjE,MAAM,aAAa,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAC7D,MAAM,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,EAAU,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;QACpD,MAAM,eAAe,GAAG,CAAC,CAAS,EAAoB,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACzE,MAAM,QAAQ,GAAG,cAAc,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;QAChE,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,aAAa,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAEjD,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,KAAK,EAAE,MAAc,EAAE,SAAsC,EAAE,EAAE;YAChG,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC;YACzB,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,CAAC,KAAK,CAAC,OAAc,EAAE,cAAc,CAAC,CAAC;QAErD,MAAM,CAAC,YAAY,CAAC,CAAC,oBAAoB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7D,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QAC7C,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QAC3C,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qEAAqE,EAAE,KAAK,IAAI,EAAE;QACjF,MAAM,aAAa,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAC7D,MAAM,QAAQ,GAAG,IAAI,mBAAQ,CAA8B,eAAe,EAAE,OAAO,CAAC;aAC/E,EAAE,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;QACxC,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,aAAa,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QAE3C,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,KAAK,EAAE,MAAc,EAAE,SAAsC,EAAE,EAAE;YAChG,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC;YACzB,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,CAAC,KAAK,CAAC,OAAc,EAAE,cAAc,CAAC,CAAC;QAErD,MAAM,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QAC7C,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mEAAmE,EAAE,KAAK,IAAI,EAAE;QAC/E,MAAM,QAAQ,GAAG,IAAI,mBAAQ,CAA8B,eAAe,EAAE,OAAO,CAAC;aAC/E,EAAE,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAC;QAC1C,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,aAAa,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QAE3C,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,KAAK,EAAE,MAAc,EAAE,SAAsC,EAAE,EAAE;YAChG,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC;YACzB,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,CAAC,KAAK,CAAC,OAAc,EAAE,cAAc,CAAC,CAAC;QAErD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iEAAiE,EAAE,KAAK,IAAI,EAAE;QAC7E,MAAM,aAAa,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAC7D,MAAM,QAAQ,GAAG,cAAc,CAAC,aAAa,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,aAAa,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAE7C,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,KAAK,EAAE,MAAc,EAAE,SAAsC,EAAE,EAAE;YAChG,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC;YACzB,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,CAAC,KAAK,CAAC,OAAc,EAAE,cAAc,CAAC,CAAC;QAErD,MAAM,CAAC,aAAa,CAAC,CAAC,oBAAoB,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1D,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAClD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;QACrE,MAAM,aAAa,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAC7D,MAAM,aAAa,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAC7D,MAAM,QAAQ,GAAG,cAAc,CAAC,aAAa,CAAC;aACzC,EAAE,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;QACxC,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,aAAa,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAE5C,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,KAAK,EAAE,MAAc,EAAE,SAAsC,EAAE,EAAE;YAChG,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC;YACzB,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,CAAC,KAAK,CAAC,OAAc,EAAE,cAAc,CAAC,CAAC;QAErD,MAAM,CAAC,aAAa,CAAC,CAAC,oBAAoB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC;QACpE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;QAChE,MAAM,MAAM,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAClC,MAAM,aAAa,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAC1D,MAAM,aAAa,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAC7D,MAAM,QAAQ,GAAG,IAAI,mBAAQ,CAA6C,eAAe,EAAE,OAAO,CAAC;aAC9F,EAAE,CAAC,iBAAiB,EAAE,aAAa,CAAC;aACpC,EAAE,CAAC,eAAe,EAAE,aAAa,CAAC;aAClC,EAAE,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;QACxC,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,aAAa,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAE5C,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,KAAK,EAAE,MAAc,EAAE,SAAsC,EAAE,EAAE;YAChG,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC;YACzB,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,CAAC,KAAK,CAAC,OAAc,EAAE,cAAc,CAAC,CAAC;QAErD,MAAM,CAAC,aAAa,CAAC,CAAC,oBAAoB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC;QACjE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mEAAmE,EAAE,KAAK,IAAI,EAAE;QAC/E,MAAM,OAAO,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC;QAC5B,MAAM,aAAa,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAC7C,IAAI,2BAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,CACzD,CAAC;QACF,MAAM,QAAQ,GAAG,cAAc,CAAC,aAAa,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAE1C,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,KAAK,EAAE,MAAc,EAAE,SAAsC,EAAE,EAAE;YAChG,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC;YACzB,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,CAAC,KAAK,CAAC,OAAc,EAAE,cAAc,CAAC,CAAC;QAErD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;QAChE,MAAM,OAAO,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC;QAC5B,MAAM,aAAa,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAC7C,IAAI,2BAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,CACzD,CAAC;QACF,MAAM,QAAQ,GAAG,cAAc,CAAC,aAAa,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAE5C,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,KAAK,EAAE,MAAc,EAAE,SAAsC,EAAE,EAAE;YAChG,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC;YACzB,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,CAAC,KAAK,CAAC,OAAc,EAAE,cAAc,CAAC,CAAC;QAErD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;QACpE,MAAM,OAAO,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC;QAC5B,MAAM,cAAc,GAAG,IAAI,2BAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;QAC9E,MAAM,aAAa,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;QAClE,MAAM,oBAAoB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QACpE,MAAM,QAAQ,GAAG,cAAc,CAAC,aAAa,CAAC;aACzC,EAAE,CAAC,sBAAsB,EAAE,oBAAoB,CAAC,CAAC;QACtD,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAE1C,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,KAAK,EAAE,MAAc,EAAE,SAAsC,EAAE,EAAE;YAChG,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC;YACzB,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,CAAC,KAAK,CAAC,OAAc,EAAE,cAAc,CAAC,CAAC;QAErD,MAAM,CAAC,oBAAoB,CAAC,CAAC,oBAAoB,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QAC3E,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;QAC5D,MAAM,OAAO,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC;QAC5B,MAAM,UAAU,GAAG,IAAI,uBAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxD,MAAM,aAAa,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;QAC9D,MAAM,gBAAgB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAChE,MAAM,QAAQ,GAAG,cAAc,CAAC,aAAa,CAAC;aACzC,EAAE,CAAC,kBAAkB,EAAE,gBAAgB,CAAC,CAAC;QAC9C,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;QAEvC,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,KAAK,EAAE,MAAc,EAAE,SAAsC,EAAE,EAAE;YAChG,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC;YACzB,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,CAAC,KAAK,CAAC,OAAc,EAAE,cAAc,CAAC,CAAC;QAErD,MAAM,CAAC,gBAAgB,CAAC,CAAC,oBAAoB,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACnE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;QAC5D,MAAM,aAAa,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC;QAC5E,MAAM,QAAQ,GAAG,cAAc,CAAC,aAAa,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;QAEhC,OAAO,CAAC,OAAO,CAAC,kBAAkB,CAAC,KAAK,EAAE,MAAc,EAAE,SAAsC,EAAE,EAAE;YAChG,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC;YACzB,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,MAAM,QAAQ,CAAC,KAAK,CAAC,OAAc,EAAE,cAAc,CAAC,CAAC;QAErD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,oBAAoB,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -9,7 +9,7 @@ export declare class AmqpClient {
9
9
  channel: Channel | undefined;
10
10
  constructor(config: AmqpConfig, consumers: Consumer<any, any>[]);
11
11
  start(serviceName: string): Promise<void>;
12
- publish<T>(...args: AmqpPublishArgs<T>): void;
12
+ publish<T extends object>(...args: AmqpPublishArgs<T>): void;
13
13
  stop(): Promise<void>;
14
14
  }
15
15
  //# sourceMappingURL=amqpClient.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"amqpClient.d.ts","sourceRoot":"","sources":["../src/amqpClient.ts"],"names":[],"mappings":"AAAA,OAAa,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAGtC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE1C,qBAAa,UAAU;IAGP,OAAO,CAAC,QAAQ,CAAC,MAAM;IAAc,OAAO,CAAC,QAAQ,CAAC,SAAS;IAF3E,UAAU,EAAE,YAAY,GAAG,SAAS,CAAC;IACrC,OAAO,EAAE,OAAO,GAAG,SAAS,CAAC;gBACA,MAAM,EAAE,UAAU,EAAmB,SAAS,EAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE;IAG3F,KAAK,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB/C,OAAO,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,IAAI;IAYvC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAQ9B"}
1
+ {"version":3,"file":"amqpClient.d.ts","sourceRoot":"","sources":["../src/amqpClient.ts"],"names":[],"mappings":"AAAA,OAAa,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAGtC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE1C,qBAAa,UAAU;IAGP,OAAO,CAAC,QAAQ,CAAC,MAAM;IAAc,OAAO,CAAC,QAAQ,CAAC,SAAS;IAF3E,UAAU,EAAE,YAAY,GAAG,SAAS,CAAC;IACrC,OAAO,EAAE,OAAO,GAAG,SAAS,CAAC;gBACA,MAAM,EAAE,UAAU,EAAmB,SAAS,EAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE;IAG3F,KAAK,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB/C,OAAO,CAAC,CAAC,SAAS,MAAM,EAAE,GAAG,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,IAAI;IAYtD,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAQ9B"}
@@ -1 +1 @@
1
- {"version":3,"file":"amqpClient.js","sourceRoot":"","sources":["../src/amqpClient.ts"],"names":[],"mappings":";;;;;;AAAA,sDAAsD;AAEtD,qCAA2F;AAC3F,iCAAwC;AAIxC,MAAa,UAAU;IAGnB,YAA6B,MAAkB,EAAmB,SAA+B;QAApE,WAAM,GAAN,MAAM,CAAY;QAAmB,cAAS,GAAT,SAAS,CAAsB;IACjG,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,WAAmB;QAC3B,IAAI,CAAC;YACD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC7B,MAAM,UAAU,GAAG,MAAM,iBAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;YACxE,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;YAC7B,IAAI,CAAC,OAAO,GAAG,MAAM,UAAU,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;gBACnE,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;gBAC1F,OAAO,OAAO,CAAC;YACnB,CAAC,CAAC,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,uCAAuC,OAAO,GAAG,SAAS,KAAK,CAAC,CAAC;QACjF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,IAAI,4BAAmB,CAAE,KAAe,CAAC,OAAO,EAAE,EAAE,oBAAoB,EAAE,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE,CAAC,CAAC;QACxH,CAAC;IACL,CAAC;IAED,OAAO,CAAI,GAAG,IAAwB;QAClC,IAAI,IAAA,aAAK,EAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,+BAAsB,EAAE,CAAC;QACvC,CAAC;QACD,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;QACxC,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;QACzD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;QACvE,IAAI,CAAC,WAAW,EAAE,CAAC;YACf,MAAM,IAAI,2BAAkB,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QAC3D,CAAC;IACL,CAAC;IAED,KAAK,CAAC,IAAI;QACN,IAAI,IAAA,gBAAQ,EAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAC/B,CAAC;QACD,IAAI,IAAA,gBAAQ,EAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QAClC,CAAC;IACL,CAAC;CACJ;AA1CD,gCA0CC"}
1
+ {"version":3,"file":"amqpClient.js","sourceRoot":"","sources":["../src/amqpClient.ts"],"names":[],"mappings":";;;;;;AAAA,sDAAsD;AAEtD,qCAA2F;AAC3F,iCAAwC;AAIxC,MAAa,UAAU;IAGnB,YAA6B,MAAkB,EAAmB,SAA+B;QAApE,WAAM,GAAN,MAAM,CAAY;QAAmB,cAAS,GAAT,SAAS,CAAsB;IACjG,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,WAAmB;QAC3B,IAAI,CAAC;YACD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC7B,MAAM,UAAU,GAAG,MAAM,iBAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;YACxE,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;YAC7B,IAAI,CAAC,OAAO,GAAG,MAAM,UAAU,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;gBACnE,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;gBAC1F,OAAO,OAAO,CAAC;YACnB,CAAC,CAAC,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,uCAAuC,OAAO,GAAG,SAAS,KAAK,CAAC,CAAC;QACjF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,IAAI,4BAAmB,CAAE,KAAe,CAAC,OAAO,EAAE,EAAE,oBAAoB,EAAE,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE,CAAC,CAAC;QACxH,CAAC;IACL,CAAC;IAED,OAAO,CAAmB,GAAG,IAAwB;QACjD,IAAI,IAAA,aAAK,EAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,+BAAsB,EAAE,CAAC;QACvC,CAAC;QACD,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;QACxC,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;QACzD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;QACvE,IAAI,CAAC,WAAW,EAAE,CAAC;YACf,MAAM,IAAI,2BAAkB,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QAC3D,CAAC;IACL,CAAC;IAED,KAAK,CAAC,IAAI;QACN,IAAI,IAAA,gBAAQ,EAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAC/B,CAAC;QACD,IAAI,IAAA,gBAAQ,EAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QAClC,CAAC;IACL,CAAC;CACJ;AA1CD,gCA0CC"}
@@ -1,16 +1,31 @@
1
1
  import { Channel } from 'amqplib';
2
+ import { AmqpFatalError, AmqpRetriableError } from './errors';
2
3
  interface ConsumerBinding {
3
4
  queue: string;
4
5
  exchange: string;
5
6
  topic: string;
6
7
  }
7
- export declare class Consumer<Payload extends object, Binding extends ConsumerBinding> {
8
+ interface ConsumerEvents<Payload extends object, Output = void> {
9
+ validateMessage: (payload: object) => payload is Payload;
10
+ handleMessage: (payload: Payload) => Promise<Output>;
11
+ handleRetriableError: (error: AmqpRetriableError<Payload>, payload: Payload) => Promise<void>;
12
+ handleFatalError: (error: AmqpFatalError, payload: any) => Promise<void>;
13
+ handleSuccess: (payload: Payload, response?: Output) => Promise<void>;
14
+ }
15
+ export declare class Consumer<Payload extends object, Binding extends ConsumerBinding, Output = void> {
8
16
  private readonly consumerName;
9
17
  private readonly binding;
10
- private readonly validatePayload;
11
- private readonly handlePayload;
12
- constructor(consumerName: string, binding: Binding, validatePayload: (payload: object) => payload is Payload, handlePayload: (payload: Payload) => Promise<void>);
18
+ private handlers;
19
+ constructor(consumerName: string, binding: Binding);
13
20
  start(channel: Channel, serviceName: string): Promise<void>;
21
+ on<E extends keyof ConsumerEvents<Payload, Output>>(event: E, handler: ConsumerEvents<Payload, Output>[E]): this;
22
+ private validateAndParse;
23
+ private handlePayload;
24
+ private handleSuccess;
25
+ private handleRetriableError;
26
+ private handleFatalError;
27
+ private handleError;
28
+ private handleMessage;
14
29
  private getDeliveryCount;
15
30
  private establishConsumerBinding;
16
31
  private assertQueue;
@@ -1 +1 @@
1
- {"version":3,"file":"consumer.d.ts","sourceRoot":"","sources":["../src/consumer.ts"],"names":[],"mappings":"AAAA,OAAa,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAIxC,UAAU,eAAe;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,QAAQ,CAAC,OAAO,SAAS,MAAM,EAAE,OAAO,SAAS,eAAe;IAErE,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,aAAa;gBAHb,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,OAAO,EAChB,eAAe,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,IAAI,OAAO,EACxD,aAAa,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC;IAIjE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmCjE,OAAO,CAAC,gBAAgB;YAYV,wBAAwB;YAMxB,WAAW;YAIX,cAAc;YAId,SAAS;CAG1B"}
1
+ {"version":3,"file":"consumer.d.ts","sourceRoot":"","sources":["../src/consumer.ts"],"names":[],"mappings":"AAAA,OAAa,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAGxC,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAyD,MAAM,UAAU,CAAC;AAErH,UAAU,eAAe;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,cAAc,CAAC,OAAO,SAAS,MAAM,EAAE,MAAM,GAAG,IAAI;IAC1D,eAAe,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,IAAI,OAAO,CAAC;IACzD,aAAa,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACrD,oBAAoB,EAAE,CAAC,KAAK,EAAE,kBAAkB,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9F,gBAAgB,EAAE,CAAC,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACzE,aAAa,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACzE;AAED,qBAAa,QAAQ,CAAC,OAAO,SAAS,MAAM,EAAE,OAAO,SAAS,eAAe,EAAE,MAAM,GAAG,IAAI;IAIpF,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAJ5B,OAAO,CAAC,QAAQ,CAAgD;gBAG3C,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,OAAO;IAG/B,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWjE,EAAE,CAAC,CAAC,SAAS,MAAM,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;IAKhH,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,aAAa;YAOP,aAAa;YAMb,oBAAoB;YAmBpB,gBAAgB;YAgBhB,WAAW;YAiBX,aAAa;IAgB3B,OAAO,CAAC,gBAAgB;YAYV,wBAAwB;YAMxB,WAAW;YAIX,cAAc;YAId,SAAS;CAG1B"}
package/dist/consumer.js CHANGED
@@ -4,51 +4,87 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.Consumer = void 0;
7
- const errors_1 = require("./errors");
8
7
  const pino_1 = __importDefault(require("pino"));
8
+ const ramda_1 = require("ramda");
9
+ const errors_1 = require("./errors");
9
10
  class Consumer {
10
- constructor(consumerName, binding, validatePayload, handlePayload) {
11
+ constructor(consumerName, binding) {
11
12
  this.consumerName = consumerName;
12
13
  this.binding = binding;
13
- this.validatePayload = validatePayload;
14
- this.handlePayload = handlePayload;
14
+ this.handlers = {};
15
15
  }
16
16
  async start(channel, serviceName) {
17
17
  const logger = (0, pino_1.default)({ name: serviceName });
18
18
  await this.establishConsumerBinding(channel);
19
19
  await channel.consume(this.binding.queue, async (message) => {
20
- if (!message) {
20
+ if ((0, ramda_1.isNil)(message)) {
21
21
  return;
22
22
  }
23
- const startTime = Date.now();
24
- const messageInfo = { request: 'amqp', consumer: this.consumerName };
25
- try {
26
- const payload = JSON.parse(message.content.toString());
27
- if (!this.validatePayload(payload)) {
28
- throw new Error('Invalid payload format');
29
- }
30
- logger.info(messageInfo, `started handling message`);
31
- await this.handlePayload(payload);
32
- const duration = Date.now() - startTime;
33
- logger.info({ ...messageInfo, payload, durationMs: duration }, `finished handling message`);
34
- channel.ack(message);
35
- }
36
- catch (error) {
37
- const duration = Date.now() - startTime;
38
- if (error instanceof errors_1.AmqpRetriableError) {
39
- const { message: errorMessage, retryLimit } = error;
40
- const retryCount = this.getDeliveryCount(message);
41
- const shouldRequeue = retryCount < retryLimit;
42
- logger.error({ ...messageInfo, type: 'retriable', durationMs: duration, retryLimit, retryCount, error: errorMessage }, `Error handling message, ${shouldRequeue ? 'will retry' : 'retry limit reached, will not retry'}`);
43
- channel.nack(message, false, shouldRequeue);
44
- }
45
- else {
46
- logger.error({ ...messageInfo, type: 'fatal', durationMs: duration, error: error.message }, 'Error handling message, will not retry');
47
- channel.nack(message, false, false);
48
- }
49
- }
23
+ await this.handleMessage(channel, logger, message);
50
24
  });
51
25
  }
26
+ on(event, handler) {
27
+ this.handlers[event] = handler;
28
+ return this;
29
+ }
30
+ validateAndParse(payload) {
31
+ if ((0, ramda_1.isNil)(this.handlers.validateMessage) || !this.handlers.validateMessage(payload)) {
32
+ throw new errors_1.InvalidPayloadFormatError(payload);
33
+ }
34
+ return payload;
35
+ }
36
+ handlePayload(payload) {
37
+ if ((0, ramda_1.isNil)(this.handlers.handleMessage)) {
38
+ throw new errors_1.MissingPayloadHandlerError(payload);
39
+ }
40
+ return this.handlers.handleMessage(payload);
41
+ }
42
+ async handleSuccess(payload, response) {
43
+ if ((0, ramda_1.isNotNil)(this.handlers.handleSuccess)) {
44
+ await this.handlers.handleSuccess(payload, response);
45
+ }
46
+ }
47
+ async handleRetriableError(channel, logger, message, error, payload, messageInfo, startTime) {
48
+ if ((0, ramda_1.isNotNil)(this.handlers.handleRetriableError)) {
49
+ await this.handlers.handleRetriableError(error, payload);
50
+ }
51
+ const retryCount = this.getDeliveryCount(message);
52
+ const shouldRequeue = retryCount < error.retryLimit;
53
+ logger.error({ ...messageInfo, type: 'retriable', durationMs: Date.now() - startTime, retryLimit: error.retryLimit, retryCount, error: error.message }, `Error handling message, ${shouldRequeue ? 'will retry' : 'retry limit reached, will not retry'}`);
54
+ channel.nack(message, false, shouldRequeue);
55
+ }
56
+ async handleFatalError(channel, logger, message, error, payload, messageInfo, startTime) {
57
+ if ((0, ramda_1.isNotNil)(this.handlers.handleFatalError)) {
58
+ await this.handlers.handleFatalError(error, payload);
59
+ }
60
+ logger.error({ ...messageInfo, type: 'fatal', durationMs: Date.now() - startTime, error: error.message }, 'Error handling message, will not retry');
61
+ channel.nack(message, false, false);
62
+ }
63
+ async handleError(channel, logger, message, payload, error, messageInfo, startTime) {
64
+ if (error instanceof errors_1.AmqpRetriableError) {
65
+ await this.handleRetriableError(channel, logger, message, error, payload, messageInfo, startTime);
66
+ }
67
+ else {
68
+ const fatalError = error instanceof errors_1.AmqpFatalError ? error : new errors_1.AmqpFatalError(payload, error.message, error);
69
+ await this.handleFatalError(channel, logger, message, fatalError, payload, messageInfo, startTime);
70
+ }
71
+ }
72
+ async handleMessage(channel, logger, message) {
73
+ const startTime = Date.now();
74
+ const messageInfo = { request: 'amqp', consumer: this.consumerName };
75
+ const rawPayload = JSON.parse(message.content.toString());
76
+ try {
77
+ const payload = this.validateAndParse(rawPayload);
78
+ logger.info(messageInfo, 'started handling message');
79
+ const response = await this.handlePayload(payload);
80
+ await this.handleSuccess(payload, response);
81
+ logger.info({ ...messageInfo, payload, durationMs: Date.now() - startTime }, 'finished handling message');
82
+ channel.ack(message);
83
+ }
84
+ catch (error) {
85
+ await this.handleError(channel, logger, message, rawPayload, error, messageInfo, startTime);
86
+ }
87
+ }
52
88
  getDeliveryCount(message) {
53
89
  const deliveryCount = message.properties.headers?.['x-delivery-count'];
54
90
  if (typeof deliveryCount === 'number') {
@@ -1 +1 @@
1
- {"version":3,"file":"consumer.js","sourceRoot":"","sources":["../src/consumer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"consumer.js","sourceRoot":"","sources":["../src/consumer.ts"],"names":[],"mappings":"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"}
package/dist/errors.d.ts CHANGED
@@ -9,17 +9,24 @@ export declare class AmqpUninitializedError extends AmqpError {
9
9
  export declare class AmqpConnectionError extends AmqpError {
10
10
  constructor(errorMessage: string, args: AmqpConfig);
11
11
  }
12
- export declare class AmqpPublisherError<T> extends AmqpError {
12
+ export declare class AmqpPublisherError<T extends object> extends AmqpError {
13
13
  constructor(...args: AmqpPublishArgs<T>);
14
14
  }
15
- export declare class AmqpConsumerError extends AmqpError {
16
- constructor(error: Error);
15
+ export declare class AmqpConsumerError<Payload extends object> extends AmqpError {
16
+ readonly payload: Payload;
17
+ constructor(payload: Payload, errorMessage: string, error?: Error);
17
18
  }
18
- export declare class AmqpRetriableError extends AmqpConsumerError {
19
+ export declare class AmqpRetriableError<Payload extends object> extends AmqpConsumerError<Payload> {
19
20
  readonly retryLimit: number;
20
- constructor(error: Error, retryLimit?: number);
21
+ constructor(payload: Payload, errorMessage: string, error?: Error, retryLimit?: number);
21
22
  }
22
- export declare class AmqpFatalError extends AmqpConsumerError {
23
- constructor(error: Error);
23
+ export declare class AmqpFatalError extends AmqpConsumerError<any> {
24
+ constructor(payload: any, errorMessage: string, error?: Error);
25
+ }
26
+ export declare class InvalidPayloadFormatError extends AmqpFatalError {
27
+ constructor(payload: any);
28
+ }
29
+ export declare class MissingPayloadHandlerError<Payload extends object> extends AmqpFatalError {
30
+ constructor(payload: Payload);
24
31
  }
25
32
  //# sourceMappingURL=errors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE1C,qBAAa,SAAU,SAAQ,KAAK;gBACpB,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM;CAG7C;AAED,qBAAa,sBAAuB,SAAQ,SAAS;;CAIpD;AAED,qBAAa,mBAAoB,SAAQ,SAAS;gBAClC,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU;CAGrD;AAGD,qBAAa,kBAAkB,CAAC,CAAC,CAAE,SAAQ,SAAS;gBACpC,GAAG,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC;CAG1C;AAED,qBAAa,iBAAkB,SAAQ,SAAS;gBAChC,KAAK,EAAE,KAAK;CAG3B;AAED,qBAAa,kBAAmB,SAAQ,iBAAiB;aACX,UAAU,EAAE,MAAM;gBAAhD,KAAK,EAAE,KAAK,EAAkB,UAAU,GAAE,MAAU;CAGnE;AAED,qBAAa,cAAe,SAAQ,iBAAiB;gBACrC,KAAK,EAAE,KAAK;CAG3B"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE1C,qBAAa,SAAU,SAAQ,KAAK;gBACpB,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM;CAG7C;AAED,qBAAa,sBAAuB,SAAQ,SAAS;;CAIpD;AAED,qBAAa,mBAAoB,SAAQ,SAAS;gBAClC,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU;CAGrD;AAGD,qBAAa,kBAAkB,CAAC,CAAC,SAAS,MAAM,CAAE,SAAQ,SAAS;gBACnD,GAAG,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC;CAG1C;AAED,qBAAa,iBAAiB,CAAC,OAAO,SAAS,MAAM,CAAE,SAAQ,SAAS;aACxC,OAAO,EAAE,OAAO;gBAAhB,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK;CAGpF;AAED,qBAAa,kBAAkB,CAAC,OAAO,SAAS,MAAM,CAAE,SAAQ,iBAAiB,CAAC,OAAO,CAAC;aACH,UAAU,EAAE,MAAM;gBAAzF,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,EAAkB,UAAU,GAAE,MAAU;CAG5G;AAED,qBAAa,cAAe,SAAQ,iBAAiB,CAAC,GAAG,CAAC;gBAC1C,OAAO,EAAE,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK;CAGhE;AAED,qBAAa,yBAA0B,SAAQ,cAAc;gBAC7C,OAAO,EAAE,GAAG;CAG3B;AAED,qBAAa,0BAA0B,CAAC,OAAO,SAAS,MAAM,CAAE,SAAQ,cAAc;gBACtE,OAAO,EAAE,OAAO;CAG/B"}
package/dist/errors.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AmqpFatalError = exports.AmqpRetriableError = exports.AmqpConsumerError = exports.AmqpPublisherError = exports.AmqpConnectionError = exports.AmqpUninitializedError = exports.AmqpError = void 0;
3
+ exports.MissingPayloadHandlerError = exports.InvalidPayloadFormatError = exports.AmqpFatalError = exports.AmqpRetriableError = exports.AmqpConsumerError = exports.AmqpPublisherError = exports.AmqpConnectionError = exports.AmqpUninitializedError = exports.AmqpError = void 0;
4
4
  class AmqpError extends Error {
5
5
  constructor(message, args) {
6
6
  super(`amqp error: ${message}, ${args ? JSON.stringify(args) : ''}`);
@@ -26,22 +26,35 @@ class AmqpPublisherError extends AmqpError {
26
26
  }
27
27
  exports.AmqpPublisherError = AmqpPublisherError;
28
28
  class AmqpConsumerError extends AmqpError {
29
- constructor(error) {
30
- super("Failed to consume message", { error });
29
+ constructor(payload, errorMessage, error) {
30
+ super(`Failed to consume message: ${errorMessage}`, error ? { cause: JSON.stringify(error) } : undefined);
31
+ this.payload = payload;
31
32
  }
32
33
  }
33
34
  exports.AmqpConsumerError = AmqpConsumerError;
34
35
  class AmqpRetriableError extends AmqpConsumerError {
35
- constructor(error, retryLimit = 0) {
36
- super(error);
36
+ constructor(payload, errorMessage, error, retryLimit = 0) {
37
+ super(payload, errorMessage, error);
37
38
  this.retryLimit = retryLimit;
38
39
  }
39
40
  }
40
41
  exports.AmqpRetriableError = AmqpRetriableError;
41
42
  class AmqpFatalError extends AmqpConsumerError {
42
- constructor(error) {
43
- super(error);
43
+ constructor(payload, errorMessage, error) {
44
+ super(payload, errorMessage, error);
44
45
  }
45
46
  }
46
47
  exports.AmqpFatalError = AmqpFatalError;
48
+ class InvalidPayloadFormatError extends AmqpFatalError {
49
+ constructor(payload) {
50
+ super(payload, 'Invalid payload format');
51
+ }
52
+ }
53
+ exports.InvalidPayloadFormatError = InvalidPayloadFormatError;
54
+ class MissingPayloadHandlerError extends AmqpFatalError {
55
+ constructor(payload) {
56
+ super(payload, 'No handler available for the message');
57
+ }
58
+ }
59
+ exports.MissingPayloadHandlerError = MissingPayloadHandlerError;
47
60
  //# sourceMappingURL=errors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":";;;AAGA,MAAa,SAAU,SAAQ,KAAK;IAChC,YAAY,OAAe,EAAE,IAAa;QACtC,KAAK,CAAC,eAAe,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACzE,CAAC;CACJ;AAJD,8BAIC;AAED,MAAa,sBAAuB,SAAQ,SAAS;IACjD;QACI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IAC5C,CAAC;CACJ;AAJD,wDAIC;AAED,MAAa,mBAAoB,SAAQ,SAAS;IAC9C,YAAY,YAAoB,EAAE,IAAgB;QAC9C,KAAK,CAAC,qCAAqC,YAAY,EAAE,EAAE,IAAI,CAAC,CAAC;IACrE,CAAC;CACJ;AAJD,kDAIC;AAGD,MAAa,kBAAsB,SAAQ,SAAS;IAChD,YAAY,GAAG,IAAwB;QACnC,KAAK,CAAC,2BAA2B,EAAE,IAAI,CAAC,CAAC;IAC7C,CAAC;CACJ;AAJD,gDAIC;AAED,MAAa,iBAAkB,SAAQ,SAAS;IAC5C,YAAY,KAAY;QACpB,KAAK,CAAC,2BAA2B,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IAClD,CAAC;CACJ;AAJD,8CAIC;AAED,MAAa,kBAAmB,SAAQ,iBAAiB;IACrD,YAAY,KAAY,EAAkB,aAAqB,CAAC;QAC5D,KAAK,CAAC,KAAK,CAAC,CAAC;QADyB,eAAU,GAAV,UAAU,CAAY;IAEhE,CAAC;CACJ;AAJD,gDAIC;AAED,MAAa,cAAe,SAAQ,iBAAiB;IACjD,YAAY,KAAY;QACpB,KAAK,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;CACJ;AAJD,wCAIC"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":";;;AAGA,MAAa,SAAU,SAAQ,KAAK;IAChC,YAAY,OAAe,EAAE,IAAa;QACtC,KAAK,CAAC,eAAe,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACzE,CAAC;CACJ;AAJD,8BAIC;AAED,MAAa,sBAAuB,SAAQ,SAAS;IACjD;QACI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IAC5C,CAAC;CACJ;AAJD,wDAIC;AAED,MAAa,mBAAoB,SAAQ,SAAS;IAC9C,YAAY,YAAoB,EAAE,IAAgB;QAC9C,KAAK,CAAC,qCAAqC,YAAY,EAAE,EAAE,IAAI,CAAC,CAAC;IACrE,CAAC;CACJ;AAJD,kDAIC;AAGD,MAAa,kBAAqC,SAAQ,SAAS;IAC/D,YAAY,GAAG,IAAwB;QACnC,KAAK,CAAC,2BAA2B,EAAE,IAAI,CAAC,CAAC;IAC7C,CAAC;CACJ;AAJD,gDAIC;AAED,MAAa,iBAA0C,SAAQ,SAAS;IACpE,YAA4B,OAAgB,EAAE,YAAoB,EAAE,KAAa;QAC7E,KAAK,CAAC,8BAA8B,YAAY,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QADlF,YAAO,GAAP,OAAO,CAAS;IAE5C,CAAC;CACJ;AAJD,8CAIC;AAED,MAAa,kBAA2C,SAAQ,iBAA0B;IACtF,YAAY,OAAgB,EAAE,YAAoB,EAAE,KAAa,EAAkB,aAAqB,CAAC;QACrG,KAAK,CAAC,OAAO,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;QAD2C,eAAU,GAAV,UAAU,CAAY;IAEzG,CAAC;CACJ;AAJD,gDAIC;AAED,MAAa,cAAe,SAAQ,iBAAsB;IACtD,YAAY,OAAY,EAAE,YAAoB,EAAE,KAAa;QACzD,KAAK,CAAC,OAAO,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;IACxC,CAAC;CACJ;AAJD,wCAIC;AAED,MAAa,yBAA0B,SAAQ,cAAc;IACzD,YAAY,OAAY;QACpB,KAAK,CAAC,OAAO,EAAE,wBAAwB,CAAC,CAAC;IAC7C,CAAC;CACJ;AAJD,8DAIC;AAED,MAAa,0BAAmD,SAAQ,cAAc;IAClF,YAAY,OAAgB;QACxB,KAAK,CAAC,OAAO,EAAE,sCAAsC,CAAC,CAAC;IAC3D,CAAC;CACJ;AAJD,gEAIC"}
package/dist/types.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export type AmqpPublishArgs<T> = [exchange: string, topic: string, message: T];
1
+ export type AmqpPublishArgs<T extends object> = [exchange: string, topic: string, message: T];
2
2
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ido_kawaz/amqp-client",
3
- "version": "5.0.0",
3
+ "version": "6.1.0",
4
4
  "description": "AMQP client library for Kawaz Plus services",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -13,8 +13,8 @@
13
13
  "build": "npm run clean && tsc",
14
14
  "build:watch": "tsc --watch",
15
15
  "build:advanced": "npm run clean:advanced && npm i && tsc",
16
- "test": "npm run build && jest --runInBand",
17
- "test:advanced": "npm run build:advanced && jest --runInBand",
16
+ "test": "npm run build && jest --runInBand --verbose",
17
+ "test:advanced": "npm run build:advanced && jest --runInBand --verbose",
18
18
  "package": "npm run test:advanced && npm publish --access public"
19
19
  },
20
20
  "keywords": [