cdk-ecr-deployment 2.3.2 → 2.4.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.
- package/.jsii +50 -25
- package/API.md +16 -0
- package/changelog.md +3 -3
- package/lambda/go.mod +3 -1
- package/lambda/go.sum +14 -3
- package/lambda/main.go +22 -0
- package/lambda/utils.go +37 -0
- package/lambda/utils_test.go +8 -0
- package/lib/index.d.ts +7 -1
- package/lib/index.js +21 -8
- package/package.json +1 -1
- package/releasetag.txt +1 -1
- package/version.txt +1 -1
package/.jsii
CHANGED
|
@@ -2901,7 +2901,7 @@
|
|
|
2901
2901
|
},
|
|
2902
2902
|
"locationInModule": {
|
|
2903
2903
|
"filename": "src/index.ts",
|
|
2904
|
-
"line":
|
|
2904
|
+
"line": 117
|
|
2905
2905
|
},
|
|
2906
2906
|
"parameters": [
|
|
2907
2907
|
{
|
|
@@ -2925,7 +2925,7 @@
|
|
|
2925
2925
|
"kind": "class",
|
|
2926
2926
|
"locationInModule": {
|
|
2927
2927
|
"filename": "src/index.ts",
|
|
2928
|
-
"line":
|
|
2928
|
+
"line": 116
|
|
2929
2929
|
},
|
|
2930
2930
|
"name": "DockerImageName",
|
|
2931
2931
|
"properties": [
|
|
@@ -2938,7 +2938,7 @@
|
|
|
2938
2938
|
"immutable": true,
|
|
2939
2939
|
"locationInModule": {
|
|
2940
2940
|
"filename": "src/index.ts",
|
|
2941
|
-
"line":
|
|
2941
|
+
"line": 118
|
|
2942
2942
|
},
|
|
2943
2943
|
"name": "uri",
|
|
2944
2944
|
"overrides": "cdk-ecr-deployment.IImageName",
|
|
@@ -2952,7 +2952,7 @@
|
|
|
2952
2952
|
},
|
|
2953
2953
|
"locationInModule": {
|
|
2954
2954
|
"filename": "src/index.ts",
|
|
2955
|
-
"line":
|
|
2955
|
+
"line": 117
|
|
2956
2956
|
},
|
|
2957
2957
|
"name": "creds",
|
|
2958
2958
|
"optional": true,
|
|
@@ -2977,7 +2977,7 @@
|
|
|
2977
2977
|
},
|
|
2978
2978
|
"locationInModule": {
|
|
2979
2979
|
"filename": "src/index.ts",
|
|
2980
|
-
"line":
|
|
2980
|
+
"line": 135
|
|
2981
2981
|
},
|
|
2982
2982
|
"parameters": [
|
|
2983
2983
|
{
|
|
@@ -3003,8 +3003,33 @@
|
|
|
3003
3003
|
"kind": "class",
|
|
3004
3004
|
"locationInModule": {
|
|
3005
3005
|
"filename": "src/index.ts",
|
|
3006
|
-
"line":
|
|
3006
|
+
"line": 132
|
|
3007
3007
|
},
|
|
3008
|
+
"methods": [
|
|
3009
|
+
{
|
|
3010
|
+
"docs": {
|
|
3011
|
+
"stability": "stable"
|
|
3012
|
+
},
|
|
3013
|
+
"locationInModule": {
|
|
3014
|
+
"filename": "src/index.ts",
|
|
3015
|
+
"line": 196
|
|
3016
|
+
},
|
|
3017
|
+
"name": "addToPrincipalPolicy",
|
|
3018
|
+
"parameters": [
|
|
3019
|
+
{
|
|
3020
|
+
"name": "statement",
|
|
3021
|
+
"type": {
|
|
3022
|
+
"fqn": "aws-cdk-lib.aws_iam.PolicyStatement"
|
|
3023
|
+
}
|
|
3024
|
+
}
|
|
3025
|
+
],
|
|
3026
|
+
"returns": {
|
|
3027
|
+
"type": {
|
|
3028
|
+
"fqn": "aws-cdk-lib.aws_iam.AddToPrincipalPolicyResult"
|
|
3029
|
+
}
|
|
3030
|
+
}
|
|
3031
|
+
}
|
|
3032
|
+
],
|
|
3008
3033
|
"name": "ECRDeployment",
|
|
3009
3034
|
"symbolId": "src/index:ECRDeployment"
|
|
3010
3035
|
},
|
|
@@ -3018,7 +3043,7 @@
|
|
|
3018
3043
|
"kind": "interface",
|
|
3019
3044
|
"locationInModule": {
|
|
3020
3045
|
"filename": "src/index.ts",
|
|
3021
|
-
"line":
|
|
3046
|
+
"line": 11
|
|
3022
3047
|
},
|
|
3023
3048
|
"name": "ECRDeploymentProps",
|
|
3024
3049
|
"properties": [
|
|
@@ -3031,7 +3056,7 @@
|
|
|
3031
3056
|
"immutable": true,
|
|
3032
3057
|
"locationInModule": {
|
|
3033
3058
|
"filename": "src/index.ts",
|
|
3034
|
-
"line":
|
|
3059
|
+
"line": 31
|
|
3035
3060
|
},
|
|
3036
3061
|
"name": "dest",
|
|
3037
3062
|
"type": {
|
|
@@ -3047,7 +3072,7 @@
|
|
|
3047
3072
|
"immutable": true,
|
|
3048
3073
|
"locationInModule": {
|
|
3049
3074
|
"filename": "src/index.ts",
|
|
3050
|
-
"line":
|
|
3075
|
+
"line": 26
|
|
3051
3076
|
},
|
|
3052
3077
|
"name": "src",
|
|
3053
3078
|
"type": {
|
|
@@ -3065,7 +3090,7 @@
|
|
|
3065
3090
|
"immutable": true,
|
|
3066
3091
|
"locationInModule": {
|
|
3067
3092
|
"filename": "src/index.ts",
|
|
3068
|
-
"line":
|
|
3093
|
+
"line": 22
|
|
3069
3094
|
},
|
|
3070
3095
|
"name": "buildImage",
|
|
3071
3096
|
"optional": true,
|
|
@@ -3082,7 +3107,7 @@
|
|
|
3082
3107
|
"immutable": true,
|
|
3083
3108
|
"locationInModule": {
|
|
3084
3109
|
"filename": "src/index.ts",
|
|
3085
|
-
"line":
|
|
3110
|
+
"line": 69
|
|
3086
3111
|
},
|
|
3087
3112
|
"name": "environment",
|
|
3088
3113
|
"optional": true,
|
|
@@ -3106,7 +3131,7 @@
|
|
|
3106
3131
|
"immutable": true,
|
|
3107
3132
|
"locationInModule": {
|
|
3108
3133
|
"filename": "src/index.ts",
|
|
3109
|
-
"line":
|
|
3134
|
+
"line": 42
|
|
3110
3135
|
},
|
|
3111
3136
|
"name": "memoryLimit",
|
|
3112
3137
|
"optional": true,
|
|
@@ -3124,7 +3149,7 @@
|
|
|
3124
3149
|
"immutable": true,
|
|
3125
3150
|
"locationInModule": {
|
|
3126
3151
|
"filename": "src/index.ts",
|
|
3127
|
-
"line":
|
|
3152
|
+
"line": 49
|
|
3128
3153
|
},
|
|
3129
3154
|
"name": "role",
|
|
3130
3155
|
"optional": true,
|
|
@@ -3142,7 +3167,7 @@
|
|
|
3142
3167
|
"immutable": true,
|
|
3143
3168
|
"locationInModule": {
|
|
3144
3169
|
"filename": "src/index.ts",
|
|
3145
|
-
"line":
|
|
3170
|
+
"line": 56
|
|
3146
3171
|
},
|
|
3147
3172
|
"name": "vpc",
|
|
3148
3173
|
"optional": true,
|
|
@@ -3161,7 +3186,7 @@
|
|
|
3161
3186
|
"immutable": true,
|
|
3162
3187
|
"locationInModule": {
|
|
3163
3188
|
"filename": "src/index.ts",
|
|
3164
|
-
"line":
|
|
3189
|
+
"line": 64
|
|
3165
3190
|
},
|
|
3166
3191
|
"name": "vpcSubnets",
|
|
3167
3192
|
"optional": true,
|
|
@@ -3181,7 +3206,7 @@
|
|
|
3181
3206
|
"kind": "interface",
|
|
3182
3207
|
"locationInModule": {
|
|
3183
3208
|
"filename": "src/index.ts",
|
|
3184
|
-
"line":
|
|
3209
|
+
"line": 72
|
|
3185
3210
|
},
|
|
3186
3211
|
"name": "IImageName",
|
|
3187
3212
|
"properties": [
|
|
@@ -3195,7 +3220,7 @@
|
|
|
3195
3220
|
"immutable": true,
|
|
3196
3221
|
"locationInModule": {
|
|
3197
3222
|
"filename": "src/index.ts",
|
|
3198
|
-
"line":
|
|
3223
|
+
"line": 78
|
|
3199
3224
|
},
|
|
3200
3225
|
"name": "uri",
|
|
3201
3226
|
"type": {
|
|
@@ -3205,13 +3230,13 @@
|
|
|
3205
3230
|
{
|
|
3206
3231
|
"abstract": true,
|
|
3207
3232
|
"docs": {
|
|
3208
|
-
"remarks": "Format `user:
|
|
3233
|
+
"remarks": "Format `user:password` or `AWS Secrets Manager secret arn` or `AWS Secrets Manager secret name`",
|
|
3209
3234
|
"stability": "stable",
|
|
3210
3235
|
"summary": "The credentials of the docker image."
|
|
3211
3236
|
},
|
|
3212
3237
|
"locationInModule": {
|
|
3213
3238
|
"filename": "src/index.ts",
|
|
3214
|
-
"line":
|
|
3239
|
+
"line": 83
|
|
3215
3240
|
},
|
|
3216
3241
|
"name": "creds",
|
|
3217
3242
|
"optional": true,
|
|
@@ -3234,7 +3259,7 @@
|
|
|
3234
3259
|
},
|
|
3235
3260
|
"locationInModule": {
|
|
3236
3261
|
"filename": "src/index.ts",
|
|
3237
|
-
"line":
|
|
3262
|
+
"line": 123
|
|
3238
3263
|
},
|
|
3239
3264
|
"parameters": [
|
|
3240
3265
|
{
|
|
@@ -3265,7 +3290,7 @@
|
|
|
3265
3290
|
"kind": "class",
|
|
3266
3291
|
"locationInModule": {
|
|
3267
3292
|
"filename": "src/index.ts",
|
|
3268
|
-
"line":
|
|
3293
|
+
"line": 121
|
|
3269
3294
|
},
|
|
3270
3295
|
"name": "S3ArchiveName",
|
|
3271
3296
|
"properties": [
|
|
@@ -3278,7 +3303,7 @@
|
|
|
3278
3303
|
"immutable": true,
|
|
3279
3304
|
"locationInModule": {
|
|
3280
3305
|
"filename": "src/index.ts",
|
|
3281
|
-
"line":
|
|
3306
|
+
"line": 129
|
|
3282
3307
|
},
|
|
3283
3308
|
"name": "uri",
|
|
3284
3309
|
"overrides": "cdk-ecr-deployment.IImageName",
|
|
@@ -3292,7 +3317,7 @@
|
|
|
3292
3317
|
},
|
|
3293
3318
|
"locationInModule": {
|
|
3294
3319
|
"filename": "src/index.ts",
|
|
3295
|
-
"line":
|
|
3320
|
+
"line": 123
|
|
3296
3321
|
},
|
|
3297
3322
|
"name": "creds",
|
|
3298
3323
|
"optional": true,
|
|
@@ -3305,6 +3330,6 @@
|
|
|
3305
3330
|
"symbolId": "src/index:S3ArchiveName"
|
|
3306
3331
|
}
|
|
3307
3332
|
},
|
|
3308
|
-
"version": "2.
|
|
3309
|
-
"fingerprint": "
|
|
3333
|
+
"version": "2.4.0",
|
|
3334
|
+
"fingerprint": "d5kP3wOkagNaML4hX/yNBeSbDzUd8ZQTzfYJ5ZG/XOQ="
|
|
3310
3335
|
}
|
package/API.md
CHANGED
|
@@ -83,6 +83,22 @@ new ECRDeployment(scope: Construct, id: string, props: ECRDeploymentProps)
|
|
|
83
83
|
* **vpcSubnets** (<code>[aws_ec2.SubnetSelection](#aws-cdk-lib-aws-ec2-subnetselection)</code>) Where in the VPC to place the deployment lambda handler. __*Default*__: the Vpc default strategy if not specified
|
|
84
84
|
|
|
85
85
|
|
|
86
|
+
### Methods
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
#### addToPrincipalPolicy(statement) <a id="cdk-ecr-deployment-ecrdeployment-addtoprincipalpolicy"></a>
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
```ts
|
|
94
|
+
addToPrincipalPolicy(statement: PolicyStatement): AddToPrincipalPolicyResult
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
* **statement** (<code>[aws_iam.PolicyStatement](#aws-cdk-lib-aws-iam-policystatement)</code>) *No description*
|
|
98
|
+
|
|
99
|
+
__Returns__:
|
|
100
|
+
* <code>[aws_iam.AddToPrincipalPolicyResult](#aws-cdk-lib-aws-iam-addtoprincipalpolicyresult)</code>
|
|
101
|
+
|
|
86
102
|
|
|
87
103
|
|
|
88
104
|
## class S3ArchiveName <a id="cdk-ecr-deployment-s3archivename"></a>
|
package/changelog.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
|
|
2
|
-
|
|
2
|
+
## [2.4.0](https://github.com/cdklabs/cdk-ecr-deployment/compare/v2.3.2...v2.4.0) (2022-03-06)
|
|
3
3
|
|
|
4
4
|
|
|
5
|
-
###
|
|
5
|
+
### Features
|
|
6
6
|
|
|
7
|
-
*
|
|
7
|
+
* support getting external registry credentials from secrets/parameter store ([5824d07](https://github.com/cdklabs/cdk-ecr-deployment/commit/5824d0780819115a3bd7e4fb430077d256ba8796))
|
package/lambda/go.mod
CHANGED
|
@@ -7,10 +7,12 @@ require (
|
|
|
7
7
|
github.com/Microsoft/go-winio v0.5.1 // indirect
|
|
8
8
|
github.com/Microsoft/hcsshim v0.9.2 // indirect
|
|
9
9
|
github.com/aws/aws-lambda-go v1.23.0
|
|
10
|
-
github.com/aws/aws-sdk-go-v2 v1.
|
|
10
|
+
github.com/aws/aws-sdk-go-v2 v1.14.0
|
|
11
11
|
github.com/aws/aws-sdk-go-v2/config v1.1.6
|
|
12
|
+
github.com/aws/aws-sdk-go-v2/internal/ini v1.3.6 // indirect
|
|
12
13
|
github.com/aws/aws-sdk-go-v2/service/ecr v1.2.2
|
|
13
14
|
github.com/aws/aws-sdk-go-v2/service/s3 v1.5.0
|
|
15
|
+
github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.14.0
|
|
14
16
|
github.com/cespare/xxhash/v2 v2.1.2 // indirect
|
|
15
17
|
github.com/containerd/cgroups v1.0.3 // indirect
|
|
16
18
|
github.com/containerd/containerd v1.5.10 // indirect
|
package/lambda/go.sum
CHANGED
|
@@ -101,14 +101,21 @@ github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:l
|
|
|
101
101
|
github.com/aws/aws-lambda-go v1.23.0 h1:Vjwow5COkFJp7GePkk9kjAo/DyX36b7wVPKwseQZbRo=
|
|
102
102
|
github.com/aws/aws-lambda-go v1.23.0/go.mod h1:jJmlefzPfGnckuHdXX7/80O3BvUUi12XOkbv4w9SGLU=
|
|
103
103
|
github.com/aws/aws-sdk-go v1.15.11/go.mod h1:mFuSZ37Z9YOHbQEwBWztmVzqXrEkub65tZoCYDt7FT0=
|
|
104
|
-
github.com/aws/aws-sdk-go-v2 v1.3.2 h1:RQj8l98yKUm0UV2Wd3w/Ms+TXV9Rs1E6Kr5tRRMfyU4=
|
|
105
104
|
github.com/aws/aws-sdk-go-v2 v1.3.2/go.mod h1:7OaACgj2SX3XGWnrIjGlJM22h6yD6MEWKvm7levnnM8=
|
|
105
|
+
github.com/aws/aws-sdk-go-v2 v1.14.0 h1:IzSYBJHu0ZdUi27kIW6xVrs0eSxI4AzwbenzfXhhVs4=
|
|
106
|
+
github.com/aws/aws-sdk-go-v2 v1.14.0/go.mod h1:ZA3Y8V0LrlWj63MQAnRHgKf/5QB//LSZCPNWlWrNGLU=
|
|
106
107
|
github.com/aws/aws-sdk-go-v2/config v1.1.6 h1:tg8KyxrxDt1CrYmZXWs9lc6IFE1yxtk9kn6eS/v2fdA=
|
|
107
108
|
github.com/aws/aws-sdk-go-v2/config v1.1.6/go.mod h1:Kx90DDOgkMpRfSkzGbF13AVXHHfBNct1liO+95KxXsU=
|
|
108
109
|
github.com/aws/aws-sdk-go-v2/credentials v1.1.6 h1:efaeh6FsO/jzyJ+U4ZxduKC6rRJDrUpu+Z0k5+guqHo=
|
|
109
110
|
github.com/aws/aws-sdk-go-v2/credentials v1.1.6/go.mod h1:q1wQ5jHdFNhc4wnNcOEpnovs4keJA5Ds+qESCnfEsgU=
|
|
110
111
|
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.0.6 h1:zoOz5V56jO/rGixsCDnrQtAzYRYM2hGA/43U6jVMFbo=
|
|
111
112
|
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.0.6/go.mod h1:0+fWMitrmIpENiY8/1DyhdYPUCAPvd9UNz9mtCsEoLQ=
|
|
113
|
+
github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.5 h1:+phazLmKkjBYhFTsGYH9J7jgnA8+Aer2yE4QeS4zn6A=
|
|
114
|
+
github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.5/go.mod h1:2hXc8ooJqF2nAznsbJQIn+7h851/bu8GVC80OVTTqf8=
|
|
115
|
+
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.3.0 h1:PO+HNeJBeRK0yVD9CQZ+VUrYfd5sXqS7YdPYHHcDkR4=
|
|
116
|
+
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.3.0/go.mod h1:miRSv9l093jX/t/j+mBCaLqFHo9xKYzJ7DGm1BsGoJM=
|
|
117
|
+
github.com/aws/aws-sdk-go-v2/internal/ini v1.3.6 h1:c8s9EhIPVFMFS+R1+rtEghGrf7v83gSUWbcCYX/OPes=
|
|
118
|
+
github.com/aws/aws-sdk-go-v2/internal/ini v1.3.6/go.mod h1:o1ippSg3yJx5EuT4AOGXJCUcmt5vrcxla1cg6K1Q8Iw=
|
|
112
119
|
github.com/aws/aws-sdk-go-v2/service/ecr v1.2.2 h1:2EY0F1skAOArBsRM6nD9kPo0sdK32IPzT8O7PKocVR8=
|
|
113
120
|
github.com/aws/aws-sdk-go-v2/service/ecr v1.2.2/go.mod h1:XnQfi4PwRBjy+CQD7zqVRRHKWe529+1nTsrWXvsSSJk=
|
|
114
121
|
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.0.4 h1:8yeByqOL6UWBsOOXsHnW93/ukwL66O008tRfxXxnTwA=
|
|
@@ -119,12 +126,15 @@ github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.2.2 h1:aU8H58DoYxNo8R1
|
|
|
119
126
|
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.2.2/go.mod h1:nnutjMLuna0s3GVY/MAkpLX03thyNER06gXvnMAPj5g=
|
|
120
127
|
github.com/aws/aws-sdk-go-v2/service/s3 v1.5.0 h1:VbwXUI3L0hyhVmrFxbDxrs6cBX8TNFX0YxCpooMNjvY=
|
|
121
128
|
github.com/aws/aws-sdk-go-v2/service/s3 v1.5.0/go.mod h1:uwA7gs93Qcss43astPUb1eq4RyceNmYWAQjZFDOAMLo=
|
|
129
|
+
github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.14.0 h1:+k48odl+WiAr+oBzrdQkLzMgttZ5aX8G8vWZYYGgPYU=
|
|
130
|
+
github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.14.0/go.mod h1:h0nVkGJVtorNw3RV5QnwaERSjUWuE3g/gESooXT4qzA=
|
|
122
131
|
github.com/aws/aws-sdk-go-v2/service/sso v1.1.5 h1:B7ec5wE4+3Ldkurmq0C4gfQFtElGTG+/iTpi/YPMzi4=
|
|
123
132
|
github.com/aws/aws-sdk-go-v2/service/sso v1.1.5/go.mod h1:bpGz0tidC4y39sZkQSkpO/J0tzWCMXHbw6FZ0j1GkWM=
|
|
124
133
|
github.com/aws/aws-sdk-go-v2/service/sts v1.3.0 h1:4o69U9waE25xhRbsnXa4jjQac03BFJcNfcZkSedk3e4=
|
|
125
134
|
github.com/aws/aws-sdk-go-v2/service/sts v1.3.0/go.mod h1:ssRzzJ2RZOVuKj2Vx1YE7ypfil/BIlgmQnCSW4DistU=
|
|
126
|
-
github.com/aws/smithy-go v1.3.1 h1:xJFO4pK0y9J8fCl34uGsSJX5KNnGbdARDlA5BPhXnwE=
|
|
127
135
|
github.com/aws/smithy-go v1.3.1/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAmR5n+E=
|
|
136
|
+
github.com/aws/smithy-go v1.11.0 h1:nOfSDwiiH232f90OuevPnAEQO5ZqH+xnn8uGVsvBCw4=
|
|
137
|
+
github.com/aws/smithy-go v1.11.0/go.mod h1:3xHYmszWVx2c0kIwQeEVf9uSm4fYZt67FBJnwub1bgM=
|
|
128
138
|
github.com/beorn7/perks v0.0.0-20160804104726-4c0e84591b9a/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
|
|
129
139
|
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
|
|
130
140
|
github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8=
|
|
@@ -440,8 +450,9 @@ github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/
|
|
|
440
450
|
github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
|
441
451
|
github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
|
442
452
|
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
|
443
|
-
github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ=
|
|
444
453
|
github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
|
454
|
+
github.com/google/go-cmp v0.5.7 h1:81/ik6ipDQS2aGcBfIN5dHDB36BwrStyeAQquSYCV4o=
|
|
455
|
+
github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE=
|
|
445
456
|
github.com/google/go-containerregistry v0.5.1/go.mod h1:Ct15B4yir3PLOP5jsy0GNeYVaIZs/MK/Jz5any1wFW0=
|
|
446
457
|
github.com/google/go-intervals v0.0.2 h1:FGrVEiUnTRKR8yE04qzXYaJMtnIYqobR5QbblK3ixcM=
|
|
447
458
|
github.com/google/go-intervals v0.0.2/go.mod h1:MkaR3LNRfeKLPmqgJYs4E66z5InYjmCjbbr4TQlcT6Y=
|
package/lambda/main.go
CHANGED
|
@@ -62,6 +62,15 @@ func handler(ctx context.Context, event cfn.Event) (physicalResourceID string, d
|
|
|
62
62
|
return physicalResourceID, data, err
|
|
63
63
|
}
|
|
64
64
|
|
|
65
|
+
srcCreds, err = parseCreds(srcCreds)
|
|
66
|
+
if err != nil {
|
|
67
|
+
return physicalResourceID, data, err
|
|
68
|
+
}
|
|
69
|
+
destCreds, err = parseCreds(destCreds)
|
|
70
|
+
if err != nil {
|
|
71
|
+
return physicalResourceID, data, err
|
|
72
|
+
}
|
|
73
|
+
|
|
65
74
|
log.Printf("SrcImage: %v DestImage: %v", srcImage, destImage)
|
|
66
75
|
|
|
67
76
|
srcRef, err := alltransports.ParseImageName(srcImage)
|
|
@@ -144,3 +153,16 @@ func getStrPropsDefault(m map[string]interface{}, k string, d string) (string, e
|
|
|
144
153
|
}
|
|
145
154
|
return "", fmt.Errorf("can't get %v", k)
|
|
146
155
|
}
|
|
156
|
+
|
|
157
|
+
func parseCreds(creds string) (string, error) {
|
|
158
|
+
credsType := GetCredsType(creds)
|
|
159
|
+
if creds == "" {
|
|
160
|
+
return "", nil
|
|
161
|
+
} else if (credsType == SECRET_ARN) || (credsType == SECRET_NAME) {
|
|
162
|
+
secret, err := GetSecret(creds)
|
|
163
|
+
return secret, err
|
|
164
|
+
} else if credsType == SECRET_TEXT {
|
|
165
|
+
return creds, nil
|
|
166
|
+
}
|
|
167
|
+
return "", fmt.Errorf("unkown creds type")
|
|
168
|
+
}
|
package/lambda/utils.go
CHANGED
|
@@ -13,8 +13,10 @@ import (
|
|
|
13
13
|
"strings"
|
|
14
14
|
"time"
|
|
15
15
|
|
|
16
|
+
"github.com/aws/aws-sdk-go-v2/aws"
|
|
16
17
|
"github.com/aws/aws-sdk-go-v2/config"
|
|
17
18
|
"github.com/aws/aws-sdk-go-v2/service/ecr"
|
|
19
|
+
"github.com/aws/aws-sdk-go-v2/service/secretsmanager"
|
|
18
20
|
"github.com/containers/image/v5/types"
|
|
19
21
|
)
|
|
20
22
|
|
|
@@ -147,3 +149,38 @@ func Dumps(v interface{}) string {
|
|
|
147
149
|
}
|
|
148
150
|
return string(bytes)
|
|
149
151
|
}
|
|
152
|
+
|
|
153
|
+
const (
|
|
154
|
+
SECRET_ARN = "SECRET_ARN"
|
|
155
|
+
SECRET_NAME = "SECRET_NAME"
|
|
156
|
+
SECRET_TEXT = "SECRET_TEXT"
|
|
157
|
+
)
|
|
158
|
+
|
|
159
|
+
func GetCredsType(s string) string {
|
|
160
|
+
if strings.HasPrefix(s, "arn:aws") {
|
|
161
|
+
return SECRET_ARN
|
|
162
|
+
} else if strings.Contains(s, ":") {
|
|
163
|
+
return SECRET_TEXT
|
|
164
|
+
} else {
|
|
165
|
+
return SECRET_NAME
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
func GetSecret(secretId string) (secret string, err error) {
|
|
170
|
+
cfg, err := config.LoadDefaultConfig(
|
|
171
|
+
context.TODO(),
|
|
172
|
+
)
|
|
173
|
+
log.Printf("get secret id: %s of region: %s", secretId, cfg.Region)
|
|
174
|
+
if err != nil {
|
|
175
|
+
return "", fmt.Errorf("api client configuration error: %v", err.Error())
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
client := secretsmanager.NewFromConfig(cfg)
|
|
179
|
+
resp, err := client.GetSecretValue(context.TODO(), &secretsmanager.GetSecretValueInput{
|
|
180
|
+
SecretId: aws.String(secretId),
|
|
181
|
+
})
|
|
182
|
+
if err != nil {
|
|
183
|
+
return "", fmt.Errorf("fetch secret value error: %v", err.Error())
|
|
184
|
+
}
|
|
185
|
+
return *resp.SecretString, nil
|
|
186
|
+
}
|
package/lambda/utils_test.go
CHANGED
|
@@ -23,3 +23,11 @@ func TestGetECRRegion(t *testing.T) {
|
|
|
23
23
|
GetECRRegion("docker://1234567890.dkr.ecr.cn-north-1.amazonaws.com/test:ubuntu"),
|
|
24
24
|
)
|
|
25
25
|
}
|
|
26
|
+
|
|
27
|
+
func TestGetCredsType(t *testing.T) {
|
|
28
|
+
assert.Equal(t, SECRET_ARN, GetCredsType("arn:aws:secretsmanager:us-west-2:00000:secret:fake-secret"))
|
|
29
|
+
assert.Equal(t, SECRET_ARN, GetCredsType("arn:aws-cn:secretsmanager:cn-north-1:00000:secret:fake-secret"))
|
|
30
|
+
assert.Equal(t, SECRET_NAME, GetCredsType("fake-secret"))
|
|
31
|
+
assert.Equal(t, SECRET_TEXT, GetCredsType("username:password"))
|
|
32
|
+
assert.Equal(t, SECRET_NAME, GetCredsType(""))
|
|
33
|
+
}
|
package/lib/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { aws_ec2 as ec2, aws_iam as iam } from 'aws-cdk-lib';
|
|
2
|
+
import { PolicyStatement, AddToPrincipalPolicyResult } from 'aws-cdk-lib/aws-iam';
|
|
2
3
|
import { Construct } from 'constructs';
|
|
3
4
|
/**
|
|
4
5
|
* @stability stable
|
|
@@ -84,7 +85,7 @@ export interface IImageName {
|
|
|
84
85
|
/**
|
|
85
86
|
* The credentials of the docker image.
|
|
86
87
|
*
|
|
87
|
-
* Format `user:
|
|
88
|
+
* Format `user:password` or `AWS Secrets Manager secret arn` or `AWS Secrets Manager secret name`
|
|
88
89
|
*
|
|
89
90
|
* @stability stable
|
|
90
91
|
*/
|
|
@@ -132,9 +133,14 @@ export declare class S3ArchiveName implements IImageName {
|
|
|
132
133
|
* @stability stable
|
|
133
134
|
*/
|
|
134
135
|
export declare class ECRDeployment extends Construct {
|
|
136
|
+
private handler;
|
|
135
137
|
/**
|
|
136
138
|
* @stability stable
|
|
137
139
|
*/
|
|
138
140
|
constructor(scope: Construct, id: string, props: ECRDeploymentProps);
|
|
141
|
+
/**
|
|
142
|
+
* @stability stable
|
|
143
|
+
*/
|
|
144
|
+
addToPrincipalPolicy(statement: PolicyStatement): AddToPrincipalPolicyResult;
|
|
139
145
|
private renderSingletonUuid;
|
|
140
146
|
}
|
package/lib/index.js
CHANGED
|
@@ -9,9 +9,12 @@ const child_process = require("child_process");
|
|
|
9
9
|
const path = require("path");
|
|
10
10
|
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
11
11
|
const constructs_1 = require("constructs");
|
|
12
|
+
const TRUTHY = ['true', true, 1, '1'];
|
|
12
13
|
function getCode(buildImage) {
|
|
13
14
|
const { CI, NO_PREBUILT_LAMBDA } = process.env;
|
|
14
|
-
|
|
15
|
+
const isCI = CI && TRUTHY.includes(CI);
|
|
16
|
+
const isNoPrebuilt = NO_PREBUILT_LAMBDA && TRUTHY.includes(NO_PREBUILT_LAMBDA);
|
|
17
|
+
if (!(isCI || isNoPrebuilt)) {
|
|
15
18
|
try {
|
|
16
19
|
console.log('Try to get prebuilt lambda');
|
|
17
20
|
const installScript = path.join(__dirname, '../lambda/install.js');
|
|
@@ -52,7 +55,7 @@ class DockerImageName {
|
|
|
52
55
|
}
|
|
53
56
|
exports.DockerImageName = DockerImageName;
|
|
54
57
|
_a = JSII_RTTI_SYMBOL_1;
|
|
55
|
-
DockerImageName[_a] = { fqn: "cdk-ecr-deployment.DockerImageName", version: "2.
|
|
58
|
+
DockerImageName[_a] = { fqn: "cdk-ecr-deployment.DockerImageName", version: "2.4.0" };
|
|
56
59
|
/**
|
|
57
60
|
* @stability stable
|
|
58
61
|
*/
|
|
@@ -78,7 +81,7 @@ class S3ArchiveName {
|
|
|
78
81
|
}
|
|
79
82
|
exports.S3ArchiveName = S3ArchiveName;
|
|
80
83
|
_b = JSII_RTTI_SYMBOL_1;
|
|
81
|
-
S3ArchiveName[_b] = { fqn: "cdk-ecr-deployment.S3ArchiveName", version: "2.
|
|
84
|
+
S3ArchiveName[_b] = { fqn: "cdk-ecr-deployment.S3ArchiveName", version: "2.4.0" };
|
|
82
85
|
/**
|
|
83
86
|
* @stability stable
|
|
84
87
|
*/
|
|
@@ -90,7 +93,7 @@ class ECRDeployment extends constructs_1.Construct {
|
|
|
90
93
|
var _d, _e;
|
|
91
94
|
super(scope, id);
|
|
92
95
|
const memoryLimit = (_d = props.memoryLimit) !== null && _d !== void 0 ? _d : 512;
|
|
93
|
-
|
|
96
|
+
this.handler = new aws_cdk_lib_1.aws_lambda.SingletonFunction(this, 'CustomResourceHandler', {
|
|
94
97
|
uuid: this.renderSingletonUuid(memoryLimit),
|
|
95
98
|
code: getCode((_e = props.buildImage) !== null && _e !== void 0 ? _e : 'public.ecr.aws/sam/build-go1.x:latest'),
|
|
96
99
|
runtime: aws_cdk_lib_1.aws_lambda.Runtime.GO_1_X,
|
|
@@ -103,7 +106,7 @@ class ECRDeployment extends constructs_1.Construct {
|
|
|
103
106
|
vpc: props.vpc,
|
|
104
107
|
vpcSubnets: props.vpcSubnets,
|
|
105
108
|
});
|
|
106
|
-
const handlerRole = handler.role;
|
|
109
|
+
const handlerRole = this.handler.role;
|
|
107
110
|
if (!handlerRole) {
|
|
108
111
|
throw new Error('lambda.SingletonFunction should have created a Role');
|
|
109
112
|
}
|
|
@@ -135,7 +138,7 @@ class ECRDeployment extends constructs_1.Construct {
|
|
|
135
138
|
resources: ['*'],
|
|
136
139
|
}));
|
|
137
140
|
new aws_cdk_lib_1.CustomResource(this, 'CustomResource', {
|
|
138
|
-
serviceToken: handler.functionArn,
|
|
141
|
+
serviceToken: this.handler.functionArn,
|
|
139
142
|
resourceType: 'Custom::CDKBucketDeployment',
|
|
140
143
|
properties: {
|
|
141
144
|
SrcImage: props.src.uri,
|
|
@@ -145,6 +148,16 @@ class ECRDeployment extends constructs_1.Construct {
|
|
|
145
148
|
},
|
|
146
149
|
});
|
|
147
150
|
}
|
|
151
|
+
/**
|
|
152
|
+
* @stability stable
|
|
153
|
+
*/
|
|
154
|
+
addToPrincipalPolicy(statement) {
|
|
155
|
+
const handlerRole = this.handler.role;
|
|
156
|
+
if (!handlerRole) {
|
|
157
|
+
throw new Error('lambda.SingletonFunction should have created a Role');
|
|
158
|
+
}
|
|
159
|
+
return handlerRole.addToPrincipalPolicy(statement);
|
|
160
|
+
}
|
|
148
161
|
renderSingletonUuid(memoryLimit) {
|
|
149
162
|
let uuid = 'bd07c930-edb9-4112-a20f-03f096f53666';
|
|
150
163
|
// if user specify a custom memory limit, define another singleton handler
|
|
@@ -161,5 +174,5 @@ class ECRDeployment extends constructs_1.Construct {
|
|
|
161
174
|
}
|
|
162
175
|
exports.ECRDeployment = ECRDeployment;
|
|
163
176
|
_c = JSII_RTTI_SYMBOL_1;
|
|
164
|
-
ECRDeployment[_c] = { fqn: "cdk-ecr-deployment.ECRDeployment", version: "2.
|
|
165
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxxRUFBcUU7QUFDckUsc0NBQXNDO0FBR3RDLCtDQUErQztBQUMvQyw2QkFBNkI7QUFDN0IsNkNBQW9IO0FBQ3BILDJDQUF1QztBQW9DdkMsU0FBUyxPQUFPLENBQUMsVUFBa0I7SUFDakMsTUFBTSxFQUFFLEVBQUUsRUFBRSxrQkFBa0IsRUFBRSxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUM7SUFDL0MsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLEVBQUU7UUFDL0gsSUFBSTtZQUNGLE9BQU8sQ0FBQyxHQUFHLENBQUMsNEJBQTRCLENBQUMsQ0FBQztZQUUxQyxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO1lBQ25FLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLGVBQWUsQ0FBQyxDQUFDO1lBQzNELGFBQWEsQ0FBQyxRQUFRLENBQUMsR0FBRyxPQUFPLENBQUMsS0FBSyxJQUFJLGFBQWEsSUFBSSxZQUFZLEVBQUUsQ0FBQyxDQUFDO1lBRTVFLE9BQU8sd0JBQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQzVDO1FBQUMsT0FBTyxHQUFHLEVBQUU7WUFDWixPQUFPLENBQUMsSUFBSSxDQUFDLGdDQUFnQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1NBQ3JEO0tBQ0Y7SUFF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QyxJQUFJLHFCQUFHLENBQUMsZUFBZSxDQUFDO1lBQ3ZELE1BQU0sRUFBRSxxQkFBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLO1lBQ3hCLE9BQU8sRUFBRTtnQkFDUCxjQUFjO2FBQ2Y7WUFDRCxTQUFTLEVBQUUsQ0FBQyxHQUFHLENBQUM7U0FDakIsQ0FBQyxDQUFDLENBQUM7UUFFSixJQUFJLDRCQUFjLENBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFO1lBQ3pDLFlBQVksRUFBRSxPQUFPLENBQUMsV0FBVztZQUNqQyxZQUFZLEVBQUUsNkJBQTZCO1lBQzNDLFVBQVUsRUFBRTtnQkFDVixRQUFRLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHO2dCQUN2QixRQUFRLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLO2dCQUN6QixTQUFTLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHO2dCQUN6QixTQUFTLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLO2FBQzVCO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLG1CQUFtQixDQUFDLFdBQW9CO1FBQzlDLElBQUksSUFBSSxHQUFHLHNDQUFzQyxDQUFDO1FBRWxELDBFQUEwRTtRQUMxRSwyRUFBMkU7UUFDM0UsNENBQTRDO1FBQzVDLElBQUksV0FBVyxFQUFFO1lBQ2YsSUFBSSxtQkFBSyxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsRUFBRTtnQkFDbkMsTUFBTSxJQUFJLEtBQUssQ0FBQyxtSEFBbUgsQ0FBQyxDQUFDO2FBQ3RJO1lBRUQsSUFBSSxJQUFJLElBQUksV0FBVyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUM7U0FDekM7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7O0FBN0VILHNDQThFQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuXG5pbXBvcnQgKiBhcyBjaGlsZF9wcm9jZXNzIGZyb20gJ2NoaWxkX3Byb2Nlc3MnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IGF3c19lYzIgYXMgZWMyLCBhd3NfaWFtIGFzIGlhbSwgYXdzX2xhbWJkYSBhcyBsYW1iZGEsIER1cmF0aW9uLCBDdXN0b21SZXNvdXJjZSwgVG9rZW4gfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcblxuZXhwb3J0IGludGVyZmFjZSBFQ1JEZXBsb3ltZW50UHJvcHMge1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IGJ1aWxkSW1hZ2U/OiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgc3JjOiBJSW1hZ2VOYW1lO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBkZXN0OiBJSW1hZ2VOYW1lO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBtZW1vcnlMaW1pdD86IG51bWJlcjtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHJvbGU/OiBpYW0uSVJvbGU7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSB2cGM/OiBlYzIuSVZwYztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgdnBjU3VibmV0cz86IGVjMi5TdWJuZXRTZWxlY3Rpb247XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBlbnZpcm9ubWVudD86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUltYWdlTmFtZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHVyaTogc3RyaW5nO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgY3JlZHM/OiBzdHJpbmc7XG59XG5cbmZ1bmN0aW9uIGdldENvZGUoYnVpbGRJbWFnZTogc3RyaW5nKTogbGFtYmRhLkFzc2V0Q29kZSB7XG4gIGNvbnN0IHsgQ0ksIE5PX1BSRUJVSUxUX0xBTUJEQSB9ID0gcHJvY2Vzcy5lbnY7XG4gIGlmICghKENJICYmIFsndHJ1ZScsIHRydWUsIDEsICcxJ10uaW5jbHVkZXMoQ0kpKSB8fCAoTk9fUFJFQlVJTFRfTEFNQkRBICYmIFsndHJ1ZScsIHRydWUsIDEsICcxJ10uaW5jbHVkZXMoTk9fUFJFQlVJTFRfTEFNQkRBKSkpIHtcbiAgICB0cnkge1xuICAgICAgY29uc29sZS5sb2coJ1RyeSB0byBnZXQgcHJlYnVpbHQgbGFtYmRhJyk7XG5cbiAgICAgIGNvbnN0IGluc3RhbGxTY3JpcHQgPSBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4vbGFtYmRhL2luc3RhbGwuanMnKTtcbiAgICAgIGNvbnN0IHByZWJ1aWx0UGF0aCA9IHBhdGguam9pbihfX2Rpcm5hbWUsICcuLi9sYW1iZGEvb3V0Jyk7XG4gICAgICBjaGlsZF9wcm9jZXNzLmV4ZWNTeW5jKGAke3Byb2Nlc3MuYXJndjB9ICR7aW5zdGFsbFNjcmlwdH0gJHtwcmVidWlsdFBhdGh9YCk7XG5cbiAgICAgIHJldHVybiBsYW1iZGEuQ29kZS5mcm9tQXNzZXQocHJlYnVpbHRQYXRoKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNvbnNvbGUud2FybihgQ2FuIG5vdCBnZXQgcHJlYnVpbHQgbGFtYmRhOiAke2Vycn1gKTtcbiAgICB9XG4gIH1cblxuICBjb25zb2xlLmxvZygnQnVpbGQgbGFtYmRhIGZyb20gc2NyYXRjaCcpO1xuXG4gIHJldHVybiBsYW1iZGEuQ29kZS5mcm9tRG9ja2VyQnVpbGQocGF0aC5qb2luKF9fZGlybmFtZSwgJy4uL2xhbWJkYScpLCB7XG4gICAgYnVpbGRBcmdzOiB7XG4gICAgICBidWlsZEltYWdlLFxuICAgIH0sXG4gIH0pO1xufVxuXG5leHBvcnQgY2xhc3MgRG9ja2VySW1hZ2VOYW1lIGltcGxlbWVudHMgSUltYWdlTmFtZSB7XG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcihwcml2YXRlIG5hbWU6IHN0cmluZywgcHVibGljIGNyZWRzPzogc3RyaW5nKSB7IH1cbiAgcHVibGljIGdldCB1cmkoKTogc3RyaW5nIHsgcmV0dXJuIGBkb2NrZXI6Ly8ke3RoaXMubmFtZX1gOyB9XG59XG5cbmV4cG9ydCBjbGFzcyBTM0FyY2hpdmVOYW1lIGltcGxlbWVudHMgSUltYWdlTmFtZSB7XG4gIHByaXZhdGUgbmFtZTogc3RyaW5nO1xuICBwdWJsaWMgY29uc3RydWN0b3IocDogc3RyaW5nLCByZWY/OiBzdHJpbmcsIHB1YmxpYyBjcmVkcz86IHN0cmluZykge1xuICAgIHRoaXMubmFtZSA9IHA7XG4gICAgaWYgKHJlZikge1xuICAgICAgdGhpcy5uYW1lICs9ICc6JyArIHJlZjtcbiAgICB9XG4gIH1cbiAgcHVibGljIGdldCB1cmkoKTogc3RyaW5nIHsgcmV0dXJuIGBzMzovLyR7dGhpcy5uYW1lfWA7IH1cbn1cblxuZXhwb3J0IGNsYXNzIEVDUkRlcGxveW1lbnQgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogRUNSRGVwbG95bWVudFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcbiAgICBjb25zdCBtZW1vcnlMaW1pdCA9IHByb3BzLm1lbW9yeUxpbWl0ID8/IDUxMjtcbiAgICBjb25zdCBoYW5kbGVyID0gbmV3IGxhbWJkYS5TaW5nbGV0b25GdW5jdGlvbih0aGlzLCAnQ3VzdG9tUmVzb3VyY2VIYW5kbGVyJywge1xuICAgICAgdXVpZDogdGhpcy5yZW5kZXJTaW5nbGV0b25VdWlkKG1lbW9yeUxpbWl0KSxcbiAgICAgIGNvZGU6IGdldENvZGUocHJvcHMuYnVpbGRJbWFnZSA/PyAncHVibGljLmVjci5hd3Mvc2FtL2J1aWxkLWdvMS54OmxhdGVzdCcpLFxuICAgICAgcnVudGltZTogbGFtYmRhLlJ1bnRpbWUuR09fMV9YLFxuICAgICAgaGFuZGxlcjogJ21haW4nLFxuICAgICAgZW52aXJvbm1lbnQ6IHByb3BzLmVudmlyb25tZW50LFxuICAgICAgbGFtYmRhUHVycG9zZTogJ0N1c3RvbTo6Q0RLRUNSRGVwbG95bWVudCcsXG4gICAgICB0aW1lb3V0OiBEdXJhdGlvbi5taW51dGVzKDE1KSxcbiAgICAgIHJvbGU6IHByb3BzLnJvbGUsXG4gICAgICBtZW1vcnlTaXplOiBtZW1vcnlMaW1pdCxcbiAgICAgIHZwYzogcHJvcHMudnBjLFxuICAgICAgdnBjU3VibmV0czogcHJvcHMudnBjU3VibmV0cyxcbiAgICB9KTtcblxuICAgIGNvbnN0IGhhbmRsZXJSb2xlID0gaGFuZGxlci5yb2xlO1xuICAgIGlmICghaGFuZGxlclJvbGUpIHsgdGhyb3cgbmV3IEVycm9yKCdsYW1iZGEuU2luZ2xldG9uRnVuY3Rpb24gc2hvdWxkIGhhdmUgY3JlYXRlZCBhIFJvbGUnKTsgfVxuXG4gICAgaGFuZGxlclJvbGUuYWRkVG9QcmluY2lwYWxQb2xpY3koXG4gICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGVmZmVjdDogaWFtLkVmZmVjdC5BTExPVyxcbiAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICdlY3I6R2V0QXV0aG9yaXphdGlvblRva2VuJyxcbiAgICAgICAgICAnZWNyOkJhdGNoQ2hlY2tMYXllckF2YWlsYWJpbGl0eScsXG4gICAgICAgICAgJ2VjcjpHZXREb3dubG9hZFVybEZvckxheWVyJyxcbiAgICAgICAgICAnZWNyOkdldFJlcG9zaXRvcnlQb2xpY3knLFxuICAgICAgICAgICdlY3I6RGVzY3JpYmVSZXBvc2l0b3JpZXMnLFxuICAgICAgICAgICdlY3I6TGlzdEltYWdlcycsXG4gICAgICAgICAgJ2VjcjpEZXNjcmliZUltYWdlcycsXG4gICAgICAgICAgJ2VjcjpCYXRjaEdldEltYWdlJyxcbiAgICAgICAgICAnZWNyOkxpc3RUYWdzRm9yUmVzb3VyY2UnLFxuICAgICAgICAgICdlY3I6RGVzY3JpYmVJbWFnZVNjYW5GaW5kaW5ncycsXG4gICAgICAgICAgJ2VjcjpJbml0aWF0ZUxheWVyVXBsb2FkJyxcbiAgICAgICAgICAnZWNyOlVwbG9hZExheWVyUGFydCcsXG4gICAgICAgICAgJ2VjcjpDb21wbGV0ZUxheWVyVXBsb2FkJyxcbiAgICAgICAgICAnZWNyOlB1dEltYWdlJyxcbiAgICAgICAgXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbJyonXSxcbiAgICAgIH0pKTtcbiAgICBoYW5kbGVyUm9sZS5hZGRUb1ByaW5jaXBhbFBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICBlZmZlY3Q6IGlhbS5FZmZlY3QuQUxMT1csXG4gICAgICBhY3Rpb25zOiBbXG4gICAgICAgICdzMzpHZXRPYmplY3QnLFxuICAgICAgXSxcbiAgICAgIHJlc291cmNlczogWycqJ10sXG4gICAgfSkpO1xuXG4gICAgbmV3IEN1c3RvbVJlc291cmNlKHRoaXMsICdDdXN0b21SZXNvdXJjZScsIHtcbiAgICAgIHNlcnZpY2VUb2tlbjogaGFuZGxlci5mdW5jdGlvbkFybixcbiAgICAgIHJlc291cmNlVHlwZTogJ0N1c3RvbTo6Q0RLQnVja2V0RGVwbG95bWVudCcsXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIFNyY0ltYWdlOiBwcm9wcy5zcmMudXJpLFxuICAgICAgICBTcmNDcmVkczogcHJvcHMuc3JjLmNyZWRzLFxuICAgICAgICBEZXN0SW1hZ2U6IHByb3BzLmRlc3QudXJpLFxuICAgICAgICBEZXN0Q3JlZHM6IHByb3BzLmRlc3QuY3JlZHMsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXJTaW5nbGV0b25VdWlkKG1lbW9yeUxpbWl0PzogbnVtYmVyKSB7XG4gICAgbGV0IHV1aWQgPSAnYmQwN2M5MzAtZWRiOS00MTEyLWEyMGYtMDNmMDk2ZjUzNjY2JztcblxuICAgIC8vIGlmIHVzZXIgc3BlY2lmeSBhIGN1c3RvbSBtZW1vcnkgbGltaXQsIGRlZmluZSBhbm90aGVyIHNpbmdsZXRvbiBoYW5kbGVyXG4gICAgLy8gd2l0aCB0aGlzIGNvbmZpZ3VyYXRpb24uIG90aGVyd2lzZSwgaXQgd29uJ3QgYmUgcG9zc2libGUgdG8gdXNlIG11bHRpcGxlXG4gICAgLy8gY29uZmlndXJhdGlvbnMgc2luY2Ugd2UgaGF2ZSBhIHNpbmdsZXRvbi5cbiAgICBpZiAobWVtb3J5TGltaXQpIHtcbiAgICAgIGlmIChUb2tlbi5pc1VucmVzb2x2ZWQobWVtb3J5TGltaXQpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQ2FuXFwndCB1c2UgdG9rZW5zIHdoZW4gc3BlY2lmeWluZyBcIm1lbW9yeUxpbWl0XCIgc2luY2Ugd2UgdXNlIGl0IHRvIGlkZW50aWZ5IHRoZSBzaW5nbGV0b24gY3VzdG9tIHJlc291cmNlIGhhbmRsZXInKTtcbiAgICAgIH1cblxuICAgICAgdXVpZCArPSBgLSR7bWVtb3J5TGltaXQudG9TdHJpbmcoKX1NaUJgO1xuICAgIH1cblxuICAgIHJldHVybiB1dWlkO1xuICB9XG59XG4iXX0=
|
|
177
|
+
ECRDeployment[_c] = { fqn: "cdk-ecr-deployment.ECRDeployment", version: "2.4.0" };
|
|
178
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxxRUFBcUU7QUFDckUsc0NBQXNDO0FBR3RDLCtDQUErQztBQUMvQyw2QkFBNkI7QUFDN0IsNkNBQW9IO0FBRXBILDJDQUF1QztBQW9DdkMsTUFBTSxNQUFNLEdBQUcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUV0QyxTQUFTLE9BQU8sQ0FBQyxVQUFrQjtJQUNqQyxNQUFNLEVBQUUsRUFBRSxFQUFFLGtCQUFrQixFQUFFLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQztJQUMvQyxNQUFNLElBQUksR0FBRyxFQUFFLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN2QyxNQUFNLFlBQVksR0FBRyxrQkFBa0IsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFFL0UsSUFBSSxDQUFDLENBQUMsSUFBSSxJQUFJLFlBQVksQ0FBQyxFQUFFO1FBQzNCLElBQUk7WUFDRixPQUFPLENBQUMsR0FBRyxDQUFDLDRCQUE0QixDQUFDLENBQUM7WUFFMUMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsc0JBQXNCLENBQUMsQ0FBQztZQUNuRSxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxlQUFlLENBQUMsQ0FBQztZQUMzRCxhQUFhLENBQUMsUUFBUSxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssSUFBSSxhQUFhLElBQUksWUFBWSxFQUFFLENBQUMsQ0FBQztZQUU1RSxPQUFPLHdCQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUM1QztRQUFDLE9BQU8sR0FBRyxFQUFFO1lBQ1osT0FBTyxDQUFDLElBQUksQ0FB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QUU7Z0JBQ25DLE1BQU0sSUFBSSxLQUFLLENBQUMsbUhBQW1ILENBQUMsQ0FBQzthQUN0STtZQUVELElBQUksSUFBSSxJQUFJLFdBQVcsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDO1NBQ3pDO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOztBQXRGSCxzQ0F1RkMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cblxuaW1wb3J0ICogYXMgY2hpbGRfcHJvY2VzcyBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBhd3NfZWMyIGFzIGVjMiwgYXdzX2lhbSBhcyBpYW0sIGF3c19sYW1iZGEgYXMgbGFtYmRhLCBEdXJhdGlvbiwgQ3VzdG9tUmVzb3VyY2UsIFRva2VuIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgUG9saWN5U3RhdGVtZW50LCBBZGRUb1ByaW5jaXBhbFBvbGljeVJlc3VsdCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRUNSRGVwbG95bWVudFByb3BzIHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSBidWlsZEltYWdlPzogc3RyaW5nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHNyYzogSUltYWdlTmFtZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgZGVzdDogSUltYWdlTmFtZTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgbWVtb3J5TGltaXQ/OiBudW1iZXI7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSByb2xlPzogaWFtLklSb2xlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgdnBjPzogZWMyLklWcGM7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHJlYWRvbmx5IHZwY1N1Ym5ldHM/OiBlYzIuU3VibmV0U2VsZWN0aW9uO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgcmVhZG9ubHkgZW52aXJvbm1lbnQ/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElJbWFnZU5hbWUge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICByZWFkb25seSB1cmk6IHN0cmluZztcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgY3JlZHM/OiBzdHJpbmc7XG59XG5cbmNvbnN0IFRSVVRIWSA9IFsndHJ1ZScsIHRydWUsIDEsICcxJ107XG5cbmZ1bmN0aW9uIGdldENvZGUoYnVpbGRJbWFnZTogc3RyaW5nKTogbGFtYmRhLkFzc2V0Q29kZSB7XG4gIGNvbnN0IHsgQ0ksIE5PX1BSRUJVSUxUX0xBTUJEQSB9ID0gcHJvY2Vzcy5lbnY7XG4gIGNvbnN0IGlzQ0kgPSBDSSAmJiBUUlVUSFkuaW5jbHVkZXMoQ0kpO1xuICBjb25zdCBpc05vUHJlYnVpbHQgPSBOT19QUkVCVUlMVF9MQU1CREEgJiYgVFJVVEhZLmluY2x1ZGVzKE5PX1BSRUJVSUxUX0xBTUJEQSk7XG5cbiAgaWYgKCEoaXNDSSB8fCBpc05vUHJlYnVpbHQpKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnNvbGUubG9nKCdUcnkgdG8gZ2V0IHByZWJ1aWx0IGxhbWJkYScpO1xuXG4gICAgICBjb25zdCBpbnN0YWxsU2NyaXB0ID0gcGF0aC5qb2luKF9fZGlybmFtZSwgJy4uL2xhbWJkYS9pbnN0YWxsLmpzJyk7XG4gICAgICBjb25zdCBwcmVidWlsdFBhdGggPSBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4vbGFtYmRhL291dCcpO1xuICAgICAgY2hpbGRfcHJvY2Vzcy5leGVjU3luYyhgJHtwcm9jZXNzLmFyZ3YwfSAke2luc3RhbGxTY3JpcHR9ICR7cHJlYnVpbHRQYXRofWApO1xuXG4gICAgICByZXR1cm4gbGFtYmRhLkNvZGUuZnJvbUFzc2V0KHByZWJ1aWx0UGF0aCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjb25zb2xlLndhcm4oYENhbiBub3QgZ2V0IHByZWJ1aWx0IGxhbWJkYTogJHtlcnJ9YCk7XG4gICAgfVxuICB9XG5cbiAgY29uc29sZS5sb2coJ0J1aWxkIGxhbWJkYSBmcm9tIHNjcmF0Y2gnKTtcblxuICByZXR1cm4gbGFtYmRhLkNvZGUuZnJvbURvY2tlckJ1aWxkKHBhdGguam9pbihfX2Rpcm5hbWUsICcuLi9sYW1iZGEnKSwge1xuICAgIGJ1aWxkQXJnczoge1xuICAgICAgYnVpbGRJbWFnZSxcbiAgICB9LFxuICB9KTtcbn1cblxuZXhwb3J0IGNsYXNzIERvY2tlckltYWdlTmFtZSBpbXBsZW1lbnRzIElJbWFnZU5hbWUge1xuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSBuYW1lOiBzdHJpbmcsIHB1YmxpYyBjcmVkcz86IHN0cmluZykgeyB9XG4gIHB1YmxpYyBnZXQgdXJpKCk6IHN0cmluZyB7IHJldHVybiBgZG9ja2VyOi8vJHt0aGlzLm5hbWV9YDsgfVxufVxuXG5leHBvcnQgY2xhc3MgUzNBcmNoaXZlTmFtZSBpbXBsZW1lbnRzIElJbWFnZU5hbWUge1xuICBwcml2YXRlIG5hbWU6IHN0cmluZztcbiAgcHVibGljIGNvbnN0cnVjdG9yKHA6IHN0cmluZywgcmVmPzogc3RyaW5nLCBwdWJsaWMgY3JlZHM/OiBzdHJpbmcpIHtcbiAgICB0aGlzLm5hbWUgPSBwO1xuICAgIGlmIChyZWYpIHtcbiAgICAgIHRoaXMubmFtZSArPSAnOicgKyByZWY7XG4gICAgfVxuICB9XG4gIHB1YmxpYyBnZXQgdXJpKCk6IHN0cmluZyB7IHJldHVybiBgczM6Ly8ke3RoaXMubmFtZX1gOyB9XG59XG5cbmV4cG9ydCBjbGFzcyBFQ1JEZXBsb3ltZW50IGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcHJpdmF0ZSBoYW5kbGVyOiBsYW1iZGEuU2luZ2xldG9uRnVuY3Rpb247XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEVDUkRlcGxveW1lbnRQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgY29uc3QgbWVtb3J5TGltaXQgPSBwcm9wcy5tZW1vcnlMaW1pdCA/PyA1MTI7XG4gICAgdGhpcy5oYW5kbGVyID0gbmV3IGxhbWJkYS5TaW5nbGV0b25GdW5jdGlvbih0aGlzLCAnQ3VzdG9tUmVzb3VyY2VIYW5kbGVyJywge1xuICAgICAgdXVpZDogdGhpcy5yZW5kZXJTaW5nbGV0b25VdWlkKG1lbW9yeUxpbWl0KSxcbiAgICAgIGNvZGU6IGdldENvZGUocHJvcHMuYnVpbGRJbWFnZSA/PyAncHVibGljLmVjci5hd3Mvc2FtL2J1aWxkLWdvMS54OmxhdGVzdCcpLFxuICAgICAgcnVudGltZTogbGFtYmRhLlJ1bnRpbWUuR09fMV9YLFxuICAgICAgaGFuZGxlcjogJ21haW4nLFxuICAgICAgZW52aXJvbm1lbnQ6IHByb3BzLmVudmlyb25tZW50LFxuICAgICAgbGFtYmRhUHVycG9zZTogJ0N1c3RvbTo6Q0RLRUNSRGVwbG95bWVudCcsXG4gICAgICB0aW1lb3V0OiBEdXJhdGlvbi5taW51dGVzKDE1KSxcbiAgICAgIHJvbGU6IHByb3BzLnJvbGUsXG4gICAgICBtZW1vcnlTaXplOiBtZW1vcnlMaW1pdCxcbiAgICAgIHZwYzogcHJvcHMudnBjLFxuICAgICAgdnBjU3VibmV0czogcHJvcHMudnBjU3VibmV0cyxcbiAgICB9KTtcblxuICAgIGNvbnN0IGhhbmRsZXJSb2xlID0gdGhpcy5oYW5kbGVyLnJvbGU7XG4gICAgaWYgKCFoYW5kbGVyUm9sZSkgeyB0aHJvdyBuZXcgRXJyb3IoJ2xhbWJkYS5TaW5nbGV0b25GdW5jdGlvbiBzaG91bGQgaGF2ZSBjcmVhdGVkIGEgUm9sZScpOyB9XG5cbiAgICBoYW5kbGVyUm9sZS5hZGRUb1ByaW5jaXBhbFBvbGljeShcbiAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgZWZmZWN0OiBpYW0uRWZmZWN0LkFMTE9XLFxuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgJ2VjcjpHZXRBdXRob3JpemF0aW9uVG9rZW4nLFxuICAgICAgICAgICdlY3I6QmF0Y2hDaGVja0xheWVyQXZhaWxhYmlsaXR5JyxcbiAgICAgICAgICAnZWNyOkdldERvd25sb2FkVXJsRm9yTGF5ZXInLFxuICAgICAgICAgICdlY3I6R2V0UmVwb3NpdG9yeVBvbGljeScsXG4gICAgICAgICAgJ2VjcjpEZXNjcmliZVJlcG9zaXRvcmllcycsXG4gICAgICAgICAgJ2VjcjpMaXN0SW1hZ2VzJyxcbiAgICAgICAgICAnZWNyOkRlc2NyaWJlSW1hZ2VzJyxcbiAgICAgICAgICAnZWNyOkJhdGNoR2V0SW1hZ2UnLFxuICAgICAgICAgICdlY3I6TGlzdFRhZ3NGb3JSZXNvdXJjZScsXG4gICAgICAgICAgJ2VjcjpEZXNjcmliZUltYWdlU2NhbkZpbmRpbmdzJyxcbiAgICAgICAgICAnZWNyOkluaXRpYXRlTGF5ZXJVcGxvYWQnLFxuICAgICAgICAgICdlY3I6VXBsb2FkTGF5ZXJQYXJ0JyxcbiAgICAgICAgICAnZWNyOkNvbXBsZXRlTGF5ZXJVcGxvYWQnLFxuICAgICAgICAgICdlY3I6UHV0SW1hZ2UnLFxuICAgICAgICBdLFxuICAgICAgICByZXNvdXJjZXM6IFsnKiddLFxuICAgICAgfSkpO1xuICAgIGhhbmRsZXJSb2xlLmFkZFRvUHJpbmNpcGFsUG9saWN5KG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgIGVmZmVjdDogaWFtLkVmZmVjdC5BTExPVyxcbiAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgJ3MzOkdldE9iamVjdCcsXG4gICAgICBdLFxuICAgICAgcmVzb3VyY2VzOiBbJyonXSxcbiAgICB9KSk7XG5cbiAgICBuZXcgQ3VzdG9tUmVzb3VyY2UodGhpcywgJ0N1c3RvbVJlc291cmNlJywge1xuICAgICAgc2VydmljZVRva2VuOiB0aGlzLmhhbmRsZXIuZnVuY3Rpb25Bcm4sXG4gICAgICByZXNvdXJjZVR5cGU6ICdDdXN0b206OkNES0J1Y2tldERlcGxveW1lbnQnLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBTcmNJbWFnZTogcHJvcHMuc3JjLnVyaSxcbiAgICAgICAgU3JjQ3JlZHM6IHByb3BzLnNyYy5jcmVkcyxcbiAgICAgICAgRGVzdEltYWdlOiBwcm9wcy5kZXN0LnVyaSxcbiAgICAgICAgRGVzdENyZWRzOiBwcm9wcy5kZXN0LmNyZWRzLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRUb1ByaW5jaXBhbFBvbGljeShzdGF0ZW1lbnQ6IFBvbGljeVN0YXRlbWVudCk6IEFkZFRvUHJpbmNpcGFsUG9saWN5UmVzdWx0IHtcbiAgICBjb25zdCBoYW5kbGVyUm9sZSA9IHRoaXMuaGFuZGxlci5yb2xlO1xuICAgIGlmICghaGFuZGxlclJvbGUpIHsgdGhyb3cgbmV3IEVycm9yKCdsYW1iZGEuU2luZ2xldG9uRnVuY3Rpb24gc2hvdWxkIGhhdmUgY3JlYXRlZCBhIFJvbGUnKTsgfVxuXG4gICAgcmV0dXJuIGhhbmRsZXJSb2xlLmFkZFRvUHJpbmNpcGFsUG9saWN5KHN0YXRlbWVudCk7XG4gIH1cblxuICBwcml2YXRlIHJlbmRlclNpbmdsZXRvblV1aWQobWVtb3J5TGltaXQ/OiBudW1iZXIpIHtcbiAgICBsZXQgdXVpZCA9ICdiZDA3YzkzMC1lZGI5LTQxMTItYTIwZi0wM2YwOTZmNTM2NjYnO1xuXG4gICAgLy8gaWYgdXNlciBzcGVjaWZ5IGEgY3VzdG9tIG1lbW9yeSBsaW1pdCwgZGVmaW5lIGFub3RoZXIgc2luZ2xldG9uIGhhbmRsZXJcbiAgICAvLyB3aXRoIHRoaXMgY29uZmlndXJhdGlvbi4gb3RoZXJ3aXNlLCBpdCB3b24ndCBiZSBwb3NzaWJsZSB0byB1c2UgbXVsdGlwbGVcbiAgICAvLyBjb25maWd1cmF0aW9ucyBzaW5jZSB3ZSBoYXZlIGEgc2luZ2xldG9uLlxuICAgIGlmIChtZW1vcnlMaW1pdCkge1xuICAgICAgaWYgKFRva2VuLmlzVW5yZXNvbHZlZChtZW1vcnlMaW1pdCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5cXCd0IHVzZSB0b2tlbnMgd2hlbiBzcGVjaWZ5aW5nIFwibWVtb3J5TGltaXRcIiBzaW5jZSB3ZSB1c2UgaXQgdG8gaWRlbnRpZnkgdGhlIHNpbmdsZXRvbiBjdXN0b20gcmVzb3VyY2UgaGFuZGxlcicpO1xuICAgICAgfVxuXG4gICAgICB1dWlkICs9IGAtJHttZW1vcnlMaW1pdC50b1N0cmluZygpfU1pQmA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHV1aWQ7XG4gIH1cbn1cbiJdfQ==
|
package/package.json
CHANGED
package/releasetag.txt
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
v2.
|
|
1
|
+
v2.4.0
|
package/version.txt
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
2.
|
|
1
|
+
2.4.0
|