UNPKG

cdk-monitoring-constructs

Version:

[![NPM version](https://badge.fury.io/js/cdk-monitoring-constructs.svg)](https://badge.fury.io/js/cdk-monitoring-constructs) [![Maven Central](https://maven-badges.herokuapp.com/maven-central/io.github.cdklabs/cdkmonitoringconstructs/badge.svg)](https://m

68 lines 10.6 kB
"use strict"; var _a; Object.defineProperty(exports, "__esModule", { value: true }); exports.MonitoringNamingStrategy = void 0; const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti"); const aws_cdk_lib_1 = require("aws-cdk-lib"); /** * Utility class to unify approach to naming monitoring sections. * @see https://docs.aws.amazon.com/cdk/latest/guide/tokens.html#tokens_lazy */ class MonitoringNamingStrategy { constructor(input) { this.input = input; } resolveAlarmFriendlyName() { return this.input.alarmFriendlyName ?? this.getFallbackAlarmFriendlyName(); } resolveHumanReadableName() { return this.input.humanReadableName ?? this.getFallbackHumanReadableName(); } static isAlarmFriendly(str) { // we do not know the exact pattern yet, but this is a safe approximation // also, tokens are not allowed in alarm names return str && !aws_cdk_lib_1.Token.isUnresolved(str) && /^[a-zA-Z0-9\-_\.]+$/.test(str); } getFallbackAlarmFriendlyName() { if (this.input.fallbackConstructName) { if (MonitoringNamingStrategy.isAlarmFriendly(this.input.fallbackConstructName)) { return this.input.fallbackConstructName; } } if (this.input.namedConstruct) { const node = this.input.namedConstruct.node; if (MonitoringNamingStrategy.isAlarmFriendly(node.id)) { // scope-unique ID return node.id; } } throw new Error("Insufficient information provided for naming the alarms and/or monitoring section: " + "Please provide alarmFriendlyName, humanReadableName, or namedConstruct as a fallback"); } getFallbackHumanReadableName() { return aws_cdk_lib_1.Lazy.uncachedString({ produce: (context) => { const resolvedName = context.resolve(this.input.fallbackConstructName); if (typeof resolvedName === "string" && MonitoringNamingStrategy.isNonBlank(resolvedName)) { return resolvedName; } if (this.input.namedConstruct) { const node = this.input.namedConstruct.node; if (MonitoringNamingStrategy.isNonBlank(node.id)) { // scope-unique ID return node.id; } } return this.resolveAlarmFriendlyName(); }, }); } static isNonBlank(str) { return str && str.trim().length > 0; } } exports.MonitoringNamingStrategy = MonitoringNamingStrategy; _a = JSII_RTTI_SYMBOL_1; MonitoringNamingStrategy[_a] = { fqn: "cdk-monitoring-constructs.MonitoringNamingStrategy", version: "9.15.2" }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTW9uaXRvcmluZ05hbWluZ1N0cmF0ZWd5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiTW9uaXRvcmluZ05hbWluZ1N0cmF0ZWd5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkNBQTBDO0FBMEMxQzs7O0dBR0c7QUFDSCxNQUFhLHdCQUF3QjtJQUduQyxZQUFZLEtBQTBCO1FBQ3BDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3JCLENBQUM7SUFFRCx3QkFBd0I7UUFDdEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixJQUFJLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxDQUFDO0lBQzdFLENBQUM7SUFFRCx3QkFBd0I7UUFDdEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixJQUFJLElBQUksQ0FBQyw0QkFBNEIsRUFBRSxDQUFDO0lBQzdFLENBQUM7SUFFRCxNQUFNLENBQUMsZUFBZSxDQUFDLEdBQVc7UUFDaEMseUVBQXlFO1FBQ3pFLDhDQUE4QztRQUM5QyxPQUFPLEdBQUcsSUFBSSxDQUFDLG1CQUFLLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxJQUFJLHFCQUFxQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBRU8sNEJBQTRCO1FBQ2xDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsRUFBRTtZQUNwQyxJQUNFLHdCQUF3QixDQUFDLGVBQWUsQ0FDdEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsQ0FDakMsRUFDRDtnQkFDQSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUM7YUFDekM7U0FDRjtRQUVELElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLEVBQUU7WUFDN0IsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDO1lBQzVDLElBQUksd0JBQXdCLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRTtnQkFDckQsa0JBQWtCO2dCQUNsQixPQUFPLElBQUksQ0FBQyxFQUFFLENBQUM7YUFDaEI7U0FDRjtRQUVELE1BQU0sSUFBSSxLQUFLLENBQ2IscUZBQXFGO1lBQ25GLHNGQUFzRixDQUN6RixDQUFDO0lBQ0osQ0FBQztJQUVPLDRCQUE0QjtRQUNsQyxPQUFPLGtCQUFJLENBQUMsY0FBYyxDQUFDO1lBQ3pCLE9BQU8sRUFBRSxDQUFDLE9BQU8sRUFBRSxFQUFFO2dCQUNuQixNQUFNLFlBQVksR0FBUSxPQUFPLENBQUMsT0FBTyxDQUN2QyxJQUFJLENBQUMsS0FBSyxDQUFDLHFCQUFxQixDQUNqQyxDQUFDO2dCQUNGLElBQ0UsT0FBTyxZQUFZLEtBQUssUUFBUTtvQkFDaEMsd0JBQXdCLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxFQUNqRDtvQkFDQSxPQUFPLFlBQVksQ0FBQztpQkFDckI7Z0JBQ0QsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRTtvQkFDN0IsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDO29CQUM1QyxJQUFJLHdCQUF3QixDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUU7d0JBQ2hELGtCQUFrQjt3QkFDbEIsT0FBTyxJQUFJLENBQUMsRUFBRSxDQUFDO3FCQUNoQjtpQkFDRjtnQkFDRCxPQUFPLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1lBQ3pDLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFXO1FBQ25DLE9BQU8sR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7O0FBeEVILDREQXlFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExhenksIFRva2VuIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBJQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBOYW1lUmVzb2x1dGlvbklucHV0IGV4dGVuZHMgVXNlclByb3ZpZGVkTmFtZXMge1xuICAvKipcbiAgICogQ29uc3RydWN0IHRoYXQgdGhpcyBuYW1pbmcgc3RyYXRlZ3kgaXMgbmFtaW5nLlxuICAgKiBJdCBpcyB1c2VkIGFzIGEgbGFzdCByZXNvcnQgZm9yIG5hbWluZy5cbiAgICovXG4gIHJlYWRvbmx5IG5hbWVkQ29uc3RydWN0PzogSUNvbnN0cnVjdDtcbiAgLyoqXG4gICAqIEZhbGxiYWNrIG5hbWUgYmVmb3JlIHdlIGZhbGxiYWNrIHRvIGV4dHJhY3RpbmcgbmFtZSBmcm9tIHRoZSBjb25zdHJ1Y3QgaXRzZWxmLlxuICAgKiBUaGlzIG1pZ2h0IGJlIHNvbWUgY29uc3RydWN0IHJlZmVyZW5jZSwgc3VjaCBpcyBjbHVzdGVyIElELCBzdHJlYW0gbmFtZSwgYW5kIHNvIG9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHVzZSBuYW1lZENvbnN0cnVjdCB0byBleHRyYWN0IHRoZSBuYW1lXG4gICAqL1xuICByZWFkb25seSBmYWxsYmFja0NvbnN0cnVjdE5hbWU/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXNlclByb3ZpZGVkTmFtZXMge1xuICAvKipcbiAgICogSHVtYW4tcmVhZGFibGUgbmFtZSBpcyBhIGZyZWVmb3JtIHN0cmluZywgdXNlZCBhcyBhIGNhcHRpb24gb3IgZGVzY3JpcHRpb24uXG4gICAqIFRoZXJlIGFyZSBubyBsaW1pdGF0aW9ucyBvbiB3aGF0IGl0IGNhbiBiZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB1c2UgYWxhcm1GcmllbmRseU5hbWVcbiAgICovXG4gIHJlYWRvbmx5IGh1bWFuUmVhZGFibGVOYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogUGxhaW4gbmFtZSwgdXNlZCBpbiBuYW1pbmcgYWxhcm1zLiBUaGlzIHVuaXF1ZSBhbW9uZyBvdGhlciByZXNvdXJjZXMsIGFuZCByZXNwZWN0IHRoZSBBV1MgQ0RLIHJlc3RyaWN0aW9uIHBvc2VkIG9uIGFsYXJtIG5hbWVzLlxuICAgKiBUaGUgbGVuZ3RoIG11c3QgYmUgMSAtIDI1NSBjaGFyYWN0ZXJzIGFuZCBhbHRob3VnaCB0aGUgdmFsaWRhdGlvbiBydWxlcyBhcmUgdW5kb2N1bWVudGVkLCB3ZSByZWNvbW1lbmQgdXNpbmcgQVNDSUkgYW5kIGh5cGhlbnMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZGVyaXZlcyBuYW1lIGZyb20gdGhlIGNvbnN0cnVjdCBpdHNlbGZcbiAgICovXG4gIHJlYWRvbmx5IGFsYXJtRnJpZW5kbHlOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJZiB0aGlzIGlzIGRlZmluZWQsIHRoZSBsb2NhbCBhbGFybSBuYW1lIHByZWZpeCB1c2VkIGluIG5hbWluZyBhbGFybXMgZm9yIHRoZSBjb25zdHJ1Y3Qgd2lsbCBiZSBzZXQgdG8gdGhpcyB2YWx1ZS5cbiAgICogVGhlIGxlbmd0aCBtdXN0IGJlIDEgLSAyNTUgY2hhcmFjdGVycyBhbmQgYWx0aG91Z2ggdGhlIHZhbGlkYXRpb24gcnVsZXMgYXJlIHVuZG9jdW1lbnRlZCwgd2UgcmVjb21tZW5kIHVzaW5nIEFTQ0lJIGFuZCBoeXBoZW5zLlxuICAgKiBAc2VlIEFsYXJtTmFtaW5nU3RyYXRlZ3kgZm9yIG1vcmUgZGV0YWlscyBvbiBhbGFybSBuYW1lIHByZWZpeGVzXG4gICAqL1xuICByZWFkb25seSBsb2NhbEFsYXJtTmFtZVByZWZpeE92ZXJyaWRlPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFV0aWxpdHkgY2xhc3MgdG8gdW5pZnkgYXBwcm9hY2ggdG8gbmFtaW5nIG1vbml0b3Jpbmcgc2VjdGlvbnMuXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9jZGsvbGF0ZXN0L2d1aWRlL3Rva2Vucy5odG1sI3Rva2Vuc19sYXp5XG4gKi9cbmV4cG9ydCBjbGFzcyBNb25pdG9yaW5nTmFtaW5nU3RyYXRlZ3kge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgaW5wdXQ6IE5hbWVSZXNvbHV0aW9uSW5wdXQ7XG5cbiAgY29uc3RydWN0b3IoaW5wdXQ6IE5hbWVSZXNvbHV0aW9uSW5wdXQpIHtcbiAgICB0aGlzLmlucHV0ID0gaW5wdXQ7XG4gIH1cblxuICByZXNvbHZlQWxhcm1GcmllbmRseU5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pbnB1dC5hbGFybUZyaWVuZGx5TmFtZSA/PyB0aGlzLmdldEZhbGxiYWNrQWxhcm1GcmllbmRseU5hbWUoKTtcbiAgfVxuXG4gIHJlc29sdmVIdW1hblJlYWRhYmxlTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmlucHV0Lmh1bWFuUmVhZGFibGVOYW1lID8/IHRoaXMuZ2V0RmFsbGJhY2tIdW1hblJlYWRhYmxlTmFtZSgpO1xuICB9XG5cbiAgc3RhdGljIGlzQWxhcm1GcmllbmRseShzdHI6IHN0cmluZykge1xuICAgIC8vIHdlIGRvIG5vdCBrbm93IHRoZSBleGFjdCBwYXR0ZXJuIHlldCwgYnV0IHRoaXMgaXMgYSBzYWZlIGFwcHJveGltYXRpb25cbiAgICAvLyBhbHNvLCB0b2tlbnMgYXJlIG5vdCBhbGxvd2VkIGluIGFsYXJtIG5hbWVzXG4gICAgcmV0dXJuIHN0ciAmJiAhVG9rZW4uaXNVbnJlc29sdmVkKHN0cikgJiYgL15bYS16QS1aMC05XFwtX1xcLl0rJC8udGVzdChzdHIpO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRGYWxsYmFja0FsYXJtRnJpZW5kbHlOYW1lKCkge1xuICAgIGlmICh0aGlzLmlucHV0LmZhbGxiYWNrQ29uc3RydWN0TmFtZSkge1xuICAgICAgaWYgKFxuICAgICAgICBNb25pdG9yaW5nTmFtaW5nU3RyYXRlZ3kuaXNBbGFybUZyaWVuZGx5KFxuICAgICAgICAgIHRoaXMuaW5wdXQuZmFsbGJhY2tDb25zdHJ1Y3ROYW1lLFxuICAgICAgICApXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5wdXQuZmFsbGJhY2tDb25zdHJ1Y3ROYW1lO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLmlucHV0Lm5hbWVkQ29uc3RydWN0KSB7XG4gICAgICBjb25zdCBub2RlID0gdGhpcy5pbnB1dC5uYW1lZENvbnN0cnVjdC5ub2RlO1xuICAgICAgaWYgKE1vbml0b3JpbmdOYW1pbmdTdHJhdGVneS5pc0FsYXJtRnJpZW5kbHkobm9kZS5pZCkpIHtcbiAgICAgICAgLy8gc2NvcGUtdW5pcXVlIElEXG4gICAgICAgIHJldHVybiBub2RlLmlkO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIFwiSW5zdWZmaWNpZW50IGluZm9ybWF0aW9uIHByb3ZpZGVkIGZvciBuYW1pbmcgdGhlIGFsYXJtcyBhbmQvb3IgbW9uaXRvcmluZyBzZWN0aW9uOiBcIiArXG4gICAgICAgIFwiUGxlYXNlIHByb3ZpZGUgYWxhcm1GcmllbmRseU5hbWUsIGh1bWFuUmVhZGFibGVOYW1lLCBvciBuYW1lZENvbnN0cnVjdCBhcyBhIGZhbGxiYWNrXCIsXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RmFsbGJhY2tIdW1hblJlYWRhYmxlTmFtZSgpIHtcbiAgICByZXR1cm4gTGF6eS51bmNhY2hlZFN0cmluZyh7XG4gICAgICBwcm9kdWNlOiAoY29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCByZXNvbHZlZE5hbWU6IGFueSA9IGNvbnRleHQucmVzb2x2ZShcbiAgICAgICAgICB0aGlzLmlucHV0LmZhbGxiYWNrQ29uc3RydWN0TmFtZSxcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHR5cGVvZiByZXNvbHZlZE5hbWUgPT09IFwic3RyaW5nXCIgJiZcbiAgICAgICAgICBNb25pdG9yaW5nTmFtaW5nU3RyYXRlZ3kuaXNOb25CbGFuayhyZXNvbHZlZE5hbWUpXG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVybiByZXNvbHZlZE5hbWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaW5wdXQubmFtZWRDb25zdHJ1Y3QpIHtcbiAgICAgICAgICBjb25zdCBub2RlID0gdGhpcy5pbnB1dC5uYW1lZENvbnN0cnVjdC5ub2RlO1xuICAgICAgICAgIGlmIChNb25pdG9yaW5nTmFtaW5nU3RyYXRlZ3kuaXNOb25CbGFuayhub2RlLmlkKSkge1xuICAgICAgICAgICAgLy8gc2NvcGUtdW5pcXVlIElEXG4gICAgICAgICAgICByZXR1cm4gbm9kZS5pZDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMucmVzb2x2ZUFsYXJtRnJpZW5kbHlOYW1lKCk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgaXNOb25CbGFuayhzdHI6IHN0cmluZykge1xuICAgIHJldHVybiBzdHIgJiYgc3RyLnRyaW0oKS5sZW5ndGggPiAwO1xuICB9XG59XG4iXX0=