@cn-shell/aws-utils
Version:
A Cloud Native extension for AWS
279 lines (278 loc) • 8.72 kB
JavaScript
;
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;