@aws-cdk/cloud-assembly-schema 2.25.0 → 2.28.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 CHANGED
@@ -8,7 +8,7 @@
8
8
  "url": "https://aws.amazon.com"
9
9
  },
10
10
  "bundled": {
11
- "jsonschema": "^1.4.0",
11
+ "jsonschema": "^1.4.1",
12
12
  "semver": "^7.3.7"
13
13
  },
14
14
  "description": "Cloud Assembly Schema",
@@ -16,7 +16,7 @@
16
16
  "stability": "stable"
17
17
  },
18
18
  "homepage": "https://github.com/aws/aws-cdk",
19
- "jsiiVersion": "1.58.0 (build f8ba112)",
19
+ "jsiiVersion": "1.60.1 (build 2799dc8)",
20
20
  "keywords": [
21
21
  "aws",
22
22
  "cdk"
@@ -35,7 +35,7 @@
35
35
  },
36
36
  "name": "@aws-cdk/cloud-assembly-schema",
37
37
  "readme": {
38
- "markdown": "# Cloud Assembly Schema\n<!--BEGIN STABILITY BANNER-->\n\n---\n\n![cdk-constructs: Stable](https://img.shields.io/badge/cdk--constructs-stable-success.svg?style=for-the-badge)\n\n---\n\n<!--END STABILITY BANNER-->\n\nThis module is part of the [AWS Cloud Development Kit](https://github.com/aws/aws-cdk) project.\n\n## Cloud Assembly\n\nThe *Cloud Assembly* is the output of the synthesis operation. It is produced as part of the\n[`cdk synth`](https://github.com/aws/aws-cdk/tree/master/packages/aws-cdk#cdk-synthesize)\ncommand, or the [`app.synth()`](https://github.com/aws/aws-cdk/blob/master/packages/@aws-cdk/core/lib/app.ts#L135) method invocation.\n\nIts essentially a set of files and directories, one of which is the `manifest.json` file. It defines the set of instructions that are\nneeded in order to deploy the assembly directory.\n\n> For example, when `cdk deploy` is executed, the CLI reads this file and performs its instructions:\n>\n> - Build container images.\n> - Upload assets.\n> - Deploy CloudFormation templates.\n\nTherefore, the assembly is how the CDK class library and CDK CLI (or any other consumer) communicate. To ensure compatibility\nbetween the assembly and its consumers, we treat the manifest file as a well defined, versioned schema.\n\n## Schema\n\nThis module contains the typescript structs that comprise the `manifest.json` file, as well as the\ngenerated [*json-schema*](./schema/cloud-assembly.schema.json).\n\n## Versioning\n\nThe schema version is specified in the [`cloud-assembly.version.json`](./schema/cloud-assembly.schema.json) file, under the `version` property.\nIt follows semantic versioning, but with a small twist.\n\nWhen we add instructions to the assembly, they are reflected in the manifest file and the *json-schema* accordingly.\nEvery such instruction, is crucial for ensuring the correct deployment behavior. This means that to properly deploy a cloud assembly,\nconsumers must be aware of every such instruction modification.\n\nFor this reason, every change to the schema, even though it might not strictly break validation of the *json-schema* format,\nis considered `major` version bump.\n\n## How to consume\n\nIf you'd like to consume the [schema file](./schema/cloud-assembly.schema.json) in order to do validations on `manifest.json` files,\nsimply download it from this repo and run it against standard *json-schema* validators, such as [jsonschema](https://www.npmjs.com/package/jsonschema).\n\nConsumers must take into account the `major` version of the schema they are consuming. They should reject cloud assemblies\nwith a `major` version that is higher than what they expect. While schema validation might pass on such assemblies, the deployment integrity\ncannot be guaranteed because some instructions will be ignored.\n\n> For example, if your consumer was built when the schema version was 2.0.0, you should reject deploying cloud assemblies with a\n> manifest version of 3.0.0.\n\n## Contributing\n\nSee [Contribution Guide](./CONTRIBUTING.md)\n"
38
+ "markdown": "# Cloud Assembly Schema\n<!--BEGIN STABILITY BANNER-->\n\n---\n\n![cdk-constructs: Stable](https://img.shields.io/badge/cdk--constructs-stable-success.svg?style=for-the-badge)\n\n---\n\n<!--END STABILITY BANNER-->\n\nThis module is part of the [AWS Cloud Development Kit](https://github.com/aws/aws-cdk) project.\n\n## Cloud Assembly\n\nThe *Cloud Assembly* is the output of the synthesis operation. It is produced as part of the\n[`cdk synth`](https://github.com/aws/aws-cdk/tree/main/packages/aws-cdk#cdk-synthesize)\ncommand, or the [`app.synth()`](https://github.com/aws/aws-cdk/blob/main/packages/@aws-cdk/core/lib/app.ts#L135) method invocation.\n\nIts essentially a set of files and directories, one of which is the `manifest.json` file. It defines the set of instructions that are\nneeded in order to deploy the assembly directory.\n\n> For example, when `cdk deploy` is executed, the CLI reads this file and performs its instructions:\n>\n> - Build container images.\n> - Upload assets.\n> - Deploy CloudFormation templates.\n\nTherefore, the assembly is how the CDK class library and CDK CLI (or any other consumer) communicate. To ensure compatibility\nbetween the assembly and its consumers, we treat the manifest file as a well defined, versioned schema.\n\n## Schema\n\nThis module contains the typescript structs that comprise the `manifest.json` file, as well as the\ngenerated [*json-schema*](./schema/cloud-assembly.schema.json).\n\n## Versioning\n\nThe schema version is specified in the [`cloud-assembly.version.json`](./schema/cloud-assembly.schema.json) file, under the `version` property.\nIt follows semantic versioning, but with a small twist.\n\nWhen we add instructions to the assembly, they are reflected in the manifest file and the *json-schema* accordingly.\nEvery such instruction, is crucial for ensuring the correct deployment behavior. This means that to properly deploy a cloud assembly,\nconsumers must be aware of every such instruction modification.\n\nFor this reason, every change to the schema, even though it might not strictly break validation of the *json-schema* format,\nis considered `major` version bump.\n\n## How to consume\n\nIf you'd like to consume the [schema file](./schema/cloud-assembly.schema.json) in order to do validations on `manifest.json` files,\nsimply download it from this repo and run it against standard *json-schema* validators, such as [jsonschema](https://www.npmjs.com/package/jsonschema).\n\nConsumers must take into account the `major` version of the schema they are consuming. They should reject cloud assemblies\nwith a `major` version that is higher than what they expect. While schema validation might pass on such assemblies, the deployment integrity\ncannot be guaranteed because some instructions will be ignored.\n\n> For example, if your consumer was built when the schema version was 2.0.0, you should reject deploying cloud assemblies with a\n> manifest version of 3.0.0.\n\n## Contributing\n\nSee [Contribution Guide](./CONTRIBUTING.md)\n"
39
39
  },
40
40
  "repository": {
41
41
  "directory": "packages/@aws-cdk/cloud-assembly-schema",
@@ -45,7 +45,7 @@
45
45
  "schema": "jsii/0.10.0",
46
46
  "targets": {
47
47
  "dotnet": {
48
- "iconUrl": "https://raw.githubusercontent.com/aws/aws-cdk/master/logo/default-256-dark.png",
48
+ "iconUrl": "https://raw.githubusercontent.com/aws/aws-cdk/main/logo/default-256-dark.png",
49
49
  "namespace": "Amazon.CDK.CloudAssembly.Schema",
50
50
  "packageId": "Amazon.CDK.CloudAssembly.Schema"
51
51
  },
@@ -359,7 +359,7 @@
359
359
  "kind": "enum",
360
360
  "locationInModule": {
361
361
  "filename": "lib/cloud-assembly/metadata-schema.ts",
362
- "line": 176
362
+ "line": 183
363
363
  },
364
364
  "members": [
365
365
  {
@@ -569,7 +569,7 @@
569
569
  "docs": {
570
570
  "stability": "stable",
571
571
  "summary": "Definitions for the asset manifest.",
572
- "example": "// The code below shows an example of how to instantiate this type.\n// The values are placeholders you should change.\nimport * as cloud_assembly_schema from '@aws-cdk/cloud-assembly-schema';\nconst assetManifest: cloud_assembly_schema.AssetManifest = {\n version: 'version',\n\n // the properties below are optional\n dockerImages: {\n dockerImagesKey: {\n destinations: {\n destinationsKey: {\n imageTag: 'imageTag',\n repositoryName: 'repositoryName',\n\n // the properties below are optional\n assumeRoleArn: 'assumeRoleArn',\n assumeRoleExternalId: 'assumeRoleExternalId',\n region: 'region',\n },\n },\n source: {\n directory: 'directory',\n dockerBuildArgs: {\n dockerBuildArgsKey: 'dockerBuildArgs',\n },\n dockerBuildTarget: 'dockerBuildTarget',\n dockerFile: 'dockerFile',\n executable: ['executable'],\n networkMode: 'networkMode',\n },\n },\n },\n files: {\n filesKey: {\n destinations: {\n destinationsKey: {\n bucketName: 'bucketName',\n objectKey: 'objectKey',\n\n // the properties below are optional\n assumeRoleArn: 'assumeRoleArn',\n assumeRoleExternalId: 'assumeRoleExternalId',\n region: 'region',\n },\n },\n source: {\n executable: ['executable'],\n packaging: cloud_assembly_schema.FileAssetPackaging.FILE,\n path: 'path',\n },\n },\n },\n};",
572
+ "example": "// The code below shows an example of how to instantiate this type.\n// The values are placeholders you should change.\nimport * as cloud_assembly_schema from '@aws-cdk/cloud-assembly-schema';\nconst assetManifest: cloud_assembly_schema.AssetManifest = {\n version: 'version',\n\n // the properties below are optional\n dockerImages: {\n dockerImagesKey: {\n destinations: {\n destinationsKey: {\n imageTag: 'imageTag',\n repositoryName: 'repositoryName',\n\n // the properties below are optional\n assumeRoleArn: 'assumeRoleArn',\n assumeRoleExternalId: 'assumeRoleExternalId',\n region: 'region',\n },\n },\n source: {\n directory: 'directory',\n dockerBuildArgs: {\n dockerBuildArgsKey: 'dockerBuildArgs',\n },\n dockerBuildTarget: 'dockerBuildTarget',\n dockerFile: 'dockerFile',\n executable: ['executable'],\n networkMode: 'networkMode',\n platform: 'platform',\n },\n },\n },\n files: {\n filesKey: {\n destinations: {\n destinationsKey: {\n bucketName: 'bucketName',\n objectKey: 'objectKey',\n\n // the properties below are optional\n assumeRoleArn: 'assumeRoleArn',\n assumeRoleExternalId: 'assumeRoleExternalId',\n region: 'region',\n },\n },\n source: {\n executable: ['executable'],\n packaging: cloud_assembly_schema.FileAssetPackaging.FILE,\n path: 'path',\n },\n },\n },\n};",
573
573
  "custom": {
574
574
  "exampleMetadata": "fixture=_generated"
575
575
  }
@@ -1367,7 +1367,7 @@
1367
1367
  "docs": {
1368
1368
  "stability": "stable",
1369
1369
  "summary": "Metadata Entry spec for container images.",
1370
- "example": "// The code below shows an example of how to instantiate this type.\n// The values are placeholders you should change.\nimport * as cloud_assembly_schema from '@aws-cdk/cloud-assembly-schema';\nconst containerImageAssetMetadataEntry: cloud_assembly_schema.ContainerImageAssetMetadataEntry = {\n id: 'id',\n packaging: 'packaging',\n path: 'path',\n sourceHash: 'sourceHash',\n\n // the properties below are optional\n buildArgs: {\n buildArgsKey: 'buildArgs',\n },\n file: 'file',\n imageNameParameter: 'imageNameParameter',\n imageTag: 'imageTag',\n networkMode: 'networkMode',\n repositoryName: 'repositoryName',\n target: 'target',\n};",
1370
+ "example": "// The code below shows an example of how to instantiate this type.\n// The values are placeholders you should change.\nimport * as cloud_assembly_schema from '@aws-cdk/cloud-assembly-schema';\nconst containerImageAssetMetadataEntry: cloud_assembly_schema.ContainerImageAssetMetadataEntry = {\n id: 'id',\n packaging: 'packaging',\n path: 'path',\n sourceHash: 'sourceHash',\n\n // the properties below are optional\n buildArgs: {\n buildArgsKey: 'buildArgs',\n },\n file: 'file',\n imageNameParameter: 'imageNameParameter',\n imageTag: 'imageTag',\n networkMode: 'networkMode',\n platform: 'platform',\n repositoryName: 'repositoryName',\n target: 'target',\n};",
1371
1371
  "custom": {
1372
1372
  "exampleMetadata": "fixture=_generated"
1373
1373
  }
@@ -1541,6 +1541,25 @@
1541
1541
  "primitive": "string"
1542
1542
  }
1543
1543
  },
1544
+ {
1545
+ "abstract": true,
1546
+ "docs": {
1547
+ "default": "- current machine platform",
1548
+ "remarks": "_Requires Docker Buildx_.",
1549
+ "stability": "stable",
1550
+ "summary": "Platform to build for."
1551
+ },
1552
+ "immutable": true,
1553
+ "locationInModule": {
1554
+ "filename": "lib/cloud-assembly/metadata-schema.ts",
1555
+ "line": 147
1556
+ },
1557
+ "name": "platform",
1558
+ "optional": true,
1559
+ "type": {
1560
+ "primitive": "string"
1561
+ }
1562
+ },
1544
1563
  {
1545
1564
  "abstract": true,
1546
1565
  "docs": {
@@ -2555,7 +2574,7 @@
2555
2574
  "docs": {
2556
2575
  "stability": "stable",
2557
2576
  "summary": "A file asset.",
2558
- "example": "// The code below shows an example of how to instantiate this type.\n// The values are placeholders you should change.\nimport * as cloud_assembly_schema from '@aws-cdk/cloud-assembly-schema';\nconst dockerImageAsset: cloud_assembly_schema.DockerImageAsset = {\n destinations: {\n destinationsKey: {\n imageTag: 'imageTag',\n repositoryName: 'repositoryName',\n\n // the properties below are optional\n assumeRoleArn: 'assumeRoleArn',\n assumeRoleExternalId: 'assumeRoleExternalId',\n region: 'region',\n },\n },\n source: {\n directory: 'directory',\n dockerBuildArgs: {\n dockerBuildArgsKey: 'dockerBuildArgs',\n },\n dockerBuildTarget: 'dockerBuildTarget',\n dockerFile: 'dockerFile',\n executable: ['executable'],\n networkMode: 'networkMode',\n },\n};",
2577
+ "example": "// The code below shows an example of how to instantiate this type.\n// The values are placeholders you should change.\nimport * as cloud_assembly_schema from '@aws-cdk/cloud-assembly-schema';\nconst dockerImageAsset: cloud_assembly_schema.DockerImageAsset = {\n destinations: {\n destinationsKey: {\n imageTag: 'imageTag',\n repositoryName: 'repositoryName',\n\n // the properties below are optional\n assumeRoleArn: 'assumeRoleArn',\n assumeRoleExternalId: 'assumeRoleExternalId',\n region: 'region',\n },\n },\n source: {\n directory: 'directory',\n dockerBuildArgs: {\n dockerBuildArgsKey: 'dockerBuildArgs',\n },\n dockerBuildTarget: 'dockerBuildTarget',\n dockerFile: 'dockerFile',\n executable: ['executable'],\n networkMode: 'networkMode',\n platform: 'platform',\n },\n};",
2559
2578
  "custom": {
2560
2579
  "exampleMetadata": "fixture=_generated"
2561
2580
  }
@@ -2626,7 +2645,7 @@
2626
2645
  "kind": "interface",
2627
2646
  "locationInModule": {
2628
2647
  "filename": "lib/assets/docker-image-asset.ts",
2629
- "line": 79
2648
+ "line": 88
2630
2649
  },
2631
2650
  "name": "DockerImageDestination",
2632
2651
  "properties": [
@@ -2639,7 +2658,7 @@
2639
2658
  "immutable": true,
2640
2659
  "locationInModule": {
2641
2660
  "filename": "lib/assets/docker-image-asset.ts",
2642
- "line": 88
2661
+ "line": 97
2643
2662
  },
2644
2663
  "name": "imageTag",
2645
2664
  "type": {
@@ -2655,7 +2674,7 @@
2655
2674
  "immutable": true,
2656
2675
  "locationInModule": {
2657
2676
  "filename": "lib/assets/docker-image-asset.ts",
2658
- "line": 83
2677
+ "line": 92
2659
2678
  },
2660
2679
  "name": "repositoryName",
2661
2680
  "type": {
@@ -2671,7 +2690,7 @@
2671
2690
  "docs": {
2672
2691
  "stability": "stable",
2673
2692
  "summary": "Properties for how to produce a Docker image from a source.",
2674
- "example": "// The code below shows an example of how to instantiate this type.\n// The values are placeholders you should change.\nimport * as cloud_assembly_schema from '@aws-cdk/cloud-assembly-schema';\nconst dockerImageSource: cloud_assembly_schema.DockerImageSource = {\n directory: 'directory',\n dockerBuildArgs: {\n dockerBuildArgsKey: 'dockerBuildArgs',\n },\n dockerBuildTarget: 'dockerBuildTarget',\n dockerFile: 'dockerFile',\n executable: ['executable'],\n networkMode: 'networkMode',\n};",
2693
+ "example": "// The code below shows an example of how to instantiate this type.\n// The values are placeholders you should change.\nimport * as cloud_assembly_schema from '@aws-cdk/cloud-assembly-schema';\nconst dockerImageSource: cloud_assembly_schema.DockerImageSource = {\n directory: 'directory',\n dockerBuildArgs: {\n dockerBuildArgsKey: 'dockerBuildArgs',\n },\n dockerBuildTarget: 'dockerBuildTarget',\n dockerFile: 'dockerFile',\n executable: ['executable'],\n networkMode: 'networkMode',\n platform: 'platform',\n};",
2675
2694
  "custom": {
2676
2695
  "exampleMetadata": "fixture=_generated"
2677
2696
  }
@@ -2806,6 +2825,25 @@
2806
2825
  "type": {
2807
2826
  "primitive": "string"
2808
2827
  }
2828
+ },
2829
+ {
2830
+ "abstract": true,
2831
+ "docs": {
2832
+ "default": "- current machine platform",
2833
+ "remarks": "Specify this property to build images on a specific platform/architecture.",
2834
+ "stability": "stable",
2835
+ "summary": "Platform to build for. _Requires Docker Buildx_."
2836
+ },
2837
+ "immutable": true,
2838
+ "locationInModule": {
2839
+ "filename": "lib/assets/docker-image-asset.ts",
2840
+ "line": 82
2841
+ },
2842
+ "name": "platform",
2843
+ "optional": true,
2844
+ "type": {
2845
+ "primitive": "string"
2846
+ }
2809
2847
  }
2810
2848
  ],
2811
2849
  "symbolId": "lib/assets/docker-image-asset:DockerImageSource"
@@ -4413,7 +4451,7 @@
4413
4451
  "kind": "interface",
4414
4452
  "locationInModule": {
4415
4453
  "filename": "lib/cloud-assembly/metadata-schema.ts",
4416
- "line": 211
4454
+ "line": 218
4417
4455
  },
4418
4456
  "name": "MetadataEntry",
4419
4457
  "properties": [
@@ -4426,7 +4464,7 @@
4426
4464
  "immutable": true,
4427
4465
  "locationInModule": {
4428
4466
  "filename": "lib/cloud-assembly/metadata-schema.ts",
4429
- "line": 215
4467
+ "line": 222
4430
4468
  },
4431
4469
  "name": "type",
4432
4470
  "type": {
@@ -4443,7 +4481,7 @@
4443
4481
  "immutable": true,
4444
4482
  "locationInModule": {
4445
4483
  "filename": "lib/cloud-assembly/metadata-schema.ts",
4446
- "line": 222
4484
+ "line": 229
4447
4485
  },
4448
4486
  "name": "data",
4449
4487
  "optional": true,
@@ -4481,7 +4519,7 @@
4481
4519
  "immutable": true,
4482
4520
  "locationInModule": {
4483
4521
  "filename": "lib/cloud-assembly/metadata-schema.ts",
4484
- "line": 229
4522
+ "line": 236
4485
4523
  },
4486
4524
  "name": "trace",
4487
4525
  "optional": true,
@@ -5427,6 +5465,6 @@
5427
5465
  "symbolId": "lib/cloud-assembly/context-queries:VpcContextQuery"
5428
5466
  }
5429
5467
  },
5430
- "version": "2.25.0",
5468
+ "version": "2.28.0",
5431
5469
  "fingerprint": "**********"
5432
5470
  }
package/.jsii.tabl.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": "2",
3
- "toolVersion": "1.58.0",
3
+ "toolVersion": "1.60.1",
4
4
  "snippets": {
5
5
  "cecc4b6be0cf4accc3e46f1670579b731439bd3e3b6efffdbd431eb0130d724c": {
6
6
  "translations": {
@@ -116,7 +116,7 @@
116
116
  "281": 29,
117
117
  "290": 1
118
118
  },
119
- "fqnsFingerprint": "a8b47472c8757ec7b1e584f2bfd85ad8e87afde70769323b70dbed3823e90150"
119
+ "fqnsFingerprint": "eb7788cf20261ea5e42f29f1f6680d6f1a2e4fc435ad2a88073aaded8027ff44"
120
120
  },
121
121
  "51b9f560219f00280c95ce85c64fec1e95f59ed1de150b9a0323d891c0d9870c": {
122
122
  "translations": {
@@ -181,28 +181,28 @@
181
181
  "281": 45,
182
182
  "290": 1
183
183
  },
184
- "fqnsFingerprint": "4516a1c6237b5b9f8bff36e346080d4641352277019b903283b7cc1337e12a34"
184
+ "fqnsFingerprint": "39f0c7160aca5b5fddc74e88da93416ff2c3bbc8c259d94ad11f42a956b2e3ba"
185
185
  },
186
- "6df1b98937a707781cf94ec9a6b0757a31a1f33fc71d2562322f714d5f10d2b3": {
186
+ "6683729a413a63c601f246c117c382fc14f7a0e56614f8a6b8bfd9779c71590d": {
187
187
  "translations": {
188
188
  "python": {
189
- "source": "# The code below shows an example of how to instantiate this type.\n# The values are placeholders you should change.\nimport aws_cdk.cloud_assembly_schema as cloud_assembly_schema\n\nasset_manifest = cloud_assembly_schema.AssetManifest(\n version=\"version\",\n\n # the properties below are optional\n docker_images={\n \"docker_images_key\": cloud_assembly_schema.DockerImageAsset(\n destinations={\n \"destinations_key\": cloud_assembly_schema.DockerImageDestination(\n image_tag=\"imageTag\",\n repository_name=\"repositoryName\",\n\n # the properties below are optional\n assume_role_arn=\"assumeRoleArn\",\n assume_role_external_id=\"assumeRoleExternalId\",\n region=\"region\"\n )\n },\n source=cloud_assembly_schema.DockerImageSource(\n directory=\"directory\",\n docker_build_args={\n \"docker_build_args_key\": \"dockerBuildArgs\"\n },\n docker_build_target=\"dockerBuildTarget\",\n docker_file=\"dockerFile\",\n executable=[\"executable\"],\n network_mode=\"networkMode\"\n )\n )\n },\n files={\n \"files_key\": cloud_assembly_schema.FileAsset(\n destinations={\n \"destinations_key\": cloud_assembly_schema.FileDestination(\n bucket_name=\"bucketName\",\n object_key=\"objectKey\",\n\n # the properties below are optional\n assume_role_arn=\"assumeRoleArn\",\n assume_role_external_id=\"assumeRoleExternalId\",\n region=\"region\"\n )\n },\n source=cloud_assembly_schema.FileSource(\n executable=[\"executable\"],\n packaging=cloud_assembly_schema.FileAssetPackaging.FILE,\n path=\"path\"\n )\n )\n }\n)",
189
+ "source": "# The code below shows an example of how to instantiate this type.\n# The values are placeholders you should change.\nimport aws_cdk.cloud_assembly_schema as cloud_assembly_schema\n\nasset_manifest = cloud_assembly_schema.AssetManifest(\n version=\"version\",\n\n # the properties below are optional\n docker_images={\n \"docker_images_key\": cloud_assembly_schema.DockerImageAsset(\n destinations={\n \"destinations_key\": cloud_assembly_schema.DockerImageDestination(\n image_tag=\"imageTag\",\n repository_name=\"repositoryName\",\n\n # the properties below are optional\n assume_role_arn=\"assumeRoleArn\",\n assume_role_external_id=\"assumeRoleExternalId\",\n region=\"region\"\n )\n },\n source=cloud_assembly_schema.DockerImageSource(\n directory=\"directory\",\n docker_build_args={\n \"docker_build_args_key\": \"dockerBuildArgs\"\n },\n docker_build_target=\"dockerBuildTarget\",\n docker_file=\"dockerFile\",\n executable=[\"executable\"],\n network_mode=\"networkMode\",\n platform=\"platform\"\n )\n )\n },\n files={\n \"files_key\": cloud_assembly_schema.FileAsset(\n destinations={\n \"destinations_key\": cloud_assembly_schema.FileDestination(\n bucket_name=\"bucketName\",\n object_key=\"objectKey\",\n\n # the properties below are optional\n assume_role_arn=\"assumeRoleArn\",\n assume_role_external_id=\"assumeRoleExternalId\",\n region=\"region\"\n )\n },\n source=cloud_assembly_schema.FileSource(\n executable=[\"executable\"],\n packaging=cloud_assembly_schema.FileAssetPackaging.FILE,\n path=\"path\"\n )\n )\n }\n)",
190
190
  "version": "2"
191
191
  },
192
192
  "csharp": {
193
- "source": "// The code below shows an example of how to instantiate this type.\n// The values are placeholders you should change.\nusing Amazon.CDK.CloudAssembly.Schema;\n\nAssetManifest assetManifest = new AssetManifest {\n Version = \"version\",\n\n // the properties below are optional\n DockerImages = new Dictionary<string, DockerImageAsset> {\n { \"dockerImagesKey\", new DockerImageAsset {\n Destinations = new Dictionary<string, DockerImageDestination> {\n { \"destinationsKey\", new DockerImageDestination {\n ImageTag = \"imageTag\",\n RepositoryName = \"repositoryName\",\n\n // the properties below are optional\n AssumeRoleArn = \"assumeRoleArn\",\n AssumeRoleExternalId = \"assumeRoleExternalId\",\n Region = \"region\"\n } }\n },\n Source = new DockerImageSource {\n Directory = \"directory\",\n DockerBuildArgs = new Dictionary<string, string> {\n { \"dockerBuildArgsKey\", \"dockerBuildArgs\" }\n },\n DockerBuildTarget = \"dockerBuildTarget\",\n DockerFile = \"dockerFile\",\n Executable = new [] { \"executable\" },\n NetworkMode = \"networkMode\"\n }\n } }\n },\n Files = new Dictionary<string, FileAsset> {\n { \"filesKey\", new FileAsset {\n Destinations = new Dictionary<string, FileDestination> {\n { \"destinationsKey\", new FileDestination {\n BucketName = \"bucketName\",\n ObjectKey = \"objectKey\",\n\n // the properties below are optional\n AssumeRoleArn = \"assumeRoleArn\",\n AssumeRoleExternalId = \"assumeRoleExternalId\",\n Region = \"region\"\n } }\n },\n Source = new FileSource {\n Executable = new [] { \"executable\" },\n Packaging = FileAssetPackaging.FILE,\n Path = \"path\"\n }\n } }\n }\n};",
193
+ "source": "// The code below shows an example of how to instantiate this type.\n// The values are placeholders you should change.\nusing Amazon.CDK.CloudAssembly.Schema;\n\nAssetManifest assetManifest = new AssetManifest {\n Version = \"version\",\n\n // the properties below are optional\n DockerImages = new Dictionary<string, DockerImageAsset> {\n { \"dockerImagesKey\", new DockerImageAsset {\n Destinations = new Dictionary<string, DockerImageDestination> {\n { \"destinationsKey\", new DockerImageDestination {\n ImageTag = \"imageTag\",\n RepositoryName = \"repositoryName\",\n\n // the properties below are optional\n AssumeRoleArn = \"assumeRoleArn\",\n AssumeRoleExternalId = \"assumeRoleExternalId\",\n Region = \"region\"\n } }\n },\n Source = new DockerImageSource {\n Directory = \"directory\",\n DockerBuildArgs = new Dictionary<string, string> {\n { \"dockerBuildArgsKey\", \"dockerBuildArgs\" }\n },\n DockerBuildTarget = \"dockerBuildTarget\",\n DockerFile = \"dockerFile\",\n Executable = new [] { \"executable\" },\n NetworkMode = \"networkMode\",\n Platform = \"platform\"\n }\n } }\n },\n Files = new Dictionary<string, FileAsset> {\n { \"filesKey\", new FileAsset {\n Destinations = new Dictionary<string, FileDestination> {\n { \"destinationsKey\", new FileDestination {\n BucketName = \"bucketName\",\n ObjectKey = \"objectKey\",\n\n // the properties below are optional\n AssumeRoleArn = \"assumeRoleArn\",\n AssumeRoleExternalId = \"assumeRoleExternalId\",\n Region = \"region\"\n } }\n },\n Source = new FileSource {\n Executable = new [] { \"executable\" },\n Packaging = FileAssetPackaging.FILE,\n Path = \"path\"\n }\n } }\n }\n};",
194
194
  "version": "1"
195
195
  },
196
196
  "java": {
197
- "source": "// The code below shows an example of how to instantiate this type.\n// The values are placeholders you should change.\nimport software.amazon.awscdk.cloudassembly.schema.*;\n\nAssetManifest assetManifest = AssetManifest.builder()\n .version(\"version\")\n\n // the properties below are optional\n .dockerImages(Map.of(\n \"dockerImagesKey\", DockerImageAsset.builder()\n .destinations(Map.of(\n \"destinationsKey\", DockerImageDestination.builder()\n .imageTag(\"imageTag\")\n .repositoryName(\"repositoryName\")\n\n // the properties below are optional\n .assumeRoleArn(\"assumeRoleArn\")\n .assumeRoleExternalId(\"assumeRoleExternalId\")\n .region(\"region\")\n .build()))\n .source(DockerImageSource.builder()\n .directory(\"directory\")\n .dockerBuildArgs(Map.of(\n \"dockerBuildArgsKey\", \"dockerBuildArgs\"))\n .dockerBuildTarget(\"dockerBuildTarget\")\n .dockerFile(\"dockerFile\")\n .executable(List.of(\"executable\"))\n .networkMode(\"networkMode\")\n .build())\n .build()))\n .files(Map.of(\n \"filesKey\", FileAsset.builder()\n .destinations(Map.of(\n \"destinationsKey\", FileDestination.builder()\n .bucketName(\"bucketName\")\n .objectKey(\"objectKey\")\n\n // the properties below are optional\n .assumeRoleArn(\"assumeRoleArn\")\n .assumeRoleExternalId(\"assumeRoleExternalId\")\n .region(\"region\")\n .build()))\n .source(FileSource.builder()\n .executable(List.of(\"executable\"))\n .packaging(FileAssetPackaging.FILE)\n .path(\"path\")\n .build())\n .build()))\n .build();",
197
+ "source": "// The code below shows an example of how to instantiate this type.\n// The values are placeholders you should change.\nimport software.amazon.awscdk.cloudassembly.schema.*;\n\nAssetManifest assetManifest = AssetManifest.builder()\n .version(\"version\")\n\n // the properties below are optional\n .dockerImages(Map.of(\n \"dockerImagesKey\", DockerImageAsset.builder()\n .destinations(Map.of(\n \"destinationsKey\", DockerImageDestination.builder()\n .imageTag(\"imageTag\")\n .repositoryName(\"repositoryName\")\n\n // the properties below are optional\n .assumeRoleArn(\"assumeRoleArn\")\n .assumeRoleExternalId(\"assumeRoleExternalId\")\n .region(\"region\")\n .build()))\n .source(DockerImageSource.builder()\n .directory(\"directory\")\n .dockerBuildArgs(Map.of(\n \"dockerBuildArgsKey\", \"dockerBuildArgs\"))\n .dockerBuildTarget(\"dockerBuildTarget\")\n .dockerFile(\"dockerFile\")\n .executable(List.of(\"executable\"))\n .networkMode(\"networkMode\")\n .platform(\"platform\")\n .build())\n .build()))\n .files(Map.of(\n \"filesKey\", FileAsset.builder()\n .destinations(Map.of(\n \"destinationsKey\", FileDestination.builder()\n .bucketName(\"bucketName\")\n .objectKey(\"objectKey\")\n\n // the properties below are optional\n .assumeRoleArn(\"assumeRoleArn\")\n .assumeRoleExternalId(\"assumeRoleExternalId\")\n .region(\"region\")\n .build()))\n .source(FileSource.builder()\n .executable(List.of(\"executable\"))\n .packaging(FileAssetPackaging.FILE)\n .path(\"path\")\n .build())\n .build()))\n .build();",
198
198
  "version": "1"
199
199
  },
200
200
  "go": {
201
- "source": "// The code below shows an example of how to instantiate this type.\n// The values are placeholders you should change.\nimport cloud_assembly_schema \"github.com/aws-samples/dummy/awscdkcloudassemblyschema\"\n\nassetManifest := &assetManifest{\n\tversion: jsii.String(\"version\"),\n\n\t// the properties below are optional\n\tdockerImages: map[string]dockerImageAsset{\n\t\t\"dockerImagesKey\": &dockerImageAsset{\n\t\t\t\"destinations\": map[string]DockerImageDestination{\n\t\t\t\t\"destinationsKey\": &DockerImageDestination{\n\t\t\t\t\t\"imageTag\": jsii.String(\"imageTag\"),\n\t\t\t\t\t\"repositoryName\": jsii.String(\"repositoryName\"),\n\n\t\t\t\t\t// the properties below are optional\n\t\t\t\t\t\"assumeRoleArn\": jsii.String(\"assumeRoleArn\"),\n\t\t\t\t\t\"assumeRoleExternalId\": jsii.String(\"assumeRoleExternalId\"),\n\t\t\t\t\t\"region\": jsii.String(\"region\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\t\"source\": &DockerImageSource{\n\t\t\t\t\"directory\": jsii.String(\"directory\"),\n\t\t\t\t\"dockerBuildArgs\": map[string]*string{\n\t\t\t\t\t\"dockerBuildArgsKey\": jsii.String(\"dockerBuildArgs\"),\n\t\t\t\t},\n\t\t\t\t\"dockerBuildTarget\": jsii.String(\"dockerBuildTarget\"),\n\t\t\t\t\"dockerFile\": jsii.String(\"dockerFile\"),\n\t\t\t\t\"executable\": []*string{\n\t\t\t\t\tjsii.String(\"executable\"),\n\t\t\t\t},\n\t\t\t\t\"networkMode\": jsii.String(\"networkMode\"),\n\t\t\t},\n\t\t},\n\t},\n\tfiles: map[string]fileAsset{\n\t\t\"filesKey\": &fileAsset{\n\t\t\t\"destinations\": map[string]FileDestination{\n\t\t\t\t\"destinationsKey\": &FileDestination{\n\t\t\t\t\t\"bucketName\": jsii.String(\"bucketName\"),\n\t\t\t\t\t\"objectKey\": jsii.String(\"objectKey\"),\n\n\t\t\t\t\t// the properties below are optional\n\t\t\t\t\t\"assumeRoleArn\": jsii.String(\"assumeRoleArn\"),\n\t\t\t\t\t\"assumeRoleExternalId\": jsii.String(\"assumeRoleExternalId\"),\n\t\t\t\t\t\"region\": jsii.String(\"region\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\t\"source\": &FileSource{\n\t\t\t\t\"executable\": []*string{\n\t\t\t\t\tjsii.String(\"executable\"),\n\t\t\t\t},\n\t\t\t\t\"packaging\": cloud_assembly_schema.FileAssetPackaging_FILE,\n\t\t\t\t\"path\": jsii.String(\"path\"),\n\t\t\t},\n\t\t},\n\t},\n}",
201
+ "source": "// The code below shows an example of how to instantiate this type.\n// The values are placeholders you should change.\nimport cloud_assembly_schema \"github.com/aws-samples/dummy/awscdkcloudassemblyschema\"\n\nassetManifest := &assetManifest{\n\tversion: jsii.String(\"version\"),\n\n\t// the properties below are optional\n\tdockerImages: map[string]dockerImageAsset{\n\t\t\"dockerImagesKey\": &dockerImageAsset{\n\t\t\t\"destinations\": map[string]DockerImageDestination{\n\t\t\t\t\"destinationsKey\": &DockerImageDestination{\n\t\t\t\t\t\"imageTag\": jsii.String(\"imageTag\"),\n\t\t\t\t\t\"repositoryName\": jsii.String(\"repositoryName\"),\n\n\t\t\t\t\t// the properties below are optional\n\t\t\t\t\t\"assumeRoleArn\": jsii.String(\"assumeRoleArn\"),\n\t\t\t\t\t\"assumeRoleExternalId\": jsii.String(\"assumeRoleExternalId\"),\n\t\t\t\t\t\"region\": jsii.String(\"region\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\t\"source\": &DockerImageSource{\n\t\t\t\t\"directory\": jsii.String(\"directory\"),\n\t\t\t\t\"dockerBuildArgs\": map[string]*string{\n\t\t\t\t\t\"dockerBuildArgsKey\": jsii.String(\"dockerBuildArgs\"),\n\t\t\t\t},\n\t\t\t\t\"dockerBuildTarget\": jsii.String(\"dockerBuildTarget\"),\n\t\t\t\t\"dockerFile\": jsii.String(\"dockerFile\"),\n\t\t\t\t\"executable\": []*string{\n\t\t\t\t\tjsii.String(\"executable\"),\n\t\t\t\t},\n\t\t\t\t\"networkMode\": jsii.String(\"networkMode\"),\n\t\t\t\t\"platform\": jsii.String(\"platform\"),\n\t\t\t},\n\t\t},\n\t},\n\tfiles: map[string]fileAsset{\n\t\t\"filesKey\": &fileAsset{\n\t\t\t\"destinations\": map[string]FileDestination{\n\t\t\t\t\"destinationsKey\": &FileDestination{\n\t\t\t\t\t\"bucketName\": jsii.String(\"bucketName\"),\n\t\t\t\t\t\"objectKey\": jsii.String(\"objectKey\"),\n\n\t\t\t\t\t// the properties below are optional\n\t\t\t\t\t\"assumeRoleArn\": jsii.String(\"assumeRoleArn\"),\n\t\t\t\t\t\"assumeRoleExternalId\": jsii.String(\"assumeRoleExternalId\"),\n\t\t\t\t\t\"region\": jsii.String(\"region\"),\n\t\t\t\t},\n\t\t\t},\n\t\t\t\"source\": &FileSource{\n\t\t\t\t\"executable\": []*string{\n\t\t\t\t\tjsii.String(\"executable\"),\n\t\t\t\t},\n\t\t\t\t\"packaging\": cloud_assembly_schema.FileAssetPackaging_FILE,\n\t\t\t\t\"path\": jsii.String(\"path\"),\n\t\t\t},\n\t\t},\n\t},\n}",
202
202
  "version": "1"
203
203
  },
204
204
  "$": {
205
- "source": "// The code below shows an example of how to instantiate this type.\n// The values are placeholders you should change.\nimport * as cloud_assembly_schema from '@aws-cdk/cloud-assembly-schema';\nconst assetManifest: cloud_assembly_schema.AssetManifest = {\n version: 'version',\n\n // the properties below are optional\n dockerImages: {\n dockerImagesKey: {\n destinations: {\n destinationsKey: {\n imageTag: 'imageTag',\n repositoryName: 'repositoryName',\n\n // the properties below are optional\n assumeRoleArn: 'assumeRoleArn',\n assumeRoleExternalId: 'assumeRoleExternalId',\n region: 'region',\n },\n },\n source: {\n directory: 'directory',\n dockerBuildArgs: {\n dockerBuildArgsKey: 'dockerBuildArgs',\n },\n dockerBuildTarget: 'dockerBuildTarget',\n dockerFile: 'dockerFile',\n executable: ['executable'],\n networkMode: 'networkMode',\n },\n },\n },\n files: {\n filesKey: {\n destinations: {\n destinationsKey: {\n bucketName: 'bucketName',\n objectKey: 'objectKey',\n\n // the properties below are optional\n assumeRoleArn: 'assumeRoleArn',\n assumeRoleExternalId: 'assumeRoleExternalId',\n region: 'region',\n },\n },\n source: {\n executable: ['executable'],\n packaging: cloud_assembly_schema.FileAssetPackaging.FILE,\n path: 'path',\n },\n },\n },\n};",
205
+ "source": "// The code below shows an example of how to instantiate this type.\n// The values are placeholders you should change.\nimport * as cloud_assembly_schema from '@aws-cdk/cloud-assembly-schema';\nconst assetManifest: cloud_assembly_schema.AssetManifest = {\n version: 'version',\n\n // the properties below are optional\n dockerImages: {\n dockerImagesKey: {\n destinations: {\n destinationsKey: {\n imageTag: 'imageTag',\n repositoryName: 'repositoryName',\n\n // the properties below are optional\n assumeRoleArn: 'assumeRoleArn',\n assumeRoleExternalId: 'assumeRoleExternalId',\n region: 'region',\n },\n },\n source: {\n directory: 'directory',\n dockerBuildArgs: {\n dockerBuildArgsKey: 'dockerBuildArgs',\n },\n dockerBuildTarget: 'dockerBuildTarget',\n dockerFile: 'dockerFile',\n executable: ['executable'],\n networkMode: 'networkMode',\n platform: 'platform',\n },\n },\n },\n files: {\n filesKey: {\n destinations: {\n destinationsKey: {\n bucketName: 'bucketName',\n objectKey: 'objectKey',\n\n // the properties below are optional\n assumeRoleArn: 'assumeRoleArn',\n assumeRoleExternalId: 'assumeRoleExternalId',\n region: 'region',\n },\n },\n source: {\n executable: ['executable'],\n packaging: cloud_assembly_schema.FileAssetPackaging.FILE,\n path: 'path',\n },\n },\n },\n};",
206
206
  "version": "0"
207
207
  }
208
208
  },
@@ -227,10 +227,10 @@
227
227
  "@aws-cdk/cloud-assembly-schema.FileDestination",
228
228
  "@aws-cdk/cloud-assembly-schema.FileSource"
229
229
  ],
230
- "fullSource": "// Hoisted imports begin after !show marker below\n/// !show\n// The code below shows an example of how to instantiate this type.\n// The values are placeholders you should change.\nimport * as cloud_assembly_schema from '@aws-cdk/cloud-assembly-schema';\n/// !hide\n// Hoisted imports ended before !hide marker above\nimport { Construct } from \"constructs\";\nclass MyConstruct extends Construct {\nconstructor(scope: Construct, id: string) {\nsuper(scope, id);\n// Code snippet begins after !show marker below\n/// !show\n\nconst assetManifest: cloud_assembly_schema.AssetManifest = {\n version: 'version',\n\n // the properties below are optional\n dockerImages: {\n dockerImagesKey: {\n destinations: {\n destinationsKey: {\n imageTag: 'imageTag',\n repositoryName: 'repositoryName',\n\n // the properties below are optional\n assumeRoleArn: 'assumeRoleArn',\n assumeRoleExternalId: 'assumeRoleExternalId',\n region: 'region',\n },\n },\n source: {\n directory: 'directory',\n dockerBuildArgs: {\n dockerBuildArgsKey: 'dockerBuildArgs',\n },\n dockerBuildTarget: 'dockerBuildTarget',\n dockerFile: 'dockerFile',\n executable: ['executable'],\n networkMode: 'networkMode',\n },\n },\n },\n files: {\n filesKey: {\n destinations: {\n destinationsKey: {\n bucketName: 'bucketName',\n objectKey: 'objectKey',\n\n // the properties below are optional\n assumeRoleArn: 'assumeRoleArn',\n assumeRoleExternalId: 'assumeRoleExternalId',\n region: 'region',\n },\n },\n source: {\n executable: ['executable'],\n packaging: cloud_assembly_schema.FileAssetPackaging.FILE,\n path: 'path',\n },\n },\n },\n};\n/// !hide\n// Code snippet ended before !hide marker above\n} }",
230
+ "fullSource": "// Hoisted imports begin after !show marker below\n/// !show\n// The code below shows an example of how to instantiate this type.\n// The values are placeholders you should change.\nimport * as cloud_assembly_schema from '@aws-cdk/cloud-assembly-schema';\n/// !hide\n// Hoisted imports ended before !hide marker above\nimport { Construct } from \"constructs\";\nclass MyConstruct extends Construct {\nconstructor(scope: Construct, id: string) {\nsuper(scope, id);\n// Code snippet begins after !show marker below\n/// !show\n\nconst assetManifest: cloud_assembly_schema.AssetManifest = {\n version: 'version',\n\n // the properties below are optional\n dockerImages: {\n dockerImagesKey: {\n destinations: {\n destinationsKey: {\n imageTag: 'imageTag',\n repositoryName: 'repositoryName',\n\n // the properties below are optional\n assumeRoleArn: 'assumeRoleArn',\n assumeRoleExternalId: 'assumeRoleExternalId',\n region: 'region',\n },\n },\n source: {\n directory: 'directory',\n dockerBuildArgs: {\n dockerBuildArgsKey: 'dockerBuildArgs',\n },\n dockerBuildTarget: 'dockerBuildTarget',\n dockerFile: 'dockerFile',\n executable: ['executable'],\n networkMode: 'networkMode',\n platform: 'platform',\n },\n },\n },\n files: {\n filesKey: {\n destinations: {\n destinationsKey: {\n bucketName: 'bucketName',\n objectKey: 'objectKey',\n\n // the properties below are optional\n assumeRoleArn: 'assumeRoleArn',\n assumeRoleExternalId: 'assumeRoleExternalId',\n region: 'region',\n },\n },\n source: {\n executable: ['executable'],\n packaging: cloud_assembly_schema.FileAssetPackaging.FILE,\n path: 'path',\n },\n },\n },\n};\n/// !hide\n// Code snippet ended before !hide marker above\n} }",
231
231
  "syntaxKindCounter": {
232
- "10": 20,
233
- "75": 38,
232
+ "10": 21,
233
+ "75": 39,
234
234
  "153": 1,
235
235
  "169": 1,
236
236
  "192": 2,
@@ -242,10 +242,10 @@
242
242
  "254": 1,
243
243
  "255": 1,
244
244
  "256": 1,
245
- "281": 31,
245
+ "281": 32,
246
246
  "290": 1
247
247
  },
248
- "fqnsFingerprint": "7058b4b67d53c9e07e86bf7b1fab26149729e86f31bace665e0990dff1ecb764"
248
+ "fqnsFingerprint": "dbe2e4361bc0248570e34c9f444353d69d7002c4af38c4087497179cef7643dd"
249
249
  },
250
250
  "473cefad1aeafa51cd5283cec6bdb716fbc338d433ea32231c51139c95227a6d": {
251
251
  "translations": {
@@ -640,26 +640,26 @@
640
640
  },
641
641
  "fqnsFingerprint": "c5d3ceb788115e623cc23a29a6034f93b930ada545f0fcf53ea9146dbb03586b"
642
642
  },
643
- "8f7e2b076b4d344fbaa2cffd1d4b6826a6b768f06ff4f268b7962397ae513f96": {
643
+ "21c0b42068c39ea6dc636100b83a0b506221a25d1b29f53cefc26648b7a43e6d": {
644
644
  "translations": {
645
645
  "python": {
646
- "source": "# The code below shows an example of how to instantiate this type.\n# The values are placeholders you should change.\nimport aws_cdk.cloud_assembly_schema as cloud_assembly_schema\n\ncontainer_image_asset_metadata_entry = cloud_assembly_schema.ContainerImageAssetMetadataEntry(\n id=\"id\",\n packaging=\"packaging\",\n path=\"path\",\n source_hash=\"sourceHash\",\n\n # the properties below are optional\n build_args={\n \"build_args_key\": \"buildArgs\"\n },\n file=\"file\",\n image_name_parameter=\"imageNameParameter\",\n image_tag=\"imageTag\",\n network_mode=\"networkMode\",\n repository_name=\"repositoryName\",\n target=\"target\"\n)",
646
+ "source": "# The code below shows an example of how to instantiate this type.\n# The values are placeholders you should change.\nimport aws_cdk.cloud_assembly_schema as cloud_assembly_schema\n\ncontainer_image_asset_metadata_entry = cloud_assembly_schema.ContainerImageAssetMetadataEntry(\n id=\"id\",\n packaging=\"packaging\",\n path=\"path\",\n source_hash=\"sourceHash\",\n\n # the properties below are optional\n build_args={\n \"build_args_key\": \"buildArgs\"\n },\n file=\"file\",\n image_name_parameter=\"imageNameParameter\",\n image_tag=\"imageTag\",\n network_mode=\"networkMode\",\n platform=\"platform\",\n repository_name=\"repositoryName\",\n target=\"target\"\n)",
647
647
  "version": "2"
648
648
  },
649
649
  "csharp": {
650
- "source": "// The code below shows an example of how to instantiate this type.\n// The values are placeholders you should change.\nusing Amazon.CDK.CloudAssembly.Schema;\n\nContainerImageAssetMetadataEntry containerImageAssetMetadataEntry = new ContainerImageAssetMetadataEntry {\n Id = \"id\",\n Packaging = \"packaging\",\n Path = \"path\",\n SourceHash = \"sourceHash\",\n\n // the properties below are optional\n BuildArgs = new Dictionary<string, string> {\n { \"buildArgsKey\", \"buildArgs\" }\n },\n File = \"file\",\n ImageNameParameter = \"imageNameParameter\",\n ImageTag = \"imageTag\",\n NetworkMode = \"networkMode\",\n RepositoryName = \"repositoryName\",\n Target = \"target\"\n};",
650
+ "source": "// The code below shows an example of how to instantiate this type.\n// The values are placeholders you should change.\nusing Amazon.CDK.CloudAssembly.Schema;\n\nContainerImageAssetMetadataEntry containerImageAssetMetadataEntry = new ContainerImageAssetMetadataEntry {\n Id = \"id\",\n Packaging = \"packaging\",\n Path = \"path\",\n SourceHash = \"sourceHash\",\n\n // the properties below are optional\n BuildArgs = new Dictionary<string, string> {\n { \"buildArgsKey\", \"buildArgs\" }\n },\n File = \"file\",\n ImageNameParameter = \"imageNameParameter\",\n ImageTag = \"imageTag\",\n NetworkMode = \"networkMode\",\n Platform = \"platform\",\n RepositoryName = \"repositoryName\",\n Target = \"target\"\n};",
651
651
  "version": "1"
652
652
  },
653
653
  "java": {
654
- "source": "// The code below shows an example of how to instantiate this type.\n// The values are placeholders you should change.\nimport software.amazon.awscdk.cloudassembly.schema.*;\n\nContainerImageAssetMetadataEntry containerImageAssetMetadataEntry = ContainerImageAssetMetadataEntry.builder()\n .id(\"id\")\n .packaging(\"packaging\")\n .path(\"path\")\n .sourceHash(\"sourceHash\")\n\n // the properties below are optional\n .buildArgs(Map.of(\n \"buildArgsKey\", \"buildArgs\"))\n .file(\"file\")\n .imageNameParameter(\"imageNameParameter\")\n .imageTag(\"imageTag\")\n .networkMode(\"networkMode\")\n .repositoryName(\"repositoryName\")\n .target(\"target\")\n .build();",
654
+ "source": "// The code below shows an example of how to instantiate this type.\n// The values are placeholders you should change.\nimport software.amazon.awscdk.cloudassembly.schema.*;\n\nContainerImageAssetMetadataEntry containerImageAssetMetadataEntry = ContainerImageAssetMetadataEntry.builder()\n .id(\"id\")\n .packaging(\"packaging\")\n .path(\"path\")\n .sourceHash(\"sourceHash\")\n\n // the properties below are optional\n .buildArgs(Map.of(\n \"buildArgsKey\", \"buildArgs\"))\n .file(\"file\")\n .imageNameParameter(\"imageNameParameter\")\n .imageTag(\"imageTag\")\n .networkMode(\"networkMode\")\n .platform(\"platform\")\n .repositoryName(\"repositoryName\")\n .target(\"target\")\n .build();",
655
655
  "version": "1"
656
656
  },
657
657
  "go": {
658
- "source": "// The code below shows an example of how to instantiate this type.\n// The values are placeholders you should change.\nimport cloud_assembly_schema \"github.com/aws-samples/dummy/awscdkcloudassemblyschema\"\n\ncontainerImageAssetMetadataEntry := &containerImageAssetMetadataEntry{\n\tid: jsii.String(\"id\"),\n\tpackaging: jsii.String(\"packaging\"),\n\tpath: jsii.String(\"path\"),\n\tsourceHash: jsii.String(\"sourceHash\"),\n\n\t// the properties below are optional\n\tbuildArgs: map[string]*string{\n\t\t\"buildArgsKey\": jsii.String(\"buildArgs\"),\n\t},\n\tfile: jsii.String(\"file\"),\n\timageNameParameter: jsii.String(\"imageNameParameter\"),\n\timageTag: jsii.String(\"imageTag\"),\n\tnetworkMode: jsii.String(\"networkMode\"),\n\trepositoryName: jsii.String(\"repositoryName\"),\n\ttarget: jsii.String(\"target\"),\n}",
658
+ "source": "// The code below shows an example of how to instantiate this type.\n// The values are placeholders you should change.\nimport cloud_assembly_schema \"github.com/aws-samples/dummy/awscdkcloudassemblyschema\"\n\ncontainerImageAssetMetadataEntry := &containerImageAssetMetadataEntry{\n\tid: jsii.String(\"id\"),\n\tpackaging: jsii.String(\"packaging\"),\n\tpath: jsii.String(\"path\"),\n\tsourceHash: jsii.String(\"sourceHash\"),\n\n\t// the properties below are optional\n\tbuildArgs: map[string]*string{\n\t\t\"buildArgsKey\": jsii.String(\"buildArgs\"),\n\t},\n\tfile: jsii.String(\"file\"),\n\timageNameParameter: jsii.String(\"imageNameParameter\"),\n\timageTag: jsii.String(\"imageTag\"),\n\tnetworkMode: jsii.String(\"networkMode\"),\n\tplatform: jsii.String(\"platform\"),\n\trepositoryName: jsii.String(\"repositoryName\"),\n\ttarget: jsii.String(\"target\"),\n}",
659
659
  "version": "1"
660
660
  },
661
661
  "$": {
662
- "source": "// The code below shows an example of how to instantiate this type.\n// The values are placeholders you should change.\nimport * as cloud_assembly_schema from '@aws-cdk/cloud-assembly-schema';\nconst containerImageAssetMetadataEntry: cloud_assembly_schema.ContainerImageAssetMetadataEntry = {\n id: 'id',\n packaging: 'packaging',\n path: 'path',\n sourceHash: 'sourceHash',\n\n // the properties below are optional\n buildArgs: {\n buildArgsKey: 'buildArgs',\n },\n file: 'file',\n imageNameParameter: 'imageNameParameter',\n imageTag: 'imageTag',\n networkMode: 'networkMode',\n repositoryName: 'repositoryName',\n target: 'target',\n};",
662
+ "source": "// The code below shows an example of how to instantiate this type.\n// The values are placeholders you should change.\nimport * as cloud_assembly_schema from '@aws-cdk/cloud-assembly-schema';\nconst containerImageAssetMetadataEntry: cloud_assembly_schema.ContainerImageAssetMetadataEntry = {\n id: 'id',\n packaging: 'packaging',\n path: 'path',\n sourceHash: 'sourceHash',\n\n // the properties below are optional\n buildArgs: {\n buildArgsKey: 'buildArgs',\n },\n file: 'file',\n imageNameParameter: 'imageNameParameter',\n imageTag: 'imageTag',\n networkMode: 'networkMode',\n platform: 'platform',\n repositoryName: 'repositoryName',\n target: 'target',\n};",
663
663
  "version": "0"
664
664
  }
665
665
  },
@@ -676,10 +676,10 @@
676
676
  "fqnsReferenced": [
677
677
  "@aws-cdk/cloud-assembly-schema.ContainerImageAssetMetadataEntry"
678
678
  ],
679
- "fullSource": "// Hoisted imports begin after !show marker below\n/// !show\n// The code below shows an example of how to instantiate this type.\n// The values are placeholders you should change.\nimport * as cloud_assembly_schema from '@aws-cdk/cloud-assembly-schema';\n/// !hide\n// Hoisted imports ended before !hide marker above\nimport { Construct } from \"constructs\";\nclass MyConstruct extends Construct {\nconstructor(scope: Construct, id: string) {\nsuper(scope, id);\n// Code snippet begins after !show marker below\n/// !show\n\nconst containerImageAssetMetadataEntry: cloud_assembly_schema.ContainerImageAssetMetadataEntry = {\n id: 'id',\n packaging: 'packaging',\n path: 'path',\n sourceHash: 'sourceHash',\n\n // the properties below are optional\n buildArgs: {\n buildArgsKey: 'buildArgs',\n },\n file: 'file',\n imageNameParameter: 'imageNameParameter',\n imageTag: 'imageTag',\n networkMode: 'networkMode',\n repositoryName: 'repositoryName',\n target: 'target',\n};\n/// !hide\n// Code snippet ended before !hide marker above\n} }",
679
+ "fullSource": "// Hoisted imports begin after !show marker below\n/// !show\n// The code below shows an example of how to instantiate this type.\n// The values are placeholders you should change.\nimport * as cloud_assembly_schema from '@aws-cdk/cloud-assembly-schema';\n/// !hide\n// Hoisted imports ended before !hide marker above\nimport { Construct } from \"constructs\";\nclass MyConstruct extends Construct {\nconstructor(scope: Construct, id: string) {\nsuper(scope, id);\n// Code snippet begins after !show marker below\n/// !show\n\nconst containerImageAssetMetadataEntry: cloud_assembly_schema.ContainerImageAssetMetadataEntry = {\n id: 'id',\n packaging: 'packaging',\n path: 'path',\n sourceHash: 'sourceHash',\n\n // the properties below are optional\n buildArgs: {\n buildArgsKey: 'buildArgs',\n },\n file: 'file',\n imageNameParameter: 'imageNameParameter',\n imageTag: 'imageTag',\n networkMode: 'networkMode',\n platform: 'platform',\n repositoryName: 'repositoryName',\n target: 'target',\n};\n/// !hide\n// Code snippet ended before !hide marker above\n} }",
680
680
  "syntaxKindCounter": {
681
- "10": 12,
682
- "75": 16,
681
+ "10": 13,
682
+ "75": 17,
683
683
  "153": 1,
684
684
  "169": 1,
685
685
  "193": 2,
@@ -689,10 +689,10 @@
689
689
  "254": 1,
690
690
  "255": 1,
691
691
  "256": 1,
692
- "281": 12,
692
+ "281": 13,
693
693
  "290": 1
694
694
  },
695
- "fqnsFingerprint": "24a489bf1e77b25f5586308f2061ec7e9cdbfa0e142cd270d57fc56b6e9dc64d"
695
+ "fqnsFingerprint": "b2b13cee1896c62359ff8fbcfc4ed6cb6f2c76d0c02497a8b8f7e5d4658929f1"
696
696
  },
697
697
  "446fbe4ef57d065169198f8cc45bb64f69409c17ca8b277fb2d2e8b9b84d44a1": {
698
698
  "translations": {
@@ -982,26 +982,26 @@
982
982
  },
983
983
  "fqnsFingerprint": "696ab8e3123c74a19b88226c980e065a07c1f8784f57e4445833869b4f52e55f"
984
984
  },
985
- "13514bf756685ec4825817ac806f4a7510034d11baa93291d3d8749ecc9bc6e2": {
985
+ "73eab5943bd737b91d438766d10fb9ffe674834b5b59cf68d5d34d851d6f9d9d": {
986
986
  "translations": {
987
987
  "python": {
988
- "source": "# The code below shows an example of how to instantiate this type.\n# The values are placeholders you should change.\nimport aws_cdk.cloud_assembly_schema as cloud_assembly_schema\n\ndocker_image_asset = cloud_assembly_schema.DockerImageAsset(\n destinations={\n \"destinations_key\": cloud_assembly_schema.DockerImageDestination(\n image_tag=\"imageTag\",\n repository_name=\"repositoryName\",\n\n # the properties below are optional\n assume_role_arn=\"assumeRoleArn\",\n assume_role_external_id=\"assumeRoleExternalId\",\n region=\"region\"\n )\n },\n source=cloud_assembly_schema.DockerImageSource(\n directory=\"directory\",\n docker_build_args={\n \"docker_build_args_key\": \"dockerBuildArgs\"\n },\n docker_build_target=\"dockerBuildTarget\",\n docker_file=\"dockerFile\",\n executable=[\"executable\"],\n network_mode=\"networkMode\"\n )\n)",
988
+ "source": "# The code below shows an example of how to instantiate this type.\n# The values are placeholders you should change.\nimport aws_cdk.cloud_assembly_schema as cloud_assembly_schema\n\ndocker_image_asset = cloud_assembly_schema.DockerImageAsset(\n destinations={\n \"destinations_key\": cloud_assembly_schema.DockerImageDestination(\n image_tag=\"imageTag\",\n repository_name=\"repositoryName\",\n\n # the properties below are optional\n assume_role_arn=\"assumeRoleArn\",\n assume_role_external_id=\"assumeRoleExternalId\",\n region=\"region\"\n )\n },\n source=cloud_assembly_schema.DockerImageSource(\n directory=\"directory\",\n docker_build_args={\n \"docker_build_args_key\": \"dockerBuildArgs\"\n },\n docker_build_target=\"dockerBuildTarget\",\n docker_file=\"dockerFile\",\n executable=[\"executable\"],\n network_mode=\"networkMode\",\n platform=\"platform\"\n )\n)",
989
989
  "version": "2"
990
990
  },
991
991
  "csharp": {
992
- "source": "// The code below shows an example of how to instantiate this type.\n// The values are placeholders you should change.\nusing Amazon.CDK.CloudAssembly.Schema;\n\nDockerImageAsset dockerImageAsset = new DockerImageAsset {\n Destinations = new Dictionary<string, DockerImageDestination> {\n { \"destinationsKey\", new DockerImageDestination {\n ImageTag = \"imageTag\",\n RepositoryName = \"repositoryName\",\n\n // the properties below are optional\n AssumeRoleArn = \"assumeRoleArn\",\n AssumeRoleExternalId = \"assumeRoleExternalId\",\n Region = \"region\"\n } }\n },\n Source = new DockerImageSource {\n Directory = \"directory\",\n DockerBuildArgs = new Dictionary<string, string> {\n { \"dockerBuildArgsKey\", \"dockerBuildArgs\" }\n },\n DockerBuildTarget = \"dockerBuildTarget\",\n DockerFile = \"dockerFile\",\n Executable = new [] { \"executable\" },\n NetworkMode = \"networkMode\"\n }\n};",
992
+ "source": "// The code below shows an example of how to instantiate this type.\n// The values are placeholders you should change.\nusing Amazon.CDK.CloudAssembly.Schema;\n\nDockerImageAsset dockerImageAsset = new DockerImageAsset {\n Destinations = new Dictionary<string, DockerImageDestination> {\n { \"destinationsKey\", new DockerImageDestination {\n ImageTag = \"imageTag\",\n RepositoryName = \"repositoryName\",\n\n // the properties below are optional\n AssumeRoleArn = \"assumeRoleArn\",\n AssumeRoleExternalId = \"assumeRoleExternalId\",\n Region = \"region\"\n } }\n },\n Source = new DockerImageSource {\n Directory = \"directory\",\n DockerBuildArgs = new Dictionary<string, string> {\n { \"dockerBuildArgsKey\", \"dockerBuildArgs\" }\n },\n DockerBuildTarget = \"dockerBuildTarget\",\n DockerFile = \"dockerFile\",\n Executable = new [] { \"executable\" },\n NetworkMode = \"networkMode\",\n Platform = \"platform\"\n }\n};",
993
993
  "version": "1"
994
994
  },
995
995
  "java": {
996
- "source": "// The code below shows an example of how to instantiate this type.\n// The values are placeholders you should change.\nimport software.amazon.awscdk.cloudassembly.schema.*;\n\nDockerImageAsset dockerImageAsset = DockerImageAsset.builder()\n .destinations(Map.of(\n \"destinationsKey\", DockerImageDestination.builder()\n .imageTag(\"imageTag\")\n .repositoryName(\"repositoryName\")\n\n // the properties below are optional\n .assumeRoleArn(\"assumeRoleArn\")\n .assumeRoleExternalId(\"assumeRoleExternalId\")\n .region(\"region\")\n .build()))\n .source(DockerImageSource.builder()\n .directory(\"directory\")\n .dockerBuildArgs(Map.of(\n \"dockerBuildArgsKey\", \"dockerBuildArgs\"))\n .dockerBuildTarget(\"dockerBuildTarget\")\n .dockerFile(\"dockerFile\")\n .executable(List.of(\"executable\"))\n .networkMode(\"networkMode\")\n .build())\n .build();",
996
+ "source": "// The code below shows an example of how to instantiate this type.\n// The values are placeholders you should change.\nimport software.amazon.awscdk.cloudassembly.schema.*;\n\nDockerImageAsset dockerImageAsset = DockerImageAsset.builder()\n .destinations(Map.of(\n \"destinationsKey\", DockerImageDestination.builder()\n .imageTag(\"imageTag\")\n .repositoryName(\"repositoryName\")\n\n // the properties below are optional\n .assumeRoleArn(\"assumeRoleArn\")\n .assumeRoleExternalId(\"assumeRoleExternalId\")\n .region(\"region\")\n .build()))\n .source(DockerImageSource.builder()\n .directory(\"directory\")\n .dockerBuildArgs(Map.of(\n \"dockerBuildArgsKey\", \"dockerBuildArgs\"))\n .dockerBuildTarget(\"dockerBuildTarget\")\n .dockerFile(\"dockerFile\")\n .executable(List.of(\"executable\"))\n .networkMode(\"networkMode\")\n .platform(\"platform\")\n .build())\n .build();",
997
997
  "version": "1"
998
998
  },
999
999
  "go": {
1000
- "source": "// The code below shows an example of how to instantiate this type.\n// The values are placeholders you should change.\nimport cloud_assembly_schema \"github.com/aws-samples/dummy/awscdkcloudassemblyschema\"\n\ndockerImageAsset := &dockerImageAsset{\n\tdestinations: map[string]dockerImageDestination{\n\t\t\"destinationsKey\": &dockerImageDestination{\n\t\t\t\"imageTag\": jsii.String(\"imageTag\"),\n\t\t\t\"repositoryName\": jsii.String(\"repositoryName\"),\n\n\t\t\t// the properties below are optional\n\t\t\t\"assumeRoleArn\": jsii.String(\"assumeRoleArn\"),\n\t\t\t\"assumeRoleExternalId\": jsii.String(\"assumeRoleExternalId\"),\n\t\t\t\"region\": jsii.String(\"region\"),\n\t\t},\n\t},\n\tsource: &dockerImageSource{\n\t\tdirectory: jsii.String(\"directory\"),\n\t\tdockerBuildArgs: map[string]*string{\n\t\t\t\"dockerBuildArgsKey\": jsii.String(\"dockerBuildArgs\"),\n\t\t},\n\t\tdockerBuildTarget: jsii.String(\"dockerBuildTarget\"),\n\t\tdockerFile: jsii.String(\"dockerFile\"),\n\t\texecutable: []*string{\n\t\t\tjsii.String(\"executable\"),\n\t\t},\n\t\tnetworkMode: jsii.String(\"networkMode\"),\n\t},\n}",
1000
+ "source": "// The code below shows an example of how to instantiate this type.\n// The values are placeholders you should change.\nimport cloud_assembly_schema \"github.com/aws-samples/dummy/awscdkcloudassemblyschema\"\n\ndockerImageAsset := &dockerImageAsset{\n\tdestinations: map[string]dockerImageDestination{\n\t\t\"destinationsKey\": &dockerImageDestination{\n\t\t\t\"imageTag\": jsii.String(\"imageTag\"),\n\t\t\t\"repositoryName\": jsii.String(\"repositoryName\"),\n\n\t\t\t// the properties below are optional\n\t\t\t\"assumeRoleArn\": jsii.String(\"assumeRoleArn\"),\n\t\t\t\"assumeRoleExternalId\": jsii.String(\"assumeRoleExternalId\"),\n\t\t\t\"region\": jsii.String(\"region\"),\n\t\t},\n\t},\n\tsource: &dockerImageSource{\n\t\tdirectory: jsii.String(\"directory\"),\n\t\tdockerBuildArgs: map[string]*string{\n\t\t\t\"dockerBuildArgsKey\": jsii.String(\"dockerBuildArgs\"),\n\t\t},\n\t\tdockerBuildTarget: jsii.String(\"dockerBuildTarget\"),\n\t\tdockerFile: jsii.String(\"dockerFile\"),\n\t\texecutable: []*string{\n\t\t\tjsii.String(\"executable\"),\n\t\t},\n\t\tnetworkMode: jsii.String(\"networkMode\"),\n\t\tplatform: jsii.String(\"platform\"),\n\t},\n}",
1001
1001
  "version": "1"
1002
1002
  },
1003
1003
  "$": {
1004
- "source": "// The code below shows an example of how to instantiate this type.\n// The values are placeholders you should change.\nimport * as cloud_assembly_schema from '@aws-cdk/cloud-assembly-schema';\nconst dockerImageAsset: cloud_assembly_schema.DockerImageAsset = {\n destinations: {\n destinationsKey: {\n imageTag: 'imageTag',\n repositoryName: 'repositoryName',\n\n // the properties below are optional\n assumeRoleArn: 'assumeRoleArn',\n assumeRoleExternalId: 'assumeRoleExternalId',\n region: 'region',\n },\n },\n source: {\n directory: 'directory',\n dockerBuildArgs: {\n dockerBuildArgsKey: 'dockerBuildArgs',\n },\n dockerBuildTarget: 'dockerBuildTarget',\n dockerFile: 'dockerFile',\n executable: ['executable'],\n networkMode: 'networkMode',\n },\n};",
1004
+ "source": "// The code below shows an example of how to instantiate this type.\n// The values are placeholders you should change.\nimport * as cloud_assembly_schema from '@aws-cdk/cloud-assembly-schema';\nconst dockerImageAsset: cloud_assembly_schema.DockerImageAsset = {\n destinations: {\n destinationsKey: {\n imageTag: 'imageTag',\n repositoryName: 'repositoryName',\n\n // the properties below are optional\n assumeRoleArn: 'assumeRoleArn',\n assumeRoleExternalId: 'assumeRoleExternalId',\n region: 'region',\n },\n },\n source: {\n directory: 'directory',\n dockerBuildArgs: {\n dockerBuildArgsKey: 'dockerBuildArgs',\n },\n dockerBuildTarget: 'dockerBuildTarget',\n dockerFile: 'dockerFile',\n executable: ['executable'],\n networkMode: 'networkMode',\n platform: 'platform',\n },\n};",
1005
1005
  "version": "0"
1006
1006
  }
1007
1007
  },
@@ -1020,10 +1020,10 @@
1020
1020
  "@aws-cdk/cloud-assembly-schema.DockerImageDestination",
1021
1021
  "@aws-cdk/cloud-assembly-schema.DockerImageSource"
1022
1022
  ],
1023
- "fullSource": "// Hoisted imports begin after !show marker below\n/// !show\n// The code below shows an example of how to instantiate this type.\n// The values are placeholders you should change.\nimport * as cloud_assembly_schema from '@aws-cdk/cloud-assembly-schema';\n/// !hide\n// Hoisted imports ended before !hide marker above\nimport { Construct } from \"constructs\";\nclass MyConstruct extends Construct {\nconstructor(scope: Construct, id: string) {\nsuper(scope, id);\n// Code snippet begins after !show marker below\n/// !show\n\nconst dockerImageAsset: cloud_assembly_schema.DockerImageAsset = {\n destinations: {\n destinationsKey: {\n imageTag: 'imageTag',\n repositoryName: 'repositoryName',\n\n // the properties below are optional\n assumeRoleArn: 'assumeRoleArn',\n assumeRoleExternalId: 'assumeRoleExternalId',\n region: 'region',\n },\n },\n source: {\n directory: 'directory',\n dockerBuildArgs: {\n dockerBuildArgsKey: 'dockerBuildArgs',\n },\n dockerBuildTarget: 'dockerBuildTarget',\n dockerFile: 'dockerFile',\n executable: ['executable'],\n networkMode: 'networkMode',\n },\n};\n/// !hide\n// Code snippet ended before !hide marker above\n} }",
1023
+ "fullSource": "// Hoisted imports begin after !show marker below\n/// !show\n// The code below shows an example of how to instantiate this type.\n// The values are placeholders you should change.\nimport * as cloud_assembly_schema from '@aws-cdk/cloud-assembly-schema';\n/// !hide\n// Hoisted imports ended before !hide marker above\nimport { Construct } from \"constructs\";\nclass MyConstruct extends Construct {\nconstructor(scope: Construct, id: string) {\nsuper(scope, id);\n// Code snippet begins after !show marker below\n/// !show\n\nconst dockerImageAsset: cloud_assembly_schema.DockerImageAsset = {\n destinations: {\n destinationsKey: {\n imageTag: 'imageTag',\n repositoryName: 'repositoryName',\n\n // the properties below are optional\n assumeRoleArn: 'assumeRoleArn',\n assumeRoleExternalId: 'assumeRoleExternalId',\n region: 'region',\n },\n },\n source: {\n directory: 'directory',\n dockerBuildArgs: {\n dockerBuildArgsKey: 'dockerBuildArgs',\n },\n dockerBuildTarget: 'dockerBuildTarget',\n dockerFile: 'dockerFile',\n executable: ['executable'],\n networkMode: 'networkMode',\n platform: 'platform',\n },\n};\n/// !hide\n// Code snippet ended before !hide marker above\n} }",
1024
1024
  "syntaxKindCounter": {
1025
- "10": 12,
1026
- "75": 19,
1025
+ "10": 13,
1026
+ "75": 20,
1027
1027
  "153": 1,
1028
1028
  "169": 1,
1029
1029
  "192": 1,
@@ -1034,10 +1034,10 @@
1034
1034
  "254": 1,
1035
1035
  "255": 1,
1036
1036
  "256": 1,
1037
- "281": 15,
1037
+ "281": 16,
1038
1038
  "290": 1
1039
1039
  },
1040
- "fqnsFingerprint": "cd7668ec20caebc3429cd02aadcee1b235511c02c467e738177ec3363609f597"
1040
+ "fqnsFingerprint": "8a1602eeca08c4ba2477b56c3587f95b6e3ec86ff2bce6ee02148a4b87b240ec"
1041
1041
  },
1042
1042
  "3eceaa7485ff32425f456723bd17685f9967b2fd99d81dec3e5d5d4a319ceca7": {
1043
1043
  "translations": {
@@ -1093,26 +1093,26 @@
1093
1093
  },
1094
1094
  "fqnsFingerprint": "74ca46abe27a67d74e65971a313c5675034ad3a7703423467a3ca0db3dba8568"
1095
1095
  },
1096
- "3fc97b6f2fd582e233ddca867b3bbda48da9db940935286de08bc96be825b224": {
1096
+ "8b1f08dcfd878af1db2ee227f2bc4934ea596e9038003db7e4fa83aa691c15e7": {
1097
1097
  "translations": {
1098
1098
  "python": {
1099
- "source": "# The code below shows an example of how to instantiate this type.\n# The values are placeholders you should change.\nimport aws_cdk.cloud_assembly_schema as cloud_assembly_schema\n\ndocker_image_source = cloud_assembly_schema.DockerImageSource(\n directory=\"directory\",\n docker_build_args={\n \"docker_build_args_key\": \"dockerBuildArgs\"\n },\n docker_build_target=\"dockerBuildTarget\",\n docker_file=\"dockerFile\",\n executable=[\"executable\"],\n network_mode=\"networkMode\"\n)",
1099
+ "source": "# The code below shows an example of how to instantiate this type.\n# The values are placeholders you should change.\nimport aws_cdk.cloud_assembly_schema as cloud_assembly_schema\n\ndocker_image_source = cloud_assembly_schema.DockerImageSource(\n directory=\"directory\",\n docker_build_args={\n \"docker_build_args_key\": \"dockerBuildArgs\"\n },\n docker_build_target=\"dockerBuildTarget\",\n docker_file=\"dockerFile\",\n executable=[\"executable\"],\n network_mode=\"networkMode\",\n platform=\"platform\"\n)",
1100
1100
  "version": "2"
1101
1101
  },
1102
1102
  "csharp": {
1103
- "source": "// The code below shows an example of how to instantiate this type.\n// The values are placeholders you should change.\nusing Amazon.CDK.CloudAssembly.Schema;\n\nDockerImageSource dockerImageSource = new DockerImageSource {\n Directory = \"directory\",\n DockerBuildArgs = new Dictionary<string, string> {\n { \"dockerBuildArgsKey\", \"dockerBuildArgs\" }\n },\n DockerBuildTarget = \"dockerBuildTarget\",\n DockerFile = \"dockerFile\",\n Executable = new [] { \"executable\" },\n NetworkMode = \"networkMode\"\n};",
1103
+ "source": "// The code below shows an example of how to instantiate this type.\n// The values are placeholders you should change.\nusing Amazon.CDK.CloudAssembly.Schema;\n\nDockerImageSource dockerImageSource = new DockerImageSource {\n Directory = \"directory\",\n DockerBuildArgs = new Dictionary<string, string> {\n { \"dockerBuildArgsKey\", \"dockerBuildArgs\" }\n },\n DockerBuildTarget = \"dockerBuildTarget\",\n DockerFile = \"dockerFile\",\n Executable = new [] { \"executable\" },\n NetworkMode = \"networkMode\",\n Platform = \"platform\"\n};",
1104
1104
  "version": "1"
1105
1105
  },
1106
1106
  "java": {
1107
- "source": "// The code below shows an example of how to instantiate this type.\n// The values are placeholders you should change.\nimport software.amazon.awscdk.cloudassembly.schema.*;\n\nDockerImageSource dockerImageSource = DockerImageSource.builder()\n .directory(\"directory\")\n .dockerBuildArgs(Map.of(\n \"dockerBuildArgsKey\", \"dockerBuildArgs\"))\n .dockerBuildTarget(\"dockerBuildTarget\")\n .dockerFile(\"dockerFile\")\n .executable(List.of(\"executable\"))\n .networkMode(\"networkMode\")\n .build();",
1107
+ "source": "// The code below shows an example of how to instantiate this type.\n// The values are placeholders you should change.\nimport software.amazon.awscdk.cloudassembly.schema.*;\n\nDockerImageSource dockerImageSource = DockerImageSource.builder()\n .directory(\"directory\")\n .dockerBuildArgs(Map.of(\n \"dockerBuildArgsKey\", \"dockerBuildArgs\"))\n .dockerBuildTarget(\"dockerBuildTarget\")\n .dockerFile(\"dockerFile\")\n .executable(List.of(\"executable\"))\n .networkMode(\"networkMode\")\n .platform(\"platform\")\n .build();",
1108
1108
  "version": "1"
1109
1109
  },
1110
1110
  "go": {
1111
- "source": "// The code below shows an example of how to instantiate this type.\n// The values are placeholders you should change.\nimport cloud_assembly_schema \"github.com/aws-samples/dummy/awscdkcloudassemblyschema\"\n\ndockerImageSource := &dockerImageSource{\n\tdirectory: jsii.String(\"directory\"),\n\tdockerBuildArgs: map[string]*string{\n\t\t\"dockerBuildArgsKey\": jsii.String(\"dockerBuildArgs\"),\n\t},\n\tdockerBuildTarget: jsii.String(\"dockerBuildTarget\"),\n\tdockerFile: jsii.String(\"dockerFile\"),\n\texecutable: []*string{\n\t\tjsii.String(\"executable\"),\n\t},\n\tnetworkMode: jsii.String(\"networkMode\"),\n}",
1111
+ "source": "// The code below shows an example of how to instantiate this type.\n// The values are placeholders you should change.\nimport cloud_assembly_schema \"github.com/aws-samples/dummy/awscdkcloudassemblyschema\"\n\ndockerImageSource := &dockerImageSource{\n\tdirectory: jsii.String(\"directory\"),\n\tdockerBuildArgs: map[string]*string{\n\t\t\"dockerBuildArgsKey\": jsii.String(\"dockerBuildArgs\"),\n\t},\n\tdockerBuildTarget: jsii.String(\"dockerBuildTarget\"),\n\tdockerFile: jsii.String(\"dockerFile\"),\n\texecutable: []*string{\n\t\tjsii.String(\"executable\"),\n\t},\n\tnetworkMode: jsii.String(\"networkMode\"),\n\tplatform: jsii.String(\"platform\"),\n}",
1112
1112
  "version": "1"
1113
1113
  },
1114
1114
  "$": {
1115
- "source": "// The code below shows an example of how to instantiate this type.\n// The values are placeholders you should change.\nimport * as cloud_assembly_schema from '@aws-cdk/cloud-assembly-schema';\nconst dockerImageSource: cloud_assembly_schema.DockerImageSource = {\n directory: 'directory',\n dockerBuildArgs: {\n dockerBuildArgsKey: 'dockerBuildArgs',\n },\n dockerBuildTarget: 'dockerBuildTarget',\n dockerFile: 'dockerFile',\n executable: ['executable'],\n networkMode: 'networkMode',\n};",
1115
+ "source": "// The code below shows an example of how to instantiate this type.\n// The values are placeholders you should change.\nimport * as cloud_assembly_schema from '@aws-cdk/cloud-assembly-schema';\nconst dockerImageSource: cloud_assembly_schema.DockerImageSource = {\n directory: 'directory',\n dockerBuildArgs: {\n dockerBuildArgsKey: 'dockerBuildArgs',\n },\n dockerBuildTarget: 'dockerBuildTarget',\n dockerFile: 'dockerFile',\n executable: ['executable'],\n networkMode: 'networkMode',\n platform: 'platform',\n};",
1116
1116
  "version": "0"
1117
1117
  }
1118
1118
  },
@@ -1129,10 +1129,10 @@
1129
1129
  "fqnsReferenced": [
1130
1130
  "@aws-cdk/cloud-assembly-schema.DockerImageSource"
1131
1131
  ],
1132
- "fullSource": "// Hoisted imports begin after !show marker below\n/// !show\n// The code below shows an example of how to instantiate this type.\n// The values are placeholders you should change.\nimport * as cloud_assembly_schema from '@aws-cdk/cloud-assembly-schema';\n/// !hide\n// Hoisted imports ended before !hide marker above\nimport { Construct } from \"constructs\";\nclass MyConstruct extends Construct {\nconstructor(scope: Construct, id: string) {\nsuper(scope, id);\n// Code snippet begins after !show marker below\n/// !show\n\nconst dockerImageSource: cloud_assembly_schema.DockerImageSource = {\n directory: 'directory',\n dockerBuildArgs: {\n dockerBuildArgsKey: 'dockerBuildArgs',\n },\n dockerBuildTarget: 'dockerBuildTarget',\n dockerFile: 'dockerFile',\n executable: ['executable'],\n networkMode: 'networkMode',\n};\n/// !hide\n// Code snippet ended before !hide marker above\n} }",
1132
+ "fullSource": "// Hoisted imports begin after !show marker below\n/// !show\n// The code below shows an example of how to instantiate this type.\n// The values are placeholders you should change.\nimport * as cloud_assembly_schema from '@aws-cdk/cloud-assembly-schema';\n/// !hide\n// Hoisted imports ended before !hide marker above\nimport { Construct } from \"constructs\";\nclass MyConstruct extends Construct {\nconstructor(scope: Construct, id: string) {\nsuper(scope, id);\n// Code snippet begins after !show marker below\n/// !show\n\nconst dockerImageSource: cloud_assembly_schema.DockerImageSource = {\n directory: 'directory',\n dockerBuildArgs: {\n dockerBuildArgsKey: 'dockerBuildArgs',\n },\n dockerBuildTarget: 'dockerBuildTarget',\n dockerFile: 'dockerFile',\n executable: ['executable'],\n networkMode: 'networkMode',\n platform: 'platform',\n};\n/// !hide\n// Code snippet ended before !hide marker above\n} }",
1133
1133
  "syntaxKindCounter": {
1134
- "10": 7,
1135
- "75": 11,
1134
+ "10": 8,
1135
+ "75": 12,
1136
1136
  "153": 1,
1137
1137
  "169": 1,
1138
1138
  "192": 1,
@@ -1143,10 +1143,10 @@
1143
1143
  "254": 1,
1144
1144
  "255": 1,
1145
1145
  "256": 1,
1146
- "281": 7,
1146
+ "281": 8,
1147
1147
  "290": 1
1148
1148
  },
1149
- "fqnsFingerprint": "179ff1e0b5761ca798c6708ca3a322c7e22138ddce2772c2e7f34693fd921278"
1149
+ "fqnsFingerprint": "8d6d4a611218ac640147d1cbb602c5a98b57cf022a02d00a293d0c04c3fbf04d"
1150
1150
  },
1151
1151
  "d47b9785bf52ba93f36631c9ec90abc31b341035fc16b8ce1b605671d78ebf8e": {
1152
1152
  "translations": {
@@ -1943,7 +1943,7 @@
1943
1943
  "281": 3,
1944
1944
  "290": 1
1945
1945
  },
1946
- "fqnsFingerprint": "0ef3a172862eaaf834ebf4301fa6ff1b1d4f0a4f34cd995c804b61032a66b546"
1946
+ "fqnsFingerprint": "f444d485ca5086505e5c321934f98cc6bddcd324bbc032306957fdeeb95b26ab"
1947
1947
  },
1948
1948
  "d45096ab2fa854fa21866ba05726b072043c135cd833a8a74c547f2dd6848774": {
1949
1949
  "translations": {
package/README.md CHANGED
@@ -14,8 +14,8 @@ This module is part of the [AWS Cloud Development Kit](https://github.com/aws/aw
14
14
  ## Cloud Assembly
15
15
 
16
16
  The *Cloud Assembly* is the output of the synthesis operation. It is produced as part of the
17
- [`cdk synth`](https://github.com/aws/aws-cdk/tree/master/packages/aws-cdk#cdk-synthesize)
18
- command, or the [`app.synth()`](https://github.com/aws/aws-cdk/blob/master/packages/@aws-cdk/core/lib/app.ts#L135) method invocation.
17
+ [`cdk synth`](https://github.com/aws/aws-cdk/tree/main/packages/aws-cdk#cdk-synthesize)
18
+ command, or the [`app.synth()`](https://github.com/aws/aws-cdk/blob/main/packages/@aws-cdk/core/lib/app.ts#L135) method invocation.
19
19
 
20
20
  Its essentially a set of files and directories, one of which is the `manifest.json` file. It defines the set of instructions that are
21
21
  needed in order to deploy the assembly directory.
@@ -67,6 +67,14 @@ export interface DockerImageSource {
67
67
  * @default - no networking mode specified
68
68
  */
69
69
  readonly networkMode?: string;
70
+ /**
71
+ * Platform to build for. _Requires Docker Buildx_.
72
+ *
73
+ * Specify this property to build images on a specific platform/architecture.
74
+ *
75
+ * @default - current machine platform
76
+ */
77
+ readonly platform?: string;
70
78
  }
71
79
  /**
72
80
  * Where to publish docker images
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9ja2VyLWltYWdlLWFzc2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZG9ja2VyLWltYWdlLWFzc2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBd3NEZXN0aW5hdGlvbiB9IGZyb20gJy4vYXdzLWRlc3RpbmF0aW9uJztcblxuLyoqXG4gKiBBIGZpbGUgYXNzZXRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEb2NrZXJJbWFnZUFzc2V0IHtcbiAgLyoqXG4gICAqIFNvdXJjZSBkZXNjcmlwdGlvbiBmb3IgZmlsZSBhc3NldHNcbiAgICovXG4gIHJlYWRvbmx5IHNvdXJjZTogRG9ja2VySW1hZ2VTb3VyY2U7XG5cbiAgLyoqXG4gICAqIERlc3RpbmF0aW9ucyBmb3IgdGhpcyBmaWxlIGFzc2V0XG4gICAqL1xuICByZWFkb25seSBkZXN0aW5hdGlvbnM6IHsgW2lkOiBzdHJpbmddOiBEb2NrZXJJbWFnZURlc3RpbmF0aW9uIH07XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgaG93IHRvIHByb2R1Y2UgYSBEb2NrZXIgaW1hZ2UgZnJvbSBhIHNvdXJjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIERvY2tlckltYWdlU291cmNlIHtcbiAgLyoqXG4gICAqIFRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgRG9ja2VyIGltYWdlIGJ1aWxkIGluc3RydWN0aW9ucy5cbiAgICpcbiAgICogVGhpcyBwYXRoIGlzIHJlbGF0aXZlIHRvIHRoZSBhc3NldCBtYW5pZmVzdCBsb2NhdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBFeGFjdGx5IG9uZSBvZiBgZGlyZWN0b3J5YCBhbmQgYGV4ZWN1dGFibGVgIGlzIHJlcXVpcmVkXG4gICAqL1xuICByZWFkb25seSBkaXJlY3Rvcnk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgY29tbWFuZC1saW5lIGV4ZWN1dGFibGUgdGhhdCByZXR1cm5zIHRoZSBuYW1lIG9mIGEgbG9jYWxcbiAgICogRG9ja2VyIGltYWdlIG9uIHN0ZG91dCBhZnRlciBiZWluZyBydW4uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gRXhhY3RseSBvbmUgb2YgYGRpcmVjdG9yeWAgYW5kIGBleGVjdXRhYmxlYCBpcyByZXF1aXJlZFxuICAgKi9cbiAgcmVhZG9ubHkgZXhlY3V0YWJsZT86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgZmlsZSB3aXRoIGJ1aWxkIGluc3RydWN0aW9uc1xuICAgKlxuICAgKiBPbmx5IGFsbG93ZWQgd2hlbiBgZGlyZWN0b3J5YCBpcyBzZXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IFwiRG9ja2VyZmlsZVwiXG4gICAqL1xuICByZWFkb25seSBkb2NrZXJGaWxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUYXJnZXQgYnVpbGQgc3RhZ2UgaW4gYSBEb2NrZXJmaWxlIHdpdGggbXVsdGlwbGUgYnVpbGQgc3RhZ2VzXG4gICAqXG4gICAqIE9ubHkgYWxsb3dlZCB3aGVuIGBkaXJlY3RvcnlgIGlzIHNldC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBUaGUgbGFzdCBzdGFnZSBpbiB0aGUgRG9ja2VyZmlsZVxuICAgKi9cbiAgcmVhZG9ubHkgZG9ja2VyQnVpbGRUYXJnZXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgYnVpbGQgYXJndW1lbnRzXG4gICAqXG4gICAqIE9ubHkgYWxsb3dlZCB3aGVuIGBkaXJlY3RvcnlgIGlzIHNldC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBhZGRpdGlvbmFsIGJ1aWxkIGFyZ3VtZW50c1xuICAgKi9cbiAgcmVhZG9ubHkgZG9ja2VyQnVpbGRBcmdzPzogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIE5ldHdvcmtpbmcgbW9kZSBmb3IgdGhlIFJVTiBjb21tYW5kcyBkdXJpbmcgYnVpbGQuIF9SZXF1aXJlcyBEb2NrZXIgRW5naW5lIEFQSSB2MS4yNStfLlxuICAgKlxuICAgKiBTcGVjaWZ5IHRoaXMgcHJvcGVydHkgdG8gYnVpbGQgaW1hZ2VzIG9uIGEgc3BlY2lmaWMgbmV0d29ya2luZyBtb2RlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIG5ldHdvcmtpbmcgbW9kZSBzcGVjaWZpZWRcbiAgICovXG4gIHJlYWRvbmx5IG5ldHdvcmtNb2RlPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFdoZXJlIHRvIHB1Ymxpc2ggZG9ja2VyIGltYWdlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIERvY2tlckltYWdlRGVzdGluYXRpb24gZXh0ZW5kcyBBd3NEZXN0aW5hdGlvbiB7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBFQ1IgcmVwb3NpdG9yeSB0byBwdWJsaXNoIHRvXG4gICAqL1xuICByZWFkb25seSByZXBvc2l0b3J5TmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUYWcgb2YgdGhlIGltYWdlIHRvIHB1Ymxpc2hcbiAgICovXG4gIHJlYWRvbmx5IGltYWdlVGFnOiBzdHJpbmc7XG59XG4iXX0=
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9ja2VyLWltYWdlLWFzc2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZG9ja2VyLWltYWdlLWFzc2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBd3NEZXN0aW5hdGlvbiB9IGZyb20gJy4vYXdzLWRlc3RpbmF0aW9uJztcblxuLyoqXG4gKiBBIGZpbGUgYXNzZXRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEb2NrZXJJbWFnZUFzc2V0IHtcbiAgLyoqXG4gICAqIFNvdXJjZSBkZXNjcmlwdGlvbiBmb3IgZmlsZSBhc3NldHNcbiAgICovXG4gIHJlYWRvbmx5IHNvdXJjZTogRG9ja2VySW1hZ2VTb3VyY2U7XG5cbiAgLyoqXG4gICAqIERlc3RpbmF0aW9ucyBmb3IgdGhpcyBmaWxlIGFzc2V0XG4gICAqL1xuICByZWFkb25seSBkZXN0aW5hdGlvbnM6IHsgW2lkOiBzdHJpbmddOiBEb2NrZXJJbWFnZURlc3RpbmF0aW9uIH07XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgaG93IHRvIHByb2R1Y2UgYSBEb2NrZXIgaW1hZ2UgZnJvbSBhIHNvdXJjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIERvY2tlckltYWdlU291cmNlIHtcbiAgLyoqXG4gICAqIFRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgRG9ja2VyIGltYWdlIGJ1aWxkIGluc3RydWN0aW9ucy5cbiAgICpcbiAgICogVGhpcyBwYXRoIGlzIHJlbGF0aXZlIHRvIHRoZSBhc3NldCBtYW5pZmVzdCBsb2NhdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBFeGFjdGx5IG9uZSBvZiBgZGlyZWN0b3J5YCBhbmQgYGV4ZWN1dGFibGVgIGlzIHJlcXVpcmVkXG4gICAqL1xuICByZWFkb25seSBkaXJlY3Rvcnk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgY29tbWFuZC1saW5lIGV4ZWN1dGFibGUgdGhhdCByZXR1cm5zIHRoZSBuYW1lIG9mIGEgbG9jYWxcbiAgICogRG9ja2VyIGltYWdlIG9uIHN0ZG91dCBhZnRlciBiZWluZyBydW4uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gRXhhY3RseSBvbmUgb2YgYGRpcmVjdG9yeWAgYW5kIGBleGVjdXRhYmxlYCBpcyByZXF1aXJlZFxuICAgKi9cbiAgcmVhZG9ubHkgZXhlY3V0YWJsZT86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgZmlsZSB3aXRoIGJ1aWxkIGluc3RydWN0aW9uc1xuICAgKlxuICAgKiBPbmx5IGFsbG93ZWQgd2hlbiBgZGlyZWN0b3J5YCBpcyBzZXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IFwiRG9ja2VyZmlsZVwiXG4gICAqL1xuICByZWFkb25seSBkb2NrZXJGaWxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUYXJnZXQgYnVpbGQgc3RhZ2UgaW4gYSBEb2NrZXJmaWxlIHdpdGggbXVsdGlwbGUgYnVpbGQgc3RhZ2VzXG4gICAqXG4gICAqIE9ubHkgYWxsb3dlZCB3aGVuIGBkaXJlY3RvcnlgIGlzIHNldC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBUaGUgbGFzdCBzdGFnZSBpbiB0aGUgRG9ja2VyZmlsZVxuICAgKi9cbiAgcmVhZG9ubHkgZG9ja2VyQnVpbGRUYXJnZXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgYnVpbGQgYXJndW1lbnRzXG4gICAqXG4gICAqIE9ubHkgYWxsb3dlZCB3aGVuIGBkaXJlY3RvcnlgIGlzIHNldC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBhZGRpdGlvbmFsIGJ1aWxkIGFyZ3VtZW50c1xuICAgKi9cbiAgcmVhZG9ubHkgZG9ja2VyQnVpbGRBcmdzPzogeyBbbmFtZTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIE5ldHdvcmtpbmcgbW9kZSBmb3IgdGhlIFJVTiBjb21tYW5kcyBkdXJpbmcgYnVpbGQuIF9SZXF1aXJlcyBEb2NrZXIgRW5naW5lIEFQSSB2MS4yNStfLlxuICAgKlxuICAgKiBTcGVjaWZ5IHRoaXMgcHJvcGVydHkgdG8gYnVpbGQgaW1hZ2VzIG9uIGEgc3BlY2lmaWMgbmV0d29ya2luZyBtb2RlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIG5ldHdvcmtpbmcgbW9kZSBzcGVjaWZpZWRcbiAgICovXG4gIHJlYWRvbmx5IG5ldHdvcmtNb2RlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQbGF0Zm9ybSB0byBidWlsZCBmb3IuIF9SZXF1aXJlcyBEb2NrZXIgQnVpbGR4Xy5cbiAgICpcbiAgICogU3BlY2lmeSB0aGlzIHByb3BlcnR5IHRvIGJ1aWxkIGltYWdlcyBvbiBhIHNwZWNpZmljIHBsYXRmb3JtL2FyY2hpdGVjdHVyZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBjdXJyZW50IG1hY2hpbmUgcGxhdGZvcm1cbiAgICovXG4gIHJlYWRvbmx5IHBsYXRmb3JtPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFdoZXJlIHRvIHB1Ymxpc2ggZG9ja2VyIGltYWdlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIERvY2tlckltYWdlRGVzdGluYXRpb24gZXh0ZW5kcyBBd3NEZXN0aW5hdGlvbiB7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBFQ1IgcmVwb3NpdG9yeSB0byBwdWJsaXNoIHRvXG4gICAqL1xuICByZWFkb25seSByZXBvc2l0b3J5TmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUYWcgb2YgdGhlIGltYWdlIHRvIHB1Ymxpc2hcbiAgICovXG4gIHJlYWRvbmx5IGltYWdlVGFnOiBzdHJpbmc7XG59XG4iXX0=
@@ -123,6 +123,12 @@ export interface ContainerImageAssetMetadataEntry extends BaseAssetMetadataEntry
123
123
  * @default - no networking mode specified
124
124
  */
125
125
  readonly networkMode?: string;
126
+ /**
127
+ * Platform to build for. _Requires Docker Buildx_.
128
+ *
129
+ * @default - current machine platform
130
+ */
131
+ readonly platform?: string;
126
132
  }
127
133
  /**
128
134
  * @see ArtifactMetadataEntryType.ASSET
@@ -31,4 +31,4 @@ var ArtifactMetadataEntryType;
31
31
  */
32
32
  ArtifactMetadataEntryType["STACK_TAGS"] = "aws:cdk:stack-tags";
33
33
  })(ArtifactMetadataEntryType = exports.ArtifactMetadataEntryType || (exports.ArtifactMetadataEntryType = {}));
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YWRhdGEtc2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibWV0YWRhdGEtc2NoZW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQTRLQTs7R0FFRztBQUNILElBQVkseUJBOEJYO0FBOUJELFdBQVkseUJBQXlCO0lBQ25DOztPQUVHO0lBQ0gsb0RBQXVCLENBQUE7SUFFdkI7O09BRUc7SUFDSCxrREFBcUIsQ0FBQTtJQUVyQjs7T0FFRztJQUNILHFEQUF3QixDQUFBO0lBRXhCOztPQUVHO0lBQ0gsb0RBQXVCLENBQUE7SUFFdkI7O09BRUc7SUFDSCw2REFBZ0MsQ0FBQTtJQUVoQzs7T0FFRztJQUNILDhEQUFpQyxDQUFBO0FBQ25DLENBQUMsRUE5QlcseUJBQXlCLEdBQXpCLGlDQUF5QixLQUF6QixpQ0FBeUIsUUE4QnBDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb21tb24gcHJvcGVydGllcyBmb3IgYXNzZXQgbWV0YWRhdGEuXG4gKi9cbmludGVyZmFjZSBCYXNlQXNzZXRNZXRhZGF0YUVudHJ5IHtcbiAgLyoqXG4gICAqIFJlcXVlc3RlZCBwYWNrYWdpbmcgc3R5bGVcbiAgICovXG4gIHJlYWRvbmx5IHBhY2thZ2luZzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBMb2dpY2FsIGlkZW50aWZpZXIgZm9yIHRoZSBhc3NldFxuICAgKi9cbiAgcmVhZG9ubHkgaWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGhhc2ggb2YgdGhlIGFzc2V0IHNvdXJjZS5cbiAgICovXG4gIHJlYWRvbmx5IHNvdXJjZUhhc2g6IHN0cmluZztcblxuICAvKipcbiAgICogUGF0aCBvbiBkaXNrIHRvIHRoZSBhc3NldFxuICAgKi9cbiAgcmVhZG9ubHkgcGF0aDogc3RyaW5nO1xufVxuXG4vKipcbiAqIE1ldGFkYXRhIEVudHJ5IHNwZWMgZm9yIGZpbGVzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpbGVBc3NldE1ldGFkYXRhRW50cnkgZXh0ZW5kcyBCYXNlQXNzZXRNZXRhZGF0YUVudHJ5IHtcbiAgLyoqXG4gICAqIFJlcXVlc3RlZCBwYWNrYWdpbmcgc3R5bGVcbiAgICovXG4gIHJlYWRvbmx5IHBhY2thZ2luZzogJ3ppcCcgfCAnZmlsZSc7XG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgcGFyYW1ldGVyIHdoZXJlIFMzIGJ1Y2tldCBzaG91bGQgYmUgcGFzc2VkIGluXG4gICAqL1xuICByZWFkb25seSBzM0J1Y2tldFBhcmFtZXRlcjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBOYW1lIG9mIHBhcmFtZXRlciB3aGVyZSBTMyBrZXkgc2hvdWxkIGJlIHBhc3NlZCBpblxuICAgKi9cbiAgcmVhZG9ubHkgczNLZXlQYXJhbWV0ZXI6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHBhcmFtZXRlciB3aGVyZSB0aGUgaGFzaCBvZiB0aGUgYnVuZGxlZCBhc3NldCBzaG91bGQgYmUgcGFzc2VkIGluLlxuICAgKi9cbiAgcmVhZG9ubHkgYXJ0aWZhY3RIYXNoUGFyYW1ldGVyOiBzdHJpbmc7XG59XG5cbi8qKlxuICogTWV0YWRhdGEgRW50cnkgc3BlYyBmb3Igc3RhY2sgdGFnLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhZyB7XG4gIC8qKlxuICAgKiBUYWcga2V5LlxuICAgKlxuICAgKiAoSW4gdGhlIGFjdHVhbCBmaWxlIG9uIGRpc2sgdGhpcyB3aWxsIGJlIGNhc2VkIGFzIFwiS2V5XCIsIGFuZCB0aGUgc3RydWN0dXJlIGlzXG4gICAqIHBhdGNoZWQgdG8gbWF0Y2ggdGhpcyBzdHJ1Y3R1cmUgdXBvbiBsb2FkaW5nOlxuICAgKiBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvYmxvYi80YWFkYWE3NzliNDhmMzU4MzhjY2NkNGUyNTEwN2IyMzM4ZjA1NTQ3L3BhY2thZ2VzLyU0MGF3cy1jZGsvY2xvdWQtYXNzZW1ibHktc2NoZW1hL2xpYi9tYW5pZmVzdC50cyNMMTM3KVxuICAgKi9cbiAgcmVhZG9ubHkga2V5OiBzdHJpbmdcblxuICAvKipcbiAgICogVGFnIHZhbHVlLlxuICAgKlxuICAgKiAoSW4gdGhlIGFjdHVhbCBmaWxlIG9uIGRpc2sgdGhpcyB3aWxsIGJlIGNhc2VkIGFzIFwiVmFsdWVcIiwgYW5kIHRoZSBzdHJ1Y3R1cmUgaXNcbiAgICogcGF0Y2hlZCB0byBtYXRjaCB0aGlzIHN0cnVjdHVyZSB1cG9uIGxvYWRpbmc6XG4gICAqIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9ibG9iLzRhYWRhYTc3OWI0OGYzNTgzOGNjY2Q0ZTI1MTA3YjIzMzhmMDU1NDcvcGFja2FnZXMvJTQwYXdzLWNkay9jbG91ZC1hc3NlbWJseS1zY2hlbWEvbGliL21hbmlmZXN0LnRzI0wxMzcpXG4gICAqL1xuICByZWFkb25seSB2YWx1ZTogc3RyaW5nXG59XG5cbi8qKlxuICogTWV0YWRhdGEgRW50cnkgc3BlYyBmb3IgY29udGFpbmVyIGltYWdlcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb250YWluZXJJbWFnZUFzc2V0TWV0YWRhdGFFbnRyeSBleHRlbmRzIEJhc2VBc3NldE1ldGFkYXRhRW50cnkge1xuICAvKipcbiAgICogVHlwZSBvZiBhc3NldFxuICAgKi9cbiAgcmVhZG9ubHkgcGFja2FnaW5nOiAnY29udGFpbmVyLWltYWdlJztcblxuICAvKipcbiAgICogRUNSIFJlcG9zaXRvcnkgbmFtZSBhbmQgcmVwbyBkaWdlc3QgKHNlcGFyYXRlZCBieSBcIkBzaGEyNTY6XCIpIHdoZXJlIHRoaXNcbiAgICogaW1hZ2UgaXMgc3RvcmVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWQgSWYgbm90IHNwZWNpZmllZCwgYHJlcG9zaXRvcnlOYW1lYCBhbmQgYGltYWdlVGFnYCBhcmVcbiAgICogcmVxdWlyZWQgYmVjYXVzZSBvdGhlcndpc2UgaG93IHdpbGwgdGhlIHN0YWNrIGtub3cgd2hlcmUgdG8gZmluZCB0aGUgYXNzZXQsXG4gICAqIGhhP1xuICAgKiBAZGVwcmVjYXRlZCBzcGVjaWZ5IGByZXBvc2l0b3J5TmFtZWAgYW5kIGBpbWFnZVRhZ2AgaW5zdGVhZCwgYW5kIHRoZW4geW91XG4gICAqIGtub3cgd2hlcmUgdGhlIGltYWdlIHdpbGwgZ28uXG4gICAqL1xuICByZWFkb25seSBpbWFnZU5hbWVQYXJhbWV0ZXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEVDUiByZXBvc2l0b3J5IG5hbWUsIGlmIG9taXR0ZWQgYSBkZWZhdWx0IG5hbWUgYmFzZWQgb24gdGhlIGFzc2V0J3MgSUQgaXNcbiAgICogdXNlZCBpbnN0ZWFkLiBTcGVjaWZ5IHRoaXMgcHJvcGVydHkgaWYgeW91IG5lZWQgdG8gc3RhdGljYWxseSBhZGRyZXNzIHRoZVxuICAgKiBpbWFnZSwgZS5nLiBmcm9tIGEgS3ViZXJuZXRlcyBQb2QuIE5vdGUsIHRoaXMgaXMgb25seSB0aGUgcmVwb3NpdG9yeSBuYW1lLFxuICAgKiB3aXRob3V0IHRoZSByZWdpc3RyeSBhbmQgdGhlIHRhZyBwYXJ0cy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB0aGlzIHBhcmFtZXRlciBpcyBSRVFVSVJFRCBhZnRlciAxLjIxLjBcbiAgICovXG4gIHJlYWRvbmx5IHJlcG9zaXRvcnlOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZG9ja2VyIGltYWdlIHRhZyB0byB1c2UgZm9yIHRhZ2dpbmcgcHVzaGVkIGltYWdlcy4gVGhpcyBmaWVsZCBpc1xuICAgKiByZXF1aXJlZCBpZiBgaW1hZ2VQYXJhbWV0ZXJOYW1lYCBpcyBvbW1pdGVkIChvdGhlcndpc2UsIHRoZSBhcHAgd29uJ3QgYmVcbiAgICogYWJsZSB0byBmaW5kIHRoZSBpbWFnZSkuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdGhpcyBwYXJhbWV0ZXIgaXMgUkVRVUlSRUQgYWZ0ZXIgMS4yMS4wXG4gICAqL1xuICByZWFkb25seSBpbWFnZVRhZz86IHN0cmluZztcblxuICAvKipcbiAgICogQnVpbGQgYXJncyB0byBwYXNzIHRvIHRoZSBgZG9ja2VyIGJ1aWxkYCBjb21tYW5kXG4gICAqXG4gICAqIEBkZWZhdWx0IG5vIGJ1aWxkIGFyZ3MgYXJlIHBhc3NlZFxuICAgKi9cbiAgcmVhZG9ubHkgYnVpbGRBcmdzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogRG9ja2VyIHRhcmdldCB0byBidWlsZCB0b1xuICAgKlxuICAgKiBAZGVmYXVsdCBubyBidWlsZCB0YXJnZXRcbiAgICovXG4gIHJlYWRvbmx5IHRhcmdldD86IHN0cmluZztcblxuICAvKipcbiAgICogUGF0aCB0byB0aGUgRG9ja2VyZmlsZSAocmVsYXRpdmUgdG8gdGhlIGRpcmVjdG9yeSkuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gZmlsZSBpcyBwYXNzZWRcbiAgICovXG4gIHJlYWRvbmx5IGZpbGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE5ldHdvcmtpbmcgbW9kZSBmb3IgdGhlIFJVTiBjb21tYW5kcyBkdXJpbmcgYnVpbGQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gbmV0d29ya2luZyBtb2RlIHNwZWNpZmllZFxuICAgKi9cbiAgcmVhZG9ubHkgbmV0d29ya01vZGU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQHNlZSBBcnRpZmFjdE1ldGFkYXRhRW50cnlUeXBlLkFTU0VUXG4gKi9cbmV4cG9ydCB0eXBlIEFzc2V0TWV0YWRhdGFFbnRyeSA9IEZpbGVBc3NldE1ldGFkYXRhRW50cnkgfCBDb250YWluZXJJbWFnZUFzc2V0TWV0YWRhdGFFbnRyeTtcblxuLy8gVHlwZSBhbGlhc2VzIGZvciBtZXRhZGF0YSBlbnRyaWVzLlxuLy8gVXNlZCBzaW1wbHkgdG8gYXNzaWduIG5hbWVzIHRvIGRhdGEgdHlwZXMgZm9yIG1vcmUgY2xhcml0eS5cblxuLyoqXG4gKiBAc2VlIEFydGlmYWN0TWV0YWRhdGFFbnRyeVR5cGUuSU5GT1xuICogQHNlZSBBcnRpZmFjdE1ldGFkYXRhRW50cnlUeXBlLldBUk5cbiAqIEBzZWUgQXJ0aWZhY3RNZXRhZGF0YUVudHJ5VHlwZS5FUlJPUlxuICovXG5leHBvcnQgdHlwZSBMb2dNZXNzYWdlTWV0YWRhdGFFbnRyeSA9IHN0cmluZztcblxuLyoqXG4gKiBAc2VlIEFydGlmYWN0TWV0YWRhdGFFbnRyeVR5cGUuTE9HSUNBTF9JRFxuICovXG5leHBvcnQgdHlwZSBMb2dpY2FsSWRNZXRhZGF0YUVudHJ5ID0gc3RyaW5nO1xuXG4vKipcbiAqIEBzZWUgQXJ0aWZhY3RNZXRhZGF0YUVudHJ5VHlwZS5TVEFDS19UQUdTXG4gKi9cbmV4cG9ydCB0eXBlIFN0YWNrVGFnc01ldGFkYXRhRW50cnkgPSBUYWdbXTtcblxuLyoqXG4gKiBVbmlvbiB0eXBlIGZvciBhbGwgbWV0YWRhdGEgZW50cmllcyB0aGF0IG1pZ2h0IGV4aXN0IGluIHRoZSBtYW5pZmVzdC5cbiAqL1xuZXhwb3J0IHR5cGUgTWV0YWRhdGFFbnRyeURhdGEgPSBBc3NldE1ldGFkYXRhRW50cnkgfCBMb2dNZXNzYWdlTWV0YWRhdGFFbnRyeSB8IExvZ2ljYWxJZE1ldGFkYXRhRW50cnkgfCBTdGFja1RhZ3NNZXRhZGF0YUVudHJ5O1xuXG4vKipcbiAqIFR5cGUgb2YgYXJ0aWZhY3QgbWV0YWRhdGEgZW50cnkuXG4gKi9cbmV4cG9ydCBlbnVtIEFydGlmYWN0TWV0YWRhdGFFbnRyeVR5cGUge1xuICAvKipcbiAgICogQXNzZXQgaW4gbWV0YWRhdGEuXG4gICAqL1xuICBBU1NFVCA9ICdhd3M6Y2RrOmFzc2V0JyxcblxuICAvKipcbiAgICogTWV0YWRhdGEga2V5IHVzZWQgdG8gcHJpbnQgSU5GTy1sZXZlbCBtZXNzYWdlcyBieSB0aGUgdG9vbGtpdCB3aGVuIGFuIGFwcCBpcyBzeW50aGVpemVkLlxuICAgKi9cbiAgSU5GTyA9ICdhd3M6Y2RrOmluZm8nLFxuXG4gIC8qKlxuICAgKiBNZXRhZGF0YSBrZXkgdXNlZCB0byBwcmludCBXQVJOSU5HLWxldmVsIG1lc3NhZ2VzIGJ5IHRoZSB0b29sa2l0IHdoZW4gYW4gYXBwIGlzIHN5bnRoZWl6ZWQuXG4gICAqL1xuICBXQVJOID0gJ2F3czpjZGs6d2FybmluZycsXG5cbiAgLyoqXG4gICAqIE1ldGFkYXRhIGtleSB1c2VkIHRvIHByaW50IEVSUk9SLWxldmVsIG1lc3NhZ2VzIGJ5IHRoZSB0b29sa2l0IHdoZW4gYW4gYXBwIGlzIHN5bnRoZWl6ZWQuXG4gICAqL1xuICBFUlJPUiA9ICdhd3M6Y2RrOmVycm9yJyxcblxuICAvKipcbiAgICogUmVwcmVzZW50cyB0aGUgQ2xvdWRGb3JtYXRpb24gbG9naWNhbCBJRCBvZiBhIHJlc291cmNlIGF0IGEgY2VydGFpbiBwYXRoLlxuICAgKi9cbiAgTE9HSUNBTF9JRCA9ICdhd3M6Y2RrOmxvZ2ljYWxJZCcsXG5cbiAgLyoqXG4gICAqIFJlcHJlc2VudHMgdGFncyBvZiBhIHN0YWNrLlxuICAgKi9cbiAgU1RBQ0tfVEFHUyA9ICdhd3M6Y2RrOnN0YWNrLXRhZ3MnXG59XG5cbi8qKlxuICogQSBtZXRhZGF0YSBlbnRyeSBpbiBhIGNsb3VkIGFzc2VtYmx5IGFydGlmYWN0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1ldGFkYXRhRW50cnkge1xuICAvKipcbiAgICogVGhlIHR5cGUgb2YgdGhlIG1ldGFkYXRhIGVudHJ5LlxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZGF0YS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBkYXRhLlxuICAgKi9cbiAgcmVhZG9ubHkgZGF0YT86IE1ldGFkYXRhRW50cnlEYXRhO1xuXG4gIC8qKlxuICAgKiBBIHN0YWNrIHRyYWNlIGZvciB3aGVuIHRoZSBlbnRyeSB3YXMgY3JlYXRlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyB0cmFjZS5cbiAgICovXG4gIHJlYWRvbmx5IHRyYWNlPzogc3RyaW5nW107XG59XG4iXX0=
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YWRhdGEtc2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibWV0YWRhdGEtc2NoZW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQW1MQTs7R0FFRztBQUNILElBQVkseUJBOEJYO0FBOUJELFdBQVkseUJBQXlCO0lBQ25DOztPQUVHO0lBQ0gsb0RBQXVCLENBQUE7SUFFdkI7O09BRUc7SUFDSCxrREFBcUIsQ0FBQTtJQUVyQjs7T0FFRztJQUNILHFEQUF3QixDQUFBO0lBRXhCOztPQUVHO0lBQ0gsb0RBQXVCLENBQUE7SUFFdkI7O09BRUc7SUFDSCw2REFBZ0MsQ0FBQTtJQUVoQzs7T0FFRztJQUNILDhEQUFpQyxDQUFBO0FBQ25DLENBQUMsRUE5QlcseUJBQXlCLEdBQXpCLGlDQUF5QixLQUF6QixpQ0FBeUIsUUE4QnBDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb21tb24gcHJvcGVydGllcyBmb3IgYXNzZXQgbWV0YWRhdGEuXG4gKi9cbmludGVyZmFjZSBCYXNlQXNzZXRNZXRhZGF0YUVudHJ5IHtcbiAgLyoqXG4gICAqIFJlcXVlc3RlZCBwYWNrYWdpbmcgc3R5bGVcbiAgICovXG4gIHJlYWRvbmx5IHBhY2thZ2luZzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBMb2dpY2FsIGlkZW50aWZpZXIgZm9yIHRoZSBhc3NldFxuICAgKi9cbiAgcmVhZG9ubHkgaWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGhhc2ggb2YgdGhlIGFzc2V0IHNvdXJjZS5cbiAgICovXG4gIHJlYWRvbmx5IHNvdXJjZUhhc2g6IHN0cmluZztcblxuICAvKipcbiAgICogUGF0aCBvbiBkaXNrIHRvIHRoZSBhc3NldFxuICAgKi9cbiAgcmVhZG9ubHkgcGF0aDogc3RyaW5nO1xufVxuXG4vKipcbiAqIE1ldGFkYXRhIEVudHJ5IHNwZWMgZm9yIGZpbGVzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpbGVBc3NldE1ldGFkYXRhRW50cnkgZXh0ZW5kcyBCYXNlQXNzZXRNZXRhZGF0YUVudHJ5IHtcbiAgLyoqXG4gICAqIFJlcXVlc3RlZCBwYWNrYWdpbmcgc3R5bGVcbiAgICovXG4gIHJlYWRvbmx5IHBhY2thZ2luZzogJ3ppcCcgfCAnZmlsZSc7XG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgcGFyYW1ldGVyIHdoZXJlIFMzIGJ1Y2tldCBzaG91bGQgYmUgcGFzc2VkIGluXG4gICAqL1xuICByZWFkb25seSBzM0J1Y2tldFBhcmFtZXRlcjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBOYW1lIG9mIHBhcmFtZXRlciB3aGVyZSBTMyBrZXkgc2hvdWxkIGJlIHBhc3NlZCBpblxuICAgKi9cbiAgcmVhZG9ubHkgczNLZXlQYXJhbWV0ZXI6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHBhcmFtZXRlciB3aGVyZSB0aGUgaGFzaCBvZiB0aGUgYnVuZGxlZCBhc3NldCBzaG91bGQgYmUgcGFzc2VkIGluLlxuICAgKi9cbiAgcmVhZG9ubHkgYXJ0aWZhY3RIYXNoUGFyYW1ldGVyOiBzdHJpbmc7XG59XG5cbi8qKlxuICogTWV0YWRhdGEgRW50cnkgc3BlYyBmb3Igc3RhY2sgdGFnLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhZyB7XG4gIC8qKlxuICAgKiBUYWcga2V5LlxuICAgKlxuICAgKiAoSW4gdGhlIGFjdHVhbCBmaWxlIG9uIGRpc2sgdGhpcyB3aWxsIGJlIGNhc2VkIGFzIFwiS2V5XCIsIGFuZCB0aGUgc3RydWN0dXJlIGlzXG4gICAqIHBhdGNoZWQgdG8gbWF0Y2ggdGhpcyBzdHJ1Y3R1cmUgdXBvbiBsb2FkaW5nOlxuICAgKiBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvYmxvYi80YWFkYWE3NzliNDhmMzU4MzhjY2NkNGUyNTEwN2IyMzM4ZjA1NTQ3L3BhY2thZ2VzLyU0MGF3cy1jZGsvY2xvdWQtYXNzZW1ibHktc2NoZW1hL2xpYi9tYW5pZmVzdC50cyNMMTM3KVxuICAgKi9cbiAgcmVhZG9ubHkga2V5OiBzdHJpbmdcblxuICAvKipcbiAgICogVGFnIHZhbHVlLlxuICAgKlxuICAgKiAoSW4gdGhlIGFjdHVhbCBmaWxlIG9uIGRpc2sgdGhpcyB3aWxsIGJlIGNhc2VkIGFzIFwiVmFsdWVcIiwgYW5kIHRoZSBzdHJ1Y3R1cmUgaXNcbiAgICogcGF0Y2hlZCB0byBtYXRjaCB0aGlzIHN0cnVjdHVyZSB1cG9uIGxvYWRpbmc6XG4gICAqIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9ibG9iLzRhYWRhYTc3OWI0OGYzNTgzOGNjY2Q0ZTI1MTA3YjIzMzhmMDU1NDcvcGFja2FnZXMvJTQwYXdzLWNkay9jbG91ZC1hc3NlbWJseS1zY2hlbWEvbGliL21hbmlmZXN0LnRzI0wxMzcpXG4gICAqL1xuICByZWFkb25seSB2YWx1ZTogc3RyaW5nXG59XG5cbi8qKlxuICogTWV0YWRhdGEgRW50cnkgc3BlYyBmb3IgY29udGFpbmVyIGltYWdlcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb250YWluZXJJbWFnZUFzc2V0TWV0YWRhdGFFbnRyeSBleHRlbmRzIEJhc2VBc3NldE1ldGFkYXRhRW50cnkge1xuICAvKipcbiAgICogVHlwZSBvZiBhc3NldFxuICAgKi9cbiAgcmVhZG9ubHkgcGFja2FnaW5nOiAnY29udGFpbmVyLWltYWdlJztcblxuICAvKipcbiAgICogRUNSIFJlcG9zaXRvcnkgbmFtZSBhbmQgcmVwbyBkaWdlc3QgKHNlcGFyYXRlZCBieSBcIkBzaGEyNTY6XCIpIHdoZXJlIHRoaXNcbiAgICogaW1hZ2UgaXMgc3RvcmVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCB1bmRlZmluZWQgSWYgbm90IHNwZWNpZmllZCwgYHJlcG9zaXRvcnlOYW1lYCBhbmQgYGltYWdlVGFnYCBhcmVcbiAgICogcmVxdWlyZWQgYmVjYXVzZSBvdGhlcndpc2UgaG93IHdpbGwgdGhlIHN0YWNrIGtub3cgd2hlcmUgdG8gZmluZCB0aGUgYXNzZXQsXG4gICAqIGhhP1xuICAgKiBAZGVwcmVjYXRlZCBzcGVjaWZ5IGByZXBvc2l0b3J5TmFtZWAgYW5kIGBpbWFnZVRhZ2AgaW5zdGVhZCwgYW5kIHRoZW4geW91XG4gICAqIGtub3cgd2hlcmUgdGhlIGltYWdlIHdpbGwgZ28uXG4gICAqL1xuICByZWFkb25seSBpbWFnZU5hbWVQYXJhbWV0ZXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEVDUiByZXBvc2l0b3J5IG5hbWUsIGlmIG9taXR0ZWQgYSBkZWZhdWx0IG5hbWUgYmFzZWQgb24gdGhlIGFzc2V0J3MgSUQgaXNcbiAgICogdXNlZCBpbnN0ZWFkLiBTcGVjaWZ5IHRoaXMgcHJvcGVydHkgaWYgeW91IG5lZWQgdG8gc3RhdGljYWxseSBhZGRyZXNzIHRoZVxuICAgKiBpbWFnZSwgZS5nLiBmcm9tIGEgS3ViZXJuZXRlcyBQb2QuIE5vdGUsIHRoaXMgaXMgb25seSB0aGUgcmVwb3NpdG9yeSBuYW1lLFxuICAgKiB3aXRob3V0IHRoZSByZWdpc3RyeSBhbmQgdGhlIHRhZyBwYXJ0cy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB0aGlzIHBhcmFtZXRlciBpcyBSRVFVSVJFRCBhZnRlciAxLjIxLjBcbiAgICovXG4gIHJlYWRvbmx5IHJlcG9zaXRvcnlOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZG9ja2VyIGltYWdlIHRhZyB0byB1c2UgZm9yIHRhZ2dpbmcgcHVzaGVkIGltYWdlcy4gVGhpcyBmaWVsZCBpc1xuICAgKiByZXF1aXJlZCBpZiBgaW1hZ2VQYXJhbWV0ZXJOYW1lYCBpcyBvbW1pdGVkIChvdGhlcndpc2UsIHRoZSBhcHAgd29uJ3QgYmVcbiAgICogYWJsZSB0byBmaW5kIHRoZSBpbWFnZSkuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdGhpcyBwYXJhbWV0ZXIgaXMgUkVRVUlSRUQgYWZ0ZXIgMS4yMS4wXG4gICAqL1xuICByZWFkb25seSBpbWFnZVRhZz86IHN0cmluZztcblxuICAvKipcbiAgICogQnVpbGQgYXJncyB0byBwYXNzIHRvIHRoZSBgZG9ja2VyIGJ1aWxkYCBjb21tYW5kXG4gICAqXG4gICAqIEBkZWZhdWx0IG5vIGJ1aWxkIGFyZ3MgYXJlIHBhc3NlZFxuICAgKi9cbiAgcmVhZG9ubHkgYnVpbGRBcmdzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogRG9ja2VyIHRhcmdldCB0byBidWlsZCB0b1xuICAgKlxuICAgKiBAZGVmYXVsdCBubyBidWlsZCB0YXJnZXRcbiAgICovXG4gIHJlYWRvbmx5IHRhcmdldD86IHN0cmluZztcblxuICAvKipcbiAgICogUGF0aCB0byB0aGUgRG9ja2VyZmlsZSAocmVsYXRpdmUgdG8gdGhlIGRpcmVjdG9yeSkuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gZmlsZSBpcyBwYXNzZWRcbiAgICovXG4gIHJlYWRvbmx5IGZpbGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE5ldHdvcmtpbmcgbW9kZSBmb3IgdGhlIFJVTiBjb21tYW5kcyBkdXJpbmcgYnVpbGQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gbmV0d29ya2luZyBtb2RlIHNwZWNpZmllZFxuICAgKi9cbiAgcmVhZG9ubHkgbmV0d29ya01vZGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFBsYXRmb3JtIHRvIGJ1aWxkIGZvci4gX1JlcXVpcmVzIERvY2tlciBCdWlsZHhfLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGN1cnJlbnQgbWFjaGluZSBwbGF0Zm9ybVxuICAgKi9cbiAgcmVhZG9ubHkgcGxhdGZvcm0/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQHNlZSBBcnRpZmFjdE1ldGFkYXRhRW50cnlUeXBlLkFTU0VUXG4gKi9cbmV4cG9ydCB0eXBlIEFzc2V0TWV0YWRhdGFFbnRyeSA9IEZpbGVBc3NldE1ldGFkYXRhRW50cnkgfCBDb250YWluZXJJbWFnZUFzc2V0TWV0YWRhdGFFbnRyeTtcblxuLy8gVHlwZSBhbGlhc2VzIGZvciBtZXRhZGF0YSBlbnRyaWVzLlxuLy8gVXNlZCBzaW1wbHkgdG8gYXNzaWduIG5hbWVzIHRvIGRhdGEgdHlwZXMgZm9yIG1vcmUgY2xhcml0eS5cblxuLyoqXG4gKiBAc2VlIEFydGlmYWN0TWV0YWRhdGFFbnRyeVR5cGUuSU5GT1xuICogQHNlZSBBcnRpZmFjdE1ldGFkYXRhRW50cnlUeXBlLldBUk5cbiAqIEBzZWUgQXJ0aWZhY3RNZXRhZGF0YUVudHJ5VHlwZS5FUlJPUlxuICovXG5leHBvcnQgdHlwZSBMb2dNZXNzYWdlTWV0YWRhdGFFbnRyeSA9IHN0cmluZztcblxuLyoqXG4gKiBAc2VlIEFydGlmYWN0TWV0YWRhdGFFbnRyeVR5cGUuTE9HSUNBTF9JRFxuICovXG5leHBvcnQgdHlwZSBMb2dpY2FsSWRNZXRhZGF0YUVudHJ5ID0gc3RyaW5nO1xuXG4vKipcbiAqIEBzZWUgQXJ0aWZhY3RNZXRhZGF0YUVudHJ5VHlwZS5TVEFDS19UQUdTXG4gKi9cbmV4cG9ydCB0eXBlIFN0YWNrVGFnc01ldGFkYXRhRW50cnkgPSBUYWdbXTtcblxuLyoqXG4gKiBVbmlvbiB0eXBlIGZvciBhbGwgbWV0YWRhdGEgZW50cmllcyB0aGF0IG1pZ2h0IGV4aXN0IGluIHRoZSBtYW5pZmVzdC5cbiAqL1xuZXhwb3J0IHR5cGUgTWV0YWRhdGFFbnRyeURhdGEgPSBBc3NldE1ldGFkYXRhRW50cnkgfCBMb2dNZXNzYWdlTWV0YWRhdGFFbnRyeSB8IExvZ2ljYWxJZE1ldGFkYXRhRW50cnkgfCBTdGFja1RhZ3NNZXRhZGF0YUVudHJ5O1xuXG4vKipcbiAqIFR5cGUgb2YgYXJ0aWZhY3QgbWV0YWRhdGEgZW50cnkuXG4gKi9cbmV4cG9ydCBlbnVtIEFydGlmYWN0TWV0YWRhdGFFbnRyeVR5cGUge1xuICAvKipcbiAgICogQXNzZXQgaW4gbWV0YWRhdGEuXG4gICAqL1xuICBBU1NFVCA9ICdhd3M6Y2RrOmFzc2V0JyxcblxuICAvKipcbiAgICogTWV0YWRhdGEga2V5IHVzZWQgdG8gcHJpbnQgSU5GTy1sZXZlbCBtZXNzYWdlcyBieSB0aGUgdG9vbGtpdCB3aGVuIGFuIGFwcCBpcyBzeW50aGVpemVkLlxuICAgKi9cbiAgSU5GTyA9ICdhd3M6Y2RrOmluZm8nLFxuXG4gIC8qKlxuICAgKiBNZXRhZGF0YSBrZXkgdXNlZCB0byBwcmludCBXQVJOSU5HLWxldmVsIG1lc3NhZ2VzIGJ5IHRoZSB0b29sa2l0IHdoZW4gYW4gYXBwIGlzIHN5bnRoZWl6ZWQuXG4gICAqL1xuICBXQVJOID0gJ2F3czpjZGs6d2FybmluZycsXG5cbiAgLyoqXG4gICAqIE1ldGFkYXRhIGtleSB1c2VkIHRvIHByaW50IEVSUk9SLWxldmVsIG1lc3NhZ2VzIGJ5IHRoZSB0b29sa2l0IHdoZW4gYW4gYXBwIGlzIHN5bnRoZWl6ZWQuXG4gICAqL1xuICBFUlJPUiA9ICdhd3M6Y2RrOmVycm9yJyxcblxuICAvKipcbiAgICogUmVwcmVzZW50cyB0aGUgQ2xvdWRGb3JtYXRpb24gbG9naWNhbCBJRCBvZiBhIHJlc291cmNlIGF0IGEgY2VydGFpbiBwYXRoLlxuICAgKi9cbiAgTE9HSUNBTF9JRCA9ICdhd3M6Y2RrOmxvZ2ljYWxJZCcsXG5cbiAgLyoqXG4gICAqIFJlcHJlc2VudHMgdGFncyBvZiBhIHN0YWNrLlxuICAgKi9cbiAgU1RBQ0tfVEFHUyA9ICdhd3M6Y2RrOnN0YWNrLXRhZ3MnXG59XG5cbi8qKlxuICogQSBtZXRhZGF0YSBlbnRyeSBpbiBhIGNsb3VkIGFzc2VtYmx5IGFydGlmYWN0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1ldGFkYXRhRW50cnkge1xuICAvKipcbiAgICogVGhlIHR5cGUgb2YgdGhlIG1ldGFkYXRhIGVudHJ5LlxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZGF0YS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBkYXRhLlxuICAgKi9cbiAgcmVhZG9ubHkgZGF0YT86IE1ldGFkYXRhRW50cnlEYXRhO1xuXG4gIC8qKlxuICAgKiBBIHN0YWNrIHRyYWNlIGZvciB3aGVuIHRoZSBlbnRyeSB3YXMgY3JlYXRlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyB0cmFjZS5cbiAgICovXG4gIHJlYWRvbmx5IHRyYWNlPzogc3RyaW5nW107XG59XG4iXX0=
package/lib/manifest.js CHANGED
@@ -157,7 +157,7 @@ class Manifest {
157
157
  const maxSupported = parseVersion(Manifest.version());
158
158
  const actual = parseVersion(manifest.version);
159
159
  // first validate the version should be accepted.
160
- if (semver.gt(actual, maxSupported) && !(options === null || options === void 0 ? void 0 : options.skipVersionCheck)) {
160
+ if (semver.gt(actual, maxSupported) && !options?.skipVersionCheck) {
161
161
  // we use a well known error prefix so that the CLI can identify this specific error
162
162
  // and print some more context to the user.
163
163
  throw new Error(`${exports.VERSION_MISMATCH}: Maximum schema version supported is ${maxSupported}, but found ${actual}`);
@@ -170,7 +170,7 @@ class Manifest {
170
170
  allowUnknownAttributes: false,
171
171
  });
172
172
  let errors = result.errors;
173
- if (options === null || options === void 0 ? void 0 : options.skipEnumCheck) {
173
+ if (options?.skipEnumCheck) {
174
174
  // Enum validations aren't useful when
175
175
  errors = stripEnumErrors(errors);
176
176
  }
@@ -255,7 +255,7 @@ class Manifest {
255
255
  }
256
256
  exports.Manifest = Manifest;
257
257
  _a = JSII_RTTI_SYMBOL_1;
258
- Manifest[_a] = { fqn: "@aws-cdk/cloud-assembly-schema.Manifest", version: "2.25.0" };
258
+ Manifest[_a] = { fqn: "@aws-cdk/cloud-assembly-schema.Manifest", version: "2.28.0" };
259
259
  function mapValues(xs, fn) {
260
260
  if (!xs) {
261
261
  return undefined;
@@ -278,4 +278,4 @@ function noUndefined(xs) {
278
278
  function stripEnumErrors(errors) {
279
279
  return errors.filter(e => typeof e.schema === 'string' || !('enum' in e.schema));
280
280
  }
281
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuaWZlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJtYW5pZmVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSx5QkFBeUI7QUFDekIseUNBQXlDO0FBQ3pDLGlDQUFpQztBQUVqQyw2Q0FBNkM7QUFHN0MsdURBQXVEO0FBQ3ZELDBEQUEwRDtBQUUxRCxrRUFBa0U7QUFDbEUsaUVBQWlFO0FBQ2pFLDZCQUE2QjtBQUNoQixRQUFBLGdCQUFnQixHQUFXLHdDQUF3QyxDQUFDO0FBRWpGLE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO0FBRTlELE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO0FBRXhFOztHQUVHO0FBQ0gsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLHVDQUF1QyxDQUFDLENBQUMsT0FBTyxDQUFDO0FBRWhGLE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO0FBNEI1RDs7R0FFRztBQUNILE1BQWEsUUFBUTtJQWtNbkIsaUJBQXdCO0lBak14Qjs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxRQUFtQyxFQUFFLFFBQWdCOzs7Ozs7Ozs7O1FBQ3RGLFFBQVEsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxlQUFlLEVBQUUsUUFBUSxDQUFDLHFCQUFxQixDQUFDLENBQUM7S0FDNUY7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLG9CQUFvQixDQUFDLFFBQWdCLEVBQUUsT0FBNkI7Ozs7Ozs7Ozs7UUFDaEYsT0FBTyxRQUFRLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxlQUFlLEVBQUUsUUFBUSxDQUFDLG9CQUFvQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0tBQ2pHO0lBRUQ7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsaUJBQWlCLENBQUMsUUFBOEIsRUFBRSxRQUFnQjs7Ozs7Ozs7OztRQUM5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QUFNLENBQUMsQ0FBQyxDQUFDO0FBQ2xGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBqc29uc2NoZW1hIGZyb20gJ2pzb25zY2hlbWEnO1xuaW1wb3J0ICogYXMgc2VtdmVyIGZyb20gJ3NlbXZlcic7XG5pbXBvcnQgKiBhcyBhc3NldHMgZnJvbSAnLi9hc3NldHMnO1xuaW1wb3J0ICogYXMgYXNzZW1ibHkgZnJvbSAnLi9jbG91ZC1hc3NlbWJseSc7XG5pbXBvcnQgKiBhcyBpbnRlZyBmcm9tICcuL2ludGVnLXRlc3RzJztcblxuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXZhci1yZXF1aXJlcyAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0cyAqL1xuXG4vLyB0aGlzIHByZWZpeCBpcyB1c2VkIGJ5IHRoZSBDTEkgdG8gaWRlbnRpZnkgdGhpcyBzcGVjaWZpYyBlcnJvci5cbi8vIGluIHdoaWNoIGNhc2Ugd2Ugd2FudCB0byBpbnN0cnVjdCB0aGUgdXNlciB0byB1cGdyYWRlIGhpcyBDTEkuXG4vLyBzZWUgZXhlYy50cyNjcmVhdGVBc3NlbWJseVxuZXhwb3J0IGNvbnN0IFZFUlNJT05fTUlTTUFUQ0g6IHN0cmluZyA9ICdDbG91ZCBhc3NlbWJseSBzY2hlbWEgdmVyc2lvbiBtaXNtYXRjaCc7XG5cbmNvbnN0IEFTU0VUU19TQ0hFTUEgPSByZXF1aXJlKCcuLi9zY2hlbWEvYXNzZXRzLnNjaGVtYS5qc29uJyk7XG5cbmNvbnN0IEFTU0VNQkxZX1NDSEVNQSA9IHJlcXVpcmUoJy4uL3NjaGVtYS9jbG91ZC1hc3NlbWJseS5zY2hlbWEuanNvbicpO1xuXG4vKipcbiAqIFZlcnNpb24gaXMgc2hhcmVkIGZvciBib3RoIG1hbmlmZXN0c1xuICovXG5jb25zdCBTQ0hFTUFfVkVSU0lPTiA9IHJlcXVpcmUoJy4uL3NjaGVtYS9jbG91ZC1hc3NlbWJseS52ZXJzaW9uLmpzb24nKS52ZXJzaW9uO1xuXG5jb25zdCBJTlRFR19TQ0hFTUEgPSByZXF1aXJlKCcuLi9zY2hlbWEvaW50ZWcuc2NoZW1hLmpzb24nKTtcblxuLyoqXG4gKiBPcHRpb25zIGZvciB0aGUgbG9hZE1hbmlmZXN0IG9wZXJhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIExvYWRNYW5pZmVzdE9wdGlvbnMge1xuICAvKipcbiAgICogU2tpcCB0aGUgdmVyc2lvbiBjaGVja1xuICAgKlxuICAgKiBUaGlzIG1lYW5zIHlvdSBtYXkgcmVhZCBhIG5ld2VyIGNsb3VkIGFzc2VtYmx5IHRoYW4gdGhlIENYIEFQSSBpcyBkZXNpZ25lZFxuICAgKiB0byBzdXBwb3J0LCBhbmQgeW91ciBhcHBsaWNhdGlvbiBtYXkgbm90IGJlIGF3YXJlIG9mIGFsbCBmZWF0dXJlcyB0aGF0IGluIHVzZVxuICAgKiBpbiB0aGUgQ2xvdWQgQXNzZW1ibHkuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBza2lwVmVyc2lvbkNoZWNrPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU2tpcCBlbnVtIGNoZWNrc1xuICAgKlxuICAgKiBUaGlzIG1lYW5zIHlvdSBtYXkgcmVhZCBlbnVtIHZhbHVlcyB5b3UgZG9uJ3Qga25vdyBhYm91dCB5ZXQuIE1ha2Ugc3VyZSB0byBhbHdheXNcbiAgICogY2hlY2sgdGhlIHZhbHVlcyBvZiBlbnVtcyB5b3UgZW5jb3VudGVyIGluIHRoZSBtYW5pZmVzdC5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHNraXBFbnVtQ2hlY2s/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFByb3RvY29sIHV0aWxpdHkgY2xhc3MuXG4gKi9cbmV4cG9ydCBjbGFzcyBNYW5pZmVzdCB7XG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgYW5kIHNhdmVzIHRoZSBjbG91ZCBhc3NlbWJseSBtYW5pZmVzdCB0byBmaWxlLlxuICAgKlxuICAgKiBAcGFyYW0gbWFuaWZlc3QgLSBtYW5pZmVzdC5cbiAgICogQHBhcmFtIGZpbGVQYXRoIC0gb3V0cHV0IGZpbGUgcGF0aC5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgc2F2ZUFzc2VtYmx5TWFuaWZlc3QobWFuaWZlc3Q6IGFzc2VtYmx5LkFzc2VtYmx5TWFuaWZlc3QsIGZpbGVQYXRoOiBzdHJpbmcpIHtcbiAgICBNYW5pZmVzdC5zYXZlTWFuaWZlc3QobWFuaWZlc3QsIGZpbGVQYXRoLCBBU1NFTUJMWV9TQ0hFTUEsIE1hbmlmZXN0LnBhdGNoU3RhY2tUYWdzT25Xcml0ZSk7XG4gIH1cblxuICAvKipcbiAgICogTG9hZCBhbmQgdmFsaWRhdGVzIHRoZSBjbG91ZCBhc3NlbWJseSBtYW5pZmVzdCBmcm9tIGZpbGUuXG4gICAqXG4gICAqIEBwYXJhbSBmaWxlUGF0aCAtIHBhdGggdG8gdGhlIG1hbmlmZXN0IGZpbGUuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGxvYWRBc3NlbWJseU1hbmlmZXN0KGZpbGVQYXRoOiBzdHJpbmcsIG9wdGlvbnM/OiBMb2FkTWFuaWZlc3RPcHRpb25zKTogYXNzZW1ibHkuQXNzZW1ibHlNYW5pZmVzdCB7XG4gICAgcmV0dXJuIE1hbmlmZXN0LmxvYWRNYW5pZmVzdChmaWxlUGF0aCwgQVNTRU1CTFlfU0NIRU1BLCBNYW5pZmVzdC5wYXRjaFN0YWNrVGFnc09uUmVhZCwgb3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIGFuZCBzYXZlcyB0aGUgYXNzZXQgbWFuaWZlc3QgdG8gZmlsZS5cbiAgICpcbiAgICogQHBhcmFtIG1hbmlmZXN0IC0gbWFuaWZlc3QuXG4gICAqIEBwYXJhbSBmaWxlUGF0aCAtIG91dHB1dCBmaWxlIHBhdGguXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHNhdmVBc3NldE1hbmlmZXN0KG1hbmlmZXN0OiBhc3NldHMuQXNzZXRNYW5pZmVzdCwgZmlsZVBhdGg6IHN0cmluZykge1xuICAgIE1hbmlmZXN0LnNhdmVNYW5pZmVzdChtYW5pZmVzdCwgZmlsZVBhdGgsIEFTU0VUU19TQ0hFTUEsIE1hbmlmZXN0LnBhdGNoU3RhY2tUYWdzT25SZWFkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkIGFuZCB2YWxpZGF0ZXMgdGhlIGFzc2V0IG1hbmlmZXN0IGZyb20gZmlsZS5cbiAgICpcbiAgICogQHBhcmFtIGZpbGVQYXRoIC0gcGF0aCB0byB0aGUgbWFuaWZlc3QgZmlsZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbG9hZEFzc2V0TWFuaWZlc3QoZmlsZVBhdGg6IHN0cmluZyk6IGFzc2V0cy5Bc3NldE1hbmlmZXN0IHtcbiAgICByZXR1cm4gdGhpcy5sb2FkTWFuaWZlc3QoZmlsZVBhdGgsIEFTU0VUU19TQ0hFTUEpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBhbmQgc2F2ZXMgdGhlIGludGVnIG1hbmlmZXN0IHRvIGZpbGUuXG4gICAqXG4gICAqIEBwYXJhbSBtYW5pZmVzdCAtIG1hbmlmZXN0LlxuICAgKiBAcGFyYW0gZmlsZVBhdGggLSBvdXRwdXQgZmlsZSBwYXRoLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBzYXZlSW50ZWdNYW5pZmVzdChtYW5pZmVzdDogaW50ZWcuSW50ZWdNYW5pZmVzdCwgZmlsZVBhdGg6IHN0cmluZykge1xuICAgIE1hbmlmZXN0LnNhdmVNYW5pZmVzdChtYW5pZmVzdCwgZmlsZVBhdGgsIElOVEVHX1NDSEVNQSk7XG4gIH1cblxuICAvKipcbiAgICogTG9hZCBhbmQgdmFsaWRhdGVzIHRoZSBpbnRlZyBtYW5pZmVzdCBmcm9tIGZpbGUuXG4gICAqXG4gICAqIEBwYXJhbSBmaWxlUGF0aCAtIHBhdGggdG8gdGhlIG1hbmlmZXN0IGZpbGUuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGxvYWRJbnRlZ01hbmlmZXN0KGZpbGVQYXRoOiBzdHJpbmcpOiBpbnRlZy5JbnRlZ01hbmlmZXN0IHtcbiAgICByZXR1cm4gdGhpcy5sb2FkTWFuaWZlc3QoZmlsZVBhdGgsIElOVEVHX1NDSEVNQSk7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2ggdGhlIGN1cnJlbnQgc2NoZW1hIHZlcnNpb24gbnVtYmVyLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB2ZXJzaW9uKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFNDSEVNQV9WRVJTSU9OO1xuICB9XG5cbiAgLyoqXG4gICAqIERlcHJlY2F0ZWRcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGBzYXZlQXNzZW1ibHlNYW5pZmVzdCgpYFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBzYXZlKG1hbmlmZXN0OiBhc3NlbWJseS5Bc3NlbWJseU1hbmlmZXN0LCBmaWxlUGF0aDogc3RyaW5nKSB7IHJldHVybiB0aGlzLnNhdmVBc3NlbWJseU1hbmlmZXN0KG1hbmlmZXN0LCBmaWxlUGF0aCk7IH1cblxuICAvKipcbiAgICogRGVwcmVjYXRlZFxuICAgKiBAZGVwcmVjYXRlZCB1c2UgYGxvYWRBc3NlbWJseU1hbmlmZXN0KClgXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGxvYWQoZmlsZVBhdGg6IHN0cmluZyk6IGFzc2VtYmx5LkFzc2VtYmx5TWFuaWZlc3QgeyByZXR1cm4gdGhpcy5sb2FkQXNzZW1ibHlNYW5pZmVzdChmaWxlUGF0aCk7IH1cblxuICBwcml2YXRlIHN0YXRpYyB2YWxpZGF0ZShtYW5pZmVzdDogeyB2ZXJzaW9uOiBzdHJpbmcgfSwgc2NoZW1hOiBqc29uc2NoZW1hLlNjaGVtYSwgb3B0aW9ucz86IExvYWRNYW5pZmVzdE9wdGlvbnMpIHtcbiAgICBmdW5jdGlvbiBwYXJzZVZlcnNpb24odmVyc2lvbjogc3RyaW5nKSB7XG4gICAgICBjb25zdCB2ZXIgPSBzZW12ZXIudmFsaWQodmVyc2lvbik7XG4gICAgICBpZiAoIXZlcikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgc2VtdmVyIHN0cmluZzogXCIke3ZlcnNpb259XCJgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2ZXI7XG4gICAgfVxuXG4gICAgY29uc3QgbWF4U3VwcG9ydGVkID0gcGFyc2VWZXJzaW9uKE1hbmlmZXN0LnZlcnNpb24oKSk7XG4gICAgY29uc3QgYWN0dWFsID0gcGFyc2VWZXJzaW9uKG1hbmlmZXN0LnZlcnNpb24pO1xuXG4gICAgLy8gZmlyc3QgdmFsaWRhdGUgdGhlIHZlcnNpb24gc2hvdWxkIGJlIGFjY2VwdGVkLlxuICAgIGlmIChzZW12ZXIuZ3QoYWN0dWFsLCBtYXhTdXBwb3J0ZWQpICYmICFvcHRpb25zPy5za2lwVmVyc2lvbkNoZWNrKSB7XG4gICAgICAvLyB3ZSB1c2UgYSB3ZWxsIGtub3duIGVycm9yIHByZWZpeCBzbyB0aGF0IHRoZSBDTEkgY2FuIGlkZW50aWZ5IHRoaXMgc3BlY2lmaWMgZXJyb3JcbiAgICAgIC8vIGFuZCBwcmludCBzb21lIG1vcmUgY29udGV4dCB0byB0aGUgdXNlci5cbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHtWRVJTSU9OX01JU01BVENIfTogTWF4aW11bSBzY2hlbWEgdmVyc2lvbiBzdXBwb3J0ZWQgaXMgJHttYXhTdXBwb3J0ZWR9LCBidXQgZm91bmQgJHthY3R1YWx9YCk7XG4gICAgfVxuXG4gICAgLy8gbm93IHZhbGlkYXRlIHRoZSBmb3JtYXQgaXMgZ29vZC5cbiAgICBjb25zdCB2YWxpZGF0b3IgPSBuZXcganNvbnNjaGVtYS5WYWxpZGF0b3IoKTtcbiAgICBjb25zdCByZXN1bHQgPSB2YWxpZGF0b3IudmFsaWRhdGUobWFuaWZlc3QsIHNjaGVtYSwge1xuXG4gICAgICAvLyBkb2VzIGV4aXN0IGJ1dCBpcyBub3QgaW4gdGhlIFR5cGVTY3JpcHQgZGVmaW5pdGlvbnNcbiAgICAgIG5lc3RlZEVycm9yczogdHJ1ZSxcblxuICAgICAgYWxsb3dVbmtub3duQXR0cmlidXRlczogZmFsc2UsXG5cbiAgICB9IGFzIGFueSk7XG5cbiAgICBsZXQgZXJyb3JzID0gcmVzdWx0LmVycm9ycztcbiAgICBpZiAob3B0aW9ucz8uc2tpcEVudW1DaGVjaykge1xuICAgICAgLy8gRW51bSB2YWxpZGF0aW9ucyBhcmVuJ3QgdXNlZnVsIHdoZW5cbiAgICAgIGVycm9ycyA9IHN0cmlwRW51bUVycm9ycyhlcnJvcnMpO1xuICAgIH1cblxuICAgIGlmIChlcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGFzc2VtYmx5IG1hbmlmZXN0OlxcbiR7ZXJyb3JzLm1hcChlID0+IGUuc3RhY2spLmpvaW4oJ1xcbicpfWApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHNhdmVNYW5pZmVzdChtYW5pZmVzdDogYW55LCBmaWxlUGF0aDogc3RyaW5nLCBzY2hlbWE6IGpzb25zY2hlbWEuU2NoZW1hLCBwcmVwcm9jZXNzPzogKG9iajogYW55KSA9PiBhbnkpIHtcbiAgICBsZXQgd2l0aFZlcnNpb24gPSB7IC4uLm1hbmlmZXN0LCB2ZXJzaW9uOiBNYW5pZmVzdC52ZXJzaW9uKCkgfTtcbiAgICBNYW5pZmVzdC52YWxpZGF0ZSh3aXRoVmVyc2lvbiwgc2NoZW1hKTtcbiAgICBpZiAocHJlcHJvY2Vzcykge1xuICAgICAgd2l0aFZlcnNpb24gPSBwcmVwcm9jZXNzKHdpdGhWZXJzaW9uKTtcbiAgICB9XG4gICAgZnMud3JpdGVGaWxlU3luYyhmaWxlUGF0aCwgSlNPTi5zdHJpbmdpZnkod2l0aFZlcnNpb24sIHVuZGVmaW5lZCwgMikpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgbG9hZE1hbmlmZXN0KGZpbGVQYXRoOiBzdHJpbmcsIHNjaGVtYToganNvbnNjaGVtYS5TY2hlbWEsIHByZXByb2Nlc3M/OiAob2JqOiBhbnkpID0+IGFueSwgb3B0aW9ucz86IExvYWRNYW5pZmVzdE9wdGlvbnMpIHtcbiAgICBsZXQgb2JqID0gSlNPTi5wYXJzZShmcy5yZWFkRmlsZVN5bmMoZmlsZVBhdGgsIHsgZW5jb2Rpbmc6ICd1dGYtOCcgfSkpO1xuICAgIGlmIChwcmVwcm9jZXNzKSB7XG4gICAgICBvYmogPSBwcmVwcm9jZXNzKG9iaik7XG4gICAgfVxuICAgIE1hbmlmZXN0LnZhbGlkYXRlKG9iaiwgc2NoZW1hLCBvcHRpb25zKTtcbiAgICByZXR1cm4gb2JqO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgcmVxdWlyZXMgc29tZSBleHBsYWluaW5nLi4uXG4gICAqXG4gICAqIFdlIHByZXZpb3VzbHkgdXNlZCBgeyBLZXksIFZhbHVlIH1gIGZvciB0aGUgb2JqZWN0IHRoYXQgcmVwcmVzZW50cyBhIHN0YWNrIHRhZy4gKE5vdGljZSB0aGUgY2FzaW5nKVxuICAgKiBAbGluayBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvYmxvYi92MS4yNy4wL3BhY2thZ2VzL2F3cy1jZGsvbGliL2FwaS9jeGFwcC9zdGFja3MudHMjTDQyNy5cbiAgICpcbiAgICogV2hlbiB0aGF0IG9iamVjdCBtb3ZlZCB0byB0aGlzIHBhY2thZ2UsIGl0IGhhZCB0byBiZSBKU0lJIGNvbXBsaWFudCwgd2hpY2ggbWVhbnQgdGhlIHByb3BlcnR5XG4gICAqIG5hbWVzIG11c3QgYmUgYGNhbWVsQ2FzZWRgLCBhbmQgbm90IGBQYXNjYWxDYXNlZGAuIFRoaXMgbWVhbnQgaXQgbm8gbG9uZ2VyIG1hdGNoZXMgdGhlIHN0cnVjdHVyZSBpbiB0aGUgYG1hbmlmZXN0Lmpzb25gIGZpbGUuXG4gICAqIEluIG9yZGVyIHRvIHN1cHBvcnQgY3VycmVudCBtYW5pZmVzdCBmaWxlcywgd2UgaGF2ZSB0byB0cmFuc2xhdGUgdGhlIGBQYXNjYWxDYXNlZGAgcmVwcmVzZW50YXRpb24gdG8gdGhlIG5ldyBgY2FtZWxDYXNlZGAgb25lLlxuICAgKlxuICAgKiBOb3RlIHRoYXQgdGhlIHNlcmlhbGl6YXRpb24gaXRzZWxmIHN0aWxsIHdyaXRlcyBgUGFzY2FsQ2FzZWRgIGJlY2F1c2UgaXQgcmVsYXRlcyB0byBob3cgQ2xvdWRGb3JtYXRpb24gZXhwZWN0cyBpdC5cbiAgICpcbiAgICogSWRlYWxseSwgd2Ugd291bGQgc3RhcnQgd3JpdGluZyB0aGUgYGNhbWVsQ2FzZWRgIGFuZCB0cmFuc2xhdGUgdG8gaG93IENsb3VkRm9ybWF0aW9uIGV4cGVjdHMgaXQgd2hlbiBuZWVkZWQuIEJ1dCB0aGlzIHJlcXVpcmVzIG5hc3R5XG4gICAqIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5IGNvZGUgYW5kIGl0IGp1c3QgZG9lc24ndCBzZWVtIHRvIGJlIHdvcnRoIHRoZSBlZmZvcnQuXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBwYXRjaFN0YWNrVGFnc09uUmVhZChtYW5pZmVzdDogYXNzZW1ibHkuQXNzZW1ibHlNYW5pZmVzdCkge1xuICAgIHJldHVybiBNYW5pZmVzdC5yZXBsYWNlU3RhY2tUYWdzKG1hbmlmZXN0LCB0YWdzID0+IHRhZ3MubWFwKChkaXNrVGFnOiBhbnkpID0+ICh7XG4gICAgICBrZXk6IGRpc2tUYWcuS2V5LFxuICAgICAgdmFsdWU6IGRpc2tUYWcuVmFsdWUsXG4gICAgfSkpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZWUgZXhwbGFuYXRpb24gb24gYHBhdGNoU3RhY2tUYWdzT25SZWFkYFxuICAgKlxuICAgKiBUcmFuc2xhdGUgc3RhY2sgdGFncyBtZXRhZGF0YSBpZiBpdCBoYXMgdGhlIFwicmlnaHRcIiBjYXNpbmcuXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBwYXRjaFN0YWNrVGFnc09uV3JpdGUobWFuaWZlc3Q6IGFzc2VtYmx5LkFzc2VtYmx5TWFuaWZlc3QpIHtcbiAgICByZXR1cm4gTWFuaWZlc3QucmVwbGFjZVN0YWNrVGFncyhtYW5pZmVzdCwgdGFncyA9PiB0YWdzLm1hcChtZW1UYWcgPT5cbiAgICAgIC8vIE1pZ2h0IGFscmVhZHkgYmUgdXBwZXJjYXNlZCAoYmVjYXVzZSBzdGFjayBzeW50aGVzaXMgZ2VuZXJhdGVzIGl0IGluIGZpbmFsIGZvcm0geWV0KVxuICAgICAgKCdLZXknIGluIG1lbVRhZyA/IG1lbVRhZyA6IHsgS2V5OiBtZW1UYWcua2V5LCBWYWx1ZTogbWVtVGFnLnZhbHVlIH0pIGFzIGFueSxcbiAgICApKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWN1cnNpdmVseSByZXBsYWNlIHN0YWNrIHRhZ3MgaW4gdGhlIHN0YWNrIG1ldGFkYXRhXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyByZXBsYWNlU3RhY2tUYWdzKG1hbmlmZXN0OiBhc3NlbWJseS5Bc3NlbWJseU1hbmlmZXN0LCBmbjogRW5kb2Z1bmN0b3I8YXNzZW1ibHkuU3RhY2tUYWdzTWV0YWRhdGFFbnRyeT4pOiBhc3NlbWJseS5Bc3NlbWJseU1hbmlmZXN0IHtcbiAgICAvLyBOZWVkIHRvIGFkZCBpbiB0aGUgYG5vVW5kZWZpbmVkYHMgYmVjYXVzZSBvdGhlcndpc2UgamVzdCBzbmFwc2hvdCB0ZXN0cyBhcmUgZ29pbmcgdG8gZnJlYWsgb3V0XG4gICAgLy8gYWJvdXQgdGhlIGtleXMgd2l0aCB2YWx1ZXMgdGhhdCBhcmUgYHVuZGVmaW5lZGAgKGV2ZW4gdGhvdWdoIHRoZXkgd291bGQgbmV2ZXIgYmUgSlNPTi5zdHJpbmdpZmllZClcbiAgICByZXR1cm4gbm9VbmRlZmluZWQoe1xuICAgICAgLi4ubWFuaWZlc3QsXG4gICAgICBhcnRpZmFjdHM6IG1hcFZhbHVlcyhtYW5pZmVzdC5hcnRpZmFjdHMsIGFydGlmYWN0ID0+IHtcbiAgICAgICAgaWYgKGFydGlmYWN0LnR5cGUgIT09IGFzc2VtYmx5LkFydGlmYWN0VHlwZS5BV1NfQ0xPVURGT1JNQVRJT05fU1RBQ0spIHsgcmV0dXJuIGFydGlmYWN0OyB9XG4gICAgICAgIHJldHVybiBub1VuZGVmaW5lZCh7XG4gICAgICAgICAgLi4uYXJ0aWZhY3QsXG4gICAgICAgICAgbWV0YWRhdGE6IG1hcFZhbHVlcyhhcnRpZmFjdC5tZXRhZGF0YSwgbWV0YWRhdGFFbnRyaWVzID0+IG1ldGFkYXRhRW50cmllcy5tYXAobWV0YWRhdGFFbnRyeSA9PiB7XG4gICAgICAgICAgICBpZiAobWV0YWRhdGFFbnRyeS50eXBlICE9PSBhc3NlbWJseS5BcnRpZmFjdE1ldGFkYXRhRW50cnlUeXBlLlNUQUNLX1RBR1MgfHwgIW1ldGFkYXRhRW50cnkuZGF0YSkgeyByZXR1cm4gbWV0YWRhdGFFbnRyeTsgfVxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgLi4ubWV0YWRhdGFFbnRyeSxcbiAgICAgICAgICAgICAgZGF0YTogZm4obWV0YWRhdGFFbnRyeS5kYXRhIGFzIGFzc2VtYmx5LlN0YWNrVGFnc01ldGFkYXRhRW50cnkpLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9KSksXG4gICAgICAgIH0gYXMgYXNzZW1ibHkuQXJ0aWZhY3RNYW5pZmVzdCk7XG4gICAgICB9KSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IoKSB7fVxufVxuXG50eXBlIEVuZG9mdW5jdG9yPEE+ID0gKHg6IEEpID0+IEE7XG5cbmZ1bmN0aW9uIG1hcFZhbHVlczxBLCBCPih4czogUmVjb3JkPHN0cmluZywgQT4gfCB1bmRlZmluZWQsIGZuOiAoeDogQSkgPT4gQik6IFJlY29yZDxzdHJpbmcsIEI+IHwgdW5kZWZpbmVkIHtcbiAgaWYgKCF4cykgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGNvbnN0IHJldDogUmVjb3JkPHN0cmluZywgQj4gfCB1bmRlZmluZWQgPSB7fTtcbiAgZm9yIChjb25zdCBbaywgdl0gb2YgT2JqZWN0LmVudHJpZXMoeHMpKSB7XG4gICAgcmV0W2tdID0gZm4odik7XG4gIH1cbiAgcmV0dXJuIHJldDtcbn1cblxuZnVuY3Rpb24gbm9VbmRlZmluZWQ8QSBleHRlbmRzIG9iamVjdD4oeHM6IEEpOiBBIHtcbiAgY29uc3QgcmV0OiBhbnkgPSB7fTtcbiAgZm9yIChjb25zdCBbaywgdl0gb2YgT2JqZWN0LmVudHJpZXMoeHMpKSB7XG4gICAgaWYgKHYgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0W2tdID0gdjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJldDtcbn1cblxuZnVuY3Rpb24gc3RyaXBFbnVtRXJyb3JzKGVycm9yczoganNvbnNjaGVtYS5WYWxpZGF0aW9uRXJyb3JbXSkge1xuICByZXR1cm4gZXJyb3JzLmZpbHRlcihlID0+IHR5cGVvZiBlLnNjaGVtYSA9PT0nc3RyaW5nJyB8fCAhKCdlbnVtJyBpbiBlLnNjaGVtYSkpO1xufVxuIl19
281
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuaWZlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJtYW5pZmVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSx5QkFBeUI7QUFDekIseUNBQXlDO0FBQ3pDLGlDQUFpQztBQUVqQyw2Q0FBNkM7QUFHN0MsdURBQXVEO0FBQ3ZELDBEQUEwRDtBQUUxRCxrRUFBa0U7QUFDbEUsaUVBQWlFO0FBQ2pFLDZCQUE2QjtBQUNoQixRQUFBLGdCQUFnQixHQUFXLHdDQUF3QyxDQUFDO0FBRWpGLE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO0FBRTlELE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO0FBRXhFOztHQUVHO0FBQ0gsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLHVDQUF1QyxDQUFDLENBQUMsT0FBTyxDQUFDO0FBRWhGLE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO0FBNEI1RDs7R0FFRztBQUNILE1BQWEsUUFBUTtJQWtNbkIsaUJBQXdCO0lBak14Qjs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxRQUFtQyxFQUFFLFFBQWdCOzs7Ozs7Ozs7O1FBQ3RGLFFBQVEsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxlQUFlLEVBQUUsUUFBUSxDQUFDLHFCQUFxQixDQUFDLENBQUM7S0FDNUY7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLG9CQUFvQixDQUFDLFFBQWdCLEVBQUUsT0FBNkI7Ozs7Ozs7Ozs7UUFDaEYsT0FBTyxRQUFRLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxlQUFlLEVBQUUsUUFBUSxDQUFDLG9CQUFvQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0tBQ2pHO0lBRUQ7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsaUJBQWlCLENBQUMsUUFBOEIsRUFBRSxRQUFnQjs7Ozs7Ozs7OztRQUM5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OlsiaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMganNvbnNjaGVtYSBmcm9tICdqc29uc2NoZW1hJztcbmltcG9ydCAqIGFzIHNlbXZlciBmcm9tICdzZW12ZXInO1xuaW1wb3J0ICogYXMgYXNzZXRzIGZyb20gJy4vYXNzZXRzJztcbmltcG9ydCAqIGFzIGFzc2VtYmx5IGZyb20gJy4vY2xvdWQtYXNzZW1ibHknO1xuaW1wb3J0ICogYXMgaW50ZWcgZnJvbSAnLi9pbnRlZy10ZXN0cyc7XG5cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby12YXItcmVxdWlyZXMgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1yZXF1aXJlLWltcG9ydHMgKi9cblxuLy8gdGhpcyBwcmVmaXggaXMgdXNlZCBieSB0aGUgQ0xJIHRvIGlkZW50aWZ5IHRoaXMgc3BlY2lmaWMgZXJyb3IuXG4vLyBpbiB3aGljaCBjYXNlIHdlIHdhbnQgdG8gaW5zdHJ1Y3QgdGhlIHVzZXIgdG8gdXBncmFkZSBoaXMgQ0xJLlxuLy8gc2VlIGV4ZWMudHMjY3JlYXRlQXNzZW1ibHlcbmV4cG9ydCBjb25zdCBWRVJTSU9OX01JU01BVENIOiBzdHJpbmcgPSAnQ2xvdWQgYXNzZW1ibHkgc2NoZW1hIHZlcnNpb24gbWlzbWF0Y2gnO1xuXG5jb25zdCBBU1NFVFNfU0NIRU1BID0gcmVxdWlyZSgnLi4vc2NoZW1hL2Fzc2V0cy5zY2hlbWEuanNvbicpO1xuXG5jb25zdCBBU1NFTUJMWV9TQ0hFTUEgPSByZXF1aXJlKCcuLi9zY2hlbWEvY2xvdWQtYXNzZW1ibHkuc2NoZW1hLmpzb24nKTtcblxuLyoqXG4gKiBWZXJzaW9uIGlzIHNoYXJlZCBmb3IgYm90aCBtYW5pZmVzdHNcbiAqL1xuY29uc3QgU0NIRU1BX1ZFUlNJT04gPSByZXF1aXJlKCcuLi9zY2hlbWEvY2xvdWQtYXNzZW1ibHkudmVyc2lvbi5qc29uJykudmVyc2lvbjtcblxuY29uc3QgSU5URUdfU0NIRU1BID0gcmVxdWlyZSgnLi4vc2NoZW1hL2ludGVnLnNjaGVtYS5qc29uJyk7XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgdGhlIGxvYWRNYW5pZmVzdCBvcGVyYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMb2FkTWFuaWZlc3RPcHRpb25zIHtcbiAgLyoqXG4gICAqIFNraXAgdGhlIHZlcnNpb24gY2hlY2tcbiAgICpcbiAgICogVGhpcyBtZWFucyB5b3UgbWF5IHJlYWQgYSBuZXdlciBjbG91ZCBhc3NlbWJseSB0aGFuIHRoZSBDWCBBUEkgaXMgZGVzaWduZWRcbiAgICogdG8gc3VwcG9ydCwgYW5kIHlvdXIgYXBwbGljYXRpb24gbWF5IG5vdCBiZSBhd2FyZSBvZiBhbGwgZmVhdHVyZXMgdGhhdCBpbiB1c2VcbiAgICogaW4gdGhlIENsb3VkIEFzc2VtYmx5LlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgc2tpcFZlcnNpb25DaGVjaz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNraXAgZW51bSBjaGVja3NcbiAgICpcbiAgICogVGhpcyBtZWFucyB5b3UgbWF5IHJlYWQgZW51bSB2YWx1ZXMgeW91IGRvbid0IGtub3cgYWJvdXQgeWV0LiBNYWtlIHN1cmUgdG8gYWx3YXlzXG4gICAqIGNoZWNrIHRoZSB2YWx1ZXMgb2YgZW51bXMgeW91IGVuY291bnRlciBpbiB0aGUgbWFuaWZlc3QuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBza2lwRW51bUNoZWNrPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBQcm90b2NvbCB1dGlsaXR5IGNsYXNzLlxuICovXG5leHBvcnQgY2xhc3MgTWFuaWZlc3Qge1xuICAvKipcbiAgICogVmFsaWRhdGVzIGFuZCBzYXZlcyB0aGUgY2xvdWQgYXNzZW1ibHkgbWFuaWZlc3QgdG8gZmlsZS5cbiAgICpcbiAgICogQHBhcmFtIG1hbmlmZXN0IC0gbWFuaWZlc3QuXG4gICAqIEBwYXJhbSBmaWxlUGF0aCAtIG91dHB1dCBmaWxlIHBhdGguXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHNhdmVBc3NlbWJseU1hbmlmZXN0KG1hbmlmZXN0OiBhc3NlbWJseS5Bc3NlbWJseU1hbmlmZXN0LCBmaWxlUGF0aDogc3RyaW5nKSB7XG4gICAgTWFuaWZlc3Quc2F2ZU1hbmlmZXN0KG1hbmlmZXN0LCBmaWxlUGF0aCwgQVNTRU1CTFlfU0NIRU1BLCBNYW5pZmVzdC5wYXRjaFN0YWNrVGFnc09uV3JpdGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWQgYW5kIHZhbGlkYXRlcyB0aGUgY2xvdWQgYXNzZW1ibHkgbWFuaWZlc3QgZnJvbSBmaWxlLlxuICAgKlxuICAgKiBAcGFyYW0gZmlsZVBhdGggLSBwYXRoIHRvIHRoZSBtYW5pZmVzdCBmaWxlLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBsb2FkQXNzZW1ibHlNYW5pZmVzdChmaWxlUGF0aDogc3RyaW5nLCBvcHRpb25zPzogTG9hZE1hbmlmZXN0T3B0aW9ucyk6IGFzc2VtYmx5LkFzc2VtYmx5TWFuaWZlc3Qge1xuICAgIHJldHVybiBNYW5pZmVzdC5sb2FkTWFuaWZlc3QoZmlsZVBhdGgsIEFTU0VNQkxZX1NDSEVNQSwgTWFuaWZlc3QucGF0Y2hTdGFja1RhZ3NPblJlYWQsIG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBhbmQgc2F2ZXMgdGhlIGFzc2V0IG1hbmlmZXN0IHRvIGZpbGUuXG4gICAqXG4gICAqIEBwYXJhbSBtYW5pZmVzdCAtIG1hbmlmZXN0LlxuICAgKiBAcGFyYW0gZmlsZVBhdGggLSBvdXRwdXQgZmlsZSBwYXRoLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBzYXZlQXNzZXRNYW5pZmVzdChtYW5pZmVzdDogYXNzZXRzLkFzc2V0TWFuaWZlc3QsIGZpbGVQYXRoOiBzdHJpbmcpIHtcbiAgICBNYW5pZmVzdC5zYXZlTWFuaWZlc3QobWFuaWZlc3QsIGZpbGVQYXRoLCBBU1NFVFNfU0NIRU1BLCBNYW5pZmVzdC5wYXRjaFN0YWNrVGFnc09uUmVhZCk7XG4gIH1cblxuICAvKipcbiAgICogTG9hZCBhbmQgdmFsaWRhdGVzIHRoZSBhc3NldCBtYW5pZmVzdCBmcm9tIGZpbGUuXG4gICAqXG4gICAqIEBwYXJhbSBmaWxlUGF0aCAtIHBhdGggdG8gdGhlIG1hbmlmZXN0IGZpbGUuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGxvYWRBc3NldE1hbmlmZXN0KGZpbGVQYXRoOiBzdHJpbmcpOiBhc3NldHMuQXNzZXRNYW5pZmVzdCB7XG4gICAgcmV0dXJuIHRoaXMubG9hZE1hbmlmZXN0KGZpbGVQYXRoLCBBU1NFVFNfU0NIRU1BKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgYW5kIHNhdmVzIHRoZSBpbnRlZyBtYW5pZmVzdCB0byBmaWxlLlxuICAgKlxuICAgKiBAcGFyYW0gbWFuaWZlc3QgLSBtYW5pZmVzdC5cbiAgICogQHBhcmFtIGZpbGVQYXRoIC0gb3V0cHV0IGZpbGUgcGF0aC5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgc2F2ZUludGVnTWFuaWZlc3QobWFuaWZlc3Q6IGludGVnLkludGVnTWFuaWZlc3QsIGZpbGVQYXRoOiBzdHJpbmcpIHtcbiAgICBNYW5pZmVzdC5zYXZlTWFuaWZlc3QobWFuaWZlc3QsIGZpbGVQYXRoLCBJTlRFR19TQ0hFTUEpO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWQgYW5kIHZhbGlkYXRlcyB0aGUgaW50ZWcgbWFuaWZlc3QgZnJvbSBmaWxlLlxuICAgKlxuICAgKiBAcGFyYW0gZmlsZVBhdGggLSBwYXRoIHRvIHRoZSBtYW5pZmVzdCBmaWxlLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBsb2FkSW50ZWdNYW5pZmVzdChmaWxlUGF0aDogc3RyaW5nKTogaW50ZWcuSW50ZWdNYW5pZmVzdCB7XG4gICAgcmV0dXJuIHRoaXMubG9hZE1hbmlmZXN0KGZpbGVQYXRoLCBJTlRFR19TQ0hFTUEpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoIHRoZSBjdXJyZW50IHNjaGVtYSB2ZXJzaW9uIG51bWJlci5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgdmVyc2lvbigpOiBzdHJpbmcge1xuICAgIHJldHVybiBTQ0hFTUFfVkVSU0lPTjtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXByZWNhdGVkXG4gICAqIEBkZXByZWNhdGVkIHVzZSBgc2F2ZUFzc2VtYmx5TWFuaWZlc3QoKWBcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgc2F2ZShtYW5pZmVzdDogYXNzZW1ibHkuQXNzZW1ibHlNYW5pZmVzdCwgZmlsZVBhdGg6IHN0cmluZykgeyByZXR1cm4gdGhpcy5zYXZlQXNzZW1ibHlNYW5pZmVzdChtYW5pZmVzdCwgZmlsZVBhdGgpOyB9XG5cbiAgLyoqXG4gICAqIERlcHJlY2F0ZWRcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGBsb2FkQXNzZW1ibHlNYW5pZmVzdCgpYFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBsb2FkKGZpbGVQYXRoOiBzdHJpbmcpOiBhc3NlbWJseS5Bc3NlbWJseU1hbmlmZXN0IHsgcmV0dXJuIHRoaXMubG9hZEFzc2VtYmx5TWFuaWZlc3QoZmlsZVBhdGgpOyB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgdmFsaWRhdGUobWFuaWZlc3Q6IHsgdmVyc2lvbjogc3RyaW5nIH0sIHNjaGVtYToganNvbnNjaGVtYS5TY2hlbWEsIG9wdGlvbnM/OiBMb2FkTWFuaWZlc3RPcHRpb25zKSB7XG4gICAgZnVuY3Rpb24gcGFyc2VWZXJzaW9uKHZlcnNpb246IHN0cmluZykge1xuICAgICAgY29uc3QgdmVyID0gc2VtdmVyLnZhbGlkKHZlcnNpb24pO1xuICAgICAgaWYgKCF2ZXIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHNlbXZlciBzdHJpbmc6IFwiJHt2ZXJzaW9ufVwiYCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdmVyO1xuICAgIH1cblxuICAgIGNvbnN0IG1heFN1cHBvcnRlZCA9IHBhcnNlVmVyc2lvbihNYW5pZmVzdC52ZXJzaW9uKCkpO1xuICAgIGNvbnN0IGFjdHVhbCA9IHBhcnNlVmVyc2lvbihtYW5pZmVzdC52ZXJzaW9uKTtcblxuICAgIC8vIGZpcnN0IHZhbGlkYXRlIHRoZSB2ZXJzaW9uIHNob3VsZCBiZSBhY2NlcHRlZC5cbiAgICBpZiAoc2VtdmVyLmd0KGFjdHVhbCwgbWF4U3VwcG9ydGVkKSAmJiAhb3B0aW9ucz8uc2tpcFZlcnNpb25DaGVjaykge1xuICAgICAgLy8gd2UgdXNlIGEgd2VsbCBrbm93biBlcnJvciBwcmVmaXggc28gdGhhdCB0aGUgQ0xJIGNhbiBpZGVudGlmeSB0aGlzIHNwZWNpZmljIGVycm9yXG4gICAgICAvLyBhbmQgcHJpbnQgc29tZSBtb3JlIGNvbnRleHQgdG8gdGhlIHVzZXIuXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCR7VkVSU0lPTl9NSVNNQVRDSH06IE1heGltdW0gc2NoZW1hIHZlcnNpb24gc3VwcG9ydGVkIGlzICR7bWF4U3VwcG9ydGVkfSwgYnV0IGZvdW5kICR7YWN0dWFsfWApO1xuICAgIH1cblxuICAgIC8vIG5vdyB2YWxpZGF0ZSB0aGUgZm9ybWF0IGlzIGdvb2QuXG4gICAgY29uc3QgdmFsaWRhdG9yID0gbmV3IGpzb25zY2hlbWEuVmFsaWRhdG9yKCk7XG4gICAgY29uc3QgcmVzdWx0ID0gdmFsaWRhdG9yLnZhbGlkYXRlKG1hbmlmZXN0LCBzY2hlbWEsIHtcblxuICAgICAgLy8gZG9lcyBleGlzdCBidXQgaXMgbm90IGluIHRoZSBUeXBlU2NyaXB0IGRlZmluaXRpb25zXG4gICAgICBuZXN0ZWRFcnJvcnM6IHRydWUsXG5cbiAgICAgIGFsbG93VW5rbm93bkF0dHJpYnV0ZXM6IGZhbHNlLFxuXG4gICAgfSBhcyBhbnkpO1xuXG4gICAgbGV0IGVycm9ycyA9IHJlc3VsdC5lcnJvcnM7XG4gICAgaWYgKG9wdGlvbnM/LnNraXBFbnVtQ2hlY2spIHtcbiAgICAgIC8vIEVudW0gdmFsaWRhdGlvbnMgYXJlbid0IHVzZWZ1bCB3aGVuXG4gICAgICBlcnJvcnMgPSBzdHJpcEVudW1FcnJvcnMoZXJyb3JzKTtcbiAgICB9XG5cbiAgICBpZiAoZXJyb3JzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBhc3NlbWJseSBtYW5pZmVzdDpcXG4ke2Vycm9ycy5tYXAoZSA9PiBlLnN0YWNrKS5qb2luKCdcXG4nKX1gKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBzYXZlTWFuaWZlc3QobWFuaWZlc3Q6IGFueSwgZmlsZVBhdGg6IHN0cmluZywgc2NoZW1hOiBqc29uc2NoZW1hLlNjaGVtYSwgcHJlcHJvY2Vzcz86IChvYmo6IGFueSkgPT4gYW55KSB7XG4gICAgbGV0IHdpdGhWZXJzaW9uID0geyAuLi5tYW5pZmVzdCwgdmVyc2lvbjogTWFuaWZlc3QudmVyc2lvbigpIH07XG4gICAgTWFuaWZlc3QudmFsaWRhdGUod2l0aFZlcnNpb24sIHNjaGVtYSk7XG4gICAgaWYgKHByZXByb2Nlc3MpIHtcbiAgICAgIHdpdGhWZXJzaW9uID0gcHJlcHJvY2Vzcyh3aXRoVmVyc2lvbik7XG4gICAgfVxuICAgIGZzLndyaXRlRmlsZVN5bmMoZmlsZVBhdGgsIEpTT04uc3RyaW5naWZ5KHdpdGhWZXJzaW9uLCB1bmRlZmluZWQsIDIpKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGxvYWRNYW5pZmVzdChmaWxlUGF0aDogc3RyaW5nLCBzY2hlbWE6IGpzb25zY2hlbWEuU2NoZW1hLCBwcmVwcm9jZXNzPzogKG9iajogYW55KSA9PiBhbnksIG9wdGlvbnM/OiBMb2FkTWFuaWZlc3RPcHRpb25zKSB7XG4gICAgbGV0IG9iaiA9IEpTT04ucGFyc2UoZnMucmVhZEZpbGVTeW5jKGZpbGVQYXRoLCB7IGVuY29kaW5nOiAndXRmLTgnIH0pKTtcbiAgICBpZiAocHJlcHJvY2Vzcykge1xuICAgICAgb2JqID0gcHJlcHJvY2VzcyhvYmopO1xuICAgIH1cbiAgICBNYW5pZmVzdC52YWxpZGF0ZShvYmosIHNjaGVtYSwgb3B0aW9ucyk7XG4gICAgcmV0dXJuIG9iajtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIHJlcXVpcmVzIHNvbWUgZXhwbGFpbmluZy4uLlxuICAgKlxuICAgKiBXZSBwcmV2aW91c2x5IHVzZWQgYHsgS2V5LCBWYWx1ZSB9YCBmb3IgdGhlIG9iamVjdCB0aGF0IHJlcHJlc2VudHMgYSBzdGFjayB0YWcuIChOb3RpY2UgdGhlIGNhc2luZylcbiAgICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2Jsb2IvdjEuMjcuMC9wYWNrYWdlcy9hd3MtY2RrL2xpYi9hcGkvY3hhcHAvc3RhY2tzLnRzI0w0MjcuXG4gICAqXG4gICAqIFdoZW4gdGhhdCBvYmplY3QgbW92ZWQgdG8gdGhpcyBwYWNrYWdlLCBpdCBoYWQgdG8gYmUgSlNJSSBjb21wbGlhbnQsIHdoaWNoIG1lYW50IHRoZSBwcm9wZXJ0eVxuICAgKiBuYW1lcyBtdXN0IGJlIGBjYW1lbENhc2VkYCwgYW5kIG5vdCBgUGFzY2FsQ2FzZWRgLiBUaGlzIG1lYW50IGl0IG5vIGxvbmdlciBtYXRjaGVzIHRoZSBzdHJ1Y3R1cmUgaW4gdGhlIGBtYW5pZmVzdC5qc29uYCBmaWxlLlxuICAgKiBJbiBvcmRlciB0byBzdXBwb3J0IGN1cnJlbnQgbWFuaWZlc3QgZmlsZXMsIHdlIGhhdmUgdG8gdHJhbnNsYXRlIHRoZSBgUGFzY2FsQ2FzZWRgIHJlcHJlc2VudGF0aW9uIHRvIHRoZSBuZXcgYGNhbWVsQ2FzZWRgIG9uZS5cbiAgICpcbiAgICogTm90ZSB0aGF0IHRoZSBzZXJpYWxpemF0aW9uIGl0c2VsZiBzdGlsbCB3cml0ZXMgYFBhc2NhbENhc2VkYCBiZWNhdXNlIGl0IHJlbGF0ZXMgdG8gaG93IENsb3VkRm9ybWF0aW9uIGV4cGVjdHMgaXQuXG4gICAqXG4gICAqIElkZWFsbHksIHdlIHdvdWxkIHN0YXJ0IHdyaXRpbmcgdGhlIGBjYW1lbENhc2VkYCBhbmQgdHJhbnNsYXRlIHRvIGhvdyBDbG91ZEZvcm1hdGlvbiBleHBlY3RzIGl0IHdoZW4gbmVlZGVkLiBCdXQgdGhpcyByZXF1aXJlcyBuYXN0eVxuICAgKiBiYWNrd2FyZHMtY29tcGF0aWJpbGl0eSBjb2RlIGFuZCBpdCBqdXN0IGRvZXNuJ3Qgc2VlbSB0byBiZSB3b3J0aCB0aGUgZWZmb3J0LlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgcGF0Y2hTdGFja1RhZ3NPblJlYWQobWFuaWZlc3Q6IGFzc2VtYmx5LkFzc2VtYmx5TWFuaWZlc3QpIHtcbiAgICByZXR1cm4gTWFuaWZlc3QucmVwbGFjZVN0YWNrVGFncyhtYW5pZmVzdCwgdGFncyA9PiB0YWdzLm1hcCgoZGlza1RhZzogYW55KSA9PiAoe1xuICAgICAga2V5OiBkaXNrVGFnLktleSxcbiAgICAgIHZhbHVlOiBkaXNrVGFnLlZhbHVlLFxuICAgIH0pKSk7XG4gIH1cblxuICAvKipcbiAgICogU2VlIGV4cGxhbmF0aW9uIG9uIGBwYXRjaFN0YWNrVGFnc09uUmVhZGBcbiAgICpcbiAgICogVHJhbnNsYXRlIHN0YWNrIHRhZ3MgbWV0YWRhdGEgaWYgaXQgaGFzIHRoZSBcInJpZ2h0XCIgY2FzaW5nLlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgcGF0Y2hTdGFja1RhZ3NPbldyaXRlKG1hbmlmZXN0OiBhc3NlbWJseS5Bc3NlbWJseU1hbmlmZXN0KSB7XG4gICAgcmV0dXJuIE1hbmlmZXN0LnJlcGxhY2VTdGFja1RhZ3MobWFuaWZlc3QsIHRhZ3MgPT4gdGFncy5tYXAobWVtVGFnID0+XG4gICAgICAvLyBNaWdodCBhbHJlYWR5IGJlIHVwcGVyY2FzZWQgKGJlY2F1c2Ugc3RhY2sgc3ludGhlc2lzIGdlbmVyYXRlcyBpdCBpbiBmaW5hbCBmb3JtIHlldClcbiAgICAgICgnS2V5JyBpbiBtZW1UYWcgPyBtZW1UYWcgOiB7IEtleTogbWVtVGFnLmtleSwgVmFsdWU6IG1lbVRhZy52YWx1ZSB9KSBhcyBhbnksXG4gICAgKSk7XG4gIH1cblxuICAvKipcbiAgICogUmVjdXJzaXZlbHkgcmVwbGFjZSBzdGFjayB0YWdzIGluIHRoZSBzdGFjayBtZXRhZGF0YVxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgcmVwbGFjZVN0YWNrVGFncyhtYW5pZmVzdDogYXNzZW1ibHkuQXNzZW1ibHlNYW5pZmVzdCwgZm46IEVuZG9mdW5jdG9yPGFzc2VtYmx5LlN0YWNrVGFnc01ldGFkYXRhRW50cnk+KTogYXNzZW1ibHkuQXNzZW1ibHlNYW5pZmVzdCB7XG4gICAgLy8gTmVlZCB0byBhZGQgaW4gdGhlIGBub1VuZGVmaW5lZGBzIGJlY2F1c2Ugb3RoZXJ3aXNlIGplc3Qgc25hcHNob3QgdGVzdHMgYXJlIGdvaW5nIHRvIGZyZWFrIG91dFxuICAgIC8vIGFib3V0IHRoZSBrZXlzIHdpdGggdmFsdWVzIHRoYXQgYXJlIGB1bmRlZmluZWRgIChldmVuIHRob3VnaCB0aGV5IHdvdWxkIG5ldmVyIGJlIEpTT04uc3RyaW5naWZpZWQpXG4gICAgcmV0dXJuIG5vVW5kZWZpbmVkKHtcbiAgICAgIC4uLm1hbmlmZXN0LFxuICAgICAgYXJ0aWZhY3RzOiBtYXBWYWx1ZXMobWFuaWZlc3QuYXJ0aWZhY3RzLCBhcnRpZmFjdCA9PiB7XG4gICAgICAgIGlmIChhcnRpZmFjdC50eXBlICE9PSBhc3NlbWJseS5BcnRpZmFjdFR5cGUuQVdTX0NMT1VERk9STUFUSU9OX1NUQUNLKSB7IHJldHVybiBhcnRpZmFjdDsgfVxuICAgICAgICByZXR1cm4gbm9VbmRlZmluZWQoe1xuICAgICAgICAgIC4uLmFydGlmYWN0LFxuICAgICAgICAgIG1ldGFkYXRhOiBtYXBWYWx1ZXMoYXJ0aWZhY3QubWV0YWRhdGEsIG1ldGFkYXRhRW50cmllcyA9PiBtZXRhZGF0YUVudHJpZXMubWFwKG1ldGFkYXRhRW50cnkgPT4ge1xuICAgICAgICAgICAgaWYgKG1ldGFkYXRhRW50cnkudHlwZSAhPT0gYXNzZW1ibHkuQXJ0aWZhY3RNZXRhZGF0YUVudHJ5VHlwZS5TVEFDS19UQUdTIHx8ICFtZXRhZGF0YUVudHJ5LmRhdGEpIHsgcmV0dXJuIG1ldGFkYXRhRW50cnk7IH1cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIC4uLm1ldGFkYXRhRW50cnksXG4gICAgICAgICAgICAgIGRhdGE6IGZuKG1ldGFkYXRhRW50cnkuZGF0YSBhcyBhc3NlbWJseS5TdGFja1RhZ3NNZXRhZGF0YUVudHJ5KSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSkpLFxuICAgICAgICB9IGFzIGFzc2VtYmx5LkFydGlmYWN0TWFuaWZlc3QpO1xuICAgICAgfSksXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge31cbn1cblxudHlwZSBFbmRvZnVuY3RvcjxBPiA9ICh4OiBBKSA9PiBBO1xuXG5mdW5jdGlvbiBtYXBWYWx1ZXM8QSwgQj4oeHM6IFJlY29yZDxzdHJpbmcsIEE+IHwgdW5kZWZpbmVkLCBmbjogKHg6IEEpID0+IEIpOiBSZWNvcmQ8c3RyaW5nLCBCPiB8IHVuZGVmaW5lZCB7XG4gIGlmICgheHMpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXQ6IFJlY29yZDxzdHJpbmcsIEI+IHwgdW5kZWZpbmVkID0ge307XG4gIGZvciAoY29uc3QgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKHhzKSkge1xuICAgIHJldFtrXSA9IGZuKHYpO1xuICB9XG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIG5vVW5kZWZpbmVkPEEgZXh0ZW5kcyBvYmplY3Q+KHhzOiBBKTogQSB7XG4gIGNvbnN0IHJldDogYW55ID0ge307XG4gIGZvciAoY29uc3QgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKHhzKSkge1xuICAgIGlmICh2ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldFtrXSA9IHY7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIHN0cmlwRW51bUVycm9ycyhlcnJvcnM6IGpzb25zY2hlbWEuVmFsaWRhdGlvbkVycm9yW10pIHtcbiAgcmV0dXJuIGVycm9ycy5maWx0ZXIoZSA9PiB0eXBlb2YgZS5zY2hlbWEgPT09J3N0cmluZycgfHwgISgnZW51bScgaW4gZS5zY2hlbWEpKTtcbn1cbiJdfQ==
@@ -2,8 +2,7 @@
2
2
 
3
3
  # jsonschema
4
4
 
5
- [JSON schema](http://json-schema.org/) validator, which is designed to be fast and simple to use.
6
- The latest IETF published draft is v6, this library is mostly v4 compatible.
5
+ [JSON schema](http://json-schema.org/) validator, which is designed to be fast and simple to use. JSON Schema versions through draft-07 are fully supported.
7
6
 
8
7
  ## Contributing & bugs
9
8
 
@@ -434,10 +434,14 @@ validators.maxProperties = function validateMaxProperties (instance, schema, opt
434
434
  validators.items = function validateItems (instance, schema, options, ctx) {
435
435
  var self = this;
436
436
  if (!this.types.array(instance)) return;
437
- if (!schema.items) return;
437
+ if (schema.items===undefined) return;
438
438
  var result = new ValidatorResult(instance, schema, options, ctx);
439
439
  instance.every(function (value, i) {
440
- var items = Array.isArray(schema.items) ? (schema.items[i] || schema.additionalItems) : schema.items;
440
+ if(Array.isArray(schema.items)){
441
+ var items = schema.items[i]===undefined ? schema.additionalItems : schema.items[i];
442
+ }else{
443
+ var items = schema.items;
444
+ }
441
445
  if (items === undefined) {
442
446
  return true;
443
447
  }
@@ -456,6 +460,34 @@ validators.items = function validateItems (instance, schema, options, ctx) {
456
460
  return result;
457
461
  };
458
462
 
463
+ /**
464
+ * Validates the "contains" keyword
465
+ * @param instance
466
+ * @param schema
467
+ * @param options
468
+ * @param ctx
469
+ * @return {String|null|ValidatorResult}
470
+ */
471
+ validators.contains = function validateContains (instance, schema, options, ctx) {
472
+ var self = this;
473
+ if (!this.types.array(instance)) return;
474
+ if (schema.contains===undefined) return;
475
+ if (!helpers.isSchema(schema.contains)) throw new Error('Expected "contains" keyword to be a schema');
476
+ var result = new ValidatorResult(instance, schema, options, ctx);
477
+ var count = instance.some(function (value, i) {
478
+ var res = self.validateSchema(value, schema.contains, options, ctx.makeChild(schema.contains, i));
479
+ return res.errors.length===0;
480
+ });
481
+ if(count===false){
482
+ result.addError({
483
+ name: 'contains',
484
+ argument: schema.contains,
485
+ message: "must contain an item matching given schema",
486
+ });
487
+ }
488
+ return result;
489
+ };
490
+
459
491
  /**
460
492
  * Validates minimum and exclusiveMinimum when the type of the instance value is a number.
461
493
  * @param instance
@@ -522,7 +554,7 @@ validators.maximum = function validateMaximum (instance, schema, options, ctx) {
522
554
  */
523
555
  validators.exclusiveMinimum = function validateExclusiveMinimum (instance, schema, options, ctx) {
524
556
  // Support the boolean form of exclusiveMinimum, which is handled by the "minimum" keyword.
525
- if(typeof schema.exclusiveMaximum === 'boolean') return;
557
+ if(typeof schema.exclusiveMinimum === 'boolean') return;
526
558
  if (!this.types.number(instance)) return;
527
559
  var result = new ValidatorResult(instance, schema, options, ctx);
528
560
  var valid = instance > schema.exclusiveMinimum;
@@ -67,7 +67,7 @@ ValidatorResult.prototype.importErrors = function importErrors(res) {
67
67
  if (typeof res == 'string' || (res && res.validatorType)) {
68
68
  this.addError(res);
69
69
  } else if (res && res.errors) {
70
- Array.prototype.push.apply(this.errors, res.errors);
70
+ this.errors = this.errors.concat(res.errors);
71
71
  }
72
72
  };
73
73
 
@@ -144,30 +144,49 @@ SchemaContext.prototype.makeChild = function makeChild(schema, propertyName){
144
144
  };
145
145
 
146
146
  var FORMAT_REGEXPS = exports.FORMAT_REGEXPS = {
147
+ // 7.3.1. Dates, Times, and Duration
147
148
  'date-time': /^\d{4}-(?:0[0-9]{1}|1[0-2]{1})-(3[01]|0[1-9]|[12][0-9])[tT ](2[0-4]|[01][0-9]):([0-5][0-9]):(60|[0-5][0-9])(\.\d+)?([zZ]|[+-]([0-5][0-9]):(60|[0-5][0-9]))$/,
148
149
  'date': /^\d{4}-(?:0[0-9]{1}|1[0-2]{1})-(3[01]|0[1-9]|[12][0-9])$/,
149
150
  'time': /^(2[0-4]|[01][0-9]):([0-5][0-9]):(60|[0-5][0-9])$/,
151
+ 'duration': /P(T\d+(H(\d+M(\d+S)?)?|M(\d+S)?|S)|\d+(D|M(\d+D)?|Y(\d+M(\d+D)?)?)(T\d+(H(\d+M(\d+S)?)?|M(\d+S)?|S))?|\d+W)/i,
150
152
 
153
+ // 7.3.2. Email Addresses
154
+ // TODO: fix the email production
151
155
  'email': /^(?:[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+\.)*[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+@(?:(?:(?:[a-zA-Z0-9](?:[a-zA-Z0-9\-](?!\.)){0,61}[a-zA-Z0-9]?\.)+[a-zA-Z0-9](?:[a-zA-Z0-9\-](?!$)){0,61}[a-zA-Z0-9]?)|(?:\[(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\]))$/,
156
+ 'idn-email': /^("(?:[!#-\[\]-\u{10FFFF}]|\\[\t -\u{10FFFF}])*"|[!#-'*+\-/-9=?A-Z\^-\u{10FFFF}](?:\.?[!#-'*+\-/-9=?A-Z\^-\u{10FFFF}])*)@([!#-'*+\-/-9=?A-Z\^-\u{10FFFF}](?:\.?[!#-'*+\-/-9=?A-Z\^-\u{10FFFF}])*|\[[!-Z\^-\u{10FFFF}]*\])$/u,
157
+
158
+ // 7.3.3. Hostnames
159
+
160
+ // 7.3.4. IP Addresses
152
161
  'ip-address': /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/,
162
+ // FIXME whitespace is invalid
153
163
  'ipv6': /^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$/,
154
164
 
165
+ // 7.3.5. Resource Identifiers
155
166
  // TODO: A more accurate regular expression for "uri" goes:
156
167
  // [A-Za-z][+\-.0-9A-Za-z]*:((/(/((%[0-9A-Fa-f]{2}|[!$&-.0-9;=A-Z_a-z~])+|(\[(([Vv][0-9A-Fa-f]+\.[!$&-.0-;=A-Z_a-z~]+)?|[.0-:A-Fa-f]+)\])?)(:\d*)?)?)?#(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~])*|(/(/((%[0-9A-Fa-f]{2}|[!$&-.0-9;=A-Z_a-z~])+|(\[(([Vv][0-9A-Fa-f]+\.[!$&-.0-;=A-Z_a-z~]+)?|[.0-:A-Fa-f]+)\])?)(:\d*)?[/?]|[!$&-.0-;=?-Z_a-z~])|/?%[0-9A-Fa-f]{2}|[!$&-.0-;=?-Z_a-z~])(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~])*(#(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~])*)?|/(/((%[0-9A-Fa-f]{2}|[!$&-.0-9;=A-Z_a-z~])+(:\d*)?|(\[(([Vv][0-9A-Fa-f]+\.[!$&-.0-;=A-Z_a-z~]+)?|[.0-:A-Fa-f]+)\])?:\d*|\[(([Vv][0-9A-Fa-f]+\.[!$&-.0-;=A-Z_a-z~]+)?|[.0-:A-Fa-f]+)\])?)?)?
157
- 'uri': /^[a-zA-Z][a-zA-Z0-9+-.]*:[^\s]*$/,
168
+ 'uri': /^[a-zA-Z][a-zA-Z0-9+.-]*:[^\s]*$/,
158
169
  'uri-reference': /^(((([A-Za-z][+\-.0-9A-Za-z]*(:%[0-9A-Fa-f]{2}|:[!$&-.0-;=?-Z_a-z~]|[/?])|\?)(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~])*|([A-Za-z][+\-.0-9A-Za-z]*:?)?)|([A-Za-z][+\-.0-9A-Za-z]*:)?\/((%[0-9A-Fa-f]{2}|\/((%[0-9A-Fa-f]{2}|[!$&-.0-9;=A-Z_a-z~])+|(\[(([Vv][0-9A-Fa-f]+\.[!$&-.0-;=A-Z_a-z~]+)?|[.0-:A-Fa-f]+)\])?)(:\d*)?[/?]|[!$&-.0-;=?-Z_a-z~])(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~])*|(\/((%[0-9A-Fa-f]{2}|[!$&-.0-9;=A-Z_a-z~])+|(\[(([Vv][0-9A-Fa-f]+\.[!$&-.0-;=A-Z_a-z~]+)?|[.0-:A-Fa-f]+)\])?)(:\d*)?)?))#(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~])*|(([A-Za-z][+\-.0-9A-Za-z]*)?%[0-9A-Fa-f]{2}|[!$&-.0-9;=@_~]|[A-Za-z][+\-.0-9A-Za-z]*[!$&-*,;=@_~])(%[0-9A-Fa-f]{2}|[!$&-.0-9;=@-Z_a-z~])*((([/?](%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~])*)?#|[/?])(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~])*)?|([A-Za-z][+\-.0-9A-Za-z]*(:%[0-9A-Fa-f]{2}|:[!$&-.0-;=?-Z_a-z~]|[/?])|\?)(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~])*|([A-Za-z][+\-.0-9A-Za-z]*:)?\/((%[0-9A-Fa-f]{2}|\/((%[0-9A-Fa-f]{2}|[!$&-.0-9;=A-Z_a-z~])+|(\[(([Vv][0-9A-Fa-f]+\.[!$&-.0-;=A-Z_a-z~]+)?|[.0-:A-Fa-f]+)\])?)(:\d*)?[/?]|[!$&-.0-;=?-Z_a-z~])(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~])*|\/((%[0-9A-Fa-f]{2}|[!$&-.0-9;=A-Z_a-z~])+(:\d*)?|(\[(([Vv][0-9A-Fa-f]+\.[!$&-.0-;=A-Z_a-z~]+)?|[.0-:A-Fa-f]+)\])?:\d*|\[(([Vv][0-9A-Fa-f]+\.[!$&-.0-;=A-Z_a-z~]+)?|[.0-:A-Fa-f]+)\])?)?|[A-Za-z][+\-.0-9A-Za-z]*:?)?$/,
170
+ 'iri': /^[a-zA-Z][a-zA-Z0-9+.-]*:[^\s]*$/,
171
+ 'iri-reference': /^(((([A-Za-z][+\-.0-9A-Za-z]*(:%[0-9A-Fa-f]{2}|:[!$&-.0-;=?-Z_a-z~-\u{10FFFF}]|[/?])|\?)(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~-\u{10FFFF}])*|([A-Za-z][+\-.0-9A-Za-z]*:?)?)|([A-Za-z][+\-.0-9A-Za-z]*:)?\/((%[0-9A-Fa-f]{2}|\/((%[0-9A-Fa-f]{2}|[!$&-.0-9;=A-Z_a-z~-\u{10FFFF}])+|(\[(([Vv][0-9A-Fa-f]+\.[!$&-.0-;=A-Z_a-z~-\u{10FFFF}]+)?|[.0-:A-Fa-f]+)\])?)(:\d*)?[/?]|[!$&-.0-;=?-Z_a-z~-\u{10FFFF}])(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~-\u{10FFFF}])*|(\/((%[0-9A-Fa-f]{2}|[!$&-.0-9;=A-Z_a-z~-\u{10FFFF}])+|(\[(([Vv][0-9A-Fa-f]+\.[!$&-.0-;=A-Z_a-z~-\u{10FFFF}]+)?|[.0-:A-Fa-f]+)\])?)(:\d*)?)?))#(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~-\u{10FFFF}])*|(([A-Za-z][+\-.0-9A-Za-z]*)?%[0-9A-Fa-f]{2}|[!$&-.0-9;=@_~-\u{10FFFF}]|[A-Za-z][+\-.0-9A-Za-z]*[!$&-*,;=@_~-\u{10FFFF}])(%[0-9A-Fa-f]{2}|[!$&-.0-9;=@-Z_a-z~-\u{10FFFF}])*((([/?](%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~-\u{10FFFF}])*)?#|[/?])(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~-\u{10FFFF}])*)?|([A-Za-z][+\-.0-9A-Za-z]*(:%[0-9A-Fa-f]{2}|:[!$&-.0-;=?-Z_a-z~-\u{10FFFF}]|[/?])|\?)(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~-\u{10FFFF}])*|([A-Za-z][+\-.0-9A-Za-z]*:)?\/((%[0-9A-Fa-f]{2}|\/((%[0-9A-Fa-f]{2}|[!$&-.0-9;=A-Z_a-z~-\u{10FFFF}])+|(\[(([Vv][0-9A-Fa-f]+\.[!$&-.0-;=A-Z_a-z~-\u{10FFFF}]+)?|[.0-:A-Fa-f]+)\])?)(:\d*)?[/?]|[!$&-.0-;=?-Z_a-z~-\u{10FFFF}])(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~-\u{10FFFF}])*|\/((%[0-9A-Fa-f]{2}|[!$&-.0-9;=A-Z_a-z~-\u{10FFFF}])+(:\d*)?|(\[(([Vv][0-9A-Fa-f]+\.[!$&-.0-;=A-Z_a-z~-\u{10FFFF}]+)?|[.0-:A-Fa-f]+)\])?:\d*|\[(([Vv][0-9A-Fa-f]+\.[!$&-.0-;=A-Z_a-z~-\u{10FFFF}]+)?|[.0-:A-Fa-f]+)\])?)?|[A-Za-z][+\-.0-9A-Za-z]*:?)?$/u,
172
+ 'uuid': /^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i,
159
173
 
160
- 'color': /^(#?([0-9A-Fa-f]{3}){1,2}\b|aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow|(rgb\(\s*\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\b\s*,\s*\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\b\s*,\s*\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\b\s*\))|(rgb\(\s*(\d?\d%|100%)+\s*,\s*(\d?\d%|100%)+\s*,\s*(\d?\d%|100%)+\s*\)))$/,
174
+ // 7.3.6. uri-template
175
+ 'uri-template': /(%[0-9a-f]{2}|[!#$&(-;=?@\[\]_a-z~]|\{[!#&+,./;=?@|]?(%[0-9a-f]{2}|[0-9_a-z])(\.?(%[0-9a-f]{2}|[0-9_a-z]))*(:[1-9]\d{0,3}|\*)?(,(%[0-9a-f]{2}|[0-9_a-z])(\.?(%[0-9a-f]{2}|[0-9_a-z]))*(:[1-9]\d{0,3}|\*)?)*\})*/iu,
176
+
177
+ // 7.3.7. JSON Pointers
178
+ 'json-pointer': /^(\/([\x00-\x2e0-@\[-}\x7f]|~[01])*)*$/iu,
179
+ 'relative-json-pointer': /^\d+(#|(\/([\x00-\x2e0-@\[-}\x7f]|~[01])*)*)$/iu,
161
180
 
162
181
  // hostname regex from: http://stackoverflow.com/a/1420225/5628
163
182
  'hostname': /^(?=.{1,255}$)[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?(?:\.[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?)*\.?$/,
164
183
  'host-name': /^(?=.{1,255}$)[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?(?:\.[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?)*\.?$/,
165
184
 
166
- 'alpha': /^[a-zA-Z]+$/,
167
- 'alphanumeric': /^[a-zA-Z0-9]+$/,
168
185
  'utc-millisec': function (input) {
169
186
  return (typeof input === 'string') && parseFloat(input) === parseInt(input, 10) && !isNaN(input);
170
187
  },
188
+
189
+ // 7.3.8. regex
171
190
  'regex': function (input) {
172
191
  var result = true;
173
192
  try {
@@ -177,8 +196,15 @@ var FORMAT_REGEXPS = exports.FORMAT_REGEXPS = {
177
196
  }
178
197
  return result;
179
198
  },
180
- 'style': /\s*(.+?):\s*([^;]+);?/,
199
+
200
+ // Other definitions
201
+ // "style" was removed from JSON Schema in draft-4 and is deprecated
202
+ 'style': /[\r\n\t ]*[^\r\n\t ][^:]*:[\r\n\t ]*[^\r\n\t ;]*[\r\n\t ]*;?/,
203
+ // "color" was removed from JSON Schema in draft-4 and is deprecated
204
+ 'color': /^(#?([0-9A-Fa-f]{3}){1,2}\b|aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow|(rgb\(\s*\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\b\s*,\s*\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\b\s*,\s*\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\b\s*\))|(rgb\(\s*(\d?\d%|100%)+\s*,\s*(\d?\d%|100%)+\s*,\s*(\d?\d%|100%)+\s*\)))$/,
181
205
  'phone': /^\+(?:[0-9] ?){6,14}[0-9]$/,
206
+ 'alpha': /^[a-zA-Z]+$/,
207
+ 'alphanumeric': /^[a-zA-Z0-9]+$/,
182
208
  };
183
209
 
184
210
  FORMAT_REGEXPS.regexp = FORMAT_REGEXPS.regex;
@@ -104,6 +104,7 @@ export interface Options {
104
104
  rewrite?: RewriteFunction;
105
105
  base?: string;
106
106
  throwError?: boolean;
107
+ required?: boolean;
107
108
  throwFirst?: boolean;
108
109
  throwAll?: boolean;
109
110
  nestedErrors?: boolean;
@@ -123,6 +124,7 @@ export interface SchemaContext {
123
124
  propertyPath: string;
124
125
  base: string;
125
126
  schemas: {[base: string]: Schema};
127
+ makeChild: (schema: Schema, key: string) => SchemaContext;
126
128
  }
127
129
 
128
130
  export interface CustomFormat {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "author": "Tom de Grunt <tom@degrunt.nl>",
3
3
  "name": "jsonschema",
4
- "version": "1.4.0",
4
+ "version": "1.4.1",
5
5
  "license": "MIT",
6
6
  "dependencies": {},
7
7
  "contributors": [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aws-cdk/cloud-assembly-schema",
3
- "version": "2.25.0",
3
+ "version": "2.28.0",
4
4
  "description": "Cloud Assembly Schema",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",
@@ -17,7 +17,7 @@
17
17
  "dotnet": {
18
18
  "namespace": "Amazon.CDK.CloudAssembly.Schema",
19
19
  "packageId": "Amazon.CDK.CloudAssembly.Schema",
20
- "iconUrl": "https://raw.githubusercontent.com/aws/aws-cdk/master/logo/default-256-dark.png"
20
+ "iconUrl": "https://raw.githubusercontent.com/aws/aws-cdk/main/logo/default-256-dark.png"
21
21
  },
22
22
  "python": {
23
23
  "distName": "aws-cdk.cloud-assembly-schema",
@@ -60,14 +60,14 @@
60
60
  },
61
61
  "license": "Apache-2.0",
62
62
  "devDependencies": {
63
- "@aws-cdk/cdk-build-tools": "2.25.0",
64
- "@aws-cdk/pkglint": "2.25.0",
65
- "@types/jest": "^27.5.0",
63
+ "@aws-cdk/cdk-build-tools": "2.28.0",
64
+ "@aws-cdk/pkglint": "2.28.0",
65
+ "@types/jest": "^27.5.2",
66
66
  "@types/mock-fs": "^4.13.1",
67
67
  "@types/semver": "^7.3.9",
68
68
  "jest": "^27.5.1",
69
69
  "mock-fs": "^4.14.0",
70
- "typescript-json-schema": "^0.53.0"
70
+ "typescript-json-schema": "^0.53.1"
71
71
  },
72
72
  "repository": {
73
73
  "url": "https://github.com/aws/aws-cdk.git",
@@ -91,7 +91,7 @@
91
91
  "exclude": []
92
92
  },
93
93
  "dependencies": {
94
- "jsonschema": "^1.4.0",
94
+ "jsonschema": "^1.4.1",
95
95
  "semver": "^7.3.7"
96
96
  },
97
97
  "awscdkio": {
@@ -158,6 +158,10 @@
158
158
  "networkMode": {
159
159
  "description": "Networking mode for the RUN commands during build. _Requires Docker Engine API v1.25+_.\n\nSpecify this property to build images on a specific networking mode. (Default - no networking mode specified)",
160
160
  "type": "string"
161
+ },
162
+ "platform": {
163
+ "description": "Platform to build for. _Requires Docker Buildx_.\n\nSpecify this property to build images on a specific platform/architecture. (Default - current machine platform)",
164
+ "type": "string"
161
165
  }
162
166
  }
163
167
  },
@@ -230,6 +230,10 @@
230
230
  "description": "Networking mode for the RUN commands during build. (Default - no networking mode specified)",
231
231
  "type": "string"
232
232
  },
233
+ "platform": {
234
+ "description": "Platform to build for. _Requires Docker Buildx_. (Default - current machine platform)",
235
+ "type": "string"
236
+ },
233
237
  "id": {
234
238
  "description": "Logical identifier for the asset",
235
239
  "type": "string"
@@ -1 +1 @@
1
- {"version":"19.0.0"}
1
+ {"version":"20.0.0"}
@@ -104,7 +104,6 @@ function augmentDescription(schema) {
104
104
  * compatibility checks.
105
105
  */
106
106
  function addAnyMetadataEntry(schema) {
107
- var _a;
108
- (_a = schema.definitions.MetadataEntry) === null || _a === void 0 ? void 0 : _a.properties.data.anyOf.push({ description: 'Free form data.' });
107
+ schema.definitions.MetadataEntry?.properties.data.anyOf.push({ description: 'Free form data.' });
109
108
  }
110
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLXNjaGVtYS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInVwZGF0ZS1zY2hlbWEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUJBQXlCO0FBQ3pCLDZCQUE2QjtBQUM3QixpQ0FBaUM7QUFDakMsNkRBQTZEO0FBQzdELDhDQUE4QztBQUU5QyxTQUFTLEdBQUcsQ0FBQyxPQUFlO0lBQzFCLHNDQUFzQztJQUN0QyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3ZCLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBRXhELE1BQU0sa0JBQWtCLEdBQXVEO0lBQzdFLFFBQVEsRUFBRSxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUU7SUFDM0MsZ0JBQWdCLEVBQUUsRUFBRSxZQUFZLEVBQUUsa0JBQWtCLEVBQUU7SUFDdEQsT0FBTyxFQUFFLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRTtDQUMzQyxDQUFDO0FBRVcsUUFBQSxPQUFPLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0FBRXZELFNBQWdCLE1BQU07SUFDcEIsS0FBSyxNQUFNLENBQUMsSUFBSSxlQUFPLEVBQUU7UUFDdkIsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ25CO0lBRUQsSUFBSSxFQUFFLENBQUM7QUFDVCxDQUFDO0FBTkQsd0JBTUM7QUFFRCxTQUFnQixJQUFJO0lBQ2xCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLDZCQUE2QixDQUFDLENBQUM7SUFFekUsaUVBQWlFO0lBQ2pFLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUV0QyxNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDO0lBQ3BDLE1BQU0sVUFBVSxHQUFHLE1B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RSxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxXQUFXLEVBQUUsaUJBQWlCLEVBQUUsRUFBRTtBQUNuRyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIHNlbXZlciBmcm9tICdzZW12ZXInO1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llc1xuaW1wb3J0ICogYXMgdGpzIGZyb20gJ3R5cGVzY3JpcHQtanNvbi1zY2hlbWEnO1xuXG5mdW5jdGlvbiBsb2cobWVzc2FnZTogc3RyaW5nKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gIGNvbnNvbGUubG9nKG1lc3NhZ2UpO1xufVxuXG4vKipcbiAqIFdoZXJlIHNjaGVtYXMgYXJlIGNvbW1pdHRlZC5cbiAqL1xuY29uc3QgU0NIRU1BX0RJUiA9IHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsICcuLi9zY2hlbWEnKTtcblxuY29uc3QgU0NIRU1BX0RFRklOSVRJT05TOiB7IFtzY2hlbWFOYW1lOiBzdHJpbmddOiB7IHJvb3RUeXBlTmFtZTogc3RyaW5nIH0gfSA9IHtcbiAgJ2Fzc2V0cyc6IHsgcm9vdFR5cGVOYW1lOiAnQXNzZXRNYW5pZmVzdCcgfSxcbiAgJ2Nsb3VkLWFzc2VtYmx5JzogeyByb290VHlwZU5hbWU6ICdBc3NlbWJseU1hbmlmZXN0JyB9LFxuICAnaW50ZWcnOiB7IHJvb3RUeXBlTmFtZTogJ0ludGVnTWFuaWZlc3QnIH0sXG59O1xuXG5leHBvcnQgY29uc3QgU0NIRU1BUyA9IE9iamVjdC5rZXlzKFNDSEVNQV9ERUZJTklUSU9OUyk7XG5cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGUoKSB7XG4gIGZvciAoY29uc3QgcyBvZiBTQ0hFTUFTKSB7XG4gICAgZ2VuZXJhdGVTY2hlbWEocyk7XG4gIH1cblxuICBidW1wKCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBidW1wKCkge1xuICBjb25zdCB2ZXJzaW9uRmlsZSA9IHBhdGguam9pbihTQ0hFTUFfRElSLCAnY2xvdWQtYXNzZW1ibHkudmVyc2lvbi5qc29uJyk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1yZXF1aXJlLWltcG9ydHNcbiAgY29uc3QgbWV0YWRhdGEgPSByZXF1aXJlKHZlcnNpb25GaWxlKTtcblxuICBjb25zdCBvbGRWZXJzaW9uID0gbWV0YWRhdGEudmVyc2lvbjtcbiAgY29uc3QgbmV3VmVyc2lvbiA9IHNlbXZlci5pbmMob2xkVmVyc2lvbiwgJ21ham9yJyk7XG5cbiAgbG9nKGBVcGRhdGluZyBzY2hlbWEgdmVyc2lvbjogJHtvbGRWZXJzaW9ufSAtPiAke25ld1ZlcnNpb259YCk7XG4gIGZzLndyaXRlRmlsZVN5bmModmVyc2lvbkZpbGUsIEpTT04uc3RyaW5naWZ5KHsgdmVyc2lvbjogbmV3VmVyc2lvbiB9KSk7XG59XG5cbi8qKlxuICogR2VuZXJhdGVzIGEgc2NoZW1hIGZyb20gdHlwZXNjcmlwdCB0eXBlcy5cbiAqIEByZXR1cm5zIEpTT04gc2NoZW1hXG4gKiBAcGFyYW0gc2NoZW1hTmFtZSB0aGUgc2NoZW1hIHRvIGdlbmVyYXRlXG4gKiBAcGFyYW0gc2hvdWxkQnVtcCB3cml0ZXMgYSBuZXcgdmVyc2lvbiBvZiB0aGUgc2NoZW1hIGFuZCBidW1wcyB0aGUgbWFqb3IgdmVyc2lvblxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVTY2hlbWEoc2NoZW1hTmFtZTogc3RyaW5nLCBzYXZlVG9GaWxlOiBib29sZWFuID0gdHJ1ZSkge1xuICBjb25zdCBzcGVjID0gU0NIRU1BX0RFRklOSVRJT05TW3NjaGVtYU5hbWVdO1xuICBjb25zdCBvdXQgPSBzYXZlVG9GaWxlID8gcGF0aC5qb2luKFNDSEVNQV9ESVIsIGAke3NjaGVtYU5hbWV9LnNjaGVtYS5qc29uYCkgOiAnJztcblxuICBjb25zdCBzZXR0aW5nczogUGFydGlhbDx0anMuQXJncz4gPSB7XG4gICAgcmVxdWlyZWQ6IHRydWUsXG4gICAgcmVmOiB0cnVlLFxuICAgIHRvcFJlZjogdHJ1ZSxcbiAgICBub0V4dHJhUHJvcHM6IGZhbHNlLFxuICAgIG91dCxcbiAgfTtcblxuICBjb25zdCBjb21waWxlck9wdGlvbnMgPSB7XG4gICAgc3RyaWN0TnVsbENoZWNrczogdHJ1ZSxcbiAgfTtcblxuICBjb25zdCBwcm9ncmFtID0gdGpzLmdldFByb2dyYW1Gcm9tRmlsZXMoW3BhdGguam9pbihfX2Rpcm5hbWUsICcuLi9saWIvaW5kZXguZC50cycpXSwgY29tcGlsZXJPcHRpb25zKTtcbiAgY29uc3Qgc2NoZW1hID0gdGpzLmdlbmVyYXRlU2NoZW1hKHByb2dyYW0sIHNwZWMucm9vdFR5cGVOYW1lLCBzZXR0aW5ncyk7XG5cbiAgYXVnbWVudERlc2NyaXB0aW9uKHNjaGVtYSk7XG4gIGFkZEFueU1ldGFkYXRhRW50cnkoc2NoZW1hKTtcblxuICBpZiAob3V0KSB7XG4gICAgbG9nKGBHZW5lcmF0aW5nIHNjaGVtYSB0byAke291dH1gKTtcbiAgICBmcy53cml0ZUZpbGVTeW5jKG91dCwgSlNPTi5zdHJpbmdpZnkoc2NoZW1hLCBudWxsLCA0KSk7XG4gIH1cblxuICByZXR1cm4gc2NoZW1hO1xufVxuXG4vKipcbiAqIFJlbW92ZSAnZGVmYXVsdCcgZnJvbSB0aGUgc2NoZW1hIHNpbmNlIGl0cyBnZW5lcmF0ZWRcbiAqIGZyb20gdGhlIHRzZG9jcywgd2hpY2ggYXJlIG5vdCBuZWNlc3NhcmlseSBhY3R1YWwgdmFsdWVzLFxuICogYnV0IHJhdGhlciBkZXNjcmlwdGl2ZSBiZWhhdmlvci5cbiAqXG4gKiBUbyBrZWVwIHRoaXMgaW5mb3JhbXRpb24gaW4gdGhlIHNjaGVtYSwgd2UgYXBwZW5kIGl0IHRvIHRoZVxuICogJ2Rlc2NyaXB0aW9uJyBvZiB0aGUgcHJvcGVydHkuXG4gKi9cbmZ1bmN0aW9uIGF1Z21lbnREZXNjcmlwdGlvbihzY2hlbWE6IGFueSkge1xuXG4gIGZ1bmN0aW9uIF9yZWN1cnNlKG86IGFueSkge1xuICAgIGZvciAoY29uc3QgcHJvcCBpbiBvKSB7XG5cbiAgICAgIGlmIChwcm9wID09PSAnZGVzY3JpcHRpb24nICYmIHR5cGVvZiBvW3Byb3BdID09PSAnc3RyaW5nJykge1xuXG4gICAgICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gb1twcm9wXTtcbiAgICAgICAgY29uc3QgZGVmYXVsdFZhbHVlID0gby5kZWZhdWx0O1xuXG4gICAgICAgIGlmICghZGVmYXVsdFZhbHVlKSB7XG4gICAgICAgICAgLy8gcHJvcGVydHkgZG9lc24ndCBoYXZlIGEgZGVmYXVsdCB2YWx1ZVxuICAgICAgICAgIC8vIHNraXBcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRlc2NyaXB0aW9uV2l0aERlZmF1bHQgPSBgJHtkZXNjcmlwdGlvbn0gKERlZmF1bHQgJHtkZWZhdWx0VmFsdWV9KWA7XG5cbiAgICAgICAgZGVsZXRlIG8uZGVmYXVsdDtcbiAgICAgICAgb1twcm9wXSA9IGRlc2NyaXB0aW9uV2l0aERlZmF1bHQ7XG5cbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIG9bcHJvcF0gPT09ICdvYmplY3QnKSB7XG4gICAgICAgIF9yZWN1cnNlKG9bcHJvcF0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIF9yZWN1cnNlKHNjaGVtYSk7XG5cbn1cblxuLyoqXG4gKiBQYXRjaCB0aGUgcHJvcGVydGllcyBvZiBNZXRhZGF0YUVudHJ5IHRvIGFsbG93XG4gKiBzcGVjaWZ5aW5nIGFueSBmcmVlIGZvcm0gZGF0YS4gVGhpcyBpcyBuZWVkZWQgc2luY2Ugc291cmNlXG4gKiBjb2RlIGRvZXNuJ3QgYWxsb3cgdGhpcyBpbiBvcmRlciB0byBlbmZvcmNlIHN0cmljdGVyIGpzaWlcbiAqIGNvbXBhdGliaWxpdHkgY2hlY2tzLlxuICovXG5mdW5jdGlvbiBhZGRBbnlNZXRhZGF0YUVudHJ5KHNjaGVtYTogYW55KSB7XG4gIHNjaGVtYS5kZWZpbml0aW9ucy5NZXRhZGF0YUVudHJ5Py5wcm9wZXJ0aWVzLmRhdGEuYW55T2YucHVzaCh7IGRlc2NyaXB0aW9uOiAnRnJlZSBmb3JtIGRhdGEuJyB9KTtcbn1cbiJdfQ==
109
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLXNjaGVtYS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInVwZGF0ZS1zY2hlbWEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUJBQXlCO0FBQ3pCLDZCQUE2QjtBQUM3QixpQ0FBaUM7QUFDakMsNkRBQTZEO0FBQzdELDhDQUE4QztBQUU5QyxTQUFTLEdBQUcsQ0FBQyxPQUFlO0lBQzFCLHNDQUFzQztJQUN0QyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3ZCLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0FBRXhELE1BQU0sa0JBQWtCLEdBQXVEO0lBQzdFLFFBQVEsRUFBRSxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUU7SUFDM0MsZ0JBQWdCLEVBQUUsRUFBRSxZQUFZLEVBQUUsa0JBQWtCLEVBQUU7SUFDdEQsT0FBTyxFQUFFLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRTtDQUMzQyxDQUFDO0FBRVcsUUFBQSxPQUFPLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0FBRXZELFNBQWdCLE1BQU07SUFDcEIsS0FBSyxNQUFNLENBQUMsSUFBSSxlQUFPLEVBQUU7UUFDdkIsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ25CO0lBRUQsSUFBSSxFQUFFLENBQUM7QUFDVCxDQUFDO0FBTkQsd0JBTUM7QUFFRCxTQUFnQixJQUFJO0lBQ2xCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLDZCQUE2QixDQUFDLENBQUM7SUFFekUsaUVBQWlFO0lBQ2pFLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUV0QyxNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDO0lBQ3BDLE1BQU0sVUFBVSxHQUFHLE1B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Q0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxDQUFDLENBQUM7QUFDbkcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgKiBhcyBzZW12ZXIgZnJvbSAnc2VtdmVyJztcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXNcbmltcG9ydCAqIGFzIHRqcyBmcm9tICd0eXBlc2NyaXB0LWpzb24tc2NoZW1hJztcblxuZnVuY3Rpb24gbG9nKG1lc3NhZ2U6IHN0cmluZykge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICBjb25zb2xlLmxvZyhtZXNzYWdlKTtcbn1cblxuLyoqXG4gKiBXaGVyZSBzY2hlbWFzIGFyZSBjb21taXR0ZWQuXG4gKi9cbmNvbnN0IFNDSEVNQV9ESVIgPSBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCAnLi4vc2NoZW1hJyk7XG5cbmNvbnN0IFNDSEVNQV9ERUZJTklUSU9OUzogeyBbc2NoZW1hTmFtZTogc3RyaW5nXTogeyByb290VHlwZU5hbWU6IHN0cmluZyB9IH0gPSB7XG4gICdhc3NldHMnOiB7IHJvb3RUeXBlTmFtZTogJ0Fzc2V0TWFuaWZlc3QnIH0sXG4gICdjbG91ZC1hc3NlbWJseSc6IHsgcm9vdFR5cGVOYW1lOiAnQXNzZW1ibHlNYW5pZmVzdCcgfSxcbiAgJ2ludGVnJzogeyByb290VHlwZU5hbWU6ICdJbnRlZ01hbmlmZXN0JyB9LFxufTtcblxuZXhwb3J0IGNvbnN0IFNDSEVNQVMgPSBPYmplY3Qua2V5cyhTQ0hFTUFfREVGSU5JVElPTlMpO1xuXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlKCkge1xuICBmb3IgKGNvbnN0IHMgb2YgU0NIRU1BUykge1xuICAgIGdlbmVyYXRlU2NoZW1hKHMpO1xuICB9XG5cbiAgYnVtcCgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYnVtcCgpIHtcbiAgY29uc3QgdmVyc2lvbkZpbGUgPSBwYXRoLmpvaW4oU0NIRU1BX0RJUiwgJ2Nsb3VkLWFzc2VtYmx5LnZlcnNpb24uanNvbicpO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzXG4gIGNvbnN0IG1ldGFkYXRhID0gcmVxdWlyZSh2ZXJzaW9uRmlsZSk7XG5cbiAgY29uc3Qgb2xkVmVyc2lvbiA9IG1ldGFkYXRhLnZlcnNpb247XG4gIGNvbnN0IG5ld1ZlcnNpb24gPSBzZW12ZXIuaW5jKG9sZFZlcnNpb24sICdtYWpvcicpO1xuXG4gIGxvZyhgVXBkYXRpbmcgc2NoZW1hIHZlcnNpb246ICR7b2xkVmVyc2lvbn0gLT4gJHtuZXdWZXJzaW9ufWApO1xuICBmcy53cml0ZUZpbGVTeW5jKHZlcnNpb25GaWxlLCBKU09OLnN0cmluZ2lmeSh7IHZlcnNpb246IG5ld1ZlcnNpb24gfSkpO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlcyBhIHNjaGVtYSBmcm9tIHR5cGVzY3JpcHQgdHlwZXMuXG4gKiBAcmV0dXJucyBKU09OIHNjaGVtYVxuICogQHBhcmFtIHNjaGVtYU5hbWUgdGhlIHNjaGVtYSB0byBnZW5lcmF0ZVxuICogQHBhcmFtIHNob3VsZEJ1bXAgd3JpdGVzIGEgbmV3IHZlcnNpb24gb2YgdGhlIHNjaGVtYSBhbmQgYnVtcHMgdGhlIG1ham9yIHZlcnNpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlU2NoZW1hKHNjaGVtYU5hbWU6IHN0cmluZywgc2F2ZVRvRmlsZTogYm9vbGVhbiA9IHRydWUpIHtcbiAgY29uc3Qgc3BlYyA9IFNDSEVNQV9ERUZJTklUSU9OU1tzY2hlbWFOYW1lXTtcbiAgY29uc3Qgb3V0ID0gc2F2ZVRvRmlsZSA/IHBhdGguam9pbihTQ0hFTUFfRElSLCBgJHtzY2hlbWFOYW1lfS5zY2hlbWEuanNvbmApIDogJyc7XG5cbiAgY29uc3Qgc2V0dGluZ3M6IFBhcnRpYWw8dGpzLkFyZ3M+ID0ge1xuICAgIHJlcXVpcmVkOiB0cnVlLFxuICAgIHJlZjogdHJ1ZSxcbiAgICB0b3BSZWY6IHRydWUsXG4gICAgbm9FeHRyYVByb3BzOiBmYWxzZSxcbiAgICBvdXQsXG4gIH07XG5cbiAgY29uc3QgY29tcGlsZXJPcHRpb25zID0ge1xuICAgIHN0cmljdE51bGxDaGVja3M6IHRydWUsXG4gIH07XG5cbiAgY29uc3QgcHJvZ3JhbSA9IHRqcy5nZXRQcm9ncmFtRnJvbUZpbGVzKFtwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4vbGliL2luZGV4LmQudHMnKV0sIGNvbXBpbGVyT3B0aW9ucyk7XG4gIGNvbnN0IHNjaGVtYSA9IHRqcy5nZW5lcmF0ZVNjaGVtYShwcm9ncmFtLCBzcGVjLnJvb3RUeXBlTmFtZSwgc2V0dGluZ3MpO1xuXG4gIGF1Z21lbnREZXNjcmlwdGlvbihzY2hlbWEpO1xuICBhZGRBbnlNZXRhZGF0YUVudHJ5KHNjaGVtYSk7XG5cbiAgaWYgKG91dCkge1xuICAgIGxvZyhgR2VuZXJhdGluZyBzY2hlbWEgdG8gJHtvdXR9YCk7XG4gICAgZnMud3JpdGVGaWxlU3luYyhvdXQsIEpTT04uc3RyaW5naWZ5KHNjaGVtYSwgbnVsbCwgNCkpO1xuICB9XG5cbiAgcmV0dXJuIHNjaGVtYTtcbn1cblxuLyoqXG4gKiBSZW1vdmUgJ2RlZmF1bHQnIGZyb20gdGhlIHNjaGVtYSBzaW5jZSBpdHMgZ2VuZXJhdGVkXG4gKiBmcm9tIHRoZSB0c2RvY3MsIHdoaWNoIGFyZSBub3QgbmVjZXNzYXJpbHkgYWN0dWFsIHZhbHVlcyxcbiAqIGJ1dCByYXRoZXIgZGVzY3JpcHRpdmUgYmVoYXZpb3IuXG4gKlxuICogVG8ga2VlcCB0aGlzIGluZm9yYW10aW9uIGluIHRoZSBzY2hlbWEsIHdlIGFwcGVuZCBpdCB0byB0aGVcbiAqICdkZXNjcmlwdGlvbicgb2YgdGhlIHByb3BlcnR5LlxuICovXG5mdW5jdGlvbiBhdWdtZW50RGVzY3JpcHRpb24oc2NoZW1hOiBhbnkpIHtcblxuICBmdW5jdGlvbiBfcmVjdXJzZShvOiBhbnkpIHtcbiAgICBmb3IgKGNvbnN0IHByb3AgaW4gbykge1xuXG4gICAgICBpZiAocHJvcCA9PT0gJ2Rlc2NyaXB0aW9uJyAmJiB0eXBlb2Ygb1twcm9wXSA9PT0gJ3N0cmluZycpIHtcblxuICAgICAgICBjb25zdCBkZXNjcmlwdGlvbiA9IG9bcHJvcF07XG4gICAgICAgIGNvbnN0IGRlZmF1bHRWYWx1ZSA9IG8uZGVmYXVsdDtcblxuICAgICAgICBpZiAoIWRlZmF1bHRWYWx1ZSkge1xuICAgICAgICAgIC8vIHByb3BlcnR5IGRvZXNuJ3QgaGF2ZSBhIGRlZmF1bHQgdmFsdWVcbiAgICAgICAgICAvLyBza2lwXG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkZXNjcmlwdGlvbldpdGhEZWZhdWx0ID0gYCR7ZGVzY3JpcHRpb259IChEZWZhdWx0ICR7ZGVmYXVsdFZhbHVlfSlgO1xuXG4gICAgICAgIGRlbGV0ZSBvLmRlZmF1bHQ7XG4gICAgICAgIG9bcHJvcF0gPSBkZXNjcmlwdGlvbldpdGhEZWZhdWx0O1xuXG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBvW3Byb3BdID09PSAnb2JqZWN0Jykge1xuICAgICAgICBfcmVjdXJzZShvW3Byb3BdKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBfcmVjdXJzZShzY2hlbWEpO1xuXG59XG5cbi8qKlxuICogUGF0Y2ggdGhlIHByb3BlcnRpZXMgb2YgTWV0YWRhdGFFbnRyeSB0byBhbGxvd1xuICogc3BlY2lmeWluZyBhbnkgZnJlZSBmb3JtIGRhdGEuIFRoaXMgaXMgbmVlZGVkIHNpbmNlIHNvdXJjZVxuICogY29kZSBkb2Vzbid0IGFsbG93IHRoaXMgaW4gb3JkZXIgdG8gZW5mb3JjZSBzdHJpY3RlciBqc2lpXG4gKiBjb21wYXRpYmlsaXR5IGNoZWNrcy5cbiAqL1xuZnVuY3Rpb24gYWRkQW55TWV0YWRhdGFFbnRyeShzY2hlbWE6IGFueSkge1xuICBzY2hlbWEuZGVmaW5pdGlvbnMuTWV0YWRhdGFFbnRyeT8ucHJvcGVydGllcy5kYXRhLmFueU9mLnB1c2goeyBkZXNjcmlwdGlvbjogJ0ZyZWUgZm9ybSBkYXRhLicgfSk7XG59XG4iXX0=