@fgiova/sqs-consumer 1.0.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # SQS consumer using undici
2
2
 
3
- [![NPM version](https://img.shields.io/npm/v/@fgiova/mini-sqs-client.svg?style=flat)](https://www.npmjs.com/package/@fgiova/sqs-consumer)
3
+ [![NPM version](https://img.shields.io/npm/v/@fgiova/sqs-consumer.svg?style=flat)](https://www.npmjs.com/package/@fgiova/sqs-consumer)
4
4
  ![CI workflow](https://github.com/fgiova/sqs-consumer/actions/workflows/node.js.yml/badge.svg)
5
5
  [![TypeScript](https://img.shields.io/badge/%3C%2F%3E-TypeScript-%230074c1.svg)](http://www.typescriptlang.org/)
6
6
  [![Maintainability](https://api.codeclimate.com/v1/badges/0c10549e75ef6c798dfd/maintainability)](https://codeclimate.com/github/fgiova/sqs-consumer/maintainability)
package/dist/hooks.js CHANGED
@@ -44,6 +44,7 @@ class Hooks {
44
44
  type: "void"
45
45
  },
46
46
  };
47
+ // eslint-disable-next-line @typescript-eslint/ban-types
47
48
  hooks;
48
49
  logger;
49
50
  constructor(logger = console) {
@@ -59,6 +60,7 @@ class Hooks {
59
60
  [this.hookSymbols.onSQSError.S]: [],
60
61
  };
61
62
  }
63
+ // eslint-disable-next-line @typescript-eslint/ban-types
62
64
  addHook(hook, fn) {
63
65
  const hookSymbol = this.hookSymbols[hook];
64
66
  if (!hookSymbol)
package/dist/index.d.ts CHANGED
@@ -26,10 +26,10 @@ type HooksOptions = {
26
26
  onPoll?: (messages: Message[]) => Promise<Message[]>;
27
27
  onMessage?: (message: Message) => Promise<Message>;
28
28
  onHandlerSuccess?: (message: Message) => Promise<Message>;
29
- onHandlerTimeout?: (message: Message) => Promise<Boolean>;
30
- onHandlerError?: (message: Message, error: Error) => Promise<Boolean>;
31
- onSuccess?: (message: Message) => Promise<Boolean>;
32
- onError?: (hook: HookName, message: Message, error: Error) => Promise<Boolean>;
29
+ onHandlerTimeout?: (message: Message) => Promise<boolean>;
30
+ onHandlerError?: (message: Message, error: Error) => Promise<boolean>;
31
+ onSuccess?: (message: Message) => Promise<boolean>;
32
+ onError?: (hook: HookName, message: Message, error: Error) => Promise<boolean>;
33
33
  onSQSError?: (error: Error, message?: Message) => Promise<void>;
34
34
  };
35
35
  export type SQSConsumerOptions = {
@@ -66,10 +66,10 @@ export declare class SQSConsumer {
66
66
  addHook(hookName: "onPoll", value: (messages: Message[]) => Promise<Message[]>): void;
67
67
  addHook(hookName: "onMessage", value: (message: Message) => Promise<Message>): void;
68
68
  addHook(hookName: "onHandlerSuccess", value: (message: Message) => Promise<Message>): void;
69
- addHook(hookName: "onHandlerTimeout", value: (message: Message) => Promise<Boolean>): void;
70
- addHook(hookName: "onHandlerError", value: (message: Message, error: Error) => Promise<Boolean>): void;
71
- addHook(hookName: "onSuccess", value: (message: Message) => Promise<Boolean>): void;
72
- addHook(hookName: "onError", value: (hook: HookName, message: Message, error: Error) => Promise<Boolean>): void;
69
+ addHook(hookName: "onHandlerTimeout", value: (message: Message) => Promise<boolean>): void;
70
+ addHook(hookName: "onHandlerError", value: (message: Message, error: Error) => Promise<boolean>): void;
71
+ addHook(hookName: "onSuccess", value: (message: Message) => Promise<boolean>): void;
72
+ addHook(hookName: "onError", value: (hook: HookName, message: Message, error: Error) => Promise<boolean>): void;
73
73
  addHook(hookName: "onSQSError", value: (error: Error, message?: Message) => Promise<void>): void;
74
74
  addHook(hookName: HookName, value: Function): void;
75
75
  }
package/dist/index.js CHANGED
@@ -9,6 +9,7 @@ const hooks_1 = require("./hooks");
9
9
  const errors_1 = require("./errors");
10
10
  const promises_1 = require("timers/promises");
11
11
  const p_map_1 = __importDefault(require("p-map"));
12
+ const unpromise_1 = require("@watchable/unpromise");
12
13
  class SQSConsumer {
13
14
  queueARN;
14
15
  handlerOptions;
@@ -35,7 +36,7 @@ class SQSConsumer {
35
36
  this.handlerOptions = {
36
37
  deleteMessage: options.handlerOptions?.deleteMessage ?? true,
37
38
  extendVisibilityTimeout: options.handlerOptions?.extendVisibilityTimeout ?? true,
38
- executionTimeout: options.handlerOptions?.executionTimeout ?? 30000,
39
+ executionTimeout: options.handlerOptions?.executionTimeout ?? 30_000,
39
40
  parallelExecution: options.handlerOptions?.parallelExecution ?? true
40
41
  };
41
42
  this.consumerOptions = {
@@ -79,7 +80,7 @@ class SQSConsumer {
79
80
  try {
80
81
  let handlerResult;
81
82
  if (this.handlerOptions.executionTimeout) {
82
- const response = await Promise.race([
83
+ const response = await unpromise_1.Unpromise.race([
83
84
  handler(message),
84
85
  new Promise((resolve, reject) => {
85
86
  setTimeout(() => {
@@ -190,6 +191,7 @@ class SQSConsumer {
190
191
  this.polling = false;
191
192
  await this.pollMessages();
192
193
  }
194
+ // eslint-disable-next-line @typescript-eslint/require-await
193
195
  async start() {
194
196
  if (this.running)
195
197
  throw new Error("Consumer is already running");
@@ -210,6 +212,7 @@ class SQSConsumer {
210
212
  this.destroyed = true;
211
213
  }
212
214
  }
215
+ // eslint-disable-next-line @typescript-eslint/ban-types
213
216
  addHook(hookName, value) {
214
217
  return this.hooks.addHook(hookName, value);
215
218
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fgiova/sqs-consumer",
3
- "version": "1.0.0",
3
+ "version": "2.0.0",
4
4
  "main": "dist/index.js",
5
5
  "files": [
6
6
  "dist"
@@ -42,25 +42,26 @@
42
42
  },
43
43
  "dependencies": {
44
44
  "@fgiova/mini-sqs-client": "^2.2.1",
45
+ "@watchable/unpromise": "^1.0.2",
45
46
  "p-map": "^4.0.0"
46
47
  },
47
48
  "peerDependencies": {
48
49
  "@fgiova/aws-signature": "^2.0.0"
49
50
  },
50
51
  "devDependencies": {
51
- "@aws-sdk/client-sqs": "^3.451.0",
52
+ "@aws-sdk/client-sqs": "^3.758.0",
52
53
  "@semantic-release/changelog": "^6.0.3",
53
54
  "@semantic-release/git": "^10.0.1",
54
- "@types/node": "^18.18.6",
55
- "@typescript-eslint/eslint-plugin": "^6.4.0",
56
- "@typescript-eslint/parser": "^6.4.0",
57
- "conventional-changelog-conventionalcommits": "^6.1.0",
58
- "eslint": "^8.47.0",
59
- "eslint-plugin-import": "^2.28.1",
60
- "semantic-release": "^21.0.9",
61
- "tap": "^18.6.1",
62
- "testcontainers": "^10.2.1",
63
- "ts-node": "^10.9.1",
64
- "typescript": "^5.2.2"
55
+ "@types/node": "^20.17.23",
56
+ "@typescript-eslint/eslint-plugin": "^6.21.0",
57
+ "@typescript-eslint/parser": "^6.21.0",
58
+ "conventional-changelog-conventionalcommits": "^8.0.0",
59
+ "eslint": "^8.57.1",
60
+ "eslint-plugin-import": "^2.31.0",
61
+ "semantic-release": "^24.2.3",
62
+ "tap": "^21.1.0",
63
+ "testcontainers": "^10.18.0",
64
+ "ts-node": "^10.9.2",
65
+ "typescript": "^5.8.2"
65
66
  }
66
67
  }