quidproquo-actionprocessor-awslambda 0.0.69 → 0.0.71

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.
@@ -0,0 +1,12 @@
1
+ import { QPQConfig, EventMatchStoryActionProcessor, EventTransformEventParamsActionProcessor, EventTransformResponseResultActionProcessor, EventAutoRespondActionProcessor, QueueMessage, QueueQPQConfigSetting } from 'quidproquo-core';
2
+ import { QueueEventParams } from 'quidproquo-webserver';
3
+ import { Context, SQSRecord } from 'aws-lambda';
4
+ type AnyQueueEventParams = QueueEventParams<QueueMessage<any>>;
5
+ export declare const getQueueConfigSetting: () => QueueQPQConfigSetting;
6
+ declare const _default: (qpqConfig: QPQConfig) => {
7
+ "@quidproquo-core/event/TransformEventParams": EventTransformEventParamsActionProcessor<[SQSRecord, Context], AnyQueueEventParams>;
8
+ "@quidproquo-core/event/TransformResponseResult": EventTransformResponseResultActionProcessor<boolean, AnyQueueEventParams, boolean>;
9
+ "@quidproquo-core/event/AutoRespond": EventAutoRespondActionProcessor<AnyQueueEventParams>;
10
+ "@quidproquo-core/event/MatchStory": EventMatchStoryActionProcessor<AnyQueueEventParams>;
11
+ };
12
+ export default _default;
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.getQueueConfigSetting = void 0;
13
+ const quidproquo_core_1 = require("quidproquo-core");
14
+ const awsLambdaUtils_1 = require("../../../awsLambdaUtils");
15
+ const getQueueConfigSetting = () => {
16
+ const queueQPQConfigSetting = JSON.parse(process.env.queueQPQConfigSetting);
17
+ // TODO: Validate here
18
+ return queueQPQConfigSetting;
19
+ };
20
+ exports.getQueueConfigSetting = getQueueConfigSetting;
21
+ const getProcessTransformEventParams = (qpqConfig) => {
22
+ return ({ eventParams: [record, context] }) => __awaiter(void 0, void 0, void 0, function* () {
23
+ const parsedRecord = JSON.parse(record.body);
24
+ return (0, quidproquo_core_1.actionResult)({
25
+ message: {
26
+ type: parsedRecord.type,
27
+ payload: parsedRecord.payload,
28
+ },
29
+ });
30
+ });
31
+ };
32
+ const getProcessTransformResponseResult = (configs) => {
33
+ return ({ response }) => __awaiter(void 0, void 0, void 0, function* () {
34
+ return (0, quidproquo_core_1.actionResult)(response);
35
+ });
36
+ };
37
+ const getProcessAutoRespond = () => {
38
+ return (payload) => __awaiter(void 0, void 0, void 0, function* () {
39
+ return (0, quidproquo_core_1.actionResult)(null);
40
+ });
41
+ };
42
+ const getProcessMatchStory = (qpqConfig) => {
43
+ const queueQPQConfigSetting = (0, exports.getQueueConfigSetting)();
44
+ return (payload) => __awaiter(void 0, void 0, void 0, function* () {
45
+ const queueQueueProcessors = quidproquo_core_1.qpqCoreUtils.getQueueQueueProcessors(queueQPQConfigSetting.name, qpqConfig);
46
+ const queueTypes = Object.keys(queueQueueProcessors).sort();
47
+ // Find the most relevant match
48
+ const matchedQueueType = queueTypes
49
+ .map((qt) => ({
50
+ match: (0, awsLambdaUtils_1.matchUrl)(qt, payload.transformedEventParams.message.type),
51
+ queueType: qt,
52
+ }))
53
+ .find((m) => m.match.didMatch);
54
+ if (!matchedQueueType) {
55
+ return (0, quidproquo_core_1.actionResultError)(quidproquo_core_1.ErrorTypeEnum.NotFound, `queue type not found ${payload.transformedEventParams.message.type}`);
56
+ }
57
+ const sourceEntry = queueQueueProcessors[matchedQueueType.queueType];
58
+ return (0, quidproquo_core_1.actionResult)({
59
+ src: sourceEntry.src,
60
+ runtime: sourceEntry.runtime,
61
+ options: matchedQueueType.match.params || {},
62
+ });
63
+ });
64
+ };
65
+ exports.default = (qpqConfig) => {
66
+ return {
67
+ [quidproquo_core_1.EventActionType.TransformEventParams]: getProcessTransformEventParams(qpqConfig),
68
+ [quidproquo_core_1.EventActionType.TransformResponseResult]: getProcessTransformResponseResult(qpqConfig),
69
+ [quidproquo_core_1.EventActionType.AutoRespond]: getProcessAutoRespond(),
70
+ [quidproquo_core_1.EventActionType.MatchStory]: getProcessMatchStory(qpqConfig),
71
+ };
72
+ };
@@ -3,6 +3,8 @@ export { default as getConfigGetParameterActionProcessor } from './config/getCon
3
3
  export { default as getConfigGetParametersActionProcessor } from './config/getConfigGetParametersActionProcessor';
4
4
  export { default as getAPIGatewayEventActionProcessor } from './event/getAPIGatewayEventActionProcessor';
5
5
  export { default as getCloudFrontOriginRequestEventActionProcessor } from './event/getCloudFrontOriginRequestEventActionProcessor';
6
+ export { default as getSQSEventRecordActionProcessor } from './event/getSQSEventRecordActionProcessor';
6
7
  export { default as getEventBridgeEventActionProcessor } from './event/getEventBridgeEventActionProcessor';
7
8
  export { default as getSystemActionProcessor } from './system';
8
9
  export { default as getFileActionProcessor } from './file';
10
+ export { default as getQueueActionProcessor } from './queue';
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.getFileActionProcessor = exports.getSystemActionProcessor = exports.getEventBridgeEventActionProcessor = exports.getCloudFrontOriginRequestEventActionProcessor = exports.getAPIGatewayEventActionProcessor = exports.getConfigGetParametersActionProcessor = exports.getConfigGetParameterActionProcessor = exports.getConfigGetSecretActionProcessor = void 0;
6
+ exports.getQueueActionProcessor = exports.getFileActionProcessor = exports.getSystemActionProcessor = exports.getEventBridgeEventActionProcessor = exports.getSQSEventRecordActionProcessor = exports.getCloudFrontOriginRequestEventActionProcessor = exports.getAPIGatewayEventActionProcessor = exports.getConfigGetParametersActionProcessor = exports.getConfigGetParameterActionProcessor = exports.getConfigGetSecretActionProcessor = void 0;
7
7
  var getConfigGetSecretActionProcessor_1 = require("./config/getConfigGetSecretActionProcessor");
8
8
  Object.defineProperty(exports, "getConfigGetSecretActionProcessor", { enumerable: true, get: function () { return __importDefault(getConfigGetSecretActionProcessor_1).default; } });
9
9
  var getConfigGetParameterActionProcessor_1 = require("./config/getConfigGetParameterActionProcessor");
@@ -14,9 +14,13 @@ var getAPIGatewayEventActionProcessor_1 = require("./event/getAPIGatewayEventAct
14
14
  Object.defineProperty(exports, "getAPIGatewayEventActionProcessor", { enumerable: true, get: function () { return __importDefault(getAPIGatewayEventActionProcessor_1).default; } });
15
15
  var getCloudFrontOriginRequestEventActionProcessor_1 = require("./event/getCloudFrontOriginRequestEventActionProcessor");
16
16
  Object.defineProperty(exports, "getCloudFrontOriginRequestEventActionProcessor", { enumerable: true, get: function () { return __importDefault(getCloudFrontOriginRequestEventActionProcessor_1).default; } });
17
+ var getSQSEventRecordActionProcessor_1 = require("./event/getSQSEventRecordActionProcessor");
18
+ Object.defineProperty(exports, "getSQSEventRecordActionProcessor", { enumerable: true, get: function () { return __importDefault(getSQSEventRecordActionProcessor_1).default; } });
17
19
  var getEventBridgeEventActionProcessor_1 = require("./event/getEventBridgeEventActionProcessor");
18
20
  Object.defineProperty(exports, "getEventBridgeEventActionProcessor", { enumerable: true, get: function () { return __importDefault(getEventBridgeEventActionProcessor_1).default; } });
19
21
  var system_1 = require("./system");
20
22
  Object.defineProperty(exports, "getSystemActionProcessor", { enumerable: true, get: function () { return __importDefault(system_1).default; } });
21
23
  var file_1 = require("./file");
22
24
  Object.defineProperty(exports, "getFileActionProcessor", { enumerable: true, get: function () { return __importDefault(file_1).default; } });
25
+ var queue_1 = require("./queue");
26
+ Object.defineProperty(exports, "getQueueActionProcessor", { enumerable: true, get: function () { return __importDefault(queue_1).default; } });
@@ -0,0 +1,6 @@
1
+ import { QPQConfig } from 'quidproquo-core';
2
+ import { QueueSendMessageActionProcessor } from 'quidproquo-core';
3
+ declare const _default: (qpqConfig: QPQConfig) => {
4
+ "@quidproquo-core/Queue/SendMessage": QueueSendMessageActionProcessor<any>;
5
+ };
6
+ export default _default;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const quidproquo_core_1 = require("quidproquo-core");
13
+ const qpqAwsLambdaRuntimeConfigUtils_1 = require("../../../runtimeConfig/qpqAwsLambdaRuntimeConfigUtils");
14
+ const quidproquo_core_2 = require("quidproquo-core");
15
+ const sendMessages_1 = require("../../../logic/sqs/sendMessages");
16
+ const getProcessQueueSendMessage = (qpqConfig) => {
17
+ return ({ queueName, queueMessages }) => __awaiter(void 0, void 0, void 0, function* () {
18
+ // While we have some uuids
19
+ const sqsQueueName = (0, qpqAwsLambdaRuntimeConfigUtils_1.resolveResourceName)(queueName, qpqConfig);
20
+ yield (0, sendMessages_1.sendMessages)(sqsQueueName, quidproquo_core_1.qpqCoreUtils.getApplicationModuleDeployRegion(qpqConfig), queueMessages.map((message) => JSON.stringify(message)));
21
+ return (0, quidproquo_core_2.actionResult)(void 0);
22
+ });
23
+ };
24
+ exports.default = (qpqConfig) => ({
25
+ [quidproquo_core_2.QueueActionType.SendMessages]: getProcessQueueSendMessage(qpqConfig),
26
+ });
@@ -0,0 +1,5 @@
1
+ import { QPQConfig } from 'quidproquo-core';
2
+ declare const _default: (qpqConfig: QPQConfig) => {
3
+ "@quidproquo-core/Queue/SendMessage": import("quidproquo-core").QueueSendMessageActionProcessor<any>;
4
+ };
5
+ export default _default;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const getQueueSendMessageActionProcessor_1 = __importDefault(require("./getQueueSendMessageActionProcessor"));
7
+ exports.default = (qpqConfig) => (Object.assign({}, (0, getQueueSendMessageActionProcessor_1.default)(qpqConfig)));
@@ -0,0 +1,2 @@
1
+ import { SQSClient } from '@aws-sdk/client-sqs';
2
+ export declare const getQueueUrl: (queueName: string, sqsClient: SQSClient) => Promise<string>;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.getQueueUrl = void 0;
13
+ const client_sqs_1 = require("@aws-sdk/client-sqs");
14
+ const getQueueUrl = (queueName, sqsClient) => __awaiter(void 0, void 0, void 0, function* () {
15
+ const response = yield sqsClient.send(new client_sqs_1.GetQueueUrlCommand({
16
+ QueueName: queueName,
17
+ }));
18
+ return response.QueueUrl || '';
19
+ });
20
+ exports.getQueueUrl = getQueueUrl;
@@ -0,0 +1 @@
1
+ export declare const sendMessages: (queueName: string, region: string, messages: string[]) => Promise<void>;
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.sendMessages = void 0;
13
+ const client_sqs_1 = require("@aws-sdk/client-sqs");
14
+ const getQueueUrl_1 = require("./getQueueUrl");
15
+ const sendMessages = (queueName, region, messages) => __awaiter(void 0, void 0, void 0, function* () {
16
+ const sqsClient = new client_sqs_1.SQSClient({
17
+ region,
18
+ });
19
+ const url = yield (0, getQueueUrl_1.getQueueUrl)(queueName, sqsClient);
20
+ // Convert them to entries
21
+ const entries = messages.map((message, index) => ({
22
+ MessageBody: message,
23
+ Id: `${index}`,
24
+ }));
25
+ // now send them off in batches of 10
26
+ // We want to await incase of FIFO
27
+ // If you don't care about order, you can split and askParallel outside of this
28
+ while (entries.length > 0) {
29
+ // Max batch size is 10
30
+ const entriesBatch = entries.splice(0, 10);
31
+ yield sqsClient.send(new client_sqs_1.SendMessageBatchCommand({
32
+ Entries: entriesBatch,
33
+ QueueUrl: url,
34
+ }));
35
+ }
36
+ });
37
+ exports.sendMessages = sendMessages;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "quidproquo-actionprocessor-awslambda",
3
- "version": "0.0.69",
3
+ "version": "0.0.71",
4
4
  "description": "",
5
5
  "main": "./lib/index.js",
6
6
  "types": "./lib/index.d.js",
@@ -27,6 +27,7 @@
27
27
  "dependencies": {
28
28
  "@aws-sdk/client-s3": "^3.266.0",
29
29
  "@aws-sdk/client-secrets-manager": "^3.266.0",
30
+ "@aws-sdk/client-sqs": "^3.266.1",
30
31
  "@aws-sdk/client-ssm": "^3.266.0",
31
32
  "aws-sdk": "^2.1264.0",
32
33
  "node-match-path": "^0.6.3",