@wheatstalk/aws-cdk-exec
Version:
An AWS CDK Cloud Assembly-aware command to help find and execute lambda functions and state machines
119 lines • 13.2 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.TagsMatch = exports.MetadataMatch = exports.MatchBase = exports.findMatchingResources = void 0;
const cxapi = __importStar(require("aws-cdk-lib/cx-api"));
/**
* Finds matching resources.
*/
function findMatchingResources(options) {
var _a;
const { constructPath, types, assembly, metadata, tags, } = options;
const matches = Array();
for (const stack of assembly.stacks) {
const template = stack.template;
if (typeof template.Resources !== 'object') {
continue;
}
for (const [logicalId, resource] of Object.entries(template.Resources)) {
if (typeof resource !== 'object' || resource === null) {
continue;
}
const resourceRecord = resource;
const resourceMetadata = resourceRecord.Metadata;
if (typeof resourceMetadata !== 'object') {
continue;
}
const type = resourceRecord.Type;
if (!types.some(t => t === String(type))) {
continue;
}
if (metadata && !metadata.matches(resourceMetadata)) {
continue;
}
const resourceTags = (_a = resourceRecord.Properties) === null || _a === void 0 ? void 0 : _a.Tags;
if (tags && !tags.matches(resourceTags)) {
continue;
}
const pathMetadata = resourceMetadata[cxapi.PATH_METADATA_KEY];
if (!constructPath || pathMetadata === constructPath || pathMetadata.startsWith(`${constructPath}/`)) {
matches.push({
logicalResourceId: logicalId,
type,
constructPath: pathMetadata,
stackName: stack.stackName,
});
}
}
}
return matches;
}
exports.findMatchingResources = findMatchingResources;
class MatchBase {
constructor(spec) {
this.spec = Object.fromEntries(spec
.flatMap(metadata => metadata.split(','))
.map(metadata => metadata.split('=', 2)));
}
}
exports.MatchBase = MatchBase;
/**
* Match resource metadata with the given specification.
*/
class MetadataMatch extends MatchBase {
matches(resourceMetadata) {
for (const entry of Object.entries(this.spec)) {
const [key, value] = entry;
if (resourceMetadata[key] === undefined) {
return false;
}
if (value !== undefined && resourceMetadata[key] !== value) {
return false;
}
}
return true;
}
}
exports.MetadataMatch = MetadataMatch;
class TagsMatch extends MatchBase {
matches(resourceTags) {
if (!resourceTags) {
return false;
}
for (const entry of Object.entries(this.spec)) {
const [key, value] = entry;
const tag = resourceTags.find(t => t.Key === key);
if (!tag) {
return false;
}
if (value !== undefined && tag.Value !== value) {
return false;
}
}
return true;
}
}
exports.TagsMatch = TagsMatch;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZC1tYXRjaGluZy1yZXNvdXJjZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZmluZC1tYXRjaGluZy1yZXNvdXJjZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwwREFBNEM7QUFnQzVDOztHQUVHO0FBQ0gsU0FBZ0IscUJBQXFCLENBQUMsT0FBb0M7O0lBQ3hFLE1BQU0sRUFDSixhQUFhLEVBQ2IsS0FBSyxFQUNMLFFBQVEsRUFDUixRQUFRLEVBQ1IsSUFBSSxHQUNMLEdBQUcsT0FBTyxDQUFDO0lBRVosTUFBTSxPQUFPLEdBQUcsS0FBSyxFQUFvQixDQUFDO0lBQzFDLEtBQUssTUFBTSxLQUFLLElBQUksUUFBUSxDQUFDLE1BQU0sRUFBRTtRQUNuQyxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO1FBRWhDLElBQUksT0FBTyxRQUFRLENBQUMsU0FBUyxLQUFLLFFBQVEsRUFBRTtZQUMxQyxTQUFTO1NBQ1Y7UUFFRCxLQUFLLE1BQU0sQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDdEUsSUFBSSxPQUFPLFFBQVEsS0FBSyxRQUFRLElBQUksUUFBUSxLQUFLLElBQUksRUFBRTtnQkFDckQsU0FBUzthQUNWO1lBRUQsTUFBTSxjQUFjLEdBQUcsUUFBK0IsQ0FBQztZQUN2RCxNQUFNLGdCQUFnQixHQUFHLGNBQWMsQ0FBQyxRQUFRLENBQUM7WUFDakQsSUFBSSxPQUFPLGdCQUFnQixLQUFLLFFBQVEsRUFBRTtnQkFDeEMsU0FBUzthQUNWO1lBRUQsTUFBTSxJQUFJLEdBQUcsY0FBYyxDQUFDLElBQWMsQ0FBQztZQUMzQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxNQUFNLENBQUMsSUFBSSxDQUFD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YXBpIGZyb20gJ2F3cy1jZGstbGliL2N4LWFwaSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmluZE1hdGNoaW5nUmVzb3VyY2VPcHRpb25zQ29tbW9uIHtcblxuICAvKipcbiAgICogVGhlIENsb3VkIEFzc2VtYmx5IHRvIHNlYXJjaC5cbiAgICovXG4gIHJlYWRvbmx5IGFzc2VtYmx5OiBjeGFwaS5DbG91ZEFzc2VtYmx5O1xuXG4gIC8qKlxuICAgKiBQYXRjaCB0byBzZWFyY2ggZm9yLlxuICAgKi9cbiAgcmVhZG9ubHkgY29uc3RydWN0UGF0aD86IHN0cmluZztcblxuICAvKipcbiAgICogTWV0YWRhdGEgdG8gc2VhcmNoIGZvci5cbiAgICovXG4gIHJlYWRvbmx5IG1ldGFkYXRhPzogTWV0YWRhdGFNYXRjaDtcblxuICAvKipcbiAgICogVGFncyB0byBzZWFyY2ggZm9yLlxuICAgKi9cbiAgcmVhZG9ubHkgdGFncz86IFRhZ3NNYXRjaDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaW5kTWF0Y2hpbmdSZXNvdXJjZU9wdGlvbnMgZXh0ZW5kcyBGaW5kTWF0Y2hpbmdSZXNvdXJjZU9wdGlvbnNDb21tb257XG4gIC8qKlxuICAgKiBNYXRjaCBvbmx5IHRoZSBnaXZlbiByZXNvdXJjZSB0eXBlcy5cbiAgICovXG4gIHJlYWRvbmx5IHR5cGVzOiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBGaW5kcyBtYXRjaGluZyByZXNvdXJjZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaW5kTWF0Y2hpbmdSZXNvdXJjZXMob3B0aW9uczogRmluZE1hdGNoaW5nUmVzb3VyY2VPcHRpb25zKTogTWF0Y2hpbmdSZXNvdXJjZVtdIHtcbiAgY29uc3Qge1xuICAgIGNvbnN0cnVjdFBhdGgsXG4gICAgdHlwZXMsXG4gICAgYXNzZW1ibHksXG4gICAgbWV0YWRhdGEsXG4gICAgdGFncyxcbiAgfSA9IG9wdGlvbnM7XG5cbiAgY29uc3QgbWF0Y2hlcyA9IEFycmF5PE1hdGNoaW5nUmVzb3VyY2U+KCk7XG4gIGZvciAoY29uc3Qgc3RhY2sgb2YgYXNzZW1ibHkuc3RhY2tzKSB7XG4gICAgY29uc3QgdGVtcGxhdGUgPSBzdGFjay50ZW1wbGF0ZTtcblxuICAgIGlmICh0eXBlb2YgdGVtcGxhdGUuUmVzb3VyY2VzICE9PSAnb2JqZWN0Jykge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBbbG9naWNhbElkLCByZXNvdXJjZV0gb2YgT2JqZWN0LmVudHJpZXModGVtcGxhdGUuUmVzb3VyY2VzKSkge1xuICAgICAgaWYgKHR5cGVvZiByZXNvdXJjZSAhPT0gJ29iamVjdCcgfHwgcmVzb3VyY2UgPT09IG51bGwpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlc291cmNlUmVjb3JkID0gcmVzb3VyY2UgYXMgUmVjb3JkPHN0cmluZywgYW55PjtcbiAgICAgIGNvbnN0IHJlc291cmNlTWV0YWRhdGEgPSByZXNvdXJjZVJlY29yZC5NZXRhZGF0YTtcbiAgICAgIGlmICh0eXBlb2YgcmVzb3VyY2VNZXRhZGF0YSAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHR5cGUgPSByZXNvdXJjZVJlY29yZC5UeXBlIGFzIHN0cmluZztcbiAgICAgIGlmICghdHlwZXMuc29tZSh0ID0+IHQgPT09IFN0cmluZyh0eXBlKSkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChtZXRhZGF0YSAmJiAhbWV0YWRhdGEubWF0Y2hlcyhyZXNvdXJjZU1ldGFkYXRhKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVzb3VyY2VUYWdzID0gcmVzb3VyY2VSZWNvcmQuUHJvcGVydGllcz8uVGFncztcbiAgICAgIGlmICh0YWdzICYmICF0YWdzLm1hdGNoZXMocmVzb3VyY2VUYWdzKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcGF0aE1ldGFkYXRhID0gcmVzb3VyY2VNZXRhZGF0YVtjeGFwaS5QQVRIX01FVEFEQVRBX0tFWV0gYXMgc3RyaW5nO1xuICAgICAgaWYgKCFjb25zdHJ1Y3RQYXRoIHx8IHBhdGhNZXRhZGF0YSA9PT0gY29uc3RydWN0UGF0aCB8fCBwYXRoTWV0YWRhdGEuc3RhcnRzV2l0aChgJHtjb25zdHJ1Y3RQYXRofS9gKSkge1xuICAgICAgICBtYXRjaGVzLnB1c2goe1xuICAgICAgICAgIGxvZ2ljYWxSZXNvdXJjZUlkOiBsb2dpY2FsSWQsXG4gICAgICAgICAgdHlwZSxcbiAgICAgICAgICBjb25zdHJ1Y3RQYXRoOiBwYXRoTWV0YWRhdGEsXG4gICAgICAgICAgc3RhY2tOYW1lOiBzdGFjay5zdGFja05hbWUsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBtYXRjaGVzO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1hdGNoaW5nUmVzb3VyY2Uge1xuICAvKipcbiAgICogTmFtZSBvZiB0aGUgc3RhY2sgY29udGFpbmluZyB0aGUgcmVzb3VyY2UuXG4gICAqL1xuICByZWFkb25seSBzdGFja05hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogTG9naWNhbCBJRCBvZiB0aGUgcmVzb3VyY2UuXG4gICAqL1xuICByZWFkb25seSBsb2dpY2FsUmVzb3VyY2VJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgQ2xvdWRGb3JtYXRpb24gdHlwZS5cbiAgICovXG4gIHJlYWRvbmx5IHR5cGU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHJlc291cmNlJ3MgY29uc3RydWN0IHBhdGggbWV0YWRhdGEuXG4gICAqL1xuICByZWFkb25seSBjb25zdHJ1Y3RQYXRoOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBNYXRjaEJhc2Uge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc3BlYzogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgdW5kZWZpbmVkPjtcblxuICBjb25zdHJ1Y3RvcihzcGVjOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuc3BlYyA9IE9iamVjdC5mcm9tRW50cmllcyhcbiAgICAgIHNwZWNcbiAgICAgICAgLmZsYXRNYXAobWV0YWRhdGEgPT4gbWV0YWRhdGEuc3BsaXQoJywnKSlcbiAgICAgICAgLm1hcChtZXRhZGF0YSA9PiBtZXRhZGF0YS5zcGxpdCgnPScsIDIpKSxcbiAgICApO1xuICB9XG59XG5cbi8qKlxuICogTWF0Y2ggcmVzb3VyY2UgbWV0YWRhdGEgd2l0aCB0aGUgZ2l2ZW4gc3BlY2lmaWNhdGlvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIE1ldGFkYXRhTWF0Y2ggZXh0ZW5kcyBNYXRjaEJhc2Uge1xuICBtYXRjaGVzKHJlc291cmNlTWV0YWRhdGE6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4pIHtcbiAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIE9iamVjdC5lbnRyaWVzKHRoaXMuc3BlYykpIHtcbiAgICAgIGNvbnN0IFtrZXksIHZhbHVlXSA9IGVudHJ5O1xuXG4gICAgICBpZiAocmVzb3VyY2VNZXRhZGF0YVtrZXldID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCAmJiByZXNvdXJjZU1ldGFkYXRhW2tleV0gIT09IHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIENmblRhZyB7XG4gIHJlYWRvbmx5IEtleTogc3RyaW5nO1xuICByZWFkb25seSBWYWx1ZTogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgVGFnc01hdGNoIGV4dGVuZHMgTWF0Y2hCYXNlIHtcbiAgbWF0Y2hlcyhyZXNvdXJjZVRhZ3M/OiBBcnJheTxDZm5UYWc+KSB7XG4gICAgaWYgKCFyZXNvdXJjZVRhZ3MpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIE9iamVjdC5lbnRyaWVzKHRoaXMuc3BlYykpIHtcbiAgICAgIGNvbnN0IFtrZXksIHZhbHVlXSA9IGVudHJ5O1xuXG4gICAgICBjb25zdCB0YWcgPSByZXNvdXJjZVRhZ3MuZmluZCh0ID0+IHQuS2V5ID09PSBrZXkpO1xuICAgICAgaWYgKCF0YWcpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCAmJiB0YWcuVmFsdWUgIT09IHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufSJdfQ==