UNPKG

aws-cdk

Version:

AWS CDK CLI, the command line tool for CDK apps

30 lines 3.9 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Funnel = void 0; const toolkit_lib_1 = require("@aws-cdk/toolkit-lib"); /** * A funnel is a combination of one or more sinks. * The sink functions are executed in parallel, and a maximum of 5 * sinks are supported per funnel. */ class Funnel { sinks; constructor(props) { if (props.sinks.length > 5) { throw new toolkit_lib_1.ToolkitError('MaxSinksExceeded', `Funnel class supports a maximum of 5 parallel sinks, got ${props.sinks.length} sinks.`); } this.sinks = props.sinks; } async emit(event) { // Funnel class enforces a maximum of 5 parallel sinks // eslint-disable-next-line @cdklabs/promiseall-no-unbounded-parallelism await Promise.all(this.sinks.map(sink => sink.emit(event))); } async flush() { // Funnel class enforces a maximum of 5 parallel sinks // eslint-disable-next-line @cdklabs/promiseall-no-unbounded-parallelism await Promise.all(this.sinks.map(sink => sink.flush())); } } exports.Funnel = Funnel; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVubmVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZnVubmVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHNEQUFvRDtBQVFwRDs7OztHQUlHO0FBQ0gsTUFBYSxNQUFNO0lBQ0EsS0FBSyxDQUFtQjtJQUV6QyxZQUFZLEtBQWtCO1FBQzVCLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDM0IsTUFBTSxJQUFJLDBCQUFZLENBQUMsa0JBQWtCLEVBQUUsNERBQTRELEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxTQUFTLENBQUMsQ0FBQztRQUN0SSxDQUFDO1FBRUQsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO0lBQzNCLENBQUM7SUFFTSxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQXNCO1FBQ3RDLHNEQUFzRDtRQUN0RCx3RUFBd0U7UUFDeEUsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDOUQsQ0FBQztJQUVNLEtBQUssQ0FBQyxLQUFLO1FBQ2hCLHNEQUFzRDtRQUN0RCx3RUFBd0U7UUFDeEUsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMxRCxDQUFDO0NBQ0Y7QUF0QkQsd0JBc0JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVG9vbGtpdEVycm9yIH0gZnJvbSAnQGF3cy1jZGsvdG9vbGtpdC1saWInO1xuaW1wb3J0IHR5cGUgeyBUZWxlbWV0cnlTY2hlbWEgfSBmcm9tICcuLi9zY2hlbWEnO1xuaW1wb3J0IHR5cGUgeyBJVGVsZW1ldHJ5U2luayB9IGZyb20gJy4vc2luay1pbnRlcmZhY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZ1bm5lbFByb3BzIHtcbiAgcmVhZG9ubHkgc2lua3M6IElUZWxlbWV0cnlTaW5rW107XG59XG5cbi8qKlxuICogQSBmdW5uZWwgaXMgYSBjb21iaW5hdGlvbiBvZiBvbmUgb3IgbW9yZSBzaW5rcy5cbiAqIFRoZSBzaW5rIGZ1bmN0aW9ucyBhcmUgZXhlY3V0ZWQgaW4gcGFyYWxsZWwsIGFuZCBhIG1heGltdW0gb2YgNVxuICogc2lua3MgYXJlIHN1cHBvcnRlZCBwZXIgZnVubmVsLlxuICovXG5leHBvcnQgY2xhc3MgRnVubmVsIHtcbiAgcHJpdmF0ZSByZWFkb25seSBzaW5rczogSVRlbGVtZXRyeVNpbmtbXTtcblxuICBjb25zdHJ1Y3Rvcihwcm9wczogRnVubmVsUHJvcHMpIHtcbiAgICBpZiAocHJvcHMuc2lua3MubGVuZ3RoID4gNSkge1xuICAgICAgdGhyb3cgbmV3IFRvb2xraXRFcnJvcignTWF4U2lua3NFeGNlZWRlZCcsIGBGdW5uZWwgY2xhc3Mgc3VwcG9ydHMgYSBtYXhpbXVtIG9mIDUgcGFyYWxsZWwgc2lua3MsIGdvdCAke3Byb3BzLnNpbmtzLmxlbmd0aH0gc2lua3MuYCk7XG4gICAgfVxuXG4gICAgdGhpcy5zaW5rcyA9IHByb3BzLnNpbmtzO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGVtaXQoZXZlbnQ6IFRlbGVtZXRyeVNjaGVtYSk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vIEZ1bm5lbCBjbGFzcyBlbmZvcmNlcyBhIG1heGltdW0gb2YgNSBwYXJhbGxlbCBzaW5rc1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAY2RrbGFicy9wcm9taXNlYWxsLW5vLXVuYm91bmRlZC1wYXJhbGxlbGlzbVxuICAgIGF3YWl0IFByb21pc2UuYWxsKHRoaXMuc2lua3MubWFwKHNpbmsgPT4gc2luay5lbWl0KGV2ZW50KSkpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGZsdXNoKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vIEZ1bm5lbCBjbGFzcyBlbmZvcmNlcyBhIG1heGltdW0gb2YgNSBwYXJhbGxlbCBzaW5rc1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAY2RrbGFicy9wcm9taXNlYWxsLW5vLXVuYm91bmRlZC1wYXJhbGxlbGlzbVxuICAgIGF3YWl0IFByb21pc2UuYWxsKHRoaXMuc2lua3MubWFwKHNpbmsgPT4gc2luay5mbHVzaCgpKSk7XG4gIH1cbn1cbiJdfQ==