cdk-amazon-chime-resources
Version:

90 lines • 16.4 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.mediaPipelinesInsightValidator = void 0;
function mediaPipelinesInsightValidator(props) {
if (props.elements) {
if (!props.elements.some((element) => element.amazonTranscribeCallAnalyticsProcessorConfiguration ||
element.amazonTranscribeProcessorConfiguration ||
element.voiceAnalyticsProcessorConfiguration ||
element.s3RecordingSinkConfiguration)) {
throw new Error('MediaInsightsPipeline elements must contain at least one of amazonTranscribeCallAnalyticsProcessorConfiguration, amazonTranscribeProcessorConfiguration, voiceAnalyticsProcessorConfiguration, or s3RecordingSinkConfiguration');
}
if (props.elements.some((element) => element.amazonTranscribeCallAnalyticsProcessorConfiguration ||
element.amazonTranscribeProcessorConfiguration ||
element.voiceAnalyticsProcessorConfiguration) &&
!props.elements.some((element) => element.kinesisDataStreamSinkConfiguration)) {
throw new Error('A kinesisDataStreamSinkConfiguration is required if amazonTranscribeCallAnalyticsProcessorConfiguration, amazonTranscribeProcessorConfiguration, or voiceAnalyticsProcessorConfiguration are used');
}
if (props.elements.some((element) => element.amazonTranscribeCallAnalyticsProcessorConfiguration) &&
props.elements.some((element) => element.amazonTranscribeProcessorConfiguration)) {
throw new Error('Element may only contain amazonTranscribeCallAnalyticsProcessorConfiguration or amazonTranscribeProcessorConfiguration');
}
// if (
// props.elements.some((element) => element.s3RecordingSinkConfiguration) &&
// props.elements.some(
// (element) =>
// element.amazonTranscribeProcessorConfiguration ||
// element.amazonTranscribeCallAnalyticsProcessorConfiguration ||
// element.voiceAnalyticsProcessorConfiguration,
// )
// ) {
// throw new Error(
// 's3RecordingSinkConfiguration cannot be used with amazonTranscribeProcessorConfiguration, amazonTranscribeCallAnalyticsProcessorConfiguration, or voiceAnalyticsProcessorConfiguration',
// );
// }
// if (
// props.elements.some((element) => element.s3RecordingSinkConfiguration) &&
// props.realTimeAlertConfiguration
// ) {
// throw new Error(
// 's3RecordingSinkConfiguration cannot be used with realTimeAlertConfiguration',
// );
// }
}
if (props.realTimeAlertConfiguration) {
if (props.realTimeAlertConfiguration.rules.length > 3) {
throw new Error('A maximum of three realTimeAlert rules are allowed');
}
props.realTimeAlertConfiguration.rules.forEach((rule) => {
if (rule.type == 'KeywordMatch' &&
!rule.keywordMatchConfiguration &&
(rule.issueDetectionConfiguration || rule.sentimentConfiguration)) {
throw new Error('KeywordMatch type requires keywordMatchConfiguration');
}
if (rule.type == 'Sentiment' &&
!rule.sentimentConfiguration &&
(rule.issueDetectionConfiguration || rule.keywordMatchConfiguration)) {
throw new Error('Sentiment type requires sentimentConfiguration');
}
if (rule.type == 'IssueDetection' &&
!rule.issueDetectionConfiguration &&
(rule.sentimentConfiguration || rule.keywordMatchConfiguration)) {
throw new Error('IssueDetection type requires issueDetectionConfiguration');
}
});
props.realTimeAlertConfiguration.rules.forEach((rule) => {
if ((rule.type == 'KeywordMatch' ||
rule.type == 'Sentiment' ||
rule.type == 'IssueDetection') &&
!(rule.issueDetectionConfiguration ||
rule.keywordMatchConfiguration ||
rule.sentimentConfiguration)) {
throw new Error('Rule type must contain configuration');
}
});
if (props.elements.some((element) => element.amazonTranscribeProcessorConfiguration ||
element.amazonTranscribeCallAnalyticsProcessorConfiguration)) {
if (props.elements.some((element) => element.amazonTranscribeProcessorConfiguration) &&
(props.realTimeAlertConfiguration.rules.some((rule) => rule.sentimentConfiguration) ||
props.realTimeAlertConfiguration.rules.some((rule) => rule.issueDetectionConfiguration))) {
throw new Error('amazonTranscribeProcessorConfiguration cannot use realTimeAlertConfiguration sentimentConfiguration or issueDetectionConfiguration');
}
}
else {
throw new Error('realTimeAlertConfiguration requires amazonTranscribeProcessorConfiguration or amazonTranscribeCallAnalyticsProcessorConfiguration');
}
}
return true;
}
exports.mediaPipelinesInsightValidator = mediaPipelinesInsightValidator;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWFJbnNpZ2h0c1BpcGVsaW5lVmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21lZGlhLXBpcGVsaW5lcy9tZWRpYUluc2lnaHRzUGlwZWxpbmVWYWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsU0FBZ0IsOEJBQThCLENBQzVDLEtBQWlDO0lBRWpDLElBQUksS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ25CLElBQ0UsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FDbEIsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUNWLE9BQU8sQ0FBQyxtREFBbUQ7WUFDM0QsT0FBTyxDQUFDLHNDQUFzQztZQUM5QyxPQUFPLENBQUMsb0NBQW9DO1lBQzVDLE9BQU8sQ0FBQyw0QkFBNEIsQ0FDdkMsRUFDRCxDQUFDO1lBQ0QsTUFBTSxJQUFJLEtBQUssQ0FDYixnT0FBZ08sQ0FDak8sQ0FBQztRQUNKLENBQUM7UUFFRCxJQUNFLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUNqQixDQUFDLE9BQU8sRUFBRSxFQUFFLENBQ1YsT0FBTyxDQUFDLG1EQUFtRDtZQUMzRCxPQUFPLENBQUMsc0NBQXNDO1lBQzlDLE9BQU8sQ0FBQyxvQ0FBb0MsQ0FDL0M7WUFDRCxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUNsQixDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLGtDQUFrQyxDQUN4RCxFQUNELENBQUM7WUFDRCxNQUFNLElBQUksS0FBSyxDQUNiLG1NQUFtTSxDQUNwTSxDQUFDO1FBQ0osQ0FBQztRQUVELElBQ0UsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ2pCLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FDVixPQUFPLENBQUMsbURBQW1ELENBQzlEO1lBQ0QsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQ2pCLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FB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QkFBc0IsQ0FDdEM7b0JBQ0MsS0FBSyxDQUFDLDBCQUEwQixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQ3pDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsMkJBQTJCLENBQzNDLENBQUMsRUFDSixDQUFDO2dCQUNELE1BQU0sSUFBSSxLQUFLLENBQ2Isb0lBQW9JLENBQ3JJLENBQUM7WUFDSixDQUFDO1FBQ0gsQ0FBQzthQUFNLENBQUM7WUFDTixNQUFNLElBQUksS0FBSyxDQUNiLG1JQUFtSSxDQUNwSSxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFuSkQsd0VBbUpDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWVkaWFJbnNpZ2h0c1BpcGVsaW5lUHJvcHMgfSBmcm9tICcuL21lZGlhSW5zaWdodHNQaXBlbGluZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBtZWRpYVBpcGVsaW5lc0luc2lnaHRWYWxpZGF0b3IoXG4gIHByb3BzOiBNZWRpYUluc2lnaHRzUGlwZWxpbmVQcm9wcyxcbikge1xuICBpZiAocHJvcHMuZWxlbWVudHMpIHtcbiAgICBpZiAoXG4gICAgICAhcHJvcHMuZWxlbWVudHMuc29tZShcbiAgICAgICAgKGVsZW1lbnQpID0+XG4gICAgICAgICAgZWxlbWVudC5hbWF6b25UcmFuc2NyaWJlQ2FsbEFuYWx5dGljc1Byb2Nlc3NvckNvbmZpZ3VyYXRpb24gfHxcbiAgICAgICAgICBlbGVtZW50LmFtYXpvblRyYW5zY3JpYmVQcm9jZXNzb3JDb25maWd1cmF0aW9uIHx8XG4gICAgICAgICAgZWxlbWVudC52b2ljZUFuYWx5dGljc1Byb2Nlc3NvckNvbmZpZ3VyYXRpb24gfHxcbiAgICAgICAgICBlbGVtZW50LnMzUmVjb3JkaW5nU2lua0NvbmZpZ3VyYXRpb24sXG4gICAgICApXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdNZWRpYUluc2lnaHRzUGlwZWxpbmUgZWxlbWVudHMgbXVzdCBjb250YWluIGF0IGxlYXN0IG9uZSBvZiBhbWF6b25UcmFuc2NyaWJlQ2FsbEFuYWx5dGljc1Byb2Nlc3NvckNvbmZpZ3VyYXRpb24sIGFtYXpvblRyYW5zY3JpYmVQcm9jZXNzb3JDb25maWd1cmF0aW9uLCB2b2ljZUFuYWx5dGljc1Byb2Nlc3NvckNvbmZpZ3VyYXRpb24sIG9yIHMzUmVjb3JkaW5nU2lua0NvbmZpZ3VyYXRpb24nLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBwcm9wcy5lbGVtZW50cy5zb21lKFxuICAgICAgICAoZWxlbWVudCkgPT5cbiAgICAgICAgICBlbGVtZW50LmFtYXpvblRyYW5zY3JpYmVDYWxsQW5hbHl0aWNzUHJvY2Vzc29yQ29uZmlndXJhdGlvbiB8fFxuICAgICAgICAgIGVsZW1lbnQuYW1hem9uVHJhbnNjcmliZVByb2Nlc3NvckNvbmZpZ3VyYXRpb24gfHxcbiAgICAgICAgICBlbGVtZW50LnZvaWNlQW5hbHl0aWNzUHJvY2Vzc29yQ29uZmlndXJhdGlvbixcbiAgICAgICkgJiZcbiAgICAgICFwcm9wcy5lbGVtZW50cy5zb21lKFxuICAgICAgICAoZWxlbWVudCkgPT4gZWxlbWVudC5raW5lc2lzRGF0YVN0cmVhbVNpbmtDb25maWd1cmF0aW9uLFxuICAgICAgKVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnQSBraW5lc2lzRGF0YVN0cmVhbVNpbmtDb25maWd1cmF0aW9uIGlzIHJlcXVpcmVkIGlmIGFtYXpvblRyYW5zY3JpYmVDYWxsQW5hbHl0aWNzUHJvY2Vzc29yQ29uZmlndXJhdGlvbiwgYW1hem9uVHJhbnNjcmliZVByb2Nlc3NvckNvbmZpZ3VyYXRpb24sIG9yIHZvaWNlQW5hbHl0aWNzUHJvY2Vzc29yQ29uZmlndXJhdGlvbiBhcmUgdXNlZCcsXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIHByb3BzLmVsZW1lbnRzLnNvbWUoXG4gICAgICAgIChlbGVtZW50KSA9PlxuICAgICAgICAgIGVsZW1lbnQuYW1hem9uVHJhbnNjcmliZUNhbGxBbmFseXRpY3NQcm9jZXNzb3JDb25maWd1cmF0aW9uLFxuICAgICAgKSAmJlxuICAgICAgcHJvcHMuZWxlbWVudHMuc29tZShcbiAgICAgICAgKGVsZW1lbnQpID0+IGVsZW1lbnQuYW1hem9uVHJhbnNjcmliZVByb2Nlc3NvckNvbmZpZ3VyYXRpb24sXG4gICAgICApXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdFbGVtZW50IG1heSBvbmx5IGNvbnRhaW4gYW1hem9uVHJhbnNjcmliZUNhbGxBbmFseXRpY3NQcm9jZXNzb3JDb25maWd1cmF0aW9uIG9yIGFtYXpvblRyYW5zY3JpYmVQcm9jZXNzb3JDb25maWd1cmF0aW9uJyxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gaWYgKFxuICAgIC8vICAgcHJvcHMuZWxlbWVudHMuc29tZSgoZWxlbWVudCkgPT4gZWxlbWVudC5zM1JlY29yZGluZ1NpbmtDb25maWd1cmF0aW9uKSAmJlxuICAgIC8vICAgcHJvcHMuZWxlbWVudHMuc29tZShcbiAgICAvLyAgICAgKGVsZW1lbnQpID0+XG4gICAgLy8gICAgICAgZWxlbWVudC5hbWF6b25UcmFuc2NyaWJlUHJvY2Vzc29yQ29uZmlndXJhdGlvbiB8fFxuICAgIC8vICAgICAgIGVsZW1lbnQuYW1hem9uVHJhbnNjcmliZUNhbGxBbmFseXRpY3NQcm9jZXNzb3JDb25maWd1cmF0aW9uIHx8XG4gICAgLy8gICAgICAgZWxlbWVudC52b2ljZUFuYWx5dGljc1Byb2Nlc3NvckNvbmZpZ3VyYXRpb24sXG4gICAgLy8gICApXG4gICAgLy8gKSB7XG4gICAgLy8gICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgLy8gICAgICdzM1JlY29yZGluZ1NpbmtDb25maWd1cmF0aW9uIGNhbm5vdCBiZSB1c2VkIHdpdGggYW1hem9uVHJhbnNjcmliZVByb2Nlc3NvckNvbmZpZ3VyYXRpb24sIGFtYXpvblRyYW5zY3JpYmVDYWxsQW5hbHl0aWNzUHJvY2Vzc29yQ29uZmlndXJhdGlvbiwgb3Igdm9pY2VBbmFseXRpY3NQcm9jZXNzb3JDb25maWd1cmF0aW9uJyxcbiAgICAvLyAgICk7XG4gICAgLy8gfVxuXG4gICAgLy8gaWYgKFxuICAgIC8vICAgcHJvcHMuZWxlbWVudHMuc29tZSgoZWxlbWVudCkgPT4gZWxlbWVudC5zM1JlY29yZGluZ1NpbmtDb25maWd1cmF0aW9uKSAmJlxuICAgIC8vICAgcHJvcHMucmVhbFRpbWVBbGVydENvbmZpZ3VyYXRpb25cbiAgICAvLyApIHtcbiAgICAvLyAgIHRocm93IG5ldyBFcnJvcihcbiAgICAvLyAgICAgJ3MzUmVjb3JkaW5nU2lua0NvbmZpZ3VyYXRpb24gY2Fubm90IGJlIHVzZWQgd2l0aCByZWFsVGltZUFsZXJ0Q29uZmlndXJhdGlvbicsXG4gICAgLy8gICApO1xuICAgIC8vIH1cbiAgfVxuXG4gIGlmIChwcm9wcy5yZWFsVGltZUFsZXJ0Q29uZmlndXJhdGlvbikge1xuICAgIGlmIChwcm9wcy5yZWFsVGltZUFsZXJ0Q29uZmlndXJhdGlvbi5ydWxlcy5sZW5ndGggPiAzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0EgbWF4aW11bSBvZiB0aHJlZSByZWFsVGltZUFsZXJ0IHJ1bGVzIGFyZSBhbGxvd2VkJyk7XG4gICAgfVxuXG4gICAgcHJvcHMucmVhbFRpbWVBbGVydENvbmZpZ3VyYXRpb24ucnVsZXMuZm9yRWFjaCgocnVsZSkgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICBydWxlLnR5cGUgPT0gJ0tleXdvcmRNYXRjaCcgJiZcbiAgICAgICAgIXJ1bGUua2V5d29yZE1hdGNoQ29uZmlndXJhdGlvbiAmJlxuICAgICAgICAocnVsZS5pc3N1ZURldGVjdGlvbkNvbmZpZ3VyYXRpb24gfHwgcnVsZS5zZW50aW1lbnRDb25maWd1cmF0aW9uKVxuICAgICAgKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignS2V5d29yZE1hdGNoIHR5cGUgcmVxdWlyZXMga2V5d29yZE1hdGNoQ29uZmlndXJhdGlvbicpO1xuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBydWxlLnR5cGUgPT0gJ1NlbnRpbWVudCcgJiZcbiAgICAgICAgIXJ1bGUuc2VudGltZW50Q29uZmlndXJhdGlvbiAmJlxuICAgICAgICAocnVsZS5pc3N1ZURldGVjdGlvbkNvbmZpZ3VyYXRpb24gfHwgcnVsZS5rZXl3b3JkTWF0Y2hDb25maWd1cmF0aW9uKVxuICAgICAgKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignU2VudGltZW50IHR5cGUgcmVxdWlyZXMgc2VudGltZW50Q29uZmlndXJhdGlvbicpO1xuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICBydWxlLnR5cGUgPT0gJ0lzc3VlRGV0ZWN0aW9uJyAmJlxuICAgICAgICAhcnVsZS5pc3N1ZURldGVjdGlvbkNvbmZpZ3VyYXRpb24gJiZcbiAgICAgICAgKHJ1bGUuc2VudGltZW50Q29uZmlndXJhdGlvbiB8fCBydWxlLmtleXdvcmRNYXRjaENvbmZpZ3VyYXRpb24pXG4gICAgICApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICdJc3N1ZURldGVjdGlvbiB0eXBlIHJlcXVpcmVzIGlzc3VlRGV0ZWN0aW9uQ29uZmlndXJhdGlvbicsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBwcm9wcy5yZWFsVGltZUFsZXJ0Q29uZmlndXJhdGlvbi5ydWxlcy5mb3JFYWNoKChydWxlKSA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgIChydWxlLnR5cGUgPT0gJ0tleXdvcmRNYXRjaCcgfHxcbiAgICAgICAgICBydWxlLnR5cGUgPT0gJ1NlbnRpbWVudCcgfHxcbiAgICAgICAgICBydWxlLnR5cGUgPT0gJ0lzc3VlRGV0ZWN0aW9uJykgJiZcbiAgICAgICAgIShcbiAgICAgICAgICBydWxlLmlzc3VlRGV0ZWN0aW9uQ29uZmlndXJhdGlvbiB8fFxuICAgICAgICAgIHJ1bGUua2V5d29yZE1hdGNoQ29uZmlndXJhdGlvbiB8fFxuICAgICAgICAgIHJ1bGUuc2VudGltZW50Q29uZmlndXJhdGlvblxuICAgICAgICApXG4gICAgICApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSdWxlIHR5cGUgbXVzdCBjb250YWluIGNvbmZpZ3VyYXRpb24nKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmIChcbiAgICAgIHByb3BzLmVsZW1lbnRzLnNvbWUoXG4gICAgICAgIChlbGVtZW50KSA9PlxuICAgICAgICAgIGVsZW1lbnQuYW1hem9uVHJhbnNjcmliZVByb2Nlc3NvckNvbmZpZ3VyYXRpb24gfHxcbiAgICAgICAgICBlbGVtZW50LmFtYXpvblRyYW5zY3JpYmVDYWxsQW5hbHl0aWNzUHJvY2Vzc29yQ29uZmlndXJhdGlvbixcbiAgICAgIClcbiAgICApIHtcbiAgICAgIGlmIChcbiAgICAgICAgcHJvcHMuZWxlbWVudHMuc29tZShcbiAgICAgICAgICAoZWxlbWVudCkgPT4gZWxlbWVudC5hbWF6b25UcmFuc2NyaWJlUHJvY2Vzc29yQ29uZmlndXJhdGlvbixcbiAgICAgICAgKSAmJlxuICAgICAgICAocHJvcHMucmVhbFRpbWVBbGVydENvbmZpZ3VyYXRpb24ucnVsZXMuc29tZShcbiAgICAgICAgICAocnVsZSkgPT4gcnVsZS5zZW50aW1lbnRDb25maWd1cmF0aW9uLFxuICAgICAgICApIHx8XG4gICAgICAgICAgcHJvcHMucmVhbFRpbWVBbGVydENvbmZpZ3VyYXRpb24ucnVsZXMuc29tZShcbiAgICAgICAgICAgIChydWxlKSA9PiBydWxlLmlzc3VlRGV0ZWN0aW9uQ29uZmlndXJhdGlvbixcbiAgICAgICAgICApKVxuICAgICAgKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAnYW1hem9uVHJhbnNjcmliZVByb2Nlc3NvckNvbmZpZ3VyYXRpb24gY2Fubm90IHVzZSByZWFsVGltZUFsZXJ0Q29uZmlndXJhdGlvbiBzZW50aW1lbnRDb25maWd1cmF0aW9uIG9yIGlzc3VlRGV0ZWN0aW9uQ29uZmlndXJhdGlvbicsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ3JlYWxUaW1lQWxlcnRDb25maWd1cmF0aW9uIHJlcXVpcmVzIGFtYXpvblRyYW5zY3JpYmVQcm9jZXNzb3JDb25maWd1cmF0aW9uIG9yIGFtYXpvblRyYW5zY3JpYmVDYWxsQW5hbHl0aWNzUHJvY2Vzc29yQ29uZmlndXJhdGlvbicsXG4gICAgICApO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cbiJdfQ==