UNPKG

@cn-shell/aws-utils

Version:
279 lines (278 loc) 8.72 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? function(o, m, k, k2) { if (k2 === undefined) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; }, }); } : function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; }); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); } : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function(mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; var __importDefault = (this && this.__importDefault) || function(mod) { return mod && mod.__esModule ? mod : { default: mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.AWS_CongitoIdentityServiceProvider = exports.AWS_SESv2 = exports.AWS_S3 = exports.AWS_Firehose = exports.AWS_SecretsManager = exports.AWS_DDB = exports.AWS_SNS = exports.AWS_SQS = exports.Cognito = exports.SESv2 = exports.S3 = exports.Firehose = exports.Secrets = exports.DDB = exports.SNS = exports.SQS = exports.Utils = void 0; // imports here const cn_shell_1 = __importDefault(require("cn-shell")); const aws_base_1 = require("./aws-base"); const SQS = __importStar(require("./aws-sqs")); exports.SQS = SQS; const SNS = __importStar(require("./aws-sns")); exports.SNS = SNS; const DDB = __importStar(require("./aws-dynamodb")); exports.DDB = DDB; const Secrets = __importStar(require("./aws-secret")); exports.Secrets = Secrets; const Firehose = __importStar(require("./aws-firehose")); exports.Firehose = Firehose; const S3 = __importStar(require("./aws-s3")); exports.S3 = S3; const SESv2 = __importStar(require("./aws-ses")); exports.SESv2 = SESv2; const Cognito = __importStar(require("./aws-cognito")); exports.Cognito = Cognito; const sqs_1 = __importDefault(require("aws-sdk/clients/sqs")); exports.AWS_SQS = sqs_1.default; const sns_1 = __importDefault(require("aws-sdk/clients/sns")); exports.AWS_SNS = sns_1.default; const dynamodb_1 = __importDefault(require("aws-sdk/clients/dynamodb")); exports.AWS_DDB = dynamodb_1.default; const secretsmanager_1 = __importDefault( require("aws-sdk/clients/secretsmanager"), ); exports.AWS_SecretsManager = secretsmanager_1.default; const firehose_1 = __importDefault(require("aws-sdk/clients/firehose")); exports.AWS_Firehose = firehose_1.default; const s3_1 = __importDefault(require("aws-sdk/clients/s3")); exports.AWS_S3 = s3_1.default; const sesv2_1 = __importDefault(require("aws-sdk/clients/sesv2")); exports.AWS_SESv2 = sesv2_1.default; const cognitoidentityserviceprovider_1 = __importDefault( require("aws-sdk/clients/cognitoidentityserviceprovider"), ); exports.AWS_CongitoIdentityServiceProvider = cognitoidentityserviceprovider_1.default; const fs = __importStar(require("fs")); // Class AwsUtils here class Utils extends cn_shell_1.default { // Constructor here constructor(name) { super(name); this._queues = new Map(); this._topics = new Map(); this._firehoseStreams = new Map(); } // Methods here async start() { for (let [name, queue] of this._queues.entries()) { this.info(`Starting queue ${name} ...`); if (queue instanceof SQS.Receiver) { queue.start(); } this.info("Started!"); } return true; } async stop() { for (let [name, queue] of this._queues.entries()) { this.info(`Stopping queue ${name} ...`); if (queue instanceof SQS.Receiver) { await queue.stop(); } this.info("Stopped!"); } } async healthCheck() { return true; } addSqsSender(name, opts) { if (this._queues.has(name)) { throw new Error( `addSqsSender: Queue with the name ${name} already exists!`, ); } let queue = new SQS.Sender(name, opts); this.info(`Adding SQS Sender: ${name}`); this._queues.set(name, queue); return queue; } addSqsReceiver(name, opts) { if (this._queues.has(name)) { throw new Error( `addSqsReceiver: Queue with the name ${name} already exists!`, ); } let queue = new SQS.Receiver(name, opts); this.info(`Adding SQS Receiver: ${name}`); this._queues.set(name, queue); return queue; } addSnsTopic(name, opts) { if (this._topics.has(name)) { throw new Error( `addSnsTopic: Topic with the name ${name} already exists!`, ); } let sns = new SNS.Topic(name, opts); this.info(`Adding SNS Topic: ${name}`); this._topics.set(name, sns); return sns; } addFirehoseStream(name, opts) { if (this._firehoseStreams.has(name)) { throw new Error( `addFirehoseStream: Stream with the name ${name} already exists!`, ); } let fhStream = new Firehose.FirehoseStream(name, opts); this.info(`Adding Firehose Stream: ${name}`); this._firehoseStreams.set(name, fhStream); return fhStream; } startRecording(playbackFile) { for (let [, queue] of this._queues.entries()) { queue.startRecording(playbackFile); } for (let [, topic] of this._topics.entries()) { topic.startRecording(playbackFile); } for (let [, stream] of this._firehoseStreams.entries()) { stream.startRecording(playbackFile); } } startRecordingSqsReceivers(playbackFile) { for (let [, queue] of this._queues.entries()) { if (queue instanceof SQS.Receiver) { queue.startRecording(playbackFile); } } } startRecordingSqsSenders(playbackFile) { for (let [, queue] of this._queues.entries()) { if (queue instanceof SQS.Sender) { queue.startRecording(playbackFile); } } } startRecordingSns(playbackFile) { for (let [, topic] of this._topics.entries()) { topic.startRecording(playbackFile); } } startRecordingFirehoseStreams(playbackFile) { for (let [, stream] of this._firehoseStreams.entries()) { stream.startRecording(playbackFile); } } stopRecording() { for (let [, queue] of this._queues.entries()) { queue.stopRecording(); } for (let [, topic] of this._topics.entries()) { topic.stopRecording(); } for (let [, stream] of this._firehoseStreams.entries()) { stream.stopRecording(); } } stopRecordingSqsReceivers() { for (let [, queue] of this._queues.entries()) { if (queue instanceof SQS.Receiver) { queue.stopRecording(); } } } stopRecordingSqsSenders() { for (let [, queue] of this._queues.entries()) { if (queue instanceof SQS.Sender) { queue.stopRecording(); } } } stopRecordingSns() { for (let [, topic] of this._topics.entries()) { topic.stopRecording(); } } stopRecordingFirehoseStreams() { for (let [, stream] of this._firehoseStreams.entries()) { stream.stopRecording(); } } replayRecordings(playbackFile) { let fd = fs.openSync(playbackFile, "r"); let line = 1; while (true) { let record = aws_base_1.Base.replayPlayback(fd, line); line++; if (record === null) { break; } if ( record.type === aws_base_1.Base.RecordTypes.SQS_SENDER || record.type === aws_base_1.Base.RecordTypes.SQS_RECEIVER ) { let queue = this._queues.get(record.name); if (queue === undefined) { continue; } if ( record.type === aws_base_1.Base.RecordTypes.SQS_SENDER && queue instanceof SQS.Sender ) { queue.injectMessage(record.msg); } else if ( record.type === aws_base_1.Base.RecordTypes.SQS_RECEIVER && queue instanceof SQS.Receiver ) { queue.injectMessages(record.msg); } } else if (record.type === aws_base_1.Base.RecordTypes.SNS) { let topic = this._topics.get(record.name); if (topic === undefined) { continue; } topic.injectMessage(record.msg); } else if (record.type === aws_base_1.Base.RecordTypes.FHS) { let stream = this._firehoseStreams.get(record.name); if (stream === undefined) { continue; } stream.injectMessage(record.msg); } } fs.closeSync(fd); } } exports.Utils = Utils;