@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 +1 -1
- package/dist/hooks.js +2 -0
- package/dist/index.d.ts +8 -8
- package/dist/index.js +5 -2
- package/package.json +14 -13
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# SQS consumer using undici
|
|
2
2
|
|
|
3
|
-
[](https://www.npmjs.com/package/@fgiova/sqs-consumer)
|
|
4
4
|

|
|
5
5
|
[](http://www.typescriptlang.org/)
|
|
6
6
|
[](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<
|
|
30
|
-
onHandlerError?: (message: Message, error: Error) => Promise<
|
|
31
|
-
onSuccess?: (message: Message) => Promise<
|
|
32
|
-
onError?: (hook: HookName, message: Message, error: Error) => Promise<
|
|
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<
|
|
70
|
-
addHook(hookName: "onHandlerError", value: (message: Message, error: Error) => Promise<
|
|
71
|
-
addHook(hookName: "onSuccess", value: (message: Message) => Promise<
|
|
72
|
-
addHook(hookName: "onError", value: (hook: HookName, message: Message, error: Error) => Promise<
|
|
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 ??
|
|
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
|
|
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": "
|
|
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.
|
|
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": "^
|
|
55
|
-
"@typescript-eslint/eslint-plugin": "^6.
|
|
56
|
-
"@typescript-eslint/parser": "^6.
|
|
57
|
-
"conventional-changelog-conventionalcommits": "^
|
|
58
|
-
"eslint": "^8.
|
|
59
|
-
"eslint-plugin-import": "^2.
|
|
60
|
-
"semantic-release": "^
|
|
61
|
-
"tap": "^
|
|
62
|
-
"testcontainers": "^10.
|
|
63
|
-
"ts-node": "^10.9.
|
|
64
|
-
"typescript": "^5.
|
|
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
|
}
|