@message-queue-toolkit/sqs 20.1.0 → 21.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/dist/errors/SqsConsumerErrorResolver.js +34 -0
- package/dist/errors/SqsConsumerErrorResolver.js.map +1 -0
- package/dist/{lib/fakes → fakes}/FakeConsumerErrorResolver.d.ts +1 -1
- package/dist/fakes/FakeConsumerErrorResolver.js +19 -0
- package/dist/fakes/FakeConsumerErrorResolver.js.map +1 -0
- package/dist/index.d.ts +15 -15
- package/dist/index.js +11 -33
- package/dist/index.js.map +1 -1
- package/dist/{lib/sqs → sqs}/AbstractSqsConsumer.d.ts +4 -4
- package/dist/{lib/sqs → sqs}/AbstractSqsConsumer.js +29 -33
- package/dist/sqs/AbstractSqsConsumer.js.map +1 -0
- package/dist/{lib/sqs → sqs}/AbstractSqsPublisher.d.ts +3 -3
- package/dist/{lib/sqs → sqs}/AbstractSqsPublisher.js +14 -18
- package/dist/sqs/AbstractSqsPublisher.js.map +1 -0
- package/dist/{lib/sqs → sqs}/AbstractSqsService.d.ts +1 -1
- package/dist/sqs/AbstractSqsService.js +32 -0
- package/dist/sqs/AbstractSqsService.js.map +1 -0
- package/dist/types/MessageTypes.js +2 -0
- package/dist/{lib/types → types}/MessageTypes.js.map +1 -1
- package/dist/utils/messageUtils.js +17 -0
- package/dist/utils/messageUtils.js.map +1 -0
- package/dist/{lib/utils → utils}/sqsAttributeUtils.js +3 -8
- package/dist/utils/sqsAttributeUtils.js.map +1 -0
- package/dist/{lib/utils → utils}/sqsInitter.d.ts +1 -1
- package/dist/{lib/utils → utils}/sqsInitter.js +15 -20
- package/dist/utils/sqsInitter.js.map +1 -0
- package/dist/{lib/utils → utils}/sqsMessageDeserializer.d.ts +1 -1
- package/dist/utils/sqsMessageDeserializer.js +10 -0
- package/dist/utils/sqsMessageDeserializer.js.map +1 -0
- package/dist/{lib/utils → utils}/sqsMessageReader.d.ts +1 -1
- package/dist/{lib/utils → utils}/sqsMessageReader.js +1 -4
- package/dist/utils/sqsMessageReader.js.map +1 -0
- package/dist/{lib/utils → utils}/sqsUtils.d.ts +1 -1
- package/dist/{lib/utils → utils}/sqsUtils.js +29 -38
- package/dist/utils/sqsUtils.js.map +1 -0
- package/package.json +64 -59
- package/dist/lib/errors/SqsConsumerErrorResolver.js +0 -38
- package/dist/lib/errors/SqsConsumerErrorResolver.js.map +0 -1
- package/dist/lib/fakes/FakeConsumerErrorResolver.js +0 -23
- package/dist/lib/fakes/FakeConsumerErrorResolver.js.map +0 -1
- package/dist/lib/sqs/AbstractSqsConsumer.js.map +0 -1
- package/dist/lib/sqs/AbstractSqsPublisher.js.map +0 -1
- package/dist/lib/sqs/AbstractSqsService.js +0 -36
- package/dist/lib/sqs/AbstractSqsService.js.map +0 -1
- package/dist/lib/types/MessageTypes.js +0 -3
- package/dist/lib/utils/messageUtils.js +0 -22
- package/dist/lib/utils/messageUtils.js.map +0 -1
- package/dist/lib/utils/sqsAttributeUtils.js.map +0 -1
- package/dist/lib/utils/sqsInitter.js.map +0 -1
- package/dist/lib/utils/sqsMessageDeserializer.js +0 -14
- package/dist/lib/utils/sqsMessageDeserializer.js.map +0 -1
- package/dist/lib/utils/sqsMessageReader.js.map +0 -1
- package/dist/lib/utils/sqsUtils.js.map +0 -1
- /package/dist/{lib/errors → errors}/SqsConsumerErrorResolver.d.ts +0 -0
- /package/dist/{lib/types → types}/MessageTypes.d.ts +0 -0
- /package/dist/{lib/utils → utils}/messageUtils.d.ts +0 -0
- /package/dist/{lib/utils → utils}/sqsAttributeUtils.d.ts +0 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { types } from 'node:util';
|
|
2
|
+
import { InternalError, isStandardizedError } from '@lokalise/node-core';
|
|
3
|
+
import { MessageInvalidFormatError, MessageValidationError } from '@message-queue-toolkit/core';
|
|
4
|
+
import { ZodError } from 'zod';
|
|
5
|
+
export class SqsConsumerErrorResolver {
|
|
6
|
+
processError(error) {
|
|
7
|
+
if (types.isNativeError(error) && error?.name === 'SyntaxError') {
|
|
8
|
+
return new MessageInvalidFormatError({
|
|
9
|
+
message: error.message,
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
if (error instanceof ZodError) {
|
|
13
|
+
return new MessageValidationError({
|
|
14
|
+
message: error.message,
|
|
15
|
+
details: {
|
|
16
|
+
error: error.issues,
|
|
17
|
+
},
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
if (isStandardizedError(error)) {
|
|
21
|
+
return new InternalError({
|
|
22
|
+
message: error.message,
|
|
23
|
+
errorCode: error.code,
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
/* c8 ignore start */
|
|
27
|
+
return new InternalError({
|
|
28
|
+
message: 'Error processing message',
|
|
29
|
+
errorCode: 'INTERNAL_ERROR',
|
|
30
|
+
});
|
|
31
|
+
/* c8 ignore stop */
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=SqsConsumerErrorResolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SqsConsumerErrorResolver.js","sourceRoot":"","sources":["../../lib/errors/SqsConsumerErrorResolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAA;AAGjC,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AACxE,OAAO,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AAC/F,OAAO,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAA;AAE9B,MAAM,OAAO,wBAAwB;IAC5B,YAAY,CAAC,KAAc;QAChC,IAAI,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,EAAE,IAAI,KAAK,aAAa,EAAE,CAAC;YAChE,OAAO,IAAI,yBAAyB,CAAC;gBACnC,OAAO,EAAE,KAAK,CAAC,OAAO;aACvB,CAAC,CAAA;QACJ,CAAC;QACD,IAAI,KAAK,YAAY,QAAQ,EAAE,CAAC;YAC9B,OAAO,IAAI,sBAAsB,CAAC;gBAChC,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,OAAO,EAAE;oBACP,KAAK,EAAE,KAAK,CAAC,MAAM;iBACpB;aACF,CAAC,CAAA;QACJ,CAAC;QACD,IAAI,mBAAmB,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/B,OAAO,IAAI,aAAa,CAAC;gBACvB,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,SAAS,EAAE,KAAK,CAAC,IAAI;aACtB,CAAC,CAAA;QACJ,CAAC;QACD,qBAAqB;QACrB,OAAO,IAAI,aAAa,CAAC;YACvB,OAAO,EAAE,0BAA0B;YACnC,SAAS,EAAE,gBAAgB;SAC5B,CAAC,CAAA;QACF,oBAAoB;IACtB,CAAC;CACF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { SqsConsumerErrorResolver } from '../errors/SqsConsumerErrorResolver';
|
|
1
|
+
import { SqsConsumerErrorResolver } from '../errors/SqsConsumerErrorResolver.ts';
|
|
2
2
|
export declare class FakeConsumerErrorResolver extends SqsConsumerErrorResolver {
|
|
3
3
|
private _errors;
|
|
4
4
|
constructor();
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { SqsConsumerErrorResolver } from "../errors/SqsConsumerErrorResolver.js";
|
|
2
|
+
export class FakeConsumerErrorResolver extends SqsConsumerErrorResolver {
|
|
3
|
+
_errors;
|
|
4
|
+
constructor() {
|
|
5
|
+
super();
|
|
6
|
+
this._errors = [];
|
|
7
|
+
}
|
|
8
|
+
processError(error) {
|
|
9
|
+
this._errors.push(error);
|
|
10
|
+
return super.processError(error);
|
|
11
|
+
}
|
|
12
|
+
get errors() {
|
|
13
|
+
return this._errors;
|
|
14
|
+
}
|
|
15
|
+
clear() {
|
|
16
|
+
this._errors = [];
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=FakeConsumerErrorResolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FakeConsumerErrorResolver.js","sourceRoot":"","sources":["../../lib/fakes/FakeConsumerErrorResolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAA;AAEhF,MAAM,OAAO,yBAA0B,SAAQ,wBAAwB;IAC7D,OAAO,CAAW;IAE1B;QACE,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,OAAO,GAAG,EAAE,CAAA;IACnB,CAAC;IAEe,YAAY,CAAC,KAAc;QACzC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACxB,OAAO,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;IAClC,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;IACM,KAAK;QACV,IAAI,CAAC,OAAO,GAAG,EAAE,CAAA;IACnB,CAAC;CACF"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
export type { ExtraSQSCreationParams, SQSDependencies, SQSCreationConfig, SQSQueueLocatorType, } from './
|
|
2
|
-
export { SQS_MESSAGE_MAX_SIZE } from './
|
|
3
|
-
export { SqsConsumerErrorResolver } from './
|
|
4
|
-
export type { SQSConsumerDependencies, SQSConsumerOptions } from './
|
|
5
|
-
export { AbstractSqsConsumer } from './
|
|
6
|
-
export { AbstractSqsPublisher, OFFLOADED_PAYLOAD_SIZE_ATTRIBUTE, } from './
|
|
7
|
-
export type { SQSMessageOptions } from './
|
|
8
|
-
export { assertQueue, deleteQueue, getQueueAttributes, getQueueUrl, resolveQueueUrlFromLocatorConfig, } from './
|
|
9
|
-
export { deleteSqs, updateQueueAttributes } from './
|
|
10
|
-
export { deserializeSQSMessage } from './
|
|
11
|
-
export { generateQueuePublishForTopicPolicy, generateWildcardSqsArn, generateWildcardSnsArn, } from './
|
|
12
|
-
export type { CommonMessage, SQSMessage } from './
|
|
13
|
-
export { FakeConsumerErrorResolver } from './
|
|
14
|
-
export { calculateOutgoingMessageSize } from './
|
|
15
|
-
export { resolveOutgoingMessageAttributes } from './
|
|
1
|
+
export type { ExtraSQSCreationParams, SQSDependencies, SQSCreationConfig, SQSQueueLocatorType, } from './sqs/AbstractSqsService.ts';
|
|
2
|
+
export { SQS_MESSAGE_MAX_SIZE } from './sqs/AbstractSqsService.ts';
|
|
3
|
+
export { SqsConsumerErrorResolver } from './errors/SqsConsumerErrorResolver.ts';
|
|
4
|
+
export type { SQSConsumerDependencies, SQSConsumerOptions } from './sqs/AbstractSqsConsumer.ts';
|
|
5
|
+
export { AbstractSqsConsumer } from './sqs/AbstractSqsConsumer.ts';
|
|
6
|
+
export { AbstractSqsPublisher, OFFLOADED_PAYLOAD_SIZE_ATTRIBUTE, } from './sqs/AbstractSqsPublisher.ts';
|
|
7
|
+
export type { SQSMessageOptions } from './sqs/AbstractSqsPublisher.ts';
|
|
8
|
+
export { assertQueue, deleteQueue, getQueueAttributes, getQueueUrl, resolveQueueUrlFromLocatorConfig, } from './utils/sqsUtils.ts';
|
|
9
|
+
export { deleteSqs, updateQueueAttributes } from './utils/sqsInitter.ts';
|
|
10
|
+
export { deserializeSQSMessage } from './utils/sqsMessageDeserializer.ts';
|
|
11
|
+
export { generateQueuePublishForTopicPolicy, generateWildcardSqsArn, generateWildcardSnsArn, } from './utils/sqsAttributeUtils.ts';
|
|
12
|
+
export type { CommonMessage, SQSMessage } from './types/MessageTypes.ts';
|
|
13
|
+
export { FakeConsumerErrorResolver } from './fakes/FakeConsumerErrorResolver.ts';
|
|
14
|
+
export { calculateOutgoingMessageSize } from './utils/sqsUtils.ts';
|
|
15
|
+
export { resolveOutgoingMessageAttributes } from './utils/messageUtils.ts';
|
package/dist/index.js
CHANGED
|
@@ -1,34 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
Object.defineProperty(exports, "OFFLOADED_PAYLOAD_SIZE_ATTRIBUTE", { enumerable: true, get: function () { return AbstractSqsPublisher_1.OFFLOADED_PAYLOAD_SIZE_ATTRIBUTE; } });
|
|
13
|
-
var sqsUtils_1 = require("./lib/utils/sqsUtils");
|
|
14
|
-
Object.defineProperty(exports, "assertQueue", { enumerable: true, get: function () { return sqsUtils_1.assertQueue; } });
|
|
15
|
-
Object.defineProperty(exports, "deleteQueue", { enumerable: true, get: function () { return sqsUtils_1.deleteQueue; } });
|
|
16
|
-
Object.defineProperty(exports, "getQueueAttributes", { enumerable: true, get: function () { return sqsUtils_1.getQueueAttributes; } });
|
|
17
|
-
Object.defineProperty(exports, "getQueueUrl", { enumerable: true, get: function () { return sqsUtils_1.getQueueUrl; } });
|
|
18
|
-
Object.defineProperty(exports, "resolveQueueUrlFromLocatorConfig", { enumerable: true, get: function () { return sqsUtils_1.resolveQueueUrlFromLocatorConfig; } });
|
|
19
|
-
var sqsInitter_1 = require("./lib/utils/sqsInitter");
|
|
20
|
-
Object.defineProperty(exports, "deleteSqs", { enumerable: true, get: function () { return sqsInitter_1.deleteSqs; } });
|
|
21
|
-
Object.defineProperty(exports, "updateQueueAttributes", { enumerable: true, get: function () { return sqsInitter_1.updateQueueAttributes; } });
|
|
22
|
-
var sqsMessageDeserializer_1 = require("./lib/utils/sqsMessageDeserializer");
|
|
23
|
-
Object.defineProperty(exports, "deserializeSQSMessage", { enumerable: true, get: function () { return sqsMessageDeserializer_1.deserializeSQSMessage; } });
|
|
24
|
-
var sqsAttributeUtils_1 = require("./lib/utils/sqsAttributeUtils");
|
|
25
|
-
Object.defineProperty(exports, "generateQueuePublishForTopicPolicy", { enumerable: true, get: function () { return sqsAttributeUtils_1.generateQueuePublishForTopicPolicy; } });
|
|
26
|
-
Object.defineProperty(exports, "generateWildcardSqsArn", { enumerable: true, get: function () { return sqsAttributeUtils_1.generateWildcardSqsArn; } });
|
|
27
|
-
Object.defineProperty(exports, "generateWildcardSnsArn", { enumerable: true, get: function () { return sqsAttributeUtils_1.generateWildcardSnsArn; } });
|
|
28
|
-
var FakeConsumerErrorResolver_1 = require("./lib/fakes/FakeConsumerErrorResolver");
|
|
29
|
-
Object.defineProperty(exports, "FakeConsumerErrorResolver", { enumerable: true, get: function () { return FakeConsumerErrorResolver_1.FakeConsumerErrorResolver; } });
|
|
30
|
-
var sqsUtils_2 = require("./lib/utils/sqsUtils");
|
|
31
|
-
Object.defineProperty(exports, "calculateOutgoingMessageSize", { enumerable: true, get: function () { return sqsUtils_2.calculateOutgoingMessageSize; } });
|
|
32
|
-
var messageUtils_1 = require("./lib/utils/messageUtils");
|
|
33
|
-
Object.defineProperty(exports, "resolveOutgoingMessageAttributes", { enumerable: true, get: function () { return messageUtils_1.resolveOutgoingMessageAttributes; } });
|
|
1
|
+
export { SQS_MESSAGE_MAX_SIZE } from "./sqs/AbstractSqsService.js";
|
|
2
|
+
export { SqsConsumerErrorResolver } from "./errors/SqsConsumerErrorResolver.js";
|
|
3
|
+
export { AbstractSqsConsumer } from "./sqs/AbstractSqsConsumer.js";
|
|
4
|
+
export { AbstractSqsPublisher, OFFLOADED_PAYLOAD_SIZE_ATTRIBUTE, } from "./sqs/AbstractSqsPublisher.js";
|
|
5
|
+
export { assertQueue, deleteQueue, getQueueAttributes, getQueueUrl, resolveQueueUrlFromLocatorConfig, } from "./utils/sqsUtils.js";
|
|
6
|
+
export { deleteSqs, updateQueueAttributes } from "./utils/sqsInitter.js";
|
|
7
|
+
export { deserializeSQSMessage } from "./utils/sqsMessageDeserializer.js";
|
|
8
|
+
export { generateQueuePublishForTopicPolicy, generateWildcardSqsArn, generateWildcardSnsArn, } from "./utils/sqsAttributeUtils.js";
|
|
9
|
+
export { FakeConsumerErrorResolver } from "./fakes/FakeConsumerErrorResolver.js";
|
|
10
|
+
export { calculateOutgoingMessageSize } from "./utils/sqsUtils.js";
|
|
11
|
+
export { resolveOutgoingMessageAttributes } from "./utils/messageUtils.js";
|
|
34
12
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AAElE,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAA;AAG/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAA;AAElE,OAAO,EACL,oBAAoB,EACpB,gCAAgC,GACjC,MAAM,+BAA+B,CAAA;AAGtC,OAAO,EACL,WAAW,EACX,WAAW,EACX,kBAAkB,EAClB,WAAW,EACX,gCAAgC,GACjC,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAA;AACxE,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAA;AACzE,OAAO,EACL,kCAAkC,EAClC,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,8BAA8B,CAAA;AAGrC,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAA;AAEhF,OAAO,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAA;AAClE,OAAO,EAAE,gCAAgC,EAAE,MAAM,yBAAyB,CAAA"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { Either, ErrorResolver } from '@lokalise/node-core';
|
|
2
2
|
import { type BarrierResult, type MessageSchemaContainer, type PreHandlingOutputs, type Prehandler, type QueueConsumer, type QueueConsumerDependencies, type QueueConsumerOptions } from '@message-queue-toolkit/core';
|
|
3
|
-
import type { ConsumerOptions } from 'sqs-consumer
|
|
4
|
-
import type { SQSMessage } from '../types/MessageTypes';
|
|
5
|
-
import type { SQSCreationConfig, SQSDependencies, SQSQueueLocatorType } from './AbstractSqsService';
|
|
6
|
-
import { AbstractSqsService } from './AbstractSqsService';
|
|
3
|
+
import type { ConsumerOptions } from 'sqs-consumer';
|
|
4
|
+
import type { SQSMessage } from '../types/MessageTypes.ts';
|
|
5
|
+
import type { SQSCreationConfig, SQSDependencies, SQSQueueLocatorType } from './AbstractSqsService.ts';
|
|
6
|
+
import { AbstractSqsService } from './AbstractSqsService.ts';
|
|
7
7
|
type SQSDeadLetterQueueOptions = {
|
|
8
8
|
redrivePolicy: {
|
|
9
9
|
maxReceiveCount: number;
|
|
@@ -1,20 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
const sqsUtils_1 = require("../utils/sqsUtils");
|
|
11
|
-
const AbstractSqsPublisher_1 = require("./AbstractSqsPublisher");
|
|
12
|
-
const AbstractSqsService_1 = require("./AbstractSqsService");
|
|
1
|
+
import { SendMessageCommand, SetQueueAttributesCommand } from '@aws-sdk/client-sqs';
|
|
2
|
+
import { DeduplicationRequesterEnum, HandlerContainer, isMessageError, noopReleasableLock, parseMessage, } from '@message-queue-toolkit/core';
|
|
3
|
+
import { Consumer } from 'sqs-consumer';
|
|
4
|
+
import { hasOffloadedPayload } from "../utils/messageUtils.js";
|
|
5
|
+
import { deleteSqs, initSqs } from "../utils/sqsInitter.js";
|
|
6
|
+
import { readSqsMessage } from "../utils/sqsMessageReader.js";
|
|
7
|
+
import { getQueueAttributes } from "../utils/sqsUtils.js";
|
|
8
|
+
import { PAYLOAD_OFFLOADING_ATTRIBUTE_PREFIX } from "./AbstractSqsPublisher.js";
|
|
9
|
+
import { AbstractSqsService } from "./AbstractSqsService.js";
|
|
13
10
|
const ABORT_EARLY_EITHER = {
|
|
14
11
|
error: 'abort',
|
|
15
12
|
};
|
|
16
13
|
const DEFAULT_MAX_RETRY_DURATION = 4 * 24 * 60 * 60; // 4 days in seconds
|
|
17
|
-
class AbstractSqsConsumer extends
|
|
14
|
+
export class AbstractSqsConsumer extends AbstractSqsService {
|
|
18
15
|
consumers;
|
|
19
16
|
concurrentConsumersAmount;
|
|
20
17
|
transactionObservabilityManager;
|
|
@@ -38,7 +35,7 @@ class AbstractSqsConsumer extends AbstractSqsService_1.AbstractSqsService {
|
|
|
38
35
|
this.consumers = [];
|
|
39
36
|
this.concurrentConsumersAmount = options.concurrentConsumersAmount ?? 1;
|
|
40
37
|
this._messageSchemaContainer = this.resolveConsumerMessageSchemaContainer(options);
|
|
41
|
-
this.handlerContainer = new
|
|
38
|
+
this.handlerContainer = new HandlerContainer({
|
|
42
39
|
messageTypeField: this.messageTypeField,
|
|
43
40
|
messageHandlers: options.handlers,
|
|
44
41
|
});
|
|
@@ -53,10 +50,10 @@ class AbstractSqsConsumer extends AbstractSqsService_1.AbstractSqsService {
|
|
|
53
50
|
return;
|
|
54
51
|
const { deletionConfig, locatorConfig, creationConfig, redrivePolicy } = this.deadLetterQueueOptions;
|
|
55
52
|
if (deletionConfig && creationConfig) {
|
|
56
|
-
await
|
|
53
|
+
await deleteSqs(this.sqsClient, deletionConfig, creationConfig);
|
|
57
54
|
}
|
|
58
|
-
const result = await
|
|
59
|
-
await this.sqsClient.send(new
|
|
55
|
+
const result = await initSqs(this.sqsClient, locatorConfig, creationConfig);
|
|
56
|
+
await this.sqsClient.send(new SetQueueAttributesCommand({
|
|
60
57
|
QueueUrl: this.queueUrl,
|
|
61
58
|
Attributes: {
|
|
62
59
|
RedrivePolicy: JSON.stringify({
|
|
@@ -84,11 +81,11 @@ class AbstractSqsConsumer extends AbstractSqsService_1.AbstractSqsService {
|
|
|
84
81
|
this.stopExistingConsumers(abort ?? false);
|
|
85
82
|
}
|
|
86
83
|
createConsumer(options) {
|
|
87
|
-
return
|
|
84
|
+
return Consumer.create({
|
|
88
85
|
sqs: this.sqsClient,
|
|
89
86
|
queueUrl: this.queueUrl,
|
|
90
87
|
visibilityTimeout: options.visibilityTimeout,
|
|
91
|
-
messageAttributeNames: [`${
|
|
88
|
+
messageAttributeNames: [`${PAYLOAD_OFFLOADING_ATTRIBUTE_PREFIX}*`],
|
|
92
89
|
...this.consumerOptionsOverride,
|
|
93
90
|
// biome-ignore lint/complexity/noExcessiveCognitiveComplexity: <explanation>
|
|
94
91
|
handleMessage: async (message) => {
|
|
@@ -110,7 +107,7 @@ class AbstractSqsConsumer extends AbstractSqsService_1.AbstractSqsService {
|
|
|
110
107
|
}
|
|
111
108
|
const { parsedMessage, originalMessage } = deserializedMessage.result;
|
|
112
109
|
if (this.isDeduplicationEnabledForMessage(parsedMessage) &&
|
|
113
|
-
(await this.isMessageDuplicated(parsedMessage,
|
|
110
|
+
(await this.isMessageDuplicated(parsedMessage, DeduplicationRequesterEnum.Consumer))) {
|
|
114
111
|
this.handleMessageProcessed({
|
|
115
112
|
message: parsedMessage,
|
|
116
113
|
processingResult: { status: 'consumed', skippedAsDuplicate: true },
|
|
@@ -122,7 +119,7 @@ class AbstractSqsConsumer extends AbstractSqsService_1.AbstractSqsService {
|
|
|
122
119
|
}
|
|
123
120
|
const acquireLockResult = this.isDeduplicationEnabledForMessage(parsedMessage)
|
|
124
121
|
? await this.acquireLockForMessage(parsedMessage)
|
|
125
|
-
: { result:
|
|
122
|
+
: { result: noopReleasableLock };
|
|
126
123
|
// Lock cannot be acquired as it is already being processed by another consumer.
|
|
127
124
|
// We don't want to discard message yet as we don't know if the other consumer will be able to process it successfully.
|
|
128
125
|
// We're re-queueing the message, so it can be processed later.
|
|
@@ -133,7 +130,7 @@ class AbstractSqsConsumer extends AbstractSqsService_1.AbstractSqsService {
|
|
|
133
130
|
// While the consumer was waiting for a lock to be acquired, the message might have been processed
|
|
134
131
|
// by another consumer already, hence we need to check again if the message is not marked as duplicated.
|
|
135
132
|
if (this.isDeduplicationEnabledForMessage(parsedMessage) &&
|
|
136
|
-
(await this.isMessageDuplicated(parsedMessage,
|
|
133
|
+
(await this.isMessageDuplicated(parsedMessage, DeduplicationRequesterEnum.Consumer))) {
|
|
137
134
|
await acquireLockResult.result?.release();
|
|
138
135
|
this.handleMessageProcessed({
|
|
139
136
|
message: parsedMessage,
|
|
@@ -166,7 +163,7 @@ class AbstractSqsConsumer extends AbstractSqsService_1.AbstractSqsService {
|
|
|
166
163
|
});
|
|
167
164
|
// success
|
|
168
165
|
if (result.result) {
|
|
169
|
-
await this.deduplicateMessage(parsedMessage,
|
|
166
|
+
await this.deduplicateMessage(parsedMessage, DeduplicationRequesterEnum.Consumer);
|
|
170
167
|
await acquireLockResult.result?.release();
|
|
171
168
|
this.handleMessageProcessed({
|
|
172
169
|
message: originalMessage,
|
|
@@ -194,7 +191,7 @@ class AbstractSqsConsumer extends AbstractSqsService_1.AbstractSqsService {
|
|
|
194
191
|
}
|
|
195
192
|
async handleRetryLater(message, originalMessage, parsedMessage, messageProcessingStartTimestamp) {
|
|
196
193
|
if (this.shouldBeRetried(originalMessage, this.maxRetryDuration)) {
|
|
197
|
-
await this.sqsClient.send(new
|
|
194
|
+
await this.sqsClient.send(new SendMessageCommand({
|
|
198
195
|
QueueUrl: this.queueUrl,
|
|
199
196
|
DelaySeconds: this.getMessageRetryDelayInSeconds(originalMessage),
|
|
200
197
|
MessageBody: JSON.stringify(this.updateInternalProperties(originalMessage)),
|
|
@@ -260,14 +257,14 @@ class AbstractSqsConsumer extends AbstractSqsService_1.AbstractSqsService {
|
|
|
260
257
|
return handler.messageLogFormatter(message);
|
|
261
258
|
}
|
|
262
259
|
resolveMessage(message) {
|
|
263
|
-
return
|
|
260
|
+
return readSqsMessage(message, this.errorResolver);
|
|
264
261
|
}
|
|
265
262
|
isDeduplicationEnabledForMessage(message) {
|
|
266
263
|
return this.isDeduplicationEnabled && super.isDeduplicationEnabledForMessage(message);
|
|
267
264
|
}
|
|
268
265
|
async resolveMaybeOffloadedPayloadMessage(message) {
|
|
269
266
|
const resolveMessageResult = this.resolveMessage(message);
|
|
270
|
-
if (
|
|
267
|
+
if (isMessageError(resolveMessageResult.error)) {
|
|
271
268
|
this.handleError(resolveMessageResult.error);
|
|
272
269
|
return ABORT_EARLY_EITHER;
|
|
273
270
|
}
|
|
@@ -275,7 +272,7 @@ class AbstractSqsConsumer extends AbstractSqsService_1.AbstractSqsService {
|
|
|
275
272
|
if (!resolveMessageResult.result || !resolveMessageResult.result.body) {
|
|
276
273
|
return ABORT_EARLY_EITHER;
|
|
277
274
|
}
|
|
278
|
-
if (
|
|
275
|
+
if (hasOffloadedPayload(resolveMessageResult.result)) {
|
|
279
276
|
const retrieveOffloadedMessagePayloadResult = await this.retrieveOffloadedMessagePayload(resolveMessageResult.result.body);
|
|
280
277
|
if (retrieveOffloadedMessagePayloadResult.error) {
|
|
281
278
|
this.handleError(retrieveOffloadedMessagePayloadResult.error);
|
|
@@ -287,7 +284,7 @@ class AbstractSqsConsumer extends AbstractSqsService_1.AbstractSqsService {
|
|
|
287
284
|
}
|
|
288
285
|
tryToExtractId(message) {
|
|
289
286
|
const resolveMessageResult = this.resolveMessage(message);
|
|
290
|
-
if (
|
|
287
|
+
if (isMessageError(resolveMessageResult.error)) {
|
|
291
288
|
this.handleError(resolveMessageResult.error);
|
|
292
289
|
return ABORT_EARLY_EITHER;
|
|
293
290
|
}
|
|
@@ -317,8 +314,8 @@ class AbstractSqsConsumer extends AbstractSqsService_1.AbstractSqsService {
|
|
|
317
314
|
this.handleError(resolveSchemaResult.error);
|
|
318
315
|
return ABORT_EARLY_EITHER;
|
|
319
316
|
}
|
|
320
|
-
const deserializationResult =
|
|
321
|
-
if (
|
|
317
|
+
const deserializationResult = parseMessage(resolveMessageResult.result.body, resolveSchemaResult.result, this.errorResolver);
|
|
318
|
+
if (isMessageError(deserializationResult.error)) {
|
|
322
319
|
this.handleError(deserializationResult.error);
|
|
323
320
|
return ABORT_EARLY_EITHER;
|
|
324
321
|
}
|
|
@@ -333,7 +330,7 @@ class AbstractSqsConsumer extends AbstractSqsService_1.AbstractSqsService {
|
|
|
333
330
|
async failProcessing(message) {
|
|
334
331
|
if (!this.deadLetterQueueUrl)
|
|
335
332
|
return;
|
|
336
|
-
const command = new
|
|
333
|
+
const command = new SendMessageCommand({
|
|
337
334
|
QueueUrl: this.deadLetterQueueUrl,
|
|
338
335
|
MessageBody: message.Body,
|
|
339
336
|
});
|
|
@@ -346,7 +343,7 @@ class AbstractSqsConsumer extends AbstractSqsService_1.AbstractSqsService {
|
|
|
346
343
|
}
|
|
347
344
|
else {
|
|
348
345
|
// if user is using locatorConfig, we should look into queue config
|
|
349
|
-
const queueAttributes = await
|
|
346
|
+
const queueAttributes = await getQueueAttributes(this.sqsClient, this.queueUrl, [
|
|
350
347
|
'VisibilityTimeout',
|
|
351
348
|
]);
|
|
352
349
|
visibilityTimeoutString = queueAttributes.result?.attributes?.VisibilityTimeout;
|
|
@@ -355,5 +352,4 @@ class AbstractSqsConsumer extends AbstractSqsService_1.AbstractSqsService {
|
|
|
355
352
|
return visibilityTimeoutString ? Number.parseInt(visibilityTimeoutString) : undefined;
|
|
356
353
|
}
|
|
357
354
|
}
|
|
358
|
-
exports.AbstractSqsConsumer = AbstractSqsConsumer;
|
|
359
355
|
//# sourceMappingURL=AbstractSqsConsumer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AbstractSqsConsumer.js","sourceRoot":"","sources":["../../lib/sqs/AbstractSqsConsumer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { Either } from '@lokalise/node-core';
|
|
2
2
|
import { type AsyncPublisher, type BarrierResult, type MessageInvalidFormatError, type MessageValidationError, type OffloadedPayloadPointerPayload, type QueuePublisherOptions, type ResolvedMessage } from '@message-queue-toolkit/core';
|
|
3
3
|
import type { ZodSchema } from 'zod';
|
|
4
|
-
import type { SQSMessage } from '../types/MessageTypes';
|
|
5
|
-
import type { SQSCreationConfig, SQSDependencies, SQSQueueLocatorType } from './AbstractSqsService';
|
|
6
|
-
import { AbstractSqsService } from './AbstractSqsService';
|
|
4
|
+
import type { SQSMessage } from '../types/MessageTypes.ts';
|
|
5
|
+
import type { SQSCreationConfig, SQSDependencies, SQSQueueLocatorType } from './AbstractSqsService.ts';
|
|
6
|
+
import { AbstractSqsService } from './AbstractSqsService.ts';
|
|
7
7
|
export type SQSMessageOptions = {
|
|
8
8
|
MessageGroupId?: string;
|
|
9
9
|
MessageDeduplicationId?: string;
|
|
@@ -1,15 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
exports.PAYLOAD_OFFLOADING_ATTRIBUTE_PREFIX = 'payloadOffloading.';
|
|
11
|
-
exports.OFFLOADED_PAYLOAD_SIZE_ATTRIBUTE = `${exports.PAYLOAD_OFFLOADING_ATTRIBUTE_PREFIX}size`;
|
|
12
|
-
class AbstractSqsPublisher extends AbstractSqsService_1.AbstractSqsService {
|
|
1
|
+
import { SendMessageCommand } from '@aws-sdk/client-sqs';
|
|
2
|
+
import { InternalError } from '@lokalise/node-core';
|
|
3
|
+
import { DeduplicationRequesterEnum, } from '@message-queue-toolkit/core';
|
|
4
|
+
import { resolveOutgoingMessageAttributes } from "../utils/messageUtils.js";
|
|
5
|
+
import { calculateOutgoingMessageSize } from "../utils/sqsUtils.js";
|
|
6
|
+
import { AbstractSqsService } from "./AbstractSqsService.js";
|
|
7
|
+
export const PAYLOAD_OFFLOADING_ATTRIBUTE_PREFIX = 'payloadOffloading.';
|
|
8
|
+
export const OFFLOADED_PAYLOAD_SIZE_ATTRIBUTE = `${PAYLOAD_OFFLOADING_ATTRIBUTE_PREFIX}size`;
|
|
9
|
+
export class AbstractSqsPublisher extends AbstractSqsService {
|
|
13
10
|
messageSchemaContainer;
|
|
14
11
|
isDeduplicationEnabled;
|
|
15
12
|
initPromise;
|
|
@@ -42,9 +39,9 @@ class AbstractSqsPublisher extends AbstractSqsService_1.AbstractSqsService {
|
|
|
42
39
|
}
|
|
43
40
|
// biome-ignore lint/style/noParameterAssign: This is expected
|
|
44
41
|
message = this.updateInternalProperties(message);
|
|
45
|
-
const maybeOffloadedPayloadMessage = await this.offloadMessagePayloadIfNeeded(message, () =>
|
|
42
|
+
const maybeOffloadedPayloadMessage = await this.offloadMessagePayloadIfNeeded(message, () => calculateOutgoingMessageSize(message));
|
|
46
43
|
if (this.isDeduplicationEnabledForMessage(parsedMessage) &&
|
|
47
|
-
(await this.deduplicateMessage(parsedMessage,
|
|
44
|
+
(await this.deduplicateMessage(parsedMessage, DeduplicationRequesterEnum.Publisher))
|
|
48
45
|
.isDuplicated) {
|
|
49
46
|
this.handleMessageProcessed({
|
|
50
47
|
message: parsedMessage,
|
|
@@ -65,7 +62,7 @@ class AbstractSqsPublisher extends AbstractSqsService_1.AbstractSqsService {
|
|
|
65
62
|
catch (error) {
|
|
66
63
|
const err = error;
|
|
67
64
|
this.handleError(err);
|
|
68
|
-
throw new
|
|
65
|
+
throw new InternalError({
|
|
69
66
|
message: `Error while publishing to SQS: ${err.message}`,
|
|
70
67
|
errorCode: 'SQS_PUBLISH_ERROR',
|
|
71
68
|
details: {
|
|
@@ -103,8 +100,8 @@ class AbstractSqsPublisher extends AbstractSqsService_1.AbstractSqsService {
|
|
|
103
100
|
return this.messageSchemaContainer.resolveSchema(message);
|
|
104
101
|
}
|
|
105
102
|
async sendMessage(payload, options) {
|
|
106
|
-
const attributes =
|
|
107
|
-
const command = new
|
|
103
|
+
const attributes = resolveOutgoingMessageAttributes(payload);
|
|
104
|
+
const command = new SendMessageCommand({
|
|
108
105
|
QueueUrl: this.queueUrl,
|
|
109
106
|
MessageBody: JSON.stringify(payload),
|
|
110
107
|
MessageAttributes: attributes,
|
|
@@ -113,5 +110,4 @@ class AbstractSqsPublisher extends AbstractSqsService_1.AbstractSqsService {
|
|
|
113
110
|
await this.sqsClient.send(command);
|
|
114
111
|
}
|
|
115
112
|
}
|
|
116
|
-
exports.AbstractSqsPublisher = AbstractSqsPublisher;
|
|
117
113
|
//# sourceMappingURL=AbstractSqsPublisher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AbstractSqsPublisher.js","sourceRoot":"","sources":["../../lib/sqs/AbstractSqsPublisher.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { CreateQueueRequest, SQSClient } from '@aws-sdk/client-sqs';
|
|
2
2
|
import type { QueueDependencies, QueueOptions } from '@message-queue-toolkit/core';
|
|
3
3
|
import { AbstractQueueService } from '@message-queue-toolkit/core';
|
|
4
|
-
import type { SQSMessage } from '../types/MessageTypes';
|
|
4
|
+
import type { SQSMessage } from '../types/MessageTypes.ts';
|
|
5
5
|
export declare const SQS_MESSAGE_MAX_SIZE: number;
|
|
6
6
|
export type SQSDependencies = QueueDependencies & {
|
|
7
7
|
sqsClient: SQSClient;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { AbstractQueueService } from '@message-queue-toolkit/core';
|
|
2
|
+
import { deleteSqs, initSqs } from "../utils/sqsInitter.js";
|
|
3
|
+
// https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/quotas-messages.html
|
|
4
|
+
export const SQS_MESSAGE_MAX_SIZE = 256 * 1024; // 256KB
|
|
5
|
+
export class AbstractSqsService extends AbstractQueueService {
|
|
6
|
+
sqsClient;
|
|
7
|
+
// @ts-ignore
|
|
8
|
+
queueName;
|
|
9
|
+
// @ts-ignore
|
|
10
|
+
queueUrl;
|
|
11
|
+
// @ts-ignore
|
|
12
|
+
queueArn;
|
|
13
|
+
constructor(dependencies, options) {
|
|
14
|
+
super(dependencies, options);
|
|
15
|
+
this.sqsClient = dependencies.sqsClient;
|
|
16
|
+
}
|
|
17
|
+
async init() {
|
|
18
|
+
if (this.deletionConfig && this.creationConfig) {
|
|
19
|
+
await deleteSqs(this.sqsClient, this.deletionConfig, this.creationConfig);
|
|
20
|
+
}
|
|
21
|
+
const { queueName, queueUrl, queueArn } = await initSqs(this.sqsClient, this.locatorConfig, this.creationConfig);
|
|
22
|
+
this.queueName = queueName;
|
|
23
|
+
this.queueUrl = queueUrl;
|
|
24
|
+
this.queueArn = queueArn;
|
|
25
|
+
this.isInitted = true;
|
|
26
|
+
}
|
|
27
|
+
close() {
|
|
28
|
+
this.isInitted = false;
|
|
29
|
+
return Promise.resolve();
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=AbstractSqsService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AbstractSqsService.js","sourceRoot":"","sources":["../../lib/sqs/AbstractSqsService.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AAElE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AAE3D,kGAAkG;AAClG,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,GAAG,IAAI,CAAA,CAAC,QAAQ;AA4BvD,MAAM,OAAgB,kBAWpB,SAAQ,oBAST;IACoB,SAAS,CAAW;IAEvC,aAAa;IACH,SAAS,CAAQ;IAC3B,aAAa;IACH,QAAQ,CAAQ;IAC1B,aAAa;IACH,QAAQ,CAAQ;IAE1B,YAAY,YAA8B,EAAE,OAAuB;QACjE,KAAK,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;QAC5B,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC,SAAS,CAAA;IACzC,CAAC;IAEM,KAAK,CAAC,IAAI;QACf,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YAC/C,MAAM,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,CAAA;QAC3E,CAAC;QACD,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,MAAM,OAAO,CACrD,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,cAAc,CACpB,CAAA;QACD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAA;QAC1B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;IACvB,CAAC;IAEe,KAAK;QACnB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;QACtB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;IAC1B,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageTypes.js","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"MessageTypes.js","sourceRoot":"","sources":["../../lib/types/MessageTypes.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { isOffloadedPayloadPointerPayload } from '@message-queue-toolkit/core';
|
|
2
|
+
export const OFFLOADED_PAYLOAD_SIZE_ATTRIBUTE = 'payloadOffloading.size';
|
|
3
|
+
export function resolveOutgoingMessageAttributes(payload) {
|
|
4
|
+
const attributes = {};
|
|
5
|
+
if (isOffloadedPayloadPointerPayload(payload)) {
|
|
6
|
+
attributes[OFFLOADED_PAYLOAD_SIZE_ATTRIBUTE] = {
|
|
7
|
+
DataType: 'Number',
|
|
8
|
+
// The SQS SDK does not provide properties to set numeric values, we have to convert it to string
|
|
9
|
+
StringValue: payload.offloadedPayloadSize.toString(),
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
return attributes;
|
|
13
|
+
}
|
|
14
|
+
export function hasOffloadedPayload(message) {
|
|
15
|
+
return !!message.attributes && OFFLOADED_PAYLOAD_SIZE_ATTRIBUTE in message.attributes;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=messageUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messageUtils.js","sourceRoot":"","sources":["../../lib/utils/messageUtils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gCAAgC,EAAE,MAAM,6BAA6B,CAAA;AAE9E,MAAM,CAAC,MAAM,gCAAgC,GAAG,wBAAwB,CAAA;AAExE,MAAM,UAAU,gCAAgC,CAC9C,OAAgB;IAEhB,MAAM,UAAU,GAA0C,EAAE,CAAA;IAE5D,IAAI,gCAAgC,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9C,UAAU,CAAC,gCAAgC,CAAC,GAAG;YAC7C,QAAQ,EAAE,QAAQ;YAClB,iGAAiG;YACjG,WAAW,EAAE,OAAO,CAAC,oBAAoB,CAAC,QAAQ,EAAE;SAC5B,CAAA;IAC5B,CAAC;IAED,OAAO,UAAU,CAAA;AACnB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAwB;IAC1D,OAAO,CAAC,CAAC,OAAO,CAAC,UAAU,IAAI,gCAAgC,IAAI,OAAO,CAAC,UAAU,CAAA;AACvF,CAAC"}
|
|
@@ -1,17 +1,12 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.generateQueuePublishForTopicPolicy = generateQueuePublishForTopicPolicy;
|
|
4
|
-
exports.generateWildcardSqsArn = generateWildcardSqsArn;
|
|
5
|
-
exports.generateWildcardSnsArn = generateWildcardSnsArn;
|
|
6
1
|
// See https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_version.html
|
|
7
2
|
const POLICY_VERSION = '2012-10-17';
|
|
8
|
-
function generateQueuePublishForTopicPolicy(queueArn, supportedSnsTopicArnPrefix) {
|
|
3
|
+
export function generateQueuePublishForTopicPolicy(queueArn, supportedSnsTopicArnPrefix) {
|
|
9
4
|
return `{"Version":"${POLICY_VERSION}","Id":"__default_policy_ID","Statement":[{"Sid":"AllowSNSPublish","Effect":"Allow","Principal":{"AWS":"*"},"Action":"sqs:SendMessage","Resource":"${queueArn}","Condition":{"ArnLike":{"aws:SourceArn":"${supportedSnsTopicArnPrefix}"}}}]}`;
|
|
10
5
|
}
|
|
11
|
-
function generateWildcardSqsArn(sqsQueueArnPrefix) {
|
|
6
|
+
export function generateWildcardSqsArn(sqsQueueArnPrefix) {
|
|
12
7
|
return `arn:aws:sqs:*:*:${sqsQueueArnPrefix}`;
|
|
13
8
|
}
|
|
14
|
-
function generateWildcardSnsArn(snsTopicArnPrefix) {
|
|
9
|
+
export function generateWildcardSnsArn(snsTopicArnPrefix) {
|
|
15
10
|
return `arn:aws:sns:*:*:${snsTopicArnPrefix}`;
|
|
16
11
|
}
|
|
17
12
|
//# sourceMappingURL=sqsAttributeUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqsAttributeUtils.js","sourceRoot":"","sources":["../../lib/utils/sqsAttributeUtils.ts"],"names":[],"mappings":"AAAA,gGAAgG;AAChG,MAAM,cAAc,GAAG,YAAY,CAAA;AAEnC,MAAM,UAAU,kCAAkC,CAChD,QAAgB,EAChB,0BAAkC;IAElC,OAAO,eAAe,cAAc,sJAAsJ,QAAQ,8CAA8C,0BAA0B,QAAQ,CAAA;AACpR,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,iBAAyB;IAC9D,OAAO,mBAAmB,iBAAiB,EAAE,CAAA;AAC/C,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,iBAAyB;IAC9D,OAAO,mBAAmB,iBAAiB,EAAE,CAAA;AAC/C,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { QueueAttributeName, SQSClient } from '@aws-sdk/client-sqs';
|
|
2
2
|
import type { DeletionConfig } from '@message-queue-toolkit/core';
|
|
3
|
-
import type { SQSCreationConfig, SQSQueueLocatorType } from '../sqs/AbstractSqsService';
|
|
3
|
+
import type { SQSCreationConfig, SQSQueueLocatorType } from '../sqs/AbstractSqsService.ts';
|
|
4
4
|
export declare function deleteSqs(sqsClient: SQSClient, deletionConfig: DeletionConfig, creationConfig: SQSCreationConfig): Promise<void>;
|
|
5
5
|
export declare function updateQueueAttributes(sqsClient: SQSClient, queueUrl: string, attributes?: Partial<Record<QueueAttributeName, string>>): Promise<void>;
|
|
6
6
|
export declare function updateQueueTags(sqsClient: SQSClient, queueUrl: string, tags?: Record<string, string> | undefined): Promise<void>;
|