@message-queue-toolkit/sns 11.1.0 → 12.0.1

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.
Files changed (34) hide show
  1. package/dist/index.d.ts +4 -8
  2. package/dist/index.js +5 -9
  3. package/dist/index.js.map +1 -1
  4. package/dist/lib/sns/AbstractSnsPublisher.d.ts +22 -0
  5. package/dist/lib/sns/AbstractSnsPublisher.js +75 -0
  6. package/dist/lib/sns/AbstractSnsPublisher.js.map +1 -0
  7. package/dist/lib/sns/AbstractSnsService.d.ts +8 -16
  8. package/dist/lib/sns/AbstractSnsService.js +2 -36
  9. package/dist/lib/sns/AbstractSnsService.js.map +1 -1
  10. package/dist/lib/sns/AbstractSnsSqsConsumer.d.ts +25 -0
  11. package/dist/lib/sns/{AbstractSnsSqsConsumerMultiSchema.js → AbstractSnsSqsConsumer.js} +4 -4
  12. package/dist/lib/sns/AbstractSnsSqsConsumer.js.map +1 -0
  13. package/dist/lib/utils/snsAttributeUtils.d.ts +6 -1
  14. package/dist/lib/utils/snsAttributeUtils.js +9 -2
  15. package/dist/lib/utils/snsAttributeUtils.js.map +1 -1
  16. package/dist/lib/utils/snsInitter.d.ts +1 -1
  17. package/dist/lib/utils/snsInitter.js +2 -0
  18. package/dist/lib/utils/snsInitter.js.map +1 -1
  19. package/dist/lib/utils/snsSubscriber.js +1 -0
  20. package/dist/lib/utils/snsSubscriber.js.map +1 -1
  21. package/dist/lib/utils/snsUtils.js +6 -2
  22. package/dist/lib/utils/snsUtils.js.map +1 -1
  23. package/package.json +5 -5
  24. package/dist/lib/sns/AbstractSnsPublisherMonoSchema.d.ts +0 -21
  25. package/dist/lib/sns/AbstractSnsPublisherMonoSchema.js +0 -39
  26. package/dist/lib/sns/AbstractSnsPublisherMonoSchema.js.map +0 -1
  27. package/dist/lib/sns/AbstractSnsPublisherMultiSchema.d.ts +0 -22
  28. package/dist/lib/sns/AbstractSnsPublisherMultiSchema.js +0 -44
  29. package/dist/lib/sns/AbstractSnsPublisherMultiSchema.js.map +0 -1
  30. package/dist/lib/sns/AbstractSnsSqsConsumerMonoSchema.d.ts +0 -41
  31. package/dist/lib/sns/AbstractSnsSqsConsumerMonoSchema.js +0 -71
  32. package/dist/lib/sns/AbstractSnsSqsConsumerMonoSchema.js.map +0 -1
  33. package/dist/lib/sns/AbstractSnsSqsConsumerMultiSchema.d.ts +0 -17
  34. package/dist/lib/sns/AbstractSnsSqsConsumerMultiSchema.js.map +0 -1
package/dist/index.d.ts CHANGED
@@ -1,13 +1,9 @@
1
- export type { SNSTopicAWSConfig, SNSTopicConfig, SNSConsumerDependencies, SNSQueueLocatorType, SNSCreationConfig, SNSDependencies, NewSNSOptions, ExistingSNSOptions, ExistingSNSOptionsMultiSchema, NewSNSOptionsMultiSchema, } from './lib/sns/AbstractSnsService';
1
+ export type { SNSTopicAWSConfig, SNSTopicConfig, SNSQueueLocatorType, SNSCreationConfig, SNSDependencies, } from './lib/sns/AbstractSnsService';
2
2
  export { AbstractSnsService } from './lib/sns/AbstractSnsService';
3
3
  export { SnsConsumerErrorResolver } from './lib/errors/SnsConsumerErrorResolver';
4
- export { AbstractSnsPublisherMonoSchema } from './lib/sns/AbstractSnsPublisherMonoSchema';
5
- export { AbstractSnsPublisherMultiSchema } from './lib/sns/AbstractSnsPublisherMultiSchema';
6
- export { AbstractSnsSqsConsumerMonoSchema } from './lib/sns/AbstractSnsSqsConsumerMonoSchema';
7
- export { AbstractSnsSqsConsumerMultiSchema } from './lib/sns/AbstractSnsSqsConsumerMultiSchema';
8
- export type { ExistingSnsSqsConsumerOptions, NewSnsSqsConsumerOptions, SNSSQSConsumerDependencies, ExistingSnsSqsConsumerOptionsMono, NewSnsSqsConsumerOptionsMono, SNSSQSQueueLocatorType, } from './lib/sns/AbstractSnsSqsConsumerMonoSchema';
9
- export type { NewSnsSqsConsumerOptionsMulti, ExistingSnsSqsConsumerOptionsMulti, } from './lib/sns/AbstractSnsSqsConsumerMultiSchema';
10
- export type { SNSMessageOptions } from './lib/sns/AbstractSnsPublisherMonoSchema';
4
+ export { AbstractSnsPublisher } from './lib/sns/AbstractSnsPublisher';
5
+ export type { SNSSQSConsumerOptions, SNSSQSConsumerDependencies, } from './lib/sns/AbstractSnsSqsConsumer';
6
+ export { AbstractSnsSqsConsumer } from './lib/sns/AbstractSnsSqsConsumer';
11
7
  export type { CommonMessage } from './lib/types/MessageTypes';
12
8
  export { deserializeSNSMessage } from './lib/utils/snsMessageDeserializer';
13
9
  export { assertTopic, deleteTopic, getTopicAttributes, deleteSubscription, findSubscriptionByTopicAndQueue, getSubscriptionAttributes, } from './lib/utils/snsUtils';
package/dist/index.js CHANGED
@@ -1,18 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.generateTopicSubscriptionPolicy = exports.generateFilterAttributes = exports.readSnsMessage = exports.initSnsSqs = exports.initSns = exports.subscribeToTopic = exports.getSubscriptionAttributes = exports.findSubscriptionByTopicAndQueue = 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.getSubscriptionAttributes = exports.findSubscriptionByTopicAndQueue = exports.deleteSubscription = exports.getTopicAttributes = exports.deleteTopic = exports.assertTopic = exports.deserializeSNSMessage = exports.AbstractSnsSqsConsumer = exports.AbstractSnsPublisher = 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");
7
7
  Object.defineProperty(exports, "SnsConsumerErrorResolver", { enumerable: true, get: function () { return SnsConsumerErrorResolver_1.SnsConsumerErrorResolver; } });
8
- var AbstractSnsPublisherMonoSchema_1 = require("./lib/sns/AbstractSnsPublisherMonoSchema");
9
- Object.defineProperty(exports, "AbstractSnsPublisherMonoSchema", { enumerable: true, get: function () { return AbstractSnsPublisherMonoSchema_1.AbstractSnsPublisherMonoSchema; } });
10
- var AbstractSnsPublisherMultiSchema_1 = require("./lib/sns/AbstractSnsPublisherMultiSchema");
11
- Object.defineProperty(exports, "AbstractSnsPublisherMultiSchema", { enumerable: true, get: function () { return AbstractSnsPublisherMultiSchema_1.AbstractSnsPublisherMultiSchema; } });
12
- var AbstractSnsSqsConsumerMonoSchema_1 = require("./lib/sns/AbstractSnsSqsConsumerMonoSchema");
13
- Object.defineProperty(exports, "AbstractSnsSqsConsumerMonoSchema", { enumerable: true, get: function () { return AbstractSnsSqsConsumerMonoSchema_1.AbstractSnsSqsConsumerMonoSchema; } });
14
- var AbstractSnsSqsConsumerMultiSchema_1 = require("./lib/sns/AbstractSnsSqsConsumerMultiSchema");
15
- Object.defineProperty(exports, "AbstractSnsSqsConsumerMultiSchema", { enumerable: true, get: function () { return AbstractSnsSqsConsumerMultiSchema_1.AbstractSnsSqsConsumerMultiSchema; } });
8
+ var AbstractSnsPublisher_1 = require("./lib/sns/AbstractSnsPublisher");
9
+ Object.defineProperty(exports, "AbstractSnsPublisher", { enumerable: true, get: function () { return AbstractSnsPublisher_1.AbstractSnsPublisher; } });
10
+ var AbstractSnsSqsConsumer_1 = require("./lib/sns/AbstractSnsSqsConsumer");
11
+ Object.defineProperty(exports, "AbstractSnsSqsConsumer", { enumerable: true, get: function () { return AbstractSnsSqsConsumer_1.AbstractSnsSqsConsumer; } });
16
12
  var snsMessageDeserializer_1 = require("./lib/utils/snsMessageDeserializer");
17
13
  Object.defineProperty(exports, "deserializeSNSMessage", { enumerable: true, get: function () { return snsMessageDeserializer_1.deserializeSNSMessage; } });
18
14
  var snsUtils_1 = require("./lib/utils/snsUtils");
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,iDAO6B;AAN3B,uGAAA,WAAW,OAAA;AACX,uGAAA,WAAW,OAAA;AACX,8GAAA,kBAAkB,OAAA;AAClB,8GAAA,kBAAkB,OAAA;AAClB,2HAAA,+BAA+B,OAAA;AAC/B,qHAAA,yBAAyB,OAAA;AAG3B,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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;AAQA,mEAAiE;AAAxD,wHAAA,kBAAkB,OAAA;AAE3B,kFAAgF;AAAvE,oIAAA,wBAAwB,OAAA;AAEjC,uEAAqE;AAA5D,4HAAA,oBAAoB,OAAA;AAM7B,2EAAyE;AAAhE,gIAAA,sBAAsB,OAAA;AAI/B,6EAA0E;AAAjE,+HAAA,qBAAqB,OAAA;AAE9B,iDAO6B;AAN3B,uGAAA,WAAW,OAAA;AACX,uGAAA,WAAW,OAAA;AACX,8GAAA,kBAAkB,OAAA;AAClB,8GAAA,kBAAkB,OAAA;AAClB,2HAAA,+BAA+B,OAAA;AAC/B,qHAAA,yBAAyB,OAAA;AAG3B,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"}
@@ -0,0 +1,22 @@
1
+ import type { Either } from '@lokalise/node-core';
2
+ import type { AsyncPublisher, BarrierResult, MessageInvalidFormatError, MessageValidationError, QueuePublisherOptions } from '@message-queue-toolkit/core';
3
+ import type { SNSCreationConfig, SNSDependencies, SNSQueueLocatorType } from './AbstractSnsService';
4
+ import { AbstractSnsService } from './AbstractSnsService';
5
+ export type SNSMessageOptions = {
6
+ MessageGroupId?: string;
7
+ MessageDeduplicationId?: string;
8
+ };
9
+ export type SNSPublisherOptions<MessagePayloadType extends object> = QueuePublisherOptions<SNSCreationConfig, SNSQueueLocatorType, MessagePayloadType>;
10
+ export declare abstract class AbstractSnsPublisher<MessagePayloadType extends object> extends AbstractSnsService<MessagePayloadType, MessagePayloadType> implements AsyncPublisher<MessagePayloadType, SNSMessageOptions> {
11
+ private readonly messageSchemaContainer;
12
+ private isInitted;
13
+ private initPromise?;
14
+ constructor(dependencies: SNSDependencies, options: SNSPublisherOptions<MessagePayloadType>);
15
+ publish(message: MessagePayloadType, options?: SNSMessageOptions): Promise<void>;
16
+ protected resolveMessage(): Either<MessageInvalidFormatError | MessageValidationError, unknown>;
17
+ protected resolveSchema(message: MessagePayloadType): Either<Error, import("zod").ZodType<MessagePayloadType, import("zod").ZodTypeDef, MessagePayloadType>>;
18
+ protected resolveNextFunction(): () => void;
19
+ protected processPrehandlers(): Promise<undefined>;
20
+ protected preHandlerBarrier<BarrierOutput>(): Promise<BarrierResult<BarrierOutput>>;
21
+ processMessage(): Promise<Either<'retryLater', 'success'>>;
22
+ }
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AbstractSnsPublisher = void 0;
4
+ const client_sns_1 = require("@aws-sdk/client-sns");
5
+ const core_1 = require("@message-queue-toolkit/core");
6
+ const AbstractSnsService_1 = require("./AbstractSnsService");
7
+ class AbstractSnsPublisher extends AbstractSnsService_1.AbstractSnsService {
8
+ messageSchemaContainer;
9
+ isInitted;
10
+ initPromise;
11
+ constructor(dependencies, options) {
12
+ super(dependencies, options);
13
+ const messageSchemas = options.messageSchemas;
14
+ this.messageSchemaContainer = new core_1.MessageSchemaContainer({
15
+ messageSchemas,
16
+ messageTypeField: options.messageTypeField,
17
+ });
18
+ this.isInitted = false;
19
+ }
20
+ async publish(message, options = {}) {
21
+ const messageSchemaResult = this.resolveSchema(message);
22
+ if (messageSchemaResult.error) {
23
+ throw messageSchemaResult.error;
24
+ }
25
+ // If it's not initted yet, do the lazy init
26
+ if (!this.isInitted) {
27
+ // avoid multiple concurrent inits
28
+ if (!this.initPromise) {
29
+ this.initPromise = this.init();
30
+ }
31
+ await this.initPromise;
32
+ }
33
+ try {
34
+ messageSchemaResult.result.parse(message);
35
+ if (this.logMessages) {
36
+ // @ts-ignore
37
+ const resolvedLogMessage = this.resolveMessageLog(message, message[this.messageTypeField]);
38
+ this.logMessage(resolvedLogMessage);
39
+ }
40
+ const input = {
41
+ Message: JSON.stringify(message),
42
+ TopicArn: this.topicArn,
43
+ ...options,
44
+ };
45
+ const command = new client_sns_1.PublishCommand(input);
46
+ await this.snsClient.send(command);
47
+ this.handleMessageProcessed(message, 'published');
48
+ }
49
+ catch (error) {
50
+ this.handleError(error);
51
+ throw error;
52
+ }
53
+ }
54
+ resolveMessage() {
55
+ throw new Error('Not implemented for publisher');
56
+ }
57
+ resolveSchema(message) {
58
+ return this.messageSchemaContainer.resolveSchema(message);
59
+ }
60
+ /* c8 ignore start */
61
+ resolveNextFunction() {
62
+ throw new Error('Not implemented for publisher');
63
+ }
64
+ processPrehandlers() {
65
+ throw new Error('Not implemented for publisher');
66
+ }
67
+ preHandlerBarrier() {
68
+ throw new Error('Not implemented for publisher');
69
+ }
70
+ processMessage() {
71
+ throw new Error('Not implemented for publisher');
72
+ }
73
+ }
74
+ exports.AbstractSnsPublisher = AbstractSnsPublisher;
75
+ //# sourceMappingURL=AbstractSnsPublisher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AbstractSnsPublisher.js","sourceRoot":"","sources":["../../../lib/sns/AbstractSnsPublisher.ts"],"names":[],"mappings":";;;AAAA,oDAAoD;AAUpD,sDAAoE;AAGpE,6DAAyD;AAazD,MAAsB,oBACpB,SAAQ,uCAA0D;IAGjD,sBAAsB,CAA4C;IAE3E,SAAS,CAAS;IAClB,WAAW,CAAgB;IAEnC,YAAY,YAA6B,EAAE,OAAgD;QACzF,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;QACF,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;IACxB,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAA2B,EAAE,UAA6B,EAAE;QACxE,MAAM,mBAAmB,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;QACvD,IAAI,mBAAmB,CAAC,KAAK,EAAE,CAAC;YAC9B,MAAM,mBAAmB,CAAC,KAAK,CAAA;QACjC,CAAC;QAED,4CAA4C;QAC5C,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,kCAAkC;YAClC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;gBACtB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;YAChC,CAAC;YACD,MAAM,IAAI,CAAC,WAAW,CAAA;QACxB,CAAC;QAED,IAAI,CAAC;YACH,mBAAmB,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YAEzC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACrB,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;YACrC,CAAC;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;YAClC,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAA;QACnD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;YACvB,MAAM,KAAK,CAAA;QACb,CAAC;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;IAED,qBAAqB;IACF,mBAAmB;QACpC,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAA;IAClD,CAAC;IAEkB,kBAAkB;QACnC,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAA;IAClD,CAAC;IAEkB,iBAAiB;QAClC,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAA;IAClD,CAAC;IAEQ,cAAc;QACrB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAA;IAClD,CAAC;CAEF;AAtFD,oDAsFC"}
@@ -1,16 +1,10 @@
1
1
  import type { SNSClient, CreateTopicCommandInput, Tag } from '@aws-sdk/client-sns';
2
- import type { QueueConsumerDependencies, QueueDependencies, NewQueueOptions, ExistingQueueOptions, NewQueueOptionsMultiSchema, ExistingQueueOptionsMultiSchema } from '@message-queue-toolkit/core';
2
+ import type { QueueDependencies, QueueOptions } from '@message-queue-toolkit/core';
3
3
  import { AbstractQueueService } from '@message-queue-toolkit/core';
4
- import type { ZodSchema } from 'zod';
5
4
  import type { SNS_MESSAGE_BODY_TYPE } from '../types/MessageTypes';
6
- import type { SNSMessageOptions } from './AbstractSnsPublisherMonoSchema';
7
5
  export type SNSDependencies = QueueDependencies & {
8
6
  snsClient: SNSClient;
9
7
  };
10
- export type SNSQueueLocatorType = {
11
- topicArn: string;
12
- };
13
- export type SNSConsumerDependencies = SNSDependencies & QueueConsumerDependencies;
14
8
  export type SNSTopicAWSConfig = CreateTopicCommandInput;
15
9
  export type SNSTopicConfig = {
16
10
  tags?: Tag[];
@@ -25,24 +19,22 @@ export type SNSTopicConfig = {
25
19
  ContentBasedDeduplication?: boolean;
26
20
  };
27
21
  };
28
- export type NewSNSOptions = NewQueueOptions<SNSCreationConfig>;
29
- export type ExistingSNSOptions = ExistingQueueOptions<SNSQueueLocatorType>;
30
- export type NewSNSOptionsMultiSchema<MessagePayloadSchemas extends object, ExecutionContext, PrehandlerOutput> = NewQueueOptionsMultiSchema<MessagePayloadSchemas, SNSCreationConfig, ExecutionContext, PrehandlerOutput>;
31
- export type ExistingSNSOptionsMultiSchema<MessagePayloadSchemas extends object, ExecutionContext, PrehandlerOutput> = ExistingQueueOptionsMultiSchema<MessagePayloadSchemas, SNSQueueLocatorType, ExecutionContext, PrehandlerOutput>;
32
22
  export type ExtraSNSCreationParams = {
33
23
  queueUrlsWithSubscribePermissionsPrefix?: string;
24
+ allowedSourceOwner?: string;
34
25
  };
35
26
  export type SNSCreationConfig = {
36
27
  topic: SNSTopicAWSConfig;
37
28
  updateAttributesIfExists?: boolean;
38
29
  } & ExtraSNSCreationParams;
39
- 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> {
40
- protected readonly snsClient: SNSClient;
30
+ export type SNSQueueLocatorType = {
41
31
  topicArn: string;
42
- private isInitted;
43
- private initPromise?;
32
+ };
33
+ export type SNSOptions = QueueOptions<SNSCreationConfig, SNSQueueLocatorType>;
34
+ export declare abstract class AbstractSnsService<MessagePayloadType extends object, MessageEnvelopeType extends object = SNS_MESSAGE_BODY_TYPE, SNSOptionsType extends SNSOptions = SNSOptions, DependenciesType extends SNSDependencies = SNSDependencies> extends AbstractQueueService<MessagePayloadType, MessageEnvelopeType, DependenciesType, SNSCreationConfig, SNSQueueLocatorType, SNSOptionsType> {
35
+ protected readonly snsClient: SNSClient;
36
+ protected topicArn: string;
44
37
  constructor(dependencies: DependenciesType, options: SNSOptionsType);
45
38
  init(): Promise<void>;
46
39
  close(): Promise<void>;
47
- protected internalPublish(message: MessagePayloadType, messageSchema: ZodSchema<MessagePayloadType>, options?: SNSMessageOptions): Promise<void>;
48
40
  }
@@ -1,18 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AbstractSnsService = void 0;
4
- const client_sns_1 = require("@aws-sdk/client-sns");
5
4
  const core_1 = require("@message-queue-toolkit/core");
6
5
  const snsInitter_1 = require("../utils/snsInitter");
7
6
  class AbstractSnsService extends core_1.AbstractQueueService {
8
7
  snsClient;
9
8
  // @ts-ignore
10
9
  topicArn;
11
- isInitted;
12
- initPromise;
13
10
  constructor(dependencies, options) {
14
11
  super(dependencies, options);
15
- this.isInitted = false;
16
12
  this.snsClient = dependencies.snsClient;
17
13
  }
18
14
  async init() {
@@ -21,39 +17,9 @@ class AbstractSnsService extends core_1.AbstractQueueService {
21
17
  }
22
18
  const initResult = await (0, snsInitter_1.initSns)(this.snsClient, this.locatorConfig, this.creationConfig);
23
19
  this.topicArn = initResult.topicArn;
24
- this.isInitted = true;
25
20
  }
26
- // eslint-disable-next-line @typescript-eslint/require-await
27
- async close() { }
28
- async internalPublish(message, messageSchema, options = {}) {
29
- // If it's not initted yet, do the lazy init
30
- if (!this.isInitted) {
31
- // avoid multiple concurrent inits
32
- if (!this.initPromise) {
33
- this.initPromise = this.init();
34
- }
35
- await this.initPromise;
36
- }
37
- try {
38
- messageSchema.parse(message);
39
- if (this.logMessages) {
40
- // @ts-ignore
41
- const resolvedLogMessage = this.resolveMessageLog(message, message[this.messageTypeField]);
42
- this.logMessage(resolvedLogMessage);
43
- }
44
- const input = {
45
- Message: JSON.stringify(message),
46
- TopicArn: this.topicArn,
47
- ...options,
48
- };
49
- const command = new client_sns_1.PublishCommand(input);
50
- await this.snsClient.send(command);
51
- this.handleMessageProcessed(message, 'published');
52
- }
53
- catch (error) {
54
- this.handleError(error);
55
- throw error;
56
- }
21
+ close() {
22
+ return Promise.resolve();
57
23
  }
58
24
  }
59
25
  exports.AbstractSnsService = AbstractSnsService;
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractSnsService.js","sourceRoot":"","sources":["../../../lib/sns/AbstractSnsService.ts"],"names":[],"mappings":";;;AACA,oDAAoD;AAUpD,sDAAkE;AAIlE,oDAAwD;AAiExD,MAAsB,kBAOpB,SAAQ,2BAOT;IACoB,SAAS,CAAW;IACvC,aAAa;IACN,QAAQ,CAAQ;IAEf,SAAS,CAAS;IAClB,WAAW,CAAgB;IAEnC,YAAY,YAA8B,EAAE,OAAuB;QACjE,KAAK,CAAC,YAAY,EAAE,OAAO,CAAC,CAAA;QAE5B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;QACtB,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,IAAA,sBAAS,EAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,CAAA;QAC3E,CAAC;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;QACnC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;IACvB,CAAC;IAED,4DAA4D;IAC5C,KAAK,CAAC,KAAK,KAAmB,CAAC;IAErC,KAAK,CAAC,eAAe,CAC7B,OAA2B,EAC3B,aAA4C,EAC5C,UAA6B,EAAE;QAE/B,4CAA4C;QAC5C,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,kCAAkC;YAClC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;gBACtB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;YAChC,CAAC;YACD,MAAM,IAAI,CAAC,WAAW,CAAA;QACxB,CAAC;QAED,IAAI,CAAC;YACH,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;YAE5B,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACrB,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;YACrC,CAAC;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;YAClC,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAA;QACnD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;YACvB,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;CACF;AA9ED,gDA8EC"}
1
+ {"version":3,"file":"AbstractSnsService.js","sourceRoot":"","sources":["../../../lib/sns/AbstractSnsService.ts"],"names":[],"mappings":";;;AAEA,sDAAkE;AAGlE,oDAAwD;AAsCxD,MAAsB,kBAKpB,SAAQ,2BAOT;IACoB,SAAS,CAAW;IACvC,aAAa;IACH,QAAQ,CAAQ;IAE1B,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,CAAC;YAC/C,MAAM,IAAA,sBAAS,EAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,CAAA;QAC3E,CAAC;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;IAEe,KAAK;QACnB,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;IAC1B,CAAC;CACF;AAnCD,gDAmCC"}
@@ -0,0 +1,25 @@
1
+ import type { SNSClient } from '@aws-sdk/client-sns';
2
+ import type { SQSConsumerDependencies, SQSConsumerOptions, SQSCreationConfig, SQSMessage, SQSQueueLocatorType } from '@message-queue-toolkit/sqs';
3
+ import { AbstractSqsConsumer } from '@message-queue-toolkit/sqs';
4
+ import type { SNSSubscriptionOptions } from '../utils/snsSubscriber';
5
+ import type { SNSCreationConfig, SNSOptions, SNSQueueLocatorType } from './AbstractSnsService';
6
+ export type SNSSQSConsumerDependencies = SQSConsumerDependencies & {
7
+ snsClient: SNSClient;
8
+ };
9
+ export type SNSSQSCreationConfig = SQSCreationConfig & SNSCreationConfig;
10
+ export type SNSSQSQueueLocatorType = SQSQueueLocatorType & SNSQueueLocatorType & {
11
+ subscriptionArn?: string;
12
+ };
13
+ export type SNSSQSConsumerOptions<MessagePayloadType extends object, ExecutionContext, PrehandlerOutput> = SQSConsumerOptions<MessagePayloadType, ExecutionContext, PrehandlerOutput, SNSSQSCreationConfig, SNSSQSQueueLocatorType> & SNSOptions & {
14
+ subscriptionConfig?: SNSSubscriptionOptions;
15
+ };
16
+ export declare abstract class AbstractSnsSqsConsumer<MessagePayloadSchemas extends object, ExecutionContext, PrehandlerOutput = undefined> extends AbstractSqsConsumer<MessagePayloadSchemas, ExecutionContext, PrehandlerOutput, SNSSQSCreationConfig, SNSSQSQueueLocatorType, SNSSQSConsumerOptions<MessagePayloadSchemas, ExecutionContext, PrehandlerOutput>> {
17
+ private readonly subscriptionConfig?;
18
+ private readonly snsClient;
19
+ protected topicArn: string;
20
+ protected subscriptionArn: string;
21
+ protected constructor(dependencies: SNSSQSConsumerDependencies, options: SNSSQSConsumerOptions<MessagePayloadSchemas, ExecutionContext, PrehandlerOutput>, executionContext: ExecutionContext);
22
+ init(): Promise<void>;
23
+ protected resolveMessage(message: SQSMessage): import("@lokalise/node-core").Either<import("@message-queue-toolkit/core").MessageInvalidFormatError | import("@message-queue-toolkit/core").MessageValidationError, unknown>;
24
+ protected resolveSchema(messagePayload: MessagePayloadSchemas): import("@lokalise/node-core").Either<Error, import("zod").ZodType<MessagePayloadSchemas, import("zod").ZodTypeDef, MessagePayloadSchemas>>;
25
+ }
@@ -1,10 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AbstractSnsSqsConsumerMultiSchema = void 0;
3
+ exports.AbstractSnsSqsConsumer = void 0;
4
4
  const sqs_1 = require("@message-queue-toolkit/sqs");
5
5
  const snsInitter_1 = require("../utils/snsInitter");
6
6
  const snsMessageReader_1 = require("../utils/snsMessageReader");
7
- class AbstractSnsSqsConsumerMultiSchema extends sqs_1.AbstractSqsConsumerMultiSchema {
7
+ class AbstractSnsSqsConsumer extends sqs_1.AbstractSqsConsumer {
8
8
  subscriptionConfig;
9
9
  snsClient;
10
10
  // @ts-ignore
@@ -39,5 +39,5 @@ class AbstractSnsSqsConsumerMultiSchema extends sqs_1.AbstractSqsConsumerMultiSc
39
39
  return this.messageSchemaContainer.resolveSchema(messagePayload);
40
40
  }
41
41
  }
42
- exports.AbstractSnsSqsConsumerMultiSchema = AbstractSnsSqsConsumerMultiSchema;
43
- //# sourceMappingURL=AbstractSnsSqsConsumerMultiSchema.js.map
42
+ exports.AbstractSnsSqsConsumer = AbstractSnsSqsConsumer;
43
+ //# sourceMappingURL=AbstractSnsSqsConsumer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AbstractSnsSqsConsumer.js","sourceRoot":"","sources":["../../../lib/sns/AbstractSnsSqsConsumer.ts"],"names":[],"mappings":";;;AAQA,oDAA2E;AAE3E,oDAA8D;AAC9D,gEAA0D;AA8B1D,MAAsB,sBAIpB,SAAQ,yBAOT;IACkB,kBAAkB,CAAyB;IAC3C,SAAS,CAAW;IAErC,aAAa;IACH,QAAQ,CAAQ;IAC1B,aAAa;IACH,eAAe,CAAQ;IAEjC,YACE,YAAwC,EACxC,OAAyF,EACzF,gBAAkC;QAElC,KAAK,CACH,YAAY,EACZ;YACE,GAAG,OAAO;SACX,EACD,gBAAgB,CACjB,CAAA;QAED,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAA;QACpD,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC,SAAS,CAAA;IACzC,CAAC;IAEQ,KAAK,CAAC,IAAI;QACjB,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC1E,MAAM,IAAA,yBAAY,EAChB,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,cAAc,CAAC,KAAK,EACzB,IAAI,CAAC,cAAc,CAAC,KAAK,EACzB,IAAI,CAAC,kBAAkB,CACxB,CAAA;QACH,CAAC;aAAM,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACtD,MAAM,IAAA,eAAS,EAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,CAAA;QAC3E,CAAC;QAED,MAAM,gBAAgB,GAAG,MAAM,IAAA,uBAAU,EACvC,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,kBAAkB,EACvB;YACE,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CACF,CAAA;QACD,IAAI,CAAC,QAAQ,GAAG,gBAAgB,CAAC,QAAQ,CAAA;QACzC,IAAI,CAAC,QAAQ,GAAG,gBAAgB,CAAC,QAAQ,CAAA;QACzC,IAAI,CAAC,eAAe,GAAG,gBAAgB,CAAC,eAAe,CAAA;IACzD,CAAC;IAEkB,cAAc,CAAC,OAAmB;QACnD,OAAO,IAAA,iCAAc,EAAC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,CAAA;IACpD,CAAC;IAEkB,aAAa,CAAC,cAAqC;QACpE,OAAO,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,cAAc,CAAC,CAAA;IAClE,CAAC;CACF;AAzED,wDAyEC"}
@@ -1,5 +1,10 @@
1
1
  import type { ZodSchema } from 'zod';
2
- export declare function generateTopicSubscriptionPolicy(topicArn: string, supportedSqsQueueUrlPrefix: string): string;
2
+ export type TopicSubscriptionPolicyParams = {
3
+ topicArn: string;
4
+ allowedSqsQueueUrlPrefix?: string;
5
+ allowedSourceOwner?: string;
6
+ };
7
+ export declare function generateTopicSubscriptionPolicy(params: TopicSubscriptionPolicyParams): string;
3
8
  export declare function generateFilterAttributes(messageSchemas: ZodSchema<any>[], messageTypeField: string): {
4
9
  FilterPolicy: string;
5
10
  FilterPolicyScope: string;
@@ -3,8 +3,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
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, 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}"}}}]}`;
6
+ function generateTopicSubscriptionPolicy(params) {
7
+ const sourceOwnerFragment = params.allowedSourceOwner
8
+ ? `"StringEquals":{"AWS:SourceOwner": "${params.allowedSourceOwner}"}`
9
+ : '';
10
+ const supportedSqsQueueUrlPrefixFragment = params.allowedSqsQueueUrlPrefix
11
+ ? `"StringLike":{"sns:Endpoint":"${params.allowedSqsQueueUrlPrefix}"}`
12
+ : '';
13
+ const commaFragment = sourceOwnerFragment.length > 0 && supportedSqsQueueUrlPrefixFragment.length > 0 ? ',' : '';
14
+ return `{"Version":"${POLICY_VERSION}","Id":"__default_policy_ID","Statement":[{"Sid":"AllowSQSSubscription","Effect":"Allow","Principal":{"AWS":"*"},"Action":["sns:Subscribe"],"Resource":"${params.topicArn}","Condition":{${sourceOwnerFragment}${commaFragment}${supportedSqsQueueUrlPrefixFragment}}}]}`;
8
15
  }
9
16
  exports.generateTopicSubscriptionPolicy = generateTopicSubscriptionPolicy;
10
17
  function generateFilterAttributes(
@@ -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,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"}
1
+ {"version":3,"file":"snsAttributeUtils.js","sourceRoot":"","sources":["../../../lib/utils/snsAttributeUtils.ts"],"names":[],"mappings":";;;AAEA,gGAAgG;AAChG,MAAM,cAAc,GAAG,YAAY,CAAA;AAQnC,SAAgB,+BAA+B,CAAC,MAAqC;IACnF,MAAM,mBAAmB,GAAG,MAAM,CAAC,kBAAkB;QACnD,CAAC,CAAC,uCAAuC,MAAM,CAAC,kBAAkB,IAAI;QACtE,CAAC,CAAC,EAAE,CAAA;IACN,MAAM,kCAAkC,GAAG,MAAM,CAAC,wBAAwB;QACxE,CAAC,CAAC,iCAAiC,MAAM,CAAC,wBAAwB,IAAI;QACtE,CAAC,CAAC,EAAE,CAAA;IACN,MAAM,aAAa,GACjB,mBAAmB,CAAC,MAAM,GAAG,CAAC,IAAI,kCAAkC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;IAE5F,OAAO,eAAe,cAAc,2JAA2J,MAAM,CAAC,QAAQ,kBAAkB,mBAAmB,GAAG,aAAa,GAAG,kCAAkC,MAAM,CAAA;AAChT,CAAC;AAXD,0EAWC;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"}
@@ -3,7 +3,7 @@ import type { SQSClient, CreateQueueCommandInput } from '@aws-sdk/client-sqs';
3
3
  import type { DeletionConfig, ExtraParams } from '@message-queue-toolkit/core';
4
4
  import type { SQSCreationConfig } from '@message-queue-toolkit/sqs';
5
5
  import type { SNSCreationConfig, SNSQueueLocatorType } from '../sns/AbstractSnsService';
6
- import type { SNSSQSQueueLocatorType } from '../sns/AbstractSnsSqsConsumerMonoSchema';
6
+ import type { SNSSQSQueueLocatorType } from '../sns/AbstractSnsSqsConsumer';
7
7
  import type { SNSSubscriptionOptions } from './snsSubscriber';
8
8
  export declare function initSnsSqs(sqsClient: SQSClient, snsClient: SNSClient, locatorConfig?: SNSSQSQueueLocatorType, creationConfig?: SNSCreationConfig & SQSCreationConfig, subscriptionConfig?: SNSSubscriptionOptions, extraParams?: ExtraParams): Promise<{
9
9
  subscriptionArn: string;
@@ -19,6 +19,7 @@ async function initSnsSqs(sqsClient, snsClient, locatorConfig, creationConfig, s
19
19
  const { subscriptionArn, topicArn, queueUrl } = await (0, snsSubscriber_1.subscribeToTopic)(sqsClient, snsClient, creationConfig.queue, creationConfig.topic, subscriptionConfig, {
20
20
  updateAttributesIfExists: creationConfig.updateAttributesIfExists,
21
21
  queueUrlsWithSubscribePermissionsPrefix: creationConfig.queueUrlsWithSubscribePermissionsPrefix,
22
+ allowedSourceOwner: creationConfig.allowedSourceOwner,
22
23
  topicArnsWithPublishPermissionsPrefix: creationConfig.topicArnsWithPublishPermissionsPrefix,
23
24
  logger: extraParams?.logger,
24
25
  });
@@ -96,6 +97,7 @@ async function initSns(snsClient, locatorConfig, creationConfig) {
96
97
  }
97
98
  const topicArn = await (0, snsUtils_1.assertTopic)(snsClient, creationConfig.topic, {
98
99
  queueUrlsWithSubscribePermissionsPrefix: creationConfig.queueUrlsWithSubscribePermissionsPrefix,
100
+ allowedSourceOwner: creationConfig.allowedSourceOwner,
99
101
  });
100
102
  return {
101
103
  topicArn,
@@ -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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"}
@@ -7,6 +7,7 @@ const snsUtils_1 = require("./snsUtils");
7
7
  async function subscribeToTopic(sqsClient, snsClient, queueConfiguration, topicConfiguration, subscriptionConfiguration, extraParams) {
8
8
  const topicArn = await (0, snsUtils_1.assertTopic)(snsClient, topicConfiguration, {
9
9
  queueUrlsWithSubscribePermissionsPrefix: extraParams?.queueUrlsWithSubscribePermissionsPrefix,
10
+ allowedSourceOwner: extraParams?.allowedSourceOwner,
10
11
  });
11
12
  const { queueUrl, queueArn } = await (0, sqs_1.assertQueue)(sqsClient, queueConfiguration, {
12
13
  topicArnsWithPublishPermissionsPrefix: extraParams?.topicArnsWithPublishPermissionsPrefix,
@@ -1 +1 @@
1
- {"version":3,"file":"snsSubscriber.js","sourceRoot":"","sources":["../../../lib/utils/snsSubscriber.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"snsSubscriber.js","sourceRoot":"","sources":["../../../lib/utils/snsSubscriber.ts"],"names":[],"mappings":"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"}
@@ -58,11 +58,15 @@ async function assertTopic(snsClient, topicOptions, extraParams) {
58
58
  throw new Error('No topic arn in response');
59
59
  }
60
60
  const topicArn = response.TopicArn;
61
- if (extraParams?.queueUrlsWithSubscribePermissionsPrefix) {
61
+ if (extraParams?.queueUrlsWithSubscribePermissionsPrefix || extraParams?.allowedSourceOwner) {
62
62
  const setTopicAttributesCommand = new client_sns_1.SetTopicAttributesCommand({
63
63
  TopicArn: topicArn,
64
64
  AttributeName: 'Policy',
65
- AttributeValue: (0, snsAttributeUtils_1.generateTopicSubscriptionPolicy)(topicArn, extraParams.queueUrlsWithSubscribePermissionsPrefix),
65
+ AttributeValue: (0, snsAttributeUtils_1.generateTopicSubscriptionPolicy)({
66
+ topicArn,
67
+ allowedSqsQueueUrlPrefix: extraParams.queueUrlsWithSubscribePermissionsPrefix,
68
+ allowedSourceOwner: extraParams.allowedSourceOwner,
69
+ }),
66
70
  });
67
71
  await snsClient.send(setTopicAttributesCommand);
68
72
  }
@@ -1 +1 @@
1
- {"version":3,"file":"snsUtils.js","sourceRoot":"","sources":["../../../lib/utils/snsUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"snsUtils.js","sourceRoot":"","sources":["../../../lib/utils/snsUtils.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@message-queue-toolkit/sns",
3
- "version": "11.1.0",
3
+ "version": "12.0.1",
4
4
  "private": false,
5
5
  "license": "MIT",
6
6
  "description": "SNS adapter for message-queue-toolkit",
@@ -26,14 +26,14 @@
26
26
  },
27
27
  "dependencies": {
28
28
  "@lokalise/node-core": "^9.10.1",
29
- "sqs-consumer": "^8.1.5",
29
+ "sqs-consumer": "^9.1.0",
30
30
  "zod": "^3.22.4"
31
31
  },
32
32
  "peerDependencies": {
33
33
  "@aws-sdk/client-sns": "^3.476.0",
34
34
  "@aws-sdk/client-sqs": "^3.476.0",
35
- "@message-queue-toolkit/core": "^9.1.0",
36
- "@message-queue-toolkit/sqs": "^11.1.0"
35
+ "@message-queue-toolkit/core": "^10.0.0",
36
+ "@message-queue-toolkit/sqs": "^12.0.1"
37
37
  },
38
38
  "devDependencies": {
39
39
  "@aws-sdk/client-sns": "^3.529.1",
@@ -43,7 +43,7 @@
43
43
  "@types/node": "^20.11.25",
44
44
  "@typescript-eslint/eslint-plugin": "^7.1.1",
45
45
  "@typescript-eslint/parser": "^7.1.1",
46
- "@vitest/coverage-v8": "^1.3.1",
46
+ "@vitest/coverage-v8": "^1.4.0",
47
47
  "awilix": "^10.0.1",
48
48
  "awilix-manager": "^5.1.0",
49
49
  "del-cli": "^5.1.0",
@@ -1,21 +0,0 @@
1
- import type { Either } from '@lokalise/node-core';
2
- import type { AsyncPublisher, BarrierResult, MessageInvalidFormatError, MessageValidationError, MonoSchemaQueueOptions, NewQueueOptions } from '@message-queue-toolkit/core';
3
- import type { ZodSchema } from 'zod';
4
- import type { ExistingSNSOptions, SNSCreationConfig, SNSDependencies } from './AbstractSnsService';
5
- import { AbstractSnsService } from './AbstractSnsService';
6
- export type SNSMessageOptions = {
7
- MessageGroupId?: string;
8
- MessageDeduplicationId?: string;
9
- };
10
- export declare abstract class AbstractSnsPublisherMonoSchema<MessagePayloadType extends object> extends AbstractSnsService<MessagePayloadType> implements AsyncPublisher<MessagePayloadType, SNSMessageOptions> {
11
- private readonly messageSchema;
12
- private readonly schemaEither;
13
- constructor(dependencies: SNSDependencies, options: (ExistingSNSOptions | NewQueueOptions<SNSCreationConfig>) & MonoSchemaQueueOptions<MessagePayloadType>);
14
- publish(message: MessagePayloadType, options?: SNSMessageOptions): Promise<void>;
15
- protected resolveMessage(): Either<MessageInvalidFormatError | MessageValidationError, unknown>;
16
- protected resolveNextFunction(): () => void;
17
- protected processPrehandlers(): Promise<undefined>;
18
- protected preHandlerBarrier(): Promise<BarrierResult<undefined>>;
19
- processMessage(): Promise<Either<'retryLater', 'success'>>;
20
- protected resolveSchema(): Either<Error, ZodSchema<MessagePayloadType, import("zod").ZodTypeDef, MessagePayloadType>>;
21
- }
@@ -1,39 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AbstractSnsPublisherMonoSchema = void 0;
4
- const AbstractSnsService_1 = require("./AbstractSnsService");
5
- class AbstractSnsPublisherMonoSchema extends AbstractSnsService_1.AbstractSnsService {
6
- messageSchema;
7
- schemaEither;
8
- constructor(dependencies, options) {
9
- super(dependencies, options);
10
- this.messageSchema = options.messageSchema;
11
- this.schemaEither = {
12
- result: this.messageSchema,
13
- };
14
- }
15
- publish(message, options = {}) {
16
- return this.internalPublish(message, this.messageSchema, options);
17
- }
18
- /* c8 ignore start */
19
- resolveMessage() {
20
- throw new Error('Not implemented for publisher');
21
- }
22
- resolveNextFunction() {
23
- throw new Error('Not implemented for publisher');
24
- }
25
- processPrehandlers() {
26
- throw new Error('Not implemented for publisher');
27
- }
28
- preHandlerBarrier() {
29
- throw new Error('Not implemented for publisher');
30
- }
31
- processMessage() {
32
- throw new Error('Not implemented for publisher');
33
- }
34
- resolveSchema() {
35
- return this.schemaEither;
36
- }
37
- }
38
- exports.AbstractSnsPublisherMonoSchema = AbstractSnsPublisherMonoSchema;
39
- //# sourceMappingURL=AbstractSnsPublisherMonoSchema.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AbstractSnsPublisherMonoSchema.js","sourceRoot":"","sources":["../../../lib/sns/AbstractSnsPublisherMonoSchema.ts"],"names":[],"mappings":";;;AAYA,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,OAAO,CAAC,OAA2B,EAAE,UAA6B,EAAE;QAClE,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAA;IACnE,CAAC;IAED,qBAAqB;IACF,cAAc;QAI/B,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAA;IAClD,CAAC;IAEkB,mBAAmB;QACpC,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAA;IAClD,CAAC;IAEkB,kBAAkB;QACnC,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAA;IAClD,CAAC;IAEkB,iBAAiB;QAClC,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAA;IAClD,CAAC;IAEQ,cAAc;QACrB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAA;IAClD,CAAC;IAEkB,aAAa;QAC9B,OAAO,IAAI,CAAC,YAAY,CAAA;IAC1B,CAAC;CAEF;AAnDD,wEAmDC"}
@@ -1,22 +0,0 @@
1
- import type { Either } from '@lokalise/node-core';
2
- import type { AsyncPublisher, BarrierResult, MessageInvalidFormatError, MessageValidationError, NewQueueOptions } from '@message-queue-toolkit/core';
3
- import type { ZodSchema } from 'zod';
4
- import type { ExistingSNSOptions, SNSCreationConfig, SNSDependencies } from './AbstractSnsService';
5
- import { AbstractSnsService } from './AbstractSnsService';
6
- export type SNSMessageOptions = {
7
- MessageGroupId?: string;
8
- MessageDeduplicationId?: string;
9
- };
10
- export declare abstract class AbstractSnsPublisherMultiSchema<MessagePayloadType extends object> extends AbstractSnsService<MessagePayloadType, MessagePayloadType> implements AsyncPublisher<MessagePayloadType, SNSMessageOptions> {
11
- private readonly messageSchemaContainer;
12
- constructor(dependencies: SNSDependencies, options: (ExistingSNSOptions | NewQueueOptions<SNSCreationConfig>) & {
13
- messageSchemas: readonly ZodSchema<MessagePayloadType>[];
14
- });
15
- publish(message: MessagePayloadType, options?: SNSMessageOptions): Promise<void>;
16
- protected resolveMessage(): Either<MessageInvalidFormatError | MessageValidationError, unknown>;
17
- protected resolveSchema(message: MessagePayloadType): Either<Error, ZodSchema<MessagePayloadType, import("zod").ZodTypeDef, MessagePayloadType>>;
18
- protected resolveNextFunction(): () => void;
19
- protected processPrehandlers(): Promise<undefined>;
20
- protected preHandlerBarrier(): Promise<BarrierResult<undefined>>;
21
- processMessage(): Promise<Either<'retryLater', 'success'>>;
22
- }
@@ -1,44 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AbstractSnsPublisherMultiSchema = void 0;
4
- const core_1 = require("@message-queue-toolkit/core");
5
- const AbstractSnsService_1 = require("./AbstractSnsService");
6
- class AbstractSnsPublisherMultiSchema extends AbstractSnsService_1.AbstractSnsService {
7
- messageSchemaContainer;
8
- constructor(dependencies, options) {
9
- super(dependencies, options);
10
- const messageSchemas = options.messageSchemas;
11
- this.messageSchemaContainer = new core_1.MessageSchemaContainer({
12
- messageSchemas,
13
- messageTypeField: options.messageTypeField,
14
- });
15
- }
16
- async publish(message, options = {}) {
17
- const messageSchemaResult = this.resolveSchema(message);
18
- if (messageSchemaResult.error) {
19
- throw messageSchemaResult.error;
20
- }
21
- return this.internalPublish(message, messageSchemaResult.result, options);
22
- }
23
- resolveMessage() {
24
- throw new Error('Not implemented for publisher');
25
- }
26
- resolveSchema(message) {
27
- return this.messageSchemaContainer.resolveSchema(message);
28
- }
29
- /* c8 ignore start */
30
- resolveNextFunction() {
31
- throw new Error('Not implemented for publisher');
32
- }
33
- processPrehandlers() {
34
- throw new Error('Not implemented for publisher');
35
- }
36
- preHandlerBarrier() {
37
- throw new Error('Not implemented for publisher');
38
- }
39
- processMessage() {
40
- throw new Error('Not implemented for publisher');
41
- }
42
- }
43
- exports.AbstractSnsPublisherMultiSchema = AbstractSnsPublisherMultiSchema;
44
- //# sourceMappingURL=AbstractSnsPublisherMultiSchema.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AbstractSnsPublisherMultiSchema.js","sourceRoot":"","sources":["../../../lib/sns/AbstractSnsPublisherMultiSchema.ts"],"names":[],"mappings":";;;AAQA,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,MAAM,mBAAmB,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;QACvD,IAAI,mBAAmB,CAAC,KAAK,EAAE,CAAC;YAC9B,MAAM,mBAAmB,CAAC,KAAK,CAAA;QACjC,CAAC;QAED,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC3E,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;IAED,qBAAqB;IACF,mBAAmB;QACpC,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAA;IAClD,CAAC;IAEkB,kBAAkB;QACnC,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAA;IAClD,CAAC;IAEkB,iBAAiB;QAClC,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAA;IAClD,CAAC;IAEQ,cAAc;QACrB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAA;IAClD,CAAC;CAEF;AA1DD,0EA0DC"}
@@ -1,41 +0,0 @@
1
- import type { SNSClient } from '@aws-sdk/client-sns';
2
- import type { Either } from '@lokalise/node-core';
3
- import type { MonoSchemaQueueOptions, BarrierResult, Prehandler } from '@message-queue-toolkit/core';
4
- import type { SQSConsumerDependencies, NewSQSConsumerOptions, ExistingSQSConsumerOptions, SQSQueueLocatorType, SQSCreationConfig, SQSMessage, CommonSQSConsumerOptionsMono } from '@message-queue-toolkit/sqs';
5
- import { AbstractSqsConsumer } from '@message-queue-toolkit/sqs';
6
- import type { ZodSchema } from 'zod';
7
- import type { SNSSubscriptionOptions } from '../utils/snsSubscriber';
8
- import type { ExistingSNSOptions, NewSNSOptions, SNSCreationConfig, SNSQueueLocatorType } from './AbstractSnsService';
9
- export type NewSnsSqsConsumerOptions = NewSQSConsumerOptions<SQSCreationConfig & SNSCreationConfig> & NewSNSOptions & {
10
- subscriptionConfig?: SNSSubscriptionOptions;
11
- };
12
- export type NewSnsSqsConsumerOptionsMono<MessagePayloadType extends object, ExecutionContext, PrehandlerOutput = undefined> = NewSnsSqsConsumerOptions & MonoSchemaQueueOptions<MessagePayloadType> & CommonSQSConsumerOptionsMono<MessagePayloadType, ExecutionContext, PrehandlerOutput>;
13
- export type ExistingSnsSqsConsumerOptions = ExistingSQSConsumerOptions<SNSSQSQueueLocatorType> & ExistingSNSOptions & {
14
- subscriptionConfig?: SNSSubscriptionOptions;
15
- };
16
- export type ExistingSnsSqsConsumerOptionsMono<MessagePayloadType extends object, ExecutionContext, PrehandlerOutput> = ExistingSnsSqsConsumerOptions & MonoSchemaQueueOptions<MessagePayloadType> & CommonSQSConsumerOptionsMono<MessagePayloadType, ExecutionContext, PrehandlerOutput>;
17
- export type SNSSQSConsumerDependencies = SQSConsumerDependencies & {
18
- snsClient: SNSClient;
19
- };
20
- export type SNSSQSQueueLocatorType = SQSQueueLocatorType & SNSQueueLocatorType & {
21
- subscriptionArn?: string;
22
- };
23
- export declare abstract class AbstractSnsSqsConsumerMonoSchema<MessagePayloadType extends object, ExecutionContext = undefined, PrehandlerOutput = undefined, BarrierOutput = undefined> extends AbstractSqsConsumer<MessagePayloadType, SNSSQSQueueLocatorType, SNSCreationConfig & SQSCreationConfig, NewSnsSqsConsumerOptions | ExistingSnsSqsConsumerOptionsMono<MessagePayloadType, ExecutionContext, PrehandlerOutput>, ExecutionContext, PrehandlerOutput, BarrierOutput> {
24
- private readonly subscriptionConfig?;
25
- private readonly snsClient;
26
- private readonly messageSchema;
27
- private readonly schemaEither;
28
- private readonly prehandlers;
29
- topicArn: string;
30
- subscriptionArn: string;
31
- protected constructor(dependencies: SNSSQSConsumerDependencies, options: NewSnsSqsConsumerOptionsMono<MessagePayloadType, ExecutionContext, PrehandlerOutput>);
32
- protected resolveSchema(): Either<Error, ZodSchema<MessagePayloadType, import("zod").ZodTypeDef, MessagePayloadType>>;
33
- protected resolveMessage(message: SQSMessage): Either<import("@message-queue-toolkit/core").MessageInvalidFormatError | import("@message-queue-toolkit/core").MessageValidationError, unknown>;
34
- /**
35
- * Override to implement barrier pattern
36
- */
37
- protected preHandlerBarrier(_message: MessagePayloadType, _messageType: string): Promise<BarrierResult<BarrierOutput>>;
38
- protected processPrehandlers(message: MessagePayloadType): Promise<PrehandlerOutput>;
39
- protected resolveNextFunction(prehandlers: Prehandler<MessagePayloadType, ExecutionContext, PrehandlerOutput>[], message: MessagePayloadType, index: number, prehandlerOutput: PrehandlerOutput, resolve: (value: PrehandlerOutput | PromiseLike<PrehandlerOutput>) => void, reject: (err: Error) => void): (prehandlerResult: import("@message-queue-toolkit/core/dist/lib/queues/HandlerContainer").PrehandlerResult) => void;
40
- init(): Promise<void>;
41
- }
@@ -1,71 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AbstractSnsSqsConsumerMonoSchema = void 0;
4
- const sqs_1 = require("@message-queue-toolkit/sqs");
5
- const snsInitter_1 = require("../utils/snsInitter");
6
- const snsMessageReader_1 = require("../utils/snsMessageReader");
7
- const DEFAULT_BARRIER_RESULT = {
8
- isPassing: true,
9
- output: undefined,
10
- };
11
- class AbstractSnsSqsConsumerMonoSchema extends sqs_1.AbstractSqsConsumer {
12
- subscriptionConfig;
13
- snsClient;
14
- messageSchema;
15
- schemaEither;
16
- prehandlers;
17
- // @ts-ignore
18
- topicArn;
19
- // @ts-ignore
20
- subscriptionArn;
21
- constructor(dependencies, options) {
22
- super(dependencies, {
23
- ...options,
24
- });
25
- this.subscriptionConfig = options.subscriptionConfig;
26
- this.snsClient = dependencies.snsClient;
27
- this.prehandlers = options.prehandlers ?? [];
28
- this.messageSchema = options.messageSchema;
29
- this.schemaEither = {
30
- result: this.messageSchema,
31
- };
32
- }
33
- resolveSchema() {
34
- return this.schemaEither;
35
- }
36
- resolveMessage(message) {
37
- return (0, snsMessageReader_1.readSnsMessage)(message, this.errorResolver);
38
- }
39
- /**
40
- * Override to implement barrier pattern
41
- */
42
- preHandlerBarrier(_message, _messageType) {
43
- // @ts-ignore
44
- return Promise.resolve(DEFAULT_BARRIER_RESULT);
45
- }
46
- processPrehandlers(message) {
47
- return this.processPrehandlersInternal(this.prehandlers, message);
48
- }
49
- // eslint-disable-next-line max-params
50
- resolveNextFunction(prehandlers, message, index, prehandlerOutput, resolve, reject) {
51
- return this.resolveNextPreHandlerFunctionInternal(prehandlers, this, message, index, prehandlerOutput, resolve, reject);
52
- }
53
- async init() {
54
- if (this.deletionConfig && this.creationConfig && this.subscriptionConfig) {
55
- await (0, snsInitter_1.deleteSnsSqs)(this.sqsClient, this.snsClient, this.deletionConfig, this.creationConfig.queue, this.creationConfig.topic, this.subscriptionConfig, {
56
- logger: this.logger,
57
- });
58
- }
59
- else if (this.deletionConfig && this.creationConfig) {
60
- await (0, sqs_1.deleteSqs)(this.sqsClient, this.deletionConfig, this.creationConfig);
61
- }
62
- const initSnsSqsResult = await (0, snsInitter_1.initSnsSqs)(this.sqsClient, this.snsClient, this.locatorConfig, this.creationConfig, this.subscriptionConfig, {
63
- logger: this.logger,
64
- });
65
- this.queueUrl = initSnsSqsResult.queueUrl;
66
- this.topicArn = initSnsSqsResult.topicArn;
67
- this.subscriptionArn = initSnsSqsResult.subscriptionArn;
68
- }
69
- }
70
- exports.AbstractSnsSqsConsumerMonoSchema = AbstractSnsSqsConsumerMonoSchema;
71
- //# sourceMappingURL=AbstractSnsSqsConsumerMonoSchema.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AbstractSnsSqsConsumerMonoSchema.js","sourceRoot":"","sources":["../../../lib/sns/AbstractSnsSqsConsumerMonoSchema.ts"],"names":[],"mappings":"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"}
@@ -1,17 +0,0 @@
1
- import type { MultiSchemaConsumerOptions } from '@message-queue-toolkit/core';
2
- import type { SQSCreationConfig, SQSMessage } from '@message-queue-toolkit/sqs';
3
- import { AbstractSqsConsumerMultiSchema } from '@message-queue-toolkit/sqs';
4
- import type { SNSCreationConfig } from './AbstractSnsService';
5
- import type { ExistingSnsSqsConsumerOptions, NewSnsSqsConsumerOptions, SNSSQSConsumerDependencies, SNSSQSQueueLocatorType } from './AbstractSnsSqsConsumerMonoSchema';
6
- export type ExistingSnsSqsConsumerOptionsMulti<MessagePayloadType extends object, ExecutionContext, PrehandlerOutput> = ExistingSnsSqsConsumerOptions & MultiSchemaConsumerOptions<MessagePayloadType, ExecutionContext, PrehandlerOutput>;
7
- export type NewSnsSqsConsumerOptionsMulti<MessagePayloadType extends object, ExecutionContext, PrehandlerOutput> = NewSnsSqsConsumerOptions & MultiSchemaConsumerOptions<MessagePayloadType, ExecutionContext, PrehandlerOutput>;
8
- export declare abstract class AbstractSnsSqsConsumerMultiSchema<MessagePayloadSchemas extends object, ExecutionContext, PrehandlerOutput = undefined> extends AbstractSqsConsumerMultiSchema<MessagePayloadSchemas, ExecutionContext, PrehandlerOutput, SNSSQSQueueLocatorType, SNSCreationConfig & SQSCreationConfig, NewSnsSqsConsumerOptionsMulti<MessagePayloadSchemas, ExecutionContext, PrehandlerOutput>> {
9
- private readonly subscriptionConfig?;
10
- private readonly snsClient;
11
- topicArn: string;
12
- subscriptionArn: string;
13
- protected constructor(dependencies: SNSSQSConsumerDependencies, options: NewSnsSqsConsumerOptionsMulti<MessagePayloadSchemas, ExecutionContext, PrehandlerOutput>, executionContext: ExecutionContext);
14
- init(): Promise<void>;
15
- protected resolveMessage(message: SQSMessage): import("@lokalise/node-core").Either<import("@message-queue-toolkit/core").MessageInvalidFormatError | import("@message-queue-toolkit/core").MessageValidationError, unknown>;
16
- protected resolveSchema(messagePayload: MessagePayloadSchemas): import("@lokalise/node-core").Either<Error, import("zod").ZodType<MessagePayloadSchemas, import("zod").ZodTypeDef, MessagePayloadSchemas>>;
17
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"AbstractSnsSqsConsumerMultiSchema.js","sourceRoot":"","sources":["../../../lib/sns/AbstractSnsSqsConsumerMultiSchema.ts"],"names":[],"mappings":";;;AAGA,oDAAsF;AAEtF,oDAA8D;AAC9D,gEAA0D;AAyB1D,MAAsB,iCAIpB,SAAQ,oCAOT;IACkB,kBAAkB,CAAyB;IAC3C,SAAS,CAAW;IACrC,aAAa;IACN,QAAQ,CAAQ;IACvB,aAAa;IACN,eAAe,CAAQ;IAE9B,YACE,YAAwC,EACxC,OAIC,EACD,gBAAkC;QAElC,KAAK,CACH,YAAY,EACZ;YACE,GAAG,OAAO;SACX,EACD,gBAAgB,CACjB,CAAA;QAED,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAA;QACpD,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC,SAAS,CAAA;IACzC,CAAC;IAEQ,KAAK,CAAC,IAAI;QACjB,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC1E,MAAM,IAAA,yBAAY,EAChB,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,cAAc,CAAC,KAAK,EACzB,IAAI,CAAC,cAAc,CAAC,KAAK,EACzB,IAAI,CAAC,kBAAkB,CACxB,CAAA;QACH,CAAC;aAAM,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACtD,MAAM,IAAA,eAAS,EAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,CAAA;QAC3E,CAAC;QAED,MAAM,gBAAgB,GAAG,MAAM,IAAA,uBAAU,EACvC,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,kBAAkB,EACvB;YACE,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CACF,CAAA;QACD,IAAI,CAAC,QAAQ,GAAG,gBAAgB,CAAC,QAAQ,CAAA;QACzC,IAAI,CAAC,QAAQ,GAAG,gBAAgB,CAAC,QAAQ,CAAA;QACzC,IAAI,CAAC,eAAe,GAAG,gBAAgB,CAAC,eAAe,CAAA;IACzD,CAAC;IAEkB,cAAc,CAAC,OAAmB;QACnD,OAAO,IAAA,iCAAc,EAAC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,CAAA;IACpD,CAAC;IAEkB,aAAa,CAAC,cAAqC;QACpE,OAAO,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,cAAc,CAAC,CAAA;IAClE,CAAC;CACF;AA5ED,8EA4EC"}