cdk-amazon-chime-resources
Version:

115 lines • 15.3 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.DeleteChannelFlow = exports.UpdateChannelFlow = exports.CreateChannelFlow = exports.FallbackAction = exports.InvocationType = void 0;
/* eslint-disable import/no-extraneous-dependencies */
const client_chime_sdk_messaging_1 = require("@aws-sdk/client-chime-sdk-messaging");
const client_ssm_1 = require("@aws-sdk/client-ssm");
const chimeSDKMessagingClient = new client_chime_sdk_messaging_1.ChimeSDKMessagingClient({
region: process.env.AWS_REGION,
});
const ssmClient = new client_ssm_1.SSMClient({ region: process.env.AWS_REGION });
var InvocationType;
(function (InvocationType) {
InvocationType["ASYNC"] = "ASYNC";
})(InvocationType || (exports.InvocationType = InvocationType = {}));
var FallbackAction;
(function (FallbackAction) {
FallbackAction["CONTINUE"] = "CONTINUE";
FallbackAction["ABORT"] = "ABORT";
})(FallbackAction || (exports.FallbackAction = FallbackAction = {}));
const CreateChannelFlow = async (uid, props) => {
try {
const createChannelFlowCommandOutput = await chimeSDKMessagingClient.send(new client_chime_sdk_messaging_1.CreateChannelFlowCommand({
AppInstanceArn: props.appInstanceArn,
Name: props.name,
ClientRequestToken: props.clientRequestToken,
Tags: getUpdatedTags(props.tags),
Processors: getUpdatedProcessors(props.processors),
}));
await saveChannelFlowArnToSsm(uid, createChannelFlowCommandOutput.ChannelFlowArn);
return {
channelFlowArn: createChannelFlowCommandOutput.ChannelFlowArn,
};
}
catch (error) {
if (error instanceof Error) {
console.error(error);
throw error;
}
}
return {};
};
exports.CreateChannelFlow = CreateChannelFlow;
const UpdateChannelFlow = async (uid, props) => {
try {
const channelFlowArn = await getExistingChannelFlowArnFromSsm(uid);
const updateChannelFlowCommandOutput = await chimeSDKMessagingClient.send(new client_chime_sdk_messaging_1.UpdateChannelFlowCommand({
ChannelFlowArn: channelFlowArn,
Name: props.name,
Processors: getUpdatedProcessors(props.processors),
}));
return {
channelFlowArn: updateChannelFlowCommandOutput.ChannelFlowArn,
};
}
catch (error) {
console.error(error);
throw error;
}
};
exports.UpdateChannelFlow = UpdateChannelFlow;
const DeleteChannelFlow = async (uid) => {
try {
const channelFlowArn = await getExistingChannelFlowArnFromSsm(uid);
await chimeSDKMessagingClient.send(new client_chime_sdk_messaging_1.DeleteChannelFlowCommand({
ChannelFlowArn: channelFlowArn,
}));
await deleteChannelFlowArnFromSsm(uid);
}
catch (error) {
if (error instanceof Error) {
console.error(error);
throw error;
}
}
};
exports.DeleteChannelFlow = DeleteChannelFlow;
const saveChannelFlowArnToSsm = async (uid, channelFlowArn) => {
return ssmClient.send(new client_ssm_1.PutParameterCommand({
Name: `/chime/channelFlowArn/${uid}`,
Description: 'channelFlowArn',
Value: channelFlowArn,
Overwrite: true,
Type: 'String',
}));
};
const getExistingChannelFlowArnFromSsm = async (uid) => {
const getParameterCommandOutput = await ssmClient.send(new client_ssm_1.GetParameterCommand({ Name: `/chime/channelFlowArn/${uid}` }));
return getParameterCommandOutput.Parameter?.Value;
};
const deleteChannelFlowArnFromSsm = async (uid) => {
return ssmClient.send(new client_ssm_1.DeleteParameterCommand({ Name: `/chime/channelFlowArn/${uid}` }));
};
const getUpdatedProcessors = (processors) => {
return processors?.map(getUpdatedProcessor) || [];
};
const getUpdatedProcessor = (processor) => {
return {
Name: processor.name,
ExecutionOrder: parseInt(processor.executionOrder),
FallbackAction: processor.fallbackAction,
Configuration: {
Lambda: {
ResourceArn: processor.configuration.lambda.resourceArn,
InvocationType: processor.configuration.lambda.invocationType,
},
},
};
};
const getUpdatedTags = (tags) => {
return tags?.map(getUpdatedTag);
};
const getUpdatedTag = (tag) => {
return { Key: tag.key, Value: tag.value };
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbm5lbEZsb3cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcmVzb3VyY2VzL21lc3NhZ2luZy9jaGFubmVsRmxvdy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxzREFBc0Q7QUFDdEQsb0ZBSzZDO0FBRTdDLG9EQUs2QjtBQUU3QixNQUFNLHVCQUF1QixHQUFHLElBQUksb0RBQXVCLENBQUM7SUFDMUQsTUFBTSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVTtDQUMvQixDQUFDLENBQUM7QUFFSCxNQUFNLFNBQVMsR0FBRyxJQUFJLHNCQUFTLENBQUMsRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO0FBRXBFLElBQVksY0FFWDtBQUZELFdBQVksY0FBYztJQUN4QixpQ0FBZSxDQUFBO0FBQ2pCLENBQUMsRUFGVyxjQUFjLDhCQUFkLGNBQWMsUUFFekI7QUFFRCxJQUFZLGNBR1g7QUFIRCxXQUFZLGNBQWM7SUFDeEIsdUNBQXFCLENBQUE7SUFDckIsaUNBQWUsQ0FBQTtBQUNqQixDQUFDLEVBSFcsY0FBYyw4QkFBZCxjQUFjLFFBR3pCO0FBNkJNLE1BQU0saUJBQWlCLEdBQUcsS0FBSyxFQUNwQyxHQUFXLEVBQ1gsS0FBNkIsRUFDN0IsRUFBRTtJQUNGLElBQUksQ0FBQztRQUNILE1BQU0sOEJBQThCLEdBQUcsTUFBTSx1QkFBdUIsQ0FBQyxJQUFJLENBQ3ZFLElBQUkscURBQXdCLENBQUM7WUFDM0IsY0FBYyxFQUFFLEtBQUssQ0FBQyxjQUFjO1lBQ3BDLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtZQUNoQixrQkFBa0IsRUFBRSxLQUFLLENBQUMsa0JBQWtCO1lBQzVDLElBQUksRUFBRSxjQUFjLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQztZQUNoQyxVQUFVLEVBQUUsb0JBQW9CLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQztTQUNuRCxDQUFD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QUFLLEVBQUUsR0FBVyxFQUFFLEVBQUU7SUFDeEQsT0FBTyxTQUFTLENBQUMsSUFBSSxDQUNuQixJQUFJLG1DQUFzQixDQUFDLEVBQUUsSUFBSSxFQUFFLHlCQUF5QixHQUFHLEVBQUUsRUFBRSxDQUFDLENBQ3JFLENBQUM7QUFDSixDQUFDLENBQUM7QUFFRixNQUFNLG9CQUFvQixHQUFHLENBQUMsVUFBd0MsRUFBRSxFQUFFO0lBQ3hFLE9BQU8sVUFBVSxFQUFFLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNwRCxDQUFDLENBQUM7QUFFRixNQUFNLG1CQUFtQixHQUFHLENBQUMsU0FBeUIsRUFBRSxFQUFFO0lBQ3hELE9BQU87UUFDTCxJQUFJLEVBQUUsU0FBUyxDQUFDLElBQUk7UUFDcEIsY0FBYyxFQUFFLFFBQVEsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDO1FBQ2xELGNBQWMsRUFBRSxTQUFTLENBQUMsY0FBYztRQUN4QyxhQUFhLEVBQUU7WUFDYixNQUFNLEVBQUU7Z0JBQ04sV0FBVyxFQUFFLFNBQVMsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLFdBQVc7Z0JBQ3ZELGNBQWMsRUFBRSxTQUFTLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxjQUFjO2FBQzlEO1NBQ0Y7S0FDRixDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsTUFBTSxjQUFjLEdBQUcsQ0FBQyxJQUF3QixFQUFFLEVBQUU7SUFDbEQsT0FBTyxJQUFJLEVBQUUsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBQ2xDLENBQUMsQ0FBQztBQUVGLE1BQU0sYUFBYSxHQUFHLENBQUMsR0FBUyxFQUFFLEVBQUU7SUFDbEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDNUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzICovXG5pbXBvcnQge1xuICBDaGltZVNES01lc3NhZ2luZ0NsaWVudCxcbiAgQ3JlYXRlQ2hhbm5lbEZsb3dDb21tYW5kLFxuICBEZWxldGVDaGFubmVsRmxvd0NvbW1hbmQsXG4gIFVwZGF0ZUNoYW5uZWxGbG93Q29tbWFuZCxcbn0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWNoaW1lLXNkay1tZXNzYWdpbmcnO1xuXG5pbXBvcnQge1xuICBTU01DbGllbnQsXG4gIERlbGV0ZVBhcmFtZXRlckNvbW1hbmQsXG4gIEdldFBhcmFtZXRlckNvbW1hbmQsXG4gIFB1dFBhcmFtZXRlckNvbW1hbmQsXG59IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1zc20nO1xuXG5jb25zdCBjaGltZVNES01lc3NhZ2luZ0NsaWVudCA9IG5ldyBDaGltZVNES01lc3NhZ2luZ0NsaWVudCh7XG4gIHJlZ2lvbjogcHJvY2Vzcy5lbnYuQVdTX1JFR0lPTixcbn0pO1xuXG5jb25zdCBzc21DbGllbnQgPSBuZXcgU1NNQ2xpZW50KHsgcmVnaW9uOiBwcm9jZXNzLmVudi5BV1NfUkVHSU9OIH0pO1xuXG5leHBvcnQgZW51bSBJbnZvY2F0aW9uVHlwZSB7XG4gIEFTWU5DID0gJ0FTWU5DJyxcbn1cblxuZXhwb3J0IGVudW0gRmFsbGJhY2tBY3Rpb24ge1xuICBDT05USU5VRSA9ICdDT05USU5VRScsXG4gIEFCT1JUID0gJ0FCT1JUJyxcbn1cblxuaW50ZXJmYWNlIFRhZ3Mge1xuICBrZXk6IHN0cmluZztcbiAgdmFsdWU6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIENvbmZpZ3VyYXRpb25Qcm9wcyB7XG4gIGxhbWJkYToge1xuICAgIHJlc291cmNlQXJuOiBzdHJpbmc7XG4gICAgaW52b2NhdGlvblR5cGU6IEludm9jYXRpb25UeXBlO1xuICB9O1xufVxuXG5pbnRlcmZhY2UgUHJvY2Vzc29yUHJvcHMge1xuICBjb25maWd1cmF0aW9uOiBDb25maWd1cmF0aW9uUHJvcHM7XG4gIGV4ZWN1dGlvbk9yZGVyOiBzdHJpbmc7XG4gIGZhbGxiYWNrQWN0aW9uOiBGYWxsYmFja0FjdGlvbjtcbiAgbmFtZTogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgQ3JlYXRlQ2hhbm5lbEZsb3dQcm9wcyB7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIGNsaWVudFJlcXVlc3RUb2tlbj86IHN0cmluZztcbiAgYXBwSW5zdGFuY2VBcm4/OiBzdHJpbmc7XG4gIHRhZ3M/OiBUYWdzW107XG4gIHByb2Nlc3NvcnM/OiBQcm9jZXNzb3JQcm9wc1tdO1xufVxuXG5leHBvcnQgY29uc3QgQ3JlYXRlQ2hhbm5lbEZsb3cgPSBhc3luYyAoXG4gIHVpZDogc3RyaW5nLFxuICBwcm9wczogQ3JlYXRlQ2hhbm5lbEZsb3dQcm9wcyxcbikgPT4ge1xuICB0cnkge1xuICAgIGNvbnN0IGNyZWF0ZUNoYW5uZWxGbG93Q29tbWFuZE91dHB1dCA9IGF3YWl0IGNoaW1lU0RLTWVzc2FnaW5nQ2xpZW50LnNlbmQoXG4gICAgICBuZXcgQ3JlYXRlQ2hhbm5lbEZsb3dDb21tYW5kKHtcbiAgICAgICAgQXBwSW5zdGFuY2VBcm46IHByb3BzLmFwcEluc3RhbmNlQXJuLFxuICAgICAgICBOYW1lOiBwcm9wcy5uYW1lLFxuICAgICAgICBDbGllbnRSZXF1ZXN0VG9rZW46IHByb3BzLmNsaWVudFJlcXVlc3RUb2tlbixcbiAgICAgICAgVGFnczogZ2V0VXBkYXRlZFRhZ3MocHJvcHMudGFncyksXG4gICAgICAgIFByb2Nlc3NvcnM6IGdldFVwZGF0ZWRQcm9jZXNzb3JzKHByb3BzLnByb2Nlc3NvcnMpLFxuICAgICAgfSksXG4gICAgKTtcblxuICAgIGF3YWl0IHNhdmVDaGFubmVsRmxvd0FyblRvU3NtKHVpZCwgY3JlYXRlQ2hhbm5lbEZsb3dDb21tYW5kT3V0cHV0LkNoYW5uZWxGbG93QXJuKTtcblxuICAgIHJldHVybiB7XG4gICAgICBjaGFubmVsRmxvd0FybjogY3JlYXRlQ2hhbm5lbEZsb3dDb21tYW5kT3V0cHV0LkNoYW5uZWxGbG93QXJuLFxuICAgIH07XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG4gIHJldHVybiB7fTtcbn07XG5cbmV4cG9ydCBjb25zdCBVcGRhdGVDaGFubmVsRmxvdyA9IGFzeW5jIChcbiAgdWlkOiBzdHJpbmcsXG4gIHByb3BzOiBDcmVhdGVDaGFubmVsRmxvd1Byb3BzLFxuKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgY2hhbm5lbEZsb3dBcm4gPSBhd2FpdCBnZXRFeGlzdGluZ0NoYW5uZWxGbG93QXJuRnJvbVNzbSh1aWQpO1xuXG4gICAgY29uc3QgdXBkYXRlQ2hhbm5lbEZsb3dDb21tYW5kT3V0cHV0ID0gYXdhaXQgY2hpbWVTREtNZXNzYWdpbmdDbGllbnQuc2VuZChcbiAgICAgIG5ldyBVcGRhdGVDaGFubmVsRmxvd0NvbW1hbmQoe1xuICAgICAgICBDaGFubmVsRmxvd0FybjogY2hhbm5lbEZsb3dBcm4sXG4gICAgICAgIE5hbWU6IHByb3BzLm5hbWUsXG4gICAgICAgIFByb2Nlc3NvcnM6IGdldFVwZGF0ZWRQcm9jZXNzb3JzKHByb3BzLnByb2Nlc3NvcnMpLFxuICAgICAgfSksXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICBjaGFubmVsRmxvd0FybjogdXBkYXRlQ2hhbm5lbEZsb3dDb21tYW5kT3V0cHV0LkNoYW5uZWxGbG93QXJuLFxuICAgIH07XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBEZWxldGVDaGFubmVsRmxvdyA9IGFzeW5jICh1aWQ6IHN0cmluZykgPT4ge1xuICB0cnkge1xuICAgIGNvbnN0IGNoYW5uZWxGbG93QXJuID0gYXdhaXQgZ2V0RXhpc3RpbmdDaGFubmVsRmxvd0FybkZyb21Tc20odWlkKTtcblxuICAgIGF3YWl0IGNoaW1lU0RLTWVzc2FnaW5nQ2xpZW50LnNlbmQoXG4gICAgICBuZXcgRGVsZXRlQ2hhbm5lbEZsb3dDb21tYW5kKHtcbiAgICAgICAgQ2hhbm5lbEZsb3dBcm46IGNoYW5uZWxGbG93QXJuLFxuICAgICAgfSksXG4gICAgKTtcblxuICAgIGF3YWl0IGRlbGV0ZUNoYW5uZWxGbG93QXJuRnJvbVNzbSh1aWQpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfVxufTtcblxuY29uc3Qgc2F2ZUNoYW5uZWxGbG93QXJuVG9Tc20gPSBhc3luYyAodWlkOiBzdHJpbmcsIGNoYW5uZWxGbG93QXJuPzogc3RyaW5nKSA9PiB7XG4gIHJldHVybiBzc21DbGllbnQuc2VuZChcbiAgICBuZXcgUHV0UGFyYW1ldGVyQ29tbWFuZCh7XG4gICAgICBOYW1lOiBgL2NoaW1lL2NoYW5uZWxGbG93QXJuLyR7dWlkfWAsXG4gICAgICBEZXNjcmlwdGlvbjogJ2NoYW5uZWxGbG93QXJuJyxcbiAgICAgIFZhbHVlOiBjaGFubmVsRmxvd0FybixcbiAgICAgIE92ZXJ3cml0ZTogdHJ1ZSxcbiAgICAgIFR5cGU6ICdTdHJpbmcnLFxuICAgIH0pLFxuICApO1xufTtcblxuY29uc3QgZ2V0RXhpc3RpbmdDaGFubmVsRmxvd0FybkZyb21Tc20gPSBhc3luYyAodWlkOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4gPT4ge1xuICBjb25zdCBnZXRQYXJhbWV0ZXJDb21tYW5kT3V0cHV0ID0gYXdhaXQgc3NtQ2xpZW50LnNlbmQoXG4gICAgbmV3IEdldFBhcmFtZXRlckNvbW1hbmQoeyBOYW1lOiBgL2NoaW1lL2NoYW5uZWxGbG93QXJuLyR7dWlkfWAgfSksXG4gICk7XG4gIHJldHVybiBnZXRQYXJhbWV0ZXJDb21tYW5kT3V0cHV0LlBhcmFtZXRlcj8uVmFsdWU7XG59O1xuXG5jb25zdCBkZWxldGVDaGFubmVsRmxvd0FybkZyb21Tc20gPSBhc3luYyAodWlkOiBzdHJpbmcpID0+IHtcbiAgcmV0dXJuIHNzbUNsaWVudC5zZW5kKFxuICAgIG5ldyBEZWxldGVQYXJhbWV0ZXJDb21tYW5kKHsgTmFtZTogYC9jaGltZS9jaGFubmVsRmxvd0Fybi8ke3VpZH1gIH0pLFxuICApO1xufTtcblxuY29uc3QgZ2V0VXBkYXRlZFByb2Nlc3NvcnMgPSAocHJvY2Vzc29yczogUHJvY2Vzc29yUHJvcHNbXSB8IHVuZGVmaW5lZCkgPT4ge1xuICByZXR1cm4gcHJvY2Vzc29ycz8ubWFwKGdldFVwZGF0ZWRQcm9jZXNzb3IpIHx8IFtdO1xufTtcblxuY29uc3QgZ2V0VXBkYXRlZFByb2Nlc3NvciA9IChwcm9jZXNzb3I6IFByb2Nlc3NvclByb3BzKSA9PiB7XG4gIHJldHVybiB7XG4gICAgTmFtZTogcHJvY2Vzc29yLm5hbWUsXG4gICAgRXhlY3V0aW9uT3JkZXI6IHBhcnNlSW50KHByb2Nlc3Nvci5leGVjdXRpb25PcmRlciksXG4gICAgRmFsbGJhY2tBY3Rpb246IHByb2Nlc3Nvci5mYWxsYmFja0FjdGlvbixcbiAgICBDb25maWd1cmF0aW9uOiB7XG4gICAgICBMYW1iZGE6IHtcbiAgICAgICAgUmVzb3VyY2VBcm46IHByb2Nlc3Nvci5jb25maWd1cmF0aW9uLmxhbWJkYS5yZXNvdXJjZUFybixcbiAgICAgICAgSW52b2NhdGlvblR5cGU6IHByb2Nlc3Nvci5jb25maWd1cmF0aW9uLmxhbWJkYS5pbnZvY2F0aW9uVHlwZSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfTtcbn07XG5cbmNvbnN0IGdldFVwZGF0ZWRUYWdzID0gKHRhZ3M6IFRhZ3NbXSB8IHVuZGVmaW5lZCkgPT4ge1xuICByZXR1cm4gdGFncz8ubWFwKGdldFVwZGF0ZWRUYWcpO1xufTtcblxuY29uc3QgZ2V0VXBkYXRlZFRhZyA9ICh0YWc6IFRhZ3MpID0+IHtcbiAgcmV0dXJuIHsgS2V5OiB0YWcua2V5LCBWYWx1ZTogdGFnLnZhbHVlIH07XG59O1xuIl19