cdk-ecr-deployment 3.0.67 → 3.0.68

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.
Files changed (27) hide show
  1. package/.jsii +56 -20
  2. package/.jsii.tabl.json +1 -1
  3. package/API.md +4 -0
  4. package/lib/index.d.ts +16 -4
  5. package/lib/index.js +6 -6
  6. package/node_modules/@types/cacheable-request/node_modules/@types/node/README.md +1 -1
  7. package/node_modules/@types/cacheable-request/node_modules/@types/node/dns/promises.d.ts +25 -23
  8. package/node_modules/@types/cacheable-request/node_modules/@types/node/dns.d.ts +23 -23
  9. package/node_modules/@types/cacheable-request/node_modules/@types/node/events.d.ts +39 -1
  10. package/node_modules/@types/cacheable-request/node_modules/@types/node/globals.d.ts +1 -0
  11. package/node_modules/@types/cacheable-request/node_modules/@types/node/package.json +2 -2
  12. package/node_modules/@types/cacheable-request/node_modules/@types/node/worker_threads.d.ts +3 -0
  13. package/node_modules/@types/keyv/node_modules/@types/node/README.md +1 -1
  14. package/node_modules/@types/keyv/node_modules/@types/node/dns/promises.d.ts +25 -23
  15. package/node_modules/@types/keyv/node_modules/@types/node/dns.d.ts +23 -23
  16. package/node_modules/@types/keyv/node_modules/@types/node/events.d.ts +39 -1
  17. package/node_modules/@types/keyv/node_modules/@types/node/globals.d.ts +1 -0
  18. package/node_modules/@types/keyv/node_modules/@types/node/package.json +2 -2
  19. package/node_modules/@types/keyv/node_modules/@types/node/worker_threads.d.ts +3 -0
  20. package/node_modules/@types/responselike/node_modules/@types/node/README.md +1 -1
  21. package/node_modules/@types/responselike/node_modules/@types/node/dns/promises.d.ts +25 -23
  22. package/node_modules/@types/responselike/node_modules/@types/node/dns.d.ts +23 -23
  23. package/node_modules/@types/responselike/node_modules/@types/node/events.d.ts +39 -1
  24. package/node_modules/@types/responselike/node_modules/@types/node/globals.d.ts +1 -0
  25. package/node_modules/@types/responselike/node_modules/@types/node/package.json +2 -2
  26. package/node_modules/@types/responselike/node_modules/@types/node/worker_threads.d.ts +3 -0
  27. package/package.json +2 -2
package/.jsii CHANGED
@@ -3840,7 +3840,7 @@
3840
3840
  },
3841
3841
  "locationInModule": {
3842
3842
  "filename": "src/index.ts",
3843
- "line": 119
3843
+ "line": 133
3844
3844
  },
3845
3845
  "parameters": [
3846
3846
  {
@@ -3868,7 +3868,7 @@
3868
3868
  "kind": "class",
3869
3869
  "locationInModule": {
3870
3870
  "filename": "src/index.ts",
3871
- "line": 118
3871
+ "line": 132
3872
3872
  },
3873
3873
  "name": "DockerImageName",
3874
3874
  "properties": [
@@ -3881,7 +3881,7 @@
3881
3881
  "immutable": true,
3882
3882
  "locationInModule": {
3883
3883
  "filename": "src/index.ts",
3884
- "line": 120
3884
+ "line": 134
3885
3885
  },
3886
3886
  "name": "uri",
3887
3887
  "overrides": "cdk-ecr-deployment.IImageName",
@@ -3897,7 +3897,7 @@
3897
3897
  },
3898
3898
  "locationInModule": {
3899
3899
  "filename": "src/index.ts",
3900
- "line": 119
3900
+ "line": 133
3901
3901
  },
3902
3902
  "name": "creds",
3903
3903
  "optional": true,
@@ -3922,7 +3922,7 @@
3922
3922
  },
3923
3923
  "locationInModule": {
3924
3924
  "filename": "src/index.ts",
3925
- "line": 137
3925
+ "line": 151
3926
3926
  },
3927
3927
  "parameters": [
3928
3928
  {
@@ -3948,7 +3948,7 @@
3948
3948
  "kind": "class",
3949
3949
  "locationInModule": {
3950
3950
  "filename": "src/index.ts",
3951
- "line": 134
3951
+ "line": 148
3952
3952
  },
3953
3953
  "methods": [
3954
3954
  {
@@ -3957,7 +3957,7 @@
3957
3957
  },
3958
3958
  "locationInModule": {
3959
3959
  "filename": "src/index.ts",
3960
- "line": 199
3960
+ "line": 213
3961
3961
  },
3962
3962
  "name": "addToPrincipalPolicy",
3963
3963
  "parameters": [
@@ -4027,7 +4027,7 @@
4027
4027
  {
4028
4028
  "abstract": true,
4029
4029
  "docs": {
4030
- "default": "public.ecr.aws/sam/build-go1.x:latest",
4030
+ "default": "- public.ecr.aws/sam/build-go1.x:latest",
4031
4031
  "remarks": "Might be needed for local build if all images need to come from own registry.\n\nNote that image should use yum as a package manager and have golang available.",
4032
4032
  "stability": "stable",
4033
4033
  "summary": "Image to use to build Golang lambda for custom resource, if download fails or is not wanted."
@@ -4052,7 +4052,7 @@
4052
4052
  "immutable": true,
4053
4053
  "locationInModule": {
4054
4054
  "filename": "src/index.ts",
4055
- "line": 81
4055
+ "line": 95
4056
4056
  },
4057
4057
  "name": "environment",
4058
4058
  "optional": true,
@@ -4068,7 +4068,43 @@
4068
4068
  {
4069
4069
  "abstract": true,
4070
4070
  "docs": {
4071
- "default": "512",
4071
+ "default": "- bootstrap",
4072
+ "stability": "stable",
4073
+ "summary": "The name of the lambda handler."
4074
+ },
4075
+ "immutable": true,
4076
+ "locationInModule": {
4077
+ "filename": "src/index.ts",
4078
+ "line": 90
4079
+ },
4080
+ "name": "lambdaHandler",
4081
+ "optional": true,
4082
+ "type": {
4083
+ "primitive": "string"
4084
+ }
4085
+ },
4086
+ {
4087
+ "abstract": true,
4088
+ "docs": {
4089
+ "default": "- lambda.Runtime.PROVIDED_AL2023",
4090
+ "stability": "stable",
4091
+ "summary": "The lambda function runtime environment."
4092
+ },
4093
+ "immutable": true,
4094
+ "locationInModule": {
4095
+ "filename": "src/index.ts",
4096
+ "line": 83
4097
+ },
4098
+ "name": "lambdaRuntime",
4099
+ "optional": true,
4100
+ "type": {
4101
+ "fqn": "aws-cdk-lib.aws_lambda.Runtime"
4102
+ }
4103
+ },
4104
+ {
4105
+ "abstract": true,
4106
+ "docs": {
4107
+ "default": "- 512",
4072
4108
  "remarks": "If you are deploying large files, you will need to increase this number\naccordingly.",
4073
4109
  "stability": "stable",
4074
4110
  "summary": "The amount of memory (in MiB) to allocate to the AWS Lambda function which replicates the files from the CDK bucket to the destination bucket."
@@ -4129,7 +4165,7 @@
4129
4165
  {
4130
4166
  "abstract": true,
4131
4167
  "docs": {
4132
- "default": "None",
4168
+ "default": "- None",
4133
4169
  "stability": "stable",
4134
4170
  "summary": "The VPC network to place the deployment lambda handler in."
4135
4171
  },
@@ -4175,7 +4211,7 @@
4175
4211
  "kind": "interface",
4176
4212
  "locationInModule": {
4177
4213
  "filename": "src/index.ts",
4178
- "line": 84
4214
+ "line": 98
4179
4215
  },
4180
4216
  "name": "IImageName",
4181
4217
  "properties": [
@@ -4189,7 +4225,7 @@
4189
4225
  "immutable": true,
4190
4226
  "locationInModule": {
4191
4227
  "filename": "src/index.ts",
4192
- "line": 90
4228
+ "line": 104
4193
4229
  },
4194
4230
  "name": "uri",
4195
4231
  "type": {
@@ -4205,7 +4241,7 @@
4205
4241
  },
4206
4242
  "locationInModule": {
4207
4243
  "filename": "src/index.ts",
4208
- "line": 95
4244
+ "line": 109
4209
4245
  },
4210
4246
  "name": "creds",
4211
4247
  "optional": true,
@@ -4228,7 +4264,7 @@
4228
4264
  },
4229
4265
  "locationInModule": {
4230
4266
  "filename": "src/index.ts",
4231
- "line": 125
4267
+ "line": 139
4232
4268
  },
4233
4269
  "parameters": [
4234
4270
  {
@@ -4263,7 +4299,7 @@
4263
4299
  "kind": "class",
4264
4300
  "locationInModule": {
4265
4301
  "filename": "src/index.ts",
4266
- "line": 123
4302
+ "line": 137
4267
4303
  },
4268
4304
  "name": "S3ArchiveName",
4269
4305
  "properties": [
@@ -4276,7 +4312,7 @@
4276
4312
  "immutable": true,
4277
4313
  "locationInModule": {
4278
4314
  "filename": "src/index.ts",
4279
- "line": 131
4315
+ "line": 145
4280
4316
  },
4281
4317
  "name": "uri",
4282
4318
  "overrides": "cdk-ecr-deployment.IImageName",
@@ -4292,7 +4328,7 @@
4292
4328
  },
4293
4329
  "locationInModule": {
4294
4330
  "filename": "src/index.ts",
4295
- "line": 125
4331
+ "line": 139
4296
4332
  },
4297
4333
  "name": "creds",
4298
4334
  "optional": true,
@@ -4305,6 +4341,6 @@
4305
4341
  "symbolId": "src/index:S3ArchiveName"
4306
4342
  }
4307
4343
  },
4308
- "version": "3.0.67",
4309
- "fingerprint": "k8VaAHgbL01P40MsvM/TxrM16ZtZ5hTfPy2XseJoJ2Q="
4344
+ "version": "3.0.68",
4345
+ "fingerprint": "cIiRzouasa/VXo+X4O78eybX3M2Rjk8Y94d31KM9v60="
4310
4346
  }
package/.jsii.tabl.json CHANGED
@@ -1 +1 @@
1
- {"version":"2","toolVersion":"5.4.21","snippets":{"33850328020507963bc7787401a169bb06e49f6132425a6d1529815c1554c645":{"translations":{"python":{"source":"from aws_cdk.aws_ecr_assets import DockerImageAsset\n\n\nimage = DockerImageAsset(self, \"CDKDockerImage\",\n directory=path.join(__dirname, \"docker\")\n)\n\n# Copy from cdk docker image asset to another ECR.\necrdeploy.ECRDeployment(self, \"DeployDockerImage1\",\n src=ecrdeploy.DockerImageName(image.image_uri),\n dest=ecrdeploy.DockerImageName(f\"{cdk.Aws.ACCOUNT_ID}.dkr.ecr.us-west-2.amazonaws.com/my-nginx:latest\")\n)\n\n# Copy from docker registry to ECR.\necrdeploy.ECRDeployment(self, \"DeployDockerImage2\",\n src=ecrdeploy.DockerImageName(\"nginx:latest\"),\n dest=ecrdeploy.DockerImageName(f\"{cdk.Aws.ACCOUNT_ID}.dkr.ecr.us-west-2.amazonaws.com/my-nginx2:latest\")\n)\n\n# Copy from private docker registry to ECR.\n# The format of secret in aws secrets manager must be plain text! e.g. <username>:<password>\necrdeploy.ECRDeployment(self, \"DeployDockerImage3\",\n src=ecrdeploy.DockerImageName(\"javacs3/nginx:latest\", \"username:password\"),\n # src: new ecrdeploy.DockerImageName('javacs3/nginx:latest', 'aws-secrets-manager-secret-name'),\n # src: new ecrdeploy.DockerImageName('javacs3/nginx:latest', 'arn:aws:secretsmanager:us-west-2:000000000000:secret:id'),\n dest=ecrdeploy.DockerImageName(f\"{cdk.Aws.ACCOUNT_ID}.dkr.ecr.us-west-2.amazonaws.com/my-nginx3:latest\")\n).add_to_principal_policy(iam.PolicyStatement(\n effect=iam.Effect.ALLOW,\n actions=[\"secretsmanager:GetSecretValue\"\n ],\n resources=[\"*\"]\n))","version":"2"},"csharp":{"source":"using Amazon.CDK.AWS.Ecr.Assets;\n\n\nvar image = new DockerImageAsset(this, \"CDKDockerImage\", new DockerImageAssetProps {\n Directory = Join(__dirname, \"docker\")\n});\n\n// Copy from cdk docker image asset to another ECR.\n// Copy from cdk docker image asset to another ECR.\nnew ECRDeployment(this, \"DeployDockerImage1\", new ECRDeploymentProps {\n Src = new DockerImageName(image.ImageUri),\n Dest = new DockerImageName($\"{cdk.Aws.ACCOUNT_ID}.dkr.ecr.us-west-2.amazonaws.com/my-nginx:latest\")\n});\n\n// Copy from docker registry to ECR.\n// Copy from docker registry to ECR.\nnew ECRDeployment(this, \"DeployDockerImage2\", new ECRDeploymentProps {\n Src = new DockerImageName(\"nginx:latest\"),\n Dest = new DockerImageName($\"{cdk.Aws.ACCOUNT_ID}.dkr.ecr.us-west-2.amazonaws.com/my-nginx2:latest\")\n});\n\n// Copy from private docker registry to ECR.\n// The format of secret in aws secrets manager must be plain text! e.g. <username>:<password>\n// Copy from private docker registry to ECR.\n// The format of secret in aws secrets manager must be plain text! e.g. <username>:<password>\nnew ECRDeployment(this, \"DeployDockerImage3\", new ECRDeploymentProps {\n Src = new DockerImageName(\"javacs3/nginx:latest\", \"username:password\"),\n // src: new ecrdeploy.DockerImageName('javacs3/nginx:latest', 'aws-secrets-manager-secret-name'),\n // src: new ecrdeploy.DockerImageName('javacs3/nginx:latest', 'arn:aws:secretsmanager:us-west-2:000000000000:secret:id'),\n Dest = new DockerImageName($\"{cdk.Aws.ACCOUNT_ID}.dkr.ecr.us-west-2.amazonaws.com/my-nginx3:latest\")\n}).AddToPrincipalPolicy(new PolicyStatement(new PolicyStatementProps {\n Effect = Effect.ALLOW,\n Actions = new [] { \"secretsmanager:GetSecretValue\" },\n Resources = new [] { \"*\" }\n}));","version":"1"},"java":{"source":"import software.amazon.awscdk.services.ecr.assets.DockerImageAsset;\n\n\nDockerImageAsset image = DockerImageAsset.Builder.create(this, \"CDKDockerImage\")\n .directory(join(__dirname, \"docker\"))\n .build();\n\n// Copy from cdk docker image asset to another ECR.\n// Copy from cdk docker image asset to another ECR.\nECRDeployment.Builder.create(this, \"DeployDockerImage1\")\n .src(new DockerImageName(image.getImageUri()))\n .dest(new DockerImageName(String.format(\"%s.dkr.ecr.us-west-2.amazonaws.com/my-nginx:latest\", Aws.ACCOUNT_ID)))\n .build();\n\n// Copy from docker registry to ECR.\n// Copy from docker registry to ECR.\nECRDeployment.Builder.create(this, \"DeployDockerImage2\")\n .src(new DockerImageName(\"nginx:latest\"))\n .dest(new DockerImageName(String.format(\"%s.dkr.ecr.us-west-2.amazonaws.com/my-nginx2:latest\", Aws.ACCOUNT_ID)))\n .build();\n\n// Copy from private docker registry to ECR.\n// The format of secret in aws secrets manager must be plain text! e.g. <username>:<password>\n// Copy from private docker registry to ECR.\n// The format of secret in aws secrets manager must be plain text! e.g. <username>:<password>\nECRDeployment.Builder.create(this, \"DeployDockerImage3\")\n .src(new DockerImageName(\"javacs3/nginx:latest\", \"username:password\"))\n // src: new ecrdeploy.DockerImageName('javacs3/nginx:latest', 'aws-secrets-manager-secret-name'),\n // src: new ecrdeploy.DockerImageName('javacs3/nginx:latest', 'arn:aws:secretsmanager:us-west-2:000000000000:secret:id'),\n .dest(new DockerImageName(String.format(\"%s.dkr.ecr.us-west-2.amazonaws.com/my-nginx3:latest\", Aws.ACCOUNT_ID)))\n .build().addToPrincipalPolicy(PolicyStatement.Builder.create()\n .effect(Effect.ALLOW)\n .actions(List.of(\"secretsmanager:GetSecretValue\"))\n .resources(List.of(\"*\"))\n .build());","version":"1"},"go":{"source":"import \"github.com/aws/aws-cdk-go/awscdk\"\n\n\nimage := awscdk.NewDockerImageAsset(this, jsii.String(\"CDKDockerImage\"), &DockerImageAssetProps{\n\tDirectory: path.join(__dirname, jsii.String(\"docker\")),\n})\n\n// Copy from cdk docker image asset to another ECR.\n// Copy from cdk docker image asset to another ECR.\necrdeploy.NewECRDeployment(this, jsii.String(\"DeployDockerImage1\"), &ECRDeploymentProps{\n\tSrc: ecrdeploy.NewDockerImageName(image.ImageUri),\n\tDest: ecrdeploy.NewDockerImageName(fmt.Sprintf(\"%v.dkr.ecr.us-west-2.amazonaws.com/my-nginx:latest\", cdk.Aws_ACCOUNT_ID())),\n})\n\n// Copy from docker registry to ECR.\n// Copy from docker registry to ECR.\necrdeploy.NewECRDeployment(this, jsii.String(\"DeployDockerImage2\"), &ECRDeploymentProps{\n\tSrc: ecrdeploy.NewDockerImageName(jsii.String(\"nginx:latest\")),\n\tDest: ecrdeploy.NewDockerImageName(fmt.Sprintf(\"%v.dkr.ecr.us-west-2.amazonaws.com/my-nginx2:latest\", cdk.Aws_ACCOUNT_ID())),\n})\n\n// Copy from private docker registry to ECR.\n// The format of secret in aws secrets manager must be plain text! e.g. <username>:<password>\n// Copy from private docker registry to ECR.\n// The format of secret in aws secrets manager must be plain text! e.g. <username>:<password>\necrdeploy.NewECRDeployment(this, jsii.String(\"DeployDockerImage3\"), &ECRDeploymentProps{\n\tSrc: ecrdeploy.NewDockerImageName(jsii.String(\"javacs3/nginx:latest\"), jsii.String(\"username:password\")),\n\t// src: new ecrdeploy.DockerImageName('javacs3/nginx:latest', 'aws-secrets-manager-secret-name'),\n\t// src: new ecrdeploy.DockerImageName('javacs3/nginx:latest', 'arn:aws:secretsmanager:us-west-2:000000000000:secret:id'),\n\tDest: ecrdeploy.NewDockerImageName(fmt.Sprintf(\"%v.dkr.ecr.us-west-2.amazonaws.com/my-nginx3:latest\", cdk.Aws_ACCOUNT_ID())),\n}).AddToPrincipalPolicy(awscdk.Aws_iam.NewPolicyStatement(&PolicyStatementProps{\n\tEffect: awscdk.*Aws_iam.Effect_ALLOW,\n\tActions: []*string{\n\t\tjsii.String(\"secretsmanager:GetSecretValue\"),\n\t},\n\tResources: []*string{\n\t\tjsii.String(\"*\"),\n\t},\n}))","version":"1"},"$":{"source":"import { DockerImageAsset } from 'aws-cdk-lib/aws-ecr-assets';\n\nconst image = new DockerImageAsset(this, 'CDKDockerImage', {\n directory: path.join(__dirname, 'docker'),\n});\n\n// Copy from cdk docker image asset to another ECR.\nnew ecrdeploy.ECRDeployment(this, 'DeployDockerImage1', {\n src: new ecrdeploy.DockerImageName(image.imageUri),\n dest: new ecrdeploy.DockerImageName(`${cdk.Aws.ACCOUNT_ID}.dkr.ecr.us-west-2.amazonaws.com/my-nginx:latest`),\n});\n\n// Copy from docker registry to ECR.\nnew ecrdeploy.ECRDeployment(this, 'DeployDockerImage2', {\n src: new ecrdeploy.DockerImageName('nginx:latest'),\n dest: new ecrdeploy.DockerImageName(`${cdk.Aws.ACCOUNT_ID}.dkr.ecr.us-west-2.amazonaws.com/my-nginx2:latest`),\n});\n\n// Copy from private docker registry to ECR.\n// The format of secret in aws secrets manager must be plain text! e.g. <username>:<password>\nnew ecrdeploy.ECRDeployment(this, 'DeployDockerImage3', {\n src: new ecrdeploy.DockerImageName('javacs3/nginx:latest', 'username:password'),\n // src: new ecrdeploy.DockerImageName('javacs3/nginx:latest', 'aws-secrets-manager-secret-name'),\n // src: new ecrdeploy.DockerImageName('javacs3/nginx:latest', 'arn:aws:secretsmanager:us-west-2:000000000000:secret:id'),\n dest: new ecrdeploy.DockerImageName(`${cdk.Aws.ACCOUNT_ID}.dkr.ecr.us-west-2.amazonaws.com/my-nginx3:latest`),\n}).addToPrincipalPolicy(new iam.PolicyStatement({\n effect: iam.Effect.ALLOW,\n actions: [\n 'secretsmanager:GetSecretValue',\n ],\n resources: ['*'],\n}));","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"cdk-ecr-deployment"},"field":{"field":"markdown","line":33}},"didCompile":true,"fqnsReferenced":["aws-cdk-lib.aws_ecr_assets.DockerImageAsset","aws-cdk-lib.aws_ecr_assets.DockerImageAsset#imageUri","aws-cdk-lib.aws_ecr_assets.DockerImageAssetProps","aws-cdk-lib.aws_iam.Effect","aws-cdk-lib.aws_iam.Effect#ALLOW","aws-cdk-lib.aws_iam.PolicyStatement","aws-cdk-lib.aws_iam.PolicyStatementProps","cdk-ecr-deployment.DockerImageName","cdk-ecr-deployment.ECRDeployment","cdk-ecr-deployment.ECRDeployment#addToPrincipalPolicy","cdk-ecr-deployment.ECRDeploymentProps","cdk-ecr-deployment.IImageName","constructs.Construct"],"fullSource":"// Hoisted imports begin after !show marker below\n/// !show\nimport { DockerImageAsset } from 'aws-cdk-lib/aws-ecr-assets';\n/// !hide\n// Hoisted imports ended before !hide marker above\n// Fixture with packages imported, but nothing else\nimport * as path from 'node:path';\nimport { Construct } from 'constructs';\n import * as ecrdeploy from 'cdk-ecr-deployment';\nimport {\n Stack,\n aws_iam as iam,\n} from 'aws-cdk-lib';\nimport * as cdk from 'aws-cdk-lib';\n\nclass Fixture extends Stack {\n constructor(scope: Construct, id: string) {\n super(scope, id);\n\n // Code snippet begins after !show marker below\n/// !show\n\n\nconst image = new DockerImageAsset(this, 'CDKDockerImage', {\n directory: path.join(__dirname, 'docker'),\n});\n\n// Copy from cdk docker image asset to another ECR.\nnew ecrdeploy.ECRDeployment(this, 'DeployDockerImage1', {\n src: new ecrdeploy.DockerImageName(image.imageUri),\n dest: new ecrdeploy.DockerImageName(`${cdk.Aws.ACCOUNT_ID}.dkr.ecr.us-west-2.amazonaws.com/my-nginx:latest`),\n});\n\n// Copy from docker registry to ECR.\nnew ecrdeploy.ECRDeployment(this, 'DeployDockerImage2', {\n src: new ecrdeploy.DockerImageName('nginx:latest'),\n dest: new ecrdeploy.DockerImageName(`${cdk.Aws.ACCOUNT_ID}.dkr.ecr.us-west-2.amazonaws.com/my-nginx2:latest`),\n});\n\n// Copy from private docker registry to ECR.\n// The format of secret in aws secrets manager must be plain text! e.g. <username>:<password>\nnew ecrdeploy.ECRDeployment(this, 'DeployDockerImage3', {\n src: new ecrdeploy.DockerImageName('javacs3/nginx:latest', 'username:password'),\n // src: new ecrdeploy.DockerImageName('javacs3/nginx:latest', 'aws-secrets-manager-secret-name'),\n // src: new ecrdeploy.DockerImageName('javacs3/nginx:latest', 'arn:aws:secretsmanager:us-west-2:000000000000:secret:id'),\n dest: new ecrdeploy.DockerImageName(`${cdk.Aws.ACCOUNT_ID}.dkr.ecr.us-west-2.amazonaws.com/my-nginx3:latest`),\n}).addToPrincipalPolicy(new iam.PolicyStatement({\n effect: iam.Effect.ALLOW,\n actions: [\n 'secretsmanager:GetSecretValue',\n ],\n resources: ['*'],\n}));\n/// !hide\n// Code snippet ended before !hide marker above\n }\n}","syntaxKindCounter":{"11":11,"16":3,"18":3,"80":51,"110":4,"209":2,"210":5,"211":21,"213":2,"214":11,"228":3,"239":3,"243":1,"244":3,"260":1,"261":1,"272":1,"273":1,"275":1,"276":1,"303":10,"312":1},"fqnsFingerprint":"9d435b1b2c76010f8a75490e073b59c4d776eb93ca570ed78a292aecd169403d"}}}
1
+ {"version":"2","toolVersion":"5.4.22","snippets":{"33850328020507963bc7787401a169bb06e49f6132425a6d1529815c1554c645":{"translations":{"python":{"source":"from aws_cdk.aws_ecr_assets import DockerImageAsset\n\n\nimage = DockerImageAsset(self, \"CDKDockerImage\",\n directory=path.join(__dirname, \"docker\")\n)\n\n# Copy from cdk docker image asset to another ECR.\necrdeploy.ECRDeployment(self, \"DeployDockerImage1\",\n src=ecrdeploy.DockerImageName(image.image_uri),\n dest=ecrdeploy.DockerImageName(f\"{cdk.Aws.ACCOUNT_ID}.dkr.ecr.us-west-2.amazonaws.com/my-nginx:latest\")\n)\n\n# Copy from docker registry to ECR.\necrdeploy.ECRDeployment(self, \"DeployDockerImage2\",\n src=ecrdeploy.DockerImageName(\"nginx:latest\"),\n dest=ecrdeploy.DockerImageName(f\"{cdk.Aws.ACCOUNT_ID}.dkr.ecr.us-west-2.amazonaws.com/my-nginx2:latest\")\n)\n\n# Copy from private docker registry to ECR.\n# The format of secret in aws secrets manager must be plain text! e.g. <username>:<password>\necrdeploy.ECRDeployment(self, \"DeployDockerImage3\",\n src=ecrdeploy.DockerImageName(\"javacs3/nginx:latest\", \"username:password\"),\n # src: new ecrdeploy.DockerImageName('javacs3/nginx:latest', 'aws-secrets-manager-secret-name'),\n # src: new ecrdeploy.DockerImageName('javacs3/nginx:latest', 'arn:aws:secretsmanager:us-west-2:000000000000:secret:id'),\n dest=ecrdeploy.DockerImageName(f\"{cdk.Aws.ACCOUNT_ID}.dkr.ecr.us-west-2.amazonaws.com/my-nginx3:latest\")\n).add_to_principal_policy(iam.PolicyStatement(\n effect=iam.Effect.ALLOW,\n actions=[\"secretsmanager:GetSecretValue\"\n ],\n resources=[\"*\"]\n))","version":"2"},"csharp":{"source":"using Amazon.CDK.AWS.Ecr.Assets;\n\n\nvar image = new DockerImageAsset(this, \"CDKDockerImage\", new DockerImageAssetProps {\n Directory = Join(__dirname, \"docker\")\n});\n\n// Copy from cdk docker image asset to another ECR.\n// Copy from cdk docker image asset to another ECR.\nnew ECRDeployment(this, \"DeployDockerImage1\", new ECRDeploymentProps {\n Src = new DockerImageName(image.ImageUri),\n Dest = new DockerImageName($\"{cdk.Aws.ACCOUNT_ID}.dkr.ecr.us-west-2.amazonaws.com/my-nginx:latest\")\n});\n\n// Copy from docker registry to ECR.\n// Copy from docker registry to ECR.\nnew ECRDeployment(this, \"DeployDockerImage2\", new ECRDeploymentProps {\n Src = new DockerImageName(\"nginx:latest\"),\n Dest = new DockerImageName($\"{cdk.Aws.ACCOUNT_ID}.dkr.ecr.us-west-2.amazonaws.com/my-nginx2:latest\")\n});\n\n// Copy from private docker registry to ECR.\n// The format of secret in aws secrets manager must be plain text! e.g. <username>:<password>\n// Copy from private docker registry to ECR.\n// The format of secret in aws secrets manager must be plain text! e.g. <username>:<password>\nnew ECRDeployment(this, \"DeployDockerImage3\", new ECRDeploymentProps {\n Src = new DockerImageName(\"javacs3/nginx:latest\", \"username:password\"),\n // src: new ecrdeploy.DockerImageName('javacs3/nginx:latest', 'aws-secrets-manager-secret-name'),\n // src: new ecrdeploy.DockerImageName('javacs3/nginx:latest', 'arn:aws:secretsmanager:us-west-2:000000000000:secret:id'),\n Dest = new DockerImageName($\"{cdk.Aws.ACCOUNT_ID}.dkr.ecr.us-west-2.amazonaws.com/my-nginx3:latest\")\n}).AddToPrincipalPolicy(new PolicyStatement(new PolicyStatementProps {\n Effect = Effect.ALLOW,\n Actions = new [] { \"secretsmanager:GetSecretValue\" },\n Resources = new [] { \"*\" }\n}));","version":"1"},"java":{"source":"import software.amazon.awscdk.services.ecr.assets.DockerImageAsset;\n\n\nDockerImageAsset image = DockerImageAsset.Builder.create(this, \"CDKDockerImage\")\n .directory(join(__dirname, \"docker\"))\n .build();\n\n// Copy from cdk docker image asset to another ECR.\n// Copy from cdk docker image asset to another ECR.\nECRDeployment.Builder.create(this, \"DeployDockerImage1\")\n .src(new DockerImageName(image.getImageUri()))\n .dest(new DockerImageName(String.format(\"%s.dkr.ecr.us-west-2.amazonaws.com/my-nginx:latest\", Aws.ACCOUNT_ID)))\n .build();\n\n// Copy from docker registry to ECR.\n// Copy from docker registry to ECR.\nECRDeployment.Builder.create(this, \"DeployDockerImage2\")\n .src(new DockerImageName(\"nginx:latest\"))\n .dest(new DockerImageName(String.format(\"%s.dkr.ecr.us-west-2.amazonaws.com/my-nginx2:latest\", Aws.ACCOUNT_ID)))\n .build();\n\n// Copy from private docker registry to ECR.\n// The format of secret in aws secrets manager must be plain text! e.g. <username>:<password>\n// Copy from private docker registry to ECR.\n// The format of secret in aws secrets manager must be plain text! e.g. <username>:<password>\nECRDeployment.Builder.create(this, \"DeployDockerImage3\")\n .src(new DockerImageName(\"javacs3/nginx:latest\", \"username:password\"))\n // src: new ecrdeploy.DockerImageName('javacs3/nginx:latest', 'aws-secrets-manager-secret-name'),\n // src: new ecrdeploy.DockerImageName('javacs3/nginx:latest', 'arn:aws:secretsmanager:us-west-2:000000000000:secret:id'),\n .dest(new DockerImageName(String.format(\"%s.dkr.ecr.us-west-2.amazonaws.com/my-nginx3:latest\", Aws.ACCOUNT_ID)))\n .build().addToPrincipalPolicy(PolicyStatement.Builder.create()\n .effect(Effect.ALLOW)\n .actions(List.of(\"secretsmanager:GetSecretValue\"))\n .resources(List.of(\"*\"))\n .build());","version":"1"},"go":{"source":"import \"github.com/aws/aws-cdk-go/awscdk\"\n\n\nimage := awscdk.NewDockerImageAsset(this, jsii.String(\"CDKDockerImage\"), &DockerImageAssetProps{\n\tDirectory: path.join(__dirname, jsii.String(\"docker\")),\n})\n\n// Copy from cdk docker image asset to another ECR.\n// Copy from cdk docker image asset to another ECR.\necrdeploy.NewECRDeployment(this, jsii.String(\"DeployDockerImage1\"), &ECRDeploymentProps{\n\tSrc: ecrdeploy.NewDockerImageName(image.ImageUri),\n\tDest: ecrdeploy.NewDockerImageName(fmt.Sprintf(\"%v.dkr.ecr.us-west-2.amazonaws.com/my-nginx:latest\", cdk.Aws_ACCOUNT_ID())),\n})\n\n// Copy from docker registry to ECR.\n// Copy from docker registry to ECR.\necrdeploy.NewECRDeployment(this, jsii.String(\"DeployDockerImage2\"), &ECRDeploymentProps{\n\tSrc: ecrdeploy.NewDockerImageName(jsii.String(\"nginx:latest\")),\n\tDest: ecrdeploy.NewDockerImageName(fmt.Sprintf(\"%v.dkr.ecr.us-west-2.amazonaws.com/my-nginx2:latest\", cdk.Aws_ACCOUNT_ID())),\n})\n\n// Copy from private docker registry to ECR.\n// The format of secret in aws secrets manager must be plain text! e.g. <username>:<password>\n// Copy from private docker registry to ECR.\n// The format of secret in aws secrets manager must be plain text! e.g. <username>:<password>\necrdeploy.NewECRDeployment(this, jsii.String(\"DeployDockerImage3\"), &ECRDeploymentProps{\n\tSrc: ecrdeploy.NewDockerImageName(jsii.String(\"javacs3/nginx:latest\"), jsii.String(\"username:password\")),\n\t// src: new ecrdeploy.DockerImageName('javacs3/nginx:latest', 'aws-secrets-manager-secret-name'),\n\t// src: new ecrdeploy.DockerImageName('javacs3/nginx:latest', 'arn:aws:secretsmanager:us-west-2:000000000000:secret:id'),\n\tDest: ecrdeploy.NewDockerImageName(fmt.Sprintf(\"%v.dkr.ecr.us-west-2.amazonaws.com/my-nginx3:latest\", cdk.Aws_ACCOUNT_ID())),\n}).AddToPrincipalPolicy(awscdk.Aws_iam.NewPolicyStatement(&PolicyStatementProps{\n\tEffect: awscdk.*Aws_iam.Effect_ALLOW,\n\tActions: []*string{\n\t\tjsii.String(\"secretsmanager:GetSecretValue\"),\n\t},\n\tResources: []*string{\n\t\tjsii.String(\"*\"),\n\t},\n}))","version":"1"},"$":{"source":"import { DockerImageAsset } from 'aws-cdk-lib/aws-ecr-assets';\n\nconst image = new DockerImageAsset(this, 'CDKDockerImage', {\n directory: path.join(__dirname, 'docker'),\n});\n\n// Copy from cdk docker image asset to another ECR.\nnew ecrdeploy.ECRDeployment(this, 'DeployDockerImage1', {\n src: new ecrdeploy.DockerImageName(image.imageUri),\n dest: new ecrdeploy.DockerImageName(`${cdk.Aws.ACCOUNT_ID}.dkr.ecr.us-west-2.amazonaws.com/my-nginx:latest`),\n});\n\n// Copy from docker registry to ECR.\nnew ecrdeploy.ECRDeployment(this, 'DeployDockerImage2', {\n src: new ecrdeploy.DockerImageName('nginx:latest'),\n dest: new ecrdeploy.DockerImageName(`${cdk.Aws.ACCOUNT_ID}.dkr.ecr.us-west-2.amazonaws.com/my-nginx2:latest`),\n});\n\n// Copy from private docker registry to ECR.\n// The format of secret in aws secrets manager must be plain text! e.g. <username>:<password>\nnew ecrdeploy.ECRDeployment(this, 'DeployDockerImage3', {\n src: new ecrdeploy.DockerImageName('javacs3/nginx:latest', 'username:password'),\n // src: new ecrdeploy.DockerImageName('javacs3/nginx:latest', 'aws-secrets-manager-secret-name'),\n // src: new ecrdeploy.DockerImageName('javacs3/nginx:latest', 'arn:aws:secretsmanager:us-west-2:000000000000:secret:id'),\n dest: new ecrdeploy.DockerImageName(`${cdk.Aws.ACCOUNT_ID}.dkr.ecr.us-west-2.amazonaws.com/my-nginx3:latest`),\n}).addToPrincipalPolicy(new iam.PolicyStatement({\n effect: iam.Effect.ALLOW,\n actions: [\n 'secretsmanager:GetSecretValue',\n ],\n resources: ['*'],\n}));","version":"0"}},"location":{"api":{"api":"moduleReadme","moduleFqn":"cdk-ecr-deployment"},"field":{"field":"markdown","line":33}},"didCompile":true,"fqnsReferenced":["aws-cdk-lib.aws_ecr_assets.DockerImageAsset","aws-cdk-lib.aws_ecr_assets.DockerImageAsset#imageUri","aws-cdk-lib.aws_ecr_assets.DockerImageAssetProps","aws-cdk-lib.aws_iam.Effect","aws-cdk-lib.aws_iam.Effect#ALLOW","aws-cdk-lib.aws_iam.PolicyStatement","aws-cdk-lib.aws_iam.PolicyStatementProps","cdk-ecr-deployment.DockerImageName","cdk-ecr-deployment.ECRDeployment","cdk-ecr-deployment.ECRDeployment#addToPrincipalPolicy","cdk-ecr-deployment.ECRDeploymentProps","cdk-ecr-deployment.IImageName","constructs.Construct"],"fullSource":"// Hoisted imports begin after !show marker below\n/// !show\nimport { DockerImageAsset } from 'aws-cdk-lib/aws-ecr-assets';\n/// !hide\n// Hoisted imports ended before !hide marker above\n// Fixture with packages imported, but nothing else\nimport * as path from 'node:path';\nimport { Construct } from 'constructs';\n import * as ecrdeploy from 'cdk-ecr-deployment';\nimport {\n Stack,\n aws_iam as iam,\n} from 'aws-cdk-lib';\nimport * as cdk from 'aws-cdk-lib';\n\nclass Fixture extends Stack {\n constructor(scope: Construct, id: string) {\n super(scope, id);\n\n // Code snippet begins after !show marker below\n/// !show\n\n\nconst image = new DockerImageAsset(this, 'CDKDockerImage', {\n directory: path.join(__dirname, 'docker'),\n});\n\n// Copy from cdk docker image asset to another ECR.\nnew ecrdeploy.ECRDeployment(this, 'DeployDockerImage1', {\n src: new ecrdeploy.DockerImageName(image.imageUri),\n dest: new ecrdeploy.DockerImageName(`${cdk.Aws.ACCOUNT_ID}.dkr.ecr.us-west-2.amazonaws.com/my-nginx:latest`),\n});\n\n// Copy from docker registry to ECR.\nnew ecrdeploy.ECRDeployment(this, 'DeployDockerImage2', {\n src: new ecrdeploy.DockerImageName('nginx:latest'),\n dest: new ecrdeploy.DockerImageName(`${cdk.Aws.ACCOUNT_ID}.dkr.ecr.us-west-2.amazonaws.com/my-nginx2:latest`),\n});\n\n// Copy from private docker registry to ECR.\n// The format of secret in aws secrets manager must be plain text! e.g. <username>:<password>\nnew ecrdeploy.ECRDeployment(this, 'DeployDockerImage3', {\n src: new ecrdeploy.DockerImageName('javacs3/nginx:latest', 'username:password'),\n // src: new ecrdeploy.DockerImageName('javacs3/nginx:latest', 'aws-secrets-manager-secret-name'),\n // src: new ecrdeploy.DockerImageName('javacs3/nginx:latest', 'arn:aws:secretsmanager:us-west-2:000000000000:secret:id'),\n dest: new ecrdeploy.DockerImageName(`${cdk.Aws.ACCOUNT_ID}.dkr.ecr.us-west-2.amazonaws.com/my-nginx3:latest`),\n}).addToPrincipalPolicy(new iam.PolicyStatement({\n effect: iam.Effect.ALLOW,\n actions: [\n 'secretsmanager:GetSecretValue',\n ],\n resources: ['*'],\n}));\n/// !hide\n// Code snippet ended before !hide marker above\n }\n}","syntaxKindCounter":{"11":11,"16":3,"18":3,"80":51,"110":4,"209":2,"210":5,"211":21,"213":2,"214":11,"228":3,"239":3,"243":1,"244":3,"260":1,"261":1,"272":1,"273":1,"275":1,"276":1,"303":10,"312":1},"fqnsFingerprint":"49c3b893d162beea6924f8cf712357c6390954e35a181bc42817e82aa4070d12"}}}
package/API.md CHANGED
@@ -77,6 +77,8 @@ new ECRDeployment(scope: Construct, id: string, props: ECRDeploymentProps)
77
77
  * **src** (<code>[IImageName](#cdk-ecr-deployment-iimagename)</code>) The source of the docker image.
78
78
  * **buildImage** (<code>string</code>) Image to use to build Golang lambda for custom resource, if download fails or is not wanted. __*Default*__: public.ecr.aws/sam/build-go1.x:latest
79
79
  * **environment** (<code>Map<string, string></code>) The environment variable to set. __*Optional*__
80
+ * **lambdaHandler** (<code>string</code>) The name of the lambda handler. __*Default*__: bootstrap
81
+ * **lambdaRuntime** (<code>[aws_lambda.Runtime](#aws-cdk-lib-aws-lambda-runtime)</code>) The lambda function runtime environment. __*Default*__: lambda.Runtime.PROVIDED_AL2023
80
82
  * **memoryLimit** (<code>number</code>) The amount of memory (in MiB) to allocate to the AWS Lambda function which replicates the files from the CDK bucket to the destination bucket. __*Default*__: 512
81
83
  * **role** (<code>[aws_iam.IRole](#aws-cdk-lib-aws-iam-irole)</code>) Execution role associated with this function. __*Default*__: A role is automatically created
82
84
  * **securityGroups** (<code>Array<[aws_ec2.SecurityGroup](#aws-cdk-lib-aws-ec2-securitygroup)></code>) The list of security groups to associate with the Lambda's network interfaces. __*Default*__: If the function is placed within a VPC and a security group is not specified, either by this or securityGroup prop, a dedicated security group will be created for this function.
@@ -146,6 +148,8 @@ Name | Type | Description
146
148
  **src** | <code>[IImageName](#cdk-ecr-deployment-iimagename)</code> | The source of the docker image.
147
149
  **buildImage**? | <code>string</code> | Image to use to build Golang lambda for custom resource, if download fails or is not wanted.<br/>__*Default*__: public.ecr.aws/sam/build-go1.x:latest
148
150
  **environment**? | <code>Map<string, string></code> | The environment variable to set.<br/>__*Optional*__
151
+ **lambdaHandler**? | <code>string</code> | The name of the lambda handler.<br/>__*Default*__: bootstrap
152
+ **lambdaRuntime**? | <code>[aws_lambda.Runtime](#aws-cdk-lib-aws-lambda-runtime)</code> | The lambda function runtime environment.<br/>__*Default*__: lambda.Runtime.PROVIDED_AL2023
149
153
  **memoryLimit**? | <code>number</code> | The amount of memory (in MiB) to allocate to the AWS Lambda function which replicates the files from the CDK bucket to the destination bucket.<br/>__*Default*__: 512
150
154
  **role**? | <code>[aws_iam.IRole](#aws-cdk-lib-aws-iam-irole)</code> | Execution role associated with this function.<br/>__*Default*__: A role is automatically created
151
155
  **securityGroups**? | <code>Array<[aws_ec2.SecurityGroup](#aws-cdk-lib-aws-ec2-securitygroup)></code> | The list of security groups to associate with the Lambda's network interfaces.<br/>__*Default*__: If the function is placed within a VPC and a security group is not specified, either by this or securityGroup prop, a dedicated security group will be created for this function.
package/lib/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { aws_ec2 as ec2, aws_iam as iam } from 'aws-cdk-lib';
1
+ import { aws_ec2 as ec2, aws_iam as iam, aws_lambda as lambda } from 'aws-cdk-lib';
2
2
  import { PolicyStatement, AddToPrincipalPolicyResult } from 'aws-cdk-lib/aws-iam';
3
3
  import { Construct } from 'constructs';
4
4
  export interface ECRDeploymentProps {
@@ -9,7 +9,7 @@ export interface ECRDeploymentProps {
9
9
  *
10
10
  * Note that image should use yum as a package manager and have golang available.
11
11
  *
12
- * @default public.ecr.aws/sam/build-go1.x:latest
12
+ * @default - public.ecr.aws/sam/build-go1.x:latest
13
13
  */
14
14
  readonly buildImage?: string;
15
15
  /**
@@ -27,7 +27,7 @@ export interface ECRDeploymentProps {
27
27
  * If you are deploying large files, you will need to increase this number
28
28
  * accordingly.
29
29
  *
30
- * @default 512
30
+ * @default - 512
31
31
  */
32
32
  readonly memoryLimit?: number;
33
33
  /**
@@ -39,7 +39,7 @@ export interface ECRDeploymentProps {
39
39
  /**
40
40
  * The VPC network to place the deployment lambda handler in.
41
41
  *
42
- * @default None
42
+ * @default - None
43
43
  */
44
44
  readonly vpc?: ec2.IVpc;
45
45
  /**
@@ -59,6 +59,18 @@ export interface ECRDeploymentProps {
59
59
  * group will be created for this function.
60
60
  */
61
61
  readonly securityGroups?: ec2.SecurityGroup[];
62
+ /**
63
+ * The lambda function runtime environment.
64
+ *
65
+ * @default - lambda.Runtime.PROVIDED_AL2023
66
+ */
67
+ readonly lambdaRuntime?: lambda.Runtime;
68
+ /**
69
+ * The name of the lambda handler.
70
+ *
71
+ * @default - bootstrap
72
+ */
73
+ readonly lambdaHandler?: string;
62
74
  /**
63
75
  * The environment variable to set
64
76
  */
package/lib/index.js CHANGED
@@ -37,7 +37,7 @@ class DockerImageName {
37
37
  }
38
38
  exports.DockerImageName = DockerImageName;
39
39
  _a = JSII_RTTI_SYMBOL_1;
40
- DockerImageName[_a] = { fqn: "cdk-ecr-deployment.DockerImageName", version: "3.0.67" };
40
+ DockerImageName[_a] = { fqn: "cdk-ecr-deployment.DockerImageName", version: "3.0.68" };
41
41
  class S3ArchiveName {
42
42
  constructor(p, ref, creds) {
43
43
  this.creds = creds;
@@ -50,7 +50,7 @@ class S3ArchiveName {
50
50
  }
51
51
  exports.S3ArchiveName = S3ArchiveName;
52
52
  _b = JSII_RTTI_SYMBOL_1;
53
- S3ArchiveName[_b] = { fqn: "cdk-ecr-deployment.S3ArchiveName", version: "3.0.67" };
53
+ S3ArchiveName[_b] = { fqn: "cdk-ecr-deployment.S3ArchiveName", version: "3.0.68" };
54
54
  class ECRDeployment extends constructs_1.Construct {
55
55
  constructor(scope, id, props) {
56
56
  super(scope, id);
@@ -58,8 +58,8 @@ class ECRDeployment extends constructs_1.Construct {
58
58
  this.handler = new aws_cdk_lib_1.aws_lambda.SingletonFunction(this, 'CustomResourceHandler', {
59
59
  uuid: this.renderSingletonUuid(memoryLimit),
60
60
  code: getCode(props.buildImage ?? 'golang:1'),
61
- runtime: aws_cdk_lib_1.aws_lambda.Runtime.PROVIDED_AL2023,
62
- handler: 'bootstrap',
61
+ runtime: props.lambdaRuntime ?? aws_cdk_lib_1.aws_lambda.Runtime.PROVIDED_AL2023,
62
+ handler: props.lambdaHandler ?? 'bootstrap',
63
63
  environment: props.environment,
64
64
  lambdaPurpose: 'Custom::CDKECRDeployment',
65
65
  timeout: aws_cdk_lib_1.Duration.minutes(15),
@@ -134,5 +134,5 @@ class ECRDeployment extends constructs_1.Construct {
134
134
  }
135
135
  exports.ECRDeployment = ECRDeployment;
136
136
  _c = JSII_RTTI_SYMBOL_1;
137
- ECRDeployment[_c] = { fqn: "cdk-ecr-deployment.ECRDeployment", version: "3.0.67" };
138
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxxRUFBcUU7QUFDckUsc0NBQXNDO0FBR3RDLCtDQUErQztBQUMvQyw2QkFBNkI7QUFDN0IsNkNBQW9IO0FBRXBILDJDQUF1QztBQUN2QyxxQ0FBbUQ7QUF3Rm5ELFNBQVMsT0FBTyxDQUFDLFVBQWtCO0lBQ2pDLElBQUksSUFBQSxnQ0FBdUIsR0FBRSxFQUFFO1FBQzdCLElBQUk7WUFDRixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO1lBQ25FLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLGVBQWUsQ0FBQyxDQUFDO1lBQzNELGFBQWEsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLGFBQWEsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDO1lBRXpFLE9BQU8sd0JBQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQzVDO1FBQUMsT0FBTyxHQUFHLEVBQUU7WUFDWixPQUFPLENBQUMsSUFBSSxDQUFDLGdDQUFnQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1NBQ3JEO0tBQ0Y7SUFFRCxPQUFPLHdCQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxXQUFXLENBQUMsRUFBRTtRQUNwRSxTQUFTLEVBQUU7WUFDVCxVQUFVO1NBQ1g7S0FDRixDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsTUFBYSxlQUFlO0lBQzFCLFlBQTJCLElBQVksRUFBUyxLQUFjO1FBQW5DLFNBQUksR0FBSixJQUFJLENBQVE7UUFBUyxVQUFLLEdBQUwsS0FBSyxDQUFTO0lBQUksQ0FBQztJQUNuRSxJQUFXLEdBQUcsS0FBYSxPQUFPLFlB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QUFHLENBQUMsR0FBRztnQkFDdkIsUUFBUSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSztnQkFDekIsU0FBUyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRztnQkFDekIsU0FBUyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSzthQUM1QjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxvQkFBb0IsQ0FBQyxTQUEwQjtRQUNwRCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztRQUN0QyxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxxREFBcUQsQ0FBQyxDQUFDO1NBQUU7UUFFN0YsT0FBTyxXQUFXLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVPLG1CQUFtQixDQUFDLFdBQW9CO1FBQzlDLElBQUksSUFBSSxHQUFHLHNDQUFzQyxDQUFDO1FBRWxELDBFQUEwRTtRQUMxRSwyRUFBMkU7UUFDM0UsNENBQTRDO1FBQzVDLElBQUksV0FBVyxFQUFFO1lBQ2YsSUFBSSxtQkFBSyxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsRUFBRTtnQkFDbkMsTUFBTSxJQUFJLEtBQUssQ0FBQyxtSEFBbUgsQ0FBQyxDQUFDO2FBQ3RJO1lBRUQsSUFBSSxJQUFJLElBQUksV0FBVyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUM7U0FDekM7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7O0FBdkZILHNDQXdGQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcblxuXG5pbXBvcnQgKiBhcyBjaGlsZF9wcm9jZXNzIGZyb20gJ2NoaWxkX3Byb2Nlc3MnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IGF3c19lYzIgYXMgZWMyLCBhd3NfaWFtIGFzIGlhbSwgYXdzX2xhbWJkYSBhcyBsYW1iZGEsIER1cmF0aW9uLCBDdXN0b21SZXNvdXJjZSwgVG9rZW4gfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBQb2xpY3lTdGF0ZW1lbnQsIEFkZFRvUHJpbmNpcGFsUG9saWN5UmVzdWx0IH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IHNob3VsZFVzZVByZWJ1aWx0TGFtYmRhIH0gZnJvbSAnLi9jb25maWcnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEVDUkRlcGxveW1lbnRQcm9wcyB7XG5cbiAgLyoqXG4gICAqIEltYWdlIHRvIHVzZSB0byBidWlsZCBHb2xhbmcgbGFtYmRhIGZvciBjdXN0b20gcmVzb3VyY2UsIGlmIGRvd25sb2FkIGZhaWxzIG9yIGlzIG5vdCB3YW50ZWQuXG4gICAqXG4gICAqIE1pZ2h0IGJlIG5lZWRlZCBmb3IgbG9jYWwgYnVpbGQgaWYgYWxsIGltYWdlcyBuZWVkIHRvIGNvbWUgZnJvbSBvd24gcmVnaXN0cnkuXG4gICAqXG4gICAqIE5vdGUgdGhhdCBpbWFnZSBzaG91bGQgdXNlIHl1bSBhcyBhIHBhY2thZ2UgbWFuYWdlciBhbmQgaGF2ZSBnb2xhbmcgYXZhaWxhYmxlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBwdWJsaWMuZWNyLmF3cy9zYW0vYnVpbGQtZ28xLng6bGF0ZXN0XG4gICAqL1xuICByZWFkb25seSBidWlsZEltYWdlPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHNvdXJjZSBvZiB0aGUgZG9ja2VyIGltYWdlLlxuICAgKi9cbiAgcmVhZG9ubHkgc3JjOiBJSW1hZ2VOYW1lO1xuXG4gIC8qKlxuICAgKiBUaGUgZGVzdGluYXRpb24gb2YgdGhlIGRvY2tlciBpbWFnZS5cbiAgICovXG4gIHJlYWRvbmx5IGRlc3Q6IElJbWFnZU5hbWU7XG5cbiAgLyoqXG4gICAqIFRoZSBhbW91bnQgb2YgbWVtb3J5IChpbiBNaUIpIHRvIGFsbG9jYXRlIHRvIHRoZSBBV1MgTGFtYmRhIGZ1bmN0aW9uIHdoaWNoXG4gICAqIHJlcGxpY2F0ZXMgdGhlIGZpbGVzIGZyb20gdGhlIENESyBidWNrZXQgdG8gdGhlIGRlc3RpbmF0aW9uIGJ1Y2tldC5cbiAgICpcbiAgICogSWYgeW91IGFyZSBkZXBsb3lpbmcgbGFyZ2UgZmlsZXMsIHlvdSB3aWxsIG5lZWQgdG8gaW5jcmVhc2UgdGhpcyBudW1iZXJcbiAgICogYWNjb3JkaW5nbHkuXG4gICAqXG4gICAqIEBkZWZhdWx0IDUxMlxuICAgKi9cbiAgcmVhZG9ubHkgbWVtb3J5TGltaXQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEV4ZWN1dGlvbiByb2xlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGZ1bmN0aW9uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gQSByb2xlIGlzIGF1dG9tYXRpY2FsbHkgY3JlYXRlZFxuICAgKi9cbiAgcmVhZG9ubHkgcm9sZT86IGlhbS5JUm9sZTtcblxuICAvKipcbiAgICogVGhlIFZQQyBuZXR3b3JrIHRvIHBsYWNlIHRoZSBkZXBsb3ltZW50IGxhbWJkYSBoYW5kbGVyIGluLlxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSB2cGM/OiBlYzIuSVZwYztcblxuICAvKipcbiAgICogV2hlcmUgaW4gdGhlIFZQQyB0byBwbGFjZSB0aGUgZGVwbG95bWVudCBsYW1iZGEgaGFuZGxlci5cbiAgICogT25seSB1c2VkIGlmICd2cGMnIGlzIHN1cHBsaWVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRoZSBWcGMgZGVmYXVsdCBzdHJhdGVneSBpZiBub3Qgc3BlY2lmaWVkXG4gICAqL1xuICByZWFkb25seSB2cGNTdWJuZXRzPzogZWMyLlN1Ym5ldFNlbGVjdGlvbjtcblxuICAvKipcbiAgICogVGhlIGxpc3Qgb2Ygc2VjdXJpdHkgZ3JvdXBzIHRvIGFzc29jaWF0ZSB3aXRoIHRoZSBMYW1iZGEncyBuZXR3b3JrIGludGVyZmFjZXMuXG4gICAqXG4gICAqIE9ubHkgdXNlZCBpZiAndnBjJyBpcyBzdXBwbGllZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBJZiB0aGUgZnVuY3Rpb24gaXMgcGxhY2VkIHdpdGhpbiBhIFZQQyBhbmQgYSBzZWN1cml0eSBncm91cCBpc1xuICAgKiBub3Qgc3BlY2lmaWVkLCBlaXRoZXIgYnkgdGhpcyBvciBzZWN1cml0eUdyb3VwIHByb3AsIGEgZGVkaWNhdGVkIHNlY3VyaXR5XG4gICAqIGdyb3VwIHdpbGwgYmUgY3JlYXRlZCBmb3IgdGhpcyBmdW5jdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IHNlY3VyaXR5R3JvdXBzPzogZWMyLlNlY3VyaXR5R3JvdXBbXTtcblxuICAvKipcbiAgICogVGhlIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIHNldFxuICAgKi9cbiAgcmVhZG9ubHkgZW52aXJvbm1lbnQ/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElJbWFnZU5hbWUge1xuICAvKipcbiAgICogIFRoZSB1cmkgb2YgdGhlIGRvY2tlciBpbWFnZS5cbiAgICpcbiAgICogIFRoZSB1cmkgc3BlYyBmb2xsb3dzIGh0dHBzOi8vZ2l0aHViLmNvbS9jb250YWluZXJzL3Nrb3Blb1xuICAgKi9cbiAgcmVhZG9ubHkgdXJpOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBjcmVkZW50aWFscyBvZiB0aGUgZG9ja2VyIGltYWdlLiBGb3JtYXQgYHVzZXI6cGFzc3dvcmRgIG9yIGBBV1MgU2VjcmV0cyBNYW5hZ2VyIHNlY3JldCBhcm5gIG9yIGBBV1MgU2VjcmV0cyBNYW5hZ2VyIHNlY3JldCBuYW1lYFxuICAgKi9cbiAgY3JlZHM/OiBzdHJpbmc7XG59XG5cbmZ1bmN0aW9uIGdldENvZGUoYnVpbGRJbWFnZTogc3RyaW5nKTogbGFtYmRhLkFzc2V0Q29kZSB7XG4gIGlmIChzaG91bGRVc2VQcmVidWlsdExhbWJkYSgpKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGluc3RhbGxTY3JpcHQgPSBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4vbGFtYmRhL2luc3RhbGwuanMnKTtcbiAgICAgIGNvbnN0IHByZWJ1aWx0UGF0aCA9IHBhdGguam9pbihfX2Rpcm5hbWUsICcuLi9sYW1iZGEvb3V0Jyk7XG4gICAgICBjaGlsZF9wcm9jZXNzLmV4ZWNGaWxlU3luYyhwcm9jZXNzLmFyZ3YwLCBbaW5zdGFsbFNjcmlwdCwgcHJlYnVpbHRQYXRoXSk7XG5cbiAgICAgIHJldHVybiBsYW1iZGEuQ29kZS5mcm9tQXNzZXQocHJlYnVpbHRQYXRoKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNvbnNvbGUud2FybihgQ2FuIG5vdCBnZXQgcHJlYnVpbHQgbGFtYmRhOiAke2Vycn1gKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbGFtYmRhLkNvZGUuZnJvbURvY2tlckJ1aWxkKHBhdGguam9pbihfX2Rpcm5hbWUsICcuLi9sYW1iZGEnKSwge1xuICAgIGJ1aWxkQXJnczoge1xuICAgICAgYnVpbGRJbWFnZSxcbiAgICB9LFxuICB9KTtcbn1cblxuZXhwb3J0IGNsYXNzIERvY2tlckltYWdlTmFtZSBpbXBsZW1lbnRzIElJbWFnZU5hbWUge1xuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSBuYW1lOiBzdHJpbmcsIHB1YmxpYyBjcmVkcz86IHN0cmluZykgeyB9XG4gIHB1YmxpYyBnZXQgdXJpKCk6IHN0cmluZyB7IHJldHVybiBgZG9ja2VyOi8vJHt0aGlzLm5hbWV9YDsgfVxufVxuXG5leHBvcnQgY2xhc3MgUzNBcmNoaXZlTmFtZSBpbXBsZW1lbnRzIElJbWFnZU5hbWUge1xuICBwcml2YXRlIG5hbWU6IHN0cmluZztcbiAgcHVibGljIGNvbnN0cnVjdG9yKHA6IHN0cmluZywgcmVmPzogc3RyaW5nLCBwdWJsaWMgY3JlZHM/OiBzdHJpbmcpIHtcbiAgICB0aGlzLm5hbWUgPSBwO1xuICAgIGlmIChyZWYpIHtcbiAgICAgIHRoaXMubmFtZSArPSAnOicgKyByZWY7XG4gICAgfVxuICB9XG4gIHB1YmxpYyBnZXQgdXJpKCk6IHN0cmluZyB7IHJldHVybiBgczM6Ly8ke3RoaXMubmFtZX1gOyB9XG59XG5cbmV4cG9ydCBjbGFzcyBFQ1JEZXBsb3ltZW50IGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcHJpdmF0ZSBoYW5kbGVyOiBsYW1iZGEuU2luZ2xldG9uRnVuY3Rpb247XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEVDUkRlcGxveW1lbnRQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgY29uc3QgbWVtb3J5TGltaXQgPSBwcm9wcy5tZW1vcnlMaW1pdCA/PyA1MTI7XG4gICAgdGhpcy5oYW5kbGVyID0gbmV3IGxhbWJkYS5TaW5nbGV0b25GdW5jdGlvbih0aGlzLCAnQ3VzdG9tUmVzb3VyY2VIYW5kbGVyJywge1xuICAgICAgdXVpZDogdGhpcy5yZW5kZXJTaW5nbGV0b25VdWlkKG1lbW9yeUxpbWl0KSxcbiAgICAgIGNvZGU6IGdldENvZGUocHJvcHMuYnVpbGRJbWFnZSA/PyAnZ29sYW5nOjEnKSxcbiAgICAgIHJ1bnRpbWU6IGxhbWJkYS5SdW50aW1lLlBST1ZJREVEX0FMMjAyMyxcbiAgICAgIGhhbmRsZXI6ICdib290c3RyYXAnLFxuICAgICAgZW52aXJvbm1lbnQ6IHByb3BzLmVudmlyb25tZW50LFxuICAgICAgbGFtYmRhUHVycG9zZTogJ0N1c3RvbTo6Q0RLRUNSRGVwbG95bWVudCcsXG4gICAgICB0aW1lb3V0OiBEdXJhdGlvbi5taW51dGVzKDE1KSxcbiAgICAgIHJvbGU6IHByb3BzLnJvbGUsXG4gICAgICBtZW1vcnlTaXplOiBtZW1vcnlMaW1pdCxcbiAgICAgIHZwYzogcHJvcHMudnBjLFxuICAgICAgdnBjU3VibmV0czogcHJvcHMudnBjU3VibmV0cyxcbiAgICAgIHNlY3VyaXR5R3JvdXBzOiBwcm9wcy5zZWN1cml0eUdyb3VwcyxcbiAgICB9KTtcblxuICAgIGNvbnN0IGhhbmRsZXJSb2xlID0gdGhpcy5oYW5kbGVyLnJvbGU7XG4gICAgaWYgKCFoYW5kbGVyUm9sZSkgeyB0aHJvdyBuZXcgRXJyb3IoJ2xhbWJkYS5TaW5nbGV0b25GdW5jdGlvbiBzaG91bGQgaGF2ZSBjcmVhdGVkIGEgUm9sZScpOyB9XG5cbiAgICBoYW5kbGVyUm9sZS5hZGRUb1ByaW5jaXBhbFBvbGljeShcbiAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgZWZmZWN0OiBpYW0uRWZmZWN0LkFMTE9XLFxuICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgJ2VjcjpHZXRBdXRob3JpemF0aW9uVG9rZW4nLFxuICAgICAgICAgICdlY3I6QmF0Y2hDaGVja0xheWVyQXZhaWxhYmlsaXR5JyxcbiAgICAgICAgICAnZWNyOkdldERvd25sb2FkVXJsRm9yTGF5ZXInLFxuICAgICAgICAgICdlY3I6R2V0UmVwb3NpdG9yeVBvbGljeScsXG4gICAgICAgICAgJ2VjcjpEZXNjcmliZVJlcG9zaXRvcmllcycsXG4gICAgICAgICAgJ2VjcjpMaXN0SW1hZ2VzJyxcbiAgICAgICAgICAnZWNyOkRlc2NyaWJlSW1hZ2VzJyxcbiAgICAgICAgICAnZWNyOkJhdGNoR2V0SW1hZ2UnLFxuICAgICAgICAgICdlY3I6TGlzdFRhZ3NGb3JSZXNvdXJjZScsXG4gICAgICAgICAgJ2VjcjpEZXNjcmliZUltYWdlU2NhbkZpbmRpbmdzJyxcbiAgICAgICAgICAnZWNyOkluaXRpYXRlTGF5ZXJVcGxvYWQnLFxuICAgICAgICAgICdlY3I6VXBsb2FkTGF5ZXJQYXJ0JyxcbiAgICAgICAgICAnZWNyOkNvbXBsZXRlTGF5ZXJVcGxvYWQnLFxuICAgICAgICAgICdlY3I6UHV0SW1hZ2UnLFxuICAgICAgICBdLFxuICAgICAgICByZXNvdXJjZXM6IFsnKiddLFxuICAgICAgfSkpO1xuICAgIGhhbmRsZXJSb2xlLmFkZFRvUHJpbmNpcGFsUG9saWN5KG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgIGVmZmVjdDogaWFtLkVmZmVjdC5BTExPVyxcbiAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgJ3MzOkdldE9iamVjdCcsXG4gICAgICBdLFxuICAgICAgcmVzb3VyY2VzOiBbJyonXSxcbiAgICB9KSk7XG5cbiAgICBuZXcgQ3VzdG9tUmVzb3VyY2UodGhpcywgJ0N1c3RvbVJlc291cmNlJywge1xuICAgICAgc2VydmljZVRva2VuOiB0aGlzLmhhbmRsZXIuZnVuY3Rpb25Bcm4sXG4gICAgICByZXNvdXJjZVR5cGU6ICdDdXN0b206OkNES0J1Y2tldERlcGxveW1lbnQnLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBTcmNJbWFnZTogcHJvcHMuc3JjLnVyaSxcbiAgICAgICAgU3JjQ3JlZHM6IHByb3BzLnNyYy5jcmVkcyxcbiAgICAgICAgRGVzdEltYWdlOiBwcm9wcy5kZXN0LnVyaSxcbiAgICAgICAgRGVzdENyZWRzOiBwcm9wcy5kZXN0LmNyZWRzLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRUb1ByaW5jaXBhbFBvbGljeShzdGF0ZW1lbnQ6IFBvbGljeVN0YXRlbWVudCk6IEFkZFRvUHJpbmNpcGFsUG9saWN5UmVzdWx0IHtcbiAgICBjb25zdCBoYW5kbGVyUm9sZSA9IHRoaXMuaGFuZGxlci5yb2xlO1xuICAgIGlmICghaGFuZGxlclJvbGUpIHsgdGhyb3cgbmV3IEVycm9yKCdsYW1iZGEuU2luZ2xldG9uRnVuY3Rpb24gc2hvdWxkIGhhdmUgY3JlYXRlZCBhIFJvbGUnKTsgfVxuXG4gICAgcmV0dXJuIGhhbmRsZXJSb2xlLmFkZFRvUHJpbmNpcGFsUG9saWN5KHN0YXRlbWVudCk7XG4gIH1cblxuICBwcml2YXRlIHJlbmRlclNpbmdsZXRvblV1aWQobWVtb3J5TGltaXQ/OiBudW1iZXIpIHtcbiAgICBsZXQgdXVpZCA9ICdiZDA3YzkzMC1lZGI5LTQxMTItYTIwZi0wM2YwOTZmNTM2NjYnO1xuXG4gICAgLy8gaWYgdXNlciBzcGVjaWZ5IGEgY3VzdG9tIG1lbW9yeSBsaW1pdCwgZGVmaW5lIGFub3RoZXIgc2luZ2xldG9uIGhhbmRsZXJcbiAgICAvLyB3aXRoIHRoaXMgY29uZmlndXJhdGlvbi4gb3RoZXJ3aXNlLCBpdCB3b24ndCBiZSBwb3NzaWJsZSB0byB1c2UgbXVsdGlwbGVcbiAgICAvLyBjb25maWd1cmF0aW9ucyBzaW5jZSB3ZSBoYXZlIGEgc2luZ2xldG9uLlxuICAgIGlmIChtZW1vcnlMaW1pdCkge1xuICAgICAgaWYgKFRva2VuLmlzVW5yZXNvbHZlZChtZW1vcnlMaW1pdCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5cXCd0IHVzZSB0b2tlbnMgd2hlbiBzcGVjaWZ5aW5nIFwibWVtb3J5TGltaXRcIiBzaW5jZSB3ZSB1c2UgaXQgdG8gaWRlbnRpZnkgdGhlIHNpbmdsZXRvbiBjdXN0b20gcmVzb3VyY2UgaGFuZGxlcicpO1xuICAgICAgfVxuXG4gICAgICB1dWlkICs9IGAtJHttZW1vcnlMaW1pdC50b1N0cmluZygpfU1pQmA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHV1aWQ7XG4gIH1cbn1cbiJdfQ==
137
+ ECRDeployment[_c] = { fqn: "cdk-ecr-deployment.ECRDeployment", version: "3.0.68" };
138
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxxRUFBcUU7QUFDckUsc0NBQXNDO0FBR3RDLCtDQUErQztBQUMvQyw2QkFBNkI7QUFDN0IsNkNBQW9IO0FBRXBILDJDQUF1QztBQUN2QyxxQ0FBbUQ7QUFzR25ELFNBQVMsT0FBTyxDQUFDLFVBQWtCO0lBQ2pDLElBQUksSUFBQSxnQ0FBdUIsR0FBRSxFQUFFO1FBQzdCLElBQUk7WUFDRixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO1lBQ25FLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLGVBQWUsQ0FBQyxDQUFDO1lBQzNELGFBQWEsQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLGFBQWEsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDO1lBRXpFLE9BQU8sd0JBQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQzVDO1FBQUMsT0FBTyxHQUFHLEVBQUU7WUFDWixPQUFPLENBQUMsSUFBSSxDQUFDLGdDQUFnQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1NBQ3JEO0tBQ0Y7SUFFRCxPQUFPLHdCQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxXQUFXLENBQUMsRUFBRTtRQUNwRSxTQUFTLEVBQUU7WUFDVCxVQUFVO1NBQ1g7S0FDRixDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQsTUFBYSxlQUFlO0lBQzFCLFlBQTJCLElBQVksRUFBUyxLQUFjO1FBQW5DLFNBQUksR0FBSixJQUFJLENBQVE7UUFBUyxVQUFLLEdBQUwsS0FBSyxDQUFTO0lBQUksQ0FBQztJQUNuRSxJQUFXLEdBQUcsS0FBYSxPQUFPLFlB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M0MsVUFBVSxFQUFFO2dCQUNWLFFBQVEsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUc7Z0JBQ3ZCLFFBQVEsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUs7Z0JBQ3pCLFNBQVMsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUc7Z0JBQ3pCLFNBQVMsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUs7YUFDNUI7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sb0JBQW9CLENBQUMsU0FBMEI7UUFDcEQsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7UUFDdEMsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMscURBQXFELENBQUMsQ0FBQztTQUFFO1FBRTdGLE9BQU8sV0FBVyxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFTyxtQkFBbUIsQ0FBQyxXQUFvQjtRQUM5QyxJQUFJLElBQUksR0FBRyxzQ0FBc0MsQ0FBQztRQUVsRCwwRUFBMEU7UUFDMUUsMkVBQTJFO1FBQzNFLDRDQUE0QztRQUM1QyxJQUFJLFdBQVcsRUFBRTtZQUNmLElBQUksbUJBQUssQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLEVBQUU7Z0JBQ25DLE1BQU0sSUFBSSxLQUFLLENBQUMsbUhBQW1ILENBQUMsQ0FBQzthQUN0STtZQUVELElBQUksSUFBSSxJQUFJLFdBQVcsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDO1NBQ3pDO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDOztBQXZGSCxzQ0F3RkMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG5cblxuaW1wb3J0ICogYXMgY2hpbGRfcHJvY2VzcyBmcm9tICdjaGlsZF9wcm9jZXNzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBhd3NfZWMyIGFzIGVjMiwgYXdzX2lhbSBhcyBpYW0sIGF3c19sYW1iZGEgYXMgbGFtYmRhLCBEdXJhdGlvbiwgQ3VzdG9tUmVzb3VyY2UsIFRva2VuIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgUG9saWN5U3RhdGVtZW50LCBBZGRUb1ByaW5jaXBhbFBvbGljeVJlc3VsdCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBzaG91bGRVc2VQcmVidWlsdExhbWJkYSB9IGZyb20gJy4vY29uZmlnJztcblxuZXhwb3J0IGludGVyZmFjZSBFQ1JEZXBsb3ltZW50UHJvcHMge1xuXG4gIC8qKlxuICAgKiBJbWFnZSB0byB1c2UgdG8gYnVpbGQgR29sYW5nIGxhbWJkYSBmb3IgY3VzdG9tIHJlc291cmNlLCBpZiBkb3dubG9hZCBmYWlscyBvciBpcyBub3Qgd2FudGVkLlxuICAgKlxuICAgKiBNaWdodCBiZSBuZWVkZWQgZm9yIGxvY2FsIGJ1aWxkIGlmIGFsbCBpbWFnZXMgbmVlZCB0byBjb21lIGZyb20gb3duIHJlZ2lzdHJ5LlxuICAgKlxuICAgKiBOb3RlIHRoYXQgaW1hZ2Ugc2hvdWxkIHVzZSB5dW0gYXMgYSBwYWNrYWdlIG1hbmFnZXIgYW5kIGhhdmUgZ29sYW5nIGF2YWlsYWJsZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBwdWJsaWMuZWNyLmF3cy9zYW0vYnVpbGQtZ28xLng6bGF0ZXN0XG4gICAqL1xuICByZWFkb25seSBidWlsZEltYWdlPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHNvdXJjZSBvZiB0aGUgZG9ja2VyIGltYWdlLlxuICAgKi9cbiAgcmVhZG9ubHkgc3JjOiBJSW1hZ2VOYW1lO1xuXG4gIC8qKlxuICAgKiBUaGUgZGVzdGluYXRpb24gb2YgdGhlIGRvY2tlciBpbWFnZS5cbiAgICovXG4gIHJlYWRvbmx5IGRlc3Q6IElJbWFnZU5hbWU7XG5cbiAgLyoqXG4gICAqIFRoZSBhbW91bnQgb2YgbWVtb3J5IChpbiBNaUIpIHRvIGFsbG9jYXRlIHRvIHRoZSBBV1MgTGFtYmRhIGZ1bmN0aW9uIHdoaWNoXG4gICAqIHJlcGxpY2F0ZXMgdGhlIGZpbGVzIGZyb20gdGhlIENESyBidWNrZXQgdG8gdGhlIGRlc3RpbmF0aW9uIGJ1Y2tldC5cbiAgICpcbiAgICogSWYgeW91IGFyZSBkZXBsb3lpbmcgbGFyZ2UgZmlsZXMsIHlvdSB3aWxsIG5lZWQgdG8gaW5jcmVhc2UgdGhpcyBudW1iZXJcbiAgICogYWNjb3JkaW5nbHkuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gNTEyXG4gICAqL1xuICByZWFkb25seSBtZW1vcnlMaW1pdD86IG51bWJlcjtcblxuICAvKipcbiAgICogRXhlY3V0aW9uIHJvbGUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZnVuY3Rpb25cbiAgICpcbiAgICogQGRlZmF1bHQgLSBBIHJvbGUgaXMgYXV0b21hdGljYWxseSBjcmVhdGVkXG4gICAqL1xuICByZWFkb25seSByb2xlPzogaWFtLklSb2xlO1xuXG4gIC8qKlxuICAgKiBUaGUgVlBDIG5ldHdvcmsgdG8gcGxhY2UgdGhlIGRlcGxveW1lbnQgbGFtYmRhIGhhbmRsZXIgaW4uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgdnBjPzogZWMyLklWcGM7XG5cbiAgLyoqXG4gICAqIFdoZXJlIGluIHRoZSBWUEMgdG8gcGxhY2UgdGhlIGRlcGxveW1lbnQgbGFtYmRhIGhhbmRsZXIuXG4gICAqIE9ubHkgdXNlZCBpZiAndnBjJyBpcyBzdXBwbGllZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB0aGUgVnBjIGRlZmF1bHQgc3RyYXRlZ3kgaWYgbm90IHNwZWNpZmllZFxuICAgKi9cbiAgcmVhZG9ubHkgdnBjU3VibmV0cz86IGVjMi5TdWJuZXRTZWxlY3Rpb247XG5cbiAgLyoqXG4gICAqIFRoZSBsaXN0IG9mIHNlY3VyaXR5IGdyb3VwcyB0byBhc3NvY2lhdGUgd2l0aCB0aGUgTGFtYmRhJ3MgbmV0d29yayBpbnRlcmZhY2VzLlxuICAgKlxuICAgKiBPbmx5IHVzZWQgaWYgJ3ZwYycgaXMgc3VwcGxpZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gSWYgdGhlIGZ1bmN0aW9uIGlzIHBsYWNlZCB3aXRoaW4gYSBWUEMgYW5kIGEgc2VjdXJpdHkgZ3JvdXAgaXNcbiAgICogbm90IHNwZWNpZmllZCwgZWl0aGVyIGJ5IHRoaXMgb3Igc2VjdXJpdHlHcm91cCBwcm9wLCBhIGRlZGljYXRlZCBzZWN1cml0eVxuICAgKiBncm91cCB3aWxsIGJlIGNyZWF0ZWQgZm9yIHRoaXMgZnVuY3Rpb24uXG4gICAqL1xuICByZWFkb25seSBzZWN1cml0eUdyb3Vwcz86IGVjMi5TZWN1cml0eUdyb3VwW107XG5cbiAgLyoqXG4gICAqIFRoZSBsYW1iZGEgZnVuY3Rpb24gcnVudGltZSBlbnZpcm9ubWVudC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBsYW1iZGEuUnVudGltZS5QUk9WSURFRF9BTDIwMjNcbiAgICovXG4gIHJlYWRvbmx5IGxhbWJkYVJ1bnRpbWU/OiBsYW1iZGEuUnVudGltZTtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGxhbWJkYSBoYW5kbGVyLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGJvb3RzdHJhcFxuICAgKi9cbiAgcmVhZG9ubHkgbGFtYmRhSGFuZGxlcj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIHNldFxuICAgKi9cbiAgcmVhZG9ubHkgZW52aXJvbm1lbnQ/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElJbWFnZU5hbWUge1xuICAvKipcbiAgICogIFRoZSB1cmkgb2YgdGhlIGRvY2tlciBpbWFnZS5cbiAgICpcbiAgICogIFRoZSB1cmkgc3BlYyBmb2xsb3dzIGh0dHBzOi8vZ2l0aHViLmNvbS9jb250YWluZXJzL3Nrb3Blb1xuICAgKi9cbiAgcmVhZG9ubHkgdXJpOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBjcmVkZW50aWFscyBvZiB0aGUgZG9ja2VyIGltYWdlLiBGb3JtYXQgYHVzZXI6cGFzc3dvcmRgIG9yIGBBV1MgU2VjcmV0cyBNYW5hZ2VyIHNlY3JldCBhcm5gIG9yIGBBV1MgU2VjcmV0cyBNYW5hZ2VyIHNlY3JldCBuYW1lYFxuICAgKi9cbiAgY3JlZHM/OiBzdHJpbmc7XG59XG5cbmZ1bmN0aW9uIGdldENvZGUoYnVpbGRJbWFnZTogc3RyaW5nKTogbGFtYmRhLkFzc2V0Q29kZSB7XG4gIGlmIChzaG91bGRVc2VQcmVidWlsdExhbWJkYSgpKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGluc3RhbGxTY3JpcHQgPSBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4vbGFtYmRhL2luc3RhbGwuanMnKTtcbiAgICAgIGNvbnN0IHByZWJ1aWx0UGF0aCA9IHBhdGguam9pbihfX2Rpcm5hbWUsICcuLi9sYW1iZGEvb3V0Jyk7XG4gICAgICBjaGlsZF9wcm9jZXNzLmV4ZWNGaWxlU3luYyhwcm9jZXNzLmFyZ3YwLCBbaW5zdGFsbFNjcmlwdCwgcHJlYnVpbHRQYXRoXSk7XG5cbiAgICAgIHJldHVybiBsYW1iZGEuQ29kZS5mcm9tQXNzZXQocHJlYnVpbHRQYXRoKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGNvbnNvbGUud2FybihgQ2FuIG5vdCBnZXQgcHJlYnVpbHQgbGFtYmRhOiAke2Vycn1gKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbGFtYmRhLkNvZGUuZnJvbURvY2tlckJ1aWxkKHBhdGguam9pbihfX2Rpcm5hbWUsICcuLi9sYW1iZGEnKSwge1xuICAgIGJ1aWxkQXJnczoge1xuICAgICAgYnVpbGRJbWFnZSxcbiAgICB9LFxuICB9KTtcbn1cblxuZXhwb3J0IGNsYXNzIERvY2tlckltYWdlTmFtZSBpbXBsZW1lbnRzIElJbWFnZU5hbWUge1xuICBwdWJsaWMgY29uc3RydWN0b3IocHJpdmF0ZSBuYW1lOiBzdHJpbmcsIHB1YmxpYyBjcmVkcz86IHN0cmluZykgeyB9XG4gIHB1YmxpYyBnZXQgdXJpKCk6IHN0cmluZyB7IHJldHVybiBgZG9ja2VyOi8vJHt0aGlzLm5hbWV9YDsgfVxufVxuXG5leHBvcnQgY2xhc3MgUzNBcmNoaXZlTmFtZSBpbXBsZW1lbnRzIElJbWFnZU5hbWUge1xuICBwcml2YXRlIG5hbWU6IHN0cmluZztcbiAgcHVibGljIGNvbnN0cnVjdG9yKHA6IHN0cmluZywgcmVmPzogc3RyaW5nLCBwdWJsaWMgY3JlZHM/OiBzdHJpbmcpIHtcbiAgICB0aGlzLm5hbWUgPSBwO1xuICAgIGlmIChyZWYpIHtcbiAgICAgIHRoaXMubmFtZSArPSAnOicgKyByZWY7XG4gICAgfVxuICB9XG4gIHB1YmxpYyBnZXQgdXJpKCk6IHN0cmluZyB7IHJldHVybiBgczM6Ly8ke3RoaXMubmFtZX1gOyB9XG59XG5cbmV4cG9ydCBjbGFzcyBFQ1JEZXBsb3ltZW50IGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcHJpdmF0ZSBoYW5kbGVyOiBsYW1iZGEuU2luZ2xldG9uRnVuY3Rpb247XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEVDUkRlcGxveW1lbnRQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgY29uc3QgbWVtb3J5TGltaXQgPSBwcm9wcy5tZW1vcnlMaW1pdCA/PyA1MTI7XG4gICAgdGhpcy5oYW5kbGVyID0gbmV3IGxhbWJkYS5TaW5nbGV0b25GdW5jdGlvbih0aGlzLCAnQ3VzdG9tUmVzb3VyY2VIYW5kbGVyJywge1xuICAgICAgdXVpZDogdGhpcy5yZW5kZXJTaW5nbGV0b25VdWlkKG1lbW9yeUxpbWl0KSxcbiAgICAgIGNvZGU6IGdldENvZGUocHJvcHMuYnVpbGRJbWFnZSA/PyAnZ29sYW5nOjEnKSxcbiAgICAgIHJ1bnRpbWU6IHByb3BzLmxhbWJkYVJ1bnRpbWUgPz8gbGFtYmRhLlJ1bnRpbWUuUFJPVklERURfQUwyMDIzLFxuICAgICAgaGFuZGxlcjogcHJvcHMubGFtYmRhSGFuZGxlciA/PyAnYm9vdHN0cmFwJyxcbiAgICAgIGVudmlyb25tZW50OiBwcm9wcy5lbnZpcm9ubWVudCxcbiAgICAgIGxhbWJkYVB1cnBvc2U6ICdDdXN0b206OkNES0VDUkRlcGxveW1lbnQnLFxuICAgICAgdGltZW91dDogRHVyYXRpb24ubWludXRlcygxNSksXG4gICAgICByb2xlOiBwcm9wcy5yb2xlLFxuICAgICAgbWVtb3J5U2l6ZTogbWVtb3J5TGltaXQsXG4gICAgICB2cGM6IHByb3BzLnZwYyxcbiAgICAgIHZwY1N1Ym5ldHM6IHByb3BzLnZwY1N1Ym5ldHMsXG4gICAgICBzZWN1cml0eUdyb3VwczogcHJvcHMuc2VjdXJpdHlHcm91cHMsXG4gICAgfSk7XG5cbiAgICBjb25zdCBoYW5kbGVyUm9sZSA9IHRoaXMuaGFuZGxlci5yb2xlO1xuICAgIGlmICghaGFuZGxlclJvbGUpIHsgdGhyb3cgbmV3IEVycm9yKCdsYW1iZGEuU2luZ2xldG9uRnVuY3Rpb24gc2hvdWxkIGhhdmUgY3JlYXRlZCBhIFJvbGUnKTsgfVxuXG4gICAgaGFuZGxlclJvbGUuYWRkVG9QcmluY2lwYWxQb2xpY3koXG4gICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGVmZmVjdDogaWFtLkVmZmVjdC5BTExPVyxcbiAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICdlY3I6R2V0QXV0aG9yaXphdGlvblRva2VuJyxcbiAgICAgICAgICAnZWNyOkJhdGNoQ2hlY2tMYXllckF2YWlsYWJpbGl0eScsXG4gICAgICAgICAgJ2VjcjpHZXREb3dubG9hZFVybEZvckxheWVyJyxcbiAgICAgICAgICAnZWNyOkdldFJlcG9zaXRvcnlQb2xpY3knLFxuICAgICAgICAgICdlY3I6RGVzY3JpYmVSZXBvc2l0b3JpZXMnLFxuICAgICAgICAgICdlY3I6TGlzdEltYWdlcycsXG4gICAgICAgICAgJ2VjcjpEZXNjcmliZUltYWdlcycsXG4gICAgICAgICAgJ2VjcjpCYXRjaEdldEltYWdlJyxcbiAgICAgICAgICAnZWNyOkxpc3RUYWdzRm9yUmVzb3VyY2UnLFxuICAgICAgICAgICdlY3I6RGVzY3JpYmVJbWFnZVNjYW5GaW5kaW5ncycsXG4gICAgICAgICAgJ2VjcjpJbml0aWF0ZUxheWVyVXBsb2FkJyxcbiAgICAgICAgICAnZWNyOlVwbG9hZExheWVyUGFydCcsXG4gICAgICAgICAgJ2VjcjpDb21wbGV0ZUxheWVyVXBsb2FkJyxcbiAgICAgICAgICAnZWNyOlB1dEltYWdlJyxcbiAgICAgICAgXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbJyonXSxcbiAgICAgIH0pKTtcbiAgICBoYW5kbGVyUm9sZS5hZGRUb1ByaW5jaXBhbFBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICBlZmZlY3Q6IGlhbS5FZmZlY3QuQUxMT1csXG4gICAgICBhY3Rpb25zOiBbXG4gICAgICAgICdzMzpHZXRPYmplY3QnLFxuICAgICAgXSxcbiAgICAgIHJlc291cmNlczogWycqJ10sXG4gICAgfSkpO1xuXG4gICAgbmV3IEN1c3RvbVJlc291cmNlKHRoaXMsICdDdXN0b21SZXNvdXJjZScsIHtcbiAgICAgIHNlcnZpY2VUb2tlbjogdGhpcy5oYW5kbGVyLmZ1bmN0aW9uQXJuLFxuICAgICAgcmVzb3VyY2VUeXBlOiAnQ3VzdG9tOjpDREtCdWNrZXREZXBsb3ltZW50JyxcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgU3JjSW1hZ2U6IHByb3BzLnNyYy51cmksXG4gICAgICAgIFNyY0NyZWRzOiBwcm9wcy5zcmMuY3JlZHMsXG4gICAgICAgIERlc3RJbWFnZTogcHJvcHMuZGVzdC51cmksXG4gICAgICAgIERlc3RDcmVkczogcHJvcHMuZGVzdC5jcmVkcyxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYWRkVG9QcmluY2lwYWxQb2xpY3koc3RhdGVtZW50OiBQb2xpY3lTdGF0ZW1lbnQpOiBBZGRUb1ByaW5jaXBhbFBvbGljeVJlc3VsdCB7XG4gICAgY29uc3QgaGFuZGxlclJvbGUgPSB0aGlzLmhhbmRsZXIucm9sZTtcbiAgICBpZiAoIWhhbmRsZXJSb2xlKSB7IHRocm93IG5ldyBFcnJvcignbGFtYmRhLlNpbmdsZXRvbkZ1bmN0aW9uIHNob3VsZCBoYXZlIGNyZWF0ZWQgYSBSb2xlJyk7IH1cblxuICAgIHJldHVybiBoYW5kbGVyUm9sZS5hZGRUb1ByaW5jaXBhbFBvbGljeShzdGF0ZW1lbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXJTaW5nbGV0b25VdWlkKG1lbW9yeUxpbWl0PzogbnVtYmVyKSB7XG4gICAgbGV0IHV1aWQgPSAnYmQwN2M5MzAtZWRiOS00MTEyLWEyMGYtMDNmMDk2ZjUzNjY2JztcblxuICAgIC8vIGlmIHVzZXIgc3BlY2lmeSBhIGN1c3RvbSBtZW1vcnkgbGltaXQsIGRlZmluZSBhbm90aGVyIHNpbmdsZXRvbiBoYW5kbGVyXG4gICAgLy8gd2l0aCB0aGlzIGNvbmZpZ3VyYXRpb24uIG90aGVyd2lzZSwgaXQgd29uJ3QgYmUgcG9zc2libGUgdG8gdXNlIG11bHRpcGxlXG4gICAgLy8gY29uZmlndXJhdGlvbnMgc2luY2Ugd2UgaGF2ZSBhIHNpbmdsZXRvbi5cbiAgICBpZiAobWVtb3J5TGltaXQpIHtcbiAgICAgIGlmIChUb2tlbi5pc1VucmVzb2x2ZWQobWVtb3J5TGltaXQpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQ2FuXFwndCB1c2UgdG9rZW5zIHdoZW4gc3BlY2lmeWluZyBcIm1lbW9yeUxpbWl0XCIgc2luY2Ugd2UgdXNlIGl0IHRvIGlkZW50aWZ5IHRoZSBzaW5nbGV0b24gY3VzdG9tIHJlc291cmNlIGhhbmRsZXInKTtcbiAgICAgIH1cblxuICAgICAgdXVpZCArPSBgLSR7bWVtb3J5TGltaXQudG9TdHJpbmcoKX1NaUJgO1xuICAgIH1cblxuICAgIHJldHVybiB1dWlkO1xuICB9XG59XG4iXX0=
@@ -8,7 +8,7 @@ This package contains type definitions for node (https://nodejs.org/).
8
8
  Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node.
9
9
 
10
10
  ### Additional Details
11
- * Last updated: Wed, 05 Jun 2024 07:35:45 GMT
11
+ * Last updated: Wed, 19 Jun 2024 16:07:46 GMT
12
12
  * Dependencies: [undici-types](https://npmjs.com/package/undici-types)
13
13
 
14
14
  # Credits
@@ -360,30 +360,32 @@ declare module "dns/promises" {
360
360
  * @param order must be `'ipv4first'`, `'ipv6first'` or `'verbatim'`.
361
361
  */
362
362
  function setDefaultResultOrder(order: "ipv4first" | "ipv6first" | "verbatim"): void;
363
- const NODATA: "NODATA";
364
- const FORMERR: "FORMERR";
365
- const SERVFAIL: "SERVFAIL";
366
- const NOTFOUND: "NOTFOUND";
367
- const NOTIMP: "NOTIMP";
368
- const REFUSED: "REFUSED";
369
- const BADQUERY: "BADQUERY";
370
- const BADNAME: "BADNAME";
371
- const BADFAMILY: "BADFAMILY";
372
- const BADRESP: "BADRESP";
373
- const CONNREFUSED: "TIMEOUT";
374
- const TIMEOUT: "TIMEOUT";
363
+ // Error codes
364
+ const NODATA: "ENODATA";
365
+ const FORMERR: "EFORMERR";
366
+ const SERVFAIL: "ESERVFAIL";
367
+ const NOTFOUND: "ENOTFOUND";
368
+ const NOTIMP: "ENOTIMP";
369
+ const REFUSED: "EREFUSED";
370
+ const BADQUERY: "EBADQUERY";
371
+ const BADNAME: "EBADNAME";
372
+ const BADFAMILY: "EBADFAMILY";
373
+ const BADRESP: "EBADRESP";
374
+ const CONNREFUSED: "ECONNREFUSED";
375
+ const TIMEOUT: "ETIMEOUT";
375
376
  const EOF: "EOF";
376
- const FILE: "FILE";
377
- const NOMEM: "NOMEM";
378
- const DESTRUCTION: "DESTRUCTION";
379
- const BADSTR: "BADSTR";
380
- const BADFLAGS: "BADFLAGS";
381
- const NONAME: "NONAME";
382
- const BADHINTS: "BADHINTS";
383
- const NOTINITIALIZED: "NOTINITIALIZED";
384
- const LOADIPHLPAPI: "LOADIPHLPAPI";
385
- const ADDRGETNETWORKPARAMS: "ADDRGETNETWORKPARAMS";
386
- const CANCELLED: "CANCELLED";
377
+ const FILE: "EFILE";
378
+ const NOMEM: "ENOMEM";
379
+ const DESTRUCTION: "EDESTRUCTION";
380
+ const BADSTR: "EBADSTR";
381
+ const BADFLAGS: "EBADFLAGS";
382
+ const NONAME: "ENONAME";
383
+ const BADHINTS: "EBADHINTS";
384
+ const NOTINITIALIZED: "ENOTINITIALIZED";
385
+ const LOADIPHLPAPI: "ELOADIPHLPAPI";
386
+ const ADDRGETNETWORKPARAMS: "EADDRGETNETWORKPARAMS";
387
+ const CANCELLED: "ECANCELLED";
388
+
387
389
  /**
388
390
  * An independent resolver for DNS requests.
389
391
  *
@@ -743,30 +743,30 @@ declare module "dns" {
743
743
  */
744
744
  export function setDefaultResultOrder(order: "ipv4first" | "ipv6first" | "verbatim"): void;
745
745
  // Error codes
746
- export const NODATA: "NODATA";
747
- export const FORMERR: "FORMERR";
748
- export const SERVFAIL: "SERVFAIL";
749
- export const NOTFOUND: "NOTFOUND";
750
- export const NOTIMP: "NOTIMP";
751
- export const REFUSED: "REFUSED";
752
- export const BADQUERY: "BADQUERY";
753
- export const BADNAME: "BADNAME";
754
- export const BADFAMILY: "BADFAMILY";
755
- export const BADRESP: "BADRESP";
756
- export const CONNREFUSED: "TIMEOUT";
757
- export const TIMEOUT: "TIMEOUT";
746
+ export const NODATA: "ENODATA";
747
+ export const FORMERR: "EFORMERR";
748
+ export const SERVFAIL: "ESERVFAIL";
749
+ export const NOTFOUND: "ENOTFOUND";
750
+ export const NOTIMP: "ENOTIMP";
751
+ export const REFUSED: "EREFUSED";
752
+ export const BADQUERY: "EBADQUERY";
753
+ export const BADNAME: "EBADNAME";
754
+ export const BADFAMILY: "EBADFAMILY";
755
+ export const BADRESP: "EBADRESP";
756
+ export const CONNREFUSED: "ECONNREFUSED";
757
+ export const TIMEOUT: "ETIMEOUT";
758
758
  export const EOF: "EOF";
759
- export const FILE: "FILE";
760
- export const NOMEM: "NOMEM";
761
- export const DESTRUCTION: "DESTRUCTION";
762
- export const BADSTR: "BADSTR";
763
- export const BADFLAGS: "BADFLAGS";
764
- export const NONAME: "NONAME";
765
- export const BADHINTS: "BADHINTS";
766
- export const NOTINITIALIZED: "NOTINITIALIZED";
767
- export const LOADIPHLPAPI: "LOADIPHLPAPI";
768
- export const ADDRGETNETWORKPARAMS: "ADDRGETNETWORKPARAMS";
769
- export const CANCELLED: "CANCELLED";
759
+ export const FILE: "EFILE";
760
+ export const NOMEM: "ENOMEM";
761
+ export const DESTRUCTION: "EDESTRUCTION";
762
+ export const BADSTR: "EBADSTR";
763
+ export const BADFLAGS: "EBADFLAGS";
764
+ export const NONAME: "ENONAME";
765
+ export const BADHINTS: "EBADHINTS";
766
+ export const NOTINITIALIZED: "ENOTINITIALIZED";
767
+ export const LOADIPHLPAPI: "ELOADIPHLPAPI";
768
+ export const ADDRGETNETWORKPARAMS: "EADDRGETNETWORKPARAMS";
769
+ export const CANCELLED: "ECANCELLED";
770
770
  export interface ResolverOptions {
771
771
  /**
772
772
  * Query timeout in milliseconds, or `-1` to use the default timeout.
@@ -98,6 +98,22 @@ declare module "events" {
98
98
  */
99
99
  lowWaterMark?: number | undefined;
100
100
  }
101
+ interface StaticEventEmitterIteratorOptions extends StaticEventEmitterOptions {
102
+ /**
103
+ * Names of events that will end the iteration.
104
+ */
105
+ close?: string[];
106
+ /**
107
+ * The emitter is paused every time the size of events being buffered is higher than it. Supported only on emitters implementing pause() and resume() methods.
108
+ * @default Number.MAX_SAFE_INTEGER
109
+ */
110
+ highWaterMark?: number;
111
+ /**
112
+ * The emitter is resumed every time the size of events being buffered is lower than it. Supported only on emitters implementing pause() and resume() methods.
113
+ * @default 1
114
+ */
115
+ lowWaterMark?: number;
116
+ }
101
117
  interface EventEmitter<T extends EventMap<T> = DefaultEventMap> extends NodeJS.EventEmitter<T> {}
102
118
  type EventMap<T> = Record<keyof T, any[]> | DefaultEventMap;
103
119
  type DefaultEventMap = [never];
@@ -274,6 +290,28 @@ declare module "events" {
274
290
  *
275
291
  * process.nextTick(() => ac.abort());
276
292
  * ```
293
+ *
294
+ * Use the `close` option to specify an array of event names that will end the iteration:
295
+ *
296
+ * ```js
297
+ * import { on, EventEmitter } from 'node:events';
298
+ * import process from 'node:process';
299
+ *
300
+ * const ee = new EventEmitter();
301
+ *
302
+ * // Emit later on
303
+ * process.nextTick(() => {
304
+ * ee.emit('foo', 'bar');
305
+ * ee.emit('foo', 42);
306
+ * ee.emit('close');
307
+ * });
308
+ *
309
+ * for await (const event of on(ee, 'foo', { close: ['close'] })) {
310
+ * console.log(event); // prints ['bar'] [42]
311
+ * }
312
+ * // the loop will exit after 'close' is emitted
313
+ * console.log('done'); // prints 'done'
314
+ * ```
277
315
  * @since v13.6.0, v12.16.0
278
316
  * @param eventName The name of the event being listened for
279
317
  * @return An `AsyncIterator` that iterates `eventName` events emitted by the `emitter`
@@ -286,7 +324,7 @@ declare module "events" {
286
324
  static on(
287
325
  emitter: EventTarget,
288
326
  eventName: string,
289
- options?: StaticEventEmitterOptions,
327
+ options?: StaticEventEmitterIteratorOptions,
290
328
  ): AsyncIterableIterator<any>;
291
329
  /**
292
330
  * A class method that returns the number of listeners for the given `eventName` registered on the given `emitter`.
@@ -96,6 +96,7 @@ declare global {
96
96
  new(): AbortSignal;
97
97
  abort(reason?: any): AbortSignal;
98
98
  timeout(milliseconds: number): AbortSignal;
99
+ any(signals: AbortSignal[]): AbortSignal;
99
100
  };
100
101
  // #endregion borrowed
101
102
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@types/node",
3
- "version": "20.14.2",
3
+ "version": "20.14.6",
4
4
  "description": "TypeScript definitions for node",
5
5
  "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node",
6
6
  "license": "MIT",
@@ -212,6 +212,6 @@
212
212
  "dependencies": {
213
213
  "undici-types": "~5.26.4"
214
214
  },
215
- "typesPublisherContentHash": "43d05c87d286b3893e501b24310b8f43081bf151b225e4d88d87af1cf32fb63d",
215
+ "typesPublisherContentHash": "7ad87ee86165e98ba92d3e3f4bd58e162ffc58fa84208518416853f7f0f704fc",
216
216
  "typeScriptVersion": "4.7"
217
217
  }
@@ -237,6 +237,9 @@ declare module "worker_threads" {
237
237
  off(event: "message", listener: (value: any) => void): this;
238
238
  off(event: "messageerror", listener: (error: Error) => void): this;
239
239
  off(event: string | symbol, listener: (...args: any[]) => void): this;
240
+ addEventListener: EventTarget["addEventListener"];
241
+ dispatchEvent: EventTarget["dispatchEvent"];
242
+ removeEventListener: EventTarget["removeEventListener"];
240
243
  }
241
244
  interface WorkerOptions {
242
245
  /**
@@ -8,7 +8,7 @@ This package contains type definitions for node (https://nodejs.org/).
8
8
  Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node.
9
9
 
10
10
  ### Additional Details
11
- * Last updated: Wed, 05 Jun 2024 07:35:45 GMT
11
+ * Last updated: Wed, 19 Jun 2024 16:07:46 GMT
12
12
  * Dependencies: [undici-types](https://npmjs.com/package/undici-types)
13
13
 
14
14
  # Credits
@@ -360,30 +360,32 @@ declare module "dns/promises" {
360
360
  * @param order must be `'ipv4first'`, `'ipv6first'` or `'verbatim'`.
361
361
  */
362
362
  function setDefaultResultOrder(order: "ipv4first" | "ipv6first" | "verbatim"): void;
363
- const NODATA: "NODATA";
364
- const FORMERR: "FORMERR";
365
- const SERVFAIL: "SERVFAIL";
366
- const NOTFOUND: "NOTFOUND";
367
- const NOTIMP: "NOTIMP";
368
- const REFUSED: "REFUSED";
369
- const BADQUERY: "BADQUERY";
370
- const BADNAME: "BADNAME";
371
- const BADFAMILY: "BADFAMILY";
372
- const BADRESP: "BADRESP";
373
- const CONNREFUSED: "TIMEOUT";
374
- const TIMEOUT: "TIMEOUT";
363
+ // Error codes
364
+ const NODATA: "ENODATA";
365
+ const FORMERR: "EFORMERR";
366
+ const SERVFAIL: "ESERVFAIL";
367
+ const NOTFOUND: "ENOTFOUND";
368
+ const NOTIMP: "ENOTIMP";
369
+ const REFUSED: "EREFUSED";
370
+ const BADQUERY: "EBADQUERY";
371
+ const BADNAME: "EBADNAME";
372
+ const BADFAMILY: "EBADFAMILY";
373
+ const BADRESP: "EBADRESP";
374
+ const CONNREFUSED: "ECONNREFUSED";
375
+ const TIMEOUT: "ETIMEOUT";
375
376
  const EOF: "EOF";
376
- const FILE: "FILE";
377
- const NOMEM: "NOMEM";
378
- const DESTRUCTION: "DESTRUCTION";
379
- const BADSTR: "BADSTR";
380
- const BADFLAGS: "BADFLAGS";
381
- const NONAME: "NONAME";
382
- const BADHINTS: "BADHINTS";
383
- const NOTINITIALIZED: "NOTINITIALIZED";
384
- const LOADIPHLPAPI: "LOADIPHLPAPI";
385
- const ADDRGETNETWORKPARAMS: "ADDRGETNETWORKPARAMS";
386
- const CANCELLED: "CANCELLED";
377
+ const FILE: "EFILE";
378
+ const NOMEM: "ENOMEM";
379
+ const DESTRUCTION: "EDESTRUCTION";
380
+ const BADSTR: "EBADSTR";
381
+ const BADFLAGS: "EBADFLAGS";
382
+ const NONAME: "ENONAME";
383
+ const BADHINTS: "EBADHINTS";
384
+ const NOTINITIALIZED: "ENOTINITIALIZED";
385
+ const LOADIPHLPAPI: "ELOADIPHLPAPI";
386
+ const ADDRGETNETWORKPARAMS: "EADDRGETNETWORKPARAMS";
387
+ const CANCELLED: "ECANCELLED";
388
+
387
389
  /**
388
390
  * An independent resolver for DNS requests.
389
391
  *
@@ -743,30 +743,30 @@ declare module "dns" {
743
743
  */
744
744
  export function setDefaultResultOrder(order: "ipv4first" | "ipv6first" | "verbatim"): void;
745
745
  // Error codes
746
- export const NODATA: "NODATA";
747
- export const FORMERR: "FORMERR";
748
- export const SERVFAIL: "SERVFAIL";
749
- export const NOTFOUND: "NOTFOUND";
750
- export const NOTIMP: "NOTIMP";
751
- export const REFUSED: "REFUSED";
752
- export const BADQUERY: "BADQUERY";
753
- export const BADNAME: "BADNAME";
754
- export const BADFAMILY: "BADFAMILY";
755
- export const BADRESP: "BADRESP";
756
- export const CONNREFUSED: "TIMEOUT";
757
- export const TIMEOUT: "TIMEOUT";
746
+ export const NODATA: "ENODATA";
747
+ export const FORMERR: "EFORMERR";
748
+ export const SERVFAIL: "ESERVFAIL";
749
+ export const NOTFOUND: "ENOTFOUND";
750
+ export const NOTIMP: "ENOTIMP";
751
+ export const REFUSED: "EREFUSED";
752
+ export const BADQUERY: "EBADQUERY";
753
+ export const BADNAME: "EBADNAME";
754
+ export const BADFAMILY: "EBADFAMILY";
755
+ export const BADRESP: "EBADRESP";
756
+ export const CONNREFUSED: "ECONNREFUSED";
757
+ export const TIMEOUT: "ETIMEOUT";
758
758
  export const EOF: "EOF";
759
- export const FILE: "FILE";
760
- export const NOMEM: "NOMEM";
761
- export const DESTRUCTION: "DESTRUCTION";
762
- export const BADSTR: "BADSTR";
763
- export const BADFLAGS: "BADFLAGS";
764
- export const NONAME: "NONAME";
765
- export const BADHINTS: "BADHINTS";
766
- export const NOTINITIALIZED: "NOTINITIALIZED";
767
- export const LOADIPHLPAPI: "LOADIPHLPAPI";
768
- export const ADDRGETNETWORKPARAMS: "ADDRGETNETWORKPARAMS";
769
- export const CANCELLED: "CANCELLED";
759
+ export const FILE: "EFILE";
760
+ export const NOMEM: "ENOMEM";
761
+ export const DESTRUCTION: "EDESTRUCTION";
762
+ export const BADSTR: "EBADSTR";
763
+ export const BADFLAGS: "EBADFLAGS";
764
+ export const NONAME: "ENONAME";
765
+ export const BADHINTS: "EBADHINTS";
766
+ export const NOTINITIALIZED: "ENOTINITIALIZED";
767
+ export const LOADIPHLPAPI: "ELOADIPHLPAPI";
768
+ export const ADDRGETNETWORKPARAMS: "EADDRGETNETWORKPARAMS";
769
+ export const CANCELLED: "ECANCELLED";
770
770
  export interface ResolverOptions {
771
771
  /**
772
772
  * Query timeout in milliseconds, or `-1` to use the default timeout.
@@ -98,6 +98,22 @@ declare module "events" {
98
98
  */
99
99
  lowWaterMark?: number | undefined;
100
100
  }
101
+ interface StaticEventEmitterIteratorOptions extends StaticEventEmitterOptions {
102
+ /**
103
+ * Names of events that will end the iteration.
104
+ */
105
+ close?: string[];
106
+ /**
107
+ * The emitter is paused every time the size of events being buffered is higher than it. Supported only on emitters implementing pause() and resume() methods.
108
+ * @default Number.MAX_SAFE_INTEGER
109
+ */
110
+ highWaterMark?: number;
111
+ /**
112
+ * The emitter is resumed every time the size of events being buffered is lower than it. Supported only on emitters implementing pause() and resume() methods.
113
+ * @default 1
114
+ */
115
+ lowWaterMark?: number;
116
+ }
101
117
  interface EventEmitter<T extends EventMap<T> = DefaultEventMap> extends NodeJS.EventEmitter<T> {}
102
118
  type EventMap<T> = Record<keyof T, any[]> | DefaultEventMap;
103
119
  type DefaultEventMap = [never];
@@ -274,6 +290,28 @@ declare module "events" {
274
290
  *
275
291
  * process.nextTick(() => ac.abort());
276
292
  * ```
293
+ *
294
+ * Use the `close` option to specify an array of event names that will end the iteration:
295
+ *
296
+ * ```js
297
+ * import { on, EventEmitter } from 'node:events';
298
+ * import process from 'node:process';
299
+ *
300
+ * const ee = new EventEmitter();
301
+ *
302
+ * // Emit later on
303
+ * process.nextTick(() => {
304
+ * ee.emit('foo', 'bar');
305
+ * ee.emit('foo', 42);
306
+ * ee.emit('close');
307
+ * });
308
+ *
309
+ * for await (const event of on(ee, 'foo', { close: ['close'] })) {
310
+ * console.log(event); // prints ['bar'] [42]
311
+ * }
312
+ * // the loop will exit after 'close' is emitted
313
+ * console.log('done'); // prints 'done'
314
+ * ```
277
315
  * @since v13.6.0, v12.16.0
278
316
  * @param eventName The name of the event being listened for
279
317
  * @return An `AsyncIterator` that iterates `eventName` events emitted by the `emitter`
@@ -286,7 +324,7 @@ declare module "events" {
286
324
  static on(
287
325
  emitter: EventTarget,
288
326
  eventName: string,
289
- options?: StaticEventEmitterOptions,
327
+ options?: StaticEventEmitterIteratorOptions,
290
328
  ): AsyncIterableIterator<any>;
291
329
  /**
292
330
  * A class method that returns the number of listeners for the given `eventName` registered on the given `emitter`.
@@ -96,6 +96,7 @@ declare global {
96
96
  new(): AbortSignal;
97
97
  abort(reason?: any): AbortSignal;
98
98
  timeout(milliseconds: number): AbortSignal;
99
+ any(signals: AbortSignal[]): AbortSignal;
99
100
  };
100
101
  // #endregion borrowed
101
102
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@types/node",
3
- "version": "20.14.2",
3
+ "version": "20.14.6",
4
4
  "description": "TypeScript definitions for node",
5
5
  "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node",
6
6
  "license": "MIT",
@@ -212,6 +212,6 @@
212
212
  "dependencies": {
213
213
  "undici-types": "~5.26.4"
214
214
  },
215
- "typesPublisherContentHash": "43d05c87d286b3893e501b24310b8f43081bf151b225e4d88d87af1cf32fb63d",
215
+ "typesPublisherContentHash": "7ad87ee86165e98ba92d3e3f4bd58e162ffc58fa84208518416853f7f0f704fc",
216
216
  "typeScriptVersion": "4.7"
217
217
  }
@@ -237,6 +237,9 @@ declare module "worker_threads" {
237
237
  off(event: "message", listener: (value: any) => void): this;
238
238
  off(event: "messageerror", listener: (error: Error) => void): this;
239
239
  off(event: string | symbol, listener: (...args: any[]) => void): this;
240
+ addEventListener: EventTarget["addEventListener"];
241
+ dispatchEvent: EventTarget["dispatchEvent"];
242
+ removeEventListener: EventTarget["removeEventListener"];
240
243
  }
241
244
  interface WorkerOptions {
242
245
  /**
@@ -8,7 +8,7 @@ This package contains type definitions for node (https://nodejs.org/).
8
8
  Files were exported from https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node.
9
9
 
10
10
  ### Additional Details
11
- * Last updated: Wed, 05 Jun 2024 07:35:45 GMT
11
+ * Last updated: Wed, 19 Jun 2024 16:07:46 GMT
12
12
  * Dependencies: [undici-types](https://npmjs.com/package/undici-types)
13
13
 
14
14
  # Credits
@@ -360,30 +360,32 @@ declare module "dns/promises" {
360
360
  * @param order must be `'ipv4first'`, `'ipv6first'` or `'verbatim'`.
361
361
  */
362
362
  function setDefaultResultOrder(order: "ipv4first" | "ipv6first" | "verbatim"): void;
363
- const NODATA: "NODATA";
364
- const FORMERR: "FORMERR";
365
- const SERVFAIL: "SERVFAIL";
366
- const NOTFOUND: "NOTFOUND";
367
- const NOTIMP: "NOTIMP";
368
- const REFUSED: "REFUSED";
369
- const BADQUERY: "BADQUERY";
370
- const BADNAME: "BADNAME";
371
- const BADFAMILY: "BADFAMILY";
372
- const BADRESP: "BADRESP";
373
- const CONNREFUSED: "TIMEOUT";
374
- const TIMEOUT: "TIMEOUT";
363
+ // Error codes
364
+ const NODATA: "ENODATA";
365
+ const FORMERR: "EFORMERR";
366
+ const SERVFAIL: "ESERVFAIL";
367
+ const NOTFOUND: "ENOTFOUND";
368
+ const NOTIMP: "ENOTIMP";
369
+ const REFUSED: "EREFUSED";
370
+ const BADQUERY: "EBADQUERY";
371
+ const BADNAME: "EBADNAME";
372
+ const BADFAMILY: "EBADFAMILY";
373
+ const BADRESP: "EBADRESP";
374
+ const CONNREFUSED: "ECONNREFUSED";
375
+ const TIMEOUT: "ETIMEOUT";
375
376
  const EOF: "EOF";
376
- const FILE: "FILE";
377
- const NOMEM: "NOMEM";
378
- const DESTRUCTION: "DESTRUCTION";
379
- const BADSTR: "BADSTR";
380
- const BADFLAGS: "BADFLAGS";
381
- const NONAME: "NONAME";
382
- const BADHINTS: "BADHINTS";
383
- const NOTINITIALIZED: "NOTINITIALIZED";
384
- const LOADIPHLPAPI: "LOADIPHLPAPI";
385
- const ADDRGETNETWORKPARAMS: "ADDRGETNETWORKPARAMS";
386
- const CANCELLED: "CANCELLED";
377
+ const FILE: "EFILE";
378
+ const NOMEM: "ENOMEM";
379
+ const DESTRUCTION: "EDESTRUCTION";
380
+ const BADSTR: "EBADSTR";
381
+ const BADFLAGS: "EBADFLAGS";
382
+ const NONAME: "ENONAME";
383
+ const BADHINTS: "EBADHINTS";
384
+ const NOTINITIALIZED: "ENOTINITIALIZED";
385
+ const LOADIPHLPAPI: "ELOADIPHLPAPI";
386
+ const ADDRGETNETWORKPARAMS: "EADDRGETNETWORKPARAMS";
387
+ const CANCELLED: "ECANCELLED";
388
+
387
389
  /**
388
390
  * An independent resolver for DNS requests.
389
391
  *
@@ -743,30 +743,30 @@ declare module "dns" {
743
743
  */
744
744
  export function setDefaultResultOrder(order: "ipv4first" | "ipv6first" | "verbatim"): void;
745
745
  // Error codes
746
- export const NODATA: "NODATA";
747
- export const FORMERR: "FORMERR";
748
- export const SERVFAIL: "SERVFAIL";
749
- export const NOTFOUND: "NOTFOUND";
750
- export const NOTIMP: "NOTIMP";
751
- export const REFUSED: "REFUSED";
752
- export const BADQUERY: "BADQUERY";
753
- export const BADNAME: "BADNAME";
754
- export const BADFAMILY: "BADFAMILY";
755
- export const BADRESP: "BADRESP";
756
- export const CONNREFUSED: "TIMEOUT";
757
- export const TIMEOUT: "TIMEOUT";
746
+ export const NODATA: "ENODATA";
747
+ export const FORMERR: "EFORMERR";
748
+ export const SERVFAIL: "ESERVFAIL";
749
+ export const NOTFOUND: "ENOTFOUND";
750
+ export const NOTIMP: "ENOTIMP";
751
+ export const REFUSED: "EREFUSED";
752
+ export const BADQUERY: "EBADQUERY";
753
+ export const BADNAME: "EBADNAME";
754
+ export const BADFAMILY: "EBADFAMILY";
755
+ export const BADRESP: "EBADRESP";
756
+ export const CONNREFUSED: "ECONNREFUSED";
757
+ export const TIMEOUT: "ETIMEOUT";
758
758
  export const EOF: "EOF";
759
- export const FILE: "FILE";
760
- export const NOMEM: "NOMEM";
761
- export const DESTRUCTION: "DESTRUCTION";
762
- export const BADSTR: "BADSTR";
763
- export const BADFLAGS: "BADFLAGS";
764
- export const NONAME: "NONAME";
765
- export const BADHINTS: "BADHINTS";
766
- export const NOTINITIALIZED: "NOTINITIALIZED";
767
- export const LOADIPHLPAPI: "LOADIPHLPAPI";
768
- export const ADDRGETNETWORKPARAMS: "ADDRGETNETWORKPARAMS";
769
- export const CANCELLED: "CANCELLED";
759
+ export const FILE: "EFILE";
760
+ export const NOMEM: "ENOMEM";
761
+ export const DESTRUCTION: "EDESTRUCTION";
762
+ export const BADSTR: "EBADSTR";
763
+ export const BADFLAGS: "EBADFLAGS";
764
+ export const NONAME: "ENONAME";
765
+ export const BADHINTS: "EBADHINTS";
766
+ export const NOTINITIALIZED: "ENOTINITIALIZED";
767
+ export const LOADIPHLPAPI: "ELOADIPHLPAPI";
768
+ export const ADDRGETNETWORKPARAMS: "EADDRGETNETWORKPARAMS";
769
+ export const CANCELLED: "ECANCELLED";
770
770
  export interface ResolverOptions {
771
771
  /**
772
772
  * Query timeout in milliseconds, or `-1` to use the default timeout.
@@ -98,6 +98,22 @@ declare module "events" {
98
98
  */
99
99
  lowWaterMark?: number | undefined;
100
100
  }
101
+ interface StaticEventEmitterIteratorOptions extends StaticEventEmitterOptions {
102
+ /**
103
+ * Names of events that will end the iteration.
104
+ */
105
+ close?: string[];
106
+ /**
107
+ * The emitter is paused every time the size of events being buffered is higher than it. Supported only on emitters implementing pause() and resume() methods.
108
+ * @default Number.MAX_SAFE_INTEGER
109
+ */
110
+ highWaterMark?: number;
111
+ /**
112
+ * The emitter is resumed every time the size of events being buffered is lower than it. Supported only on emitters implementing pause() and resume() methods.
113
+ * @default 1
114
+ */
115
+ lowWaterMark?: number;
116
+ }
101
117
  interface EventEmitter<T extends EventMap<T> = DefaultEventMap> extends NodeJS.EventEmitter<T> {}
102
118
  type EventMap<T> = Record<keyof T, any[]> | DefaultEventMap;
103
119
  type DefaultEventMap = [never];
@@ -274,6 +290,28 @@ declare module "events" {
274
290
  *
275
291
  * process.nextTick(() => ac.abort());
276
292
  * ```
293
+ *
294
+ * Use the `close` option to specify an array of event names that will end the iteration:
295
+ *
296
+ * ```js
297
+ * import { on, EventEmitter } from 'node:events';
298
+ * import process from 'node:process';
299
+ *
300
+ * const ee = new EventEmitter();
301
+ *
302
+ * // Emit later on
303
+ * process.nextTick(() => {
304
+ * ee.emit('foo', 'bar');
305
+ * ee.emit('foo', 42);
306
+ * ee.emit('close');
307
+ * });
308
+ *
309
+ * for await (const event of on(ee, 'foo', { close: ['close'] })) {
310
+ * console.log(event); // prints ['bar'] [42]
311
+ * }
312
+ * // the loop will exit after 'close' is emitted
313
+ * console.log('done'); // prints 'done'
314
+ * ```
277
315
  * @since v13.6.0, v12.16.0
278
316
  * @param eventName The name of the event being listened for
279
317
  * @return An `AsyncIterator` that iterates `eventName` events emitted by the `emitter`
@@ -286,7 +324,7 @@ declare module "events" {
286
324
  static on(
287
325
  emitter: EventTarget,
288
326
  eventName: string,
289
- options?: StaticEventEmitterOptions,
327
+ options?: StaticEventEmitterIteratorOptions,
290
328
  ): AsyncIterableIterator<any>;
291
329
  /**
292
330
  * A class method that returns the number of listeners for the given `eventName` registered on the given `emitter`.
@@ -96,6 +96,7 @@ declare global {
96
96
  new(): AbortSignal;
97
97
  abort(reason?: any): AbortSignal;
98
98
  timeout(milliseconds: number): AbortSignal;
99
+ any(signals: AbortSignal[]): AbortSignal;
99
100
  };
100
101
  // #endregion borrowed
101
102
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@types/node",
3
- "version": "20.14.2",
3
+ "version": "20.14.6",
4
4
  "description": "TypeScript definitions for node",
5
5
  "homepage": "https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node",
6
6
  "license": "MIT",
@@ -212,6 +212,6 @@
212
212
  "dependencies": {
213
213
  "undici-types": "~5.26.4"
214
214
  },
215
- "typesPublisherContentHash": "43d05c87d286b3893e501b24310b8f43081bf151b225e4d88d87af1cf32fb63d",
215
+ "typesPublisherContentHash": "7ad87ee86165e98ba92d3e3f4bd58e162ffc58fa84208518416853f7f0f704fc",
216
216
  "typeScriptVersion": "4.7"
217
217
  }
@@ -237,6 +237,9 @@ declare module "worker_threads" {
237
237
  off(event: "message", listener: (value: any) => void): this;
238
238
  off(event: "messageerror", listener: (error: Error) => void): this;
239
239
  off(event: string | symbol, listener: (...args: any[]) => void): this;
240
+ addEventListener: EventTarget["addEventListener"];
241
+ dispatchEvent: EventTarget["dispatchEvent"];
242
+ removeEventListener: EventTarget["removeEventListener"];
240
243
  }
241
244
  interface WorkerOptions {
242
245
  /**
package/package.json CHANGED
@@ -60,7 +60,7 @@
60
60
  "jsii-diff": "^1.100.0",
61
61
  "jsii-docgen": "^1.8.110",
62
62
  "jsii-pacmak": "^1.100.0",
63
- "jsii-rosetta": "^5.4.21",
63
+ "jsii-rosetta": "^5.4.22",
64
64
  "projen": "^0.82.6",
65
65
  "standard-version": "^9",
66
66
  "ts-jest": "^27",
@@ -93,7 +93,7 @@
93
93
  "publishConfig": {
94
94
  "access": "public"
95
95
  },
96
- "version": "3.0.67",
96
+ "version": "3.0.68",
97
97
  "jest": {
98
98
  "coverageProvider": "v8",
99
99
  "testMatch": [