@message-queue-toolkit/sqs 1.0.1 → 1.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.
- package/dist/index.d.ts +4 -3
- package/dist/index.js +7 -4
- package/dist/index.js.map +1 -1
- package/dist/lib/errors/SqsConsumerErrorResolver.js +3 -3
- package/dist/lib/errors/SqsConsumerErrorResolver.js.map +1 -1
- package/dist/lib/sqs/AbstractSqsConsumer.d.ts +6 -9
- package/dist/lib/sqs/AbstractSqsConsumer.js +6 -5
- package/dist/lib/sqs/AbstractSqsConsumer.js.map +1 -1
- package/dist/lib/sqs/AbstractSqsService.js +2 -11
- package/dist/lib/sqs/AbstractSqsService.js.map +1 -1
- package/dist/lib/sqs/sqsMessageDeserializer.d.ts +5 -0
- package/dist/lib/sqs/{messageDeserializer.js → sqsMessageDeserializer.js} +4 -4
- package/dist/lib/sqs/sqsMessageDeserializer.js.map +1 -0
- package/dist/lib/types/MessageTypes.d.ts +6 -0
- package/dist/lib/utils/SqsUtils.d.ts +4 -0
- package/dist/lib/utils/SqsUtils.js +52 -0
- package/dist/lib/utils/SqsUtils.js.map +1 -0
- package/package.json +3 -2
- package/dist/lib/errors/sqsErrors.d.ts +0 -12
- package/dist/lib/errors/sqsErrors.js +0 -25
- package/dist/lib/errors/sqsErrors.js.map +0 -1
- package/dist/lib/sqs/messageDeserializer.d.ts +0 -5
- package/dist/lib/sqs/messageDeserializer.js.map +0 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
export type { SQSQueueAWSConfig, SQSQueueConfig, SQSConsumerDependencies, } from './lib/sqs/AbstractSqsService';
|
|
2
2
|
export { AbstractSqsConsumer } from './lib/sqs/AbstractSqsConsumer';
|
|
3
|
-
export type {
|
|
3
|
+
export type { SQSConsumerOptions } from './lib/sqs/AbstractSqsConsumer';
|
|
4
4
|
export { SqsConsumerErrorResolver } from './lib/errors/SqsConsumerErrorResolver';
|
|
5
|
-
export { SqsValidationError, SqsMessageInvalidFormat } from './lib/errors/sqsErrors';
|
|
6
5
|
export { AbstractSqsPublisher } from './lib/sqs/AbstractSqsPublisher';
|
|
7
6
|
export type { SQSMessageOptions } from './lib/sqs/AbstractSqsPublisher';
|
|
8
|
-
export
|
|
7
|
+
export { assertQueue, deleteQueue, purgeQueue } from './lib/utils/SqsUtils';
|
|
8
|
+
export { deserializeSQSMessage } from './lib/sqs/sqsMessageDeserializer';
|
|
9
|
+
export type { CommonMessage, SQSMessage } from './lib/types/MessageTypes';
|
package/dist/index.js
CHANGED
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.deserializeSQSMessage = exports.purgeQueue = exports.deleteQueue = exports.assertQueue = exports.AbstractSqsPublisher = exports.SqsConsumerErrorResolver = exports.AbstractSqsConsumer = void 0;
|
|
4
4
|
var AbstractSqsConsumer_1 = require("./lib/sqs/AbstractSqsConsumer");
|
|
5
5
|
Object.defineProperty(exports, "AbstractSqsConsumer", { enumerable: true, get: function () { return AbstractSqsConsumer_1.AbstractSqsConsumer; } });
|
|
6
6
|
var SqsConsumerErrorResolver_1 = require("./lib/errors/SqsConsumerErrorResolver");
|
|
7
7
|
Object.defineProperty(exports, "SqsConsumerErrorResolver", { enumerable: true, get: function () { return SqsConsumerErrorResolver_1.SqsConsumerErrorResolver; } });
|
|
8
|
-
var sqsErrors_1 = require("./lib/errors/sqsErrors");
|
|
9
|
-
Object.defineProperty(exports, "SqsValidationError", { enumerable: true, get: function () { return sqsErrors_1.SqsValidationError; } });
|
|
10
|
-
Object.defineProperty(exports, "SqsMessageInvalidFormat", { enumerable: true, get: function () { return sqsErrors_1.SqsMessageInvalidFormat; } });
|
|
11
8
|
var AbstractSqsPublisher_1 = require("./lib/sqs/AbstractSqsPublisher");
|
|
12
9
|
Object.defineProperty(exports, "AbstractSqsPublisher", { enumerable: true, get: function () { return AbstractSqsPublisher_1.AbstractSqsPublisher; } });
|
|
10
|
+
var SqsUtils_1 = require("./lib/utils/SqsUtils");
|
|
11
|
+
Object.defineProperty(exports, "assertQueue", { enumerable: true, get: function () { return SqsUtils_1.assertQueue; } });
|
|
12
|
+
Object.defineProperty(exports, "deleteQueue", { enumerable: true, get: function () { return SqsUtils_1.deleteQueue; } });
|
|
13
|
+
Object.defineProperty(exports, "purgeQueue", { enumerable: true, get: function () { return SqsUtils_1.purgeQueue; } });
|
|
14
|
+
var sqsMessageDeserializer_1 = require("./lib/sqs/sqsMessageDeserializer");
|
|
15
|
+
Object.defineProperty(exports, "deserializeSQSMessage", { enumerable: true, get: function () { return sqsMessageDeserializer_1.deserializeSQSMessage; } });
|
|
13
16
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;AAMA,qEAAmE;AAA1D,0HAAA,mBAAmB,OAAA;AAE5B,kFAAgF;AAAvE,oIAAA,wBAAwB,OAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;AAMA,qEAAmE;AAA1D,0HAAA,mBAAmB,OAAA;AAE5B,kFAAgF;AAAvE,oIAAA,wBAAwB,OAAA;AAEjC,uEAAqE;AAA5D,4HAAA,oBAAoB,OAAA;AAG7B,iDAA2E;AAAlE,uGAAA,WAAW,OAAA;AAAE,uGAAA,WAAW,OAAA;AAAE,sGAAA,UAAU,OAAA;AAC7C,2EAAwE;AAA/D,+HAAA,qBAAqB,OAAA"}
|
|
@@ -3,17 +3,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.SqsConsumerErrorResolver = void 0;
|
|
4
4
|
const node_util_1 = require("node:util");
|
|
5
5
|
const node_core_1 = require("@lokalise/node-core");
|
|
6
|
+
const core_1 = require("@message-queue-toolkit/core");
|
|
6
7
|
const zod_1 = require("zod");
|
|
7
|
-
const sqsErrors_1 = require("./sqsErrors");
|
|
8
8
|
class SqsConsumerErrorResolver {
|
|
9
9
|
processError(error) {
|
|
10
10
|
if (node_util_1.types.isNativeError(error) && error?.name === 'SyntaxError') {
|
|
11
|
-
return new
|
|
11
|
+
return new core_1.MessageInvalidFormatError({
|
|
12
12
|
message: error.message,
|
|
13
13
|
});
|
|
14
14
|
}
|
|
15
15
|
if (error instanceof zod_1.ZodError) {
|
|
16
|
-
return new
|
|
16
|
+
return new core_1.MessageValidationError({
|
|
17
17
|
message: error.message,
|
|
18
18
|
details: {
|
|
19
19
|
error: error.issues,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SqsConsumerErrorResolver.js","sourceRoot":"","sources":["../../../lib/errors/SqsConsumerErrorResolver.ts"],"names":[],"mappings":";;;AAAA,yCAAiC;AAGjC,mDAAwE;AACxE,6BAA8B;AAE9B,
|
|
1
|
+
{"version":3,"file":"SqsConsumerErrorResolver.js","sourceRoot":"","sources":["../../../lib/errors/SqsConsumerErrorResolver.ts"],"names":[],"mappings":";;;AAAA,yCAAiC;AAGjC,mDAAwE;AACxE,sDAA+F;AAC/F,6BAA8B;AAE9B,MAAa,wBAAwB;IAC5B,YAAY,CAAC,KAAc;QAChC,IAAI,iBAAK,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,EAAE,IAAI,KAAK,aAAa,EAAE;YAC/D,OAAO,IAAI,gCAAyB,CAAC;gBACnC,OAAO,EAAE,KAAK,CAAC,OAAO;aACvB,CAAC,CAAA;SACH;QACD,IAAI,KAAK,YAAY,cAAQ,EAAE;YAC7B,OAAO,IAAI,6BAAsB,CAAC;gBAChC,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,OAAO,EAAE;oBACP,KAAK,EAAE,KAAK,CAAC,MAAM;iBACpB;aACF,CAAC,CAAA;SACH;QACD,IAAI,IAAA,+BAAmB,EAAC,KAAK,CAAC,EAAE;YAC9B,OAAO,IAAI,yBAAa,CAAC;gBACvB,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,SAAS,EAAE,KAAK,CAAC,IAAI;aACtB,CAAC,CAAA;SACH;QACD,OAAO,IAAI,yBAAa,CAAC;YACvB,OAAO,EAAE,0BAA0B;YACnC,SAAS,EAAE,gBAAgB;SAC5B,CAAC,CAAA;IACJ,CAAC;CACF;AA1BD,4DA0BC"}
|
|
@@ -1,24 +1,21 @@
|
|
|
1
1
|
import type { Either, ErrorResolver } from '@lokalise/node-core';
|
|
2
|
-
import type { QueueConsumer as QueueConsumer, QueueOptions } from '@message-queue-toolkit/core';
|
|
2
|
+
import type { QueueConsumer as QueueConsumer, QueueOptions, Deserializer } from '@message-queue-toolkit/core';
|
|
3
3
|
import { Consumer } from 'sqs-consumer';
|
|
4
4
|
import type { ConsumerOptions } from 'sqs-consumer/src/types';
|
|
5
|
+
import type { SQSMessage } from '../types/MessageTypes';
|
|
5
6
|
import type { SQSConsumerDependencies, SQSQueueAWSConfig } from './AbstractSqsService';
|
|
6
7
|
import { AbstractSqsService } from './AbstractSqsService';
|
|
7
|
-
export type SQSMessage = {
|
|
8
|
-
MessageId: string;
|
|
9
|
-
ReceiptHandle: string;
|
|
10
|
-
MD5OfBody: string;
|
|
11
|
-
Body: string;
|
|
12
|
-
};
|
|
13
8
|
export type SQSConsumerOptions<MessagePayloadType extends object> = QueueOptions<MessagePayloadType, SQSQueueAWSConfig> & {
|
|
14
9
|
consumerOverrides?: Partial<ConsumerOptions>;
|
|
10
|
+
deserializer?: Deserializer<MessagePayloadType, SQSMessage>;
|
|
15
11
|
};
|
|
16
|
-
export declare abstract class AbstractSqsConsumer<MessagePayloadType extends object
|
|
12
|
+
export declare abstract class AbstractSqsConsumer<MessagePayloadType extends object, ConsumerOptionsType extends SQSConsumerOptions<MessagePayloadType> = SQSConsumerOptions<MessagePayloadType>> extends AbstractSqsService<MessagePayloadType, ConsumerOptionsType, SQSConsumerDependencies> implements QueueConsumer {
|
|
17
13
|
private readonly transactionObservabilityManager?;
|
|
18
14
|
protected readonly errorResolver: ErrorResolver;
|
|
19
15
|
protected consumer: Consumer;
|
|
20
16
|
private readonly consumerOptionsOverride;
|
|
21
|
-
|
|
17
|
+
private readonly deserializer;
|
|
18
|
+
protected constructor(dependencies: SQSConsumerDependencies, options: ConsumerOptionsType);
|
|
22
19
|
abstract processMessage(messagePayload: MessagePayloadType): Promise<Either<'retryLater', 'success'>>;
|
|
23
20
|
private deserializeMessage;
|
|
24
21
|
private failProcessing;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.AbstractSqsConsumer = void 0;
|
|
4
|
+
const core_1 = require("@message-queue-toolkit/core");
|
|
4
5
|
const sqs_consumer_1 = require("sqs-consumer");
|
|
5
|
-
const sqsErrors_1 = require("../errors/sqsErrors");
|
|
6
6
|
const AbstractSqsService_1 = require("./AbstractSqsService");
|
|
7
|
-
const
|
|
7
|
+
const sqsMessageDeserializer_1 = require("./sqsMessageDeserializer");
|
|
8
8
|
const ABORT_EARLY_EITHER = {
|
|
9
9
|
error: 'abort',
|
|
10
10
|
};
|
|
@@ -14,19 +14,20 @@ class AbstractSqsConsumer extends AbstractSqsService_1.AbstractSqsService {
|
|
|
14
14
|
// @ts-ignore
|
|
15
15
|
consumer;
|
|
16
16
|
consumerOptionsOverride;
|
|
17
|
+
deserializer;
|
|
17
18
|
constructor(dependencies, options) {
|
|
18
19
|
super(dependencies, options);
|
|
19
20
|
this.transactionObservabilityManager = dependencies.transactionObservabilityManager;
|
|
20
21
|
this.errorResolver = dependencies.consumerErrorResolver;
|
|
21
22
|
this.consumerOptionsOverride = options.consumerOverrides ?? {};
|
|
23
|
+
this.deserializer = options.deserializer ?? sqsMessageDeserializer_1.deserializeSQSMessage;
|
|
22
24
|
}
|
|
23
25
|
deserializeMessage(message) {
|
|
24
26
|
if (message === null) {
|
|
25
27
|
return ABORT_EARLY_EITHER;
|
|
26
28
|
}
|
|
27
|
-
const deserializationResult =
|
|
28
|
-
if (deserializationResult.error
|
|
29
|
-
deserializationResult.error instanceof sqsErrors_1.SqsMessageInvalidFormat) {
|
|
29
|
+
const deserializationResult = this.deserializer(message, this.messageSchema, this.errorResolver);
|
|
30
|
+
if ((0, core_1.isMessageError)(deserializationResult.error)) {
|
|
30
31
|
this.handleError(deserializationResult.error);
|
|
31
32
|
return ABORT_EARLY_EITHER;
|
|
32
33
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractSqsConsumer.js","sourceRoot":"","sources":["../../../lib/sqs/AbstractSqsConsumer.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"AbstractSqsConsumer.js","sourceRoot":"","sources":["../../../lib/sqs/AbstractSqsConsumer.ts"],"names":[],"mappings":";;;AAOA,sDAA4D;AAC5D,+CAAuC;AAMvC,6DAAyD;AACzD,qEAAgE;AAEhE,MAAM,kBAAkB,GAA2B;IACjD,KAAK,EAAE,OAAO;CACf,CAAA;AAUD,MAAsB,mBAIpB,SAAQ,uCAAoF;IAG3E,+BAA+B,CAAkC;IAC/D,aAAa,CAAe;IAC/C,aAAa;IACH,QAAQ,CAAU;IACX,uBAAuB,CAA0B;IACjD,YAAY,CAA8C;IAE3E,YAAsB,YAAqC,EAAE,OAA4B;QACvF,KAAK,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;QAC5B,IAAI,CAAC,+BAA+B,GAAG,YAAY,CAAC,+BAA+B,CAAA;QACnF,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC,qBAAqB,CAAA;QAEvD,IAAI,CAAC,uBAAuB,GAAG,OAAO,CAAC,iBAAiB,IAAI,EAAE,CAAA;QAC9D,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,8CAAqB,CAAA;IACnE,CAAC;IAMO,kBAAkB,CAAC,OAAmB;QAC5C,IAAI,OAAO,KAAK,IAAI,EAAE;YACpB,OAAO,kBAAkB,CAAA;SAC1B;QAED,MAAM,qBAAqB,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,CAAA;QAEhG,IAAI,IAAA,qBAAc,EAAC,qBAAqB,CAAC,KAAK,CAAC,EAAE;YAC/C,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAA;YAC7C,OAAO,kBAAkB,CAAA;SAC1B;QAED,oCAAoC;QACpC,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE;YACjC,OAAO,kBAAkB,CAAA;SAC1B;QAED,OAAO;YACL,MAAM,EAAE,qBAAqB,CAAC,MAAM;SACrC,CAAA;IACH,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,OAAmB;QAC9C,gDAAgD;IAClD,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,IAAI,EAAE,CAAA;QAEjB,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAA;SACrB;QAED,IAAI,CAAC,QAAQ,GAAG,uBAAQ,CAAC,MAAM,CAAC;YAC9B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,aAAa,EAAE,KAAK,EAAE,OAAmB,EAAE,EAAE;gBAC3C,IAAI,OAAO,KAAK,IAAI,EAAE;oBACpB,OAAM;iBACP;gBAED,MAAM,mBAAmB,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAA;gBAC5D,IAAI,mBAAmB,CAAC,KAAK,KAAK,OAAO,EAAE;oBACzC,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;oBAClC,OAAM;iBACP;gBACD,MAAM,iBAAiB,GAAG,SAAS,IAAI,CAAC,SAAS,IAAI;gBACnD,aAAa;gBACb,4EAA4E;gBAC5E,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAClD,EAAE,CAAA;gBAEF,IAAI,CAAC,+BAA+B,EAAE,KAAK,CAAC,iBAAiB,CAAC,CAAA;gBAC9D,MAAM,MAAM,GAA4C,MAAM,IAAI,CAAC,cAAc,CAC/E,mBAAmB,CAAC,MAAM,CAC3B;qBACE,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;oBACb,6FAA6F;oBAC7F,gDAAgD;oBAChD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;oBACrB,OAAO;wBACL,mEAAmE;wBACnE,KAAK,EAAE,GAAG;qBACX,CAAA;gBACH,CAAC,CAAC;qBACD,OAAO,CAAC,GAAG,EAAE;oBACZ,IAAI,CAAC,+BAA+B,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAA;gBAC/D,CAAC,CAAC,CAAA;gBAEJ,IAAI,MAAM,CAAC,MAAM,EAAE;oBACjB,OAAO,OAAO,CAAA;iBACf;qBAAM;oBACL,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;iBAC9B;YACH,CAAC;YACD,GAAG,EAAE,IAAI,CAAC,SAAS;YACnB,GAAG,IAAI,CAAC,uBAAuB;SAChC,CAAC,CAAA;QAEF,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YAChC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;QACvB,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAA;IACvB,CAAC;IAEe,KAAK,CAAC,KAAK,CAAC,KAAe;QACzC,MAAM,KAAK,CAAC,KAAK,EAAE,CAAA;QACnB,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC;YAClB,KAAK,EAAE,KAAK,IAAI,KAAK;SACtB,CAAC,CAAA;IACJ,CAAC;CACF;AAtHD,kDAsHC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.AbstractSqsService = void 0;
|
|
4
|
-
const client_sqs_1 = require("@aws-sdk/client-sqs");
|
|
5
4
|
const core_1 = require("@message-queue-toolkit/core");
|
|
5
|
+
const SqsUtils_1 = require("../utils/SqsUtils");
|
|
6
6
|
class AbstractSqsService extends core_1.AbstractQueueService {
|
|
7
7
|
sqsClient;
|
|
8
8
|
// @ts-ignore
|
|
@@ -12,19 +12,10 @@ class AbstractSqsService extends core_1.AbstractQueueService {
|
|
|
12
12
|
this.sqsClient = dependencies.sqsClient;
|
|
13
13
|
}
|
|
14
14
|
async init() {
|
|
15
|
-
|
|
16
|
-
QueueName: this.queueName,
|
|
17
|
-
});
|
|
18
|
-
await this.sqsClient.send(command);
|
|
19
|
-
const getUrlCommand = new client_sqs_1.GetQueueUrlCommand({
|
|
15
|
+
this.queueUrl = await (0, SqsUtils_1.assertQueue)(this.sqsClient, {
|
|
20
16
|
QueueName: this.queueName,
|
|
21
17
|
...this.queueConfiguration,
|
|
22
18
|
});
|
|
23
|
-
const response = await this.sqsClient.send(getUrlCommand);
|
|
24
|
-
if (!response.QueueUrl) {
|
|
25
|
-
throw new Error(`Queue ${this.queueName} was not created`);
|
|
26
|
-
}
|
|
27
|
-
this.queueUrl = response.QueueUrl;
|
|
28
19
|
}
|
|
29
20
|
// eslint-disable-next-line @typescript-eslint/require-await
|
|
30
21
|
async close() { }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbstractSqsService.js","sourceRoot":"","sources":["../../../lib/sqs/AbstractSqsService.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"AbstractSqsService.js","sourceRoot":"","sources":["../../../lib/sqs/AbstractSqsService.ts"],"names":[],"mappings":";;;AAOA,sDAAkE;AAElE,gDAA+C;AAwB/C,MAAa,kBAOX,SAAQ,2BAKT;IACoB,SAAS,CAAW;IACvC,aAAa;IACN,QAAQ,CAAQ;IAEvB,YAAY,YAA8B,EAAE,OAAuB;QACjE,KAAK,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;QAE5B,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC,SAAS,CAAA;IACzC,CAAC;IAEM,KAAK,CAAC,IAAI;QACf,IAAI,CAAC,QAAQ,GAAG,MAAM,IAAA,sBAAW,EAAC,IAAI,CAAC,SAAS,EAAE;YAChD,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,GAAG,IAAI,CAAC,kBAAkB;SAC3B,CAAC,CAAA;IACJ,CAAC;IAED,4DAA4D;IAC5C,KAAK,CAAC,KAAK,KAAmB,CAAC;CAChD;AAhCD,gDAgCC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { Either, ErrorResolver } from '@lokalise/node-core';
|
|
2
|
+
import type { MessageInvalidFormatError, MessageValidationError } from '@message-queue-toolkit/core';
|
|
3
|
+
import type { ZodType } from 'zod';
|
|
4
|
+
import type { SQSMessage } from '../types/MessageTypes';
|
|
5
|
+
export declare const deserializeSQSMessage: <T extends object>(message: SQSMessage, type: ZodType<T, import("zod").ZodTypeDef, T>, errorProcessor: ErrorResolver) => Either<MessageInvalidFormatError | MessageValidationError, T>;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
const
|
|
3
|
+
exports.deserializeSQSMessage = void 0;
|
|
4
|
+
const deserializeSQSMessage = (message, type, errorProcessor) => {
|
|
5
5
|
try {
|
|
6
6
|
return {
|
|
7
7
|
result: type.parse(JSON.parse(message.Body)),
|
|
@@ -13,5 +13,5 @@ const deserializeMessage = (message, type, errorProcessor) => {
|
|
|
13
13
|
};
|
|
14
14
|
}
|
|
15
15
|
};
|
|
16
|
-
exports.
|
|
17
|
-
//# sourceMappingURL=
|
|
16
|
+
exports.deserializeSQSMessage = deserializeSQSMessage;
|
|
17
|
+
//# sourceMappingURL=sqsMessageDeserializer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqsMessageDeserializer.js","sourceRoot":"","sources":["../../../lib/sqs/sqsMessageDeserializer.ts"],"names":[],"mappings":";;;AAMO,MAAM,qBAAqB,GAAG,CACnC,OAAmB,EACnB,IAAgB,EAChB,cAA6B,EACkC,EAAE;IACjE,IAAI;QACF,OAAO;YACL,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;SAC7C,CAAA;KACF;IAAC,OAAO,SAAS,EAAE;QAClB,OAAO;YACL,KAAK,EAAE,cAAc,CAAC,YAAY,CAAC,SAAS,CAAC;SAC9C,CAAA;KACF;AACH,CAAC,CAAA;AAdY,QAAA,qBAAqB,yBAcjC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { CreateQueueCommandInput, SQSClient } from '@aws-sdk/client-sqs';
|
|
2
|
+
export declare function assertQueue(sqsClient: SQSClient, queueConfig: CreateQueueCommandInput): Promise<string>;
|
|
3
|
+
export declare function purgeQueue(client: SQSClient, queueName: string): Promise<void>;
|
|
4
|
+
export declare function deleteQueue(client: SQSClient, queueName: string): Promise<void>;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.deleteQueue = exports.purgeQueue = exports.assertQueue = void 0;
|
|
4
|
+
const client_sqs_1 = require("@aws-sdk/client-sqs");
|
|
5
|
+
async function assertQueue(sqsClient, queueConfig) {
|
|
6
|
+
const command = new client_sqs_1.CreateQueueCommand(queueConfig);
|
|
7
|
+
await sqsClient.send(command);
|
|
8
|
+
const getUrlCommand = new client_sqs_1.GetQueueUrlCommand({
|
|
9
|
+
QueueName: queueConfig.QueueName,
|
|
10
|
+
});
|
|
11
|
+
const response = await sqsClient.send(getUrlCommand);
|
|
12
|
+
if (!response.QueueUrl) {
|
|
13
|
+
throw new Error(`Queue ${queueConfig.QueueName ?? ''} was not created`);
|
|
14
|
+
}
|
|
15
|
+
return response.QueueUrl;
|
|
16
|
+
}
|
|
17
|
+
exports.assertQueue = assertQueue;
|
|
18
|
+
async function purgeQueue(client, queueName) {
|
|
19
|
+
try {
|
|
20
|
+
const queueUrlCommand = new client_sqs_1.GetQueueUrlCommand({
|
|
21
|
+
QueueName: queueName,
|
|
22
|
+
});
|
|
23
|
+
const response = await client.send(queueUrlCommand);
|
|
24
|
+
const purgeCommand = new client_sqs_1.PurgeQueueCommand({
|
|
25
|
+
QueueUrl: response.QueueUrl,
|
|
26
|
+
});
|
|
27
|
+
await client.send(purgeCommand);
|
|
28
|
+
}
|
|
29
|
+
catch (err) {
|
|
30
|
+
// @ts-ignore
|
|
31
|
+
console.log(`Failed to purge: ${err.message}`);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
exports.purgeQueue = purgeQueue;
|
|
35
|
+
async function deleteQueue(client, queueName) {
|
|
36
|
+
try {
|
|
37
|
+
const queueUrlCommand = new client_sqs_1.GetQueueUrlCommand({
|
|
38
|
+
QueueName: queueName,
|
|
39
|
+
});
|
|
40
|
+
const response = await client.send(queueUrlCommand);
|
|
41
|
+
const command = new client_sqs_1.DeleteQueueCommand({
|
|
42
|
+
QueueUrl: response.QueueUrl,
|
|
43
|
+
});
|
|
44
|
+
await client.send(command);
|
|
45
|
+
}
|
|
46
|
+
catch (err) {
|
|
47
|
+
// @ts-ignore
|
|
48
|
+
console.log(`Failed to delete: ${err.message}`);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
exports.deleteQueue = deleteQueue;
|
|
52
|
+
//# sourceMappingURL=SqsUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SqsUtils.js","sourceRoot":"","sources":["../../../lib/utils/SqsUtils.ts"],"names":[],"mappings":";;;AACA,oDAK4B;AAErB,KAAK,UAAU,WAAW,CAAC,SAAoB,EAAE,WAAoC;IAC1F,MAAM,OAAO,GAAG,IAAI,+BAAkB,CAAC,WAAW,CAAC,CAAA;IACnD,MAAM,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAE7B,MAAM,aAAa,GAAG,IAAI,+BAAkB,CAAC;QAC3C,SAAS,EAAE,WAAW,CAAC,SAAS;KACjC,CAAC,CAAA;IACF,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;IAEpD,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;QACtB,MAAM,IAAI,KAAK,CAAC,SAAS,WAAW,CAAC,SAAS,IAAI,EAAE,kBAAkB,CAAC,CAAA;KACxE;IAED,OAAO,QAAQ,CAAC,QAAQ,CAAA;AAC1B,CAAC;AAdD,kCAcC;AAEM,KAAK,UAAU,UAAU,CAAC,MAAiB,EAAE,SAAiB;IACnE,IAAI;QACF,MAAM,eAAe,GAAG,IAAI,+BAAkB,CAAC;YAC7C,SAAS,EAAE,SAAS;SACrB,CAAC,CAAA;QACF,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;QAEnD,MAAM,YAAY,GAAG,IAAI,8BAAiB,CAAC;YACzC,QAAQ,EAAE,QAAQ,CAAC,QAAQ;SAC5B,CAAC,CAAA;QACF,MAAM,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;KAChC;IAAC,OAAO,GAAG,EAAE;QACZ,aAAa;QACb,OAAO,CAAC,GAAG,CAAC,oBAAoB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAA;KAC/C;AACH,CAAC;AAfD,gCAeC;AAEM,KAAK,UAAU,WAAW,CAAC,MAAiB,EAAE,SAAiB;IACpE,IAAI;QACF,MAAM,eAAe,GAAG,IAAI,+BAAkB,CAAC;YAC7C,SAAS,EAAE,SAAS;SACrB,CAAC,CAAA;QACF,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;QAEnD,MAAM,OAAO,GAAG,IAAI,+BAAkB,CAAC;YACrC,QAAQ,EAAE,QAAQ,CAAC,QAAQ;SAC5B,CAAC,CAAA;QAEF,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;KAC3B;IAAC,OAAO,GAAG,EAAE;QACZ,aAAa;QACb,OAAO,CAAC,GAAG,CAAC,qBAAqB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAA;KAChD;AACH,CAAC;AAhBD,kCAgBC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@message-queue-toolkit/sqs",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"description": "SQS adapter for message-queue-toolkit",
|
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
"build:release": "del-cli dist && del-cli coverage && npm run lint && tsc --project tsconfig.release.json",
|
|
18
18
|
"test": "vitest",
|
|
19
19
|
"test:coverage": "npm test -- --coverage",
|
|
20
|
+
"test:ci": "npm run docker:start:dev && npm run test:coverage && npm run docker:stop:dev",
|
|
20
21
|
"lint": "eslint . --ext .ts",
|
|
21
22
|
"lint:fix": "eslint . --ext .ts --fix",
|
|
22
23
|
"format": "prettier --write .",
|
|
@@ -31,7 +32,7 @@
|
|
|
31
32
|
"zod": "^3.21.4"
|
|
32
33
|
},
|
|
33
34
|
"peerDependencies": {
|
|
34
|
-
"@message-queue-toolkit/core": "^1.
|
|
35
|
+
"@message-queue-toolkit/core": "^1.1.0"
|
|
35
36
|
},
|
|
36
37
|
"devDependencies": {
|
|
37
38
|
"@message-queue-toolkit/core": "*",
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { InternalError } from '@lokalise/node-core';
|
|
2
|
-
export type FreeformRecord = Record<string, any>;
|
|
3
|
-
export type CommonErrorParams = {
|
|
4
|
-
message: string;
|
|
5
|
-
details?: FreeformRecord;
|
|
6
|
-
};
|
|
7
|
-
export declare class SqsMessageInvalidFormat extends InternalError {
|
|
8
|
-
constructor(params: CommonErrorParams);
|
|
9
|
-
}
|
|
10
|
-
export declare class SqsValidationError extends InternalError {
|
|
11
|
-
constructor(params: CommonErrorParams);
|
|
12
|
-
}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SqsValidationError = exports.SqsMessageInvalidFormat = void 0;
|
|
4
|
-
const node_core_1 = require("@lokalise/node-core");
|
|
5
|
-
class SqsMessageInvalidFormat extends node_core_1.InternalError {
|
|
6
|
-
constructor(params) {
|
|
7
|
-
super({
|
|
8
|
-
message: params.message,
|
|
9
|
-
errorCode: 'SQS_MESSAGE_INVALID_FORMAT',
|
|
10
|
-
details: params.details,
|
|
11
|
-
});
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
exports.SqsMessageInvalidFormat = SqsMessageInvalidFormat;
|
|
15
|
-
class SqsValidationError extends node_core_1.InternalError {
|
|
16
|
-
constructor(params) {
|
|
17
|
-
super({
|
|
18
|
-
message: params.message,
|
|
19
|
-
errorCode: 'SQS_VALIDATION_ERROR',
|
|
20
|
-
details: params.details,
|
|
21
|
-
});
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
exports.SqsValidationError = SqsValidationError;
|
|
25
|
-
//# sourceMappingURL=sqsErrors.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sqsErrors.js","sourceRoot":"","sources":["../../../lib/errors/sqsErrors.ts"],"names":[],"mappings":";;;AAAA,mDAAmD;AAUnD,MAAa,uBAAwB,SAAQ,yBAAa;IACxD,YAAY,MAAyB;QACnC,KAAK,CAAC;YACJ,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,SAAS,EAAE,4BAA4B;YACvC,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC,CAAA;IACJ,CAAC;CACF;AARD,0DAQC;AAED,MAAa,kBAAmB,SAAQ,yBAAa;IACnD,YAAY,MAAyB;QACnC,KAAK,CAAC;YACJ,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,SAAS,EAAE,sBAAsB;YACjC,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC,CAAA;IACJ,CAAC;CACF;AARD,gDAQC"}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import type { Either, ErrorResolver } from '@lokalise/node-core';
|
|
2
|
-
import type { ZodType } from 'zod';
|
|
3
|
-
import type { SqsMessageInvalidFormat, SqsValidationError } from '../errors/sqsErrors';
|
|
4
|
-
import type { SQSMessage } from './AbstractSqsConsumer';
|
|
5
|
-
export declare const deserializeMessage: <T extends object>(message: SQSMessage, type: ZodType<T, import("zod").ZodTypeDef, T>, errorProcessor: ErrorResolver) => Either<SqsMessageInvalidFormat | SqsValidationError, T>;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"messageDeserializer.js","sourceRoot":"","sources":["../../../lib/sqs/messageDeserializer.ts"],"names":[],"mappings":";;;AAOO,MAAM,kBAAkB,GAAG,CAChC,OAAmB,EACnB,IAAgB,EAChB,cAA6B,EAC4B,EAAE;IAC3D,IAAI;QACF,OAAO;YACL,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;SAC7C,CAAA;KACF;IAAC,OAAO,SAAS,EAAE;QAClB,OAAO;YACL,KAAK,EAAE,cAAc,CAAC,YAAY,CAAC,SAAS,CAAC;SAC9C,CAAA;KACF;AACH,CAAC,CAAA;AAdY,QAAA,kBAAkB,sBAc9B"}
|