aws-cdk
Version:
AWS CDK CLI, the command line tool for CDK apps
30 lines • 3.9 kB
JavaScript
;
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==