UNPKG

@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
"use strict"; 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==