@liflig/cdk-cloudfront-auth 1.9.1 → 1.10.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.
@@ -1,10 +1,10 @@
1
- import { LambdaConfig } from "@liflig/cdk-lambda-config";
2
1
  import * as cloudfront from "aws-cdk-lib/aws-cloudfront";
3
2
  import { ViewerProtocolPolicy, } from "aws-cdk-lib/aws-cloudfront";
4
3
  import { Construct } from "constructs";
5
4
  import { RetrieveClientSecret } from "./client-secret";
6
5
  import { ClientUpdate } from "./client-update";
7
6
  import { GenerateSecret } from "./generate-secret";
7
+ import { LambdaConfig } from "./lambda-config/lambda-config";
8
8
  /**
9
9
  * Configure previously deployed lambda functions, Cognito client
10
10
  * and CloudFront distribution.
@@ -250,4 +250,4 @@ export class CloudFrontAuth extends Construct {
250
250
  });
251
251
  }
252
252
  }
253
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvdWRmcm9udC1hdXRoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2Nsb3VkZnJvbnQtYXV0aC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sMkJBQTJCLENBQUE7QUFDeEQsT0FBTyxLQUFLLFVBQVUsTUFBTSw0QkFBNEIsQ0FBQTtBQUN4RCxPQUFPLEVBSUwsb0JBQW9CLEdBQ3JCLE1BQU0sNEJBQTRCLENBQUE7QUFJbkMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUN0QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUN0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDOUMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBbUVsRDs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sY0FBZSxTQUFRLFNBQVM7SUFDM0IsWUFBWSxDQUFRO0lBQ3BCLGlCQUFpQixDQUFRO0lBQ3pCLFdBQVcsQ0FBUTtJQUNuQixlQUFlLENBQVE7SUFFdEIsUUFBUSxDQUFtQjtJQUMzQixhQUFhLENBQVM7SUFDdkIsTUFBTSxDQUF3QjtJQUU3QixXQUFXLENBQWlCO0lBQzVCLGFBQWEsQ0FBaUI7SUFDOUIsV0FBVyxDQUFpQjtJQUM1QixhQUFhLENBQWlCO0lBQzlCLFNBQVMsQ0FBaUI7SUFFMUIsV0FBVyxDQUFVO0lBRXRDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBMEI7UUFDbEUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUVoQixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxZQUFZLElBQUksZ0JBQWdCLENBQUE7UUFDMUQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxpQkFBaUIsSUFBSSxHQUFHLENBQUE7UUFDdkQsSUFBSSxDQUFDLFdBQVcsR0FB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V0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQzdCLGlCQUFpQixFQUNmLEtBQUssQ0FBQyxpQkFBaUI7Z0JBQ3ZCLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUNoQixJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUM3RDtTQUNKLENBQUMsQ0FBQTtJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExhbWJkYUNvbmZpZyB9IGZyb20gXCJAbGlmbGlnL2Nkay1sYW1iZGEtY29uZmlnXCJcbmltcG9ydCAqIGFzIGNsb3VkZnJvbnQgZnJvbSBcImF3cy1jZGstbGliL2F3cy1jbG91ZGZyb250XCJcbmltcG9ydCB7XG4gIHR5cGUgQWRkQmVoYXZpb3JPcHRpb25zLFxuICB0eXBlIEJlaGF2aW9yT3B0aW9ucyxcbiAgdHlwZSBJT3JpZ2luLFxuICBWaWV3ZXJQcm90b2NvbFBvbGljeSxcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1jbG91ZGZyb250XCJcbmltcG9ydCB0eXBlICogYXMgY29nbml0byBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNvZ25pdG9cIlxuaW1wb3J0IHR5cGUgKiBhcyBsYW1iZGEgZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGFcIlxuaW1wb3J0IHR5cGUgeyBJVmVyc2lvbiB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhXCJcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCJcbmltcG9ydCB7IFJldHJpZXZlQ2xpZW50U2VjcmV0IH0gZnJvbSBcIi4vY2xpZW50LXNlY3JldFwiXG5pbXBvcnQgeyBDbGllbnRVcGRhdGUgfSBmcm9tIFwiLi9jbGllbnQtdXBkYXRlXCJcbmltcG9ydCB7IEdlbmVyYXRlU2VjcmV0IH0gZnJvbSBcIi4vZ2VuZXJhdGUtc2VjcmV0XCJcbmltcG9ydCB0eXBlIHsgU3RvcmVkQ29uZmlnIH0gZnJvbSBcIi4vaGFuZGxlcnMvdXRpbC9jb25maWdcIlxuaW1wb3J0IHR5cGUgeyBBdXRoTGFtYmRhcyB9IGZyb20gXCIuL2xhbWJkYXNcIlxuXG5leHBvcnQgaW50ZXJmYWNlIENsb3VkRnJvbnRBdXRoUHJvcHMge1xuICAvKipcbiAgICogQ29nbml0byBDbGllbnQgdGhhdCB3aWxsIGJlIHVzZWQgdG8gYXV0aGVudGljYXRlIHRoZSB1c2VyLlxuICAgKlxuICAgKiBJZiBhIGN1c3RvbSBjbGllbnQgaXMgcHJvdmlkZWQsIHRoZSB1cGRhdGVDbGllbnQgbWV0aG9kIGNhbm5vdFxuICAgKiBiZSB1c2VkIHNpbmNlIHdlIGNhbm5vdCBrbm93IHdoaWNoIHBhcmFtZXRlcnMgd2FzIHNldC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBhIG5ldyBjbGllbnQgd2lsbCBiZSBnZW5lcmF0ZWRcbiAgICovXG4gIGNsaWVudD86IGNvZ25pdG8uVXNlclBvb2xDbGllbnRcbiAgdXNlclBvb2w6IGNvZ25pdG8uSVVzZXJQb29sXG4gIC8qKlxuICAgKiBUaGUgZG9tYWluIHRoYXQgaXMgdXNlZCBmb3IgQ29nbml0byBBdXRoLlxuICAgKlxuICAgKiBJZiBub3QgdXNpbmcgY3VzdG9tIGRvbWFpbnMgdGhpcyB3aWxsIGJlIGEgbmFtZSB1bmRlciBhbWF6b25jb2duaXRvLmNvbS5cbiAgICpcbiAgICogQGV4YW1wbGUgYCR7ZG9tYWluLmRvbWFpbk5hbWV9LmF1dGguJHtyZWdpb259LmFtYXpvbmNvZ25pdG8uY29tYFxuICAgKi9cbiAgY29nbml0b0F1dGhEb21haW46IHN0cmluZ1xuICBhdXRoTGFtYmRhczogQXV0aExhbWJkYXNcbiAgLyoqXG4gICAqIEBkZWZhdWx0IC9hdXRoL2NhbGxiYWNrXG4gICAqL1xuICBjYWxsYmFja1BhdGg/OiBzdHJpbmdcbiAgLyoqXG4gICAqIEBkZWZhdWx0IC9cbiAgICovXG4gIHNpZ25PdXRSZWRpcmVjdFRvPzogc3RyaW5nXG4gIC8qKlxuICAgKiBAZGVmYXVsdCAvYXV0aC9zaWduLW91dFxuICAgKi9cbiAgc2lnbk91dFBhdGg/OiBzdHJpbmdcbiAgLyoqXG4gICAqIEBkZWZhdWx0IC9hdXRoL3JlZnJlc2hcbiAgICovXG4gIHJlZnJlc2hBdXRoUGF0aD86IHN0cmluZ1xuICAvKipcbiAgICogTG9nIGxldmVsLlxuICAgKlxuICAgKiBBIGxvZyBsZXZlbCBvZiBkZWJ1ZyB3aWxsIGxvZyBzZWNyZXRzIGFuZCBzaG91bGQgb25seSBiZSB1c2VkIGluXG4gICAqIGEgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQuXG4gICAqXG4gICAqIEBkZWZhdWx0IHdhcm5cbiAgICovXG4gIGxvZ0xldmVsPzogXCJub25lXCIgfCBcImVycm9yXCIgfCBcIndhcm5cIiB8IFwiaW5mb1wiIHwgXCJkZWJ1Z1wiXG4gIC8qKlxuICAgKiBSZXF1aXJlIHRoZSB1c2VyIHRvIGJlIHBhcnQgb2YgYSBzcGVjaWZpYyBDb2duaXRvIGdyb3VwIHRvXG4gICAqIGFjY2VzcyBhbnkgcmVzb3VyY2UuXG4gICAqL1xuICByZXF1aXJlR3JvdXBBbnlPZj86IHN0cmluZ1tdXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXBkYXRlQ2xpZW50UHJvcHMge1xuICBzaWduT3V0VXJsOiBzdHJpbmdcbiAgY2FsbGJhY2tVcmw6IHN0cmluZ1xuICAvKipcbiAgICogTGlzdCBvZiBpZGVudGl0eSBwcm92aWRlcnMgdXNlZCBmb3IgdGhlIGNsaWVudC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBDT0dOSVRPIGFuZCBpZGVudGl0eSBwcm92aWRlcnMgcmVnaXN0ZXJlZCBpbiB0aGUgVXNlclBvb2wgY29uc3RydWN0XG4gICAqL1xuICBpZGVudGl0eVByb3ZpZGVycz86IHN0cmluZ1tdXG59XG5cbi8qKlxuICogQ29uZmlndXJlIHByZXZpb3VzbHkgZGVwbG95ZWQgbGFtYmRhIGZ1bmN0aW9ucywgQ29nbml0byBjbGllbnRcbiAqIGFuZCBDbG91ZEZyb250IGRpc3RyaWJ1dGlvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIENsb3VkRnJvbnRBdXRoIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcHVibGljIHJlYWRvbmx5IGNhbGxiYWNrUGF0aDogc3RyaW5nXG4gIHB1YmxpYyByZWFkb25seSBzaWduT3V0UmVkaXJlY3RUbzogc3RyaW5nXG4gIHB1YmxpYyByZWFkb25seSBzaWduT3V0UGF0aDogc3RyaW5nXG4gIHB1YmxpYyByZWFkb25seSByZWZyZXNoQXV0aFBhdGg6IHN0cmluZ1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgdXNlclBvb2w6IGNvZ25pdG8uSVVzZXJQb29sXG4gIHByaXZhdGUgcmVhZG9ubHkgY2xpZW50Q3JlYXRlZDogYm9vbGVhblxuICBwdWJsaWMgcmVhZG9ubHkgY2xpZW50OiBjb2duaXRvLlVzZXJQb29sQ2xpZW50XG5cbiAgcHJpdmF0ZSByZWFkb25seSBjaGVja0F1dGhGbjogbGFtYmRhLklWZXJzaW9uXG4gIHByaXZhdGUgcmVhZG9ubHkgaHR0cEhlYWRlcnNGbjogbGFtYmRhLklWZXJzaW9uXG4gIHByaXZhdGUgcmVhZG9ubHkgcGFyc2VBdXRoRm46IGxhbWJkYS5JVmVyc2lvblxuICBwcml2YXRlIHJlYWRvbmx5IHJlZnJlc2hBdXRoRm46IGxhbWJkYS5JVmVyc2lvblxuICBwcml2YXRlIHJlYWRvbmx5IHNpZ25PdXRGbjogbGFtYmRhLklWZXJzaW9uXG5cbiAgcHJpdmF0ZSByZWFkb25seSBvYXV0aFNjb3Blczogc3RyaW5nW11cblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQ2xvdWRGcm9udEF1dGhQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZClcblxuICAgIHRoaXMuY2FsbGJhY2tQYXRoID0gcHJvcHMuY2FsbGJhY2tQYXRoID8/IFwiL2F1dGgvY2FsbGJhY2tcIlxuICAgIHRoaXMuc2lnbk91dFJlZGlyZWN0VG8gPSBwcm9wcy5zaWduT3V0UmVkaXJlY3RUbyA/PyBcIi9cIlxuICAgIHRoaXMuc2lnbk91dFBhdGggPSBwcm9wcy5zaWduT3V0UGF0aCA/PyBcIi9hdXRoL3NpZ24tb3V0XCJcbiAgICB0aGlzLnJlZnJlc2hBdXRoUGF0aCA9IHByb3BzLnJlZnJlc2hBdXRoUGF0aCA/PyBcIi9hdXRoL3JlZnJlc2hcIlxuXG4gICAgdGhpcy5vYXV0aFNjb3BlcyA9IFtcbiAgICAgIFwicGhvbmVcIixcbiAgICAgIFwiZW1haWxcIixcbiAgICAgIFwicHJvZmlsZVwiLFxuICAgICAgXCJvcGVuaWRcIixcbiAgICAgIFwiYXdzLmNvZ25pdG8uc2lnbmluLnVzZXIuYWRtaW5cIixcbiAgICBdXG5cbiAgICB0aGlzLnVzZXJQb29sID0gcHJvcHMudXNlclBvb2xcblxuICAgIHRoaXMuY2xpZW50Q3JlYXRlZCA9ICFwcm9wcy5jbGllbnRcbiAgICB0aGlzLmNsaWVudCA9XG4gICAgICBwcm9wcy5jbGllbnQgPz9cbiAgICAgIHByb3BzLnVzZXJQb29sLmFkZENsaWVudChcIlVzZXJQb29sQ2xpZW50XCIsIHtcbiAgICAgICAgLy8gTm90ZTogVGhlIGZvbGxvd2luZyBtdXN0IGJlIGtlcHQgaW4gc3luYyB3aXRoIHRoZSBBUElcbiAgICAgICAgLy8gY2FsbCBwZXJmb3JtZWQgaW4gQ2xpZW50VXBkYXRlLlxuICAgICAgICBhdXRoRmxvd3M6IHtcbiAgICAgICAgICB1c2VyUGFzc3dvcmQ6IHRydWUsXG4gICAgICAgICAgdXNlclNycDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgb0F1dGg6IHtcbiAgICAgICAgICBmbG93czoge1xuICAgICAgICAgICAgYXV0aG9yaXphdGlvbkNvZGVHcmFudDogdHJ1ZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBwcmV2ZW50VXNlckV4aXN0ZW5jZUVycm9yczogdHJ1ZSxcbiAgICAgICAgZ2VuZXJhdGVTZWNyZXQ6IHRydWUsXG4gICAgICB9KVxuXG4gICAgY29uc3Qgbm9uY2VTaWduaW5nU2VjcmV0ID0gbmV3IEdlbmVyYXRlU2VjcmV0KHRoaXMsIFwiTm9uY2VTaWduaW5nU2VjcmV0XCIpXG4gICAgICAudmFsdWVcblxuICAgIGNvbnN0IHsgY2xpZW50U2VjcmV0VmFsdWUgfSA9IG5ldyBSZXRyaWV2ZUNsaWVudFNlY3JldChcbiAgICAgIHRoaXMsXG4gICAgICBcIkNsaWVudFNlY3JldFwiLFxuICAgICAge1xuICAgICAgICBjbGllbnQ6IHRoaXMuY2xpZW50LFxuICAgICAgICB1c2VyUG9vbDogdGhpcy51c2VyUG9vbCxcbiAgICAgIH0sXG4gICAgKVxuXG4gICAgY29uc3QgY29uZmlnOiBTdG9yZWRDb25maWcgPSB7XG4gICAgICBodHRwSGVhZGVyczoge1xuICAgICAgICBcIkNvbnRlbnQtU2VjdXJpdHktUG9saWN5XCI6XG4gICAgICAgICAgXCJkZWZhdWx0LXNyYyAnbm9uZSc7IGltZy1zcmMgJ3NlbGYnOyBzY3JpcHQtc3JjICdzZWxmJzsgc3R5bGUtc3JjICdzZWxmJyAndW5zYWZlLWlubGluZSc7IG9iamVjdC1zcmMgJ25vbmUnOyBjb25uZWN0LXNyYyAnc2VsZidcIixcbiAgICAgICAgXCJTdHJpY3QtVHJhbnNwb3J0LVNlY3VyaXR5XCI6XG4gICAgICAgICAgXCJtYXgtYWdlPTMxNTM2MDAwOyBpbmNsdWRlU3ViZG9tYWluczsgcHJlbG9hZFwiLFxuICAgICAgICBcIlJlZmVycmVyLVBvbGljeVwiOiBcInNhbWUtb3JpZ2luXCIsXG4gICAgICAgIFwiWC1YU1MtUHJvdGVjdGlvblwiOiBcIjE7IG1vZGU9YmxvY2tcIixcbiAgICAgICAgXCJYLUZyYW1lLU9wdGlvbnNcIjogXCJERU5ZXCIsXG4gICAgICAgIFwiWC1Db250ZW50LVR5cGUtT3B0aW9uc1wiOiBcIm5vc25pZmZcIixcbiAgICAgICAgXCJDYWNoZS1Db250cm9sXCI6IFwibm8tY2FjaGVcIixcbiAgICAgIH0sXG4gICAgICBsb2dMZXZlbDogcHJvcHMubG9nTGV2ZWwgPz8gXCJ3YXJuXCIsXG4gICAgICB1c2VyUG9vbElkOiB0aGlzLnVzZXJQb29sLnVzZXJQb29sSWQsXG4gICAgICBjbGllbnRJZDogdGhpcy5jbGllbnQudXNlclBvb2xDbGllbnRJZCxcbiAgICAgIGNsaWVudFNlY3JldDogY2xpZW50U2VjcmV0VmFsdWUsXG4gICAgICBvYXV0aFNjb3BlczogdGhpcy5vYXV0aFNjb3BlcyxcbiAgICAgIGNvZ25pdG9BdXRoRG9tYWluOiBwcm9wcy5jb2duaXRvQXV0aERvbWFpbixcbiAgICAgIGNhbGxiYWNrUGF0aDogdGhpcy5jYWxsYmFja1BhdGgsXG4gICAgICBzaWduT3V0UmVkaXJlY3RUbzogdGhpcy5zaWduT3V0UmVkaXJlY3RUbyxcbiAgICAgIHNpZ25PdXRQYXRoOiB0aGlzLnNpZ25PdXRQYXRoLFxuICAgICAgcmVmcmVzaEF1dGhQYXRoOiB0aGlzLnJlZnJlc2hBdXRoUGF0aCxcbiAgICAgIHJlcXVpcmVHcm91cEFueU9mOiBwcm9wcy5yZXF1aXJlR3JvdXBBbnlPZixcbiAgICAgIGNvb2tpZVNldHRpbmdzOiB7XG4gICAgICAgIC8qXG4gICAgICAgIHNwYU1vZGUgLSBjb25zaWRlciBpZiB0aGlzIHNob3VsZCBiZSBzdXBwb3J0ZWRcbiAgICAgICAgaWRUb2tlbjogXCJQYXRoPS87IFNlY3VyZTsgU2FtZVNpdGU9TGF4XCIsXG4gICAgICAgIGFjY2Vzc1Rva2VuOiBcIlBhdGg9LzsgU2VjdXJlOyBTYW1lU2l0ZT1MYXhcIixcbiAgICAgICAgcmVmcmVzaFRva2VuOiBcIlBhdGg9LzsgU2VjdXJlOyBTYW1lU2l0ZT1MYXhcIixcbiAgICAgICAgbm9uY2U6IFwiUGF0aD0vOyBTZWN1cmU7IEh0dHBPbmx5OyBTYW1lU2l0ZT1MYXhcIixcbiAgICAgICAgKi9cbiAgICAgICAgaWRUb2tlbjogXCJQYXRoPS87IFNlY3VyZTsgSHR0cE9ubHk7IFNhbWVTaXRlPUxheFwiLFxuICAgICAgICBhY2Nlc3NUb2tlbjogXCJQYXRoPS87IFNlY3VyZTsgSHR0cE9ubHk7IFNhbWVTaXRlPUxheFwiLFxuICAgICAgICByZWZyZXNoVG9rZW46IFwiUGF0aD0vOyBTZWN1cmU7IEh0dHBPbmx5OyBTYW1lU2l0ZT1MYXhcIixcbiAgICAgICAgbm9uY2U6IFwiUGF0aD0vOyBTZWN1cmU7IEh0dHBPbmx5OyBTYW1lU2l0ZT1MYXhcIixcbiAgICAgIH0sXG4gICAgICBub25jZVNpZ25pbmdTZWNyZXQsXG4gICAgfVxuXG4gICAgdGhpcy5jaGVja0F1dGhGbiA9IG5ldyBMYW1iZGFDb25maWcodGhpcywgXCJDaGVja0F1dGhGblwiLCB7XG4gICAgICBmdW5jdGlvbjogcHJvcHMuYXV0aExhbWJkYXMuY2hlY2tBdXRoRm4uZ2V0KHRoaXMsIFwiQ2hlY2tBdXRoRm5JbXBvcnRcIiksXG4gICAgICBjb25maWcsXG4gICAgfSkudmVyc2lvblxuXG4gICAgdGhpcy5odHRwSGVhZGVyc0ZuID0gbmV3IExhbWJkYUNvbmZpZyh0aGlzLCBcIkh0dHBIZWFkZXJzRm5cIiwge1xuICAgICAgZnVuY3Rpb246IHByb3BzLmF1dGhMYW1iZGFzLmh0dHBIZWFkZXJzRm4uZ2V0KFxuICAgICAgICB0aGlzLFxuICAgICAgICBcIkh0dHBIZWFkZXJzRm5JbXBvcnRcIixcbiAgICAgICksXG4gICAgICBjb25maWcsXG4gICAgfSkudmVyc2lvblxuXG4gICAgdGhpcy5wYXJzZUF1dGhGbiA9IG5ldyBMYW1iZGFDb25maWcodGhpcywgXCJQYXJzZUF1dGhGblwiLCB7XG4gICAgICBmdW5jdGlvbjogcHJvcHMuYXV0aExhbWJkYXMucGFyc2VBdXRoRm4uZ2V0KHRoaXMsIFwiUGFyc2VBdXRoRm5JbXBvcnRcIiksXG4gICAgICBjb25maWcsXG4gICAgfSkudmVyc2lvblxuXG4gICAgdGhpcy5yZWZyZXNoQXV0aEZuID0gbmV3IExhbWJkYUNvbmZpZyh0aGlzLCBcIlJlZnJlc2hBdXRoRm5cIiwge1xuICAgICAgZnVuY3Rpb246IHByb3BzLmF1dGhMYW1iZGFzLnJlZnJlc2hBdXRoRm4uZ2V0KFxuICAgICAgICB0aGlzLFxuICAgICAgICBcIlJlZnJlc2hBdXRoRm5JbXBvcnRcIixcbiAgICAgICksXG4gICAgICBjb25maWcsXG4gICAgfSkudmVyc2lvblxuXG4gICAgdGhpcy5zaWduT3V0Rm4gPSBuZXcgTGFtYmRhQ29uZmlnKHRoaXMsIFwiU2lnbk91dEZuXCIsIHtcbiAgICAgIGZ1bmN0aW9uOiBwcm9wcy5hdXRoTGFtYmRhcy5zaWduT3V0Rm4uZ2V0KHRoaXMsIFwiU2lnbk91dEZuSW1wb3J0XCIpLFxuICAgICAgY29uZmlnLFxuICAgIH0pLnZlcnNpb25cbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlUGF0aExhbWJkYShcbiAgICBwYXRoOiBzdHJpbmcsXG4gICAgZm46IGxhbWJkYS5JVmVyc2lvbixcbiAgKTogY2xvdWRmcm9udC5CZWhhdmlvciB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHBhdGhQYXR0ZXJuOiBwYXRoLFxuICAgICAgZm9yd2FyZGVkVmFsdWVzOiB7XG4gICAgICAgIHF1ZXJ5U3RyaW5nOiB0cnVlLFxuICAgICAgfSxcbiAgICAgIGxhbWJkYUZ1bmN0aW9uQXNzb2NpYXRpb25zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBldmVudFR5cGU6IGNsb3VkZnJvbnQuTGFtYmRhRWRnZUV2ZW50VHlwZS5WSUVXRVJfUkVRVUVTVCxcbiAgICAgICAgICBsYW1iZGFGdW5jdGlvbjogZm4sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYmVoYXZpb3JzIGZvciBhdXRoZW50aWNhdGlvbiBwYWdlczpcbiAgICpcbiAgICogLSBjYWxsYmFjayBwYWdlXG4gICAqIC0gcmVmcmVzaCBwYWdlXG4gICAqIC0gc2lnbiBvdXQgcGFnZVxuICAgKlxuICAgKiBUaGlzIGlzIHRvIGJlIHVzZWQgd2l0aCBDbG91ZEZyb250V2ViRGlzdHJpYnV0aW9uLiBTZWVcbiAgICogY3JlYXRlQXV0aFBhZ2VzQmVoYXZpb3JzIGlmIHVzaW5nIERpc3RyaWJ1dGlvbi5cbiAgICovXG4gIHB1YmxpYyBnZXQgYXV0aFBhZ2VzKCk6IGNsb3VkZnJvbnQuQmVoYXZpb3JbXSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHRoaXMuY3JlYXRlUGF0aExhbWJkYSh0aGlzLmNhbGxiYWNrUGF0aCwgdGhpcy5wYXJzZUF1dGhGbiksXG4gICAgICB0aGlzLmNyZWF0ZVBhdGhMYW1iZGEodGhpcy5yZWZyZXNoQXV0aFBhdGgsIHRoaXMucmVmcmVzaEF1dGhGbiksXG4gICAgICB0aGlzLmNyZWF0ZVBhdGhMYW1iZGEodGhpcy5zaWduT3V0UGF0aCwgdGhpcy5zaWduT3V0Rm4pLFxuICAgIF1cbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYmVoYXZpb3JzIGZvciBhdXRoZW50aWNhdGlvbiBwYWdlcy5cbiAgICpcbiAgICogLSBjYWxsYmFjayBwYWdlXG4gICAqIC0gcmVmcmVzaCBwYWdlXG4gICAqIC0gc2lnbiBvdXQgcGFnZVxuICAgKlxuICAgKiBUaGlzIGlzIHRvIGJlIHVzZWQgd2l0aCBEaXN0cmlidXRpb24uXG4gICAqL1xuICBwdWJsaWMgY3JlYXRlQXV0aFBhZ2VzQmVoYXZpb3JzKFxuICAgIG9yaWdpbjogSU9yaWdpbixcbiAgICBvcHRpb25zPzogQWRkQmVoYXZpb3JPcHRpb25zLFxuICApOiBSZWNvcmQ8c3RyaW5nLCBCZWhhdmlvck9wdGlvbnM+IHtcbiAgICBmdW5jdGlvbiBwYXRoKHBhdGg6IHN0cmluZywgZm46IElWZXJzaW9uKTogUmVjb3JkPHN0cmluZywgQmVoYXZpb3JPcHRpb25zPiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBbcGF0aF06IHtcbiAgICAgICAgICBvcmlnaW4sXG4gICAgICAgICAgY29tcHJlc3M6IHRydWUsXG4gICAgICAgICAgdmlld2VyUHJvdG9jb2xQb2xpY3k6IFZpZXdlclByb3RvY29sUG9saWN5LlJFRElSRUNUX1RPX0hUVFBTLFxuICAgICAgICAgIGVkZ2VMYW1iZGFzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGV2ZW50VHlwZTogY2xvdWRmcm9udC5MYW1iZGFFZGdlRXZlbnRUeXBlLlZJRVdFUl9SRVFVRVNULFxuICAgICAgICAgICAgICBmdW5jdGlvblZlcnNpb246IGZuLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgIH0sXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnBhdGgodGhpcy5jYWxsYmFja1BhdGgsIHRoaXMucGFyc2VBdXRoRm4pLFxuICAgICAgLi4ucGF0aCh0aGlzLnJlZnJlc2hBdXRoUGF0aCwgdGhpcy5yZWZyZXNoQXV0aEZuKSxcbiAgICAgIC4uLnBhdGgodGhpcy5zaWduT3V0UGF0aCwgdGhpcy5zaWduT3V0Rm4pLFxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgbGFtYmRhIGZ1bmN0aW9uIGFzc29jaWF0aW9uIGZvciB2aWV3ZXIgcmVxdWVzdCB0byBjaGVja1xuICAgKiBhdXRoZW50aWNhdGlvbiBhbmQgb3JpZ2luYWwgcmVzcG9uc2UgdG8gYWRkIGhlYWRlcnMuXG4gICAqXG4gICAqIFRoaXMgaXMgdG8gYmUgdXNlZCB3aXRoIENsb3VkRnJvbnRXZWJEaXN0cmlidXRpb24uIFNlZVxuICAgKiBjcmVhdGVQcm90ZWN0ZWRCZWhhdmlvciBpZiB1c2luZyBEaXN0cmlidXRpb24uXG4gICAqL1xuICBwdWJsaWMgZ2V0IGF1dGhGaWx0ZXJzKCk6IGNsb3VkZnJvbnQuTGFtYmRhRnVuY3Rpb25Bc3NvY2lhdGlvbltdIHtcbiAgICByZXR1cm4gW1xuICAgICAge1xuICAgICAgICBldmVudFR5cGU6IGNsb3VkZnJvbnQuTGFtYmRhRWRnZUV2ZW50VHlwZS5WSUVXRVJfUkVRVUVTVCxcbiAgICAgICAgbGFtYmRhRnVuY3Rpb246IHRoaXMuY2hlY2tBdXRoRm4sXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBldmVudFR5cGU6IGNsb3VkZnJvbnQuTGFtYmRhRWRnZUV2ZW50VHlwZS5PUklHSU5fUkVTUE9OU0UsXG4gICAgICAgIGxhbWJkYUZ1bmN0aW9uOiB0aGlzLmh0dHBIZWFkZXJzRm4sXG4gICAgICB9LFxuICAgIF1cbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYmVoYXZpb3IgdGhhdCBpbmNsdWRlcyBhdXRob3JpemF0aW9uIGNoZWNrLlxuICAgKlxuICAgKiBUaGlzIGlzIHRvIGJlIHVzZWQgd2l0aCBEaXN0cmlidXRpb24uXG4gICAqL1xuICBwdWJsaWMgY3JlYXRlUHJvdGVjdGVkQmVoYXZpb3IoXG4gICAgb3JpZ2luOiBJT3JpZ2luLFxuICAgIG9wdGlvbnM/OiBBZGRCZWhhdmlvck9wdGlvbnMsXG4gICk6IEJlaGF2aW9yT3B0aW9ucyB7XG4gICAgaWYgKG9wdGlvbnM/LmVkZ2VMYW1iZGFzICE9IG51bGwpIHtcbiAgICAgIHRocm93IEVycm9yKFwiVXNlci1kZWZpbmVkIGVkZ2VMYW1iZGFzIGlzIGN1cnJlbnRseSBub3Qgc3VwcG9ydGVkXCIpXG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIG9yaWdpbixcbiAgICAgIGNvbXByZXNzOiB0cnVlLFxuICAgICAgdmlld2VyUHJvdG9jb2xQb2xpY3k6IFZpZXdlclByb3RvY29sUG9saWN5LlJFRElSRUNUX1RPX0hUVFBTLFxuICAgICAgZWRnZUxhbWJkYXM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGV2ZW50VHlwZTogY2xvdWRmcm9udC5MYW1iZGFFZGdlRXZlbnRUeXBlLlZJRVdFUl9SRVFVRVNULFxuICAgICAgICAgIGZ1bmN0aW9uVmVyc2lvbjogdGhpcy5jaGVja0F1dGhGbixcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGV2ZW50VHlwZTogY2xvdWRmcm9udC5MYW1iZGFFZGdlRXZlbnRUeXBlLk9SSUdJTl9SRVNQT05TRSxcbiAgICAgICAgICBmdW5jdGlvblZlcnNpb246IHRoaXMuaHR0cEhlYWRlcnNGbixcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgQ29nbml0byBjbGllbnQgdG8gdXNlIHRoZSBwcm9wZXIgVVJMcyBhbmQgT0F1dGggc2NvcGVzLlxuICAgKlxuICAgKiBUT0RPOiBJbiBjYXNlIHRoZSBjbGllbnQgY29uZmlndXJhdGlvbiBjaGFuZ2VzIGFuZCBpcyB1cGRhdGVkXG4gICAqICBieSBDbG91ZEZvcm1hdGlvbiwgdGhpcyB3aWxsIG5vdCBiZSByZWFwcGxpZWQgY2F1c2luZyB0aGUgY2xpZW50XG4gICAqICB0byBub3QgYmUgY29ycmVjdGx5IGNvbmZpZ3VyZWQuXG4gICAqICBIb3cgY2FuIHdlIGF2b2lkIHRoaXMgc2NlbmFyaW8/XG4gICAqL1xuICBwdWJsaWMgdXBkYXRlQ2xpZW50KGlkOiBzdHJpbmcsIHByb3BzOiBVcGRhdGVDbGllbnRQcm9wcyk6IENsaWVudFVwZGF0ZSB7XG4gICAgaWYgKCF0aGlzLmNsaWVudENyZWF0ZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJZb3UgY2Fubm90IHVzZSB1cGRhdGVDbGllbnQgd2l0aCBhIHVzZXItcHJvdmlkZWQgQ29nbml0byBDbGllbnQgXCIgK1xuICAgICAgICAgIFwic2luY2UgaXQgd291bGQgb3ZlcnJpZGUgdGhlIHVzZXItcHJvdmlkZWQgc2V0dGluZ3NcIixcbiAgICAgIClcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IENsaWVudFVwZGF0ZSh0aGlzLCBpZCwge1xuICAgICAgY2xpZW50OiB0aGlzLmNsaWVudCxcbiAgICAgIHVzZXJQb29sOiB0aGlzLnVzZXJQb29sLFxuICAgICAgc2lnbk91dFVybDogcHJvcHMuc2lnbk91dFVybCxcbiAgICAgIGNhbGxiYWNrVXJsOiBwcm9wcy5jYWxsYmFja1VybCxcbiAgICAgIG9hdXRoU2NvcGVzOiB0aGlzLm9hdXRoU2NvcGVzLFxuICAgICAgaWRlbnRpdHlQcm92aWRlcnM6XG4gICAgICAgIHByb3BzLmlkZW50aXR5UHJvdmlkZXJzID8/XG4gICAgICAgIFtcIkNPR05JVE9cIl0uY29uY2F0KFxuICAgICAgICAgIHRoaXMudXNlclBvb2wuaWRlbnRpdHlQcm92aWRlcnMubWFwKChpdCkgPT4gaXQucHJvdmlkZXJOYW1lKSxcbiAgICAgICAgKSxcbiAgICB9KVxuICB9XG59XG4iXX0=
253
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvdWRmcm9udC1hdXRoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2Nsb3VkZnJvbnQtYXV0aC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssVUFBVSxNQUFNLDRCQUE0QixDQUFBO0FBQ3hELE9BQU8sRUFJTCxvQkFBb0IsR0FDckIsTUFBTSw0QkFBNEIsQ0FBQTtBQUluQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQ3RDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQ3RELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUM5QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFFbEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLCtCQUErQixDQUFBO0FBa0U1RDs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sY0FBZSxTQUFRLFNBQVM7SUFDM0IsWUFBWSxDQUFRO0lBQ3BCLGlCQUFpQixDQUFRO0lBQ3pCLFdBQVcsQ0FBUTtJQUNuQixlQUFlLENBQVE7SUFFdEIsUUFBUSxDQUFtQjtJQUMzQixhQUFhLENBQVM7SUFDdkIsTUFBTSxDQUF3QjtJQUU3QixXQUFXLENBQWlCO0lBQzVCLGFBQWEsQ0FBaUI7SUFDOUIsV0FBVyxDQUFpQjtJQUM1QixhQUFhLENBQWlCO0lBQzlCLFNBQVMsQ0FBaUI7SUFFMUIsV0FBVyxDQUFVO0lBRXRDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBMEI7UUFDbEUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUVoQixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQyxZQUFZLElBQUksZ0JBQWdCLENBQUE7UUFDMUQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxpQkFBaUIsSUFBSSxHQUFHLENBQUE7UUFDdkQsSUFBSSxDQUFDLFdBQVcsR0FB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V0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQzdCLGlCQUFpQixFQUNmLEtBQUssQ0FBQyxpQkFBaUI7Z0JBQ3ZCLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUNoQixJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUM3RDtTQUNKLENBQUMsQ0FBQTtJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNsb3VkZnJvbnQgZnJvbSBcImF3cy1jZGstbGliL2F3cy1jbG91ZGZyb250XCJcbmltcG9ydCB7XG4gIHR5cGUgQWRkQmVoYXZpb3JPcHRpb25zLFxuICB0eXBlIEJlaGF2aW9yT3B0aW9ucyxcbiAgdHlwZSBJT3JpZ2luLFxuICBWaWV3ZXJQcm90b2NvbFBvbGljeSxcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1jbG91ZGZyb250XCJcbmltcG9ydCB0eXBlICogYXMgY29nbml0byBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNvZ25pdG9cIlxuaW1wb3J0IHR5cGUgKiBhcyBsYW1iZGEgZnJvbSBcImF3cy1jZGstbGliL2F3cy1sYW1iZGFcIlxuaW1wb3J0IHR5cGUgeyBJVmVyc2lvbiB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhXCJcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCJcbmltcG9ydCB7IFJldHJpZXZlQ2xpZW50U2VjcmV0IH0gZnJvbSBcIi4vY2xpZW50LXNlY3JldFwiXG5pbXBvcnQgeyBDbGllbnRVcGRhdGUgfSBmcm9tIFwiLi9jbGllbnQtdXBkYXRlXCJcbmltcG9ydCB7IEdlbmVyYXRlU2VjcmV0IH0gZnJvbSBcIi4vZ2VuZXJhdGUtc2VjcmV0XCJcbmltcG9ydCB0eXBlIHsgU3RvcmVkQ29uZmlnIH0gZnJvbSBcIi4vaGFuZGxlcnMvdXRpbC9jb25maWdcIlxuaW1wb3J0IHsgTGFtYmRhQ29uZmlnIH0gZnJvbSBcIi4vbGFtYmRhLWNvbmZpZy9sYW1iZGEtY29uZmlnXCJcbmltcG9ydCB0eXBlIHsgQXV0aExhbWJkYXMgfSBmcm9tIFwiLi9sYW1iZGFzXCJcblxuZXhwb3J0IGludGVyZmFjZSBDbG91ZEZyb250QXV0aFByb3BzIHtcbiAgLyoqXG4gICAqIENvZ25pdG8gQ2xpZW50IHRoYXQgd2lsbCBiZSB1c2VkIHRvIGF1dGhlbnRpY2F0ZSB0aGUgdXNlci5cbiAgICpcbiAgICogSWYgYSBjdXN0b20gY2xpZW50IGlzIHByb3ZpZGVkLCB0aGUgdXBkYXRlQ2xpZW50IG1ldGhvZCBjYW5ub3RcbiAgICogYmUgdXNlZCBzaW5jZSB3ZSBjYW5ub3Qga25vdyB3aGljaCBwYXJhbWV0ZXJzIHdhcyBzZXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYSBuZXcgY2xpZW50IHdpbGwgYmUgZ2VuZXJhdGVkXG4gICAqL1xuICBjbGllbnQ/OiBjb2duaXRvLlVzZXJQb29sQ2xpZW50XG4gIHVzZXJQb29sOiBjb2duaXRvLklVc2VyUG9vbFxuICAvKipcbiAgICogVGhlIGRvbWFpbiB0aGF0IGlzIHVzZWQgZm9yIENvZ25pdG8gQXV0aC5cbiAgICpcbiAgICogSWYgbm90IHVzaW5nIGN1c3RvbSBkb21haW5zIHRoaXMgd2lsbCBiZSBhIG5hbWUgdW5kZXIgYW1hem9uY29nbml0by5jb20uXG4gICAqXG4gICAqIEBleGFtcGxlIGAke2RvbWFpbi5kb21haW5OYW1lfS5hdXRoLiR7cmVnaW9ufS5hbWF6b25jb2duaXRvLmNvbWBcbiAgICovXG4gIGNvZ25pdG9BdXRoRG9tYWluOiBzdHJpbmdcbiAgYXV0aExhbWJkYXM6IEF1dGhMYW1iZGFzXG4gIC8qKlxuICAgKiBAZGVmYXVsdCAvYXV0aC9jYWxsYmFja1xuICAgKi9cbiAgY2FsbGJhY2tQYXRoPzogc3RyaW5nXG4gIC8qKlxuICAgKiBAZGVmYXVsdCAvXG4gICAqL1xuICBzaWduT3V0UmVkaXJlY3RUbz86IHN0cmluZ1xuICAvKipcbiAgICogQGRlZmF1bHQgL2F1dGgvc2lnbi1vdXRcbiAgICovXG4gIHNpZ25PdXRQYXRoPzogc3RyaW5nXG4gIC8qKlxuICAgKiBAZGVmYXVsdCAvYXV0aC9yZWZyZXNoXG4gICAqL1xuICByZWZyZXNoQXV0aFBhdGg/OiBzdHJpbmdcbiAgLyoqXG4gICAqIExvZyBsZXZlbC5cbiAgICpcbiAgICogQSBsb2cgbGV2ZWwgb2YgZGVidWcgd2lsbCBsb2cgc2VjcmV0cyBhbmQgc2hvdWxkIG9ubHkgYmUgdXNlZCBpblxuICAgKiBhIGRldmVsb3BtZW50IGVudmlyb25tZW50LlxuICAgKlxuICAgKiBAZGVmYXVsdCB3YXJuXG4gICAqL1xuICBsb2dMZXZlbD86IFwibm9uZVwiIHwgXCJlcnJvclwiIHwgXCJ3YXJuXCIgfCBcImluZm9cIiB8IFwiZGVidWdcIlxuICAvKipcbiAgICogUmVxdWlyZSB0aGUgdXNlciB0byBiZSBwYXJ0IG9mIGEgc3BlY2lmaWMgQ29nbml0byBncm91cCB0b1xuICAgKiBhY2Nlc3MgYW55IHJlc291cmNlLlxuICAgKi9cbiAgcmVxdWlyZUdyb3VwQW55T2Y/OiBzdHJpbmdbXVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVwZGF0ZUNsaWVudFByb3BzIHtcbiAgc2lnbk91dFVybDogc3RyaW5nXG4gIGNhbGxiYWNrVXJsOiBzdHJpbmdcbiAgLyoqXG4gICAqIExpc3Qgb2YgaWRlbnRpdHkgcHJvdmlkZXJzIHVzZWQgZm9yIHRoZSBjbGllbnQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gQ09HTklUTyBhbmQgaWRlbnRpdHkgcHJvdmlkZXJzIHJlZ2lzdGVyZWQgaW4gdGhlIFVzZXJQb29sIGNvbnN0cnVjdFxuICAgKi9cbiAgaWRlbnRpdHlQcm92aWRlcnM/OiBzdHJpbmdbXVxufVxuXG4vKipcbiAqIENvbmZpZ3VyZSBwcmV2aW91c2x5IGRlcGxveWVkIGxhbWJkYSBmdW5jdGlvbnMsIENvZ25pdG8gY2xpZW50XG4gKiBhbmQgQ2xvdWRGcm9udCBkaXN0cmlidXRpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBDbG91ZEZyb250QXV0aCBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHB1YmxpYyByZWFkb25seSBjYWxsYmFja1BhdGg6IHN0cmluZ1xuICBwdWJsaWMgcmVhZG9ubHkgc2lnbk91dFJlZGlyZWN0VG86IHN0cmluZ1xuICBwdWJsaWMgcmVhZG9ubHkgc2lnbk91dFBhdGg6IHN0cmluZ1xuICBwdWJsaWMgcmVhZG9ubHkgcmVmcmVzaEF1dGhQYXRoOiBzdHJpbmdcblxuICBwcml2YXRlIHJlYWRvbmx5IHVzZXJQb29sOiBjb2duaXRvLklVc2VyUG9vbFxuICBwcml2YXRlIHJlYWRvbmx5IGNsaWVudENyZWF0ZWQ6IGJvb2xlYW5cbiAgcHVibGljIHJlYWRvbmx5IGNsaWVudDogY29nbml0by5Vc2VyUG9vbENsaWVudFxuXG4gIHByaXZhdGUgcmVhZG9ubHkgY2hlY2tBdXRoRm46IGxhbWJkYS5JVmVyc2lvblxuICBwcml2YXRlIHJlYWRvbmx5IGh0dHBIZWFkZXJzRm46IGxhbWJkYS5JVmVyc2lvblxuICBwcml2YXRlIHJlYWRvbmx5IHBhcnNlQXV0aEZuOiBsYW1iZGEuSVZlcnNpb25cbiAgcHJpdmF0ZSByZWFkb25seSByZWZyZXNoQXV0aEZuOiBsYW1iZGEuSVZlcnNpb25cbiAgcHJpdmF0ZSByZWFkb25seSBzaWduT3V0Rm46IGxhbWJkYS5JVmVyc2lvblxuXG4gIHByaXZhdGUgcmVhZG9ubHkgb2F1dGhTY29wZXM6IHN0cmluZ1tdXG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IENsb3VkRnJvbnRBdXRoUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpXG5cbiAgICB0aGlzLmNhbGxiYWNrUGF0aCA9IHByb3BzLmNhbGxiYWNrUGF0aCA/PyBcIi9hdXRoL2NhbGxiYWNrXCJcbiAgICB0aGlzLnNpZ25PdXRSZWRpcmVjdFRvID0gcHJvcHMuc2lnbk91dFJlZGlyZWN0VG8gPz8gXCIvXCJcbiAgICB0aGlzLnNpZ25PdXRQYXRoID0gcHJvcHMuc2lnbk91dFBhdGggPz8gXCIvYXV0aC9zaWduLW91dFwiXG4gICAgdGhpcy5yZWZyZXNoQXV0aFBhdGggPSBwcm9wcy5yZWZyZXNoQXV0aFBhdGggPz8gXCIvYXV0aC9yZWZyZXNoXCJcblxuICAgIHRoaXMub2F1dGhTY29wZXMgPSBbXG4gICAgICBcInBob25lXCIsXG4gICAgICBcImVtYWlsXCIsXG4gICAgICBcInByb2ZpbGVcIixcbiAgICAgIFwib3BlbmlkXCIsXG4gICAgICBcImF3cy5jb2duaXRvLnNpZ25pbi51c2VyLmFkbWluXCIsXG4gICAgXVxuXG4gICAgdGhpcy51c2VyUG9vbCA9IHByb3BzLnVzZXJQb29sXG5cbiAgICB0aGlzLmNsaWVudENyZWF0ZWQgPSAhcHJvcHMuY2xpZW50XG4gICAgdGhpcy5jbGllbnQgPVxuICAgICAgcHJvcHMuY2xpZW50ID8/XG4gICAgICBwcm9wcy51c2VyUG9vbC5hZGRDbGllbnQoXCJVc2VyUG9vbENsaWVudFwiLCB7XG4gICAgICAgIC8vIE5vdGU6IFRoZSBmb2xsb3dpbmcgbXVzdCBiZSBrZXB0IGluIHN5bmMgd2l0aCB0aGUgQVBJXG4gICAgICAgIC8vIGNhbGwgcGVyZm9ybWVkIGluIENsaWVudFVwZGF0ZS5cbiAgICAgICAgYXV0aEZsb3dzOiB7XG4gICAgICAgICAgdXNlclBhc3N3b3JkOiB0cnVlLFxuICAgICAgICAgIHVzZXJTcnA6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIG9BdXRoOiB7XG4gICAgICAgICAgZmxvd3M6IHtcbiAgICAgICAgICAgIGF1dGhvcml6YXRpb25Db2RlR3JhbnQ6IHRydWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgcHJldmVudFVzZXJFeGlzdGVuY2VFcnJvcnM6IHRydWUsXG4gICAgICAgIGdlbmVyYXRlU2VjcmV0OiB0cnVlLFxuICAgICAgfSlcblxuICAgIGNvbnN0IG5vbmNlU2lnbmluZ1NlY3JldCA9IG5ldyBHZW5lcmF0ZVNlY3JldCh0aGlzLCBcIk5vbmNlU2lnbmluZ1NlY3JldFwiKVxuICAgICAgLnZhbHVlXG5cbiAgICBjb25zdCB7IGNsaWVudFNlY3JldFZhbHVlIH0gPSBuZXcgUmV0cmlldmVDbGllbnRTZWNyZXQoXG4gICAgICB0aGlzLFxuICAgICAgXCJDbGllbnRTZWNyZXRcIixcbiAgICAgIHtcbiAgICAgICAgY2xpZW50OiB0aGlzLmNsaWVudCxcbiAgICAgICAgdXNlclBvb2w6IHRoaXMudXNlclBvb2wsXG4gICAgICB9LFxuICAgIClcblxuICAgIGNvbnN0IGNvbmZpZzogU3RvcmVkQ29uZmlnID0ge1xuICAgICAgaHR0cEhlYWRlcnM6IHtcbiAgICAgICAgXCJDb250ZW50LVNlY3VyaXR5LVBvbGljeVwiOlxuICAgICAgICAgIFwiZGVmYXVsdC1zcmMgJ25vbmUnOyBpbWctc3JjICdzZWxmJzsgc2NyaXB0LXNyYyAnc2VsZic7IHN0eWxlLXNyYyAnc2VsZicgJ3Vuc2FmZS1pbmxpbmUnOyBvYmplY3Qtc3JjICdub25lJzsgY29ubmVjdC1zcmMgJ3NlbGYnXCIsXG4gICAgICAgIFwiU3RyaWN0LVRyYW5zcG9ydC1TZWN1cml0eVwiOlxuICAgICAgICAgIFwibWF4LWFnZT0zMTUzNjAwMDsgaW5jbHVkZVN1YmRvbWFpbnM7IHByZWxvYWRcIixcbiAgICAgICAgXCJSZWZlcnJlci1Qb2xpY3lcIjogXCJzYW1lLW9yaWdpblwiLFxuICAgICAgICBcIlgtWFNTLVByb3RlY3Rpb25cIjogXCIxOyBtb2RlPWJsb2NrXCIsXG4gICAgICAgIFwiWC1GcmFtZS1PcHRpb25zXCI6IFwiREVOWVwiLFxuICAgICAgICBcIlgtQ29udGVudC1UeXBlLU9wdGlvbnNcIjogXCJub3NuaWZmXCIsXG4gICAgICAgIFwiQ2FjaGUtQ29udHJvbFwiOiBcIm5vLWNhY2hlXCIsXG4gICAgICB9LFxuICAgICAgbG9nTGV2ZWw6IHByb3BzLmxvZ0xldmVsID8/IFwid2FyblwiLFxuICAgICAgdXNlclBvb2xJZDogdGhpcy51c2VyUG9vbC51c2VyUG9vbElkLFxuICAgICAgY2xpZW50SWQ6IHRoaXMuY2xpZW50LnVzZXJQb29sQ2xpZW50SWQsXG4gICAgICBjbGllbnRTZWNyZXQ6IGNsaWVudFNlY3JldFZhbHVlLFxuICAgICAgb2F1dGhTY29wZXM6IHRoaXMub2F1dGhTY29wZXMsXG4gICAgICBjb2duaXRvQXV0aERvbWFpbjogcHJvcHMuY29nbml0b0F1dGhEb21haW4sXG4gICAgICBjYWxsYmFja1BhdGg6IHRoaXMuY2FsbGJhY2tQYXRoLFxuICAgICAgc2lnbk91dFJlZGlyZWN0VG86IHRoaXMuc2lnbk91dFJlZGlyZWN0VG8sXG4gICAgICBzaWduT3V0UGF0aDogdGhpcy5zaWduT3V0UGF0aCxcbiAgICAgIHJlZnJlc2hBdXRoUGF0aDogdGhpcy5yZWZyZXNoQXV0aFBhdGgsXG4gICAgICByZXF1aXJlR3JvdXBBbnlPZjogcHJvcHMucmVxdWlyZUdyb3VwQW55T2YsXG4gICAgICBjb29raWVTZXR0aW5nczoge1xuICAgICAgICAvKlxuICAgICAgICBzcGFNb2RlIC0gY29uc2lkZXIgaWYgdGhpcyBzaG91bGQgYmUgc3VwcG9ydGVkXG4gICAgICAgIGlkVG9rZW46IFwiUGF0aD0vOyBTZWN1cmU7IFNhbWVTaXRlPUxheFwiLFxuICAgICAgICBhY2Nlc3NUb2tlbjogXCJQYXRoPS87IFNlY3VyZTsgU2FtZVNpdGU9TGF4XCIsXG4gICAgICAgIHJlZnJlc2hUb2tlbjogXCJQYXRoPS87IFNlY3VyZTsgU2FtZVNpdGU9TGF4XCIsXG4gICAgICAgIG5vbmNlOiBcIlBhdGg9LzsgU2VjdXJlOyBIdHRwT25seTsgU2FtZVNpdGU9TGF4XCIsXG4gICAgICAgICovXG4gICAgICAgIGlkVG9rZW46IFwiUGF0aD0vOyBTZWN1cmU7IEh0dHBPbmx5OyBTYW1lU2l0ZT1MYXhcIixcbiAgICAgICAgYWNjZXNzVG9rZW46IFwiUGF0aD0vOyBTZWN1cmU7IEh0dHBPbmx5OyBTYW1lU2l0ZT1MYXhcIixcbiAgICAgICAgcmVmcmVzaFRva2VuOiBcIlBhdGg9LzsgU2VjdXJlOyBIdHRwT25seTsgU2FtZVNpdGU9TGF4XCIsXG4gICAgICAgIG5vbmNlOiBcIlBhdGg9LzsgU2VjdXJlOyBIdHRwT25seTsgU2FtZVNpdGU9TGF4XCIsXG4gICAgICB9LFxuICAgICAgbm9uY2VTaWduaW5nU2VjcmV0LFxuICAgIH1cblxuICAgIHRoaXMuY2hlY2tBdXRoRm4gPSBuZXcgTGFtYmRhQ29uZmlnKHRoaXMsIFwiQ2hlY2tBdXRoRm5cIiwge1xuICAgICAgZnVuY3Rpb246IHByb3BzLmF1dGhMYW1iZGFzLmNoZWNrQXV0aEZuLmdldCh0aGlzLCBcIkNoZWNrQXV0aEZuSW1wb3J0XCIpLFxuICAgICAgY29uZmlnLFxuICAgIH0pLnZlcnNpb25cblxuICAgIHRoaXMuaHR0cEhlYWRlcnNGbiA9IG5ldyBMYW1iZGFDb25maWcodGhpcywgXCJIdHRwSGVhZGVyc0ZuXCIsIHtcbiAgICAgIGZ1bmN0aW9uOiBwcm9wcy5hdXRoTGFtYmRhcy5odHRwSGVhZGVyc0ZuLmdldChcbiAgICAgICAgdGhpcyxcbiAgICAgICAgXCJIdHRwSGVhZGVyc0ZuSW1wb3J0XCIsXG4gICAgICApLFxuICAgICAgY29uZmlnLFxuICAgIH0pLnZlcnNpb25cblxuICAgIHRoaXMucGFyc2VBdXRoRm4gPSBuZXcgTGFtYmRhQ29uZmlnKHRoaXMsIFwiUGFyc2VBdXRoRm5cIiwge1xuICAgICAgZnVuY3Rpb246IHByb3BzLmF1dGhMYW1iZGFzLnBhcnNlQXV0aEZuLmdldCh0aGlzLCBcIlBhcnNlQXV0aEZuSW1wb3J0XCIpLFxuICAgICAgY29uZmlnLFxuICAgIH0pLnZlcnNpb25cblxuICAgIHRoaXMucmVmcmVzaEF1dGhGbiA9IG5ldyBMYW1iZGFDb25maWcodGhpcywgXCJSZWZyZXNoQXV0aEZuXCIsIHtcbiAgICAgIGZ1bmN0aW9uOiBwcm9wcy5hdXRoTGFtYmRhcy5yZWZyZXNoQXV0aEZuLmdldChcbiAgICAgICAgdGhpcyxcbiAgICAgICAgXCJSZWZyZXNoQXV0aEZuSW1wb3J0XCIsXG4gICAgICApLFxuICAgICAgY29uZmlnLFxuICAgIH0pLnZlcnNpb25cblxuICAgIHRoaXMuc2lnbk91dEZuID0gbmV3IExhbWJkYUNvbmZpZyh0aGlzLCBcIlNpZ25PdXRGblwiLCB7XG4gICAgICBmdW5jdGlvbjogcHJvcHMuYXV0aExhbWJkYXMuc2lnbk91dEZuLmdldCh0aGlzLCBcIlNpZ25PdXRGbkltcG9ydFwiKSxcbiAgICAgIGNvbmZpZyxcbiAgICB9KS52ZXJzaW9uXG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZVBhdGhMYW1iZGEoXG4gICAgcGF0aDogc3RyaW5nLFxuICAgIGZuOiBsYW1iZGEuSVZlcnNpb24sXG4gICk6IGNsb3VkZnJvbnQuQmVoYXZpb3Ige1xuICAgIHJldHVybiB7XG4gICAgICBwYXRoUGF0dGVybjogcGF0aCxcbiAgICAgIGZvcndhcmRlZFZhbHVlczoge1xuICAgICAgICBxdWVyeVN0cmluZzogdHJ1ZSxcbiAgICAgIH0sXG4gICAgICBsYW1iZGFGdW5jdGlvbkFzc29jaWF0aW9uczogW1xuICAgICAgICB7XG4gICAgICAgICAgZXZlbnRUeXBlOiBjbG91ZGZyb250LkxhbWJkYUVkZ2VFdmVudFR5cGUuVklFV0VSX1JFUVVFU1QsXG4gICAgICAgICAgbGFtYmRhRnVuY3Rpb246IGZuLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGJlaGF2aW9ycyBmb3IgYXV0aGVudGljYXRpb24gcGFnZXM6XG4gICAqXG4gICAqIC0gY2FsbGJhY2sgcGFnZVxuICAgKiAtIHJlZnJlc2ggcGFnZVxuICAgKiAtIHNpZ24gb3V0IHBhZ2VcbiAgICpcbiAgICogVGhpcyBpcyB0byBiZSB1c2VkIHdpdGggQ2xvdWRGcm9udFdlYkRpc3RyaWJ1dGlvbi4gU2VlXG4gICAqIGNyZWF0ZUF1dGhQYWdlc0JlaGF2aW9ycyBpZiB1c2luZyBEaXN0cmlidXRpb24uXG4gICAqL1xuICBwdWJsaWMgZ2V0IGF1dGhQYWdlcygpOiBjbG91ZGZyb250LkJlaGF2aW9yW10ge1xuICAgIHJldHVybiBbXG4gICAgICB0aGlzLmNyZWF0ZVBhdGhMYW1iZGEodGhpcy5jYWxsYmFja1BhdGgsIHRoaXMucGFyc2VBdXRoRm4pLFxuICAgICAgdGhpcy5jcmVhdGVQYXRoTGFtYmRhKHRoaXMucmVmcmVzaEF1dGhQYXRoLCB0aGlzLnJlZnJlc2hBdXRoRm4pLFxuICAgICAgdGhpcy5jcmVhdGVQYXRoTGFtYmRhKHRoaXMuc2lnbk91dFBhdGgsIHRoaXMuc2lnbk91dEZuKSxcbiAgICBdXG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGJlaGF2aW9ycyBmb3IgYXV0aGVudGljYXRpb24gcGFnZXMuXG4gICAqXG4gICAqIC0gY2FsbGJhY2sgcGFnZVxuICAgKiAtIHJlZnJlc2ggcGFnZVxuICAgKiAtIHNpZ24gb3V0IHBhZ2VcbiAgICpcbiAgICogVGhpcyBpcyB0byBiZSB1c2VkIHdpdGggRGlzdHJpYnV0aW9uLlxuICAgKi9cbiAgcHVibGljIGNyZWF0ZUF1dGhQYWdlc0JlaGF2aW9ycyhcbiAgICBvcmlnaW46IElPcmlnaW4sXG4gICAgb3B0aW9ucz86IEFkZEJlaGF2aW9yT3B0aW9ucyxcbiAgKTogUmVjb3JkPHN0cmluZywgQmVoYXZpb3JPcHRpb25zPiB7XG4gICAgZnVuY3Rpb24gcGF0aChwYXRoOiBzdHJpbmcsIGZuOiBJVmVyc2lvbik6IFJlY29yZDxzdHJpbmcsIEJlaGF2aW9yT3B0aW9ucz4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgW3BhdGhdOiB7XG4gICAgICAgICAgb3JpZ2luLFxuICAgICAgICAgIGNvbXByZXNzOiB0cnVlLFxuICAgICAgICAgIHZpZXdlclByb3RvY29sUG9saWN5OiBWaWV3ZXJQcm90b2NvbFBvbGljeS5SRURJUkVDVF9UT19IVFRQUyxcbiAgICAgICAgICBlZGdlTGFtYmRhczogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBldmVudFR5cGU6IGNsb3VkZnJvbnQuTGFtYmRhRWRnZUV2ZW50VHlwZS5WSUVXRVJfUkVRVUVTVCxcbiAgICAgICAgICAgICAgZnVuY3Rpb25WZXJzaW9uOiBmbixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICB9LFxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAuLi5wYXRoKHRoaXMuY2FsbGJhY2tQYXRoLCB0aGlzLnBhcnNlQXV0aEZuKSxcbiAgICAgIC4uLnBhdGgodGhpcy5yZWZyZXNoQXV0aFBhdGgsIHRoaXMucmVmcmVzaEF1dGhGbiksXG4gICAgICAuLi5wYXRoKHRoaXMuc2lnbk91dFBhdGgsIHRoaXMuc2lnbk91dEZuKSxcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGxhbWJkYSBmdW5jdGlvbiBhc3NvY2lhdGlvbiBmb3Igdmlld2VyIHJlcXVlc3QgdG8gY2hlY2tcbiAgICogYXV0aGVudGljYXRpb24gYW5kIG9yaWdpbmFsIHJlc3BvbnNlIHRvIGFkZCBoZWFkZXJzLlxuICAgKlxuICAgKiBUaGlzIGlzIHRvIGJlIHVzZWQgd2l0aCBDbG91ZEZyb250V2ViRGlzdHJpYnV0aW9uLiBTZWVcbiAgICogY3JlYXRlUHJvdGVjdGVkQmVoYXZpb3IgaWYgdXNpbmcgRGlzdHJpYnV0aW9uLlxuICAgKi9cbiAgcHVibGljIGdldCBhdXRoRmlsdGVycygpOiBjbG91ZGZyb250LkxhbWJkYUZ1bmN0aW9uQXNzb2NpYXRpb25bXSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHtcbiAgICAgICAgZXZlbnRUeXBlOiBjbG91ZGZyb250LkxhbWJkYUVkZ2VFdmVudFR5cGUuVklFV0VSX1JFUVVFU1QsXG4gICAgICAgIGxhbWJkYUZ1bmN0aW9uOiB0aGlzLmNoZWNrQXV0aEZuLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgZXZlbnRUeXBlOiBjbG91ZGZyb250LkxhbWJkYUVkZ2VFdmVudFR5cGUuT1JJR0lOX1JFU1BPTlNFLFxuICAgICAgICBsYW1iZGFGdW5jdGlvbjogdGhpcy5odHRwSGVhZGVyc0ZuLFxuICAgICAgfSxcbiAgICBdXG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGJlaGF2aW9yIHRoYXQgaW5jbHVkZXMgYXV0aG9yaXphdGlvbiBjaGVjay5cbiAgICpcbiAgICogVGhpcyBpcyB0byBiZSB1c2VkIHdpdGggRGlzdHJpYnV0aW9uLlxuICAgKi9cbiAgcHVibGljIGNyZWF0ZVByb3RlY3RlZEJlaGF2aW9yKFxuICAgIG9yaWdpbjogSU9yaWdpbixcbiAgICBvcHRpb25zPzogQWRkQmVoYXZpb3JPcHRpb25zLFxuICApOiBCZWhhdmlvck9wdGlvbnMge1xuICAgIGlmIChvcHRpb25zPy5lZGdlTGFtYmRhcyAhPSBudWxsKSB7XG4gICAgICB0aHJvdyBFcnJvcihcIlVzZXItZGVmaW5lZCBlZGdlTGFtYmRhcyBpcyBjdXJyZW50bHkgbm90IHN1cHBvcnRlZFwiKVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBvcmlnaW4sXG4gICAgICBjb21wcmVzczogdHJ1ZSxcbiAgICAgIHZpZXdlclByb3RvY29sUG9saWN5OiBWaWV3ZXJQcm90b2NvbFBvbGljeS5SRURJUkVDVF9UT19IVFRQUyxcbiAgICAgIGVkZ2VMYW1iZGFzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBldmVudFR5cGU6IGNsb3VkZnJvbnQuTGFtYmRhRWRnZUV2ZW50VHlwZS5WSUVXRVJfUkVRVUVTVCxcbiAgICAgICAgICBmdW5jdGlvblZlcnNpb246IHRoaXMuY2hlY2tBdXRoRm4sXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBldmVudFR5cGU6IGNsb3VkZnJvbnQuTGFtYmRhRWRnZUV2ZW50VHlwZS5PUklHSU5fUkVTUE9OU0UsXG4gICAgICAgICAgZnVuY3Rpb25WZXJzaW9uOiB0aGlzLmh0dHBIZWFkZXJzRm4sXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlIENvZ25pdG8gY2xpZW50IHRvIHVzZSB0aGUgcHJvcGVyIFVSTHMgYW5kIE9BdXRoIHNjb3Blcy5cbiAgICpcbiAgICogVE9ETzogSW4gY2FzZSB0aGUgY2xpZW50IGNvbmZpZ3VyYXRpb24gY2hhbmdlcyBhbmQgaXMgdXBkYXRlZFxuICAgKiAgYnkgQ2xvdWRGb3JtYXRpb24sIHRoaXMgd2lsbCBub3QgYmUgcmVhcHBsaWVkIGNhdXNpbmcgdGhlIGNsaWVudFxuICAgKiAgdG8gbm90IGJlIGNvcnJlY3RseSBjb25maWd1cmVkLlxuICAgKiAgSG93IGNhbiB3ZSBhdm9pZCB0aGlzIHNjZW5hcmlvP1xuICAgKi9cbiAgcHVibGljIHVwZGF0ZUNsaWVudChpZDogc3RyaW5nLCBwcm9wczogVXBkYXRlQ2xpZW50UHJvcHMpOiBDbGllbnRVcGRhdGUge1xuICAgIGlmICghdGhpcy5jbGllbnRDcmVhdGVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiWW91IGNhbm5vdCB1c2UgdXBkYXRlQ2xpZW50IHdpdGggYSB1c2VyLXByb3ZpZGVkIENvZ25pdG8gQ2xpZW50IFwiICtcbiAgICAgICAgICBcInNpbmNlIGl0IHdvdWxkIG92ZXJyaWRlIHRoZSB1c2VyLXByb3ZpZGVkIHNldHRpbmdzXCIsXG4gICAgICApXG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBDbGllbnRVcGRhdGUodGhpcywgaWQsIHtcbiAgICAgIGNsaWVudDogdGhpcy5jbGllbnQsXG4gICAgICB1c2VyUG9vbDogdGhpcy51c2VyUG9vbCxcbiAgICAgIHNpZ25PdXRVcmw6IHByb3BzLnNpZ25PdXRVcmwsXG4gICAgICBjYWxsYmFja1VybDogcHJvcHMuY2FsbGJhY2tVcmwsXG4gICAgICBvYXV0aFNjb3BlczogdGhpcy5vYXV0aFNjb3BlcyxcbiAgICAgIGlkZW50aXR5UHJvdmlkZXJzOlxuICAgICAgICBwcm9wcy5pZGVudGl0eVByb3ZpZGVycyA/P1xuICAgICAgICBbXCJDT0dOSVRPXCJdLmNvbmNhdChcbiAgICAgICAgICB0aGlzLnVzZXJQb29sLmlkZW50aXR5UHJvdmlkZXJzLm1hcCgoaXQpID0+IGl0LnByb3ZpZGVyTmFtZSksXG4gICAgICAgICksXG4gICAgfSlcbiAgfVxufVxuIl19
@@ -0,0 +1,57 @@
1
+ import { Construct } from "constructs";
2
+ export interface CrossRegionParamProps<T> {
3
+ /**
4
+ * Nonce to force the stack to re-check for updated values.
5
+ *
6
+ * @default Date.now().toString()
7
+ */
8
+ nonce?: string;
9
+ /**
10
+ * SSM Parameter name used to store the reference.
11
+ */
12
+ parameterName: string;
13
+ /**
14
+ * The resource to make available cross-region.
15
+ */
16
+ resource: T;
17
+ /**
18
+ * Convert the resource to a string representation for storage in SSM.
19
+ */
20
+ resourceToReference(resource: T): string;
21
+ /**
22
+ * Reconstruct the resource from its stored string representation.
23
+ */
24
+ referenceToResource(scope: Construct, id: string, reference: string): T;
25
+ /**
26
+ * Regions where this reference should be available.
27
+ */
28
+ regions: string[];
29
+ }
30
+ /**
31
+ * Makes a CDK resource available in other AWS regions by storing a
32
+ * string reference in SSM Parameter Store.
33
+ *
34
+ * On the producer side (constructor), the resource's string representation
35
+ * is written to SSM in each target region via custom resources.
36
+ *
37
+ * On the consumer side (get), the reference is read back from SSM and
38
+ * used to reconstruct the resource. If producer and consumer are in the
39
+ * same region, the resource is returned directly without SSM.
40
+ */
41
+ export declare class CrossRegionParam<T> extends Construct {
42
+ private readonly nonce;
43
+ private readonly parameterName;
44
+ private readonly resource;
45
+ private readonly referenceToResource;
46
+ private readonly regions;
47
+ constructor(scope: Construct, id: string, props: CrossRegionParamProps<T>);
48
+ /**
49
+ * Retrieve the resource. Returns it directly when in the same region
50
+ * as the producer, otherwise resolves it from SSM Parameter Store.
51
+ */
52
+ get(scope: Construct, id: string): T;
53
+ /**
54
+ * Write an SSM Parameter to a specific region using a custom resource.
55
+ */
56
+ private putParameterInRegion;
57
+ }
@@ -0,0 +1,96 @@
1
+ import { CfnParameter, Stack } from "aws-cdk-lib";
2
+ import * as ssm from "aws-cdk-lib/aws-ssm";
3
+ import * as cr from "aws-cdk-lib/custom-resources";
4
+ import { Construct } from "constructs";
5
+ /**
6
+ * Makes a CDK resource available in other AWS regions by storing a
7
+ * string reference in SSM Parameter Store.
8
+ *
9
+ * On the producer side (constructor), the resource's string representation
10
+ * is written to SSM in each target region via custom resources.
11
+ *
12
+ * On the consumer side (get), the reference is read back from SSM and
13
+ * used to reconstruct the resource. If producer and consumer are in the
14
+ * same region, the resource is returned directly without SSM.
15
+ */
16
+ export class CrossRegionParam extends Construct {
17
+ nonce;
18
+ parameterName;
19
+ resource;
20
+ referenceToResource;
21
+ regions;
22
+ constructor(scope, id, props) {
23
+ super(scope, id);
24
+ this.nonce = props.nonce ?? Date.now().toString();
25
+ this.parameterName = props.parameterName;
26
+ this.resource = props.resource;
27
+ this.referenceToResource = props.referenceToResource;
28
+ this.regions = props.regions;
29
+ const value = props.resourceToReference(props.resource);
30
+ for (const region of props.regions) {
31
+ this.putParameterInRegion(`Param${region}`, {
32
+ name: this.parameterName,
33
+ region,
34
+ value,
35
+ });
36
+ }
37
+ }
38
+ /**
39
+ * Retrieve the resource. Returns it directly when in the same region
40
+ * as the producer, otherwise resolves it from SSM Parameter Store.
41
+ */
42
+ get(scope, id) {
43
+ const producerRegion = Stack.of(this).region;
44
+ const consumerRegion = Stack.of(scope).region;
45
+ if (producerRegion === consumerRegion) {
46
+ return this.resource;
47
+ }
48
+ if (!this.regions.includes(consumerRegion)) {
49
+ throw new Error(`Region ${consumerRegion} is not registered for parameter ${this.parameterName}`);
50
+ }
51
+ scope.node.addDependency(this);
52
+ new CfnParameter(scope, `${id}Nonce`, {
53
+ default: this.nonce,
54
+ });
55
+ const reference = ssm.StringParameter.valueForStringParameter(scope, this.parameterName);
56
+ return this.referenceToResource(scope, id, reference);
57
+ }
58
+ /**
59
+ * Write an SSM Parameter to a specific region using a custom resource.
60
+ */
61
+ putParameterInRegion(id, props) {
62
+ const physicalResourceId = cr.PhysicalResourceId.of(props.name);
63
+ // "Resoure" is an intentional typo preserved for backward compatibility.
64
+ // Changing it would alter CloudFormation logical IDs and cause resource
65
+ // replacement in existing deployments.
66
+ const paramScope = new Construct(this, id);
67
+ new cr.AwsCustomResource(paramScope, "Resoure", {
68
+ onUpdate: {
69
+ service: "SSM",
70
+ action: "putParameter",
71
+ parameters: {
72
+ Name: props.name,
73
+ Value: props.value,
74
+ Type: "String",
75
+ Overwrite: true,
76
+ },
77
+ region: props.region,
78
+ physicalResourceId,
79
+ },
80
+ onDelete: {
81
+ service: "SSM",
82
+ action: "deleteParameter",
83
+ parameters: {
84
+ Name: props.name,
85
+ },
86
+ region: props.region,
87
+ physicalResourceId,
88
+ },
89
+ policy: cr.AwsCustomResourcePolicy.fromSdkCalls({
90
+ resources: cr.AwsCustomResourcePolicy.ANY_RESOURCE,
91
+ }),
92
+ installLatestAwsSdk: false,
93
+ });
94
+ }
95
+ }
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3Jvc3MtcmVnaW9uLXBhcmFtcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jcm9zcy1yZWdpb24tcGFyYW1zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQ2pELE9BQU8sS0FBSyxHQUFHLE1BQU0scUJBQXFCLENBQUE7QUFDMUMsT0FBTyxLQUFLLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQTtBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBK0J0Qzs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxPQUFPLGdCQUFvQixTQUFRLFNBQVM7SUFDL0IsS0FBSyxDQUFRO0lBQ2IsYUFBYSxDQUFRO0lBQ3JCLFFBQVEsQ0FBRztJQUNYLG1CQUFtQixDQUFpRDtJQUNwRSxPQUFPLENBQVU7SUFFbEMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUErQjtRQUN2RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFBO1FBQ2hCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsUUFBUSxFQUFFLENBQUE7UUFDakQsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFBO1FBQ3hDLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQTtRQUM5QixJQUFJLENBQUMsbUJBQW1CLEdBQUcsS0FBSyxDQUFDLG1CQUFtQixDQUFBO1FBQ3BELElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQTtRQUU1QixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsbUJBQW1CLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBRXZELEtBQUssTUFBTSxNQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ25DLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLE1BQU0sRUFBRSxFQUFFO2dCQUMxQyxJQUFJLEVBQUUsSUFBSSxDQUFDLGFBQWE7Z0JBQ3hCLE1BQU07Z0JBQ04sS0FBSzthQUNOLENBQUMsQ0FBQTtRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksR0FBRyxDQUFDLEtBQWdCLEVBQUUsRUFBVTtRQUNyQyxNQUFNLGNBQWMsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQTtRQUM1QyxNQUFNLGNBQWMsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQTtRQUU3QyxJQUFJLGNBQWMsS0FBSyxjQUFjLEVBQUUsQ0FBQztZQUN0QyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUE7UUFDdEIsQ0FBQztRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDO1lBQzNDLE1BQU0sSUFBSSxLQUFLLENBQ2IsVUFBVSxjQUFjLG9DQUFvQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQ2pGLENBQUE7UUFDSCxDQUFDO1FBRUQsS0FBSyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUE7UUFFOUIsSUFBSSxZQUFZLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUU7WUFDcEMsT0FBTyxFQUFFLElBQUksQ0FBQyxLQUFLO1NBQ3BCLENBQUMsQ0FBQTtRQUVGLE1BQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxlQUFlLENBQUMsdUJBQXVCLENBQzNELEtBQUssRUFDTCxJQUFJLENBQUMsYUFBYSxDQUNuQixDQUFBO1FBQ0QsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxTQUFTLENBQUMsQ0FBQTtJQUN2RCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxvQkFBb0IsQ0FDMUIsRUFBVSxFQUNWLEtBQXNEO1FBRXRELE1BQU0sa0JBQWtCLEdBQUcsRUFBRSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUE7UUFFL0QseUVBQXlFO1FBQ3pFLHdFQUF3RTtRQUN4RSx1Q0FBdUM7UUFDdkMsTUFBTSxVQUFVLEdBQUcsSUFBSSxTQUFTLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFBO1FBQzFDLElBQUksRUFBRSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUU7WUFDOUMsUUFBUSxFQUFFO2dCQUNSLE9BQU8sRUFBRSxLQUFLO2dCQUNkLE1BQU0sRUFBRSxjQUFjO2dCQUN0QixVQUFVLEVBQUU7b0JBQ1YsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO29CQUNoQixLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUs7b0JBQ2xCLElBQUksRUFBRSxRQUFRO29CQUNkLFNBQVMsRUFBRSxJQUFJO2lCQUNoQjtnQkFDRCxNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU07Z0JBQ3BCLGtCQUFrQjthQUNuQjtZQUNELFFBQVEsRUFBRTtnQkFDUixPQUFPLEVBQUUsS0FBSztnQkFDZCxNQUFNLEVBQUUsaUJBQWlCO2dCQUN6QixVQUFVLEVBQUU7b0JBQ1YsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO2lCQUNqQjtnQkFDRCxNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU07Z0JBQ3BCLGtCQUFrQjthQUNuQjtZQUNELE1BQU0sRUFBRSxFQUFFLENBQUMsdUJBQXVCLENBQUMsWUFBWSxDQUFDO2dCQUM5QyxTQUFTLEVBQUUsRUFBRSxDQUFDLHVCQUF1QixDQUFDLFlBQVk7YUFDbkQsQ0FBQztZQUNGLG1CQUFtQixFQUFFLEtBQUs7U0FDM0IsQ0FBQyxDQUFBO0lBQ0osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2ZuUGFyYW1ldGVyLCBTdGFjayB9IGZyb20gXCJhd3MtY2RrLWxpYlwiXG5pbXBvcnQgKiBhcyBzc20gZnJvbSBcImF3cy1jZGstbGliL2F3cy1zc21cIlxuaW1wb3J0ICogYXMgY3IgZnJvbSBcImF3cy1jZGstbGliL2N1c3RvbS1yZXNvdXJjZXNcIlxuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIlxuXG5leHBvcnQgaW50ZXJmYWNlIENyb3NzUmVnaW9uUGFyYW1Qcm9wczxUPiB7XG4gIC8qKlxuICAgKiBOb25jZSB0byBmb3JjZSB0aGUgc3RhY2sgdG8gcmUtY2hlY2sgZm9yIHVwZGF0ZWQgdmFsdWVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBEYXRlLm5vdygpLnRvU3RyaW5nKClcbiAgICovXG4gIG5vbmNlPzogc3RyaW5nXG4gIC8qKlxuICAgKiBTU00gUGFyYW1ldGVyIG5hbWUgdXNlZCB0byBzdG9yZSB0aGUgcmVmZXJlbmNlLlxuICAgKi9cbiAgcGFyYW1ldGVyTmFtZTogc3RyaW5nXG4gIC8qKlxuICAgKiBUaGUgcmVzb3VyY2UgdG8gbWFrZSBhdmFpbGFibGUgY3Jvc3MtcmVnaW9uLlxuICAgKi9cbiAgcmVzb3VyY2U6IFRcbiAgLyoqXG4gICAqIENvbnZlcnQgdGhlIHJlc291cmNlIHRvIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIGZvciBzdG9yYWdlIGluIFNTTS5cbiAgICovXG4gIHJlc291cmNlVG9SZWZlcmVuY2UocmVzb3VyY2U6IFQpOiBzdHJpbmdcbiAgLyoqXG4gICAqIFJlY29uc3RydWN0IHRoZSByZXNvdXJjZSBmcm9tIGl0cyBzdG9yZWQgc3RyaW5nIHJlcHJlc2VudGF0aW9uLlxuICAgKi9cbiAgcmVmZXJlbmNlVG9SZXNvdXJjZShzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCByZWZlcmVuY2U6IHN0cmluZyk6IFRcbiAgLyoqXG4gICAqIFJlZ2lvbnMgd2hlcmUgdGhpcyByZWZlcmVuY2Ugc2hvdWxkIGJlIGF2YWlsYWJsZS5cbiAgICovXG4gIHJlZ2lvbnM6IHN0cmluZ1tdXG59XG5cbi8qKlxuICogTWFrZXMgYSBDREsgcmVzb3VyY2UgYXZhaWxhYmxlIGluIG90aGVyIEFXUyByZWdpb25zIGJ5IHN0b3JpbmcgYVxuICogc3RyaW5nIHJlZmVyZW5jZSBpbiBTU00gUGFyYW1ldGVyIFN0b3JlLlxuICpcbiAqIE9uIHRoZSBwcm9kdWNlciBzaWRlIChjb25zdHJ1Y3RvciksIHRoZSByZXNvdXJjZSdzIHN0cmluZyByZXByZXNlbnRhdGlvblxuICogaXMgd3JpdHRlbiB0byBTU00gaW4gZWFjaCB0YXJnZXQgcmVnaW9uIHZpYSBjdXN0b20gcmVzb3VyY2VzLlxuICpcbiAqIE9uIHRoZSBjb25zdW1lciBzaWRlIChnZXQpLCB0aGUgcmVmZXJlbmNlIGlzIHJlYWQgYmFjayBmcm9tIFNTTSBhbmRcbiAqIHVzZWQgdG8gcmVjb25zdHJ1Y3QgdGhlIHJlc291cmNlLiBJZiBwcm9kdWNlciBhbmQgY29uc3VtZXIgYXJlIGluIHRoZVxuICogc2FtZSByZWdpb24sIHRoZSByZXNvdXJjZSBpcyByZXR1cm5lZCBkaXJlY3RseSB3aXRob3V0IFNTTS5cbiAqL1xuZXhwb3J0IGNsYXNzIENyb3NzUmVnaW9uUGFyYW08VD4gZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBwcml2YXRlIHJlYWRvbmx5IG5vbmNlOiBzdHJpbmdcbiAgcHJpdmF0ZSByZWFkb25seSBwYXJhbWV0ZXJOYW1lOiBzdHJpbmdcbiAgcHJpdmF0ZSByZWFkb25seSByZXNvdXJjZTogVFxuICBwcml2YXRlIHJlYWRvbmx5IHJlZmVyZW5jZVRvUmVzb3VyY2U6IENyb3NzUmVnaW9uUGFyYW1Qcm9wczxUPltcInJlZmVyZW5jZVRvUmVzb3VyY2VcIl1cbiAgcHJpdmF0ZSByZWFkb25seSByZWdpb25zOiBzdHJpbmdbXVxuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBDcm9zc1JlZ2lvblBhcmFtUHJvcHM8VD4pIHtcbiAgICBzdXBlcihzY29wZSwgaWQpXG4gICAgdGhpcy5ub25jZSA9IHByb3BzLm5vbmNlID8/IERhdGUubm93KCkudG9TdHJpbmcoKVxuICAgIHRoaXMucGFyYW1ldGVyTmFtZSA9IHByb3BzLnBhcmFtZXRlck5hbWVcbiAgICB0aGlzLnJlc291cmNlID0gcHJvcHMucmVzb3VyY2VcbiAgICB0aGlzLnJlZmVyZW5jZVRvUmVzb3VyY2UgPSBwcm9wcy5yZWZlcmVuY2VUb1Jlc291cmNlXG4gICAgdGhpcy5yZWdpb25zID0gcHJvcHMucmVnaW9uc1xuXG4gICAgY29uc3QgdmFsdWUgPSBwcm9wcy5yZXNvdXJjZVRvUmVmZXJlbmNlKHByb3BzLnJlc291cmNlKVxuXG4gICAgZm9yIChjb25zdCByZWdpb24gb2YgcHJvcHMucmVnaW9ucykge1xuICAgICAgdGhpcy5wdXRQYXJhbWV0ZXJJblJlZ2lvbihgUGFyYW0ke3JlZ2lvbn1gLCB7XG4gICAgICAgIG5hbWU6IHRoaXMucGFyYW1ldGVyTmFtZSxcbiAgICAgICAgcmVnaW9uLFxuICAgICAgICB2YWx1ZSxcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlIHRoZSByZXNvdXJjZS4gUmV0dXJucyBpdCBkaXJlY3RseSB3aGVuIGluIHRoZSBzYW1lIHJlZ2lvblxuICAgKiBhcyB0aGUgcHJvZHVjZXIsIG90aGVyd2lzZSByZXNvbHZlcyBpdCBmcm9tIFNTTSBQYXJhbWV0ZXIgU3RvcmUuXG4gICAqL1xuICBwdWJsaWMgZ2V0KHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcpOiBUIHtcbiAgICBjb25zdCBwcm9kdWNlclJlZ2lvbiA9IFN0YWNrLm9mKHRoaXMpLnJlZ2lvblxuICAgIGNvbnN0IGNvbnN1bWVyUmVnaW9uID0gU3RhY2sub2Yoc2NvcGUpLnJlZ2lvblxuXG4gICAgaWYgKHByb2R1Y2VyUmVnaW9uID09PSBjb25zdW1lclJlZ2lvbikge1xuICAgICAgcmV0dXJuIHRoaXMucmVzb3VyY2VcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMucmVnaW9ucy5pbmNsdWRlcyhjb25zdW1lclJlZ2lvbikpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFJlZ2lvbiAke2NvbnN1bWVyUmVnaW9ufSBpcyBub3QgcmVnaXN0ZXJlZCBmb3IgcGFyYW1ldGVyICR7dGhpcy5wYXJhbWV0ZXJOYW1lfWAsXG4gICAgICApXG4gICAgfVxuXG4gICAgc2NvcGUubm9kZS5hZGREZXBlbmRlbmN5KHRoaXMpXG5cbiAgICBuZXcgQ2ZuUGFyYW1ldGVyKHNjb3BlLCBgJHtpZH1Ob25jZWAsIHtcbiAgICAgIGRlZmF1bHQ6IHRoaXMubm9uY2UsXG4gICAgfSlcblxuICAgIGNvbnN0IHJlZmVyZW5jZSA9IHNzbS5TdHJpbmdQYXJhbWV0ZXIudmFsdWVGb3JTdHJpbmdQYXJhbWV0ZXIoXG4gICAgICBzY29wZSxcbiAgICAgIHRoaXMucGFyYW1ldGVyTmFtZSxcbiAgICApXG4gICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlVG9SZXNvdXJjZShzY29wZSwgaWQsIHJlZmVyZW5jZSlcbiAgfVxuXG4gIC8qKlxuICAgKiBXcml0ZSBhbiBTU00gUGFyYW1ldGVyIHRvIGEgc3BlY2lmaWMgcmVnaW9uIHVzaW5nIGEgY3VzdG9tIHJlc291cmNlLlxuICAgKi9cbiAgcHJpdmF0ZSBwdXRQYXJhbWV0ZXJJblJlZ2lvbihcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiB7IG5hbWU6IHN0cmluZzsgcmVnaW9uOiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfSxcbiAgKSB7XG4gICAgY29uc3QgcGh5c2ljYWxSZXNvdXJjZUlkID0gY3IuUGh5c2ljYWxSZXNvdXJjZUlkLm9mKHByb3BzLm5hbWUpXG5cbiAgICAvLyBcIlJlc291cmVcIiBpcyBhbiBpbnRlbnRpb25hbCB0eXBvIHByZXNlcnZlZCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS5cbiAgICAvLyBDaGFuZ2luZyBpdCB3b3VsZCBhbHRlciBDbG91ZEZvcm1hdGlvbiBsb2dpY2FsIElEcyBhbmQgY2F1c2UgcmVzb3VyY2VcbiAgICAvLyByZXBsYWNlbWVudCBpbiBleGlzdGluZyBkZXBsb3ltZW50cy5cbiAgICBjb25zdCBwYXJhbVNjb3BlID0gbmV3IENvbnN0cnVjdCh0aGlzLCBpZClcbiAgICBuZXcgY3IuQXdzQ3VzdG9tUmVzb3VyY2UocGFyYW1TY29wZSwgXCJSZXNvdXJlXCIsIHtcbiAgICAgIG9uVXBkYXRlOiB7XG4gICAgICAgIHNlcnZpY2U6IFwiU1NNXCIsXG4gICAgICAgIGFjdGlvbjogXCJwdXRQYXJhbWV0ZXJcIixcbiAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgIE5hbWU6IHByb3BzLm5hbWUsXG4gICAgICAgICAgVmFsdWU6IHByb3BzLnZhbHVlLFxuICAgICAgICAgIFR5cGU6IFwiU3RyaW5nXCIsXG4gICAgICAgICAgT3ZlcndyaXRlOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICByZWdpb246IHByb3BzLnJlZ2lvbixcbiAgICAgICAgcGh5c2ljYWxSZXNvdXJjZUlkLFxuICAgICAgfSxcbiAgICAgIG9uRGVsZXRlOiB7XG4gICAgICAgIHNlcnZpY2U6IFwiU1NNXCIsXG4gICAgICAgIGFjdGlvbjogXCJkZWxldGVQYXJhbWV0ZXJcIixcbiAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgIE5hbWU6IHByb3BzLm5hbWUsXG4gICAgICAgIH0sXG4gICAgICAgIHJlZ2lvbjogcHJvcHMucmVnaW9uLFxuICAgICAgICBwaHlzaWNhbFJlc291cmNlSWQsXG4gICAgICB9LFxuICAgICAgcG9saWN5OiBjci5Bd3NDdXN0b21SZXNvdXJjZVBvbGljeS5mcm9tU2RrQ2FsbHMoe1xuICAgICAgICByZXNvdXJjZXM6IGNyLkF3c0N1c3RvbVJlc291cmNlUG9saWN5LkFOWV9SRVNPVVJDRSxcbiAgICAgIH0pLFxuICAgICAgaW5zdGFsbExhdGVzdEF3c1NkazogZmFsc2UsXG4gICAgfSlcbiAgfVxufVxuIl19
package/lib/index.d.ts CHANGED
@@ -1,2 +1,4 @@
1
1
  export * from "./cloudfront-auth";
2
+ export * from "./cross-region-params";
3
+ export * from "./lambda-config/lambda-config";
2
4
  export * from "./lambdas";
package/lib/index.js CHANGED
@@ -1,3 +1,5 @@
1
1
  export * from "./cloudfront-auth";
2
+ export * from "./cross-region-params";
3
+ export * from "./lambda-config/lambda-config";
2
4
  export * from "./lambdas";
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQkFBbUIsQ0FBQTtBQUNqQyxjQUFjLFdBQVcsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL2Nsb3VkZnJvbnQtYXV0aFwiXG5leHBvcnQgKiBmcm9tIFwiLi9sYW1iZGFzXCJcbiJdfQ==
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQkFBbUIsQ0FBQTtBQUNqQyxjQUFjLHVCQUF1QixDQUFBO0FBQ3JDLGNBQWMsK0JBQStCLENBQUE7QUFDN0MsY0FBYyxXQUFXLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9jbG91ZGZyb250LWF1dGhcIlxuZXhwb3J0ICogZnJvbSBcIi4vY3Jvc3MtcmVnaW9uLXBhcmFtc1wiXG5leHBvcnQgKiBmcm9tIFwiLi9sYW1iZGEtY29uZmlnL2xhbWJkYS1jb25maWdcIlxuZXhwb3J0ICogZnJvbSBcIi4vbGFtYmRhc1wiXG4iXX0=
@@ -0,0 +1,38 @@
1
+ import { aws_lambda as lambda } from "aws-cdk-lib";
2
+ import { Construct } from "constructs";
3
+ export interface LambdaConfigProps {
4
+ /**
5
+ * The Lambda Function to be updated.
6
+ *
7
+ * If this points to a specific version, the version qualifier
8
+ * will be ignored, but will be used for invalidation instead
9
+ * of providing a separate nonce value.
10
+ *
11
+ * A Lambda Function can only receive a new version based on
12
+ * the latest version.
13
+ */
14
+ function: lambda.IFunction;
15
+ /**
16
+ * The configuration to be added to the Lambda Function. Must be
17
+ * a valid JSON structure and cannot contain null values since it
18
+ * is not supported by CloudFormation custom resource properties.
19
+ */
20
+ config: Record<string, any>;
21
+ /**
22
+ * Nonce to force new version.
23
+ *
24
+ * If the function provided does not point to a specific
25
+ * version, specify nonce to ensure the function is updated
26
+ * after every change.
27
+ */
28
+ nonce?: string;
29
+ }
30
+ /**
31
+ * Modify a Lambda Function by adding a config.json file using
32
+ * the provided object, and provide a new version for the
33
+ * Lambda Function.
34
+ */
35
+ export declare class LambdaConfig extends Construct {
36
+ readonly version: lambda.IVersion;
37
+ constructor(scope: Construct, id: string, props: LambdaConfigProps);
38
+ }
@@ -0,0 +1,59 @@
1
+ import * as path from "node:path";
2
+ import { fileURLToPath } from "node:url";
3
+ import { CustomResource, custom_resources as cr, Duration, aws_iam as iam, aws_lambda as lambda, Stack, } from "aws-cdk-lib";
4
+ import { Construct } from "constructs";
5
+ const __filename = fileURLToPath(import.meta.url);
6
+ const __dirname = path.dirname(__filename);
7
+ /**
8
+ * Modify a Lambda Function by adding a config.json file using
9
+ * the provided object, and provide a new version for the
10
+ * Lambda Function.
11
+ */
12
+ export class LambdaConfig extends Construct {
13
+ version;
14
+ constructor(scope, id, props) {
15
+ super(scope, id);
16
+ const updateCodeResource = new CustomResource(this, "Resource", {
17
+ serviceToken: LambdaConfigProvider.getOrCreate(this).serviceToken,
18
+ properties: {
19
+ FunctionArn: props.function.functionArn,
20
+ Config: props.config,
21
+ Nonce: props.nonce ?? "",
22
+ },
23
+ });
24
+ this.version = lambda.Version.fromVersionArn(this, "Version", updateCodeResource.getAttString("FunctionArn"));
25
+ }
26
+ }
27
+ class LambdaConfigProvider extends Construct {
28
+ static getOrCreate(scope) {
29
+ const stack = Stack.of(scope);
30
+ const id = "liflig-infra.lambda-config.provider";
31
+ return (stack.node.tryFindChild(id) ||
32
+ new LambdaConfigProvider(stack, id));
33
+ }
34
+ provider;
35
+ serviceToken;
36
+ constructor(scope, id) {
37
+ super(scope, id);
38
+ this.provider = new cr.Provider(this, "Provider", {
39
+ onEventHandler: new lambda.Function(this, "UpdateCodeFn", {
40
+ code: lambda.Code.fromAsset(path.join(__dirname, "../../dist/lambda-config-handler")),
41
+ handler: "index.handler",
42
+ runtime: lambda.Runtime.NODEJS_24_X,
43
+ timeout: Duration.minutes(2),
44
+ initialPolicy: [
45
+ new iam.PolicyStatement({
46
+ actions: [
47
+ "lambda:GetFunction",
48
+ "lambda:GetFunctionConfiguration",
49
+ "lambda:UpdateFunctionCode",
50
+ ],
51
+ resources: ["*"],
52
+ }),
53
+ ],
54
+ }),
55
+ });
56
+ this.serviceToken = this.provider.serviceToken;
57
+ }
58
+ }
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFtYmRhLWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9sYW1iZGEtY29uZmlnL2xhbWJkYS1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLElBQUksTUFBTSxXQUFXLENBQUE7QUFDakMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUN4QyxPQUFPLEVBQ0wsY0FBYyxFQUNkLGdCQUFnQixJQUFJLEVBQUUsRUFDdEIsUUFBUSxFQUNSLE9BQU8sSUFBSSxHQUFHLEVBQ2QsVUFBVSxJQUFJLE1BQU0sRUFDcEIsS0FBSyxHQUNOLE1BQU0sYUFBYSxDQUFBO0FBQ3BCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFFdEMsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7QUFDakQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQTtBQThCMUM7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyxZQUFhLFNBQVEsU0FBUztJQUN6QixPQUFPLENBQWlCO0lBRXhDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBd0I7UUFDaEUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUVoQixNQUFNLGtCQUFrQixHQUFHLElBQUksY0FBYyxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDOUQsWUFBWSxFQUFFLG9CQUFvQixDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxZQUFZO1lBQ2pFLFVBQVUsRUFBRTtnQkFDVixXQUFXLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxXQUFXO2dCQUN2QyxNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU07Z0JBQ3BCLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSyxJQUFJLEVBQUU7YUFDekI7U0FDRixDQUFDLENBQUE7UUFFRixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUMxQyxJQUFJLEVBQ0osU0FBUyxFQUNULGtCQUFrQixDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsQ0FDL0MsQ0FBQTtJQUNILENBQUM7Q0FDRjtBQUVELE1BQU0sb0JBQXFCLFNBQVEsU0FBUztJQUNuQyxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQWdCO1FBQ3hDLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDN0IsTUFBTSxFQUFFLEdBQUcscUNBQXFDLENBQUE7UUFDaEQsT0FBTyxDQUNKLEtBQUssQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBMEI7WUFDckQsSUFBSSxvQkFBb0IsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQ3BDLENBQUE7SUFDSCxDQUFDO0lBRWdCLFFBQVEsQ0FBYTtJQUN0QixZQUFZLENBQVE7SUFFcEMsWUFBWSxLQUFnQixFQUFFLEVBQVU7UUFDdEMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUVoQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQ2hELGNBQWMsRUFBRSxJQUFJLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLGNBQWMsRUFBRTtnQkFDeEQsSUFBSSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUN6QixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxrQ0FBa0MsQ0FBQyxDQUN6RDtnQkFDRCxPQUFPLEVBQUUsZUFBZTtnQkFDeEIsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsV0FBVztnQkFDbkMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO2dCQUM1QixhQUFhLEVBQUU7b0JBQ2IsSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDO3dCQUN0QixPQUFPLEVBQUU7NEJBQ1Asb0JBQW9COzRCQUNwQixpQ0FBaUM7NEJBQ2pDLDJCQUEyQjt5QkFDNUI7d0JBQ0QsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDO3FCQUNqQixDQUFDO2lCQUNIO2FBQ0YsQ0FBQztTQUNILENBQUMsQ0FBQTtRQUVGLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUE7SUFDaEQsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCJcbmltcG9ydCB7IGZpbGVVUkxUb1BhdGggfSBmcm9tIFwibm9kZTp1cmxcIlxuaW1wb3J0IHtcbiAgQ3VzdG9tUmVzb3VyY2UsXG4gIGN1c3RvbV9yZXNvdXJjZXMgYXMgY3IsXG4gIER1cmF0aW9uLFxuICBhd3NfaWFtIGFzIGlhbSxcbiAgYXdzX2xhbWJkYSBhcyBsYW1iZGEsXG4gIFN0YWNrLFxufSBmcm9tIFwiYXdzLWNkay1saWJcIlxuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIlxuXG5jb25zdCBfX2ZpbGVuYW1lID0gZmlsZVVSTFRvUGF0aChpbXBvcnQubWV0YS51cmwpXG5jb25zdCBfX2Rpcm5hbWUgPSBwYXRoLmRpcm5hbWUoX19maWxlbmFtZSlcblxuZXhwb3J0IGludGVyZmFjZSBMYW1iZGFDb25maWdQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgTGFtYmRhIEZ1bmN0aW9uIHRvIGJlIHVwZGF0ZWQuXG4gICAqXG4gICAqIElmIHRoaXMgcG9pbnRzIHRvIGEgc3BlY2lmaWMgdmVyc2lvbiwgdGhlIHZlcnNpb24gcXVhbGlmaWVyXG4gICAqIHdpbGwgYmUgaWdub3JlZCwgYnV0IHdpbGwgYmUgdXNlZCBmb3IgaW52YWxpZGF0aW9uIGluc3RlYWRcbiAgICogb2YgcHJvdmlkaW5nIGEgc2VwYXJhdGUgbm9uY2UgdmFsdWUuXG4gICAqXG4gICAqIEEgTGFtYmRhIEZ1bmN0aW9uIGNhbiBvbmx5IHJlY2VpdmUgYSBuZXcgdmVyc2lvbiBiYXNlZCBvblxuICAgKiB0aGUgbGF0ZXN0IHZlcnNpb24uXG4gICAqL1xuICBmdW5jdGlvbjogbGFtYmRhLklGdW5jdGlvblxuICAvKipcbiAgICogVGhlIGNvbmZpZ3VyYXRpb24gdG8gYmUgYWRkZWQgdG8gdGhlIExhbWJkYSBGdW5jdGlvbi4gTXVzdCBiZVxuICAgKiBhIHZhbGlkIEpTT04gc3RydWN0dXJlIGFuZCBjYW5ub3QgY29udGFpbiBudWxsIHZhbHVlcyBzaW5jZSBpdFxuICAgKiBpcyBub3Qgc3VwcG9ydGVkIGJ5IENsb3VkRm9ybWF0aW9uIGN1c3RvbSByZXNvdXJjZSBwcm9wZXJ0aWVzLlxuICAgKi9cbiAgY29uZmlnOiBSZWNvcmQ8c3RyaW5nLCBhbnk+XG4gIC8qKlxuICAgKiBOb25jZSB0byBmb3JjZSBuZXcgdmVyc2lvbi5cbiAgICpcbiAgICogSWYgdGhlIGZ1bmN0aW9uIHByb3ZpZGVkIGRvZXMgbm90IHBvaW50IHRvIGEgc3BlY2lmaWNcbiAgICogdmVyc2lvbiwgc3BlY2lmeSBub25jZSB0byBlbnN1cmUgdGhlIGZ1bmN0aW9uIGlzIHVwZGF0ZWRcbiAgICogYWZ0ZXIgZXZlcnkgY2hhbmdlLlxuICAgKi9cbiAgbm9uY2U/OiBzdHJpbmdcbn1cblxuLyoqXG4gKiBNb2RpZnkgYSBMYW1iZGEgRnVuY3Rpb24gYnkgYWRkaW5nIGEgY29uZmlnLmpzb24gZmlsZSB1c2luZ1xuICogdGhlIHByb3ZpZGVkIG9iamVjdCwgYW5kIHByb3ZpZGUgYSBuZXcgdmVyc2lvbiBmb3IgdGhlXG4gKiBMYW1iZGEgRnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBMYW1iZGFDb25maWcgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBwdWJsaWMgcmVhZG9ubHkgdmVyc2lvbjogbGFtYmRhLklWZXJzaW9uXG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IExhbWJkYUNvbmZpZ1Byb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKVxuXG4gICAgY29uc3QgdXBkYXRlQ29kZVJlc291cmNlID0gbmV3IEN1c3RvbVJlc291cmNlKHRoaXMsIFwiUmVzb3VyY2VcIiwge1xuICAgICAgc2VydmljZVRva2VuOiBMYW1iZGFDb25maWdQcm92aWRlci5nZXRPckNyZWF0ZSh0aGlzKS5zZXJ2aWNlVG9rZW4sXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIEZ1bmN0aW9uQXJuOiBwcm9wcy5mdW5jdGlvbi5mdW5jdGlvbkFybixcbiAgICAgICAgQ29uZmlnOiBwcm9wcy5jb25maWcsXG4gICAgICAgIE5vbmNlOiBwcm9wcy5ub25jZSA/PyBcIlwiLFxuICAgICAgfSxcbiAgICB9KVxuXG4gICAgdGhpcy52ZXJzaW9uID0gbGFtYmRhLlZlcnNpb24uZnJvbVZlcnNpb25Bcm4oXG4gICAgICB0aGlzLFxuICAgICAgXCJWZXJzaW9uXCIsXG4gICAgICB1cGRhdGVDb2RlUmVzb3VyY2UuZ2V0QXR0U3RyaW5nKFwiRnVuY3Rpb25Bcm5cIiksXG4gICAgKVxuICB9XG59XG5cbmNsYXNzIExhbWJkYUNvbmZpZ1Byb3ZpZGVyIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcHVibGljIHN0YXRpYyBnZXRPckNyZWF0ZShzY29wZTogQ29uc3RydWN0KSB7XG4gICAgY29uc3Qgc3RhY2sgPSBTdGFjay5vZihzY29wZSlcbiAgICBjb25zdCBpZCA9IFwibGlmbGlnLWluZnJhLmxhbWJkYS1jb25maWcucHJvdmlkZXJcIlxuICAgIHJldHVybiAoXG4gICAgICAoc3RhY2subm9kZS50cnlGaW5kQ2hpbGQoaWQpIGFzIExhbWJkYUNvbmZpZ1Byb3ZpZGVyKSB8fFxuICAgICAgbmV3IExhbWJkYUNvbmZpZ1Byb3ZpZGVyKHN0YWNrLCBpZClcbiAgICApXG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IHByb3ZpZGVyOiBjci5Qcm92aWRlclxuICBwdWJsaWMgcmVhZG9ubHkgc2VydmljZVRva2VuOiBzdHJpbmdcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKVxuXG4gICAgdGhpcy5wcm92aWRlciA9IG5ldyBjci5Qcm92aWRlcih0aGlzLCBcIlByb3ZpZGVyXCIsIHtcbiAgICAgIG9uRXZlbnRIYW5kbGVyOiBuZXcgbGFtYmRhLkZ1bmN0aW9uKHRoaXMsIFwiVXBkYXRlQ29kZUZuXCIsIHtcbiAgICAgICAgY29kZTogbGFtYmRhLkNvZGUuZnJvbUFzc2V0KFxuICAgICAgICAgIHBhdGguam9pbihfX2Rpcm5hbWUsIFwiLi4vLi4vZGlzdC9sYW1iZGEtY29uZmlnLWhhbmRsZXJcIiksXG4gICAgICAgICksXG4gICAgICAgIGhhbmRsZXI6IFwiaW5kZXguaGFuZGxlclwiLFxuICAgICAgICBydW50aW1lOiBsYW1iZGEuUnVudGltZS5OT0RFSlNfMjRfWCxcbiAgICAgICAgdGltZW91dDogRHVyYXRpb24ubWludXRlcygyKSxcbiAgICAgICAgaW5pdGlhbFBvbGljeTogW1xuICAgICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICAgXCJsYW1iZGE6R2V0RnVuY3Rpb25cIixcbiAgICAgICAgICAgICAgXCJsYW1iZGE6R2V0RnVuY3Rpb25Db25maWd1cmF0aW9uXCIsXG4gICAgICAgICAgICAgIFwibGFtYmRhOlVwZGF0ZUZ1bmN0aW9uQ29kZVwiLFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHJlc291cmNlczogW1wiKlwiXSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSxcbiAgICAgIH0pLFxuICAgIH0pXG5cbiAgICB0aGlzLnNlcnZpY2VUb2tlbiA9IHRoaXMucHJvdmlkZXIuc2VydmljZVRva2VuXG4gIH1cbn1cbiJdfQ==
package/lib/lambdas.d.ts CHANGED
@@ -1,6 +1,6 @@
1
- import { ParameterResource } from "@henrist/cdk-cross-region-params";
2
1
  import * as lambda from "aws-cdk-lib/aws-lambda";
3
2
  import { Construct } from "constructs";
3
+ import { CrossRegionParam } from "./cross-region-params";
4
4
  interface AuthLambdasProps {
5
5
  /**
6
6
  * List of regions this can be used in. This should contain the region
@@ -20,11 +20,11 @@ interface AuthLambdasProps {
20
20
  * distribution is deployed from, so that it can be used cross-region.
21
21
  */
22
22
  export declare class AuthLambdas extends Construct {
23
- readonly checkAuthFn: ParameterResource<lambda.IVersion>;
24
- readonly httpHeadersFn: ParameterResource<lambda.IVersion>;
25
- readonly parseAuthFn: ParameterResource<lambda.IVersion>;
26
- readonly refreshAuthFn: ParameterResource<lambda.IVersion>;
27
- readonly signOutFn: ParameterResource<lambda.IVersion>;
23
+ readonly checkAuthFn: CrossRegionParam<lambda.IVersion>;
24
+ readonly httpHeadersFn: CrossRegionParam<lambda.IVersion>;
25
+ readonly parseAuthFn: CrossRegionParam<lambda.IVersion>;
26
+ readonly refreshAuthFn: CrossRegionParam<lambda.IVersion>;
27
+ readonly signOutFn: CrossRegionParam<lambda.IVersion>;
28
28
  private readonly regions;
29
29
  private readonly nonce;
30
30
  constructor(scope: Construct, id: string, props: AuthLambdasProps);
package/lib/lambdas.js CHANGED
@@ -1,10 +1,10 @@
1
1
  import * as path from "node:path";
2
2
  import { fileURLToPath } from "node:url";
3
- import { ParameterResource } from "@henrist/cdk-cross-region-params";
4
3
  import { Duration, Stack } from "aws-cdk-lib";
5
4
  import * as iam from "aws-cdk-lib/aws-iam";
6
5
  import * as lambda from "aws-cdk-lib/aws-lambda";
7
6
  import { Construct } from "constructs";
7
+ import { CrossRegionParam } from "./cross-region-params";
8
8
  const __filename = fileURLToPath(import.meta.url);
9
9
  const __dirname = path.dirname(__filename);
10
10
  const isSnapshot = process.env.IS_SNAPSHOT === "true";
@@ -58,7 +58,7 @@ export class AuthLambdas extends Construct {
58
58
  if (this.node.addr === undefined) {
59
59
  throw new Error("node.addr not found - ensure aws-cdk is up-to-update");
60
60
  }
61
- return new ParameterResource(this, `${id}VersionParam`, {
61
+ return new CrossRegionParam(this, `${id}VersionParam`, {
62
62
  nonce: isSnapshot ? "snapshot" : undefined,
63
63
  parameterName: `/cf/region/${region}/stack/${stackName}/${this.node.addr}-${id}-function-arn`,
64
64
  referenceToResource: (scope, id, reference) => lambda.Version.fromVersionArn(scope, id, reference),
@@ -68,4 +68,4 @@ export class AuthLambdas extends Construct {
68
68
  });
69
69
  }
70
70
  }
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFtYmRhcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9sYW1iZGFzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxJQUFJLE1BQU0sV0FBVyxDQUFBO0FBQ2pDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFDeEMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUE7QUFDcEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDN0MsT0FBTyxLQUFLLEdBQUcsTUFBTSxxQkFBcUIsQ0FBQTtBQUMxQyxPQUFPLEtBQUssTUFBTSxNQUFNLHdCQUF3QixDQUFBO0FBQ2hELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFFdEMsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7QUFDakQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQTtBQUMxQyxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsS0FBSyxNQUFNLENBQUE7QUFlckQ7Ozs7O0dBS0c7QUFDSCxNQUFNLE9BQU8sV0FBWSxTQUFRLFNBQVM7SUFDeEIsV0FBVyxDQUFvQztJQUMvQyxhQUFhLENBQW9DO0lBQ2pELFdBQVcsQ0FBb0M7SUFDL0MsYUFBYSxDQUFvQztJQUNqRCxTQUFTLENBQW9DO0lBRTVDLE9BQU8sQ0FBVTtJQUNqQixLQUFLLENBQW9CO0lBRTFDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBdUI7UUFDL0QsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUVoQixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQTtRQUNwQyxJQUFJLENBQUMs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LGFBQWEsRUFBRSxjQUFjLE1BQU0sVUFBVSxTQUFTLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksRUFBRSxlQUFlO1lBQzdGLG1CQUFtQixFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxDQUM1QyxNQUFNLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLFNBQVMsQ0FBQztZQUNyRCxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDckIsUUFBUSxFQUFFLEVBQUUsQ0FBQyxjQUFjO1lBQzNCLG1CQUFtQixFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsV0FBVztTQUN4RCxDQUFDLENBQUE7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJub2RlOnBhdGhcIlxuaW1wb3J0IHsgZmlsZVVSTFRvUGF0aCB9IGZyb20gXCJub2RlOnVybFwiXG5pbXBvcnQgeyBQYXJhbWV0ZXJSZXNvdXJjZSB9IGZyb20gXCJAaGVucmlzdC9jZGstY3Jvc3MtcmVnaW9uLXBhcmFtc1wiXG5pbXBvcnQgeyBEdXJhdGlvbiwgU3RhY2sgfSBmcm9tIFwiYXdzLWNkay1saWJcIlxuaW1wb3J0ICogYXMgaWFtIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCJcbmltcG9ydCAqIGFzIGxhbWJkYSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxhbWJkYVwiXG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiXG5cbmNvbnN0IF9fZmlsZW5hbWUgPSBmaWxlVVJMVG9QYXRoKGltcG9ydC5tZXRhLnVybClcbmNvbnN0IF9fZGlybmFtZSA9IHBhdGguZGlybmFtZShfX2ZpbGVuYW1lKVxuY29uc3QgaXNTbmFwc2hvdCA9IHByb2Nlc3MuZW52LklTX1NOQVBTSE9UID09PSBcInRydWVcIlxuXG5pbnRlcmZhY2UgQXV0aExhbWJkYXNQcm9wcyB7XG4gIC8qKlxuICAgKiBMaXN0IG9mIHJlZ2lvbnMgdGhpcyBjYW4gYmUgdXNlZCBpbi4gVGhpcyBzaG91bGQgY29udGFpbiB0aGUgcmVnaW9uXG4gICAqIHdoZXJlIHRoZSBDbG91ZEZyb250IGRpc3RyaWJ1dGlvbiBpcyBkZXBsb3llZCAodGhlIENsb3VkRm9ybWF0aW9uIHN0YWNrKS5cbiAgICovXG4gIHJlZ2lvbnM6IHN0cmluZ1tdXG4gIC8qKlxuICAgKiBBIG5vbmNlIHZhbHVlIHRoYXQgY2FuIGJlIHVzZWQgdG8gZm9yY2UgbmV3IGxhbWJkYSBmdW5jdGlvbnNcbiAgICogdG8gYWxsb3cgbmV3IHZlcnNpb25zIHRvIGJlIGNyZWF0ZWQuXG4gICAqL1xuICBub25jZT86IHN0cmluZ1xufVxuXG4vKipcbiAqIExhbWJkYXMgdXNlZCBmb3IgQ2xvdWRGcm9udC4gTXVzdCBiZSBkZXBsb3llZCBpbiB1cy1lYXN0LTEuXG4gKlxuICogVGhpcyB3aWxsIHByb3Zpc2lvbiBTU00gUGFyYW1ldGVycyB0aGUgcmVnaW9uIHdoZXJlIHRoZSBDbG91ZEZyb250XG4gKiBkaXN0cmlidXRpb24gaXMgZGVwbG95ZWQgZnJvbSwgc28gdGhhdCBpdCBjYW4gYmUgdXNlZCBjcm9zcy1yZWdpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBBdXRoTGFtYmRhcyBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHB1YmxpYyByZWFkb25seSBjaGVja0F1dGhGbjogUGFyYW1ldGVyUmVzb3VyY2U8bGFtYmRhLklWZXJzaW9uPlxuICBwdWJsaWMgcmVhZG9ubHkgaHR0cEhlYWRlcnNGbjogUGFyYW1ldGVyUmVzb3VyY2U8bGFtYmRhLklWZXJzaW9uPlxuICBwdWJsaWMgcmVhZG9ubHkgcGFyc2VBdXRoRm46IFBhcmFtZXRlclJlc291cmNlPGxhbWJkYS5JVmVyc2lvbj5cbiAgcHVibGljIHJlYWRvbmx5IHJlZnJlc2hBdXRoRm46IFBhcmFtZXRlclJlc291cmNlPGxhbWJkYS5JVmVyc2lvbj5cbiAgcHVibGljIHJlYWRvbmx5IHNpZ25PdXRGbjogUGFyYW1ldGVyUmVzb3VyY2U8bGFtYmRhLklWZXJzaW9uPlxuXG4gIHByaXZhdGUgcmVhZG9ubHkgcmVnaW9uczogc3RyaW5nW11cbiAgcHJpdmF0ZSByZWFkb25seSBub25jZTogc3RyaW5nIHwgdW5kZWZpbmVkXG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEF1dGhMYW1iZGFzUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpXG5cbiAgICBjb25zdCByZWdpb24gPSBTdGFjay5vZih0aGlzKS5yZWdpb25cbiAgICB0aGlzLnJlZ2lvbnMgPSBwcm9wcy5yZWdpb25zXG5cbiAgICB0aGlzLm5vbmNlID0gcHJvcHMubm9uY2VcblxuICAgIGlmIChyZWdpb24gIT09IFwidXMtZWFzdC0xXCIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlJlZ2lvbiBtdXN0IGJlIHVzLWVhc3QtMSBkdWUgdG8gTGFtYmRhQGVkZ2VcIilcbiAgICB9XG5cbiAgICBjb25zdCByb2xlID0gbmV3IGlhbS5Sb2xlKHRoaXMsIFwiU2VydmljZVJvbGVcIiwge1xuICAgICAgYXNzdW1lZEJ5OiBuZXcgaWFtLkNvbXBvc2l0ZVByaW5jaXBhbChcbiAgICAgICAgbmV3IGlhbS5TZXJ2aWNlUHJpbmNpcGFsKFwibGFtYmRhLmFtYXpvbmF3cy5jb21cIiksXG4gICAgICAgIG5ldyBpYW0uU2VydmljZVByaW5jaXBhbChcImVkZ2VsYW1iZGEuYW1hem9uYXdzLmNvbVwiKSxcbiAgICAgICksXG4gICAgICBtYW5hZ2VkUG9saWNpZXM6IFtcbiAgICAgICAgaWFtLk1hbmFnZWRQb2xpY3kuZnJvbUF3c01hbmFnZWRQb2xpY3lOYW1lKFxuICAgICAgICAgIFwic2VydmljZS1yb2xlL0FXU0xhbWJkYUJhc2ljRXhlY3V0aW9uUm9sZVwiLFxuICAgICAgICApLFxuICAgICAgXSxcbiAgICB9KVxuXG4gICAgdGhpcy5jaGVja0F1dGhGbiA9IHRoaXMuYWRkRnVuY3Rpb24oXCJDaGVja0F1dGhGdW5jdGlvblwiLCBcImNoZWNrLWF1dGhcIiwgcm9sZSlcbiAgICB0aGlzLmh0dHBIZWFkZXJzRm4gPSB0aGlzLmFkZEZ1bmN0aW9uKFxuICAgICAgXCJIdHRwSGVhZGVyc0Z1bmN0aW9uXCIsXG4gICAgICBcImh0dHAtaGVhZGVyc1wiLFxuICAgICAgcm9sZSxcbiAgICApXG4gICAgdGhpcy5wYXJzZUF1dGhGbiA9IHRoaXMuYWRkRnVuY3Rpb24oXCJQYXJzZUF1dGhGdW5jdGlvblwiLCBcInBhcnNlLWF1dGhcIiwgcm9sZSlcbiAgICB0aGlzLnJlZnJlc2hBdXRoRm4gPSB0aGlzLmFkZEZ1bmN0aW9uKFxuICAgICAgXCJSZWZyZXNoQXV0aEZ1bmN0aW9uXCIsXG4gICAgICBcInJlZnJlc2gtYXV0aFwiLFxuICAgICAgcm9sZSxcbiAgICApXG4gICAgdGhpcy5zaWduT3V0Rm4gPSB0aGlzLmFkZEZ1bmN0aW9uKFwiU2lnbk91dEZ1bmN0aW9uXCIsIFwic2lnbi1vdXRcIiwgcm9sZSlcbiAgfVxuXG4gIHByaXZhdGUgYWRkRnVuY3Rpb24oaWQ6IHN0cmluZywgYXNzZXROYW1lOiBzdHJpbmcsIHJvbGU6IGlhbS5JUm9sZSkge1xuICAgIGNvbnN0IHJlZ2lvbiA9IFN0YWNrLm9mKHRoaXMpLnJlZ2lvblxuICAgIGNvbnN0IHN0YWNrTmFtZSA9IFN0YWNrLm9mKHRoaXMpLnN0YWNrTmFtZVxuXG4gICAgY29uc3QgZm4gPSBuZXcgbGFtYmRhLkZ1bmN0aW9uKHRoaXMsIGlkLCB7XG4gICAgICBjb2RlOlxuICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJ0ZXN0XCJcbiAgICAgICAgICA/IGxhbWJkYS5Db2RlLmZyb21JbmxpbmUoXCJzbmFwc2hvdC12YWx1ZVwiKVxuICAgICAgICAgIDogbGFtYmRhLkNvZGUuZnJvbUFzc2V0KHBhdGguam9pbihfX2Rpcm5hbWUsIGAuLi9kaXN0LyR7YXNzZXROYW1lfWApKSxcbiAgICAgIGhhbmRsZXI6IFwiaW5kZXguaGFuZGxlclwiLFxuICAgICAgcnVudGltZTogbGFtYmRhLlJ1bnRpbWUuTk9ERUpTXzI0X1gsXG4gICAgICB0aW1lb3V0OiBEdXJhdGlvbi5zZWNvbmRzKDUpLFxuICAgICAgcm9sZSxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICB0aGlzLm5vbmNlID09IG51bGwgPyB1bmRlZmluZWQgOiBgTm9uY2UgdmFsdWU6ICR7dGhpcy5ub25jZX1gLFxuICAgIH0pXG5cbiAgICBpZiAodGhpcy5ub2RlLmFkZHIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwibm9kZS5hZGRyIG5vdCBmb3VuZCAtIGVuc3VyZSBhd3MtY2RrIGlzIHVwLXRvLXVwZGF0ZVwiKVxuICAgIH1cblxuICAgIHJldHVybiBuZXcgUGFyYW1ldGVyUmVzb3VyY2U8bGFtYmRhLklWZXJzaW9uPih0aGlzLCBgJHtpZH1WZXJzaW9uUGFyYW1gLCB7XG4gICAgICBub25jZTogaXNTbmFwc2hvdCA/IFwic25hcHNob3RcIiA6IHVuZGVmaW5lZCxcbiAgICAgIHBhcmFtZXRlck5hbWU6IGAvY2YvcmVnaW9uLyR7cmVnaW9ufS9zdGFjay8ke3N0YWNrTmFtZX0vJHt0aGlzLm5vZGUuYWRkcn0tJHtpZH0tZnVuY3Rpb24tYXJuYCxcbiAgICAgIHJlZmVyZW5jZVRvUmVzb3VyY2U6IChzY29wZSwgaWQsIHJlZmVyZW5jZSkgPT5cbiAgICAgICAgbGFtYmRhLlZlcnNpb24uZnJvbVZlcnNpb25Bcm4oc2NvcGUsIGlkLCByZWZlcmVuY2UpLFxuICAgICAgcmVnaW9uczogdGhpcy5yZWdpb25zLFxuICAgICAgcmVzb3VyY2U6IGZuLmN1cnJlbnRWZXJzaW9uLFxuICAgICAgcmVzb3VyY2VUb1JlZmVyZW5jZTogKHJlc291cmNlKSA9PiByZXNvdXJjZS5mdW5jdGlvbkFybixcbiAgICB9KVxuICB9XG59XG4iXX0=
71
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFtYmRhcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9sYW1iZGFzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxJQUFJLE1BQU0sV0FBVyxDQUFBO0FBQ2pDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFDeEMsT0FBTyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDN0MsT0FBTyxLQUFLLEdBQUcsTUFBTSxxQkFBcUIsQ0FBQTtBQUMxQyxPQUFPLEtBQUssTUFBTSxNQUFNLHdCQUF3QixDQUFBO0FBQ2hELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDdEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUJBQXVCLENBQUE7QUFFeEQsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7QUFDakQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQTtBQUMxQyxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsS0FBSyxNQUFNLENBQUE7QUFlckQ7Ozs7O0dBS0c7QUFDSCxNQUFNLE9BQU8sV0FBWSxTQUFRLFNBQVM7SUFDeEIsV0FBVyxDQUFtQztJQUM5QyxhQUFhLENBQW1DO0lBQ2hELFdBQVcsQ0FBbUM7SUFDOUMsYUFBYSxDQUFtQztJQUNoRCxTQUFTLENBQW1DO0lBRTNDLE9BQU8sQ0FBVTtJQUNqQixLQUFLLENBQW9CO0lBRTFDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBdUI7UUFDL0QsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUVoQixNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQTtRQUNwQyxJQUFJLENBQUMs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LGFBQWEsRUFBRSxjQUFjLE1BQU0sVUFBVSxTQUFTLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksRUFBRSxlQUFlO1lBQzdGLG1CQUFtQixFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxDQUM1QyxNQUFNLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLFNBQVMsQ0FBQztZQUNyRCxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDckIsUUFBUSxFQUFFLEVBQUUsQ0FBQyxjQUFjO1lBQzNCLG1CQUFtQixFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsV0FBVztTQUN4RCxDQUFDLENBQUE7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJub2RlOnBhdGhcIlxuaW1wb3J0IHsgZmlsZVVSTFRvUGF0aCB9IGZyb20gXCJub2RlOnVybFwiXG5pbXBvcnQgeyBEdXJhdGlvbiwgU3RhY2sgfSBmcm9tIFwiYXdzLWNkay1saWJcIlxuaW1wb3J0ICogYXMgaWFtIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCJcbmltcG9ydCAqIGFzIGxhbWJkYSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxhbWJkYVwiXG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiXG5pbXBvcnQgeyBDcm9zc1JlZ2lvblBhcmFtIH0gZnJvbSBcIi4vY3Jvc3MtcmVnaW9uLXBhcmFtc1wiXG5cbmNvbnN0IF9fZmlsZW5hbWUgPSBmaWxlVVJMVG9QYXRoKGltcG9ydC5tZXRhLnVybClcbmNvbnN0IF9fZGlybmFtZSA9IHBhdGguZGlybmFtZShfX2ZpbGVuYW1lKVxuY29uc3QgaXNTbmFwc2hvdCA9IHByb2Nlc3MuZW52LklTX1NOQVBTSE9UID09PSBcInRydWVcIlxuXG5pbnRlcmZhY2UgQXV0aExhbWJkYXNQcm9wcyB7XG4gIC8qKlxuICAgKiBMaXN0IG9mIHJlZ2lvbnMgdGhpcyBjYW4gYmUgdXNlZCBpbi4gVGhpcyBzaG91bGQgY29udGFpbiB0aGUgcmVnaW9uXG4gICAqIHdoZXJlIHRoZSBDbG91ZEZyb250IGRpc3RyaWJ1dGlvbiBpcyBkZXBsb3llZCAodGhlIENsb3VkRm9ybWF0aW9uIHN0YWNrKS5cbiAgICovXG4gIHJlZ2lvbnM6IHN0cmluZ1tdXG4gIC8qKlxuICAgKiBBIG5vbmNlIHZhbHVlIHRoYXQgY2FuIGJlIHVzZWQgdG8gZm9yY2UgbmV3IGxhbWJkYSBmdW5jdGlvbnNcbiAgICogdG8gYWxsb3cgbmV3IHZlcnNpb25zIHRvIGJlIGNyZWF0ZWQuXG4gICAqL1xuICBub25jZT86IHN0cmluZ1xufVxuXG4vKipcbiAqIExhbWJkYXMgdXNlZCBmb3IgQ2xvdWRGcm9udC4gTXVzdCBiZSBkZXBsb3llZCBpbiB1cy1lYXN0LTEuXG4gKlxuICogVGhpcyB3aWxsIHByb3Zpc2lvbiBTU00gUGFyYW1ldGVycyB0aGUgcmVnaW9uIHdoZXJlIHRoZSBDbG91ZEZyb250XG4gKiBkaXN0cmlidXRpb24gaXMgZGVwbG95ZWQgZnJvbSwgc28gdGhhdCBpdCBjYW4gYmUgdXNlZCBjcm9zcy1yZWdpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBBdXRoTGFtYmRhcyBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHB1YmxpYyByZWFkb25seSBjaGVja0F1dGhGbjogQ3Jvc3NSZWdpb25QYXJhbTxsYW1iZGEuSVZlcnNpb24+XG4gIHB1YmxpYyByZWFkb25seSBodHRwSGVhZGVyc0ZuOiBDcm9zc1JlZ2lvblBhcmFtPGxhbWJkYS5JVmVyc2lvbj5cbiAgcHVibGljIHJlYWRvbmx5IHBhcnNlQXV0aEZuOiBDcm9zc1JlZ2lvblBhcmFtPGxhbWJkYS5JVmVyc2lvbj5cbiAgcHVibGljIHJlYWRvbmx5IHJlZnJlc2hBdXRoRm46IENyb3NzUmVnaW9uUGFyYW08bGFtYmRhLklWZXJzaW9uPlxuICBwdWJsaWMgcmVhZG9ubHkgc2lnbk91dEZuOiBDcm9zc1JlZ2lvblBhcmFtPGxhbWJkYS5JVmVyc2lvbj5cblxuICBwcml2YXRlIHJlYWRvbmx5IHJlZ2lvbnM6IHN0cmluZ1tdXG4gIHByaXZhdGUgcmVhZG9ubHkgbm9uY2U6IHN0cmluZyB8IHVuZGVmaW5lZFxuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBBdXRoTGFtYmRhc1Byb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKVxuXG4gICAgY29uc3QgcmVnaW9uID0gU3RhY2sub2YodGhpcykucmVnaW9uXG4gICAgdGhpcy5yZWdpb25zID0gcHJvcHMucmVnaW9uc1xuXG4gICAgdGhpcy5ub25jZSA9IHByb3BzLm5vbmNlXG5cbiAgICBpZiAocmVnaW9uICE9PSBcInVzLWVhc3QtMVwiKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJSZWdpb24gbXVzdCBiZSB1cy1lYXN0LTEgZHVlIHRvIExhbWJkYUBlZGdlXCIpXG4gICAgfVxuXG4gICAgY29uc3Qgcm9sZSA9IG5ldyBpYW0uUm9sZSh0aGlzLCBcIlNlcnZpY2VSb2xlXCIsIHtcbiAgICAgIGFzc3VtZWRCeTogbmV3IGlhbS5Db21wb3NpdGVQcmluY2lwYWwoXG4gICAgICAgIG5ldyBpYW0uU2VydmljZVByaW5jaXBhbChcImxhbWJkYS5hbWF6b25hd3MuY29tXCIpLFxuICAgICAgICBuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoXCJlZGdlbGFtYmRhLmFtYXpvbmF3cy5jb21cIiksXG4gICAgICApLFxuICAgICAgbWFuYWdlZFBvbGljaWVzOiBbXG4gICAgICAgIGlhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShcbiAgICAgICAgICBcInNlcnZpY2Utcm9sZS9BV1NMYW1iZGFCYXNpY0V4ZWN1dGlvblJvbGVcIixcbiAgICAgICAgKSxcbiAgICAgIF0sXG4gICAgfSlcblxuICAgIHRoaXMuY2hlY2tBdXRoRm4gPSB0aGlzLmFkZEZ1bmN0aW9uKFwiQ2hlY2tBdXRoRnVuY3Rpb25cIiwgXCJjaGVjay1hdXRoXCIsIHJvbGUpXG4gICAgdGhpcy5odHRwSGVhZGVyc0ZuID0gdGhpcy5hZGRGdW5jdGlvbihcbiAgICAgIFwiSHR0cEhlYWRlcnNGdW5jdGlvblwiLFxuICAgICAgXCJodHRwLWhlYWRlcnNcIixcbiAgICAgIHJvbGUsXG4gICAgKVxuICAgIHRoaXMucGFyc2VBdXRoRm4gPSB0aGlzLmFkZEZ1bmN0aW9uKFwiUGFyc2VBdXRoRnVuY3Rpb25cIiwgXCJwYXJzZS1hdXRoXCIsIHJvbGUpXG4gICAgdGhpcy5yZWZyZXNoQXV0aEZuID0gdGhpcy5hZGRGdW5jdGlvbihcbiAgICAgIFwiUmVmcmVzaEF1dGhGdW5jdGlvblwiLFxuICAgICAgXCJyZWZyZXNoLWF1dGhcIixcbiAgICAgIHJvbGUsXG4gICAgKVxuICAgIHRoaXMuc2lnbk91dEZuID0gdGhpcy5hZGRGdW5jdGlvbihcIlNpZ25PdXRGdW5jdGlvblwiLCBcInNpZ24tb3V0XCIsIHJvbGUpXG4gIH1cblxuICBwcml2YXRlIGFkZEZ1bmN0aW9uKGlkOiBzdHJpbmcsIGFzc2V0TmFtZTogc3RyaW5nLCByb2xlOiBpYW0uSVJvbGUpIHtcbiAgICBjb25zdCByZWdpb24gPSBTdGFjay5vZih0aGlzKS5yZWdpb25cbiAgICBjb25zdCBzdGFja05hbWUgPSBTdGFjay5vZih0aGlzKS5zdGFja05hbWVcblxuICAgIGNvbnN0IGZuID0gbmV3IGxhbWJkYS5GdW5jdGlvbih0aGlzLCBpZCwge1xuICAgICAgY29kZTpcbiAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwidGVzdFwiXG4gICAgICAgICAgPyBsYW1iZGEuQ29kZS5mcm9tSW5saW5lKFwic25hcHNob3QtdmFsdWVcIilcbiAgICAgICAgICA6IGxhbWJkYS5Db2RlLmZyb21Bc3NldChwYXRoLmpvaW4oX19kaXJuYW1lLCBgLi4vZGlzdC8ke2Fzc2V0TmFtZX1gKSksXG4gICAgICBoYW5kbGVyOiBcImluZGV4LmhhbmRsZXJcIixcbiAgICAgIHJ1bnRpbWU6IGxhbWJkYS5SdW50aW1lLk5PREVKU18yNF9YLFxuICAgICAgdGltZW91dDogRHVyYXRpb24uc2Vjb25kcyg1KSxcbiAgICAgIHJvbGUsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgdGhpcy5ub25jZSA9PSBudWxsID8gdW5kZWZpbmVkIDogYE5vbmNlIHZhbHVlOiAke3RoaXMubm9uY2V9YCxcbiAgICB9KVxuXG4gICAgaWYgKHRoaXMubm9kZS5hZGRyID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIm5vZGUuYWRkciBub3QgZm91bmQgLSBlbnN1cmUgYXdzLWNkayBpcyB1cC10by11cGRhdGVcIilcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IENyb3NzUmVnaW9uUGFyYW08bGFtYmRhLklWZXJzaW9uPih0aGlzLCBgJHtpZH1WZXJzaW9uUGFyYW1gLCB7XG4gICAgICBub25jZTogaXNTbmFwc2hvdCA/IFwic25hcHNob3RcIiA6IHVuZGVmaW5lZCxcbiAgICAgIHBhcmFtZXRlck5hbWU6IGAvY2YvcmVnaW9uLyR7cmVnaW9ufS9zdGFjay8ke3N0YWNrTmFtZX0vJHt0aGlzLm5vZGUuYWRkcn0tJHtpZH0tZnVuY3Rpb24tYXJuYCxcbiAgICAgIHJlZmVyZW5jZVRvUmVzb3VyY2U6IChzY29wZSwgaWQsIHJlZmVyZW5jZSkgPT5cbiAgICAgICAgbGFtYmRhLlZlcnNpb24uZnJvbVZlcnNpb25Bcm4oc2NvcGUsIGlkLCByZWZlcmVuY2UpLFxuICAgICAgcmVnaW9uczogdGhpcy5yZWdpb25zLFxuICAgICAgcmVzb3VyY2U6IGZuLmN1cnJlbnRWZXJzaW9uLFxuICAgICAgcmVzb3VyY2VUb1JlZmVyZW5jZTogKHJlc291cmNlKSA9PiByZXNvdXJjZS5mdW5jdGlvbkFybixcbiAgICB9KVxuICB9XG59XG4iXX0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@liflig/cdk-cloudfront-auth",
3
- "version": "1.9.1",
3
+ "version": "1.10.0",
4
4
  "description": "CDK Constructs for adding authentication for a CloudFront Distribution",
5
5
  "type": "module",
6
6
  "repository": {
@@ -16,7 +16,7 @@
16
16
  "prepare": "bun run build && bunx husky",
17
17
  "semantic-release": "semantic-release",
18
18
  "clean": "rm -rf dist lib",
19
- "upgrade-deps": "ncu --upgrade --install=always --format group --reject @types/node"
19
+ "upgrade-deps": "bun update"
20
20
  },
21
21
  "keywords": [
22
22
  "cdk",
@@ -35,31 +35,30 @@
35
35
  "provenance": true
36
36
  },
37
37
  "devDependencies": {
38
- "@biomejs/biome": "2.4.5",
39
- "@commitlint/cli": "20.4.3",
40
- "@commitlint/config-conventional": "20.4.3",
38
+ "@aws-sdk/client-lambda": "^3.1005.0",
39
+ "@biomejs/biome": "2.4.6",
40
+ "@commitlint/cli": "20.4.4",
41
+ "@commitlint/config-conventional": "20.4.4",
42
+ "@types/adm-zip": "^0.5.7",
41
43
  "@types/aws-lambda": "8.10.161",
42
44
  "@types/jest": "30.0.0",
43
45
  "@types/jsonwebtoken": "9.0.10",
44
- "@types/node": "24.11.0",
45
- "aws-cdk-lib": "2.241.0",
46
+ "@types/node": "24.12.0",
47
+ "adm-zip": "^0.5.16",
48
+ "aws-cdk-lib": "2.243.0",
46
49
  "axios": "1.13.6",
47
50
  "constructs": "10.5.1",
48
51
  "cookie": "1.1.1",
49
52
  "husky": "9.1.7",
50
- "jest": "30.2.0",
53
+ "jest": "30.3.0",
51
54
  "jest-cdk-snapshot": "2.3.6",
52
55
  "jsonwebtoken": "9.0.3",
53
56
  "jwks-rsa": "3.2.2",
54
- "npm-check-updates": "19.6.3",
55
57
  "semantic-release": "25.0.3",
56
58
  "ts-jest": "29.4.6",
57
59
  "typescript": "5.9.3"
58
60
  },
59
- "dependencies": {
60
- "@henrist/cdk-cross-region-params": "^2.0.1",
61
- "@liflig/cdk-lambda-config": "1.7.36"
62
- },
61
+ "dependencies": {},
63
62
  "peerDependencies": {
64
63
  "aws-cdk-lib": "^2.0.0"
65
64
  },