@liflig/cdk 1.48.0 → 1.50.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -54,7 +54,6 @@ const startDeployHandler = async (event) => {
54
54
  "status",
55
55
  "taskDefinitionArn",
56
56
  ];
57
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
58
57
  const updatedSpec = {
59
58
  ...Object.fromEntries(Object.entries(prevTaskDefinition).filter(([key]) => !exclude.includes(key))),
60
59
  containerDefinitions: [
@@ -102,4 +101,4 @@ const startDeployHandler = async (event) => {
102
101
  return {};
103
102
  };
104
103
  exports.startDeployHandler = startDeployHandler;
105
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnQtZGVwbG95LWhhbmRsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZWNzLXVwZGF0ZS1pbWFnZS9zdGFydC1kZXBsb3ktaGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFZQSxtREFBbUQ7QUFDbkQsNkJBQTZCO0FBQ3RCLE1BQU0sa0JBQWtCLEdBQW9DLEtBQUssRUFDdEUsS0FBSyxFQUNMLEVBQUU7SUFDRixNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUE7SUFDOUIsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsR0FBRyxFQUFjLENBQUE7SUFDckMsTUFBTSxFQUFFLEdBQUcsSUFBSSxHQUFHLENBQUMsY0FBYyxFQUF5QixDQUFBO0lBRTFELFNBQVMsVUFBVSxDQUFDLElBQVk7UUFDOUIsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUMvQixJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUU7WUFDdkIsTUFBTSxJQUFJLEtBQUssQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDLENBQUE7U0FDbkM7UUFDRCxPQUFPLEtBQUssQ0FBQTtJQUNkLENBQUM7SUFFRCxLQUFLLFVBQVUsVUFBVSxDQUN2QixXQUFtQixFQUNuQixXQUFtQjs7UUFFbkIsTUFBTSxRQUFRLEdBQUcsTUFBTSxHQUFHO2FBQ3ZCLGdCQUFnQixDQUFDO1lBQ2hCLE9BQU8sRUFBRSxXQUFXO1lBQ3BCLFFBQVEsRUFBRSxDQUFDLFdBQVcsQ0FBQztTQUN4QixDQUFDO2FBQ0QsT0FBTyxFQUFFLENBQUE7UUFFWixJQUFJLENBQUEsTUFBQSxRQUFRLENBQUMsUUFBUSwwQ0FBRSxNQUFNLE1BQUssQ0FBQyxFQUFFO1lBQ25DLE1BQU0sSUFBSSxLQUFLLENBQUMsc0JBQXNCLFdBQVcsSUFBSSxXQUFXLEVBQUUsQ0FBQyxDQUFBO1NBQ3BFO1FBRUQsT0FBTyxRQUFRLENB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O1FBQ1osUUFBUSxFQUFFLGVBQWU7UUFDekIsWUFBWSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDM0IsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHO1NBQ2YsQ0FBQztLQUNILENBQUM7U0FDRCxPQUFPLEVBQUUsQ0FBQTtJQUVaLGtFQUFrRTtJQUNsRSwwQ0FBMEM7SUFDMUMsSUFBSSxXQUFXLEtBQUssRUFBRSxFQUFFO1FBQ3RCLE1BQU0sS0FBSyxHQUFHLEdBQUcsYUFBYSxJQUFJLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQTtRQUM3QyxNQUFNLG9CQUFvQixDQUFDLFdBQVcsRUFBRSxXQUFXLEVBQUUsS0FBSyxDQUFDLENBQUE7S0FDNUQ7SUFFRCxPQUFPLEVBQUUsQ0FBQTtBQUNYLENBQUMsQ0FBQTtBQXhJWSxRQUFBLGtCQUFrQixzQkF3STlCIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1hc3NpZ25tZW50ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWNhbGwgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtbWVtYmVyLWFjY2VzcyAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1yZXR1cm4gKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby12YXItcmVxdWlyZXMgKi9cbmltcG9ydCB0eXBlIHsgSGFuZGxlciB9IGZyb20gXCJhd3MtbGFtYmRhXCJcbmltcG9ydCB0eXBlICogYXMgX0FXUyBmcm9tIFwiYXdzLXNka1wiXG5cbmludGVyZmFjZSBFeHBlY3RlZElucHV0IHtcbiAgdGFnOiBzdHJpbmdcbn1cblxuLy8gVGhpcyBmdW5jdGlvbiBpcyBpbmxpbmUtY29tcGlsZWQgZm9yIHRoZSBsYW1iZGEuXG4vLyBJdCBtdXN0IGJlIHNlbGYtY29udGFpbmVkLlxuZXhwb3J0IGNvbnN0IHN0YXJ0RGVwbG95SGFuZGxlcjogSGFuZGxlcjxQYXJ0aWFsPEV4cGVjdGVkSW5wdXQ+PiA9IGFzeW5jIChcbiAgZXZlbnQsXG4pID0+IHtcbiAgY29uc3QgQVdTID0gcmVxdWlyZShcImF3cy1zZGtcIilcbiAgY29uc3QgZWNzID0gbmV3IEFXUy5FQ1MoKSBhcyBfQVdTLkVDU1xuICBjb25zdCBzbSA9IG5ldyBBV1MuU2VjcmV0c01hbmFnZXIoKSBhcyBfQVdTLlNlY3JldHNNYW5hZ2VyXG5cbiAgZnVuY3Rpb24gcmVxdWlyZUVudihuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHZhbHVlID0gcHJvY2Vzcy5lbnZbbmFtZV1cbiAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBNaXNzaW5nICR7bmFtZX1gKVxuICAgIH1cbiAgICByZXR1cm4gdmFsdWVcbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIGdldFNlcnZpY2UoXG4gICAgY2x1c3Rlck5hbWU6IHN0cmluZyxcbiAgICBzZXJ2aWNlTmFtZTogc3RyaW5nLFxuICApOiBQcm9taXNlPEFXUy5FQ1MuU2VydmljZT4ge1xuICAgIGNvbnN0IHNlcnZpY2VzID0gYXdhaXQgZWNzXG4gICAgICAuZGVzY3JpYmVTZXJ2aWNlcyh7XG4gICAgICAgIGNsdXN0ZXI6IGNsdXN0ZXJOYW1lLFxuICAgICAgICBzZXJ2aWNlczogW3NlcnZpY2VOYW1lXSxcbiAgICAgIH0pXG4gICAgICAucHJvbWlzZSgpXG5cbiAgICBpZiAoc2VydmljZXMuc2VydmljZXM/Lmxlbmd0aCAhPT0gMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBTZXJ2aWNlIG5vdCBmb3VuZDogJHtjbHVzdGVyTmFtZX0vJHtzZXJ2aWNlTmFtZX1gKVxuICAgIH1cblxuICAgIHJldHVybiBzZXJ2aWNlcy5zZXJ2aWNlc1swXVxuICB9XG5cbiAgYXN5bmMgZnVuY3Rpb24gZ2V0VGFza0RlZmluaXRpb24oXG4gICAgdGFza0RlZmluaXRpb246IHN0cmluZyxcbiAgKTogUHJvbWlzZTxBV1MuRUNTLlRhc2tEZWZpbml0aW9uPiB7XG4gICAgcmV0dXJuIChcbiAgICAgIGF3YWl0IGVjc1xuICAgICAgICAuZGVzY3JpYmVUYXNrRGVmaW5pdGlvbih7XG4gICAgICAgICAgdGFza0RlZmluaXRpb246IHRhc2tEZWZpbml0aW9uLFxuICAgICAgICB9KVxuICAgICAgICAucHJvbWlzZSgpXG4gICAgKS50YXNrRGVmaW5pdGlvbiFcbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIHVwZGF0ZVNlcnZpY2VUb0ltYWdlKFxuICAgIGNsdXN0ZXJOYW1lOiBzdHJpbmcsXG4gICAgc2VydmljZU5hbWU6IHN0cmluZyxcbiAgICBpbWFnZTogc3RyaW5nLFxuICApIHtcbiAgICBjb25zb2xlLmxvZyhgQ2x1c3RlciBuYW1lOiAke2NsdXN0ZXJOYW1lfWApXG4gICAgY29uc29sZS5sb2coYFNlcnZpY2UgbmFtZTogJHtzZXJ2aWNlTmFtZX1gKVxuXG4gICAgY29uc3Qgc2VydmljZSA9IGF3YWl0IGdldFNlcnZpY2UoY2x1c3Rlck5hbWUsIHNlcnZpY2VOYW1lKVxuICAgIGNvbnN0IHByZXZUYXNrRGVmaW5pdGlvbiA9IGF3YWl0IGdldFRhc2tEZWZpbml0aW9uKHNlcnZpY2UudGFza0RlZmluaXRpb24hKVxuXG4gICAgLy8gRG9uJ3QgYm90aGVyIHVwZGF0aW5nIHRoZSBzZXJ2aWNlIGlmIHRoZSBpbWFnZSBpcyBhbHJlYWR5IHRoZSBsYXRlc3QuXG4gICAgY29uc3QgcHJldkltYWdlID0gcHJldlRhc2tEZWZpbml0aW9uLmNvbnRhaW5lckRlZmluaXRpb25zIVswXS5pbWFnZSFcbiAgICBpZiAocHJldkltYWdlID09PSBpbWFnZSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc29sZS5sb2coXG4gICAgICBgVXBkYXRpbmcgaW1hZ2UgZm9yIHNlcnZpY2UgJyR7c2VydmljZU5hbWV9JyBmcm9tICcke3ByZXZJbWFnZX0nIHRvICcke2ltYWdlfSdgLFxuICAgIClcblxuICAgIGNvbnN0IGV4Y2x1ZGUgPSBbXG4gICAgICBcInJlZ2lzdGVyZWRBdFwiLFxuICAgICAgXCJyZWdpc3RlcmVkQnlcIixcbiAgICAgIFwiY29tcGF0aWJpbGl0aWVzXCIsXG4gICAgICBcInJlcXVpcmVzQXR0cmlidXRlc1wiLFxuICAgICAgXCJyZXZpc2lvblwiLFxuICAgICAgXCJzdGF0dXNcIixcbiAgICAgIFwidGFza0RlZmluaXRpb25Bcm5cIixcbiAgICBdXG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIGNvbnN0IHVwZGF0ZWRTcGVjOiBhbnkgPSB7XG4gICAgICAuLi5PYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICAgIE9iamVjdC5lbnRyaWVzKHByZXZUYXNrRGVmaW5pdGlvbikuZmlsdGVyKFxuICAgICAgICAgIChba2V5XSkgPT4gIWV4Y2x1ZGUuaW5jbHVkZXMoa2V5KSxcbiAgICAgICAgKSxcbiAgICAgICksXG4gICAgICBjb250YWluZXJEZWZpbml0aW9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgLi4ucHJldlRhc2tEZWZpbml0aW9uLmNvbnRhaW5lckRlZmluaXRpb25zIVswXSxcbiAgICAgICAgICBpbWFnZSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfVxuXG4gICAgY29uc3QgdXBkYXRlZFRhc2tEZWZpbml0aW9uID0gKFxuICAgICAgYXdhaXQgZWNzLnJlZ2lzdGVyVGFza0RlZmluaXRpb24odXBkYXRlZFNwZWMpLnByb21pc2UoKVxuICAgICkudGFza0RlZmluaXRpb24hXG5cbiAgICBhd2FpdCBlY3NcbiAgICAgIC51cGRhdGVTZXJ2aWNlKHtcbiAgICAgICAgY2x1c3RlcjogY2x1c3Rlck5hbWUsXG4gICAgICAgIHNlcnZpY2U6IHNlcnZpY2VOYW1lLFxuICAgICAgICB0YXNrRGVmaW5pdGlvbjogdXBkYXRlZFRhc2tEZWZpbml0aW9uLnRhc2tEZWZpbml0aW9uQXJuLFxuICAgICAgfSlcbiAgICAgIC5wcm9taXNlKClcblxuICAgIGNvbnNvbGUubG9nKFwiU2VydmljZSBpcyB1cGRhdGVkXCIpXG4gIH1cblxuICBjb25zdCBjbHVzdGVyTmFtZSA9IHJlcXVpcmVFbnYoXCJDTFVTVEVSX05BTUVcIilcbiAgY29uc3Qgc2VydmljZU5hbWUgPSByZXF1aXJlRW52KFwiU0VSVklDRV9OQU1FXCIpXG4gIGNvbnN0IHJlcG9zaXRvcnlVcmwgPSByZXF1aXJlRW52KFwiUkVQT1NJVE9SWV9VUkxcIilcbiAgY29uc3QgZWNyVGFnU2VjcmV0QXJuID0gcmVxdWlyZUVudihcIkVDUl9UQUdfU0VDUkVUX0FSTlwiKVxuXG4gIC8vIFZhbGlkYXRlIHRoZSBpbnB1dC5cbiAgaWYgKHR5cGVvZiBldmVudC50YWcgIT09IFwic3RyaW5nXCIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJJbnB1dCBpbnZhbGlkOiBcIiArIEpTT04uc3RyaW5naWZ5KGV2ZW50LCB1bmRlZmluZWQsIFwiICBcIikpXG4gIH1cblxuICAvLyBSZWdpc3RlciB0YWcgYXMgY3VycmVudCB0YXJnZXQuXG4gIC8vIFRoaXMgaXMgbmVlZGVkIHNvIHRoYXQgQ2xvdWRGb3JtYXRpb24gZGVwbG95bWVudHMsIGUuZy5cbiAgLy8gdXBkYXRlcyB0byB0aGUgVGFzayBEZWZpbml0aW9uLCB3aWxsIHVzZSB0aGUgc2FtZSBpbWFnZS5cbiAgYXdhaXQgc21cbiAgICAudXBkYXRlU2VjcmV0KHtcbiAgICAgIFNlY3JldElkOiBlY3JUYWdTZWNyZXRBcm4sXG4gICAgICBTZWNyZXRTdHJpbmc6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgdGFnOiBldmVudC50YWcsXG4gICAgICB9KSxcbiAgICB9KVxuICAgIC5wcm9taXNlKClcblxuICAvLyBVcGRhdGUgdGhlIHNlcnZpY2UgaWYgd2Uga25vdyB0aGUgc2VydmljZSBuYW1lLiBUaGlzIGlzIHVua25vd25cbiAgLy8gZHVyaW5nIGluaXRpYWwgZGVwbG95bWVudCBvZiB0aGUgc3RhY2suXG4gIGlmIChzZXJ2aWNlTmFtZSAhPT0gXCJcIikge1xuICAgIGNvbnN0IGltYWdlID0gYCR7cmVwb3NpdG9yeVVybH06JHtldmVudC50YWd9YFxuICAgIGF3YWl0IHVwZGF0ZVNlcnZpY2VUb0ltYWdlKGNsdXN0ZXJOYW1lLCBzZXJ2aWNlTmFtZSwgaW1hZ2UpXG4gIH1cblxuICByZXR1cm4ge31cbn1cbiJdfQ==
104
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhcnQtZGVwbG95LWhhbmRsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZWNzLXVwZGF0ZS1pbWFnZS9zdGFydC1kZXBsb3ktaGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFhQSxtREFBbUQ7QUFDbkQsNkJBQTZCO0FBQ3RCLE1BQU0sa0JBQWtCLEdBQW9DLEtBQUssRUFDdEUsS0FBSyxFQUNMLEVBQUU7SUFDRixNQUFNLEdBQUcsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUE7SUFDOUIsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsR0FBRyxFQUFjLENBQUE7SUFDckMsTUFBTSxFQUFFLEdBQUcsSUFBSSxHQUFHLENBQUMsY0FBYyxFQUF5QixDQUFBO0lBRTFELFNBQVMsVUFBVSxDQUFDLElBQVk7UUFDOUIsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUMvQixJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUU7WUFDdkIsTUFBTSxJQUFJLEtBQUssQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDLENBQUE7U0FDbkM7UUFDRCxPQUFPLEtBQUssQ0FBQTtJQUNkLENBQUM7SUFFRCxLQUFLLFVBQVUsVUFBVSxDQUN2QixXQUFtQixFQUNuQixXQUFtQjs7UUFFbkIsTUFBTSxRQUFRLEdBQUcsTUFBTSxHQUFHO2FBQ3ZCLGdCQUFnQixDQUFDO1lBQ2hCLE9BQU8sRUFBRSxXQUFXO1lBQ3BCLFFBQVEsRUFBRSxDQUFDLFdBQVcsQ0FBQztTQUN4QixDQUFDO2FBQ0QsT0FBTyxFQUFFLENBQUE7UUFFWixJQUFJLENBQUEsTUFBQSxRQUFRLENBQUMsUUFBUSwwQ0FBRSxNQUFNLE1BQUssQ0FBQyxFQUFFO1lBQ25DLE1BQU0sSUFBSSxLQUFLLENBQUMsc0JBQXNCLFdBQVcsSUFBSSxXQUFXLEVBQUUsQ0FBQyxDQUFBO1NBQ3BFO1FBRUQsT0FBTyxRQUFRLENB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LEVBQUUsZUFBZTtRQUN6QixZQUFZLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUMzQixHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUc7U0FDZixDQUFDO0tBQ0gsQ0FBQztTQUNELE9BQU8sRUFBRSxDQUFBO0lBRVosa0VBQWtFO0lBQ2xFLDBDQUEwQztJQUMxQyxJQUFJLFdBQVcsS0FBSyxFQUFFLEVBQUU7UUFDdEIsTUFBTSxLQUFLLEdBQUcsR0FBRyxhQUFhLElBQUksS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFBO1FBQzdDLE1BQU0sb0JBQW9CLENBQUMsV0FBVyxFQUFFLFdBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQTtLQUM1RDtJQUVELE9BQU8sRUFBRSxDQUFBO0FBQ1gsQ0FBQyxDQUFBO0FBdklZLFFBQUEsa0JBQWtCLHNCQXVJOUIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWFzc2lnbm1lbnQgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtY2FsbCAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1tZW1iZXItYWNjZXNzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLXJldHVybiAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXZhci1yZXF1aXJlcyAqL1xuaW1wb3J0IHR5cGUgeyBIYW5kbGVyIH0gZnJvbSBcImF3cy1sYW1iZGFcIlxuaW1wb3J0IHR5cGUgKiBhcyBfQVdTIGZyb20gXCJhd3Mtc2RrXCJcbmltcG9ydCB7IFJlZ2lzdGVyVGFza0RlZmluaXRpb25SZXF1ZXN0IH0gZnJvbSBcImF3cy1zZGsvY2xpZW50cy9lY3NcIlxuXG5pbnRlcmZhY2UgRXhwZWN0ZWRJbnB1dCB7XG4gIHRhZzogc3RyaW5nXG59XG5cbi8vIFRoaXMgZnVuY3Rpb24gaXMgaW5saW5lLWNvbXBpbGVkIGZvciB0aGUgbGFtYmRhLlxuLy8gSXQgbXVzdCBiZSBzZWxmLWNvbnRhaW5lZC5cbmV4cG9ydCBjb25zdCBzdGFydERlcGxveUhhbmRsZXI6IEhhbmRsZXI8UGFydGlhbDxFeHBlY3RlZElucHV0Pj4gPSBhc3luYyAoXG4gIGV2ZW50LFxuKSA9PiB7XG4gIGNvbnN0IEFXUyA9IHJlcXVpcmUoXCJhd3Mtc2RrXCIpXG4gIGNvbnN0IGVjcyA9IG5ldyBBV1MuRUNTKCkgYXMgX0FXUy5FQ1NcbiAgY29uc3Qgc20gPSBuZXcgQVdTLlNlY3JldHNNYW5hZ2VyKCkgYXMgX0FXUy5TZWNyZXRzTWFuYWdlclxuXG4gIGZ1bmN0aW9uIHJlcXVpcmVFbnYobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCB2YWx1ZSA9IHByb2Nlc3MuZW52W25hbWVdXG4gICAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTWlzc2luZyAke25hbWV9YClcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlXG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiBnZXRTZXJ2aWNlKFxuICAgIGNsdXN0ZXJOYW1lOiBzdHJpbmcsXG4gICAgc2VydmljZU5hbWU6IHN0cmluZyxcbiAgKTogUHJvbWlzZTxBV1MuRUNTLlNlcnZpY2U+IHtcbiAgICBjb25zdCBzZXJ2aWNlcyA9IGF3YWl0IGVjc1xuICAgICAgLmRlc2NyaWJlU2VydmljZXMoe1xuICAgICAgICBjbHVzdGVyOiBjbHVzdGVyTmFtZSxcbiAgICAgICAgc2VydmljZXM6IFtzZXJ2aWNlTmFtZV0sXG4gICAgICB9KVxuICAgICAgLnByb21pc2UoKVxuXG4gICAgaWYgKHNlcnZpY2VzLnNlcnZpY2VzPy5sZW5ndGggIT09IDEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgU2VydmljZSBub3QgZm91bmQ6ICR7Y2x1c3Rlck5hbWV9LyR7c2VydmljZU5hbWV9YClcbiAgICB9XG5cbiAgICByZXR1cm4gc2VydmljZXMuc2VydmljZXNbMF1cbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIGdldFRhc2tEZWZpbml0aW9uKFxuICAgIHRhc2tEZWZpbml0aW9uOiBzdHJpbmcsXG4gICk6IFByb21pc2U8QVdTLkVDUy5UYXNrRGVmaW5pdGlvbj4ge1xuICAgIHJldHVybiAoXG4gICAgICBhd2FpdCBlY3NcbiAgICAgICAgLmRlc2NyaWJlVGFza0RlZmluaXRpb24oe1xuICAgICAgICAgIHRhc2tEZWZpbml0aW9uOiB0YXNrRGVmaW5pdGlvbixcbiAgICAgICAgfSlcbiAgICAgICAgLnByb21pc2UoKVxuICAgICkudGFza0RlZmluaXRpb24hXG4gIH1cblxuICBhc3luYyBmdW5jdGlvbiB1cGRhdGVTZXJ2aWNlVG9JbWFnZShcbiAgICBjbHVzdGVyTmFtZTogc3RyaW5nLFxuICAgIHNlcnZpY2VOYW1lOiBzdHJpbmcsXG4gICAgaW1hZ2U6IHN0cmluZyxcbiAgKSB7XG4gICAgY29uc29sZS5sb2coYENsdXN0ZXIgbmFtZTogJHtjbHVzdGVyTmFtZX1gKVxuICAgIGNvbnNvbGUubG9nKGBTZXJ2aWNlIG5hbWU6ICR7c2VydmljZU5hbWV9YClcblxuICAgIGNvbnN0IHNlcnZpY2UgPSBhd2FpdCBnZXRTZXJ2aWNlKGNsdXN0ZXJOYW1lLCBzZXJ2aWNlTmFtZSlcbiAgICBjb25zdCBwcmV2VGFza0RlZmluaXRpb24gPSBhd2FpdCBnZXRUYXNrRGVmaW5pdGlvbihzZXJ2aWNlLnRhc2tEZWZpbml0aW9uISlcblxuICAgIC8vIERvbid0IGJvdGhlciB1cGRhdGluZyB0aGUgc2VydmljZSBpZiB0aGUgaW1hZ2UgaXMgYWxyZWFkeSB0aGUgbGF0ZXN0LlxuICAgIGNvbnN0IHByZXZJbWFnZSA9IHByZXZUYXNrRGVmaW5pdGlvbi5jb250YWluZXJEZWZpbml0aW9ucyFbMF0uaW1hZ2UhXG4gICAgaWYgKHByZXZJbWFnZSA9PT0gaW1hZ2UpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnNvbGUubG9nKFxuICAgICAgYFVwZGF0aW5nIGltYWdlIGZvciBzZXJ2aWNlICcke3NlcnZpY2VOYW1lfScgZnJvbSAnJHtwcmV2SW1hZ2V9JyB0byAnJHtpbWFnZX0nYCxcbiAgICApXG5cbiAgICBjb25zdCBleGNsdWRlID0gW1xuICAgICAgXCJyZWdpc3RlcmVkQXRcIixcbiAgICAgIFwicmVnaXN0ZXJlZEJ5XCIsXG4gICAgICBcImNvbXBhdGliaWxpdGllc1wiLFxuICAgICAgXCJyZXF1aXJlc0F0dHJpYnV0ZXNcIixcbiAgICAgIFwicmV2aXNpb25cIixcbiAgICAgIFwic3RhdHVzXCIsXG4gICAgICBcInRhc2tEZWZpbml0aW9uQXJuXCIsXG4gICAgXVxuXG4gICAgY29uc3QgdXBkYXRlZFNwZWM6IFJlZ2lzdGVyVGFza0RlZmluaXRpb25SZXF1ZXN0ID0ge1xuICAgICAgLi4uT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgICBPYmplY3QuZW50cmllcyhwcmV2VGFza0RlZmluaXRpb24pLmZpbHRlcihcbiAgICAgICAgICAoW2tleV0pID0+ICFleGNsdWRlLmluY2x1ZGVzKGtleSksXG4gICAgICAgICksXG4gICAgICApLFxuICAgICAgY29udGFpbmVyRGVmaW5pdGlvbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIC4uLnByZXZUYXNrRGVmaW5pdGlvbi5jb250YWluZXJEZWZpbml0aW9ucyFbMF0sXG4gICAgICAgICAgaW1hZ2UsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0gYXMgUmVnaXN0ZXJUYXNrRGVmaW5pdGlvblJlcXVlc3RcblxuICAgIGNvbnN0IHVwZGF0ZWRUYXNrRGVmaW5pdGlvbiA9IChcbiAgICAgIGF3YWl0IGVjcy5yZWdpc3RlclRhc2tEZWZpbml0aW9uKHVwZGF0ZWRTcGVjKS5wcm9taXNlKClcbiAgICApLnRhc2tEZWZpbml0aW9uIVxuXG4gICAgYXdhaXQgZWNzXG4gICAgICAudXBkYXRlU2VydmljZSh7XG4gICAgICAgIGNsdXN0ZXI6IGNsdXN0ZXJOYW1lLFxuICAgICAgICBzZXJ2aWNlOiBzZXJ2aWNlTmFtZSxcbiAgICAgICAgdGFza0RlZmluaXRpb246IHVwZGF0ZWRUYXNrRGVmaW5pdGlvbi50YXNrRGVmaW5pdGlvbkFybixcbiAgICAgIH0pXG4gICAgICAucHJvbWlzZSgpXG5cbiAgICBjb25zb2xlLmxvZyhcIlNlcnZpY2UgaXMgdXBkYXRlZFwiKVxuICB9XG5cbiAgY29uc3QgY2x1c3Rlck5hbWUgPSByZXF1aXJlRW52KFwiQ0xVU1RFUl9OQU1FXCIpXG4gIGNvbnN0IHNlcnZpY2VOYW1lID0gcmVxdWlyZUVudihcIlNFUlZJQ0VfTkFNRVwiKVxuICBjb25zdCByZXBvc2l0b3J5VXJsID0gcmVxdWlyZUVudihcIlJFUE9TSVRPUllfVVJMXCIpXG4gIGNvbnN0IGVjclRhZ1NlY3JldEFybiA9IHJlcXVpcmVFbnYoXCJFQ1JfVEFHX1NFQ1JFVF9BUk5cIilcblxuICAvLyBWYWxpZGF0ZSB0aGUgaW5wdXQuXG4gIGlmICh0eXBlb2YgZXZlbnQudGFnICE9PSBcInN0cmluZ1wiKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiSW5wdXQgaW52YWxpZDogXCIgKyBKU09OLnN0cmluZ2lmeShldmVudCwgdW5kZWZpbmVkLCBcIiAgXCIpKVxuICB9XG5cbiAgLy8gUmVnaXN0ZXIgdGFnIGFzIGN1cnJlbnQgdGFyZ2V0LlxuICAvLyBUaGlzIGlzIG5lZWRlZCBzbyB0aGF0IENsb3VkRm9ybWF0aW9uIGRlcGxveW1lbnRzLCBlLmcuXG4gIC8vIHVwZGF0ZXMgdG8gdGhlIFRhc2sgRGVmaW5pdGlvbiwgd2lsbCB1c2UgdGhlIHNhbWUgaW1hZ2UuXG4gIGF3YWl0IHNtXG4gICAgLnVwZGF0ZVNlY3JldCh7XG4gICAgICBTZWNyZXRJZDogZWNyVGFnU2VjcmV0QXJuLFxuICAgICAgU2VjcmV0U3RyaW5nOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIHRhZzogZXZlbnQudGFnLFxuICAgICAgfSksXG4gICAgfSlcbiAgICAucHJvbWlzZSgpXG5cbiAgLy8gVXBkYXRlIHRoZSBzZXJ2aWNlIGlmIHdlIGtub3cgdGhlIHNlcnZpY2UgbmFtZS4gVGhpcyBpcyB1bmtub3duXG4gIC8vIGR1cmluZyBpbml0aWFsIGRlcGxveW1lbnQgb2YgdGhlIHN0YWNrLlxuICBpZiAoc2VydmljZU5hbWUgIT09IFwiXCIpIHtcbiAgICBjb25zdCBpbWFnZSA9IGAke3JlcG9zaXRvcnlVcmx9OiR7ZXZlbnQudGFnfWBcbiAgICBhd2FpdCB1cGRhdGVTZXJ2aWNlVG9JbWFnZShjbHVzdGVyTmFtZSwgc2VydmljZU5hbWUsIGltYWdlKVxuICB9XG5cbiAgcmV0dXJuIHt9XG59XG4iXX0=
@@ -0,0 +1 @@
1
+ export { KinesisToDatadogStream, KinesisToDatadogStreamProps, } from "./kinesis-to-datadog-stream";
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.KinesisToDatadogStream = void 0;
4
+ var kinesis_to_datadog_stream_1 = require("./kinesis-to-datadog-stream");
5
+ Object.defineProperty(exports, "KinesisToDatadogStream", { enumerable: true, get: function () { return kinesis_to_datadog_stream_1.KinesisToDatadogStream; } });
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMva2luZXNpcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5RUFHb0M7QUFGbEMsbUlBQUEsc0JBQXNCLE9BQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQge1xuICBLaW5lc2lzVG9EYXRhZG9nU3RyZWFtLFxuICBLaW5lc2lzVG9EYXRhZG9nU3RyZWFtUHJvcHMsXG59IGZyb20gXCIuL2tpbmVzaXMtdG8tZGF0YWRvZy1zdHJlYW1cIlxuIl19
@@ -0,0 +1,27 @@
1
+ import * as logs from "@aws-cdk/aws-logs";
2
+ import * as cdk from "@aws-cdk/core";
3
+ export interface KinesisToDatadogStreamProps {
4
+ /**
5
+ *
6
+ * The name of the SecretsManager secret where your Datadog API key is saved.
7
+ *
8
+ * The secret must be a JSON object on the format { "value": "SECRET" }
9
+ *
10
+ */
11
+ datadogApiKeySecretName: string;
12
+ /**
13
+ *
14
+ * The CloudWatch log groups from you are streaming to Datadog
15
+ *
16
+ */
17
+ logGroups: logs.LogGroup[];
18
+ }
19
+ /**
20
+ *
21
+ * Forwards logs from log-groups in CloudWatch to a Datadog account.
22
+ * The logs are delivered through a Firehose delivery stream, which is being subscribed to the log-groups in CloudWatch.
23
+ *
24
+ */
25
+ export declare class KinesisToDatadogStream extends cdk.Construct {
26
+ constructor(scope: cdk.Construct, id: string, props: KinesisToDatadogStreamProps);
27
+ }
@@ -0,0 +1,124 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.KinesisToDatadogStream = void 0;
4
+ const iam = require("@aws-cdk/aws-iam");
5
+ const firehose = require("@aws-cdk/aws-kinesisfirehose");
6
+ const logs = require("@aws-cdk/aws-logs");
7
+ const s3 = require("@aws-cdk/aws-s3");
8
+ const aws_s3_1 = require("@aws-cdk/aws-s3");
9
+ const secretsmanager = require("@aws-cdk/aws-secretsmanager");
10
+ const cdk = require("@aws-cdk/core");
11
+ /**
12
+ *
13
+ * Forwards logs from log-groups in CloudWatch to a Datadog account.
14
+ * The logs are delivered through a Firehose delivery stream, which is being subscribed to the log-groups in CloudWatch.
15
+ *
16
+ */
17
+ class KinesisToDatadogStream extends cdk.Construct {
18
+ constructor(scope, id, props) {
19
+ super(scope, id);
20
+ const deliveryStreamLogGroup = new logs.LogGroup(this, "DeliveryStreamLogGroup");
21
+ const deliveryStreamLogStream = new logs.LogStream(this, "DeliveryStreamLogStream", {
22
+ logGroup: deliveryStreamLogGroup,
23
+ });
24
+ const failedDataBucket = new s3.Bucket(this, "FailedDataBucket", {
25
+ blockPublicAccess: aws_s3_1.BlockPublicAccess.BLOCK_ALL,
26
+ });
27
+ const cloudWatchLogsRole = new iam.Role(this, "CloudWatchLogsRole", {
28
+ assumedBy: new iam.ServicePrincipal(`logs.${cdk.Stack.of(this).region}.amazonaws.com`),
29
+ });
30
+ const firehoseLogsRole = new iam.Role(this, "FirehoseLogsRole", {
31
+ assumedBy: new iam.ServicePrincipal("firehose.amazonaws.com"),
32
+ });
33
+ const datadogDeliveryStream = new firehose.CfnDeliveryStream(this, "DeliveryStream", {
34
+ deliveryStreamType: "DirectPut",
35
+ httpEndpointDestinationConfiguration: {
36
+ roleArn: firehoseLogsRole.roleArn,
37
+ endpointConfiguration: {
38
+ url: "https://aws-kinesis-http-intake.logs.datadoghq.eu/v1/input",
39
+ accessKey: secretsmanager.Secret.fromSecretNameV2(scope, "DatadogApiKey", props.datadogApiKeySecretName)
40
+ .secretValueFromJson("value")
41
+ .toString(),
42
+ name: "datadog-logs-endpoint",
43
+ },
44
+ requestConfiguration: {
45
+ contentEncoding: "GZIP",
46
+ },
47
+ cloudWatchLoggingOptions: {
48
+ enabled: true,
49
+ logGroupName: deliveryStreamLogGroup.logGroupName,
50
+ logStreamName: deliveryStreamLogStream.logStreamName,
51
+ },
52
+ bufferingHints: {
53
+ intervalInSeconds: 60,
54
+ sizeInMBs: 4,
55
+ },
56
+ retryOptions: {
57
+ durationInSeconds: 60,
58
+ },
59
+ s3BackupMode: "FailedDataOnly",
60
+ s3Configuration: {
61
+ bucketArn: failedDataBucket.bucketArn,
62
+ compressionFormat: "UNCOMPRESSED",
63
+ roleArn: firehoseLogsRole.roleArn,
64
+ },
65
+ },
66
+ });
67
+ new iam.Policy(this, "CloudWatchLogsPolicy", {
68
+ document: new iam.PolicyDocument({
69
+ statements: [
70
+ new iam.PolicyStatement({
71
+ actions: ["firehose:PutRecord", "firehose:PutRecordBatch"],
72
+ resources: [datadogDeliveryStream.attrArn],
73
+ }),
74
+ ],
75
+ }),
76
+ roles: [cloudWatchLogsRole],
77
+ });
78
+ new iam.Policy(this, "FirehoseLogsPolicy", {
79
+ document: new iam.PolicyDocument({
80
+ statements: [
81
+ new iam.PolicyStatement({
82
+ actions: [
83
+ "s3:AbortMultipartUpload",
84
+ "s3:GetBucketLocation",
85
+ "s3:GetObject",
86
+ "s3:ListBucket",
87
+ "s3:ListBucketMultipartUploads",
88
+ "s3:PutObject",
89
+ ],
90
+ resources: [
91
+ failedDataBucket.bucketArn,
92
+ `${failedDataBucket.bucketArn}/*`,
93
+ ],
94
+ }),
95
+ new iam.PolicyStatement({
96
+ actions: ["logs:PutLogEvents"],
97
+ resources: [
98
+ `arn:aws:logs:${cdk.Stack.of(this).region}:${cdk.Stack.of(this).account}:log-group:${deliveryStreamLogGroup.logGroupName}:log-stream:${deliveryStreamLogStream.logStreamName}`,
99
+ ],
100
+ }),
101
+ new iam.PolicyStatement({
102
+ actions: [
103
+ "kinesis:DescribeStream",
104
+ "kinesis:GetShardIterator",
105
+ "kinesis:GetRecords",
106
+ ],
107
+ resources: [datadogDeliveryStream.attrArn],
108
+ }),
109
+ ],
110
+ }),
111
+ roles: [firehoseLogsRole],
112
+ });
113
+ props.logGroups.forEach((logGroup, index) => {
114
+ new logs.CfnSubscriptionFilter(this, `SubscriptionFilter${index}`, {
115
+ logGroupName: logGroup.logGroupName,
116
+ destinationArn: datadogDeliveryStream.attrArn,
117
+ filterPattern: logs.FilterPattern.allEvents().logPatternString,
118
+ roleArn: cloudWatchLogsRole.roleArn,
119
+ });
120
+ });
121
+ }
122
+ }
123
+ exports.KinesisToDatadogStream = KinesisToDatadogStream;
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2luZXNpcy10by1kYXRhZG9nLXN0cmVhbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9raW5lc2lzL2tpbmVzaXMtdG8tZGF0YWRvZy1zdHJlYW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsd0NBQXVDO0FBQ3ZDLHlEQUF3RDtBQUN4RCwwQ0FBeUM7QUFDekMsc0NBQXFDO0FBQ3JDLDRDQUFtRDtBQUNuRCw4REFBNkQ7QUFDN0QscUNBQW9DO0FBbUJwQzs7Ozs7R0FLRztBQUNILE1BQWEsc0JBQXVCLFNBQVEsR0FBRyxDQUFDLFNBQVM7SUFDdkQsWUFDRSxLQUFvQixFQUNwQixFQUFVLEVBQ1YsS0FBa0M7UUFFbEMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUVoQixNQUFNLHNCQUFzQixHQUFHLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FDOUMsSUFBSSxFQUNKLHdCQUF3QixDQUN6QixDQUFBO1FBRUQsTUFBTSx1QkFBdUIsR0FBRyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQ2hELElBQUksRUFDSix5QkFBeUIsRUFDekI7WUFDRSxRQUFRLEVBQUUsc0JBQXNCO1NBQ2pDLENBQ0YsQ0FBQTtRQUVELE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxrQkFBa0IsRUFBRTtZQUMvRCxpQkFBaUIsRUFBRSwwQkFBaUIsQ0FBQyxTQUFTO1NBQy9DLENBQUMsQ0FBQTtRQUVGLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxvQkFBb0IsRUFBRTtZQUNsRSxTQUFTLEVBQUUsSUFBSSxHQUFHLENBQUMsZ0JBQWdCLENBQ2pDLFFBQVEsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxnQkFBZ0IsQ0FDbEQ7U0FDRixDQUFDLENBQUE7UUFFRixNQUFNLGdCQUFnQixHQUFH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QkFDSDtxQkFDRixDQUFDO29CQUNGLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQzt3QkFDdEIsT0FBTyxFQUFFOzRCQUNQLHdCQUF3Qjs0QkFDeEIsMEJBQTBCOzRCQUMxQixvQkFBb0I7eUJBQ3JCO3dCQUNELFNBQVMsRUFBRSxDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQztxQkFDM0MsQ0FBQztpQkFDSDthQUNGLENBQUM7WUFDRixLQUFLLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztTQUMxQixDQUFDLENBQUE7UUFFRixLQUFLLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUMxQyxJQUFJLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLEVBQUUscUJBQXFCLEtBQUssRUFBRSxFQUFFO2dCQUNqRSxZQUFZLEVBQUUsUUFBUSxDQUFDLFlBQVk7Z0JBQ25DLGNBQWMsRUFBRSxxQkFBcUIsQ0FBQyxPQUFPO2dCQUM3QyxhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxnQkFBZ0I7Z0JBQzlELE9BQU8sRUFBRSxrQkFBa0IsQ0FBQyxPQUFPO2FBQ3BDLENBQUMsQ0FBQTtRQUNKLENBQUMsQ0FBQyxDQUFBO0lBQ0osQ0FBQztDQUNGO0FBM0lELHdEQTJJQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGlhbSBmcm9tIFwiQGF3cy1jZGsvYXdzLWlhbVwiXG5pbXBvcnQgKiBhcyBmaXJlaG9zZSBmcm9tIFwiQGF3cy1jZGsvYXdzLWtpbmVzaXNmaXJlaG9zZVwiXG5pbXBvcnQgKiBhcyBsb2dzIGZyb20gXCJAYXdzLWNkay9hd3MtbG9nc1wiXG5pbXBvcnQgKiBhcyBzMyBmcm9tIFwiQGF3cy1jZGsvYXdzLXMzXCJcbmltcG9ydCB7IEJsb2NrUHVibGljQWNjZXNzIH0gZnJvbSBcIkBhd3MtY2RrL2F3cy1zM1wiXG5pbXBvcnQgKiBhcyBzZWNyZXRzbWFuYWdlciBmcm9tIFwiQGF3cy1jZGsvYXdzLXNlY3JldHNtYW5hZ2VyXCJcbmltcG9ydCAqIGFzIGNkayBmcm9tIFwiQGF3cy1jZGsvY29yZVwiXG5cbmV4cG9ydCBpbnRlcmZhY2UgS2luZXNpc1RvRGF0YWRvZ1N0cmVhbVByb3BzIHtcbiAgLyoqXG4gICAqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBTZWNyZXRzTWFuYWdlciBzZWNyZXQgd2hlcmUgeW91ciBEYXRhZG9nIEFQSSBrZXkgaXMgc2F2ZWQuXG4gICAqXG4gICAqIFRoZSBzZWNyZXQgbXVzdCBiZSBhIEpTT04gb2JqZWN0IG9uIHRoZSBmb3JtYXQgeyBcInZhbHVlXCI6IFwiU0VDUkVUXCIgfVxuICAgKlxuICAgKi9cbiAgZGF0YWRvZ0FwaUtleVNlY3JldE5hbWU6IHN0cmluZ1xuICAvKipcbiAgICpcbiAgICogVGhlIENsb3VkV2F0Y2ggbG9nIGdyb3VwcyBmcm9tIHlvdSBhcmUgc3RyZWFtaW5nIHRvIERhdGFkb2dcbiAgICpcbiAgICovXG4gIGxvZ0dyb3VwczogbG9ncy5Mb2dHcm91cFtdXG59XG5cbi8qKlxuICpcbiAqIEZvcndhcmRzIGxvZ3MgZnJvbSBsb2ctZ3JvdXBzIGluIENsb3VkV2F0Y2ggdG8gYSBEYXRhZG9nIGFjY291bnQuXG4gKiBUaGUgbG9ncyBhcmUgZGVsaXZlcmVkIHRocm91Z2ggYSBGaXJlaG9zZSBkZWxpdmVyeSBzdHJlYW0sIHdoaWNoIGlzIGJlaW5nIHN1YnNjcmliZWQgdG8gdGhlIGxvZy1ncm91cHMgaW4gQ2xvdWRXYXRjaC5cbiAqXG4gKi9cbmV4cG9ydCBjbGFzcyBLaW5lc2lzVG9EYXRhZG9nU3RyZWFtIGV4dGVuZHMgY2RrLkNvbnN0cnVjdCB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHNjb3BlOiBjZGsuQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgcHJvcHM6IEtpbmVzaXNUb0RhdGFkb2dTdHJlYW1Qcm9wcyxcbiAgKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKVxuXG4gICAgY29uc3QgZGVsaXZlcnlTdHJlYW1Mb2dHcm91cCA9IG5ldyBsb2dzLkxvZ0dyb3VwKFxuICAgICAgdGhpcyxcbiAgICAgIFwiRGVsaXZlcnlTdHJlYW1Mb2dHcm91cFwiLFxuICAgIClcblxuICAgIGNvbnN0IGRlbGl2ZXJ5U3RyZWFtTG9nU3RyZWFtID0gbmV3IGxvZ3MuTG9nU3RyZWFtKFxuICAgICAgdGhpcyxcbiAgICAgIFwiRGVsaXZlcnlTdHJlYW1Mb2dTdHJlYW1cIixcbiAgICAgIHtcbiAgICAgICAgbG9nR3JvdXA6IGRlbGl2ZXJ5U3RyZWFtTG9nR3JvdXAsXG4gICAgICB9LFxuICAgIClcblxuICAgIGNvbnN0IGZhaWxlZERhdGFCdWNrZXQgPSBuZXcgczMuQnVja2V0KHRoaXMsIFwiRmFpbGVkRGF0YUJ1Y2tldFwiLCB7XG4gICAgICBibG9ja1B1YmxpY0FjY2VzczogQmxvY2tQdWJsaWNBY2Nlc3MuQkxPQ0tfQUxMLFxuICAgIH0pXG5cbiAgICBjb25zdCBjbG91ZFdhdGNoTG9nc1JvbGUgPSBuZXcgaWFtLlJvbGUodGhpcywgXCJDbG91ZFdhdGNoTG9nc1JvbGVcIiwge1xuICAgICAgYXNzdW1lZEJ5OiBuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoXG4gICAgICAgIGBsb2dzLiR7Y2RrLlN0YWNrLm9mKHRoaXMpLnJlZ2lvbn0uYW1hem9uYXdzLmNvbWAsXG4gICAgICApLFxuICAgIH0pXG5cbiAgICBjb25zdCBmaXJlaG9zZUxvZ3NSb2xlID0gbmV3IGlhbS5Sb2xlKHRoaXMsIFwiRmlyZWhvc2VMb2dzUm9sZVwiLCB7XG4gICAgICBhc3N1bWVkQnk6IG5ldyBpYW0uU2VydmljZVByaW5jaXBhbChcImZpcmVob3NlLmFtYXpvbmF3cy5jb21cIiksXG4gICAgfSlcblxuICAgIGNvbnN0IGRhdGFkb2dEZWxpdmVyeVN0cmVhbSA9IG5ldyBmaXJlaG9zZS5DZm5EZWxpdmVyeVN0cmVhbShcbiAgICAgIHRoaXMsXG4gICAgICBcIkRlbGl2ZXJ5U3RyZWFtXCIsXG4gICAgICB7XG4gICAgICAgIGRlbGl2ZXJ5U3RyZWFtVHlwZTogXCJEaXJlY3RQdXRcIixcbiAgICAgICAgaHR0cEVuZHBvaW50RGVzdGluYXRpb25Db25maWd1cmF0aW9uOiB7XG4gICAgICAgICAgcm9sZUFybjogZmlyZWhvc2VMb2dzUm9sZS5yb2xlQXJuLFxuICAgICAgICAgIGVuZHBvaW50Q29uZmlndXJhdGlvbjoge1xuICAgICAgICAgICAgdXJsOiBcImh0dHBzOi8vYXdzLWtpbmVzaXMtaHR0cC1pbnRha2UubG9ncy5kYXRhZG9naHEuZXUvdjEvaW5wdXRcIixcbiAgICAgICAgICAgIGFjY2Vzc0tleTogc2VjcmV0c21hbmFnZXIuU2VjcmV0LmZyb21TZWNyZXROYW1lVjIoXG4gICAgICAgICAgICAgIHNjb3BlLFxuICAgICAgICAgICAgICBcIkRhdGFkb2dBcGlLZXlcIixcbiAgICAgICAgICAgICAgcHJvcHMuZGF0YWRvZ0FwaUtleVNlY3JldE5hbWUsXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAgIC5zZWNyZXRWYWx1ZUZyb21Kc29uKFwidmFsdWVcIilcbiAgICAgICAgICAgICAgLnRvU3RyaW5nKCksXG4gICAgICAgICAgICBuYW1lOiBcImRhdGFkb2ctbG9ncy1lbmRwb2ludFwiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVxdWVzdENvbmZpZ3VyYXRpb246IHtcbiAgICAgICAgICAgIGNvbnRlbnRFbmNvZGluZzogXCJHWklQXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBjbG91ZFdhdGNoTG9nZ2luZ09wdGlvbnM6IHtcbiAgICAgICAgICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgICAgICAgICBsb2dHcm91cE5hbWU6IGRlbGl2ZXJ5U3RyZWFtTG9nR3JvdXAubG9nR3JvdXBOYW1lLFxuICAgICAgICAgICAgbG9nU3RyZWFtTmFtZTogZGVsaXZlcnlTdHJlYW1Mb2dTdHJlYW0ubG9nU3RyZWFtTmFtZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGJ1ZmZlcmluZ0hpbnRzOiB7XG4gICAgICAgICAgICBpbnRlcnZhbEluU2Vjb25kczogNjAsXG4gICAgICAgICAgICBzaXplSW5NQnM6IDQsXG4gICAgICAgICAgfSxcbiAgICAgICAgICByZXRyeU9wdGlvbnM6IHtcbiAgICAgICAgICAgIGR1cmF0aW9uSW5TZWNvbmRzOiA2MCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHMzQmFja3VwTW9kZTogXCJGYWlsZWREYXRhT25seVwiLFxuICAgICAgICAgIHMzQ29uZmlndXJhdGlvbjoge1xuICAgICAgICAgICAgYnVja2V0QXJuOiBmYWlsZWREYXRhQnVja2V0LmJ1Y2tldEFybixcbiAgICAgICAgICAgIGNvbXByZXNzaW9uRm9ybWF0OiBcIlVOQ09NUFJFU1NFRFwiLFxuICAgICAgICAgICAgcm9sZUFybjogZmlyZWhvc2VMb2dzUm9sZS5yb2xlQXJuLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIClcblxuICAgIG5ldyBpYW0uUG9saWN5KHRoaXMsIFwiQ2xvdWRXYXRjaExvZ3NQb2xpY3lcIiwge1xuICAgICAgZG9jdW1lbnQ6IG5ldyBpYW0uUG9saWN5RG9jdW1lbnQoe1xuICAgICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgYWN0aW9uczogW1wiZmlyZWhvc2U6UHV0UmVjb3JkXCIsIFwiZmlyZWhvc2U6UHV0UmVjb3JkQmF0Y2hcIl0sXG4gICAgICAgICAgICByZXNvdXJjZXM6IFtkYXRhZG9nRGVsaXZlcnlTdHJlYW0uYXR0ckFybl0sXG4gICAgICAgICAgfSksXG4gICAgICAgIF0sXG4gICAgICB9KSxcbiAgICAgIHJvbGVzOiBbY2xvdWRXYXRjaExvZ3NSb2xlXSxcbiAgICB9KVxuXG4gICAgbmV3IGlhbS5Qb2xpY3kodGhpcywgXCJGaXJlaG9zZUxvZ3NQb2xpY3lcIiwge1xuICAgICAgZG9jdW1lbnQ6IG5ldyBpYW0uUG9saWN5RG9jdW1lbnQoe1xuICAgICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgICBcInMzOkFib3J0TXVsdGlwYXJ0VXBsb2FkXCIsXG4gICAgICAgICAgICAgIFwiczM6R2V0QnVja2V0TG9jYXRpb25cIixcbiAgICAgICAgICAgICAgXCJzMzpHZXRPYmplY3RcIixcbiAgICAgICAgICAgICAgXCJzMzpMaXN0QnVja2V0XCIsXG4gICAgICAgICAgICAgIFwiczM6TGlzdEJ1Y2tldE11bHRpcGFydFVwbG9hZHNcIixcbiAgICAgICAgICAgICAgXCJzMzpQdXRPYmplY3RcIixcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgICAgICAgZmFpbGVkRGF0YUJ1Y2tldC5idWNrZXRBcm4sXG4gICAgICAgICAgICAgIGAke2ZhaWxlZERhdGFCdWNrZXQuYnVja2V0QXJufS8qYCxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSksXG4gICAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgYWN0aW9uczogW1wibG9nczpQdXRMb2dFdmVudHNcIl0sXG4gICAgICAgICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgICAgICAgYGFybjphd3M6bG9nczoke2Nkay5TdGFjay5vZih0aGlzKS5yZWdpb259OiR7XG4gICAgICAgICAgICAgICAgY2RrLlN0YWNrLm9mKHRoaXMpLmFjY291bnRcbiAgICAgICAgICAgICAgfTpsb2ctZ3JvdXA6JHtkZWxpdmVyeVN0cmVhbUxvZ0dyb3VwLmxvZ0dyb3VwTmFtZX06bG9nLXN0cmVhbToke1xuICAgICAgICAgICAgICAgIGRlbGl2ZXJ5U3RyZWFtTG9nU3RyZWFtLmxvZ1N0cmVhbU5hbWVcbiAgICAgICAgICAgICAgfWAsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICAgXCJraW5lc2lzOkRlc2NyaWJlU3RyZWFtXCIsXG4gICAgICAgICAgICAgIFwia2luZXNpczpHZXRTaGFyZEl0ZXJhdG9yXCIsXG4gICAgICAgICAgICAgIFwia2luZXNpczpHZXRSZWNvcmRzXCIsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgcmVzb3VyY2VzOiBbZGF0YWRvZ0RlbGl2ZXJ5U3RyZWFtLmF0dHJBcm5dLFxuICAgICAgICAgIH0pLFxuICAgICAgICBdLFxuICAgICAgfSksXG4gICAgICByb2xlczogW2ZpcmVob3NlTG9nc1JvbGVdLFxuICAgIH0pXG5cbiAgICBwcm9wcy5sb2dHcm91cHMuZm9yRWFjaCgobG9nR3JvdXAsIGluZGV4KSA9PiB7XG4gICAgICBuZXcgbG9ncy5DZm5TdWJzY3JpcHRpb25GaWx0ZXIodGhpcywgYFN1YnNjcmlwdGlvbkZpbHRlciR7aW5kZXh9YCwge1xuICAgICAgICBsb2dHcm91cE5hbWU6IGxvZ0dyb3VwLmxvZ0dyb3VwTmFtZSxcbiAgICAgICAgZGVzdGluYXRpb25Bcm46IGRhdGFkb2dEZWxpdmVyeVN0cmVhbS5hdHRyQXJuLFxuICAgICAgICBmaWx0ZXJQYXR0ZXJuOiBsb2dzLkZpbHRlclBhdHRlcm4uYWxsRXZlbnRzKCkubG9nUGF0dGVyblN0cmluZyxcbiAgICAgICAgcm9sZUFybjogY2xvdWRXYXRjaExvZ3NSb2xlLnJvbGVBcm4sXG4gICAgICB9KVxuICAgIH0pXG4gIH1cbn1cbiJdfQ==
package/lib/snapshots.js CHANGED
@@ -209,4 +209,4 @@ async function createCloudAssemblySnapshot(src, dst) {
209
209
  }
210
210
  }
211
211
  exports.createCloudAssemblySnapshot = createCloudAssemblySnapshot;
212
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic25hcHNob3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3NuYXBzaG90cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw0REFBNEQ7QUFDNUQsK0RBQStEO0FBQy9ELHdEQUF3RDtBQUN4RCwyQkFBMEI7QUFDMUIsMkJBQTBCO0FBQzFCLHlCQUF3QjtBQUN4Qiw2QkFBNEI7QUFDNUIsNkJBQTRCO0FBRTVCLDhEQUE4RDtBQUM5RCxTQUFTLGFBQWEsQ0FBQyxJQUFTO0lBQzlCLE1BQU0sRUFBRSxHQUFHO1FBQ1QsR0FBRyxJQUFJO0tBQ1IsQ0FBQTtJQUVELE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQTtJQUNqQixPQUFPLEVBQUUsQ0FBQTtBQUNYLENBQUM7QUFFRCw4REFBOEQ7QUFDOUQsU0FBUyxXQUFXLENBQUMsSUFBUztJQUM1QixJQUFJLElBQUksWUFBWSxLQUFLLEVBQUU7UUFDekIsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFBO0tBQzdCO0lBRUQsSUFBSSxJQUFJLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ3pCLE9BQU8sTUFBTSxDQUFDLFdBQVcsQ0FDdkIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7YUFDakIsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxLQUFLLE9BQU8sQ0FBQzthQUNsQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxHQUFHLEVBQUUsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FDcEQsQ0FBQTtLQUNGO0lBRUQsT0FBTyxJQUFJLENBQUE7QUFDYixDQUFDO0FBRUQsOERBQThEO0FBQzlELFNBQVMsc0JBQXNCLENBQUMsSUFBUztJQUN2QyxNQUFNLEVBQUUsR0FBRztRQUNULEdBQUcsSUFBSTtLQUNSLENBQUE7SUFF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QUN2RCxLQUFLLE1BQU0sSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRTtRQUMvRCxNQUFNLDhCQUE4QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUE7S0FDNUQ7SUFFRCwyQkFBMkI7SUFDM0IsS0FBSyxNQUFNLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUU7UUFDakUsTUFBTSw4QkFBOEIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFBO0tBQzVEO0FBQ0gsQ0FBQztBQWpDRCxrRUFpQ0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWFzc2lnbm1lbnQgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtbWVtYmVyLWFjY2VzcyAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1yZXR1cm4gKi9cbmltcG9ydCAqIGFzIGNweSBmcm9tIFwiY3B5XCJcbmltcG9ydCAqIGFzIGRlbCBmcm9tIFwiZGVsXCJcbmltcG9ydCAqIGFzIGZzIGZyb20gXCJmc1wiXG5pbXBvcnQgKiBhcyBnbG9iIGZyb20gXCJnbG9iXCJcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIlxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuZnVuY3Rpb24gcmVtb3ZlVmVyc2lvbihkYXRhOiBhbnkpOiBhbnkge1xuICBjb25zdCBjcCA9IHtcbiAgICAuLi5kYXRhLFxuICB9XG5cbiAgZGVsZXRlIGNwLnZlcnNpb25cbiAgcmV0dXJuIGNwXG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5mdW5jdGlvbiByZW1vdmVUcmFjZShkYXRhOiBhbnkpOiBhbnkge1xuICBpZiAoZGF0YSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgcmV0dXJuIGRhdGEubWFwKHJlbW92ZVRyYWNlKVxuICB9XG5cbiAgaWYgKGRhdGEgPT09IE9iamVjdChkYXRhKSkge1xuICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICBPYmplY3QuZW50cmllcyhkYXRhKVxuICAgICAgICAuZmlsdGVyKChba2V5XSkgPT4ga2V5ICE9PSBcInRyYWNlXCIpXG4gICAgICAgIC5tYXAoKFtrZXksIHZhbHVlXSkgPT4gW2tleSwgcmVtb3ZlVHJhY2UodmFsdWUpXSksXG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIGRhdGFcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbmZ1bmN0aW9uIHJlbW92ZVJ1bnRpbWVMaWJyYXJpZXMoZGF0YTogYW55KTogYW55IHtcbiAgY29uc3QgY3AgPSB7XG4gICAgLi4uZGF0YSxcbiAgfVxuXG4gIGlmIChkYXRhLnJ1bnRpbWUpIHtcbiAgICBjcC5ydW50aW1lID0ge1xuICAgICAgLi4uZGF0YS5ydW50aW1lLFxuICAgIH1cblxuICAgIGRlbGV0ZSBjcC5ydW50aW1lLmxpYnJhcmllc1xuICB9XG5cbiAgcmV0dXJuIGNwXG59XG5cbmNvbnN0IGN1cnJlbnRWZXJzaW9uUmVnZXggPSAvXiguK0N1cnJlbnRWZXJzaW9uWzAtOUEtRl17OH0pWzAtOWEtZl17MzJ9JC9cblxuLyoqXG4gKiBNYXRjaCBhIHJlc291cmNlIGNyZWF0ZWQgYnkgYGxhbWJkYS5GdW5jdGlvbi5jdXJyZW50VmVyc2lvbmAsIHdoaWNoXG4gKiB3aWxsIGluY2x1ZGUgdGhlIGFzc2V0IGhhc2ggYXMgcGFydCBvZiB0aGUgcmVvdXNyY2UgbmFtZSBhbmQgcmV0dXJuXG4gKiBhIHNuYXBzaG90LWZyaWVuZGx5IHZlcnNpb24gb2YgaXQgaWYgZm91bmQuXG4gKi9cbmZ1bmN0aW9uIHJld3JpdGVDdXJyZW50VmVyc2lvbklmRm91bmQodmFsdWU6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICBjb25zdCBtYXRjaCA9IGN1cnJlbnRWZXJzaW9uUmVnZXguZXhlYyh2YWx1ZSlcbiAgcmV0dXJuIG1hdGNoID8gYCR7bWF0Y2hbMV19eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHhgIDogbnVsbFxufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuZnVuY3Rpb24gcmVtb3ZlQXNzZXREZXRhaWxzRnJvbVRlbXBsYXRlKGRhdGE6IGFueSk6IGFueSB7XG4gIGlmIChkYXRhIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICByZXR1cm4gZGF0YS5tYXAocmVtb3ZlQXNzZXREZXRhaWxzRnJvbVRlbXBsYXRlKVxuICB9XG5cbiAgaWYgKGRhdGEgPT09IE9iamVjdChkYXRhKSkge1xuICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICBPYmplY3QuZW50cmllcyhkYXRhKVxuICAgICAgICAubWFwKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgICBjb25zdCBuZXdDdXJyZW50VmVyc2lvbiA9IHJld3JpdGVDdXJyZW50VmVyc2lvbklmRm91bmQoa2V5KVxuICAgICAgICAgIGlmIChuZXdDdXJyZW50VmVyc2lvbikge1xuICAgICAgICAgICAgcmV0dXJuIFtuZXdDdXJyZW50VmVyc2lvbiwgcmVtb3ZlQXNzZXREZXRhaWxzRnJvbVRlbXBsYXRlKHZhbHVlKV1cbiAgICAgICAgICB9IGVsc2UgaWYgKGtleS5pbmNsdWRlcyhcIkFzc2V0UGFyYW1ldGVyXCIpKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICBrZXkgPT09IFwiUmVmXCIgJiZcbiAgICAgICAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiAmJlxuICAgICAgICAgICAgdmFsdWUuaW5jbHVkZXMoXCJBc3NldFBhcmFtZXRlcnNcIilcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiBba2V5LCBcInNuYXBzaG90LXZhbHVlXCJdXG4gICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIGtleSA9PT0gXCJhd3M6YXNzZXQ6cGF0aFwiICYmXG4gICAgICAgICAgICB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgJiZcbiAgICAgICAgICAgIC9hc3NldFxcLlswLTlhLWZdezY0fS8udGVzdCh2YWx1ZSlcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiBba2V5LCBcImFzc2V0LnNuYXBzaG90LXZhbHVlXCJdXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBba2V5LCByZW1vdmVBc3NldERldGFpbHNGcm9tVGVtcGxhdGUodmFsdWUpXVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgLmZpbHRlcigoaXQpOiBpdCBpcyBbXSA9PiBpdCAhPSBudWxsKSxcbiAgICApXG4gIH1cblxuICBpZiAodHlwZW9mIGRhdGEgPT09IFwic3RyaW5nXCIpIHtcbiAgICBjb25zdCBuZXdDdXJyZW50VmVyc2lvbiA9IHJld3JpdGVDdXJyZW50VmVyc2lvbklmRm91bmQoZGF0YSlcbiAgICBpZiAobmV3Q3VycmVudFZlcnNpb24pIHtcbiAgICAgIHJldHVybiBuZXdDdXJyZW50VmVyc2lvblxuICAgIH1cblxuICAgIC8vIEhhbmRsZSB0eXBpY2FsIGNvbnRlbnQgaGFzaGVzLlxuICAgIHJldHVybiBkYXRhLnJlcGxhY2UoL1swLTlhLWZdezY0fS9nLCBcInNuYXBzaG90LXZhbHVlXCIpXG4gIH1cblxuICByZXR1cm4gZGF0YVxufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuZnVuY3Rpb24gcmVtb3ZlQXNzZXREZXRhaWxzRnJvbU1hbmlmZXN0KGRhdGE6IGFueSk6IGFueSB7XG4gIGlmIChkYXRhIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICByZXR1cm4gZGF0YS5tYXAocmVtb3ZlQXNzZXREZXRhaWxzRnJvbU1hbmlmZXN0KVxuICB9XG5cbiAgaWYgKGRhdGEgPT09IE9iamVjdChkYXRhKSkge1xuICAgIC8vIGF3czpjZGs6YXNzZXQgaW4gbWV0YWRhdGFcbiAgICBpZiAoZGF0YVtcInR5cGVcIl0gPT09IFwiYXdzOmNkazphc3NldFwiICYmIFwiZGF0YVwiIGluIGRhdGEpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmRhdGEsXG4gICAgICAgIGRhdGE6IFwic25hcHNob3QtdmFsdWVcIixcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgT2JqZWN0LmVudHJpZXMoZGF0YSlcbiAgICAgICAgLm1hcCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgICAgaWYgKGtleS5pbmNsdWRlcyhcIkFzc2V0UGFyYW1ldGVyc1wiKSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIFtrZXksIHJlbW92ZUFzc2V0RGV0YWlsc0Zyb21NYW5pZmVzdCh2YWx1ZSldXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICAuZmlsdGVyKChpdCk6IGl0IGlzIFtdID0+IGl0ICE9IG51bGwpLFxuICAgIClcbiAgfVxuXG4gIGlmICh0eXBlb2YgZGF0YSA9PT0gXCJzdHJpbmdcIikge1xuICAgIGNvbnN0IG5ld0N1cnJlbnRWZXJzaW9uID0gcmV3cml0ZUN1cnJlbnRWZXJzaW9uSWZGb3VuZChkYXRhKVxuICAgIGlmIChuZXdDdXJyZW50VmVyc2lvbikge1xuICAgICAgcmV0dXJuIG5ld0N1cnJlbnRWZXJzaW9uXG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIHR5cGljYWwgY29udGVudCBoYXNoZXMuXG4gICAgcmV0dXJuIGRhdGEucmVwbGFjZSgvWzAtOWEtZl17NjR9L2csIFwic25hcHNob3QtdmFsdWVcIilcbiAgfVxuXG4gIHJldHVybiBkYXRhXG59XG4vKipcbiAqIFJlbW92ZSB0aGUgQ0RLTWV0YWRhdGEgcmVzb3VyY2VzIHRoYXQgaXMgcGFydCBvZiB0aGUgc3ludGhlc2l6ZWRcbiAqIHRlbXBsYXRlIHNpbmNlIENESyAxLjYzLjAuXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5mdW5jdGlvbiByZW1vdmVDZGtNZXRhZGF0YVJlc291cmNlRnJvbVRlbXBsYXRlKGRhdGE6IGFueSk6IGFueSB7XG4gIGNvbnN0IGNwID0ge1xuICAgIC4uLmRhdGEsXG4gICAgUmVzb3VyY2VzOiB7XG4gICAgICAuLi5kYXRhLlJlc291cmNlcyxcbiAgICB9LFxuICB9XG5cbiAgZGVsZXRlIGNwLlJlc291cmNlcy5DREtNZXRhZGF0YVxuICByZXR1cm4gY3Bcbn1cblxuZnVuY3Rpb24gcHJlcGFyZU1hbmlmZXN0Rm9yU25hcHNob3QoY29udGVudDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgaW5wdXQgPSBKU09OLnBhcnNlKGNvbnRlbnQpXG4gIGNvbnN0IG91dHB1dCA9IFtcbiAgICByZW1vdmVWZXJzaW9uLFxuICAgIC8vIFJlbW92ZSB0aGUgcnVudGltZSB2ZXJzaW9uIGluZm9ybWF0aW9uIHNvIGl0IGRvbid0IGNvbmZsaWN0IHdpdGggQ0lcbiAgICAvLyBvciBvdGhlciB1c2VycyBnZW5lcmF0aW5nIHRoZSBzbmFwc2hvdHMuXG4gICAgcmVtb3ZlUnVudGltZUxpYnJhcmllcyxcbiAgICAvLyBSZW1vdmUgdGhlIHRyYWNlIGZyb20gbWFuaWZlc3QgZm9yIG5vdy5cbiAgICByZW1vdmVUcmFjZSxcbiAgICAvLyBBdm9pZCBkZXRhaWxzIChoYXNoZXMpIGZyb20gYXNzZXRzLlxuICAgIHJlbW92ZUFzc2V0RGV0YWlsc0Zyb21NYW5pZmVzdCxcbiAgXS5yZWR1Y2UoKGFjYywgZm4pID0+IGZuKGFjYyksIGlucHV0KVxuXG4gIHJldHVybiBKU09OLnN0cmluZ2lmeShvdXRwdXQsIHVuZGVmaW5lZCwgXCIgIFwiKVxufVxuXG4vKipcbiAqIFRyYW5zZm9ybSB0aGUgQ2xvdWQgQXNzZW1ibHkgbWFuaWZlc3QgZmlsZSBzbyB0aGF0IGl0IGNhbiBiZSBwZXJzaXN0ZWRcbiAqIGFzIGEgc25hcHNob3Qgd2l0aG91dCBjYXVzaW5nIGludmFsaWRhdGlvbnMgZm9yIGV2ZXJ5IHN5bnRoZXNpemUuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHByZXBhcmVNYW5pZmVzdEZpbGVGb3JTbmFwc2hvdChmaWxlOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgcmVzdWx0ID0gcHJlcGFyZU1hbmlmZXN0Rm9yU25hcHNob3QoXG4gICAgYXdhaXQgZnMucHJvbWlzZXMucmVhZEZpbGUoZmlsZSwgXCJ1dGY4XCIpLFxuICApXG5cbiAgYXdhaXQgZnMucHJvbWlzZXMud3JpdGVGaWxlKGZpbGUsIHJlc3VsdClcbn1cblxuZnVuY3Rpb24gcHJlcGFyZVRlbXBsYXRlRm9yU25hcHNob3QoY29udGVudDogc3RyaW5nKTogc3RyaW5nIHtcbiAgY29uc3QgaW5wdXQgPSBKU09OLnBhcnNlKGNvbnRlbnQpXG4gIGNvbnN0IG91dHB1dCA9IFtcbiAgICByZW1vdmVDZGtNZXRhZGF0YVJlc291cmNlRnJvbVRlbXBsYXRlLFxuICAgIC8vIEF2b2lkIGRldGFpbHMgKGhhc2hlcykgZnJvbSBhc3NldHMuXG4gICAgcmVtb3ZlQXNzZXREZXRhaWxzRnJvbVRlbXBsYXRlLFxuICBdLnJlZHVjZSgoYWNjLCBmbikgPT4gZm4oYWNjKSwgaW5wdXQpXG5cbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KG91dHB1dCwgdW5kZWZpbmVkLCBcIiAgXCIpXG59XG5cbi8qKlxuICogVHJhbnNmb3JtIGEgQ2xvdWQgQXNzZW1ibHkgdGVtcGxhdGUgZmlsZSBzbyB0aGF0IGl0IGNhbiBiZSBwZXJzaXN0ZWRcbiAqIGFzIGEgc25hcHNob3Qgd2l0aG91dCBjYXVzaW5nIGludmFsaWRhdGlvbnMgZm9yIG1pbm9yIGNoYW5nZXMuXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHByZXBhcmVUZW1wbGF0ZUZpbGVGb3JTbmFwc2hvdChmaWxlOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgcmVzdWx0ID0gcHJlcGFyZVRlbXBsYXRlRm9yU25hcHNob3QoXG4gICAgYXdhaXQgZnMucHJvbWlzZXMucmVhZEZpbGUoZmlsZSwgXCJ1dGY4XCIpLFxuICApXG5cbiAgYXdhaXQgZnMucHJvbWlzZXMud3JpdGVGaWxlKGZpbGUsIHJlc3VsdClcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGEgQ2xvdWQgQXNzZW1ibHkgdG8gYSBzbmFwc2hvdC5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZUNsb3VkQXNzZW1ibHlTbmFwc2hvdChcbiAgc3JjOiBzdHJpbmcsXG4gIGRzdDogc3RyaW5nLFxuKTogUHJvbWlzZTx2b2lkPiB7XG4gIGNvbnN0IGJhc2UgPSBwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgZHN0KVxuXG4gIGF3YWl0IGNweShcIi5cIiwgYmFzZSwge1xuICAgIHBhcmVudHM6IHRydWUsXG4gICAgY3dkOiBwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgc3JjKSxcbiAgfSlcblxuICAvLyBEb24ndCBrZWVwIHRyYWNrIG9mIG1hbmlmZXN0IHZlcnNpb24uXG4gIGF3YWl0IGRlbChwYXRoLmpvaW4oZHN0LCBcIioqL2Nkay5vdXRcIikpXG5cbiAgLy8gVGhlIHRyZWUgZmlsZSBkb2Vzbid0IGdpdmUgdXMgbXVjaCB2YWx1ZSBhcyBwYXJ0IG9mIHRoZSBzbmFwc2hvdC5cbiAgYXdhaXQgZGVsKHBhdGguam9pbihkc3QsIFwidHJlZS5qc29uXCIpKVxuXG4gIC8vIFJlbW92ZSBhc3NldCBjb250ZW50cyBmb3Igbm93LlxuICBhd2FpdCBkZWwocGF0aC5qb2luKGRzdCwgXCIqKi9hc3NldC4qXCIpKVxuXG4gIC8vIFJlbW92ZSBhc3NldCBjb25maWdzIHNvIHdlIGRvbid0IGhhdmUgdG8gdXBkYXRlXG4gIC8vIHNuYXBzaG90cyBmb3IgYXNzZXQgY2hhbmdlcy5cbiAgYXdhaXQgZGVsKHBhdGguam9pbihkc3QsIFwiKiovKi5hc3NldHMuanNvblwiKSlcblxuICAvLyBUcmFuc2Zvcm0gdGhlIG1hbmlmZXN0IHRvIGJlIG1vcmUgc25hcHNob3QgZnJpZW5kbHkuXG4gIGZvciAoY29uc3QgZmlsZSBvZiBnbG9iLnN5bmMoXCIqKi9tYW5pZmVzdC5qc29uXCIsIHsgY3dkOiBiYXNlIH0pKSB7XG4gICAgYXdhaXQgcHJlcGFyZU1hbmlmZXN0RmlsZUZvclNuYXBzaG90KHBhdGguam9pbihiYXNlLCBmaWxlKSlcbiAgfVxuXG4gIC8vIFRyYW5zZm9ybSBhbGwgdGVtcGxhdGVzLlxuICBmb3IgKGNvbnN0IGZpbGUgb2YgZ2xvYi5zeW5jKFwiKiovKi50ZW1wbGF0ZS5qc29uXCIsIHsgY3dkOiBiYXNlIH0pKSB7XG4gICAgYXdhaXQgcHJlcGFyZVRlbXBsYXRlRmlsZUZvclNuYXBzaG90KHBhdGguam9pbihiYXNlLCBmaWxlKSlcbiAgfVxufVxuIl19
212
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic25hcHNob3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3NuYXBzaG90cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw0REFBNEQ7QUFDNUQsK0RBQStEO0FBQy9ELHdEQUF3RDtBQUN4RCwyQkFBMEI7QUFDMUIsMkJBQTBCO0FBQzFCLHlCQUF3QjtBQUN4Qiw2QkFBNEI7QUFDNUIsNkJBQTRCO0FBRTVCLDhEQUE4RDtBQUM5RCxTQUFTLGFBQWEsQ0FBQyxJQUFTO0lBQzlCLE1BQU0sRUFBRSxHQUFHO1FBQ1QsR0FBRyxJQUFJO0tBQ1IsQ0FBQTtJQUVELE9BQU8sRUFBRSxDQUFDLE9BQU8sQ0FBQTtJQUNqQixPQUFPLEVBQUUsQ0FBQTtBQUNYLENBQUM7QUFFRCw4REFBOEQ7QUFDOUQsU0FBUyxXQUFXLENBQUMsSUFBUztJQUM1QixJQUFJLElBQUksWUFBWSxLQUFLLEVBQUU7UUFDekIsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFBO0tBQzdCO0lBRUQsSUFBSSxJQUFJLEtBQUssTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ3pCLE9BQU8sTUFBTSxDQUFDLFdBQVcsQ0FDdkIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUErQixDQUFDO2FBQzVDLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsS0FBSyxPQUFPLENBQUM7YUFDbEMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxFQUFFLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQ3BELENBQUE7S0FDRjtJQUVELE9BQU8sSUFBSSxDQUFBO0FBQ2IsQ0FBQztBQUVELDhEQUE4RDtBQUM5RCxTQUFTLHNCQUFzQixDQUFDLElBQVM7SUFDdkMsTUFBTSxFQUFFLEdBQUc7UUFDVCxHQUFHLElBQUk7S0FDUixDQUFBO0lB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RDtJQUN2RCxLQUFLLE1BQU0sSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRTtRQUMvRCxNQUFNLDhCQUE4QixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUE7S0FDNUQ7SUFFRCwyQkFBMkI7SUFDM0IsS0FBSyxNQUFNLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUU7UUFDakUsTUFBTSw4QkFBOEIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFBO0tBQzVEO0FBQ0gsQ0FBQztBQWpDRCxrRUFpQ0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWFzc2lnbm1lbnQgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtbWVtYmVyLWFjY2VzcyAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1yZXR1cm4gKi9cbmltcG9ydCAqIGFzIGNweSBmcm9tIFwiY3B5XCJcbmltcG9ydCAqIGFzIGRlbCBmcm9tIFwiZGVsXCJcbmltcG9ydCAqIGFzIGZzIGZyb20gXCJmc1wiXG5pbXBvcnQgKiBhcyBnbG9iIGZyb20gXCJnbG9iXCJcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIlxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuZnVuY3Rpb24gcmVtb3ZlVmVyc2lvbihkYXRhOiBhbnkpOiBhbnkge1xuICBjb25zdCBjcCA9IHtcbiAgICAuLi5kYXRhLFxuICB9XG5cbiAgZGVsZXRlIGNwLnZlcnNpb25cbiAgcmV0dXJuIGNwXG59XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5mdW5jdGlvbiByZW1vdmVUcmFjZShkYXRhOiBhbnkpOiBhbnkge1xuICBpZiAoZGF0YSBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgcmV0dXJuIGRhdGEubWFwKHJlbW92ZVRyYWNlKVxuICB9XG5cbiAgaWYgKGRhdGEgPT09IE9iamVjdChkYXRhKSkge1xuICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICBPYmplY3QuZW50cmllcyhkYXRhIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KVxuICAgICAgICAuZmlsdGVyKChba2V5XSkgPT4ga2V5ICE9PSBcInRyYWNlXCIpXG4gICAgICAgIC5tYXAoKFtrZXksIHZhbHVlXSkgPT4gW2tleSwgcmVtb3ZlVHJhY2UodmFsdWUpXSksXG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIGRhdGFcbn1cblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbmZ1bmN0aW9uIHJlbW92ZVJ1bnRpbWVMaWJyYXJpZXMoZGF0YTogYW55KTogYW55IHtcbiAgY29uc3QgY3AgPSB7XG4gICAgLi4uZGF0YSxcbiAgfVxuXG4gIGlmIChkYXRhLnJ1bnRpbWUpIHtcbiAgICBjcC5ydW50aW1lID0ge1xuICAgICAgLi4uZGF0YS5ydW50aW1lLFxuICAgIH1cblxuICAgIGRlbGV0ZSBjcC5ydW50aW1lLmxpYnJhcmllc1xuICB9XG5cbiAgcmV0dXJuIGNwXG59XG5cbmNvbnN0IGN1cnJlbnRWZXJzaW9uUmVnZXggPSAvXiguK0N1cnJlbnRWZXJzaW9uWzAtOUEtRl17OH0pWzAtOWEtZl17MzJ9JC9cblxuLyoqXG4gKiBNYXRjaCBhIHJlc291cmNlIGNyZWF0ZWQgYnkgYGxhbWJkYS5GdW5jdGlvbi5jdXJyZW50VmVyc2lvbmAsIHdoaWNoXG4gKiB3aWxsIGluY2x1ZGUgdGhlIGFzc2V0IGhhc2ggYXMgcGFydCBvZiB0aGUgcmVvdXNyY2UgbmFtZSBhbmQgcmV0dXJuXG4gKiBhIHNuYXBzaG90LWZyaWVuZGx5IHZlcnNpb24gb2YgaXQgaWYgZm91bmQuXG4gKi9cbmZ1bmN0aW9uIHJld3JpdGVDdXJyZW50VmVyc2lvbklmRm91bmQodmFsdWU6IHN0cmluZyk6IHN0cmluZyB8IG51bGwge1xuICBjb25zdCBtYXRjaCA9IGN1cnJlbnRWZXJzaW9uUmVnZXguZXhlYyh2YWx1ZSlcbiAgcmV0dXJuIG1hdGNoID8gYCR7bWF0Y2hbMV19eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHhgIDogbnVsbFxufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuZnVuY3Rpb24gcmVtb3ZlQXNzZXREZXRhaWxzRnJvbVRlbXBsYXRlKGRhdGE6IGFueSk6IGFueSB7XG4gIGlmIChkYXRhIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICByZXR1cm4gZGF0YS5tYXAocmVtb3ZlQXNzZXREZXRhaWxzRnJvbVRlbXBsYXRlKVxuICB9XG5cbiAgaWYgKGRhdGEgPT09IE9iamVjdChkYXRhKSkge1xuICAgIHJldHVybiBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICBPYmplY3QuZW50cmllcyhkYXRhIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KVxuICAgICAgICAubWFwKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgICBjb25zdCBuZXdDdXJyZW50VmVyc2lvbiA9IHJld3JpdGVDdXJyZW50VmVyc2lvbklmRm91bmQoa2V5KVxuICAgICAgICAgIGlmIChuZXdDdXJyZW50VmVyc2lvbikge1xuICAgICAgICAgICAgcmV0dXJuIFtuZXdDdXJyZW50VmVyc2lvbiwgcmVtb3ZlQXNzZXREZXRhaWxzRnJvbVRlbXBsYXRlKHZhbHVlKV1cbiAgICAgICAgICB9IGVsc2UgaWYgKGtleS5pbmNsdWRlcyhcIkFzc2V0UGFyYW1ldGVyXCIpKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICBrZXkgPT09IFwiUmVmXCIgJiZcbiAgICAgICAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiAmJlxuICAgICAgICAgICAgdmFsdWUuaW5jbHVkZXMoXCJBc3NldFBhcmFtZXRlcnNcIilcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiBba2V5LCBcInNuYXBzaG90LXZhbHVlXCJdXG4gICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIGtleSA9PT0gXCJhd3M6YXNzZXQ6cGF0aFwiICYmXG4gICAgICAgICAgICB0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgJiZcbiAgICAgICAgICAgIC9hc3NldFxcLlswLTlhLWZdezY0fS8udGVzdCh2YWx1ZSlcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiBba2V5LCBcImFzc2V0LnNuYXBzaG90LXZhbHVlXCJdXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBba2V5LCByZW1vdmVBc3NldERldGFpbHNGcm9tVGVtcGxhdGUodmFsdWUpXVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgLmZpbHRlcigoaXQpOiBpdCBpcyBbXSA9PiBpdCAhPSBudWxsKSxcbiAgICApXG4gIH1cblxuICBpZiAodHlwZW9mIGRhdGEgPT09IFwic3RyaW5nXCIpIHtcbiAgICBjb25zdCBuZXdDdXJyZW50VmVyc2lvbiA9IHJld3JpdGVDdXJyZW50VmVyc2lvbklmRm91bmQoZGF0YSlcbiAgICBpZiAobmV3Q3VycmVudFZlcnNpb24pIHtcbiAgICAgIHJldHVybiBuZXdDdXJyZW50VmVyc2lvblxuICAgIH1cblxuICAgIC8vIEhhbmRsZSB0eXBpY2FsIGNvbnRlbnQgaGFzaGVzLlxuICAgIHJldHVybiBkYXRhLnJlcGxhY2UoL1swLTlhLWZdezY0fS9nLCBcInNuYXBzaG90LXZhbHVlXCIpXG4gIH1cblxuICByZXR1cm4gZGF0YVxufVxuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuZnVuY3Rpb24gcmVtb3ZlQXNzZXREZXRhaWxzRnJvbU1hbmlmZXN0KGRhdGE6IGFueSk6IGFueSB7XG4gIGlmIChkYXRhIGluc3RhbmNlb2YgQXJyYXkpIHtcbiAgICByZXR1cm4gZGF0YS5tYXAocmVtb3ZlQXNzZXREZXRhaWxzRnJvbU1hbmlmZXN0KVxuICB9XG5cbiAgaWYgKGRhdGEgPT09IE9iamVjdChkYXRhKSkge1xuICAgIC8vIGF3czpjZGs6YXNzZXQgaW4gbWV0YWRhdGFcbiAgICBpZiAoZGF0YVtcInR5cGVcIl0gPT09IFwiYXdzOmNkazphc3NldFwiICYmIFwiZGF0YVwiIGluIGRhdGEpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmRhdGEsXG4gICAgICAgIGRhdGE6IFwic25hcHNob3QtdmFsdWVcIixcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgT2JqZWN0LmVudHJpZXMoZGF0YSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilcbiAgICAgICAgLm1hcCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgICAgaWYgKGtleS5pbmNsdWRlcyhcIkFzc2V0UGFyYW1ldGVyc1wiKSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIFtrZXksIHJlbW92ZUFzc2V0RGV0YWlsc0Zyb21NYW5pZmVzdCh2YWx1ZSldXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICAuZmlsdGVyKChpdCk6IGl0IGlzIFtdID0+IGl0ICE9IG51bGwpLFxuICAgIClcbiAgfVxuXG4gIGlmICh0eXBlb2YgZGF0YSA9PT0gXCJzdHJpbmdcIikge1xuICAgIGNvbnN0IG5ld0N1cnJlbnRWZXJzaW9uID0gcmV3cml0ZUN1cnJlbnRWZXJzaW9uSWZGb3VuZChkYXRhKVxuICAgIGlmIChuZXdDdXJyZW50VmVyc2lvbikge1xuICAgICAgcmV0dXJuIG5ld0N1cnJlbnRWZXJzaW9uXG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIHR5cGljYWwgY29udGVudCBoYXNoZXMuXG4gICAgcmV0dXJuIGRhdGEucmVwbGFjZSgvWzAtOWEtZl17NjR9L2csIFwic25hcHNob3QtdmFsdWVcIilcbiAgfVxuXG4gIHJldHVybiBkYXRhXG59XG5cbi8qKlxuICogUmVtb3ZlIHRoZSBDREtNZXRhZGF0YSByZXNvdXJjZXMgdGhhdCBpcyBwYXJ0IG9mIHRoZSBzeW50aGVzaXplZFxuICogdGVtcGxhdGUgc2luY2UgQ0RLIDEuNjMuMC5cbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbmZ1bmN0aW9uIHJlbW92ZUNka01ldGFkYXRhUmVzb3VyY2VGcm9tVGVtcGxhdGUoZGF0YTogYW55KTogYW55IHtcbiAgY29uc3QgY3AgPSB7XG4gICAgLi4uZGF0YSxcbiAgICBSZXNvdXJjZXM6IHtcbiAgICAgIC4uLmRhdGEuUmVzb3VyY2VzLFxuICAgIH0sXG4gIH1cblxuICBkZWxldGUgY3AuUmVzb3VyY2VzLkNES01ldGFkYXRhXG4gIHJldHVybiBjcFxufVxuXG5mdW5jdGlvbiBwcmVwYXJlTWFuaWZlc3RGb3JTbmFwc2hvdChjb250ZW50OiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBpbnB1dCA9IEpTT04ucGFyc2UoY29udGVudClcbiAgY29uc3Qgb3V0cHV0ID0gW1xuICAgIHJlbW92ZVZlcnNpb24sXG4gICAgLy8gUmVtb3ZlIHRoZSBydW50aW1lIHZlcnNpb24gaW5mb3JtYXRpb24gc28gaXQgZG9uJ3QgY29uZmxpY3Qgd2l0aCBDSVxuICAgIC8vIG9yIG90aGVyIHVzZXJzIGdlbmVyYXRpbmcgdGhlIHNuYXBzaG90cy5cbiAgICByZW1vdmVSdW50aW1lTGlicmFyaWVzLFxuICAgIC8vIFJlbW92ZSB0aGUgdHJhY2UgZnJvbSBtYW5pZmVzdCBmb3Igbm93LlxuICAgIHJlbW92ZVRyYWNlLFxuICAgIC8vIEF2b2lkIGRldGFpbHMgKGhhc2hlcykgZnJvbSBhc3NldHMuXG4gICAgcmVtb3ZlQXNzZXREZXRhaWxzRnJvbU1hbmlmZXN0LFxuICBdLnJlZHVjZSgoYWNjLCBmbikgPT4gZm4oYWNjKSwgaW5wdXQpXG5cbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KG91dHB1dCwgdW5kZWZpbmVkLCBcIiAgXCIpXG59XG5cbi8qKlxuICogVHJhbnNmb3JtIHRoZSBDbG91ZCBBc3NlbWJseSBtYW5pZmVzdCBmaWxlIHNvIHRoYXQgaXQgY2FuIGJlIHBlcnNpc3RlZFxuICogYXMgYSBzbmFwc2hvdCB3aXRob3V0IGNhdXNpbmcgaW52YWxpZGF0aW9ucyBmb3IgZXZlcnkgc3ludGhlc2l6ZS5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gcHJlcGFyZU1hbmlmZXN0RmlsZUZvclNuYXBzaG90KGZpbGU6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCByZXN1bHQgPSBwcmVwYXJlTWFuaWZlc3RGb3JTbmFwc2hvdChcbiAgICBhd2FpdCBmcy5wcm9taXNlcy5yZWFkRmlsZShmaWxlLCBcInV0ZjhcIiksXG4gIClcblxuICBhd2FpdCBmcy5wcm9taXNlcy53cml0ZUZpbGUoZmlsZSwgcmVzdWx0KVxufVxuXG5mdW5jdGlvbiBwcmVwYXJlVGVtcGxhdGVGb3JTbmFwc2hvdChjb250ZW50OiBzdHJpbmcpOiBzdHJpbmcge1xuICBjb25zdCBpbnB1dCA9IEpTT04ucGFyc2UoY29udGVudClcbiAgY29uc3Qgb3V0cHV0ID0gW1xuICAgIHJlbW92ZUNka01ldGFkYXRhUmVzb3VyY2VGcm9tVGVtcGxhdGUsXG4gICAgLy8gQXZvaWQgZGV0YWlscyAoaGFzaGVzKSBmcm9tIGFzc2V0cy5cbiAgICByZW1vdmVBc3NldERldGFpbHNGcm9tVGVtcGxhdGUsXG4gIF0ucmVkdWNlKChhY2MsIGZuKSA9PiBmbihhY2MpLCBpbnB1dClcblxuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkob3V0cHV0LCB1bmRlZmluZWQsIFwiICBcIilcbn1cblxuLyoqXG4gKiBUcmFuc2Zvcm0gYSBDbG91ZCBBc3NlbWJseSB0ZW1wbGF0ZSBmaWxlIHNvIHRoYXQgaXQgY2FuIGJlIHBlcnNpc3RlZFxuICogYXMgYSBzbmFwc2hvdCB3aXRob3V0IGNhdXNpbmcgaW52YWxpZGF0aW9ucyBmb3IgbWlub3IgY2hhbmdlcy5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gcHJlcGFyZVRlbXBsYXRlRmlsZUZvclNuYXBzaG90KGZpbGU6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICBjb25zdCByZXN1bHQgPSBwcmVwYXJlVGVtcGxhdGVGb3JTbmFwc2hvdChcbiAgICBhd2FpdCBmcy5wcm9taXNlcy5yZWFkRmlsZShmaWxlLCBcInV0ZjhcIiksXG4gIClcblxuICBhd2FpdCBmcy5wcm9taXNlcy53cml0ZUZpbGUoZmlsZSwgcmVzdWx0KVxufVxuXG4vKipcbiAqIENvbnZlcnQgYSBDbG91ZCBBc3NlbWJseSB0byBhIHNuYXBzaG90LlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlQ2xvdWRBc3NlbWJseVNuYXBzaG90KFxuICBzcmM6IHN0cmluZyxcbiAgZHN0OiBzdHJpbmcsXG4pOiBQcm9taXNlPHZvaWQ+IHtcbiAgY29uc3QgYmFzZSA9IHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCBkc3QpXG5cbiAgYXdhaXQgY3B5KFwiLlwiLCBiYXNlLCB7XG4gICAgcGFyZW50czogdHJ1ZSxcbiAgICBjd2Q6IHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCBzcmMpLFxuICB9KVxuXG4gIC8vIERvbid0IGtlZXAgdHJhY2sgb2YgbWFuaWZlc3QgdmVyc2lvbi5cbiAgYXdhaXQgZGVsKHBhdGguam9pbihkc3QsIFwiKiovY2RrLm91dFwiKSlcblxuICAvLyBUaGUgdHJlZSBmaWxlIGRvZXNuJ3QgZ2l2ZSB1cyBtdWNoIHZhbHVlIGFzIHBhcnQgb2YgdGhlIHNuYXBzaG90LlxuICBhd2FpdCBkZWwocGF0aC5qb2luKGRzdCwgXCJ0cmVlLmpzb25cIikpXG5cbiAgLy8gUmVtb3ZlIGFzc2V0IGNvbnRlbnRzIGZvciBub3cuXG4gIGF3YWl0IGRlbChwYXRoLmpvaW4oZHN0LCBcIioqL2Fzc2V0LipcIikpXG5cbiAgLy8gUmVtb3ZlIGFzc2V0IGNvbmZpZ3Mgc28gd2UgZG9uJ3QgaGF2ZSB0byB1cGRhdGVcbiAgLy8gc25hcHNob3RzIGZvciBhc3NldCBjaGFuZ2VzLlxuICBhd2FpdCBkZWwocGF0aC5qb2luKGRzdCwgXCIqKi8qLmFzc2V0cy5qc29uXCIpKVxuXG4gIC8vIFRyYW5zZm9ybSB0aGUgbWFuaWZlc3QgdG8gYmUgbW9yZSBzbmFwc2hvdCBmcmllbmRseS5cbiAgZm9yIChjb25zdCBmaWxlIG9mIGdsb2Iuc3luYyhcIioqL21hbmlmZXN0Lmpzb25cIiwgeyBjd2Q6IGJhc2UgfSkpIHtcbiAgICBhd2FpdCBwcmVwYXJlTWFuaWZlc3RGaWxlRm9yU25hcHNob3QocGF0aC5qb2luKGJhc2UsIGZpbGUpKVxuICB9XG5cbiAgLy8gVHJhbnNmb3JtIGFsbCB0ZW1wbGF0ZXMuXG4gIGZvciAoY29uc3QgZmlsZSBvZiBnbG9iLnN5bmMoXCIqKi8qLnRlbXBsYXRlLmpzb25cIiwgeyBjd2Q6IGJhc2UgfSkpIHtcbiAgICBhd2FpdCBwcmVwYXJlVGVtcGxhdGVGaWxlRm9yU25hcHNob3QocGF0aC5qb2luKGJhc2UsIGZpbGUpKVxuICB9XG59XG4iXX0=
@@ -0,0 +1,40 @@
1
+ import * as cloudfront from "@aws-cdk/aws-cloudfront";
2
+ import * as cdk from "@aws-cdk/core";
3
+ export interface FrameOptionsHeader {
4
+ value?: "DENY" | "SAMEORIGIN";
5
+ }
6
+ export interface ReferrerPolicyHeader {
7
+ value?: string;
8
+ }
9
+ export interface StrictTransportSecurityHeader {
10
+ maxAge?: number;
11
+ includeSubDomains?: boolean;
12
+ preload?: boolean;
13
+ }
14
+ export interface ContentSecurityPolicyHeader {
15
+ reportOnly?: boolean;
16
+ baseUri?: string;
17
+ childSrc?: string;
18
+ defaultSrc?: string;
19
+ fontSrc?: string;
20
+ frameSrc?: string;
21
+ formAction?: string;
22
+ frameAncestors?: string;
23
+ imgSrc?: string;
24
+ manifestSrc?: string;
25
+ mediaSrc?: string;
26
+ objectSrc?: string;
27
+ scriptSrc?: string;
28
+ styleSrc?: string;
29
+ connectSrc?: string;
30
+ }
31
+ export interface SecurityHeaders {
32
+ contentSecurityPolicy?: ContentSecurityPolicyHeader;
33
+ strictTransportSecurity?: StrictTransportSecurityHeader;
34
+ referrerPolicy?: ReferrerPolicyHeader;
35
+ frameOptions?: FrameOptionsHeader;
36
+ }
37
+ export declare class WebappSecurityHeaders extends cdk.Construct {
38
+ readonly securityHeadersFunction: cloudfront.Function;
39
+ constructor(scope: cdk.Construct, id: string, props: SecurityHeaders);
40
+ }
@@ -0,0 +1,126 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WebappSecurityHeaders = void 0;
4
+ const cloudfront = require("@aws-cdk/aws-cloudfront");
5
+ const cdk = require("@aws-cdk/core");
6
+ function validateCspParam(param) {
7
+ if (param.indexOf('"') !== -1) {
8
+ throw Error('CSP override contains invalid character "');
9
+ }
10
+ if (param.indexOf(";") !== -1) {
11
+ throw Error("CSP override contains invalid character ;");
12
+ }
13
+ if (param.indexOf("\\") !== -1) {
14
+ throw Error("CSP override contains invalid character \\");
15
+ }
16
+ return param;
17
+ }
18
+ /* Replace all whitespace in a string with a single space */
19
+ function trim(value) {
20
+ return value.replace(/\s+/g, " ").trim();
21
+ }
22
+ function generateContentSecurityPolicyHeader(headerOptions) {
23
+ const defaultValues = {
24
+ baseUri: "'self'",
25
+ childSrc: "'none'",
26
+ connectSrc: "'self'",
27
+ defaultSrc: "'self'",
28
+ fontSrc: "'self'",
29
+ formAction: "'self'",
30
+ frameAncestors: "'none'",
31
+ frameSrc: "'self'",
32
+ imgSrc: "'self'",
33
+ manifestSrc: "'self'",
34
+ mediaSrc: "'self'",
35
+ objectSrc: "'none'",
36
+ scriptSrc: "'self'",
37
+ styleSrc: "'self'",
38
+ };
39
+ const options = {
40
+ ...defaultValues,
41
+ ...headerOptions,
42
+ };
43
+ Object.values(options).forEach((v) => typeof v === "string" && validateCspParam(v));
44
+ let headerValue = "";
45
+ headerValue += `base-uri ${trim(options.baseUri)};`;
46
+ headerValue += `child-src ${trim(options.childSrc)};`;
47
+ headerValue += `connect-src ${trim(options.connectSrc)};`;
48
+ headerValue += `default-src ${trim(options.defaultSrc)};`;
49
+ headerValue += `font-src ${trim(options.fontSrc)};`;
50
+ headerValue += `frame-src ${trim(options.frameSrc)};`;
51
+ headerValue += `img-src ${trim(options.imgSrc)};`;
52
+ headerValue += `manifest-src ${trim(options.manifestSrc)};`;
53
+ headerValue += `media-src ${trim(options.mediaSrc)};`;
54
+ headerValue += `object-src ${trim(options.objectSrc)};`;
55
+ headerValue += `script-src ${trim(options.scriptSrc)};`;
56
+ headerValue += `style-src ${trim(options.styleSrc)};`;
57
+ return trim(headerValue);
58
+ }
59
+ function generateStrictTransportSecurityHeader(headerOptions) {
60
+ const defaultValues = {
61
+ maxAge: 63072000,
62
+ includeSubDomains: false,
63
+ preload: false,
64
+ };
65
+ const options = {
66
+ ...defaultValues,
67
+ ...headerOptions,
68
+ };
69
+ let headerValue = "";
70
+ headerValue += `max-age=${options.maxAge};`;
71
+ headerValue += options.preload ? "preload;" : "";
72
+ headerValue += options.includeSubDomains ? "includeSubDomains;" : "";
73
+ return trim(headerValue);
74
+ }
75
+ function generateReferrerPolicyHeader(headerOptions) {
76
+ const defaultValues = {
77
+ value: "strict-origin-when-cross-origin",
78
+ };
79
+ const options = {
80
+ ...defaultValues,
81
+ ...headerOptions,
82
+ };
83
+ return options.value;
84
+ }
85
+ function generateFrameOptionsHeader(headerOptions) {
86
+ const defaultValues = {
87
+ value: "DENY",
88
+ };
89
+ const options = {
90
+ ...defaultValues,
91
+ ...headerOptions,
92
+ };
93
+ return trim(options.value);
94
+ }
95
+ class WebappSecurityHeaders extends cdk.Construct {
96
+ constructor(scope, id, props) {
97
+ var _a;
98
+ super(scope, id);
99
+ const cspHeaderName = ((_a = props.contentSecurityPolicy) === null || _a === void 0 ? void 0 : _a.reportOnly)
100
+ ? "content-security-policy-report-only"
101
+ : "content-security-policy";
102
+ const contentSecurityPolicy = generateContentSecurityPolicyHeader(props.contentSecurityPolicy);
103
+ const strictTransportSecurity = generateStrictTransportSecurityHeader(props.strictTransportSecurity);
104
+ const referrerPolicy = generateReferrerPolicyHeader(props.referrerPolicy);
105
+ const frameOptions = generateFrameOptionsHeader(props.frameOptions);
106
+ const lambdaCode = `function handler(event) {
107
+ var response = event.response;
108
+ var headers = response.headers;
109
+ headers['referrer-policy'] = {value: '${referrerPolicy}'};
110
+ headers['strict-transport-security'] = {value: '${strictTransportSecurity}'};
111
+ headers['x-content-type-options'] = {value: 'nosniff'};
112
+ headers['x-frame-options'] = {value: '${frameOptions}'};
113
+ headers['x-xss-protection'] = {value: '1; mode=block'};
114
+ headers['${cspHeaderName}'] = {value: "${contentSecurityPolicy}"};
115
+ return response;
116
+ }`;
117
+ // Hardcoded logical ID due to bug: https://github.com/aws/aws-cdk/issues/15523
118
+ const functionId = `Function${this.node.addr}`;
119
+ this.securityHeadersFunction = new cloudfront.Function(this, functionId, {
120
+ functionName: functionId,
121
+ code: cloudfront.FunctionCode.fromInline(lambdaCode),
122
+ });
123
+ }
124
+ }
125
+ exports.WebappSecurityHeaders = WebappSecurityHeaders;
126
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdXJpdHktaGVhZGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy93ZWJhcHAvc2VjdXJpdHktaGVhZGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxzREFBcUQ7QUFDckQscUNBQW9DO0FBeUNwQyxTQUFTLGdCQUFnQixDQUFDLEtBQWE7SUFDckMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFO1FBQzdCLE1BQU0sS0FBSyxDQUFDLDJDQUEyQyxDQUFDLENBQUE7S0FDekQ7SUFFRCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7UUFDN0IsTUFBTSxLQUFLLENBQUMsMkNBQTJDLENBQUMsQ0FBQTtLQUN6RDtJQUVELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRTtRQUM5QixNQUFNLEtBQUssQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFBO0tBQzFEO0lBRUQsT0FBTyxLQUFLLENBQUE7QUFDZCxDQUFDO0FBRUQsNERBQTREO0FBQzVELFNBQVMsSUFBSSxDQUFDLEtBQWE7SUFDekIsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtBQUMxQyxDQUFDO0FBRUQsU0FBUyxtQ0FBbUMsQ0FDMUMsYUFBMkM7SUFFM0MsTUFBTSxhQUFhLEdBQUc7UUFDcEIsT0FBTyxFQUFFLFFBQVE7UUFDakIsUUFBUSxFQUFFLFFBQVE7UUFDbEIsVUFBVSxFQUFFLFFBQVE7UUFDcEIsVUFBVSxFQUFFLFFBQVE7UUFDcEIsT0FBTyxFQUFFLFFBQVE7UUFDakIsVUFBVSxFQUFFLFFBQVE7UUFDcEIsY0FBYyxFQUFFLFFBQVE7UUFDeEIsUUFBUSxFQUFFLFFBQVE7UUFDbEIsTUFBTSxFQUFFLFFBQVE7UUFDaEIsV0FBVyxFQUFFLFFBQVE7UUFDckIsUUFBUSxFQUFFLFFBQVE7UUFDbEIsU0FBUyxFQUFFLFFBQVE7UUFDbkIsU0FBUyxFQUFFLFFBQVE7UUFDbkIsUUFBUSxFQUFFLFFBQVE7S0FDbkIsQ0FBQTtJQUVELE1BQU0sT0FBTyxHQUFHO1FBQ2QsR0FBRyxhQUFhO1FBQ2hCLEdBQUcsYUFBYTtLQUNqQixDQUFBO0lBRUQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQzVCLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxRQUFRLElBQUksZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQ3BELENBQUE7SUFFRCxJQUFJLFdBQVcsR0FBRyxFQUFFLENBQUE7SUFDcEIsV0FBVyxJQUFJLFlBQVksSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFBO0lBQ25ELFdBQVcsSUFBSSxhQUFhLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQTtJQUNyRCxXQUFXLElBQUksZUFBZSxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUE7SUFDekQsV0FBVyxJQUFJLGVBQWUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFBO0lBQ3pELFdBQVcsSUFBSSxZQUFZLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQTtJQUNuRCxXQUFXLElBQUksYUFBYSxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUE7SUFDckQsV0FBVyxJQUFJLFdBQVcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFBO0lBQ2pELFdBQVcsSUFBSSxnQkFBZ0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFBO0lBQzNELFdBQVcsSUFBSSxhQUFhLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQTtJQUNyRCxXQUFXLElBQUksY0FBYyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUE7SUFDdkQsV0FBVyxJQUFJLGNBQWMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFBO0lBQ3ZELFdBQVcsSUFBSSxhQUFhLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQTtJQUVyRCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQTtBQUMxQixDQUFDO0FBRUQsU0FBUyxxQ0FBcUMsQ0FDNUMsYUFBNkM7SUFFN0MsTUFBTSxhQUFhLEdBQUc7UUFDcEIsTUFBTSxFQUFFLFFBQVE7UUFDaEIsaUJBQWlCLEVBQUUsS0FBSztRQUN4QixPQUFPLEVBQUUsS0FBSztLQUNmLENBQUE7SUFDRCxNQUFNLE9BQU8sR0FBRztRQUNkLEdBQUcsYUFBYTtRQUNoQixHQUFHLGFBQWE7S0FDakIsQ0FBQTtJQUNELElBQUksV0FBVyxHQUFHLEVBQUUsQ0FBQTtJQUNwQixXQUFXLElBQUksV0FBVyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUE7SUFDM0MsV0FBVyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFBO0lBQ2hELFdBQVcsSUFBSSxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUE7SUFDcEUsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUE7QUFDMUIsQ0FBQztBQUVELFNBQVMsNEJBQTRCLENBQUMsYUFBb0M7SUFDeEUsTUFBTSxhQUFhLEdBQUc7UUFDcEIsS0FBSyxFQUFFLGlDQUFpQztLQUN6QyxDQUFBO0lBQ0QsTUFBTSxPQUFPLEdBQUc7UUFDZCxHQUFHLGFBQWE7UUFDaEIsR0FBRyxhQUFhO0tBQ2pCLENBQUE7SUFDRCxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUE7QUFDdEIsQ0FBQztBQUVELFNBQVMsMEJBQTBCLENBQUMsYUFBa0M7SUFDcEUsTUFBTSxhQUFhLEdBQUc7UUFDcEIsS0FBSyxFQUFFLE1BQU07S0FDZCxDQUFBO0lBQ0QsTUFBTSxPQUFPLEdBQUc7UUFDZCxHQUFHLGFBQWE7UUFDaEIsR0FBRyxhQUFhO0tBQ2pCLENBQUE7SUFDRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUE7QUFDNUIsQ0FBQztBQUVELE1BQWEscUJBQXNCLFNBQVEsR0FBRyxDQUFDLFNBQVM7SUFHdEQsWUFBWSxLQUFvQixFQUFFLEVBQVUsRUFBRSxLQUFzQjs7UUFDbEUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUVoQixNQUFNLGFBQWEsR0FBRyxDQUFBLE1BQUEsS0FBSyxDQUFDLHFCQUFxQiwwQ0FBRSxVQUFVO1lBQzNELENBQUMsQ0FBQyxxQ0FBcUM7WUFDdkMsQ0FBQyxDQUFDLHlCQUF5QixDQUFBO1FBRTdCLE1BQU0scUJBQXFCLEdBQUcsbUNBQW1DLENBQy9ELEtBQUssQ0FBQyxxQkFBcUIsQ0FDNUIsQ0FBQTtRQUNELE1BQU0sdUJBQXVCLEdBQUcscUNBQXFDLENBQ25FLEtBQUssQ0FBQyx1QkFBdUIsQ0FDOUIsQ0FBQTtRQUNELE1BQU0sY0FBYyxHQUFHLDRCQUE0QixDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQTtRQUN6RSxNQUFNLFlBQVksR0FBRywwQkFBMEIsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUE7UUFFbkUsTUFBTSxVQUFVLEdBQUc7Ozs4Q0FHdUIsY0FBYzt3REFDSix1QkFBdUI7OzhDQUVqQyxZQUFZOztpQkFFekMsYUFBYSxpQkFBaUIscUJBQXFCOztNQUU5RCxDQUFBO1FBRUYsK0VBQStFO1FBQy9FLE1BQU0sVUFBVSxHQUFHLFdBQVcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQTtRQUU5QyxJQUFJLENBQUMsdUJBQXVCLEdBQUcsSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDdkUsWUFBWSxFQUFFLFVBQVU7WUFDeEIsSUFBSSxFQUFFLFVBQVUsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQztTQUNyRCxDQUFDLENBQUE7SUFDSixDQUFDO0NBQ0Y7QUF2Q0Qsc0RBdUNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY2xvdWRmcm9udCBmcm9tIFwiQGF3cy1jZGsvYXdzLWNsb3VkZnJvbnRcIlxuaW1wb3J0ICogYXMgY2RrIGZyb20gXCJAYXdzLWNkay9jb3JlXCJcblxuZXhwb3J0IGludGVyZmFjZSBGcmFtZU9wdGlvbnNIZWFkZXIge1xuICB2YWx1ZT86IFwiREVOWVwiIHwgXCJTQU1FT1JJR0lOXCJcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWZlcnJlclBvbGljeUhlYWRlciB7XG4gIHZhbHVlPzogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RyaWN0VHJhbnNwb3J0U2VjdXJpdHlIZWFkZXIge1xuICBtYXhBZ2U/OiBudW1iZXJcbiAgaW5jbHVkZVN1YkRvbWFpbnM/OiBib29sZWFuXG4gIHByZWxvYWQ/OiBib29sZWFuXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGVudFNlY3VyaXR5UG9saWN5SGVhZGVyIHtcbiAgcmVwb3J0T25seT86IGJvb2xlYW5cbiAgYmFzZVVyaT86IHN0cmluZ1xuICBjaGlsZFNyYz86IHN0cmluZ1xuICBkZWZhdWx0U3JjPzogc3RyaW5nXG4gIGZvbnRTcmM/OiBzdHJpbmdcbiAgZnJhbWVTcmM/OiBzdHJpbmdcbiAgZm9ybUFjdGlvbj86IHN0cmluZ1xuICBmcmFtZUFuY2VzdG9ycz86IHN0cmluZ1xuICBpbWdTcmM/OiBzdHJpbmdcbiAgbWFuaWZlc3RTcmM/OiBzdHJpbmdcbiAgbWVkaWFTcmM/OiBzdHJpbmdcbiAgb2JqZWN0U3JjPzogc3RyaW5nXG4gIHNjcmlwdFNyYz86IHN0cmluZ1xuICBzdHlsZVNyYz86IHN0cmluZ1xuICBjb25uZWN0U3JjPzogc3RyaW5nXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VjdXJpdHlIZWFkZXJzIHtcbiAgY29udGVudFNlY3VyaXR5UG9saWN5PzogQ29udGVudFNlY3VyaXR5UG9saWN5SGVhZGVyXG4gIHN0cmljdFRyYW5zcG9ydFNlY3VyaXR5PzogU3RyaWN0VHJhbnNwb3J0U2VjdXJpdHlIZWFkZXJcbiAgcmVmZXJyZXJQb2xpY3k/OiBSZWZlcnJlclBvbGljeUhlYWRlclxuICBmcmFtZU9wdGlvbnM/OiBGcmFtZU9wdGlvbnNIZWFkZXJcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVDc3BQYXJhbShwYXJhbTogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKHBhcmFtLmluZGV4T2YoJ1wiJykgIT09IC0xKSB7XG4gICAgdGhyb3cgRXJyb3IoJ0NTUCBvdmVycmlkZSBjb250YWlucyBpbnZhbGlkIGNoYXJhY3RlciBcIicpXG4gIH1cblxuICBpZiAocGFyYW0uaW5kZXhPZihcIjtcIikgIT09IC0xKSB7XG4gICAgdGhyb3cgRXJyb3IoXCJDU1Agb3ZlcnJpZGUgY29udGFpbnMgaW52YWxpZCBjaGFyYWN0ZXIgO1wiKVxuICB9XG5cbiAgaWYgKHBhcmFtLmluZGV4T2YoXCJcXFxcXCIpICE9PSAtMSkge1xuICAgIHRocm93IEVycm9yKFwiQ1NQIG92ZXJyaWRlIGNvbnRhaW5zIGludmFsaWQgY2hhcmFjdGVyIFxcXFxcIilcbiAgfVxuXG4gIHJldHVybiBwYXJhbVxufVxuXG4vKiBSZXBsYWNlIGFsbCB3aGl0ZXNwYWNlIGluIGEgc3RyaW5nIHdpdGggYSBzaW5nbGUgc3BhY2UgKi9cbmZ1bmN0aW9uIHRyaW0odmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gIHJldHVybiB2YWx1ZS5yZXBsYWNlKC9cXHMrL2csIFwiIFwiKS50cmltKClcbn1cblxuZnVuY3Rpb24gZ2VuZXJhdGVDb250ZW50U2VjdXJpdHlQb2xpY3lIZWFkZXIoXG4gIGhlYWRlck9wdGlvbnM/OiBDb250ZW50U2VjdXJpdHlQb2xpY3lIZWFkZXIsXG4pIHtcbiAgY29uc3QgZGVmYXVsdFZhbHVlcyA9IHtcbiAgICBiYXNlVXJpOiBcIidzZWxmJ1wiLFxuICAgIGNoaWxkU3JjOiBcIidub25lJ1wiLFxuICAgIGNvbm5lY3RTcmM6IFwiJ3NlbGYnXCIsXG4gICAgZGVmYXVsdFNyYzogXCInc2VsZidcIixcbiAgICBmb250U3JjOiBcIidzZWxmJ1wiLFxuICAgIGZvcm1BY3Rpb246IFwiJ3NlbGYnXCIsXG4gICAgZnJhbWVBbmNlc3RvcnM6IFwiJ25vbmUnXCIsXG4gICAgZnJhbWVTcmM6IFwiJ3NlbGYnXCIsXG4gICAgaW1nU3JjOiBcIidzZWxmJ1wiLFxuICAgIG1hbmlmZXN0U3JjOiBcIidzZWxmJ1wiLFxuICAgIG1lZGlhU3JjOiBcIidzZWxmJ1wiLFxuICAgIG9iamVjdFNyYzogXCInbm9uZSdcIixcbiAgICBzY3JpcHRTcmM6IFwiJ3NlbGYnXCIsXG4gICAgc3R5bGVTcmM6IFwiJ3NlbGYnXCIsXG4gIH1cblxuICBjb25zdCBvcHRpb25zID0ge1xuICAgIC4uLmRlZmF1bHRWYWx1ZXMsXG4gICAgLi4uaGVhZGVyT3B0aW9ucyxcbiAgfVxuXG4gIE9iamVjdC52YWx1ZXMob3B0aW9ucykuZm9yRWFjaChcbiAgICAodikgPT4gdHlwZW9mIHYgPT09IFwic3RyaW5nXCIgJiYgdmFsaWRhdGVDc3BQYXJhbSh2KSxcbiAgKVxuXG4gIGxldCBoZWFkZXJWYWx1ZSA9IFwiXCJcbiAgaGVhZGVyVmFsdWUgKz0gYGJhc2UtdXJpICR7dHJpbShvcHRpb25zLmJhc2VVcmkpfTtgXG4gIGhlYWRlclZhbHVlICs9IGBjaGlsZC1zcmMgJHt0cmltKG9wdGlvbnMuY2hpbGRTcmMpfTtgXG4gIGhlYWRlclZhbHVlICs9IGBjb25uZWN0LXNyYyAke3RyaW0ob3B0aW9ucy5jb25uZWN0U3JjKX07YFxuICBoZWFkZXJWYWx1ZSArPSBgZGVmYXVsdC1zcmMgJHt0cmltKG9wdGlvbnMuZGVmYXVsdFNyYyl9O2BcbiAgaGVhZGVyVmFsdWUgKz0gYGZvbnQtc3JjICR7dHJpbShvcHRpb25zLmZvbnRTcmMpfTtgXG4gIGhlYWRlclZhbHVlICs9IGBmcmFtZS1zcmMgJHt0cmltKG9wdGlvbnMuZnJhbWVTcmMpfTtgXG4gIGhlYWRlclZhbHVlICs9IGBpbWctc3JjICR7dHJpbShvcHRpb25zLmltZ1NyYyl9O2BcbiAgaGVhZGVyVmFsdWUgKz0gYG1hbmlmZXN0LXNyYyAke3RyaW0ob3B0aW9ucy5tYW5pZmVzdFNyYyl9O2BcbiAgaGVhZGVyVmFsdWUgKz0gYG1lZGlhLXNyYyAke3RyaW0ob3B0aW9ucy5tZWRpYVNyYyl9O2BcbiAgaGVhZGVyVmFsdWUgKz0gYG9iamVjdC1zcmMgJHt0cmltKG9wdGlvbnMub2JqZWN0U3JjKX07YFxuICBoZWFkZXJWYWx1ZSArPSBgc2NyaXB0LXNyYyAke3RyaW0ob3B0aW9ucy5zY3JpcHRTcmMpfTtgXG4gIGhlYWRlclZhbHVlICs9IGBzdHlsZS1zcmMgJHt0cmltKG9wdGlvbnMuc3R5bGVTcmMpfTtgXG5cbiAgcmV0dXJuIHRyaW0oaGVhZGVyVmFsdWUpXG59XG5cbmZ1bmN0aW9uIGdlbmVyYXRlU3RyaWN0VHJhbnNwb3J0U2VjdXJpdHlIZWFkZXIoXG4gIGhlYWRlck9wdGlvbnM/OiBTdHJpY3RUcmFuc3BvcnRTZWN1cml0eUhlYWRlcixcbikge1xuICBjb25zdCBkZWZhdWx0VmFsdWVzID0ge1xuICAgIG1heEFnZTogNjMwNzIwMDAsXG4gICAgaW5jbHVkZVN1YkRvbWFpbnM6IGZhbHNlLFxuICAgIHByZWxvYWQ6IGZhbHNlLFxuICB9XG4gIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgLi4uZGVmYXVsdFZhbHVlcyxcbiAgICAuLi5oZWFkZXJPcHRpb25zLFxuICB9XG4gIGxldCBoZWFkZXJWYWx1ZSA9IFwiXCJcbiAgaGVhZGVyVmFsdWUgKz0gYG1heC1hZ2U9JHtvcHRpb25zLm1heEFnZX07YFxuICBoZWFkZXJWYWx1ZSArPSBvcHRpb25zLnByZWxvYWQgPyBcInByZWxvYWQ7XCIgOiBcIlwiXG4gIGhlYWRlclZhbHVlICs9IG9wdGlvbnMuaW5jbHVkZVN1YkRvbWFpbnMgPyBcImluY2x1ZGVTdWJEb21haW5zO1wiIDogXCJcIlxuICByZXR1cm4gdHJpbShoZWFkZXJWYWx1ZSlcbn1cblxuZnVuY3Rpb24gZ2VuZXJhdGVSZWZlcnJlclBvbGljeUhlYWRlcihoZWFkZXJPcHRpb25zPzogUmVmZXJyZXJQb2xpY3lIZWFkZXIpIHtcbiAgY29uc3QgZGVmYXVsdFZhbHVlcyA9IHtcbiAgICB2YWx1ZTogXCJzdHJpY3Qtb3JpZ2luLXdoZW4tY3Jvc3Mtb3JpZ2luXCIsXG4gIH1cbiAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAuLi5kZWZhdWx0VmFsdWVzLFxuICAgIC4uLmhlYWRlck9wdGlvbnMsXG4gIH1cbiAgcmV0dXJuIG9wdGlvbnMudmFsdWVcbn1cblxuZnVuY3Rpb24gZ2VuZXJhdGVGcmFtZU9wdGlvbnNIZWFkZXIoaGVhZGVyT3B0aW9ucz86IEZyYW1lT3B0aW9uc0hlYWRlcikge1xuICBjb25zdCBkZWZhdWx0VmFsdWVzID0ge1xuICAgIHZhbHVlOiBcIkRFTllcIixcbiAgfVxuICBjb25zdCBvcHRpb25zID0ge1xuICAgIC4uLmRlZmF1bHRWYWx1ZXMsXG4gICAgLi4uaGVhZGVyT3B0aW9ucyxcbiAgfVxuICByZXR1cm4gdHJpbShvcHRpb25zLnZhbHVlKVxufVxuXG5leHBvcnQgY2xhc3MgV2ViYXBwU2VjdXJpdHlIZWFkZXJzIGV4dGVuZHMgY2RrLkNvbnN0cnVjdCB7XG4gIHB1YmxpYyByZWFkb25seSBzZWN1cml0eUhlYWRlcnNGdW5jdGlvbjogY2xvdWRmcm9udC5GdW5jdGlvblxuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBjZGsuQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogU2VjdXJpdHlIZWFkZXJzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKVxuXG4gICAgY29uc3QgY3NwSGVhZGVyTmFtZSA9IHByb3BzLmNvbnRlbnRTZWN1cml0eVBvbGljeT8ucmVwb3J0T25seVxuICAgICAgPyBcImNvbnRlbnQtc2VjdXJpdHktcG9saWN5LXJlcG9ydC1vbmx5XCJcbiAgICAgIDogXCJjb250ZW50LXNlY3VyaXR5LXBvbGljeVwiXG5cbiAgICBjb25zdCBjb250ZW50U2VjdXJpdHlQb2xpY3kgPSBnZW5lcmF0ZUNvbnRlbnRTZWN1cml0eVBvbGljeUhlYWRlcihcbiAgICAgIHByb3BzLmNvbnRlbnRTZWN1cml0eVBvbGljeSxcbiAgICApXG4gICAgY29uc3Qgc3RyaWN0VHJhbnNwb3J0U2VjdXJpdHkgPSBnZW5lcmF0ZVN0cmljdFRyYW5zcG9ydFNlY3VyaXR5SGVhZGVyKFxuICAgICAgcHJvcHMuc3RyaWN0VHJhbnNwb3J0U2VjdXJpdHksXG4gICAgKVxuICAgIGNvbnN0IHJlZmVycmVyUG9saWN5ID0gZ2VuZXJhdGVSZWZlcnJlclBvbGljeUhlYWRlcihwcm9wcy5yZWZlcnJlclBvbGljeSlcbiAgICBjb25zdCBmcmFtZU9wdGlvbnMgPSBnZW5lcmF0ZUZyYW1lT3B0aW9uc0hlYWRlcihwcm9wcy5mcmFtZU9wdGlvbnMpXG5cbiAgICBjb25zdCBsYW1iZGFDb2RlID0gYGZ1bmN0aW9uIGhhbmRsZXIoZXZlbnQpIHtcbiAgICAgIHZhciByZXNwb25zZSA9IGV2ZW50LnJlc3BvbnNlO1xuICAgICAgdmFyIGhlYWRlcnMgPSByZXNwb25zZS5oZWFkZXJzO1xuICAgICAgaGVhZGVyc1sncmVmZXJyZXItcG9saWN5J10gPSB7dmFsdWU6ICcke3JlZmVycmVyUG9saWN5fSd9O1xuICAgICAgaGVhZGVyc1snc3RyaWN0LXRyYW5zcG9ydC1zZWN1cml0eSddID0ge3ZhbHVlOiAnJHtzdHJpY3RUcmFuc3BvcnRTZWN1cml0eX0nfTtcbiAgICAgIGhlYWRlcnNbJ3gtY29udGVudC10eXBlLW9wdGlvbnMnXSA9IHt2YWx1ZTogJ25vc25pZmYnfTtcbiAgICAgIGhlYWRlcnNbJ3gtZnJhbWUtb3B0aW9ucyddID0ge3ZhbHVlOiAnJHtmcmFtZU9wdGlvbnN9J307XG4gICAgICBoZWFkZXJzWyd4LXhzcy1wcm90ZWN0aW9uJ10gPSB7dmFsdWU6ICcxOyBtb2RlPWJsb2NrJ307XG4gICAgICBoZWFkZXJzWycke2NzcEhlYWRlck5hbWV9J10gPSB7dmFsdWU6IFwiJHtjb250ZW50U2VjdXJpdHlQb2xpY3l9XCJ9O1xuICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgIH1gXG5cbiAgICAvLyBIYXJkY29kZWQgbG9naWNhbCBJRCBkdWUgdG8gYnVnOiBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvaXNzdWVzLzE1NTIzXG4gICAgY29uc3QgZnVuY3Rpb25JZCA9IGBGdW5jdGlvbiR7dGhpcy5ub2RlLmFkZHJ9YFxuXG4gICAgdGhpcy5zZWN1cml0eUhlYWRlcnNGdW5jdGlvbiA9IG5ldyBjbG91ZGZyb250LkZ1bmN0aW9uKHRoaXMsIGZ1bmN0aW9uSWQsIHtcbiAgICAgIGZ1bmN0aW9uTmFtZTogZnVuY3Rpb25JZCxcbiAgICAgIGNvZGU6IGNsb3VkZnJvbnQuRnVuY3Rpb25Db2RlLmZyb21JbmxpbmUobGFtYmRhQ29kZSksXG4gICAgfSlcbiAgfVxufVxuIl19
@@ -5,6 +5,7 @@ import * as r53 from "@aws-cdk/aws-route53";
5
5
  import * as s3 from "@aws-cdk/aws-s3";
6
6
  import * as cdk from "@aws-cdk/core";
7
7
  import * as webappDeploy from "@capraconsulting/webapp-deploy-lambda";
8
+ import { SecurityHeaders } from "./security-headers";
8
9
  export interface WebappProps {
9
10
  /**
10
11
  * ACM certificate that covers the specifeid domain names.
@@ -40,6 +41,28 @@ export interface WebappProps {
40
41
  * @default - No custom page for 403 errors.
41
42
  */
42
43
  webAclErrorPagePath?: string;
44
+ /**
45
+ * Enable adding common security headers to CloudFront responses using a CloudFront Function.
46
+ *
47
+ * If enabled, the default behavior is to add the following headers with fairly strict defaults. Most of the headers can be customized:
48
+ * - Content-Security-Policy
49
+ * - Referrer-Policy
50
+ * - Strict-Transport-Security
51
+ * - X-Content-Type-Options
52
+ * - X-Frame-Options
53
+ * - X-XSS-Protection
54
+ *
55
+ * @default - No security headers will be added to responses
56
+ */
57
+ enableSecurityHeaders?: boolean;
58
+ /**
59
+ * Security headers overrides.
60
+ *
61
+ * Used to override certain security header values if the webapp requires more lax settings compared to the defaults.
62
+ *
63
+ * @default - A set of strict security header values will be used
64
+ */
65
+ securityHeadersOverrides?: SecurityHeaders;
43
66
  }
44
67
  /**
45
68
  * CloudFront for a Single-Page-Application.
@@ -9,6 +9,7 @@ const r53t = require("@aws-cdk/aws-route53-targets");
9
9
  const s3 = require("@aws-cdk/aws-s3");
10
10
  const cdk = require("@aws-cdk/core");
11
11
  const webappDeploy = require("@capraconsulting/webapp-deploy-lambda");
12
+ const security_headers_1 = require("./security-headers");
12
13
  /**
13
14
  * CloudFront for a Single-Page-Application.
14
15
  *
@@ -61,10 +62,23 @@ class Webapp extends cdk.Construct {
61
62
  responsePagePath: props.webAclErrorPagePath,
62
63
  });
63
64
  }
65
+ let functionAssociations;
66
+ if (props.enableSecurityHeaders) {
67
+ const securityHeaders = new security_headers_1.WebappSecurityHeaders(this, "SecurityHeaders", {
68
+ ...props.securityHeadersOverrides,
69
+ });
70
+ functionAssociations = [
71
+ {
72
+ function: securityHeaders.securityHeadersFunction,
73
+ eventType: cloudfront.FunctionEventType.VIEWER_RESPONSE,
74
+ },
75
+ ];
76
+ }
64
77
  this.distribution = new cloudfront.Distribution(this, "Distribution", {
65
78
  defaultBehavior: {
66
79
  origin: this.webappOrigin,
67
80
  viewerProtocolPolicy: cloudfront.ViewerProtocolPolicy.REDIRECT_TO_HTTPS,
81
+ functionAssociations: functionAssociations,
68
82
  },
69
83
  defaultRootObject: "index.html",
70
84
  priceClass: cloudfront.PriceClass.PRICE_CLASS_100,
@@ -103,4 +117,4 @@ class Webapp extends cdk.Construct {
103
117
  }
104
118
  }
105
119
  exports.Webapp = Webapp;
106
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3dlYmFwcC93ZWJhcHAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0Esc0RBQXFEO0FBQ3JELDJEQUEwRDtBQUMxRCx3Q0FBdUM7QUFDdkMsNENBQTJDO0FBQzNDLHFEQUFvRDtBQUNwRCxzQ0FBcUM7QUFDckMscUNBQW9DO0FBQ3BDLHNFQUFxRTtBQXVDckU7Ozs7OztHQU1HO0FBQ0gsTUFBYSxNQUFPLFNBQVEsR0FBRyxDQUFDLFNBQVM7SUFLdkMsWUFBWSxLQUFvQixFQUFFLEVBQVUsRUFBRSxLQUFrQjtRQUM5RCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFBO1FBRWhCLElBQUksS0FBSyxDQUFDLG1CQUFtQixJQUFJLElBQUksSUFBSSxLQUFLLENBQUMsUUFBUSxJQUFJLElBQUksRUFBRTtZQUMvRCxNQUFNLElBQUksS0FBSyxDQUFDLGlEQUFpRCxDQUFDLENBQUE7U0FDbkU7UUFFRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFO1lBQ2hELFVBQVUsRUFBRSxFQUFFLENBQUMsZ0JBQWdCLENBQUMsVUFBVTtTQUMzQyxDQUFDLENBQUE7UUFFRixNQUFNLG9CQUFvQixHQUFHLElBQUksVUFBVSxDQUFDLG9CQUFvQixDQUM5RCxJQUFJLEVBQ0osc0JBQXNCLENBQ3ZCLENBQUE7UUFFRCxJQUFJLENBQUMsWUFBWSxDQUFDLG1CQUFtQixDQUNuQyxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUM7WUFDdEIsU0FBUyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDakQsT0FBTyxFQUFFLENBQUMsY0FBYyxDQUFDO1lBQ3pCLFVBQVUsRUFBRSxDQUFDLG9CQUFvQixDQUFDLGNBQWMsQ0FBQztTQUNsRCxDQUFDLENBQ0gsQ0FBQTtRQUVELElBQUksQ0FBQyxZQUFZLENBQUMsbUJBQW1CLENBQ25DLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQztZQUN0QixTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQztZQUN4QywyREFBMkQ7WUFDM0QsdURBQXVEO1lBQ3ZELDJEQUEyRDtZQUMzRCx1REFBdUQ7WUFDdkQsNklBQTZJO1lBQzdJLE9BQU8sRUFBRSxDQUFDLGVBQWUsQ0FBQztZQUMxQixVQUFVLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxjQUFjLENBQUM7U0FDbEQsQ0FBQyxDQUNILENBQUE7UUFFRCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQzFELHdEQUF3RDtZQUN4RCwwREFBMEQ7WUFDMUQsVUFBVSxFQUFFLE1BQU07WUFDbEIsb0JBQW9CO1NBQ3JCLENBQUMsQ0FBQTtRQUVGLE1BQU0sY0FBYyxHQUErQjtZQUNqRDtnQkFDRSxVQUFVLEVBQUUsR0FBRztnQkFDZixrQkFBa0IsRUFBRSxHQUFHO2dCQUN2QixnQkFBZ0IsRUFBRSxhQUFhO2FBQ2hDO1NBQ0YsQ0FBQTtRQUVELElBQUksS0FBSyxDQUFDLG1CQUFtQixJQUFJLElBQUksRUFBRTtZQUNyQyxjQUFjLENBQUMsSUFBSSxDQUFDO2dCQUNsQixVQUFVLEVBQUUsR0FBRztnQkFDZixrQkFBa0IsRUFBRSxHQUFHO2dCQUN2QixnQkFBZ0IsRUFBRSxLQUFLLENBQUMsbUJBQW1CO2FBQzVDLENBQUMsQ0FBQTtTQUNIO1FBRUQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLFVBQVUsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRTtZQUNwRSxlQUFlLEVBQUU7Z0JBQ2YsTUFBTSxFQUFFLElBQUksQ0FBQyxZQUFZO2dCQUN6QixvQkFBb0IsRUFBRSxVQUFVLENBQUMsb0JBQW9CLENBQUMsaUJBQWlCO2FBQ3hFO1lBQ0QsaUJBQWlCLEVBQUUsWUFBWTtZQUMvQixVQUFVLEVBQUUsVUFBVSxDQUFDLFVBQVUsQ0FBQyxlQUFlO1lBQ2pELFdBQVcsRUFBRSxLQUFLLENBQUMscUJBQXFCO1lBQ3hDLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztZQUM5QixjQUFjO1lBQ2QsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRO1NBQ3pCLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxZQUFZLENBQUMsVUFBMkIsRUFBRSxVQUFrQjtRQUMxRCxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLFlBQVksVUFBVSxFQUFFLEVBQUU7WUFDOUMsSUFBSSxFQUFFLFVBQVU7WUFDaEIsVUFBVSxFQUFFLEdBQUcsVUFBVSxHQUFHO1lBQzVCLE1BQU0sRUFBRSxHQUFHLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FDaEMsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUM3QztTQUNGLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILGFBQWE7SUFDWDs7T0FFRztJQUNILE1BQTRCLEVBQzVCLEtBT0M7O1FBRUQsTUFBTSxnQkFBZ0IsR0FBRyxNQUFBLEtBQUssYUFBTCxLQUFLLHVCQUFMLEtBQUssQ0FBRSxnQkFBZ0IsbUNBQUksS0FBSyxDQUFBO1FBRXpELElBQUksWUFBWSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFO1lBQzVDLE1BQU0sRUFBRSxNQUFNO1lBQ2QsU0FBUyxFQUFFLElBQUksQ0FBQyxZQUFZO1lBQzVCLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtZQUMvQixjQUFjLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUztTQUN6RCxDQUFDLENBQUE7SUFDSixDQUFDO0NBQ0Y7QUF0SEQsd0JBc0hDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY2VydGlmaWNhdGVtYW5hZ2VyIGZyb20gXCJAYXdzLWNkay9hd3MtY2VydGlmaWNhdGVtYW5hZ2VyXCJcbmltcG9ydCAqIGFzIGNsb3VkZnJvbnQgZnJvbSBcIkBhd3MtY2RrL2F3cy1jbG91ZGZyb250XCJcbmltcG9ydCAqIGFzIG9yaWdpbnMgZnJvbSBcIkBhd3MtY2RrL2F3cy1jbG91ZGZyb250LW9yaWdpbnNcIlxuaW1wb3J0ICogYXMgaWFtIGZyb20gXCJAYXdzLWNkay9hd3MtaWFtXCJcbmltcG9ydCAqIGFzIHI1MyBmcm9tIFwiQGF3cy1jZGsvYXdzLXJvdXRlNTNcIlxuaW1wb3J0ICogYXMgcjUzdCBmcm9tIFwiQGF3cy1jZGsvYXdzLXJvdXRlNTMtdGFyZ2V0c1wiXG5pbXBvcnQgKiBhcyBzMyBmcm9tIFwiQGF3cy1jZGsvYXdzLXMzXCJcbmltcG9ydCAqIGFzIGNkayBmcm9tIFwiQGF3cy1jZGsvY29yZVwiXG5pbXBvcnQgKiBhcyB3ZWJhcHBEZXBsb3kgZnJvbSBcIkBjYXByYWNvbnN1bHRpbmcvd2ViYXBwLWRlcGxveS1sYW1iZGFcIlxuXG5leHBvcnQgaW50ZXJmYWNlIFdlYmFwcFByb3BzIHtcbiAgLyoqXG4gICAqIEFDTSBjZXJ0aWZpY2F0ZSB0aGF0IGNvdmVycyB0aGUgc3BlY2lmZWlkIGRvbWFpbiBuYW1lcy5cbiAgICpcbiAgICogVGhpcyBjZXJ0aWZpY2F0ZSBtdXN0IGJlIGNyZWF0ZWQgaW4gdGhlIHJlZ2lvbiB1cy1lYXN0LTEuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gVGhlIENsb3VkRnJvbnQgd2lsZGNhcmQgY2VydGlmaWNhdGUgKCouY2xvdWRmcm9udC5uZXQpIHdpbGwgYmUgdXNlZC5cbiAgICovXG4gIGNsb3VkZnJvbnRDZXJ0aWZpY2F0ZT86IGNlcnRpZmljYXRlbWFuYWdlci5JQ2VydGlmaWNhdGVcbiAgLyoqXG4gICAqIExpc3Qgb2YgZG9tYWluIG5hbWVzIHRoZSBDbG91ZEZyb250IGRpc3RyaWJ1dGlvbiBzaG91bGQgdXNlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEdlbmVyYXRlZCBuYW1lIChlLmcuLCBkMTExMTExYWJjZGVmOC5jbG91ZGZyb250Lm5ldClcbiAgICovXG4gIGRvbWFpbk5hbWVzPzogc3RyaW5nW11cbiAgLyoqXG4gICAqIEFXUyBXQUYgd2ViIEFDTCB0byBhc3NvY2lhdGUgd2l0aCB0aGUgQ2xvdWRGcm9udCBkaXN0cmlidXRpb24uXG4gICAqXG4gICAqIFRvIHNwZWNpZnkgYSB3ZWIgQUNMIGNyZWF0ZWQgdXNpbmcgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIEFXUyBXQUYsIHVzZSB0aGUgQUNMIEFSTiwgZm9yIGV4YW1wbGVcbiAgICogYGFybjphd3M6d2FmdjI6dXMtZWFzdC0xOjEyMzQ1Njc4OTAxMjpnbG9iYWwvd2ViYWNsL0V4YW1wbGVXZWJBQ0wvNDczZTY0ZmQtZjMwYi00NzY1LTgxYTAtNjJhZDk2ZGQxNjdhYC5cbiAgICogVG8gc3BlY2lmeSBhIHdlYiBBQ0wgY3JlYXRlZCB1c2luZyBBV1MgV0FGIENsYXNzaWMsIHVzZSB0aGUgQUNMIElELCBmb3IgZXhhbXBsZSBgNDczZTY0ZmQtZjMwYi00NzY1LTgxYTAtNjJhZDk2ZGQxNjdhYC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBBV1MgV2ViIEFwcGxpY2F0aW9uIEZpcmV3YWxsIHdlYiBhY2Nlc3MgY29udHJvbCBsaXN0ICh3ZWIgQUNMKS5cbiAgICovXG4gIHdlYkFjbElkPzogc3RyaW5nXG4gIC8qKlxuICAgKiBUaGUgcGF0aCB0byB0aGUgcGFnZSB0aGF0IHdpbGwgYmUgc2VydmVkIGZvciB1c2VycyBub3QgYWxsb3dlZCB0byBhY2Nlc3NcbiAgICogdGhlIHNpdGUgd2hlbiB1c2luZyBXQUYuIEUuZy4gXCIvNHh4LWVycm9ycy80MDMtZm9yYmlkZGVuLmh0bWxcIi5cbiAgICpcbiAgICogTm90ZSB0aGF0IHRoaXMgd2lsIGNhdGNoIGFueSA0MDMgZXJyb3JzIGZyb20gdGhlIG9yaWdpbihzKSwgdGhhdCBtaWdodFxuICAgKiBjb3ZlciBhbnkgb3RoZXIgYmVoYXZpb3JzIGlzIGFkZGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIGN1c3RvbSBwYWdlIGZvciA0MDMgZXJyb3JzLlxuICAgKi9cbiAgd2ViQWNsRXJyb3JQYWdlUGF0aD86IHN0cmluZ1xufVxuXG4vKipcbiAqIENsb3VkRnJvbnQgZm9yIGEgU2luZ2xlLVBhZ2UtQXBwbGljYXRpb24uXG4gKlxuICogQSBidWNrZXQgd2lsbCBiZSBjcmVhdGVkIGFuZCBpdHMgcHJlZml4IFwid2ViXCIgaXMgdXNlZCB0b1xuICogc2VydmUgZmlsZXMuIFVzZSB0aGUgYWRkRGVwbG95bWVudCBtZXRob2QgdG8gYXV0b21hdGljYWxseVxuICogZGVwbG95IGZpbGVzIGFzIHBhcnQgdGhlIHRoZSBDREsgZGVwbG95bWVudC5cbiAqL1xuZXhwb3J0IGNsYXNzIFdlYmFwcCBleHRlbmRzIGNkay5Db25zdHJ1Y3Qge1xuICBwdWJsaWMgcmVhZG9ubHkgZGlzdHJpYnV0aW9uOiBjbG91ZGZyb250LkRpc3RyaWJ1dGlvblxuICBwdWJsaWMgcmVhZG9ubHkgd2ViYXBwQnVja2V0OiBzMy5CdWNrZXRcbiAgcHVibGljIHJlYWRvbmx5IHdlYmFwcE9yaWdpbjogb3JpZ2lucy5TM09yaWdpblxuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBjZGsuQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogV2ViYXBwUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpXG5cbiAgICBpZiAocHJvcHMud2ViQWNsRXJyb3JQYWdlUGF0aCAhPSBudWxsICYmIHByb3BzLndlYkFjbElkID09IG51bGwpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIndlYkFjbEVycm9yUGFnZVBhdGggc2V0IGJ1dCB3ZWJBY2xJZCBpcyBtaXNzaW5nXCIpXG4gICAgfVxuXG4gICAgdGhpcy53ZWJhcHBCdWNrZXQgPSBuZXcgczMuQnVja2V0KHRoaXMsIFwiQnVja2V0XCIsIHtcbiAgICAgIGVuY3J5cHRpb246IHMzLkJ1Y2tldEVuY3J5cHRpb24uUzNfTUFOQUdFRCxcbiAgICB9KVxuXG4gICAgY29uc3Qgb3JpZ2luQWNjZXNzSWRlbnRpdHkgPSBuZXcgY2xvdWRmcm9udC5PcmlnaW5BY2Nlc3NJZGVudGl0eShcbiAgICAgIHRoaXMsXG4gICAgICBcIk9yaWdpbkFjY2Vzc0lkZW50aXR5XCIsXG4gICAgKVxuXG4gICAgdGhpcy53ZWJhcHBCdWNrZXQuYWRkVG9SZXNvdXJjZVBvbGljeShcbiAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgcmVzb3VyY2VzOiBbdGhpcy53ZWJhcHBCdWNrZXQuYXJuRm9yT2JqZWN0cyhcIipcIildLFxuICAgICAgICBhY3Rpb25zOiBbXCJzMzpHZXRPYmplY3RcIl0sXG4gICAgICAgIHByaW5jaXBhbHM6IFtvcmlnaW5BY2Nlc3NJZGVudGl0eS5ncmFudFByaW5jaXBhbF0sXG4gICAgICB9KSxcbiAgICApXG5cbiAgICB0aGlzLndlYmFwcEJ1Y2tldC5hZGRUb1Jlc291cmNlUG9saWN5KFxuICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICByZXNvdXJjZXM6IFt0aGlzLndlYmFwcEJ1Y2tldC5idWNrZXRBcm5dLFxuICAgICAgICAvLyBHcmFudCBzMzpMaXN0QnVja2V0IHNvIHRoYXQgQ2xvdWRGcm9udCByZWNlaXZlcyA0MDQgZnJvbVxuICAgICAgICAvLyB0aGUgb3JpZ2luIHJhdGhlciB0aGFuIDQwMyB3aGVuIGFjY2Vzc2luZyBmaWxlcyB0aGF0XG4gICAgICAgIC8vIGRvZXMgbm90IGV4aXN0LiBXZSBjYW5ub3QgZmFsbGJhY2sgdG8gaW5kZXguaHRtbCBmb3IgNDAzXG4gICAgICAgIC8vIGVycm9ycyBzaW5jZSBpdCB3b3VsZCBhbHNvIGJlIHNlcnZlZCBpZiB1c2luZyBhIFdBRi5cbiAgICAgICAgLy8gU2VlIGh0dHBzOi8vYXdzLmFtYXpvbi5jb20vcHJlbWl1bXN1cHBvcnQva25vd2xlZGdlLWNlbnRlci9zMy13ZWJzaXRlLWNsb3VkZnJvbnQtZXJyb3ItNDAzLyNUaGVfcmVxdWVzdGVkX29iamVjdHNfbXVzdF9leGlzdF9pbl90aGVfYnVja2V0XG4gICAgICAgIGFjdGlvbnM6IFtcInMzOkxpc3RCdWNrZXRcIl0sXG4gICAgICAgIHByaW5jaXBhbHM6IFtvcmlnaW5BY2Nlc3NJZGVudGl0eS5ncmFudFByaW5jaXBhbF0sXG4gICAgICB9KSxcbiAgICApXG5cbiAgICB0aGlzLndlYmFwcE9yaWdpbiA9IG5ldyBvcmlnaW5zLlMzT3JpZ2luKHRoaXMud2ViYXBwQnVja2V0LCB7XG4gICAgICAvLyB3ZWJhcHAtZGVwbG95LWxhbWJkYSB3aWxsIHVwbG9hZCBmaWxlcyB0byB0aGlzIGZvbGRlclxuICAgICAgLy8gc2luY2UgaXQga2VlcHMgc29tZSBvdGhlciBhZG1pbmlzdHJhdGl2ZSBmaWxlcyBvdXRzaWRlLlxuICAgICAgb3JpZ2luUGF0aDogXCIvd2ViXCIsXG4gICAgICBvcmlnaW5BY2Nlc3NJZGVudGl0eSxcbiAgICB9KVxuXG4gICAgY29uc3QgZXJyb3JSZXNwb25zZXM6IGNsb3VkZnJvbnQuRXJyb3JSZXNwb25zZVtdID0gW1xuICAgICAge1xuICAgICAgICBodHRwU3RhdHVzOiA0MDQsXG4gICAgICAgIHJlc3BvbnNlSHR0cFN0YXR1czogMjAwLFxuICAgICAgICByZXNwb25zZVBhZ2VQYXRoOiBcIi9pbmRleC5odG1sXCIsXG4gICAgICB9LFxuICAgIF1cblxuICAgIGlmIChwcm9wcy53ZWJBY2xFcnJvclBhZ2VQYXRoICE9IG51bGwpIHtcbiAgICAgIGVycm9yUmVzcG9uc2VzLnB1c2goe1xuICAgICAgICBodHRwU3RhdHVzOiA0MDMsXG4gICAgICAgIHJlc3BvbnNlSHR0cFN0YXR1czogNDAzLFxuICAgICAgICByZXNwb25zZVBhZ2VQYXRoOiBwcm9wcy53ZWJBY2xFcnJvclBhZ2VQYXRoLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICB0aGlzLmRpc3RyaWJ1dGlvbiA9IG5ldyBjbG91ZGZyb250LkRpc3RyaWJ1dGlvbih0aGlzLCBcIkRpc3RyaWJ1dGlvblwiLCB7XG4gICAgICBkZWZhdWx0QmVoYXZpb3I6IHtcbiAgICAgICAgb3JpZ2luOiB0aGlzLndlYmFwcE9yaWdpbixcbiAgICAgICAgdmlld2VyUHJvdG9jb2xQb2xpY3k6IGNsb3VkZnJvbnQuVmlld2VyUHJvdG9jb2xQb2xpY3kuUkVESVJFQ1RfVE9fSFRUUFMsXG4gICAgICB9LFxuICAgICAgZGVmYXVsdFJvb3RPYmplY3Q6IFwiaW5kZXguaHRtbFwiLFxuICAgICAgcHJpY2VDbGFzczogY2xvdWRmcm9udC5QcmljZUNsYXNzLlBSSUNFX0NMQVNTXzEwMCxcbiAgICAgIGNlcnRpZmljYXRlOiBwcm9wcy5jbG91ZGZyb250Q2VydGlmaWNhdGUsXG4gICAgICBkb21haW5OYW1lczogcHJvcHMuZG9tYWluTmFtZXMsXG4gICAgICBlcnJvclJlc3BvbnNlcyxcbiAgICAgIHdlYkFjbElkOiBwcm9wcy53ZWJBY2xJZCxcbiAgICB9KVxuICB9XG5cbiAgYWRkRG5zUmVjb3JkKGhvc3RlZFpvbmU6IHI1My5JSG9zdGVkWm9uZSwgZG9tYWluTmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgbmV3IHI1My5BUmVjb3JkKHRoaXMsIGBEbnNSZWNvcmQke2RvbWFpbk5hbWV9YCwge1xuICAgICAgem9uZTogaG9zdGVkWm9uZSxcbiAgICAgIHJlY29yZE5hbWU6IGAke2RvbWFpbk5hbWV9LmAsXG4gICAgICB0YXJnZXQ6IHI1My5SZWNvcmRUYXJnZXQuZnJvbUFsaWFzKFxuICAgICAgICBuZXcgcjUzdC5DbG91ZEZyb250VGFyZ2V0KHRoaXMuZGlzdHJpYnV0aW9uKSxcbiAgICAgICksXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBkZXBsb3ltZW50IHVzaW5nIHdlYmFwcC1kZXBsb3ktbGFtYmRhLlxuICAgKlxuICAgKiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2NhcHJhY29uc3VsdGluZy93ZWJhcHAtZGVwbG95LWxhbWJkYVxuICAgKiBmb3IgZGV0YWlscyBhYm91dCBob3cgdGhpcyB3b3Jrcy5cbiAgICovXG4gIGFkZERlcGxveW1lbnQoXG4gICAgLyoqXG4gICAgICogVGhlIGRlcGxveW1lbnQgc291cmNlLlxuICAgICAqL1xuICAgIHNvdXJjZTogd2ViYXBwRGVwbG95LklTb3VyY2UsXG4gICAgcHJvcHM/OiB7XG4gICAgICAvKipcbiAgICAgICAqIEluY2x1ZGUgc291cmNlIG1hcHMgaW4gdGhlIGRlcGxveW1lbnQuXG4gICAgICAgKlxuICAgICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgICAqL1xuICAgICAgZGVwbG95U291cmNlTWFwcz86IGJvb2xlYW5cbiAgICB9LFxuICApOiB2b2lkIHtcbiAgICBjb25zdCBkZXBsb3lTb3VyY2VNYXBzID0gcHJvcHM/LmRlcGxveVNvdXJjZU1hcHMgPz8gZmFsc2VcblxuICAgIG5ldyB3ZWJhcHBEZXBsb3kuV2ViYXBwRGVwbG95KHRoaXMsIFwiRGVwbG95XCIsIHtcbiAgICAgIHNvdXJjZTogc291cmNlLFxuICAgICAgd2ViQnVja2V0OiB0aGlzLndlYmFwcEJ1Y2tldCxcbiAgICAgIGRpc3RyaWJ1dGlvbjogdGhpcy5kaXN0cmlidXRpb24sXG4gICAgICBleGNsdWRlUGF0dGVybjogZGVwbG95U291cmNlTWFwcyA/IHVuZGVmaW5lZCA6IFwiXFxcXC5tYXAkXCIsXG4gICAgfSlcbiAgfVxufVxuIl19
120
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3dlYmFwcC93ZWJhcHAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0Esc0RBQXFEO0FBQ3JELDJEQUEwRDtBQUMxRCx3Q0FBdUM7QUFDdkMsNENBQTJDO0FBQzNDLHFEQUFvRDtBQUNwRCxzQ0FBcUM7QUFDckMscUNBQW9DO0FBQ3BDLHNFQUFxRTtBQUNyRSx5REFBMkU7QUE2RDNFOzs7Ozs7R0FNRztBQUNILE1BQWEsTUFBTyxTQUFRLEdBQUcsQ0FBQyxTQUFTO0lBS3ZDLFlBQVksS0FBb0IsRUFBRSxFQUFVLEVBQUUsS0FBa0I7UUFDOUQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUVoQixJQUFJLEtBQUssQ0FBQyxtQkFBbUIsSUFBSSxJQUFJLElBQUksS0FBSyxDQUFDLFFBQVEsSUFBSSxJQUFJLEVBQUU7WUFDL0QsTUFBTSxJQUFJLEtBQUssQ0FBQyxpREFBaUQsQ0FBQyxDQUFBO1NBQ25FO1FBRUQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRTtZQUNoRCxVQUFVLEVBQUUsRUFBRSxDQUFDLGdCQUFnQixDQUFDLFVBQVU7U0FDM0MsQ0FBQyxDQUFBO1FBRUYsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLFVBQVUsQ0FBQyxvQkFBb0IsQ0FDOUQsSUFBSSxFQUNKLHNCQUFzQixDQUN2QixDQUFBO1FBRUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxtQkFBbUIsQ0FDbkMsSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDO1lBQ3RCLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2pELE9BQU8sRUFBRSxDQUFDLGNBQWMsQ0FBQztZQUN6QixVQUFVLEVBQUUsQ0FBQyxvQkFBb0IsQ0FBQyxjQUFjLENBQUM7U0FDbEQs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UUFFekQsSUFBSSxZQUFZLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUU7WUFDNUMsTUFBTSxFQUFFLE1BQU07WUFDZCxTQUFTLEVBQUUsSUFBSSxDQUFDLFlBQVk7WUFDNUIsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO1lBQy9CLGNBQWMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxTQUFTO1NBQ3pELENBQUMsQ0FBQTtJQUNKLENBQUM7Q0FDRjtBQXhJRCx3QkF3SUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjZXJ0aWZpY2F0ZW1hbmFnZXIgZnJvbSBcIkBhd3MtY2RrL2F3cy1jZXJ0aWZpY2F0ZW1hbmFnZXJcIlxuaW1wb3J0ICogYXMgY2xvdWRmcm9udCBmcm9tIFwiQGF3cy1jZGsvYXdzLWNsb3VkZnJvbnRcIlxuaW1wb3J0ICogYXMgb3JpZ2lucyBmcm9tIFwiQGF3cy1jZGsvYXdzLWNsb3VkZnJvbnQtb3JpZ2luc1wiXG5pbXBvcnQgKiBhcyBpYW0gZnJvbSBcIkBhd3MtY2RrL2F3cy1pYW1cIlxuaW1wb3J0ICogYXMgcjUzIGZyb20gXCJAYXdzLWNkay9hd3Mtcm91dGU1M1wiXG5pbXBvcnQgKiBhcyByNTN0IGZyb20gXCJAYXdzLWNkay9hd3Mtcm91dGU1My10YXJnZXRzXCJcbmltcG9ydCAqIGFzIHMzIGZyb20gXCJAYXdzLWNkay9hd3MtczNcIlxuaW1wb3J0ICogYXMgY2RrIGZyb20gXCJAYXdzLWNkay9jb3JlXCJcbmltcG9ydCAqIGFzIHdlYmFwcERlcGxveSBmcm9tIFwiQGNhcHJhY29uc3VsdGluZy93ZWJhcHAtZGVwbG95LWxhbWJkYVwiXG5pbXBvcnQgeyBXZWJhcHBTZWN1cml0eUhlYWRlcnMsIFNlY3VyaXR5SGVhZGVycyB9IGZyb20gXCIuL3NlY3VyaXR5LWhlYWRlcnNcIlxuXG5leHBvcnQgaW50ZXJmYWNlIFdlYmFwcFByb3BzIHtcbiAgLyoqXG4gICAqIEFDTSBjZXJ0aWZpY2F0ZSB0aGF0IGNvdmVycyB0aGUgc3BlY2lmZWlkIGRvbWFpbiBuYW1lcy5cbiAgICpcbiAgICogVGhpcyBjZXJ0aWZpY2F0ZSBtdXN0IGJlIGNyZWF0ZWQgaW4gdGhlIHJlZ2lvbiB1cy1lYXN0LTEuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gVGhlIENsb3VkRnJvbnQgd2lsZGNhcmQgY2VydGlmaWNhdGUgKCouY2xvdWRmcm9udC5uZXQpIHdpbGwgYmUgdXNlZC5cbiAgICovXG4gIGNsb3VkZnJvbnRDZXJ0aWZpY2F0ZT86IGNlcnRpZmljYXRlbWFuYWdlci5JQ2VydGlmaWNhdGVcbiAgLyoqXG4gICAqIExpc3Qgb2YgZG9tYWluIG5hbWVzIHRoZSBDbG91ZEZyb250IGRpc3RyaWJ1dGlvbiBzaG91bGQgdXNlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEdlbmVyYXRlZCBuYW1lIChlLmcuLCBkMTExMTExYWJjZGVmOC5jbG91ZGZyb250Lm5ldClcbiAgICovXG4gIGRvbWFpbk5hbWVzPzogc3RyaW5nW11cbiAgLyoqXG4gICAqIEFXUyBXQUYgd2ViIEFDTCB0byBhc3NvY2lhdGUgd2l0aCB0aGUgQ2xvdWRGcm9udCBkaXN0cmlidXRpb24uXG4gICAqXG4gICAqIFRvIHNwZWNpZnkgYSB3ZWIgQUNMIGNyZWF0ZWQgdXNpbmcgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIEFXUyBXQUYsIHVzZSB0aGUgQUNMIEFSTiwgZm9yIGV4YW1wbGVcbiAgICogYGFybjphd3M6d2FmdjI6dXMtZWFzdC0xOjEyMzQ1Njc4OTAxMjpnbG9iYWwvd2ViYWNsL0V4YW1wbGVXZWJBQ0wvNDczZTY0ZmQtZjMwYi00NzY1LTgxYTAtNjJhZDk2ZGQxNjdhYC5cbiAgICogVG8gc3BlY2lmeSBhIHdlYiBBQ0wgY3JlYXRlZCB1c2luZyBBV1MgV0FGIENsYXNzaWMsIHVzZSB0aGUgQUNMIElELCBmb3IgZXhhbXBsZSBgNDczZTY0ZmQtZjMwYi00NzY1LTgxYTAtNjJhZDk2ZGQxNjdhYC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBBV1MgV2ViIEFwcGxpY2F0aW9uIEZpcmV3YWxsIHdlYiBhY2Nlc3MgY29udHJvbCBsaXN0ICh3ZWIgQUNMKS5cbiAgICovXG4gIHdlYkFjbElkPzogc3RyaW5nXG4gIC8qKlxuICAgKiBUaGUgcGF0aCB0byB0aGUgcGFnZSB0aGF0IHdpbGwgYmUgc2VydmVkIGZvciB1c2VycyBub3QgYWxsb3dlZCB0byBhY2Nlc3NcbiAgICogdGhlIHNpdGUgd2hlbiB1c2luZyBXQUYuIEUuZy4gXCIvNHh4LWVycm9ycy80MDMtZm9yYmlkZGVuLmh0bWxcIi5cbiAgICpcbiAgICogTm90ZSB0aGF0IHRoaXMgd2lsIGNhdGNoIGFueSA0MDMgZXJyb3JzIGZyb20gdGhlIG9yaWdpbihzKSwgdGhhdCBtaWdodFxuICAgKiBjb3ZlciBhbnkgb3RoZXIgYmVoYXZpb3JzIGlzIGFkZGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIGN1c3RvbSBwYWdlIGZvciA0MDMgZXJyb3JzLlxuICAgKi9cbiAgd2ViQWNsRXJyb3JQYWdlUGF0aD86IHN0cmluZ1xuICAvKipcbiAgICogRW5hYmxlIGFkZGluZyBjb21tb24gc2VjdXJpdHkgaGVhZGVycyB0byBDbG91ZEZyb250IHJlc3BvbnNlcyB1c2luZyBhIENsb3VkRnJvbnQgRnVuY3Rpb24uXG4gICAqXG4gICAqIElmIGVuYWJsZWQsIHRoZSBkZWZhdWx0IGJlaGF2aW9yIGlzIHRvIGFkZCB0aGUgZm9sbG93aW5nIGhlYWRlcnMgd2l0aCBmYWlybHkgc3RyaWN0IGRlZmF1bHRzLiBNb3N0IG9mIHRoZSBoZWFkZXJzIGNhbiBiZSBjdXN0b21pemVkOlxuICAgKiAtIENvbnRlbnQtU2VjdXJpdHktUG9saWN5XG4gICAqIC0gUmVmZXJyZXItUG9saWN5XG4gICAqIC0gU3RyaWN0LVRyYW5zcG9ydC1TZWN1cml0eVxuICAgKiAtIFgtQ29udGVudC1UeXBlLU9wdGlvbnNcbiAgICogLSBYLUZyYW1lLU9wdGlvbnNcbiAgICogLSBYLVhTUy1Qcm90ZWN0aW9uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gc2VjdXJpdHkgaGVhZGVycyB3aWxsIGJlIGFkZGVkIHRvIHJlc3BvbnNlc1xuICAgKi9cbiAgZW5hYmxlU2VjdXJpdHlIZWFkZXJzPzogYm9vbGVhblxuICAvKipcbiAgICogU2VjdXJpdHkgaGVhZGVycyBvdmVycmlkZXMuXG4gICAqXG4gICAqIFVzZWQgdG8gb3ZlcnJpZGUgY2VydGFpbiBzZWN1cml0eSBoZWFkZXIgdmFsdWVzIGlmIHRoZSB3ZWJhcHAgcmVxdWlyZXMgbW9yZSBsYXggc2V0dGluZ3MgY29tcGFyZWQgdG8gdGhlIGRlZmF1bHRzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEEgc2V0IG9mIHN0cmljdCBzZWN1cml0eSBoZWFkZXIgdmFsdWVzIHdpbGwgYmUgdXNlZFxuICAgKi9cbiAgc2VjdXJpdHlIZWFkZXJzT3ZlcnJpZGVzPzogU2VjdXJpdHlIZWFkZXJzXG59XG5cbi8qKlxuICogQ2xvdWRGcm9udCBmb3IgYSBTaW5nbGUtUGFnZS1BcHBsaWNhdGlvbi5cbiAqXG4gKiBBIGJ1Y2tldCB3aWxsIGJlIGNyZWF0ZWQgYW5kIGl0cyBwcmVmaXggXCJ3ZWJcIiBpcyB1c2VkIHRvXG4gKiBzZXJ2ZSBmaWxlcy4gVXNlIHRoZSBhZGREZXBsb3ltZW50IG1ldGhvZCB0byBhdXRvbWF0aWNhbGx5XG4gKiBkZXBsb3kgZmlsZXMgYXMgcGFydCB0aGUgdGhlIENESyBkZXBsb3ltZW50LlxuICovXG5leHBvcnQgY2xhc3MgV2ViYXBwIGV4dGVuZHMgY2RrLkNvbnN0cnVjdCB7XG4gIHB1YmxpYyByZWFkb25seSBkaXN0cmlidXRpb246IGNsb3VkZnJvbnQuRGlzdHJpYnV0aW9uXG4gIHB1YmxpYyByZWFkb25seSB3ZWJhcHBCdWNrZXQ6IHMzLkJ1Y2tldFxuICBwdWJsaWMgcmVhZG9ubHkgd2ViYXBwT3JpZ2luOiBvcmlnaW5zLlMzT3JpZ2luXG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IGNkay5Db25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBXZWJhcHBQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZClcblxuICAgIGlmIChwcm9wcy53ZWJBY2xFcnJvclBhZ2VQYXRoICE9IG51bGwgJiYgcHJvcHMud2ViQWNsSWQgPT0gbnVsbCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwid2ViQWNsRXJyb3JQYWdlUGF0aCBzZXQgYnV0IHdlYkFjbElkIGlzIG1pc3NpbmdcIilcbiAgICB9XG5cbiAgICB0aGlzLndlYmFwcEJ1Y2tldCA9IG5ldyBzMy5CdWNrZXQodGhpcywgXCJCdWNrZXRcIiwge1xuICAgICAgZW5jcnlwdGlvbjogczMuQnVja2V0RW5jcnlwdGlvbi5TM19NQU5BR0VELFxuICAgIH0pXG5cbiAgICBjb25zdCBvcmlnaW5BY2Nlc3NJZGVudGl0eSA9IG5ldyBjbG91ZGZyb250Lk9yaWdpbkFjY2Vzc0lkZW50aXR5KFxuICAgICAgdGhpcyxcbiAgICAgIFwiT3JpZ2luQWNjZXNzSWRlbnRpdHlcIixcbiAgICApXG5cbiAgICB0aGlzLndlYmFwcEJ1Y2tldC5hZGRUb1Jlc291cmNlUG9saWN5KFxuICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICByZXNvdXJjZXM6IFt0aGlzLndlYmFwcEJ1Y2tldC5hcm5Gb3JPYmplY3RzKFwiKlwiKV0sXG4gICAgICAgIGFjdGlvbnM6IFtcInMzOkdldE9iamVjdFwiXSxcbiAgICAgICAgcHJpbmNpcGFsczogW29yaWdpbkFjY2Vzc0lkZW50aXR5LmdyYW50UHJpbmNpcGFsXSxcbiAgICAgIH0pLFxuICAgIClcblxuICAgIHRoaXMud2ViYXBwQnVja2V0LmFkZFRvUmVzb3VyY2VQb2xpY3koXG4gICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIHJlc291cmNlczogW3RoaXMud2ViYXBwQnVja2V0LmJ1Y2tldEFybl0sXG4gICAgICAgIC8vIEdyYW50IHMzOkxpc3RCdWNrZXQgc28gdGhhdCBDbG91ZEZyb250IHJlY2VpdmVzIDQwNCBmcm9tXG4gICAgICAgIC8vIHRoZSBvcmlnaW4gcmF0aGVyIHRoYW4gNDAzIHdoZW4gYWNjZXNzaW5nIGZpbGVzIHRoYXRcbiAgICAgICAgLy8gZG9lcyBub3QgZXhpc3QuIFdlIGNhbm5vdCBmYWxsYmFjayB0byBpbmRleC5odG1sIGZvciA0MDNcbiAgICAgICAgLy8gZXJyb3JzIHNpbmNlIGl0IHdvdWxkIGFsc28gYmUgc2VydmVkIGlmIHVzaW5nIGEgV0FGLlxuICAgICAgICAvLyBTZWUgaHR0cHM6Ly9hd3MuYW1hem9uLmNvbS9wcmVtaXVtc3VwcG9ydC9rbm93bGVkZ2UtY2VudGVyL3MzLXdlYnNpdGUtY2xvdWRmcm9udC1lcnJvci00MDMvI1RoZV9yZXF1ZXN0ZWRfb2JqZWN0c19tdXN0X2V4aXN0X2luX3RoZV9idWNrZXRcbiAgICAgICAgYWN0aW9uczogW1wiczM6TGlzdEJ1Y2tldFwiXSxcbiAgICAgICAgcHJpbmNpcGFsczogW29yaWdpbkFjY2Vzc0lkZW50aXR5LmdyYW50UHJpbmNpcGFsXSxcbiAgICAgIH0pLFxuICAgIClcblxuICAgIHRoaXMud2ViYXBwT3JpZ2luID0gbmV3IG9yaWdpbnMuUzNPcmlnaW4odGhpcy53ZWJhcHBCdWNrZXQsIHtcbiAgICAgIC8vIHdlYmFwcC1kZXBsb3ktbGFtYmRhIHdpbGwgdXBsb2FkIGZpbGVzIHRvIHRoaXMgZm9sZGVyXG4gICAgICAvLyBzaW5jZSBpdCBrZWVwcyBzb21lIG90aGVyIGFkbWluaXN0cmF0aXZlIGZpbGVzIG91dHNpZGUuXG4gICAgICBvcmlnaW5QYXRoOiBcIi93ZWJcIixcbiAgICAgIG9yaWdpbkFjY2Vzc0lkZW50aXR5LFxuICAgIH0pXG5cbiAgICBjb25zdCBlcnJvclJlc3BvbnNlczogY2xvdWRmcm9udC5FcnJvclJlc3BvbnNlW10gPSBbXG4gICAgICB7XG4gICAgICAgIGh0dHBTdGF0dXM6IDQwNCxcbiAgICAgICAgcmVzcG9uc2VIdHRwU3RhdHVzOiAyMDAsXG4gICAgICAgIHJlc3BvbnNlUGFnZVBhdGg6IFwiL2luZGV4Lmh0bWxcIixcbiAgICAgIH0sXG4gICAgXVxuXG4gICAgaWYgKHByb3BzLndlYkFjbEVycm9yUGFnZVBhdGggIT0gbnVsbCkge1xuICAgICAgZXJyb3JSZXNwb25zZXMucHVzaCh7XG4gICAgICAgIGh0dHBTdGF0dXM6IDQwMyxcbiAgICAgICAgcmVzcG9uc2VIdHRwU3RhdHVzOiA0MDMsXG4gICAgICAgIHJlc3BvbnNlUGFnZVBhdGg6IHByb3BzLndlYkFjbEVycm9yUGFnZVBhdGgsXG4gICAgICB9KVxuICAgIH1cblxuICAgIGxldCBmdW5jdGlvbkFzc29jaWF0aW9uczogY2xvdWRmcm9udC5GdW5jdGlvbkFzc29jaWF0aW9uW10gfCB1bmRlZmluZWRcbiAgICBpZiAocHJvcHMuZW5hYmxlU2VjdXJpdHlIZWFkZXJzKSB7XG4gICAgICBjb25zdCBzZWN1cml0eUhlYWRlcnMgPSBuZXcgV2ViYXBwU2VjdXJpdHlIZWFkZXJzKFxuICAgICAgICB0aGlzLFxuICAgICAgICBcIlNlY3VyaXR5SGVhZGVyc1wiLFxuICAgICAgICB7XG4gICAgICAgICAgLi4ucHJvcHMuc2VjdXJpdHlIZWFkZXJzT3ZlcnJpZGVzLFxuICAgICAgICB9LFxuICAgICAgKVxuICAgICAgZnVuY3Rpb25Bc3NvY2lhdGlvbnMgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICBmdW5jdGlvbjogc2VjdXJpdHlIZWFkZXJzLnNlY3VyaXR5SGVhZGVyc0Z1bmN0aW9uLFxuICAgICAgICAgIGV2ZW50VHlwZTogY2xvdWRmcm9udC5GdW5jdGlvbkV2ZW50VHlwZS5WSUVXRVJfUkVTUE9OU0UsXG4gICAgICAgIH0sXG4gICAgICBdXG4gICAgfVxuXG4gICAgdGhpcy5kaXN0cmlidXRpb24gPSBuZXcgY2xvdWRmcm9udC5EaXN0cmlidXRpb24odGhpcywgXCJEaXN0cmlidXRpb25cIiwge1xuICAgICAgZGVmYXVsdEJlaGF2aW9yOiB7XG4gICAgICAgIG9yaWdpbjogdGhpcy53ZWJhcHBPcmlnaW4sXG4gICAgICAgIHZpZXdlclByb3RvY29sUG9saWN5OiBjbG91ZGZyb250LlZpZXdlclByb3RvY29sUG9saWN5LlJFRElSRUNUX1RPX0hUVFBTLFxuICAgICAgICBmdW5jdGlvbkFzc29jaWF0aW9uczogZnVuY3Rpb25Bc3NvY2lhdGlvbnMsXG4gICAgICB9LFxuICAgICAgZGVmYXVsdFJvb3RPYmplY3Q6IFwiaW5kZXguaHRtbFwiLFxuICAgICAgcHJpY2VDbGFzczogY2xvdWRmcm9udC5QcmljZUNsYXNzLlBSSUNFX0NMQVNTXzEwMCxcbiAgICAgIGNlcnRpZmljYXRlOiBwcm9wcy5jbG91ZGZyb250Q2VydGlmaWNhdGUsXG4gICAgICBkb21haW5OYW1lczogcHJvcHMuZG9tYWluTmFtZXMsXG4gICAgICBlcnJvclJlc3BvbnNlcyxcbiAgICAgIHdlYkFjbElkOiBwcm9wcy53ZWJBY2xJZCxcbiAgICB9KVxuICB9XG5cbiAgYWRkRG5zUmVjb3JkKGhvc3RlZFpvbmU6IHI1My5JSG9zdGVkWm9uZSwgZG9tYWluTmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgbmV3IHI1My5BUmVjb3JkKHRoaXMsIGBEbnNSZWNvcmQke2RvbWFpbk5hbWV9YCwge1xuICAgICAgem9uZTogaG9zdGVkWm9uZSxcbiAgICAgIHJlY29yZE5hbWU6IGAke2RvbWFpbk5hbWV9LmAsXG4gICAgICB0YXJnZXQ6IHI1My5SZWNvcmRUYXJnZXQuZnJvbUFsaWFzKFxuICAgICAgICBuZXcgcjUzdC5DbG91ZEZyb250VGFyZ2V0KHRoaXMuZGlzdHJpYnV0aW9uKSxcbiAgICAgICksXG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBkZXBsb3ltZW50IHVzaW5nIHdlYmFwcC1kZXBsb3ktbGFtYmRhLlxuICAgKlxuICAgKiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2NhcHJhY29uc3VsdGluZy93ZWJhcHAtZGVwbG95LWxhbWJkYVxuICAgKiBmb3IgZGV0YWlscyBhYm91dCBob3cgdGhpcyB3b3Jrcy5cbiAgICovXG4gIGFkZERlcGxveW1lbnQoXG4gICAgLyoqXG4gICAgICogVGhlIGRlcGxveW1lbnQgc291cmNlLlxuICAgICAqL1xuICAgIHNvdXJjZTogd2ViYXBwRGVwbG95LklTb3VyY2UsXG4gICAgcHJvcHM/OiB7XG4gICAgICAvKipcbiAgICAgICAqIEluY2x1ZGUgc291cmNlIG1hcHMgaW4gdGhlIGRlcGxveW1lbnQuXG4gICAgICAgKlxuICAgICAgICogQGRlZmF1bHQgZmFsc2VcbiAgICAgICAqL1xuICAgICAgZGVwbG95U291cmNlTWFwcz86IGJvb2xlYW5cbiAgICB9LFxuICApOiB2b2lkIHtcbiAgICBjb25zdCBkZXBsb3lTb3VyY2VNYXBzID0gcHJvcHM/LmRlcGxveVNvdXJjZU1hcHMgPz8gZmFsc2VcblxuICAgIG5ldyB3ZWJhcHBEZXBsb3kuV2ViYXBwRGVwbG95KHRoaXMsIFwiRGVwbG95XCIsIHtcbiAgICAgIHNvdXJjZTogc291cmNlLFxuICAgICAgd2ViQnVja2V0OiB0aGlzLndlYmFwcEJ1Y2tldCxcbiAgICAgIGRpc3RyaWJ1dGlvbjogdGhpcy5kaXN0cmlidXRpb24sXG4gICAgICBleGNsdWRlUGF0dGVybjogZGVwbG95U291cmNlTWFwcyA/IHVuZGVmaW5lZCA6IFwiXFxcXC5tYXAkXCIsXG4gICAgfSlcbiAgfVxufVxuIl19
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@liflig/cdk",
3
- "version": "1.48.0",
3
+ "version": "1.50.0",
4
4
  "description": "Experimental CDK library for Liflig",
5
5
  "repository": {
6
6
  "type": "git",
@@ -34,59 +34,58 @@
34
34
  "access": "public"
35
35
  },
36
36
  "devDependencies": {
37
- "@aws-cdk/assert": "1.122.0",
38
- "@aws-cdk/aws-certificatemanager": "1.122.0",
39
- "@aws-cdk/aws-cloudfront": "1.122.0",
40
- "@aws-cdk/aws-cloudfront-origins": "1.122.0",
41
- "@aws-cdk/aws-cloudwatch": "1.122.0",
42
- "@aws-cdk/aws-cloudwatch-actions": "1.122.0",
43
- "@aws-cdk/aws-codebuild": "1.122.0",
44
- "@aws-cdk/aws-codepipeline": "1.122.0",
45
- "@aws-cdk/aws-codepipeline-actions": "1.122.0",
46
- "@aws-cdk/aws-ecs": "1.122.0",
47
- "@aws-cdk/aws-events-targets": "1.122.0",
48
- "@aws-cdk/aws-iam": "1.122.0",
49
- "@aws-cdk/aws-lambda": "1.122.0",
50
- "@aws-cdk/aws-logs": "1.122.0",
51
- "@aws-cdk/aws-rds": "1.122.0",
52
- "@aws-cdk/aws-route53": "1.122.0",
53
- "@aws-cdk/aws-route53-targets": "1.122.0",
54
- "@aws-cdk/aws-s3": "1.122.0",
55
- "@aws-cdk/aws-ses": "1.122.0",
56
- "@aws-cdk/aws-sns": "1.122.0",
57
- "@aws-cdk/aws-stepfunctions": "1.122.0",
58
- "@aws-cdk/aws-stepfunctions-tasks": "1.122.0",
59
- "@aws-cdk/core": "1.122.0",
60
- "@aws-cdk/custom-resources": "1.122.0",
61
- "@aws-cdk/pipelines": "1.122.0",
62
- "@commitlint/cli": "12.1.4",
63
- "@commitlint/config-conventional": "12.1.4",
64
- "@types/aws-lambda": "8.10.83",
65
- "@types/jest": "27.0.2",
66
- "@types/node": "14.17.18",
67
- "@typescript-eslint/eslint-plugin": "4.31.2",
68
- "@typescript-eslint/parser": "4.31.2",
69
- "aws-cdk": "1.122.0",
70
- "eslint": "7.32.0",
37
+ "@aws-cdk/assert": "1.128.0",
38
+ "@aws-cdk/aws-certificatemanager": "1.128.0",
39
+ "@aws-cdk/aws-cloudfront": "1.128.0",
40
+ "@aws-cdk/aws-cloudfront-origins": "1.128.0",
41
+ "@aws-cdk/aws-cloudwatch": "1.128.0",
42
+ "@aws-cdk/aws-cloudwatch-actions": "1.128.0",
43
+ "@aws-cdk/aws-codebuild": "1.128.0",
44
+ "@aws-cdk/aws-codepipeline": "1.128.0",
45
+ "@aws-cdk/aws-codepipeline-actions": "1.128.0",
46
+ "@aws-cdk/aws-ecs": "1.128.0",
47
+ "@aws-cdk/aws-events-targets": "1.128.0",
48
+ "@aws-cdk/aws-iam": "1.128.0",
49
+ "@aws-cdk/aws-lambda": "1.128.0",
50
+ "@aws-cdk/aws-logs": "1.128.0",
51
+ "@aws-cdk/aws-rds": "1.128.0",
52
+ "@aws-cdk/aws-route53": "1.128.0",
53
+ "@aws-cdk/aws-route53-targets": "1.128.0",
54
+ "@aws-cdk/aws-s3": "1.128.0",
55
+ "@aws-cdk/aws-ses": "1.128.0",
56
+ "@aws-cdk/aws-sns": "1.128.0",
57
+ "@aws-cdk/aws-stepfunctions": "1.128.0",
58
+ "@aws-cdk/aws-stepfunctions-tasks": "1.128.0",
59
+ "@aws-cdk/core": "1.128.0",
60
+ "@aws-cdk/custom-resources": "1.128.0",
61
+ "@aws-cdk/pipelines": "1.128.0",
62
+ "@commitlint/cli": "13.2.1",
63
+ "@commitlint/config-conventional": "13.2.0",
64
+ "@types/aws-lambda": "8.10.85",
65
+ "@types/jest": "27.0.3",
66
+ "@types/node": "16.11.11",
67
+ "@typescript-eslint/eslint-plugin": "5.6.0",
68
+ "@typescript-eslint/parser": "5.6.0",
69
+ "aws-cdk": "1.128.0",
70
+ "eslint": "8.4.1",
71
71
  "eslint-config-prettier": "8.3.0",
72
- "eslint-plugin-deprecation": "1.2.1",
73
72
  "eslint-plugin-prettier": "4.0.0",
74
- "husky": "7.0.2",
75
- "jest": "27.2.1",
73
+ "husky": "7.0.4",
74
+ "jest": "27.3.1",
76
75
  "jest-cdk-snapshot": "1.4.2",
77
76
  "prettier": "2.4.1",
78
- "semantic-release": "18.0.0",
79
- "ts-jest": "27.0.5",
80
- "ts-node": "10.2.1",
81
- "typescript": "4.4.3"
77
+ "semantic-release": "18.0.1",
78
+ "ts-jest": "27.0.7",
79
+ "ts-node": "10.4.0",
80
+ "typescript": "4.5.2"
82
81
  },
83
82
  "dependencies": {
84
83
  "@capraconsulting/webapp-deploy-lambda": "^1.2.1",
85
- "aws-sdk": "^2.799.0",
86
- "cpy": "^8.1.0",
84
+ "aws-sdk": "^2.1012.0",
85
+ "cpy": "^8.1.2",
87
86
  "del": "^6.0.0",
88
87
  "execa": "^5.0.0",
89
- "glob": "7.1.7",
88
+ "glob": "7.2.0",
90
89
  "source-map-support": "^0.5.19"
91
90
  },
92
91
  "peerDependencies": {