diff --git a/lib/index.d.ts b/lib/index.d.ts
index b6df273..993b77f 100644
--- a/lib/index.d.ts
+++ b/lib/index.d.ts
@@ -1,8 +1,5 @@
-///
-import AWS, { AWSError } from "aws-sdk";
-import EventEmitter from "events";
-import { QueueAttributeMap, SendMessageBatchResult, SendMessageResult } from "aws-sdk/clients/sqs";
-import { PromiseResult } from "aws-sdk/lib/request";
+import { SendMessageBatchCommandOutput, SendMessageCommandOutput } from "@aws-sdk/client-sqs";
+import { EventEmitter } from "events";
export default class SQS {
private name;
private emitter;
@@ -37,7 +34,7 @@ export default class SQS {
* @param {String} opts.FifoQueue='false' [Use FIFO (true) or Standard queue (false)]
* @return {Promise}
*/
- createQueue(name: string, opts?: QueueAttributeMap): Promise;
+ createQueue(name: string, opts?: Record): Promise;
/**
* Publish on SQS
* @param {string} name
@@ -48,7 +45,7 @@ export default class SQS {
* @param {Number} [options.delay] [in seconds]
* @return {Promise}
*/
- publish(name: string, content: Record, meta?: Record, handle?: boolean, options?: Record): Promise>;
+ publish(name: string, content: Record, meta?: Record, handle?: boolean, options?: Record): Promise;
/**
* Publish on SQS in batch
* @param {string} name
@@ -59,8 +56,8 @@ export default class SQS {
* @param {Number} [options.delay] [in seconds]
* @return {Promise}
*/
- publishBatch(name: string, contentList: Record[], meta?: Record, handle?: boolean, options?: Record): Promise>;
- publishFifo(name: string, content: Record, meta: Record, group: Record, handle?: boolean): Promise>;
+ publishBatch(name: string, contentList: Record[], meta?: Record, handle?: boolean, options?: Record): Promise;
+ publishFifo(name: string, content: Record, meta: Record, group: Record, handle?: boolean): Promise;
getQueueUrl(name: string): string;
/**
* Subscribe to a queue, using long polling
@@ -68,22 +65,14 @@ export default class SQS {
subscribe(name: string, cb: (arg1: Record, arg2: Record) => void, opts?: Record): Promise;
deleteMessage(name: string, messageId: any, handle: string): Promise;
returnMessage(name: string, messageId: any, handle: string): Promise;
- fetchMessages(name: string, number?: number): Promise<({
+ fetchMessages(name: string, number?: number): Promise<{
data: any;
- ack: () => Promise;
- nack: () => Promise;
- id?: undefined;
- handle?: undefined;
- queueAttributes?: undefined;
- messageAttributes?: undefined;
- } | {
id: string;
handle: string;
- queueAttributes: AWS.SQS.MessageSystemAttributeMap;
- messageAttributes: AWS.SQS.MessageBodyAttributeMap;
- data?: undefined;
- ack?: undefined;
- nack?: undefined;
- })[][]>;
+ queueAttributes: Partial>;
+ messageAttributes: Record;
+ ack: () => Promise;
+ nack: () => Promise;
+ }[]>;
fetchOne(name: string): Promise;
}
diff --git a/lib/index.js b/lib/index.js
index 77b5e01..fc483e4 100644
--- a/lib/index.js
+++ b/lib/index.js
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
-const aws_sdk_1 = __importDefault(require("aws-sdk"));
+const client_sqs_1 = require("@aws-sdk/client-sqs");
const safely_parse_json_1 = __importDefault(require("safely-parse-json"));
const sqs_consumer_1 = require("sqs-consumer");
const uuid_1 = require("uuid");
@@ -66,7 +66,7 @@ class SQS {
...(region && { region }),
...(accountId && { accountId })
};
- this.client = new aws_sdk_1.default.SQS(this.config);
+ this.client = new client_sqs_1.SQSClient(this.config);
this.log(`Connected on SQS:${this.name}`, this.config);
return this;
}
@@ -95,12 +95,11 @@ class SQS {
// FifoQueue: 'false', // use standard by default
}, opts);
try {
- const response = await this.client
- .createQueue({
+ const command = new client_sqs_1.CreateQueueCommand({
QueueName: name,
Attributes: options,
- })
- .promise();
+ });
+ const response = await this.client.send(command);
const queueUrl = response.QueueUrl;
const message = `Created queue ${name} => ${queueUrl}`;
this.log(message, { name, queueUrl });
@@ -130,7 +129,8 @@ class SQS {
params.DelaySeconds = options.delay;
}
try {
- const res = await this.client.sendMessage(params).promise();
+ const command = new client_sqs_1.SendMessageCommand(params);
+ const res = await this.client.send(command);
return res;
}
catch (err) {
@@ -143,6 +143,8 @@ class SQS {
if (handle === false) {
throw err;
}
+ // Return empty response when error is handled
+ return {};
}
}
/**
@@ -169,7 +171,8 @@ class SQS {
})),
};
try {
- const res = await this.client.sendMessageBatch(params).promise();
+ const command = new client_sqs_1.SendMessageBatchCommand(params);
+ const res = await this.client.send(command);
return res;
}
catch (err) {
@@ -182,6 +185,8 @@ class SQS {
if (handle === false) {
throw err;
}
+ // Return empty response when error is handled
+ return { Successful: [], Failed: [] };
}
}
async publishFifo(name, content, meta = {}, group, handle = true) {
@@ -192,7 +197,8 @@ class SQS {
MessageDeduplicationId: group.id,
};
try {
- const res = await this.client.sendMessage(params).promise();
+ const command = new client_sqs_1.SendMessageCommand(params);
+ const res = await this.client.send(command);
return res;
}
catch (err) {
@@ -205,6 +211,8 @@ class SQS {
if (handle === false) {
throw err;
}
+ // Return empty response when error is handled
+ return {};
}
}
getQueueUrl(name) {
@@ -259,7 +267,8 @@ class SQS {
QueueUrl: queueUrl,
ReceiptHandle: handle,
};
- await this.client.deleteMessage(params).promise();
+ const command = new client_sqs_1.DeleteMessageCommand(params);
+ await this.client.send(command);
}
async returnMessage(name, messageId, handle) {
const queueUrl = this.getQueueUrl(name);
@@ -268,7 +277,8 @@ class SQS {
ReceiptHandle: handle,
VisibilityTimeout: 0,
};
- await this.client.changeMessageVisibility(params).promise();
+ const command = new client_sqs_1.ChangeMessageVisibilityCommand(params);
+ await this.client.send(command);
}
async fetchMessages(name, number = 10) {
const queueUrl = this.getQueueUrl(name);
@@ -276,25 +286,23 @@ class SQS {
QueueUrl: queueUrl,
MaxNumberOfMessages: number,
};
- const res = await this.client.receiveMessage(params).promise();
- return res.Messages.map((msg) => {
- return [
- {
- data: (0, safely_parse_json_1.default)(msg.Body),
- ack: () => {
- return this.deleteMessage(name, msg.MessageId, msg.ReceiptHandle);
- },
- nack: () => {
- return this.returnMessage(name, msg.MessageId, msg.ReceiptHandle);
- },
+ const command = new client_sqs_1.ReceiveMessageCommand(params);
+ const res = await this.client.send(command);
+ const messages = res.Messages || [];
+ return messages.map((msg) => {
+ return {
+ data: (0, safely_parse_json_1.default)(msg.Body),
+ id: msg.MessageId,
+ handle: msg.ReceiptHandle,
+ queueAttributes: msg.Attributes,
+ messageAttributes: msg.MessageAttributes,
+ ack: () => {
+ return this.deleteMessage(name, msg.MessageId, msg.ReceiptHandle);
},
- {
- id: msg.MessageId,
- handle: msg.ReceiptHandle,
- queueAttributes: msg.Attributes,
- messageAttributes: msg.MessageAttributes,
+ nack: () => {
+ return this.returnMessage(name, msg.MessageId, msg.ReceiptHandle);
},
- ];
+ };
});
}
async fetchOne(name) {
@@ -303,4 +311,4 @@ class SQS {
}
}
exports.default = SQS;
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxzREFBd0M7QUFDeEMsMEVBQXlDO0FBQ3pDLCtDQUF3QztBQWN4QywrQkFBb0M7QUFDcEMsaUNBQThCO0FBRTlCLE1BQXFCLEdBQUc7SUFDZCxJQUFJLENBQVM7SUFDYixPQUFPLENBQWU7SUFDdEIsTUFBTSxDQUFzQjtJQUM1QixNQUFNLENBQVU7SUFDaEIsTUFBTSxDQUF5QjtJQUV2QyxZQUFZLElBQVksRUFBRSxPQUFxQixFQUFFLFNBQThCLEVBQUU7UUFDL0UsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUU7WUFDdkIsTUFBTSxDQUFDLFdBQVcsR0FBRztnQkFDbkIsS0FBSyxFQUFFLElBQUksYUFBSyxDQUFDO29CQUNmLFNBQVMsRUFBRSxJQUFJO2lCQUNoQixDQUFDO2FBQ0gsQ0FBQztTQUNIO1FBQ0QsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUN6QjtZQUNFLE1BQU0sRUFBRSxXQUFXO1lBQ25CLFNBQVMsRUFBRSxjQUFjO1NBQzFCLEVBQ0QsTUFBTSxDQUNQLENBQUM7UUFDRixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztJQUNyQixDQUFDO0lBRUQsR0FBRyxDQUFDLE9BQWUsRUFBRSxJQUEwQjtRQUM3QyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDdkIsT0FBTyxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2xCLE9BQU87WUFDUCxJQUFJO1NBQ0wsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELE9BQU8sQ0FBQyxPQUFlLEVBQUUsSUFBMEI7UUFDakQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENB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
\ No newline at end of file
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxvREFjNkI7QUFDN0IsMEVBQXlDO0FBQ3pDLCtDQUF3QztBQUV4QywrQkFBb0M7QUFDcEMsaUNBQThCO0FBRTlCLE1BQXFCLEdBQUc7SUFDZCxJQUFJLENBQVM7SUFDYixPQUFPLENBQWU7SUFDdEIsTUFBTSxDQUFzQjtJQUM1QixNQUFNLENBQVk7SUFDbEIsTUFBTSxDQUF5QjtJQUV2QyxZQUFZLElBQVksRUFBRSxPQUFxQixFQUFFLFNBQThCLEVBQUU7UUFDL0UsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN4QixNQUFNLENBQUMsV0FBVyxHQUFHO2dCQUNuQixLQUFLLEVBQUUsSUFBSSxhQUFLLENBQUM7b0JBQ2YsU0FBUyxFQUFFLElBQUk7aUJBQ2hCLENBQUM7YUFDSCxDQUFDO1FBQ0osQ0FBQztRQUNELElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FDekI7WUFDRSxNQUFNLEVBQUUsV0FBVztZQUNuQixTQUFTLEVBQUUsY0FBYztTQUMxQixFQUNELE1BQU0sQ0FDUCxDQUFDO1FBQ0YsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7SUFDckIsQ0FBQztJQUVELEdBQUcsQ0FBQyxPQUFlLEVBQUUsSUFBMEI7UUFDN0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ3ZCLE9BQU8sRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNsQixPQUFPO1lBQ1AsSUFBSTtTQUNMLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxPQUFPLENBQUMsT0FBZSxFQUFFLElBQTBCO1FBQ2pELElBQUksQ0FBQyxPQUFPLENB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
\ No newline at end of file
diff --git a/package.json b/package.json
index 96c4231..4864604 100644
--- a/package.json
+++ b/package.json
@@ -33,15 +33,12 @@
"eslint-import-resolver-typescript": "^2.4.0",
"eslint-plugin-es5": "^1.5.0",
"eslint-plugin-import": "^2.23.4",
- "typescript": "^4.4.4"
+ "typescript": "^5.0.0"
},
"dependencies": {
"@aws-sdk/client-sqs": "^3.600.0",
"safely-parse-json": "0.1.0",
"sqs-consumer": "5.8.0",
"uuid": "^9.0.0"
- },
- "peerDependencies": {
- "aws-sdk": "^2.1403.0"
}
}
\ No newline at end of file
diff --git a/src/index.ts b/src/index.ts
index f185371..2e2c148 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -1,19 +1,21 @@
-import AWS, { AWSError } from "aws-sdk";
-import safeJSON from "safely-parse-json";
-import { Consumer } from "sqs-consumer";
-import EventEmitter from "events";
import {
- QueueAttributeMap,
- SendMessageBatchResult,
+ SQSClient,
+ CreateQueueCommand,
+ SendMessageCommand,
+ SendMessageBatchCommand,
+ DeleteMessageCommand,
+ ChangeMessageVisibilityCommand,
+ ReceiveMessageCommand,
+ SendMessageBatchCommandOutput,
SendMessageRequest,
- SendMessageResult,
-} from "aws-sdk/clients/sqs";
-import { PromiseResult } from "aws-sdk/lib/request";
-import {
+ SendMessageCommandOutput,
ChangeMessageVisibilityRequest,
DeleteMessageRequest,
SendMessageBatchRequest,
} from "@aws-sdk/client-sqs";
+import safeJSON from "safely-parse-json";
+import { Consumer } from "sqs-consumer";
+import { EventEmitter } from "events";
import { v4 as uuidv4 } from "uuid";
import { Agent } from 'https';
@@ -21,7 +23,7 @@ export default class SQS {
private name: string;
private emitter: EventEmitter;
private config: Record;
- private client: AWS.SQS;
+ private client: SQSClient;
private queues: Record;
constructor(name: string, emitter: EventEmitter, config: Record = {}) {
@@ -83,7 +85,7 @@ export default class SQS {
...(region && { region }),
...(accountId && { accountId })
};
- this.client = new AWS.SQS(this.config);
+ this.client = new SQSClient(this.config);
this.log(`Connected on SQS:${this.name}`, this.config);
return this;
} catch (err: any) {
@@ -107,7 +109,7 @@ export default class SQS {
* @param {String} opts.FifoQueue='false' [Use FIFO (true) or Standard queue (false)]
* @return {Promise}
*/
- async createQueue(name: string, opts: QueueAttributeMap = {}): Promise {
+ async createQueue(name: string, opts: Record = {}): Promise {
const options = Object.assign(
{
// FifoQueue: 'false', // use standard by default
@@ -115,12 +117,11 @@ export default class SQS {
opts
);
try {
- const response = await this.client
- .createQueue({
- QueueName: name,
- Attributes: options,
- })
- .promise();
+ const command = new CreateQueueCommand({
+ QueueName: name,
+ Attributes: options,
+ });
+ const response = await this.client.send(command);
const queueUrl = response.QueueUrl;
const message = `Created queue ${name} => ${queueUrl}`;
this.log(message, { name, queueUrl });
@@ -147,7 +148,7 @@ export default class SQS {
meta: Record = {},
handle: boolean = true,
options: Record = {}
- ): Promise> {
+ ): Promise {
const params: SendMessageRequest = {
QueueUrl: this.getQueueUrl(name),
MessageBody: JSON.stringify({ content, meta }),
@@ -158,7 +159,8 @@ export default class SQS {
}
try {
- const res = await this.client.sendMessage(params).promise();
+ const command = new SendMessageCommand(params);
+ const res = await this.client.send(command);
return res;
} catch (err) {
this.error(err, {
@@ -170,6 +172,8 @@ export default class SQS {
if (handle === false) {
throw err;
}
+ // Return empty response when error is handled
+ return {} as SendMessageCommandOutput;
}
}
@@ -189,7 +193,7 @@ export default class SQS {
meta: Record = {},
handle: boolean = true,
options: Record = {}
- ): Promise> {
+ ): Promise {
let DelaySeconds: number | undefined;
if (typeof options.delay === "number") {
DelaySeconds = options.delay;
@@ -205,7 +209,8 @@ export default class SQS {
};
try {
- const res = await this.client.sendMessageBatch(params).promise();
+ const command = new SendMessageBatchCommand(params);
+ const res = await this.client.send(command);
return res;
} catch (err) {
this.error(err, {
@@ -217,6 +222,8 @@ export default class SQS {
if (handle === false) {
throw err;
}
+ // Return empty response when error is handled
+ return { Successful: [], Failed: [] } as SendMessageBatchCommandOutput;
}
}
@@ -226,7 +233,7 @@ export default class SQS {
meta: Record = {},
group: Record,
handle: boolean = true
- ): Promise> {
+ ): Promise {
const params: SendMessageRequest = {
QueueUrl: this.getQueueUrl(name),
MessageBody: JSON.stringify({ content, meta }),
@@ -234,7 +241,8 @@ export default class SQS {
MessageDeduplicationId: group.id,
};
try {
- const res = await this.client.sendMessage(params).promise();
+ const command = new SendMessageCommand(params);
+ const res = await this.client.send(command);
return res;
} catch (err) {
this.error(err, {
@@ -246,6 +254,8 @@ export default class SQS {
if (handle === false) {
throw err;
}
+ // Return empty response when error is handled
+ return {} as SendMessageCommandOutput;
}
}
@@ -316,7 +326,8 @@ export default class SQS {
ReceiptHandle: handle,
};
- await this.client.deleteMessage(params).promise();
+ const command = new DeleteMessageCommand(params);
+ await this.client.send(command);
}
async returnMessage(name: string, messageId: any, handle: string) {
@@ -326,7 +337,8 @@ export default class SQS {
ReceiptHandle: handle,
VisibilityTimeout: 0,
};
- await this.client.changeMessageVisibility(params).promise();
+ const command = new ChangeMessageVisibilityCommand(params);
+ await this.client.send(command);
}
async fetchMessages(name: string, number = 10) {
@@ -335,25 +347,23 @@ export default class SQS {
QueueUrl: queueUrl,
MaxNumberOfMessages: number,
};
- const res = await this.client.receiveMessage(params).promise();
- return res.Messages.map((msg) => {
- return [
- {
- data: safeJSON(msg.Body),
- ack: () => {
- return this.deleteMessage(name, msg.MessageId, msg.ReceiptHandle);
- },
- nack: () => {
- return this.returnMessage(name, msg.MessageId, msg.ReceiptHandle);
- },
+ const command = new ReceiveMessageCommand(params);
+ const res = await this.client.send(command);
+ const messages = res.Messages || [];
+ return messages.map((msg) => {
+ return {
+ data: safeJSON(msg.Body),
+ id: msg.MessageId,
+ handle: msg.ReceiptHandle,
+ queueAttributes: msg.Attributes,
+ messageAttributes: msg.MessageAttributes,
+ ack: () => {
+ return this.deleteMessage(name, msg.MessageId, msg.ReceiptHandle);
},
- {
- id: msg.MessageId,
- handle: msg.ReceiptHandle,
- queueAttributes: msg.Attributes,
- messageAttributes: msg.MessageAttributes,
+ nack: () => {
+ return this.returnMessage(name, msg.MessageId, msg.ReceiptHandle);
},
- ];
+ };
});
}
diff --git a/test/push.spec.js b/test/push.spec.js
index 48f8c5d..8cba7c2 100644
--- a/test/push.spec.js
+++ b/test/push.spec.js
@@ -2,7 +2,7 @@
const EventEmitter = require('events').EventEmitter;
const { v4: uuidv4 } = require('uuid');
-const SQS = require('../src/index');
+const SQS = require('../lib/index').default;
const emitter = new EventEmitter();
emitter.on('error', console.error.bind(console));
diff --git a/test/sub.spec.js b/test/sub.spec.js
index 4867fe0..ad563e7 100644
--- a/test/sub.spec.js
+++ b/test/sub.spec.js
@@ -1,9 +1,7 @@
/* eslint no-console: 0 */
-
const EventEmitter = require('events').EventEmitter;
-
-const SQS = require('../src/index');
+const SQS = require('../lib/index').default;
const emitter = new EventEmitter();
emitter.on('error', console.error.bind(console));
@@ -15,21 +13,26 @@ process.on('uncaughtExceptionMonitor', console.log);
const sqs = new SQS('sqs', emitter);
-async function sub() {
+async function fetch() {
await sqs.init();
await sqs.createQueue('test.fifo', {
FifoQueue: 'true',
});
- await sqs.subscribe('test.fifo', (msg) => {
- console.log(msg);
- setTimeout(() => {
- msg.ack();
- }, 1000);
- }, {
- maxInProgress: 2,
- });
+ // Fetch messages from the queue
+ const messages = await sqs.fetchMessages('test.fifo', 5);
+ console.log(`Fetched ${messages.length} messages`);
+
+ // Process each message
+ for (const msg of messages) {
+ console.log('Message:', msg.data);
+ console.log('Message ID:', msg.id);
+
+ // Acknowledge the message after processing
+ await msg.ack();
+ console.log('Message acknowledged');
+ }
}
-sub().then(() => console.log('Subsciption')).catch(console.error.bind(console));
+fetch().then(() => console.log('Fetch completed')).catch(console.error.bind(console));