UNPKG

@cdklabs/cdk-amazonmq

Version:
61 lines 9.51 kB
"use strict"; /* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. SPDX-License-Identifier: Apache-2.0 */ Object.defineProperty(exports, "__esModule", { value: true }); exports.DynamicReferenceExtractor = void 0; const secret_1 = require("./secret"); const string_parameter_1 = require("./string-parameter"); class DynamicReferenceExtractor { static get regex() { return /(\{\{resolve:[a-zA-Z0-9:_-]*?\}\})/gm; } static extract(text) { let secrets; let parameters; const matches = text.matchAll(DynamicReferenceExtractor.regex); if (!matches) { return [secrets, parameters]; } const matchesArray = [...matches]; const secretsArray = matchesArray .filter((m) => secret_1.SecretsDynamicRefereceParser.looksLikeSecretDynamicReference(m[0])) .map((m) => ({ reference: m[0], components: secret_1.SecretsDynamicRefereceParser.parse(m[0]), })) .filter((s) => s.reference !== undefined); if (secretsArray.length > 0) { secrets = secretsArray; } const paramsArray = matchesArray .filter((m) => string_parameter_1.StringParameterDynamicRefereceParser.looksLikeParameterDynamicReference(m[0])) .map((m) => ({ reference: m[0], components: string_parameter_1.StringParameterDynamicRefereceParser.parse(m[0]), })) .filter((s) => s.reference !== undefined); if (paramsArray.length > 0) { parameters = paramsArray; } return [secrets, parameters]; } } exports.DynamicReferenceExtractor = DynamicReferenceExtractor; // const drs = [ // "{{resolve:secretsmanager:arn:aws:secretsmanager:us-west-2:123456789012:secret:MySecret-a1b2c3}}", // "{{resolve:secretsmanager:MySecret}}", // "{{resolve:secretsmanager:MySecret::::}}", // "{{resolve:secretsmanager:MySecret:SecretString:password}}", // "{{resolve:secretsmanager:arn:aws:secretsmanager:us-west-2:123456789012:secret:MySecret-a1b2c3}}", // "{{resolve:secretsmanager:arn:aws:secretsmanager:us-west-2:123456789012:secret:MySecret-a1b2c3:SecretString:password}}", // "{{resolve:secretsmanager:MySecret:SecretString:password:AWSPREVIOUS}}", // "resolve:ssm:golden-ami:2}}", // "{{resolve:ssm:golden-ami:2}}", // "{{resolve:ssm-secure:IAMUserPassword:10}}", // ].join("\n"); // const [secrets, parameters] = DynamicReferenceExtractor.extract(drs); // console.log("SECRETS", JSON.stringify(secrets, null, 2)); // console.log("PARAMETERS", JSON.stringify(parameters, null, 2)); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1yZWZlcmVuY2UtZXh0cmFjdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3JhYmJpdG1xL2N1c3RvbS1yZXNvdXJjZS9oYW5kbGVyL2R5bmFtaWMtcmVmZXJlbmNlcy9keW5hbWljLXJlZmVyZW5jZS1leHRyYWN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7RUFHRTs7O0FBRUYscUNBR2tCO0FBQ2xCLHlEQUc0QjtBQUU1QixNQUFhLHlCQUF5QjtJQUM1QixNQUFNLEtBQUssS0FBSztRQUN0QixPQUFPLHNDQUFzQyxDQUFDO0lBQ2hELENBQUM7SUFFTSxNQUFNLENBQUMsT0FBTyxDQUFDLElBQVk7UUFnQmhDLElBQUksT0FLUyxDQUFDO1FBQ2QsSUFBSSxVQUtTLENBQUM7UUFFZCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLHlCQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRS9ELElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNiLE9BQU8sQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDL0IsQ0FBQztRQUNELE1BQU0sWUFBWSxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQztRQUVsQyxNQUFNLFlBQVksR0FBRyxZQUFZO2FBQzlCLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQ1oscUNBQTRCLENBQUMsK0JBQStCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ25FO2FBQ0EsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ1gsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDZixVQUFVLEVBQUUscUNBQTRCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNyRCxDQUFDLENBQUM7YUFDRixNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUd2QyxDQUFDO1FBRUosSUFBSSxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzVCLE9BQU8sR0FBRyxZQUFZLENBQUM7UUFDekIsQ0FBQztRQUVELE1BQU0sV0FBVyxHQUFHLFlBQVk7YUFDN0IsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FDWix1REFBb0MsQ0FBQyxrQ0FBa0MsQ0FDckUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUNMLENBQ0Y7YUFDQSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDWCxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNmLFVBQVUsRUFBRSx1REFBb0MsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzdELENBQUMsQ0FBQzthQUNGLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsS0FBSyxTQUFTLENBR3ZDLENBQUM7UUFFSixJQUFJLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDM0IsVUFBVSxHQUFHLFdBQVcsQ0FBQztRQUMzQixDQUFDO1FBRUQsT0FBTyxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQztJQUMvQixDQUFDO0NBQ0Y7QUEvRUQsOERBK0VDO0FBRUQsZ0JBQWdCO0FBQ2hCLHVHQUF1RztBQUN2RywyQ0FBMkM7QUFDM0MsK0NBQStDO0FBQy9DLGlFQUFpRTtBQUNqRSx1R0FBdUc7QUFDdkcsNkhBQTZIO0FBQzdILDZFQUE2RTtBQUM3RSxrQ0FBa0M7QUFDbEMsb0NBQW9DO0FBQ3BDLGlEQUFpRDtBQUNqRCxnQkFBZ0I7QUFFaEIsd0VBQXdFO0FBRXhFLDREQUE0RDtBQUM1RCxrRUFBa0UiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG5TUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuKi9cblxuaW1wb3J0IHtcbiAgU2VjcmV0RHluYW1pY1JlZmVyZWNlQ29tcG9uZW50cyxcbiAgU2VjcmV0c0R5bmFtaWNSZWZlcmVjZVBhcnNlcixcbn0gZnJvbSBcIi4vc2VjcmV0XCI7XG5pbXBvcnQge1xuICBTdHJpbmdQYXJhbWV0ZXJEeW5hbWljUmVmZXJlY2VDb21wb25lbnRzLFxuICBTdHJpbmdQYXJhbWV0ZXJEeW5hbWljUmVmZXJlY2VQYXJzZXIsXG59IGZyb20gXCIuL3N0cmluZy1wYXJhbWV0ZXJcIjtcblxuZXhwb3J0IGNsYXNzIER5bmFtaWNSZWZlcmVuY2VFeHRyYWN0b3Ige1xuICBwcml2YXRlIHN0YXRpYyBnZXQgcmVnZXgoKSB7XG4gICAgcmV0dXJuIC8oXFx7XFx7cmVzb2x2ZTpbYS16QS1aMC05Ol8tXSo/XFx9XFx9KS9nbTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZXh0cmFjdCh0ZXh0OiBzdHJpbmcpOiBbXG4gICAgKFxuICAgICAgfCB7XG4gICAgICAgICAgcmVmZXJlbmNlOiBzdHJpbmc7XG4gICAgICAgICAgY29tcG9uZW50czogU2VjcmV0RHluYW1pY1JlZmVyZWNlQ29tcG9uZW50cztcbiAgICAgICAgfVtdXG4gICAgICB8IHVuZGVmaW5lZFxuICAgICksXG4gICAgKFxuICAgICAgfCB7XG4gICAgICAgICAgcmVmZXJlbmNlOiBzdHJpbmc7XG4gICAgICAgICAgY29tcG9uZW50czogU3RyaW5nUGFyYW1ldGVyRHluYW1pY1JlZmVyZWNlQ29tcG9uZW50cztcbiAgICAgICAgfVtdXG4gICAgICB8IHVuZGVmaW5lZFxuICAgICksXG4gIF0ge1xuICAgIGxldCBzZWNyZXRzOlxuICAgICAgfCB7XG4gICAgICAgICAgcmVmZXJlbmNlOiBzdHJpbmc7XG4gICAgICAgICAgY29tcG9uZW50czogU2VjcmV0RHluYW1pY1JlZmVyZWNlQ29tcG9uZW50cztcbiAgICAgICAgfVtdXG4gICAgICB8IHVuZGVmaW5lZDtcbiAgICBsZXQgcGFyYW1ldGVyczpcbiAgICAgIHwge1xuICAgICAgICAgIHJlZmVyZW5jZTogc3RyaW5nO1xuICAgICAgICAgIGNvbXBvbmVudHM6IFN0cmluZ1BhcmFtZXRlckR5bmFtaWNSZWZlcmVjZUNvbXBvbmVudHM7XG4gICAgICAgIH1bXVxuICAgICAgfCB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBtYXRjaGVzID0gdGV4dC5tYXRjaEFsbChEeW5hbWljUmVmZXJlbmNlRXh0cmFjdG9yLnJlZ2V4KTtcblxuICAgIGlmICghbWF0Y2hlcykge1xuICAgICAgcmV0dXJuIFtzZWNyZXRzLCBwYXJhbWV0ZXJzXTtcbiAgICB9XG4gICAgY29uc3QgbWF0Y2hlc0FycmF5ID0gWy4uLm1hdGNoZXNdO1xuXG4gICAgY29uc3Qgc2VjcmV0c0FycmF5ID0gbWF0Y2hlc0FycmF5XG4gICAgICAuZmlsdGVyKChtKSA9PlxuICAgICAgICBTZWNyZXRzRHluYW1pY1JlZmVyZWNlUGFyc2VyLmxvb2tzTGlrZVNlY3JldER5bmFtaWNSZWZlcmVuY2UobVswXSksXG4gICAgICApXG4gICAgICAubWFwKChtKSA9PiAoe1xuICAgICAgICByZWZlcmVuY2U6IG1bMF0sXG4gICAgICAgIGNvbXBvbmVudHM6IFNlY3JldHNEeW5hbWljUmVmZXJlY2VQYXJzZXIucGFyc2UobVswXSksXG4gICAgICB9KSlcbiAgICAgIC5maWx0ZXIoKHMpID0+IHMucmVmZXJlbmNlICE9PSB1bmRlZmluZWQpIGFzIHtcbiAgICAgIHJlZmVyZW5jZTogc3RyaW5nO1xuICAgICAgY29tcG9uZW50czogU2VjcmV0RHluYW1pY1JlZmVyZWNlQ29tcG9uZW50cztcbiAgICB9W107XG5cbiAgICBpZiAoc2VjcmV0c0FycmF5Lmxlbmd0aCA+IDApIHtcbiAgICAgIHNlY3JldHMgPSBzZWNyZXRzQXJyYXk7XG4gICAgfVxuXG4gICAgY29uc3QgcGFyYW1zQXJyYXkgPSBtYXRjaGVzQXJyYXlcbiAgICAgIC5maWx0ZXIoKG0pID0+XG4gICAgICAgIFN0cmluZ1BhcmFtZXRlckR5bmFtaWNSZWZlcmVjZVBhcnNlci5sb29rc0xpa2VQYXJhbWV0ZXJEeW5hbWljUmVmZXJlbmNlKFxuICAgICAgICAgIG1bMF0sXG4gICAgICAgICksXG4gICAgICApXG4gICAgICAubWFwKChtKSA9PiAoe1xuICAgICAgICByZWZlcmVuY2U6IG1bMF0sXG4gICAgICAgIGNvbXBvbmVudHM6IFN0cmluZ1BhcmFtZXRlckR5bmFtaWNSZWZlcmVjZVBhcnNlci5wYXJzZShtWzBdKSxcbiAgICAgIH0pKVxuICAgICAgLmZpbHRlcigocykgPT4gcy5yZWZlcmVuY2UgIT09IHVuZGVmaW5lZCkgYXMge1xuICAgICAgcmVmZXJlbmNlOiBzdHJpbmc7XG4gICAgICBjb21wb25lbnRzOiBTdHJpbmdQYXJhbWV0ZXJEeW5hbWljUmVmZXJlY2VDb21wb25lbnRzO1xuICAgIH1bXTtcblxuICAgIGlmIChwYXJhbXNBcnJheS5sZW5ndGggPiAwKSB7XG4gICAgICBwYXJhbWV0ZXJzID0gcGFyYW1zQXJyYXk7XG4gICAgfVxuXG4gICAgcmV0dXJuIFtzZWNyZXRzLCBwYXJhbWV0ZXJzXTtcbiAgfVxufVxuXG4vLyBjb25zdCBkcnMgPSBbXG4vLyAgIFwie3tyZXNvbHZlOnNlY3JldHNtYW5hZ2VyOmFybjphd3M6c2VjcmV0c21hbmFnZXI6dXMtd2VzdC0yOjEyMzQ1Njc4OTAxMjpzZWNyZXQ6TXlTZWNyZXQtYTFiMmMzfX1cIixcbi8vICAgXCJ7e3Jlc29sdmU6c2VjcmV0c21hbmFnZXI6TXlTZWNyZXR9fVwiLFxuLy8gICBcInt7cmVzb2x2ZTpzZWNyZXRzbWFuYWdlcjpNeVNlY3JldDo6Ojp9fVwiLFxuLy8gICBcInt7cmVzb2x2ZTpzZWNyZXRzbWFuYWdlcjpNeVNlY3JldDpTZWNyZXRTdHJpbmc6cGFzc3dvcmR9fVwiLFxuLy8gICBcInt7cmVzb2x2ZTpzZWNyZXRzbWFuYWdlcjphcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLXdlc3QtMjoxMjM0NTY3ODkwMTI6c2VjcmV0Ok15U2VjcmV0LWExYjJjM319XCIsXG4vLyAgIFwie3tyZXNvbHZlOnNlY3JldHNtYW5hZ2VyOmFybjphd3M6c2VjcmV0c21hbmFnZXI6dXMtd2VzdC0yOjEyMzQ1Njc4OTAxMjpzZWNyZXQ6TXlTZWNyZXQtYTFiMmMzOlNlY3JldFN0cmluZzpwYXNzd29yZH19XCIsXG4vLyAgIFwie3tyZXNvbHZlOnNlY3JldHNtYW5hZ2VyOk15U2VjcmV0OlNlY3JldFN0cmluZzpwYXNzd29yZDpBV1NQUkVWSU9VU319XCIsXG4vLyAgIFwicmVzb2x2ZTpzc206Z29sZGVuLWFtaToyfX1cIixcbi8vICAgXCJ7e3Jlc29sdmU6c3NtOmdvbGRlbi1hbWk6Mn19XCIsXG4vLyAgIFwie3tyZXNvbHZlOnNzbS1zZWN1cmU6SUFNVXNlclBhc3N3b3JkOjEwfX1cIixcbi8vIF0uam9pbihcIlxcblwiKTtcblxuLy8gY29uc3QgW3NlY3JldHMsIHBhcmFtZXRlcnNdID0gRHluYW1pY1JlZmVyZW5jZUV4dHJhY3Rvci5leHRyYWN0KGRycyk7XG5cbi8vIGNvbnNvbGUubG9nKFwiU0VDUkVUU1wiLCBKU09OLnN0cmluZ2lmeShzZWNyZXRzLCBudWxsLCAyKSk7XG4vLyBjb25zb2xlLmxvZyhcIlBBUkFNRVRFUlNcIiwgSlNPTi5zdHJpbmdpZnkocGFyYW1ldGVycywgbnVsbCwgMikpO1xuIl19