UNPKG

cdk-amazon-chime-resources

Version:

![Experimental](https://img.shields.io/badge/experimental-important.svg?style=for-the-badge)

115 lines 15.3 kB
"use strict"; 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