UNPKG

@aws/pdk

Version:

All documentation is located at: https://aws.github.io/aws-pdk

45 lines 5.65 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getUniqueMetrics = exports.addMetric = void 0; const PACKAGE_METRIC_INFO = { identity: { metric: "c1" }, "pdk-nag": { metric: "c2" }, "static-website": { metric: "c3" }, "type-safe-rest-api": { metric: "c4" }, "type-safe-websocket-api": { metric: "c5" }, "cdk-graph": { metric: "c6" }, "cdk-graph-plugin-diagram": { metric: "c7" }, "cdk-graph-plugin-threat-composer": { metric: "c8" }, }; const METRICS_METADATA_TYPE = "__aws-pdk-metric"; /** * Add construct metric info */ const addMetric = (scope, pkg) => { // Add metric info to the root node const metricInfo = PACKAGE_METRIC_INFO[pkg]; const root = scope?.node?.root?.node; if (metricInfo && root) { root.addMetadata(METRICS_METADATA_TYPE, PACKAGE_METRIC_INFO[pkg]); } }; exports.addMetric = addMetric; /** * Gets registered metrics from the construct tree */ const getUniqueMetrics = (scope) => { const root = scope?.node?.root?.node; const metrics = (root?.metadata ?? []) .filter((m) => m.type === METRICS_METADATA_TYPE) .map((m) => m.data); const seen = new Set(); return metrics.filter((m) => { if (!seen.has(m.metric)) { seen.add(m.metric); return true; } return false; }); }; exports.getUniqueMetrics = getUniqueMetrics; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0cmljcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIm1ldHJpY3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBUUEsTUFBTSxtQkFBbUIsR0FBRztJQUMxQixRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO0lBQzFCLFNBQVMsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7SUFDM0IsZ0JBQWdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO0lBQ2xDLG9CQUFvQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtJQUN0Qyx5QkFBeUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7SUFDM0MsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtJQUM3QiwwQkFBMEIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7SUFDNUMsa0NBQWtDLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO0NBQ1AsQ0FBQztBQUloRCxNQUFNLHFCQUFxQixHQUFHLGtCQUFrQixDQUFDO0FBRWpEOztHQUVHO0FBQ0ksTUFBTSxTQUFTLEdBQUcsQ0FBQyxLQUFnQixFQUFFLEdBQWUsRUFBRSxFQUFFO0lBQzdELG1DQUFtQztJQUNuQyxNQUFNLFVBQVUsR0FBRyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM1QyxNQUFNLElBQUksR0FBRyxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUM7SUFDckMsSUFBSSxVQUFVLElBQUksSUFBSSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxxQkFBcUIsRUFBRSxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ3BFLENBQUM7QUFDSCxDQUFDLENBQUM7QUFQVyxRQUFBLFNBQVMsYUFPcEI7QUFFRjs7R0FFRztBQUNJLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxLQUFnQixFQUFnQixFQUFFO0lBQ2pFLE1BQU0sSUFBSSxHQUFHLEtBQUssRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQztJQUNyQyxNQUFNLE9BQU8sR0FBRyxDQUFDLElBQUksRUFBRSxRQUFRLElBQUksRUFBRSxDQUFDO1NBQ25DLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxxQkFBcUIsQ0FBQztTQUMvQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQWlCLENBQUM7SUFDdEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztJQUMvQixPQUFPLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtRQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNuQixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBYlcsUUFBQSxnQkFBZ0Isb0JBYTNCIiwic291cmNlc0NvbnRlbnQiOlsiLyohIENvcHlyaWdodCBbQW1hem9uLmNvbV0oaHR0cDovL2FtYXpvbi5jb20vKSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cblNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wICovXG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuXG5pbnRlcmZhY2UgTWV0cmljSW5mbyB7XG4gIHJlYWRvbmx5IG1ldHJpYzogc3RyaW5nO1xufVxuXG5jb25zdCBQQUNLQUdFX01FVFJJQ19JTkZPID0ge1xuICBpZGVudGl0eTogeyBtZXRyaWM6IFwiYzFcIiB9LFxuICBcInBkay1uYWdcIjogeyBtZXRyaWM6IFwiYzJcIiB9LFxuICBcInN0YXRpYy13ZWJzaXRlXCI6IHsgbWV0cmljOiBcImMzXCIgfSxcbiAgXCJ0eXBlLXNhZmUtcmVzdC1hcGlcIjogeyBtZXRyaWM6IFwiYzRcIiB9LFxuICBcInR5cGUtc2FmZS13ZWJzb2NrZXQtYXBpXCI6IHsgbWV0cmljOiBcImM1XCIgfSxcbiAgXCJjZGstZ3JhcGhcIjogeyBtZXRyaWM6IFwiYzZcIiB9LFxuICBcImNkay1ncmFwaC1wbHVnaW4tZGlhZ3JhbVwiOiB7IG1ldHJpYzogXCJjN1wiIH0sXG4gIFwiY2RrLWdyYXBoLXBsdWdpbi10aHJlYXQtY29tcG9zZXJcIjogeyBtZXRyaWM6IFwiYzhcIiB9LFxufSBhcyBjb25zdCBzYXRpc2ZpZXMgUmVjb3JkPHN0cmluZywgTWV0cmljSW5mbz47XG5cbmV4cG9ydCB0eXBlIFBka1BhY2thZ2UgPSBrZXlvZiB0eXBlb2YgUEFDS0FHRV9NRVRSSUNfSU5GTztcblxuY29uc3QgTUVUUklDU19NRVRBREFUQV9UWVBFID0gXCJfX2F3cy1wZGstbWV0cmljXCI7XG5cbi8qKlxuICogQWRkIGNvbnN0cnVjdCBtZXRyaWMgaW5mb1xuICovXG5leHBvcnQgY29uc3QgYWRkTWV0cmljID0gKHNjb3BlOiBDb25zdHJ1Y3QsIHBrZzogUGRrUGFja2FnZSkgPT4ge1xuICAvLyBBZGQgbWV0cmljIGluZm8gdG8gdGhlIHJvb3Qgbm9kZVxuICBjb25zdCBtZXRyaWNJbmZvID0gUEFDS0FHRV9NRVRSSUNfSU5GT1twa2ddO1xuICBjb25zdCByb290ID0gc2NvcGU/Lm5vZGU/LnJvb3Q/Lm5vZGU7XG4gIGlmIChtZXRyaWNJbmZvICYmIHJvb3QpIHtcbiAgICByb290LmFkZE1ldGFkYXRhKE1FVFJJQ1NfTUVUQURBVEFfVFlQRSwgUEFDS0FHRV9NRVRSSUNfSU5GT1twa2ddKTtcbiAgfVxufTtcblxuLyoqXG4gKiBHZXRzIHJlZ2lzdGVyZWQgbWV0cmljcyBmcm9tIHRoZSBjb25zdHJ1Y3QgdHJlZVxuICovXG5leHBvcnQgY29uc3QgZ2V0VW5pcXVlTWV0cmljcyA9IChzY29wZTogQ29uc3RydWN0KTogTWV0cmljSW5mb1tdID0+IHtcbiAgY29uc3Qgcm9vdCA9IHNjb3BlPy5ub2RlPy5yb290Py5ub2RlO1xuICBjb25zdCBtZXRyaWNzID0gKHJvb3Q/Lm1ldGFkYXRhID8/IFtdKVxuICAgIC5maWx0ZXIoKG0pID0+IG0udHlwZSA9PT0gTUVUUklDU19NRVRBREFUQV9UWVBFKVxuICAgIC5tYXAoKG0pID0+IG0uZGF0YSkgYXMgTWV0cmljSW5mb1tdO1xuICBjb25zdCBzZWVuID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gIHJldHVybiBtZXRyaWNzLmZpbHRlcigobSkgPT4ge1xuICAgIGlmICghc2Vlbi5oYXMobS5tZXRyaWMpKSB7XG4gICAgICBzZWVuLmFkZChtLm1ldHJpYyk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9KTtcbn07XG4iXX0=