@message-queue-toolkit/sns 3.3.0 → 3.5.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 CHANGED
@@ -14,4 +14,4 @@ export { assertTopic, deleteTopic, getTopicAttributes, deleteSubscription, } fro
14
14
  export { subscribeToTopic } from './lib/utils/snsSubscriber';
15
15
  export { initSns, initSnsSqs } from './lib/utils/snsInitter';
16
16
  export { readSnsMessage } from './lib/utils/snsMessageReader';
17
- export { generateFilterAttributes, generateTopicSubscriptionPolicy, generateQueuePublishForTopicPolicy, } from './lib/utils/snsAttributeUtils';
17
+ export { generateFilterAttributes, generateTopicSubscriptionPolicy, } from './lib/utils/snsAttributeUtils';
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.generateQueuePublishForTopicPolicy = exports.generateTopicSubscriptionPolicy = exports.generateFilterAttributes = exports.readSnsMessage = exports.initSnsSqs = exports.initSns = exports.subscribeToTopic = exports.deleteSubscription = exports.getTopicAttributes = exports.deleteTopic = exports.assertTopic = exports.deserializeSNSMessage = exports.AbstractSnsSqsConsumerMultiSchema = exports.AbstractSnsSqsConsumerMonoSchema = exports.AbstractSnsPublisherMultiSchema = exports.AbstractSnsPublisherMonoSchema = exports.SnsConsumerErrorResolver = exports.AbstractSnsService = void 0;
3
+ exports.generateTopicSubscriptionPolicy = exports.generateFilterAttributes = exports.readSnsMessage = exports.initSnsSqs = exports.initSns = exports.subscribeToTopic = exports.deleteSubscription = exports.getTopicAttributes = exports.deleteTopic = exports.assertTopic = exports.deserializeSNSMessage = exports.AbstractSnsSqsConsumerMultiSchema = exports.AbstractSnsSqsConsumerMonoSchema = exports.AbstractSnsPublisherMultiSchema = exports.AbstractSnsPublisherMonoSchema = exports.SnsConsumerErrorResolver = exports.AbstractSnsService = void 0;
4
4
  var AbstractSnsService_1 = require("./lib/sns/AbstractSnsService");
5
5
  Object.defineProperty(exports, "AbstractSnsService", { enumerable: true, get: function () { return AbstractSnsService_1.AbstractSnsService; } });
6
6
  var SnsConsumerErrorResolver_1 = require("./lib/errors/SnsConsumerErrorResolver");
@@ -30,5 +30,4 @@ Object.defineProperty(exports, "readSnsMessage", { enumerable: true, get: functi
30
30
  var snsAttributeUtils_1 = require("./lib/utils/snsAttributeUtils");
31
31
  Object.defineProperty(exports, "generateFilterAttributes", { enumerable: true, get: function () { return snsAttributeUtils_1.generateFilterAttributes; } });
32
32
  Object.defineProperty(exports, "generateTopicSubscriptionPolicy", { enumerable: true, get: function () { return snsAttributeUtils_1.generateTopicSubscriptionPolicy; } });
33
- Object.defineProperty(exports, "generateQueuePublishForTopicPolicy", { enumerable: true, get: function () { return snsAttributeUtils_1.generateQueuePublishForTopicPolicy; } });
34
33
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;AAaA,mEAAiE;AAAxD,wHAAA,kBAAkB,OAAA;AAE3B,kFAAgF;AAAvE,oIAAA,wBAAwB,OAAA;AAEjC,2FAAyF;AAAhF,gJAAA,8BAA8B,OAAA;AACvC,6FAA2F;AAAlF,kJAAA,+BAA+B,OAAA;AAExC,+FAA6F;AAApF,oJAAA,gCAAgC,OAAA;AACzC,iGAA+F;AAAtF,sJAAA,iCAAiC,OAAA;AAkB1C,6EAA0E;AAAjE,+HAAA,qBAAqB,OAAA;AAE9B,iDAK6B;AAJ3B,uGAAA,WAAW,OAAA;AACX,uGAAA,WAAW,OAAA;AACX,8GAAA,kBAAkB,OAAA;AAClB,8GAAA,kBAAkB,OAAA;AAGpB,2DAA4D;AAAnD,iHAAA,gBAAgB,OAAA;AACzB,qDAA4D;AAAnD,qGAAA,OAAO,OAAA;AAAE,wGAAA,UAAU,OAAA;AAC5B,iEAA6D;AAApD,kHAAA,cAAc,OAAA;AACvB,mEAIsC;AAHpC,6HAAA,wBAAwB,OAAA;AACxB,oIAAA,+BAA+B,OAAA;AAC/B,uIAAA,kCAAkC,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;AAaA,mEAAiE;AAAxD,wHAAA,kBAAkB,OAAA;AAE3B,kFAAgF;AAAvE,oIAAA,wBAAwB,OAAA;AAEjC,2FAAyF;AAAhF,gJAAA,8BAA8B,OAAA;AACvC,6FAA2F;AAAlF,kJAAA,+BAA+B,OAAA;AAExC,+FAA6F;AAApF,oJAAA,gCAAgC,OAAA;AACzC,iGAA+F;AAAtF,sJAAA,iCAAiC,OAAA;AAkB1C,6EAA0E;AAAjE,+HAAA,qBAAqB,OAAA;AAE9B,iDAK6B;AAJ3B,uGAAA,WAAW,OAAA;AACX,uGAAA,WAAW,OAAA;AACX,8GAAA,kBAAkB,OAAA;AAClB,8GAAA,kBAAkB,OAAA;AAGpB,2DAA4D;AAAnD,iHAAA,gBAAgB,OAAA;AACzB,qDAA4D;AAAnD,qGAAA,OAAO,OAAA;AAAE,wGAAA,UAAU,OAAA;AAC5B,iEAA6D;AAApD,kHAAA,cAAc,OAAA;AACvB,mEAGsC;AAFpC,6HAAA,wBAAwB,OAAA;AACxB,oIAAA,+BAA+B,OAAA"}
@@ -16,6 +16,11 @@ class AbstractSnsPublisherMonoSchema extends AbstractSnsService_1.AbstractSnsSer
16
16
  async publish(message, options = {}) {
17
17
  try {
18
18
  this.messageSchema.parse(message);
19
+ if (this.logMessages) {
20
+ // @ts-ignore
21
+ const resolvedLogMessage = this.resolveMessageLog(message, message[this.messageTypeField]);
22
+ this.logMessage(resolvedLogMessage);
23
+ }
19
24
  const input = {
20
25
  Message: JSON.stringify(message),
21
26
  TopicArn: this.topicArn,
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractSnsPublisherMonoSchema.js","sourceRoot":"","sources":["../../../lib/sns/AbstractSnsPublisherMonoSchema.ts"],"names":[],"mappings":";;;AAAA,oDAAoD;AAapD,6DAAyD;AAOzD,MAAsB,8BACpB,SAAQ,uCAAsC;IAG7B,aAAa,CAA+B;IAC5C,YAAY,CAA8C;IAE3E,YACE,YAA6B,EAC7B,OAC4C;QAE5C,KAAK,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;QAC5B,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAA;QAC1C,IAAI,CAAC,YAAY,GAAG;YAClB,MAAM,EAAE,IAAI,CAAC,aAAa;SAC3B,CAAA;IACH,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAA2B,EAAE,UAA6B,EAAE;QACxE,IAAI;YACF,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YACjC,MAAM,KAAK,GAAG;gBACZ,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;gBAChC,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,GAAG,OAAO;aACmB,CAAA;YAC/B,MAAM,OAAO,GAAG,IAAI,2BAAc,CAAC,KAAK,CAAC,CAAA;YACzC,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;SACnC;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;YACvB,MAAM,KAAK,CAAA;SACZ;IACH,CAAC;IAED,qBAAqB;IACF,cAAc;QAI/B,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAA;IAClD,CAAC;IAEkB,aAAa;QAC9B,OAAO,IAAI,CAAC,YAAY,CAAA;IAC1B,CAAC;CAEF;AA/CD,wEA+CC"}
1
+ {"version":3,"file":"AbstractSnsPublisherMonoSchema.js","sourceRoot":"","sources":["../../../lib/sns/AbstractSnsPublisherMonoSchema.ts"],"names":[],"mappings":";;;AAAA,oDAAoD;AAapD,6DAAyD;AAOzD,MAAsB,8BACpB,SAAQ,uCAAsC;IAG7B,aAAa,CAA+B;IAC5C,YAAY,CAA8C;IAE3E,YACE,YAA6B,EAC7B,OAC4C;QAE5C,KAAK,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;QAC5B,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAA;QAC1C,IAAI,CAAC,YAAY,GAAG;YAClB,MAAM,EAAE,IAAI,CAAC,aAAa;SAC3B,CAAA;IACH,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAA2B,EAAE,UAA6B,EAAE;QACxE,IAAI;YACF,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YAEjC,IAAI,IAAI,CAAC,WAAW,EAAE;gBACpB,aAAa;gBACb,MAAM,kBAAkB,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAA;gBAC1F,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAA;aACpC;YAED,MAAM,KAAK,GAAG;gBACZ,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;gBAChC,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,GAAG,OAAO;aACmB,CAAA;YAC/B,MAAM,OAAO,GAAG,IAAI,2BAAc,CAAC,KAAK,CAAC,CAAA;YACzC,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;SACnC;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;YACvB,MAAM,KAAK,CAAA;SACZ;IACH,CAAC;IAED,qBAAqB;IACF,cAAc;QAI/B,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAA;IAClD,CAAC;IAEkB,aAAa;QAC9B,OAAO,IAAI,CAAC,YAAY,CAAA;IAC1B,CAAC;CAEF;AAtDD,wEAsDC"}
@@ -21,6 +21,11 @@ class AbstractSnsPublisherMultiSchema extends AbstractSnsService_1.AbstractSnsSe
21
21
  throw resolveSchemaResult.error;
22
22
  }
23
23
  resolveSchemaResult.result.parse(message);
24
+ if (this.logMessages) {
25
+ // @ts-ignore
26
+ const resolvedLogMessage = this.resolveMessageLog(message, message[this.messageTypeField]);
27
+ this.logMessage(resolvedLogMessage);
28
+ }
24
29
  const input = {
25
30
  Message: JSON.stringify(message),
26
31
  TopicArn: this.topicArn,
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractSnsPublisherMultiSchema.js","sourceRoot":"","sources":["../../../lib/sns/AbstractSnsPublisherMultiSchema.ts"],"names":[],"mappings":";;;AAAA,oDAAoD;AASpD,sDAAoE;AAIpE,6DAAyD;AAOzD,MAAsB,+BACpB,SAAQ,uCAA0D;IAGjD,sBAAsB,CAA4C;IAEnF,YACE,YAA6B,EAC7B,OAEC;QAED,KAAK,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;QAE5B,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,CAAA;QAC7C,IAAI,CAAC,sBAAsB,GAAG,IAAI,6BAAsB,CAAqB;YAC3E,cAAc;YACd,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;SAC3C,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAA2B,EAAE,UAA6B,EAAE;QACxE,IAAI;YACF,MAAM,mBAAmB,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;YACvD,IAAI,mBAAmB,CAAC,KAAK,EAAE;gBAC7B,MAAM,mBAAmB,CAAC,KAAK,CAAA;aAChC;YACD,mBAAmB,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YAEzC,MAAM,KAAK,GAAG;gBACZ,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;gBAChC,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,GAAG,OAAO;aACmB,CAAA;YAC/B,MAAM,OAAO,GAAG,IAAI,2BAAc,CAAC,KAAK,CAAC,CAAA;YACzC,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;SACnC;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;YACvB,MAAM,KAAK,CAAA;SACZ;IACH,CAAC;IAEkB,cAAc;QAI/B,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAA;IAClD,CAAC;IAEkB,aAAa,CAAC,OAA2B;QAC1D,OAAO,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;IAC3D,CAAC;CACF;AApDD,0EAoDC"}
1
+ {"version":3,"file":"AbstractSnsPublisherMultiSchema.js","sourceRoot":"","sources":["../../../lib/sns/AbstractSnsPublisherMultiSchema.ts"],"names":[],"mappings":";;;AAAA,oDAAoD;AASpD,sDAAoE;AAIpE,6DAAyD;AAOzD,MAAsB,+BACpB,SAAQ,uCAA0D;IAGjD,sBAAsB,CAA4C;IAEnF,YACE,YAA6B,EAC7B,OAEC;QAED,KAAK,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;QAE5B,MAAM,cAAc,GAAG,OAAO,CAAC,cAAc,CAAA;QAC7C,IAAI,CAAC,sBAAsB,GAAG,IAAI,6BAAsB,CAAqB;YAC3E,cAAc;YACd,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;SAC3C,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAA2B,EAAE,UAA6B,EAAE;QACxE,IAAI;YACF,MAAM,mBAAmB,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;YACvD,IAAI,mBAAmB,CAAC,KAAK,EAAE;gBAC7B,MAAM,mBAAmB,CAAC,KAAK,CAAA;aAChC;YACD,mBAAmB,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YAEzC,IAAI,IAAI,CAAC,WAAW,EAAE;gBACpB,aAAa;gBACb,MAAM,kBAAkB,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAA;gBAC1F,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAA;aACpC;YAED,MAAM,KAAK,GAAG;gBACZ,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;gBAChC,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,GAAG,OAAO;aACmB,CAAA;YAC/B,MAAM,OAAO,GAAG,IAAI,2BAAc,CAAC,KAAK,CAAC,CAAA;YACzC,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;SACnC;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;YACvB,MAAM,KAAK,CAAA;SACZ;IACH,CAAC;IAEkB,cAAc;QAI/B,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAA;IAClD,CAAC;IAEkB,aAAa,CAAC,OAA2B;QAC1D,OAAO,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;IAC3D,CAAC;CACF;AA1DD,0EA0DC"}
@@ -27,9 +27,12 @@ export type NewSNSOptions = NewQueueOptions<SNSCreationConfig>;
27
27
  export type ExistingSNSOptions = ExistingQueueOptions<SNSQueueLocatorType>;
28
28
  export type NewSNSOptionsMultiSchema<MessagePayloadSchemas extends object, ExecutionContext> = NewQueueOptionsMultiSchema<MessagePayloadSchemas, SNSCreationConfig, ExecutionContext>;
29
29
  export type ExistingSNSOptionsMultiSchema<MessagePayloadSchemas extends object, ExecutionContext> = ExistingQueueOptionsMultiSchema<MessagePayloadSchemas, SNSQueueLocatorType, ExecutionContext>;
30
+ export type ExtraSNSCreationParams = {
31
+ queueUrlsWithSubscribePermissionsPrefix?: string;
32
+ };
30
33
  export type SNSCreationConfig = {
31
34
  topic: SNSTopicAWSConfig;
32
- };
35
+ } & ExtraSNSCreationParams;
33
36
  export declare abstract class AbstractSnsService<MessagePayloadType extends object, MessageEnvelopeType extends object = SNS_MESSAGE_BODY_TYPE, SNSOptionsType extends ExistingQueueOptions<SNSQueueLocatorType> | NewQueueOptions<SNSCreationConfig> = ExistingSNSOptions | NewQueueOptions<SNSCreationConfig>, DependenciesType extends SNSDependencies = SNSDependencies> extends AbstractQueueService<MessagePayloadType, MessageEnvelopeType, DependenciesType, SNSCreationConfig, SNSQueueLocatorType, SNSOptionsType> {
34
37
  protected readonly snsClient: SNSClient;
35
38
  topicArn: string;
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractSnsService.js","sourceRoot":"","sources":["../../../lib/sns/AbstractSnsService.ts"],"names":[],"mappings":";;;AASA,sDAAkE;AAGlE,oDAAwD;AA8CxD,MAAsB,kBAOpB,SAAQ,2BAOT;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,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,EAAE;YAC9C,MAAM,IAAA,sBAAS,EAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,CAAA;SAC1E;QAED,MAAM,UAAU,GAAG,MAAM,IAAA,oBAAO,EAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,cAAc,CAAC,CAAA;QACzF,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAA;IACrC,CAAC;IAED,4DAA4D;IAC5C,KAAK,CAAC,KAAK,KAAmB,CAAC;CAChD;AApCD,gDAoCC"}
1
+ {"version":3,"file":"AbstractSnsService.js","sourceRoot":"","sources":["../../../lib/sns/AbstractSnsService.ts"],"names":[],"mappings":";;;AASA,sDAAkE;AAGlE,oDAAwD;AAkDxD,MAAsB,kBAOpB,SAAQ,2BAOT;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,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,EAAE;YAC9C,MAAM,IAAA,sBAAS,EAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,CAAA;SAC1E;QAED,MAAM,UAAU,GAAG,MAAM,IAAA,oBAAO,EAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,cAAc,CAAC,CAAA;QACzF,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAA;IACrC,CAAC;IAED,4DAA4D;IAC5C,KAAK,CAAC,KAAK,KAAmB,CAAC;CAChD;AApCD,gDAoCC"}
@@ -1,6 +1,5 @@
1
1
  import type { ZodSchema } from 'zod';
2
- export declare function generateTopicSubscriptionPolicy(topicArn: string, supportedSqsQueueNamePrefix: string): string;
3
- export declare function generateQueuePublishForTopicPolicy(queueUrl: string, supportedSnsTopicArnPrefix: string): string;
2
+ export declare function generateTopicSubscriptionPolicy(topicArn: string, supportedSqsQueueUrlPrefix: string): string;
4
3
  export declare function generateFilterAttributes(messageSchemas: ZodSchema<any>[], messageTypeField: string): {
5
4
  FilterPolicy: string;
6
5
  FilterPolicyScope: string;
@@ -1,16 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.generateFilterAttributes = exports.generateQueuePublishForTopicPolicy = exports.generateTopicSubscriptionPolicy = void 0;
3
+ exports.generateFilterAttributes = exports.generateTopicSubscriptionPolicy = void 0;
4
4
  // See https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_version.html
5
5
  const POLICY_VERSION = '2012-10-17';
6
- function generateTopicSubscriptionPolicy(topicArn, supportedSqsQueueNamePrefix) {
7
- return `{"Version":"${POLICY_VERSION}","Id":"__default_policy_ID","Statement":[{"Sid":"AllowSQSSubscription","Effect":"Allow","Principal":{"AWS":"*"},"Action":["sns:Subscribe"],"Resource":"${topicArn}","Condition":{"StringLike":{"sns:Endpoint":"${supportedSqsQueueNamePrefix}"}}}]}`;
6
+ function generateTopicSubscriptionPolicy(topicArn, supportedSqsQueueUrlPrefix) {
7
+ return `{"Version":"${POLICY_VERSION}","Id":"__default_policy_ID","Statement":[{"Sid":"AllowSQSSubscription","Effect":"Allow","Principal":{"AWS":"*"},"Action":["sns:Subscribe"],"Resource":"${topicArn}","Condition":{"StringLike":{"sns:Endpoint":"${supportedSqsQueueUrlPrefix}"}}}]}`;
8
8
  }
9
9
  exports.generateTopicSubscriptionPolicy = generateTopicSubscriptionPolicy;
10
- function generateQueuePublishForTopicPolicy(queueUrl, supportedSnsTopicArnPrefix) {
11
- return `{"Version":"${POLICY_VERSION}","Id":"__default_policy_ID","Statement":[{"Sid":"AllowSNSPublish","Effect":"Allow","Principal":{"AWS":"*"},"Action":"sqs:SendMessage","Resource":"${queueUrl}","Condition":{"ArnLike":{"aws:SourceArn":"${supportedSnsTopicArnPrefix}"}}}]}`;
12
- }
13
- exports.generateQueuePublishForTopicPolicy = generateQueuePublishForTopicPolicy;
14
10
  function generateFilterAttributes(
15
11
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
16
12
  messageSchemas, messageTypeField) {
@@ -1 +1 @@
1
- {"version":3,"file":"snsAttributeUtils.js","sourceRoot":"","sources":["../../../lib/utils/snsAttributeUtils.ts"],"names":[],"mappings":";;;AAEA,gGAAgG;AAChG,MAAM,cAAc,GAAG,YAAY,CAAA;AAEnC,SAAgB,+BAA+B,CAC7C,QAAgB,EAChB,2BAAmC;IAEnC,OAAO,eAAe,cAAc,2JAA2J,QAAQ,gDAAgD,2BAA2B,QAAQ,CAAA;AAC5R,CAAC;AALD,0EAKC;AAED,SAAgB,kCAAkC,CAChD,QAAgB,EAChB,0BAAkC;IAElC,OAAO,eAAe,cAAc,sJAAsJ,QAAQ,8CAA8C,0BAA0B,QAAQ,CAAA;AACpR,CAAC;AALD,gFAKC;AAED,SAAgB,wBAAwB;AACtC,8DAA8D;AAC9D,cAAgC,EAChC,gBAAwB;IAExB,MAAM,YAAY,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QACjD,aAAa;QACb,sEAAsE;QACtE,OAAO,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,KAAe,CAAA;IACvD,CAAC,CAAC,CAAA;IAEF,OAAO;QACL,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC;YAC3B,IAAI,EAAE,YAAY;SACnB,CAAC;QACF,iBAAiB,EAAE,aAAa;KACjC,CAAA;AACH,CAAC;AAjBD,4DAiBC"}
1
+ {"version":3,"file":"snsAttributeUtils.js","sourceRoot":"","sources":["../../../lib/utils/snsAttributeUtils.ts"],"names":[],"mappings":";;;AAEA,gGAAgG;AAChG,MAAM,cAAc,GAAG,YAAY,CAAA;AAEnC,SAAgB,+BAA+B,CAC7C,QAAgB,EAChB,0BAAkC;IAElC,OAAO,eAAe,cAAc,2JAA2J,QAAQ,gDAAgD,0BAA0B,QAAQ,CAAA;AAC3R,CAAC;AALD,0EAKC;AAED,SAAgB,wBAAwB;AACtC,8DAA8D;AAC9D,cAAgC,EAChC,gBAAwB;IAExB,MAAM,YAAY,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QACjD,aAAa;QACb,sEAAsE;QACtE,OAAO,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,KAAe,CAAA;IACvD,CAAC,CAAC,CAAA;IAEF,OAAO;QACL,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC;YAC3B,IAAI,EAAE,YAAY;SACnB,CAAC;QACF,iBAAiB,EAAE,aAAa;KACjC,CAAA;AACH,CAAC;AAjBD,4DAiBC"}
@@ -16,7 +16,10 @@ async function initSnsSqs(sqsClient, snsClient, locatorConfig, creationConfig, s
16
16
  if (!subscriptionConfig) {
17
17
  throw new Error('If locatorConfig.subscriptionArn is not specified, subscriptionConfig parameter is mandatory, as there will be an attempt to create the missing subscription');
18
18
  }
19
- const { subscriptionArn, topicArn, queueUrl } = await (0, snsSubscriber_1.subscribeToTopic)(sqsClient, snsClient, creationConfig.queue, creationConfig.topic, subscriptionConfig);
19
+ const { subscriptionArn, topicArn, queueUrl } = await (0, snsSubscriber_1.subscribeToTopic)(sqsClient, snsClient, creationConfig.queue, creationConfig.topic, subscriptionConfig, {
20
+ queueUrlsWithSubscribePermissionsPrefix: creationConfig.queueUrlsWithSubscribePermissionsPrefix,
21
+ topicArnsWithPublishPermissionsPrefix: creationConfig.topicArnsWithPublishPermissionsPrefix,
22
+ });
20
23
  if (!subscriptionArn) {
21
24
  throw new Error('Failed to subscribe');
22
25
  }
@@ -26,6 +29,7 @@ async function initSnsSqs(sqsClient, snsClient, locatorConfig, creationConfig, s
26
29
  queueUrl,
27
30
  };
28
31
  }
32
+ // Check for existing resources, using the locators
29
33
  const queuePromise = (0, sqs_1.getQueueAttributes)(sqsClient, locatorConfig);
30
34
  const topicPromise = (0, snsUtils_1.getTopicAttributes)(snsClient, locatorConfig.topicArn);
31
35
  const [queueCheckResult, topicCheckResult] = await Promise.all([queuePromise, topicPromise]);
@@ -87,7 +91,9 @@ async function initSns(snsClient, locatorConfig, creationConfig) {
87
91
  if (!creationConfig) {
88
92
  throw new Error('When locatorConfig for the topic is not specified, creationConfig of the topic is mandatory');
89
93
  }
90
- const topicArn = await (0, snsUtils_1.assertTopic)(snsClient, creationConfig.topic);
94
+ const topicArn = await (0, snsUtils_1.assertTopic)(snsClient, creationConfig.topic, {
95
+ queueUrlsWithSubscribePermissionsPrefix: creationConfig.queueUrlsWithSubscribePermissionsPrefix,
96
+ });
91
97
  return {
92
98
  topicArn,
93
99
  };
@@ -1 +1 @@
1
- {"version":3,"file":"snsInitter.js","sourceRoot":"","sources":["../../../lib/utils/snsInitter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"snsInitter.js","sourceRoot":"","sources":["../../../lib/utils/snsInitter.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,12 @@
1
1
  import type { CreateTopicCommandInput, SNSClient } from '@aws-sdk/client-sns';
2
2
  import type { SubscribeCommandInput } from '@aws-sdk/client-sns/dist-types/commands/SubscribeCommand';
3
3
  import type { CreateQueueCommandInput, SQSClient } from '@aws-sdk/client-sqs';
4
+ import type { ExtraSQSCreationParams } from '@message-queue-toolkit/sqs';
5
+ import type { ExtraSNSCreationParams } from '../sns/AbstractSnsService';
4
6
  export type SNSSubscriptionOptions = Omit<SubscribeCommandInput, 'TopicArn' | 'Endpoint' | 'Protocol' | 'ReturnSubscriptionArn'>;
5
- export declare function subscribeToTopic(sqsClient: SQSClient, snsClient: SNSClient, queueConfiguration: CreateQueueCommandInput, topicConfiguration: CreateTopicCommandInput, subscriptionConfiguration: SNSSubscriptionOptions): Promise<{
7
+ export declare function subscribeToTopic(sqsClient: SQSClient, snsClient: SNSClient, queueConfiguration: CreateQueueCommandInput, topicConfiguration: CreateTopicCommandInput, subscriptionConfiguration: SNSSubscriptionOptions, extraParams?: ExtraSNSCreationParams & ExtraSQSCreationParams): Promise<{
6
8
  subscriptionArn: string | undefined;
7
9
  topicArn: string;
8
10
  queueUrl: string;
11
+ queueArn: string;
9
12
  }>;
@@ -2,24 +2,18 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.subscribeToTopic = void 0;
4
4
  const client_sns_1 = require("@aws-sdk/client-sns");
5
- const client_sqs_1 = require("@aws-sdk/client-sqs");
6
5
  const sqs_1 = require("@message-queue-toolkit/sqs");
7
6
  const snsUtils_1 = require("./snsUtils");
8
- async function subscribeToTopic(sqsClient, snsClient, queueConfiguration, topicConfiguration, subscriptionConfiguration) {
9
- const topicArn = await (0, snsUtils_1.assertTopic)(snsClient, topicConfiguration);
10
- const queueUrl = await (0, sqs_1.assertQueue)(sqsClient, queueConfiguration);
11
- const getQueueAttributesCommand = new client_sqs_1.GetQueueAttributesCommand({
12
- QueueUrl: queueUrl,
13
- AttributeNames: ['QueueArn'],
7
+ async function subscribeToTopic(sqsClient, snsClient, queueConfiguration, topicConfiguration, subscriptionConfiguration, extraParams) {
8
+ const topicArn = await (0, snsUtils_1.assertTopic)(snsClient, topicConfiguration, {
9
+ queueUrlsWithSubscribePermissionsPrefix: extraParams?.queueUrlsWithSubscribePermissionsPrefix,
10
+ });
11
+ const { queueUrl, queueArn } = await (0, sqs_1.assertQueue)(sqsClient, queueConfiguration, {
12
+ topicArnsWithPublishPermissionsPrefix: extraParams?.topicArnsWithPublishPermissionsPrefix,
14
13
  });
15
- const queueAttributesResponse = await sqsClient.send(getQueueAttributesCommand);
16
- const sqsArn = queueAttributesResponse.Attributes?.QueueArn;
17
- if (!sqsArn) {
18
- throw new Error(`Queue ${queueUrl} ARN is not defined`);
19
- }
20
14
  const subscribeCommand = new client_sns_1.SubscribeCommand({
21
15
  TopicArn: topicArn,
22
- Endpoint: sqsArn,
16
+ Endpoint: queueArn,
23
17
  Protocol: 'sqs',
24
18
  ReturnSubscriptionArn: true,
25
19
  ...subscriptionConfiguration,
@@ -29,6 +23,7 @@ async function subscribeToTopic(sqsClient, snsClient, queueConfiguration, topicC
29
23
  subscriptionArn: subscriptionResult.SubscriptionArn,
30
24
  topicArn,
31
25
  queueUrl,
26
+ queueArn,
32
27
  };
33
28
  }
34
29
  exports.subscribeToTopic = subscribeToTopic;
@@ -1 +1 @@
1
- {"version":3,"file":"snsSubscriber.js","sourceRoot":"","sources":["../../../lib/utils/snsSubscriber.ts"],"names":[],"mappings":";;;AACA,oDAAsD;AAGtD,oDAA+D;AAC/D,oDAAwD;AAExD,yCAAwC;AAOjC,KAAK,UAAU,gBAAgB,CACpC,SAAoB,EACpB,SAAoB,EACpB,kBAA2C,EAC3C,kBAA2C,EAC3C,yBAAiD;IAEjD,MAAM,QAAQ,GAAG,MAAM,IAAA,sBAAW,EAAC,SAAS,EAAE,kBAAkB,CAAC,CAAA;IACjE,MAAM,QAAQ,GAAG,MAAM,IAAA,iBAAW,EAAC,SAAS,EAAE,kBAAkB,CAAC,CAAA;IAEjE,MAAM,yBAAyB,GAAG,IAAI,sCAAyB,CAAC;QAC9D,QAAQ,EAAE,QAAQ;QAClB,cAAc,EAAE,CAAC,UAAU,CAAC;KAC7B,CAAC,CAAA;IACF,MAAM,uBAAuB,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAA;IAC/E,MAAM,MAAM,GAAG,uBAAuB,CAAC,UAAU,EAAE,QAAQ,CAAA;IAE3D,IAAI,CAAC,MAAM,EAAE;QACX,MAAM,IAAI,KAAK,CAAC,SAAS,QAAQ,qBAAqB,CAAC,CAAA;KACxD;IAED,MAAM,gBAAgB,GAAG,IAAI,6BAAgB,CAAC;QAC5C,QAAQ,EAAE,QAAQ;QAClB,QAAQ,EAAE,MAAM;QAChB,QAAQ,EAAE,KAAK;QACf,qBAAqB,EAAE,IAAI;QAC3B,GAAG,yBAAyB;KAC7B,CAAC,CAAA;IAEF,MAAM,kBAAkB,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;IACjE,OAAO;QACL,eAAe,EAAE,kBAAkB,CAAC,eAAe;QACnD,QAAQ;QACR,QAAQ;KACT,CAAA;AACH,CAAC;AAnCD,4CAmCC"}
1
+ {"version":3,"file":"snsSubscriber.js","sourceRoot":"","sources":["../../../lib/utils/snsSubscriber.ts"],"names":[],"mappings":";;;AACA,oDAAsD;AAItD,oDAAwD;AAIxD,yCAAwC;AAOjC,KAAK,UAAU,gBAAgB,CACpC,SAAoB,EACpB,SAAoB,EACpB,kBAA2C,EAC3C,kBAA2C,EAC3C,yBAAiD,EACjD,WAA6D;IAE7D,MAAM,QAAQ,GAAG,MAAM,IAAA,sBAAW,EAAC,SAAS,EAAE,kBAAkB,EAAE;QAChE,uCAAuC,EAAE,WAAW,EAAE,uCAAuC;KAC9F,CAAC,CAAA;IACF,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAA,iBAAW,EAAC,SAAS,EAAE,kBAAkB,EAAE;QAC9E,qCAAqC,EAAE,WAAW,EAAE,qCAAqC;KAC1F,CAAC,CAAA;IAEF,MAAM,gBAAgB,GAAG,IAAI,6BAAgB,CAAC;QAC5C,QAAQ,EAAE,QAAQ;QAClB,QAAQ,EAAE,QAAQ;QAClB,QAAQ,EAAE,KAAK;QACf,qBAAqB,EAAE,IAAI;QAC3B,GAAG,yBAAyB;KAC7B,CAAC,CAAA;IAEF,MAAM,kBAAkB,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;IACjE,OAAO;QACL,eAAe,EAAE,kBAAkB,CAAC,eAAe;QACnD,QAAQ;QACR,QAAQ;QACR,QAAQ;KACT,CAAA;AACH,CAAC;AA9BD,4CA8BC"}
@@ -1,10 +1,11 @@
1
1
  import type { CreateTopicCommandInput, SNSClient } from '@aws-sdk/client-sns';
2
2
  import type { Either } from '@lokalise/node-core';
3
+ import type { ExtraSNSCreationParams } from '../sns/AbstractSnsService';
3
4
  type QueueAttributesResult = {
4
5
  attributes?: Record<string, string>;
5
6
  };
6
7
  export declare function getTopicAttributes(snsClient: SNSClient, topicArn: string): Promise<Either<'not_found', QueueAttributesResult>>;
7
- export declare function assertTopic(snsClient: SNSClient, topicOptions: CreateTopicCommandInput): Promise<string>;
8
+ export declare function assertTopic(snsClient: SNSClient, topicOptions: CreateTopicCommandInput, extraParams?: ExtraSNSCreationParams): Promise<string>;
8
9
  export declare function deleteTopic(client: SNSClient, topicName: string): Promise<void>;
9
10
  export declare function deleteSubscription(client: SNSClient, subscriptionArn: string): Promise<void>;
10
11
  export {};
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.deleteSubscription = exports.deleteTopic = exports.assertTopic = exports.getTopicAttributes = void 0;
4
4
  const client_sns_1 = require("@aws-sdk/client-sns");
5
+ const snsAttributeUtils_1 = require("./snsAttributeUtils");
5
6
  async function getTopicAttributes(snsClient, topicArn) {
6
7
  const command = new client_sns_1.GetTopicAttributesCommand({
7
8
  TopicArn: topicArn,
@@ -26,13 +27,22 @@ async function getTopicAttributes(snsClient, topicArn) {
26
27
  }
27
28
  }
28
29
  exports.getTopicAttributes = getTopicAttributes;
29
- async function assertTopic(snsClient, topicOptions) {
30
+ async function assertTopic(snsClient, topicOptions, extraParams) {
30
31
  const command = new client_sns_1.CreateTopicCommand(topicOptions);
31
32
  const response = await snsClient.send(command);
32
33
  if (!response.TopicArn) {
33
34
  throw new Error('No topic arn in response');
34
35
  }
35
- return response.TopicArn;
36
+ const topicArn = response.TopicArn;
37
+ if (extraParams?.queueUrlsWithSubscribePermissionsPrefix) {
38
+ const setTopicAttributesCommand = new client_sns_1.SetTopicAttributesCommand({
39
+ TopicArn: topicArn,
40
+ AttributeName: 'Policy',
41
+ AttributeValue: (0, snsAttributeUtils_1.generateTopicSubscriptionPolicy)(topicArn, extraParams.queueUrlsWithSubscribePermissionsPrefix),
42
+ });
43
+ await snsClient.send(setTopicAttributesCommand);
44
+ }
45
+ return topicArn;
36
46
  }
37
47
  exports.assertTopic = assertTopic;
38
48
  async function deleteTopic(client, topicName) {
@@ -1 +1 @@
1
- {"version":3,"file":"snsUtils.js","sourceRoot":"","sources":["../../../lib/utils/snsUtils.ts"],"names":[],"mappings":";;;AACA,oDAK4B;AAOrB,KAAK,UAAU,kBAAkB,CACtC,SAAoB,EACpB,QAAgB;IAEhB,MAAM,OAAO,GAAG,IAAI,sCAAyB,CAAC;QAC5C,QAAQ,EAAE,QAAQ;KACnB,CAAC,CAAA;IAEF,IAAI;QACF,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC9C,OAAO;YACL,MAAM,EAAE;gBACN,UAAU,EAAE,QAAQ,CAAC,UAAU;aAChC;SACF,CAAA;KACF;IAAC,OAAO,GAAG,EAAE;QACZ,aAAa;QACb,IAAI,GAAG,CAAC,IAAI,KAAK,yCAAyC,EAAE;YAC1D,OAAO;gBACL,aAAa;gBACb,KAAK,EAAE,WAAW;aACnB,CAAA;SACF;QACD,MAAM,GAAG,CAAA;KACV;AACH,CAAC;AAzBD,gDAyBC;AAEM,KAAK,UAAU,WAAW,CAAC,SAAoB,EAAE,YAAqC;IAC3F,MAAM,OAAO,GAAG,IAAI,+BAAkB,CAAC,YAAY,CAAC,CAAA;IACpD,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAE9C,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;QACtB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;KAC5C;IACD,OAAO,QAAQ,CAAC,QAAQ,CAAA;AAC1B,CAAC;AARD,kCAQC;AAEM,KAAK,UAAU,WAAW,CAAC,MAAiB,EAAE,SAAiB;IACpE,IAAI;QACF,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE;YACzC,IAAI,EAAE,SAAS;SAChB,CAAC,CAAA;QAEF,MAAM,OAAO,GAAG,IAAI,+BAAkB,CAAC;YACrC,QAAQ,EAAE,QAAQ;SACnB,CAAC,CAAA;QAEF,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;KAC3B;IAAC,OAAO,GAAG,EAAE;QACZ,wCAAwC;KACzC;AACH,CAAC;AAdD,kCAcC;AAEM,KAAK,UAAU,kBAAkB,CAAC,MAAiB,EAAE,eAAuB;IACjF,MAAM,OAAO,GAAG,IAAI,+BAAkB,CAAC;QACrC,eAAe,EAAE,eAAe;KACjC,CAAC,CAAA;IACF,IAAI;QACF,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;KAC3B;IAAC,OAAO,GAAG,EAAE;QACZ,wCAAwC;KACzC;AACH,CAAC;AATD,gDASC"}
1
+ {"version":3,"file":"snsUtils.js","sourceRoot":"","sources":["../../../lib/utils/snsUtils.ts"],"names":[],"mappings":";;;AACA,oDAM4B;AAK5B,2DAAqE;AAM9D,KAAK,UAAU,kBAAkB,CACtC,SAAoB,EACpB,QAAgB;IAEhB,MAAM,OAAO,GAAG,IAAI,sCAAyB,CAAC;QAC5C,QAAQ,EAAE,QAAQ;KACnB,CAAC,CAAA;IAEF,IAAI;QACF,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC9C,OAAO;YACL,MAAM,EAAE;gBACN,UAAU,EAAE,QAAQ,CAAC,UAAU;aAChC;SACF,CAAA;KACF;IAAC,OAAO,GAAG,EAAE;QACZ,aAAa;QACb,IAAI,GAAG,CAAC,IAAI,KAAK,yCAAyC,EAAE;YAC1D,OAAO;gBACL,aAAa;gBACb,KAAK,EAAE,WAAW;aACnB,CAAA;SACF;QACD,MAAM,GAAG,CAAA;KACV;AACH,CAAC;AAzBD,gDAyBC;AAEM,KAAK,UAAU,WAAW,CAC/B,SAAoB,EACpB,YAAqC,EACrC,WAAoC;IAEpC,MAAM,OAAO,GAAG,IAAI,+BAAkB,CAAC,YAAY,CAAC,CAAA;IACpD,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAE9C,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;QACtB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;KAC5C;IACD,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAA;IAElC,IAAI,WAAW,EAAE,uCAAuC,EAAE;QACxD,MAAM,yBAAyB,GAAG,IAAI,sCAAyB,CAAC;YAC9D,QAAQ,EAAE,QAAQ;YAClB,aAAa,EAAE,QAAQ;YACvB,cAAc,EAAE,IAAA,mDAA+B,EAC7C,QAAQ,EACR,WAAW,CAAC,uCAAuC,CACpD;SACF,CAAC,CAAA;QACF,MAAM,SAAS,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAA;KAChD;IAED,OAAO,QAAQ,CAAA;AACjB,CAAC;AA1BD,kCA0BC;AAEM,KAAK,UAAU,WAAW,CAAC,MAAiB,EAAE,SAAiB;IACpE,IAAI;QACF,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE;YACzC,IAAI,EAAE,SAAS;SAChB,CAAC,CAAA;QAEF,MAAM,OAAO,GAAG,IAAI,+BAAkB,CAAC;YACrC,QAAQ,EAAE,QAAQ;SACnB,CAAC,CAAA;QAEF,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;KAC3B;IAAC,OAAO,GAAG,EAAE;QACZ,wCAAwC;KACzC;AACH,CAAC;AAdD,kCAcC;AAEM,KAAK,UAAU,kBAAkB,CAAC,MAAiB,EAAE,eAAuB;IACjF,MAAM,OAAO,GAAG,IAAI,+BAAkB,CAAC;QACrC,eAAe,EAAE,eAAe;KACjC,CAAC,CAAA;IACF,IAAI;QACF,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;KAC3B;IAAC,OAAO,GAAG,EAAE;QACZ,wCAAwC;KACzC;AACH,CAAC;AATD,gDASC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@message-queue-toolkit/sns",
3
- "version": "3.3.0",
3
+ "version": "3.5.0",
4
4
  "private": false,
5
5
  "license": "MIT",
6
6
  "description": "SNS adapter for message-queue-toolkit",
@@ -33,8 +33,8 @@
33
33
  "peerDependencies": {
34
34
  "@aws-sdk/client-sns": "^3.385.0",
35
35
  "@aws-sdk/client-sqs": "^3.385.0",
36
- "@message-queue-toolkit/core": "^3.2.0",
37
- "@message-queue-toolkit/sqs": "^3.2.0"
36
+ "@message-queue-toolkit/core": "^3.4.0",
37
+ "@message-queue-toolkit/sqs": "^3.5.0"
38
38
  },
39
39
  "devDependencies": {
40
40
  "@aws-sdk/client-sns": "^3.385.0",