sqs-consumer 7.0.1 → 7.0.3

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.
@@ -0,0 +1,29 @@
1
+ name: "Lock Threads"
2
+
3
+ on:
4
+ schedule:
5
+ - cron: "0 * * * *" # Once a day, at midnight UTC
6
+ workflow_dispatch:
7
+
8
+ permissions:
9
+ issues: write
10
+ pull-requests: write
11
+
12
+ concurrency:
13
+ group: lock
14
+
15
+ jobs:
16
+ action:
17
+ runs-on: ubuntu-latest
18
+ steps:
19
+ - uses: dessant/lock-threads@v4
20
+ with:
21
+ github-token: ${{ secrets.GITHUB_TOKEN }}
22
+ issue-inactive-days: "30" # Lock issues after 30 days of being closed
23
+ pr-inactive-days: "5" # Lock closed PRs after 5 days. This ensures that issues that stem from a PR are opened as issues, rather than comments on the recently merged PR.
24
+ add-issue-labels: "outdated"
25
+ exclude-issue-created-before: "2023-01-01"
26
+ issue-comment: >
27
+ This issue has been closed for more than 30 days. If this issue is still occuring, please open a new issue with more recent context.
28
+ pr-comment: >
29
+ This pull request has already been merged/closed. If you experience issues related to these changes, please open a new issue referencing this pull request.
@@ -4,8 +4,6 @@ import { ConsumerOptions, TypedEventEmitter, StopOptions } from './types';
4
4
  */
5
5
  export declare class Consumer extends TypedEventEmitter {
6
6
  private pollingTimeoutId;
7
- private heartbeatTimeoutId;
8
- private handleMessageTimeoutId;
9
7
  private stopped;
10
8
  private queueUrl;
11
9
  private handleMessage;
@@ -34,7 +32,7 @@ export declare class Consumer extends TypedEventEmitter {
34
32
  /**
35
33
  * Stop polling the queue for messages (pre existing requests will still be made until concluded).
36
34
  */
37
- stop(options: StopOptions): void;
35
+ stop(options?: StopOptions): void;
38
36
  /**
39
37
  * Returns the current polling state of the consumer: `true` if it is actively polling, `false` if it is not.
40
38
  */
package/dist/consumer.js CHANGED
@@ -17,8 +17,6 @@ class Consumer extends types_1.TypedEventEmitter {
17
17
  var _a, _b, _c, _d;
18
18
  super();
19
19
  this.pollingTimeoutId = undefined;
20
- this.heartbeatTimeoutId = undefined;
21
- this.handleMessageTimeoutId = undefined;
22
20
  this.stopped = true;
23
21
  /**
24
22
  * A reusable options object for sqs.send that's used to avoid duplication.
@@ -186,10 +184,11 @@ class Consumer extends types_1.TypedEventEmitter {
186
184
  * @param message The message that was delivered from SQS
187
185
  */
188
186
  async processMessage(message) {
187
+ let heartbeatTimeoutId = undefined;
189
188
  try {
190
189
  this.emit('message_received', message);
191
190
  if (this.heartbeatInterval) {
192
- this.heartbeatTimeoutId = this.startHeartbeat(message);
191
+ heartbeatTimeoutId = this.startHeartbeat(message);
193
192
  }
194
193
  const ackedMessage = await this.executeHandler(message);
195
194
  if ((ackedMessage === null || ackedMessage === void 0 ? void 0 : ackedMessage.MessageId) === message.MessageId) {
@@ -204,8 +203,7 @@ class Consumer extends types_1.TypedEventEmitter {
204
203
  }
205
204
  }
206
205
  finally {
207
- clearInterval(this.heartbeatTimeoutId);
208
- this.heartbeatTimeoutId = undefined;
206
+ clearInterval(heartbeatTimeoutId);
209
207
  }
210
208
  }
211
209
  /**
@@ -213,12 +211,13 @@ class Consumer extends types_1.TypedEventEmitter {
213
211
  * @param messages The messages that were delivered from SQS
214
212
  */
215
213
  async processMessageBatch(messages) {
214
+ let heartbeatTimeoutId = undefined;
216
215
  try {
217
216
  messages.forEach((message) => {
218
217
  this.emit('message_received', message);
219
218
  });
220
219
  if (this.heartbeatInterval) {
221
- this.heartbeatTimeoutId = this.startHeartbeat(null, messages);
220
+ heartbeatTimeoutId = this.startHeartbeat(null, messages);
222
221
  }
223
222
  const ackedMessages = await this.executeBatchHandler(messages);
224
223
  if ((ackedMessages === null || ackedMessages === void 0 ? void 0 : ackedMessages.length) > 0) {
@@ -235,8 +234,7 @@ class Consumer extends types_1.TypedEventEmitter {
235
234
  }
236
235
  }
237
236
  finally {
238
- clearInterval(this.heartbeatTimeoutId);
239
- this.heartbeatTimeoutId = undefined;
237
+ clearInterval(heartbeatTimeoutId);
240
238
  }
241
239
  }
242
240
  /**
@@ -297,11 +295,12 @@ class Consumer extends types_1.TypedEventEmitter {
297
295
  * @param message The message that was received from SQS
298
296
  */
299
297
  async executeHandler(message) {
298
+ let handleMessageTimeoutId = undefined;
300
299
  try {
301
300
  let result;
302
301
  if (this.handleMessageTimeout) {
303
302
  const pending = new Promise((_, reject) => {
304
- this.handleMessageTimeoutId = setTimeout(() => {
303
+ handleMessageTimeoutId = setTimeout(() => {
305
304
  reject(new errors_1.TimeoutError());
306
305
  }, this.handleMessageTimeout);
307
306
  });
@@ -320,8 +319,8 @@ class Consumer extends types_1.TypedEventEmitter {
320
319
  throw err;
321
320
  }
322
321
  finally {
323
- if (this.handleMessageTimeoutId) {
324
- clearTimeout(this.handleMessageTimeoutId);
322
+ if (handleMessageTimeoutId) {
323
+ clearTimeout(handleMessageTimeoutId);
325
324
  }
326
325
  }
327
326
  }
package/dist/types.d.ts CHANGED
@@ -69,7 +69,7 @@ export interface ConsumerOptions {
69
69
  sqs?: SQSClient;
70
70
  /**
71
71
  * The AWS region.
72
- * @defaultValue `eu-west-1`
72
+ * @defaultValue process.env.AWS_REGION || `eu-west-1`
73
73
  */
74
74
  region?: string;
75
75
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sqs-consumer",
3
- "version": "7.0.1",
3
+ "version": "7.0.3",
4
4
  "description": "Build SQS-based Node applications without the boilerplate",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
package/src/consumer.ts CHANGED
@@ -35,8 +35,6 @@ const debug = Debug('sqs-consumer');
35
35
  */
36
36
  export class Consumer extends TypedEventEmitter {
37
37
  private pollingTimeoutId: NodeJS.Timeout | undefined = undefined;
38
- private heartbeatTimeoutId: NodeJS.Timeout | undefined = undefined;
39
- private handleMessageTimeoutId: NodeJS.Timeout | undefined = undefined;
40
38
  private stopped = true;
41
39
  private queueUrl: string;
42
40
  private handleMessage: (message: Message) => Promise<Message | void>;
@@ -102,7 +100,7 @@ export class Consumer extends TypedEventEmitter {
102
100
  /**
103
101
  * Stop polling the queue for messages (pre existing requests will still be made until concluded).
104
102
  */
105
- public stop(options: StopOptions): void {
103
+ public stop(options?: StopOptions): void {
106
104
  if (this.stopped) {
107
105
  debug('Consumer was already stopped');
108
106
  return;
@@ -242,11 +240,13 @@ export class Consumer extends TypedEventEmitter {
242
240
  * @param message The message that was delivered from SQS
243
241
  */
244
242
  private async processMessage(message: Message): Promise<void> {
243
+ let heartbeatTimeoutId: NodeJS.Timeout | undefined = undefined;
244
+
245
245
  try {
246
246
  this.emit('message_received', message);
247
247
 
248
248
  if (this.heartbeatInterval) {
249
- this.heartbeatTimeoutId = this.startHeartbeat(message);
249
+ heartbeatTimeoutId = this.startHeartbeat(message);
250
250
  }
251
251
 
252
252
  const ackedMessage = await this.executeHandler(message);
@@ -263,8 +263,7 @@ export class Consumer extends TypedEventEmitter {
263
263
  await this.changeVisibilityTimeout(message, 0);
264
264
  }
265
265
  } finally {
266
- clearInterval(this.heartbeatTimeoutId);
267
- this.heartbeatTimeoutId = undefined;
266
+ clearInterval(heartbeatTimeoutId);
268
267
  }
269
268
  }
270
269
 
@@ -273,13 +272,15 @@ export class Consumer extends TypedEventEmitter {
273
272
  * @param messages The messages that were delivered from SQS
274
273
  */
275
274
  private async processMessageBatch(messages: Message[]): Promise<void> {
275
+ let heartbeatTimeoutId: NodeJS.Timeout | undefined = undefined;
276
+
276
277
  try {
277
278
  messages.forEach((message) => {
278
279
  this.emit('message_received', message);
279
280
  });
280
281
 
281
282
  if (this.heartbeatInterval) {
282
- this.heartbeatTimeoutId = this.startHeartbeat(null, messages);
283
+ heartbeatTimeoutId = this.startHeartbeat(null, messages);
283
284
  }
284
285
 
285
286
  const ackedMessages = await this.executeBatchHandler(messages);
@@ -298,8 +299,7 @@ export class Consumer extends TypedEventEmitter {
298
299
  await this.changeVisibilityTimeoutBatch(messages, 0);
299
300
  }
300
301
  } finally {
301
- clearInterval(this.heartbeatTimeoutId);
302
- this.heartbeatTimeoutId = undefined;
302
+ clearInterval(heartbeatTimeoutId);
303
303
  }
304
304
  }
305
305
 
@@ -387,12 +387,14 @@ export class Consumer extends TypedEventEmitter {
387
387
  * @param message The message that was received from SQS
388
388
  */
389
389
  private async executeHandler(message: Message): Promise<Message> {
390
+ let handleMessageTimeoutId: NodeJS.Timeout | undefined = undefined;
391
+
390
392
  try {
391
393
  let result;
392
394
 
393
395
  if (this.handleMessageTimeout) {
394
396
  const pending = new Promise((_, reject) => {
395
- this.handleMessageTimeoutId = setTimeout((): void => {
397
+ handleMessageTimeoutId = setTimeout((): void => {
396
398
  reject(new TimeoutError());
397
399
  }, this.handleMessageTimeout);
398
400
  });
@@ -409,8 +411,8 @@ export class Consumer extends TypedEventEmitter {
409
411
  : `Unexpected message handler failure: ${err.message}`;
410
412
  throw err;
411
413
  } finally {
412
- if (this.handleMessageTimeoutId) {
413
- clearTimeout(this.handleMessageTimeoutId);
414
+ if (handleMessageTimeoutId) {
415
+ clearTimeout(handleMessageTimeoutId);
414
416
  }
415
417
  }
416
418
  }
package/src/types.ts CHANGED
@@ -69,7 +69,7 @@ export interface ConsumerOptions {
69
69
  sqs?: SQSClient;
70
70
  /**
71
71
  * The AWS region.
72
- * @defaultValue `eu-west-1`
72
+ * @defaultValue process.env.AWS_REGION || `eu-west-1`
73
73
  */
74
74
  region?: string;
75
75
  /**